NVMeなM.2を使ってみる

17/05/14初稿

 展示品処分価格に引かれてうっかりZ170環境を新築したワケですが、Z68と比して明らかな新機能ってこれくらいですよね。
 なので勢い集中的に調べていたら、俄然興味沸いてきました。

 NVMe=Non-Volatile Memory Express・・・ってそのまんまなんですね(苦笑)。

 あまりにも沸いたのでSAMSUNG製SM961買っちゃいました(笑)。システム用想定で128GB。上位容量品に比すとwriteは落ちますがreadは変わらないみたいでしたので、敢えて使わない領域にお金出す意味はなかろうということで。
 960PROの組み込み版らしいです。

Samsung SSD 512GB 960 PRO M.2 Type2280 PCIe3.0×4 NVMe1.2 V-NAND搭載 5年保証 日本サムスン正規品 MZ-V6P512B/IT
Samsung SSD 512GB 960 PRO M.2 Type2280 PCIe3.0×4 NVMe1.2 V-NAND搭載 5年保証 日本サムスン正規品 MZ-V6P512B/IT

 実利的目的は、「現Z68マザーからSATAが2port減ってしまったのでストレージI/Fとして活用したい」です。
 キモチの問題的目的は、「新規格に興味」に加えて「CPU直結したい」です。Z170環境ではCPU内蔵Gfx使う予定なので、空いちゃう直結X16スロットがモッタイなくて(笑)。


■準備

 ということで、いろいろいじってみたいと思います。特記なきは以下の条件にて。

・プロトコル・・・NVMe限定(当然物理I/FもPCIe限定)
・UEFI設定
  ・SATAモード・・・AHCI
  ・SecureBoot・・・Disable(OtherOS)
  ・CSM(設定がある場合)・・・Disable
・OS・・・Windows10Pro(64bit)
・NVMeドライバ・・・IN-BOX  #SAMSUNG製の事情は稿末に記載
・CPU・・・Z170世代はCore i7-6700K,Z68世代は2600K
・ベンチソフト・・・≪Cristal Disk Mark 5.1.2 x64≫ (CDMと略)
・情報取得ソフト・・・≪Cristal Disk Info 7.0.5 x64≫ (CDIと略)

 M/BとそのUEFIバージョンは以下の通り。テスト時点での最新版(ベータ除く)です。

・ASUS製 Z170 PRO GAMING・・・3202   #特記なき場合はコレ
・ASUS製 Z170-A・・・3301
・ASUS製 P8H67-M EVO・・・3703
・GIGABYTE製 GA-Z68X-UD3H-B3・・・U1l
・GIGABYTE製 GA-X79-UD3・・・F20

 以下M/B名は省略形にて。

 PCIe変換カードはAINEX製AIF-06を選択。
 SATA用M.2スロットを使う予定はありませんが、発売時期が新しく明確に「Gen3」「100シリーズ対応」と謳っていることから。
アイネックス M.2 SSD変換PCI-Expressカード SATAコンボ AIF-06
アイネックス M.2 SSD変換PCI-Expressカード SATAコンボ AIF-06

 アクセスランプとしてピンヘッダではなく青色LEDを実装してます。まぶしいくらい明るいです。
 SM961の凹部をネジ位置にピッタリ合わせるとスロットへの挿入が緩くなります。Z170-AのM.2スロットではカッチリはめるとネジ位置もピッタシです。


 念のためですが、本稿は私が調べて理解したことであり、ベンダや専門家に裏を取ったワケではありませんから間違いあるかも知れません。その点ご了承ください。


■M/Bの「NVMe対応」とは何か

・Boot
 NVMe-SSDからbootするためには、「NVMe-SSD用bootROM(UEFI用Driver)」が必要です。
 UEFIに内蔵していればデバイス側にOpROMは不要になりますが、それは「M.2スロットを有しNVMeサポートを謳う世代(具体的にはZ97,X99以降)」からのようです。

 また、次のような情報もありました。

 UEFI であれば、どのバージョンでも良いという訳ではありません。
 インテル社の情報によりますと、UEFI のバージョンは 2.3.1(2011年4月に制定)以降となっています。
 UEFI のバージョンは、BIOS のバージョンとは全く異なるものとなります。
 UEFI のバージョンを確認するには、BIOS画面からは殆どの場合、確認ができません。
 UEFI Shell を起動し、「ver」というコマンドを打って、確認することができます。

出典:https://www.arcbrain.jp/support/NVM_Express/compatible_motherboard.php

 上記はIntel750でのboot解説ですので、UEFIが「bootROMを持っている」ではなく「OpROMからbootできる」という意味でしょう。
 なお、念のためですが「2.3.1」とはM/Bに載っているF/Wとしてのバージョンではなく標準UEFIとしてのものです。
http://www.uefi.org/sites/default/files/resources/UEFI%20Spec%202_6.pdf

 つまり、M/Bの「NVMe対応」には以下の種類があるということです。

A.UEFI内にbootROMを持っている
B.UEFI内にbootROMを持っていないが、OpROMを動作させることができる
C.BIOSなのでbootROMを持っていないが、OpROMを動作させることができる
D.ストレージとして普通に使える

 AとBとCは「boot対応」です。
 Dはbootに関係なく「認識して使えるという対応」です。NVMe-SSDは所詮「PCIe拡張カード」なのでドライバさえあれば原則使えるハズですが、いわゆる相性問題があったりマジで仕様上NGだったりする場合もあるかもしれません。

 以上、「対応していません」「認識しません」といった情報は何を意味しているのか注意すべきでしょう。

OptionROM
 上記「UEFI(BIOS)種類と運用の関係」から、それぞれに必要になるNVMe-SSD側のOpROM対応をまとめます。

1.Aでbootしたい場合・・・デバイス側OpROM不要
2.Bでbootしたい場合・・・UEFI対応OpROM搭載製品が必要
3.Cでbootしたい場合・・・BIOS対応OpROMまで持ってる製品が必要
4.bootしない場合・・・・・なんでも可(ていうかOpROM無い方がよい)

 例えばSM961やIntel600pは1、Intel750は2、PlextorM8Peは3… “らしい”ですが、OpROM仕様がよく判らない製品も多いようです。重要な製品スペックだと思うんですけどねぇ。

・実際のboot挙動
 手持ちのM/Bで確認した結果を記します。

(1)GA-Z68X (CPU側PCIEX16にはGfx装着)
 CPU側PCIEX8に購入直後のSM961を搭載すると普通に認識します。
 USBメモリからWindows10を入れようとするとインストール先として選択できて進みますが、SM961から再起動する時点でブートメディアがないと言われて停止します。
 UEFIから見えなくてもOSがドライバ持ってればインストールは開始できてしまうワケですね。確かにUEFIからboot対象に見えません。
 CSMはAlways(*)のUEFI Driverにて。

*:何故かNever(Disableに相当するハズ)に設定できません。設定しても再起動するとAlways(Enable相当のハズ)に戻っています。何かUEFI非対応デバイスがあって自動検出しているのか、“あとからUEFI”だからか?(苦笑)。でも最初からUEFIのGA-X79でも同じです(起動できないけどOSからは見える点も含めて)。

(2)Z170-A (GfxはCPU内蔵を使用)
 (1)で中途半端になったSM961をCPU側PCIEX16に移設したところ、bootしてインストール続行、ちゃっかり完了しました。
 この世代はUEFIネイティブサポートでブートできるということですね。シンプルです。

(3)P8H67-M (GfxはCPU内蔵を使用)
 CPU側PCIEX16装着でインストールしてみると、ターゲット領域を選択する場面で「このシステムは起動をサポートしていない可能性があるのでインストールできません」と出ました。
 GA-Z68Xではできちゃったので、インストーラの反応が違う場合があるんですね。これは意外。
 実際、OSが入っている状態で同PCIEX16に装着してもboot対象にならずUEFIが立ち上がってしまいます。UEFI上を見てもbootドライブとして認識されていません(PCI ROM Priority設定をLegacy/UEFI Compatibleどちらにしても)。
 CSM関連の設定は見当たらないので常時Enableだと思われます。
 なお、起動はできませんがストレージとしては普通に認識します。

 以上より、

・GA-Z68XやP8H67MやGA-X79らのUEFIはbootROM非搭載(最新版でも)
・SM961はそれを補うOpROMを持っていない
・Z170-AやZ170 PRO GAMINGはUEFIネイティブでboot対応(デバイス側OpROM不要)
・OpROMにアクセスする必要ないのでRAIDやCSM有効にする必要なし
・OSがドライバ持っていればストレージとしては普通に使える(boot対応無関係)

という理解でいいようです。

・OptionROM必要性
 ですので、

 「UEFIブート非対応のM/Bで起動ディスクとして使いたい」ならOpROM必須。
 そうでないならOpROMはレガシーもUEFIも無い方が望ましい。

と思われます。UEFI設定で無視できるかも知れませんが、不要なものは無い方がいいでしょう。
 「システムドライブをNVMeにすると起動が数秒遅くなる」という話もあるようですが、OpROM処理時間のような気がします。H8H67-MオンボMarvellコントローラのOpROM(おそらくLegacy)の例ですが、Enableにすると電源ONからWindows10の数珠が回り始めるまでが2.5secほど遅くなります(11.5sec→14.0sec)。

 なお、bootROM搭載UEFIのM/BにUEFI対応OpROM搭載NVMeを実装した場合、どちらが優先されるかはよくワカリマセン。CSMが無効なら自前、有効ならOpROM優先のような気もしますが… M/Bベンダによってコンセプト違うかも?

IntelのNVMeブート関連資料
http://download.intel.com/support/ssdc/hpssd/sb/nvme_boot_guide_332098001us.pdf

・bootするために「RAID&CSM有効」設定は必要か
 Z170-Aの付属マニュアル(第1刷)の1-27には「M.2にOSをインストールする場合はRAID&CSM有効にせよ」とあります。
 が、ASUSサイトにある第3刷では無くなっています。
 実際、上記の通り「AHCI&CSM無効」でもOpROMを持たないと推定しているSM961にインストール&bootできています。CPU直結スロット=非IRSTスロットからもbootできます。
 GAMINGの付属マニュアル(第1刷)にも同様の記述がありますが、UEFI最初期バージョン0231でも「AHCI&CSM無効」でCPU側PCIEX16,同PCIEX8,PCH側PCIEX4からbootできました(M.2は確認しないでUEFI3202に更新。もちろん3202でboot可)。CPU側PCIEX16でのWindows10インストールも成功しました。

 想像ですが、この記述は前Z97世代での対応方法の名残りのような気がします。IRSTは当然bootROMを含みますので、それを利用していたのでしょうか。
 「初期UEFIではUEFIネイティブよりRAIDの方が安定していたがUpdateで解消された」といった事情かも知れません。

 なお、以下Intel600p資料によるとWindows7だけはCSM設定異なるようです。
http://www.intel.com/content/dam/support/us/en/documents/solid-state-drives/Intel_6_Series_PCIeNVMe_InstallGuide.PDF

・CSMとは何か
 CSMをEnableにする主たる目的は「起動時にOpROM動作が必要だがBIOSにしか対応していないデバイスのサポート」だと認識しています。起動後はOSにドライバがあればアクセスできるので。
 OS起動前に動作していなければならないのは、一般的には「ブートデバイス」と「画面表示デバイス」くらいのハズ。つまり、具体的には「ブートデバイスを接続したストレージコントローラ(RAIDコントローラ含む)」と「First Gfx」が対象ではないかと。つまり、これらがUEFI対応していれば無効でいいハズです。

 ちなみに、HD7750をCSM無効にしたZ170-Aに挿したら「UEFI対応してない」って言われてPOSTで停止しました。
 UEFI設定に入ったらCSM有効に変更されてました。

 なお、チップセット内蔵USBコントローラやSATAコントローラなど、ブートデバイスを認識可能なコントローラもOS起動前に動作しているワケですが、それらはUEFIが必要最低限の初期化制御を実装していることで実現していると理解しています(なのでCSM無効でOK)。


■M/Bの「NVMe-RAID対応」とは何か

 「NVMeブート対応」していても、「IRST-RAIDがNVMeのRAIDに対応」しているとは限りません。
 また、「IRST-RAIDがNVMeのRAIDに対応」していても、「NVMe-SSDどうしでのRAIDに対応」しているとは限りません。

 どういうことか、実事情から考えてみます。

・リマッピング
Z170記事に記したI/O表を見ると、「IRSTは限定されたレーン組合せの3セット」でサポートされているようです。

・Z170-Aでは、マニュアルで「PCH側PCIEX2(X4)とM.2でIRST-RAIDが組める」と、敢えて対応スロットを規定しています。
 が、PCH側PCIEX4スロットはIRSTセットレーンではないと推定しているGAMINGでは、マニュアルにその記述はありません。

・さらに、次のような情報があります。

There is no RAID support for NVMe drives with Z97 and X99 chipsets, only OS (Software) RAID. These chipsets do not have the PCIe/SATA remapping technology required for iRST to support NVMe devices.

Some systems using the Intel® Z170 Chipset and Intel® Rapid Storage Technology are capable of using RAID with PCIe* NVMe* SSDs. We would recommend you to check with the Computer Manufacturer Support before purchasing to confirm if a specific system supports this. Some Z170 systems may not have the device mapping and BIOS features required to create a bootable RAID volume.

出典:https://communities.intel.com/thread/87865

 以上より、

・CPU側PCIeスロットやPCH側でもIRSTセット以外のPCIeレーンで構成されたスロットでは、認識はされるしbootもできるがIRST-RAID対応していない

・IRST-RAIDメンバにするには「PCIe/SATA remapping technology」が必要

と考えられます。

 実際、GAMINGのM.2に挿したSM961をIRST-RAIDメンバにするための設定と挙動は次の通りです。

設定1.SATA Mode Selection項 = Intel RST Premium (RAID)
設定2.M.2 PCIE Storage RAID Support項 = RST Controlled

 1だけではSM961はRAID設定画面でRAIDメンバ候補リストに出てきません。
 2を設定すると出現します。
 2は1を実施しないと表示されません。

 リストに出るようにしてWindows10を立ち上げるとデバマネからNVMeドライバ(SAMSUNG純正)が消え、≪CDI≫から見えなくなります。が、エクスプローラからは見えますし≪CDM≫でベンチもできます(性能低下はしていないようです)。

 PCH側PCIEX4に付け替えると、2に相当する設定が表示されず当然RAIDメンバリストに出てきません。デバマネにはNVMeドライバが復活し、≪CDI≫からも見えます。やはり当該スロットはIRSTセットではないPCIeレーンで構成されているのでしょう。
 CPU側PCIEX16でも挙動は同様でした。

 -A(UEFI3401)のPCH側PCIEX2(X4)は、GAMINGと異なり「PCIEX16_3 PCIE Storage RAID Support」項が表示され、「Enable/Disable」が選べます。

 以上より、

・IRST-RAIDメンバにできるのは「SATA Storage」だけ

・なので、「PCIe Storage」をメンバにするにはそれを「SATA Storage」に見せかる機能が必要(もちろんUEFIレベルで)

と推察されます。
 当該機能がIntelフォーラムで言う「PCIe/SATA remapping technology」、UEFI設定に言う「M.2 PCIE Storage RAID Support」なのでしょう。で、それを有したIRSTバージョンの名前が“Premium”ってことですかね(笑)。
 UEFIレベルでSATAに見せかけるためOSレベルではNVMeデバイスじゃなくなるので、ドライバが消えるのでしょう。

・対応スロットは複数あるか
 例えば「2枚のNVMe-SSDでIRST-RAIDに対応」するには、IRSTセットのPCIeスロット(M.2スロット)を2基以上搭載している必要があります。
 GAMINGはNVMe-SSDをRAIDメンバにすることには対応していますが当該機能には非対応ということですね。-Aは対応です。

・CSMはどうすべきか
 Premiumな(?)IRSTを使うには、CSM設定を考慮する必要があるようです。
 CSM無効にしておけば大丈夫ですが、有効の場合は「Boot from Storage Devices項 = UEFI driver first」にしないと設定項が出てきませんでした。


 以上、RAID関連の「対応・非対応」という情報は何を意味しているか、よく吟味した方がよさそうです。


■帯域を知る

・NVMeの帯域
 NVMeの物理I/F仕様は「PCIe Gen3 X4」ですよね。約4000MB/sの帯域を持ちますが、すでに高性能品のシーケンシャル性能は3000MB/sを超えてますから、HDDをSATA2で使うような「X2やGen2でも余裕」といった事情はありません。
 ですので、性能をフルに発揮させるにはふたつの注意点があります。

・スロットがPCIe Gen3 X4以上であること
・それがPCH側スロットの場合はCPU-PCH間のI/FがDMI3(Gen3 X4相当)であること

 PCHのPCIeがGen3、DMIがDMI3になったのはZ170からです。

 ですので、NVMe-SSDのベンチ情報においては「どのプラットフォームのどのスロットに挿したか」は必須情報と言えるでしょう。
 Z170より前のPCH(X99含む)ではPCIeはGen2、DMIもGen2相当のDMI2ですから、そこで帯域が足りなくなります。ので、Gen3のCPU側スロットじゃないと実力測れていないことになります。
 すでにI/F規格がボトルネックになってる気が… まあ、シーケンシャル性能に着目した規格じゃあないんでしょうけれど。

 ところで、CPU直結とPCH接続で速度差はあるのでしょうか。
 web上の情報では、Z170のCPU側PCIEX16とM.2スロットで差はなかったようです。
 自分でもやってみましたが大差なさそうです。CPU直結の方が若干いいように見えなくもないですがプラシーボレベルかと。
 もしかするとPCHを忙しくすると違いが出るかも知れませんが、実効的な差にはならないような気がします。
 なお、ドライバもIN-BOXとSAMSUNG純正(Ver2.1)で有意な違いはなさそうでした。

PCIeの帯域
 SM961-128GBのシーケンシャル性能はGen3 X4未満のバス性能を上回っています。なので、その数値はバス性能の限界値になるハズです(DMI3はGen3 X4相当ですからネックにはなりません)。

 ところで、Z170-AのPCIEX16第3スロット(PCH側)はレーン数を2か4に変えられます。加えて、Genモードも設定できます。
 そこで、「≪CDM≫のSeqQ32T1値を実データ転送の帯域に見立て」て以下の確認してみました(UEFI3401、PentiumG4560にて)。

・Gen2はGen1の2倍になるのか?
・Gen3 X2とGen2 X4は共にデータ帯域2000MB/sだが、やはり実際にはGen3 X2の方が若干遅くなる(1レーンは1000MB/sではなく128/130=985MB/s)のか?
・Gen2 X2に対してGen2 X4はレーン数2倍だが帯域も2倍になるのか?

 からっぽのSM961でSeq:Q32T1を5回実施した結果は以下の通りです(設定されたバス動作モードは≪CDI≫で確認)。

  ・Gen1 X2・・・451.9MB/s
  ・Gen2 X2・・・901.7MB/s  → Gen1 X2の1.995倍
  ・Gen2 X4・・・1805MB/s  → Gen2 X2の2.002倍
  ・Gen3 X2・・・1777MB/s  → Gen2 X4の0.984倍

 オーバーヘッドは10%くらいのようです。
 Gen2はGen1のほぼ2倍のようです。
 Gen3はGen2の2倍弱のようです。
 レーン数はほぼダイレクトに効くようです。

 以上より、「Gen3 X4の帯域限界は1777x2=約3550MB/s」程度と推定されます。
 web上のベンチ情報を見ると、NVMe-SSD最速クラスはその数字が出しているようですので、それらは「Gen3 X4帯域限界の速度を持っている」と言えそうです。
http://www.4gamer.net/games/999/G999902/20161018064/

 そして、それは同時に「DMI3帯域でもほぼサチっている」ということです。ので、

「PCH側デバイスでしか組めないIRSTによるNVMe-RAIDは、現最速クラスのNVMe-SSD単体に対し、速度面での有意性はほぼない」

と言っていいでしょう。Seq値は上記の通りですし、4K値も特に伸びないみたいですし。

 一方、ソフトRAIDなら組み合せ制約はありませんから、DMI3限界以上の速度が出せるハズです。
 実際、950PROを用いた以下記事によると、「PCHのIRST-RAID0だと3200MB/sくらいでサチる」けれど「CPU直結のWindowsストライプセットだと4000MB/sを突破する」ようです。
http://akiba-pc.watch.impress.co.jp/docs/dosv/1017646.html


■エトセトラ

・システムディスクとしての性能
 実験ネタを一通りクリアしたので、SM961を常用すべくCPU側PCIEX16に搭載してWindows10Pro CreatorsUpdate(64bit)を入れました。
 そしてOSについての測定です。それまで使っていたSATA3のSSD-256GB(CFD製CSSD-S6T256NHG6Q:ベンダはTOSHIBA)より起動時間は短縮されるか測ってみました。システムSSD以外の環境は同じです。
 Win10は初期バージョン1511と1703、10か月ほどZ68で使ったままのとクリーンインストール直後、といった違いがありSM961の方が有利なハズですが、数珠が回り始めてからデスクトップ画面が出るまで約12.5secで同じでした。
 起動後の使用感も変わりません。「高速NMVeにしても通常使用上の体感速度については(SATA-SSDに比して)メリットない」というのは本当のようですね。

・発熱
 私はSM961しか持っていませんが、バリバリの動画編集などを除く普通の使い方で「激アツになってサーマルスロットリングが発生する」ことは無いような気がします。だって「限界性能で長時間R/Wする相手がいない」でしょうから。
 発生するとしたら「NVMe-SSDどうしで数十GBのファイルコピーする時」くらいだと思いますが、それを大量に急ぎでやり続ける必要がない限り、たとえサーマルスロットリングでちょっと遅くなっても事実上問題ないのではないかと。そもそも(RAIDじゃなければ)Write性能でサチりますし。
 「サーマルスロットが発生するような使い方するので、熱による故障や寿命が心配」な場合は、PCIe世代でかなり違うような気がしますので、UEFI設定でGen1やGen2に落として運用するのもいいかも知れません。もちろん“ベンチ性能”は犠牲になりますが、実使用上は問題なさそうな気がします。
 17/07/22追記:TOSHIBA製XG3でGen1にしてみましたが、Gen3との温度差はほとんど認められませんでした。なんでこんなに発熱するんでしょうね?

 「変換カードでPCIeスロットに装着してヒートシンク貼ってスロットファンで冷やす」などの発熱対策して2~3スロット消費しちゃうくらいなら、M.2タイプではなく最初からヒートシンクで覆われたPCIeカードタイプの方がいいような気がします。例えばIntel750とか。
 Intel750はドライバによって大幅に性能変わるようですが、何かIN-BOXドライバではONにならない独自制御してるってことですよね。

 FirmWareでも変わるかも知れませんね。

・Windows7のインストール
 私はやっていませんが、NVMeドライバを持っていないため途中で入れる必要があるようです。
 かつてのIntelチップセットRAIDボリュームへのOSインストール時と同じ話ですよね。

・SecureErase改め「FormatNVM」
 SSDとは異なる仕組みになったんですね。確かにUEFIツールのSecureEraseではSM961は対象ドライブとして表示されません。
 なお、確認してませんし暫くやらないと思いますので将来に向けたメモとしてですが、「WindowsのIN-BOXドライバは当該コマンドを受け付けないので純正ドライバを使う必要がある」そうな?

・SAMSUNG純正(?)ドライバ在処
http://www.samsung.com/semiconductor/minisite/ssd/download/tools.html
 「This driver supports Samsung NVMe SSD 960 PRO, 960 EVO and 950 PRO.」とありますので、SM961にとっては純正とは言い切れないような(苦笑)。動きましたけど。


メインメニューへ

テーマ : 自作パソコン
ジャンル : コンピュータ

最新記事
ERIへようこそ

Author:らかせ
「最新記事」または
「メインメニュー」からどうぞ

・ファイルへの直接リンク以外はリンクフリー(連絡不要)です

・一応、拍手にコメント(非公開)付けられるようにしてあります

・DB的に利用しており、過去記事もガシガシ書き換えています。特に「最新記事」は初稿から一週間くらいは直してることが多く、大幅に変わっちゃうことも。ご了承ください

・ということもありますし、記すまでもないですが無断転載(ファイル含む)はご遠慮ください

・引用の考え方については「007:諸事」をご参照ください

・アフィリエイトはAmazonのみです

・ハイパーリンクは当Blog記事のみです(054:節電記事のみ例外)

カテゴリ
検索フォーム
FC2カウンター