Vengineerの戯言

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

Apple の Device Treeって、何だ?

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

はじめに

今日は、github のとあるところで見つけた、Apple A13 (iPhone 11 Pro) の Device Tree を探っていきます。

Device Treeって、Linux では、arch/arm64/boot/dts の下にあるようなファイルです。Linux では、ARMより前に、PowerPCの方が先で 昔流行った kurobox の dts ファイルの最初のバージョンは、10 Feb 2007 になっています。あたしが Linux に興味を持ったのは、1997年頃なのでそれよりも10年経ってからですね。

Device Tree は、Linuxでは PowerPCの方が先ですが、もっと古い情報は、ここ にありました。この 3ページ目にあるものを以下に引用します。

  • Sun Microsystems - Open Boot / OpenFirmware (1988)
    • Used in SPARC systems
    • Uses DT to describe hardware
  • IEEE-1275 formalized specification (1994) Documents DT
  • Apple adopts Open Firmware on Power Mac 7200 (1995) using DT
  • Common Hardware Reference Platform (CHRP) specifies DT (1995)
  • ePAPR specifies DT (2008)

これを見ると、PowerPCの前がSunですね。Open Boot / OpenFirmware ですね。あたしもこの頃、Sun 関連をやっていましたが、そういうものがあるねという程度だったんですよね。

その後、Linuxでお世話になるとは思いもよらなかったです。

Apple A13 (iPhone 11 Pro) の Device Tree

Apple の製品でも、Device Tree が使われているのを知ったので、Google 君にいろいろと聞いてみたら、見つけました

この Device Tree からわかったことは、

  • CPU 関連
    • eCore の方が CPUの番号とClusterの番号が若い
    • eCore の L2は4MB、pCore の L2は8MB (公開情報)
    • BootするCPUは、CPU-0 なので、eCore
  • Memory 関連
    • メモリは、0x8_0000_0000 から
    • Hynix製
    • pram (Parameter RAM/NVRAM) や Video RAM も メモリにある
    • Coprocessor の命令コードも メモリにある
  • 各種アクセラレータ
    • GPU
    • Apple Neural Engine : ane
    • Video Encoder
    • Video Decoder
    • JPEG (x2)
    • ISP
    • Scalar (scaler and colourspace converter for the display)
  • Coprocessor 搭載機能
  • I/O
    • NVMe
    • PCIe : WLAN/Bluetooth (Broadcom)
    • USB
    • MIPS : display (Synopsys)
    • MCA : Audio
    • Termal Sensor
    • I2S : Audio
    • I2C :
    • SPI : Mult Touch / Audio Codec
    • UART (x3)
    • GPIO
  • 各種アクセラレート、Coprocessor、I/O の中で、メモリとDMAをするものは、I/O MMU
    • Page Size は、0x4000 なので、16KB

終わりに

Device Tree からある程度ハードウェアの構成が分かります。この情報と、テカナリエレポートの分解解析レポートをにらめっこしながらいろいろと妄想すると、めっちゃ面白いですよ。

Apple M1の Device Tree も見たいのですが、Boot Message をパブリックにするのって、規約違反なんでしょうかね。
What happens when an M1 Mac starts up? に、Boot Message の一部が載っていましたが、全部知りたいです。