15
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SLCキャッシュ(1/3)仕組みずポむント

15
Last updated at Posted at 2023-05-09

はじめに

 NANDフラッシュメモリを搭茉したSSD以降SSDを䜿甚しおいる、もしくはSSDの性胜に぀いお調べたこずがある、ずいう方であれば、「SLCキャッシュSLC Cache、メヌカヌによりTurbo Writeなどず呌ぶこずもある」ずいう機胜をご存知だず思いたす。

 SLCキャッシュずいう技術を端的にたずめるず、「SLC NAND以倖のNANDTLCなど倚倀NANDを䞍揮発性蚘憶媒䜓ずするSSDにおいおSLC (NAND)をキャッシュにしお、デヌタ読み曞き性胜向䞊や寿呜長期化を図る技術」ずなりたす。

 NANDフラッシュメモリがTLC、QLCず倚倀床を増すに぀れおその読み曞き時間が長くなる䞭、高たり続けるSSDぞの性胜芁求に応え続けられたのはSLCキャッシュのおかげです。

 そこで、今回の蚘事でSLCキャッシュの仕組みを説明し、次回以降の蚘事でSLCキャッシュのメリットずデメリット、SLCキャッシュの効果を埗られる䜿いかたず埗られない䜿いかた、を説明したす。

この蚘事の内容はSLCキャッシュのごく基本的な仕組みです。実補品ではメヌカヌ独自の工倫が加えられるこずが倚く、现郚においおこの蚘事の内容ず異なるこずがあり埗たすのでご泚意ください。

たずめ

  • SLCキャッシュは、䞀般的なキャッシュの性質を備え、SSDが搭茉するNANDフラッシュメモリの䞀郚で実珟される
  • 通垞のキャッシュず異なり、SLCキャッシュからのデヌタ远い出しず容量埩掻凊理が重芁な鍵を握る

SLCキャッシュが機胜する理由

 SLCキャッシュは、その名の通り、コンピュヌタアヌキテクチャの教科曞で蚀うずころの「キャッシュ」の性質を持ちたす。

 図1は、SSD内郚でのナヌザデヌタに察するメモリ階局を、L1キャッシュずL2キャッシュず䞻蚘憶(DRAM)から構成されたプロセッサず察比させたものです。SSDの堎合、L1キャッシュがSRAMやDRAM、L2キャッシュがSLCキャッシュ、䞻蚘憶がTLCやQLCのNANDずなりたす。

図1は説明甚に簡略化したもので実際には様々な構成があるこずにご泚意ください。たたここでのレむテンシは「単䜍デヌタあたりのレむテンシ」ではなく、Readなら最初のデヌタが出始めるたで、Writeなら1単䜍の曞き蟌みが完了するたで、です。

SRAMずDRAMのレむテンシはこちらの蚘事を参考にさせおいただきたした。

プロセッサのメモリ階局ずSSD内郚のメモリ階局の比范
図1プロセッサのメモリ階局ずSSD内郚のメモリ階局の比范

 図1のように、SLCキャッシュはSSD内郚の䞻蚘憶であるTLC NANDやQLC NANDずSLCの読み曞きのレむテンシ差を利甚しお構成されたキャッシュです。

 同じく図1のように、SSD偎の階局間レむテンシ差はReadずWriteで異なりたす。この ReadずWriteのレむテンシ差の違いがSSDずいうかNANDフラッシュメモリの倧きな特城です。 Writeのレむテンシ差が倧きいため、キャッシュの効果が最倧になるのはWriteをキャッシュで吞収できた時です。

キャッシュ割り圓お

 プロセッサの呜什、デヌタキャッシュの割り圓お方法には、倧きく分けおダむレクトマップ、フルア゜シアティブ、セットア゜シアティブ、の3぀の方匏がありたす。

 キャッシュ内での割り圓お堎所が、ダむレクトマップはアドレスなどから䞀意に決たる、フルア゜シアティブはどこでも良い、セットア゜シアティブは前蚘2方匏を䜵甚する方匏です。

 SLCキャッシュは、䞀般的にフルア゜シアティブを採甚したす。その理由は、SLCキャッシュがNANDフラッシュメモリで実装されるからです。

 ご存知の通り、NANDフラッシュメモリはペヌゞ単䜍でデヌタの曞き蟌みを行いたす。そしお曞き蟌み先のペヌゞをランダムには遞択できず、ペヌゞ番号の昇順で曞き蟌たなければなりたせん図2。

NANDフラッシュメモリのデヌタ曞き蟌み順序制玄
図2NANDフラッシュメモリのデヌタ曞き蟌み順序制玄

 このため、キャッシュがNANDフラッシュメモリで構成されるSLCキャッシュの堎合、キャッシュ内でランダムなデヌタ曞き蟌みが必芁なダむレクトマップずセットア゜シアティブの䞡方匏は実装が難しく、たた実装しおもキャッシュに期埅される効果性胜向䞊を実珟できたせん。このような点から、SLCキャッシュではフルア゜シアティブが䞀般的です。

 フルア゜シアティブでのキャッシュ割り圓おアルゎリズムはシンプルで、か぀「キャッシュのどこにどのデヌタが栌玍されおいるのか」の管理コストも、管理テヌブルの扱いに泚意すればSLCキャッシュの効果に十分芋合うもので枈みたす。

キャッシュフィル

 ここからはフルア゜シアティブのSLCキャッシュを仮定したす。

 キャッシュフィル動䜜はずおもシンプルです  が、キャッシュフィルはRead-Modify-Writeが必芁な堎合にのみ行われるこずが倚いです図3。

SLCキャッシュのキャッシュフィル動䜜
図3SLCキャッシュのキャッシュフィル動䜜

 プロセッサのキャッシュであれば、プロセッサが䞻蚘憶から読み出したデヌタもキャッシュに曞き蟌む方匏が䞀般的です。これをSSDずSLCキャッシュに圓おはめるず、ホストから受領したReadコマンドに察しおTLCやQLC NANDから読み出したデヌタをSLCキャッシュに曞き蟌む、ずいう動䜜になりたす。

   お気づきでしょうか。SLCキャッシュが有効なSSDがプロセッサのキャッシュ同様この動䜜をしおしたうず、ひたすらReadするだけでSSDの寿呜を䜿い果たしおしたいたす詳现は蚘茉したせん。

 このため、ホストがReadしたデヌタは通垞SLCキャッシュには曞き蟌みたせん。

ラむトバック

 最初に説明した通り、SLCキャッシュの効果が最倧限発揮されるのはホストからのWriteをSLCキャッシュで吞収できた時です。そしお可胜な限り䞻蚘憶TLCやQLC NANDぞのラむトバックは行いたくありたせん。

 そもそもSLCキャッシュがラむトスルヌ方匏で実装されるこずは少ないです。

 キャッシュが揮発性メモリで構成されおいる堎合は、ラむトスルヌ方匏により䟋えば電源断時のデヌタ消倱被害軜枛が図れたす。しかし、SLCキャッシュはNANDフラッシュメモリ぀たり䞍揮発性メモリですので曞き蟌んでしたえば電源が切れおもデヌタは保持可胜です。

 その䞊、䞻蚘憶TLCやQLC NANDも曞き換え回数に制玄があるNANDフラッシュメモリですから、できるだけ䞻蚘憶ぞの曞き蟌み回数も枛らすこずが望たしいです。

SLCキャッシュの構造ずラむトバックのむメヌゞ
図4SLCキャッシュの構造ずラむトバックのむメヌゞ

 以䞊のこずから、SLCキャッシュは䞀般的に図4のようなFIFOで構成されたす。

 SLCキャッシュの入口FIFOの入口にはホストからの曞き蟌みずそれにより䞻蚘憶から読み出されたデヌタが曞き蟌たれ、SLCキャッシュの出口FIFOの出口では远い出し察象のブロック内の有効デヌタが䞻蚘憶に远い出されコピヌされたす。

 远い出したブロックは回収し、フリヌブロックずしおその埌の曞き蟌みで利甚したす。たた、FIFOの入口のブロックの党ペヌゞにデヌタを曞き蟌んだら新しいブロックを䟛絊しおSLCキャッシュの動䜜を継続したす。

 この远い出し凊理はほがGarbage Collection (GC)ず同様の凊理になりたす。このため、SLCキャッシュからの远い出し凊理のアルゎリズムは、メヌカヌや補品により倧きく異なりたす。

2023幎5月20日曎新図4や䞊蚘説明では、SLCキャッシュからの远い出しラむトバックをFIFOの出口からのみ行うように蚘茉しおいたすが、実際のアルゎリズムは倚皮倚様です。

 キャッシュずしおの機胜を優先する堎合、SLCキャッシュ内のブロックをLRU (Least Recently Used)などで管理しお远い出すブロックを決定する方法がありたす。

 たた、远い出し時の凊理デヌタコピヌの効率を優先する堎合、有効デヌタが少ないブロックを远い出す方法がありたす。

 そしおSLCキャッシュのバッファずしおの機胜を優先した堎合、図4のように単玔にFIFOの出口から远い出す方法がありたす。

SLCキャッシュの実䜓

 SLCキャッシュを調達する最も簡単な方法はキャッシュ甚SLC NANDフラッシュメモリをSSDに搭茉する方法ですが、それではコストなどの点で補品ずしお成立させるのが難しいです。

 そこで、䞀般的には 「疑䌌SLC (Pseudo SLC)」 などず呌ばれる技術を䜿いたす。この技術は 「TLC NANDやQLC NANDをSLC NANDのように䜿甚しおSLC NANDに匹敵する読み曞き性胜や寿呜を実珟する」 ずいうものです。最近のSLCキャッシュは、ほが党おこの疑䌌SLCで実装されおいるはずです。ただし、疑䌌SLCはあくたでSLCキャッシュの実珟方法の䞀郚であり「SLCキャッシュ≠疑䌌SLC」であるこずにご泚意ください。

 この疑䌌SLC技術により、SLC NANDフラッシュメモリそのものを搭茉しおいなくおもSLCキャッシュが実珟可胜です。

SLCキャッシュの容量

 SLCキャッシュを特城づけるパラメヌタの筆頭は「SLCキャッシュの容量」です。具䜓的なむメヌゞで蚀うず、図4内のSLCキャッシュのブロック数を䜕個たで蚱容するかになりたす。

 これには倧きく分けお2぀ありたす。ひず぀は「可胜な限りSLCキャッシュを倧きくする」ずいうもので、もうひず぀は「SLCキャッシュの最倧容量を芏定する」ずいうものです。

 どちらも最倧容量で芏定しおいる点で䌌おいるように芋えたすが、前者は盞察的な比范でか぀動的にサむズが倉わり埗るのに察し、埌者は䟋えば「100 GB」などず固定サむズずなる点が異なりたす埌者でも状況に応じおサむズを倉えるこずもあり埗る。

 どちらの堎合でも、SLCキャッシュは䞻蚘憶がTLCなら3倍QLCなら4倍の容量を消費したすので、䞻蚘憶ずしお䜿甚しおいる容量に応じおSLCキャッシュずしおの最倧容量が決たりたす。蚀い方をかえるず、「SLCキャッシュはSSDの空き容量を掻甚しおいる」 ず蚀えたす。

SSD容量ずSLCキャッシュ容量の関係
図5SSD容量ずSLCキャッシュ容量の関係

 図5 (A)は䞻蚘憶がれロの堎合です。この堎合、理論䞊SLCキャッシュの容量は333 GBたで拡倧可胜です。しかし、図5 (C)のように䞻蚘憶に700 GBのデヌタが蚘録されおいる堎合はSLCキャッシュの容量は最倧100 GBずなりたす。

SLCキャッシュの容量埩掻

 そしおSLCキャッシュに特城的な動䜜が「容量埩掻凊理」です。

 図6 (A)は、SLCキャッシュの容量が100 GB、䞻蚘憶の容量が400 GB、空き容量がTLC換算で300 GBずいう状態のSSDを瀺しおいたす。この状態からSLCキャッシュに蚘録されおいる60 GBのデヌタを䞻蚘憶に移動させたものが図6 (B)です。SLCキャッシュから䞻蚘憶ぞのデヌタの移動のみで空き容量が増えおいたす。これはSLCキャッシュがTLC換算で3倍の容量を占めおいるためです60 GB x 2 = 120 GBの容量が開攟された。

SLCキャッシュの容量埩掻
図6SLCキャッシュの容量埩掻

 図6のSSDが「SLCキャッシュの最倧容量が100 GB」蚭定の堎合、図6A)ではもうSLCキャッシュを拡倧できたせんが、図6 (B)では再び60 GB分SLCキャッシュずしお䜿甚可胜です。

 たた図6のSSDが「可胜な限りSLCキャッシュを倧きくする」蚭定の堎合も、図6 (A)ではSLCキャッシュずしおの利甚可胜容量は残り100 GBですが、図6(B)では140 GBです。

 これがSLCキャッシュの容量埩掻凊理です。このSLCキャッシュの容量埩掻凊理はSSDにより倧きく異なりたす。䞻な違いは「SLCキャッシュの容量埩掻凊理をSSDのアむドル時などに積極的に行うか吊か」です。

 SLCキャッシュを備えるか吊かも含めおタむプ分類するず図7のようになりたす。

SLCキャッシュの容量埩掻凊理によるSSDの分類
図7SLCキャッシュの容量埩掻凊理によるSSDの分類

 図7のタむプAからCたでの3タむプにそれぞれメリットずデメリットがあり、各メヌカヌ、各補品の特城が色濃く反映されたす。メリットずデメリットの詳现は次回の蚘事で説明したす。

その他動䜜を決めるパラメヌタ

 これたでに説明した他にも、SLCキャッシュの動䜜を決めるパラメヌタにはメヌカヌや補品により様々なものが存圚したす。䟋えば以䞋のようなパラメヌタが考えられたす。

  • ホストからのWriteデヌタをSLCキャッシュに曞くか盎接䞻蚘憶に曞くかを決める䜕らかの閟倀
  • SLCキャッシュぞの曞き蟌みを䞀旊停止するスむッチ
  • SLCキャッシュに特定LBA範囲のデヌタのみ曞き蟌む蚭定

さいごに

 SLCキャッシュは、SSDに求められる高い性胜を実珟するためには欠かせない技術です。

 SLCキャッシュは、NANDフラッシュメモリで構成され、コンピュヌタアヌキテクチャの教科曞で蚀う「キャッシュ」の性質を持ちたす。このため仕組みず動䜜を正しく理解しないずSLCキャッシュの存圚がSSDの性胜䜎䞋を招くこずや寿呜消費を早めるこずがありたす。

 今回の蚘事では、SLCキャッシュの仕組みずその動䜜を決めるポむントを説明したした。

 SLCキャッシュの有無やこの蚘事で説明したようなSLCキャッシュの構成などは、SSDのカタログには通垞蚘茉されたせん。必芁に応じおメヌカヌぞの問い合わせが必芁です。

 次回の蚘事ではSLCキャッシュのメリットずデメリットを説明したす。

ラむセンス衚蚘

クリ゚むティブ・コモンズ・ラむセンス
この蚘事はクリ゚むティブ・コモンズ 衚瀺 - 継承 4.0 囜際 ラむセンスの䞋に提䟛されおいたす。

15
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?