litceymos.ru 1

2. ОБЩИЕ ОСОБЕННОСТИ ЭВМ


Как было определено ранее, простейшая однопроцессорная последовательная ЭВМ содержит следующие основные функциональные устройства: процессор (центральный процессор - ЦП), память (основная память), устройства ввода-вывода (внешняя память и периферийные устройства).

Основные принципы так называемой фон-неймановской архитектуры и многих последующих заключаются в следующем:

1) одна последовательно адресуемая основная память, т.е. линейное одномерное
устройство хранения команд и данных;

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

3) вид и назначение данных определяется не самими данными, а логикой программы.

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

2.1. Некоторые особенности архитектур процессоров

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

АЛУ - это один или несколько сумматоров и блоков умножения, группа регистров для хранения данных и результатов. Состав АЛУ может быть расширен за счет использования специализированных устройств, предназначенных для ускорения выполнения логических операций, быстрого умножения, с двигателей, десятичных сумматоров, конверторов и т.п.

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


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

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


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

  2. вертикальное или функционально-ориентированное микропрограммирование. Код микрокоманды содержит отдельные поля, определяющие группы микроопераций, одновременная совместная активизация которых не допускается. Активизируемые микрооперации определяются дешифрацией кодов в этих полях.

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

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

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


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

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

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

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

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

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

2.2. Способы адресации

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

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


Кратко рассмотрим некоторые из используемых способов адресации:

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


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

  2. Регистровая адресация. Она по сути сходна с прямой адресацией, только в данном случае вместо ячейки памяти определяется регистр.

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

  4. Индексная адресация. В этом случае обращение к словам памяти осуществляется по известному смещению от регистра, т.е. указатель ячейки памяти находится в регистре, а значение смещения относительно этой ячейки - в самой команде.

Статистический анализ режимов адресации показывает, что в большинстве случаев используется ограниченное число режимов адресации. Так, опубликованный анализ режимов адресации в машине VAX-11 указывает на то, что некоторые режимы почти не используются, статистическая частота их не превышает 1%. Наличие большого числа режимов адресации бесспорно усложняет и увеличивает аппаратуру управления. Однако одним из доводов в пользу расширенного числа режимов адресации служит упрощение программ и компиляторов языков программирования.



2.3. Система машинных команд


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

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

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

Симметричность. Это свойство рассматривается как симметрия в отношении адресуемых объектов в коде команды. Симметричность имеет некоторое отношение к общности. Например, некоторые операции машин могут допускать операции типа RR (регистр-регистр) или память-регистр (MR), но не допускать операции типа память-память (ММ). Или, например, в операции вычитания уменьшаемое может использовать любые регистры, а вычитаемое меньшее число регистров. Нарушение симметричности также приводит к усложнению компиляции, при которой приходится генерировать дополнительные команды.


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

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

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

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

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

В структуру процессора вводится специальный регистр, представляющий "табло регистров", в котором каждому из регистров общего назначения соответствует определенный бит, признак того, что этот регистр используется при выполнении операции. Табло регистров позволяет следить за использованием регистров и за зависимостью по данным. При выполнении очередной команды процессор устанавливает бит, соответствующий используемому регистру. Если следующие команды не используют этот регистр, то процессор имеет возможность выполнить их до того, как завершится предыдущая команда. В противном случае производится переупорядочивание команд программы, т.е. выполняются последующие команды, исполнение которых не зависит от занятых регистров. Другой подход реализован в Pentium Pro и заключается в применении отображения регистров. Этот подход требует увеличения числа физических регистров, так в Pentium Pro, в отличие от архитектуры Х86, в которой предусмотрено только 8 регистров общего назначения, их число увеличено до 40. При использовании отображения регистров происходит преобразование ссылок на логические (архитектурные) регистры в ссылки на набор физических регистров. При этом, если какой-либо команде требуется использовать регистр, процессор ставит в соответствие этому логическому регистру один из физических регистров. Если же другая команда обратится к тому же логическому регистру, процессор для предотвращения конфликта поставит ему в соответствие другой физический регистр.


Рассмотренные подходы позволяют разрешить проблему "ложных зависимостей", (совместное использование регистров).

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

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

Обычно компилятор транслирует оператор ветвления в блоки машинного кода, расположенные последовательно в потоке. В зависимости от условий ветвления процессор выполняет один из этих блоков и проскакивает через остальные. Механизм динамического исполнения старается предсказать результат вычисления условия ветвления, анализируя предысторию исполнения блоков кода, и предварительно выполняет предсказанный блок кода. При этом в случае ошибки теряется впустую много тактов работы процессора, что наиболее болезненно проявляется при конвейерной обработке. Сами блоки обычно достаточно малы - две или три команды, а ветвление встречается в коде в среднем через каждые шесть команд. Такая организация вычислений осложняет параллельное исполнение кодов программ. В процессоре IA-64 компиляторы используют технологию "отмеченных команд" для устранения потерь производительности из-за неправильных предсказаний переходов. Когда компилятор обнаруживает оператор ветвления в исходном коде, он исследует ветвление, определяя стоит ли его "отмечать". Если такое решение принято, компилятор помечает все команды, относящиеся к каждому пути ветвления уникальным идентификатором, называемым предикатом. Когда в процессе выполнения кода программы встречаются "отмеченные ветвления", процессор начинает выполнять все ветви. После того, как будет определена "истинная" ветвь, процессор сохраняет необходимые результаты и сбрасывает остальные. Не все ветви могут быть отмечены, так как при определенных ситуациях применение этой технологии может привести к тому, что потрачено будет больше времени, чем сэкономлено. В то же время, если компилятор не "отметил" ветвления, процессор IA-64 действует практически так же, как и многие современные процессоры, пытаясь предсказать путь ветвления и т.д. Испытания показали, что такая технология позволяет устранить более половины ветвлений в типичных программах, и, следовательно, уменьшить более, чем в два раза, число возможных ошибок в предсказании.


2.4. Направления развития машинных команд

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

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

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

В развитии машинного языка можно выделить два направления: системно- у проблемно-ориентированные расширения.

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

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

Другая тенденция в развитии машинных команд характеризуется вынесением из структуры кода команды информации, прямо ссылающейся на используемые при ее выполнении аппаратные средства. С ростом объема адресуемой памяти для управления адресацией вводятся средства ссылок. Адрес, определяющий место положения адресуемого объекта, заменяется его условным номером или псевдоименем в системе. Так, в IBM-совместимых компьютерах используется механизм аппаратной реализации ссылок к сегментам памяти. При этом удается полностью изолировать способ обращения к данным от конкретной физической организации памяти и приблизить систему адресации к описанию подобного обращения к переменным, используемым в языках программирования. Это еще один шаг, способствующий сокращению семантического разрыва.


Второе основное направление заключается в использовании ЭВМ с ограниченным (сокращенным) набором команд. Увеличение количества команд привело к росту сложности процессоров. Количество различных вариантов выполнения команд стало достигать нескольких сот. Однако из всего множества команд программист, как правило, использует не более 70%. В большинстве программ, написанных на языках высокого уровня, при их переводе в машинный код используется ограниченный набор машинных команд. Кроме того, при работе ЭВМ типичным является использование более чем 80°/ времени лишь 20% команд (так называемое правило "80,20"). ЭВМ тратит большую часта времени не на выполнение сложных команд, а на простые арифметико-логические операции, ветвления и хранения. Таким образом в набор команд этой архитектуры включаются в основном простые и наиболее часто встречающиеся операции.

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


  1. Введение описания типов данных:

  2. Увеличение независимости объектов машинных языков от физических ресурсов.

3.Введение отображения в машинном языке крупных типов данных, таких как вектор,
матрица и т.п.

В соответствии с рассмотренными направлениями и способами расширения и развития системы машинных команд, получили распространение и выделяются следующие архитектуры ЭВМ:

CISC (Complete Instruction Set Computer);

RISC (Reduced Istruction Set Computer);

VLIW (Very Long Instruction Word);

транспьютерная;

потоковые ЭВМ.