Програмна модель процесора ia-32

Структура процесора сімейства IA-32 дуже складна, оскільки в них апаратно реалізована сукупність паралельних конвеєрів (конвеєрна і суперскалярна архітектура). На малюнку 7 процесор IA-32 представлений у вигляді набору основних блоків.







Блок інтерфейсу з магістраллю управляє передачею команд і даних з пам'яті в процесор і результатів - назад в оперативну пам'ять. Блок передвибірки команд відповідає за читання наступних команд з сегмента кодів. Блок декодування команд здійснює розшифровку команди і формування послідовності керуючих сигналів для її виконання (аналог УУ). Виконавчий блок відповідно до назви виконує команду (аналог АЛП).

Малюнок 7 - Структура процесора сімейства IA-32

Крім того було додано ще кілька спеціалізованих регістрів, використовуваних в захищеному режимі:

а) керуючі регістри С0..С3;

TR - регістр стану завдання;

в) налагоджувальні регістри;

г) тестові регістри.

3) віртуальний - в цьому режимі процесор моделює псевдоодновременную роботу декількох віртуальних процесорів i8086. В даний час режим застарів і практично не використовується.







Таблиця локальних дескрипторів містить дескриптори сегментів програми, а таблиця глобальних - дескриптори сегментів програм операційної системи. Два біта селектора містять код рівня привілеїв сегмента, який перевіряється при зверненнях з інших програм. Таким чином, реалізується захист сегментів.

Префікс повторення - використовується тільки для команд обробки рядків і буде розглянуто далі.

Префікс розміру операнда (66h) - вказується, еслівместо 32-х розрядного регістра для зберігання операнда використовується 16-ти розрядний.

Програмна модель процесора ia-32

Малюнок 10 - Структура машинної команди IA-32

На малюнку 10 використані наступні позначення:

d - біт напрямку обробки, наприклад, пересилання даних: 1 - в регістр, 0 - з регістра; використовується в арифметичних командах і командах пересилання, якщо хоча б один операнд знаходиться в регістрі;

w - розмір операнда: 1 - операнди - подвійні слова, 0 - операнди - байти;

mod - режим: 00 - Disp = 0 - зсув в команді відсутня (0 байт);

01 - Disp = 1 - безпосереднє зміщення розміром 1 байт;

10 - Disp = 2 - безпосереднє зміщення розміром 2 байти;

11 - обидва операнда знаходяться в регістрах.

Регістри кодуються в залежності від розміру операнда (w):







Схожі статті