Как стать автором
Обновить

Как разрабатываются и производятся процессоры: основы архитектуры компьютеров

Время на прочтение9 мин
Количество просмотров58K
Всего голосов 57: ↑54 и ↓3+51
Комментарии18

Комментарии 18

Спасибо, ждем продолжения.

Спасибо! Хотелось бы также освещения следующих тем:


а) Кэш инструкций (вы рассказали только про кэши данных)
б) Архитектура VLIW (Эльбрус)
в) Более подробно про современные архитектуры AMD и Intel

Автор оригинала: William Gayde
Вангую, что упоминания Эльбруса в рассказе про VLIW вы не дождетесь)
Декодер инструкций — самая сложная часть? Насколько мне известно, после появления суперскалярности пальму первенства в сложности устойчиво держит оборудование для её обеспечения. Кроме того, современные кэши тоже не самая простая часть, так как там надо очень сильно постараться, чтобы выдержать требования и по времени доступа, и по энергосбережению.
Видимо речь про x86 ;) Там да самая сложная.
Нет, я понимаю, что речь про x86. Но суть моего комментария состоит как раз в том, что даже для x86 я сомневаюсь, что декодер сложнее, чем оборудование для обеспечения out-of-order исполнения.
В качестве пруфа своего мнения приложу схему Pentium 4:
image
Как видно из этой схемы, как минимум площади всякие scheduler'ы микроинструкций занимают больше, чем декодер x86. Что заставляет подозревать, что и сложность у них распределена в том же отношении.
Собственно, сложность всех этих OoO и суперскалярности и послужила причиной начала разработки in-order вариаций с явно параллельными инструкциями (привет, VLIW).
Вроде как-то так.
Кстати, а чем вся эта затея с VLIW кончилась? Я так понимаю, Итаниум уже всё?
Итаниум помер, Эльбрус живой.
У Эльбруса крайней специфическая область применения, несмотря на в принципе декларируемую универсальность. На рынке он фактически отсутствует. Но да, из реально имеющихся процессоров, он, похоже, единственный такой остался. Даже в видеокартах перешли на RISC.
Если процессор видит, что к выполнению готовы две инструкции, и между ними нет зависимости, то он не ждёт, пока они завершатся по отдельности, а выполняет их одновременно. Одна из популярных реализаций такой архитектуры называется Simultaneous Multithreading (SMT) и также известна, как Hyper-Threading.


Это некорректное определение SMT. На самом деле инструкции не исполняются параллельно, просто пока исполнительный блок (ALU) ждет, когда к нему в регистры упадут данные из L1/L2/L3/RAM (ожидание может быть вплоть до 100 циклов), он может выполнить инструкцию из второго потока, к которой эти данные уже приехали. Но снаружи для пользователей CPU выглядит так, что инструкции исполняются параллельно.
… а то, что описал автор, — out-of-order исполнение в комбинации с наличием нескольких исполнительных устройств (т.е. суперскалярностью).
Знаменитая атака Spectre эксплуатирует баги в предсказании и упреждении переходов. Атакующий использует специально подобранный код, чтобы заставить процессор упреждающе выполнить код, благодаря чему происходит утечка значений из памяти.

Не вполне корректно говорить, что Spectre эксплуатирует баги. Это не баги; оно работает так, как было задумано.
Что именно происходит внутри миллиардов транзисторов, благодаря которым работает компьютер? В нашей новой мини-серии из четырёх статей мы рассмотрим процесс создания архитектуры компьтерного оборудования и расскажем о принципах его работы.

Но как не странно, в самой статье нет ни единого слова о транзисторах, и о том, какую роль они выполняют в различных блоках компьютера.
Понять как работает компьютер мне помогла книга But How Do It Know? и Computer Model
Про транзисторы на Хабре (утрируя) каждая десятая статья. Зато про более высокоуровневые блоки процессора почему-то мало кто пишет. Поэтому я считаю подход данной статьи вполне полезным, хотя иногда в мелочах автор имхо делает ошибки. Плюс есть некоторая путаница в понятиях.
Архитектура x86 проприетарна и никто не знает, сколько всего инструкций в ней есть. Обычно считается, что существует несколько тысяч инструкций x86, но точное число никто не публикует.
А разработчики компиляторов с помощью шаманского бубна и древних заклинаний в эти самые инструкции наши высокоуровневые эсперанто переводят?
А ещё все дизассемблеры, наверно, на «авось» пытаются сопоставить команды. Тоже удивил этот момент, наверно переводчик не так понял.
Wiki пишет, что есть недокументированные инструкции.

Был даже проект по поиску инструкций, распознаваемые декодером — https://github.com/xoreaxeaxeax/sandsifter
https://dustri.org/b/files/papers/31dd6431a3dd0d26814b4ff4d453c20e8d1292eef2f3ec1f777b8e4ee1852d08_domas_breaking_the_x86_isa_wp.pdf "Breaking the x86 ISA" 2017 — Hidden Instructions

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории