МПС
Архитектура
и структура МП (Лекция)
ПЛАН ЛЕКЦИИ 1. Типы команд микропроцессоров 2. Структурный параллелизм микропроцессоров 1. Типы команд микропроцессоров
В ходе эволюционного развития архитектур процессоров в
состав системы команд вводились и, в силу преемственности программного
обеспечения, закреплялись сложные команды, которые по мнению разработчиков
соответствовали решаемым задачам. Мерой этого соответствия чаще всего был объем
двоичного кода программы, так как минимизация длины программы была равнозначна
минимизации времени исполнения. Команды бывают разных типов: "регистр,
регистр -> регистр", "память, память -> память",
"регистр -> память" и др. Сложные команды модифицируют содержимое
групп регистров и ячеек памяти, и для их реализации при приемлемых затратах
оборудования, как правило, применяется микропрограммирование. Команды называются скалярными, если входные операнды и
результат являются числами (скалярами). Команды называются векторными, если входные операнды
и, возможно, результат являются вектором (массивом) чисел, а для преобразования
данных массива (вектора) используется одна векторная команда. Примером
векторной команды служит команда, при выполнении которой умножаются два
очередных элемента двух массивов, далее произведение суммируется с содержимым
некоторого заданного регистра, после чего модифицируются адреса памяти для
доступа к двум очередным элементам массивов. Указанная последовательность
действий повторяется заданное число раз по счетчику, определенному в теле
команды. Само появление векторных команд обусловлено
стремлением ускорить обработку массивов данных за счет исключения затрат
времени на выборку и дешифрацию команд обработки, одинаковых для всех компонент
входных массивов. Однако
использование векторных команд требует подготовки программистом
векторизованного кода программ, что, вообще говоря, эквивалентно разработке
параллельных программ. При сохранении последовательных программ для ускорения
обработки применяются суперскалярные процессоры, в которых за счет параллельной
работы функциональных устройств процессора в одном такте вырабатывается
несколько скалярных результатов. 2. Структурный параллелизм
микропроцессоров
Повышение производительности микропроцессоров
достигается за счет увеличения тактовой
частоты, совершенствования параллельной и конвейерной обработки данных, а также
уменьшения времени доступа к памяти. Современные микропроцессоры содержат
десять и более обрабатывающих устройств, каждое из которых представляет собой
конвейер. Эффективная загрузка параллельно функционирующих конвейеров
обеспечивается либо аппаратурой процессора, либо компилятором, на вход которого
поступают программы на традиционном последовательном языке программирования,
либо совместно аппаратурой и компилятором. В компиляторах используется изощренная техника
извлечения параллелизма из последовательных программ. Аппаратура микропроцессоров
ориентирована на выделение более простых форм параллелизма, в том числе
естественного. Стремление использовать присущий большинству программ
естественный параллелизм вычисления целочисленных адресных выражений и
собственно обработки данных в формате с плавающей точкой привело к появлению
разнесенных архитектур (decoupled architecture). В первом приближении, микропроцессор с разнесенной
архитектурой, как показано на рис.10, состоит из двух связанных подпроцессоров,
каждый из которых управляется собственным потоком команд. Условно эти подпроцессоры называются адресным
А-процессором и исполнительным Е-процессором. А- и Е-процессоры имеют
собственные наборы регистров АО, А1, ... и ХО,Х1,..., соответственно и наборы
команд. А-процессор выполняет все адресные вычисления и формирует обращения к
памяти по чтению и записи. А-процессор является обыкновенным целочисленным
процессором, поэтому он способен выполнять произвольные целочисленные
преобразования, не связанные с вычислением адресов. Е-процессор реализует
вычисления с плавающей точкой. Данные, извлекаемые из памяти, используются либо в
А-процессоре, будучи помещенными в FIFO
очередь АА, либо помещаются в FIFO очередь,
называемую АЕ очередью, для отсылки в Е-процессор. Когда Е-процессору требуются
данные из памяти, он берет их из очереди АЕ. Если очередь пуста, то Е-процессор
задерживается до поступления данных, что решает вопросы синхронизации работы А
и Е-процессоров. Если Е-процессор выработал данное, которое должно быть
отправлено в память, то он помещает его в FIFO очередь ЕА. При записи данных в память после вычисления адреса
А-процессор сразу отправляет адрес в FIFO
очередь AW адресов записи в память, не дожидаясь, пока данные
поступят в очередь ЕА. А-процессор группирует пары, выбирая первые элементы
очередей ЕА и AW и отправляя эти пары в память. Естественно, если одна из
очередей или обе пусты, то отсылка в память приостанавливается. При чтении данных А-процессор отправляет адреса в
память с указанием очередей АА или АЕ, в которые должны быть считаны данные из
памяти. Рис.
Микропроцессор с разнесенной архитектурой Разнесенная архитектура позволяет достигать при
скалярной обработке производительности, характерной для векторных процессоров,
за счет предвыборки данных из памяти и автоматической развертки нескольких
последовательных витков цикла в А-процессоре. Проблемы расщепления программы на
программы для А- и Е-процессоров решаются на уровне компилятора или специальным
блоком-расщепителем. Важным системным аспектом разнесенной архитектуры
служит интерфейс между процессором и памятью посредством транзакций чтения и
записи. Это позволяет расположить между процессором и памятью произвольную
коммутационную среду, что подводит логический базис под концепцию построения
многопроцессорных систем. |
||