@51xel

Как процессор понимает команду?

Читаю книгу "Код.Тайный язык информатики". Возник такой вопрос. В главе 17 автор показывает простую схему компьютера, и принципы его работы. Так вот в том примере процессор получал команду, например (загрузить/сложить /сохранить) в двоичном виде. Как я понял, примерно так работал intel 8080. Я не могу понять как процессор понимает, команду загрузить(к примеру 0000001), то есть как он понимает, что ему нужно конкретно сделать? Эти команды заданы физически и потом как-то сравниваются?
  • Вопрос задан
  • 767 просмотров
Решения вопроса 1
nava2002
@nava2002
Инженер
Ну если просто, то углубившись в рассматривание микропроцессора мы увидим что на самом "дне" находится так называемые " Элементы цифровой логики" "И, ИЛИ, НЕ".
Это кубики "ЛЕГО" из которых все собрано. Это атомы всей цифровой техники.
Так вот если мы скажем поставим параллельно 8 элементов и подадим на них скажем 8 сигналов (с какими то логическим уровнем 0 или 1 - "00101001" то на выходе мы получим 8 ответных сигналов (в зависимости какой элемент находится в данной позиции "101011100") .
Ну вот эта последовательность кубиков ЛЕГО и определяет систему команд процессора. (например х86, или ARM.....) и ЭТА система команд ЖЕСТКО зашита в конкретный процессор.
Ну а дальше все как катушка с нитками, размещаем соединения всякие штуки для памяти и учитывая что в процессоре миллионы транзисторов, а скажем элемент "НЕ" содержит 2 транзистора, то понятно сколько там этих "кубиков" в процессоре.

P.S. Но если честно то углубляться в эти дебри рационального смысла не имеет так как на Ассемблере 1 команда ну например в 32х разрядном процессоре это скажем 3 слова по 4 байта то есть 12 байт, а скажем программа на С++ после компиляции занимает 200 килобайт то написать код в 16000 строк это задача для истинного мазохиста. такие задачи делает коллектив и каждый все равно пишет по 1-2 тысяче строк потом это сливают в общий проект и потом мы получаем ОС Win10 которая занимает 4 гигабайта кода ну в общем невообразимый объем работы.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
hint000
@hint000
у админа три руки
Накидаю вам ссылок для ознакомления.
https://qna.habr.com/q/740575
https://ichip.ru/tekhnologii/kak-rabotaet-processo...
https://ru.wikipedia.org/wiki/Архитектура_фон_Неймана
https://ru.wikipedia.org/wiki/Арифметико-логическо...
https://ru.wikipedia.org/wiki/Устройство_управления
(насколько я понял вопрос, основной затык у вас в понимании УУ вообще и дешифратора команд в частности; это всё действительно сложно)
И немного цитат:
https://www.ixbt.com/cpu/cpu-pedia.shtml

predecoder, предекодер — предварительный декодер, разделяющий несколько CISC-команд из порции на отдельные элементы (см. x86), используя информацию от длиномера. Подготовка команд может происходить наперёд их дальнейшей обработки декодером, если до него есть буфер.

ILD (instruction length decoder: декодер длин команд), длиномер — определитель длин CISC-команд. В x86-ЦП анализирует их префиксы, опкоды и байты modR/M. В ЦП Intel длиномер является частью предекодера, измеряя длины «на лету». В большинстве ЦП AMD он работает с командами при их загрузке из L2 в L1I, сохраняя разметку байтов команд в дополнительных битах в L1I, считываемых предекодером при загрузке порции.

ID (instruction decoder: декодер команд), decoder (декодер) — набор блоков, преобразующих команды в мопы. В x86-ЦП состоит из нескольких трансляторов и одного микросеквенсера (генератора последовательности мопов) с ПЗУ для микрокода. Осуществляет микрослияние и макрослияние.

translator («переводчик»), транслятор — часть декодера, обрабатывающая простые и частые команды без использования микрокода. В x86-ЦП Intel есть 1–3 простых транслятора (на 1 меньше числа путей конвейера), каждый из которых переводит команду в 1 моп за такт, и 1 сложный транслятор, переводящий команду в 1–4 мопа/такт. Как правило, число генерируемых трансляторами мопов не больше числа путей. Большинство ЦП AMD имеют 3–4 транслятора, каждый из которых переводит команду в 1–2 мопа/такт. Макросливаемые команды обрабатываются парами любым транслятором, но не более одной пары за такт.
...
Ответ написан
Комментировать
Rst0
@Rst0
в общих чертах: так и понимает, как описано в системе команд.
процессор не получил команду, он ее прочитал из первого байта памяти.
если байт(или несколько) соответствуют команде - выполнит и т.д.
если команда предполагает некие данные, то следующие за командой байты считаются данными, а не командой
логика и набор команд зависит от процессора.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы