Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

Thunderbolt 4.0 って、何だ? Apple M1機の Thunderbolt 4.0 の実装はどうなっている?

@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった 

はじめに

Thunderbolt。今までは、AppleMacにしか付いていなくて全く興味はなかったのですが、Apple M1も Thunderbolt 4サポートしているということでいろいろと調べてみました。
また、昨年発表があったIntelTiger LakeではCPU側に Thunderbolt 4が搭載されているのを最近知りました。Tiger Lakeより前のチップセットでは、Thunderbolt 3は CPU側ではなく、I/O側(PCH)に付いていました。Thunderbolt が速いと言っても、PCH側についていると CPUとPCHとのインターフェースである DMI 3.0 がボトルネックで性能出るの?って感じでした。DMI 3.0 って、PCIe Gen3 x4 相当の性能なので、PCH側にいっぱい付いている USB 3.0 や PCIe 3.0 のポートが働き始めると Thunderbolt 3 の性能でないじゃん?と思っていた次第です。Tiger Lake では、CPU側に Thunderbolt 4 が付いたことにより、DMI 3.0 の制約を受けることなくシステムのメモリにアクセスできるようになったわけです。

ちょっと話がずれますが、下図にあるように Tiger Lake (下図は Intel のサイトにある図の引用です)では、Thunderbolt 4 がCPU側に付いただけでなく、PCIe Gen4 x4 を追加されました。これにより、Thunderbolr 3 と同じように PCH側にあった PCIe Gen 3 に接続していた M.2 の SSD を CPU側に接続することができるようになり、PCIe Gen4 対応の M.2 の SSD の性能が引き出せるようになったわけです。

https://www.intel.co.jp/content/dam/www/program/design/us/en/images/16x9/11th-generation-core-processor.png

上の図では、PCIe Gen4 1x4 となっているので、x1 が 4個なのか、x4 が 1個なのが分からないので他のものを調べてみたら、こちらの記事(Intel Tiger Lake UP3 COM Express Module Offers High AI Performance, PCIe Gen4 Interface)には以下の図が載っていますので引用します。この図では、1 PCIe Gen4 x4 となっているので、PCIe Gen4 は、x4 が 1個追加されたことが分かります。

https://www.cnx-software.com/wp-content/uploads/2020/09/Tiger-Lake-UP3-COM-Express-Block-Diagram.jpg.webp

Thunderbolt って何?

Wikipedia によると、

Thunderbolt(サンダーボルト)は、インテルがアップルと共同開発した[1]高速汎用データ伝送技術である。

とありますね。Intel が開発して、Appleが使っているとばっかり思っていましたが、共同開発したんですね。

Light Peak(ライト ピーク)を基にして開発されたコンピュータに周辺機器を接続するためのシリアルバス規格の1つで、技術的にPCI ExpressとDisplayPortを基盤としている。

ともあります。そして、右側の全モデルが IEEE 1394 であると、これを見て、あーーーーー、そこだったんだね。って思った次第です。。。

FireWireの後継として開発されたインターフェースで、ホスト機器にさまざまな周辺機器を接続するためのバス規格である。同時期に登場した高速汎用外部バス規格USB 3.0と比べ、FireWire同様にデイジーチェーンをサポートするなどUSBより多機能かつ高性能である一方、ホスト側・デバイス側の両方にインテル製のモジュールが必要であり、ホスト側はコントローラ機能の一部が2019年発売のIce Lake世代からモバイル向けCPUには統合されたものの、依然としてUSBに比べ高コストである。

デイジーチェーンができるのも、今回調べて初めて知りました。。。

ホスト側・デバイス側の両方にインテル製のモジュールが必要であり、ホスト側はコントローラ機能の一部が2019年発売のIce Lake世代からモバイル向けCPUには統合されたものの、依然としてUSBに比べ高コストである。

にあるように、Apple M1機には Intel の Thunderbolt 4 のチップが2個搭載されています。上記で説明したように Intelチップセットには Thunderbolt が載っています。USBに比べて高コストなのはIntelのチップが必要なだけでなく、ケーブルも USB 3.0 用のものと比べて高いです。。。

Thunderbolt 1 と 2 の時は、PCI Express と DisplayPort をサポートし、コネクタは独自でしたが、Thunderbolt 3 ではUSB 3.1 Gen2 をサポートし、USB Type-C のコネクタを使うようになり、一見、USB と区別がつきにくいですが、マークがちょっと違います。Thunderbolt 4 では、USB 4.0 をサポートし、最大転送レートの 40 Gbps 等は Thunderbolt 3 と同じです。

USB 3.1/3.2

USB 3.1 / USB 3.2 は、次のようになっています。USB 3.1 Gen1 では PCIe Gen2相当で、5 Gbps x 1、USB 3.1 Gen2 では PCIe Gen3相当で、10 Gbps x1 です。USB 3.2 では、x2モードがあり、それぞれ倍になり、10 Gbps、20 Gbps になります。x1モードの時のインターフェースは Type-A, Type-C, microUSB ですが、x2モードの時のインターフェースは Type-C のみです。Type-C になり、x2の信号を使えるようになったわけです。

  • USB 3.2 Gen1x1 (USB 3.1 Gen1 と同じ)
  • USB 3.2 Gen1x2
  • USB 3.2 Gen2x1 (USB 3.1 Gen2 と同じ)
  • USB 3.2 Gen2x2

Thunderboltは、もともと、PCI Express と DisplayPort のインターフェースを持っています。DisplayPort に関しては x4 での出力になるので、これを x2 の双方向で使えるのが USB 3.2 x2モードですね。

Apple M1の Thunderbolt 4

Apple Macbook Air の teardown のよると、

  • Intel JHL8040R Thunderbolt 4 Retimer (x2) (basically a Thunderbolt 4 extender/repeater)

が載っています。Thunderbolt は基本的には Intel のチップが必要になります。この チップは Apple M1 と接続しています。

Appleの Macbook Air のページには、下記のようにあります。

2つのThunderbolt / USB 4ポートで以下に対応:

  • 充電
  • DisplayPort
  • Thunderbolt 3(最大40Gb/s)
  • USB 4(最大40Gb/s)
  • USB 3.1 Gen 2(最大10Gb/s)
  • ヘッドフォン

USB 4 は、USB 3.2 Gen2x2 の 10 Gbps x2 = 20 Gbps の 2 倍の 40 Gbps になるということです。

Intel の Thunderbolt チップと Apple M1 の USB 3.1 Gen2 (Gen2なので 10Gbs) と DisplayPortをサポートしている部分と接続していることになります。

Apple M1機の Linuxの github を見ると、apple,dwc3-m1 とあります。dwc3 って、Synopsys の USB 3.x の IP のことです。

USB 3.1 (USB 3.1 Gen2x1は、USB 3.2 Gen2x1と同じ) と DisplayPort をサポートしている Synopsys の IP は、こちらですね。

DesignWare USB-C 3.1/DisplayPort 1.4 IP

この IP の特徴は、

  • Solution supports USB Type-C, SuperSpeed USB 3.1 at 10 Gbps, SuperSpeed USB 3.0 at 5 Gbps and High-Speed USB (USB 2.0) as well as DisplayPort 1.4 TX supporting RBR, HBR1, HBR2 and HBR3 bitrates

それから、Synopsys は、USB 3.2 の PHY も 持っているようです。

Apple M1 側は USB 3.1 Gen2 だけど、Intelの Thunderbolt 4 のチップを使うことで、インターフェース的には Thunderbolt 4 / USB 4 になっているんでしょうかね。

Intel JHL8540 から Intel JHL8040を妄想する

Apple M1機に載っていたのは、Intel JHL8040R Thunderbolt 4 Retimer ですが、IntelのThunderbolt 4 の発表の時に出てきたのは、Intel JHL8540 です。Intel JHL8540 については、下記の記事にブロック図(引用します)が載っていました。

www.anandtech.com

https://images.anandtech.com/doci/16333/jhl8540bd_575px.png

上記の図は、ここ (THunderboltのサイト) にオリジナルのPDFがありました。

PCIe x4 Gen3 と 2x DP 1.4 in (x4) を入力として、PCIe は内部に PCIe Switch が入っていて、USB 3.0 の xHCI Controller と Thunderbolt Switch に接続しているんですね。出力は、Thunderbolt 4 (DisplayPort 1.4a + USB 3.2 Gen2(USB 3.1 Gen2x1)が 2ポート。

ここから Intel JHL8040Rは、2x DP1.4a in (x4) と USB 3.1 Gen2 x 2 を入力として、上記の図の下の方の長い部分に直接つながっている感じですね。Apple M1機からは、USB 3.1 Gen2 と DisplayPort しか出ていなくて、Intel JHL8040R Retimer に繋げると、Thunderbolt 4 になるのが分かりました。これぐらいの機能であれば、チップとしてもそれほど高くなさそうです。
ここによると、Intel JHL8040は、2.4ドルのようです。

追記)
下記の記事に、Thunderbolt の Retimer の説明があった (Thunderbolt Retimerで検索したら、見つかった)

pc.watch.impress.co.jp

Retimer でも、PCIe Gen3 x4 と DisplayPort になっていますね。。あれ、ちょっと、混乱。。。もしかして、Apple M1 からは PCie と DisplayPort しか出ていないのかな?

JHL8040 のコードネームの Burnside Bridge でGoogle君に聞いたら、また出てきました

Burnside Bridge is a Type-C multi-protocol retimer to be used in on-board applications. Burnside Bridge offers the ability to latch protocol signals into on-chip memory before retransmitting them onwards. It can be used to extend the physical length of the system without increasing high frequency jitter.

Burnside Bridge supports spec compliant retimer of following protocols:
1. Display Port: four unidirectional DP lanes
2. USB3.1 Gen1/2: one bi-directional USB lane
3. Thunderbolt: two bi-directional CIO lanes
4. Multifunction Display (MFD): two unidirectional lanes of DP and one
bi-directional lane of USB3.1 Gen1/2

Note: Only item 1, 2 & 4 are supported in this CL. Item 3 support will
be added in follow on CLs.

ということで、やっぱり、DisplayPort と USB 3.1 Gen1/2 x1 (x2はサポートしていないっぽい)から Thunderbolt の x2 に変換しているっぽいですね。

おわりに

ちょっときになったので、Thunderbolt について調べてみました。

Thunderboltになると、USB 3.1 Gen2 と DisplayPort 1.4a が混在して流せるってどうなるのかな?と不思議に思いましたが、上記の Intel JHL8540のブロック図を見たら納得しました。
間に、USB 3.1 Gen2 と Display Port 1.4a を切り替えるための回路が入っているんですね。。。

個人的には、お仕事用とおしごと用に LenovoのノートPC と USB Type-C で接続できる Lenovo の 13インチのディスプレイを使っています。電源ケーブル無しにUSB Type-Cケーブルのみで接続できるのは本当に便利です。Thunderbolt になると、他にもいろいろと接続できるようになるということなので、Tiger LakeのノートPCを買えばいいんでしょうかね。。。

LenovoのノートPCでも、Tiger Lakeが載っているものが売っていますからね。

関連ブログ:
vengineer.hatenablog.com