SSDの選び方(1/5)：TBWは値だけ見ても意味がない！

# はじめに
　SSDを選択する際には、性能（データアクセス性能）、価格、そして寿命などの指標を基準にすることが多いと思います。

　特に、NANDフラッシュメモリを使用したSSDについては、寿命を主な選択基準にする場合が多いと思います。

　使用上の不備や、落下等による部品の損傷、といった故障を除けば、NANDフラッシュメモリを不揮発性記憶媒体とするSolid State Drive (SSD)の寿命は、広く知られているように、NANDフラッシュメモリのブロック（以降、単に「ブロック」と記載します）の書き換え回数に依存します。

　ブロックの書き換え回数に起因するSSDの「寿命」というと、Terabytes Written (TBW)を思い浮かべる方が多いと思います。

　しかし一般的に、公表されているTBWは、対象のSSDに対して**ある「使い方」をした場合の「ホストからSSDに書き込むことができるデータのサイズ（の最大値）」**であって、**あらゆる使い方において通用する（＝製品の優劣をつけられる）ような万能な指標ではありません**。

　このことは、SATAやNVMeといったインターフェースプロトコルに依存しません。

　例えば、500 GBの製品の製品仕様（カタログスペック）にTBWが500 TBと記載されていたとしても、**どのように使ったとしても**500 TBのデータをホストから書き込めることを保証しているわけでは**ない**ですし、また**どのように使ったとしても**ドライブを1000回書き替えられることを保証しているわけでも**ない**のです。

　そこで、これから数本の記事で、寿命も含めた「おすすめのSSDの選択基準」についてまとめます。

　そのとっかかりとして、TBWの意味や考え方を含めて、「ブロックの書き換え回数に起因するSSDの寿命」について整理します。

　この記事では、TBWの定義と、SSDの製品仕様に記載されているTBWに関する記載の意味を説明します。

# サマリ

* SSDの製品仕様に記載されたTBWは、JEDECが定めたワークロードを用いて算出した値が多い
    * 特に「クライアントワークロード」を使用したものがほとんど
* TBWはワークロードに強く依存するため、SSDの使い方によっては**製品仕様に記載されたTBW値が参考にならないこともある**
    * 製品仕様に記載のTBW値のみを鵜呑みにして製品を選択するのは危険
    * 「クライアントワークロード」で算出されたTBWがSSDの比較検討の参考になるのは、「**オフィスや家庭で利用されるPCで利用されるSSD、特に、OSがインストールされた起動ドライブとしてのSSD**」を選択する場合

# TBWとはJEDECが定義したもの
　Terabytes Written (TBW)は、[JEDEC](https://www.jedec.org/ "JEDEC")がJESD218<sup>[1]</sup>という仕様で定めたものです。

　そのJESD218に記載されているTBWの定義は図1の通りです。この図1は、2011年8月に開催された[Flash Memory Summit](https://flashmemorysummit.com/ "Flash Memory Summit")での講演資料<sup>[2]</sup>から引用したものです。

![JESD218におけるTBWの定義](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/03e213b4-4512-3d71-3822-287d32343358.png "JESD218におけるTBWの定義")
図1：JESD218におけるTBW (TBW Rating)の定義<sup>[2]</sup>

　この文章をざっくり直訳すると以下のようになります。

> 　SSD製造者は、アプリケーションクラスに指定されたワークロードを使用して、次の条件が満たされるように、ホストがSSDに書き込むことができるサイズ（テラバイト）の最大数を表すSSDの耐久性格付けを定めなければならない。
>
> 1) SSDがその容量を維持し、
> 2) SSDがそのアプリケーションクラスに要求されるUBERを維持し、
> 3) SSDがそのアプリケーションクラスに要求される機能故障（率）要求(FFR)を満たし、
> 4) SSDがそのアプリケーションクラスで要求される時間だけ非通電であってもデータを保持すること

　この記載内容のうち、1)～4)の条件は、SSDがSSDとして機能するために必要な要件です。

　そのためか、最近、この定義の中の「**ホストがSSDに書き込むことができるサイズ（テラバイト）の最大数**」という部分が独り歩きし、用途にかかわらずあらゆるSSDを一括で比較判断するための指標のひとつとしてこのTBWが使われているように見受けられます。

　そのことが問題なのは、TBWを指標として使用する際に、**TBWの値のみが考慮されて、定義の中の「アプリケーションクラスに指定されたワークロードを使用して」という部分が考慮されていないこと**です。なぜなら、「**TBWはワークロード（＝使い方）によって変化する**」からです。

　なお、TBWの算出に使用する上記「アプリケーションクラスに指定されたワークロード」としては、通常、JEDECがJESD219<sup>[3]</sup>で定義しているものが使用されます。具体的には、クライアントワークロードとエンタープライズワークロードの2つです。

　TBWの定義に関するさらなる詳しい説明（日本語）としては、[4]の47ページ以降が参考になります。

# Googleで"TBW"を検索してみると...
　「TBW」「意味」というワードで検索したところ、以下のような記述を見つけました。というか、Wikipediaには記事が存在しないのですね（2019年10月7日時点、英語版でも存在しない）。

> TBWとは書き込める総量をあらわす単位です。
> たとえば 60TBW とは 60TB 書き込めるという意味です。
> つまり 60TBW のSSDに、毎日 1TB 書き込むと 60日 で寿命に到達するという計算になります。
> 毎日の書き込みが100GBなら600日、10GBなら6000日（16.4年）が寿命という計算になります。
>
> _「[SSDメモ： TBW の意味](http://mycc.s33.xrea.com/data/pc/ssd_tbw.html)」より引用_

　「60TBW とは 60TB 書き込めるという意味です」とありますが、「60TBW」が「TBW 60TB」という意味だとしても、**60 TB書き込めるとは限りません。ワークロード（使い方）に依存します。**

　ページの下部には「メモリチップも（他のPC部品同様）経年劣化するため、 書き込み寿命まで必ず使えるというわけではありません」と注意書きがあります。しかし、**TBWに限って言えば、TBWの値の差は、ワークロードの差が主要因です。**

　また、特に後半の記述が、TBWの値にのみ注目した場合に陥りがちな解釈です。

　「60TBW のSSDに、毎日 1TB 書き込むと 60日 で寿命に到達するという計算になります」とありますが、この解釈は、**そのような（＝毎日1 TB書き込むような）ワークロードで算出したTBWが60 TBなら成り立つ解釈ですが、これまでそのようなワークロードで算出されたTBWを見たことはありません。**

　また、以下のような記述も見つけました。

> TBWが 320TB の場合、１日に175GBを書き込む場合では、５年間に相当します。
> 毎日の書き換えの容量で、TBWの値を割れば、だいたい、何日は利用できるのか、割り出すことができます。その日数を目安に交換すると良いでしょう。
>
> _「[TBW - 自作パソコン入門](https://kaworu.jpn.org/pc/TBW)」より引用_

　「TBWが 320TB の場合、１日に175GBを書き込む場合では、５年間に相当します」という記載がありますが、これも、そのような（＝毎日175 GB書き込むような）ワークロードで算出したTBWが320 TBの場合にのみ成り立つ解釈です。

　同じく、「毎日の書き換え容量でTBWの値を割る」という見積もり方法も、被除数であるTBWがそのようなワークロードで算出されている場合にのみ成り立つ方法です。

# SSDの製品仕様におけるTBWに関する記載
　それでは、SSDの製品仕様（カタログ）に記載されたTBWに関する記載内容を確認してみます。

　実際のSSDの製品仕様におけるTBWの記載には、図2や図3のような注意書きが書かれているはずです。

> ※1 Total Byte Written（TBW） は、書込み負荷条件（ワークロード）として「JEDEC 219 Client (Solid State drive Requirements and Endurance Test Method)」を元に算出しています。

図2：SSDの製品仕様に記載されたTBWに関する注意書き(1)<sup>[5]</sup>

> 3. JEDECクライアントワークロード（JESD219）により算出されたTBW（テラバイト書き込み）値で、製品容量により異なります。 

図3：SSD製品仕様に記載されたTBWに関する注意書き(2)<sup>[6]</sup>

　これらの注意書きは、記載されているTBWが、JESD219で定められたクライアントワークロードを使用して算出された値であることを示しています。

　**ここが重要なポイントです。**

　つまり、製品仕様に図2や図3のような注意書きが記載されているSSDは、JESD219で定められたクライアントワークロード以外のワークロードで使用した場合、TBWの値が製品仕様（カタログ）に記載されたTBWの値とは異なる（より多くなることもあれば、より少なくなることもある）可能性がある、ということです。

# JESD219の「クライアントワークロード」とは
　JESD219で定められた「クライアントワークロード」は、同じくJESD219が定める2つのSSDのモデル（図4）のうち、「クライアントSSD」のためのワークロードです。

 ![JESD219が定めるユースケースの種類とその特徴](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/439683/5dbaf465-ca7e-6396-a93d-b0afc439a48f.png "JESD219が定めるユースケースの種類とその特徴")
図4：JESD219が定めるユースケースの種類とその特徴<sup>[2]</sup>

　図4の記載では、「クライアントSSD」として、「1日8時間稼働」「バースト的に発生するワークロードで、休息時間（ホストからSSDにアクセスのない暇な時間）がかなり長い」「書き込みは少ない」「LBA空間全体に対して、アクセスする領域サイズ（フットプリント）がとても局所的」「コスト最適化されている」といった特徴が挙げられています。

　これらの特徴はすべて、いわゆるオフィスや家庭で利用されるPCで利用されるSSD、特に、OSがインストールされた起動ドライブを想定したものなのです。

　したがって、**「JESD219のクライアントワークロードに基づいて算出したTBW」は、「オフィスや家庭で利用されるPCで利用されるSSD、特に、OSがインストールされた起動ドライブとしてのSSD」を選定する際の比較検討に使用できる値、**ということになるのです。

　例えば、前の節で挙げた「毎日1 TB書き込む」とか「1日に175 GB書き込む」ようなSSDの使い方は、上記のようなJESD219の「クライアントワークロード」が想定するSSDの使い方とは異なります。したがって、JESD219の「クライアントワークロード」に基づいて算出したTBWを使って前節のような換算・推定を行うことはできません。

　また例えば、以下のような使い方をするSSDを選定する際にJESD219の「クライアントワークロード」を使用して算出したTBWを使用することは、適切ではありません。

* 24時間稼働するサーバに設置されて絶え間なくWriteアクセスされるログ格納用SSD
* 24時間稼働し絶え間なくReadアクセスされるWebサーバのコンテンツ格納用SSD
* 動画・静止画データをひたすらWriteし続ける監視装置用SSD
* 温度や振動に代表される動作環境がオフィスや家庭とは異なる場所で使用されるSSD
* 一回の通電時間（稼働時間）が短い機器（システム）に接続・内蔵されるSSD

　例えて言えば、「サーキットで開催されるレースのマシンを選定する指標として、市街地での走行で測定した性能（燃費など）を使おうとしている」くらい適切ではありません。

　さらに、クライアントワークロードを使用した測定・算出をした場合でも、その測定過程に電源断（パワーサイクル；Power Cycle）は含まれないことがほとんどだと考えられます。

　したがって、以下のような使用方法の場合も、「JESD219のクライアントワークロードに基づいて算出したTBW」を使用することは適切ではありません。

* 電源断手順が存在せず、主電源（ブレーカー）を落とすような形で電源を落とす機器に接続・内蔵されるSSD

# おわりに
　TBWの数値は製品の比較に使用しやすいものではありますが、そのTBW算出のもとになったワークロードと、実際に使用するワークロードが一致しない場合には、的外れな比較になってしまい、必要な仕様を満たさない選択をしてしまう可能性を孕んでいます。

　次の記事では、なぜTBWがワークロードに依存するのか、TBWの値の大小を左右する要素は何なのかを説明し、SSDを選ぶ際におさえておかなければならない要素、およびそれらを踏まえて「**TBWは何に使えるのか？**」についてまとめます。

# Reference

[1] JEDEC, _“Solid-State Drive (SSD) Requirements and Endurance Test Method”_, JESD218B.01, March, 2016
[2] Alvin Cox, _“JEDEC SSD Endurance Workloads”_, Flash Memory Summit 2011, August, 2011
[3] JEDEC, _“Solid-State Drive (SSD) Endurance Workloads”_, JESD219A, July, 2012
[4] 浅野、「[SSDを使いこなす（SSD基本理解）](https://www.slideshare.net/InsightTechnology/dbts-osaka-2014-b11-hardware-hironobuasano)」、db tech showcase 大阪 2014、2014年6月18日 
[5] ハギワラソリューションズ、「[2.5inch SATA SSD (3D NAND) 6.0Gbps│SSD│製品情報（インデックス)│ハギワラソリューションズ](https://www.hagisol.co.jp/products/ssd/d25s6g-3d.html)」、2019年10月2日閲覧
[6] Western Digital、「[WD Blue 3D NAND SATA SSD](https://shop.westerndigital.com/ja-jp/products/internal-drives/wd-blue-3d-nand-sata-ssd)」、2019年10月2日閲覧

# ライセンス表記
<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>の下に提供されています。