
2025.03.19
ドバイ不動産投資の最前線 専門家が語る、3つの投資モデルと市場の展望
書換え耐性が低いNAND flashメモリ向けのキャッシュアルゴリズム(全1記事)
リンクをコピー
記事をブックマーク
Shinpei Matsuda氏:「書換え耐性が低いNAND flashメモリ向けのキャッシュアルゴリズム」と題してMatsudaから発表します。
最初に簡単な自己紹介と、個人的な動機について話します。専門は半導体のデバイス、特にトランジスタの物理で、ITエンジニアではありません。研究したいことがあったので退職D進(※退職後、大学院に進学すること)しましたが、その研究所から「あなたの研究計画書は現実的ではありません」と言われました。渋々NAND flashメモリのコントローラーの研究を行いましたが話が合わなすぎて退学しました。
その時に思い付いたアイデアをどこかに出したいと思って学会に投稿もしましたが、いろいろあって話すことができず、そのアイデアの供養として話したいと思いました。
人類が生み出すデータが指数関数的に増加していることが問題になっていて、ハードディスクを置き換えるかたちで、NAND flashメモリの普及が進んでいます。NAND flashメモリは今後も重要なメインストレージデバイスであり続けると思われ、高密度化においては多値化という技術が非常に重要です。
NAND flashメモリも当初は0か1の1ビットしか保存できませんでしたが、1、2、3、4の4つのレベルを書き込む「マルチレベルセル」という技術が生まれました。この高密度化がどんどん進み、今は4bit/cellまで保存できます。
この多値化によって高密度化が達成されましたが、同時にメモリセルの書き換え可能な回数がどんどん減っているという問題があります。今の市場に出ている4bit/cellでは、1,000回しか書き換えることができず、これが6bit/cellまでいくと100回以下になってしまうだろうと言われています。
液体窒素で1,000回まで増やそうという提案もされていますが、この書き換え回数が少ないメモリを液体窒素なしでどうやって使いこなせばいいかというのは技術的な課題なわけです。
そこでまず、メモリアクセスの統計的な性質に注目しました。(スライドを示して)こちらに示したのはストレージへのトレースファイルです。アクセス履歴をまとめたファイルを解析して、左からアクセスの多い順に並べて、縦軸にそのアクセス回数をプロットしたものです。
見てわかるとおり、アクセスが集中しているのはごく一部のページです。この例では、46パーセントのデータは週に一度しかアクセスされないFrozen Dataです。少し脱線しますが、この分布はZipfian分布やZipfの法則と言われている統計的な分布に従うことが知られています。
Zipfain分布は、メモリアクセス以外にも自然言語の単語の出現回数など、いろいろなところで出てきます。
先ほど述べたとおり、大半のデータはほとんどアクセスされないので、書き換え耐性が低いメモリであったとしても、ほとんどアクセスされないFrozen Dataの保存専用のメモリとして使えばいいということになります。
ただ、すべてを書き換え耐性が低いメモリだけで構成すると、一部の書き換えが多いところで何度も書き換えられてメモリが使えなくなってしまうので、複数の種類のNAND flashメモリを組み合わせてストレージとして使えないかと考えました。構成としては、ごく一部のアクセスが集中しているところをSLCのキャッシュで吸収して、Frozen Dataは書き換え耐性が低いメモリに入れます。それ以外はTLCなど、ある程度書き換え耐性のあるメモリに入れるということを考えました。
(スライドを示して)素直にLevel2のキャッシュを組んだ場合がこちらです。この構成にすることで、書き換え耐性の低いメモリの書き換え回数が抑えられると思われますが、同時に1つの問題が考えられます。このストレージにFrozen Dataが入ってきた場合、最初はL1キャッシュに書き込まれ、そのあとL2キャッシュになって下位のメモリ(書き換え耐性の低いメモリ)に落ちるわけです。
L2キャッシュは通り過ぎるだけなので、余計なことをしています。さらにL1、L2キャッシュにおいてFrozen Dataを書き込んでしまうと、NAND flashメモリ特有のガーベッジコレクションが頻発することが懸念されます。NAND flashメモリは上書きできないメモリなので、容量が足りなくなったら全体から空き容量を探してきますが、これが起きるとストレージの性能が大きく低下することも懸念されます。
そのためFrozen Dataに関しては、L1キャッシュから落とす際にL2キャッシュをスキップして、直接もう1つ下位のメモリに落とし込みたいわけです。では、どうやってL2キャッシュをスキップすればいいのか。L1キャッシュから落とすデータのアクセス頻度を区別できれば、実現可能であることがわかります。
つまり、L1キャッシュから落ちるデータがFrozen Dataであると判断した場合は、L2キャッシュをスキップして下位のメモリに直接落とす。Frozen Dataではないと判断した場合は、今までどおりL2キャッシュに落とせばよいということになります。そのため、問題設定は「L1キャッシュからデータを追い出す際に、そのアクセス頻度を区別できるようなキャッシュ置換アルゴリズムは可能だろうか」になります。
最初に、一番広く使われているキャッシュ置換アルゴリズムであるLRU(Least Recently Used)について考えました。LRUはご存じのとおり、(スライドを示して)このようなリストでキャッシュを管理していて、基本的にアクセスのあった順から上に詰めていきますが、途中でキャッシュに入っているデータにアクセスがあった場合は、もう一度上に詰め直します。
こうすることで、末尾はキャッシュに入っているデータの中で、一番アクセスが古いデータになるので、アクセスの古い順から落としていくことになります。しかし、このLRUには落とすデータが本当にFrozen Dataなのかを見分ける術はありません。キャッシュに残すべきかどうかを区別しているだけで、追い出すデータがFrozen Dataかどうかを見分ける情報は持っていません。
そのため、LRU以外のキャッシュ置換アルゴリズムが必要になります。そこで、LRU-kアルゴリズムというアルゴリズムに注目しました。LRU-kでは、アドレスと過去のアクセスのタイムスタンプが保存されているテーブルを作り、そのテーブルに従って追い出すデータを決めます。
(スライドを示して)例えば、上の矢印のような順番にアクセスがあったとして、LRUの場合は新しく3のページが入ってきた時に、どこかのページを追い出さなくてはならなくなり、一番アクセスの古い2を追い出そうとします。
しかし、2は頻繁にアクセスされているページです。アドレス0は、もう1つ前を見ると随分昔にアクセスされているので、コールドだと期待できます。そこで、0を落とすにはどうするか。2番目の過去のタイムスタンプを2nd Lastと呼びますが、2nd Lastのタイムスタンプを見て古い順番に追い出すことによって、入った順番ではなくコールドのデータを選択的にキャッシュから追い出すことができるようになります。LRU-kは、既存のLRUの弱点を克服するために考案された最初のアルゴリズムだと言われています。
LRU-kで管理されているキャッシュにFrozen Dataが書き込まれた場合(このスライドの場合はアドレス3がFrozen Data)、どうなるか。
3はFrozen Dataなので優先的に追い出されますが、その際、2nd Lastのタイムスタンプに何も値が入っていない状態で追い出されることになります。なぜなら、Frozen Dataは過去に一度もアクセスされていないからです。なので、この追い出すデータに2nd Lastのタイムスタンプや値が入っているかによって、そのデータがFrozen Dataかどうかを見分けることができます。
考察です。以上のアイデアを確認するためにLRU-kで管理されたキャッシュと、キャッシュから追い出されるデータの数をカウントするプログラムを作りました。全体で1,200万ページくらい書き込まれていますが、そのうち47万ページがL2をスキップして下位のメモリに落ちてきます。L2キャッシュに落ちるのは100万ページくらいです。
下位のメモリに落ちてくるのは、先ほど言ったように過去に一度しかアクセスされていないFrozenのページです。L2キャッシュに落ちるページも、最初はL1キャッシュから下位のメモリに落ちますが、それ以降はL2キャッシュに落ちます。したがって、提案した手法によってL2キャッシュをスキップしてFrozen Dataを下位のメモリ(低書き換え耐性のメモリ)に追い出すことができることを確認できました。
まとめです。書き換え耐性が極めて低いNAND flashメモリを使いこなすために、LRU-kキャッシュアルゴリズム(LRU-kキャッシュ置換アルゴリズムを使ったアルゴリズム)を応用して、L2キャッシュをスキップしてL1キャッシュから追い出すようなアルゴリズムを提案しました。
このアルゴリズムは、初めてアクセスされるデータにしか適用しませんが、例えば1週間以上経過したタイムスタンプのアクセス履歴は消去する、忘れてしまうなど何か工夫を加えると、実装できるかなと考えています。Q2など、LRU-k以外のアルゴリズムも同じようなことができないかなとちょっと考えています。
また、Future Workとしてなんらかのかたちで実装して、どこかに投稿したいと考えています。NAND flashメモリのメモリコントローラーは素人には扱えないので、OSレイヤーでやるならDevice mapperかなと考えています。以上です。
関連タグ:
2025.03.17
不確実な時代だからこそ「知らないこと」を武器にする ハーバード主席卒業生の逆説的なメッセージ
2025.03.17
いくら読書をしても「成長しない人」が見落としていること 10分でできる「正しい学び方」
2025.03.17
ソフトバンクとOpenAIにとって「歴史的な日」になった 孫正義氏が語る、AI革命の全ぼう
2025.03.19
部下の「タスクの先延ばし」が少ない上司の特徴とは? 研究が示す、先延ばし行動を減らすリーダーの条件
2025.03.21
マネージャーの「自分でやったほうが早い」という行動で失うもの 効率・スピード重視の職場に足りていない考え方
2025.03.18
フェデラー氏が語る「努力しない成功は神話」という真実 ダートマス卒業生に贈る勝利の秘訣
2025.03.18
全知全能の最先端AI「Cristal」が企業の大脳となる ソフトバンク孫正義氏が語る、現代における「超知性」の可能性
2025.03.19
フェデラー氏が語る「ただの1ポイント」の哲学 ウィンブルドン敗北から学んだ失敗からの立ち直り方
2025.03.18
部下に「そうかなぁ?」と思われない1on1の問いかけ エンゲージメントを高めるマネジメントに欠かせない「聴く」技術
2025.03.19
OpenAIのAIエージェント「Deep research」はビジネスをどう変革するのか? サム・アルトマン氏ら4人がデモンストレーション
2025.03.17
不確実な時代だからこそ「知らないこと」を武器にする ハーバード主席卒業生の逆説的なメッセージ
2025.03.17
いくら読書をしても「成長しない人」が見落としていること 10分でできる「正しい学び方」
2025.03.17
ソフトバンクとOpenAIにとって「歴史的な日」になった 孫正義氏が語る、AI革命の全ぼう
2025.03.19
部下の「タスクの先延ばし」が少ない上司の特徴とは? 研究が示す、先延ばし行動を減らすリーダーの条件
2025.03.21
マネージャーの「自分でやったほうが早い」という行動で失うもの 効率・スピード重視の職場に足りていない考え方
2025.03.18
フェデラー氏が語る「努力しない成功は神話」という真実 ダートマス卒業生に贈る勝利の秘訣
2025.03.18
全知全能の最先端AI「Cristal」が企業の大脳となる ソフトバンク孫正義氏が語る、現代における「超知性」の可能性
2025.03.19
フェデラー氏が語る「ただの1ポイント」の哲学 ウィンブルドン敗北から学んだ失敗からの立ち直り方
2025.03.18
部下に「そうかなぁ?」と思われない1on1の問いかけ エンゲージメントを高めるマネジメントに欠かせない「聴く」技術
2025.03.19
OpenAIのAIエージェント「Deep research」はビジネスをどう変革するのか? サム・アルトマン氏ら4人がデモンストレーション
【手放すTALK LIVE#046】 出版記念イベント 『大きなシステムと小さなファンタジー』 一つ一つのいのちが大切にされる社会へ
2025.02.03 - 2025.02.03
「聴く」から始まる組織変革 〜篠田真貴子さんと考える対話型マネジメント〜
2025.02.14 - 2025.02.14
「目の前の利益を優先する」心理とは:ビジネスに活かせる意思決定の科学
2025.02.12 - 2025.02.12
新刊『組織をダメにするのは誰か?職場の問題解決入門』出版記念セミナー
2025.02.04 - 2025.02.04
会社の体質、これまでどおりで大丈夫? 職場に新たな風を吹き込むための「ネガティブ・ケイパビリティ」入門
2025.02.10 - 2025.02.10