K75thunderbirdのブログ

どちらかというと自分の頭の整理用です。ネタとしてはモバイル、自動車、ロードバイク、電気関係やPC関係の突っ込んだ話題、ややデバイスやコンポーネント寄りの偏った内容になると思われます。

Intel、キミのPCは何世代? CPUとPCHとPCIeとDMI !

何年か前に作成したPCを不満なく使用していたものの、Windows7のサポート期限が見えてきたり、AMDの頑張りで自作PC界隈が久しぶりに賑わっていることもあり、次のPCを作るための情報を集めてみた。

が、数年経ったら浦島太郎。

昔はチップセットのブロック図まで把握していたものだが、最近はそこまで気合を入れていなかったこともあり、知っているようで知らない単語がポツポツと。
知っているけど定義があやふやなものも、ちらほらと。
そんなわけで、今回はPC関連の調べものをしてみたメモである。

 

さすがにCore2Duo世代以前は放置。

一応、軽く脳内を整理すると
0.35μmのPen2から0.25のPen2になり450MHzまで、エントリー向けは0.25の300Aが人気を博して大盛り上がり。
その後Pen3が500くらいまで出てから0.18へ。L2外付けから内蔵の世代に突入。
CoppermineコアでAMDと鍔迫り合いして1.13GHzまで駆け上がるも、発熱とエラーとか諸々の事情で製品取り下げ。
並行してPen4が出るもチップセットとメモリで右往左往し、クロックだけは2.0GHzまで。
共に0.13にスイッチし、Pen3は1.4GHzまで上がるも製品終了。
Pen4は最も勢いに乗り、1.6GHzあたりから3.4GHzまでカバー。
しかしAMDがK8を出してきて大慌て、2ダイ1パッケージの爆熱伝説。まさに熱湯バースト。
救いとなるはずだった90nmは電流ダダ漏れでまさかの不発弾どころか大地雷、クロックは3.8GHzくらいで発熱に敗北、次世代の設計図を破棄。
イスラエルの優秀な頭脳が作ったBaniasコアに助けを求め、Coreシリーズへ。
その後、スイートスポットの2.4GHz近辺を中心に6600フィーバー。クアッドコアの時代到来。
65nmにスイッチして徐々にクロックも上がりつつ、次のアーキテクチャを模索。
その後、iシリーズが出てきて今に至る。

 

ということで、このiシリーズ辺りから情報収集。

まずはCPU。
1世代 知らない子
2世代 SandyBridge 32nm ソルダリング PCIeGen2.0
3世代 IvyBridge 22nm トライゲート化 PCIeGen3.0 ここからグリスバーガー
4世代 Haswell&HaswellRefresh 22nm 5世代が遅れたのでリフレッシュ追加
5世代 Broadwell 14nm 一瞬で終わった世代
6世代 Skylake 14nm 14nmの本命
7世代 Kabylake 14nm そろそろ惰性感が否めない
8世代 CoffeeLake 14nm AMDの性能に慌てて出した対抗馬

続いてチップセット
1世代 知らない子
2世代 LGA1155 6x 同ソケットで互換性あり チップセット側PCIeはGen2.0
3世代 LGA1155 7x 同ソケットで互換性あり 
4世代 LGA1150 8x 同ソケットで互換性あり 電圧レギュレーター内蔵 まだDDR3使える
5世代 LGA1150 9x 同ソケットで互換性あり m.2ソケットつきはじめたが大多数がGen2.0 DDR3使える
6世代 LGA1151 1xx 2xxと互換性あり チップセット側PCIeはGen3.0 システムバスDMI3.0 電圧レギュレーター外部化 m.2ソケットがGen3.0x4 DDR4対応 DDR3対応製品も多少あり
7世代 LGA1151 2xx 1xxと互換性あり m.2ソケットが増えた
8世代 LGA1151 3xx 2xx以前と互換性なし(リザーブピンを電源に変更) チップセット側のレーン数増加

 

情報を漁っていて分かりにくかったのがPCIeのレーン数と世代。
16レーン、20レーン、24レーンといった数値と、Gen2や3といった世代に関する情報がイマイチ整理されていない。
が、情報をまとめてみれば特に複雑でもなんでもない。

結局のところ、メインストリーム向けのCPUでは、GPU向けに16レーンのPCIeバスが確保されており、これは不変だ。
言わばCPUからのネイティブPCIeバスだ。

そして、CPUからチップセットへのシステムバスは、DMIと呼ばれるものが使用されている。
DMI≒PCIe なので、完全にイコールではないものの、同じだと考えて問題ない。
レーン数は4である。

そしてチップセットから20レーン前後のPCIeバスが(最新のチップセットであれば)出ている。
ここに各種コントローラーやGPU以外のデバイスが接続されることになる。

Kabylakeでレーン数が20から24に増えた、などと書かれているのは、DMIの先のチップセット側の話であって、CPU側は何も変更されていない。
16レーン+DMI(実質4レーン)のままである。

ここまで読んでお気づきのとおり、チップセットには4レーンしか割り当てられていないのに、チップセットの先には5倍も6倍ものレーン数がある。
帯域としては全く釣り合っていない。
しかし、全デバイスが同時にCPUにアクセスすることはないという前提条件で設計されているのだろう。

 

そして、PCIeやDMIの世代について。
GPU向けのPCIeはIveBridgeでGen3.0になり、以降変わっていない。
DMIはSkylake(6世代の1xxチップセット)でGen3.0になり、以降変わっていない。

GPU向けは早々に3.0化したものの、チップセット側の対応は随分と遅れたことになる。

 

次に、PCIeやDMIの速度について。
PCIeは1レーンあたり(片方向)の速度がGen1.0で2.5Gbps、2.0で5Gbps、3.0で8Gbpsである。
ただし符号化により実際の転送レートは多少低い値となる。

Gen2.0までは「8b/10b」なので8割となる。
よって、転送レートはGen1.0で2Gbps、2.0で4Gbpsである。

Gen3.0の符号化は「128b/130b」なので、8*128/130=7.8769230769230769230769230769231Gbps・・・である。
面倒なので、8Gbps弱と考えておけばよいだろう。

例えば、DMIは4レーン使用しているので、Gen2.0なら片方向16Gbps(2.0GB/s)となる。
したがって、チップセット側に16Gbpsを超える速度のSSDを接続しても性能が発揮できない。
現行のNVME版SSDの帯域はPCIeGen3.0x4なので、DMI3.0採用の裏にはNVME版SSDの存在があったことは想像に難くない。

とはいえ前述のとおり、DMI3.0であっても決して十分な帯域であるとは言い難い。
また、m.2スロットを2つ以上搭載したM/Bが増えているため、DMIの帯域が再び問題視されるのは時間の問題だろう。

 

こうして見てみると、レーン数だけは十分にあるように見えるPCIeも、意外と制約が多いことに気づかされる。
速度だけ考えれば、GPU向けのCPUネイティブなPCIeバスを使用するのが近道である。
しかし、GPUの性能への影響や、CPU側のレーン分割の制約、さらにM/Bの設計上の制約などもあり、簡単ではない。

 

このような悩みを軽減できるのが、X299チップセットやX99チップセットだ。
X299については現時点で興味がない(高すぎる)ので置いておいて、X99(というかLGA2011-v3プラットフォーム)について触れてみる。

このプラットフォームでは、6コア以下は28レーンしかないが、8コア以上は40レーンを使用可能だ。
16レーンだのDMI3.0だの悩んでいたのが馬鹿らしく思える広帯域である。
もちろんM/B設計上の制約はついて回るものの、使用上の自由度やポテンシャルは遥かに高い。

欠点があるとすれば、X99そのものはDMI2.0接続であるので、チップセットから先の部分に接続されたデバイスに関しては速度的に期待しない方が良い、ということくらいだろうか。
また、チップセットから出ているレーン数は8しかない。この辺りは設計の古さが隠せない。
とはいえ、使用時に「X99はDMI2.0接続で、帯域は片方向16Gbps(2.0GB/s)」ということを把握して使えば、それほど問題が生じることはないはずだ。
まして、ドライブ間のデーターコピーなどであればDMAなので、ほぼ処理はチップセット内で完結する。
DMAであればDMIの速度は関係ない・・・はずだ。
影響するのはコントローラーが接続されているPCIeの世代とレーン数の方であろう。

符号化の話が出たので、ついでに参考値を記す。
 SATA6.0Gbpsは、符号化(8b/10b)を除けば転送レート4.8Gbps(600MB/s)
 USB3.0は5Gbps、符号化(8b/10b)を除けば転送レート4.0Gbps(500MB/s)
 USB3.1(Gen2)は10Gbps、符号化は「128b/132b」なので、9.6969Gbps(1212MB/s)

 

というわけで、昨今のCPUやチップセットに関する情報を整理してみた。

それでは皆さん、ごきげんよう