ライトブログ

どれかキーを押すと,続行します.

M.2の謎

久しぶりに、専門的な話をしようと思う。 どうしても仕事で必要になってしまった知識。

<注意> ・XPS13の修理とM.2SSDに関するかなり技術的な話です。 ・研究した内容を元に書いていますので、正しいかどうかは不明。 ・とてもとても長い記事です。安易に読まないことをお勧めします。

事の発端は、利益を上げるために莫大な仕入れを行ったことから始まる。

前の記事の通り、今期は大幅赤字を見込んでいる。 それでも、限界までプラスになるように努力する必要はある。

私の家計の収益・利益は、商品部門を除けば月間値は大体同じになる。 商品部門で収益を上げ続ければ、そこは限界はない。

薄利多売で販売件数で稼ぐ方法もあるが、今回は1つの商品に大きな額を かけて大きいリターンを得ようと考えた。

仕入れたのはDell XPS 13 9350。i7-6500U(Skylake)を採用した 最新モデルのフラグシップPCだ。仕入金額は10万を超える。 PC自体は、何らかの不調でSSDが認識はするが動作しないというものだ。

仕様は以下の通り。 CPU: Intel Core i7 6500U(Skylake) RAM: LPDDR3 1866MHz 8GB Chipset: 100シリーズ(詳細不明) SSD: PCIe 256GB

到着後、いろいろ検証し、幾度となくSSDの試験を行ったが改善されなかった。 なぜだと頭を抱えながら、ふとDiagnoticsの画面を見ると、 SSDの容量(Size)が0Bになっているのを発見した。

「あ・・・」 「これはあかんやつや」

今まで、数十台のSSDを購入し使用してきたが、その中で1台だけ 容量が突然0MBになって認識できなくなるトラブルを抱えたものがあった。 復旧ソフトや物理フォーマットなどで直そうと処理を実行しても結局0MB のままで、ごみに捨ててしまった。

ということで、分解へ。 出てきたSSDは、SamsungのNVMe PM951。M.2接続だ。

SSD単体での検証をしようかと思ったが、M.2を変換するものを 買っても無駄足になりそうだったのでカット。直せそうにないし。

実は、入札する当初からSSDが故障していることは予測していた。 だから、M.2のSSD仕入値を引いた額で入札をかけていた。 予算は256GBで12,000円。

だが、どのSSDにするかを決める段階で、M.2の規格には多数の規格が あり、間違えると使えない可能性があることが分かった。 詳しく調べていたが、話が膨らんでいくだけで、収束しない。

そこで、個人的な覚書も兼ねて、今後成長するであろう このM.2規格について調べた結果を書いていこうと思う。 (調べた結果なので、間違っていたらご指摘いただければ幸いです。)

まず、関連する用語をまとめてみた。 SSDとかBIOSとかUEFIなどの基本的な言葉はカットしている。 ・M.2 ・NGFF ・NVMe ・miniPCIe ・SATA Express ・PCIe接続(x2/x4) ・SATA接続 ・AHCI ・mSATA ・Type(幅/長さ/厚み/KeyID) ・KeyID(A/B/E/Mなど) ざっと考えるだけで、11個の用語が出てきた。

次に、上記の用語の意味を書いていく。 ・M.2…PC内部の内部拡張カードフォームファクタ(大きさ)と接続端子 について定められた規格。NGFFの新称。

・NGFF…Next Generation Form Factorの略。M.2の旧称。

・NVMe…Non-Volatile Memory Expressの略。Non-Volatile=非揮発性という意味。 すなわち、非揮発性メモリ(SSD)の性能を引き出すために作られた ストレージデバイスとシステムメモリ間のデータのやり取りの方法プロトコル) について定義されたもの。 従来のAHCIIDEは、HDDに合わせたものであったためSSDを接続すると 非効率的な部分がどうしても存在している。それを解消するために開発された。 コントローラーの制御の規格AHCIモードの後継ともいえる。

・miniPCIe…PCの拡張インターフェースのPCI Expressを小型化したもの。 主にノートPCのWLANアダプタ等に利用されている。 mSATAと接続インターフェースの互換性がある。 ただし、miniPCIeスロットにmSATAの機器を接続して利用できるかは そのPC次第。利用できないことも多い。

SATA Express…SATAの限界速度600MB/sを、内部のインターフェースに PCI Expressを利用して超える。ただし、ソフトウェア上ではSATAを用いている。 製品が無いため、普及していない。

・PCIe接続(x2/x4)…M.2SSDにおいて、内部接続でPCI Express接続を利用するもの。 x2接続(第3世代なら16Gbps)をするかx4接続(同32Gbps)をするか。 今後重要になってくる。

SATA接続…M.2SSDにおいて、内部接続でSATA接続を利用するもの。 SATA3の場合、限界速度である600MB/sまでしか出ない。SSD本体の速度が 飛躍的に向上した現在はここが速度向上のボトルネックとなっている。

AHCIAdvanced Host Controller Interfaceの略。SSDなどのストレージデバイス とシステムメモリの間でのデータのやり取りの方法(プロトコルについて定義されたもの。 あくまで、コントローラーの制御の規格。いわゆるIDEモードの後継。

・mSATA…M.2やNGFFが出てくる前までに開発されたもの。SATAにmが付いている通り、 従来のSATA機器より小型なもの。主にmSATA SSDとして販売されている。

・Type(幅/長さ/厚み/KeyID)…M.2機器は、幅、長さ、厚み、KeyIDの4つの項目を用いて その機器が使用しているフォームファクタを示している。それを示すための方法。 例: 2280-D1-M 幅22mm、長さ80mm厚みD1=1.20+1.35=2.55mm、KeyIDはMタイプの機器となる。

・KeyID(A/B/E/Mなど)…M.2端子には、切り欠きの部分が存在する。 この切り欠きの位置に応じて、KeyIDというものが振られていて、 接続できるインターフェースが一意ではないが決まる。 接続する機器と、M/Bのソケット側のこのKeyIDが合ってないと、接続 することすらできない。 例:KeyID=B →  PCIe x2、SATAUSB2.0・3.0、Audioなど。 例:KeyID=M →  PCIe x4、SATA ただし、B+MのようにBにもMにも対応している機器がある。

こんな感じだろう。 さらに、ここから種類別に分ける。

接続コネクタ系 ・mSATA ・miniPCIe ・SATA Express ・M.2(=NGFF)

制御(プロトコル)系 ・AHCI ・NVMe

内部接続系 ・PCIe(x2/x4)接続 ・SATA接続

M.2における大きさとソケット ・Type(幅/長さ/厚み/KeyID) ・KeyID(A/B/E/Mなど)

この分類に分けられた。

当初、私は接続コネクタであるKeyIDがB+Mタイプであれば内部接続は SATAのもの、Mタイプであれば内部接続はPCIeだと考えていた。 内部PCIe接続のNVMeのSSDSamsungからしか売られてなくて、 それがMタイプだったため。 しかしこれは大きな誤解だった。

M.2SSDでは、SATA接続の2.5インチSSDに比べ、系統が多すぎることがわかった。 以下にそれをまとめた。

パターン 制御系 内部接続系 大きさ・ソケット 製品例
P1-1 AHCI SATA 22-42-B N/A
P1-2 AHCI SATA 22-60-B N/A
P1-3 AHCI SATA 22-80-B N/A
P1-4 AHCI SATA 22-42-M N/A
P1-5 AHCI SATA 22-60-M N/A
P1-6 AHCI SATA 22-80-M N/A
P1-7 AHCI SATA 22-42-B+M Transcend MTS400
P1-8 AHCI SATA 22-60-B+M Transcend MTS600
P1-9 AHCI SATA 22-80-B+M Transcend MTS800
P2-1 AHCI PCIe(x2) 22-42-B N/A
P2-2 AHCI PCIe(x2) 22-60-B N/A
P2-3 AHCI PCIe(x2) 22-80-B N/A
P2-4 AHCI PCIe(x2) 22-42-M N/A
P2-5 AHCI PCIe(x2) 22-60-M N/A
P2-6 AHCI PCIe(x2) 22-80-M N/A
P2-7 AHCI PCIe(x2) 22-42-B+M N/A
P2-8 AHCI PCIe(x2) 22-60-B+M N/A
P2-9 AHCI PCIe(x2) 22-80-B+M Plextor PX-G Series
P3-1 AHCI PCIe(x4) 22-42-B N/A
P3-2 AHCI PCIe(x4) 22-60-B N/A
P3-3 AHCI PCIe(x4) 22-80-B N/A
P3-4 AHCI PCIe(x4) 22-42-M N/A
P3-5 AHCI PCIe(x4) 22-60-M N/A
P3-6 AHCI PCIe(x4) 22-80-M Samsung XP941
P4-1 NVMe PCIe(x2) 22-42-B N/A
P4-2 NVMe PCIe(x2) 22-60-B N/A
P4-3 NVMe PCIe(x2) 22-80-B N/A
P4-4 NVMe PCIe(x2) 22-42-M N/A
P4-5 NVMe PCIe(x2) 22-60-M N/A
P4-6 NVMe PCIe(x2) 22-80-M N/A
P4-7 NVMe PCIe(x2) 22-42-B+M N/A
P4-8 NVMe PCIe(x2) 22-60-B+M N/A
P4-9 NVMe PCIe(x2) 22-80-B+M N/A
P5-1 NVMe PCIe(x4) 22-42-B N/A
P5-2 NVMe PCIe(x4) 22-60-B N/A
P5-3 NVMe PCIe(x4) 22-80-B N/A
P5-4 NVMe PCIe(x4) 22-42-M N/A
P5-5 NVMe PCIe(x4) 22-60-M N/A
P5-6 NVMe PCIe(x4) 22-80-M Samsung 950 PRO

なお、B+MはPCIe x4が利用できるMが入っているが、x4に対応しておらず、x2となる。 これは、B+M製品がBにもMにも接続できるようにしたものであり、 MのPCIe x4の高速性を犠牲にしてでも、Bに接続できるようにしたためである。 したがって、B+MのものはPCI x2接続が最高となる。

注:製品例列のN/Aは該当する製品例が無かったことを示す。 上記のすべてのパターンで製品ができる可能性は不明。

したがって、ここに書いているすべての組み合わせの分、それぞれ 違うM.2のSSDが出来上がる可能性があることになる。 大袈裟だが、すべてができるのであれば39パターンもある。

ただし、現状においては、 AHCI制御、SATA内部接続→B+M型、 AHCI制御、PCIe(x2)内部接続→B+M型 AHCI制御、PCIe(x4)内部接続→M型 NVMe制御、PCIe内部接続→M型 の4パターンに大別できる。

では、PCに搭載できるM.2SSDを見つけるためにはどうすればよいか。 私は、以下のようなプランを考えた。 ①PCのスペックシートなどをもとに、内部PCIe接続のM.2SSDが利用できるのか 内部SATA接続が利用できるのか、はたまた両方なのかを調べる。チップセットインテル100シリーズ以降ならたぶん両方、それ以前の 9シリーズ(x99とかz97とかx97とか)より古いものは内部SATA接続のみ の場合が多い)

②内部PCIe接続が利用できる場合は、内部PCIe接続のM.2SSD (高価だけどSATA3.0の限界値600MB/sを超えられる。)か、 内部SATA接続のM.2SSD(比較的安価だけどSATA3.0の縛りがある) のどちらを利用するか考える。 内部PCIe接続が利用できない場合は、内部SATA接続のM.2SSDを利用する。

③PC側についているコネクタ・大きさの種類を見る。 TypeB+Mが利用できるのか、TypeBのみか、TypeMのみかを調べる。

④メーカーや容量を選ぶ。 (薄型PCの場合、片面にのみチップが実装されている片面実装でないと 入らないPCもあるため、その場合は厚みも見ること。今回入っていたPM951 も片面実装であったが、M/B側を見て両面でも使えるだろうと予測。)

以上の流れを利用すれば、利用できるM.2SSDを探すことができるだろう。

さて、XPS13を修理していく工程に戻る。 私はSamsungのNVMeのM.2SSDが壊れていることを知った後、 Transcendの内部SATA接続のM.2SSD MTS400 32GBモデルを購入した。 TypeはB+M。内部SATA接続のM.2SSDなので、速度は最大でも600MB/sになる。

ここで、内部SATA接続のM.2SSDをXPS 13 9350でUEFIで利用するための BIOSUEFI)の設定について触れておく。 まず、設定はUEFIモードにする。 Secure BootはWindows7をインストールするならOFF、 Windows8以降ならONにする。当初は7を入れる予定だったのでOFFにした。

そのうえで、(BIOSUEFI SetupのBoot ModeをAHCIにする。 こうしないと内部SATA接続SSDのM.2SSDでインストールができない。 (RAIDでは×。Disabledは論外。)

さて、OSのインストールだが、起動時のDellロゴでF12を押せば ブートメニューが呼び出せる。 そこでUEFI BootのほうのWindowsインストールディスクを指定してEnter。 こうすることでWindowsのインストールに入れる。

Windowsのインストールだが、私はここでまた苦戦した。 外付けDVDドライブからインストールを行ったが、DVDドライブの ドライバをインストールしてくださいとの警告が出てインストールが進まなかった。 「?」と思いつつ、検索したら、100シリーズのチップセットのUSBを制御する ドライバ(xHCIのドライバ)がWindows7のインストールディスクに入っていない らしく、インストールできないとの情報を入手。 Windows7をインストールするためにはこのドライバを予め組み込んだ 状態のWindows7インストールディスクを利用する必要がある。

そこで、別で持っているWindows8(32Bit)をインストールしようと考えた。 何度もインストールを試みたが、UEFI Bootのリストにそもそも表示されない。 LegacyのほうにはDVDドライブが表示されるので、試しにやってみた。 しかし、インストールが終了し、再起動後の場面でPre-Bootの画面になってしまった。 「あれ?」って思いつつ、起動メニューでF12でLegacyのほうにあるSSDを 選択したら、普通に起動した。 「UFFIにしているのに何でLegacy Modeでインストールされたのか。あれ? システム情報でもLegacy表示だし。。。」

なんでUEFIでインストールできないのか。 調べた結果、Microsoftのページに答えがあった。

ダウンロード版でかつ発売直後にダウンロードして、 DVDをインストールメディアとしたWindows8 インストールDVD はUEFIインストールに対応していない。とのこと。

「なんだよ。」

若干の憤りを感じつつ、選択肢は2つ。 ・Windows7(64Bit版を所持)にUSB3.0ドライバを組み込んだものを作り、インストールするか ・Windows8(32Bit版を所持)のUEFI対応版のISOをダウンロードするか。

私はどちらも選ばなかった。 ということで、Windows 10 Home 64Bit版を購入。

Win10はタブレットの件でいろいろやらかしてくれたが、発売後約半年で 1億人以上のユーザーが乗り換えたんだったらやってみるかということが 購入理由。 (個人的には、本当に乗り換えたかった人はそんなにいないだろうと思うが) (私は最後までWindows7を使い続けるだろう。10が画期的に良くならない限り。)

インストールはすいすい進む。何も問題なかった。 動作も問題ない。

内部SATA接続のM.2SSDを正常動作させることができた。

さて、次の検証。 今度は、SamsungのNVMe XP941 内部PCIe接続のM.2SSDを購入し、 もう一度検証した。今回は内部PCIe接続なので、SATA3.0の制約は受けない。

内部PCIe接続のM.2SSDの場合、(BIOSUEFI SetupのBoot ModeをDisabledにする必要 がある。そうしないとPre-Bootの画面でNo Bootable Devices foundでエラーになってしまう。 本当はAHCIで動くはずのXP941だが、よくわからない。

上の処理をやっても、BIOSUEFI)ではPre-Bootの画面でHDD - Not installed になってしまい、Diagnoticsでも認識されない。

一抹の不安が残る中、そのままWindows10のインストールを実行。 すると、普通にドライブが認識され、問題なく完了した。

これは、Impress PC Watchなどで公開されているXP941のレビュー記事にある、 Windowsインストール後でないとBIOS(UEFI)においてドライブを 認識できない問題と同じであろう。

これでようやく、このPCを内部PCIe接続のM.2SSDで動作させることに成功した。 シーケンシャルリードで1,200MB/sを超えてくるようなバケモノSSDの 本領発揮といえるだろう。その後は動作も安定している。

Windows8以降のOSを嫌気していたので、UEFIやM.2SSDに関する知識が 乏しかったのが今回度重なる問題にぶち当たった原因だ。

日々勉強って大事と痛感。

人柱記事になるかはわからないが、同様のトラブルに遭われている方が いたら、参考になれば幸いです。

<あとがき> 今回の記事はたぶん今まで書いてきたものの中で最長の記事。 (多分8,000字ぐらい。卒論のような。) 確かに、書くのに3週間ぐらいかかってからそのぐらいにはなる。