OCP向けNVMe SSD仕様の更新内容（信頼性や寿命系）を調べてみた

# はじめに
　[Open Compute Project (OCP)](https://www.opencompute.org/)が作成したOCP向けNVMe SSD仕様<sup>[1]</sup>において、NVMe仕様が定める標準のS.M.A.R.T.属性に加えて多くの独自属性（仕様）が定義されていることを以前[紹介しました](https://qiita.com/ken-yossy/items/5bae983e0918daf2dcf8)。

　上記の記事で紹介したOCP向けNVMe SSD仕様のバージョンは1.0（2020年3月策定）ですが、記事作成時点で取得できる最新版のバージョンは2.0（2021年7月策定）です<sup>[2]</sup>。最新バージョンでは仕様の名称に「データセンター」が追加され、対象用途がより明確になりました。

　そこでこの2つのバージョンの間でどのような仕様が追加・変更されているか調べてみましたので、その調査結果のうち特にSSDの信頼性や寿命にかかわる内容をご紹介します。

　なお、OCPは10月に年次総会([OCP Global Summit](https://www.opencompute.org/summit/global-summit))を開催予定です。今年に入りNVMe基本仕様もバージョン2.0が発行されて大きく変化しましたので、この総会に合わせてOCP向けNVMe SSD仕様も最新バージョンが発表されるのではないかと予想しています。もし公開されたら再度変更点の調査を行うつもりです。

# まとめ
* 注目が必要な独自S.M.A.R.T.属性の変更や追加はない
* Power Loss Protection (PLP)が項目として独立したほか、温度の仕様が一部変更された

# 独自S.M.A.R.T.属性の変更点
　OCP向けNVMe SSD仕様では、NVMe標準仕様のS.M.A.R.T.属性(Log ID = 02h)に加えて独自のS.M.A.R.T.属性(Log ID = C0h)を定義しています。

　バージョン1.0から2.0で追加された内容は以下の4つのみです。

_表：独自S.M.A.R.T.属性(Log ID = C0h)のバージョン1.0から2.0での主な追加内容_
| 名称 | 内容 |
|:-:|:-:|
| DSSD Specification Version | Datacenter SSD仕様のバージョン |
| NVMe Errata Version | NVMe仕様のバージョン（"1.4b"などの"b"の部分）|
| PCIe Link Retraining Count | PCIe Link Retrainingを実施した回数 |
| Power State Change Count | Power State（消費電力状態）を変更した回数 |

　これらはSSDの信頼性や寿命に大きく関係がある項目とは言えません。

# その他信頼性や寿命に関係する変更点
　上記独自S.M.A.R.T.属性以外でSSDの信頼性や寿命に関連する変更点としては、**PLPが独立した節に格上げされた**こと、**一部温度条件が変更された**こと、そして**サーマルスロットリングと温度超過報告仕様詳細化**、を挙げます。

## PLPが独立節に格上げ
　バージョン1.0ではPower Loss Protection (PLP)に関する要求仕様は様々な節に分散していたのですが、バージョン2.0では独立した節にまとめられました(Section 6.8)。PLP機能の定期検査（ヘルスチェック）のフローチャートまで示すほどの力の入りようです。

　しかし、製品使用開始から時間が経過した後ならまだしも、工場出荷状態からデフォルトの検査間隔が15分というのは多少短い気がします。

> The factory default PLP Health Check Interval shall be 15 minutes
>
> _"6.8 Power Loss Protection"より引用_

## 温度条件の変更
　バージョン1.0ではSSDの非通電保管時の温度は摂氏25度と規定されていたのですが、バージョン2.0では摂氏40度に変更されました。

　データセンターにおいて、SSDを含む構成部品保管場所の冷却コストがカットされたのかもしれません。以前から電力使用量削減は重要でしたが昨今ではさらにその重要性が増していますので、保管場所の温度条件変更（上昇）は今後も続く可能性はあります。SSD（NANDフラッシュメモリ）としては厳しくなる方向ですね。

_表：非通電保管期間に関するバージョン1.0と2.0の記述内容_
| バージョン1.0 | バージョン2.0 |
|:-|:-|
| Non-Operational (Powered-off) data retention (end of life) shall be at least 1 month at **25°C (77°F)**. | Non-Operational (Powered-off) device data retention time (end of life) shall be at least 1 month at **40°C (104°F)**. See Section 12 Device Profiles for specific retention requirements. Specific Devices Profiles may have longer data retention time requirements. |

## サーマルスロットリングと温度超過報告仕様詳細化
　サーマルスロットリングについては、スロットリング開始温度として摂氏77度が示されていることはバージョン1.0から変わらないのですが、「**スロットリング状態で摂氏75度未満になればスロットリング状態から抜けること**」という規定が追加されました。

　加えて以下の内容も追加されました。

* 摂氏85度を記録したらそのことをホストに知らせること
* Warning Composite Temperature Threshold (WCTEMP)は摂氏77度とすること
* Critical Composite Temperature Threshold (CCTEMP)は摂氏85度とすること

　細かいですね。

# その他の変更点
　これまでに説明した内容以外では、以下の内容が追加されています。

* セキュリティ関連項目
* NVMe-MI (NVMe Management Interface)関連
* "Latency Monitor"の導入
* フォームファクタの追加（E3、U.2、およびU.3）

　この"Latency Monitor"という機能は、SSDの性能指標のひとつである「レイテンシ」の状況（変化）を監視してこれらのSSDを使用するデータセンターでの解析に使用するための機能である、とのことですが、仕様は複雑で詳細設計と実装が大変そうです……。

# まとめ
　Open Compute Project (OCP)が策定しているOCP向けNVMe SSD仕様について、バージョン1.0と2.0の差分を調査し、特にSSDの信頼性や寿命に関する項目を中心に調査結果をご紹介しました。

　今回の調査では本仕様独自のS.M.A.R.T.属性には特筆すべき追加変更点はありませんでした。

　バージョン1.0の発行が2020年、バージョン2.0の発行が2021年ですので、来たる10月のOCP Global Summit前後にバージョン3.0発行の発表があるかもしれません。もし発表されたら、今回のように差分を調査したいと考えています。

# References
[1] Open Compute Project, _"NVMe Cloud SSD Specification"_, Version 1.0, March, 2020
[2] Open Compute Project, _"Datacenter NVMe&reg; SSD Specification"_, Version 2.0, July, 2021

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