Основные понятия в области вычислительных систем
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
1. Основные понятия в области вычислительных систем
1.1 Введение. Основные определения
Термин «Вычислительная система» (ВС) появился в 60-е годы, когда
понятие «Электронная вычислительная машина» (ЭВМ) уже не отражало с
одной стороны всего многообразия средств вычислительной техники, а с
другой стороны не различало их по степени сложности. Поэтому интуитивно
можно считать, что вычислительная система - это объект, относящийся к
средствам вычислительной техники (СВТ) и имеющий более сложную
организацию, чем ЭВМ. К сожалению, до настоящего времени скольконибудь удовлетворяющего всех разработчиков СВТ определения ВС не
установлено. Однако существует необходимость хотя бы с методической
точки зрения различать объекты, относящиеся к понятию ЭВМ и к понятию
ВС, при этом понимая, что чѐткой грани, разделяющей эти объекты провести
невозможно.
Попытаемся внести смысловой оттенок в определение ВС через
разъяснение нашего понимания таких терминов, как «система», «структура»,
«архитектура», толкование которых само по себе вызывает много споров у
специалистов по вычислительной технике. В данной области техники термин
«система» используется чрезвычайно широко и имеет множество смысловых
оттенков. Мы будем понимать под системой объект, представляющий собой
единое целое, предназначенный для выполнения определенных функций и
состоящий из множества связанных между собой элементов. Под элементами
могут пониматься как аппаратные, так и программные средства.
Следовательно, такие объекты, как ЭВМ и ВС, являются системами,
предназначенными для автоматизированной обработки данных и
представляющие собой совокупность программных и аппаратных средств.
Для их обозначения используется понятие «система обработки данных»
(СОД). На рис. 1.1 представлены виды систем обработки данных, в том числе
ВМ (синоним ЭВМ) – вычислительная машина, ВК – вычислительный
комплекс.
СОД
ВМ (ЭВМ)
ВС
ВК
Вычислительная
сеть
Рис. 1.1 Виды систем обработки данных
Структура СОД обычно определяется в виде совокупности трѐх
категорий: множество аппаратных элементов, входящих в состав системы,
множество связей, объединяющих эти элементы, и алгоритм
функционирования системы. В контексте проектирования аппаратных
4
средств вычислительной системы термин «структура» используется для
описания принципа действия, конфигурации и взаимного соединения
устройств системы.
Архитектура СОД может быть определена как совокупность тоже трѐх
категорий: сущность информационных потоков, например, существование
двух потоков – команд и данных, характер взаимодействия
информационных потоков, например, жесткая последовательность команд
управляет обработкой данных, способ обработки данных, например,
последовательный или параллельный. Следовательно, понятие архитектуры
отображает обобщенное определение системы с точки зрения существующих
в ней информационных потоков и способа их обработки.
Общность архитектуры разных ЭВМ и ВС обеспечивает их
совместимость с точки зрения пользователя. Реализация конкретной
архитектуры ЭВМ и ВС может быть различной: использование разных по
физической природе элементов, применение оригинальных решений при
разработке устройств системы, еѐ структуры, что приводит, например, к
различию систем по стоимости, производительности, но не меняет принципы
обработки данных. В настоящее время можно выделить три вида понятий,
связанных с термином «архитектура»: фоннеймановская архитектура,
усовершенствованная фоннеймановская архитектура, нетрадиционная
архитектура.
Первый вид определяет класс объектов с архитектурой, которая
основана на использовании двух информационных потоков - команд и
данных, с чисто последовательным характером обработки данных под
управлением заранее составленной последовательности команд (программы).
Понятие «усовершенствованная фоннеймановская архитектура» связано с
реализацией различных методов распараллеливания потока обработки
данных с целью увеличения производительности системы, но не нарушая
принципа программного управления. В этом случае можно говорить о том,
что этот вид архитектуры отличается от первого только увеличением числа
потоков команд и данных в любых сочетаниях. Естественно, в зависимости
от числа потоков команд и данных, примененного метода распараллеливания
и характера управления множествами потоков «усовершенствование»
архитектуры может идти различными путями, приводя к появлению новых
типов архитектур в рамках данного вида.
Понятие «нетрадиционная архитектура» связано, в частности, с так
называемыми потоковыми машинами, которые отличаются новым
принципом управления вычислительным процессом и разделяются на два
типа архитектур: управляемые потоком данных (нет счетчика команд;
устройство управления сложное, обычно выполненное на АЗУ; программы
нет как таковой) и управляемые запросами. При этом, по аналогии с
фоннеймановской архитектурой, организация вычислений может быть
«последовательной» (здесь этот термин используется только с точки зрения
аналогии, так как по своей сути потоковые машины строятся с
5
использованием всех видов параллелизма, поэтому последовательные
потоковые машины можно рассматривать как вырожденный случай) и
параллельной.
Таким образом, определяя понятие «вычислительная система» с точки
зрения архитектуры, можно сделать вывод о том, что этот класс СОД должен
обладать либо усовершенствованной фоннеймановской архитектурой, либо
нетрадиционной с параллельной организацией вычислений. При этом ЭВМ
обладают либо фоннеймановской архитектурой, либо нетрадиционной с
последовательной организацией вычислительного процесса.
Для того, чтобы дать более точное определение ЭВМ и ВС,
необходимо определить их место среди таких объектов СОД, как ВК и
вычислительная сеть. Для этого дадим следующие определения, введѐнные
профессором кафедры ВМСиС Дерюгиным А.А [1] при участии автора.
1.Процессор, центральный процессор, центральное процессорное
устройство (обозначение на схемах P,CP,CPU) – основная часть ЭВМ,
предназначенная для обработки данных и управления этой обработкой в
соответствии с последовательностью команд программы. Такой процессор по
умолчанию является скалярным. В состав процессора входят:
а) арифметико-логическое устройство (ALU), состоящее из одного или
нескольких блоков обработки числовых данных с фиксированной и
плавающей запятой, блока логических операций, сдвига данных и др.;
б) устройства управления (CU – control unit), содержащее счетчик
команд (IP – instruction pointer), регистр команд (инструкций,RGI), часто
буфер команд, блок преобразования кода операций в коды микроопераций,
т.е. в последовательности управляющих сигналов, соответствующих
микрооперациям, как для управления работой процессора, так и для
управления другими устройствами ЭВМ;
в) блок регистров, включая адресуемые регистры общего назначения
(регистровую память RGM), регистры управления, в том числе регистр
флагов (признаков) и др., а также неадресуемые регистры (дескрипторы и
др.);
г) интерфейсный блок (IU), предназначенный для реализации связей
процессора с другими устройствами ЭВМ. В состав этого блока входит, в
частности, узел управления памятью (менеджер памяти), предназначенный
для формирования из кода адреса операнда, указанного в команде,
физического адреса ячейки памяти, в которой хранится требуемый операнд.
1.1.
1.2.
Виды процессоров
Суперскалярный процессор (SSP) – процессор, допускающий
параллельное (одновременное) выполнение нескольких команд
программы. Такой процессор может содержать несколько конвейеров
обработки данных.
Векторный процессор (VP) – процессор, содержащий специальные
блоки обработки данных, предназначенные для выполнения, как
6
скалярных операций, так и операций над векторами в соответствии с
векторными командами, входящими в состав системы команд
процессора, а также блок векторных регистров (VRG).
1.3. Матричный процессор (MP) – многопроцессорное устройство,
предназначенное для выполнения операций над векторами и
матрицами.
1.4. Ассоциативный процессор (AP) – специализированный процессор,
реализованный на базе ассоциативного запоминающего устройства и
предназначенный для одновременного выполнения операций над
массивами данных последовательно по разрядам этих данных.
2. Кэш-память (CM) – быстродействующая буферная память
небольшой ѐмкости, в которой хранятся команды и данные, необходимые
для использования в течение текущего интервала времени. Содержимое
CM дублирует содержимое основной (большой) памяти (BM – base
memory) и меняется в процессе работы ЭВМ автоматически аппаратным
способом. Обмен данными между CM и BM производится строками
(блоками). Обычно это 16…64 байта. В состав CM входят: собственно
кэш-память и местное устройство управления, включая таблицу, в котрой
хранятся адреса тех блоков, которые находятся в кэш-памяти в данный
момент. В зависимости от «удаления» от процессора различают CM
первого и второго уровней (L1и L2, L –level). Кэш-память первогог
уровня может быть общей для команд и данных или раздельной для
команд и данных. Кэш-память второго уровня, как правило, общая для
команд и данных.
3. Процессорный модуль (PM), вычислительный модуль –
устройство, содержащее процессор, кэш-память или, например,
локальную память (LM).
4. Внутренняя память (IM – internal memory) – память,
предназначенная для приѐма, хранения и выдачи информации,
непосредственно используемой (адресуемой) процессором. IM _ это
RGM+CM+BM.
5. Внешняя память (EM – external memory) – память,
предназначенная для длительного хранения больших объѐмов
информации. Для использования этой информации еѐ необходимо
переместить во внутреннюю память средствами операционной системы.
Внутренняя память является буферной памятью по отношению к
внешней памяти.
6. Многопроцессорный модуль (MPM) – функциональное
устройство, содержащее вычислительные модули, соединѐнные с кэшпамятью второго уровня. Из PM и MPM могут быть построены
многопроцессорные вычислительные системы (МВС) с двухуровневой
или трѐхуровневой общей внутренней разделяемой памятью.
7
7. Общая или разделяемая память МВС – это внутренняя память, к
ячейкам которой может обращаться любой процессор, входящий в состав
МВС.
8. Локальная память (LM) процессора, входящего в состав МВС, это внутренняя память, к ячейкам которой может обращаться только
данный процессор. Адресные пространства для общей и локальной
памятей не пересекаются.
9. Коммутатор (SW) МВС – аппаратные средства, обеспечивающие
взаимодействие между компонентами МВС. В состав коммутатора в
явном или неявном виде входит арбитр.
В состав СОД могут входить так называемые вспомогательные
процессоры. К ним относятся управляющие процессоры,
обеспечивающие реализацию функций, служебных по отношению к
самой СОД, сервисные процессоры для выполнения функций
контроля и диагностики СОД, процессоры ввода-вывода,
процессоры телеобработки данных и т.д.
Совокупность любых процессоров любого количества, оперативной
памяти и каналов ввода-вывода назовѐм центральной частью (ЦЧ) СОД.
СОД, включающую в себя одну центральную часть, в состав которой
входит один процессор обработки данных любого вида и возможно один или
несколько вспомогательных процессоров р, обеспечивающих максимально
эффективную работу первого, а также периферийные устройства, назовѐм
электронной вычислительной машиной (ЭВМ).
СОД, включающую в себя одну ЦЧ, но имеющую более одного
процессора обработки данных любого вида, периферийные устройства,
назовѐм вычислительной системой (ВС).
СОД, включающую в себя несколько ЦЧ, объединенных по каналам
ввода-вывода, и общие для них периферийные устройства, назовѐм
вычислительным комплексом (ВК).
Множество ЭВМ, ВС и ВК объединѐнных линиями связи, назовѐм
вычислительной сетью.
Настоящее учебное пособие посвящено, в основном, отдельным
вопросам, связанным с вычислительными системами с усовершенствованной
фоннеймановской архитектурой. При анализе таких систем для
количественной оценки их эффективности обычно используется такой
показатель, как производительность. Приведем наше толкование данного
показателя. При этом будем различать два взаимосвязанных вопроса: какое
качество системы отображает это понятие и в чѐм можно измерить это
качество. Отвечая на эти вопросы, можно определить производительность
как характеристику вычислительной мощности системы, определяющую
количество выполненной работы за единицу времени. Таким образом, если
имеем в виду вычислительную систему, то под работой можно понимать
решение задач. В этом случае производительность есть число задач,
выполненных
системой
в
единицу
времени.
Следовательно,
8
производительность системы будет различной для задач различных классов.
Существует большое число методов оценки производительности ВС,
связанных с тем или иным классом задач, однако главные из них основаны на
использовании специально созданных тестов. Для того, чтобы оценить
производительность системы, не привязываясь к классу задач, иногда
используют такой показатель, как быстродействие. Хотя этот показатель
отражает только техническую сторону вычислительной системы, а иногда
характеристику только основного элемента системы - процессора, он
достаточно широко распространен. Если в первых ЭВМ быстродействие
измерялось в количестве коротких операций в секунду, например, типа
«регистр-регистр» или «сложение с фиксированной точкой», то современные
ЭВМ и ВС характеризуются числом выполняемых операций с плавающей
точкой в секунду, которые получили название флопов (FLOPS). Для
специализированных ВС используются другие единицы измерения, например
характерные для них операции, транзакции и т.д.
Данный курс лекций поможет студентам ответить на такие вопросы
как: зачем нужны ВС всѐ большей и большей производительности, как
видоизменяются структура и архитектура процессора и самой ВС с целью
повышения эффективности использования их аппаратных средств, какими
свойствами должно обладать их программное обеспечение, какие новые идеи
существуют в области разработки высокопроизводительных вычислительных
систем. И как показывает опыт развития средств вычислительной техники,
вопросов, на которые пока нет ответов, появляется всѐ больше и больше.
1.2 Понятие Фон-неймановской архитектуры
Джон фон Нейман (Янош 1903-1957) родился в Будапеште, а с 1930 г.
жил и работал в США. По профессии математик и физик. Предложил
принцип обработки данных и архитектуру программного автомата, который
получил название неймановской машины. Построение ЭВМ, основанной на
этом принципе, базируется на идее автоматизации вычислений под
управлением программы (последовательность инструкций) и использует две
фундаментальные мысли.
Первая из них состоит в том, что программа вводится через те же
внешние устройства и хранится в той же памяти, что и исходные данные. Это
обеспечивает оперативную перестройку машины с одной задачи на другую
без внесения каких0либо изменений в схему машины и еѐ коммутацию, делая
машину
универсальным
вычислительным
инструментом.
Термин
универсальная ЭВМ широко использовался в последующие годы.
Вторая состоит в том, что инструкции, составляющие программу
вычислений, закодированы в виде чисел и по форме ничем не отличаются от
тех чисел, с которыми оперирует машина. Это дает возможность при
выполнении некоторой инструкции прочесть другую или, в частном случае,
ту же инструкцию как число, переслать еѐ в арифметическое устройство,
произвести там с ней некоторые операции и вернуть на своѐ место в
запоминающем устройстве (памяти) в преобразованном виде. Когда в
следующий раз устройство управления обратится к данной ячейки памяти за
инструкцией, а не за операндом, то исполняться будет уже не исходная, а
преобразованная инструкция. Таким образом, при исполнении некоторой
программы может одновременно происходить еѐ преобразование, либо
формирование новой программы. Следовательно, можно сказать, что
неймановская машина по своей сути обладает элементами интеллектуальной
системы.
Прежде чем рассматривать последующие
усовершенствования
неймановской машины, напомним принципы еѐ действия. Основными
элементами базового варианта неймановской машины, представленного на
рис. 1.2, являются:
программный счѐтчик (ПС);
регистр команд (РК);
схема управления (СУ);
арифметико-логическое устройство (АЛУ);
аккумулятор (А);
схемы представления чисел в дополнительном коде с регистром сдвига
(СПЧ);
память инструкций (команд) и данных (П);
регистр адреса (РА);
регистр данных (РД);
10
Рис. 1.2 Базовый вариант неймановской машины
совокупность вентильных групп (В), на которые поступают
управляющие сигналы из СУ;
внутренняя машинная магистраль (М).
Процесс обработки данных в такой машине чисто последовательный и
выполнение каждой команды разбивается на строго определенный ряд
следующих друг за другом действий. Если за точку отсчѐта принять такое
состояние машины, при котором в ПС установлен адрес следующей
команды, то эти действия (шаги) следующие:
а). по адресу команды, находящемуся в ПС, происходит обращение к П
с использованием РА, после чего сама команда оказывается в РД;
b). код команды заносится из РД в РК;
c). в случае команды условного (безусловного) перехода, формирование
номера следующей команды и занесение его в ПС;
d). в случае исполнительной команды, обращение в память за операндом по
адресу, расположенному в коде команды или по адресу, вычисленному
специальной схемой;
e). занесение операнда из РД в АЛУ;
f). занесение операнда из А в АЛУ;
g). занесение результата операции из СПЧ в А.
11
1.3 Парадигмы Фон-неймановской архитектуры.
Существуют две парадигмы, на которых базируется так называемая
неймановская архитектура.
1) Входные данные и инструкции поступают по одному и тому же каналу и
хранятся в одной и той же памяти.
2)Управление выполнением последовательности команд осуществляется
программным счѐтчиком (ПС).
Сама команда, как это было отмечено выше, выполняется то же в виде
последовательности шагов, число которых в современных ЭВМ может
отличаться от приведѐнного примера, но суть их последовательности при
выполнении одной команды остаѐтся неизменной.
Следовательно, главное определение неймановской машины – это
последовательная машина.
1.4 Особенности Фон-неймановской архитектуры
Анализ особенностей функционирования неймановской архитектуры
показывает, что чисто последовательный характер обработки данных
приводит к тому, что в каждый момент времени (применительно к
процессору момент времени должен рассматриваться как машинный такт)
функционирует только определѐнная часть аппаратуры, выполняющая
соответствующие действия в рамках одного из шагов выполнения команды.
Остальная часть аппаратуры простаивает. Именно этот вывод и до сих пор
служит для широкого поля деятельности в совершенствовании технических
характеристик систем обработки данных. С другой стороны, анализируя
прикладные программы, созданные для реализации на ЭВМ, можно
согласиться с выводами ученых, например, Прангишвилли И. В., которые
утверждают, что любая программа содержит такую часть, которую можно
распараллелить. Именно в этом состоит основное зерно, лежащее в основе
усовершенствования неймановской архитектуры.
Рассматривая в целом такую СОД как ЭВМ с неймановской
архитектурой, можно привести такие основные еѐ проблемы. Здесь под
проблемами понимаются еѐ узкие места, не позволяющие эффективно
использовать аппаратно-программные средства ЭВМ.
1. Программные коды (команды) вместе с данными хранятся в одной
и той же памяти.
Это приводит к тому, что в процессе выполнения одной команды
необходимо несколько раз обратится последовательно к одной
памяти, что значительно замедляет процесс обработки данных.
2. Линейное
пространство
адресов,
которым
присваиваются
порядковые номера 0, 1, 2, 3... .
12
Это свойство ограничивает эффективность применения памяти с
модульной организацией.
3. Каждая программа выполняется последовательно, начиная с самой
первой команды, если нет специального указания (команды перехода).
Это свойство ограничивает возможности использования характера
параллельности выполняемых программ.
4. Последовательное
выполнение
обработки
в
неймановской
архитектуре приводит к последовательному изменению состояния
машины путѐм изменения содержимого памяти. Это явление носит
название побочного эффекта. Поскольку вычисления выполняются с
побочным эффектом, то результат операции нужно каждый раз
записывать в память.
5. Отсутствие различий в машинном представлении данных и команд.
В этом случае, в частности, возникают проблемы, усложняющие
разработку программного обеспечения. Наличие разрыва между
понятиями операций и их объектов на языке программирования
высокого уровня и понятиями операций и их объектов,
определяемыми архитектурой компьютера, называется семантическим
разрывом.
6. Отсутствие
различий
в
семантике
данных. Иначе
говоря, если на языке высокого уровня можно описать различные
типы данных, то в неймановской архитектуре разницы в представлении
типов данных нет. Поэтому каждый раз, когда необходимо выполнить
те или иные операции над данными нужно
либо программно, либо аппаратно проконтролировать их тип.
Какие существуют способы для "смягчения" влияния узких мест
рассматриваемой архитектуры на еѐ производительность?
Наиболее эффективный способ - это увеличение пропускной способности
тракта между процессором и памятью. Сюда входит введение многоуровневой памяти, в том числе КЭШ памяти и разделение еѐ на КЭШ-команд
и КЭШ-данных, применение многопортовой памяти, использование
принципа расслоения при модульной организации памяти, применение
механизмов реализации виртуальной памяти.
Что касается линейного адресного пространства, то его преобразование
в структурированное пространство памяти было предложено г. Илиффом в
1972 г. Его идея состоит в том, чтобы с помощью некоторого алгоритма
добавлять ко всем элементам памяти информацию, показывающую атрибут
этого элемента. Эта дополнительная информация получила название tag (тегпризнак). Машины, основанные на использовании этого признака,
называются теговыми машинами. В таких машинах различение типов
данных поддерживается аппаратно, так как каждый тип данных
характеризуется своим тегом. Это в свою очередь приводит к тому, что
однотипные команды, отличающиеся только типом операндов, никак не
13
различаются. Следовательно, число команд в системе команд таких машин
сокращается.
Примером машины со структурированной памятью является SWARDмашина, предложенная г. Майерсом. В SWARD-машине данные
представлены структурными элементами, называемыми ячейками, которые
состоят из поля тега и поля данных. Память разбита на 4-разрядные единицы.
Ниже на рис. 1.3 приведены различные типы ячеек.
Рис.1.3 Типы ячеек SWARD-машины
Таким образом, применение тегов в том числе устраняет "отсутствие
различий в семантике данных" на уровне их машинного представления.
Для улучшения производительности при использовании конвейера
вводится блок предсказания ветвлений. Данный блок аппаратно
подсчитывает число итераций для арифметических циклов и определяет
момент следующего перехода. В случае перехода по признаку возможно
лишь вероятностное предсказание. При этом собирается статистика
предыдущих переходов.
Устранение побочного эффекта более сложная проблема, решение
которой основано на создании архитектуры машины, реализующей так
называемый функциональный язык (ФЯ). ФЯ предполагает отсутствие
побочного эффекта (отсутствует оператор присваивания) и не влечѐт за собой
последовательное считывание и исполнение команды. Примерами ФЯ
являются языки LISP и SALS. Программа состоит из множества равенств,
14
определяющих функции и описаний приложений этих функций при вводе
данных. Например, в языке SALS функция fact, вычисляющая факториал,
определяется следующим образом:
fact n where fact 0 = 1
fact n = n*fact(n-1)
Следовательно, программа на ФЯ представляется некоторой функцией
F, а выполнение программы определяется как результат действия этой
функции (еѐ оценка) F(x) по отношению к входу x.
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 Эволюция способов обработки данных
Вновь вводимые способы
обработки данных
Механизмы их реализации
Централизованное управление последоБазовый вариант скалярной обработки вательным
процессом
исполнения
команд программы
Предварительный просмотр команд
Параллельное выполнение выборки и
декодирования команды с
исполнением предыдущей команды
Функциональный параллелизм
Параллельная работа нескольких автономных
исполнительных функциональных узлов
Обработка неявных векторов
Конвейер команд
Суперскалярная обработка
Несколько конвейеров команд
Обработка явных векторов
Синхронное параллельное выполнение
нескольких команд одной программы
Асинхронное параллельное выполнение независимых ветвей одной
программы или разных программ
Централизованное управление параллельным
процессом исполнения векторных команд в
специализированных процессорах
Очень длинное командное слово
Децентрализованное управление множеством
процессоров