Comments 18
Спасибо, ждем продолжения.
Спасибо! Хотелось бы также освещения следующих тем:
а) Кэш инструкций (вы рассказали только про кэши данных)
б) Архитектура VLIW (Эльбрус)
в) Более подробно про современные архитектуры AMD и Intel
Декодер инструкций — самая сложная часть? Насколько мне известно, после появления суперскалярности пальму первенства в сложности устойчиво держит оборудование для её обеспечения. Кроме того, современные кэши тоже не самая простая часть, так как там надо очень сильно постараться, чтобы выдержать требования и по времени доступа, и по энергосбережению.
Видимо речь про x86 ;) Там да самая сложная.
Нет, я понимаю, что речь про x86. Но суть моего комментария состоит как раз в том, что даже для x86 я сомневаюсь, что декодер сложнее, чем оборудование для обеспечения out-of-order исполнения.
В качестве пруфа своего мнения приложу схему Pentium 4:

Как видно из этой схемы, как минимум площади всякие scheduler'ы микроинструкций занимают больше, чем декодер x86. Что заставляет подозревать, что и сложность у них распределена в том же отношении.
Собственно, сложность всех этих OoO и суперскалярности и послужила причиной начала разработки in-order вариаций с явно параллельными инструкциями (привет, VLIW).
Вроде как-то так.
В качестве пруфа своего мнения приложу схему Pentium 4:

Как видно из этой схемы, как минимум площади всякие scheduler'ы микроинструкций занимают больше, чем декодер x86. Что заставляет подозревать, что и сложность у них распределена в том же отношении.
Собственно, сложность всех этих OoO и суперскалярности и послужила причиной начала разработки in-order вариаций с явно параллельными инструкциями (привет, VLIW).
Вроде как-то так.
Кстати, а чем вся эта затея с VLIW кончилась? Я так понимаю, Итаниум уже всё?
Если процессор видит, что к выполнению готовы две инструкции, и между ними нет зависимости, то он не ждёт, пока они завершатся по отдельности, а выполняет их одновременно. Одна из популярных реализаций такой архитектуры называется Simultaneous Multithreading (SMT) и также известна, как Hyper-Threading.
Это некорректное определение SMT. На самом деле инструкции не исполняются параллельно, просто пока исполнительный блок (ALU) ждет, когда к нему в регистры упадут данные из L1/L2/L3/RAM (ожидание может быть вплоть до 100 циклов), он может выполнить инструкцию из второго потока, к которой эти данные уже приехали. Но снаружи для пользователей CPU выглядит так, что инструкции исполняются параллельно.
Знаменитая атака Spectre эксплуатирует баги в предсказании и упреждении переходов. Атакующий использует специально подобранный код, чтобы заставить процессор упреждающе выполнить код, благодаря чему происходит утечка значений из памяти.
Не вполне корректно говорить, что Spectre эксплуатирует баги. Это не баги; оно работает так, как было задумано.
Что именно происходит внутри миллиардов транзисторов, благодаря которым работает компьютер? В нашей новой мини-серии из четырёх статей мы рассмотрим процесс создания архитектуры компьтерного оборудования и расскажем о принципах его работы.
Но как не странно, в самой статье нет ни единого слова о транзисторах, и о том, какую роль они выполняют в различных блоках компьютера.
Понять как работает компьютер мне помогла книга But How Do It Know? и Computer Model
Архитектура x86 проприетарна и никто не знает, сколько всего инструкций в ней есть. Обычно считается, что существует несколько тысяч инструкций x86, но точное число никто не публикует.А разработчики компиляторов с помощью шаманского бубна и древних заклинаний в эти самые инструкции наши высокоуровневые эсперанто переводят?
А ещё все дизассемблеры, наверно, на «авось» пытаются сопоставить команды. Тоже удивил этот момент, наверно переводчик не так понял.
Был даже проект по поиску инструкций, распознаваемые декодером — 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
Sign up to leave a comment.
Как разрабатываются и производятся процессоры: основы архитектуры компьютеров