Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
2. Эволюция способов обработки данных
Обычно в учебной литературе, рассматривая эволюцию средств
вычислительной техники, приводят критерии разбиения ЭВМ на поколения и
их подробные характеристики. Поскольку данный курс лекций рассчитан на
специалистов в области вычислительной техники, способных вести
разработку аппаратных средств обработки данных, обратим более
пристальное внимание на эволюцию способов обработки данных и
механизмов их обеспечивающих.
Разделим все способы обработки данных на два класса - скалярная
обработка и векторная обработка. Исторически всѐ начиналось со
скалярной обработки, которая реализовывалась с помощью базового
варианта неймановской архитектуры. Причѐм первые ЭВМ имели в своѐм
составе арифметическое устройство (АУ) последовательного действия.
Например, Малая электронная счѐтная машина (МЭСМ), созданная под
руководством академика С.А. Лебедева в 1950 г., имела производительность
50 оп/c, последовательное АУ с фиксированной запятой, всего 4
арифметические операции и одну управления при ѐмкости оперативного
запоминающего устройства (ОЗУ) в тридцать одно слово. В 1953 г. была
создана Большая электронная счѐтная машина (БЭСМ), которая обладала
производительностью 12000 оп/c, имела параллельное 39-разрядное АУ с
плавающей запятой, ѐмкость ОЗУ 1024 слова и выполняла 32 различные
операции. БЭСМ имела достаточно развитую систему внешней памяти барабан, ленту, устройства ввода/вывода на перфокартах и печатающее
устройство. Согласно жѐсткой последовательности работы устройств БЭСМ
(см. рис. 2.1 ниже) сначала из ОЗУ считывался код команды, в соответствии с
которой устройство управления организовывало необходимые обращения к
ОЗУ за считыванием первого и второго операнда (скаляра), выдавало
управляющие сигналы для выполнения операции на АУ, затем результат
операции записывался в ОЗУ. Далее считывалась следующая команда. При
обращении к ленте, барабану или внешним устройствам, устройство
управления обеспечивало все операции поиска информации, еѐ считывания и
записи с применением АУ.
Рис 2.1 Временная диаграмма работы устройств БЭСМ
16
На приведѐнной временной диаграмме введены обозначения:
ВД - выборка и дешифрация команды;
А1 - выборка первого операнда;
А2 - выборка второго операнда;
АУ - выполнение соответствующей операции на АУ;
А3 - запись результата операции в ОЗУ;
МЛ - операция записи и считывания с магнитной ленты.
Следующим шагом в развитии скалярной обработки было введение
механизма предварительного просмотра команд. Это позволило совместить
такие этапы выполнения команды как еѐ выборка и декодирование с
исполнением предыдущей команды. Примерами машин с данным
усовершенствованием служат ЭВМ М-40 и М-20, разработанные в Институте
точной механики и вычислительной техники (ИТМ и ВТ) в 1953-58 годах. М40 достигала производительности 40000 оп/с при ѐмкости ОЗУ 4096 40разрядных слов. Для достижения столь высокой производительности были
существенно пересмотрены принципы организации системы управления
ЭВМ. Каждое устройство машины получило своѐ автономное устройство
управления, что позволило реализовать их параллельную работу. На рис. 2.2
ниже представлена временная диаграмма выполнения последовательности
команд на ЭВМ М-40.
Рис. 2.2 Временная диаграмма выполнения последовательности команд на
ЭВМ М-40
17
Как только была доказана высокая эффективность параллельной
работы отдельных устройств ЭВМ, появилась идея введения множества
автономных исполнительных функциональных блоков, каждый из которых
предназначен для выполнения заданных операций. Таким образом, возник
функциональный параллелизм на уровне операций. Примером ЭВМ, в
которой
применѐн
так
называемый
параллельный
процессор
(многофункциональный процессорный модуль, содержащий несколько
исполнительных функциональных блоков), может служить машина CDC6600 (1964 г.). Она содержала 10 операционных исполнительных блоков сумматор с плавающей точкой, умножитель с фиксированной точкой,
сумматор с фиксированной точкой и др., которые параллельно выполняют
соответствующие операции, совместно используя одни и те же регистры под
управлением одного и того же устройства управления (УУ). УУ
поддерживает в определенном состоянии операционные блоки (ОБ) и
регистры, в процессе выполнения команд производит проверку занятости
необходимых ОБ, управляет поступлением требуемых данных из других ОБ
и памяти и передаѐт управление определѐнным ОБ, когда для выполнения
ими команд всѐ готово. При невозможности выполнения команды из-за того,
что данные не готовы, УУ заставляет ждать ОБ, пока выполнение команды
будет возможным.
Таким образом, если длительность операции, задаваемой последующей
командой, меньше и связь между еѐ данными и результатами выполнения
предыдущей команды отсутствует, то результат этой операции окажется в
регистре раньше, чем результат операции предыдущей команды. Так в CDC6600 новая команда поступает в каждом машинном цикле, тогда как
быстродействие ОБ позволяет произвести суммирование с фиксированной
точкой за три машинных цикла, умножение с плавающей точкой - за 10, а
деление с плавающей точкой за 29 машинных циклов. Таким образом, для
того, чтобы темп поступления команд не нарушался, должно быть
предусмотрено определѐнное число операционных блоков соответствующих
типов. Очевидно, что для различных прикладных задач, содержащих
различное сочетание команд (в том числе и различный процент
встречаемости разных команд в программе), эффективность применения
параллельного процессора будет сильно варьироваться от задачи к задаче.
Следует отметить, что принцип управления вычислительным процессом,
используемый в CDC-6600, является одним из прообразов принципов
управления в потоковых машинах с управлением данными. В таких машинах
команды, для которых готовы все данные (операнды), в принципе, могут
выполняться независимо от их места в программе. С другой стороны,
параллельный процессор CDC-6600 является родоначальником самой
современной идеологии построения процессоров с очень длинным командным
словом.
Реализация параллельного процессора в CDC-6600 не была бы столь
эффективной, если бы в нѐм не был применѐн, хоть и в зачаточном виде,
18
конвейер
команд.
Поэтому
рассмотрим
следующий
способ
усовершенствования скалярной обработки - конвейер команд. Конвейер
команд реализует способ обработки неявных векторов. Сущность его состоит
в следующем. (Следует обратить внимание на то, что конвейер команд
является развитием способа предварительного просмотра команд).
Последовательность выполнения каждой команды разделяется в процессоре
на основные этапы:
а) выборка команды (B);
б) декодирование команды (D);
в) вычисление адреса операнда
(A); г) выборка операнда (F);
д) выполнение операции (E); e)
запоминание результата (Z);
Приведѐнное разделение является условным, так как в каждом
конкретном процессоре и число этапов, и сами этапы могут быть
различными, но сама сущность последовательности выполнения команды
остаѐтся неизменной (неймановская архитектура). Наиболее общий приѐм
конвейеризации заключается в том, что для выполнения соответствующей
этапу операции вводятся специализированные исполнительные узлы, и при
этом, когда в конвейере заканчивается исполнение определенного этапа
предыдущей команды, высвобождается соответствующий исполнительный
узел и может быть начато выполнение аналогичного этапа следующей
команды. В идеальной ситуации очередная команда должна поступать на
конвейер в тот момент, когда информация предыдущей команды ушла из
первого узла во второй, что определяет, в нашем случае, шестикратное
повышение производительности, в случае, если все узлы выполняют свои
операции за одинаковое время tэт (этапа). Тогда каждая команда требует
время 6tэт для своего исполнения. На выходе конвейера результаты
выполнения каждой из последовательности команд записываются в память
через tэт. Конвейер команд условно показан на рис. 2.3 ниже.
Тлатентное
B
D
B
A
D
B
F
A
D
E
F
A
Z
E Z
F E
Z
Рис. 2.3 Конвейер команд
Тлатентное – время от запуска конвейера до выдачи первого
результата; 1/Tср – интенсивности выходного потока конвейера;
Tср – среднее время появления результатов работы конвейера.
В табл. ниже приведены данные последовательной реализации этапов
выполнения i-ой команды. При этом строки таблицы отмечены названиями
19
устройств или узлов, выполняющих соответствующий этап выполнения
команды. Так, этапы а), г) и е) реализуются с обращением к памяти, этап б) в устройстве управления (УУ), этап в) - в блоке вычисления адреса (БВА), д)
- в АЛУ.
Таблица.2.1 Последовательная реализация этапов выполнения i-ой команды
Узлы
Память
Последовательность прохождения команды по исполнительным узлам во
времени
А).Выборка
i-ой
команды из
i+1
i+2
i+3
i+4
i+5
б).Декодирование i-ой
команды
i+1
i+2
i+3
i+4
i+2
i+3
i+1
i+2
памяти
УУ
i-1
в).Вычисление
БВА
i-2
i-1
адреса i+1
операнда i-ой
команды
г).Выборка
Память
i-3
i-2
i-1 операнда
АЛУ
i-4
i-3
i-2
i-1
д).Выполнение
i-ой команды
i+1
Память
i-5
i-4
i-3
i-2
i-1
e).Запоминание
результата i-ой
команды
i-ой
команды
Из рассмотрения данной таблицы видно, что при выполнении одной
команды происходит три обращения к памяти. Причѐм для разных команд
число обращений к памяти может варьироваться. Кроме того, если команды
не выполняются одна за другой или не в каждой команде используются все
исполнительные узлы конвейера, а также если этапы выполнения команды
имеют
различную
продолжительность,
оптимальное
повышение
производительности не достигается. Нарушения последовательности
событий имеют место либо при выполнении команд переходов и обращения
к подпрограммам, либо при переключениях контекста. В этих случаях
конвейер нарушается. Конвейер нарушается и в том случае, когда результат
i-ой команды используется как операнд (i+1)-ой. При выполнении коротких
команд некоторые узлы конвейера не используются. К тому же, одни из них
работают медленнее, чем другие. Эти обстоятельства также снижают общую
производительность конвейера. Подробно этот вопрос рассмотрен потому,
что на определѐнном этапе развития вычислительной техники стали видны
20
проблемы, которые необходимо решать для улучшения скалярной обработки
данных.
Для грубой оценки повышения производительности процессора,
имеющего место в результате применения конвейера, можно принять, что
самым медленным участком конвейера является узел, в котором собственно
происходит выполнение операции, предписанной командой. Тогда
повышение производительности в конвейере определяется в первом
приближении отношением суммы средних значений времени работы всех
узлов конвейера к средней величине времени работы самого медленного
участка конвейера, при этом среднее берѐтся для заданной комбинации
команд. В любом конвейере производительность определяется самым
длинным участком.
Нарушение строго последовательного выполнения команд программы
вызывает необходимость очистки конвейера от команд, выполнение которых
началось после команды, нарушившей эту последовательность, и повторного
заполнения конвейера. Доля команд, на которых естественная
последовательность выполнения программы нарушается, обычно составляет
15-20% их общего количества, а вызываемое процентное снижение
производительности превышает вероятность их появления в программе.
Таким образом, из приведѐнных рассуждений видно, что основными
проблемами при организации конвейера являются следующие:
первая проблема - это уменьшение числа обращений к памяти при
выполнении одной команды;
вторая - это решение задачи разбиения цикла исполнения команды на
равные по времени этапы;
третья - это разработка механизмов, предотвращающих большие
потери
производительности
процессора
при
нарушении
последовательности выполнения команд.
Первая проблема в современных процессорах решается за счѐт
введения модульной организации памяти с применением принципа
расслоения памяти, построением иерархической сверхоперативной памяти
(КЭШ 1-го и 2-го уровня), выполняющей функцию буфера между
процессором и оперативной памятью, разделением КЭШа на КЭШ команд и
КЭШ данных. Одним из путей преодоления второй проблемы может быть
уменьшение времени этапа д) собственно выполнения команды, за счѐт его
внутренней конвейеризации. В качестве примера рассмотрим команду
умножения с плавающей точкой двух десятичных чисел 3,8Х10^2 и
9,6Х10^3. Процессор выполняет эту операцию за три шага:
перемножает мантиссы (3,8Х9,6=36,48);
складывает порядки (2+3=5);
нормализует результат, т.е. размещает
десятичную запятую (3,648X10^6).
21
в
необходимом
месте
Если узел, выполняющий операцию умножения с плавающей точкой,
разбить на три самостоятельных узла, каждый из которых будет
предназначен для выполнения одного их трѐх шагов, то во время выполнения
шага 3, узлы, выполняющие шаги 1 и 2 не заняты никакими действиями.
Применение конвейера могло бы позволить исполнительным узлам 1 и 2
обрабатывать следующую пару чисел одновременно с выполнением шага 3
над данной парой. Данный пример характерен ещѐ и тем, что иллюстрирует
параллелизм на уровне операций в команде, т.е. шаги 1 и 2 для одной
команды
могут
выполняться
параллельно
на
самостоятельных
исполнительных узлах. То, в какой мере конвейер может ускорить работу
процессора, зависит от структуры конвейера. Организация конвейера может
быть предназначена и для таких операций, как пересылка данных и их
извлечение из памяти, и для арифметических операций. Если какая-то
операция требует сразу два или более операндов, находящихся в памяти и
извлечение операнда из памяти занимает несколько тактов, то при
конвейерной организации процессор может начинать циклы обращения к
элементам данных на каждом такте.
Решение третьей проблемы возможно с помощью таких приѐмов, как,
например, определение наиболее вероятного изменения последовательности
команд при выполнении команд перехода или выполнения обеих ветвей
программы. И то и другое реализуется с помощью введения специальных
аппаратных средств, например, так называемого блока ветвлений и
организации второго конвейера команд. Процессор с двумя и более
конвейерами команд называется суперскалярным процессором.
Таким образом, мы рассмотрели этап развития скалярной обработки,
который определяет обработку неявных векторов, т.е. таких, которые не
связаны ни с введением в состав системы команд векторных команд, ни с
введением в структуру процессора специальных схем поддержки обработки
векторных данных. Этот этап завершает длительный процесс формирования
структуры процессора, организация которого ориентирована на выборку
операндов из памяти и занесение результатов операций в память. Такие
структуры получили название "память-память".
Промежуточным вариантом между СОД, обладающими структурой
"память-память" и структурой "регистр-регистр", является СОД,
включающая в свой состав специализированные процессоры. К ним
относятся матричные, векторные и ассоциативные процессоры. Суть их
заключается в том, что все они предназначены для обработки явных
векторов. Более подробно эти процессоры будут рассмотрены позднее. Здесь
следует только отметить, что типичными представителями структуры
"регистр-регистр" являются так называемые RISC (Reduced Instruction Set
Computer) процессоры, обладающие таким сокращѐнным набором команд,
что этап исполнения каждой из них в конвейере команд равен одному такту.
В структуру таких процессоров введено большое количество регистров,
22
позволяющее исполнительным устройствам АЛУ работать только с
регистрами.
Особенное место среди процессоров со структурой, близкой к структуре "регистр-регистр", но взявшей лучшие черты и от структуры "памятьпамять", является процессор с очень длинным командным словом (VLIW –
Very Long Instruction Word). Этот тип процессоров будет также рассмотрен
позднее. Но здесь необходимо отметить следующее. Механизм, обеспечивающий реализацию VLIW, основан на синхронном параллельном выполнении нескольких команд одной программы.
Следующим усовершенствованием обработки данных явилось введение асинхронного параллельного выполнения независимых ветвей одной программы или разных программ за счѐт построения многопроцессорной вычислительной системы (МВС) с децентрализованным управлением вычислительным процессом. Собственно изучению МВС и посвящены основные разделы данного курса лекций. Дальнейшее развитие способов обработки данных, на мой взгляд, будет связано с появлением новых архитектурных решений, связанных как с усовершенствованием неймановской архитектуры, так и
построением новых, например, такой, о которой заявил российский учѐный
Б.А. Бабаян.
Ниже приведена обобщѐнная схема эволюции способов обработки данных (см. таблицу ниже).
Таблица. 2.2 Эволюция способов обработки данных
Вновь вводимые способы
обработки данных
Механизмы их реализации
Централизованное управление последоБазовый вариант скалярной обработки вательным
процессом
исполнения
команд программы
Предварительный просмотр команд
Параллельное выполнение выборки и
декодирования команды с
исполнением предыдущей команды
Функциональный параллелизм
Параллельная работа нескольких автономных
исполнительных функциональных узлов
Обработка неявных векторов
Конвейер команд
Суперскалярная обработка
Несколько конвейеров команд
Обработка явных векторов
Синхронное параллельное выполнение
нескольких команд одной программы
Асинхронное параллельное выполнение независимых ветвей одной
программы или разных программ
Централизованное управление параллельным
процессом исполнения векторных команд в
специализированных процессорах
Очень длинное командное слово
Децентрализованное управление множеством
процессоров