Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Регистры расширений MMX, SSE. 5 страница



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

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

2.2. Типы данных

Основными типами данных в компьютерах интеловской архитектуры являются: байт, слово, двойное слово, квадрослово и 128-разрядное слово (см. рис. 2.2).

Убран абзац
Каждый из представленных на рис. 2.2 типов данных может начинаться с любого адреса: это означает, что слово не обязано начинаться с чётного адреса; двойное слово – с адреса, кратного 4 и т. д. Таким образом достигается максимальная гибкость структур данных и эффективность использования памяти.

Рис.2.2. Основные типы данных

На базе основных типов данных строятся все остальные типы, распознаваемые командами процессора.

Целочисленные данные

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

Данные в формате с плавающей точкой х87

Формат включает три поля: Знак (S), Порядок и Мантисса (см. рис. 2.3). Поле мантиссы содержит значащие биты числа, а поле порядка содержит степень 2 и определяет масштабирующий множитель для мантиссы. Поддерживаются блоком обработки чисел с плавающей точкой (FPU).

Рис. 2.3. Форматы данных с плавающей точкой

 

Двоично-десятичные данные (BCD)

На рис. 2.4 приведены форматы двоично-десятичных данных.

Рис.2.4. Форматы двоично-десятичных данных

Данные типа строка

Строка представляет собой непрерывную последовательность бит, байт, слов или двойных слов (см. рис.2.5). Строка бит может быть длиной до 1 Гбита, а длина остальных строк может составлять от 1 байта до 4 Гбайтов. Поддерживается АLU.

 

Рис.2.5. Данные типа строка

 

Символьные данные

Поддерживаются строки символов в коде ASCII и арифметические операции (сложение, умножение) над ними (рис.2.6). Поддержка осуществляется блоком АLU.

 

  7 + N 0   7 + 1 0 7 0 0  
  Символ N Символ 1 Символ 0 ASCII
  ASCII   ASCII ASCII  

Рис.2.6. Символьные данные

 

Данные типа указатель

Указатель содержит величину, которая определяет адрес фрагмента данных. Поддерживается два типа указателей, приведенных на рис.2.7.

 

7 +5 + 4 + 3 + 2 + 1  
                Длинный указатель (дальний)
                 
  селектор 16 р. смещение 32 р.    
    1 + 3 + 2 + 1  
                Короткий указатель (ближний)
                 
      смещение 32 р.    
                   

Рис.2.7. Данные типа указатель

 

Данные ММХ-технологии

Целочисленные данные могут быть как со знаком, так и без знака (рис.2.8).

 

Рис.2.8. Данные ММХ-технологии

 

Данные SSE-расширения

На рис. 2.9 приведен 128-разрядный формат упакованных данных с плавающей точкой одинарной точности.

Рис.2.9. Данные SSE-расширения

Данные расширения SSE2

На рис. 2.10 приведен 128-разрядный формат упакованных данных с плавающей точкой с двойной точностью.

Рис.2.10. Данные SSE2 расширения с плавающей запятой

На рис. 2.11 показаны 4 формата упакованных в 128 бит целочисленных данных, которые могут быть как со знаком, так и без знака.

Рис.2.11. Целочисленные данные SSE2 расширения

Данные в IA-64

В IA-64 непосредственно поддерживается 6 типов данных, в том числе три формата, используемых ранее (одинарная точность, двойная точность, расширенная точность), 82-разрядный формат данных с плавающей точкой (рис. 2.12) и 64-разрядные целые – со знаком и без знака.

  63 0
S Порядок 17 р. Мантисса

Рис.2.12. Формат данных с плавающей точкой 82-разрядный

Теги и дескрипторы. Самоопределяемые данные

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

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

Дескрипторы – служебные слова, содержащие описание массивов данных и команд.

Рис.2.13. Структура описания данных:
а - с теговой организацией памяти; б - дескриптор данных

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

Дескриптор содержит: А – адрес начала массива данных; L – длина массива; Х – индекс; Ук – группа указателей (атрибутов).

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

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

2.3. Структура и форматы команд ЭВМ

Все возможные преобразования дискретной информации могут быть сведены к четырем основным видам:

· передача информации в пространстве (из одного блока ЭВМ в другой);

· передача информации во времени (хранение);

· логические (поразрядные) операции;

· арифметические операции.

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

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

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

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

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

а) команды арифметических операций над числами с фиксированной и плавающей точками;

б) команды десятичной арифметики;

в) команды логических операций и сдвигов;

г) команды передачи кодов;

д) команды операций ввода-вывода;

е) команды передачи управления;

ж) команды векторной обработки;

з) команды задания режима работы машины и др.

Команда в общем случае состоит из операционной и адресной частей (см. рис. 2.14, а).

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

Операционная часть содержит код операции (КОП), который задает вид операции (сложение, умножение и др.). Адресная часть содержит информацию об адресах операндов и результате операции.

Структура командыопределяется составом, назначением и расположением полей в команде.

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

Важной и сложной проблемой при проектировании ЭВМ является выбор структуры и форматов команды, т. е. ее длины, назначения и размерности отдельных ее полей. Естественно стремление разместить в команде в возможно более полной форме информацию о предписываемой командой операции. Однако в условиях, когда в современных ЭВМ значительно возросло число выполняемых различных операций и соответственно команд (в системе команд х86 более 500 команд) и значительно увеличилась емкость адресуемой основной памяти (4Гбайт, 6 Гбайт), это приводит к недопустимо большой длине формата команды.

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

nкоп і log2 М, например, при М = 500, nкоп = 10.

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

nА і log2 S, например, при S = 4 ГБ, nА = 32.

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

Проследим изменения классических структур команд.

Чтобы команда содержала в явном виде всю необходимую информацию о задаваемой операции, она должна, как это показано на рис.2.14, б, содержать следующую информацию:

А1, А2 – адреса операндов, А3 – адрес результата, А4 – адрес следующей команды (принудительная адресация команд).

Такая структура приводит к большой длине команды (например, при М = 500, S = 4 ГБ длина команды – 138 бит) и неприемлема для прямой адресации операндов основной памяти. В компьютерах с RISC-архитектурой четырехадресные команды используются для адресации операндов, хранящихся в регистровой памяти процессора.

Можно установить, что после выполнения данной команды, расположенной по адресу К (и занимающей L ячеек), выполняется команда из (К + L)-й ячейки. Такой порядок выборки команды называется естественным. Он нарушается только специальными командами (передачи управления). В таком случае отпадает необходимость указывать в команде в явном виде адрес следующей команды.

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

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

В одноадресной команде (см. рис. 2.14, д) подразумеваемые адреса имеют уже и результат операции и один из операндов. Один из операндов указывается адресом в команде, в качестве второго используется содержимое регистра процессора, называемого в этом случае регистром результата или аккумулятором. Результат операции записывается в тот же регистр.

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

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

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

 

Рис. 2.14. Структуры команд:
а – обобщенная; б – четырехадресная; в – трехадресная;
г – двухадресная; д – одноадресная; е – безадресная

2.4. Способы адресации информации в ЭВМ

Существует два различных принципа поиска операндов в памяти: ассоциативный и адресный.

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

Адресный поиск предполагает, что искомый операнд извлекается из ячейки, номер которой формируется на основе информации в адресном поле команды.

Ниже мы будем рассматривать только реализацию адресного принципа поиска операнда. Следует различать понятия «адресный код» в команде АК и «исполнительный (физический) адрес» АИ. Адресный код – это информация об адресе операнда, содержащаяся в команде. Исполнительный адрес – это номер ячейки памяти, к которой производится фактическое обращение. В современных ЭВМ адресный код, как правило, не совпадает с исполнительным адресом. Таким образом, способ адресации можно определить как способ формирования исполнительного адреса операнда АИ по адресному коду команды АК.

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

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

Адресация операнда в команде может быть явнойили неявной. При явной адресации в команде есть поле адреса операнда, в котором задается адресный код АК. Большинство методов адресации являются явными.

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

Способы формирования адресов ячеек памяти (АИ) можно разделить на абсолютные и относительные.

2.4.1. Абсолютные способы формирования исполнительного адреса

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

К абсолютным способам относятся непосредственная, прямая и косвенная адресации, которые имеют различную кратность обращения (R) к памяти.

 

 

Непосредственная адресация операнда

При этом способе операнд располагается в адресном поле команды. Обращение к регистровой памяти (РП) или ОП за операндом не производится (R = 0), он выбирается вместе с командой. Таким образом, уменьшается время выполнения операции, сокращается объем памяти. Непосредственная адресация удобна для задания констант, длина которых меньше или равна длине адресного поля команды.

Прямая адресация операндов

Перенесен рисунок
При этом способе (рис. 2.15) адресации обращение за операндом в РП или ОП производится по адресному коду в поле команды (R = 1), т. е. исполнительный адрес операнда совпадает с адресным кодом команды (АИ = АК).

Рис.2.15. Схема прямой адресации:
а) к регистровой памяти; б) к основной памяти

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

Косвенная адресация операндов

При этом способе адресный код команды указывает адрес ячейки (регистра) памяти, в которой находится не сам операнд, а лишь адрес операнда, называемый указателем операнда. Адресация к операнду через цепочку указателей (косвенных адресов) называется косвенной (R і 2).

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

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

Рис.2.16. Схема косвенной адресации

2.4.2. Относительные способы формирования исполнительных
адресов ячеек памяти

Относительные способыформирования АИ предполагают, что двоичный код адреса ячейки памяти образуется из нескольких составляющих: Б код базы, И код индекса, С код смещения, используемых в сочетаниях (Б и С), (И и С), (Б, И и С).

При относительной адресации применяются два способа вычисления адреса АИ:

· суммирование кодов составляющих адреса;

· совмещение (конкатенация) кодов составляющих адреса.

Суммирование кодов составляющих производится для случаев:

АИ = Б + С; АИ = И + С; АИ = Б + И + С.

Базирование способом суммирования

В команде адресный код АК разделяется на две составляющие: АБ – адрес регистра регистровой памяти, в котором хранится база Б (базовый адрес); C – код смещения относительно базового адреса (рис. 2.17).

Для определения максимальной емкости ОП, адресуемой с помощью базирования, способом суммирования, определим длину кода исполнительного адреса

Рис. 2.17. Схема формирования относительного адреса способом
суммирования кодов базы и смещения: СМ – сумматор; РАОП – регистр адреса ОП; Б – база (базовый адрес); С – смещение; АБ- адрес регистра базы; nБ – длина кода базы; nС – длина поля смещения

Так как nБ = mРП и обычно больше, чем nC, то справедливо следующее выражение:

т. е. максимальная адресуемая емкость ОП определяется разрядностью РП. Длина поля кода команды, задающего адрес регистра базы АБ, определяется через емкость РП MРП по формуле

Таким образом, можно определить количество двоичных разрядов в адресном поле команды, необходимое для формирования АИ с размещением базы в РП:

.

Приведенные выражения позволяют определить числовые значения параметров относительной адресации (базирование способом суммирования).

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

Относительная адресация с совмещением составляющих АИ

Для увеличения емкости адресной ОП (МОП) без увеличения длины адресного поля команды можно использовать для формирования исполнительного адреса совмещение (конкатенацию) кодов базы и смещения (см. рис.2.18).

При совмещении кодов базы и смещения

.

Таким образом,

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

Рис. 2.18. Схема формирования относительного адреса способом
совмещения кодов базы и смещения

Индексная адресация

Для работы программ с массивами, требующими однотипных операций над элементами массива, удобно использовать индексную адресацию. Схема индексной адресации аналогична базированию путем суммирования (см. рис.2.17). В этом случае адрес i-го операнда в массиве определяется как сумма начального адреса массива (задаваемого полем смещения С) и индекса И, записанного в одном из регистров РП, называемом теперь индексным регистром. Адрес индексного регистра задается в команде полем адреса индекса – АИН (аналогично АБ).

В каждом i-м цикле содержимое индексного регистра изменяется на величину постоянную (часто равную 1). Использование индексной адресации значительно упрощает программирование циклических алгоритмов.

Для эффективной работы при относительной адресации применяется комбинированная индексация с базированием, при которой адрес операнда вычисляется как сумма трех величин (см. рис. 2.19):

АИОП = Б + И + С.

Рис. 2.19. Схема формирования исполнительного адреса при индексной
адресации и базировании: АИН – адрес индексного регистра; nАИН – длина адреса индексного регистра

Стековая адресация

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

2.5. Примеры форматов команд и способов адресации

2.5.1. Форматы команд и способы адресации в интеловских процессорах

В качестве примера рассмотрим набор команд и способы адресации, используемые в процессорах интеловской архитектуры. Для этих процессоров в табл. 2.1. приведены данные о развитии их системы команд.

Изначально в базовом наборе команд процессора i8086 были предусмотрены команды обработки чисел с плавающей запятой, которые до i386-процессора включительно выполнялись на дополнительном сопроцессоре. Начиная с процессора i486, блок обработки чисел с плавающей запятой (FPU) стал составной частью микропроцессора.

 

Таблица 2.1

Развитие системы команд х86 процессоров

Год появления набора команд Тип процессора, где набор был реализован впервые Общее число команд Смысл расширения
i8086 Исходный набор команд х86
i386 50 новых команд для перехода к архитектуре IA-32
Pentium/MMX 57 ММХ-команд
Pentium 3 70 команд SSE-расширения
Pentium 4 Northwood 144 команды SSE2
Pentium 4 Prescott 13 команд SSE3
    10 команд Intel VT-x
Core2 Duo (65 нм) 32 команды SSSE3
Penryn (45 нм) 47 команд SSE4.1
Core i7 (45нм) 7 команд SSE4.2
Core i5 (32 нм) 6 команд AES-NI

Переход на 32-разрядную интеловскую архитектуру (IA-32) был осуществлен в процессоре i386 с добавлением 50 новых команд. Все последующие модели процессоров до Pentium 4 включительно, имеют IA-32 архитектуру, несмотря на то, что расширение системы команд происходило неоднократно.

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.