Yesterday

Разбираем чужие схемы ч.3

Продолжаем разбор схемы Macbook Pro 15'' на Intel i7. С первой частью можно ознакомиться тут, а со второй - тут.

Материнская плата Macbook на базе intel i7

На этот раз разбираем цифровые блоки. Цифровая часть состоит из стандартных интерфейсов (PCIe, DDR, USB, SPI, I2C итд), соединить которые на схеме достаточно легко. В связи с этим разбирать будем не только схемотехнику, но и архитектуру.

По традиции, разобранные в прошлых частях страницы я удалил из оглавления, а претендентов на сегодняшний разбор выделил красным.

Напоминаю, что разбирать я планирую на более менее продвинутом уровне. Буду выделять в основном интересные моменты, неочевидные нюансы или хорошие решения.

Страницы, которые я планирую разобрать

Архитектура

Поскольку в открытом доступе нет информации о точной архитектуре Macbook Pro, предлагаю нарисовать ее самостоятельно исходя из схем.

В качестве процессора используется Intel 9750H. Поискав в интернете несложно найти документацию на него. В нашем случае используется процессор в корпусе BGA1440 совместно с чипсетом (PCH). Итого 2 чипа.

9-е поколение процессоров Intel Coffee Lake

Intel в своей документации показывает следующее подключение:

Вариант подключения процессора из документации Intel

Intel предлагает использовать встроенную в процессор графику для подключения дисплеев, внешних мониторов и прочего. PCH же используется для периферийных, более медленных устройств (USB порты, аудио, Wi-Fi, BT, камера итд). Apple абсолютно не согласны с такой архитектурой. Камнем преткновения является безопасность данных с накопителей, камер, микрофонов, шифрование и touch ID.

Архитектура Макбука сосредоточена вокруг их собственного SoCа. Процессор от Intel обеспечивает систему скоростными интерфейсами, такими как PCIe G.3, двумя каналами памяти DDR4 x64 и DMI интерфейсом для соединения с PCH (аналог PCIe G.3).

Графика формируется с помощью встроенного eDP в CPU и GPU AMD Radeon 555X. Поскольку в Макбуке есть только разъемы TBT (Thunderbolt), они используются для подключения внешних устройств и мониторов. При подключении мониторов рендеринг графики будет происходить на GPU и передаваться по DP в контроллер, который преобразует его в TBT. При подключении другого устройства, например SSD накопителя, взаимодействие будет происходить с CPU через x4 PCIe. Таким образом, данные идут через PCIe, а графика через DP.

Все взаимодействие с пользователем проходит через SoC от Apple. PCH формирует всего несколько интерфейсов, такие как x1 PCIe, 3x USB2.0, все остальную работу выполняет чип T2, который подключен к PCH по x4 PCIe. К Т2 подключены все 8 SSD по 1x PCIe G.3, аудио кодек, усилители для динамиков, защитный элемент, TouchBar, TrackPad, камера дисплей, все датчики и прочее.

По итогу у меня получилось следующая картина:

Блок - диаграмма Macbookа Pro 15'

После короткого ликбеза по архитектуре приступим к схемe. Для того чтобы лучше разобраться советую иногда возвращаться к блок диаграмме.

5_CPU DMI/PEG/FDI/RSVD

На этой странице подключение CPU к мостам PCIe <-> TBT (2x4), AMD GPU (x8). А также шина DMI для подключения PCH. Стоит заметить, что интерфейс DDI (Digital display interface) остался не подключен. Встроенный DP от CPU мультиплексируется с DP от GPU и подключен к дисплею ноутбука.

Страница CPU DMI/PEG/FDI/RSVD

Еще одна вещь, которая меня заинтересовала - это название портов PEG (PCIe Graphics). Судя по документации Intel, именно этот порт поддерживает ультранизкое потребление (L2/L3 Power state).

Режимы энергопотребления PEG портов

6_CPU Clock/Misc/JTAG/CFG

На это странице расположены подтяжки, которые устанавливаются режим работы CPU, например, разбиение портов (x8, x4, x4). Сигналы тактирования процессора, сигналы для менеджмента (PECI, PROCHOT, PWRGOOD итд), тестовые сигналы (XDP) и JTAG.

Страница CPU Clock/Misc/JTAG/CFG

7_CPU DDR4 Interfaces

На это странице часть CPU, которая отвечает за DDR. Комментировать особо нечего.

CPU DDR4 Interfaces

12_PCH RTC/CLK/ESPI/PM

С этой страницы начинается PCH. Он формирует все тактирование для CPU, PCIe EP (SOC, Wi-Fi). Из интересного: разработчики используют резисторы R1251, R1250 для гарантированной работы кварца. R1251 создаст в случае чего условия для осцилляции, а R1250 ограничит ток.

Страница PCH RTC/CLK/ESPI/PM

PCH подключен к T2 по eSPI. Это развитие старого LPC. Интерфейс работает на частоте 66Мгц и используется для процесса загрузки, передачи сервисной информации и общения с другими устройствами. Данные с системных шин SPI, SMBus, GPIO уже встроены в eSPI.

Тунелирование SMBus, SPI, GPIO в eSPI

13_PCH DMI/JTAG/SPI/HDA

Тут расположена ответная часть интерфейса DMI и формирование сигналов управления для CPU. Заметим, что HDA подключение кодека не используется и выведено лишь на тестовые точки. Опять видим подключение к отладочному/тестовому разъему XDP (JTAG, SPI). PMSYNC, PMDOWN - сигналы, которые используются для общения между CPU и PCH о текущем состоянии процессора (Power state).

Страница PCH DMI/JTAG/SPI/HDA

14_PCH PCI-E/USB

PCH подключен к Т2 по x4 PCIe и по x1 PCIe к Wi-Fi/BT модулю. 3x USB2.0 идут в Type-C контроллеры, а 4й порт выведен на отладочный разъем и мультиплексируется с другим USB2.0. USB3.0 задействован исключительно для отладки SoC T2 или глобально системы. JTAG ведет к тестовому разъему XDP.

Страница PCH PCI-E/USB

15_PCH GPIO/MISC/NCTF

На этой странице располагаются подтяжки для определения режимов работы системы, в том числе объем DDR.

Страница PCH GPIO/MISC/NCTF

22_DDR4 SDRAM Channel A 1

23_DDR4 SDRAM Channel A 2

24_DDR4 SDRAM Channel B 1

25_DDR4 SDRAM Channel B 2

8 чипов DDR4 шириной х8 подключены на каналы А и В. Итого получаем 16 чипов:

Страница DDR4 SDRAM Channel A 1

26_DDR4 Termination

На этом листе у нас терминация DDR. Однополярные адреса и прочие сигналы имеют параллельную терминацию на питание VTT. Средняя точка дифференциального сигнала тактирования, также терминированная на VTT через емкость.

Страница DDR4 Termination

27_USB-C HIGH SPEED 1

Переходим к мосту PCIe/DP <-> TBT. Как уже было рассказано в разделе архитектуры, мосты подключены по x4 PCIe к CPU и по DP к GPU. На выходе у мостов x2 TBT, которые идут на межплатный разъем. Для работы подобных мощных микросхем требуется свой кварц, SPI Flash с конфигураций, которую можно заметить слева на листе.

Страница USB-C HIGH SPEED 1

28_USB-C HIGH SPEED 2

И хоть лист совсем не про high speed, а про питание микросхемы, разберем его. В целом мы уже видели все подобные приемы ранее. Микросхема имеет встроенные силовые ключи для формирования питания самой себе.

Страница USB-C HIGH SPEED 2

30_USB-C PORT CONTROLLER A

На этой странице у нас комбинация цифровых интерфейсов (USB2.0) и силовых ключей. Я нашел контроллер подобный изображенному на листе - TPS65982.

Страница USB-C PORT CONTROLLER A

Контроллер самостоятельно формирует себе питания, управляет CC логикой, выдает различные полезные сигналы (превышение напряжения, тока). SoC также имеет возможность давать контроллеру команды по I2C. Сборка ключей Q3100 используется для блокирования проникновения напряжения батареи на шину и наоборот. Можно также заметить закороченные сигналы SENSEP/N, это приведет к деактивации функции измерения тока, но позволит не ставить лишний шунт.

Внутренности TPS65982

Хочу заметить, что на текущем листе выход USB2.0 не подключен ни к чему. Один из входов мультиплексора USB2.0 подключен к микросхеме еще одного мультиплексора U3000 (видимо также для отладочных целей).

30_USB-C PORT CONTROLLER B

Аналогичный контроллер, но теперь выход и входы мультиплексора USB2.0 подключены к PCH и разъему TBT. GPIO контроллера используется для формирования сигнала OC (Over current), который идет на PCH. Не очень понимаю, как можно формировать подобный сигнал при отсутствии шунта для измерения тока.

Страница USB-C PORT CONTROLLER B

36_WIFI/BT: MODULE 1

Модуль WiFi/BT от Murrata (внезапно) подключен к PCH по x1 PCIe, UART. К SoCу он подключен по 2м UARTам. Хотя подключение UART_BT спорное, поскольку у аналогичного модуля выводы I2C не поддерживают режим UART. По традиции у модуля есть свои SPI Flash. Причем 2 разных (для WiFi и BT). У модуля также присутствуют встроенные ключи. С помощью индукторов на схеме он формирует себе напряжение питания. Руководит дискретными сигналами в основном SoC. К модулю подключаются антенны на разный диапазон, которые расположены на других листах.

Страница WIFI/BT: MODULE 1

38_SoC GPIO/SEP/USB/DDR/Test

Переходим к SoCу T2. Аналогичный прием с резисторами R3941, R3940 для осциллятора. С помощью резисторов задается ток драйвера DDR, USB.

Страница SoC GPIO/SEP/USB/DDR/Test

39_SoC AOP/AON/SMC

На этой странице расположены аналоговые входы SoCa для измерения токов и напряжений. Присутствуют сигналы от DMIC, I2C, UARTы, различные GPIO. eSPI используется для первичной загрузки PCH при страте системы и передачи служебной информации.

Страница SoC AOP/AON/SMC

40_SoC ISP/I2C/UART/SPI/I2S

Продолжение периферии SoC. По MIPI подключена камера и дисплей. Для подключения аудио усилителей и кодека используется I2S. UARTы для подключения микросхемы защиты (SE), BT, Wi-Fi. Причем практически везде используется UART к модемными CTS, RTS для контроля потока данных.

Страница SoC ISP/I2C/UART/SPI/I2S

41_SoC PCIe

По PCIe SoC соединен напрямую к PCH по 4 лейнам. Также из SoCа выходят 8x1 PCIe к 8-ми SSD чипам. Еще один x1 линк используется для системы Lifeboat. Интернет говорит, что с помощью подключения к разъему Lifeboat возможно спасти данные, если SSD были повреждены. Также хочу отметить, что PCIe Refclk идет на две микросхемы SSD одновременно.

Страница SoC PCIe

83_SSD0 S4E 0

84_SSD0 S4E 1

85_SSD0 S4E 2

86_SSD0 S4E 3

88_SSD1 S4E 0

89_SSD1 S4E 1

90_SSD1 S4E 2

91_SSD1 S4E 3

На этих страницах располагаются те самые 8 SSD, подключенных к SoC. Все SSD подключены в последовательную цепочку по JTAG для удобства отладки. Опять встречаем трехвыводные конденсаторы с низкой индуктивностью. Выводы ZQ_C, ZQ_N используются для калибровки микросхемы

Страница SSD0 S4E 0

95_GPU Baffin PCIe

Подключение AMD GPU начинается с PCIe. Как и указано в архитектуре x8 PCIe G.3 идет от CPU. Сигнал EG_VR0_PGOOD формируется из Power good источников GPU и системных 3.3В. А для отладки даже добавили первый светодиод, который я вижу на схеме.

Страница GPU Baffin PCIe

97_GPU Baffin FB

Особо ничего интересного, обычное подключение GDDR5 к GPU. Ток драйвера устанавливается резисторами

Страница GPU Baffin FB

99_GDDR5 VRAM FB 1 [104]

100_GDDR5 VRAM FB 2

Подключение самих чипов GDDR. Шина X32 идет на каждый чип, практически аналогично DDR4. Терминация клоков, настройка силы драйверов.

Страница GDDR5 VRAM FB 1 [104]

102_GPU Baffin GPIO/CLK/Straps

Различные настройки для GPU, SPI-Flash для загрузки настроек в чип. Также можно заметить тактовый генератор с точностью 20ppm. Хотя опция с кварцем была также доступна.

Страница GPU Baffin GPIO/CLK/Straps

103_GPU Baffin DP/GPIO

На этом листе расположены управляющие сигналы GPU, DP для мостов PCIe/DP <-> TBT, отладочный JTAG, I2C и немного питания с фильтрами. Справа на листе стоят загадочные конденсаторы CA8800, CA8801 с последовательными резисторами. Возможно, они предназначены для установки полосы PLL либо для фильтрации питания.

Страница GPU Baffin DP/GPIO

93_EDP Mux

Помните eDP с CPU и DP c GPU? Так вот на этой странице они встречаются. Мультиплексор управляет тем, какой интерфейс попадет на дисплей. Также на странице располагается обычный I2C расширитель портов. А еще тут формируется сигнал для сброса дисплея, если PMIC умер. Аналогично с GPU. Если умерли (или просто отключились) источники или пришел сброс для всей платформы, формируется сигнал GPU_RESET_L.

Страница EDP Mux

105_USB-C HIGH SPEED 1

106_USB-C HIGH SPEED 2

108_USB-C PORT CONTROLLER A

109_USB-C PORT CONTROLLER B

На этих страницах идет полное повторение ранее разобранных страниц.

Заключение

В этой части я не нашел ни одной критической ошибки. Однако есть некоторые нюансы, которые хотелось бы выделить. Основное и самое важное: SoC подключен к PCH по x4 PCIe G.3, при том к SoC подключено кучу периферии, в том числе и 8x1 PCIe G.3 SSD. Догадываюсь, что расчет на то, что обращение к SSD не будет забирать всю полосу. Скорее всего так и есть. И еще одно. PCH подключен к CPU по DMI, что по факту эквивалентно x4 PCIe G.3. Таким образом, имеем два узких места: соединение PCH <-> CPU и PCH <-> SoC. Теперь становится очевидно, почему Apple перешли на свой процессор. Они закрыли проблему узкого места в интерконнекте и смогли использовать периферию SoC на полную без необходимости пропускать ее через сторонний PCH от Intel.