logo search
Зимняя сессия 2014 / Вычислительные системы / Курс лекций по ар-реКомп

1.3. Архитектура процессоров вычислительных систем

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

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

Выделим в цикле выполнения команд шесть этапов.

Выборка команды (ВК). Чтение очередной команды из памяти и занесение ее в регистр команды.

Декодирование (ДК). Определение кода операции и способов адресации операндов.

Вычисление адресов операндов (ВА). Вычисление исполнительных адресов операндов в соответствии с указанным в команде способом их адресации.

Выборка операндов (ВО). Извлечение операндов из памяти. Эта операция не нужна для операндов, находящихся в регистрах.

Исполнение команды (ИК). Исполнение указанной операции.

Запись результата (ЗР). Занесение результата в память.

Пусть команды выполняются на конвейерной системе с шестью ступенями, соответствующими шести этапам цикла команды. Предполагается, что каждая команда обязательно проходит все шесть ступеней, все этапы имеют одинаковую длительность, равную одной единице времени, и могут выполняться одновременно. Тогда выполнение девяти команд заняло бы 9  6 = 54 единицы времени, А использование конвейера позволяет снизить это время до 14 единиц.

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

Конфликтные ситуации в конвейере обусловлены следующими причинами:

попыткой нескольких команд одновременно обратиться к одному и тому же ресурсу (структурный риск);

взаимосвязью команд по данным (риск по данным);

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

Суперконвейерные процессоры. Эффективность конвейера находится в прямой зависимости от того, с какой частотой на его вход подаются объекты обработки. Добиться n-кратного увеличения темпа работы конвейера можно двумя путями:

разбиением каждой ступени конвейера на n «подступеней» при одновременном повышении тактовой частоты внутри конвейера также в n раз;

включением в состав процессора n конвейеров, работающих с перекрытием.

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

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

1.3.2. Архитектуры с полным и сокращенным набором команд

Современная технология программирования ориентирована на языки высокого уровня (ЯВУ), главная задача которых — облегчить процесс написания программ. Операции, характерные для ЯВУ, отличаются от операций, реализуемых ма­шинными командами. Эта проблема получила название семантического разрыва и ведет она к недостаточно эффективному выполнению программ. Пытаясь преодо­леть семантический разрыв, разработчики ВМ расширяют систему команд, допол­няя ее командами, реализующими сложные операторы ЯВУ на аппаратурном уров­не, вводят дополнительные виды адресации и т. п. Вычислительные машины, где реализованы эти средства, принято называть ВМ с полным набором команд (CISC — Complex Instruction Set Computer). К типу CISC можно отнести значительную часть ВМ, выпускаемых в настоящее время.

Характерные для CISC способы решения проблемы семантического разрыва, вместе с тем ведут к усложнению архитектуры ВМ, главным образом устройства управления, что, в свою очередь, негативно сказывается на производительности в целом. Кроме того, в CISC очень сложно организовать эффективный конвейер команд, который является одним из наиболее перспектив­ных путей повышения производительности ВМ. Анализ программы, получаемые после компиляции с ЯВУ, позволил обнаружить следующие закономерности.

Реализация сложных команд, эквивалентных операторам ЯВУ, требует увеличения емкости управляющей памяти в микропрограммном устройстве управления. Микропрограммы сложных команд могут занимать до 60% управляющей памяти, в то время, как их доля в общем объеме программы зачастую не превышает 0,2%.

В откомпилированной программе операторы ЯВУ реализуются в виде процедур (подпрограмм), поэтому на операции вызова процедуры и возврата из нее приходится от 15 до 45% вычислительной нагрузки.

При вызове процедуры вызывающая программа передает этой процедуре некоторое количество аргументов. Выяснилось, что в 98% случаев число передаваемых аргументов не превышает шести. Примерно такое же положение сложилось с параметрами, которые процедура возвращает вызывающей программе. Более 80% переменных, используемых программой, являются локальными, то есть создаются при входе в процедуру и уничтожаются при выходе из нее.

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

Детальный анализ результатов исследований привел к пересмотру традиционных архитектурных решений, следствием чего стало появление архитектуры с сокращенным набором команд (RISC – Reduced Instruction Set Computer).

Главные усилия в архитектуре RISC направлены на построение эффективного конвейера команд, то есть такого конвейера, в котором все команды извлекаются из памяти и поступают в ЦП на обработку в виде равномерного потока. При этом ни одна команда не должна находиться в состоянии ожидания, а ЦП должен оставаться загруженным на протяжении всего времени. Кроме того, идеальным считается вариант, при котором любой этап цикла команды выполняется в течение одного тактового периода.

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

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

В сокращенном списке команд должны оставаться те, которые используются наиболее часто. Исследования показали, что 80-90% времени выполнения типовых программ приходится на относительно малую часть команд (10-20%).

К наиболее часто используемым действиям относятся пересылка данных, арифметические и логические операции. Основная причина, препятствующая сведению всех этапов цикла команды к одному тактовому периоду - потенциальная необходимость доступа к памяти для выборки операндов и/или записи результатов. Следует максимально сократить число команд, имеющих доступ к памяти. Это положение отображается в следующих двух принципах, которые должны быть добавлены к описанию архитектуры RISC:

доступ к памяти во время исполнения осуществляется только командами “Чтение“ и “Запись”;

все операции, кроме “Чтение“ и “Запись”, имеют тип “регистр- регистр“.

Для упрощения выполнения большинства команд и приведения их к типу “регистр- регистр“ требуется снабдить ЦП значительным числом регистров общего назначения. Большое число регистров в регистровом файле ЦП позволяет обеспечить временное хранение промежуточных результатов, используемых как операнды в последующих операциях, и ведет к уменьшению числа обращений к памяти, ускоряя выполнение операций. Минимальное число регистров, равное 32, принято как стандарт де-факто большинством производителей RISC-компьютеров.

Концепция RISC-компьютера сводится к следующим положениям.

Выполнение всех (или, по крайней мере, 75% команд) за один цикл.

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

Малое количество команд (не более 128).

Малое количество форматов команд (не более 4).

Малое число способов адресации (не более 4).

Доступ к памяти только посредством команд “Чтение“ и “Запись”

Все команды, за исключением команд “Чтение“ и “Запись”, используют внутрипроцессорные межрегистровые пересылки.

Устройство управления с “жесткой” логикой.

Большой ( не менее 32, до 500 и более) процессорный файл регистров общего назначения.

Сравнивая достоинства и недостатки CISC и RISC, невозможно сделать однозначный вывод о неоспоримом преимуществе одной архитектуры над другой.

Достоинствами RISC-архитектуры являются:

сравнительно простая структура устройства управления, которое занимает в RISC II не более 10% площади кристалла. При этом остается больше места для других узлов ЦП и для дополнительных устройств: кэш-памяти, блока арифметики с плавающей точкой, части основной памяти, блока управления памятью, портов ввода/вывода.

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

К недостаткам RISC-архитектуры следует отнести:

принципиальный недостаток — сокращенное число команд: на выполне­ние ряда функций приходится тратить несколько команд вместо одной в CISC. Это удлиняет код программы, увеличивает загрузку памяти и трафик команд меж­ду памятью и ЦП. Исследования показывают, что RISC-программа в сред­нем на 30% длиннее CISC-программы, реализующей те же функции;

хотя большое число регистров дает существенные преимущества, само по себе оно усложняет схему декодирования номера регистра, тем самым увеличивается время доступа к регистрам;

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

1.3.3. Суперскалярные процессоры

Поскольку возможности по совершенствованию элементной базы уже практичес­ки исчерпаны, дальнейшее повышение производительности ВМ лежит в плоско­сти архитектурных решений. Как уже отмечалось, один из наиболее эффективных подходов в этом плане — введение в вычислительный процесс различных уровней параллелизма. Ранее рассмотренный конвейер команд — типичный пример такого подхода. Тем же целям служат и арифметические конвейеры, где конвейеризации подвергается процесс выполнения арифметических операций. Дополнительный уровень параллелизма реализуется в векторных и матричных процессорах, но толь­ко при обработке многокомпонентных операндов типа векторов и массивов. Здесь высокое быстродействие достигается за счет одновременной обработки всех ком­понентов вектора или массива, однако подобные операнды характерны лишь для достаточно узкого круга решаемых задач. Основной объем вычислительной на­грузки обычно приходится на скалярные вычисления, то есть на обработку оди­ночных операндов, таких, например, как целые числа. Для подобных вычислений дополнительный параллелизм реализуется значительно сложнее, но, тем не менее, возможен и примером могут служить суперскалярные процессоры.

Суперскалярным на­зывается центральный процессор (ЦП), который одновременно выполняет более чем одну скалярную команду. Это достигается за счет включения в состав ЦП не­скольких самостоятельных функциональных (исполнительных) блоков, каждый из которых отвечает за свой класс операций и может присутствовать в процессоре в нескольких экземплярах. Так, в микропроцессоре Pentium III блоки целочислен­ной арифметики и операций с плавающей точкой дублированы, а в микропроцессо­рах Pentium 4 и Athlon — троированы. Структура типичного суперскалярного про­цессора включает в себя шесть блоков (рис. 1.2.): выборки команд, декодирования команд, диспетчеризации команд, распределения команд по функциональным модулям, блок исполнения и блок обновления состояния.

Блок выборки команд извлекает команды из основной памяти через кэш-память команд. Этот блок хранит несколько значений счетчика команд и обрабатывает команды условного перехода.

Блок декодирования расшифровывает код операции, содержащийся в извлеченных из кэш-памяти командах. В некоторых суперскалярных процессорах, например, в микропроцессорах фирмы Intel, блоки выборки и декодирования совмещены.

Блоки диспетчеризации и распределения взаимодействуют между собой и реализуют в суперскалярном процессоре управление трафиком. В обоих блоках находятся очереди декодированных команд.

Очередь блока распределения часто рассредоточивается по нескольким самостоятельным буферам (накопителям команд), предназначенным для хранения команд, которые уже декодированы, но еще не выполнены. Каждый такой накопитель связан со своим функциональным модулем (ФМ), поэтому число накопителей обычно равно числу ФМ. Если в процессоре используется несколько однотипных ФМ, то им придается один общий накопитель. Блок распределения в каждом цикле своей работы проверяет каждую команду в

своих очередях на наличие всех необходимых для ее выполнения операндов и после этого начинает выполнение команд в соответствующем функциональном модуле.

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

Рис. 1.2. Организация параллельного выполнения команд

в суперскалярном процессоре

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

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

Лекция 2

Классификация вычислительных систем

Вопросы:

1. Классификация вычислительных систем по Флинну

2. Вычислительные системы класса SIMD

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

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

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

а)

б)

Команды

Команды

в)

г)

Рис. 1.3. Классификация вычислительных систем по Флинну: а - SISD; б - MISD; в - SIMD; г - MIMD

Основной вопрос - что заложить в основу классификации- может решаться по-разному, в зависимости от того, на решение какой задачи данная классификация направлена. Так, часто используемое разделение компьютеров на персональные ЭВМ, рабочие станции, мини-ЭВМ, большие универсальные ЭВМ, минисупер-ЭВМ и супер-ЭВМ, позволяет примерно оценить стоимость компьютера.

Общепринятой является классическая систематика Флинна.

Классификация базируется на понятии потока, под которым понимается последовательность команд или данных, обрабатываемая процессором. На основе числа потоков команд и потоков данных Флинн выделяет четыре класса архитектур: SISD,MISD,SIMD,MIMD (рис. 1.3).

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

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

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

  2. Введением конвейера команд.

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

MISD (multiple instruction stream / single data stream) - множественный поток команд и одиночный поток данных. Определение подразумевает наличие в архитектуре многих процессоров, обрабатывающих один и тот же поток данных. Однако не существует такого класса задач, в которых одна и та же последовательность данных подвергалась бы обработке по нескольким разным программам. По этой причине в чистом виде такая схема до настоящего времени не реализована.

SIMD (single instruction stream / multiple data stream) - одиночный поток команд и множественный поток данных. В архитектурах подобного рода сохраняется один поток команд, включающий векторные команды. Это позволяет выполнять одну арифметическую операцию сразу над многими данными - элементами вектора. Способ выполнения векторных операций не оговаривается, поэтому обработка элементов вектора может производиться либо процессорной матрицей, либо с помощью конвейера.

MIMD (multiple instruction stream / multiple data stream) - множественный поток команд и множественный поток данных. Этот класс предполагает, что в вычислительной системе есть несколько устройств обработки команд, объединенных в единый комплекс и работающих каждое со своим потоком команд и данных.

Укажем типичных представителей каждого из этих классов.

В SISD, как уже отмечалось, входят однопроцессорные последовательные компьютеры типа VAX 11/780. Однако, следует отметить, что в этот класс можно включить и векторно-конвейерные машины, если рассматривать вектор как одно неделимое данное для соответствующей команды. В таком случае в этот класс попадут и такие системы, как CRAY-1, CYBER 205, машины семейства FACOM VP и многие другие.

Представителями класса SIMD считаются матрицы процессоров: ILLIAC IV, ICL DAP, Goodyear Aerospace MPP, Connection Machine 1. В таких системах единое управляющее устройство контролирует множество процессорных элементов. Каждый процессорный элемент получает от устройства управления в каждый фиксированный момент времени одинаковую команду и выполняет ее над своими локальными данными. В этот же класс можно включить классические процессорные матрицы и векторно-конвейерные машины, например, CRAY-1. В этом случае каждый элемент вектора надо рассматривать как отдельный элемент потока данных.

Класс MIMD чрезвычайно широк, поскольку включает в себя всевозможные мультипроцессорные системы: Cm*, C.mmp, Denelcor HEP, BBN Butterfly, Intel Paragon, CRAY T3D и многие другие. Интересно то, что если конвейерную обработку рассматривать как выполнение множества команд (операций ступеней конвейера) не над одиночным векторным потоком данных, а над множественным скалярным потоком, то все рассмотренные выше векторно-конвейерные компьютеры можно расположить и в данном классе.

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

Однако такой классификации присущи некоторые недостатки. В частности, некоторые архитектуры, например dataflow и векторно-конвейерные машины, четко не вписываются в данную классификацию.

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

Недостатком можно считать также наличие пустого класса (MISD).

Интересно упомянуть о принципиально ином направлении в развитии компьютерных архитектур - машинах потоков данных. В машинах потоков данных могут одновременно выполняться сразу много команд, для которых готовы операнды. Некоторые элементы этого подхода нашли свое отражение в современных суперскалярных микропроцессорах, имеющих много параллельно работающих функциональных устройств и буфер команд, ожидающих готовности операндов. В качестве примеров таких микропроцессоров можно привести HP РА-8000 и Intel Pentium Pro.

Укажем на другую возможную классификацию вычислительных систем.

Рассмотрим в качестве примера компьютер Advanced Scientific Computer фирмы Texas Instruments (TI ASC). В основном режиме он работает с 64-х разрядным словом, причем все разряды обрабатываются параллельно. Арифметико-логическое устройство имеет четыре одновременно работающих конвейера, содержащих по восемь ступеней. Такая организация дает 4x8=32 бита в каждом битовом слое, и, значит, компьютер TI ASC может быть представлен в виде (64,32).

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

Разрядно-последовательные пословно-последовательные (n=m=1). В каждый момент времени такие компьютеры обрабатывают только один двоичный разряд. Представителем данного класса служит давняя система MINIMA с естественным описанием (1,1).

Разрядно-параллельные пословно-последовательные (n > 1 , m = 1). Большинство классических последовательных компьютеров, принадлежит к данному классу: IBM 701 с описанием (36,1), PDP-11 (16,1), IBM 360/50 и VAX 11/780 - с описанием (32,1).

Разрядно-последовательные пословно-параллельные (n = 1 , m > 1). Как правило, вычислительные системы данного класса состоят из большого числа одноразрядных процессорных элементов, каждый из которых может независимо от остальных обрабатывать свои данные. Типичными примерами служат STARAN (1, 256) и MPP (1,16384) фирмы Goodyear Aerospace, прототип известной системы ILLIAC IV компьютер SOLOMON (1, 1024) и ICL DAP (1, 4096).

Разрядно-параллельные пословно-параллельные (n > 1, m > 1). Большая часть существующих параллельных вычислительных систем, обрабатывая одновременно mn двоичных разрядов, принадлежит именно к этому классу: ILLIAC IV (64, 64), TI ASC (64, 32), C.mmp (16, 16), CDC 6600 (60, 10), BBN Butterfly GP1000 (32, 256).

Недостатки предложенной классификации достаточно очевидны и связаны со способом вычисления ширины битового слоя m.

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

Не определяется важное обстоятельство - за счет чего компьютер может одновременно обрабатывать более одного слова: множественности функциональных устройств, реализации в них конвейеров или же какого-то числа независимых процессоров. Если в системе N независимых процессоров имеют каждый по F конвейерных функциональных устройств с длиной конвейера L, то для вычисления ширины битового слоя надо просто найти произведение данных характеристик.

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