КОП - код операции (показывает, какую операцию необходимо сделать CPU).
Операнды - это соучастники команды (их может быть 1,2 или 3).
Результат операции помещается в 1 из операндов. Полный размер команды меняется от 1 до 11 байт. Кроме того набор однобайтных команд, так называемые префиксы, которые переопределяют режим работы CPU.
Например, одним из префиксов можно менять размер операнда или размер адреса.
Существует префикс указывающий на альтернативный набор команд и префикс блокирующий доступ к шине устройством прямого доступа.
Таким образом, к 1 команде может быть добавлено до 4 префиксов и общая длина команд может доходить до 15 байт.
Таким образом можно, организовать конвейерную работу используя систему команд Х86, поскольку длина команд меняется от 1 до 15 байт, а время от 2 до 120 тактов. Такая архитектура CPU называется CISC. (сложный набор команд процессора)
Complex Instruction Set Computer
Была создана новая технология. Которая называется RISC В ней все команды должны быть одной длины - 32 бита и время выполнения команды 1 такт , если команда не укладывается в эти рамки, то она разделяется на группу команд.
Для этой технологии требуется CPU с большим количеством регистров - 32 шт. Учитывая способность RISC организовывать быструю обработку команд в конвеере, а так же то что старые команды CISC Х86 использованы в большом количестве старого программного обеспечения Intel в CPU 486 применил RISC ядро процессора , и поставил 2-е устройство которое преобразует команды из формата CISC в формат RISC образный.(Это декодер) Универсальный процессор должен иметь универсальный набор команд.
Структура конвейера CPU - 486.
BUI - устройство для организации интерфейса между CPU и внешним окружением. Устройство принимает запросы от внутренних устройств CPU на обмен информацией с внешним окружением, при этом учитывает приоритетность устройств, т.е. выполняет роль арбитра.
1-й приоритет - это Exec.
В BUI есть КЭШ, который в 486 -унифицирован, т.е. общий для данных и кодов.
Блок КЭШ 486=16 байтам
Устройство Prefech. имеет два буфера, каждый из которых по размеру равен блоку КЭШ. В одном из буферов производит частичное декодирование начала и конца команд, в то время как второй буфер заполняется кодами с линейным увеличением адресов.
Если устройство D1 - свободно, то Prefech передает туда от отмаркирование команды и декодирует второй буфер , а первый буфер заполняется кодами и так они будут чередоваться. Главная задача pref. - быть всегда заполненным максимально. D1 - декодер команд - производит окончательное декодирование команды, а затем преобразует их в их в RISC образный формат. D1 также диспетчер (организует распределение команд по устройствам выполнения).
Если при декодировании D1 обнаружено, что требуется дополнительный операнд из памяти, то эта команда передается в D2.
D2 - формирует эффективный адрес операнда. После формирования эффективного адреса D2 делает запрос к BUI через internal Bus, где получает необходимые данные.