SSブログ

SMRのSSD的書込み挙動 [ハードディスク]

ハードディスクのSMRについて、私は過去にこんな記事を書いた。

HDDのSMR技術とはなにか
https://17inch.blog.so-net.ne.jp/2014-12-15

しかし今日見つけた記事でSMRのより詳細な情報を得たので、過去記事の訂正と新たに判明した事実をここに記そうと思う。


まず最初に確認しなければならないのは、現在のSMR技術による記録は複数のトラックをまたいで上書きされるという事。

最初の私の理解では、トラック内でビットごとの上書きが起きるのがSMRだった。つまりプラッタの回転方向にのみの重ね書きなので、その後ろの1又は数bitが上書きされるだけだと思っていた。
何故そう理解したのかというと、以前読んだ説明記事では単に重ね書きするという説明しか無かったし、ハードディスクの基本動作上、トラックをまたいだ重ね書きなどありえないからだ。

もしトラックをまたいだ重ね書きをするとどうなるのか。
それは、上書きされたトラックのデータが消えるという事だ。このため、書き込む前に上書きされるトラック内のデータを別の場所へ移動する必要が生じる。

これはまるでブロックごとに消去しなければ書込みが出来ないSSDのようではないか。

SMR2.png
現在のSMRは書込み時、複数のトラックとbitをまたいでかなり広範囲が上書きされる

実際新たに読んだ記事では書込み動作についてこのように書かれている。
以下、記事からの引用

「SMRの書き込みは原則としてシーケンシャルな書き込みとなる。 SMRでは何本かのトラックをまとめて「ブロック」として扱い、(中略) このため、SMRにおける書き込みのイメージは、(中略)NANDフラッシュメモリなどと類似のデータ書き込みである。 」

「 従ってSMRのデータ書き換えは、(中略)最初に、書き換え対象ブロックのデータを全て読み出し、データバッファ(通常はDRAMあるいはNANDフラッシュメモリ)に転送する。それからデータバッファの一部を、新しいデータで書き換える。それからデータバッファのデータを全て、SMRのブロックに書き戻す。」

SMR2b.png
SMRでは複数のトラックを一個のブロックとして扱い、書き込みはブロック単位で行う。
ブロック間は上書きが起きないだけのスキマがある


この説明からSMRハードディスクの書込み動作を整理すると

1.書込みブロックの選択
2.ブロック中のデータをバッファに退避(バッファはDRAM or NAND Flash)
3.バッファ中で退避したデータの書換え
4.バッファからデータの書き戻し

大雑把に言えばこんな感じか。
書き込みはブロック単位でしか書込み出来ない、しかもブロック中のデータを一旦バッファに読み込んでその中で書換えを行い、終わればバッファの内容をブロック単位で書き込む。

ブロック単位の書き込みは、先頭から順にブロック内最後のトラックの、最後のセクタまで全部書き込む。まるでブロックが一本のテープであるかのように。

ここまで書込み手順を整理してみると、SSD的とはいえブロック内のデータを退避する点以外はだいぶ違うなあ。タイトルの付け方失敗か。だが他に適当なタイトルが思いつかない。


なんにせよ最初に想像していたのと随分違う印象だ。



ネタ元の記事

10TBの大容量HDDを実現した「SMR技術」登場の背景
http://pc.watch.impress.co.jp/docs/column/semicon/20150930_723207.html


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0