Към съдържанието

Глава V — Системна архитектура на x86 микропроцесорите

1. Режими на работа

Архитектурата на Intel поддържа три режима и един подрежим:

Преходи между режимите

CR0.PE=1

(сериализация)

EFLAGS.VM=1

EFLAGS.VM=0

CR4.PAE=1 + EFER.LME=1

+ CR0.PG=1

CR0.PG=0

SMI# сигнал

SMI# сигнал

SMI# сигнал

RSM инструкция

RSM инструкция

RESET / включване

**Реален режим**

Real Mode

1 MB, 16-bit, без защита

**Защитен режим**

Protected Mode

4 GB, 32-bit, пълна защита

**Виртуален 8086**

V86 Mode

подрежим на PM

**Long Mode** (64-bit)

IA-32e

256 TB виртуален адрес

**Системно управление**

SMM

отделно адресно пространство

1.1 Защитен режим (Protected Mode — P-режим)

  • Нормалният режим на процесора
  • Достъпни всички инструкции и архитектурни възможности
  • Сегментиране и странициране за управление на паметта
  • 4 нива на привилегия (0–3): ниво 0 (kernel), ниво 3 (user)
  • Линейно адресно пространство: 4 GB
  • Апаратна среда за многозадачно изпълнение

1.2 Реален режим (Real Mode — R-режим)

  • Базова 16-разредна архитектура (имитира i8086)
  • Максимален размер на паметта: 1 MB (20-разредна шина)
  • Сегментен регистър × 16 + отместване = физически адрес
  • При включване на захранването или RESET → МП винаги стартира в R-режим
  • Няма защита на паметта

1.3 Режим на системно управление (SMM — System Management Mode)

  • Специален режим за управление на консумацията на мощност
  • Активира се от системен сигнал SMI# (System Management Interrupt)
  • Процесорът съхранява контекста на прекъснатата задача
  • Превключва към отделно адресно пространство (SMRAM)
  • Връщане само с инструкцията RSM
  • Въведен за пръв път в i386SL

1.4 Виртуален 8086 режим (V86 — V-режим, подрежим на P-режима)

  • Не е самостоятелен режим — работи в средата на P-режима
  • Позволява изпълнение на 8086 програми в защитена мултизадачна среда
  • Задава се с бит VM = 1 в EFLAGS

64-битов режим (Long Mode) — само при Intel 64 / AMD64

  • IA-32e режим включва два подрежима:
    • 64-битов режим: пълна 64-битова архитектура (RIP-relative адресиране, 16 GPR)
    • Compatibility режим: изпълнение на 32/16-битови приложения без прекомпилиране

2. Флагове и полета в EFLAGS (RFLAGS)

EFLAGS е 32-разреден регистър (RFLAGS е 64-битов в Long Mode, горните 32 бита са резервирани).

Статусни флагове — задават се от аритметични инструкции

ФлагНаименованиеУсловие за вдигане
CFCarry FlagПренос/заем от старшия бит
PFParity FlagЧетен брой единични бита в младшия байт
AFAuxiliary CarryПренос от бит 3 към бит 4 (BCD)
ZFZero FlagРезултатът е нула
SFSign FlagЗнак на резултата (= старшия бит)
OFOverflow FlagРезултатът излиза извън знаковия диапазон

Системни и управляващи флагове

ФлагНаименованиеФункция
DFDirection FlagDF=0 → ESI/EDI нарастват; DF=1 → намаляват (стрингови инструкции)
IFInterrupt FlagIF=1 → INTR прекъсванията са разрешени; IF=0 → маскирани
TFTrap FlagTF=1 → стъпков режим; след всяка инструкция → #DB (дебъгер)
IOPLI/O Privilege LevelМинимално ниво на привилегия за IN/OUT инструкции
NTNested TaskNT=1 → IRET превключва задача (а не връща от прекъсване)
RFResume FlagПотиска #DB след breakpoint (избягва безкраен debug цикъл)
VMVirtual 8086 ModeVM=1 → виртуален 8086 режим (подрежим на PM)
ACAlignment CheckAC=1 → изключение при неизравнен достъп до памет
VIFVirtual Interrupt FlagВиртуален образ на IF (за V86/VME)
VIPVirtual Interrupt PendingЧакащо виртуално прекъсване
IDIdentificationАко може да се пише → процесорът поддържа CPUID

IF се управлява с STI (1) и CLI (0), или косвено чрез POPF, IRET.


3. Управляващи регистри, регистри за управление на паметта и команди за работа с тях

Управляващи регистри CR0–CR4

CR0 (32/64 бита)

Управлява режима на работа и основните характеристики:

БитФлагФункция
0PEProtection Enable: PE=1 → защитен режим
1MPMonitor Coprocessor
2EMEmulation: EM=1 → симулира отсъствие на FPU
3TSTask Switched: вдига се при всяко превключване на задача
4ETExtension Type (не се използва в Pentium/P6)
5NENumeric Error: NE=1 → вътрешен механизъм за FPU грешки
16WPWrite Protect: WP=1 → ядрото не може да пише в read-only потребителски страници
18AMAlignment Mask: AM=1 → разрешава контрол за изравняване
29NWNot Write-through: NW=0 → write-through кеширане
30CDCache Disable: CD=1 → забранява вътрешен кеш
31PGPaging: PG=1 → странициране разрешено (само в P-режим)

CR2

  • Съдържа линейния адрес, предизвикал последното странично нарушение (#PF)

CR3 (PDBR — Page Directory Base Register)

  • Битове 31–12: физически базов адрес на каталога на страниците (Page Directory)
  • Бит 4: PCD (Page Cache Disable)
  • Бит 3: PWT (Page Write-Through)
  • При превключване на задача → CR3 се зарежда с новия адрес → TLB се инвалидира

CR4

Разширени архитектурни характеристики:

БитФлагФункция
0VMEVirtual-8086 Mode Extensions
1PVIProtected-mode Virtual Interrupts
2TSDTime Stamp Disable
3DEDebugging Extensions
4PSEPage Size Extension: PSE=1 → 4 MB и 2 MB страници
5PAEPhysical Address Extension: PAE=1 → 36-битов физически адрес (64 GB)
6MCEMachine Check Enable
7PGEPage Global Enable: глобални страници (не се инвалидират при смяна на CR3)

Регистри за управление на паметта

РегистърРазмерСъдържание
GDTR48 бита (32-бит. лим. + 32-бит. база)Линеен базов адрес и лимит на GDT
IDTR48 битаЛинеен базов адрес и лимит на IDT
LDTR16 бита (видима) + 64-бит. кешСелектор на LDT на текущата задача
TR16 бита (видима) + 64-бит. кешСелектор на TSS на текущата задача

Инструкции за работа с управляващите регистри

ИнструкцияДействиеПривилегия
MOV CR0–CR4, regЗареждане на управляващ регистърниво 0
MOV reg, CR0–CR4Четене на управляващ регистърниво 0
LGDT m48Зареждане на GDTRниво 0
SGDT m48Съхраняване на GDTRвсяко ниво
LIDT m48Зареждане на IDTRниво 0
SIDT m48Съхраняване на IDTRвсяко ниво
LLDT r/m16Зареждане на LDTRниво 0
SLDT r/m16Съхраняване на LDTRвсяко ниво
LTR r/m16Зареждане на TRниво 0
STR r/m16Съхраняване на TRвсяко ниво

Специфични за модела регистри (MSR)

  • Масив от 64-разредни регистри с адресиране чрез 32-битов номер
  • Достъпни само на ниво 0
  • Команди: RDMSR (чете MSR в EDX:EAX), WRMSR (пише EDX:EAX в MSR)
  • Включват: регистри за тестване, наблюдение на производителността, управление на кеша (MTRR)

4. Видове системни данни структури

Системните структури от данни в защитен режим включват:

СтруктураНазначение
GDT (Global Descriptor Table)Сегментни дескриптори, общи за всички задачи
LDT (Local Descriptor Table)Сегментни дескриптори, специфични за задача
IDT (Interrupt Descriptor Table)Дескриптори на шлюзове за прекъсвания/изключения
TSS (Task State Segment)Контекст на задача (регистри, указатели към стекове)
Page DirectoryКаталог на страниците (1024 PDE × 4 байта = 4 KB)
Page TablesТаблици на страниците (1024 PTE × 4 байта = 4 KB)

Всяка от тези структури се разглежда подробно в съответните глави.


5. Системен фърмуер и конфигурация

КомпонентОписание
BIOSТрадиционен фърмуер; стартира в реален режим; поддържа MBR/INT 13h
UEFIСъвременен наследник; 32/64-битово изпълнение; Secure Boot; GPT дялове
ACPIСтандарт за управление на захранването и хардуерни ресурси
MCH/ICHNorthbridge (MCH): процесор↔RAM↔GPU; Southbridge (ICH): USB, SATA, PCIe

Резюме за изпита

  • P-режим е нормалният режим; R-режим при RESET; SMM при SMI#; V86 е подрежим на P-режима
  • EFLAGS: CF (пренос), ZF (нула), SF (знак), OF (препълване), IF (прекъсвания), TF (трасиране), IOPL (вх/изх. привилегия), NT (вложена задача), VM (виртуален 8086)
  • CR0.PE=1 → защитен режим; CR0.PG=1 → странициране; CR4.PAE=1 → 36-битов физически адрес
  • CR2 = адрес на последното странично нарушение; CR3 = физически адрес на каталога на страниците
  • Системни структури: GDT, LDT, IDT, TSS, Page Directory/Tables

→ Речник на всички съкращения


Източници:

  • Рускова Н. Микропроцесорни системи. ТУ-Варна, 1999 (OCR)
  • Intel 64 and IA-32 Architectures Software Developer’s Manual, Vol. 3A, Chapter 2 (System Architecture Overview)