- 【SSD】 Solid State Flash Disk 2GB 【近づくな】
697 :Socket774[sage]:2007/06/16(土) 04:42:05 ID:QHqJ/3ga - >>655
それ、ECC用領域で代替用領域ではないよ NANDflashメモリはエラーをある程度許容するデバイスだからECC(エラーチェック&コレクト)用領域を 持ってて、エラーチェックと修正をかけられるようになってるんだ - Memory Cell Array : (2G + 64M) x 8bit - Data Register : (4K + 128) x 8bit - Page Program : (4K + 128)Byte - Block Erase : (256K + 8K)Byte - Page Size : (4K + 128)Byte みたいに、全部(データ保存用領域サイズ+ECC用領域サイズ)で表記されてる このデバイスの場合アクセス単位が4KBで、そこのECC用に128バイトが付随する構成ってこと で、NANDflashメモリの場合は初めから死んでるページ(PC的にはセクタ)があることも許容されてて 有効なブロックの個数の規定がVALID BLOCKとしてデータシートに書かれてる たとえばK9WBG08U1Mというデバイスなら16,384のブロック中16,064個以上が正常に使えれば 320個のブロックが出荷時点で死んでたとしても製品として有効という扱いになる もともとこういう風に死んでるブロックがあることが前提のメモリなんで、有効なブロックを全部 有効領域として使わずに、代替用ブロックを予約した上で、使える容量を決める 例えば16,000個分の容量を使える容量として、残りの有効分を予備として使うとかね まぁ、実際は複数チップ積むからさらに複雑な事をするだろうけど、チップ単位で代替の容量が 確保されているというのは間違い。 使い始めの時点での容量は予備用の容量を引いてあるので、予備用領域が使われてもサイズは 減らないように見えてるだけ ちなみにこのECC用領域サイズの割合だと512バイト中に1ビットのエラーまでは訂正可能、2ビットは 検出可能だけど訂正不可能な性能を持つ マルチビット方式だと、エラー率があがるんで、1ページ(4096+218)バイトとECC用領域が大きく取られてる
|
- 【SSD】 Solid State Flash Disk 2GB 【近づくな】
698 :Socket774[sage]:2007/06/16(土) 04:52:03 ID:QHqJ/3ga - >>689
>SLCは10万回の書き換え+10年は保持されるらしい これも誤解で、データシート読むと必ず - Endurance : 100K Program/Erase Cycles(with 1bit/512Byte ECC) こんな感じにあくまでも、512バイト/につき1ビットまでのECCを使用した場合の時 つまり、データが化けたりしても訂正できる事を見越した上での値 ECCを使わないセル単体の実力値としては、10K Program/Erase ぐらい メーカーが化けない事を保証できるのは 1K Program/Erase とSLCでも実は凄く低かったりする
|
- 【SSD】 Solid State Flash Disk 2GB 【近づくな】
699 :Socket774[sage]:2007/06/16(土) 04:56:37 ID:QHqJ/3ga - >>688
メーカーは、(訂正可能でも)エラーが発生した時点で、即そのデータは代替ブロックにコピーして 以後そのブロックにはライトはもちろんリードも行わないようにデータシートに書いてる 記憶セルが壊れたという事は、そこに電気的なアクセスを行うと周囲の何処にどういう影響が 出るか判らないから、そのセルにアクセスする行為は非常に危険
|
- 【SSD】 Solid State Flash Disk 2GB 【近づくな】
704 :Socket774[sage]:2007/06/16(土) 11:33:42 ID:QHqJ/3ga - >>702
内部的な処理でどうしてもECC(というより代替が効かない)部分があるんで ECCを使わない場合の数値も意味はあるんだ 無効ブロック番号を記録しておくためのページは、どうしても1ブロック内の特定の位置 (大抵先頭の物理ブロック番号00)に置かれ、これは壊れたからといって他の位置に移す訳には いかない なぜなら、無効ブロックの位置を知ってからでないと、他のブロックにアクセスできないので 使い始める時に真っ先にこのブロックを読む必要があり、そのために物理アドレスが固定 されている必要があるから つまり、無効ブロック代替処理のできる回数はECC無しの場合のProgram/Erase 回数によって 制限されるって事 わざわざメーカーが物理ブロック番号00のECC無しの場合のProgram/Erase 回数の保証値を データシートに記載するのはそういう理由があるから ま、単純にProgram/Erase可能回数=代替処理可能回数とはならないように普通は工夫するし これはflashメモリチップ単体の話なので、システムとしてのSDDだと、色々と工夫はされてるだろう けどね
|
- 【SSD】 Solid State Flash Disk 2GB 【近づくな】
706 :Socket774[sage]:2007/06/16(土) 11:57:30 ID:QHqJ/3ga - >>702
HDDはいわゆる1セクタ単位で書き換えが可能だが、flashメモリは1ブロック内に1ビットでも 変化があればブロック全体を事前読み出し→データ加工→ブロック消去→ブロック全体を書き戻し と作業する必要がある OSからライトがは1セクタでも、消去はブロック単位でおこなわれるのがミソで 最近の大容量flashは1ブロックのサイズが256KBとか非常に大きいため、細かいランダムライトが 行われると想像以上にブロックの消去/書き込みが行われる事になる メモリなのにランダムライトが遅いといわれるのは、キャッシュが無いだけじゃなくこういう理由もあるんだ 特に未使用領域が少なくなってくると、書き込み回数平均化をしても特定のブロックに書き込みが 集中してしまう、OSをインストールして残り容量が少ない状態でランダムライトのベンチマークを取ったり するような場合が危ないね こうなると一概に場合HDDよりも高信頼とは言えないと思うよ
|
- 【SSD】 Solid State Flash Disk 2GB 【近づくな】
707 :Socket774[sage]:2007/06/16(土) 12:05:32 ID:QHqJ/3ga - >>705
一緒にしてないよ スペアブロックの処理をするためには、(flashメモリ単体で考えると)ECCに頼れない処理もあるという事だよ で、その処理のためにメーカーが記載しているECCを使わない純粋なセルの書き換え可能回数は SLCでもメーカーの保証は僅か1K回 ま、保証値というのは相当な安全率を取るから、実際はよく言われる10Kぐらいが実力値なんだろうけどね
|
- 【SSD】 Solid State Flash Disk 2GB 【近づくな】
718 :Socket774[sage]:2007/06/16(土) 13:56:18 ID:QHqJ/3ga - >>716
どこまでウェアレベリングを行うかという事なんだが、全てのブロックの書き換え回数を 平均化するような処理をしてればその通り ただし、1ブロックの書き込みにつき、入れ替えの為の読み出しと書き込みが余計に必要になるので 書き込みが遅くなる上、の書き込み回数が2倍になるため寿命の点で見てもデメリットがある 参考リンク:http://www.kyoto-sr.co.jp/products/fugue/techinfo/if-wl.html 実際に使われているアルゴリズムは余り明らかにされてないので推測するしかないんだけど 最近のメモリチップ単体の速度チップ搭載数、SDDの書き込み速度を見る限りじゃそこまでキッチリと 平均化はしてないと思ってる せいぜい、空ブロックの中から一番書き換え頻度が少ないブロックに書き込むレベルじゃ ないだろうか?
|
- 自作するならプログラムぐらい組めるよな?
467 :Socket774[sage]:2007/06/16(土) 17:18:13 ID:QHqJ/3ga - >>464
気遣いは嬉しいが貴君が謝罪する筋合ではないよ。 振込め詐欺で手段を提供している通信会社が謝罪の必要がないのと同じ。 #どこの世界にもロクデナシはいる。ウソで騙し良心が痛まないのかと。 >>465 知らないで同じような名のスレを立てるとはアッパレ。 >>466 確かに自作と言っても部品を組み立てるだけ、基本は変わってないので容易。 CPU等の電子回路の開発となれば専門家以外は解かるはずもなく。
|
- 【SSD】 Solid State Flash Disk 2GB 【近づくな】
725 :Socket774[sage]:2007/06/16(土) 19:15:52 ID:QHqJ/3ga - >>719 >>721
レスでは、その時点で論理ブロックとして割り当てられていない、つまりOSからは一切見えていない 状態の物理ブロックといった程度の意味で使ってる 論理ブロックはFS上で未使用だとしても認識されている領域なので、空ブロックには出来ない つまり代替用のFSから容量として見えていない部分が空ブロックになる >>706で書いたようなFS上での未使用領域が少なくなると影響がでるというのは、 >>718で書いた、>空ブロックの中から一番書き換え頻度が少ないブロックに書き込むレベル のウェアレベリングだと対象ブロックが 「FSから見えない空ブロック+書き込みが起きるブロック」 になるので OSのような読み込み専用で書き込みが起きないブロックが増えると、そこはウェアレベリングの 対象とならないからだね >>720のように一定確率で入れ替えをしているとかなら又少しは違ってくるかな
|
- 【SSD】 Solid State Flash Disk 2GB 【近づくな】
726 :Socket774[sage]:2007/06/16(土) 19:21:07 ID:QHqJ/3ga - >>719
なので、全部空ブロックにするということは原理上不可能。 空ブロックというのはあくまでもOSやFSから見えない部分の話なので、どんな書き込み パターンであってもOSやFSから認識されている部分は空ブロックには出来ない >>721 未使用ブロックが空ブロックではあるんだが、FS上での未使用ブロックではなく SSDのflashメモリ上で論理ブロックとして未使用なブロックが空ブロック だから、ディスクをゼロフィルしても、必ずflashメモリ内に存在する事になる ただし、死亡ブロックが増え代替処理によって予備が使い尽くされてしまっていたら 空ブロックが存在しなくなる可能性もありうるけど
|
- 【SSD】 Solid State Flash Disk 2GB 【近づくな】
727 :Socket774[sage]:2007/06/16(土) 19:29:23 ID:QHqJ/3ga - >>723 >>724
その例え話だと、Javaのガベージコレクトのような管理機構が動いてるので 自動でfreeされたり、処理系の都合によって物理メモリ番地が書き換わってるけど ソフト側からは認識できないというのに近い
|
- 【SSD】 Solid State Flash Disk 2GB 【近づくな】
739 :Socket774[sage]:2007/06/16(土) 22:37:35 ID:QHqJ/3ga - >>732 SLCだと512バイト(1ページ)単位で16バイトじゃなかったでしたっけ?
4バイトじゃ512バイトに対する1ビット訂正、2ビット検出には冗長性が足り無すぎるような あと、代替処理はページレベルではなくブロックレベルじゃないでしたっけ? ゼロフィルでブロック消去だけ行うというのは初めて知りました、読み出しの時はゼロフィルによる 初期化済みというフラグだけ立てておいて、それを見て0のデータをコントローラーで用意したり するんでしょうかね。 >>730 あくまで私の中でこう理解してるという話だが OSからみえるサイズ<物理サイズにしてあり、その見えない部分を空ブロックとして管理 書き込みは、 1.空ブロックの中で一番書き換え頻度の低い物を持ってきて、そこにデータを書き込む 2.OSが書き込んだ論理ブロック番号にその書き込み済みブロックを割り当て 3.元々割り当てられていたブロックは消去して空ブロックとする こんな感じで行われていると理解してる データシートからはメモリチップレベルでの仕組みしかわからんので、SSDでは複数チップを 利用してさらに複雑な管理をしているかもしれないが、基本はこんな感じかと 空ブロックと書き換え、書き込みの起こったブロックを入れ替えて、満遍なく利用していくイメージだね
|
- 自作するならプログラムぐらい組めるよな?
469 :Socket774[sage]:2007/06/16(土) 22:40:42 ID:QHqJ/3ga - >>468
>ウィルス作りたい マジ? #ワクチン(ウィルス対策ソフト)作りたいなら解かるけど。
|
- ■64bit環境(WinXP x64など)で動作する2chブラウザ■
952 :Socket774[sage]:2007/06/16(土) 22:54:11 ID:QHqJ/3ga - >>948
ダンゴは気分が良いのか? 粘着気味にも比較的丁寧に回答してる。 しかも実績ある上司には「一目置いている」気配を感じる。 SPARCはSUNだし、POWERはIBM、Itanium2はHPでないのかと。 そう外れていないと思うからチップ名出した時点で秘密になるのかな。
|