Таким образом, самый низкий уровень, который мы можем «запрограммировать», - это отдельные инструкции на процессоре, но эти инструкции должны были быть запрограммированы как-то в первую очередь. Как процессор знает, что делать при выполнении команды?язык с более низким уровнем сборки? (как реализованы инструкции процессора?)
ответ
Это называется «микрокод» (или, по крайней мере, так оно и было вызвано, когда я в последний раз смотрел на эти 15 + лет назад).
Различные аппаратные функциональные двигатели в процессоре согласовываются с программным обеспечением «микрокода»: выборка, декодирование «машинный код», выполнить и т.д.
Вы хотите this book.
Полезные статьи:
http://www.gamezero.com/team-0/articles/math_magic/micro/ Как создать простой процессор ...
Лекционные примечания к этому курсу: http://www.stanford.edu/class/ee382/ Процессор дизайн
мышления в упрощенно, как старые процессоры будут делать это :
Если вы посмотрите на бит инструкции для большинства процессоров, вы начнете видеть шаблоны. Несколько бит определяют один из входных регистров, несколько бит могут определять другой входной регистр, несколько бит могут определять регистр результатов, а несколько бит определяют операцию. Таким образом, некоторые части оборудования смотрят на биты, которые определяют операнд a, и они используют это для подключения операнда a к alu, другое оборудование использует бит b операнда для маршрутизации операнда b на вход b в alu. Другие биты выбирают операцию, которую должен выполнять alu, добавить, и, или xor и т. Д. Наконец, биты результатов направляют вывод alu в регистр, который должен удерживать результат. Немного упрощен, но в то же время не так уж далека от того, как написана логика и как работают традиционные процессоры и многие из более мелких. Это буквально означает, как работали самые ранние компьютеры, и «программирование» их включало в себя маршрутизацию ответа из этого алу на вход на этом алу вместе с входом от другого, пока результат не завершился, что вы искали.
Некоторые из современных современных процессоров являются микрокодированными, поскольку на самом деле есть еще один уровень инструкций внутри, ваша операция c = a + b может превратиться в серию микрокодированных инструкций, которые запускаются при вводе вашей машинной инструкции, и эти поможет выполнить маршрут входов логики сумматора и результат обратно к выходным типам вещей.
Логика в наши дни реализована с использованием языков программирования, таких как verilog и vhdl, которые довольно близки к существующим языкам программирования. Разница заключается в том, что многие из строк в «коде» выполняются одновременно, не обязательно в последовательном порядке, как в обычном программном обеспечении. Учитывая некоторые хорошо написанные hdl, нетрудно подобрать язык и понять, что происходит. Вы можете проверить opencores.org и захватить источник для одного из многих клонов процессора. Инструменты компилятора для hdl не намного удалены от того, что используется для программного обеспечения, вместо инструкций код сводится к логике или воротам, этот бит с этим битом, этот бит с этим битом. Модули, которые могут быть легко реализованы в логике и соединены вместе. И так же, как вы можете взять программу на C и запустить ее на многих процессорах и операционных системах, вы можете взять hdl и скомпилировать его для типов ворот в разных fpgas или логических модулях для разных литейных цехов.
+1 для объяснения того, что на самом деле делает оборудование. Может быть, вы можете разбить его на несколько абзацев. :) – jprete
Отлично читал и абсолютно отвечает на вопрос. –
не могли бы вы разместить некоторые из соответствующих текстов? –