23 ЕВОЛЮЦІЯ АРХІТЕКТУРИ ПРОЦЕСОРІВ INTEL х86

 23.1 Процесори 8086/8088


Intel 8086 (також відомий як iAPX86, i86) — перший 16-бітний мікропроцесор компанії Intel, що розроблявся з весни 1976 року і був випущений 8 червня 1978. Процесор мав набір команд, який застосовується і в сучасних процесорах, саме від нього бере свій початок відома на сьогодні архітектура x86. Основними конкурентами мікропроцесора i8086 були Motorola 68000, Zilog Z8000, чипсети F-11 і J-11 сімейства PDP-11, MOS Technology 65C816. Деякою мірою, в області військових розробок, конкурентами були процесори-реалізації MIL-STD-1750A. Аналогом мікропроцесора i8086 був процесор NEC V30 (на 5% продуктивніший за i8086 і при цьому повністю з ним сумісний). Радянським клоном був мікропроцесор К1810ВМ86, що входив в серію мікросхем К1810.

Intel 8088 — 16-бітний мікропроцесор, випущений компанією Intel 1 липня 1979 року, заснований на мікропроцесорі i8086, але мав 8-бітову шину даних. Процесор використовувався в оригінальних комп'ютерах IBM PC. Intel 8088 став базою для розробки родини малих комп'ютерів. Він підготував ґрунт для швидкого створення сумісних настільних комп'ютерів. Конкурентами мікропроцесора i8088 є такі розробки, як NEC V20, який був на 5 % продуктивніший i8088, але при цьому був повністю з ним сумісний. Радянським аналогом є мікропроцесор К1810ВМ88, який входив в серію мікросхем К1810.

Процесор і8086 має сумісну (мультиплексовану) 20-розрядну зовнішню шину адреси-даних. Дані передаються 16 розрядами, адреса - 20. Шина керування має 16 розрядів (зокрема, до неї входять строб адреси і строби обміну з пам’яттю й пристроями введення-виведення). Середній час виконання команди займає 12 тактів синхронізації, один цикл обміну через зовнішню шину вимагає 4 тактів (без урахування тактів очікування, що вводяться при асинхронному обміні). У процесора і8088 зовнішня шина даних 8-розрядна.

Рисунок 23.1 - Мікросхема процесора і8086


Процесори і8086/8088 мають сегментовану пам’ять. Тобто вся пам’ять представляється не у вигляді безперервного простору, а у вигляді кількох елементів — сегментів заданого розміру (по 64 Кбайти), положення яких в просторі пам’яті можна програмно змінювати. Процесор 8086/8088 має 14 регістрів розрядністю по 16 біт. Для прискорення вибірки команд із пам’яті в процесорі 8086 передбачено внутрішній 6-байтний конвеєр (у процесорі 8088 — 4-байтний). Система команд процесора містить 133 команди, що підтримують 24 методи адресації операндів. Таке велике число команд може розглядатися як перевага (можна гнучко вибирати команду, яка оптимально підходить для кожного конкретного випадку), але це помітно ускладнює структуру процесора. Кожна команда містить 1, 2 або 4 байти коду команди, за якими можуть слідувати 1, 2 або 4 байти операнда.

Середня тривалість виконання команди займає 12 тактів. Особливістю МП 18086 є можливість часткової реконфігурації апаратної частини для забезпечення роботи у двох режимах — мінімальному і максимальному. Режими роботи задаються апаратно.

У мінімальному режимі, що використовується для побудови однопроцесорних систем, МП самостійно формує всі сигнали керування внутрішнім системним інтерфейсом.

У максимальному режимі, який використовується для побудови мультипроцесорних систем, МП формує на лініях стану двійковий код, який залежить від типу циклу шини. Відповідно до цього коду системний контролер К1810ВГ88 формує сигнали керування шиною. Контакти, які вивільнилися після кодування інформації, використовуються для керування мультипроцесорним режимом. Під час використання арифметичного співпроцесора слід обирати максимальний режим.

Структурна схема. У МП і8086 застосовано конвеєрну архітектуру, що дає змогу поєднувати у часі цикли вибирання команди та вибірки з пам'яті кодів наступних команд. Це досягається паралельною роботою двох порівняно незалежних пристроїв — операційного пристрою та шинного інтерфейсу. Структурну схему МП і8086 зображено на рис. 23.2. Операційний пристрій виконує команду, а шинний інтерфейс здійснює взаємодію із зовнішньою шиною — виставляє адреси, зчитує коди команд, операнди, записує результати обчислень у пам'ять або пристрої введення-виведення.

 Операційний пристрій складається з:

- РЗП, призначених для зберігання проміжних результатів — даних та адрес;

- АЛП із буферними регістрами;

- регістра прапорців;

- блока керування та синхронізації, який дешифрує коди команд і генерує керуючі сигнали для всіх блоків схеми МП.

 Шинний інтерфейс складається із:

•    шестибайтової регістрової пам'яті, яку називають чергою команд,

•    чотирьох сегментних регістрів ( CS, DS, ES, SS),

•    покажчика команд IP,

•    суматора,

•    допоміжних регістрів зв'язку і буферних схем шин адреси-даних.

 Черга команд працює за принципом FIFO (First Input — First Output, тобто перший прийшов — перший пішов) і зберігає на виході порядок надходження команд. Довжина черги — 6 байт. Якщо операційний пристрій зайнятий виконанням команди, шинний інтерфейс самостійно ініціює випереджальну вибірку кодів команд із пам'яті у чергу команд. Вибирання з пам'яті чергового командного слова здійснюється тоді, коли в черзі виявляється два вільних байти. Черга збільшує швидкодію процесора у разі послідовного виконання команд. Під час вибирання команд переходів, викликів і повернень із підпрограм та оброблення запитів переривань черга команд скидається і вибирання починається з нового місця програмної пам'яті.

Крім того, одним із завдань шинного інтерфейсу є формування фізичної 20-розрядної адреси із двох 16-розрядних слів. Першим словом є вміст одного із сегментних регістрів CS, DS, SS, ES, друге слово залежить від типу адресації операнда або коду команди. Складання 16-розрядних слів відбувається зі зміщенням на чотири розряди і здійснюється за допомогою суматора, що входить до складу шинного інтерфейсу.

Рисунок 23.2 - Структурна схема процесора і8086


Організація пам’яті МПС Intel 8086. Пам'ять – масив ємністю 1 Мбайт. У пам'яті зберігаються як байти, так і двобайтові слова. Слова розміщуються у двох сусідніх комірках пам'яті; старший байт зберігається у комірці зі старшою адресою, молодший – з молодшою. Адресою слова вважається адреса його молодшого байта. На рисунку подано приклад, коли з адресою 00000 зберігається байт 35H, а за адресою 00001 – слово 784AH. Початкові (00000H-003FFH) і кінцеві (FFFF0H-FFFFFH) адреси зарезервовані для системи переривань та початкового встановлення.

Організацію пам’яті, коли кожній адресі відповідає вміст однієї комірки пам’яті називають лінійною. У МП i8086 застосовано сегментну організацію пам'яті, яка характеризується тим, що програмно доступною є не вся пам'ять, а лише деякі сегменти, тобто області пам'яті. Усередині сегмента використовують лінійну адресацію.

Впровадження сегментної організації можна пояснити таким чином. Мікропроцесор i8086 являє собою 16-розрядний процесор, тобто він має 16-розрядну внутрішню шину, 16-розрядні регістри і суматори. Прагнення розробників ВІС адресувати якомога більший масив пам'яті зумовило  використання 20-розрядної шини даних.

Для формування 20-розрядної адреси у 16-розрядному процесорі використовують інформацію двох 16-розрядних регістрів. У МП i8086  20-розрядна адреса формується з двох 16-розрядних адрес, які називають логічними. Перша логічна адреса, доповнена праворуч чотирма нулями, являє собою початкову адресу сегмента ємністю 64 Кбайт. Друга логічна адреса визначає зміщення у сегменті, тобто відстань від початку сегмента до адресованої комірки. Якщо вона дорівнює 0000, то адресується перша комірка сегмента, якщо FFFFH – то остання. Отже, логічний адресний простір розподілено на блоки суміжних адрес розміром 64 Кбайт, тобто сегменти.

Такий підхід до організації пам'яті зручний ще й тому, що пам'ять логічно поділяється на області коду (програмної пам'яті), даних і стека. Фізична 20-розрядна адреса комірки пам'яті формується з двох 16-розрядних адрес – адреси сегмента Seg і виконавчої адреси ЕА (Executive Address), які додаються зі зміщенням на чотири розряди.

Процесор може обробляти 256 типів переривань: зовнішніх (апаратних), програмних і внутрішніх. Вектори переривань являють собою подвійне слово (два слова по 16 розрядів), що визначає сегмент і зсув початкової адреси програми обробки переривань. Внутрішні переривання здійснюються в особливих ситуаціях.

Важлива відмінна риса процесора — розділення операцій обміну з пристроями введення-виведення і з пам’яттю. Процесор працює від одного джерела живлення напругою +5 В і вимагає зовнішнього тактувального сигналу з частотою, яка визначається номером моделі (від 4,77 МГц до 10 МГц). Спеціальний керуючий сигнал MN/MX визначає мінімальний або максимальний режим роботи процесора.

 23.2 Процесори i80286

Відмінність 80286 від процесора 8086/8088 — в механізмі керування адресацією пам’яті, який забезпечує чотирирівневу систему захисту і підтримку віртуальної пам’яті. (Віртуальна пам’ять — це зовнішня пам’ять великого обсягу, з якою процесор може взаємодіяти як зі своєю системною пам’яттю, але з деякими обмеженнями). Спеціальні засоби передбачено також для підтримання механізму перемикання завдань (Task switching). У процесорі 80286 також розширено систему команд за рахунок додавання команд керування захистом і декількох нових команд загального призначення.

Рисунок 23.3 - Мікросхема процесора і80286


Процесор 80286 також може працювати у двох режимах:

- реальний режим (8086 Real Address Mode — режим реальної адресації) повністю сумісний з процесором 8086/8088. У цьому режимі можлива адресація лише в межах 1 Мбайта фізичної пам’яті. Він використовується для забезпечення програмної сумісності з процесором 8086/8088;

- захищений режим (Protected Virtual Address Mode — захищений режим віртуальної адресації). У цьому режимі можлива адресація в межах 16 Мбайт фізичної пам’яті.

Процесор 80286 має 16-розрядну зовнішню шину даних і 6-байтний конвеєр команд. Для прискорення виконання математичних операцій передбачено підключення до процесора 80286 мікросхеми математичного співпроцесора 80287.

Так само, як і в 8086, застосовується сегментація пам’яті, але керування в реальному і захищеному режимах різна. Процесор 80286 може обробляти до 256 типів переривань. Переривання поділяються на апаратні (масковані або немасковані), що викликаються сигналами на входах процесора, програмні, викликані командою INT, і винятки інструкцій.

Система команд процесора 80286 включає, крім повного набору 8086, ряд додаткових команд: збереження константи в стеку, збереження в стеку й відновлення зі стека всіх регістрів однією командою; цілочисельне множення на константу; зсуви (включаючи циклічні) на задану в константі кількість кроків; входження і вихід з процедур; команди управління захистом.

 23.3 Процесори i80386

У 32-розрядному процесорі і80386 немає обмеження на довжину безперервного сегмента пам’яті в 64 Кбайт. В захищеному режимі 80386 довжина сегмента може сягати 4 Гбайт, тобто всього обсягу фізично адресованої пам’яті. Таким чином, пам’ять фактично стала безперервною. Крім того, 80386 забезпечує підтримку віртуальної пам’яті обсягом до 64 Тбайт (1 Тбайт = 1024 Гбайт). Вбудований блок керування пам’яттю підтримує механізми сегментації і сторінкової трансляції адрес. Забезпечується чотирирівнева система захисту пам’яті та вводу-виводу, а також перемикання завдань.

Рисунок 23.4 - Мікросхема процесора і80386


Процесор 80386, як і80286, може працювати в двох режимах: реальний, повністю сумісний з 8086, та захищений режим. У цьому режимі можлива адресація до 4 Гбайт фізичної пам’яті, через які за умови використання механізму сторінкової адресації може відображатися до 16 Тбайт віртуальної пам’яті кожного завдання. Процесор може оперувати з 8, 16, 32-бітними операндами, рядками байт, слів і подвійних слів, а також з бітами, бітовими полями і рядками біт. В архітектуру процесора введено засоби налагодження і тестування. Розрядність регістрів даних (АХ, ВХ, СХ, DX) і адрес (SI, DІ, BP, SP) збільшено до 32. У їх позначенні з’явився префікс Е (Extended — розширений), наприклад, ЕАХ, ESI. Розширено до 32 розрядів регістр-покажчик (лічильник) команд ЕІР. 32-розрядним став регістр прапорців EFLAGS. Такий само формат використовується і в процесорах 80486 і Pentium. Регістри сегментів процесора містять 16-бітові покажчики (у реальному режимі) або селектори (у захищеному режимі) шести сегментів. З кожним із шести сегментних регістрів пов’язані програмно недоступні регістри дескрипторів, як і у випадку 80286. В захищеному режимі в регістри дескрипторів завантажується 32-бітна базова адреса сегмента, 32-бітний ліміт і атрибути сегментів.

Процесор дозволяє виділяти в пам’яті сегменти і сторінки. Сегменти в реальному режимі мають фіксований розмір, в захищеному — змінний. Процесор 80386 обробляє всі види переривання: апаратні (масковані і немасковані) і програмні, які в даному випадку обробляються як різновид винятків. Винятки підрозділяються на відмови, пастки і аварійні завершення.

Кожному номеру переривання (0,...,255) або винятку відповідає елемент у таблиці дескрипторів переривань IDT (Interrupt Descriptor Table). В захищеному режимі IDT може мати розмір від 32 до 256 дескрипторів, кожен з яких складається з 8 байт.

Захищений режим запропоновано для забезпечення незалежності одночасного виконання кількох завдань (як системних, так і прикладних). Для цього передбачено захист ресурсів кожної задачі від дій інших завдань. Під ресурсами тут розуміється пам’ять з даними, програмами, системними таблицями, а також апаратура, що використовується завданням. Захист ґрунтується на сегментації пам’яті, причому, на відміну від реального режиму, завдання не може перевизначати положення своїх сегментів у пам’яті і використовує тільки сегменти, визначені для неї операційною системою. Сегмент визначається дескриптором сегмента, який задає положення сегмента в пам’яті, його розмір (або ліміт), призначення і характеристики захисту.

В захищеному режимі передбачається ієрархічна чотирирівнева (рівні 0, 1, 2, 3) система привілеїв, призначена для керування виконанням привілейованих команд і доступом до дескрипторів. Механізм віртуальної пам’яті, що використовується в захищеному режимі, дозволяє будь-якій задачі використовувати логічний простір розміром до 64 Тбайт (16К сегментів по 4 Гбайти).

Починаючи з процесора 80386, з’являються засоби обслуговування багатозадачного режиму. Процесор не може обробляти декілька завдань одночасно, виконуючи по кілька команд відразу. Він лише періодично перемикається між завданнями. Але з точки зору користувача виходить, що комп’ютер паралельно працює з кількома завданнями.

 23.4 Процесори i80486

Intel 80486 - 32-бітний скалярний x86-сумісний мікропроцесор четвертого покоління, випущений 10 квітня 1989 фірмою Intel. Цей мікропроцесор є модернізованою версією мікропроцесора 80386. Саме цей мікропроцесор вперше з'явився вбудований математичний співпроцесор (FPU). Мав застосування як правило у настільних ПК, у високопродуктивних робочих станціях, у серверах та портативних ПК.

Процесори Intel486 ™ представляють друге покоління 32-розрядних процесорів. Маючи всі властивості процесора 386 і забезпечуючи повну зворотну сумісність з колишніми представниками сімейства х86, ці процесори мають ряд істотних змін:

Технічні характеристики:

Розрядність регістрів: 32 біт

Розрядність зовнішніх шин даних та адреси: 32 біт

Обсяг віртуальної пам'яті, що адресується: 64 Тбайт

Обсяг фізичної пам'яті, що адресується: 4 Гбайт

Тактова частота процесора, МГц: 16-33

Корпус: 168- та 169-контактний керамічний PGA, 132- та 208-контактний пластиковий PQFP (рис.23.5)

Рисунок 23.5 - Мікросхема процесора і80486


Внутрішній кеш

Процесор 486 має внутрішній первинний кеш (Cache Level 1) розміром 8 Кбайт, єдиний для даних та інструкцій. Кеш має 4-канальну набірно-асоціативну архітектуру та працює на рівні фізичних адрес пам'яті. Кеш містить 128 наборів чотири рядки розміром по 16 байт кожна.

Рядки в кеш-пам'яті виділяються тільки при читанні, політика запису перших процесорів 486 Write Through (наскрізний запис) повністю програмно прозора; пізніші модифікації дозволяють переключатися на політику Write Back (зворотний запис).

Заповнення рядка процесор намагається виконати найшвидшим способом - пакетним циклом з 32-бітними передачами, але контролер пам'яті, звичайно, може і "стримати його запал" - вимагати 16- або 8-бітних обмінів і відмовитися від пакетного режиму.

Вибір рядка для заміщення виконується на основі аналізу бітів LRU (Least Recently Used) за алгоритмом «псевдо-LRU». Виділення та заміщення рядків виконується тільки для кеш-промахів читання, при промахах запису заповнення рядків не провадиться.

Кешування каталогів сторінок (TLB) у процесорі 486 відрізняється від 386-го лише покращенням алгоритму заміщення - тут теж реалізований алгоритм псевдо-LRU.

Пакетний режим передачі даних

На зміну конвеєрної адресації попередніх процесорів, починаючи з процесора 486, введено режим пакетної передачі (Burst Mode). Цей режим призначений для швидких операцій із рядками кешу. Рядок кешу процесора 486 має довжину 16 байт, отже, для її пересилання потрібно чотири 32-розрядні шинні цикли. Оскільки використання кешу передбачає, що рядок повинен бути присутнім повністю, ввели пакетний цикл (Burst Cycle), оптимізований для операцій обміну внутрішнього кешу з оперативною пам'яттю. У цьому циклі адреса і сигнали ідентифікації типу шинного циклу видаються тільки в першому такті пакета, а в кожному з наступних тактів можуть передаватися дані, адреса для яких вже не передається по шині, а обчислюється з першого за правилами, відомими і процесору, і зовнішнього пристрою . У пакетний цикл процесор може перетворити будь-який внутрішній запит на множину, але при читанні його розмір обмежений одним рядком кеша,а при записі в стандартному режимі шини пакет може збиратися не більше 32 біт. Пізніші моделі процесорів при роботі з WB-кешем при записі рядків на згадку збирають у пакет чотири 32-бітних цикли, але це вже робота в розширеному режимі шини 486-го процесора.

Пакетний цикл (рис. 23.6) починається процесором так само, як і звичайний: на зовнішній шині встановлюється адреса, сигнали ідентифікації типу циклу і формується строб ADS #. У такому такті передається перша порція даних, і, якщо вона єдина, сигнал BLAST# має пасивне значення. Якщо адресований пристрій підтримує пакетний режим, він повинен відповісти сигналом BRDY# замість сигналу RDY# за готовністю даних у першій передачі даних циклу. У цьому випадку процесор продовжить цикл як пакетний, не вводячи такту адресації-ідентифікації (з сигналом ADS#), а відразу перейде до передачі наступної порції даних. Нормально про завершення пакетного циклу процесор повідомляє пристрій сигналом BLAST #, який видається такті останньої передачі пакета. Якщо процесор має намір зібрати пакет, а пристрій відповідає сигналом RDY#,дані передаватимуться звичайними циклами. Введенням сигналу RDY# замість BRDY# зовнішній пристрій може будь-якої миті перервати пакетну передачу, і процесор її продовжить звичайними циклами. В ідеальному варіанті (без тактів очікування) для передачі 16 байт у пакетному режимі потрібно всього п'ять тактів шини замість восьми, які були б потрібні при звичайному режимі обміну.

Рисунок 23.6 - Пакетний цикл читання 


Пакетний режим передбачає дотримання однакових правил формування наступних адрес як процесором, так і зовнішнім пристроєм (пам'яттю). Під час пакетного циклу процесора 486 старші біти адреси [31:4] залишаються незмінними (як і сигнали ідентифікації M/IO#, D/C# і W/R#). Змінюватися можуть лише біти А[3:2] та сигнали ВЕ[3:0] (у процесорів з 64-бітною шиною даних незмінні А[31:5], а змінюються лише А[4:3] та ВЕ[7:0 ]). Таким чином, один пакетний цикл не може перетинати межу рядка кешу. Крім того, є специфічний порядок проходження адрес у пакетному циклі, який визначається початковою адресою пакета (задається процесором) і розрядністю передач (задається пристроєм сигналами BS16 # і BS8 #). У табл. 23.1. наведено порядок проходження адрес для 32-розрядних передач. Якщо під час пакетного циклу процесор виявить активність сигналів BS16# або BS8# до того, як перейти до наступної адреси (відповідно до таблиці), будуть завершені поточні 32-бітові цикли. Так, наприклад, при початковій адресі 4 і введенні сигналу BS16# порядок адрес у пакетному циклі буде 4-6-0-2-С-Е-8-А. Оскільки пакетний режим підтримується зазвичай лише оперативною пам'яттю (разом із вторинним кешем), розрядність якої намагаються не усікати, на практиці перетворення послідовності адрес у 8- чи 16-битні передачі не використовуються. 


Таблиця 23.1 – Послідовність адрес у пакетному циклі 486

Наведений порядок чергування (interleaving) адрес у пакетному циклі характерний для усіх процесорів Intel і сумісних з ними, починаючи з 486-го. Він оптимізований для двобанкової організації пам'яті, що передбачає чергування банків, які використовуються у сусідніх передачах пакетного циклу. У процесорах з 64-бітною шиною даних ідея чергування та ж сама, але значення адрес подвоюється. З точки зору пам'яті у кожній мікросхемі під час пакетного циклу можуть змінюватися лише два молодші біти адреси (незалежно від розрядності шини даних процесора). Цей порядок чергування підтримує будь-яка пам'ять із пакетним режимом: динамічна BEDO DRAM, SDRAM і статична Sync Burst SRAM, РВ SRAM. Процесори інших сімейств (наприклад, застосовувані в MAC, POWER PC) використовують лінійний порядок адрес в пакеті. Мікросхеми пакетної пам'яті зазвичай мають вхідний сигнал, що визначає порядок адрес для конкретного застосування.

Процесор 486 може використовувати пакетний цикл для будь-яких передач, якщо дані вписуються в прийняту структуру пакета. При зчитуванні максимальна довжина пакета не повинна перевищувати 4x32=128 біт, а запису у стандартному режимі шини — лише 32 біти. Таким чином, при запису в стандартному режимі пакетним може бути тільки цикл, що складається з неповнорозрядних передач. Якщо необхідна чергова порція даних не вписується у правила формування пакета, вона буде передана звичайними (не пакетними) шинними циклами.

Під час пакетного циклу, як і звичайному циклі, темп обміну (число тактів очікування) задається пристроєм: він вводить сигнал BRDY# за готовністю даних (у звичайних циклах для цієї мети використовується сигнал RDY#). Часова діаграма пакетних циклів звернення до пам'яті (головним чином читання) є основною характеристикою продуктивності пам'яті комп'ютера. Її описують числом тактів системної шини, необхідних кожної передачі пакета. При цьому, звичайно, вказують і саму частоту. Так, наприклад, для динамічної пам'яті BEDO-50 ідеальним є цикл 5-1-1-1 на частоті 66 МГц.

Математичний співпроцесор

У Intel 486 використали вбудований математичний співпроцесор (англ. Floating Point Unit, FPU). Взагалі, це був перший мікропроцесор сімейства x86 із вбудованим FPU. Вбудований FPU був програмно сумісний з мікросхемою Intel 80387 - математичним співпроцесором, що застосовувався в системах з процесором 80386. Завдяки використанню вбудованого співпроцесора здешевлювалася та прискорювалася система за рахунок зменшення загальної кількості контактів та корпусів мікросхем.

Буфер відкладеного запису

Процесор 486 має чотири внутрішні буфери для операцій запису. Якщо під час внутрішнього запиту процесора на запис усі буфери вільні і шина не зайнята, запис виконується відразу без буферування. Якщо шина зайнята, запит надсилається в буфер, займаючи для запису лише один внутрішній такт, а з буфера дані вивантажуються до оперативної пам'яті чи пристроїв вводу-виводу у міру звільнення зовнішньої шини. Зовнішні операції запису з буферів будуть проводитися в тому ж порядку, що і запити, що надійшли. Однак, якщо за наявності не звільнених буферів з'явиться запит на читання пам'яті, він може бути обслужений і раніше, ніж задовольняться попередні запити на запис. Ця зміна послідовності може статися тільки в тому випадку, якщо всі запити запису в буферах пов'язані з кеш-попаданням, а запит на читання відноситься до кеш-промаху. Тільки в цьому випадку процесор може сміливо змінювати порядок операцій, але лише один раз доти, доки не звільняться всі буфери запису. Більше одного разу міняти порядок у загальному випадку не можна, тому що зчитані дані можуть замістити модифікований рядок кешу, з якого оновлена ​​інформація якраз і очікує у буфері черги на запис у основну пам'ять. У такому разі друга спроба зміни послідовності може порушити цілісність даних. 

 Для операцій вводу-виводу зміна порядку неможлива. Читання вводу-виводу ніколи не може обганяти запис у пам'ять (інакше відмовилися б працювати багато периферійних пристроїв). Поодинокі операції виводу не буферуються для того, щоб дати пристроям можливість своєчасно (для програми) повідомити свою реакцію на запис в порт (викликати апаратне переривання або цикл анулювання рядка). Однак способи введення програмної затримки (I/O Bus recovery time) між одиночними операціями виведення для процесора 486 відрізняються від попередніх: тут команда JMP, що раніше безумовно приводить до генерації зовнішнього циклу звернення до пам'яті, швидше за все буде обслужена з внутрішнього кешу, і бажаної затримки не станеться. Надійним способом введення зовнішнього циклу шини між циклами виведення є явна операція читання області пам'яті, що не кешується. Ця операція буде виконана лише після завершення попереднього циклу виведення, а наступна операція виводу розпочнеться лише після завершення цього читання.

Операції блокового виводу, викликані інструкцією REP OUTS, будуть використовувати буфери (але їх порядок не буде порушено).

Інтерфейс процесорів 486

Процесори 486 виконуються в корпусах PGA-168, або PGA-169, PQFP або SQFP. Починаючи з процесорів 486 в системних платах PC стали широко застосовуватися ZIF-сокети (Zero Insert Force Socket) - "роз'єми з нульовим зусиллям вставки", призначені для встановлення процесорів у корпусах PGA зі штирьковими висновками. Уніфікація розташування виводів процесорів одного класу та наявність конфігураційних перемикачів дозволяє користувачеві замінювати старі процесори на більш потужні модифікації. Легкість установки необхідного процесора і подальшої заміни на більш досконалі моделі дозволяють виконувати цю операцію кінцевим користувачам. Для процесорів 486 стали випускати системні плати, розраховані на різні модифікації і тактові частоти — своєрідний конструктор «збери сам».


 23.5 Процесори Реntium

Процесори Реntium належать до п’ятого покоління процесорів або до третього 32-розрядних процесорів нового покоління з істотними відмінностями:

Засоби моніторингу продуктивності включають в себе таймер реального часу і лічильники подій. Таймер являє собою 64-розрядний лічильник, інкрементований з кожним тактом процесора. Два лічильники подій мають розрядність по 40 біт і програмуються на підрахунок подій різних класів, пов’язаних з шинними операціями, виконанням команд, з роботою кешe, контролем точок зупинки тощо. Порівнюючи стани таймера й лічильників подій, можна зробити висновок щодо продуктивності процесора.

Рисунок 23.7 - Мікросхема процесора Pentium 


Засоби для побудови двопроцесорних систем дозволяють на одній локальній шині встановлювати два процесори з об’єднанням майже всіх однойменних виводів. Це дає можливість використовувати симетричну мультипроцесорну обробку (SMP — Symmetric Multi-Processing) або будувати функціонально надлишкові системи (FRC — Functional Redundancy Checking).

У конфігурації FRC два процесори виступають як один логічний процесор. Основний процесор працює в звичайному однопроцесорному режимі. Процесор перевірки виконує всі ті самі операції всередині себе, не керуючи зовнішньою шиною, і порівнює сигнали основного процесора з тими, які генерує сам. В разі неспівпадання формується сигнал помилки, що оброблюється як переривання.

Розвитком Pentium стало додавання технології ММХ, розрахованої на мультимедійне, графічне і комунікаційне застосування. Основна ідея ММХ полягає в одночасній обробці декількох елементів даних за одну команду (SIMD, Single Instruction — Mutiple Data). Команди MMX доступні з будь-якого режиму процесора. Крім того, в процесорах Pentium ММХ збільшено обсяг кеша даних і програм (до 16 Кбайт кожен), збільшено число ступенів конвеєрів і здійснено ще кілька удосконалень, що підвищують продуктивність звичайних (не мультимедійних) операцій.

Процесори Pentium Pro. Це шосте покоління процесорів, що має наступні удосконалення:

1.  Динамічне виконання команд припускає, що команди, які не залежать від результатів попередніх операцій, можуть виконуватися в зміненому порядку (подальші раніше попередніх), проте послідовність обміну з зовнішніми пристроями (пам’яттю і пристроями введення-виведення) буде відповідати програмі. Тобто процесор сам вибирає зручний йому порядок виконання команд. Це дозволяє підвищити продуктивність процесора без збільшення тактової частоти;

2.  Архітектура подвійної незалежної шини підвищує сумарну пропускну здатність. Одна шина (системна) служить для обміну з основною пам’яттю і пристроями введення-виведення, а інша (локальна) призначена лише для обміну з вторинним кешем;

3.  В процесор введено кеш другого рівня обсягом 256,.., 512 Кбайт;

4.  Можлива побудова багатопроцесорних систем (до чотирьох процесорів).

Рисунок 23.8 - Мікросхема процесора Pentium Pro


Процесори Pentium II поєднує в собі архітектуру Pentium Pro з технологією ММХ. Розмір первинних кешів даних і команд складає 16 Кбайт, вторинного кешу - до 512 Кбайт. Кеш другого рівня трохи повільніший, ніж кеш першого рівня, зате він має більший обсяг. Така дворівнева організація дозволяє досягати компромісу між швидкодією кеш-пам’яті та її обсягом. Шина адреси має 36 розрядів (тобто максимально допустимий обсяг пам’яті — 64 Гбайти).

Рисунок 23.9 - Картридж процесора Pentium ІІ


Процесори Pentium 3 і Pentium 4 відрізняються значно підвищеною граничною тактовою частотою (до 3 ГГц у Pentium 4, а в перспективі - до 5 ГГц), збільшеним обсягом кеша (від 512 Кбайт до декількох мегабайт) і подальшим вдосконаленням архітектури Pentium. Розмір внутрішнього конвеєра у Pentium 4 доведено до 20 ступенів.

Рисунок 23.10 - Мікросхема процесора Pentium ІІІ


З’явилися і повністю 64-розрядні процесори. Повне використання можливостей 64-розрядної архітектури потребує істотної зміни програмного забезпечення. Слід відмітити, що у складі персональних комп’ютерів практично ніколи не використовуються всі можливості процесорів сімейства Pentium.

Рисунок 23.11 - Мікросхема процесора Pentium 4


Для портативних комп’ютерів було запропоновано спрощені версії процесорів Pentium 3 і Pentium 4, що продаються під маркою Celeron. Вони відрізняються зменшеною тактовою частотою і скороченим обсягом кешу другого рівня. Їх тактова частота доходить до 2 ГГц. Треба враховувати, що потужність розсіювання процесора Celeron залишається практично такою самою, як у процесорів Pentium 3 і Pentium 4.


 23.6 Порівняння Pentium (Celeron) та Athlon (Duron)

Процесор Celeron є урізаною версією відповідного (більш продуктивного, але і значно дорожчого) main-stream процесора, на основі ядра якого він був створений. У процесорів Celeron в два або в чотири рази менше кеш-пам’яті другого рівня. Так само у них в порівнянні з відповідними «родоначальниками» знижено частоту системної шини.

У процесорів Duron порівнянні з Athlon в 4 рази менше кеш-пам’яті і занижена системна шина 200 МГц (266 МГц для Applebred), хоча існують і «повноцінні» Athlon с FSB 200 МГц. Duron’и на ядрі Morgan  вишли з продажу — їх виробництво вже досить давно згорнуто. Їх замінили Duron на ядрі Applebred, що являють собою не що інше, як урізані по кешу AthlonXP Thoroughbred. Так само вже з’явилися урізані по кешу Barton’и, ядро яких носить назву Thorton.

Існують завдання, в яких між звичайними і урізаними процесорами майже немає різниці, а в деяких випадках відставання досить серйозне. В середньому ж, при порівнянні з «неурізаним» процесором тієї самої частоти, відставання це дорівнює 10, ..., 30%. Процесори Celeron працюють гірше в порівнянні з повноцінними Р4 — відставання в деяких ситуаціях досягає 50%. Це не стосується процесорів Celeron D, в яких кеш другого рівня становить 256 Кбайт (128 Кбайт в звичайних Celeron) і відставання вже не таке відчутне. Зате урізані процесори мають тенденцію краще розганятися через менший обсяг кеш-пам’яті і коштують дешевше.

У АХР (і Athlon 64) замість частоти пишеться рейтинг, тобто наприклад 2000 процесор реально працює на частоті 1667 МГц, але за ефективністю роботи він відповідає Athlon (Thunderbird) 2000 МГц.

Основним недоліком Athlon вважалася температура. Але останні моделі (на ядрах Thoroughbred, Barton і т. ін.) за тепловиділенням відповідні Pentium 4, а останні моделі від Intel (Р4 Extreme Edition) нагріваються іноді значно більше. За надійністю процесори тепер теж не сильно поступаються Р4, вони хоч і не можуть пропускати такти (працювати «вхолосту») при перегріванні, але мають вбудований термодатчик (він хоч і з’явився ще в ядрі Palomino, але зовсім небагато сучасних материнських плат спроможні знімати показання з цього термодатчика).

Слід зауважити, що Athlon ХР на ядрі Barton мають схожу функцію Bus Disconnect — вона «відключає» процесор від шини під час холостих тактів (простою), але вона фактично безсила при перегріванні від підвищеного навантаження — тут вся «відповідальність» перекладається на термоконтроль материнської плати. «Міцність» кристала (максимально допустимі межі температурної деформації) хоч і підвищилася, але через зменшену площу ядра фактично залишилася колишньою. Тому ймовірність згоряння (пошкодження) кристала хоч і стала меншою, але існує.

У Athlon 64 процесорний кристал заховано під теплорозсіювач, тому його пошкодити надзвичайно складно. Всі «глюки» приписувані AMD часто є наслідком невстановлених або неправильно встановлених універсальних драйверів для чіпсетів VIA (VIA 4 in 1 Service Pack) або драйверів чіпсетів інших виробників (AMD, SIS, АLi).

Працюють процесори Atholn ХР і Pentium 4 в різних додатках по-різному. Наприклад, в складних математичних обчисленнях (3D моделювання, спеціалізовані математичні пакети), архівації, кодуванні в MPEG4, Р4 часто «обігрує» АХР. Але є й ряд програм які краще працюють з АХР. В основному це — ігри. Для звичайного користувача варто орієнтуватися саме на них, оскільки перекодування в будь-якому випадку вимагає багато часу, а іграм, навпаки, необхідно провести всі обчислення як можна швидше.

Рисунок 23.12 - Мікросхема процесора Atholn FХ


У Р4 дуже довгий конвеєр (тут мається на увазі так званий цілочисельний конвеєр) виконання інструкцій. Чим довший конвеєр, тим легше нарощувати тактову частоту, але тим менше продуктивності припадає на кожен отриманий мегагерц. І навпаки, чим на більшу кількість стадій розраховано конвеєр, тим менше роботи припадає на кожний окремий такт і тим швидше цей такт виконується.

Pentium 3 має конвеєр довжиною 12 стадій (можна так само сказати ступенів), Athlon (ХР) — 10 стадій, Athlon 64 — 12. Pentium 4 поки є абсолютним чемпіоном за довжиною конвеєра (20 стадій), тобто має найменший час виконання такту, що дозволяє досягти максимальної тактової частоти, а й найбільші затримки для зв’язаних одна з одною операцій.

Більш важливим стає передбачення того, виконання якої інструкції знадобиться, задовго до самого процесу її виконання. І, природно, помилка на цій стадії — вибір не тієї гілки, по якій піде процес виконання програми, буде дуже і дуже позначатися на продуктивності процесора. Конвеєр в разі помилки передбачення розгалуження «скидається в нуль» та виконання йде заново, тобто в ідеалі за кожної помилки передбачення «втрачається» до 20 дорогоцінних тактів. Нескладно підрахувати, чим це загрожує за середньої кількості помилок передбачення (5%) у випадку з 2 ГГц процесором.

В цілочисельних операціях Р4 працює добре, а ось в операціях з плаваючою комою в нього ситуація гірша, там він значно програє АХР. Ще недавно мало додатків підтримували набір інструкцій SSE2, використаний в Р4 і здатних значно збільшити швидкість його роботи (швидкість роботи FPU, хоча, умовно кажучи, SSE2 не допомагає FPU, а фактично його замінює).

В обробленні великих обсягів даних Р4 лідирує, але в іграх почати наступні обчислення, як правило, не вдається, не закінчивши попередні (процесор частково простоює, поки попередня інструкція не вийде з конвеєра). І ось тут вступає в дію АХР. Справи ускладнюють різні набори інструкцій: 3DNow!, 3DNow! Professional, SSE, SSE2, де швидкість роботи залежить від того, під який процесор оптимізовано додаток. Перші моделі Р4 на ядрі Willamete відчутно програвали навіть близьким за частотою моделям Pentium 3, не кажучи вже про Athlon. Але у Northwood це відставання майже ніколи не виявляється.