- •Цифровые эвм
- •§1.2 Структуры типичных микроЭвм
- •§1.3 Архитектура микро- и мини – эвм
- •§1.4 Архитектура эвм
- •§1.5 Ортогональность архитектуры микропроцессоров.
- •§2. Микропрограммные устройства управления §2.1 Структура микропрограммных устройств
- •§2.2 Способы записи микропрограмм
- •1) Гса должна содержать одну начальную, одну конечную вершину и конечное множество операторных и условных вершин;
- •2) Каждый выход гса соединяется только с одним входом;
- •3) Входы и выходы различных вершин соединяются дугами, направленными от выхода к входу;
- •4) Для любой вершины гса существует, по крайней мере, один путь из этой вершины к конечной вершине, проходящей через операторные и условные вершины в направлении соединяющих их дуг;
- •§2.3 Микропрограммный принцип управления операциями
- •1) Определение формата операционной части мк;
- •2) Синтез формата адресной части мк;
- •3) Синтез структурной схемы автомата;
- •4) Построение карты программирования пзу или плм.
- •§2.4 Синтез мпа с использованием “жёсткой” логики
- •2. Прибавить к содержимому сумматора первое частичное произведение.
- •3. К содержимому сумматора прибавить сдвинутое на разряд вправо второе частичное произведение.
- •4. Далее аналогично прибавить третье, четвертое и последующие частичные произведения.
- •§2.5 Выбор схемы операционного устройства
- •1) Два регистра (регистр множимого rg2 и регистр множителя rg1);
- •2) Сумматор (5м);
- •3) Счетчик (ст) для подсчета числа суммирований. На рис. 2.9 показаны обозначения этих узлов на схемах.
- •§3. Запоминающие устройства §3.1 Запоминающие устройства и их назначение
- •§3.2Классификация и основные характеристики полупроводниковых зу
- •§3.3 Статические озу
- •§3.4 Динамические озу
- •§3.5 Память на пзс
- •§3.7 Функциональные схемы озу
- •§3.8 Функциональные схемы пзу и ппзу
- •§3.9 Организация многокристальной памяти
- •§3.10 Программирование пзу
- •§3.11 Программируемые логические матрицы
- •§4. Процессоры и микропроцессоры §4.1Классификация микропроцессоров
- •§5.Сравнение архитектур микропроцессоров
- •§5.1 Архитектуры микропроцессоров.
- •§5.2 Ортогональность архитектуры микропроцессоров.
- •§5.3 Основные принципы построения устройств обработки цифровой информации
- •Существует два основных типа управляющих автоматов:
- •1) Управляющий автомат с жесткой логикой.
- •2) Управляющий автомат с хранимой в памяти логикой.
- •§5.4 Принципы организации арифметико – логических устройств.
- •§5.5 Классификация алу
- •1) Для чисел с фиксированной запятой;
- •2) Для чисел с плавающей запятой;
- •3) Для десятичных чисел.
- •§5.6 Структура и формат команд. Кодирование команд.
- •1) Команды арифметических операций для чисел с фиксированной и плавающей запятой;
- •§6.Проектирование микро - эвм
- •§6.1.Функциональные блоки и организация управления в микро - эвм §6.1.1Общие сведения
- •§6.1.2. Структура операционного устройства
- •§6.1.3. Структура устройства управления
- •1. Безусловный переход из адреса Ai по адресу Aj определенному одним из способов адресации (рис. 6.7,а).
- •Однокристальные эвм §7.Описание микроконтроллеров 8051, 8052 и 80c51 §7.1 Вступление
- •§7.2Специальные функциональные регистры
- •§7.3 Структура и работа портов
- •§7.3.1 Конфигурации ввода-вывода
- •§7.3.2 Запись в порт
- •§7.3.3 Загрузка и согласование портов.
- •§7.3.4 Особенность чтения-модификации-записи
- •§7.4.Доступ к внешней памяти
- •§7.5 Таймер/счетчик
- •Таймер 0 и Таймер 1
- •Режим 0 (mode 0)
- •М1 м0 Режим
- •§7.5 Последовательный интерфейс
- •§7.5.1 Многопроцессорные связи
- •§7.5.2 Управляющий регистр последовательного порта
- •§7.5.4 Скорость приема/передачи
- •§7.5.5Использование таймера 1 для задания скорости приема/передачи
- •Дополнительные сведения о режиме 0
- •Дополнительные сведения о режиме 1
- •Дополнительные сведения о режимах 2 и 3
- •Прерывания
- •§7.6 Структура уровней приоритета
- •Перехват прерываний
- •Внешние прерывания
- •Время отклика
- •Одношаговые операции
- •Версии микросхем с сппзу
- •Две схемы блокировки программной памяти
- •Защита пзу
- •Внутричиповые осцилляторы
- •Осцилляторах mcs-51
- •Внутренняя синхронизация
- •§8.1.Введение
- •§8.2. Обзор характеристик
- •Отличия pic16c84 от pic16c5x
- •Mаркировка при заказе
- •Разводка ножек
- •Прямая адресация.
- •Проблемы с таймером
- •Регистр статуса
- •Программные флаги статуса
- •Аппаратные флаги статуса
- •Организация встроенного пзу
- •Pc и адресация пзу
- •Стек и возвраты из подпрограмм
- •Данные в eeprom
- •Управление eeprom
- •Организация прерываний
- •Регистр запросов и масок
- •Внешнее прерывание
- •Прерывание от rtcc
- •Прерывание от порта rb
- •Прерывание от eeprom
- •Обзор регистров/портов
- •2) Прочитать порт в. Это завершит состояние сравнения.
- •Проблемы с портами
- •Обзор команд и обозначения
- •Условия сброса
- •Алгоритм сброса при вал. Питания
- •Watch Dog таймер
- •Типы генераторов.
- •Генератор на кварцах
- •Rc генератор.
- •Внешнее возбуждение. Регистр option
- •Подключения делителя частоты
- •1. Movlw b`xx0x0xxx` ;выбрать внутреннюю синхронизацию и новое
- •Конфигурационное слово
- •01 Xt генератор
- •10 Hs генератор
- •11 Rc генератор
- •Индивидуальная метка
- •Защита программ от считывания
- •1) Запрограммируйте и проверьте работу исправного кристалла.
- •2) Установите защиту кода программы и считайте содержимое программной памяти в файл-эталон.
- •3) Проверяйте любой защищенный кристалл путем сравнения его программной памяти с содержимым этого эталона.
- •Режим пониженного энергопотребления.
- •1. Внешний сброс - импульс низкого уровня на ножке /mclr.
- •2. Сброс при срабатывании wdt(если он разрешен)
- •3. Прерывания. (Прерывание с ножки int, прерывание при изменении порта b, прерывание при завершении записи данных eeprom).
- •Максимальные значения электрических параметров
- •1. Полная рассеиваемая мощность не должна превышать 800 мВт для каждого корпуса. Рассеиваемая мощность вычисляется по следующей формуле:
- •Скоростные характеристики:
- •§8.3. Что такое pic ?....
- •Hабор регистров pic
- •Регистр косвенной адресации ind0
- •Регистры общего назначения
- •Сторожевой таймер wdt
- •Тактовый геhератор
- •Xt кварцевый резонатор
- •От теории - к практике...
- •Initb equ b'00000000' ; ; Рабочая секция ; ; начало исполняемого кода
- •Пример программы
- •Ассемблироваhие
- •Программироваhие
- •Набор команд pic
- •Incf scratch,0 ;увеличить scratch на 1
- •Iorwf dataport,1 ;установить биты в поpте b по маске w
- •Iorlw 09h ;установить 0-й и 3-й биты Светодиоды покажут 00011001.
- •Xorlw b'11111111' ;пpоинвеpтиpовать w Светодиоды покажут 11011111.
- •Comf scratch,0 ;инвеpтиpовать scratch Светодиоды покажут 10101010.
- •Специальные команды
- •§9.Введение вAdsp §9.1. Обзор
- •§9.2. Функциональные устройства
- •§9.3. Интерфейс системы и памяти
- •§9.4. Набор команд
- •§9.5. Рабочие характеристики цифровых сигнальных процессоров
- •§9.6. Базовая архитектура
- •§9.7. Вычислительные устройства
- •§9.8. Генераторы адреса и программный автомат
- •§9.9. Шины
- •§9.10. Другие устройства на кристалле
- •§9.11. Последовательные порты
- •§9.12. Таймер
- •§9.13. Порт интерфейса хост-машины (adsp-2111, adsp-2171, adsp-21msp5x)
- •§9.14. Порты прямого доступа к памяти (adsp-2181)
- •§9.15. Аналоговый интерфейс
- •§9.16. Система программно – аппаратных средств отладки процессоров семействаAdsp - 2100
- •§9.17. Генераторы адреса и программный автомат
- •§10Вычислительные устройства §10.1. Обзор
- •Последовательности двоичных символов
- •Беззнаковый формат
- •Знаковые числа в дополнительном коде
- •§10.2. Арифметико – логическое устройство (алу)
- •Блок-схема алу
- •Стандартные функции
- •Регистры ввода/вывода алу
- •Возможность операций с повышенной точностью
- •Режим насыщения алу
- •Режим фиксации переполнения алу
- •Деление
- •§10.3. Умножитель – накопитель (умножитель)
- •Арифметические операции умножителя
- •Арифметические операции устройства сдвига
- •Операции умножителя-накопителя
- •X*y Умножение операндов х и y
- •Форматы ввода данных
- •Регистры ввода/вывода умножителя-накопителя
- •§10.4. Устройство циклического сдвига
- •Денормализация
- •Нормализация
- •§11. Управление программой
- •§11.1. Обзор
- •§11.2. Программный автомат
- •§11.3 Команды управления программой
- •§11.4. Контроллер прерываний
- •§11.5. Условные команды
- •§12. Дополнительное аппаратное обеспечение §12.1. Обзор
- •§12.2. Начальная загрузка через хост – машину с использованием процедур запроса и предоставления шины
- •1) Для перезапуска процессора семейства adsp-2100 pb8 устанавливается низким.
- •§12.4. Сопряжение последовательного порта с цап
- •§12.5. Сопряжение последовательного порта с ацп
- •§12.6. Сопряжение последовательного порта с другим последовательным портом
- •§12.7. Сопряжение микрокомпьютера 80с51 с портом интерфейса хост – машины
- •§12.8. Обзор
- •§13. Программное обеспечение §13.1. Процесс отладки системы
- •§14. Система команд мп типа к580ик80
- •§14.1 Способы адресации мп
- •§14.2 Команды мп
- •§14.3 Пояснения к некоторым командам
- •§15. Архитектура микропроцессора z-80
- •§15.1 Назначение выводов
- •§15.2 Логическая организацияZ80
- •Устройство управления.
- •Регистры пользователя (основные регистры).
- •Регистровая пара hl.
- •Набор альтернативных регистров.
- •Арифметико-логическое устройство (алу).
- •§15.3 Система команд микропроцессора z – 80. Команды и данные.
- •3. Двухбайтовый адрес (addv).
- •4. Однобайтовая константа смещения.
- •Группа команд
- •Группа 1. Команда «нет операции»
- •Группа 2. Команды загрузки регистра константами.
- •Группа 4.Команды загрузки регистров из памяти.
- •Группа 5.Команды записи в память содержимого регистра или константы.
- •Группа 6.Команды сложения.
- •Группа 7.Команды вычитания.
- •Группа 8.Команды сравнения.
- •Подгруппа b. Команда or.
- •Подгруппа c. Команда xor.
- •Группа 11. Команда стека.
- •2.Адрес addr затем записывается в счетчик команд, и выполняется программа.
- •3.По команде ret осуществляется возврат из программы.
- •§16.Микросхема 80130
- •§17.Микросхема 80186
- •§18.Микросхема 80286
- •Verr — Проверить доступ по считыванию
- •Verw — Проверить доступ по записи
- •Определение состояния цикла шины процессора 80286
- •§19.Микропрцессоры серииiX86 фирмы intel Выбор в программе на Ассемблере типа процессора
- •§19.1. Процессоры 80186 и 80188
- •Новые инструкции
- •Инструкции pusha и popa
- •Инструкции enter и leave
- •Инструкция bound
- •Инструкции ins и outs
- •Расширенные версии инструкций процессора 8086
- •Imul si,10 это просто сокращенная форма инструкции:
- •§19.2. Процессор 80286
- •§19.3. Процессор 80386
- •Новые типы сегментов
- •Новые регистры
- •Новые сегментные регистры
- •Новые режимы адресации
- •Процессор 80386, новые инструкции
- •Проверка битов
- •Просмотр битов
- •Преобразование данных типа dword или qword
- •Сдвиг нескольких слов
- •Условная установка битов
- •Загрузка регистров ss, fs и gs
- •Расширенные инструкции
- •Специальные версии инструкции mov
- •Новые версии инструкций loop и jcxz
- •Новые версии строковых инструкций
- •Инструкция iretd
- •Инструкции pushfd и popfd
- •Инструкции pushad и popad
- •Новые версии инструкции imul
- •Imul ebp,ecx,100000000h а следующая инструкция умножает ecx на ebx, записывая результат в edx:eax:
- •Технический обзор Новое поколение процессоров фирмы intel
- •Pentium процессор. Технические нововведения.
- •Архитектура Pentium процессора
- •Суперскалярная архитектура.
- •Блок предсказания правильного адреса перехода.
- •Высокопроизводительный блок вычислений с плавающей запятой.
- •Расширенная 64-битовая шина данных.
- •Средства разделения памяти на страницы.
- •Определение ошибок и функциональная избыточность.
- •Управление производительностью.
- •§22.Введение в команды mmx.
- •§22.1. Регистры
- •§22.2. Префиксы
- •§22.3.Распаровка (paring).
- •§22.4. Типы данных
- •§22.5. Краткое описание команд
- •§23.Логическая структура микропроцессорной системы на основе комплекта бис секционного микропроцессора §23.1. Комплект бис секционного микропроцессора.
- •§23.2. Бис микропрограммного управления на основе программируемой логической матрицы (плм).
- •§23.3. Комплект бис для построения электронной системы.
- •§24. Обзор секционируемых мпк бис §24.1. Микропроцессорный комплект серии кр1802
- •§24.1.1. Восьмиразрядная микропроцессорная секция (мс) кр1802вс1.
- •§24.1.2. Двухадресная память общего назначения кр1802ир1.
- •§24.1.3. Шестнадцатиразрядный арифметический расширитель кр1802вр1.
- •§24.1.4. Схема обмена информацией (ои) кр1802вв1.
- •§24.1.5. Бис интерфейса (бис и) кр1802вв2.
- •§24.1.6. Сумматор (см) к1802им1.
- •§24.1.7. Км1802врз—умножитель двух 8-разрядных чисел.
- •§24.1.8. Км1802вр4—умножитель двух 12-разрядных чисел.
- •§24.1.9. Км1802вр5—умножитель двух 16-разрядных чисел.
- •§24.2. Микропроцессорный комплект серии к1804
- •§24.2.1. Центральные процессорные элементы к1804вс1 и к1804вс2
- •§24.3. Микропроцессорный комплект серии к587 §24.3.1. Арифметическое устройство к587ик2.
- •§24.3.2. Управляющая память к587рп1.
- •§24.3.3. Устройство обмена информации к587ик1.
- •§24.3.4. Арифметический расширитель к587икз.
- •§24.3.5. Архитектурные особенности построения управляющей микро-эвм на базе мпк серии к587
Инструкция iretd
Инструкция IRETD аналогична инструкции IRET. Она извлекает из стека EIP, а затем CS, как двойное слово (отбрасывая старшее слово), после чего извлекает EFLAGS, как двойное слово.
Инструкции pushfd и popfd
Инструкция PUSHFD заносит в стек полный 32-разрядный регистр флагов процессора 80386. Инструкция POPFD извлекает из стека полный 32-разрядный регистр флагов.
Инструкции же PUSHF и POPF заносят в стек и извлекают из него только младшие 16 битов регистра флагов.
Инструкции pushad и popad
Инструкция PUSHAD заносит в стек восемь 32-разрядных общих регистров в следующем порядке: EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI. Значение, заносимое для регистра ESP, соответствует значению регистра ESP в начале инструкции PUSHAD. Инструкция POPAD извлекает из стека семь 32-разрядных общих регистров в следующем порядке: EDI, ESI, EBP, EBX, EDX, ECX и EAX. Все эти регистры можно сохранить в стеке с помощью инструкции PUSHAD, а затем восстановить с помощью инструкции POPAD. Регистр ESP инструкцией POPAD не восстанавливается. Вместо этого выполняется выполняется увеличение на 32, чтобы отбросить блок из восьми 32-разрядных общих регистров, ранее сохраненный в стеке. Сохраненное ранее значение ESP игнорируется.
Новые версии инструкции imul
Дополнительно к формам инструкции IMUL, предусмотренным для процессоров 8086/80186/80286 в процессоре 80386 предусмотрена возможно самая удобная форма инструкции IMUL: любой общий регистр или ячейку памяти можно умножать на любой общий регистр, при этом результат снова сохраняется в одном из исходных регистров. Например, инструкция:
imul ebx,[edi*4+4] умножает содержимое регистра EBX на значение размером в двойное слово, хранящееся по адресу памяти edi*4+4, а результат сохраняет снова в регистре EBX.
Как можно заметить, первый операнд в этой форме инструкции IMUL представляет собой целевой регистр. Этот операнд может быть любым 16- или 32-разрядным общим регистром. Второй операнд может задаваться любым 16- или 32-разрядным общим регистром или ячейкой памяти. Размеры двух операндов должны совпадать. Если результат, рассматриваемый, как значение со знаком, слишком велик, чтобы его можно было разместить в приемнике, то устанавливаются флаги переноса и переполнения.
Как можно ожидать, в процессоре 80386 имеются также расширенные формы инструкции IMUL для процессоров 8086/80186/80286, поддерживающие 32-разрядные операнды. Например, в следующем коде ECX умножается на 1000000000h, а результат сохраняется в регистре EBP:
Imul ebp,ecx,100000000h а следующая инструкция умножает ecx на ebx, записывая результат в edx:eax:
imul ebx
§20.Pentium Pro
C помощью разных приемов фирме Intel удавалось каждое новое поколение своих процессоров делать быстрее, чем предыдущее. Казалось, если разработчики смогут благодаря увеличению тактовой частоты выжать из Pentium-процессора несколько большую производительность, то будет достигнут предел: старая архитектура в этом случае не даст больше ничего.
Поэтому во многих отношениях Intel начал свою работу над новым процессором (известным в стадии разработки как Р6) практически заново. Внешними отличительными признаками Pentium Pro являются прямоугольный корпус с двумя встроенными кремниевыми чипами (сам микропроцессор и кристалл сверхскоростной кэш-памяти второго уровня), а также полностью измененный внешний вид процессорного модуля. То обстоятельство, что теперь в схеме коммутации чипа имеются три параллельных конвейера для непрерывной обработки команд, еще не говорит ни о чем. Существенно то, что этот процессор отрабатывает программы совершенно иначе, чем все его предшественники. Проще говоря, Pentium Pro раскладывает все поступающие к нему инструкции на небольшие фрагменты, которые он потом обрабатывает, но не по очереди, а пытается найти такую последовательность, которая привела бы к самому оптимальному варианту выполнения команд. Чтобы оперировать подобным образом, нет необходимости в новом программном обеспечении. Pentium Pro может работать с прежним набором команд для Intel-процессоров, являясь, таким образом, совместимым с имеющимся программным обеспечением. Однако существуют моменты, когда то, что можно выжать из 486-го и Pentium-процессоров, не удается лидеру — Pentium Pro. To, что элегантно обеспечивало старым чипам плавную работу, приводит Pentium Pro к остановке. Он буквально захлебывается небольшими фрагментами инструкций, которые "Dynamic Execution" пытается обработать как на конвейере, чтобы выйти на предусмотренный темп. Первые компьютеры с процессором Pentium Pro показывают, к чему это приводит: с приложениями под Windows они работают даже несколько медленнее, чем Pentium-ПК с аналогичным оснащением.
Pentium Pro требует, прежде всего, 32-разрядных программ. Операционная система также не должна быть тормозом: на компьютере уже должна быть инсталлирована настоящая 32-разрядная среда (например, Windows-NT).
Самые быстрые из тестируемых до сих пор ПК с Pentium Pro поступали от фирм Siemens-Nixdorf и IBM. При тактовой частоте процессора 150 МГц они работают вдвое быстрее систем на базе 120 МГц Pentium.
Чтобы понять этот скачок по мощности, нужно уже вести разговор о битах и байтах, детально вникая в конструкцию и принцип действия Pentium Pro. Начнем с интегрированной в корпусе процессора кэш-памяти второго уровня Second-Level-Cache (L1-Cache), являющейся основным отличительным признаком Pentium Pro. Она служит как буферная память для быстрого обмена данными, которые многократно используются при транзакциях. Располагаясь в виде второго модуля на той же подложке, L1-Cache, состоящий из 15,5 млн. транзисторов, дополняет чип процессора с его 5,5 млн. транзисторов (это почти вдвое больше, чем у Pentium — 3,1 млн.).
Эти цифры соответствуют процессору с вариантом кэш-памяти на 256 Кбайт, который сейчас представлен на рынке. Для серверов предусматривается кэш на 512 Кбайт, поэтому количество интегрированных элементов памяти еще удвоится. Так как структуры кэш-памяти однообразны, она может быть очень плотно упакована на кремниевой подложке, благодаря чему блок Cache-Dual немного меньше, чем CPU. Задача кэш-памяти — избежать задержек, которые возникают при доступе к RAM. Типичные значения времени доступа для чипа DRAM, использующегося в качестве оперативной памяти, находятся в пределах от 60 до 80 нсек. Для процессора это слишком медленно. При тактовой частоте 150 Мгц он приблизительно через 7 нсек запускает новый рабочий цикл. Эффективно работающий процессор просто не может устанавливать слишком много циклов ожидания, поэтому часто используемые команды и данные запоминаются в кэш-памяти, к которой процессор имеет быстрый доступ. Начиная с 486-х машин, основная кэш-память (L1-Cache) интегрирована в корпусе процессора. Непосредственная близость к CPU, к ядру процессора, дает возможность для Pentium Pro реализовать обмен данными между центральным блоком и L2-Cache на максимальной скорости процессора. Для первого Pentium Pro — это 150 Мгц.
Обмен данными между CPU и L2-Cache реализован через 64-разрядный канал связи. Кроме того, эта кэш-память организована таким образом, что она не блокируется. Процессор не останавливается из-за операций с кэш-памятью, и транзакции в процессорной шине не замедляются.
Если, например, необходимые данные отсутствуют в кэш-памяти, то появляется статус "Miss" (отсутствие) и процессор немедленно выполняет другие инструкции. Одновременно он пытается извне, через шину памяти, ввести данные, которых нет в кэше. Каналом связи с внешней системной памятью также является 64-разрядная шина. Процессор, напротив, является "чистой" 32-разрядной машиной. Только что запущенные на выполнение инструкции снова могут привести к статусу "Cache-Miss" и вызвать после этого опять соответствующие процедуры. Pentium Pro одновременно может поддерживать до четырех таких транзакций.
Для 486- и Pentium-процессоров L2-Cache обычно размещается на материнской плате в виде отдельного модуля. То, что интегрированная в корпус процессора буферная память не только экономит место, но и работает значительно быстрее обычного кэша, показывает простой ЧИП-тест. В данном случае работа велась с различными по размерам блоками данных, которые использовали по очереди: основную кэш-память (L1-Cache) объемом 16 Кбайт, находящуюся в CPU; L2-Cache и, наконец, рабочую память (RAM).
С помощью простых подпрограмм низкого уровня было показано, что обмен с L1-Cache для Pentium Pro проходит несколько быстрее, чем для Pentium. Если тестовый файл имеет размер 1 MB, то 256 KB кэш не может его целиком хранить и скорость для обоих процессоров в одинаковой степени резко падает. Таким образом, объем L2-Cache представляет определенный интерес с точки зрения работы процессоров с файлами больших объемов.
Pentium Pro имеет скорость доступа к буферной памяти в несколько раз выше, чем старый Pentium. Тестирование проводилось на компьютере Pentium Pro фирмы Siemens-Nixdorf (150 Мгц) и Pentium (120 Мгц) (см. диаграмму)."Dynamic Execution" — определение, введенное фирмой Intel. За ним скрывается в сущности комбинация трех приемов, которые применяются для процессора Pentium Pro, чтобы ускорить разработку данных:
прогноз операции перехода: процессор просматривает на несколько шагов вперед программное обеспечение и определяет, какие ветвления с большей вероятностью будут преобладать и следовательно, какие группы инструкций нужно обработать в следующем цикле.
анализ потока данных: в следующем цикле процессор проверяет, какие инструкции зависят от других результатов и данных. Таким образом, он устанавливает оптимальную очередность выполнения команд. Первоначальная последовательность инструкций при таком подходе не должна соблюдаться: "Out-of-Order-Execution" — непоследовательное исполнение. Для Pentium Pro это может означать отход от некоторой последовательности событий, которая обязательно предписывает ему принудительные паузы, так как он должен выполнять это лишь шаг за шагом.
• опережающее исполнение: на основании временной диаграммы, команды выполняются в выбранном порядке таким образом, чтобы процессор был постоянно занят.
Для того чтобы реализовать "Dynamic Execution", Intel вынужден был искать новые решения. Это объясняется тем, что ограничения производительности Pentium-процессора были непреодолимы. Конвейерная архитектура Pentium состоит из пяти ступеней, для Pentium Pro она составляет четырнадцать ступеней.
Intel глубоко "запустил руку" в RISC-методы повышения производительности (RISC — Reduced Instruction Set Computer). Если Pentium обрабатывает две инструкции в тактовом цикле, являясь, таким образом, первым суперскалярных процессором Intel, то Pentium Pro обрабатывает в трех параллельных конвейерах до трех инструкций за цикл. "Суперконвейерная" — таким несколько необычным словом можно было бы назвать современную процессорную технологию. Это означает одновременную обработку нескольких команд, разбитых на несколько ступеней независимо друг от друга. Линейная обработка всех входных команд с классическими фазами выборки и исполнения заменяется для Pentium Pro на так называемый "пул команд" (Instruction Pool). Здесь происходит улучшенная планировка команд, замена классической фазы "исполнение" на распределенную схему из новых фаз "Dispatch/ Execute" (планирование/исполнение) и "Retire" (возврат), что позволило запускать команды в произвольном порядке, но завершать их в естественном порядке поступления. В этом пуле могут быть, например, четыре команды, из которых первая может сразу не выполняться из-за того, что в кэш-памяти отсутствуют необходимые данные, которые сначала должны быть получены из рабочей памяти. Если имеется вторая инструкция, которая зависит от первой, то обычный CPU должен сначала подождать. Pentium Pro, напротив, может с опережением обработать третью и четвертую команды, если для этого не понадобятся исполнения предыдущих результатов. Результаты этого процесса снова возвращаются в пул команд и ожидают там дальнейшей обработки в правильной последовательности. Для отработки Cache-Miss требуется много рабочих тактов. В это время Pentium Pro просматривает от 20 до 30 инструкций вперед относительно программного счетчика. Среди них находится в среднем 5 ветвлений, которые требуется правильно спрогнозировать, чтобы не потерять преимущество в скорости. Недостатком суперскалярной концепции является то, что неправильный прогноз может привести к ненормированным потерям времени. Поэтому уже подготовленные к выполнению инструкции при этих обстоятельствах аннулируются. Функциональная схема, представленная на следующей странице объясняет принцип действия процессора Pentium Pro. Instruction Fetch Unit (IFU) — блок выборки команд содержит так называемую I-Cache. При необходимости CPU быстро извлекает из этой памяти свои инструкции. Необходимую информацию об индексе поиска IFU узнает от Branch Target Buffer (BTB) — буфера адресов перехода, задачей которого является предсказание ветвлений. Для этого применен относительно сложный алгоритм, который дает возможность BTB выйти на 90%-ю точность предсказания. I-Cache захватывает по мере надобности кэш-строку и передает декодеру 16 байт, которые выровнены по границе слова. Так как программный код для инструкций Intel-архитектуры часто имеет ветвления на середину или конец кэш-строки, то всегда читаются две строки.
Задачей дешифратора инструкций (Instruction Decoder) является разложение команд для дальнейшей обработки на небольшие фрагменты, так называемые Micro-Ops (микрооперации). Микрооперации (МО) представляют собой "атомарные" блоки инструкций процессора Pentium Pro. Все МО имеют одинаковую длину и состоят, в зависимости от обстоятельств, из двух логических источников и одного логического приемника. Большинство инструкций конвертируются непосредственно в одну МО, некоторые в 1-4 МО.
Комплексные инструкции требуют собственного микрокода (MIS-Microcode Instruction Sequenzer). Этот микрокод является лишь набором запрограммированных последовательностей обычных МО. В каждом тактовом цикле из трех раздельных декодеров (DO, Dl, D2) генерируются три МО, из-за чего Pentium Pro обозначается также как суперскалярный процессор третьего уровня. Аналогичный принцип используют фирмы AMD для заявленного процессора К5 и NexGen для Nx586.
МО выстраиваются в очередь и передаются в Register Alias Table (RAT) — таблицу переименования регистров. Здесь логические ссылки на регистры архитектуры Intel преобразуются в обращения к физическим регистрам Pentium Pro. Intel-архитектура располагает относительно небольшим набором регистров. Трудность представляет обработка инструкций в режиме переупорядочивания ("out of order"), в этом случае появляются бесполезные циклы ожидания. МО снабжаются еще информацией о статусе, прежде чем они помещаются в ReOrder Buffer (ROB) — буфер переупорядочивания, который и представляет пул команд. Здесь МО упорядочиваются таким образом, что в конце выполнения команды снова образуется правильная последовательность, не нарушающая семантику программы.
Помимо этого из RAT МО поступают в Reservation Station (RS) — станцию резервирования, откуда они могут посылаться в исполняющие устройства (EUs — Execution Units). Предполагается, что по статусу можно определить наличие всех операндов микрооперации и что EU, отвечающее за определенные МО, обладает необходимыми ресурсами. RS связана с исполнительными устройствами через пять портов и имеет выход на несколько ресурсов. С портом 0 связаны, прежде всего, различные устройства арифметики с плавающей запятой. Их объединяет необходимость в большой разрядности шины данных. Для чисел с плавающей запятой необходимо предусмотреть 86 бит. Порт 1 состоит из устройства целочисленной арифметики (IEU — Integer Execution Unit) и устройства операций перехода (JEU — Jump Execution Unit). Порты 2, 3 и 4 необходимы для доступа через блок генерации адресов (AGU — Address Generetion Unit) к основной памяти. Результат выполнения команд попадает снова как в RS, так и в ROB. Тем самым последующим операциям гарантируется доступ к текущим данным.
Пиковую скорость Pentium Pro развивает при обработке пяти МО за такт, что соответствует наличию одной МО на один порт. В среднем обычно обрабатывается три МО за такт. В соответствии с требованиями к информационному потоку и при наличии доступа к данным из исполняющих устройств, МО передаются далее, независимо от первоначальной последовательности, которая была заложена в программе.
В конце Retire Unit (устройство вывода из пула готовых инструкций) проверяет также статус МО в пуле инструкций. Оно отыскивает МО, которые уже подготовлены к исполнению и могут быть удалены из пула. Поскольку эти МО уже полностью использованы, то исходная задача переписывается Intel-архитектурой так же, как и для первоначальной группы инструкций. После этого Retire Unit воссоздает исходную программную последовательность. Это проделывается также при наличии: прерываний (Interrupts); реакций на особую ситуацию (Traps), вызывающих внутренние прерывания; отказов (Faults); контрольных точек (Breakpoints), необходимых для отладки и ложных прогнозов.
Большинство из того, что происходит в Pentium Pro, до определенного момента является чисто опережающим процессом. Лишь в самом конце принимаются данные, в достоверности которых имеются сомнения, и записываются в Retirement File Register (RFR) — регистр удаляемых файлов. Устройство Retirement может принимать до трех МО за такт.
Вход и выход у Pentium Pro фактически выглядит так же как и у 486-го процессора. То, что внутри новый процессор функционирует совсем по-другому, пользователя, естественно, не беспокоит. Он может его рассматривать как черный ящик. Сомнения появляются лишь тогда, когда этот технический шедевр получает сомнительное программное обеспечение, в результате чего не оправдываются возлагаемые на него надежды. Ключом к скорости Pentium Pro является его способность к Out-of-Order-Execution (непоследовательное выполнение команд), которая постоянно поддерживается в процессе работы процессора.
В некоторых случаях команды нужно выполнять по очереди. Такие инструкции приводят суперконвейерную конструкцию Pentium Pro к остановке. Процессор должен приостановить все другие операции и при необходимости снова начать, обработав прежде специальную инструкцию. Например, чтение полного регистра может остановить обработку команд, если соответствующая инструкция следует за инструкцией записи для сегмента этого регистра. Это как раз тот случай, когда записывается 8 бит 16-разрядного регистра. Иногда программисты на ассемблере используют половину регистра, например AL, чтобы запомнить один байт информации. К фатальной ошибке приводит попытка применить непосредственно в программе инструкцию чтения АХ, то есть 16-битного содержимого этого регистра Эти методы программирования восходят еще из времен 286-х машин и DOS, когда адресное пространство было ограничено 64 Кбайтами.
Правда, такое использование регистров в 16-разрядном программном коде встречается не часто, однако когда это происходит, возникают значительные задержки. За семь или больше тактовых циклов процессор может перейти в состояние ожидания. За это время х86 мог бы выполнить, возможно, 20 следующих команд.
Компилятор фактически в состоянии минимизировать эту задачу, однако, еще часто в ассемблерных кодах используются неполные регистры. Windows 3.1 и также часть Windows 95 содержат такие, написанные от руки коды. Это является причиной того, что даже 32-разрядные приложения для Windows 95 нельзя полностью использовать на Pentium Pro. Команды чтения полного регистра после инструкций записи для 8- или 16-разрядного регистра могут вызвать такие же проблемы, однако они встречаются значительно реже'. Intel с самого начала оптимизировал Pentium Pro для 32-разрядного программного обеспечения.
Трудности в 16-разрядных программах могут также вызывать команды ввода/вывода и операции с управляющими регистрами. Извлекая их из пула команд, Pentium Pro не может вести обработку в любой последовательности. Если процессор сталкивается с такими инструкциями, он должен завершить все команды, находящиеся в стадии выполнения, не приступая больше к выполнению новых. Образно говоря, конвейер опустошается.
Для 32-разрядного программного обеспечения управление памятью, как правило, вызывает меньшие затраты, чем для 16-разрядных программ, так как в качестве адресного пространства может использоваться до 4 Гбайт памяти. Центральный процессор вследствие этого меньше загружен и может переключать свои ресурсы на выполнение, операций, требующих интенсивных вычислений. Сравнив набор приложений Windows 3.1 (16 разрядов) с 32-разрядными приложениями для Windows 95, можно обнаружить, что количество команд, приходящееся на управление памятью, снижено. Вследствие этого возможно одновременно выполнять больше операций, связанных с вычислениями (смотри диаграмму). В качестве операционных систем, наиболее подходящих для Pentium Pro, в этом и следующем году Intel видит Windows NT и Unix. Если необходимо работать с Windows 3.1 или Windows 95, то рекомендуется, по-прежнему, Pentium-процессор. По календарному плану в начале 1997 года появится для Pentium Pro и Windows 95. До этого периода, возможно, появятся еще более быстрые процессоры Pentium Pro и большое количество 32-разрядных приложений.
Новый процессор несет в компьютер также новый дизайн шины. Шина Pentium Pro предоставляет возможность непосредственного подсоединения последующих процессоров или высокоскоростных устройств ввода/вывода. Процессорную шину нельзя путать с PCI-шиной. Последняя, в свою очередь, может стыковаться с процессорной шиной посредством интерфейса PCI-BRIDGE.
Около 150 контактных выводов процессора связывают линии передачи данных, которые грубо можно разделить на линии запросов и ответов. Request (запрос данных) требует двух тактовых циклов. В первом цикле подготавливаются такие данные, как адреса, тип памяти и сходные с ними параметры, во втором — добавляется специальный код опознавания и управляющие инструкции.
Различные запросы и ответы могут одновременно находиться на шине. Большинство запросов процессор может посылать в память, не ожидая каждый раз ответ. Принцип действия процессора становится понятным из схематической диаграммы, которая иллюстрирует конвейерный подход к обработке микроопераций, микрокоманд Pentium Pro. Конвейер этого процессора насчитывает 14 различных ступеней.
Он состоит из трех отдельных частей, которые более или менее зависят друг от друга. 14-ступенча-тый конвейер, состоящий из одной части, имеет существенный недостаток: он не может работать быстрее, чем его самая длинная ступень. В течение последующих 2,5 тактовых циклов происходит декодирование, при котором формируются микрооперации. Далее идет переименование регистров.
Последняя ступень (запись в Reservation Station) обычно перекрывается как минимум с одной ступенью в следующем сегменте конвейера.
Если в 16-разрядной программе появляются команды, которые Pentium Pro не может обработать в режиме "out-of-order", то при необходимости, операции могут быть стерты в нижних ступенях конвейера и затем возобновлены сначала.
Начало второй фазы ("Out-Of-Order Core") соответствует входу в К Reorder Buffer (ROB). Для идентификации микроопераций здесь предусмотрены две ступени и одна для исполнения одной микрооперации. Операции для арифметики с плавающей запятой имеют большую длительность.
В последней части конвейера (Retirement) обеспечивается процесс объединения микроопераций снова в одно целое.
Вследствие дальнейшего деления на части первоначально пятиступенчатого конвейера 486- и Pentium-процессоров, каждая единичная ступень должна выполнять меньший объем работы. Следствием этого является то, что ступени конвейера могут завершаться быстрее. Тем самым можно добиться более высокого быстродействия. При одинаковой технологии изготовления можно получить тактовую частоту для Pentium Pro на треть больше, чем для Pentium. • Первая часть конвейера в Pentium Pro состоит из восьми тактовых циклов и обозначается Intel как "In-Order Front End".
§21.PENTIUM processor