まとめと考察

ということで駆け足でB0ガーバーとB1ガーバーの性能差についてまとめてみた。結果から言えば

  • DDR4-2133として使う限りにおいて、大きな差があるかといえばない。「お前はどちらを買うのか」と言われたらB1ガーバーを買うと思うが、だからといって既存のB0ガーバーのDIMMをB1ガーバーに買い換えるほどの差はない(実際筆者は他にCrucialのB0ガーバーのDIMMを所有しているが、これを捨てる必要性は感じない)
  • オーバークロック動作に関して言えば、これは間違いなくB1ガーバーに軍杯が上がる。マージンの大きさはもう疑う余地が無い

というのが筆者としてのまとめとなる。なぜ性能差が出るのか、というとこれはメモリというよりメモリコントローラ側の領分になるのであくまで推測ベースの話であるが、簡単にまとめておきたい。

もともと高速信号を扱う回路で、マルチドロップ(DDR4の場合、DIMMスロット×2ということでここで2ドロップ、しかもDIMMが2Rankだったりすると表と裏の2チップがぶら下るからさらに×2で最大4ドロップになる)かつ、Single Endedということになると、当然ながら波形は乱れまくる。

メモリコントローラから見ると、送信(つまりメモリコントローラ→メモリ)時には正規の波形で送ってもメモリが受け取る時には波形が崩れるし、逆に受信(メモリ→コントローラ)では崩れた形の波形で受け取ることになる。

これを補正するために、さまざまな種類のイコライザー(波形を補正する回路)、あるいはPre-Emphasis(波形が崩れる事を前提に、崩れたあとで本来の波形になるように送り出す波形の一部を強調するような仕組み)をたくさん実装している。

もっとも「実装している」と「使われる」は同義語ではない。もともとDDR4の世代ではメモリを使う前にトレーニングというシーケンスが予定されている。本来の目的は実際の通信を開始する前に送受信のテストをメモリコントローラとメモリの間で行い、ここで最適となるタイミングなどの調整を行うというものだが、このときに波形補正に関する調整も行う。

この際に、波形の乱れ方に応じてどんな補正回路をどの位のパラメータで利用するかを定める事になるのだが、B0ガーバーとB1ガーバーでは、結果として動く補正回路の数や補正の度合いが違っているように思える。

さてこれがどう性能に関係してくるかだが、当たり前だが信号が通る補正回路の数が多いほど、消費電力は増えるしLatencyも増える。またB0ガーバーとB1ガーバーでは、そもそも寄生容量に起因する信号負荷そのものが若干異なる(配線の分だけ見れば実質半分近いが、DDR4チップの分は同じなので、トータルすると1~2割程度下がる、という程度だろうか)。より負荷が増えるほど駆動回路のレスポンスも悪化する事になる。

ただこれら全部をひっくるめても、通常はそんなに大きく性能差が出ることは無い「はず」である。もちろんこのあたりはメモリコントローラの実装方式に依存するので一概には言えないのだが、この手の補正回路は通常ps単位のLatencyで動作するから、全部あわせてもnsまでの差が出るとは思えない。こればっかりはメモリコントローラの中身を見てみないと何とも言えない。ただ結果として、わずかとは言え差があることは事実だ。

ただこれに絡んでIntelがB1ガーバーの策定を急いだ理由を考えてみると、ちょっと面白い推論が成立する。もともとX99というか現在のHaswell-Eの場合、もともと2P Xeon向けのHaswell-EPの転用であるのはご存じの通り。

このHaswell-EPはサーバー向けに高信頼性動作を求められている関係で、例えばメモリに関しても動作モードが通常の4ch動作以外にMirroringやSparingなどの冗長構成、あるいはメモリ状態を監視するPatrol Scrubといった機能も搭載されている。もちろんECCにも対応している。なので機能的にはかなり重厚で、補正回路の類いもリッチに搭載されていると考えられる。

対してSkylakeの場合、コンシューマ用ということでチャネル数も半分だし、機能も少ない。結果として補正回路の類いについても構成や機能がX99と異なっていても不思議ではなく、この結果としてX99で動作するDIMMがSkylakeで動かない、なんてことは当然ありえる。なんとなく、このあたりがB1ガーバーの策定をIntelが急いだ理由ではないか? というのは筆者のうがちすぎだろうか?