Смекни!
smekni.com

Архитектура системы команд 2 (стр. 2 из 6)

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

Метод адресации Примеркоманды Смысл команды
метода
Использование
Регистровая Add R4,R3 R4=R4+R5 Требуемое значение в регистре
Непосредственная или литеральная Add R4,#3 R4=R4+3 Для задания констант
Базовая со смещением Add R4,100(R1) R4=R4+M[100+R1] Для обращения клокальным переменным
Косвенная регистровая Add R4,(R1) R4=R4+M[R1] Для обращения по указателю или вычисленному адресу
Индексная Add R3,(R1+R2) R3=R3+M[R1+R2] Иногда полезна при работе с Массивами: R1 - база, R3 - индекс
Прямая или абсолютная Add R1,(1000) R1=R1+M[1000] Иногда полезна для обращения к статическим данным
Косвенная Add R1,@(R3) R1=R1+M[M[R3]] Если R3-адрес указателя p, то выбирается значение по этому указателю
Автоинкрементная Add R1,(R2)+ R2=R2+dR1=R1+M[R2] Полезна для прохода в цикле по массиву с шагом: R2 – началомассива В каждом цикле R2 получает приращение d
Автодекрементная Add R1,(R2)- R1=R1+M[R2]R2=R2-d Аналогична предыдущей
Базовая индексная со смещением имасштабированием Add R1,100(R2)[R3] R1=R1+M[100]+R2+R3*d Для индексации массивов

4. Типы команд

Команды традиционного машинного уровня можно разделить на несколько типов

Тип операции Примеры
Арифметические и логические Целочисленные арифметические и логические операции: сложение, вычитание, логическое сложение, логическое умножение и т.д.
Пересылки данных Операции загрузки/записи
Управление потоком команд Безусловные и условные переходы, вызовы процедур и возвраты
Системные операции Системные вызовы, команды управления виртуальной памятью и т.д.
Операции с плавающей точкой Операции сложения, вычитания, умножения и деления над вещественными числами
Десятичные операции Десятичное сложение, умножение, преобразование форматов и т.д.
Операции над строками Пересылки, сравнения и поиск строк

5.Формат команд

Существует несколько видов форматов команд, а точнее 3

- одноадресная

- двухадресная

- трехадресная

Желательно чтобы команда имела 32-х разрядный формат. В задании на проектирование было указанно использование 3-х адресной команды.

Она имеет следующий вид:


31 0

КОП- 7- разрядное поле кода операции. Позволяет определить что за операция должна выполняться.

R0, R1, R2 – регистр-приемник и регистры-источники данных.

R0 и R1 – 3-разряда

R2- 19-разрядов.

Содержимое поля R2 интерпретируется не только как номер регистра, но и как смещение при операциях обращения к памяти. И адрес памяти определяется как A=<R1>+R2.

6.Форматы данных

В процессоре могут использоваться числа с фиксированной точкой и плавающей точкой.

Числа с ФТ представляют собой целые со знаком или без знака. Старший бит числа является знаковым. Нулевое значение этого бита указывает на то, что число положительное, единичное на то, что число отрицательное.

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

Целые без знака используют так же для представления адресов.

Числа с ПТ имеют один знаковый бит, 8 битов порядка и 23 бита мантиссы. При работе с ними необходимо предусмотреть несколько исключительных ситуаций

+0: s=0; p=0..0; M=0..0;

-0: s=1; p=0..0; M=0..0;

-¥: s=0; p=1..1; M=0..0;

+¥: s=1; p=1..1; M=0..0;

NAN: s=X; p=1..1; M=X..X( кроме 0,,0).

1 байт - знаковый

7 6 0

-беззнаковый

7 0

состоит из 8 разрядов и изменяется от –127 до +127

2 полуслово - знаковое

15 14 0


-беззнаковое

15 0

состоит из 16 разрядов и изменяется от -32768 до +32768


3 слово -знаковое

31 30 0


-беззнаковое

31 0 состоит из 32 разрядов

4 число с ПТ

31 30 23 22 0

7. Виртуальная память

Виртуальная память и организация защиты памяти

Концепция виртуальной памяти

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

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

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

Она делит физическую память на блоки и распределяет их между

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

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

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

этого бремени. Она автоматически управляет двумя уровнями иерархии памяти: основной памятью и внешней (дисковой) памятью.

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

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

Ниже рассмотрен первый тип организации виртуальной памяти.

Страничная организация памяти

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

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

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

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