
- •Билет №1 Структура эвм общего назначения. Алу, уу
- •Арифметико-логические устройства.
- •Устройства управления.
- •Описание сегментного механизма
- •Билет №2 Структура эвм общего назначения. Risc и cisc процессоры. Форматы машинных команд.
- •Risc и cisc процессоры.
- •Форматы машинных команд.
- •Описание страничного механизма.
- •Билет №3 Структура эвм общего назначения. Способы адресации. Стековая адресация. Виды стеков.
- •Способы адресации.
- •Стековая адресация. Виды стеков.
- •Особенности страничного механизма в Pentium и в р6.
- •Билет №4 Микропроцессор вм86. Назначение входов/выходов вм86 в минимальном/максимальном режиме.
- •Назначение входов/выходов вм86 в максимальном режиме.
- •Общие сведения о механизмах адресации в защищенном режиме.
- •Билет №5 Внутренняя архитектура мп вм86. Программная модель мп вм86.
- •Программная модель мп вм86.
- •Форматы системных таблиц защищенного режима. Системные таблицы
- •Билет №6 мп вм86. Сегментация памяти. Организация оперативной памяти.
- •Общие сведения о 32х разрядных процессорах фирмы Intel. Tss, ldt, gdt. Селектор,дескриптор. Билет №7 мп вм86. Организация адресного пространства портов ву.
- •Общие сведения о 32х разрядных процессорах фирмы Intel. Режимы работы, Режимы работы 32 разрядного процессора.
- •Билет №8 Программируемый адаптер к1810вв55 (i8255)
- •Битовая карта ввода вывода
- •Билет 9 Программируемый таймер к1810ви54 (i8254)
- •Механизм перехода в защищенном режиме
- •Билет №10 Общие сведения об обработке прерываний.
- •Формат машинной команды 32х разрядного процессора.
- •Билет №11 Система прерываний вм86.
- •Внутренняя кэш-память.
- •Билет №12 Контроллер прерываний к1810вн59 (i8259). Настройка вн59.
- •Сведения о внутренней организации 32-х разрядных процессорах, (состав, назначение).
- •Билет №13 Общие сведения о прямом доступе к памяти.
- •Буфер tlb. Кэш-память страниц.
- •Билет 14 Контроллер прямого доступа к памяти к1810вт37 (i8237).
- •Программирование кпдп вт37
- •Вопрос №2
- •Билет 15
- •1. Организация процессорного модуля вм86.
- •2.21 Организация процессорного модуля вм86.
- •Программная модель 32-разрядного мп.
- •Программная модель 32 разрядного мп
- •Билет 16 Слабосвязанная конфигурация.
- •2.23. Слабо связанные конфигурации.
- •Форматы таблиц gdt, ldt и idt.
- •3.4. Системные таблицы
- •Билет 17 Арбитр шин к1810вб89 (i8289).
- •2.24. Арбитр шин к1810вб89 (i8289).
- •Формат дескриптора.
- •3.15 Формат дескриптора.
- •Билет №18 Сильно связанные конфигурации на примере совместной работы мп86 и арифметического сопроцессора вм87.
- •Форматы элементов pte и pde.
- •3.8. Формат элемента pte (pde).
- •Билет №19 Формат машинных команд мп вм86.
- •Механизм переключения задач. Формат сегмента tss
- •Билет №20 мп вм86. Сегментация памяти. Организация оперативной памяти.
- •Сегментация памяти.
- •2.7 Организация оперативной памяти.
- •Общие сведения о кэш-памяти.
- •Внутренняя кэш-память
- •Сведения о кэшах в процессорах фирмы Intel.
Билет №5 Внутренняя архитектура мп вм86. Программная модель мп вм86.
МП ВМ86 состоит из двух основных блоков:
операционного устройства (ОУ);
устройства шинного интерфейса (ШИ).
ОУ включает в себя восемь регистров общего назначения, регистр флагов, шестнадцатиразрядное АЛУ и микропрограммное УУ. Задачей ОУ является выполнение заданных в команде операций. ШИ содержит блок сегментных регистров, указатель команд (программный счетчик), сумматор адресов, очередь команд и буферы, обеспечивающие связь с шиной. ШИ обеспечивает обмен информацией между МП и ОП или портами ВУ. То есть ШИ выполняет циклы шины.
Оба этих устройства могут работать параллельно. Такая структура МП позволяет организовать, так называемый, конвейер команд. В процессе выполнения любой команды всегда имеется промежуток времени, когда системная шина оказывается свободна. Длительность этого промежутка зависит от сложности команды. Обычно, чем сложнее команда, тем длиннее данный промежуток. ШИ использует эти промежутки для опережающей выборки команд из памяти. То есть пока одна команда выполняется, другие команды считываются из памяти, поэтому к моменту начала выполнения команды она, как правило, уже находится внутри МП и не надо тратить время на ее выборку из ОП. Таким образом, конвейер команд позволяет повысить общее быстродействие системы. Отметим, что в МП ВМ86 реализован самый простой двухступенчатый конвейер. В современных МП число ступеней конвейера значительно больше (одна команда выполняется, другая выбирается из ОП, третья дешифрируется, для четвертой формируется адрес операнда и. т. д.).
Выбранные с опережением из ОП команды надо где-то внутри МП хранить. С этой целью в состав ШИ введена очередь команд, представляющая из себя стек, реализующий процедуру FIFO и имеющий глубину шесть байт. Машинные команды МП ВМ86 занимают от одного до шести байт (без учета префиксов). Таким образом, в очереди может одновременно находиться от одной до шести команд. Очередь хорошо заполняется, когда МП выполняет сложные команды (умножение, деление) и может оставаться наполовину пустой при выполнении последовательности простых команд.
Если процессор выполняет команду перехода (jmp, call и.т.д.), информация в очереди оказывается ненужной. Поэтому в этом случае МП автоматически очищает очередь команд и начинает заполнять ее заново.
Программная модель мп вм86.
Программная модель ВМ86 представлена на рис. 6. Все регистры ВМ86 можно разбить на группы. Первую группу составляют РОНы, к которым относятся регистры ax, bx, cx и dx. Любой из этих регистров можно рассматриваться и как один шестнадцатиразрядный, и как пара восьмиразрядных регистров. Основное назначение РОНов – временное хранение информации, однако, на каждый из этих регистров в ВМ86 возлагается и ряд специальных функций.
Регистр ax – в нем формируется результат (или его часть) в командах умножения и деления. Кроме того обмен информацией между МП и портами ВУ можно проводить только через регистры ax и al. То есть допустимы команды
out 20h,al и in ax,70h
и недопустимы
out 20h,ah и in bx,70h.
Регистр bx - первый базовый регистр процессора. Это единственный регистр из группы РОНов, который можно использовать для косвенной и базовой адресации. То есть допустимы команды
mov al,[bx] и add [bx +7],dx
и недопустимы
mov al,[ax] и add [bh +7],dx.
Если для адресации используется регистр bx, то, по умолчанию, в качестве сегментного регистра берется регистр ds.
Регистр cx используется в качестве счетчика в команде цикла loop и командах, перед которыми поставлен префикс повторения rep. То есть цикл или команда с префиксом будет повторяться до тех пор, пока сх не обнулится (естественно, после каждого прохода содержимое сх автоматически уменьшается). Кроме того регистр cl используется в командах сдвига для задания числа сдвигов.
Рис. 6
Регистр dx – это единственный регистр МП, который можно использовать для косвенной адресации портов ВУ. То есть допустимы команды
out [dx],ax и in al,[dx].
Регистры bp, sp, si и di составляют группу регистров указателей. Основное их назначение – участвовать в формировании Аэф. Однако если для этой цели они не нужны, их можно использовать в качестве РОНов . Регистры этой группы могут быть только шестнадцатиразрядными.
Регистр bp - второй базовый регистр процессора. Если для адресации используется регистр bp, то, по умолчанию, в качестве сегментного берется регистр ss. Таким образом, использование для адресации регистра bp позволяет обращаться к области стека, как к обычной памяти.
Регистры si и di – индексные регистры процессора. Используются для косвенной и базово-индексной адресации. При этом необходимо соблюдать следующее правило: в любой команде для адресации можно использовать только один базовый и только один индексный регистр. То есть допустимы команды
sub [di],7 и mov cx,[bp + si +7]
и недопустимы
mov [bx+bp],al и mov dh,[si + di].
Регистр sp – указатель стека. Использовать его в качестве РОНа не рекомендуется.
Регистр ip не относится ни к какой группе и называется указателем команд. По своей сути – это программный счетчик. В нем всегда формируется смещение в кодовом сегменте и, таким образом, ip всегда задает адрес следующей команды программы. Сменить содержимое ip можно только командами перехода, то есть командами jmp, call, ret и др.
Регистры cs, ss, ds и es составляют группу сегментных регистров.
Регистр cs всегда используется вместе с регистром ip при формировании адреса следующей команды программы. Данный адрес формируется следующим образом:
Аф = (cs)×16 + (ip).
То есть содержимое cs задает начальный адрес сегмента кода.
Сегментный регистр ss задает начальный адрес сегмента стека и всегда используется вместе с регистром sp для формирования Аф при обращении к стеку:
Аф = (ss)×16 + (sp).
Содержимое сегментного регистра ds задает начальный адрес сегмента данных. В командах, оперирующих с данными, при формировании физического адреса ОП в качестве сегментного регистра по умолчанию (кроме случая, когда в качестве базового используется регистр bp) берется ds. Однако при этом мы всегда имеем возможность сменить сегмент, прямо указав сегментный регистр, который должен использоваться для формирования Аф, с помощью префикса замены сегмента. Например:
mov [bx],ax
Аф = (ds)×16 + (bx);
mov ss:[bx],ax
Аф = (ss)×16 + (bx).
Содержимое сегментного регистра es задает начальный адрес дополнительного сегмента. По умолчанию этот регистр используется только при формировании физического адреса приемника в строковых командах. В остальных случаях использование es задается с помощью префикса замены сегмента.
В таблице 3 показаны все возможные случаи формирования Аф и компоненты, принимающие участие в этом процессе
Регистр f – регистр флагов. Его формат приведен на рис. 7. В этом регистре определены следующие флаги:
cf (carry) – флаг переноса. Этот флаг устанавливается в единицу, если в процессе операции возникает перенос из старшего разряда (или был заем в старший разряд при вычитании). С этим флагом работают некоторые команды условных переходов. Программист может непосредственно влиять на значение этого флага, используя команды stc, clc и cmc (установить , сбросить, инвертировать).
pf (parity)– флаг четности. Устанавливается в единицу, если в младшем байте результата получилось четное число единиц. Флаг можно использовать для организации «контроля по четности», с ним работают некоторые команды условных переходов.
af (adjust) – флаг межтетрадного переноса. Устанавливается в единицу, если в процессе операции возникает перенос из 3-го бита в 4-й (или при заеме из 4-го бита при вычитании). С флагом работают команды коррекции для двоично-десятичной (BCD) арифметики.
Таблица 3
Вид операции |
Сегментный регистр по умолчанию |
Возможность смены сегментного регистра с помощью префикса |
Внутрисегментное смещениие |
Выборка команды |
cs |
нет |
ip |
Стековая операция |
ss |
нет |
sp |
Обращение к памяти (кроме bp в качестве базового регистра) |
ds |
cs, ss, es |
Аэф |
Обращение к памяти при bp в качестве базового регистра |
ss |
cs, ds, es |
Аэф |
Источник в строковой команде |
ds |
cs, ss, es |
si |
Приемник в строковой команде |
es |
нет |
di |
Обращение к ВУ |
нет |
нет |
dx или прямая адресация |
Рис. 7
zf (zero) – флаг нулевого результата. Устанавливается в единицу, если результат операции оказался равен нулю. С флагом работают некоторые команды условных переходов.
sf (sign)– флаг знака. Устанавливается в единицу, если в старшем разряде результата получилась единица, то есть результат является отрицательным числом. С флагом работают некоторые команды условных переходов.
of (overflow)– флаг переполнения. Устанавливается в единицу, если в результате выполнения арифметической операции произошло переполнение разрядной сетки. С флагом работает единственная команда into – «прерывание, если установлен флаг of».
tf (trap)– флаг трассировки. Если этот флаг установлен в единицу, программа выполняется в «пошаговом режиме», так как после каждой команды МП автоматически генерирует прерывание типа 1. Таким образом этот флаг используется для отладки. У программиста нет в распоряжении команд, влияющих на этот флаг. Поэтому изменить значение флага tf можно только косвенным образом, через стек. Например, следующий фрагмент программы сбрасывает tf в ноль:
pushf
mov bp,sp
and [bp],0feffh
popf
if (interrupt enable)– флаг разрешения внешних прерываний. Если этот флаг установлен в ноль МП игнорирует запросы на прерывание, приходящие на вход INTR. Для работы с этим флагом есть две команды:
sti - if ← 1 – разрешить внешние прерывания;
cli - if ← 0 – запретить внешние прерывания.
df (direction)– флаг направления, задает автоинкремент или автодекремент регистров si и di в строковых командах. Программист имеет возможность влиять на этот флаг с помощью команд std и cld.