1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ




Название1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ
страница9/13
Дата публикации21.03.2013
Размер1.25 Mb.
ТипДокументы
vbibl.ru > Информатика > Документы
1   ...   5   6   7   8   9   10   11   12   13

^ 33. Форматы команд профессора Pentium II
Форматы команд Pentium II сложны и нерегулярны. Они содержат до шести полей разной длины. Эта ситуация сложилась из-за того, что архитектура Intel развивалась на протяжении нескольких поколений, и в нее изначально были включены не самые удачные характеристики. Позднее их нельзя было изменить из-за требования обратной совместимос­ти.

В первых архитектурах Intel все коды операций занимали по 1 байту, но для изменения некоторых команд часто использовался так называемый префиксный байт. Префиксный байт - это дополнительный код, который ставится перед командой для ее настройки. Сейчас префиксов может быть несколько. Они могут задавать размер операнда (переключение между 16- и 32-битными), размер адреса (16/32), сегментный регистр и другие модификации.

Фиксированные биты в кодах операций процессора Pentium II дают мало информации о команде. В ряде команд информативными являются младший бит кода опера­ции, который задает длину операнда - байт или слово (b/w), а также соседний слева бит, который указывает, является ли адрес памяти (если он есть) источником (s) или приемником (d). Таким образом, в большинстве случаев код операции должен быть полностью декодиро­ван, чтобы установить, к какому классу относится текущая операция, и, следовательно, какова длина данной команды. Это снижает производительность, поскольку необходимо декодировать текущую команду, прежде чем удастся прочитать следующую.

В большинстве команд за байтом кода операции следует байт состояния (MODE), который сообщает информацию об адресации операндов. Эти 8 битов распределены в 2-битном поле MOD и двух 3-битных регистровых полях REG и R/M (иногда первые три бита этого байта используются для расширения кода операции). 2-битный размер поля MOD означает, что существует только 4 способа обращения к операндам. Один из операндов всегда должен быть регис­тром. Кроме того, правила кодирования команд запрещают некоторые комбинации регистров, поскольку они используются для особых случаев. В не­которых типах команд требуется дополнительный байт, называемый SIB (Scale, Index, Base - масштаб, индекс, база), который дает дополнительную специфи­кацию адреса операнда. Эта схема громоздка, но она является компромиссом между требованием обратной совместимости и желанием добавлять новые особенности, которые не были предусмотрены изначально.

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

^ 34. Форматы команд процессора UltraSPARC II
Процессор UltraSPARC II имеет архитектуру выровненных в памяти 32-битных команд. Типичная команда содержит два регистра-операнда и один выходной регистр. Вместо одного из регистров может использоваться константа со знаком. При выполнении команды LOAD два регистра (или один регистр и 13-битная константа) складываются для определения считываемого адреса памяти. Данные из нее записываются в другой указанный регистр.

Изначально машина SPARC имела ограниченное число форматов команд. Со временем добавлялись новые, и их число уже превышает 30. Большинство новых форматов было получено путем изымания нескольких битов из какого-нибудь поля. Например, изначально для команд перехода использовался формат 3 с 22-битным смещени­ем. Когда были добавлены прогнозируемые переходы, 3 из 22 битов изъяли: один из них стал использоваться для прогнозирования (совершать или не совер­шать переход), а два оставшихся определяли, какой набор битов условного кода нужно использовать. В результате получилось 19-битное смещение.

Первые два бита каждой команды помогают определить формат команды и сообщают о местонахождении оставшейся части кода операции, если она есть. В формате 1а оба операнда-источника представляют собой регист­ры; в формате lb один источник - регистр, второй - константа в промежутке от -4096 до +4095. Бит 13 определяет один из этих двух форматов. В обоих случаях приемником всегда является регистр. Достаточный объем пространства кода операции обеспечен для 64 команд, некоторые из которых сохранены на будущее.

Поскольку все команды 32-битные, включить в команду 32-битную константу невозможно. Поэтому команда SETHI устанавливает 22 бита, оставляя пространство для другой команды, чтобы установить оставшиеся 10 битов. Это единственная команда, которая использует данный формат.

Для непрогнозируемых условных переходов используется формат 3, в котором поле УСЛОВИЕ определяет, какое условие нужно проверить. Прогнозируе­мые переходы используют тот же формат, но только с 19-битным смещением, как было сказано выше.

Последний формат применяется для команды вызова процедуры (CALL). Только в ней для определения адреса требуется 30 битов. Она имеет 2-битный код операции. Требуемый адрес - это целевой адрес, разделенный на четыре.

^ 35. Форматы команд JVM
Большинство форматов команд машины JVM просты. Это объясняется тем, что JVM разработана сравнительно недавно. Все команды начинаются с кода операции в 1 байт. В некоторых командах за кодом операции следует второй байт (формат 2). Это может быть индекс (как в команде ILOAD), константа (как в команде BIPUSH) или код типа данных (как в команде NEWARRAY, которая создает одномерный массив указанного типа в “куче"). Третий формат отличается от второго тем, что вместо 8-битной константы там содержится 16-битная константа (как, например, у команд WIDE ILOAD или GOTO). Формат 4 используется только для команды IINC. Формат 5 имеет команда MULTINEWARRAY, создающей в “куче” многомер­ный массив. Формат 6 нужен для команды INVOKEINTERFACE, которая вызывает процедуру при определенных обстоятельствах. Формат 7 предназначен для команды WIDE IINC, чтобы обеспечить 16-битный индекс и 16-битную константу, которая прибавляется к заданной переменной. Формат 8 применяется только для команд WIDE GOTO и WIDE JSR, чтобы осуществлять переходы на большие расстояния в памяти и вызовы определенных процедур. Последний формат ис­пользуется только двумя командами, которые нужны для реализации оператора языка Java switch. Таким образом, все команды JVM, за исключением восьми особых команд, используют простые и короткие форматы 1, 2 и 3.

Система коман­д JVM организована таким образом, чтобы большинство наиболее распространенных команд кодировалось в одном байте. Рассмотрим, например, как происходит загрузка локальной переменной в стек. Для этого существуют три способа.

Самый короткий вариант обеспечивает наиболее распространенные случаи, а самый длинный - все возможные. JVM содержит команду ILOAD, использу­ющую 8-битный индекс для определения локальной переменной, которую нужно поместить в стек. Префиксная команда WIDE позволяет использовать следом за собой тот же код операции ILOAD для определения 16-битного смещения (т. е. любого из первых 65 536 элементов) во фрейме локальных переменных. Для команды WIDE ILOAD требуется 4 байта: 1 - для WIDE, 1 - для кода ILOAD и 2 - для 16-битного индекса. Такое разделение объясняется тем, что большинство команд загрузки используют одну из первых 256 локальных переменных. Префикс WIDE нужен для универсальности, применимости к любым ситуациям, но используется редко.

Есть еще более короткий способ. Так как параметры проце­дуры передаются в первые несколько слов фрейма локальных переменных, коман­да ILOAD часто использует элементы фрейма локальных переменных с невы­сокими индексами. Разработчики JVM назначили отдельные 1-байтные коды операций для каждого из наиболее употребимых индексов. Команда ILOAD_0 помещает в стек локальную переменную 0. Эта команда полностью эквивалент­на 2-байтной команде ILOAD 0, за исключением того, что занимает один байт вместо двух. Точно так же команды IL0AD_1, IL0AD_2 и IL0AD_3 помещают в стек локальные переменные 1, 2 и 3.

Таким образом, локальную переменную 1, например, можно загрузить одним из трех способов: ILOAD_1, ILOAD 1 и WIDE ILOAD 1. (на обороте…)

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

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

  • непосредственная;

  • прямая;

  • регистровая;

  • косвенно-регистровая;

  • индексная;

  • относительная индексная;

  • стековая.

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

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

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

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


Архитектура UltraSPARC II - архитектура загрузки/сохранения. Единственные операции непосредственного обращения к памяти в ней - это команды LOAD (загрузка) и STORE (сохранение). Все операнды арифметических и ло­гических команд берутся из регистров или предоставляются самой ко­мандой, и все результаты сохраняются в регистрах.


Регистр ESP - указатель стека.

Следующая группа регистров – CS (сегмент кода), SS (сегмент стека), DS (сегмент данных), ES, FS, GS (дополнительные сегменты данных). Это 16-разрядные сегментные регистры. Они унаследованы от предыдущих процессоров и содержат адреса сегментов. При использовании линейного 32-битного адресного пространства их можно игнорировать.

Регистр EIP - это счетчик команд (Extended Instruction Pointer). Регистр EFLAGS - регистр флагов.


Регистры: В большинстве компьютеров имеется несколько регистров, видных на уровне команд. Они используются для контроля выполнения программы, временного хранения данных и некоторых других целей. Регистры уровня команд можно разделить на две категории: специальные и общего назначения (РОН). К специальным регистрам относятся счетчик команд, указатель стека и другие регистры с особыми функциями. Общие регистры содержат промежуточные результаты вычислений. Они могут использоваться произвольно в пределах их назначения. В некоторых машинах РОН полностью взаимозаменяемы, в других - частично специализированы. Существует определенное количество специальных регистров (системных), доступных лишь в привилегированном режиме. Они контролируют блоки кэш-памяти, основную память, устройства ввода-вывода и другие элементы аппаратного обеспечения. Они используются только операционной системой. Существует один специальный управляющий регистр, представляющий собой привилегированно-пользовательский гибрид. Это регистр флагов, или PSW. Его содержимое рассматривается как совокупность битов-признаков, к которым, в частности, относятся коды условия. Эти биты отражают состояние результата предыдущей операции. Они включают:

  • N - признак отрицательного результата (Negative);

  • Z - признак нулевого результата (Zero);

  • V - переполнение (oVerFlow);

  • C - перенос бита из старшего разряда (Carry out).

Коды условия используются при сравнениях и условных переходах.

Команды: Системы команд существенно различаются в конкретных архитектурах. Однако практически всегда присутствуют команды LOAD и STORE (или их аналоги) для перемещения данных между регистрами и памятью, а также команда MOVE для копирования данных из одного регистра в другой. Всегда имеются наборы арифметических, логических команд, команд сравнения и условных переходов.






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

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

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






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

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

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

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


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

Для команд загрузки операндов из набора констант вместо использования WIDE представлены две версии команды: LDC и LDC_W.



1   ...   5   6   7   8   9   10   11   12   13

Похожие:

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

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconФизические основы элементной базы современных ЭВМ
Поколения ЭВМ и их элементная база. Роль полупроводниковых материалов в современных ЭВМ. Преимущества интегральных схем перед дискретными...

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconАрхитектура ЭВМ связана с качествами машины, к-е влияют на ее взаимодействие...
Это обусловлено развитием техники. Зу ЭВМ имеет несколько уровней: 1 внутреннее зу – содержит информацию, обрабатываемую в нем в...

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

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconКафедра «Электронных вычислительных машин» методические указания...
Методические указания к дипломному проектированию составлены и доц каф ЭВМ лебеденко Ю. И. и обсуждены на заседании кафедры ЭВМ факультета...

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconПлан лекции: Виды и операции технического обслуживания Организация эксплуатации ЭВМ
Эвм силами и средствами персонала ЭВМ. При этом виде обслуживания предполагается проведение регламентных работ, контроль технического...

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconПлан лекции: Задачи, решаемые вычислительными центрами Структура...
Создание вычислительных центров является способом повышения эффективности работы ЭВМ. Вычислительный центр объединяет технику различных...

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconЛабораторная работа №1 по дисциплине «эксплуатацияэвми систем»
...

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconКонтроль работы ЭВМ
Процесс определения технического состояния и поддержания работы ЭВМ включает 4 этапа

1. Понятие архитектуры ЭВМ. Языки, уровни и виртуальные машины ЭВМ iconУрокам тема №1: этапы решения задач на ЭВМ. Алгоритмизация. Основные понятия. Блок-схемы
Программно дидактическое обеспечение: ЭВМ типа ibm. Turbo-Pascal Обучающие программы. Тесты

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
vbibl.ru
Главная страница