Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Konyukhova_arhitektura

.pdf
Скачиваний:
36
Добавлен:
12.03.2016
Размер:
6.11 Mб
Скачать

2)дешифратор операций – логический блок, который в соответствии с поступающим из регистра команд кодом операции выбирает один из множества имеющихся у него выходов;

3)постоянное запоминающее устройство (ПЗУ) микропрограмм

хранит управляющие импульсы для выполнения в блоках вычислительной машины процедур обработки информации; импульс по выбранному дешифратором операций проводу считывает из ПЗУ микропрограмм необходимую последовательность управляющих сигналов;

4)узел формирования адреса (располагается в ШИ) – устройство для вычисления полного адреса ячейки памяти (регистра) по реквизитам, поступающим из микропроцессорной памяти или регистра команд;

5)кодовые шины данных, адреса и инструкций – часть внутрен-

ней интерфейсной шины процессора.

Таким образом, УУ формирует управляющие сигналы для выполнения процессором своих функций, рассмотренных выше.

АЛУ предназначено для выполнения арифметических и логических операций преобразования информации. Функционально в простейшем варианте АЛУ состоит из следующих компонент:

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

регистров – быстродействующих ячеек памяти различной длины: регистр 1 имеет разрядность 32 бита, регистр 2 – 16 бит; при сложении в регистр 1 помещается первое слагаемое, а потом результат,

врегистр 2 – второе слагаемое;

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

АЛУ выполняет арифметические операции только над двоичными числами с фиксированной точкой. Для обработки чисел с плавающей точкой привлекается математический сопроцессор или специально составленные программы.

Более подробные сведения об устройстве и функционировании УУ и АЛУ можно найти в [3 – 5].

Регистры ОУ – часть микропроцессорной памяти. Рассмотрим регистры на примере базового процессора Intel 8086, который содержит всего 14 двухбайтовых регистра. В современных процессорах их

50

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

В состав ОУ входят следующие регистры:

1)регистры общего назначения (РОН), или универсальные: AX – (AH, AL), BX – (BH, BL), CX – (CH, CL), DX – (DH, DL). Могут ис-

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

скаждой его половиной; но каждый из РОН может использоваться и как специальный при выполнении некоторых конкретных команд;

2)регистры смещений: SP, BP, SI, DI. Являются неделимыми и предназначены для хранения относительных адресов ячеек памяти внутри сегментов (смещений относительно начала сегментов);

2.1) SP (Stack Pointer) – смещение вершины стека;

2.2) BP (Base Pointer) – смещение начального адреса поля памяти, непосредственно отведённого под стек;

2.3) SI (Source Index), DI (Destination Index) – предназначены для хранения адресов индекса источника и приёмника данных при операциях над строками и им подобных.

Слово состояния процессора (PSW – Processor State Word), или регистр флагов, имеет размер 2 байта и содержит одноразрядные признаки или флаги. Всего в регистре девять флагов: шесть из них условные, или статусные, отражают результаты операций, выполненных ОУ, остальные три – управляющие, которые определяют режим исполнения программы.

1. Статусные флаги. К ним относятся:

1.1. CF (Carry Flag) – флаг переноса. Устанавливается в 1, если при выполнении арифметических и некоторых операций сдвига возникает «перенос» из старшего разряда.

1.2. PF (Parity Flag) – флаг чётности. Проверяет младшие 8 битов результатов над данными. Чётное число единиц приводит к установке этого флага в 1, нечётное – в 0.

1.3. AF (Auxiliary Carry Flag) – флаг логического переноса в дво- ично-десятичной арифметике. Устанавливается в 1, если арифметическая операция приводит к переносу или займу четвёртого справа бита однобайтового операнда. Используется при арифметических операциях над двоично-десятичными кодами и кодами ASCII.

1.4. ZF (Zero Flag) – флаг нуля. Устанавливается в 1, если результат операции равен 0, в противном случае ZF обнуляется.

51

1.5.SF (Sign Flag) – флаг знака. Устанавливается в 1, если результат арифметической операции является отрицательным, в 0, если результат положительный.

1.6.OF (Overflow Flag) – флаг переполнения. Устанавливается

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

2. Управляющие флаги. К ним относятся:

2.1.TF (Trap Flag) – флаг трассировки. Единичное состояние этого флага переводит процессор в режим пошагового выполнения программы.

2.2.IF (Interrupt Flag) – флаг прерываний. При нулевом состоянии этого флага прерывания запрещены, при единичном – разрешены (о механизме прерываний речь пойдёт в следующей главе).

2.3.DF (Direction Flag) – флаг направления. Используется в строковых операциях для задания направления обработки данных; при единичном состояния строки обрабатываются «справа налево», при нулевом – «слева направо».

Расположение флагов в регистре PSW показано на рис. 23.

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

 

 

 

 

 

OF

DF

IF

TF

SF

ZF

 

 

AF

 

 

PF

 

 

СF

Рис. 23. Схема расположения флагов в регистре PSW

Свободные биты отведены для использования в будущем.

4.2.2. Шинный интерфейс процессора

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

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

52

памяти. Сегменты могут иметь различную длину. Все ячейки, расположенные внутри сегмента, перенумеровываются, начиная с нуля. Адресация ячеек внутри сегмента ведется относительно начала сегмента; адрес ячейки в сегменте называется смещением, или эффективным адресом EA (относительно начального адреса сегмента). Текущий сегмент можно указать с помощью загрузки соответствующего сегментного регистра:

1.CS (Code Segment) – определяет начало текущего сегмента кода, в котором располагаются команды программы. Выборка команды производится с использованием в качестве эффективного адреса содержимого регистра IP (Instruction Pointer), а в качестве адреса сегмента – содержимого CS. Именно регистр IP хранит смещение адреса текущей команды программы.

2.DS (Data Segment) – определяет начало текущего сегмента данных. Ссылки на данные (за некоторым исключением) осуществляются относительно содержимого этого регистра.

3.SS (Stack Segment) – определяет начало текущего сегмента стека. Как правило, все адреса данных, связанных со стеком, задаются относительно содержимого этого регистра.

4.ES (Extended Segment) – определяет начало дополнительного текущего сегмента, который обычно рассматривается как вспомогательный сегмент данных (при межсегментных пересылках).

Узел формирования адреса и регистр команд функционально входят в состав УУ и были рассмотрены выше.

При адресации устройств ввода – вывода (УВВ) сегментные регистры не используются. Взаимодействие с ними процессор осуществляет через специальное адресное пространство – порты. Каждый порт имеет уникальный номер, что соответствует адресу подключённого к нему устройства. Порту устройства соответствует аппаратура сопряжения и два регистра – для обмена данными и управляющей информацией. Схема управления шиной и портами выполняет сле-

дующие функции:

1) формирование адреса порта и управляющей информации для него;

2) приём управляющей информации от порта, информации о готовности порта и его состоянии;

3) организация сквозного канала в системном интерфейсе для передачи данных между портом УВВ и процессором.

53

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

4.3.Архитектурные принципы организации RISC-процессоров

Как отмечается в [2, 14, 15], список команд современного микропроцессора может содержать достаточно большое число команд. Однако не все они используются одинаково часто и регулярно. Это свойство системы команд явилось предпосылкой для развития процессоров с RISC-архитектурой. Основная идея заключалась в сокращении списка используемых команд и вследствие этого – упрощении управляющего блока процессора для организации более быстрого исполнения оставшихся команд за счёт освободившихся при этом ресурсов кристалла.

Первые процессоры с сокращённым набором команд были реализованы в начале 80-х гг. XX века [2]:

1.В 1980 г. в калифорнийском университете г. Беркли (США) под руководством профессоров Давида Паттерсона (David Patterson)

иКарло Секуина (Carlo Sequin) был разработан процессор, который получил название RISC. Были разработаны модели RISC-I, RISC-II, SOLAR.

2.В 1981 г. в университете г. Стэнфорда (США) под руководством Джона Хеннеси (Dohn Hennesy) был спроектирован процес-

сор, получивший название MIPS (Microprocessor Without Interlocked Pipeline Stages – микропроцессор без блокировки конвейера). Более подробно о сути конвейеризации будет рассмотрено в следующем подпункте данной главы.

Позднее обе модели с сокращённым набором команд стали называть RISC-процессорами. Отличительной особенностью этих процессоров является большое количество РОН (порядка 256).

Кратко охарактеризуем основные принципы RISC-архитектуры

[2, 15].

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

54

2.Сокращённый набор действий над операндами, размещёнными

впамяти. Простые способы адресации памяти обеспечивают быстрый доступ к операндам в памяти. Обработка данных, реализуемая при выполнении команд RISC, никогда не совмещается с операциями чтения (записи) памяти (в отличие от многих команд CISC). Обмен операндами между памятью и регистрами выполняется специальными командами загрузки (LOAD) и запоминания (STORE). Большое количество регистров блока РОН позволяет уменьшить число обращений к памяти.

3.Выполнение всех вычислительных операций над данными, раз-

мещёнными только в РОН. Поскольку регистров много, то все скалярные переменные и даже небольшие массивы переменных чаще всего размещаются в регистрах, что позволяет ускорить обработку данных. Использование простых команд упрощает реализацию их конвейерной обработки. В среднем команды RISC выполняются за один такт.

4.Относительно простые схемы управления. Уменьшение спи-

ска команд, использование команд, реализующих только простые

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

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

Согласно [15], в архитектуре RISC-процессоров можно выделить следующие аппаратные блоки, образующие ступени конвейера:

1.Блок загрузки инструкций. Включает в себя следующие составные части: блок выборки инструкций из памяти, регистр инструкций, куда помещается команда после выборки и блок декодирования инструкций. Эта ступень называется ступенью выборки инструкций.

2.РОН. Совместно с блоками управления регистрами они обра-

зуют вторую ступень конвейера, которая отвечает за чтение операн-

55

дов команд. Операнды могут храниться в самой команде или в одном из РОН. Эта ступень называется ступенью выборки операндов.

3.АЛУ. Также эта ступень может содержать аккумулятор с логикой управления, которая, исходя из содержимого регистра инструкций, определяет тип выполняемой микрооперации. При выполнении операций условного и безусловного переходов источником данных может быть также счётчик команд. Данная ступень называется исполнительной ступенью конвейера.

4.Набор из РОН и логики записи. Образуют ступень сохранения данных. Здесь результаты выполнения команд записываются в РОН или основную память.

К RISC-процессорам причисляют микропроцессоры MIPS R4000, R8000, R100000 фирмы «MIPS Technologies Inc.», UltraSPARC I, UltraSPARC II, UltraSPARC III фирмы «Sun», PowerPC фирмы «IBMMotorola», Alpha AXP фирмы «DEC», PA-RISC фирмы «Hewlett Packard», микроконтроллеры фирмы «Microchip».

Несмотря на очевидные преимущества, RISC-процессоры «в чистом виде» не получили широкого распространения на рынке персональных компьютеров; большинство из них используется в качестве центральных процессоров рабочих станций. Однако многие из современных CISC-процессоров, например, Pentium, используют достижения RISC-архитектур, в частности, RISC-ядра, для выполнения вычислительных операций.

Модели RISC-процессоров активно развиваются и совершенствуются. В настоящее время на их основе реализуются коммерчески важные продукты: SPARC- и MIPS-системы.

Более полные сведения о RISC-процессорах, особенностях их архитектуры и функционирования можно найти в [2], специальной литературе и открытых источниках сети Интернет.

4.4.Производительность процессоров и архитектурные способы её повышения

Производительность является одной из наиболее важных характеристик процессора. Согласно [2], в общем случае она определяется количеством вычислительной работы, выполняемой в единицу времени. К важнейшим факторам, влияющим на производительность, относятся тактовая частота, число команд программы, среднее время выполнения отдельной команды. Для упрощённой оценки производи-

56

тельности процессора часто используют показатель, указывающий число команд, выполняемых за секунду. Он определяется как частное от деления тактовой частоты на среднее время выполнения процессором отдельной команды и измеряется в MIPS (Meg Insruction Per Second) для целочисленных задач и MFLOPS (Meg Floating Point Operations Per Second) для вычислений с плавающей точкой. При этом оценки показателя, определяющего число команд, выполняемых за секунду, проводят для операций с регистровыми операндами, не привязываясь к быстродействию основной памяти. Однако этот показатель не учитывает особенности архитектуры конкретных процессоров. Поэтому для сравнительных характеристик различных процессоров используются относительные оценки производительности, для получения которых применяют специальные тестовые программы.

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

1.Увеличение «естественного» параллелизма – повышение разрядности обработки и передачи данных (разрядность процессоров повысилась с 4 до 32 и 64 разрядов).

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

3.Многоэлементная обработка данных – параллельная обработка данных в нескольких операционных блоках (ОУ) процессора.

Способы параллельной обработки могут сочетаться. Например,

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

Рассмотрим более детально два последних направления.

При многофазной обработке, как показано на рис. 24, процесс обработки данных разбивается на несколько стадий (фаз), выполняемых последовательно.

57

Между фазами имеются буферы для хранения промежуточных результатов. После выполнения первой фазы результат запоминается

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

вn раз. Этот способ соответствует конвейерной обработке.

Двх

Ф1

 

 

 

 

 

Двых

 

Ф2

 

Ф3

Фn

 

 

 

 

 

 

 

 

 

 

 

 

Т/n

Рис. 24. Многофазная обработка данных

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

Типовые этапы выполнения команды таковы: 1) выборка коман-

ды IF (Instruction Fetch), 2) дешифрация команды ID (Instruction Decode), 3) чтение операндов RD (Read Memory), 4) исполнение заданной в команде операции EX (Execute), 5) запись результата WB (Write Back). В ходе выполнения команда продвигается по конвейеру, освобождая очередную ступень для следующей команды. Содержимое буферов, которые используются для хранения информации, передаваемой по ступеням конвейера, обновляется в каждом такте по завершению этапа исполнения очередной команды. Промежуточные буферы обеспечивают параллельную независимую работу блоков конвейерной цепочки: в то время, когда последующий блок начинает выполнять этап очередной команды, предыдущий блок может приступать к обработке следующей команды, что демонстрирует рис. 25.

 

 

 

 

Такты работы процессора

 

 

 

Команда i

1

2

3

4

5

6

7

8

9

10

IF

ID

RD

EX

WB

 

 

 

 

 

Команда i+1

 

IF

ID

RD

EX

WB

 

 

 

 

Команда i+2

 

 

IF

ID

RD

EX

WB

 

 

 

Команда i+3

 

 

 

IF

ID

RD

EX

WB

 

 

Команда i+4

 

 

 

 

IF

ID

RD

EX

WB

 

Команда i+5

 

 

 

 

 

IF

ID

RD

EX

WB

Рис. 25. Конвейерная обработка команд

58

Следует отметить, что конвейерная обработка команд не уменьшает время выполнения отдельной команды, которое в конвейерном процессоре остаётся таким же, как и в обычном неконвейерном. Однако благодаря тому, что при конвейерной обработке большая часть вычислительного процесса осуществляется в режиме одновременного выполнения команд, скорость выдачи результатов последовательно выполняемых команд увеличивается пропорционально числу ступеней конвейера. Продолжительность выполнения отдельных этапов исполнения команды в общем случае зависит от типа команды и места размещения операндов. Конвейерная обработка команд наиболее эффективна в том случае, если длительность всех фаз выполнения команды приблизительно одинаковая. К сожалению, обеспечить непрерывную работу конвейера не всегда удаётся из-за различных конфликтов: по ресурсам, по данным, по управлению. Более подробно о конфликтах – в [2, 7].

Процессор, в котором процесс выполнения команды разбивается на 5-6 ступеней, называется обычным конвейерным процессором. Если увеличить количество ступеней конвейера, то каждая отдельная ступень будет выполнять меньшую работу, а, следовательно, содержать меньше аппаратной логики. Благодаря более коротким задержкам распространения сигналов, в каждой отдельно взятой ступени конвейера достигается повышение частоты работы и соответствующее повышение производительности процессора. Процессор, имеющий конвейер существенно глубже 5 – 6-ти ступеней, называется су-

перконвейерным. Например, Pentium II содержит 12, UltraSPARC III – 14, Pentium 4 – 20 ступеней.

Как показано на рис. 26 [2], многоэлементная обработка осуществляется на нескольких параллельно работающих ОУ. Каждый элемент выполняет свою работу, осуществляя обработку порции данных от начала до конца.

Если время выполнения работы на отдельном элементе составляет T и в системе используется n элементов, то при определённой идеализации можно ожидать, что среднее время выполнения такой

59

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]