SMR HDDとSSDは似た者同士？(1/2)

# はじめに
　Hard Disk Drive (HDD)の書き込み方式として、Conventional Magnetic Recording (CMR)とShingled Magnetic Recording (SMR)の2つが存在することをご存知の方は多いと思います。

　SMRの書き込み方式（以降SMR方式と記載します）は、ストレージが目指す重要な方向性のひとつ「記録密度の向上（≒ビットコスト削減）」を実現する技術であり、その意味で、今後特に大容量HDDではSMR方式の採用が増えると予想されます。

　長期間の傾向を調べたわけではありませんが、この記事の執筆時点（2021年5月）でも、同容量であればCMR方式のHDDのほうがSMR方式を採用したHDDより数パーセント高価なようです。

　しかし、**SMR方式を採用したHDD (SMR HDD)は、その書き込み方式のため、CMR方式のHDD (CMR HDD)と同じ性能特性は得られません。むしろNANDフラッシュメモリを不揮発性記憶媒体とするSolid State Drive（以降単にSSDと記載します）の性能特性に似ています**。

　それでは、CMR HDD、SMR HDD、そしてSSDは、どのように使い分けるのが良いのでしょうか？

　そこで今回から2本の記事で、SMR方式とSSDの書き込み方式の類似点と相違点の説明、そこから推測されるSMR HDDの性能特性と実際の性能特性の説明およびSSDとの比較を行い、最後にCMR / SMR HDDとSSDの使い分けについてまとめたいと思います。

　今回の記事では、前編として、SMR方式とSSDの書き込み方式の類似点、そこから推測されるSMR HDDの性能特性、の説明をします。

※注：SMR HDDの書き込み方式（SMR方式）は記事作成当時（2021年5月）の情報を基にして記述しています。

# まとめ
* CMR方式のHDDとSMR方式を採用したHDDの書き込み方式は大きく違う！
* SMR方式を採用したHDDの書き込み方式（性能特性）はむしろ**SSDの性能特性に似ている！**
* SMR HDDではSSDのGCのような処理が必要で、その効率がSSDのGCより悪いことが多いため、**性能の落ち具合もSSDより大きい**

# CMR HDDのメリット
　SSDとHDDを比較したときの「HDDのメリット」としては、以下のようなものが挙がるかと思います。

* 低コスト
* ストレージとしてのデータ保持特性を満たす記録媒体のデータ書き換え回数に（ほぼ）制限がない
* **安定した性能**

　「安定した性能」というメリット（特徴）は、HDDは上書き（"in-place update"と呼ばれる）ができてSSDは上書きができないことに起因します。しかし**これはCMR HDDのメリットでありSMR HDDでは必ずしも得られるとは限りません**。

　それでは、CMR方式とSSDの書き込み方式、そしてSMR方式を順番に見ていきます。

# CMR HDDの書き込み方式（CMR方式）
　CMR HDDの場合、セクタの「番号」であるLogical Block Address (LBA)とそのLBAのデータが記録される物理的な記録領域（位置）は基本的に変わりません。

　記録領域に何らかの不良が発生してデータ記録に適さないと判断された場合には「代替処理」が行われ、その記憶領域に対応するLBA向けに予備の記録領域が割り当てられます。代替領域が割り当てられると、次に代替処理が行われるまで当該LBAのデータにはその記録領域が使用されます。

　このためCMR方式では、データの上書きはその言葉通り「上書き」で実現されます。あるLBAへの書き込みが他の処理に影響を与えることはありません。あるLBAのデータの書き込み先が必ず存在しますので、HDD内の有効データ量が多くても少なくても書き込み処理は変わらず、性能は変わりません。

![CMR HDDにおける上書きの仕組み](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/10611843-640d-3991-9ba0-3f3ef45f0219.png "CMR HDDにおける上書きの仕組み")
図1：CMR HDDにおける上書きの仕組み

# SSDの書き込み方式
　一方SSDの場合、NANDフラッシュメモリの記憶原理上、言葉通りの「上書き」はできません。そのため、古いデータが書かれている場所とは別の場所に新しいデータを書き込んで、古いデータは「無効」と印をつけるだけでその場は済ませます（"out-of-place update"などと呼ばれる）。つまり、LBAとそのLBAの最新データが記録される物理的な記録領域は都度変わります。

　その代わり、あとでGarbage Collection (GC)を行い新しいデータを書き込む場所を作ります。

![SSDにおける上書きの仕組み](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/0f43b4d5-1003-ba2e-7634-5b46745b4031.png "SSDにおける上書きの仕組み")
図2：SSDにおける上書きの仕組み

　このGCを行う時、SSDコントローラはNANDフラッシュメモリからコピー対象のデータを読み出して書き戻すため、この処理の間はホストコマンド処理のためのNANDフラッシュメモリの読み書きができません（図3）。

![GCが必要な状況でのSSDのNANDフラッシュメモリ読み書きのイメージ（時系列）](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/5d370e28-3b34-d0d9-e261-eb3b97177356.png "GCが必要な状況でのSSDのNANDフラッシュメモリ読み書きのイメージ（時系列）")
図3：GCが必要な状況でのSSDのNANDフラッシュメモリ読み書きのイメージ（時系列）

　SSDが備えるNANDフラッシュメモリのバンド幅は有限ですので、GCの実行が必要な状況ではホストコマンドのためのデータ読み書きとGCのためのデータ読み書きを混ぜながら行うしかありません。

　これが、GCが発生する状況になると多少なりともホストから見たSSDの性能が落ちる理由です。

　なお実際の製品では、GCの実行開始タイミング調節、GCのためのNANDフラッシュメモリの読み書きとホストコマンドのためのNANDフラッシュメモリの読み書きのスケジューリング、などにより、性能の落ち具合をできるだけ小さくする工夫がなされています。

# SMR HDDの書き込み方式
　最初に書いた通り、**SMR HDDはCMR HDDと異なり「文字通りの上書き(in-place update)」ができるとは限りません。むしろSSDの書き込み方式（アルゴリズム）と似ているためSMR HDDの性能特性はSSDの性能特性と似ています**。

　SMR HDDの書き込み方式については詳細な説明が存在します<sup>[1][2][3]</sup>ので、ここではSSDの書き込み方式との比較に必要な部分に着目して説明します。

![SMR HDDのデータ書き込み方法イメージ(1)](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/98270c67-0f82-2205-520a-3888eaa61c8d.png "SMR HDDのデータ書き込み方法イメージ(1)")
図4：SMR HDDのデータ書き込み方法イメージ(1)

　SMR HDDは、その内部に、SMR方式で読み書きする領域（以降SMR領域と呼びます）とCMR方式で読み書きする領域（以降CMR領域と呼びます）を持ちます。

　このCMR領域は「キャッシュ領域」などと呼ばれ、SMR領域よりも高速な読み書き性能（従来のCMR HDDと同等の性能）を出すために設けられています。

　HDDは、その仕組み上外周に近づけば近づくほどデータ読み書き性能が高くなりますので、CMR領域はたいてい外周に近い領域に割り当てられるようです。

　そして、CMR領域に空き領域（＝有効なデータが記録されていない領域）があれば、ホストから書き込まれたデータをそのCMR領域に書き込みます。

　またあるセクタのデータを上書きする時、そのセクタの一世代前のデータ（それまでの最新データ）がCMR領域に存在すれば、CMR領域なのでそのデータを上書きします。

　このことから、データの読み書きがCMR領域上で完結している限り、つまり、読み書きされるデータの範囲（LBA空間上での範囲）がCMR領域（キャッシュ領域）のサイズ以下であるうちは、CMR HDDと同じ性能が出ます。

　しかしCMR領域が満杯になる（近づく）と、書き込み方式が変わります。ここでSMR方式が登場します。

![SMR HDDのデータ書き込み方法イメージ(2)](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/4e92ae50-68eb-64db-5677-0ee3c10881a6.png "SMR HDDのデータ書き込み方法イメージ(2)")
図5：SMR HDDのデータ書き込み方法イメージ(2)

　具体的には、図5のようにRead Modify Writeを行います。

　[1]～[3]で説明されている通り、SMR方式では「バンド」と呼ばれる大きなサイズ（数百MBなど）でしかデータを書き換えられません。

　そのため、Read Modify WriteによりCMR領域のデータをSMR領域に追い出してCMR領域に空きを作り（図5 (2)）、できたCMR領域の空き領域にホストから受領したデータを書き込みます（図5 (3)）。

　ここまでくると察しの良い方はお気付きだと思いますが、SSDの書き込み方式（図2）とSMR HDDでのCMR領域が溢れた時の書き込み方式（図5）は見た目ほぼ同じ処理をしていることがわかります。

　図3で説明した通り、この「空きを作る」処理では記憶メディア（SSDならNANDフラッシュメモリ、HDDならプラッタ）からデータを読み出して書き戻す必要があるため、「空きを作る」処理をしている最中はホストコマンドのためのデータ読み書きができません。

　このため、**SMR HDDではCMR領域（キャッシュ領域）が溢れたら書き込み性能が落ちる**のです。

　しかも、そのSMR HDDの書き込み性能の落ち具合は、SMR方式の仕組み上、最近のSSDよりも大きなものになり得ます。

# SMR HDDがSSDより性能の落ち込み具合が大きい理由
　SMR HDDの書き込み性能の落ち具合が最近のSSDよりも大きなものになり得るのは、HDDであることに由来する可動部品のオーバーヘッドと、SMR方式における「バンド」の管理方法に起因します。

## HDDの可動部品によるオーバーヘッド
　そもそもSMR HDDは、HDDである以上、プラッタを回転させてヘッドを動かしてデータを読み書きします。このシーク時間はどうしてもかかります。

　例えば、7,200回転のHDDでは1回転に13.8ミリ秒（1秒÷7,200）かかりますので、平均回転待ち時間はその半分の6.9ミリ秒になります。15,000回転でも平均回転待ち時間は3.3ミリ秒です。

　これに加えてヘッドの移動時間である（平均）位置決め時間がかかります。合計すると平均で5ミリ秒から10ミリ秒程度と考えれば良さそうです。この時間、HDDではデータ転送ができません。完全に「待ち」です。

　ここで、5ミリ秒あるとSSDでは何ができるか考えてみます。

　SSDコントローラでの処理オーバーヘッドを、多く見積もって1ミリ秒とします。すると残りは4ミリ秒です。

　一例として、TLC NANDフラッシュメモリにおいてメモリセルからのデータ読み出しにかかる時間を平均で100マイクロ秒と仮定すると、4ミリ秒あれば読み出しが40回できます。

　SSDは複数のメモリチップおよびチップ内のプレーンを同時並列駆動させて性能を上げます。NANDフラッシュメモリのページサイズを16 KB、プレーン数を2とすると、8チップ搭載したSSDではその8チップを同時並列駆動すれば1回のデータ読み出し動作分の時間（今回は平均100マイクロ秒と仮定）で16 KB×2プレーン×8チップ=256 KBのデータを読み出すことができます。これを40回行えば10 MBとなり、バンド幅換算すると10 MB÷4ミリ秒=2,500 MB/sとなります。

　単純計算ですし、ランダムアクセス時はここまでの性能は出ませんが、SSDでは5ミリ秒あれば最大でGB/sオーダーのバンド幅を出す処理ができる、ということを意味します。

　まとめると、5ミリ秒の間待たなければならないHDDと、5ミリ秒あればGB/sオーダーのバンド幅が出せるSSD……この差が「SMR HDDの書き込み性能の落ち具合が最近のSSDよりも大きなものになり得る」理由です。

## SMR方式のバンド管理方法に起因するオーバーヘッド
　SMR HDDの書き込み性能の落ち具合が最近のSSDよりも大きなものになり得るもう一つの理由は、SMR方式における「バンド」の管理方法です。

　SMR方式のバンドの内部はLBAが連続しています。例えば、バンドサイズが200 MBであれば、LBA 0から0xC7FF、0xC800から0x18FFF、といった形で、それぞれのバンドには200 MB分の連続したLBAが割り当てられます（セクタサイズが4キロバイトの場合）。

　そのようなSMR HDDでSMR領域のRead Modify Writeが発生すると、図6のようなイメージの処理が行われます。

![SMR HDDにおけるSMR領域のRead Modify Write処理イメージ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/52ebd616-8df8-d424-8301-10fe84a1df18.png "SMR HDDにおけるSMR領域のRead Modify Write処理イメージ")
図6：SMR HDDにおけるSMR領域のRead Modify Write処理イメージ

　図6では、CMR領域（キャッシュ領域）に、バンド0に属するLBAであるLBA = 0x3の最新データ(A)とバンド1に属するLBAであるLBA = 0xC801の最新データ(B)が記録されている様子を示しています。

　ここでCMR領域に「空き」を作るためにバンド0とバンド1のRead Modify Writeを行うことを決めると、図6 (1)および(2)のようにバンド0とバンド1のRead Modify Writeを行います。

　ここでのポイントは、Read Modify Writeするバンド全体を読み出すことです。

　もしCMR領域から追い出すデータのうちの当該バンドに属するLBAのデータのサイズがバンドサイズと比較して十分な大きさがあれば良いですが、例えば200 MBのバンドに対して数MB程度しかCMR領域から追い出されない場合、上書きされない190 MB程度の読み書きは無駄になります。

　もちろん実際の製品では、Read Modify Writeするバンドの選択アルゴリズムやRead Modify Writeするタイミングなどを工夫することで、ホストから見える性能の落ち具合を低減しているはずです。

　一方SSDでは、図2 (3)で有効データを別ブロックにコピーする際、LBAの並び順を考慮せず、とにかく有効データをかき集めてコピーします。このため、図6に示したSMR HDDのRead Modify Writeと比較すると、そのコピーの効率は格段に高い（＝無駄なコピーは少ない）です。

　なお、SSDのGCのコピー効率が高いのは、NANDフラッシュメモリの書き換え可能回数の制約を満たすためできるだけ高くする必要がある、という側面もあります。逆に言えば、SMR HDDのRead Modify Writeの効率が悪くても構わないのは、HDDでは書き換え回数に実用上制限がないから、とも言えます。

　無駄なコピー（読み書き）が少ないということは、図3に示した「ホストコマンドのためのデータ読み書きが遮られる時間」が短くなることに直結します。

　このことから、**SMR HDDの書き込み性能の落ち具合は最近のSSDよりも大きなものになり得る**、と言えます。

　SMR HDDのRead Modify WriteやSSDのGCが頻繁に発生するアクセスパターンはいわゆる広域ランダムライトの比率が高いワークロードの時になります。**そもそもCMR HDDですらランダムアクセス性能はSSDより大きく見劣りますから、SMR HDDの広域ランダムアクセス性能はSSDと比較してとても遅くなることが推測できます**。

# まとめ
　SMR HDDの書き込み方式はSSDの書き込み方式と良く似ています（全く同じではありません）。

　このため、SSDがSLCキャッシュ領域を使い果たしてGCを実行し始めた時のように、キャッシュ領域であるCMR領域を使い果たしてSMR領域との間でのRead Modify Writeを始めると性能が落ちます。

　しかも、SMR HDDにおけるRead Modify Writeは、SSDにおけるGCよりも効率が悪くなる可能性が高く、性能の落ち具合も大きくなり得ます。

　SMR HDDのキャッシュ領域は、SSDのSLCキャッシュ領域同様、サイズやその制御方法が外部からわかりにくく、CMR HDDのメリットであった「安定した性能」を得ることは難しいです。

　ストレージである以上今後も記憶密度を上げて容量コストを下げる方向で技術開発が進むため、CMR HDDは、そのコスト低減度合いは鈍り、また特にランダムアクセス性能では絶対的な性能差があるSSDとのコストパフォーマンス差がこれまで以上に縮まる可能性が高いです。

　次回の記事では、SSDとSMR HDDの性能差について具体的な数値を比較し、その上でCMR / SMR HDDとSSDの使い分けについてまとめたいと思います。

# References
[1] Seagate、「_[Seagateのシングル磁気記録で容量の壁を超える](https://www.seagate.com/jp/ja/tech-insights/breaking-areal-density-barriers-with-seagate-smr-master-ti/)_」、2021年5月25日閲覧
[2] ロジテックINAソリューションズ、「_[SMR？CMR？HDDの書き込み方式は2種類](https://www.pro.logitec.co.jp/houjin/usernavigation/hddssd/20190207/)_」、2021年5月25日閲覧
[3] ニューテック、「_[SMR　HDDについて](https://www.newtech.co.jp/introduce/hd2/)_」、2021年5月25日閲覧

# ライセンス表記
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="クリエイティブ・コモンズ・ライセンス" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />この記事は<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンス</a>の下に提供されています。