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

    Rst0
    @Rst0
    в общих чертах: так и понимает, как описано в системе команд.
    процессор не получил команду, он ее прочитал из первого байта памяти.
    если байт(или несколько) соответствуют команде - выполнит и т.д.
    если команда предполагает некие данные, то следующие за командой байты считаются данными, а не командой
    логика и набор команд зависит от процессора.
    Ответ написан
    Комментировать
  • Как процессор понимает команду?

    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 мопа/такт. Макросливаемые команды обрабатываются парами любым транслятором, но не более одной пары за такт.
    ...
    Ответ написан
    Комментировать
  • Как процессор понимает команду?

    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 гигабайта кода ну в общем невообразимый объем работы.
    Ответ написан
    Комментировать