Файл: Процессор персонального компьютера. Назначение, функции, классификация процессора (Архитектура микропроцессора).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.04.2023

Просмотров: 547

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Таблица 2. Двухоперандные операции

Четырехбитный КОП (биты 15-12) формирует ряд двухоперандных операций, представленных в таблице 2. Биты (11-6) и (5-0) в данном формате представляют адреса источника и приемника данных. Комбинации 0000 и 1000 поля КОП представляют группы одноадресных команд. КОП 1 (биты 15-12), представленный кодами 0000 и 1000, обозначает группу одноадресных инструкций, а КОП 2 (биты 11-6) обозначает конкретную инструкцию команд этой группы. Таким образом, однооперандные инструкции кодируются 10-битным КОП (биты 15-6).

Сложные команды порой задействуют до четырех операндов. Например, операция сложения может указывать адреса слагаемых, адрес результата и адрес следующей команды. Если при этом адрес задается 16 битами, то четырехоперандная инструкция потребует 8 байт памяти (без учета кода инструкции). Как следствие, ЭВМ, основанная на подобной системе команд будет обладать невысоким быстродействием и большим размером программ. В связи с этим в большинстве применяемых процессоров любая инструкция задействует не более двух операндов.

Это обеспечивается с применением следующих методов:

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

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

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

Формат команд во многом определяет возможности процессора. [3]

1.5 Режимы адресации.

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


Режим адресации памяти — это процедура или схема преобразования адресной информации об операнде в его исполнительный адрес.

Различные режимы адресации делятся на:

  1. Прямой режим, при котором исполнительный адрес извлекается непосредственно из инструкции, или высчитывается с применением параметра, представленного в инструкции, и значения какого-либо регистра.
  2. Косвенные режим, при котором в инструкции заключено значение косвенного адреса, т.е. ячейки памяти, содержащей указание на исполнительный адрес.

В каждом компьютере реализовано только несколько режимов адресации, применение которых определено архитектурой микропроцессора. [1]

Глава 2. Архитектура системы команд: CISC и RISC

2.1 Особенности микропроцессоров CISC-архитектуры.

Исторически, первой активной совершенствующейся архитектурой системы команд процессора стала CISC-архитектура (Complex Instruction Computer Set – компьютер с полным набором команд).

Это обусловлено рядом факторов, к которым, в частности, относились следующие:

  1. Значительная часть программного обеспечения создавалась с применением языка программирования низкого уровня – ассемблера, что объясняется невысоким уровнем производительности ранних процессоров.
  2. Использование сложных инструкций позволяло сократить размеры написанной на ассемблере программы. В свою очередь это уменьшало затраченное на исполнение программы время, а также позволяло экономить такой дорогостоящий ресурс, как оперативная память. [2]
  3. Более активное использование языков высокого уровня с целью облегчения процесса программирования, оптимизации решения специализированных задач, создало проблему, определенную как «семантический разрыв». Семантический разрыв - это мера различия принципов, лежащих в основе языков программирования высокого уровня, и тех принципов, которые определяют архитектуру ЭВМ. Усложнение системы команд процессора позволяло приблизить ее к языкам высокого уровня, сокращая этот разрыв. [6]

Основоположником CISC-архитектуры принято считать компанию IBM и ее семейство ЭВМ IBM 360. В дальнейшем CISC-архитектура была реализована во множестве процессоров, таких, как Intel 80x86, Motorola 68k, Zilog Z80xxx.


Для процессоров CISC-архитектуры характерны следующие общие черты:

  1. наличие в процессоре сравнительно малого количества регистров общего назначения;
  2. большое количество инструкций, часть из которых аппаратно реализуют функции сложных операторов языков высокого уровня;
  3. множество способов адресации операндов
  4. множество форматов тнструкций различной разрядности;
  5. наличие команд, совмещающих обработку с обращением к памяти. [5]

Одним из популярных процессоров данной архитектуры являлся Motorola 68000, широко применявшийся в ПК различных семейств, таких как Commodore Amiga, Atari ST, Apple Macintosh, Sinclair QL.

Регистровая архитектура M68000 — это образец микропроцессора с полным набором команд. Архитектура системы команд включает в себя две группы 32-битовых регистров общего назначения, имеющих специализацию (восемь регистров для данных, семь регистров для адресации), два 32-битовых регистра указателей стека (один — пользовательского, второй — суперпользовательского режимов) и 32-битный счетчик команд PC. Система команд 68000 по своей сложности близка к языкам высокого уровня.

Основная система команд включается в себя 56 инструкций, и 14 способов адресации, что увеличивает количество доступных программисту вариантов исполнения команд.

Инструкции Motorola 68k можно разделить на следующие группы:

  • Операции с памятью (Load&store — Move.B, Move.W, Move.L);
  • Арифметика (Add, Sub, Mul, Div);
  • Побитное смещение (влево и вправо, логическое и арифметическое);
  • Циклические битовые сдвиги (ROR, ROL, ROXL, ROXR);
  • Логические операции (And, Or, Not, EOr);
  • Конверсия типов (байт в слово и наоборот);
  • Условное и безусловное ветвление (Bra, BCS, BEq, BNE, BHI, BLO, BMI, BPL, etc.);
  • Вызов подпрограмм и возврат из них (BSR, RTS);
  • Управление стеком (push, pop);
  • Вызов и обработка прерываний;
  • Обработка ошибок и исключений. [12]

Несмотря на свои высокие характеристики процессоры CISC-архитектуры обладают рядом недостатков, ведущими из которых считаются:

  1. Сложность в разработке и производстве процессоров, что обуславливает их сравнительно высокую стоимость.
  2. Трудности формирования параллельности и конвейеризации вычислений.

К тому же, ряд исследований, проведенных, в частности компанией IBM показал избыточность сложности архитектуры системы команд CISC-процессоров – программисты, пишущие программы на ассемблере, так же, как и компиляторы, не использовали значительную часть команд (доля дополнительных команд, эквивалентных операторам языкам высокого уровня, в общем объеме программ не превышает 10–20%, а для некоторых, наиболее сложных команд, даже 0,2%).


В технологии производства CISC-процессоров так же появился ряд проблем. В частности, из-за высокой сложности процессоров стало трудно наращивать их тактовую частоту. [6]

В результате для дальнейшего роста производительности потребовалось применение новых технологий архитектуры системы команд. Одной из таких технологий, ставшей коммерчески успешной, является RISC-архитектура.

2.2 Особенности микропроцессоров RISC-архитектуры.

Термин RISC впервые был использован Д. Паттерсоном и Д. Дитцелем в 1980 году. Данная аббревиатура расшифровывается как Reduced Instruction Set Computer - компьютер с сокращённой системой команд.

Основными принципами, лежащими в основе первых RISC-процессоров являются:

    1. Малое количество инструкций (в прототипах процессоров MIPS и SPARC отсутствовали инструкции умножения и деления)
    2. Малое количество способов адресации памяти. Обращение к памяти выполняется лишь с помощью специальных команд чтения и записи. В классическом варианте RISC из инструкций, обращающихся к оперативной памяти, оставлены только две (Load - загрузить данные в регистр и Store - сохранить данные из регистра; так называемая Load/Store-архитектура).
    3. Малое количество форматов команд и способов указания адресов операндов. [2]

Яркой особенностью RISC-процессоров является большое количество регистров общего назначения (GPR) – как правило, их не менее шестнадцати. Все эти регистры полностью равнозначны, что позволяет компилятору свободно использовать их, сохраняя именно в них большую часть промежуточных данных, вместо обращению к стеку или более медленной оперативной памяти. [7]

В противоположность RISC-процессорам в классическом CISC-процессоре семейства 80x86 IA-32 всего восемь регистров общего назначения, при этом для каждого из них предусмотрена та, или иная специализация (для примера: в ESP хранится указатель на стек) затрудняющая его использование.

Данные действия позволили существенно упростить аппаратную реализацию процессора и повысить его быстродействие. По сути, целью разработки RISC-архитектуры являлось уменьшение Tвыч за счет сокращения CPI и tпр. Замена сложных инструкций последовательностью простых, но быстрых RISC-команд оказалась не менее эффективна, чем аппаратная реализация сложных команд в CISC-архитектуре. [6]

Считается, что первые элементы RISC-архитектуры появились в вычислительных машинах CDC 6600 и ЭВМ компании Cray Research разработки Сеймура Крея. Полноценное определение RISC-архитектуры, в современном её понимании, было сформировано на основе трех исследовательских проектов: процессора 801 компании IBM, процессора RISC университета Беркли и процессора MIPS Стенфордского университета.


Разработка экспериментального процессора компании IBM началась еще в конце 70-х годов, однако коммерческой реализации он не получил. В 1980 году Д. Паттерсон со своими коллегами из Беркли начали свой проект и изготовили два прототипа процессоров, которые получили названия RISC-I и RISC-II. К основным идеям этих машин относилось следующее:

  1. Отделение медленной памяти от высокоскоростных регистров
  2. Использование регистровых окон.

В 1981году Дж. Хеннесси со своими коллегами опубликовал описание процессора MIPS, основной особенностью разработки которой была эффективная реализация конвейерной обработки посредством планирования компилятором его загрузки. [11]

Самыми коммерчески востребованными оказались RISC-процессоры семейства Advanced RISC Machine, исходно разработанные компанией Acorn Computers и примененные в персональных компьютерах ее разработки (Acorn Archimed, RISC PC).

Для всех перечисленных процессоров характерны следующие общие черты:

  1. Отделение команд обработки от команд работы с памятью
  2. Акцент на эффективной конвейерной обработке. [9]

2.3 Конвейеризация вычислений.

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

Механизм исполнения практически любой инструкции можно разбить на пять независимых этапов:

  • Изъятие инструкции из памяти (FETCH). Из памяти извлекается инструкция, которая подлежит выполнению.
  • Декодирование инструкции (DECODE). Процессор переправляет запрос на требуемое исполнительное устройство.
  • Подготовка исходных данных для выполнения инструкции.
  • Собственно исполнение инструкции (EXECUTE).
  • Сохранение полученных результатов.

Конвейеризация потенциально применима к любой процессорной архитектуре, независимо от набора команд и положенных в ее основу принципов. Подобные попытки предпринимались даже для такого процессора, как i8086, который уже содержал упрощенный "двухстадийный конвейер" - выборка новых инструкций (FETCH) и их исполнение осуществлялись в нем независимо друг от друга. Однако реализация этой технологии для CISC-процессоров оказалась крайне затруднительной: процесс декодирования слишком разнообразных по своей структуре и формату CISC-инструкций приводит к тому, что конвейер получается чересчур замысловатым, что значительно усложняет процессор. Подобных трудностей у RISC-архитектуры гораздо меньше в связи с их вышеперечисленными особенностями и изначальной оптимизацией для использования конвейеризации, так что коммерческие RISC-процессоры с данной технологией появились намного раньше, чем аналогичные x86.