- •Вычислительные машины, системы и сети
- •Тема 1. Введение в предмет
- •Умножение чисел в дополнительных кодах
- •Операция умножения над обратными кодами сомножителей
- •Выполнение операции сложения над числами с плавающей запятой
- •6. Стадии выполнения команды и способы адресации
- •Тема 2. Оcновные архитектурные понятия Лекция 4. Определение понятия "архитектура"
- •Архитектура системы команд. Классификация процессоров (cisc и risc)
- •Лекция 5. Методы адресации и типы данных Методы адресации
- •Типы команд
- •Команды управления потоком команд
- •Типы и размеры операндов
- •Тема 3. Функциональная структура и организация процессора
- •Структура конвейера процессора р6
- •Процессор Pentium Pro
- •Характеристики процессоров р6
- •Характеристики процессоров amd
- •Форматы чисел блоков sse
- •Лекция 12: Сравнительный анализ процессоров с различной архитектурой Особенности процессоров с архитектурой sparc компании Sun Microsystems
- •Процессоры pa-risc компании Hewlett-Packard
- •Процессор mc88110 компании Motorola
- •Особенности архитектуры Alpha компании dec
- •Особенности архитектуры power компании ibm и PowerPc компаний Motorola, Apple и ibm
- •Архитектура power
- •Эволюция архитектуры power в направлении архитектуры PowerPc
- •Тема 4. Структурные модели современных системных плат
- •Тема 5. Организация памяти в эвм
- •2. Постоянные и полупостоянные запоминающие устройства
- •3. Оперативные запоминающие устройства
- •4. Характеристики обмена и типы оперативной памяти
- •7. Сегментация памяти
- •8. Страничная организация памяти
- •Тема 6. Организация ввода-вывода
- •Системные и локальные шины
- •Устройства ввода/вывода Основные типы устройств ввода/вывода
- •2.1. Шины микропроцессорной системы
- •2.2. Циклы обмена информацией
- •2.3. Прохождение сигналов по магистрали
- •Тема 2. Оценка производительности вычислительных систем
- •Тема 5. Многопроцессорные системы Лекция 18: Классификация систем параллельной обработки данных
- •Многопроцессорные системы с общей памятью
- •Многопроцессорные системы с локальной памятью и многомашинные системы
- •Тема 9. Организация микроконтроллеров
- •4.1. Классификация и структура микроконтроллеров
- •4.2. Процессорное ядро микроконтроллера
- •Тема 10. Однокристальные микроконтроллеры серии pic
- •5.1. Основные особенности микроконтроллеров серии pic
- •5.2. Микроконтроллеры подгруппы pic16f8x
- •Тема 11. Проектирование устройств на микроконтроллерах
- •6.1. Разработка микропроцессорной системы на основе микроконтроллера
- •Тема 12. Системы высокой готовности и отказоустойчивые системы
- •Подсистемы внешней памяти высокой готовности
- •Требования, предъявляемые к системам высокой готовности
- •Конфигурации систем высокой готовности
- •Требования к системному программному обеспечению
- •Требования высокой готовности к прикладному программному обеспечению
- •Требования к сетевой организации и к коммуникациям
- •Базовая модель vax/vms кластеров
- •Критерии оценки кластеров Gartner Group
- •Кластеры Alpha/osf компании dec
- •Unix-кластеры компании ibm
- •Кластеры at&t gis
- •Кластеры Sequent Computer Systems
- •Системы высокой готовности Hewlett-Packard
- •Кластерные решения Sun Microsystems
- •Отказоустойчивые решения Data General
- •Список сокращений
6. Стадии выполнения команды и способы адресации
В ЭВМ используются одно-, двух- или трехадресные команды [16]. Самой быстродействующей и наиболее гибкой для программирования является трехадресная команда вида
КОП |
А1 |
А2 |
А3 |
В структуре этой команды имеется поле кода операции (КОП) и три адреса операндов А1, А2, А3. С помощью этой команды легко программируются многие операции. Например, сложение Z = X + Y можно запрограммировать так: в поле КОП закодировать адрес микропрограммы сложения, находящейся в постоянной памяти УУ, в А1 закодировать адрес операнда Х, в А2 – Y, а в А3 разместить адрес, куда направить результат сложения. Недостатком трехадресных команд (трехадресных ЭВМ) являются значительные затраты оборудования на размещение адресов А1, А2, А3 и наибольшая разрядность шины данных.
Для устранения этих недостатков используют двух- или одноадресные команды вида
КОП |
А1 |
А2 |
|
КОП |
А0 |
При двухадресных командах один из адресов фиксируют. Например, результат операции передается по адресу (на место) первого операнда. При этом значение первого операнда, естественно, стирается. При одноадресной команде для выполнения операций фиксируют и место нахождения первого операнда, используя, например, специальный регистр – аккумулятор (ЕАХ) – или верхнюю ячейку (вершину) стековой памяти. После выполнения команды, если она не последняя, процессор извлекает следующую, которая обычно располагается по более старшему адресу (естественная адресация). Для определения ее адреса используется счетчик команд (IP или EIP), значение которого увеличивается на i =1, 2, … каждый раз до адреса следующей команды естественного порядка. Если при ветвлениях в алгоритме возникает необходимость перейти к выполнению команды, отличной от естественного порядка, используются одноадресные управляющие команды условного или безусловного перехода. При безусловном переходе содержимому EIP всегда присваивается поле адреса команды А0. При командах условного перехода анализируется состояние соответствующего флага регистра EFLAGS, который обрабатывается устройством управления по коду поля КОП. В зависимости от значения флага EIP может быть присвоено А0 или EIP + i. Укрупненная схема командного управления ЭВМ показана на рис. 1.3. Для считывания операндов и команд в процессор кроме прямой адресации, при которой поле адреса указывает на ячейку памяти (регистр МП), где хранится операнд или команда, может использоваться также непосредственная, косвенная или ассоциативная адресация.
При непосредственной адресации операнд I располагается в самой команде вида
КОП |
I |
. |
Этот операнд (константа) может быть использован операционным блоком (АЛУ) для вычислений, и не требуется дополнительного обращения к ОЗУ.
При косвенной адресации в команде располагается адрес ячейки или регистра МП, где хранится адрес операнда. При ассоциативной адресации в поле адреса размещается ключ (признак, тэг) поиска или ассоциация и для поиска используются микрооперации сравнения информации “по содержанию”, а не дешифрация адреса в ОЗУ.
В новых МП система команд постоянно совершенствуется и дополняется, сохраняя программную совместимость с младшими моделями. В настоящее время в i486, Pentium принята структура команды, показанная на рис. 6, и длина команды может достигать 16 байт при 32-битной адресации.
Обязательной для каждой команды является наличие поля КОП размерностью в 1 или 2 байта. Все другие поля команды могут отсутствовать или расширяют функции адресации или назначение команды. Так, наличие перед командой одного из префиксов группы изменяет ее функции, определенные по умолчанию, следующим образом:
- REP (в группе REPE / REPZ, LOCK, REPNE / REPNZ) – распространяет выполнение операции (КОП) на все элементы цепочки;
- AS – изменяет разрядность 16 (32)-битного эффективного адреса, обрабатываемого командой, на 32 (соответственно в скобках на 16)-битный адрес;
- OS – изменяет разрядность операнда в 16 (32) бит на разрядность в 32 (16) бит;
- SO – указывает новый сегментный регистр для команды из группы возможных.
Рис. 5. Схема командного управления ЭВМ
7 6 |
3 |
0 |
|
7 6 |
3 |
0 |
mod |
reg/коп |
r/m |
|
SS |
index |
Base |
Префиксы
-
REP
AS
OS
SO
КОП
ModR/M
SIB
Disp
I
0;1
0;1
0;1
0;1
1;2
0;1
0;1
0;1;2;4
0;1;2;4
Число байт
Число байт
Рис. 6. Обобщенная структура команды
Префиксы могут располагаться перед командой в любом порядке, только по одному из группы. В следующих двух байтах команды Mod R / M и SIB кодируются дополнительные сведения о коде операции и способе вычисления адресов операндов. Поля этих байтов имеют следующие назначения:
- mod и r / m в различных комбинациях определяют 8 регистровых (mod = <11>) и 24 индексных типа адресации;
- reg / коп определяет либо номер одного из 8 регистров РОН, либо расширяет на 3 бита поле КОП;
- r / m определяет либо номер РОН, в котором находится операнд, либо с полем mod кодирует 32 типа адресации.
В случае 32-битной адресации байт Mod R / M содержит информацию о необходимости использования дополнительных кодов из байта SIB, состоящего из следующих полей:
- SS – масштабный множитель (00 – х1, 01 – х2, 10 – х4, 11 – х8);
- index – поле 3-битного кода номера РОН, который является индексным регистром;
- base – поле номера РОН, который содержит базовый адрес.
За байтом Mod R / M или SIB команды часто следует поле смещения Disp. Это поле указывает на “удаление” операнда от адреса, заданного в базовом регистре команды. В зависимости от кода поля mod (00, 01, 10) величина смещения занимает 1, 2 или 4 байта.
В поле I команды иногда размещается непосредственный операнд, который в зависимости от КОП может располагаться в 8 / 16 / 32 битах последнего поля команды.
Данные, участвующие в вычислениях, обычно располагаются в ОЗУ. Для задания места нахождения операндов наиболее широко в адресных ЭВМ используются непосредственная, прямая и косвенная адресации.
При непосредственной адресации 8 / 16 / 32-битный операнд размещается в поле I команды и после извлечения команды из ОЗУ он сразу участвует в операции. Так, команда сложения add ax, 8AD5h в поле I содержит двухбайтный код <1000101011010101>, который МП использует для сложения с содержимым регистра АХ. Недостатком этой адресации является то, что команда работает с жестко закрепленными данными (константой).
При прямой адресации к памяти в команде закодирован адрес ячейки ОЗУ, в которой находится операнд. При обращении к ОЗУ поле адреса Аi команды (плюс адрес сегмента) считывается в регистр адреса и затем передается на ША. Код из ША дешифрируется и возбуждает соответствующую ячейку ОЗУ для взаимодействия с ШД. Так, при чтении операнд из ячейки передается на ШД, затем в кэш-1 и АЛУ для участия в выполнении КОП команды. При записи результат операции по ШД передается в ячейку (рис. 4). Недостатком прямой (абсолютной) адресации к памяти является значительная разрядность адресной части команды, которая увеличивается с увеличением числа ячеек ОЗУ и удваивается при двухадресной команде. В качестве примера команды с абсолютной адресацией может быть команда вида mov eax, [21051944], которая загружает аккумулятор содержимым ячейки 21051944h. В этой команде адрес 21051944h увеличивает ее длину на 32 бита. Разновидностью прямой являются неявная, регистровая и адресация ввода / вывода.
Отличие регистровой адресации от прямой к памяти заключается в том, что в поле Аi кодируется короткий адрес регистра РОН, в котором находится операнд. При этом длина команды уменьшается и МП не обращается к ОЗУ за операндом, тем самым уменьшается время выполнения операции. Однако перед выполнением команды операнд должен находиться уже в соответствующем РОН. Для организации регистровой адресации РОН EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI присваиваются соответственно трехбитные адреса 000, 001, …, 111 и если в поле reg располагается, например, адрес регистра <010>, то это означает, что команда выполняет операцию с участием операнда регистра EDX. Например, команда с регистровой адресацией mov edx, ecx двухадресная, передает содержимое ECX в РОН EDX.
При неявной адресации адресное поле отсутствует. Операнд располагается в устройстве, которое неявно задается полем КОП. После дешифрации этого поля микропрограмма УУ указывает место операнда (например, регистра AL, однобайтной команды ааа). Команды неявной адресации имеют наименьшую длину, но узко специализированы.
Для обмена с внешними устройствами любая ЭВМ с МП i86, …, i486, Pentium имеет определенное число буферных регистров - портов, через которые и осуществляется процесс ввода / вывода информации. Каждому порту присваивается свой адрес в диапазоне от 0 до 64К-1. Для обмена с портами предназначены команды ввода in или вывода out, где в качестве приемника или источника зафиксирован EAX / AX / AL. В этих командах используется прямая адресация ввода / вывода, например, in ax, 22 - загрузить AX содержимым регистра из 22h порта или косвенная адресация ввода / вывода с обращением за адресом порта в регистр DX (out dx, ax - вывести AX в регистр порта, адрес которого занесен в DX). Заметим, что команды ввода / вывода кроме поля КОП имеют еще второй байт адреса порта или один байт КОП с использованием для адресации содержимого регистра DX. Причем номера портов выравниваются по границам передаваемых данных. Так при 32-битных операциях они нумеруются 0, 4, 8, …, 252, …, 65532.
Существенным недостатком прямой адресации является необходимость закрепления операндов за определенными устройствами и номерами ячеек (статическое распределение памяти). С целью расширения возможности хранения данных во всех областях ОЗУ, организации контроля и защиты от неправильного использования областей и мультизадачности вычислений в ЭВМ введены динамический режим распределения памяти, косвенная и относительная адресации операндов (рис. 6). Для этого вся адресуемая область разбивается на сегменты и страницы. Каждому сегменту присваивается начальный адрес (база) и верхний адрес (база + предел). В дальнейшем адресация в командах осуществляется относительно базы сегмента (эффективный адрес ЕА). Такая адресация называется базовой. В МП 8086 / 88 для хранения базовых адресов используются сегментные регистры CS, DS, SS, ES.
В процессорах i486, Pentium базовые адреса и пределы сегментов хранятся в дескрипторах, которые размещаются в теневых сегментных регистрах (CS), (DS), (SS), (ES), (FS), (GS).
Базовый адрес массива и при необходимости индекс операнда массива хранятся в РОН МП. Причем индекс массива можно масштабировать путем умножения его на величину 21, 22, 23. Масштабирование эквивалентно микрооперациям сдвига содержимого индексного регистра влево на величину L1, L2, L3. Тогда в общем случае линейный адрес операнда с использованием косвенной адресации вычисляется по формуле
ЛА = ВС + (Х 2<SS> + (ВМ +D)).
Содержимое полей команды дешифрируется и устанавливается значение масштаба <SS>, номеров регистров РОН, где хранятся базовый адрес массива ВМ и индекс Х массива. Затем базовый адрес суммируется с содержимым смещения Disp поля команды ВМ + D. Одновременно величина в Х сдвигается на 0, 1, 2, 3 разряда влево в соответствии со значением <SS>. Затем величина индексного регистра Х суммируется с ВМ + D и тем самым вычисляется эффективный адрес операнда, т. е. его удаление от начала сегмента
ЕА = Х 2<SS> + (ВМ + D).
Рис. 7. Схема вычисления 32-битного линейного адреса
Величина ЕА сравнивается с величиной предела сегмента. Если ЕА не выходит за размеры сегмента, эффективный адрес суммируется с базой сегмента. Тем самым определяется линейный адрес ЛА операнда, который используется для определения физического адреса. В R- и V-режимах этот линейный адрес совпадает с физическим адресом ФА и передается в регистр адреса. В P-режиме этот адрес может быть больше размерности ОЗУ и линейный адрес с учетом страничного преобразования обычно преобразуется в физический адрес. В зависимости от составляющих BM, X, D, 2<SS>, которые могут присутствовать или отсутствовать в микрооперациях вычисления адреса, различают базовую, индексную и их разновидности со смещением адресации операндов. При базовой адресации в команде отсутствует смещение и не используется индексирование. ЕА задается только базовым РОН кроме ESP. Искомый РОН в мнемонике описания команды заключается в скобки. Например, mov eax, [ecx] - передать в EAX двойное слово из ОЗУ с адресом = база сегмента + ECX.
При базовой адресации со смещением ЕА определяется суммированием содержимого РОН, закодированном в поле base, с величиной 8 / 16 / 32-разрядного смещения в команде. Смещение в команде является целым числом со знаком. Например, команда mov eax, [esi + D] осуществляет передачу в ЕАХ содержимого ячейки ОЗУ с адресом, равным сумме базы сегмента РОН ESI и смещения в поле команды + D. Отличительной особенностью способа индексной адресации со смещением и масштабированием от базовой адресации со смещением является возможность масштабирования индексного адреса Х путем умножения его на 1, 2, 4 или 8. При множителе 1 эти способы адресации не отличаются. При множителях 2, 4 или 8 масштабирование (сдвиг влево на один - L1, два - L2 и три разряда - L3) позволяет осуществлять вычисление адреса с учетом размера элементов массива или задания их порядка обработки командой. Например, команда mov ecx, [esi 4] + 53 передает двойное слово, которое находится в сегменте данных с эффективным адресом L2 ESI (31, 0) + 53h.
Наиболее сложным способом адресации является базовый/индексный с масштабированием и смещением. Для вычисления адреса в этом способе участвуют два РОН. Один из РОН содержит индекс, который масштабируется. Смещение размером в 8, 16 или 32 бита располагается в команде. Например, команда add eax, [ebx][edi 8] + 547671 осуществляет сложение содержимого EAX с элементом массива, имеющим эффективный адрес ЕА = EBX (31, 0) + L3 EDI (31, 0) + 547671h.
Использование команд с базовой / индексной адресацией упрощает программирование вычислений, уменьшает разрядность команд и позволяет размещать в операционной системе данные в любых освобождающихся областях ОЗУ, изменяя при этом только базовые адреса. Для уменьшения времени вычисления линейного адреса используется конвейерный параллельный способ дешифрирования команды и вычисления адресов, что позволяет многие команды на последней ступени обработки в МП Pentium выполнять за один такт синхронизации. В рассмотренных способах адресации место операнда кодируется в команде и закреплено за программой. При смене базовых адресов изменяются и физические адреса расположения операндов в памяти. Это усложняет обмен данными между программами и организацию программных прерываний. Для упрощения обмена между программами, прерываний при обращении к подпрограммам и “безадресного” поиска и размещения операндов в ЭВМ используется стековая адресация. Под стек отводится часть ОЗУ (сегмент стека с базовым адресом в регистре SS или (SS)), которая участвует в операциях МП с использованием реверсивного счетчика – указателя ESP / SP. Содержимое указателя ESP / SP (вершина стека) используется командами как поле адреса операнда. При записи в стек командами push величина ESP / SP уменьшается, а при чтении командами pop указатель увеличивается на величину, равную длине операнда в байтах, после выполнения команды. Например, команды push ecx передает в ОЗУ содержимое ECX по ЕА = ESP (31,0).
Принципы действия ЭВМ
Упрощенная структура ЭВМ представлена на рис. 8 ЭВМ содержит следующие основные устройства: арифметическо-логическое устройство, память, управляющее устройство, устройство ввода данных в машину, устройство вывода из нее результатов расчета и пульт ручного управления.
Арифметическо-логическое устройство (АЛУ) производит арифметические и логические преобразования над поступающими в него машиинными словами,т.е. кодами определенной длины, представляющими собой числа или другой вид информации. Количество разрядов в машинном слове обычно совпадает с количеством разрядов в основных регистрах АЛУ.
Память хранит информацию, передаваемую из других устройств, в том числе поступающую в машину извне через устройство ввода, и выдает во все другие устройства информацию,необходимую для протекания вычислительного процеса.Память машины в большинстве случаев состоит из двух существенно отличающихся по своим характеристикам частей: быстродействующей основной или оперативной (внутренней) памяти (ОП) и сравнительно медленно действующей , но способной хранить значительно больший объем информации внешней памяти (ВнП).
Оперативная память содержит некоторое число ячеек, каждая из которых служит для хранения машинного слова или его части. Ячейки нумеруются, номер ячейки называется адресом.
Рис. 8. Структура электронной цифровой вычислительной машины. Фон-Нейманавская модель ЭВМ
В запоминающих устройствах, реализующих в ЭВМ функцию памяти выполняются операции считывания хранимой информации для передачи в другие устройства и записи информации, поступающей из дргих устройств. При считывании слова из ячейки содержимое последней не меняется и при необходимости слово может быть снова взято из той же ячейки. При записи хранившееся в ячейке слово стирается и его место занимает новое.
Непосредственно в вычислительном процессе участвует только ОП, и лишь после окончания отдельных этапов вычислений из ВнП в ОП передается информация, необходимая для следующего этапа решения задачи.
Управляющее устройство (УУ) автоматически без участия человека управляет вычислительным процессом, посылая, всем другим устройствам сигналы, предписывающие им те или иные действия, в частности включает АЛУ на выполнение нужной операции.
Алгоритмом решения задачи численным методом называют последовательность арифметических и логических операций, которые надо произвести над исходными данными и промежуточными результатами для получения решения задачи. Поэтому алгоритм можно задать указанием, какие следует произвести операции, в каком порядке и над какими словами. Описание алгоритма в форме, воспринимаемой ЭВМ, называется программой.
Программа состоит из отдельных команд.Каждая команда преписывает определенное действие и указывает, над какими словами (операндами)это действие производится. Программа представляет собой совокупность команд,записанных в определенной последовательности, обеспечивающей решение задачи на ЭВМ.
Чтобы устройство управления могло воспринимать команды, они должны быть закодированы в цифровой форме.
Автоматическое управление процессом решения задачи достигается на основе принципа программного управления, являющегося основной особенностью ЭВМ.
Другим важнейщим принципом является принцип хранимой в памяти программы. Согласно этому принципу команды программы, закодированные в цифровом виде, хранятся в памяти наравне с числами. В команде указывается не сами участвующие в операциях числа, а адреса ячеек ОП, в которых они находятся, и адрес ячейки, куда помещается результат операции.
Поскольку программа храниться в памяти, одни и те же команды могут нужное число раз извлекаться из памяти и выполняться. Более того, так как команды представляются в машине в форме чисел, то над командами как над числами машина может производить операции ("модификация команд").
Использование электронных схем, принципов программного управления и хранимой в памяти программы позволило достигнуть высокого быстродествия и сократить во много раз число команд в программах решения задач, содержащих машинные циклы, по сравнению с числом операций, которые производит машина при выполнении этих программ.
Команды выполняются в порядке,соответствующем их расположению в последовательных ячейках памяти, кроме команд безусловного и условного переходов, изменяющих этот порядок соответственно безусловно или только при выполнении некоторого условия, обычно задаваемого в виде равенства нулю,положительного или отрицательного результата предыдущей команды или отношения типа >,=,< для указываемых командой чисел. Именно благодаря наличию команд условного перехода ЭВМ может автоматически изменять соответствующим образом ход вычислительного процесса, решать сложные логические задачи.
Перед решением задачи на ЭВМ программа и сходные данные должны быть помещены в память. Предварительно эта информация наносится на магнитные носители путем соответствующего намагничевания участков их поверхностей. Затем при помощи устройств ввода программа и исходные данные считываются с магнитных носителей и переносятся в ОП. Информация может также вводится с клавиатуры и других устройств ввода.
Устройство вывода служит для выдачи из машины результатов расчета, например , путем распечатывания на принтере или отображения на экране.
При помощи пульта управления оператор пускает и останавливает машину, а при необходимости может вмещаться в процесс решения задачи.
Представленная на рис. 2 структура (модель) вычислительной машины, получившая название Фон-Неймановской, благодаря ее изящной простоте и большей гибкости при управлении вычислительным процессом с самых первых шагов электронной вычислительной техники и по сей день доминирует при построении различных ЭВМ. Однако в последние годы конструкторы ЭВМ, стремясь достигнуть существенного повышения производительности, в ряде случаев отходят от модели Фон-Неймана.