Уровень архитектуры набора команд

Математика
Решение примерного варианта
контрольной работы
Матричные уравнения
Сложение матриц
Теория делимости квадратных матриц
Эквивалентные матрицы
Матричные уравнения
Написать матрицу, транспонированную
данным
Разложить матрицу в произведение простейших
Предел последовательности
Вычислить пределы с помощью правила Лопиталя
Неопределенный интеграл
Определенный интеграл
Вычислить определенные интегралы
Двойной интеграл
ОДУ первого порядка
Вычислить интегралы от функции комплексного
переменного
Изменить порядок интегрирования в интеграле
Вычислить криволинейный интеграла
Вычислить расходимость (дивергенцию)
и вихрь (ротор)
Исследовать поведение функции
Найти интеграл 
Площадь плоской криволинейной трапеции
Вычисление длины дуги кривой
Тройной интеграл в цилиндрических и
сферических координатах
Декартовы координаты
Сферические координаты
Вычислим тройной интеграл
Вычисление двойного интеграла в
декартовых координатах
Двойной интеграл в полярных координатах
Приложения тройного интеграла
Тройной интеграл в декартовых координатах
Тройной интеграл в сферических координатах
Тройной интеграл в цилиндрических координатах
Вычисление криволинейных интегралов 1-го рода
Криволинейный интеграл II рода (по координатам)
Поверхностный интеграл первого рода
Поверхностный интеграл второго рода
Функция нескольких переменных
Локальные максимумы и минимумы ФНП
Векторное поле
Соленоидальное векторное поле
Теоретические основы электротехники
Порядок выполнения и требования
к оформлению - расчётно – графических заданий
Расчёт магнитной цепи
Законы Кирхгофа и расчёт резистивных
электрических цепей
Пример выполнения расчётно – графического
задания
Расчёт линейных электрических цепей
Расчёт трёхфазных электрических цепей
Формирование уравнений сложных
r,L,C - цепей
Энергетика
Экология энергетики
Информатика
Курс лекций
Локальные компьютерные сети
Физика
Примеры решения задач
Машиностроительное черчение
Сборочный чертеж
Обозначение материалов
Построение лекальных кривых
Геометрические построения
Правила нанесения размеров
Последовательность нанесения размеров
Позиционные задачи
Решение метрических задач
 

В этой главе подробно обсуждается уровень архитектуры набора команд (ISA). Как показано на рис. 1.2, он расположен между уровнями микроархитектуры и операционной системы. Исторически этот уровень развился прежде всех остальных уровней и изначально был единственным. В наши дни этот уровень очень часто называют «архитектурой» машины, а иногда (что неправильно) — «языком ассемблера».

Когда появляется новая машина, первый вопрос, который задают все потенциальные покупатели: «Совместима ли машина с предыдущими версиями?»

Общий обзор уровня архитектуры набора команд

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

Модели памяти Во всех компьютерах память разделена на ячейки, которые имеют последовательные адреса. В настоящее время наиболее распространенный размер ячейки — 8 бит, но раньше использовались ячейки от 1 до 60 бит

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

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

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

Главная особенность уровня, который мы сейчас рассматриваем, — это набор машинных команд

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

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

Все регистры общего назначения 64-разрядные

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

Обзор уровня архитектуры набора команд микросхемы 8051

Еще одной особенностью регистров 8051 является то, что все они представлены в адресном пространстве памяти.

Регистр 1Р определяет приоритеты для прерываний. Предусмотрено всего два уровня приоритета: низкий и высокий.

Типы данных можно разделить на две категории: числовые и нечисловые. Среди числовых типов данных главными являются целые числа.

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

Типы данных процессора Pentium 4 Pentium 4 поддерживает двоичные целые числа со знаком, целые числа без знака, числа двоично-десятичной системы счисления и числа с плавающей точкой по стандарту IEEE 754

Типы данных машины UltraSPARC III

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

Еще один критерий — достаточный объем пространства в формате команды для представления всех требуемых операндов.

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

Форматы команд процессора Pentium 4 очень сложны и нерегулярны. Они содержат до шести полей разной длины, пять из которых не обязательны

Архитектура команд процессора UltraSPARC III состоит из 32-разрядных команд, выровненных в памяти. Команды очень просты. Каждая из них выполняет только одно действие. Типичная команда задает два регистра, в которых находятся исходные операнды, и один выходной регистр.

В 8051 предусмотрено шесть простых форматов команд. Размер команд может быть равен 1, 2 или 3 байтам. Большинство команд работают с операндами, расположение которых необходимо каким-то образом указать.

Этот механизм, который мы обсудим в данном разделе, называется адресацией.

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

Индексная адресация Часто нужно уметь обращаться к словам памяти по известному смещению. Подобные примеры мы видели в машине IJVM, где локальные переменные определяются по смещению от регистра LV. Обращение к памяти по регистру и константе смещения называется индексной адресацией

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

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

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

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

Необходимо также иметь небольшое число дополнительных команд (например, команд условных переходов), но они легко подходят под вариант 3 формата

Режимы адресации процессора Pentium 4 чрезвычайно нерегулярны и зависят от формата конкретной команды — 16- или 32-разрядная.

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

Сравнение режимов адресации

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

Бинарные операции — это такие операции, которые получают результат на основе значений двух операндов.

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

Сравнения и условные переходы Практически все программы должны проверять свои данные и на основе полученных результатов изменять последовательность выполняемых команд. Рассмотрим функцию извлечения квадратного корня из числа х

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

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

Ни одна другая группа команд не различается в разных машинах так сильно, как команды ввода-вывода. В современных персональных компьютерах используются три разные схемы ввода-вывода:

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

Во многих компьютерах сигнал прерывания порождается путем логического умножения (И) бита разрешения прерываний и бита готовности устройства. В этом и следующих двух подразделах мы рассмотрим наборы команд трех машин: Pentium 4, UltraSPARC III и 8051. Каждая из них поддерживает базовые команды, обычно получаемые в результате работы компиляторов, а также дополнительные команды, которые используются редко или используются исключительно операционной системой.

Начнем с Pentium 4.

Логические команды и команды сдвига манипулируют битами в слове или байте. Существует несколько комбинаций.

Команды UltraSPARC III

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

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

Сравнение наборов команд Рассмотренные наборы команд разительно отличаются друг от друга. Pentium 4 — это классическая двухадресная 32-разрядная CISC-машина. Она пережила долгую историю, у нее особые и нерегулярные режимы адресации, и многие ее команды обращаются непосредственно к памяти. UltraSPARC III — это современная трехадресная 64-разрядная RISC-машина с архитектурой загрузки/сохранения, всего двумя режимами адресации, компактным и эффективным набором команд. Архитектура 8051 рассчитана на небольшой встроенный процессор, устанавливаемый на единственную микросхему.

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

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

После вызова этой процедуры решение должно выводиться на экран

Первое, что должна сделать процедура после вызова, — сохранить предыдущее значение

Сопрограммы

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

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

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

Центральный процессор считывает вектор прерываний с шины и временно его сохраняет.

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

Ханойская башня Теперь, когда мы изучили уровень архитектуры набора команд трех машин, нам нужно все обобщить. Давайте подробно рассмотрим все тот же пример решения задачи «Ханойская башня»).

Решение задачи «Ханойская башня» на ассемблере Pentium 4

Решение задачи «Ханойская башня» на ассемблере UltraSPARC III

Архитектура IA-64 и процессор Itanium 2

Проблема Pentium 4

Процессор Pentium 4 в ходе выполнения переупорядочивает команды, подменяет регистры, распределяет функциональные блоки и выполняет множество других функций, что ведет к максимальной загрузке всех аппаратных ресурсов

Сокращение числа обращений к памяти

Один из наиболее серьезных недостатков Pentium 4 — сложность планирования команд для обработки в различных функциональных блоках без взаимозависимостей.

Сокращение числа условных переходов — предикация

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

Еще одна особенность IA-64, повышающая быстродействие, — поддержка спекулятивной загрузки.

Для большинства людей уровень архитектуры набора команд — это «машинный язык».

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

Придумайте такой механизм адресации, который позволяет определять в 6-разрядном поле произвольный набор из 64 адресов, не обязательно смежных.

В UltraSPARC III нет такой команды, которая загружает в регистр 32-разрядное число. Вместо нее обычно используется последовательность из двух команд: SETHI и ADD. Существуют ли еще какие-нибудь способы загрузки 32-раз- рядного числа в регистр?

Почему устройства ввода-вывода помещают вектор прерывания на шину?

Введение в экологию энергетики