
- •13 Способы адресации операндов и команд.
- •Способы адресации команд.
- •14 Назначение программируемого контроллера прерываний Системные устройства вычислительной техники. Программируемый контроллер прерываний.
- •15 Назначение контроллера прямого доступа к памяти Программируемый контроллер прямого доступа к памяти (пдп).
- •Типы передач контроллера пдп
- •Внутренние регистры программируемого контроллера пдп
- •16 Назначение системного таймера Системный таймер
- •17 Назначение системных регистров и глобальной дескрипторной таблицы. Системные регистры.
- •18 Защищенный режим работы цп. Защищенный режим работы вычислительных машин. Максимальный режим работы цп.
- •19 Назначение дескрипторов и шлюзов Дескрипторы и шлюзы.
- •20 Организация памяти вычислительных машин. Кэш-память Организация памяти вычислительных машин.
- •Виды кэш памяти.
- •Целостность данных в системах кэш памяти.
- •21 Понятие cisc и risc архитектур процессоров Понятие cisc и risc архитектур
- •22 Конвейеризация Конвейеризация.
13 Способы адресации операндов и команд.
Команды, содержащие только регистровые операнды являются наиболее компактными. В связи с тем что все операции с регистровыми операндами реализуются операционным блоком процессора без обращения к основной оперативной памяти, команды с регистровыми операндами выполняются быстрее других типов команд.
Непосредственная адресация позволяет задавать фиксированное значение операнда непосредственно в адресной части команды.
Собственная адресация при этом отсутствует, т.к. ОП=Aк. Непосредственно адресация удобна при работе с константами. Расширение формата команд за счет указания самого операнда в адресных кодах команд.
Неявная адресация – способ адресации, при котором в команде не содержатся явные указания об адресе операнда. При неявной адресации код операции определяет адрес операнда, при этом в адресной части команды не указывается, но этот адрес подразумевается. Неявно адресуемыми операндами могут быть отдельно адресуемые регистры процессора, например, аккумулятор, индексный и базовый регистры, указатель стека и др.
Косвенная адресация – это эффективный и важный способ адресации, при котором адрес, указываемый в команде, является указателем ячейки, содержащей исполнительный адрес операнда в памяти. Фактически, при косвенной адресации в команде указывается адрес адреса. Для обозначение косвенной адресации используют запись вида:
Аи = Ак
Частым видом косвенной адресации явл. Регистровая косвенная операция, при которой исходный адрес команды адресует общий регистр процессора, содержащий адрес операнда в памяти.
С точки зрения затрачиваемых разрядов для предоставления адреса регистровая косвенная операция оказывается намного эффективнее прямой адресации, т.к. адрес указываемого в команде регистра короче адреса операнда в памяти. Однако, регистровая косвенная адресация требует предварительной загрузки регистра косвенным адресом памяти, а на это требуется дополнительное время. Косвенную адресацию удобно использовать при обработке списков и массивов данных, размещенных в памяти, а также при решении задач, когда, оставляя неизменным адрес в команде, можно изменять содержимое ячейки с этим адресом. При использовании косвенной адресации, заметно упрощается построение цикла. Модификацию адресов операнда при циклической обработке удобно выполнять с помощью команд инкрементирования или декрементирования содержимого регистра с адресом текущего элемента массива. При инкрементировании в значение регистра прибавляется число, определяемое размером, т.е. количеством байт операнда. При декрементировании из регистра вычитается соответствующее число.
При наличии средств автоматическая классификация адреса, косвенная адресация называется автоинкрементной или автодекрементной. Развитием и модификацией метода косвенной адресации является относительная адресация или базирование. Это обобщенное название ряда методов адресации, обеспечивающих вычисление исполнительного адреса Аи операнда памяти в виде суммы базового значения адреса и смещения disp, указанного в команде.
Поскольку вычисления исполнительного адреса Аи связаны с потерей времени, при определении адреса Аи, операцию суммирования часто заменяют операцией конкатенации, т.е. приписывания разрядов. При конкатенации базовый адрес содержит старшие, а смещение – младшие разряды исполнительного адреса. Однако, в этом случае базовый адрес может задавать не любую ячейку памяти, а только ячейки, адреса которых содержат нули в младших разрядах.
Базирование или относительная адресация широко применяется для адресации памяти, представленной виде блока фиксированного или произвольного размера. Блоки фиксированного размера называют страницами, а произвольного – сегментами. Соответственно различают память со страничной организацией и сегментированную память. Полная информация, необходимая для определения физического адреса произвольной ячейки памяти подобной организации содержит указатель адреса, который включает в себя идентификатор базового адреса блока и смещения внутри блока. Для определения базового адреса блока (сегмента или страницы) используют различные способы идентификации. Чаще всего базовые адреса блоков хранятся в специальных таблицах, а идентификатор указателя адреса служит индексом или номером строки такой таблицы. Разрядность базового адреса, в общем случае, определяет максимальное число адресуемых блоков памяти, а число бит в смещении задает максимальный размер блока. Исполнительный или физический адрес операнда образуется в результате суммирования базового адреса блока и смещения внутри блока. Важной особенностью базирования или относительной адресации является то, что при изменении базовых адресов блоков их содержимое не меняется и блоки можно свободно перемещать в пределах всего адресного пространства памяти. Благодаря этому свойству, базирование обеспечивает очень важную функцию операционных систем, так называемую перемещаемость программы.
Перемещаемость программы предполагает неизменность адресных ссылок в программе при ее перемещении внутри доступного процессору пространства памяти. Базовые адреса исполняемых программ определяются ОС непосредственно при загрузке программы в оперативную память. В системах виртуальной памяти базирование используется для адресации памяти существенно большего размера чем реальная оперативная память вычислительной машины. При относительных адресациях команд, базовый адрес размещается в счетчике команд, а смещение disp, указываемое в команде, определяет адрес перехода, относительно текущего значения счетчика команд, т.е. исполнительный адрес определяется по формуле:
Аи = (СК) +disp (32)
Относительную адресацию часто используют в командах условной и безусловной передачи управления и для адресации специальных структур данных таких как массивы, структуры и т.д. Базовые адреса операндов, при использовании относительной адресации обычно размещаются в регистрах процессора. Т.к. одно из составляющих исполнительного адреса находится в адресуемом команде регистре, относительную адресацию данных иногда называют модифицированным способом косвенной адресации или косвенной адресацией со смещением. В зависимости от способа использования адресуемого в команде регистра различают два вида косвенной адресации со смещением:
- базовую адресацию
- индексную адресацию
Регистры, используемые в команде, которые соответствуют этим способам адресации, называют базовыми и обозначают В и индексными I.
Индексная адресация
Эта адресация обычно применяется для обработки упорядоченных массивов значений переменных, каждый из которых определяется собственным номером. При индексной адресации базовый адрес массива задается смещением disp, указываемым в команде, а значение индекса или номер элемента массива определяется содержимым индексного регистра. Исполнительный адрес при индексной адресации определяется путем суммирования смещения с содержимой индексного регистра:
Аи =(I) + disp
И.а. применяется если надо считать список данных из последовательных ячеек данных не подряд, а с некоторым шагом, указанном в индексе. Например, когда элементы матрицы, записанные по строкам необходимо прочитать по столбцам. Данный способ адресации особенно эффективен если в процессе используется механизм автоматического приращения или уменьшения содержимого индексного регистра при каждом обращении к нему. В целом, индексная адресация является развитием метода косвенной адресации.
Базовая адресация
Для доступа к структурам данных переменной длинны применяют базовую адресацию.
Это способ адресации, при котором базовый адрес, определяющий начало набора элементов, хранится в базовом регистре, а смешение в команде определяет расстояние до определенного элемента.
Аи = (В)+disp
Базово-индексная адресация
Для адресаци элемента указываемом в массиве используют базово-индексную адресацию. При этом способе адресации базовый адрес массива задается указателем базы, то есть базовым регистром, а номер элемента массива определяется значением индексного регистра. Базово-индексная адресация удобна при работе со сложными структурами данных, т.к. она позволяет одновременно изменять две адресных компоненты. Базово-индексную адресация со смещением применяют для адресации элементов в указываемом массиве записи, то есть в массиве, каждый элемент которого является записью (структурой). Базовый адрес массива задается указателем базы. Номер записи (элемента массива) определяется значением индексного регистра, а смещение указывает расстояние в записи.