SSDの構造、速度低下・プチフリの真実

0
     プチフリの原因
     
    JUGEMテーマ:コンピュータ

     SSDは使っているうちにどんどん遅くなる。これは都市伝説として囁かれてきた事である。
    使っているうちにプチフリが起き、使いにくくなると言われていた。
    この現象に最終的な結論と解答を出す。それは事実であり人災であると。
     
    1.SSDの内部構造


    [クリックで拡大]


     SSDの構造を示す。その構造はUSBメモリやSDカード、CFカードとまったく同じだ。
    PCとの接続インターフェースがSATA/IDEならばSSDであり、USBならばUSBメモリなのだ。

     これが実はプチフリ現象の真相だったのだと思う。

    Q:内部構造が同じならばなぜUSBメモリと比べSSDは速いのか?
    A:特別な高速化をしているからだろう

    ページ・サイズ

    Q:フラッシュメモリの書き込み速度はどれくらい?
    A:4KB~8KB書くのに、4/1000秒。秒速で1MBくらい。

     秒速1MBと言えば、往年の名デバイス・フロッピーディスクが丁度、一枚1MBほど。
    数世代前の30GBくらいの容量のハードディスクが8MB/秒くらいだから絶望的に遅いのが判る。

    フラッシュメモリへのページ単位での書き込み
    [クリックで拡大]

     判りやすく図にするとこのようになる。
    4msは4/1000秒という意味だ。
    フラッシュメモリは、上書き消去が出来ない。出来るのは全部消去する。消去して初期化した所にビットを立てる事ができる。
     従い、次の手順を踏み書いている。


    [クリックで拡大]

     上の図のようにデータの書き込みは出来る。しかし、一度書いたデータを上書きで変える事は出来ない。その場合にはそのブロック(区画)一度全部消す必要がある。
     フラッシュメモリに置いて「ライト≒消去」が成立するのはこのような理由だ。


    2.高速化アルゴリズム
     使っているフラッシュメモリが同じモノならば、USBであれSDカードであれ同じ速さのはずだ。しかし実際にはSSDは速い。

    Q:どうやって高速化しているのだろうか?
    A:おそらく同時に複数のページをまとめて一括書き込みしているからだろう。



    [クリックで拡大]

     こう考えれば良い。
     1度に1ページずつ書いているから遅いのであり、一度に100ページで一括書き込みすれば100倍速くなる。
     実際には16進法で都合の良い128個単位で一括書き込みすれば128倍の速さになる。

     SSDを調べているとブロック単位でアクセスする。1ブロックはMLC型で512KBあるいはその整数倍の大きさという記述がある。

     1ページ4KB☓128個=512KB、どんぴしゃりの数字となる。
    1ブロックを1MBとすれば256MBになる。

    3.クラスタ・ブロック不整合(アライメント)の問題
     ブロック単位のアクセスで問題はないのだろうか。いや、問題があったからプチフリが起き、SSDは使っているうちに遅くなるというジンクスが生まれたのだろう。

    def1.png
    [クリックで拡大]

     ブロックがSSD内部でこのように整列していた場合、使っているうちにディスクはフラグメント(分断化)がおきどんどんミジン切りになっていく。図の赤いは試用領域、他は空き領域を表すものとする。

    ミジン切り
    [クリックで拡大]

     このようにSSDのブロックの中の空き領域と使っている領域が混ざってミンチになっていくはずだ。

     実際問題、SSDの速度はどんどん遅くなる。

     どういう不整合が起きるのか?
    例えば12KBのデータを書くとしよう。lWindowsのディスクの管理単位は1クラスタ4KBだ。つまり3クラスタの書き込みが発生する。3クラスタ分の空き領域が一つのブロックに集まっていれば1ブロック512KBの書き込みが起きる。

    def10.png


     次に、空き領域が一つのブロックに1クラスタ4KBしかなかった場合を考えれば判る。
    最悪、3つのブロックに書き込みが発生する。


    def11.png

      つまり、ファイルの分断化(フラグメント)は同時に空き領域の分断化を引き起こす。後は幾何級数的に余分な書き込みが発生し、速度はどんどん低下していく。

     
    mydefb.png

      無料配布のデフラグソフトです。本ソフトの姉妹品です。-->説明サイトへJump

    spcdede.png 人為的にスペースの断片化を起こすソフトです。検証に使用ください。
    -->説明サイトへJump

     実際、ラボでは「スペースデデフラグ」でディスク内部をミジン切りにし、それを「SSD対応MyDefragブースター」でディスクを整理整頓して速度の復元を検証している。

    サムスン840無印120GBでのベンチマークの変化

    840x1b.png

    [クリックで拡大]

     新しいSSDほど、工夫されて速度低下が出ないようにしているのは判るのだが、克服はされていない。このように速度が遅くなるのが現実に起きていることだ。


    4.今後の技術動向、ウェアレベルの問題
    4.1.ブロック内データを寄せ集め式にしてリマッピングして書き込み
     机上ではクラスタ・ブロック不整合(アライメント)は起きないように設計可能だ。
    しかし実際にはその手法は選択されていないようだ。
     ブロックの書き込みは従来のSSDあるいは旧い世代のSSDというべきだろう。次の構成をしているはずだ。

    [クリックで拡大]

     書き込みしたいブロックは、フラッシュメモリ内部では整然と並んでいる。

    これを次のようにすれば良いはずだ。1ブロックは512KBとして各ページはフラッシュのどのページでも良いようにする。


    ブロックのダイナミックマッピング
    [クリックで拡大]

     1ブロックがフラッシュメモリの中で整列する必要はない。
    単純に1ブロック分の書き込みデータがバッファに溜まったならば一括書き込みすれば良い(厳密には一括消去を掛けて全部消し、データを追記する)。一度にたくさんのページに同時に消去命令を出せれば良いのでそれが1区画にまとまっている必要はない。

     1ブロック512KBの1ページ4KBとした場足、128個のページデータが溜まった場合、各ページに一括書き込みすれば良く、過去起きていた問題はでない、いや極めて出にくかったろう。

     しかし実際には「ブロック=フラッシュ内部の一区画」のようだ。廉価型のSSDしか評価したことがないのだが、ベンチマーク結果は
    「ブロック=フラッシュ内部の一区画」として扱われている事を暗示している。


    4.2.ウェアレベル(平滑機構)の実装
    ウェアレベルと回転寿司

     フラッシュメモリには寿命がある。従い、同じメモリばかり使っているとそこだけすぐに焼き付いてしまう。従い、ウェアレベル(平滑機構)という仕掛けを持ち、メモリを満遍なく均等に使用する仕掛けを持っている。イメージとしては回転寿司を連想する。
    実際にはマグロではなくフラッシュメモリなのだが、各ページを均等に使用して1つだけがすり減らないようにしている。

     ウェアレベリングは各メモリにカウンタを持っており、カウンタの少ないメモリから使用するようにしているのだろう。そうするとメモリの管理単位は大きいほうが楽なのでページ単位(4KB~8KB)ではなくブロック単位のほうが作りやすいのではないかと思う。それがブロック内のページデータをダイナミックにマッピングしていない理由ではないかと思われる。

    4.3.最新のSSDに見る奇妙な特性・・・リマッピングか?
    330z1.png
     [クリックで拡大]  

     これはインテル330のベンチマーク結果だが、ライトにおける速度低下が見られない。落ちているが誤差で説明できる程度だ。

     上述のブロック内のデータをリマップしているような印象を受けるが、違うだろう。リードが遅くなっている事が説明できないからだ。

     噂に聞く、ガーベージコレクタとリマッピングによる方式を採用しているのかもしれない。

    ガーベージコレクションとリマップ

     [クリックで拡大] 

     ガーベージコレクション略してGCとはこの図のような処理をする。

    ブロックAにデータを書くにあたり、必要なデータを事前にブロックBにバックアップして消しても良いようにする仕掛けだ。前提として、1ブロック内の各ページはリマップされており「1ブロック=1区画」ではない前提が必要だ。

     GCとリマッピングをするとコントローラに複雑な処理の負担が掛かる。インテルの330でリードが落ちたのは裏でGC+リマップ処理をしているため初納能力が不足した印象を得る


     [クリックで拡大]

     こういう仕掛けが必要だ。ブロックAを構成する各ページがSSDのどのメモリに該当するのかを決める管理テーブルが必要になる。この管理テーブルは当然フラッシュメモリ上でなくてはならない(!)。何故ならば電源OFFでも値を保持しなくては行けない。・・・そうすると管理テーブルはフラッシュだから更新には4msの時間がかかり、これを高速化するためには・・・本記事の冒頭高速化に戻る(永久ループ)。

     【4.1.】を採用せず、これとの中間形態と言えるGC+リマップが提唱されているのか判らない。ウェアレベルを実装しやすいなどの何か理由があるのだと思う。


    5.総括

     一台、5万円以上する高級機は判らないが、数万円以下の普及型SSD,廉価型SSDの過去、現在におけるSSDの速度低下問題、プチフリ問題はSSDメーカは事前に熟知していたと判断する。

    mydefb.png

     本ページのテストに使用したデフラグソフトです。本ソフトの姉妹品です。-->説明サイトへJump

    spcdede.png 人為的にスペースの断片化を起こすソフトです。検証に使用ください。
    -->説明サイトへJump

     筆者が「スペースデデフラグ」というソフトを作るまでもなく、SSD設計者は全てを知っていたはずだ。

     そして、「MyDefragブースター」のようなメンテナンスソフトをSSDに添付していればあれほど酷いプチフリ問題は起きなかったのではないだろうか?

     そう考えると残念でならない。

     そして、ジャーナリストがしばし「デフラグはSSDの寿命を削るから掛ける意味は無い。掛けてはいけない」と主張したことが事態を一層に悪化させたように思う。

     筆者には全て人災に思えてならない。

    ★★最強のWindowsを作る!高速化ソフトプチフリバスター

    高速化ソフトプチフリバスター

    Windows 高速化 プチフリバスター Windows 高速化 プチフリバスター

    ―> プチフリバスターかんたん紹介ページ
    ―> プチフリバスター技術詳細ページ

    □□□□□□□□□PR
     

    この記事のトラックバックURL
    トラックバック
    -
    管理者の承認待ちトラックバックです。
    • -
    • 2016/04/17 7:55 PM

    SSDの高速化ツール Eee PC SDHC HDD 化 フリーウェア プチフリ 退治 解決 根絶に、現象測定ツール USB/SDHCカードブートにより簡単バックアップ フリーウェア USBメモリ、CFなどの不良検出ソフト FeliCa で ログオン フリーウェア USBウィルス対策ソフト フリーウェア 無限乱数式暗号フリーウェア USB ブート 簡単メモリチェック

    TEST1

    USB ブート 簡単メモリチェック

    selected entries

    categories

    archives

    recent comment

    • PBTM v0.1・起動USBによるEee PC・ネットブックのお手軽バックアップシステムを作る
      USBブート拡散部
    • WindowsXPの自動デフラグ機能について
       
    • ASUS Eee PC 701 SD-X日本語版の分解・オーバービューその2
      小林
    • 工人舎PM PM1WX16SA レビュー カスタマイズ 高速化
      meme
    • ★暗号化 Eee Storage/YoStoreの120%活用法
    • ★暗号化 Eee Storage/YoStoreの120%活用法
      ひろちゃん
    • f2dによるEee PC 901・4G-XのCドライブにSDHCを連結して容量を増大させる拡張 Part3.
      nick
    • f2dによるEee PC 901・4G-XのCドライブにSDHCを連結して容量を増大させる拡張 Part3.
      NAO
    • PBTM v0.1・起動USBによるEee PC・ネットブックのお手軽バックアップシステムを作る
      KyonKyon
    • PBTM v0.1・起動USBによるEee PC・ネットブックのお手軽バックアップシステムを作る
      kouichi

    recent trackback

    links

    profile

    search this site.

    others

    mobile

    qrcode

    powered

    無料ブログ作成サービス JUGEM