はじめに
昨日の「Ryzen Threadripper PRO 5000 & Ryzen 7 5800X3D」を振り返り、Ryzen と Threadripper / EPYC の I/O die の違いを調べてみた。
client I/O Die (cIOD) と server I/O Die (sIOD)
ここにあった、cIOD と sIOD の写真を何度も眺めてみた。
参考のために、2つの Die を並べてみた (写真を説明のために、引用します)。左側が cIOD、右側が sIOD
GFの FinFIT 12nm (12LP) っぽい。同じプロセスなので、比率を合わせて、sIOD の左下の1/4 を cIOD の下に並べてみた
最後は、左の上下の2個を拡大して、並べなおしてみた。これ以降は、この図を使って説明します。
各ブロックの比較
下記のブロックは両方にあって、
- x16 SerDes PHY x 2: PCIe Gen4 x 16
- Dual-Channel DDR4 PHY
- CCD IFOP PHY x 2
- SATA IO Buffers x 2
- x16 DerDes Controller x 2
- Fabric Switch
- IFOP Endpoint x 2
- IO Root Hub
ここまでは、レイアウトは同じっぽいです。
- Tag Directories
- MC
- PSP
- USB Control + Misc. IO
- USB 10G PHY
- USB 2 PHY
- USB Root
sIOD には、3つ(x4)の Fabric Switch がありますが、cIOD には Fabric Switch は1つしかありません。また、sIOD にある2つの S-Link は、cIOD にはありません。
I/O は、エッジになくてもOK
EPYC 用の IO Die (sIOD) を初めて見たとき、I/O って、エッジになくてもOKなんだと思いました。昔はワイヤーボンディングだったので、エッジにないとポンデリングできなかったけど、今では Die をそのまま実装するような感じになっているので、I/O をどこでもおけるんですね。。。
Block図との対応
sIOD は、cIOD を4つ接続した感じになっているっぽいです。
下記のツイートに、2nd Gen AMD EPYC Improed Memory Latency の図が載っていたので説明のために引用します。
左下(右下も同じ感じ)は、下記のような対応(S-Linkなるものがある)
左上(右上も同じ感じ)は、下記のような対応(S-Linkなるものはない)
おわりに
CCD を Ryzen, Threadripper, EPYC で共通に使うだけでなく、I/O Die の中の各ブロックも共通に使っているのがわかりました。