Набор инструкций процессора

Обновлено: 03.07.2024

Набор инструкций или архитектура набора инструкций (ISA) — это набор основных инструкций, понятных процессору. Набор инструкций — это часть архитектуры.

CISC [ изменить | изменить источник ]

Компьютер со сложным набором инструкций (CISC) уходит своими корнями в историю вычислительной техники. Первоначально компиляторов не было, и программы приходилось писать вручную по одной инструкции за раз. Для облегчения программирования добавлялось все больше и больше инструкций. Многие из этих инструкций представляют собой сложные комбинированные инструкции, такие как циклы. Как правило, более сложные или специализированные инструкции неэффективны в аппаратном обеспечении, а в типичной архитектуре CISC наилучшая производительность может быть достигнута при использовании только самых простых инструкций от ISA.

Наиболее известными/коммодитизированными CISC ISA являются архитектуры Motorola 68k и Intel x86.

RISC [ редактировать | изменить источник ]

Компьютер с сокращенным набором команд (RISC) был реализован в конце 1970-х годов компанией IBM. Исследователи обнаружили, что большинство программ не используют все преимущества различных режимов адресации, которые можно использовать с инструкциями. За счет уменьшения количества адресных режимов и разбиения многотактовых инструкций на несколько однотактных инструкций были реализованы следующие преимущества:

  • компиляторы было проще писать (легче оптимизировать).
  • повышена производительность программ, выполняющих простые операции.
  • тактовая частота может быть увеличена, поскольку минимальное время цикла определяется самой продолжительной выполняемой инструкцией.

Наиболее известными/коммодитизированными RISC ISA являются архитектуры PowerPC, ARM, MIPS и SPARC.

VLIW [ редактировать | изменить источник ]

Мы обсудим процессоры VLIW в следующем разделе.

Векторные процессоры [ редактировать | изменить источник ]

Мы обсудим процессоры Vector в следующем разделе.

Вычислительная оперативная память [ редактировать | изменить источник ]

Computational RAM (C-RAM) – это полупроводниковая оперативная память с процессорами, встроенными в конструкцию недорогого массивно-параллельного компьютера.

Распределение памяти [ edit | изменить источник ]

Инструкции обычно располагаются в памяти последовательно. Каждая инструкция занимает 1 или более компьютерных слов. Счетчик программ (ПК) — это регистр внутри микропроцессора, который содержит адрес текущей инструкции. [1] Во время цикла выборки инструкция с адреса, указанного программным счетчиком, считывается из памяти в регистр команд (IR), а программный счетчик увеличивается на n, где n — длина слова машины (в байтах).

Помимо выборки исполняемых инструкций, многие (но не все) инструкции также извлекают значения данных из памяти («загружают») в регистр данных или записывают значения данных из регистра данных в память («сохраняют»). . Адрес конкретного слова памяти, доступ к которому осуществляется в такой инструкции загрузки или сохранения, называется «эффективным адресом». В простейших наборах команд эффективный адрес всегда содержится в каком-то адресном регистре. Другие наборы инструкций имеют более сложные вычисления «эффективного адреса» — мы обсудим такие «режимы адресации» позже.

Общие инструкции [ редактировать | изменить источник ]

Переместить, загрузить, сохранить [ edit | изменить источник ]

Инструкции перемещения вызывают перемещение или копирование данных из одного регистра в другой регистр. Инструкции загрузки помещают данные из внешнего источника, такого как память, в регистр. Инструкции сохранения перемещают данные из регистра во внешнее место назначения.

Ветвление и прыжок [ редактировать | изменить источник ]

Ветвление и переход — это возможность загрузить в регистр ПК новый адрес, который не является следующим по порядку адресом. В общем, «переход» или «вызов» происходит безоговорочно, а «ответвление» происходит при заданном условии. В этой книге мы обычно называем обе ветви ветвями, а «переход» — безусловной ветвью.

Инструкция «вызов» — это инструкция перехода с дополнительным эффектом сохранения текущего адреса в определенном месте, например. помещая его в стек, чтобы можно было легко вернуться для продолжения выполнения. Инструкция «вызов» обычно совпадает с инструкцией «возврат», которая извлекает сохраненный адрес и возобновляет выполнение с того места, где оно было остановлено.

Инструкция «прерывание» — это вызов предустановленного места, как правило, каким-то образом закодированного в самой инструкции. Это часто используется для доступа к часто используемым ресурсам, таким как операционная система. Как правило, подпрограмма, введенная с помощью команды прерывания, завершается с помощью инструкции возврата прерывания, которая, подобно инструкции возврата, извлекает сохраненный адрес и возобновляет выполнение.

Во многих программах call – вторая по частоте использования инструкция (после move). [2]

Арифметические инструкции [ редактировать | изменить источник ]

Арифметико-логическое устройство (ALU) используется для выполнения арифметических и логических инструкций. Возможности ALU обычно выше с более совершенными центральными процессорами, но ALU машин RISC намеренно делаются простыми и поэтому имеют только некоторые из этих функций. АЛУ, как минимум, будет выполнять сложение, вычитание, НЕ, И, ИЛИ и XOR, а также обычно однобитовые повороты и сдвиги. Многие CISC-машины ALU также могут выполнять многобитовые повороты и сдвиги (с бочкообразным сдвигом), а также целочисленное умножение и деление. Хотя многие современные процессоры также могут выполнять математические операции с плавающей запятой, они обычно выполняются FPU, другой частью машины. Мы опишем ALU более подробно в главе о конструкции ALU.

Ввод/вывод [ редактировать | изменить источник ]

Инструкции ввода извлекают данные из указанного входного порта, а инструкции вывода отправляют данные на указанный выходной порт. Существует очень небольшое различие между пространством ввода/вывода и пространством памяти, микропроцессор представляет адрес, а затем либо принимает данные с шины данных, либо отправляет данные на шину данных, но виды операций, доступных в пространстве ввода/вывода, обычно больше. ограничены доступными в памяти.

НЕТ [ редактировать | изменить источник ]

NOP, сокращение от "no operation", представляет собой инструкцию, которая не дает результата и не вызывает побочных эффектов. NOP полезны для определения времени и предотвращения опасностей.

Длина инструкции [ редактировать | изменить источник ]

Существует несколько разных способов, которыми люди уравновешивают различные преимущества и недостатки различной длины инструкций.

Инструкция MIPS «немедленное добавление» включает в себя код операции (логическую операцию), спецификатор регистра назначения, спецификатор регистра источника и постоянное значение, все в тех же 32 битах, которые используются для каждой инструкции MIPS.

Инструкции фиксированной длины менее сложны для обработки ЦП, чем инструкции переменной длины по нескольким причинам, и поэтому их несколько легче оптимизировать для повышения скорости. К таким причинам относятся: ЦП с инструкциями переменной длины должны проверять, пересекает ли каждая инструкция строку кэша или границу страницы виртуальной памяти; Процессоры с инструкциями фиксированной длины могут все это пропустить. [3]


В 16-битной инструкции просто не хватает битов для размещения 32 регистров общего назначения, а также делать "Ra=Rb(op)Rc"Template:Snd т.е. независимо выбирать 2 исходных и 1 регистр назначения из банка регистров общего назначения из 32 регистров, а также самостоятельно выбрать одну из нескольких операций АЛУ.

Поэтому люди, разрабатывающие наборы инструкций, должны идти на один или несколько из следующих компромиссов:

  • пожертвовать плотностью кода и использовать более длинные инструкции фиксированной ширины, обычно 32-разрядные, такие как MIPS, DLX и ARM.
  • пожертвовать инструкциями фиксированной ширины, требуя более сложного декодера для обработки как коротких 16-разрядных инструкций, так и более длинных инструкций с тремя операндами, таких как ARM Thumb.
  • пожертвовать тремя операндами, используя не более двух операндов во всех инструкциях для всего, например, для Atmel AVR. Инструкции с 3 операндами позволяют лучше повторно использовать данные; [3] без инструкций с 3 операндами программам иногда требуются дополнительные инструкции копирования, когда оба переменных ввода операнда для какой-либо операции ALU должны быть сохранены для некоторых последующих инструкций.
  • пожертвовать регистрами, так что только 16 или 8 видимых программистом регистров.
  • пожертвовать концепцией регистра общего назначения - возможно, только 16 или 8 «регистров данных» видны для инструкций ALU с 3 операндами, как в 68000, или назначение ограничено одним или двумя «аккумуляторами», но другие регистры (такие как «адресные регистры») видны другим инструкциям.

Формат инструкции [ редактировать | изменить источник ]

Любая конкретная инструкция машинного языка для любого конкретного процессора обычно может быть разделена на поля. Например, определенные биты в инструкции «ADD» указывают на операцию — что на самом деле это «ADD», а не инструкция «XOR» или «вычитание». Другие биты указывают, какой регистр является источником, другие биты указывают, какой регистр является приемником и т. д.

Некоторые процессоры имеют не только фиксированную ширину инструкции, но и единый формат инструкции — фиксированный набор полей, одинаковый для каждой инструкции.

Иногда какой-то новый ЦП имеет другой формат набора инструкций, чем какой-то другой ЦП, что делает его «несовместимым по двоичному коду» с этим другим ЦП. Однако иногда этот новый ЦП может быть спроектирован так, чтобы иметь «обратную совместимость исходного кода» с каким-либо другим ЦП - он «совместим с языком ассемблера, но не двоично-совместим» с программами, написанными другим ЦП. (Например, 8080, который был совместим с исходным кодом, но не совместим с 8008 по двоичному коду).(Например, 8086, который был совместим с исходным кодом, но не совместим в двоичном формате с программами, написанными для 8085, 8080 и 8008 [ необходима ссылка ] ).

Мартин имеет 20-летний опыт работы в области информационных систем и информационных технологий, имеет докторскую степень в области управления информационными технологиями и степень магистра в области управления информационными системами. Он адъюнкт-профессор компьютерных наук и компьютерного программирования.

Набор инструкций используется для связи с процессором компьютера. Изучите определение и компоненты набора инструкций, включая длину инструкции, коды операций, операнды, регистры и основную память. Обновлено: 24.01.2022

Набор инструкций

Чем ближе мы подходим к ядру компьютера, тем больше незнакомых вещей может показаться. На самом деле мы все ближе и ближе подходим к атомам компьютера: к единицам и нулям! Это язык машины, а не язык, к которому мы привыкли. На этом уровне вы все еще можете общаться с процессором и указывать ему, что делать.

Набор инструкций (используемый в так называемой ISA или архитектуре набора инструкций) — это код, который может понять процессор компьютера (ЦП). Язык 1 и 0, или машинный язык. Он содержит инструкции или задачи, управляющие перемещением битов и байтов внутри процессора.

Но если это 1 и 0, как мы на самом деле взаимодействуем с процессором? Системные программисты используют язык ассемблера, который является разновидностью языка программирования. Операторы собираются на машинном языке — в инструкциях, понятных процессору. Язык ассемблера очень похож на машинный язык с метками, потому что один только двоичный код быстро становится трудно отслеживать.

Что составляет набор инструкций? Когда мы начинаем говорить о единицах и нулях, машинном языке, языке ассемблера и регистрах, все это может стать туманным. Давайте начнем с общей структуры инструкции и будем двигаться дальше.

Набор инструкций состоит из ограниченного набора уникальных кодов, которые сообщают процессору, что делать дальше, а также некоторых основных правил их выражения. Мы можем объяснить это подробнее, используя следующее:

  1. Длина инструкции (может варьироваться)
  2. Коды операций (выполняемая команда)
  3. Операнды (с чем будет работать команда)
  4. Реестры (внутренние расположения — ограничены по количеству и возможностям, но быстро доступны)
  5. Память (внешнее хранилище — большее и универсальное количество мест, но более медленный доступ)


Произошла ошибка при загрузке этого видео.

Попробуйте обновить страницу или обратитесь в службу поддержки.

Вы должны создать учетную запись, чтобы продолжить просмотр

Зарегистрируйтесь, чтобы просмотреть этот урок

Как участник, вы также получите неограниченный доступ к более чем 84 000 уроков по математике, английскому языку, естественным наукам, истории и многому другому. Кроме того, вы можете пройти пробные тесты, викторины и индивидуальные тренировки, которые помогут вам добиться успеха.

Получите неограниченный доступ к более чем 84 000 уроков.

Уже зарегистрированы? Войдите здесь для доступа

Ресурсы, созданные учителями для учителей

Дженнифер Б.

Вы в ударе. Продолжайте в том же духе!

Просто отмечаюсь. Вы все еще смотрите?

Хотите посмотреть это позже?

Войдите или зарегистрируйтесь, чтобы добавить этот урок в собственный курс.

Инструкции

Так что же такое инструкция? Давайте взглянем на инструкции и их длину.

Об инструкции

Инструкция может различаться по длине в зависимости от архитектуры. В системах x86 длина инструкции обычно составляет от 1 до 3 байтов (для кода операции) плюс количество байтов, необходимых для операндов, в зависимости от режима адресации. Что такое режим адресации? Различные операции могут выполняться непосредственно с чистыми числами, косвенно с числами во внутренних регистрах или очень косвенно с ячейками в основной памяти. Каждый из них представляет собой отдельный режим адресации.

Кроме того, более короткие инструкции не всегда означают более быстрые инструкции. Иногда короткая инструкция скрывает множество машинных циклов. Подумайте о езде на велосипеде, который слишком мал для вас; вы можете крутить педали быстрее, но действительно ли вы едете быстрее?

Сама инструкция состоит из битового шаблона (снова эти 1 и 0), но в ассемблере вы увидите такой синтаксис, как MOV, ADD и CMP. Они называются мнемоникой, а не кодом операции (мнемоника — это то, что облегчает запоминание другой вещи). Например, чтобы добавить два операнда, таких как число 42, к содержимому регистра EAX, код выглядит следующим образом:

О длине инструкции

Инструкция имеет определенную длину в соответствии с требованиями ISA.Однако рассмотрите следующую инструкцию, показанную на этом рисунке, который мы обозначили как Рисунок 1:

Рисунок 1. Пример длины инструкции
Длина типичной инструкции

Длина инструкции зависит от того, сколько можно указать в наименьшем количестве битов. Некоторые инструкции, подобные показанной на рис. 1, могут быть указаны всего в 16 битах или двух байтах (также называемых словом). Это потому, что эти два 6-битных операнда могут указывать только то, что может быть описано 6-битами в предыдущем примере. Мы можем указать 32 разных вещи с помощью 6 бит, что часто достаточно для указания регистра. Но если нам нужно указать ячейку памяти в основной памяти, для указания каждого адреса может потребоваться 4 байта или больше.

Операнды и коды операций

Еще одна особенность набора инструкций связана с операциями и операндами. То есть, что там на самом деле происходит? Как мы на самом деле выполняем инструкцию и сообщаем процессору, что делать? Здесь на помощь приходит язык ассемблера.

Ниже приведены примеры операторов сборки с использованием команды MOV. Первый операнд — это пункт назначения, а второй операнд — источник. В качестве операндов можно указать немедленные значения, регистры или ячейки основной памяти (также несколькими способами, чтобы сэкономить время при перемещении большого количества данных).

В этом примере число 9 будет загружено в регистр EAX:

В этом примере содержимое регистра EBX будет перемещено в регистр EAX:

Регистры и основная память

Регистры расположены внутри ЦП (центрального процессора). Количество регистров ограничено, но работать с ними гораздо быстрее, чем с основной памятью, поскольку процессору не нужно обращаться к ним по шине компьютера.

Оперативная память — это общая область памяти компьютера. Он содержит гораздо больше данных, но доступ к ним происходит намного медленнее. Регистры и оперативная память являются типами операндов при выполнении инструкции.

Флаги состояния и счетчик программ

Когда операторы выполняются, внутри процессора переключаются флаги состояния, что сообщает ему, например, о том, что произошло в результате этой операции. Бит состояния или флаг может быть включен/выключен (1 или 0). Так как 1 и 0 — это машинный язык, это работает хорошо.

ЦП также должен отслеживать, где мы находимся в текущей программе. Это делается с помощью счетчика программ, который указывает на текущую инструкцию.

Резюме урока

Хорошо, давайте рассмотрим, что мы узнали!

Набор инструкций – это код, понятный центральному процессору. Наборы инструкций являются частью ISA (архитектуры набора инструкций). Вы можете писать код на языке ассемблера, который затем ассемблируется в машинный язык (единицы и нули, понятные процессору). Длина инструкции зависит от нескольких факторов, например от того, какой тип операндов она указывает. Фактические инструкции запрограммированы с использованием мнемоники языка ассемблера.

Операции могут выполняться с чистыми числами или косвенно с содержимым регистров или основной памяти. Для каждого из них требуется свой режим адресации, в котором разные операции могут выполняться непосредственно с чистыми числами, косвенно с числами во внутренних регистрах или очень косвенно с ячейками в основной памяти.

Регистры — это специальные области внутри ЦП, с которыми быстрее работать. Флаги состояния могут быть установлены при выполнении инструкций. Счетчик программ поддерживается машиной и обозначает адрес текущей инструкции. Как компьютерный архитектор, важно понимать, как ISA обрабатывает инструкции и как язык ассемблера используется для создания машинного языка, понятного процессору.

Архитектура набора инструкций (ISA)

Архитектура набора инструкций (ISA) — это часть процессора, видимая программисту или автору компилятора. ISA служит границей между программным обеспечением и оборудованием. Мы кратко опишем наборы команд, используемые во многих современных микропроцессорах. ISA процессора можно описать с помощью 5 категорий:

Хранение операндов в ЦП Где хранятся операнды, кроме памяти? Количество явно именованных операндов Сколько операндов именовано в типичной инструкции. Расположение операнда Может ли любой операнд инструкции АЛУ быть расположен в памяти? Или все операнды должны храниться внутри ЦП? Операции Какие операции предусмотрены в ISA. Тип и размер операндов Каков тип и размер каждого операнда и как он указывается?

Из всего вышеперечисленного наиболее отличительным фактором является первый.

<ПР>
  • Стек. Операнды неявно находятся на вершине стека.
  • Аккумулятор. Один операнд неявно является аккумулятором.
  • Регистр общего назначения (GPR). Все операнды явно упоминаются, это либо регистры, либо ячейки памяти.
  • Давайте посмотрим на ассемблерный код

    во всех трех архитектурах:

    Стек Накопитель GPR
    НАЖАТЬ A ЗАГРУЗИТЬ A ЗАГРУЗИТЬ R1,A
    НАЖМИТЕ B ДОБАВИТЬ B ДОБАВИТЬ R1,B
    ДОБАВИТЬ СОХРАНИТЬ C< /TD> STORE R1,C
    POP C - -

    Не все процессоры можно четко отнести к одной из вышеуказанных категорий. У i8086 есть много инструкций, которые используют неявные операнды, хотя он имеет общий набор регистров. Еще одним примером является i8051, у него есть 4 банка GPR, но большинство инструкций должны иметь регистр A в качестве одного из своих операндов.
    Каковы преимущества и недостатки каждого из этих подходов?

    Стек

    Преимущества: простая модель оценки выражений (обратная полировка). Краткая инструкция.
    Недостатки: доступ к стеку невозможен. Это затрудняет создание эффективного кода. К самому стеку обращаются при каждой операции, и он становится узким местом.

    Накопитель

    Преимущества: Краткие инструкции.
    Недостатки. Аккумулятор — это только временное хранилище, поэтому трафик памяти при таком подходе самый высокий.

    Преимущества: упрощает генерацию кода. Данные могут храниться в течение длительного времени в регистрах.
    Недостатки: все операнды должны быть названы, что приводит к более длинным инструкциям.

    Раньше ЦП относились к первым двум типам, но за последние 15 лет все ЦП были процессорами GPR. Две основные причины заключаются в том, что регистры быстрее, чем память, и чем больше данных может храниться внутри ЦП, тем быстрее будет работать программа. Другая причина заключается в том, что компилятору проще использовать регистры.

    Компьютер с сокращенным набором команд (RISC)

    Как мы упоминали ранее, большинство современных процессоров относятся к типу GPR (регистр общего назначения). Несколько примеров таких процессоров: IBM 360, DEC VAX, Intel 80x86 и Motorola 68xxx. Но хотя эти ЦП были явно лучше, чем предыдущие ЦП на основе стека и аккумулятора, им все еще не хватало нескольких областей:

    <ПР>
  • Инструкции были разной длины от 1 байта до 6-8 байтов. Это вызывает проблемы с предварительной выборкой и конвейерной обработкой инструкций.
  • Инструкции ALU (арифметико-логическое устройство) могут иметь операнды, которые являются ячейками памяти. Поскольку количество циклов, необходимых для доступа к памяти, варьируется, меняется и вся инструкция. Это не очень хорошо для разработчиков компиляторов, конвейерной обработки и множественных проблем.
  • Большинство инструкций ALU имели только 2 операнда, где один из операндов также является адресатом. Это означает, что этот операнд уничтожается во время операции или его нужно где-то сохранить раньше.
  • Таким образом, в начале 80-х была представлена ​​идея RISC. Проект SPARC был начат в Беркли, а проект MIPS — в Стэнфорде. RISC расшифровывается как «Компьютер с сокращенным набором инструкций». ISA состоит из инструкций одинакового размера, обычно 32 бита. Таким образом, они могут быть предварительно загружены и успешно конвейеризированы. Все инструкции ALU имеют 3 операнда, которые являются только регистрами. Доступ к памяти осуществляется только через явные инструкции LOAD/STORE.
    Таким образом, C = A + B будет собран как:

    Хотя для этого требуется 4 инструкции, мы можем повторно использовать значения в регистрах.

    Почему эта архитектура называется RISC? Что в нем уменьшено?
    Ответ заключается в том, что для того, чтобы сделать все инструкции одинаковой длины, количество битов, используемых для кода операции, уменьшается. Таким образом, предоставляется меньше инструкций. Инструкции, которые были выброшены, — это менее важные строковые и двоично-десятичные операции. Фактически, теперь, когда доступ к памяти ограничен, не существует нескольких видов инструкций MOV или ADD. Таким образом, более старая архитектура называется CISC (Complete Instruction Set Computer). Архитектуры RISC также называются архитектурами LOAD/STORE.

    Количество регистров в RISC обычно составляет 32 или более. Первый RISC-процессор MIPS 2000 имеет 32 GPR по сравнению с 16 в архитектуре 68xxx и 8 в архитектуре 80x86. Единственным недостатком RISC является размер кода. Обычно требуется больше инструкций, а короткие инструкции (POP, PUSH) — пустая трата времени.

    Почему же до сих пор разрабатываются процессоры CISC? Почему Intel тратит время и деньги на производство Pentium II и Pentium III?
    Ответ прост, обратная совместимость. IBM-совместимый ПК является самым распространенным компьютером в мире. Intel требовался ЦП, который мог бы запускать все приложения, находящиеся в руках более 100 миллионов пользователей.С другой стороны, Motorola, создавшая серию 68xxx, которая использовалась в Macintosh, совершила переход и вместе с IBM и Apple создала Power PC (PPC) с RISC-процессором, который устанавливается в новых Power Mac. На данный момент Intel и производители ПК зарабатывают больше денег, но с учетом того, что Microsoft также играет в области RISC (Windows NT работает на платформе Compaq Alpha), а с обещаниями Java будущее CISC вообще не ясно.

    Важный урок, который можно извлечь из этого, заключается в том, что превосходные технологии являются важным фактором в компьютерной индустрии, но также важны маркетинг и цена (если не больше).

    Основной вопрос об эксплуатации компьютера, но я не знаю, как его задать. Когда мы говорим, что у компьютера есть набор инструкций, откуда компьютер узнает, что это за набор? Он хранится в микросхеме ПЗУ? Он хранится где-то в процессоре? Куда его поставил производитель, чтобы он смог прочитать диск и начать обрабатывать машинный код?



    7 ответов 7

    Короткий ответ: фактическая схема процессора компьютера — это то, что «определяет» набор инструкций.

    Это кодируется определенным образцом электрического сигнала, "хранящимся" в памяти. Этот шаблон сигнала активирует и выключает определенные транзисторы таким образом, что сигналы, хранящиеся в dest, совпадают с сигналами в src из-за схемы подключения.

    Подробный ответ: пройдите курс компьютерной архитектуры. :-)

    Отличный ответ. 1) Есть ли какое-нибудь анимированное или графическое объяснение этому? 2) Я хотел бы построить схему (с логическими вентилями вручную или я далеко от смысла?), которая может «действовать» по моему собственному набору инструкций (не хочу быть слишком тривиальной, но достаточно сложной, чтобы понять как схема «использует» / «воздействует» на двоичную инструкцию, написанную на ассемблере). 3) Как на физическом уровне эта двоичная инструкция (написанная на ассемблере) "читается"/"действует" схемой? Я имею в виду, как они собираются вместе или какие другие факторы/аппаратные средства (если таковые имеются) запускают инструкции, которые будут переданы в схему.

    Любой материал онлайн-курса, который учит создавать микропроцессор, такой как 8085 (я не уверен, насколько сложным является 8085, но что-то очень минимальное, что можно рассматривать как микропроцессор, который может работать на пользовательском коде сборки) с наименьшим доступным аппаратным обеспечением. (логические вентили?)? Я хотел бы иметь визуализацию ((абстрактную) физическую) внутри каждой аппаратной части внутри микропроцессора и при каждом физическом движении — от включения устройства до хранения двоичных инструкций в соответствующей части muP, когда я печатаю на клавиатуре, «запуская» «выполнение» этих инструкций.

    Набор инструкций встроен в ЦП. На самом деле это результат того, как построена схема: нет места, где хранятся инструкции.

    При запуске компьютера в ПЗУ находится небольшая программа, которая знает, как инициализировать все компоненты и загрузить ОС. Из-за того, как устроен компьютер, эта программа запускается первой.


    Похоже, вы смешиваете два разных понятия:

    Набор инструкций

    Загрузчик

    Загрузчик — это небольшая программа, которая сообщает ЦП, как запустить компьютер. Очевидно, что он написан с использованием набора инструкций ЦП и обычно находится в ПЗУ, EEPROM или где-то еще. Он сообщает ЦП, как взаимодействовать с диском для загрузки загрузочного сектора (который затем загружает больше операционной системы). На ПК загрузчик является частью BIOS.

    Когда мы говорим, что компьютер имеет заданный набор инструкций, мы имеем в виду набор инструкций (кодов операций), которые может понять процессор. Машина спроектирована в цифровом виде, чтобы понимать инструкции, которые она сможет получить. При разработке ЦП одним из компонентов является декодер, который является частью ЦП, декодирующей электрические сигналы; и выполняет вычисления, которые ему было поручено вычислить по этим сигналам (инструкция). Если вас интересует, как работают ядра компьютеров, я предлагаю прочитать CODE или Элементы вычислительной системы

    ЦП имеет определенный набор инструкций, который он знает, как выполнять. Когда вы включаете компьютер, процессор должен получать инструкции. Имеет смысл, если приходящие инструкции выполняют процедуру загрузки. Откуда эта инструкция? Обычно это ПЗУ (например, СППЗУ).

    Вы пишете код, который в конечном итоге компилируется в ассемблерные инструкции, которые в конечном итоге компилируются в "машинный код". Когда ЦП получает инструкцию из памяти, он декодирует ее. Процесс декодирования завершается установкой различных управляющих битов в конвейере процессора, которые определяют, что делает ЦП (загружает/хранит данные, выполняет математические операции с операндами и т. д.).Набор инструкций определяет, как реализовано аппаратное обеспечение. По сути, это основной набор операций, которые процессор может выполнять «аппаратно».

    Когда процессор описывается как имеющий, например. набор инструкций 6502, это означает, что если процессор выводит сигналы для получения инструкции с некоторого адреса и получает в ответ определенные данные (например, значение байта $A9), последующие действия процессора будут такими, как описано в документации. Например, 6502 будет извлекать байт со следующего адреса, а затем копировать этот байт в аккумулятор, пока он выводит выборку инструкции для последующей инструкции.

    В большинстве случаев процессор получает набор инструкций не больше, чем лампочка приобретает способность преобразовывать электричество в свет. Процессор создан для выполнения определенных действий при получении определенных входных данных; хотя современные процессоры настолько сложны, что для их проектирования требуются очень сложные инструменты (в отличие от «древних» времен, когда они часто разрабатывались с помощью ручек, карандашей и бумаги, а реализовывались с использованием рубиновой пленки, вырезанной вручную), в основном процессоры делают то, что они созданы, чтобы делать.

    Читайте также: