
- •Билет №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.
Билет №19 Формат машинных команд мп вм86.
Машинная команда микропроцессора 8086 имеет формат, приведенный на рис. 40.
Рис. 40
Префикс – это байт, идущий перед командой и несколько меняющий ее смысл. Для МП 8086 допустимы: префикс блокировки, префикс замены сегмента и префикс повторения. В большинстве команд префиксы отсутствуют, однако, в команде могут использоваться и все три префикса одновременно. Префикс блокировки (lock) имеет значение 11110000. Префикс замены сегмента имеет формат 011sr110. Здесь поле sr задает сегментный регистр, который используется в команде (табл.6). Префикс повторения (rep) имеет значение 11110011 (или в еще одном варианте 11110010).
Таблица 6.
11110010).
Поле КОП – единственное из полей, которое всегда присутствует в команде. Занимает это поле, в зависимости от команды, один или два байта. Младший бит этого поля (w) в большинстве случаев задает разрядность операции. При w=0 команда работает с байтом, при w=1 – со словом.
Постбайт либо в команде отсутствует, либо занимает один байт. Это поле задает регистры, которые принимают участие в формировании адресов операндов. Формат постбайта приведен на рис.41.
Рис. 41
Поле reg (регистр) задает регистр в двухоперандных командах (табл. 7). Аналогично трактуется поле rm (регистр/память) при md=11 (mode – «режим»). При других значениях md, поле rm задает способ формирования адреса памяти (табл. 8).
Поле disp (dispersion – «смещение») задает смещение при базовой адресации (или адрес при прямой адресации) и может занимать 0, 1 или 2 байта.
Поле data («операнд») присутствует, если в команде используется непосредственная адресация.
Таблица 7.
Таблица 8.
Например, команда lock add cs: [bp+ di+100h], 77h имеет шестнадцатеричное представление: F0 2E 80 83 0010 77 ( F0 – младший байт в ОП). Здесь F0 – префикс блокировки (lock), 2E –префикс замены сегмента (cs: ), 80 – код команды (операции) (add), 83 – постбайт (задает способ формирования адреса: bp+di+disp), 0010 – смещение (100h) и 77 – непосредственный операнд.
Механизм переключения задач. Формат сегмента tss
Как уже говорилось ранее размер сегмента TSS должен быть не менее 104-х байт. При обращении к дескриптору TSS МП проверяет записанный в этом дескрипторе размер и если он оказывается меньше 104-х байт генерируется прерывание. Однако сегмент TSS может иметь больший размер. В этой дополнительной области сегмента TSS может, например, располагаться битовая карта ввода-вывода - input-output map (смотри ниже). Кроме того эту дополнительную область может использовать в своих целях системный программист. Например, в этой области системный программист может сохранять содержимое регистров арифметического сопроцессора. Переключая задачи МП, для экономии времени, не сохраняет контекст сопроцессора. Отсюда если задача А переключилась на задачу В и обе они работают с сопроцессором, очевидно что задача В (если не принять мер) испортит контекст задачи А. Поэтому переключаясь на новую задачу МП автоматически устанавливает бит TS (задача переключена) в регистре CR0. При выполнении любой команды сопроцессора МП проверяет бит TS и если он установлен будет прерывание. Обработчик этого прерывания должен сохранить контекст сопроцессора, сбросить бит TS и обеспечить рестарт команды.
Далее рассмотрим формат сегмента TSS (смотри рис. 60):
Дадим необходимые пояснения к рисунку. Формат рисунка - 4 байта по горизонтали. Слева от полей приведено смещение (0h, 4h и.т.д) относительно начала сегмента TSS. Назначение таких полей как EIP - EDI и ES -GS по нашему мнению очевидно и мы их рассматривать не будем. Остальные поля либо неочевидны, либо имеют свою специфику.
Поле «обратной связи» (previous task link). Пусть задача А вызвала задачу В в качестве подпрограммы (командой call far). Естественно предполагать что когда-нибудь нам потребуется возврат в задачу А. Для того чтобы куда-нибудь вернуться нам потребуется адрес возврата. Адресом возврата здесь будет селектор дескриптора сегмента TSS задачи А. Однако задачи А и В ничем между собой не связаны и в общем случае задаче В этот селектор неизвестен. Поэтому когда задача А вызывает задачу В командой call far МП автоматически загружает в поле обратной связи задачи В (входящей задачи) селектор дескриптора TSS задачи А. Этот селектор МП берет из видимой части регистра tr. Тем самым обеспечивается возможность возврата в задачу А. Если переключение задач идет по команде jmp far, поле обратной связи входящей задачи заполняется нулями, так как возврат куда-либо не предполагается.
-
31 16
15 0
0h
поле обратной связи
4h
esp0
8h
ss0
0ch
esp1
10h
ss1
14h
esp2
18h
ss2
1ch
cr3
20h
eip
24h
ef
28h
eax
2ch
ecx
30h
edx
34h
ebx
38h
esp
3ch
ebp
40h
esi
44h
edi
48h
es
4ch
cs
50h
ss
54h
ds
58h
fs
5ch
gs
60h
ldtr
64h
база битовой карты ввода-вывода
T
Рис. 60
CR3. Наличие этого поля показывает что при переключении задач меняется содержимое регистра cr3, а следовательно происходит переход к новому каталогу таблиц (если конечно страничный механизм включен).
LDTR. Из поля LDTR TSS входящей задачи загружается видимая часть регистра ldtr. Таким образом происходит переключение на новую таблицу LDT. Старое содержимое видимой части регистра ldtr в поле LDTR TSS выходящей задачи не сохраняется (для экономии времени), поскольку подразумевается что задача всегда работает с одной и той же LDT.
Бит Т (trap – «ловушка»). Если в TSS задачи В этот бит установлен в единицу, то при переключении на задачу В будет прерывание типа 1. Этот бит используется для отладки.
SSi - ESPi. Каждая пара такого вида задает вершину стека для одного из уровней привилегий. Всего в TSS задаются три таких пары для уровней привилегий 2, 1 и 0. А для 3-го уровня привилегий вершина стека в TSS не задается ! Содержимое этих полей при переключении задач не меняется. Вообще эти поля используются не в процессе переключения задач, а в процессе выполнения задач. Как уже говорилось ранее, существует правило, согласно которому, уровень привилегий текущего сегмента стека (DPL стека) должен быть всегда равен CPL. Пусть мы работаем на уровне привилегий i (CPL = i ). И пусть затем через шлюз вызова мы вызвали подпрограмму с более высоким уровнем привилегий (теперь CPL< i ). В соответствии с рассмотренным правилом мы обязаны сменить стек (на более привилегированный). Как раз в этом случае МП и возьмет вершину стека соответствующего уровня из TSS текущей задачи. При этом он автоматически сохранит вершину старого стека в новом стеке, чтобы ее можно было восстановить при возврате из подпрограммы. Поскольку мы никаким способом не можем перейти к менее привилегированной программе то на 3-й уровень мы можем попасть только с 3-го уровня. Именно поэтому в TSS отсутствуют поля SS3:ESP3.
Поле битовой карты ввода-вывода задает смещение этой карты (если она есть) относительно начала TSS.
Процессор может работать с сегментами TSS микропроцессора i 286. Формат такого сегмента отличается от рассмотренного выше хотя бы потому что регистры МП 286 16-ти разрядные. TSS МП 286 содержит следующую последовательность полей ( полей, заполненных нулями в нем нет и по объему он меньше TSS, рассмотренного выше): поле обратной связи, sp0, ss0, sp1, ss1, sp2, ss2, ip, f, ax, ..., ds, ldtr.