понедельник, 15 января 2018 г.

Intel Core architecture

        Волевым усилием заставил себя дочитал до конца "The Architecture of the Nehalem Processor and Nehalem-EP SMP Platforms" by Michael E. Thomadakis.
Читается довольно тяжело, над каждой страницей приходится думать. Но результат того стоит. Признаться этот whitepaper перевернул мое представлене о современных интеловских процессорах. Раньше в моей голове были отдельные прямоугоньки "ядра", и что внутри там какая "мульти скалярная архитектура". Но что именно под этими бла-бла-бла и прямоугольниками скрываеться я понятия не имел. После прочтения этого документа я понял только одно-мы не имеем ни малейшего представления даже о сотой доли процессов происходящих внутри куска кремния под названием CPU. В общем я всем рекомендую нагуглить этот whitepaper и прочитать. Да, процессоры построенные именно на  Nehalem архитектуре уже давно не выпускаются, после нее уже было выпущено куча новых архитектур (Intel выпускает новую архитектуру каждые два года), но все они являются развитием идей освященных в данной работе.
    Итак что же меня больше всего поразило:
- Понимание того как на самом деле работает hyper threading. Какие ресурсы внутри ядра деляться статически("по-ровну"), я какие становяться разделяемыми.
- Какие ресурсы являются общими для всех ядер одного CPU
- NUMA архитектура, протоколы отвечающие за обеспечение целостности CPU Cache. Вообще я пребываю в шоке от того сколько всего наворочено внутри современных интеловских процессоров. Целые протоколы синхронизации реализованы в кремние. 
- Все что мы знали про регистры процессора(AX, DX, DS и тд) было правдой только 20 лет назад. Сейчас есть только пулл теневых (не описанных в архитектуре регистров) и блок внутри CPU ядра который вешает на них алиасы. 
- NUMA доступ к памяти. Это все оказываться очень не просто. 
- Цена miss-prediction, цена L1, L2, L3 cache miss. Цена доступа к локальной памяти (памяти в твоей NUMA-зоне), цена доступа к паямти в другой NUMA зоне.
Вообще сложность алгоритмов реализованных в кремнии/микрокоде конечно зашкаливает. Особенно если учесть что цена ошибки для вещей сделанных в кремнии очень высока (представьте что у вас  "релиз" - раз в два года).