Функционирование компьютеров с шинной организацией. Регистры микропроцессора 80286. Регистры общего назначения. Стратегии замещения кэш-памяти

Страницы работы

Фрагмент текста работы

1. Функционирование компьютеров с шинной организацией.

Существует 3 шины: адреса, данных, управления.

Синхрогенератор формирует тактовый сигнал CLK для синхронизации внутреннего функционирования процессора и др. микросхем. Сигнал RESET производит сброс процессора в начальное состояние. Сигнал READY предназначен для удлинения циклов при работе медленными периферийными устройствами.

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

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

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

Шинный контроллер (ШК) предназначен для формирования управляющих сигналов, определяющих перенос данных по шине (ША, ШД). Микропроцессор выставляет 3 сигнала: S0, S1, M/IO, которые определяют 3 цикла шины: подтверждением прерывания, чтение порта ввода/вывода, запись, остановка, чтение с памяти и запись в память. На основании значений  этих сигналов ШК формирует управляющие сигналы, контролирующие динамику данного цикла шины. Каким образом осуществляется чтение слова из оперативной памяти? Это происходит в течение 4 тактов CLK или 2-х состояний процессора. Каждое состояние процессора делится на 2 такта. Во время первого состояния процессор выставляет на ША значение адреса, по которому будет читаться слово. Кроме того, он формирует совместно с шинным контроллером соответствующие значения управляющих сигналов. Эти сигналы и адрес обрабатываются схемой управления памятью, в результате чего, начиная с середины 2-о состояния процессора, на шине данных появляется значение содержимого соответствующего слова из оперативной памяти. Затем процессор считывает значение этого слова с ШД. На этом копирование слова из оперативной памяти заканчивается

15.Стек

Стек - это специальным образом организованный участок памяти, используемый для временного хранения переменных, для передачи параграфов вызываемым подпрограммам и для сохранения адреса возврата при вызове процедур и прерываний. Легче всего представить стек в виде стопки листов бумаги (это одно из значений слова «stack» в английском языке) - вы можете класть и забирать листы бумаги только с вершины стопки. Таким образом, если записать в стек числа 1, 2, 3, то при чтении они будут получаться в обратном порядке - 3, 2, 1. Стек располагается в сегменте памяти, описываемом регистром SS, и текущее смещение вершины стека записано в регистре ESP, причем при записи в стек значение этого смещения уменьшается, то есть стек растет вниз от максимально возможного адреса. Такое расположение стека «вверх ногами» может быть необходимо, например в бессегментной модели памяти, когда все сегменты, включая сегмент стека и сегмент кода, занимают одну и ту же область - всю память. Тогда программа исполняется в нижней области памяти, в области малых адресов, и EIP растет, а стек располагается в верхней области памяти, и ESP уменьшается. При вызове подпрограммы параметры в большинстве случаев помещают в стек, а в ЕВР записывают текущее значение ESP. Тогда, если подпрограмма использует стек для хранения локальных переменных, ESP изменится, но ЕВР можно будет использовать для того, чтобы считывать значения параметров напрямую из стека (их смещения будут записываться как ЕВР + номер параметра).

3. Регистры микропроцессора 80286.

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

1гр.: АХ, ВХ, СХ, ДХ. Они предназначены для хранения данных, 16- битных слов. ВХ и ДХ могут использоваться как адресные регистры. ВХ – адрес смещения байта или слова в оперативной памяти. ДХ – адрес порта ввода/вывода. При обработке данных каждый из регистров используется как один из операндов в команде умножения. АХ – аккумулятор. СХ – счетчик команды LOOP для организации цикла. ДХ – может использоваться как расширение регистра АХ в командах умножения и деления.

2.гр.: SP, BP, SI, DI – группа адресных и индексных регистров могут использоваться в качестве адресных регистров и операндов и инструкций в обработке данных.

3.гр.: CS, SS, ES, DS – образуют группу сегментных регистров.

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

4. Режимы работы процессора 80286. Формирование адреса в обычном режиме.

Процессор может находиться в двух режимах: реальном и защищенном. Способ формирования физического адреса окна зависит от режима работы процессора. В реальном режиме содержимое сегментного адреса сдвигается влево на 4 бита и складывается со смещением, в результате чего получается 20-ти разрядный адрес FFFF:FFFF.

В защищенном режиме процедура формирования физического адреса сложнее. В этом случае содержимое сегментного регистра называемое селектором используется для поиска базового адреса в специальной таблице базовых адресов, находящихся в оперативной памяти. Эта таблица называется дескрипторной таблицей или таблицей описания сегментов памяти, т.к. в ней кроме базовых адресов начала сегментов содержатся размеры сегментов и байт с описанием прав доступа к этим сегментам. Общий размер записей в таблицу дескрипторов равен 8 байт. В защищенном режиме процессор по селектору находящемуся в сегментном регистре, находит соответствующую запись в дескрипторной таблице, считывает значение 24-х битового базового адреса сегмента, добавляет адрес смещения, и полученный результат используют как искомый физический адрес байта или слова в оперативной памяти. В процессоре существует теневой регистр базового адреса сегмента. При изменении содержимого сегментного регистра процессор из дескрипторной таблицы, хранимой в RAM, читает в теневой регистр информацию о сегменте, в частности его базовый адрес. Затем для генерации физического адреса используется не значение базового адреса, а его копия, хранимая в теневом регистре. Существует не одна, а две дескрипторных таблицы: глобальная (ГДТ) и локальная (ЛДT).

20.Структура программы. Сегменты.

Структуры. Директива STRUC позволяет определить структуру данных аналогично структурам в языках высокого уровня. Последовательность директив

имя struc           где поля – любой набор псевдокоманд

        поля            определения переменных или структур,

имя ends            определяет, но не инициализирует структуру данных. В дальнейшем для создания такой структуры в памяти используют имя структуры как псевдокоманды:

метка     имя    <значения>

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

Сегмент программы описывается директивами SEGMENT и ENDS

имя_сегмента   segment [readonly выровненный тип разряд 'класс'] имя_сегмента   ends

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

Readonly: MASM выдаст сообщение об ошибке на все команды, выполняющие запись в этот сегмент. Другие ассемблеры этот операнд игнорируют.

Выравнивание: Указывает ассемблеру и компоновщику, с какого адреса может начинаться сегмент. Значения этого операнда: BYTE, WORD, DWORD, PARA, PAGE. По умолчанию – PARA.

Тип: Выбирает один из возможных типов комбинирования сегментов: PUBLIC (или MEMORY) означает, что все такие сегменты с одинаковым именем, но разными классами будут объединены в один; STACK - то же самое, но должен использоваться для сегментов стека, так как при загрузке программы сегмент, полученный объединением всех сегментов типа STACK, будет использоваться как стек; COMMON: сегменты с одинаковым именем также объединяются в один, но не последовательно, а по одному и тому же адресу; AT – указывает, что сегмент должен располагаться по фиксированному адресу в памяти; PRIVATE (по умолчанию) - сегмент такого типа не объединяется с др.сегментами. Разрядность: Этот операнд может принимать значения USE16 и USE32. Размер сегмента, описанного как USE 16, не может превышать 64 Кб, и все команды и адреса в этом сегменте считаются 16-битными. Сегменты USE32 соответственно могут занимать до 4 гигабайтов, и все команды и адреса в них по умолчанию 32-битные. Если разрядность сегмента не указана явно, используется USE 16 по умолчанию при условии, что перед директивой .MODEL не использовалась директива задания допустимого набора команд .386 или старше. Класс это любая метка, взятая в одинарные кавычки. Все сегменты с одинаковым классом, будут расположены в исполнимом файле непосредственно друг за другом. Для обращения к любому сегменту следует сначала загрузить его сегментный адрес (или селектор в защищенном режиме) в какой-нибудь сегментный регистр. Если в программе определено много сегментов, удобно объединить несколько сегментов в группу, адресуемую с помощью одного сегментного регистра:

имя_группы group имя_сегмента

assume регистр: связь

Обычно сегменты загружаются в память в том порядке, в котором они описываются в тексте программы.

13. Регистры общего назначения:

32-битные регистры ЕАХ (аккумулятор), ЕВХ (база), ЕСХ (счетчик), EDX (регистр данных) могут использоваться без ограничений для любых целей - временного хранения данных, аргументов или результатов различных операций. Названия этих регистров означают то, что некоторые команды применяют их специальным образом. Так, аккумулятор часто используется для хранения результата действий, выполняемых над двумя операндами, регистр данных в этих случаях получает старшую часть результата, если он не умещается в аккумулятор, регистр-счетчик используется как счетчик в циклах и строковых операциях, а регистр-база используется при так называемой адресации по базе. Младшие 16 бит каждого из этих регистров могут использоваться как самостоятельные, и имеют имена (соответственно АХ, ВХ, СХ, DX). На самом деле процессорах 8086 - 80286 все регистры имели размер 16 бит и назывались именно так, а 32-битные ЕАХ -- EDX появились с введением 2-битной архитектуры в 80386. Кроме этого, отдельные байты в 16-бит-ых регистрах АХ - DX тоже имеют свои имена и могут использоваться как 8-битные регистры. Старшие байты этих регистров называются АН, 1Н, СН, DH, а младшие - AL, DL, CL, DL.

AX

EAX                                              AH                    AL   

BX

EBX                                              BH                    BL   

31                                 16  15                 8   7                0

Другие четыре регистра общего назначения - ESI (индекс источника), EDI (индекс приемника), ЕВР (указатель базы), ESP (указатель стека) - имеют более конкретное назначение и могут применяться для хранения всевозможных временных переменных, только когда они не используются по назначению. Регистры ESI и EDI используются в строковых операциях, ЕВР и ESP используются при работе со стеком. Так же как и с регистрами ЕАХ - EDX, младшие половины этих четырех регистров называются SI, DI, ВР и SP соответственно, и в процессорах до 80386 только они и присутствовали.

6. Страничная адресация (СА).

При СА непрерывное пространство линейных адресов памяти разбивается на страницы фиксированного размера (обычно 4 Кб). При обращении к памяти процессор физически обращается не по линейному адресу, а по физическому, с которого начинается страница.

СА включается при установке бита PG, если бит, установлен в 1, то бит отвечает, в каком режиме находится процессор (реальном

Похожие материалы

Информация о работе

Тип:
Ответы на экзаменационные билеты
Размер файла:
195 Kb
Скачали:
0