Процессоры, основные понятия

 

 


Микропроцессор1 (МП) – это функционально законченная, конструктивно обособленная интегральная микросхема (ИМС), в состав которой входят арифметико-логическое устройство (АЛУ), устройство управления (УУ), а также элементы памяти (микропроцессорная память - МПП). Как правило, выполняется в виде ИМС большой (БИС) или сверхбольшой (СБИС) степени интеграции.

Под архитектурой процессора понимается его программная модель, т.е. программно-видимые свойства [5]. На данный момент наиболее известной архитектурой является архитектура IA-32 (Intel Architecture 32 bit) для процессоров x86. Архитектура IA-64 активно используется в процессорах фирмы Intel, продаваемых для настольных решений2 начиная примерно с начала 2007 г.

Под микроархитектурой понимается внутренняя реализация программной модели [5]. Следует отметить, что сложные инструкции процессоров x86 раскладываются на микрооперации RISC-ядром процессора, хотя сами x86 являются типичными представителями CISC-процессоров3. Микроархитектуру определяют, фактически, способы разложения инструкций на микрооперации. Четкую границу между CISC и RISC процессорами проведем ниже.

Развитие средств микропроцессорной техники идет по пути постоянного увеличения производительности. Такой подход требует увеличения скорости работы ИМС, что заставляет разработчиков постоянно увеличивать частоты, на которых они работают. Однако такой подход рано или поздно наступит на грабли в виде скорости света, с которой распространяются электроны, равной, как известно 300 000 км/ч. Поэтому инженеры, занимающиеся разработкой процессоров, идут по пути создания решений, использующих параллельные вычисления. Существует два вида параллелизма – на уровне команд и на уровне процессоров [6].

Известно, что скорость выполнения программы обусловлена необходимостью вызова из памяти нужной команды, т.к. на эту операцию требуется затратить некоторое время. Начиная с 1959 года (идею впервые использовала IBM при разработке Stretch), разработчики стали использовать принцип упреждающей выборки, когда команда выбиралась из памяти заранее. Этот принцип подразумевает прохождение двух этапов: вызов команды и ее выполнение [6].

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

Пример 3.1. Работа конвейера, состоящего из пяти стадий [6]



а)



С1

1

2

3

4

5

6

7

8

9

С2


 

1

2

3

4

5

6

7

8

С3


 


 

1

2

3

4

5

6

7

С4


 


 


 

1

2

3

4

5

6

С5


 


 


 


 

1

2

3

4

5


 

1

2

3

4

5

6

7

8

9

Время →

б)

Рис. 3.1. Конвейер из пяти стадий (а): состояние каждой стадии в зависимости от количества пройденных циклов (б)

В данном примере количество циклов равно 9. На рис. 3.1, б показана работа конвейера во времени. В течение цикла 1 стадия С1 выбирает из памяти команду 1. В течение цикла 2 стадия С2 осуществляет декодирование команды 1, а С1 уже выбирает из памяти команду 2. В течение цикла 3 стадия С3 вызывает операнды для команды 1, стадия С2 декодирует команду 2, а стадия С1 вызывает команду 3. В течение цикла 4 стадия С4 выполняет команду 1, С3 вызывает операнды для команды 2, С2 декодирует команду 3, а С1 вызывает команду 4. И наконец, во время цикла 5 стадия С5 записывает результат выполнения команды 1 в регистр, С4 выполняет команду 2, С3 выбирает операнды для команды 3, С2 декодирует команду 4, а С1 выбирает команду 5.

ПРИМЕЧАНИЕ

Если предположить, что у конвейера на рис. 3.1 время цикла равно 2 нс, то время прохождения одной командой всего конвейера равно 10 нс. Тогда резонно предположить, что быстродействие4 этой машины равно 100 млн. операций в секунду. Однако во время каждого цикла фактически завершается выполнение одной новой команды, поэтому машина может выполнить 500 млн. операций в секунду!

Одна голова хорошо, а две лучше. Это касается и количества конвейеров. На рис. 3.2 изображен процессор с двойным конвейером. Для обоих конвейеров общим является стадия С1, которая выбирает из памяти сразу по две команды. Выполнение команд на двух конвейерах сопряжено с рядом трудностей: команды не должны конфликтовать при использовании ресурсов (например, регистров) и результат выполнения одной команды не должен зависеть от другой команды. Для контроля используется либо дополнительное аппаратное обеспечение, либо за этим следит компилятор.



Рис. 3.2. Двойной конвейер из пяти стадий



Рис. 3.3. Суперскалярный процессор с пятью функциональными блоками

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

ПРИМЕЧАНИЕ

Первый процессор Pentium содержал два конвейера, состоящих из пяти стадий. Pentium II уже имел сходную структуру с изображенной на рис. 3.3

Нетрудно заметить, что если стадия С3 (рис. 3.3) и стадия С4 имеют циклы одинаковой продолжительности, то вся эффективность от «суперскалярности» исчезает. В действительности ситуация обстоит еще хуже, т.к. большинству функциональных блоков стадии С4, требуется значительно больше времени, чем занимает один цикл, но за счет применения, например, нескольких АЛУ быстродействие значительно увеличивается [6].


Лекция добавлена 28.02.2013 в 03:17:07