мпс шпоры

1. Классификация, назначение и основные характеристики микропроцессоров.
Классификация микропроцессоров
Мп могут классифицироваться: по технологии изготовления кристалла, функц-ному назначению, быстродействию, разрядности, типу корпуса, архитектурным особенностям и т.д. Наиболее всеобъемлющей и наглядной представляется классификация по функциональному назначению и архитектурным особенностям (рис. 1.1).
1.Универсальные микропроцессоры
Универсальные микропроцессоры предназначены для применения в вычислительных системах, персональных ЭВМ, рабочих станциях, в массово-параллельных суперЭВМ. Основной их характеристикой является наличие развитых устройств для эффективной реализации операций с плавающей точкой над 64-разрядными и более длинными операндами. Предназначаются в основном для проведения научно-технических расчетов.
Как видно из рис. 1.1, среди универсальных различают МП с фиксированной системой команд и разрядностью и секционированные МП с микропрограммным управлением. Подавляющее большинство современных МП относятся к первой категории. В свою очередь, МП с фиксированной системой команд по особенностям своей организации подразделяются на процессоры RISC и CISC.
RISC - Reduced (Restricted) Instruction Set Computer -
процессоры (компьютеры) с сокращенной системой команд. В этих процессорах используются отдельные наборы команд для работы с памятью и отдельные наборы команд для преобразования информации в регистрах процессора. Каждая такая команда единообразно разбивается на небольшое количество этапов с одинаковым временем исполнения (выборка команды, дешифрация команды, исполнение, запись результата), что позволяет строить эффективный конвейер процессора, способный каждый такт выдавать результат исполнения очередной команды.
После обособления RISC-процессоров в отдельный класс процессоры с традиционными наборами команд стали называться CISC-процессорами. CISC - Complex Instruction Set Computing - процессоры с полным набором инструкций, к которым относится и семейство Intel х86. Как правило, в этих процессорах команды имеют много разных форматов и требуют для своего представления различного числа ячеек памяти. Это обусловливает определение типа команды в ходе ее дешифрации при исполнении, что усложняет устройство управления процессора и препятствует повышению тактовой частоты до уровня, достижимого в RISC-процессорах на той же элементной базе.
Очевидно, что RISC-процессоры эффективны в тех областях применения, в которых можно продуктивно использовать структурные способы уменьшения времени доступа к оперативной памяти. Если программа генерирует произвольные последовательности адресов обращения к памяти и каждая единица данных используется только для выполнения одной команды, то фактически производительность процессора определяется временем обращения к основной памяти. В этом случае использование сокращённого набора команд только ухудшает эффективность, так как требует пересылки операндов между памятью и регистром вместо выполнения команд типа «память, память - память».
Если программа будет написана так, что данные будут размещены хаотично и из каждого пересылаемого блока данных будет использоваться только небольшая их часть, то скорость обработки замедлится в несколько раз - до скорости работы основной памяти.
Общими особенностями большинства современных универсальных МП являются:
высокоскоростная обработка 64-разрядных операндов с фиксированной и плавающей точками;
сложная схемотехника функциональных узлов, обусловленная использованием большого числа транзисторов (до нескольких десятков миллионов штук);
большое число слоев металлизации (до 10);
производительность, приближающаяся или превышающая миллиард операций в секунду.
Общей тенденцией является также сочетание в одном кристалле особенностей RISC- и CISC-архитектур.
До последнего времени лидерами по производительности среди всех универсальных МП являлись микропроцессоры Alpha фирмы DEC. Однако с появлением на рынке микропроцессоров Itanium фирм Intel и Hewlett-Packard лидерство перешло к ним.
Секционированные МП без фиксированной системы команд предназначены для построения широкого класса быстродействующих средств вычислительной техники - от микроконтроллеров до высокопроизводительных ЭВМ. Микропро- граммируемость и возможность разрядного расширения позволяют эмулировать практически любую систему команд, что делает данную архитектуру очень гибкой.
2. Сигнальные микропроцессоры (МП цифровой обработки сигналов)
Цифровые сигнальные процессоры рассчитаны на обработку в реальном времени потоков данных, образованных путем оцифровывания аналоговых сигналов. К их особенностям относятся:
- малоразрядная (40 разрядов и менее) обработка чисел с плавающей точкой;
- преимущественное использование чисел с фиксированной точкой разрядности (32 и менее);
- ориентация на несложную обработку больших массивов данных.
Отличительной особенностью задач цифровой обработки сигналов является поточный характер обработки больших объемов данных в реальном масштабе времени, требующий от технических средств высокой производительности и обеспечения возможности интенсивного обмена с внешними устройствами. Соответствие данным требованиям достигается в настоящее время благодаря специфической архитектуре сигнальных процессоров, проблемно ориентированной системе команд.
Для сигнальных процессоров характерным является наличие аппаратного умножителя, позволяющего выполнять умножение двух чисел за один командный такт. В универсальных процессорах умножение обычно реализуется за несколько тактов как последовательность операций сдвига и сложения. Другой особенностью сигнальных процессоров является включение в систему команд таких операций, как умножение с накоплением MAC (С := А,
· Bj + С) с указанным в команде числом выполнений в цикле и с правилом изменения индексов i и j используемых элементов массивов А и В), инверсия бит адреса, разнообразные битовые операции. В сигнальных процессорах реализуется аппаратная поддержка программных циклов, кольцевых буферов. Один или несколько операндов извлекаются из памяти в цикле исполнения команды.
Реализация однотактного умножения и команд, использующих в качестве операндов содержимое ячеек памяти, обусловливает сравнительно низкие тактовые частоты работы этих процессоров. Специализация не позволяет поднимать производительность за счет быстрого выполнения коротких команд типа R,R > R, Этих команд просто нет в программах обработки сигналов.
Сигнальные процессоры различных компаний-производителей образуют два класса, существенно различающихся по цене: менее дорогие микропроцессоры с обработкой данных в формате с фиксированной точкой и более дорогие микропроцессоры, аппаратно поддерживающие операции над данными в формате с плавающей точкой.
Использование в сигнальной обработке данных в формате с плавающей точкой обусловлено несколькими причинами. Для многих задач, связанных с выполнением интегральных и дифференциальных преобразований, особую значимость имеет точность вычислений, обеспечить которую позволяет экспоненциальный формат представления данных. Алгоритмы компрессии, декомпрессии, адаптивной фильтрации в цифровой обработке сигналов связаны с определением логарифмических зависимостей и весьма чувствительны к точности представления данных в широком динамическом диапазоне.
Работа с данными в формате с плавающей точкой существенно упрощает и ускоряет обработку, повышает надежность программы, поскольку не требует выполнения операций округления и нормализации данных, отслеживания ситуаций потери значимости и переполнения.
Платой за эти дополнительные «комфорт и скорость» является высокая сложность функциональных устройств, выполняющих обработку данных в формате с плавающей точкой, необходимость использования более сложных технологий производства микросхем, больший процент отбраковки изделий и, как следствие, дороговизна микропроцессоров.
В настоящее время стал популярен и другой подход к получению высокой производительности. Большое количество транзисторов на кристалле может быть использовано для создания симметричной мультипроцессорной системы с более простыми процессорами, обрабатывающими целочисленные операнды. Примерами таких, так называемых медийных, процессоров служат Mediaprocessor компании MicroUnity, Trimedia компании Philips, Mpact Media Engine компании Chromatic Research, Nvl компании Nvidia, MediaGx компании Cyrix.
В связи с более простой схемотехникой по сравнению с универсальными сигнальными процессорами стоимость медийных процессоров достаточно низкая (порядка 100 долл.), а значение показателя «производительность / стоимость» на два- три порядка больше. Пиковое значение производительности медийных процессоров составляет несколько миллиардов целочисленных операций в секунду.
В числе наиболее распространенных сигнальных процессоров можно назвать изделия следующих компаний: Motorola (56002, 96002), Intel (i960), Texas Instruments (TMS320Cxx), Analog Devices (21xx, 210xx).
Выбор того или иного процессора для реализации конкретного проекта - многокритериальная задача. Например, для приложений, требующих больших объемов вычислений, следует использовать более производительные МП Analog Devices, а для работ, предполагающих интенсивный обмен информации с внешними устройствами, стоит использовать МП Texas Instruments, обладающие высокоскоростными интерфейсными подсистемами.
3. Медийные микропроцессоры
Медийные процессоры представляют собой законченные системы для обработки аудио и видеоинформации.
На сегодня можно выделить два класса микропроцессоров, обеспечивающих поддержку мультимедиа на аппаратном уровне:
-универсальные процессоры с мультимедийным расширением набора команд; (В тех областях использования, где доля числовой обработки велика)
- мультимедийные микропроцессоры. ( Там где мультимедийные операции доминируют над традиционными числовыми операциями)
К первому классу можно отнести микропроцессоры UltraSPARC компании Sun Microsystem, процессоры с мультимедийным расширением системы команд (ММХ) компаний Intel - Pentium ММХ, Pentium II, III, IV, AMD - Кб, Athlon, Duron и др.
Второй класс представляет собой некоторый гибрид архитектурных решений, характерных для традиционных DSP (Digital Signal Processor) - процессоров и универсальных микропроцессоров. Микропроцессоры данного класса - медиапроцес- соры, предназначенные для обработки аудиосигналов, графики, видеоизображений, а также для решения ряда коммуникационных задач в мультимедиа ПК, в игровых приставках, бытовой технике. Наибольшее внимание привлекают сегодня микропроцессоры:
Mediaprocessor компании MicroUnity;
Trimedia компании Philips;
Mpact Media Engine компании Chromatic Research;
NVI компании Nvidia.
4. Встраиваемые микроконтроллеры
Встраиваемые микроконтроллеры предназначены для использования во встроенных системах управления, в том числе в бытовых приборах. Они отличаются наибольшей специализацией и разнообразием функций. Общее число типов кристаллов с различными системами команд превышает 500.
Однокристальные (однокорпусные) микроконтроллеры представляют собой приборы, конструктивно выполненные в виде большой интегральной схемы (БИС) и включающие в себя все составные части «голой» микроЭВМ: микропроцессор, память программ и память данных, а также программируемые интерфейсные схемы для связи с внешней средой.
Использование микроконтроллеров в системах управления обеспечивает достижение исключительно высоких показателей эффективности при столь низкой стоимости (во многих применениях система может состоять только из одной БИС микроконтроллера), что микроконтроллерам, видимо, нет разумной альтернативной элементной базы для построения управляющих и/или регулирующих систем.
Родоначальником МП данного класса является восьмиразрядный МП Intel 8048. Среди отечественных МП к этому классу можно отнести: 4-битные микроконтроллеры серий 1814, 1820, 1829 и 1013; 8-битные микроконтроллеры серии 1816; микроконтроллеры сигнальные (аналоговые микропроцессоры) серии 1813.
Архитектурными особенностями микроконтроллеров являются:
незначительная емкость памяти;
физическое и логическое разделение памяти программ (постоянное запоминающее устройство - ПЗУ) и памяти данных (оперативное запоминающее устройство - ОЗУ);
-упрощенная и ориентированная на задачи управления система команд;
примитивные методы адресации команд и данных;
специфическая организация ввода/вывода информации.
Микроконтроллеры не являются машинами классического
«фон-неймановского» типа, так как физическая и логическая разделенность памяти программ и памяти данных исключает возможность модификации и/или замены (перегрузки) прикладных программ микроконтроллеров во время работы, что сильно затрудняет их использование в качестве универсальных средств обработки данных.
5. Транспьютеры
Транспьютер - это микропроцессор с собственной внутренней памятью и линками (каналами) для соединения с другими транспьютерами.
Термин «транспьютер», произошедший в результате объединения слов «транзистор» и «компьютер», отражает основную область его применения - массово-параллельные вычислительные системы, в которых он играет роль базового вычислительного элемента.
Вполне возможно, что стремительное развитие микроэлектроники не позволит термину «транспьютер» устояться, и он будет поглощен более общим «микропроцессор», так как отличительный признак транспьютера - встроенные межпроцессорные интерфейсы - появляется в том или ином виде у всех современных микропроцессоров.
Первый транспьютер (Т414) был представлен фирмой Inmos, Inc. (Бристоль, Великобритания) в 1983 г.
Высокая степень «функциональной самостоятельности» транспьютера, простота интеграции и наличие периферийных устройств позволяют в короткие сроки создавать системы на их основе. Особенностью транспьютеров является то, что их коммуникационные каналы могут осуществлять обмен данными одновременно с вычислениями, практически не снижая производительности процессора. Благодаря этому качеству транспьютеров, системы на их основе обладают хорошей масштабируемостью и высоким значением показателя эффективности - производительность / стоимость.
В настоящее время фирма Inmos прекратила выпуск своих транспьютеров, однако продолжают серийно выпускаться транспьютероподобные сигнальные микропроцессоры TMS320C4X и ADSP 2106Х.
13 SHAPE \* MERGEFORMAT 1415

2. Стандартизация архитектур микропроцессоров.
На протяжении всей истории развития вычислительной техники предпринимались попытки (прежде всего со стороны разработчиков программных средств) стандартизировать архитектуру процессоров. Осознав безуспешность попыток добиться совместимости на уровне системы машинных команд, разработчики пытались стандартизировать язык ассемблера, языки высокого уровня, языки интерфейса прикладных программ с операционными системами.
Стимулом к этому была и остается постоянно растущая сложность как самих процессоров, так и создаваемых с их использованием программных систем.
Создание сложных новых систем требует, помимо всего прочего, наличия двух обязательных этапов: адекватного описания системы и исчерпывающего тестирования на соответствие этому описанию. Тестирование должно быть доказательным.
Отсутствие стандартизации не позволяет создавать новые системы путем конструирования из существующих, прошедших апробацию в разнообразных условиях применения большим количеством независимых пользователей.
Попытка комплексного решения проблемы стандартизации - формулирование концепции Открытых систем. Открытые системы представляют совокупность интерфейсов, протоколов и форматов данных, базирующихся на общедоступных, общепринятых стандартах, обеспечивающих реализацию трех свойств: переносимость (мобильность) программного обеспечения; взаимодействие между системами; масштабируемость.
Переносимость - свойство, выражающееся в возможности исполнения программы в исходных кодах на различных аппаратных платформах в среде различных операционных систем.
Взаимодействие систем - свойство, выражающееся в способности систем обмениваться информацией с автоматическим восприятием форматов и семантики данных.
Масштабируемость - свойство, выражающееся в возможности исполнения программы на различных ресурсах (объем памяти, число и производительность процессоров) с пропорциональным изменению ресурсов значением показателей эффективности. Важно понимать, что ресурсы могут не только возрастать, но и уменьшаться. Например, программа может выполняться на произвольном, выделенном для ее исполнения участке памяти.
В рамках концепции Открытых систем архитектура процессора должна поддаваться достаточно простому формальному описанию со спецификацией типов данных, регистров и выполняемых преобразований без «побочных эффектов».
Ниже рассмотрены две попытки реализации этого подхода.
1. Архитектурно независимая спецификация программ
В настоящее время в рамках международной организации ISO/EEC в комитете по микропроцессорным системам ведется подготовка проекта стандарта ANDF на архитектурно независимый формат спецификации программ (Architecture Neutral Distribution Format). По мнению разработчика компании X/Open Company Ltd., этот формат спецификаций позволит решить проблему переносимости программ. Компиляция исходного кода предполагается двухэтапной. На первом этапе исходный код транслируется в обобщенные декларации интерфейсов прикладных программ (API) в совокупности с обобщенными описаниями типов данных. Фактически полученная оттранслированная программа представляет собой выражение абстрактной алгебры, определенной Architecture Neutral Distribution Format. В результате текст программы может быть подвергнут формальной проверке и преобразованию.
На втором этапе генерируется программа для конкретной архитектуры.
2. Java-технология, предложенная компанией SUN
В основе данной технологии лежит понятие виртуальной Java-машины. Большинство команд Java- процессора имеют длину один байт, что согласуется со стековой архитектурой процессора, использующей небольшое число регистров и указателей на данные.
Использование байт-кода в процессоре Java позволяет уменьшить длину программ. Средняя длина команды составляет 1,8 байта. В последнее время ко всем ранее существовавшим доводам в пользу стандартизации архитектур добавилась практическая потребность работы в сетях типа Internet, что выдвигает требование короткого программного кода. Открытые системы, создаваемые в Internet, позволят накапливать программные продукты и конструировать системы из уже существующих.
Архитектура виртуальной Java-машины достаточно похожа на архитектуру транспьютеров компании Inmos. Отличие фактически состоит в добавлении элементов объектно ориентированной технологии.
Одним из препятствий на пути развития Java-технологии является низкая производительность исполнения Java-кода, однако есть все предпосылки для преодоления этого препятствия. Например, современные процессоры с системой команд х86 содержат специальный блок, транслирующий сложные команды в совокупность простых команд RISC-процессора (наиболее яркий пример - микропроцессоры фирмы AMD, начиная с пятого поколения).
Далее RISC-процессор исполняет эти команды, используя все преимущества RISC-подхода для достижения высокой производительности. Вполне реально разработать подобный транслятор для Java-кода, когда байт-код будет транслироваться в команды реального процессора.
Другим возможным подходом к повышению производительности может служить повышение скорости исполнения за счет одновременной обработки большого числа команд при выполнении их на параллельно функционирующих обрабатывающих устройствах. Этот подход также находит свою реализацию в многоядерных процессорах или процессорах с явно параллельной обработкой команд.

3. История развития и основные параметры микропроцессоров семейства Intel х86.
История микропроцессоров началась в 1971 г., когда фирма Intel выпустила первый микропроцессор i4004. Он имел разрядность данных 4 бита, способность адресовать 640 байт памяти, тактовую частоту 108 КГц и производительность 0,06 MIPS (Million Instructions Per Second). Такой процессор уже мог работать в качестве вычислительного ядра калькулятора. Он содержал 2300 транзисторов и выполнялся по технологии с разрешением 10 мкм. Через год появился его 8-битный «родственник» -18008, адресующий уже 16 Кб памяти.
В 1974 г. появился 8-разрядный процессор i8080, ставший весьма популярным устройством. Он уже имел частоту 2 МГц и адресовал 64 Кб памяти.
6000 транзисторов на кристалле позволила разместить 6-микрометровая технология изготовления. Процессор требовал трех источников питания (+5, +12 и -5 В) и сложной двухтактной синхронизации. На этом процессоре строились разнообразные терминалы, контроллеры и даже первый ПК Altair.
Следующим этапом стал процессор i8085 (5 МГц, 0,37 MIPS, 6500 транзисторов, 3-микрометровая технология). Он сохранил популярную регистровую архитектуру 8080 и программную совместимость, но в него добавили порт последовательного интерфейса, упразднили специальные интегральные схемы (ИС) поддержки (тактового генератора и системного контроллера) и несколько изменили внешний интерфейс. Главным подарком разработчикам аппаратуры стало только одно питающее напряжение+5 В.
Вариацию на тему 8080 и 8085 представлял собой процессор Z80 фирмы Zilog. Сохранив программную совместимость с 8080, в него ввели дополнительные регистры, что позволило существенно повысить производительность. Результат оказался впечатляющим - популярные компьютеры Siclair, построенные на Z80, демонстрировали на играх графику, не уступающую компьютерам IBM PC (Personal Computer) на 16-разрядном процессоре 286.
Первый 16-разрядный процессор 8086, который, как выяснилось в дальнейшем, является «родоначальником» большого семейства микропроцессоров, получившего название «х86», фирма Intel выпустила в 1978 г. Частота 5 МГц, производительность 0,33 MIPS, но инструкции уже с 16-битными операндами (позже появились процессоры 8 и 10 МГц). Технология 3 мкм, 29 тыс. транзисторов. Адресуемая память - 1 Мб. Регистровая архитектура и система команд существенно отличалась от 8080, но, естественно, прослеживаются общие идеи. Через год появился 8088 - тот же процессор, но с 8-битной шиной данных. С него началась история IBM PC, наложившая свой отпечаток на дальнейшее развитие этой линии процессоров Intel. Массовое распространение и открытость архитектуры PC привели к лавинообразному появлению программного обеспечения, разрабатываемого крупными, средними и мелкими фирмами и энтузиастами-одиночками. Технический прогресс требовал (и сейчас требует) развития процессоров, но груз программного обеспечения PC, которое должно работать и на более новых процессорах, в свою очередь требовал обеспечения обратной программной совместимости. Таким образом, все нововведения в архитектуре последующих процессоров должны были пристраиваться к существующему ядру.
При этом, естественно, возникали трудноразрешимые технические проблемы. Фирма Intel зарезервировала первые 32 вектора «для служебного пользования», однако на них «наехали» прерывания BIOS PC. Один из результатов - дополнительный способ обработки исключений сопроцессора, применяемый в старших моделях PC.
Процессор 80286, знаменующий следующий этап архитектуры, появился только в 1982 г. Он уже имел 134 тыс. транзисторов (технология 1,5 мкм) и адресовал до 16 Мб физической памяти. Его принципиальные новшества - защищенный режим и виртуальная память размером до 1 Гб - не нашли массового применения, процессор большей частью использовался как очень быстрый 8088.
Класс 32-разрядных процессоров был открыт в 1985 г. моделью 80386 (275 тыс. транзисторов, 1,5 мкм). Разрядность шины данных (как и внутренних регистров) достигла 32 бит, адресуемая физическая память - 4 Гб. Появились новые регистры, новые 32-битные операции, существенно доработан защищенный режим, появился режим V86, страничное управление памятью. Процессор нашел широкое применение в ПК, и на благодатной почве его новых свойств стал разрастаться «самый большой вирус» - MS Windows с приложениями.
С этого времени стала заметна тенденция «положительной обратной связи»: на появление нового процессора производители программного обеспечения (ПО) реагируют выпуском новых привлекательных продуктов, последующим версиям которых становится явно тесно в рамках этого процессора. Появляется более производительный процессор, но после непродолжительного восторга и его ресурсы «съедают» и т.д. Это «вечное движение», конечно, естественно, но есть обоснованное подозрение, что большие ресурсы развращают (или, по крайней мере, расслабляют) разработчика ПО, не принуждая его напрягаться в поисках более эффективных способов решения задачи. Примером эффективного программирования можно считать игрушки на Siclair ZX-Spectrum, которые реализуются на «игрушечных» ресурсах - 8-битном процессоре и 64 (128) Кб ОЗУ. С противоположными примерами большинство пользователей персональных компьютеров сталкиваются регулярно, но с ресурсами и возможностями современных микропроцессоров на них не всегда обращают внимание.
История процессора 386 напоминает историю 8086: первую модель с 32-битной шиной данных (впоследствии названной 386DX) сменил 386SX с 16-битной шиной. Он довольно легко вписывался в архитектуру PC AT, ранее базировавшуюся на процессоре 286.
Процессор Intel 486DX появился в 1989 г. Транзисторов - 1,2 млн, технология 1 мкм. От 386-го существенно отличается размещением на кристалле первичного кэша и встроенного математического сопроцессора (предыдущие процессоры имели возможность использования внешних сопроцессоров с маркировкой х87).
Кроме того, для повышения производительности в этом CISC-процессоре (как и в последующих) применено RISC-ядро. Далее появились его разновидности, отличающиеся наличием или отсутствием сопроцессора, применением внутреннего умножения частоты, политикой записи кэша и др. Занялись энергосбережением (появился режим SMM - System Management Mode), что отразилось и в продолжении линии 386 процессоров (появился процессор Intel 386SL).
В 1993 г. фирма Intel изменила маркировку своих новых микропроцессоров пятого поколения. Вместо анонсированных ранее микропроцессоров Intel 80586 появились первые процессоры Pentium с частотой 60 и 66 МГц - 32-разрядные процессоры с 64-битной шиной данных, количеством транзисторов на кристалле 3,1 млн, с питанием +5 В и выполненных по технологии 0,8 мкм. Смена названия явилась следствием не только PR-хода - показать «революционность» нового микропроцессора, но и необходимостью отсечь «пиратские клоны» кристалла 80586, появившиеся в Юго-Восточной Азии ранее оригиналов. От 486-го Pentium принципиально отличается суперскалярной архитектурой - способностью за один такт выпускать с конвейеров до двух инструкций (что, конечно, не означает возможности прохождения инструкции через процессор за полтакта или один такт). Интерес к процессору со стороны производителей и покупателей ПК сдерживался его очень высокой ценой. Кроме того, возник скандал с обнаруженной ошибкой сопроцессора. Хотя фирма Intel математически обосновала невысокую вероятность ее проявления (раз в несколько лет), она все-таки пошла на бесплатную замену уже проданных процессоров на исправленные.
Процессоры Pentium с частотой 75, 90 и 100 МГц, появившиеся в 1994 г., представляли собой уже вторую линейку процессоров Pentium. При почти том же числе транзисторов они выполнялись по технологии 0,6 мкм, что позволило снизить потребляемую мощность. От первой линейки они отличались внутренним умножением частоты, поддержкой мультипроцессорных конфигураций и имели другой тип корпуса. Появились версии (75 МГц в миниатюрном корпусе) для мобильных применений (блокнотных ПК). Процессоры Pentium стали весьма популярными в ПК. В 1995 г. появились процессоры на 120 и 133 МГц, выполненные уже по технологии 0,35 мкм (первые процессоры на 120 МГц делались еще по технологии 0,6 мкм). 1996-й называют годом Pentium - появились процессоры на 150, 166 и 200 МГц, и Pentium стал рядовым процессором для ПК широкого применения.
Параллельно с Pentium развивался и процессор Pentium Pro, который фирма Intel относила уже к шестому поколению своего семейства. Он отличался новшествами «динамического исполнения инструкций», направленными на увеличение числа параллельно исполняемых инструкций. Кроме того, в его корпусе разместили и вторичный кэш, для начала объемом 256 Кб. Однако на 16-битных приложениях, а также в среде Windows 95 его применение не дало преимуществ. Процессор содержит 5,5 млн транзисторов ядра и 15,5 млн транзисторов для вторичного кэша объемом 256 Кб. Первый процессор с частотой 150 МГц появился в начале 1995 г. (технология 0,6 мкм), а уже в конце года появились процессоры с частотой 166, 180 и 200 МГц (технология 0,35 мкм), у которых кэш достигал и 512 Кб.
После долгих обещаний в начале 1997 г. появились процессоры Pentium ММХ. Расширение ММХ предполагает параллельную обработку группы операндов одной инструкцией. Технология ММХ была призвана ускорять выполнение мультимедийных приложений, в частности операции с изображениями и обработку сигналов. Ее эффективность вызывает споры в среде разработчиков, поскольку выигрыш в самих операциях обработки компенсируется проигрышем на дополнительных операциях упаковки- распаковки. Кроме того, ограниченная разрядность ставит под сомнение применение ММХ в декодерах видеоизображений, в которых требуется обработка 80-битных операндов. Кроме расширения ММХ, эти процессоры, по сравнению с обычным Pentium, имеют удвоенный объем первичного кэша и некоторые элементы архитектуры, позаимствованные у Pentium Pro, что повышает производительность процессора Pentium ММХ и на обычных приложениях. Процессоры Pentium ММХ имеют уже 4,5 млн транзисторов и выполнены по технологии 0,35 мкм.
Технология ММХ была соединена с архитектурой Pentium Pro, в мае 1997 г. появился процессор Pentium II. Он представляет собой слегка урезанный вариант ядра Pentium Pro с более высокой внутренней тактовой частотой, в которое ввели поддержку ММХ. Трудности размещения вторичного кэша в одном корпусе с процессором преодолели нехитрым способом - кристалл с ядром процессора и набор кристаллов статической памяти и дополнительных схем, реализующих вторичный кэш, разместили на небольшой печатной плате-картридже. Все кристаллы закрыты общей крышкой и охлаждаются специальным вентилятором. Тактовые частоты ядра - 233, 266 и 300 МГц.
В 1998 г. появились микропроцессоры Pentium II, выполненные по технологии 0,25 мкм. Они имели тактовые частоты до 450 МГц и увеличенную до 100 МГц частоту системной шины, что стало возможным за счет уменьшения размеров элементов.
В 1999 г. появился микропроцессор Pentium III, кристалл которого фирма Intel маркировала как «Pentium !!!». Он имел уже тактовую частоту до 1 ГГц и обеспечивал поддержку 70 новых команд, реализующих улучшенные возможности обработки изображений, трехмерной графики, потокового видео и аудио, а также распознавания речи. На этом кристалле впервые появился серийный номер, который является уникальным идентификатором процессора и может быть использован для идентификации компьютера в сети или со стороны прикладных программ. Pentium III выпускался по технологиям 0,25 или 0,18 мкм с частотой системной шины 100 или 133 МГц.
Последняя модель семейства х86, обеспечивающая программную совместимость «снизу вверх», - 32-разрядный микропроцессор Pentium IV, появился в 2000 г. Он выполнялся по технологии 0,18 или 0,13 мкм, имел тактовые частоты до 4 ГГц и содержал 42 млн транзисторов на кристалле. Основным отличием данного микропроцессора от предыдущих моделей является поддержка гиперпоточности (Hyper-Threading). Суть этой технологии заключается в том, что в кристалл процессора добавлено несколько блоков, позволяющих одному физическому процессору распознаваться и работать в системе как два логических процессора, каждый из которых может быть загружен своей задачей.
В процессорах рассматриваемого семейства, начиная с 486-го, применяется комбинированная архитектура - CISC- процессор имеет RISC-ядро. Все модели данного семейства, начиная с 8086-го и заканчивая Pentium IV, включают в себя подмножество системы команд и архитектуры нижестоящих моделей, обеспечивая совместимость с ранее написанным ПО. Основные параметры микропроцессоров семейства Intel х86 приведены в табл. 2.1.
Конечно же, перечисленными моделями не исчерпывается весь мировой ассортимент микропроцессоров. Это только представители одного семейства процессоров фирмы Intel, имеющих обобщенное название х86 (исключая 4- и 8-разрядные процессоры). Ряд фирм (DEC, Motorola, Texas Instruments, Sun MicroSys- tems и др.) имеют разработки, существенно отличающиеся от данного семейства; есть другие классы процессоров и у Intel. Среди них есть и гораздо более мощные процессоры, относящиеся к классам как RISC-, так и CISC-архитектур. Однако процессоры семейства х86 имеют на настоящий момент самую сложную в мире систему команд и, бесспорно, превосходят другие модели по числу установленных в компьютерах.
Фирма Intel в дальнейшем отказалась от своих планов разработки микропроцессоров седьмого поколения семейства х86 (рабочие названия Р7 и Merced) и, объединив свои интеллектуальные, финансовые и материальные ресурсы с фирмой Hewlett- Packard (которая в свое время «поглотила» фирмы DEC и Com- pag), переключилась на разработку и производство принципиально новых 64-разрядных микропроцессоров, получивших название Itanium. Первые кристаллы с архитектурой IA-64 (в основе лежит параллельная обработка команд с явным параллелизмом - Explicitly Parallel Instruction Computing) появились в 2001 г., однако проблемы с серийным выпуском этих микропроцессоров продолжались еще несколько лет. Примерные параметры первой линейки микропроцессоров Itanium также приведены в табл. 2.1 (ЦП - центральный процессор, ШД - шина данных).
Модель
Год выпуска
Разрядность ЦП (бит)
Разрядность ШД (бит)
Адресуемая память
Тактовая частота (МГц)
Разрешение (мкм)
Число транзисторов на кристалле (тыс.)

4004
1971
4
4
640 байт
0,108
10
2,3

8008
1972
8
8
16 Кб
0,2; 0,5
10
3,5

8080
1974
8
8
64 Кб
2,0
6
6,0

8085
1975
8
8
64 Кб
5,0
3
6,5

8086
1978
16
16
1 Мб
до 10,0
3
29,0

8088
1979
16
8
1 Мб
до 10,0
3
29,0

80286
1982
16
16
16 Мб
до 25,0
1,5
134,0

80386
1985
32
32
4 Гб
до 33,0
1,5
275,0

80386SX
1986
32
16
16 Мб
16,0
1,5
275,0

80486
1989
32
32
4 Гб
до 33,0
1,0
1200,0

Pentium Pentium Pentium
1993
1994
1996
32
32
32
64
64
64
4 Гб
4 Гб
4 Гб
до 66,0
до 100,0
до 200,0
0,8
0,6
0,35
3100,0
3400,0
4500,0

Pentium Pro
1995
32
64
4 Гб
до 200,0
0,35
5500,0

Pentium MMX
1997
32
64
4 Гб
До 200,0
0,35
4500,0

Pentium II
1997
32
64
64 Гб
от 233,0
0,25/0,18
7500,0

Pentium III
1999
32
64
64 Гб
до 1 ГГц
0,25/
0,18
9500,0

Pentium IV
2000
32
64
64 Гб
до 4 ГГц
0,18/
0,13
42000,0

Itanium
2001
64
64
Несколько терабайт
до 2 ГГц
0,13/
0,09
221000,0


4. Минимальный режим работы микропроцессора Intel 8086. Функциональное назначение выводов.
Назначение выводов зависит от режима работы МП. Восемь выводов имеет двойное обозначение, причем обозначения в скобках за пределами условного графического изображения соответствуют максимальному режиму.
AD15-AD0 (Address/Data) - мультиплексная (совмещенная) двунаправленная шина адреса/данных, по которой с разделением во времени передаются адресная информация и данные. Работа по этим выводам осуществляется следующим образом. Первый такт - цикл обращения к ЗУ или внешнему устройству (ВУ) - МП выдает на эту шину младшие 16 бит адреса памяти или полный адрес внешнего устройства. Этот адрес обязательно должен быть зафиксирован и сохранен в течение всего цикла, для чего используется внешний регистр-защелка, куда записывается адресная информация с помощью строба адреса ALE. Регистр-защелка должен иметь три стабильных выходных буфера и обеспечивать малое время переключения при большой нагрузочной способности. Во второй половине цикла шины по линиям AD15-AD0 передаются адреса данных или байты команд, сопровождаемые стробом данных DEN.
A19/S6-A16/S3 (Address/State) - мультиплексные выходные линии адреса/состояния. Работа осуществляется следующим образом. В первом такте на эти линии выдаются старшие 4 бит адреса памяти, а при адресации ВУ - нули. В остальных тактах цикла шины МП выдает на эти линии сигналы состояния S6-S3. Код на линиях S4, S3 определяет сегментный регистр, участвующий в формировании физического адреса памяти, т.е. указывает сегмент памяти, к которому производится обращение в текущем цикле. При обращении к ВУ, когда сегментные регистры не участвуют в формировании адреса, устанавливается значение S4 = 1, S3 = 0. Сигнал S5 соответствует состоянию флага разрешения прерываний IF: 0 - прерывания запрещены, 1 - прерывания разрешены. Сигнал S6 не используется и всегда равен нулю.
ВНЕ (Byte High Enable) - разрешение старшего байта. Формируется в первом такте цикла одновременно с адресной информацией. Активный сигнал нулевого уровня ВНЕ означает, что по старшей половине AD15-AD8 шины адреса/данных передаются 8-битовые данные. Совместное использование ВНЕ и младшей линии адреса АО для дешифрации адресов позволяет осуществлять передачу слов или отдельных байтов по шине AD.
ALE (Address Lock Enable) - строб адреса (разрешение защелкивания адреса), выдается в начале каждого цикла шины и используется для записи адреса в регистр-защелку, т.е. для демультиплексирования шины AD.
DEN (или DE) (Data Enable) - строб данных (разрешение передачи данных). Выдается в циклах чтения, записи и служит для разрешения выхода шинных формирователей.
RD (Read) - чтение, идентифицирует выполнение цикла чтения из ЗУ или ВУ (в зависимости от значения сигнала M/IO). Указывает этим устройствам на необходимость выдачи данных на шину.
WR (Write) - запись, указывает на выполнение цикла записи в ЗУ или ВУ и сопровождает данные, выдаваемые микропроцессором на шину.
М/IO (Memory/Input-Output) является признаком обращения к ЗУ (М/IO = 1) или ВУ (М/IO = 0) и используется для разделения адресного пространства памяти и ввода/вывода. Значение М/IO = 0 появляется только при выполнении команд ввода (IN) и вывода (OUT).
DT/R (Direct/Reverse) определяет направление передачи по шине AD: DT/R = 1 - запись данных из МП в ОЗУ или ВУ; DT/R = 0 - чтение данных из ЗУ или ВУ в МП.
HOLD - запрос шины (запрос захвата) от внешней подсистемы (ВУ или контроллера прямого доступа к памяти).
HLDA (Hold Acknowledge) - подтверждение захвата шины, выдается в ответ на сигнал HOLD после приостанова вычислительного процесса в МП и перевода шины AD и некоторых управляющих сигналов в z-состояние. При HLDA = 1 подсистема, инициирующая запрос захвата, может использовать шину самостоятельно. После установления HOLD = 0 ЦП выдает сигнал HLDA = 0, возобновляет управление шиной и продолжает работу по программе.
NMI (Non Mask Interrupt) - немаскируемое прерывание, распознается микропроцессором по завершению текущей команды, независимо от состояния флага разрешения прерывания IF. Этот вход предназначен для сигнализации о некоторых критических ситуациях, например об аварийном отключении сетевого питания.
INTR (Interrupt Request) - запрос прерывания (маскируемый), опрашивается ЦП в конце выполнения каждой команды, если прерывания разрешены (IF = 1), и фиксируется во внутреннем триггере. Обычно на вход INTR подается запрос от программируемого контроллера прерываний. Если IF = 0, то запрос по входу INTR игнорируется.
INTA (Interrupt Acknowledge) - подтверждение запроса прерывания, формируется в ответ на принятый запрос прерывания INTR, выполняет функцию сигнала RD в цикле подтверждения прерывания и стробирует считывание указателя адреса (вектора) прерывания. В каждом случае подтверждения прерывания выполняются два цикла INTA, из которых первый является предварительным и не сопровождается чтением информации.
RDY (Ready) - готовность, указывает на то, что адресуемое в данном цикле устройство готово к обмену данными.
TEST - проверка, используется вместе с командой ожидания WAIT, выполняя которую, МП проверяет уровень сигнала TEST. Если TEST = О, МП переходит к выполнению следующей по порядку команды. Если TEST = 1, МП вводит холостые такты Т1 и периодически, с интервалом 5Т, проверяет значение сигнала TEST.
CLK (Clock) - тактовая синхронизация (тактирование). Сигнал синхронизации от внешнего генератора тактовых импульсов, предназначен для синхронизации МП. Используется серия тактовых импульсов CLK с периодом повторения Т, равным 200-500 нc.
RESET - сброс, переводит МП в определенное начальное состояние, в котором сброшены сегментные регистры.
MN/MX (Min/Max) - минимальный/максимальный режимы. Сигнал на этом входе определяет режим работы МП: 1 - минимальный, 0 - максимальный, когда изменяются функции восьми управляющих сигналов.

5. Максимальный режим работы микропроцессора Intel 8086. Функциональное назначение выводов.
В максимальном режиме действуют следующие управляющие сигналы (помимо общих сигналов с минимальным режимом, см. воп. 4).
S2-S0 (State) - сигналы состояния, содержащие информацию о типе выполняемого цикла шины. Сигналы состояния подаются в контроллер шины, который дешифрует их и формирует расширенный набор управляющих сигналов. Если МП не инициирует цикл шины, то сигналы S2-S0 устанавливаются в пассивное состояние 111.
QS1-QS0 (Queue State) - состояние очереди. Идентифицирует состояние внутренней 6-байтовой очереди команд МП и действует в течение такта синхронизации после выполнения операции над очередью. Сигналы QS1-QS0 предназначены для сопроцессора, который воспринимает команды и операнды с помощью команды ESC. Сопроцессор контролирует шину AD и фиксирует момент, когда из программной памяти выбирается предназначенная для него команда ESC, а затем следит за очередью команд и определяет момент, когда эта команда должна выполняться.
RQ/GT1-RQ/GT0 (Request/Get) - запрос/представление (подтверждение, разрешение). Две одинаковые двунаправленные линии, каждая из которых может использоваться для передачи импульсных сигналов запроса/разрешения доступа к локальной шине (каналу). Процесс доступа к шине осуществляется в следующем порядке:
1. устройство, подключенное к локальной шине и требующее доступа к общим ресурсам, формирует запросный (первый) импульс длительностью один такт;
2. в конце текущего цикла МП выдает ответный (второй) импульс, подтверждающий возможность доступа к локальной шине. В следующем такте МП переводит шины адреса/данных и управления в высокоомное состояние и отключается от канала;
3. по окончании работы с каналом устройство выдает на ту же линию импульс (третий), указывающий на окончание захвата канала. В следующем такте МП возобновляет управление шиной и продолжает вычисления.
Все три импульса имеют одинаковую длительность и низкий активный уровень. Сигналы на линиях независимы, однако линия RQ/GT0 имеет более высокий приоритет, чем линия RQ/GT1, когда запросы поступают одновременно. Но если на линии RQ/GT0 появляется запрос в то время, когда МП находится в состоянии захвата по сигналу RQ/GT1, то этот запрос захвата не получает подтверждения до освобождения шины по линии RQ/GT1. Таким образом, каждая из двух рассмотренных линий служит для установления режима захвата шин .
LOCK - блокировка шины, информирует устройства системы, что они не должны пытаться запрашивать шину. Формируется однобайтовым префиксом LOCK, располагаемым перед командой, и действует до конца выполнения этой команды, запрещая доступ к системной магистрали другим устройствам, в частности другим процессорам. При подтверждении запроса шины выходной буфер сигнала LOCK переводится в третье состояние. Префикс LOCK не влияет на прерывания.






6. Структура микропроцессора Intel 8086.
Структура МП содержит три относительно независимые части:
операционное устройство, реализующее заданные командой операции;
устройство шинного интерфейса, осуществляющее выборку команд из памяти, а также обращение к памяти и внешним устройствам для считывания операндов и записи результатов;
устройство управления.


Устройства могут работать параллельно, что обеспечивает совмещение во времени процессов выборки и исполнения команд. Это повышает быстродействие МП, так как операционное устройство, как правило, выполняет команды, коды которых уже находятся в МП, и поэтому такты выборки команды не включаются в ее цикл.
Операционное устройство МП содержит группу общих регистров, арифметико-логическое устройство (АЛУ) и регистр флагов F.
Восемь 16-битовых регистров общего назначения участвуют во многих командах.
В соответствии с основным назначением рассматриваемых регистров выделяют регистры АХ, ВХ, СХ, DX, используемые прежде всего для хранения данных, и регистры SP (Stack Pointer), BP (Branch Pointer), SI (Stack Index), DI (Data Index), которые хранят главным образом адресную информацию. Особенностью регистров АХ, ВХ, СХ, DX является то, что они допускают раздельное использование их младших байтов AL, BL, CL, DL и старших байтов АН, ВН, СН, DH. Тем самым обеспечивается возможность обработки как слов, так и байтов и создаются необходимые условия для программной совместимости с МП 8080. Все остальные регистры являются неделимыми и оперируют 16-битовыми словами, даже в случае использования только старшего или младшего байта. Указательные регистры SP и BP хранят смещение адреса в пределах текущего и стекового сегмента памяти, а индексные регистры SI и DI хранят смещение адреса соответственно в текущем сегменте данных и в текущем дополнительном сегменте. Однако при использовании этих регистров для адресации операндов возможна смена сегментов памяти.
Кроме основных функций, соответствующих названию регистров, общие регистры выполняют и ряд специальных функций.
АЛУ содержит 16-битовый комбинационный сумматор, с помощью которого выполняются арифметические операции, наборы комбинационных схем для выполнения логических операций, схемы для операций сдвигов и десятичной коррекции, а также регистры для временного хранения операндов и результатов.
К АЛУ примыкает регистр флагов F (рис. 2.3). Его младший байт FL полностью соответствует регистру флагов МП Intel 8080, а старший байт FH содержит четыре дополнительных флага. Шесть арифметических флагов фиксируют определенные признаки результата выполнения операции (арифметической, логической, сдвига или загрузки регистра флагов). Значения этих флагов (кроме флага AF) используются для реализации условных переходов, изменяющих ход выполнения программы. Различные команды влияют на флаги по-разному.

Рис. 2.3. Формат регистра флагов F
Назначение арифметических флагов:
CF (Carry Flag) - флаг переноса.
PF (Parity Flag) - флаг четности (или паритета).
AF (Additive Flag) - флаг вспомогательного переноса, фиксирует перенос (заем) из младшей тетрады в старшую при сложении (вычитании.
ZF (Zero Flag) - флаг нуля.
SF (Sign Flag) - флаг знака.
OF (Overflow Flag) - флаг переполнения.
Для управления некоторыми действиями МП предназначены три дополнительных флага.
DF (Direct Flag) - флаг направления, управляемый командами CLD и STD; определяет порядок обработки цепочек в соответствующих командах: от меньших адресов (DF = 0) или от больших (DF = 1).
IF (Interrupt Flag) - флаг разрешения прерываний, управляемый с помощью команд CLI и STI; при IF = 1 микропроцессор воспринимает и соответственно реагирует на запрос прерывания по входу INTR; при IF = 0 прерывания по этому входу запрещаются (маскируются) и МП игнорирует поступающие запросы прерываний.
TF (Trace Flag) - флаг трассировки (прослеживания). При TF = 1 МП переходит в покомандный (пошаговый) режим работы, применяемый при отладке программ, когда автоматически генерируется сигнал внутреннего прерывания типа 1 после выполнения каждой команды с целью перехода к соответствующей подпрограмме, которая обычно обеспечивает индикацию содержимого внутренних регистров МП.
Управляющее устройство (УУ) дешифрует команды, а также воспринимает и вырабатывает необходимые управляющие сигналы. В его состав входит блок микропрограммного управления, в котором реализовано программирование МП на микрокомандном уровне.
Устройство шинного интерфейса содержит блок сегментных регистров, указатель команд, сумматор адресов, очередь команд и буферы, обеспечивающие связь с шиной. Шинный интерфейс выполняет операции обмена между МП и памятью или портами ввода-вывода по запросам операционного устройства. Когда операционное устройство занято выполнением команды, шинный интерфейс самостоятельно инициирует опережающую выборку кодов очередных команд из памяти.
Очередь команд представляет собой набор байтовых регистров и выполняет роль регистра команд, в котором хранятся коды, выбранные из программной памяти. Длина очереди составляет 6 байт, что соответствует максимально длинному формату команд. Наличие очереди команд, а также способность операционного устройства и шинного интерфейса работать параллельно позволяют совместить во времени фазы выборки команды и выполнения заданной операции: пока одна команда исполняется в операционном устройстве, шинный интерфейс осуществляет выборку следующей команды. Таким образом, достигаются высокая плотность загрузки шины и повышение скорости выполнения программы.
Буфер шины адреса/данных (БАД) содержит 16 двунаправленных управляемых усилителей с тремя выходными состояниями и обеспечивает номинальную нагрузочную способность линий AD15-AD0.
Буфер шины адреса/состояния (БАС) содержит четыре однонаправленных усилителя с тремя выходными состояниями и обеспечивает номинальную нагрузочную способность линий A19/S6-A16/S3.
Сегментные регистры хранят базовые (начальные) адреса сегментов памяти: кодового сегмента CS (Code Segment), в котором содержится программа; стекового сегмента SS (Stack Segment); сегмента данных DS (Data Segment); дополнительного сегмента ES (Extended Segment), в котором обычно содержатся данные. Наличие сегментных регистров обусловлено разделением памяти на сегменты и используемым способом формирования адресов памяти.
Сумматор адресов осуществляет вычисление 20-битовых физических адресов путем суммирования смещения и содержимого соответствующего сегментного регистра, которое дополняется четырьмя нулевыми младшими разрядами.
Указатель команд IP (Instruction Pointer) хранит смещение следующей команды в текущем кодовом сегменте, т.е. указывает на следующую по порядку команду.

7. Организация памяти микропроцессора Intel 8086.
1) Память логически организована как одномерный массив байтов, каждый из которых имеет 20-битовый физический адрес в диапазоне 00000-FFFFFh. 2) Любые два смежных байта в памяти могут рассматриваться как 16-битовое слово. 3) Младший байт слова имеет меньший адрес, а старший - больший. 4) Адресом слова считается адрес его младшего байта. 5) Полная информация, необходимая для определения физического адреса, содержится в адресном объекте «сегмент : смещение», который называется указателем адреса 6) Команды, байты и слова данных можно свободно размещать по любому адресу, что позволяет экономить память благодаря ее плотной упаковке. Однако для экономии времени выполнения программы целесообразно размещать слова данных в памяти по четным адресам, так как МП передает такие слова за один цикл шины.
Физический адрес ячейки памяти представляет 20-битовое число в диапазоне 0-FFFFFh, которое однозначно определяет положение каждого байта в пространстве памяти емкостью 1 Мб.
Логический адрес ячейки памяти состоит из двух 16-битовых беззнаковых значений: начального адреса сегмента, и внутрисегментного смещения, которое определяет расстояние от начала сегмента до этой ячейки. Для вычисления физического адреса база сегмента сдвигается влево на четыре бита и суммируется со смещением, как показано на рисунке
Команды всегда выбираются из текущего сегмента кода в соответствии с логическим адресом CS:IP. Стековые команды всегда обращаются к текущему сегменту стека по адресу SS:SP.
Операнды, как правило, размещаются в текущем сегменте данных, и обращение к ним организуется по адресу DS:EA


8. Организация ввода-вывода и система прерываний микропроцессора Intel 8086.
Организация ввода-вывода. C использованием адресного пространства ввода-вывода и с использованием общего с памятью адресного пространства, т.е. с отображением на память.
При использовании адресного пространства ввода-вывода применяются специальные команды IN (ввод) и OUT (вывод), которые обеспечивают передачу данных между аккумуляторами AL или АХ и адресуемыми портами.
Команды IN и OUT могут использовать прямую адресацию, когда адрес порта содержится в виде константы во втором байте команды (можно адресовать по 256 портов для ввода и вывода данных), и косвенную адресацию, когда адрес располагается в регистре DX (адресное пространство до 64К 8-битовых портов или до 32К 16-битовых портов).
При втором способе адреса портов размещаются в общем адресном пространстве, и обращение к ним не отличается от обращения к ячейкам памяти. Это повышает гибкость программирования, так как для ввода-вывода можно использовать любую команду с обращением к памяти при любом способе адресации. Однако при этом следует учитывать, что команды с обращением к памяти имеют больший формат и выполняются дольше, чем простые команды IN и OUT.
Система прерываний. Каждому прерыванию поставлен в соответствие код (от 0 до 255) идентифицирующий тип прерывания. Прерывания могут инициироваться внешними устройствами (внешние прерывания) , командами программных прерываний, автоматически самим МП (внутренние прерывания). Прерывание заставляет МП временно прекратить выполнение текущей программы и перейти к выполнению подпрограммы обработки прерывания. Возобновление прерванной программы должно быть произведено так, как будто прерывание отсутствовало.
Для этого в стеке запоминается адрес возврата (CS и IP) и содержимое регистра флагов F, а также содержимое тех регистров, которые потребуются для выполнения подпрограммы обработки прерывания. Содержимое регистров CS, IP и F запоминается и восстанавливается автоматически, а для запоминания и последующего восстановления содержимого других регистров МП должны быть предусмотрены соответствующие команды в начале и конце подпрограммы обработки прерываний.
Внешние прерывания.
Запросы на внешние прерывания поступают в МП по двум входам: INTR и NMI.
Когда устанавливается сигнал INTR = 1, то если Если IF = 0 (прерывания по входу INTR запрещены) МП игнорирует запрос, а если IF = 1 МП распознает запрос прерывания и обрабатывает его. Микропроцессор подтверждает запрос прерывания, выполняя два последовательных цикла 1NTA.
Запросы на немаскируемое прерывание поступают по входу NMI и обычно используются для прерывания работы МП при «катастрофических» событиях», не зависит от флага IF, Запросы NMI запоминаются в МП и имеют более высокий приоритет, чем прерывания по входу INTR.
Внутренние прерывания характеризуются тем, что циклы шины подтверждения прерывания INTA не формируются и внутренние прерывания не могут быть запрещены (кроме пошагового прерывания).
Прерывание по ошибке деления (тип 0)
Пошаговое прерывание (тип 1) вырабатывается автоматически при TF = 1 после выполнения каждой команды или пары команд, если первая команда изменяет содержимое сегментного регистра. Обычно это прерывание используется в программах отладки для реализации покомандного выполнения программы.
Прерывание контрольной точки (тип 3) генерируется по однобайтовой команде INT3. Контрольной точкой может быть любое место в программе, где нормальное ее выполнение прерывается и производятся некоторые специальные действия.
Прерывание по переполнению (тип 4) команде INTO, если установлен флаг OF.
Прерывание, определяемое пользователем (тип п) при составлении программы, осуществляется по двухбайтовой команде INT и, в которой тип прерывания указывается во втором байте команды. Команда INT п вызывает требуемую подпрограмму, как и команда CALL, однако при переходе на подпрограмму команда INT п осуществляет запоминание не только адреса возврата (CS, IP), но и регистра флагов F.

9. Работа МП Intel 8086 в минимальном режиме. Временные диаграммы.
В минимальном режиме функционирование микропроцессора иллюстрируется временными диаграммами, приведенными на рис. 2.10. Цикл начинается с формирования в такте Т1 сигнала M/IO, определяющего тип устройства (ЗУ или ВУ), к которому производится обращение для пересылки данных. Длительность сигнала М/IO равна длительности цикла шины, и он используется для селекции адреса устройства. В такте Т1 и в начале такта Т2 микропроцессор выставляет адрес ЗУ на линии А19-А16 и AD15-AD0 либо адрес ВУ на линии AD15-AD0, а также вырабатывает сигнал ВНЕ, который вместе с АО определяет передачу слова или одного из байтов. Одновременно с этим МП выдает строб адреса ALE, по спаду которого адрес фиксируется во внешних регистрах-защелках. На выходах этих регистров адрес сохраняется в течение всего цикла шины (до записи нового значения).
В такте Т2 происходит переключение шин: на линии A19/S6-A16/S3 поступают сигналы состояния S6-S3, которые сохраняются до конца такта Т4. В дальнейшем значения этих сигналов зависят от вида выполняемого действия (чтение или запись).
В цикле чтения в такте Т2 линии AD15-AD0 переводятся в третье состояние до появления данных от адресованного устройства. В тактах Т2-Т4 вырабатывается сигнал чтения RD = О, который указывает этому устройству на необходимость выдачи данных. Для управления буферами данных, которые обычно подключаются к линиям AD 15-AD0, в тактах Т2-Т4 формируется сигнал DE, разрешающий передачу данных. Направление передачи данных при чтении определяет сигнал DT/R = 0, действующий в течение всего цикла. После выполнения чтения и установления сигнала RD = 1 микропроцессор заканчивает такт Т4 следующим образом: линии AD15-AD0 находятся в высокоом- ном состоянии, сигналы М/Ю, DE, DT/R, S7-S3 неактивны, буферы данных отключены от канала.
В цикле записи в такте Т2 адрес на линиях AD15-AD0 заменяется данными, предназначенными для записи в адресуемое устройство. Данные остаются действительными до середины такта Т4 и сопровождаются сигналом WR = 0, который используется в качестве строба для записи данных в устройство. Сигнал DE = О появляется уже в такте Т1 и используется для подготовки буферов к передаче данных. Сигнал DT/R= 1, переключающий буферы на передачу данных в направлении к МП, удерживается на протяжении всего цикла записи. После установления WR = 1 такт Т4 заканчивается так же, как и при выполнении цикла чтения.
Таким образом, циклы чтения и записи различаются не только активными значениями сигналов RD или WR и состоянием сигнала DT/R, но и тем, что в цикле записи сигналы DE и WR становятся активными раньше и имеют большую длительность, чем в цикле чтения. Соответственно данные при записи присутствуют на шине в течение большего промежутка времени, чем при чтении.

10. Работа микропроцессора Intel 8086 в максимальном режиме. Временные диаграммы.
В максимальном режиме работа шины адреса/данных микропроцессора эквивалентна работе в минимальном режиме.
Как уже отмечалось, в максимальном режиме изменяется значение восьми управляющих сигналов, в частности МП вырабатывает сигналы состояния S2-S0, на основе которых системный контроллер формирует необходимые системные управляющие сигналы. Таким образом, МП в этом режиме работает обязательно совместно с системным контроллером (рис. 2.11).

Код состояния S2-S0 выдается по срезу синхроимпульса в последнем такте предшествующего цикла, которым может быть такт Т4 или Т1. В такте Т1 контроллер формирует строб ALE и устанавливает необходимый уровень сигнала на выходе DT/R. В такте Т2 начинается формирование сигнала разрешения данных DE, который, в отличие от минимального режима, имеет активный высокий уровень, а также соответствующих сигналов для управления операциями чтения из памяти или внешних устройств. Для цикла записи в такте ТЗ начинается выработка сигналов записи в ОЗУ или ВУ. В такте Т4 цикл шины заканчивается: линии AD15-AD0 переводятся в третье состояние, устанавливаются сигналы S2 = SI = SO = 1, и прекращается активное состояние управляющих сигналов.

11. Построение центрального процессора на базе микропроцессора Intel 8086.
Построение блока центрального процессора. При разработке структуры блока ЦП (рис. 2.12) возникают три задачи:
разделения (демультиплексирования) шины адреса/ Данных (ШАД);
буферирования шины адреса (ША) и шины данных (ШД);
формирования системных управляющих сигналов для блоков памяти и внешних устройств.
Первая задача решается с помощью тристабильных регистровых схем, выполняющих функции адресной защелки. Так как сигнал ВНЕ формируется в том же интервале времени, что и адресные сигналы, то его также необходимо зафиксировать в защелке. Поэтому на рис. 2.12 показана схема 21-разрядного регистра адреса.

Рис. 2.12. Пример построения центрального процессора на базе МП Intel 8086
Вторая задача решается с помощью двунаправленных шинных формирователей с тремя устойчивыми состояниями, которые усиливают сигналы системной шины данных.
Третья задача может быть решена с помощью комбинационных логических схем, которые формируют требуемые управляющие сигналы на основе сигналов RD, WR и М/IO, вырабатываемых МП. Если в системе используется адресное пространство ввода-вывода, изолированное от пространства памяти, то целесообразно сформировать сигналы, аналогичные сигналам на выходах системного контроллера. Если же в микропроцессорной системе ввод-вывод организован с отображением на память, то сигнал М/IO не используется, и на ЗУ и ВУ подаются сигналы RD и WR после усиления.
Используемые усилители и формирователи должны обеспечивать три выходных состояния, чтобы можно было организовать прямой доступ к памяти (ПДП). В этом случае после перевода МП в состояние захвата усилители переходят в третье состояние по сигналу РМ (BUSEN), поступающему от контроллера ПДП. Если захват шин и обмен данными по каналу ПДП не предусмотрен, то необходимость в таком переключении отпадает.

12. Подключение блоков памяти и внешних устройств при построении однопроцессорной системы на базе микропроцессора Intel 8086.
Подключение блоков памяти. При подключении ЗУ к шинам микропроцессорной системы необходимо обеспечивать передачу как двухбайтовых слов, так и отдельных байтов. С этой целью память выполняется в виде двух банков (рис. 2.13): младшего, подключаемого к линиям данных D7-D0 и содержащего байты с четными адресами (АО = 0), и старшего, соединенного с D15-D8 и содержащего байты с нечетными адресами (АО = 1). Чтобы каждое слово передавалось за один цикл шины, слова располагают только с четных адресов.
Напомним, что адресная линия АО совместно с линией разрешения старшего банка ВНЕ обеспечивает следующие варианты пересылок по шине данных:
АО = 0, ВНЕ = 0 - пересылается слово;
АО = 0, ВНЕ = 1 - пересылается только младший байт;
АО = 1, ВНЕ = 0 - пересылается только старший байт;
АО = 1, ВНЕ = 1 - устройство не выбрано.
Выработка сигнала ВНЕ и указанный порядок пересылок реализуются микропроцессором автоматически.
При чтении из ЗУ в любом случае на шину данных будет подаваться слово, из которого МП при необходимости выберет требуемый байт и поместит его в регистр, указанный в выполняемой команде. Поэтому сигналы ВНЕ и АО на постоянное ЗУ (ПЗУ, на рис. 2.13 - память программ) не подаются. При записи в ЗУ (на рис. 2.13 - память данных) необходимо различать старший и младший байты, иначе может происходить разрушение информации, хранящейся в соседнем байте. Для этого сигналы ВНЕ и АО подаются на входы CSH и CSL выбора старшего и младшего банков ОЗУ.
Процесс обращения к ПЗУ стробируется сигналом MEMR, а к ОЗУ - сигналами MEMR и MEMW, объединенными с помощью логического элемента И-НЕ.




13. Характеристики и назначение выводов арифметического сопроцессора Intel 8087.
Однокристальный 80-битовый арифметический сопроцессор (АСП) выполнялся по технологии n-МОП. Кристалл микросхемы с геометрическими размерами 5,5x5,5 см содержал около 65000 транзисторов и потреблял мощность не более 3 Вт от источника питания напряжением +5 В. Схема выпускалась в 40-выводном корпусе, синхронизировалась однофазными импульсами с частотой повторения 2-5 МГц от внешнего тактового генератора.
Сопроцессор может быть использован только совместно с центральным процессором 8086/8088, так как в нем отсутствует механизм выборки команд. Сопроцессор предназначен для повышения производительности центрального процессора в среднем в 100 раз при выполнении операций с многоразрядными целыми и вещественными числами. Совмещение микропроцессора 8086 с сопроцессором 8087 сводится к простым соединениям соответствующих выводов без использования дополнительных схем.
Сопроцессор содержит четыре 16-битовых, один 64-битовый и восемь 80-битовых регистров. Он имеет 16-битовую шину данных для связи с ОЗУ и портами ввода-вывода, отображенными на память. Шина адреса имеет 20 разрядов, что позволяет при передаче данных непосредственно адресоваться к памяти емкостью до 1 Мб.

Система команд АСП 8087 содержит 68 мнемокодов и позволяет совершать операции над целыми двоичными, двоично- десятичными и вещественными числами в широком диапазоне значений. Имеется набор арифметических команд, включающих сложение, вычитание, умножение и деление, который ориентирован на обработку чисел с высокой точностью. Весьма разнообразны команды пересылки данных, специальные вычислительные команды, такие как вычисление квадратного корня, масштабирование, нахождение тангенса, логарифма и др.
Использование АСП 8087 совместно с микропроцессором 8086 расширяет систему команд последнего до 159 мнемокодов.
AD15-AD0 (Address/Data) - входы/выходы для формирования адресов и передачи данных. В течение первой части цикла шины (Т1) они содержат адрес, а в остальной части цикла (Т2, ТЗ, TW, Т4) по ним вводятся или выводятся данные.
A19/S6-A16/S3 (Address/State) - выходы для формирования четырех старших разрядов адреса в течение первой части цикла шины (Т1), в остальной части цикла (Т2, ТЗ, TW, Т4) имеют постоянные значения S3 = S4 = S6 = 1, S5 = 0. Когда шиной управляет ЦП, эти выводы являются входами.
BHE/S7 (Byte High Enable/State) - выходной сигнал разрешения старшего байта шины данных. Значение ВНЕ = 0 устанавливается в такте Т1 при чтении или записи данных с использованием старших разрядов шины данных D15-D8. Если разряды D15-D8 при передаче данных не используются, то ВНЕ = 1. В остальной части цикла шины (Т2, ТЗ, TW, Т4) действует выходной сигнал S7 = 0. Когда сопроцессор не управляет шиной, данный вывод используется как вход.
S2-S0 (State) - выходные сигналы кода состояния сопроцессора; S2S1S0 = 101 - чтение из памяти; S2S1S0 = 110- запись в память; S2S1S0 =111- пассивное состояние сопроцессора; остальные комбинации значений не используются.
RQ/GTO (Request/Get) - вход/выход используется для запроса/предоставления доступа к локальной шине ЦП, когда сопроцессору требуется переслать операнд.
RQ/GT1 (Request/Get) - вход/выход, сигнал запроса/ предоставления шины для связи сопроцессора с другим процессором, использующим локальную шину.
QS1, QSO (Queue State) - входные сигналы кода состояния очереди команд. Они позволяют сопроцессору следить за состоянием очереди команд ЦП с тем, чтобы синхронизировать начало выполнения очередной команды.
BUSY - выходной сигнал занятости; сигнал BUSY = 1 указывает на то, что сопроцессор выполняет команду.
READY - входной сигнал готовности от внешних устройств.
RESET - входной сигнал сброса (начальной установки), устанавливающий сопроцессор в начальное состояние.
CLK (Clock) - входной сигнал тактовой частоты от генератора тактовых импульсов, осуществляющий временную синхронизацию работысопроцессора.
INT (Interrupt) - выходной сигнал запроса прерывания, указывающий на возникновение незамаскированной исключительной ситуации.
QS1, QS0
Состояние очереди

00
Очередь не изменилась

01
Первый байт команды взят из очереди

10
Очередь реинизиализировалась (пуста)

11
Очередной байт команды взят из очереди


14. Форматы данных арифметического сопроцессора Intel 8087.
АСП может оперировать данными семи различных форматов:
- целых двоичных чисел (три формата);
- целых двоично-десятичных чисел (один формат);
- вещественных чисел с плавающей точкой (три формата).

Целые двоичные числа записываются в память, начиная с младших байтов. Во всех трех форматах ЦС, КЦ и ДЦ, отрицательные числа представляются в дополнительном коде, тем самым старший бит определяет знак числа (0 - положительное число, 1 - отрицательное число). Один из кодов, в котором знаковый разряд 5=1, а в значащих разрядах - все нули, выделен для обозначения неопределенности. Код неопределенности генерируется в исключительных ситуациях, описанных далее.
Целые двоично-десятичные числа записываются в плотно упакованном двоично-десятичном (ДД) коде, в котором под каждую цифру отводится четыре двоичных разряда. В памяти ДД-числа также располагаются, начиная с младших разрядов, и занимают 10 байт. Старший байт используется только под знак числа, который расположен в разряде 79, а остальные разряды старшего байта 78-72 содержат нули.
В полный диапазон двоично-десятичных чисел входят коды +0 и -0, а также специальный код неопределенности (все биты равны 1). Код неопределенности является результатом в исключительных ситуациях, описанных далее.
Вещественные числа в каждом из трех форматов KB, ДВ и ВВ включают три поля: поле знака мантиссы, поле порядка и поле мантиссы (рис. 3.2). Мантисса числа всегда (кроме исключительных случаев) записывается в нормализованном виде \,т\т2..., где тЛпъ... - дробная часть числа. Целая часть, всегда равная единице, прямо не представляется в форматах KB и ДВ, а учитывается неявно. В формате ВВ старший бит мантиссы представляется явно. Порядок вещественных чисел записывается в поле порядка в смещенном виде, поэтому истинный порядок равен числу в поле порядка минус значение смещения. Применение смещенных порядков позволяет упростить операцию сравнения вещественных чисел, достаточно сравнить их порядки как обычные целые числа без знака. Поскольку операция сравнения является доминирующей в вычислительных программах, такое упрощение существенно повышает эффективность программ.

Учитывая разрядность полей в форматах вещественных чисел и особенности представления мантисс и порядков, можно указать формулы для вычисления истинных значений чисел:
где s - знак мантиссы; т, - значение /-го двоичного разряда мантиссы, считая от запятой; Е - значение в поле порядка.
В формате вещественных чисел могут быть представлены абсолютно точно и целые числа, лежащие в пределах диапазона представимых значений.
Для представления вещественных чисел используется часть значений в поле порядка от 00...00 до 11... 10. В форматах KB и ДВ значение 11... 11 используется для кодирования ±со, когда в поле мантиссы все нули, и для обозначения «не чисел» (NAN - Not a Number), когда в поле мантиссы ненулевое значение.
Все множество конечных чисел разбито на три класса: нормализованные, ненормализованные и денормализованные.
В числах последних двух классов после запятой всегда формируется нуль (старший бит мантиссы), при этом денормализованные числа содержат все нули в поле порядка. Появление ненормализованных и денормализованных чисел приводит к исключительным ситуациям, о которых сопроцессор сигнализирует особым образом. Подробно вопросы обработки исключительных ситуаций будут описаны далее.
Формат ВВ обеспечивает максимальный рабочий диапазон значений вещественных чисел и является основным, в нем выполняются все операции сопроцессора. Преобразование исходных данных, представленных в памяти в любом другом формате (ЦС, КЦ, ДЦ, ДД, KB, ДВ), в формат ВВ осуществляется сопроцессором автоматически при загрузке данных. Такое преобразование никогда не приводит к потере точности. Заметим, что при необходимости можно «заставить» сопроцессор использовать другой формат, а именно KB или ДВ, что осуществляется программно и используется для эмуляции на основе 8087 какого- либо другого вычислителя с разрядностью, не превышающей 32 или 64бит соответственно.
Результаты вычислений могут быть переданы в память в любом (из семи) желаемом формате. Таким образом, получение результата требует (в шести случаях из семи) обратного образования из формата ВВ в желаемый. В ряде случаев это может привести к потере точности из-за необходимости округления, о чем сопроцессор сигнализирует, формируя запрос прерывания на выходе INT.

15. Структура арифметического сопроцессора Intel 8087.
АСП содержит две относительно независимые части: операционное устройство, которое выполняет операции, заданные командой, и устройство шинного интерфейса, которое получает и декодирует команды, осуществляет считывание операндов из памяти и преобразование их в формат ВВ, а также запись результатов в память с обратным преобразованием в требуемый формат. Оба устройства могут работать параллельно, что обеспечивает совмещение во времени процессов передачи и преобразования данных (рис. 3.3).

Операционное устройство АСП содержит группу арифметических регистров, модули обработки порядка и мантиссы, ПЗУ констант, регистр этикеток и блок управления.
Группа арифметических регистров (АР) включает восемь 80-битовых регистров, организованных в стек. Со стеком связан 3-битовый указатель стека ST, содержимое которого определяет номер одного из восьми арифметических регистров, являющегося вершиной стека. Нумерация регистров начинается всегда от вершины (рис. 3.4), и регистры обозначаются через ST(0). ST(1),..., ST(7).


Группа арифметических регистров служит для хранения обрабатываемых данных, представленных в формате ВВ. При загрузке данных в арифметический регистр содержимое указателя стека ST предварительно уменьшается (ST< ST - 1) и указывает номер регистра, в который производится загрузка. При извлечении данных после запоминания извлеченного значения в памяти, содержимое ST автоматически увеличивается на единицу (ST< ST + 1). С группой арифметических регистров связан регистр этикеток TAG, в котором каждому арифметическому регистру ставится в соответствие 2-битовое поле. В этом поле автоматически формируется код, характеризующий загруженное в АР значение, в соответствии с табл. 3.2.
Код поля TAG(i)
Содержимое регистра ST(i)

00
Конечное число, не равное нулю

01
Нуль

10
NAN / ±бесконечность

11
Регистр пуст (обозначается через е)

Модуль обработки мантиссы состоит из 68-битового сумматора, регистра сдвига и регистра результата. Он выполняет заданные операции над мантиссами операндов и формирует признаки различных исключительных ситуаций, возникающих при
обработке данных.
Модуль обработки порядка осуществляет действия над значениями поля порядка исходных операндов в соответствии с командой.
ПЗУ констант хранит семь различных числовых констант, которые часто используются в вычислительных программах: +0,0; +1.0; п, lg2; ln2; log210 и log2e. Все константы представлены в формате ВВ.
Блок управления связан с выходом очереди из байтов команд и построен по микропрограммному принципу. Его назначение состоит в дешифрации очередной команды, поступающей на исполнение из устройства шинного интерфейса, и в формировании управляющих сигналов, определяющих режим работы модулей обработки и других устройств АСП.
Устройство шинного интерфейса содержит группу вспомогательных регистров, буферный регистр (БР), очереди команд и операндов.
Группа вспомогательных регистров включает 16-битовый регистр состояния SR, 16-битовый регистр управления CR и 64-битовый регистр - указатель исключительных ситуаций ЕР.
Регистр состояния SR (State Register) содержит 13 полей, разряды которых при функционировании АСП автоматически устанавливаются в соответствии с выполняемыми действиями или результатами действий (рис. 3.5).

Поле В (Busy) регистра SR устанавливается в единицу, когда сопроцессор выполняет команду. Значение этого поля выдаётся на выход BUSY и осуществляет синхронизацию действий ЦП и АСП, «удерживая» ЦП в режиме ожидания. Разряды поля ST устанавливаются в соответствии с номером арифметического регистра, который является вершиной стека. Уменьшение или увеличение значения ST на единицу осуществляется автоматически при выполнении команд загрузки и запоминания соответственно.
Разряды полей СЗ-СО (Condition) содержат значения флагов, характеризующих результаты выполнения различных команд. Разряды полей РЕ, UE, ОЕ, ZE, DE, IE являются флагами исключительных ситуаций, возникающих в результате выполнения команд (хЕ - Exclusive).
Флаг IE (Invalid) - недействительная операция - устанавливается в единицу при переполнении стека, извлечении из пустого стека, выполнении действий, приводящих к неопределенным значениям типа
·/
·,
· 0, 13EMBED Equation.31415или с операндом NAN.
Флаг DE (Denormal) денормализованный операнд - устанавливается в 1, когда хотя бы один из операндов денормализован. Если флаг DE замаскирован и операнд находится в памяти, то сопроцессор оперирует с денормализованным операндом как с нормализованным. Если денормализованный операнд находится в регистре, сопроцессор предварительно преобразует его в ненормализованный путем сдвига мантиссы и изменения порядка.
Флаг ZE (Zero) - деление на нуль - устанавливается в 1, когда делимое - конечное число, не равное 0, а делитель равен 0.
Флаг ОЕ (Overflow) - переполнение - устанавливается в 1, когда результат операции не может быть представлен конечным числом, т.е. его значение превышает 1,2104932
Флаг UE (Unoverflow) - антипереполнение устанавливается в единицу, когда результат операции не может быть представлен нормализованным конечным числом. Если флаг UE замаскирован, то в качестве результата выдается денормализованное число.
Флаг РЕ (unPrecise) - неточный результат - устанавливается в единицу, когда значение результата не может быть представлено точно в том формате, который определен командой. Результат в этом случае округляется в соответствии с заданным режимом округления.
Поле IR (Interrupt) содержит флаг запроса прерывания, который устанавливается в 1 при возникновении какой-либо незамаскированной (из перечисленных выше) исключительной ситуации. Значение флага IR формируется на выходе INT сопроцессора. Флаг IR может быть замаскирован программным путем.
После инициализации сопроцессора все биты регистра состояния, за исключением СО, C1, С2, СЗ, устанавливаются в нуль.
Регистр управления CR (Control Register) содержит десять полей, которые служат для задания требуемого режима работы АСП программным путем. Различают две основные группы режимов: вычислений и обработки исключительных ситуаций. Режимами вычислений управляют поля старшего байта регистра CR, а режимами обработки исключительных ситуаций - поля младшего байта.
Поле IС (Infinity Control) - управление бесконечностью - определяет, что +
· и -
· считаются одной беззнаковой бесконечностью; IС = 1 - определяет обычную ситуацию, когда +
· и -
· считаются двумя знаковыми бесконечностями. Первый режим (IС = 0) носит название «режим проективной арифметики»,а второй(IС = 1) - «режим аффинной арифметики».
Поле RC (Round Control) - управление округлением - определяет способ округления в соответствии с табл. 3.3.
Первый режим RC = 00 является обычным способом округления. Режимы RC = 01 и 10 используются для определения граничных левых и правых значений соответственно. В режиме RC = 11 осуществляется усечение (отбрасывание) лишних битов результата.
Код поля RC
Способ округления результата

00
К ближайшему значению

01
По направлению к -
·

10
По направлению к +
·

11
По направлению к нулю

Таблица 3.3
Поле PC (Precision Control) - управление точностью - позволяет определить формат представления результатов вычислений в соответствии с таблицей и задать один из трех режимов работы (табл. 3.4).
Код поля PC
Точность представления результата

00
Формат KB (24 бит)

01
Зарезервирован

10
Формат ДВ (53 бит)

11
Формат ВВ (64 бит)

Таблица 3.4
Режимы, соответствующие PC = 00 и 10, позволяют на основе 8087 эмулировать работу процессоров с разрядной сеткой, в которой под мантиссу отводится 24 и 53 бита соответственно. В этих режимах результаты операций с плавающей запятой перед размещением в арифметический регистр округляются до указанного размера.
Поля CR(5)-CR(0) позволяют установить маски исключительных ситуаций, описанных ранее, при этом: IM = 1 маскирует флаг IE; DM = 1 - флаг DE; ZM = 1 - флаг ZE; ОМ = 1 - флаг ОЕ; UM = 1 - флаг UE; РМ = 1 - флаг РЕ.
Поле IEM (Interrupt Enable Mask) маскирует флаг запроса прерывания IR, т.е. независимо от значений перечисленных шести масок сигнал IEM = 1 заставляет арифметический сопроцессор обрабатывать все исключительные ситуации стандартным образом.
При инициализации 8087 сигналом RESET поля регистра управления устанавливаются следующим образом: 1С = 0, RC = 00, рС == 11,1ЕМ = 0, все маски устанавливаются в единицу.
Регистр-указатель исключительной ситуации ЕР (Exclusive Pointer) (рис. 3.7) состоит из двух 32-битовых регистров. Когда сопроцессор выполняет очередную команду, устройство шинного интерфейса засылает в первый регистр 20-битовый адрес этой команды и 11-битовый код команды, а во второй - 20-битовый адрес операнда, если он взят из памяти. Эта информация может потребоваться центральному процессору при нестандартной обработке незамаскированной исключительной ситуации по запросу прерывания от 8087. Содержимое регистра ЕР может быть записано в память с помощью соответствующей команды 8087 для анализа в процессе обработки запроса. Неиспользуемые биты регистра-указателя ЕР заполняются нулями.

16. Функционирование арифметического сопроцессора Intel 8087 в пассивном и активном режимах.
Арифметический сопроцессор 8087 может работать только в паре с центральным процессором 8086/8088, который должен быть установлен в максимальный режим. Система с сопроцессором не требует никакой дополнительной логики, отличающейся от той, которая используется в системе с максимальным режимом ЦП. Схема расширенного процессора получается простым объединением одноименных выводов АСП и ЦП с дополнительным использованием контроллера прерываний для организации взаимодействия выхода INT сопроцессора и входа INTR ЦП.
Пассивный режим. Взаимодействие процессоров начинается по сигналу RESET, длительность которого должна быть не менее четырех тактов CLK. Через несколько тактов ЦП производит выборку команд из памяти, начиная с адреса FFFFOh, а сопроцессор следит за его работой, находясь в пассивном режиме. Выбирать команды из памяти может только ЦП, но сопроцессор также получает все команды, записывая их в очередь из байтов команд, идентичную очереди ЦП, и контролирует выполнение команд центральным процессором. В этом режиме выводы S2-S0, A19/S6-A16/S3 и AD15-AD0 используются как входы. Как только в потоке команд появляется команда ESC, АСП начинает переходить из пассивного режима в активный.
Активный режим. Для перехода в активный режим сопроцессор должен установить момент начала выполнения действий, определенных командой ESC. Для этого он начинает анализировать код состояния очереди команд ЦП по линиям QS1, QS0. Как только появляется код QS1QS0 = 01, соответствующий первому байту команды, и этот байт содержит код ESC = 11011, сопроцессор переходит в активный режим.
Если команда ESC содержит указание о том, что операнд- источник размещен в памяти, то ЦП формирует адрес операнда и считывает слово данных. При этом АСП перехватывает 20-битовый адрес операнда, записывая его в регистр ЕР, и слово данных, записывая его в очередь из байтов операндов. При длине операнда более одного слова сопроцессор получает остальные слова самостоятельно, дополнительно запрашивая шину.
Если определенный в команде ESC адрес является адресом приемника, сопроцессор, перехватив этот адрес в регистр ЕР, игнорирует считанное ЦП слово данных, а позднее, выполнив команду, записывает результат по перехваченному адресу.
В любом случае, перейдя в активный режим, сопроцессор выдает сигнал занятости BUSY=1 на вход TEST ЦП. С этого момента оба процессора осуществляют параллельную работу, Сопроцессор выполняет действия, определенные командой ESC, а ЦП продолжает выполнение программы. При этом шиной управляет ЦП, и каждый раз, когда сопроцессору требуется обратиться к памяти, он должен запрашивать шину по одной из линий RQ/GT.

17. Общая характеристика семейства 32-разрядных микропроцессоров Intel x86. Структура и функционирование микропроцессора Intel 80486.
Первым МП с 32-разрядной сеткой в семействе Intel был процессор 80386, затем появился МП 80486. Эти процессоры вобрали все свойства 16-разрядных МП семейства для обеспечения программной совместимости с разработанным ранее программным обеспечением. Помимо увеличения длины разрядной сетки, эти МП имеют ряд свойств, отсутствующих в более ранних моделях. Сюда можно отнести следующие:
1. Преодолено жесткое ограничение на длину непрерывного сегмента памяти в 64 Кб. В защищенном режиме эта величина равна 4 Гб - пределу физически адресуемой памяти.
2. Реализована поддержка виртуальной памяти размером до 64 Тб.
3. Реализован встроенный блок управления памятью, поддерживающего механизмы сегментации и страничной трансляции адресов.
4. Обеспечена четырехуровневая система защиты памяти и ввода-вывода, встроенный механизм переключения задач.
5. Реализована поддержка расширенной системы команд.
6. Обеспечена возможность работы в двух режимах:
- в режиме реальной адресации (реальный режим), полностью совместимом с 8086, в котором возможна адресация к физической памяти размером до 1 МБ;
- в защищенном режиме виртуальной адресации (защищенный режим), в котором процессор позволяет адресовать до 4 Гб физической памяти, при этом каждая задача виртуально может адресоваться к памяти до 16 Тб. В защищенном режиме возможно выполнение задач в режиме виртуального процессора 8086 (виртуальный режим).
1. Процессоры могут оперировать с 8-, 16- и 32-битными операндами, строками байт, слов и двойных слов, а также с битами, битовыми полями и строками бит, что в предыдущих моделях сделать было невозможно.
2. В архитектуру процессоров введены средства отладки и тестирования.
Рассмотрим особенности 32-разрядных микропроцессоров на примере Intel 80486.
В состав процессора 80486 входят девять внутренних функциональных устройств, которые работают параллельно. Внутренняя архитектура процессора приведена на рис.4.1. Сравнительно автономными внутренними устройствами процессора 80486 являются:
устройство шинного интерфейса, или просто шинный интерфейс;
внутренняя кэш-память;
устройство опережающей выборки (предвыборки) команд;
двухступенчатый дешифратор команд;
устройство управления;
целочисленное устройство;
устройство с плавающей точкой;
устройство сегментации;
устройство страничного преобразования адреса.
Внутренняя архитектура процессора 80486 очень похожа на архитектуру процессора 80386 с той разницей, что в структуру кристалла введены внутренняя кэш-память и устройство с плавающей точкой взамен арифметического сопроцессора.
Работа происходит следующим образом. Сигналы внешней 32-битной шины процессора подаются во внутренние устройства через шинный интерфейс. На внутренней стороне шинный интерфейс и кэш-память передают адреса по 32-битной двунаправленной шине. Данные передаются из кэш-памяти в шинный интерфейс по 32-битной шине данных. Тесно связанные кэш-память и устройство предвыборки одновременно воспринимают выбранные с опережением команды из шинного интерфейса по разделенной 32-битной шине данных, которую кэш-память использует также для получения операндов. Находящиеся в кэш-памяти команды доступны устройству предвыборки, которое имеет 32-байтную очередь команд, ожидающих выполнения.
13 SHAPE \* MERGEFORMAT 1415
Рис. 4.1. Укрупненная структурная схема 32-разрядного микропроцессора Intel 80486.
Когда внутренние запросы данных или команд можно удовлетворить из кэш-памяти, сравнительно медленные циклы внешней шины процессора не выполняются. Шинный интерфейс привлекается, если операция требует обращения к шине процессора.
Дешифратор команд преобразует команды в управляющие сигналы низкого уровня и точки входа в микрокод (микропрограммы). Устройство управления выполняет микрокод и управляет целочисленным устройством, устройством с плавающей точкой и устройством сегментации. Результаты вычислений помещаются во внутренние регистры целочисленного устройства и устройства с плавающей точкой или в кэш-память. Кэш-память разделяет две 32-битные шины данных с устройством сегментации, целочисленным устройством и устройством с плавающей точкой. Эти две шины можно использовать совместно как 64-битную шину для передач между устройствами. Когда 64-битные дескрипторы сегментов передаются из кэш-памяти в устройство сегментации, 32 бита прямо передаются по одной шине данных, а другие 32 бита передаются через целочисленное устройство, поэтому все 64 бита достигают устройства сегментации одновременно.
Формирование адреса производят устройства сегментации и страничного преобразования. Логические адреса преобразуются устройством сегментации в линейные адреса, которые передаются в устройство страничного преобразования и кэш-память по 32-битной шине линейного адреса. Устройство страничного преобразования превращает линейные адреса в физические, которые направляются в кэш-память по 20-битной шине.
Не все команды требуют при своем выполнении участия всех внутренних устройств. Когда же команда требует участия нескольких устройств, каждое из них может обрабатывать параллельно другие команды на различных этапах выполнения. Несмотря на то, что каждая команда обрабатывается последовательно, в процессоре в различной стадии выполнения всегда находятся несколько команд. Одновременно выполняются операции, связанные с предвыборкой команд, дешифрированием команд, выполнением микрокода, а также целочисленные операции, операции с плавающей точкой, сегментации, страничного преобразования, управления кэш-памятью и шинного интерфейса. На рис.4.2 показан эффект параллелизма для одной команды. Каждый элемент в этом конвейере реализует свою функцию за один такт синхронизации. Внутренняя конвейеризация позволяет загрузить данные из кэш-памяти одной командой и использовать следующей командой уже в очередном такте синхронизации. Это объясняется наличием первой ступени дешифрирования, которая инициирует обращение к памяти до собственно выполнения. Так как в большинстве компиляторов и прикладных программ после команды загрузки находятся команды, оперирующие загруженными данными, подобный прием оптимизирует выполнение имеющихся программ.

Рис. 4.2. Конвейеризация команд
Однако в этом методе пришлось пойти на компромисс: последовательность команд, которая изменяет содержимое регистра, а затем использует этот регистр для обращения к памяти, длится три такта вместо двух. Но этот компромисс оказывается незначительным недостатком, так как большинство команд с обращением к памяти используют «устойчивое» содержимое указателя стека или указателя кадра, поэтому дополнительный такт требуется редко. Компиляторы часто вводят «буферную» команду между командой, которая изменяет регистр адреса, и командой, которая использует этот регистр.

18. Шинный интерфейс и шина микропроцессора Intel 80486.
Это устройство учитывает приоритеты обращений к шине и координирует передачи данных, осуществляет предвыборку команд и выполняет функции согласования действий между внутренними устройствами процессора и внешней системой. На внутренней стороне это устройство взаимодействует с кэш-памятью и устройством предвыборки по трем 32-битным шинам. На внешней стороне шинный интерфейс формирует сигналы шины процессора. За исключением сигналов определения цикла, все циклы внешней шины (считывание из памяти, предвыборки команд, заполнение строк кэш-памяти и др.) выглядят для внешних схем обычными циклами процессора, причем все циклы имеют одинаковую временную диаграмму. В составе шинного интерфейса имеются следующие компоненты:
- драйверы адреса для формирования сигналов адреса и сигналов разрешения байт. Старшие 28 сигналов адреса являются двунаправленными, позволяя внешней схеме передать в процессор адрес строки кэш-памяти, содержимое которой объявляется недостоверным;
- приемопередатчики шины данных, предназначенные для управления двунаправленными сигналами данных шины процессора;
- схемы для управления (по тактам синхронизации) размером шины данных. Можно задать три размера внешней шины данных: 32, 16 и 8 бит.
- буферы записи, обеспечивающие буферирование до четырех запросов записи, что позволяет продолжать многие внутренние операции, не ожидая окончания циклов записи на шине процессора;
- схемы формирования циклов шины и управления шиной, которые реализуют большой набор циклов шины и управляющих функций, включая пакетные передачи, непакетные передачи (одно- и многотактные), арбитраж шины (запрос шины, захват шины, подтверждение захвата шины, блокировка шины, псевдоблокировка шины и отступление шины). Два программно-управляемых выхода обеспечивают кэширование страниц по тактам. Предусмотрены один вход и один выход для управления пакетными считываниями;
- схемы формирования и контроля паритета (четности), с помощью которых бит паритета формируется при записи и контролируется при считывании. Сигнал ошибки фиксирует ошибку паритета при считывании;
- схемы управления кэш-памятью поддерживают операции управления и согласования кэш-памяти. Три входа позволяют внешней системе управлять согласованностью данных, хранимых во внутренней кэш-памяти. Два специальных цикла шины предоставляют процессору возможность управлять согласованностью внешней кэш-памяти.
В ходе предвыборки команд шинный интерфейс считывает команды с шины процессора и передает их в устройство предвыборки команд и кэш-память. Устройство предвыборки команд после этого может получать команды непосредственно из кэш-памяти.
Шинный интерфейс имеет временные регистры для буферирования до четырех 32-битных передач записи в память. Можно буферировать адреса, данные или управляющую информацию. После буферирования запроса записи внутреннее устройство, сформировавшее запрос, освобождается для продолжения обработки. Если не ожидается запрос с более высоким приоритетом и шина свободна, на шине процессора сразу же инициируется цикл записи. Когда заполнены все четыре буфера записи, все последующие передачи записи ожидают в процессоре освобождения буфера записи.
Шинный интерфейс может пропускать ожидающие запросы считывания вперед буферированных записей. Объясняется это тем, что ожидающие считывания могут задержать работу внутреннего устройства, а ожидающие записи не оказывают заметного воздействия на скорость обработки. Записи передаются на шину процессора в том же порядке, в котором они были получены от внутренних устройств («первый пришел - первый ушел»). Однако сформированный впоследствии запрос считывания (данных или команды) может быть пропущен раньше буферированных записей. Для защиты от считывания неверных данных пропускание считываний раньше буферированных записей разрешается, если только все буферированные записи привели к попаданию в кэш-памяти. Так как внешнее считывание формируется только при промахе в кэш-памяти, любое считывание на внешней шине с рассмотренным средством защиты никогда не приведет к считыванию из той ячейки, в которую будет производиться буферированная запись. Для конкретного набора буферированных записей такое «пропускание вне очереди» можно произвести только один раз, так как возвращаемые при считывании данные могут заменить данные, готовые к записи из буферов записи. Чтобы для конкретного набора буферированных записей «пропускание вне очереди» происходило не более одного раза, все буферированные записи при пропускании вперед запроса считывания отмечаются как промахи в кэш-памяти. Отмеченные таким образом буферированные записи передаются на шину процессора ранее следующего запроса считывания. При объявлении данных во внутренней кэш-памяти недостоверными все ожидающие запросы также отмечаются как промахи в кэш-памяти. Запрещение кэш-памяти запрещает и буферы записи, что устраняет возможность изменения порядка циклов шины.
Для поддержания целостности данных накладываются некоторые ограничения на передачи к ячейкам ввода-вывода:
- считывания ввода-вывода никогда не кэшируются (состояние устройств может меняться асинхронно по отношению к процессору);
- считывания ввода-вывода никогда не производятся раньше буферированных записей в память. Благодаря этому процессор закончит модификацию всех ячеек памяти до считывания состояния из устройства (если при операции ввода-вывода потребуется обработка прерывания, то данные могут потеряться);
- одиночные записи ввода-вывода никогда не буферируются.
Следовательно, при выполнении команды OUT внутренние операции прекращаются до завершения на шине процессора всех буферированных записей и записи ввода-вывода. При этом внешней схеме отводится время сформировать цикл недостоверности кэш-памяти или замаскировать прерывания до выполнения процессором следующей команды. Процессор закончит модификацию всех ячеек памяти перед записью в ячейку ввода-вывода. Повторяющиеся команды OUT можно буферировать, так как в этом случае состояние внешних устройств не изменяется.

19. Внутренняя кэш-память хранит копии последних считанных команд, операндов и других данных. Когда процессор запрашивает информацию, уже находящуюся в кэш-памяти (попадание), цикл шины не нужен. Когда же процессор запрашивает информацию, отсутствующую в кэш-памяти (промах), информация считывает-ся в кэш-память за одну или несколько 16-байтных кэшируемых передач данных(заполнение строки кэш-памяти). Если формируется запрос записи в область в кэшпамяти, выполняются действия(сквозная запись): обновляется кэш-память;записываемые данные передаются в основную память. Кэш-память имеет четырехканальную ассоциативную по множеству организацию. Четырехнаправленная ассоциативность является компромиссом между быстродействием кэш-памяти с прямым отображением при попаданиях и большим коэффициентом попаданий полностью ассоциативной кэш-памяти. Блок данных в 8 Кб разделен по четырем направлениям, каждое из которых имеет 128 16-байтных строк кэшпамяти. Строка кэш-памяти содержит данные из 16 соседних байтных адресов в памяти, начиная с адреса, кратного 16. Адресация кэш-памяти осуществляется путем разделения старших 28 бит физического адреса на три части. Семь бит поля индекса определяют номер множества из 128 множеств в кэш-памяти. Старшие 21 бит являются полем признака, эти биты сравниваются с тэгами каждой строки в индексированном множестве и показывают, хранится ли 16-байтная строка кэш-памяти по данному адресу. Младшие четыре бита физического адреса выбирают байт внутри строки кэш-памяти. Находящееся в блоке достоверности/LRU (Least Recently Used) 4-битное поле достоверности показывает, являются ли в данный момент кэшированные данные по имеющемуся адресу достоверными. Когда при считывании возникает промах, в кэш-память записывается 16-байтный блок, содержащий запрошенную информацию.

Организация внутренней кэш-памяти
В кэш-памяти реализован принцип сквозной записи. Заполнение строки выполняется только при промахе в операции считывания. Когда в процессоре разрешены обычное кэширование и сквозная запись, каждая внутренняя запись в кэш-память обновляет содержимое кэш-памяти и передается в устройство шинного интерфейса и по шине процессора записывается в память.
Замещение в кэш-памяти реализуется по алгоритму псевдо-LRU. Здесь для каждого множества в блоке достоверности/LRU отведено три бита (см. рис. 4.3). Биты LRU обновляются при каждом попадании в кэш-память или заполнении строки. Каждая строка кэш-памяти имеет свой бит достоверности. Когда в цикле считывания происходит промах, приходится выбирать для заполнения одну из четырех строк множества. Если во множестве есть недостоверная, то для заполнения выбирается именно эта строка. Когда же все строки во множестве достоверны, заменяемая строка выбирается с привлечением бит из блока LRU. Алгоритм псевдо-LRU действует следующим образом: Обозначим строки во множестве через L0, LI, L2 и L3. Каждому множеству в блоке LRU соответствуют три бита ВО, В1 и В2, которые модифицируются при каждом попадании и заполнении следующим образом:
-если последнее обращение в множестве было к строке L0 или L1, то бит ВО устанавливается в состояние 1, а при обращении к строке L2 или L3 бит ВО сбрасывается в 0;
-если последнее обращение в паре L0-L1 было к строке L0, то бит В1 устанавливается в состояние 1, а при обращении к строке L1 бит В1 сбрасывается в 0;
-если последнее обращение в паре L2-L3 было к строке L2, то бит В2 устанавливается в состояние 1, а при обращении к строке L3 бит В2 сбрасывается в 0. Выбор заменяемой строки (когда все строки в множестве достоверны) определяет содержимое бит ВО, В1 и В2 (табл. 4.1)
Таблица 4.1

Строки кэш-памяти можно по отдельности объявить недостоверными, задавая операцию недостоверности кэш-памяти на шине процессора. При инициировании такой операции кэшпамять сравнивает объявляемый недостоверным адрес с тэгами строк, находящихся в кэш-памяти, и сбрасывает бит достоверности при обнаружении соответствия. Конфигурацией кэш-памяти управляют два бита в регистре состояния CR0. Один из этих бит разрешает кэширование (заполнение строк кэш-памяти), а второй - сквозную запись в память. Всего возможно пять различных ситуаций:
1)Когда кэширование разрешено, кэшируются считывания из памяти и предвыборки команд. Такие передачи кэшируются, если внешняя схема подаст входной сигнал разрешения кэшпамяти в данном цикле шины и если текущий элемент таблицы страниц разрешает кэширование.
2)В тех циклах, где кэширование запрещено при промахе, заполнение строки кэш-памяти не производится. Кэшпамять продолжает действовать, несмотря на то, что она запрещена для заполнения. Уже находящиеся в кэш-памяти данные используются, если они являются достоверными. Только когда все данные в кэш-памяти отмечены как недостоверные, что происходит при очистке кэш-памяти, все внутренние запросы считывания приводят к формированию внешних циклов шины.
3)Когда разрешена сквозная запись, все записи, включая и вызвавшие попадания, инициируют запись в память. Операции недостоверности удаляют строку из кэш-памяти, если адрес недостоверных данных отображается на строку кэш-памяти.
4)Когда сквозная запись запрещена, внутренний запрос записи, вызвавший попадание в кэш-памяти, не приводит к производству записи в память, а операции недостоверности запрещены.
5)Когда запрещены кэширование и сквозная запись, кэшпамять можно использовать как быстродействующее статическое ОЗУ. В такой конфигурации на шину процессора передаются только записи, вызвавшие промах, а операции недостоверности игнорируются.

20. Функциональные устройства микропроцессора Intel 80486
Устройство предвыборки команд. Циклы предвыборки команд считывают 16-байтные блоки команд, начиная с адресов, численно больших адреса последней выбранной команды. Начальный адрес формирует устройство предвыборки, которое напрямую соединено с устройством страничного преобразования. 16-байтные блоки предварительной выборки одновременно подаются в устройство предвыборки и кэш-память. В устройстве предвыборки имеется очередь предвыборки, которая хранит 32 байта команд. Когда каждая команда считывается из очереди, ее код операции подается в устройство дешифрирования команд, а смешение подается в устройство сегментации, где участвует в вычислении адреса. Если в выполняемой программе встречаются циклы, устройство предвыборки получает копии ранее выполненных команд из кэш-памяти. Запрос шины от устройства предвыборки имеет низший приоритет. Устройство предвыборки очищается, когда нарушается естественный порядок выполнения команд, например: при переходах, переключениях задач, особых случаях и прерываниях.Устройство предвыборки никогда не обращается за конец сегмента кода и к странице, которая не присутствует в памяти. Чтобы предотвратить опережающее считывание за конкретный адрес, команды не должны быть ближе к этому адресу на один байт плюс один выровненный 16-байтный блок.
Устройство дешифрирования команд. Устройство дешифрирования команд получает команды от устройства предвыборки и в двухступенчатом процессе преобразует их в управляющие сигналы низкого уровня и точки входа микрокода, т.е. микропрограмм.Устройство дешифрирования команд одновременно обрабатывает байты префиксов команд, коды операций, байты адресации и смещения.Устройство очищается при каждой очистке устройства предвыборки команд.
Устройство управления интерпретирует слово команды и точки входа микрокода, полученные от устройства дешифрирования команд. Оно имеет выходы для управления целочисленным устройством и устройством с плавающей точкой, а также управляет сегментацией, так как команды могут определять выбор конкретного сегмента.
Устройство управления содержит микрокод (управляющие микропрограммы) процессора.
Целочисленное операционное устройство (тракт данных) идентифицирует, где хранятся данные, и выполняет все арифметические и логические команды из системы команд. Оно имеет восемь программно-доступных 32-битных регистров общего назначения, несколько специализированных регистров, арифметико-логическое устройство и параллельный сдвигатель, обеспечивающий сдвиг в любом направлении и на любое число разрядов. Команды загрузки, сохранения, сложения, вычитания, логических операций и сдвигов выполняются за один такт.
Целочисленное устройство и устройство с плавающей точкой соединены двумя 32-битными двунаправленными шинами, которые применяются совместно для передач 64-битных операндов. Содержимое регистров общего назначения подается по отдельной 32-битной шине в устройство сегментации для формирования эффективных адресов.
Устройство с плавающей точкой имеет такую же систему команд и набор регистров, как арифметический сопроцессор. Оно содержит регистровый стек из восьми 80-битных регистров и специализированные схемы для интерпретации 32/64/80- битных форматов чисел, определенных в стандарте IEEE 754. Выходной сигнал на шине процессора сообщает внешней подсистеме об ошибках с плавающей точкой, а она может подать в процессор входной сигнал, показывающий, что процессор должен игнорировать ошибки и продолжать обычные операции.
Устройство сегментации. Под сегментом понимается защищенное независимое адресное пространство. Сегментация применяется для изолирования прикладных программ, вызова процедур восстановления и локализации влияния ошибок программирования.Устройство сегментации преобразует сформированный программой сегментированный адрес, называемый логическим или виртуальным адресом, в несегментированный линейный адрес. Местонахождения и атрибуты сегментов в линейном адресном пространстве хранятся в структурах данных, называемых дескрипторами сегментов. Устройство сегментации производит вычисление адреса, привлекая дескрипторы сегментов и смещения, выделенные из команд. После этого линейные адреса посылаются в устройство страничного преобразования и кэш-память. Параллельно с вычислением линейного адреса производится контроль атрибутов сегмента.При обращении к сегменту первый раз его дескриптор копируется во внутренний регистр процессора и в дальнейшем при необходимости берется из этого регистра. Программа может иметь до 16383 сегментов. В любой момент времени во внутренних регистрах процессора могут находиться до шести дескрипторов сегментов. На рис. 4.4 показаны взаимосвязи между логическим, линейным и физическим адресами памяти.

Устройство страничного преобразования обеспечивает доступ к структурам данных, которые больше имеющегося пространства памяти, храня их частично в памяти и частично на диске. При страничном преобразовании линейное адресное пространство разделяется на блоки по 4 Кб, называемые страницами. Для отображения линейного адреса в физический применяются структуры данных, называемые таблицами страниц. Элементами таблиц страниц являются своеобразные дескрипторы страниц, которые проще дескрипторов сегментов. Физические адреса используются кэш-памятью и/или выдаются на шину процессора. Устройство страничного преобразования фиксирует такие ситуации, как обращение к странице, отсутствующей в памяти, и формирует особые случаи, называемые страничными нарушениями. При страничном нарушении операционная система должна передать нужную страницу с диска в память. При необходимости она может освободить пространство в памяти, отсылая некоторую другую страницу на диск. Если страничное преобразование программно запрещено, физический адрес совпадает с линейным адресом. В устройство страничного преобразования входит ассоциативный буфер преобразования (Translation Look-a-side Buffer, или TLB), который хранит 32 наименее давно используемых элемента таблицы страниц. Структуры данных буфера TLB показаны на рис. 4.5. Устройство страничного преобразования просматривает линейные адреса в TLB. Если оно не находит линейного адреса в TLB, то формирует запрос на загрузку в TLB правильного физического адреса из таблицы страниц в памяти. Только когда правильный элемент таблицы страниц находится в TLB, инициируется цикл шины. Когда устройство страничного преобразования отображает страницу из линейного адресного пространства на страницу в физической памяти, оно изменяет только 20 старших бит линейного адреса. Младшие 12 бит физического адреса берутся неизменными из линейного адреса.

Рис. 4.5. Организация буфера TLB
В качестве стратегии замещения в буфере TLB применяется такой же алгоритм псевдо-LRU, как и во внутренней кэш-памяти. Буфер TLB очищается при загрузке базового регистра каталога страниц. Страничное преобразование не видимо для прикладных программ и не защищает от изменения программами данных вне ограниченной части памяти. Страничное преобразование видимо операционной системе, которая использует его для удовлетворения требований памяти прикладных программ.

21. Основные понятия защищенного режима.
Защищенный режим предназначен для обеспечения независимости выполнения нескольких задач, что подразумевает защиту ресурсов одной задачи от возможного воздействия другой задачи (под задачами подразумеваются как прикладные, так и задачи операционной системы).Основным защищаемым ресурсом является память, в которой хранятся коды, данные и различные системные таблицы (например, таблица прерываний). Защищать требуется и совместно используемую аппаратуру, обращение к которой обычно происходит через операции ввода-вывода и прерывания.При организации защищенного режима используются следующие основные понятия:
1) Сегмент - это блок адресного пространства памяти определенного назначения. К элементам сегмента возможно обращение с помощью различных инструкций процессора, использующих разные режимы адресации для формирования адреса в пределах сегмента. Максимальный размер сегмента для 16-разрядных процессоров составлял 64 Кб, в 32-разрядных процессорах этот предел отодвигается до 4 Гб. В реальном режиме любая задача может переопределить значение сегментных регистров, задающих положение сегмента в пространстве памяти, и «залезть» в чужую область данных или кода. В защищенном режиме сегменты прикладная программа сможет использовать только разрешенные для нее сегменты памяти, выбирая их с помощью селекторов из предварительно сформированных таблиц дескрипторов сегментов.
2) Селекторы представляют собой 16-битные указатели, загружаемые в сегментные регистры процессора. Процессор может обращаться только к тем сегментам памяти, для которых имеются дескрипторы в таблицах. Механизм сегментации формирует линейный адрес по следующей схеме (рис. 4.6). Дескрипторы выбираются с помощью 16-битных селекторов, загружаемых в сегментные регистры. Формат селектора показан на рис. 4.7. Индекс совместно с индикатором таблицы TI позволяет выбрать дескриптор из локальной (Т1=1) или глобальной (TI = 0) таблицы дескрипторов. Для неиспользуемых сегментных регистров предназначен 0-й селектор сегмента, формально адресующийся к самому первому элементу глобальной таблицы. Попытка обращения к памяти по такому сегментному регистру вызовет исключение. Поле RPL селектора указывает требуемый уровень привилегий.

Рис. 4.6. Формирование линейного адреса в защищенном режиме

Рис. 4.7. Формат селектора
3) Дескрипторы - это 8-байтные структуры данных, используемые для определения свойств программных элементов (сегментов, вентилей и таблиц). Дескриптор определяет положение элемента в памяти, размер занимаемой им области (лимит), его назначение и характеристики защиты. Все дескрипторы хранятся в таблицах, обращение к которым поддерживается аппа- ратно. Защита памяти с помощью сегментации не позволяет: использовать сегменты не по назначению (например, пытаться трактовать область данных как коды инструкций); нарушать права доступа (пытаться модифицировать сегмент, предназначенный только для чтения, обращаться к сегменту, не имея достаточных привилегий, и т.п.); адресоваться к элементам, выходящим за лимит сегмента; изменять содержимое таблиц дескрипторов (т.е. параметров сегментов), не имея достаточных привилегий.
4) Защищенный режим предоставляет механизм переключения задач. Состояние каждой задачи может быть сохранено в специальном сегменте состояния задачи (TSS - Task State Segment), на который указывает селектор в регистре задачи. При переключении задач достаточно загрузить новый селектор в регистр задачи, и состояние предыдущей задачи автоматически сохранится в ее TSS, а в процессор загрузится состояние новой задачи, и начнется ее выполнение.
5) Четырехуровневая иерархическая система привилегий предназначена для управления использованием привилегированных инструкций и доступа к дескрипторам. Уровни привилегий нумеруются от 0 до 3, нулевой уровень соответствует максимальным (неограниченным) возможностям доступа и отводится для ядра операционной системы. Уровень 3 имеет самые ограниченные права и обычно предоставляется прикладным задачам. Систему защиты обычно изображают в виде концентрических колец, соответствующих уровням привилегий (рис. 4.8), а сами уровни привилегий иногда называют кольцами защиты. Сервисы, предоставляемые задачам, могут находиться в разных кольцах защиты.Передача управления между задачами контролируется вентилями, проверяющими правила использования уровней привилегий. Через вентили задачи могут получить доступ только к разрешенным им сервисам других сегментов.Уровни привилегий относятся к дескрипторам, селекторам и задачам. В регистре флагов имеется поле привилегий ввода-вывода, с помощью которого обеспечивается управление доступом к инструкциям ввода-вывода и управление флагом прерываний.Дескрипторы и привилегии являются основой системы защиты: дескрипторы определяют структуры элементов (без которых невозможно их использование), а привилегии определяют возможность доступа к дескрипторам и выполнения привилегированных инструкций. Любое нарушение защиты приводит к возникновению специальных исключений.
6) Механизм виртуальной памяти позволяет любой задаче использовать логическое адресное пространство размером до 64 Тб. Для этого каждый сегмент в своем дескрипторе имеет специальный бит, который указывает на присутствие данного сегмента в оперативной памяти в текущий момент времени. Неиспользуемый сегмент может быть выгружен из оперативной во внешнюю память , о чем делается пометка в его дескрипторе. На освободившееся место из внешней памяти может восстанавливаться содержимое другого сегмента и в его дескрипторе делается пометка о присутствии. При обращении задачи к отсутствующему сегменту процессор вырабатывает соответствующее исключение, обработчик которого и заведует виртуальной памятью в операционной системе. После подкачки страницы(сегмента) выполнение задачи продолжается, так что виртуализация памяти для прикладных задач прозрачна.
Применение сегментации в защищенном режиме. Сегмент является средством объединения областей памяти с общими атрибутами, и их (сегментов) использование в защищенном режиме осуществляется только через таблицы дескрипторов.Существуют три типа таблиц дескрипторов - локальная таблица дескрипторов LDT (Local Descriptor Table), глобальная таблица дескрипторов GDT (Global Descriptor Table) и таблица дескрипторов прерываний IDT (Interrupt Descriptor Table). Размеры таблиц могут находиться в пределах от 8 байт до 64 Кб, что соответствует числу элементов в таблице от 1 до 8 К.С каждой из этих таблиц связан соответствующий регистр процессора.
Глобальная таблица (GDT) содержит дескрипторы, доступные всем задачам. Она может содержать дескрипторы любых типов, кроме дескрипторов прерываний и ловушек.
Локальная таблица (LDT) может быть собственной для каждой задачи, она может содержать только дескрипторы сегментов, вентилей задачи и вызовов. Сегмент не доступен задаче, если его дескриптора нет в текущий момент ни в GDT, ни в LDT.
Выбор таблицы (локальная или глобальная) определяется по значению бита TI селектора, а положение (номер) дескриптора задается 13-битным полем INDEX селектора. При ссылке на дескриптор, выходящий за лимит таблицы, возникает исключение.
Таблица дескрипторов прерываний (ЮТ) может содержать описания до 256 прерываний. Таблица может содержать только вентили задач, прерываний и ловушек. Ссылка на элементы IDT происходит по командам INT, аппаратным прерываниям и исключениям процессора. При возникновении прерывания или исключения, дескриптор которого выходит за лимит таблицы, вырабатывается соответствующее исключение.

22. Система привилегий и организация защиты микропроцессора Intel 80486.
Защ. режим предн. для обесп. независимости вып. нескольких задач, что подраз. защиту ресурсов одной задачи от возможного воздействия другой задачи. Осн. защ. ресурсом явл. память, в которой хранятся коды, данные и раз. сист. таблицы (например, таблица прерываний). Защищать требуется и совместно используемую аппаратуру, обращение к которой обычно происходит через операции ввода-вывода и прерывания.
Четырехуровневая иерарх. система привилегий предназ. для управления исп. привилег. инструкций и доступа к дескрипторам. Уровни привилегий нумер. от 0 до 3, нулевой уровень соотв. макс. возможностям доступа и отводится для ядра ОС. Уровень 3 имеет самые ограниченные права и предоставл. прикладным задачам. Сист. защиты изображают в виде концентрич. колец, соответств. уровням привилегий, а сами уровни привилегий иногда назыв. кольцами защиты. Сервисы, предоставл. задачам, могут наход. в разных кольцах защиты.


Передача управления между задачами контрол.вентилями (gate), проверяющими правила использования уровней привилегий. Через вентили задачи могут получить доступ только к разрешенным им сервисам других сегментов.
Уровни привилегий относятся к дескрипторам, селекторам и задачам. Кроме того, в регистре флагов имеется
поле привилегий ввода-вывода,

с помощью которого обеспечивается управление доступом к инструкциям ввода-вывода и управление флагом прерываний.
Дескрипторы и привилегии являются основой системы защиты: дескрипторы определяют структуры элементов (без которых невозможно их использование), а привилегии определяют возможность доступа к дескрипторам и выполнения привилегированных инструкций. Любое нарушение защиты приводит к возникновению специальных исключений, обрабатываемый ядром операционной системы.
Использование привилегий в защищенном режиме
Уровни привилегий обеспеч. защиту задач, изолир. друг от друга локал. таблицами дескрипторов. Программы ОС, обработчики прерываний и др.сист. обеспеч. могут вкл. в вирт. адресное пространство каждой задачи и защищаться системой привилегий. Каждая часть системы работает на своем уровне привилегий.
Привилегии задач действ. на вып. инструкций и использование дескрипторов. Текущий уровень привилегии задачи CPL опред. двумя младшими битами регистра CS. CPL задачи может изменяться только при передаче управления к новому сегменту через дескриптор вентиля. Задача начинает выполняться с уровня CPL, указанного селектором кодового сегмента внутри TSS, когда задача инициируется посредством операции переключения задач. Задача, выполняемая на нулевом уровне привилегий, имеет доступ ко всем сегментам, описанным в GDT, и является самой привилегированной. Задача, выполняемая на уровне 3, имеет наиболее ограниченные права доступа. Текущий уровень привилегии может изменяться только при передаче управления через вентили.
Привилегии дескриптора задаются полем DPL байта управления доступом. DPL определяет наименьший уровень привилегий, с которым возможен доступ к данному дескриптору. Самый защищенный дескриптор имеет DPL = 0, к нему имеют доступ только задачи с CPL = 0. Самый беззащитный дескриптор имеет DPL = 3, его могут использовать задачи с CPL = 0, 1, 2, 3. Это правило применимо ко всем дескрипторам, за исключением дескриптора LDT.
Привилегии селектора задаются полем RPL (Requested Privilege Level) - двумя младшими битами селектора. С помощью RPL можно урезать эффективный уровень привилегий EPL (Effective Privilege Level), который определяется как максимальное арифметическое из значений CPL и RPL. Селектор с RPL = 0 не вводит дополнительных ограничений.
Контроль доступа к сегментам данных производится при исполнении команд, загружающих селекторы в сегментные регистры SS, DS, ES, FS и GS. Команды загрузки DS, ES, FS и GS должны ссылаться на дескрипторы сегментов данных или сегментов кодов, допускающих чтение. Для получения доступа эффективный уровень привилегий EPL должен быть равным или меньше (арифметически) уровня привилегий DPL дескриптора. Если эффективный уровень привилегий не разрешает доступ, ссылка идет на некорректный тип дескриптора (на дескриптор вентиля или на дескриптор только исполняемого кодового сегмента) или на несуществующий дескриптор вырабатываются соответствующие исключения.
Команды загрузки SS должны ссылаться на дескриптор сегмента данных, допускающий запись. При этом DPL и RPL должны быть равны CPL.
Контроль типов привилегий при передаче управления производится при загрузке селектора в регистр CS. Тип дескриптора, на который ссылается данный селектор, должен соответствовать выполняемой инструкции. Нарушение типа (напр., ссылка инструкции JMP на вентиль вызова) порождает искл.. При передаче упр. Дейст. следующие правила привилегий, нарушение которых также приводит к искл.:
- команды JMP или CALL могут ссылаться на сегмент с DPL, равным CPL;
- прерывания внутри задачи или вызовы, которые могут изменить ур.привилегий, могут перед. управл. кодовому сегменту с ур. привилегий, равным или больше ур. прив. CPL, только через вентили с тем же или меньшим ур. привилегий, чем CPL;
- инструкции возврата, кот. не перекл. задачи, могут передать управление только кодовому сегменту с таким же или меньшим уровнем привилегий;
- переключение задач может выполняться с помощью вызова, перехода или прерывания, которые ссылаются на вентиль задачи или сегмент состояния задачи (TSS) с тем же или меньшим уровнем привилегий.
Смена уровня привилегий, происход. при передаче управл., автомат. вызывает переопределение стека. Нач. знач. указателя стека SS:SP для ур. привилегий 0, 1, 2 содержится в TSS. При передаче управления по командам JMP или CALL в SS:SP загружается новое значение указателя стека, а стар. знач. помещ. в новый стек. При возврате на прежний уровень привилегий его стек восстанавливается. Для вызовов подпрограмм с передачей параметров через стек и сменой уровня привилегий из пред. стека в новый копируется фикс. число слов, заданное в вентиле. Команда межсегментного возврата RET с выравниванием указателя стека при возврате корректно восст. значение пред. указателя.
Привилегии и битовая карта разрешения ввода-вывода контролируют возможность выполнения операций ввода-вывода и управления флагом прерываний IF. Ур. привилегий ввода-вывода опред. полем IOPL (Input/Output Privilege Level) регистра флагов. Значение IOPL можно изм. только при CPL = 0.
При CPL < IOPL на операции ввода-вывода и управл. флагом IF никаких огранич. не накладывается.

23. Режим виртуального микропроцессора 8086 (V86)
Прикладные программы для 8086 микропроцессора могут исполняться на 32-разрядных процессорах как в реальном режиме, так и в режиме виртуального 8086 (V86), который является особым состоянием задачи защищенного режима. Режим V86 более привлекателен своими возможностями и гибкостью:
- в этом режиме работает защита и механизм страничной Переадресации, позволяющий адресоваться к любой области 4-гигабайтного пространства памяти;
- выполнение приложений 8086 в среде V86 возможно параллельно с приложениями защищенного режима;
- несколько задач в режиме V86 совместно могут использовать общие области кода операционной системы.
Все программы, выполняемые в режиме V86, имеют уровень привилегий 3, т.е. минимальные привилегии (реальный режим подразумевает уровень привилегий 0). Таким образом, программы в V86 выполняются со всеми проверками защиты. Попытка выполнения привилегированных инструкций вызывает исключение. Попытка выполнения инструкций, допустимых только для защищенного режима, также вызовет исключение.
Прерывания в V86 для полной эмуляции машины на 8086 обрабатываются особым образом. Все прерывания и исключения влекут за собой смену уровня привилегий обратно к уровню операционной системы защищенного режима. Эта ОС может распознать, что прерывание пришло из V86, по образу регистра флагов в стеке. Далее ОС может либо обработать это прерывание самостоятельно, либо переслать его к ОС реального режима, работающей в V86.
В конечном итоге ОС защищенного режима может совершенно прозрачно для приложения 8086, работающего в V86, эмулировать окружение обычной машины 8086, включая прерывания и перехватывая обращения к портам.
Вход в режим V86 - установка бита VM в регистре флагов - возможен одним из двух способов:
- выполнение инструкции возврата в 32-битном режиме, когда образ регистра флагов сохранен в стеке с установленным битом VM (при CPL = 0, иначе бит VM не установится);
- переключение на задачу, у которой в TSS образ регистра флагов имеет установленный бит VM.
Выход из режима V86 возможен только при обработке прерывания. Если вызываемая процедура имеет CPL = 0, то бит VM будет сброшен, и она будет выполняться в защищенном режиме. Если ее CPL > 0, произойдет нарушение защиты. Если прерывание вызывает переключение задач, состояние регистров с установленным флагом VM сохранится в TSS старой задачи, к которой можно будет вернуться. Новый режим (защищенный или V86) установится в соответствии с TSS новой задачи. ,
Значение бита VM не может быть изменено никакими другими способами; кроме того, его значение не может быть и прочитано - при любом программном сохранении регистра флагов значение VM всегда показывается нулевым. Так что приложение, выполняемое в среде V86, никак не может ни переключить режим процессора, ни распознать, в каком режиме - реальном или виртуальном - оно исполняется.

24. Режим системного управления SММ.
Соврем. модели 32-разрядных МП, кроме обычных режимов - реального, защищенного и режима V86, - имеют доп. режим сист. упр. SMM (System Management Mode). Этот режим предназн. для вып. некоторых действий с возможностью их полной изоляции от приклад. прогр. обеспеч. и даже ОС. Глав. образом этот режим предназн. для реализации системы управл. энергопотреблением. В режим SMM процессор может войти только по сигналу на входе SM1# (System Management Interrupt). Сигнал SMI# для процессора является запросом прерывания с наивысшим приоритетом. Обнаружив активный сигнал (низкий уровень) SMI#, процессор по завершении текущей инструкции и выгрузки буферов записи перекл. в режим SMM. Сразу при входе в SMM процессор сохраняет свой контекст - почти все регистры - в спец. памяти SMRAM. Эта память явл. выдел. областью физической памяти, доступ к которой обеспеч. внешними схемами в шинных циклах обращения к памяти только при наличии соответствующего сигнала. После сохранения контекста процессор переходит к вып. обработчика SMI, который расположен в той же памяти SMRAM. Обработчик представляет собой последов. обычных инструкций, исполняемых процессором в режиме, напоминающем реальный. При входе в режим SMM автоматически запрещаются аппаратные прерывания (включая и немаскируемые) и не генерируются исключения, так что действия процессора однозначно определяются программой обработчика SMI. Процедура обработчика завершается инструкцией возврата, по которой процессор восст. свой контекст из образа, хранившегося в SMRAM, и возвращается в обычный режим работы.
При возврате из SMM возможны некоторые варианты, заказанные обработчиком (в пределах возможности SMM данного процессора). Во-первых, обработчик может программно внести изменения в образ контекста процессора, и при его восст. процессор может вернуться не в то состояние, в котором произошло SMI. Во-вторых, возможен выбор варианта для случая, когда прерывание SMI возникло во время останова процессора по инструкции HALT: можно вернуться снова на инструкцию останова, а можно перейти к вып. след. за ней инструкции. В-третьих, возможен рестарт (повторное выполнение) инструкции ввода-вывода, предшествующей появлению сигнала SMI. Обработчик SMI «разбудит» устройство, после чего операция ввода-вывода рестартует, и прикладное ПО (или драйвер) «не заметит», что устройство пребывало в спячке. Таким образом, управл. потреблением может быть организовано на уровне BIOS способом, совершенно «прозрачным» для программного обеспечения (в том числе и ОС). Прозрачность SMM обеспечивается следующими свойствами режима:
- возможностью только аппаратного входа в SMM;
- исполнением кода SMM в отдельном адресном пространстве;
- полным сохранением состояния прерванной программы в области SMRAM;
- запретом обычных прерываний;
- восстановлением состояния прерванной задачи по выходу из режима SMM.
Память SMRAM должна быть физически или логически выделенной областью размером от 32 Кб (минимальные потребности SMM) до 4 Гб. SMRAM располагается, начиная с адреса SMIBASE (по умолчанию 3000h).
Если режим SMM используется для отключения питания процессора с возможностью быстрого «пробуждения», память SMRAM, хранящая контекст процессора, должна быть энергонезависимой. Память SMRAM должна быть схемотехнически защищена от доступа прикладных программ. Процессор генерирует специальный вых. сигнал, который и должен явиться «ключом» доступа к этой памяти. В режиме SMM исп. прерываний возможно, однако предвар. необходимо позаботиться о корректной инициализации таблицы прерываний, по крайней мере, для исп. векторов. Маскируемые аппаратные прерывания могут быть разрешены просто установкой флага IF, немаскируемое прерывание разрешается программным вызовом его обработчика.
Контекст математического сопроцессора (и регистры ММХ) при SMI автоматически не сохраняется, поскольку операции с плавающей точкой в режиме SMM вряд ли кому-либо потребуются. Однако если SMI используется для выключения процессора, контекст блока FPU может быть программно сохранен обработчиком.
Значение 3000h базового адреса SMRAM, устанавливаемое по аппаратному сбросу (сигналу RESET) процессора, может быть программно изменено на другое, выровненное по границе 32 Кб, во время исполнения обработчика SMI.

25. Структура микропроцессора Pentium. Особенности архитектуры (суперскалярность, раздельные кэши команд и данных).
13 SHAPE \* MERGEFORMAT 1415
Проц.Pentium полностью программно совместим с пред. МП Intel и позволяет применять ранее разраб. ПО для ПК. Однако проц. семейства Pentium облад. целым рядом технич. новшеств, а именно:
- близкая к суперскалярной архитектура;
- раздельные кэш-памяти для команд и данных;
- предсказание переходов;
- высокопроизводительные операции с плавающей точкой:
- усовершенствованная 64-разрядная шина данных;
- средства обеспечения целостности данных;
- SL-технология со средствами управления энергопотреблением;
- поддержка многопроцессорности;
- мониторинг производительности;
- поддержка различных страниц памяти.
Суперскалярная архитектура. Процессор относится к классу суперскалярных, когда система команд не содержит никаких указаний на параллельную обработку внутри процессора. Основная идея, опред. развитие суперскалярных МП, состоит в построении возможно большего количества параллел. структур при сохр. традиционных последов. программ.
Т.е. предполаг., что компиляторы и аппаратура МП сами, без вмешательства программиста, обеспечивают загрузку параллельно работающих функц. устройств МП.
Суперскалярность процессоров Pentium реализуется с помощью двух конвейеров, которые могут вып. 2 команды одновременно. Как и в случае единственного конвейера, двойной конвейер процессора Pentium выполняет целочисленные команды в пять этапов:
1. предвыборка;
2. дешифрирование 1;
3. дешифрирование 2;
4. выполнение;
5. запись результатов.
При этом несколько команд могут находиться на разных этапах выполнения.
Однако два конвейера не являются независимыми. При остановке одного останавливается и другой. Блок арифметики с плавающей точкой использует блок арифметики с фиксированной точкой. Следовательно, эти операции не могут выполняться параллельно. Это ограничивает суперскалярность процессора. В процессоре Pentium многие команды микрокода, применяемые в предыдущих поколениях, заменены внутренними командами. Это частоиспользуемые и простые команды, которые микропроцессор может выполнять, не прибегая к микрокоду. Для более сложных команд Pentium увеличивает производительность, применяя для выполнения команд два целочисленных конвейера.
Раздельные кэш-памяти команд и данных. Кэш-память команд ориентирована на блок предвар. выборки, а кэш-память данных - на исполнительные блоки процессора. Каждая кэш-память процессора Pentium имеет размер 8 Кб. Кэш-памяти явл. частично-ассоциативными. Поиск требуемой информации вып. в стандартных 32-байтовых строках. Буфер трансляции адресов (TLB) хранит вхождения в каталог и таблицы страниц, к которым обращались последнее время, и преобразует адрес ячейки внешней памяти в соответ. адрес данных в кэш-памяти. Кэш-память данных процессора Pentium исп. метод «обратной записи». Он позволяет модифицировать данные в кэше без обращения к оперативной памяти (данные записываются в оперативную память только после удаления из кэша). В предыдущих поколениях исп. кэш со сквозной записью. При каждой модификации в кэше данные передавались во внутреннюю память. Метод обратной записи повышает производительность, уменьшая нагрузку на шину интерфейса с памятью. Кэш процессоров, начиная с Pentium, поддерживает протокол MESI, названный по определяемым им состояниям Modified (модифицированный), Exclusive (эксклюзивный), Shared (разделенный), Invalid (некорректный). Состояния строк для каждого процессора определяются следующим образом:
- М-состояние - строка присутствует в кэше только этого процессора и модифицирована, т.е. отличается от содержимого основной памяти. Запись в эту строку не приведет к генерации внешнего (по отношению к локальной шине) цикла обращения;
- Е-состояние - строка присутствует в кэше только этого процессора, но не модифицирована (ее копия в основной памяти действительна). Запись переведет ее в М-состояние, не вызывая внешнего цикла обращения;
- S-состояние - строка присутствует в кэше этого процессора и потенциально может присутствовать в кэшах других процессоров, копия в памяти действительна. Запись в нее должна сопровождаться сквозной записью в основную память, что повлечет аннулирование соответствующих строк в других кэшах;
- 1-состояние - строка отсутствует в кэше, ее чтение может привести к генерации цикла заполнения строки. Запись в нее будет сквозной и выйдет на внешнюю шину.
Поддержка протокола MESI позволяет обеспечить согласованность данных в кэшах процессоров и в основной памяти при работе в мультипроцессорной системе.

26. Структура микропроцессора Pentium. Особенности архитектуры.
Процессор Pentium полностью программно совместим с предыдущими микропроцессорами Intel и позволяет применять ранее разработанное программное обеспечение для персональных компьютеров. Однако процессоры семейства Pentium обладают целым рядом технических новшеств, а именно:
- близкая к суперскалярной архитектура; раздельные кэш-памяти для команд и данных; предсказание переходов; высокопроизводительные операции с плавающей точкой: усовершенствованная 64-разрядная шина данных; средства обеспечения целостности данных; SL-технология со средствами управления энергопотреблением; поддержка многопроцессорности; мониторинг производительности; поддержка различных страниц памяти.
Предсказание переходов. Процессор Pentium - первый х-86 совместимый микропроцессор, использующий данное средство, которое ранее применялось в больших ЭВМ и RISC-про- Цессорах. Основное назначение данного механизма - повышение вероятности наличия в кэш-памяти требуемой команды и, таким образом, уменьшение потерь процессорных циклов, связанных с промахами в кэш-памяти при выполнении команд ветвления.
Процессор Pentium выполняет упреждение переходов, используя буфер переходов ВТВ (Branch Target Buffer) и два буфера предварительной выборки. Один буфер применяется для предварительной выборки команды, в предположении, что перехода нет, другой выполняет предвыборку инструкций в буфер, используя содержимое ВТВ, запомненное при первом выполнении перехода. Буфер ВТВ хранит историю происходивших переходов. Каждый из 512 элементов ВТВ хранит целевой адрес и 4 бита предыстории, которые несут информацию о том, случался ли переход за последние четыре прохода через инструкции ветвления, ссылающиеся на данный адрес. Если на основании анализа предыстории предсказывается переход, целевой адрес посылается в блок предвыборки, не дожидаясь выполнения ветвления.
Алгоритм упреждения переходов процессора Pentium не только прогнозирует выбор простых ветвей, но поддерживает и более сложное прогнозирование (например, во вложенных циклах). Это делается с помощью хранения в буфере ВТВ нескольких адресов переходов. ВТВ хранит до 256 результатов переходов, что позволяет выполнять правильное предсказание с вероятностью не менее 0,8.
Высокопроизводительный блок операций с плавающей точкой. В процессоре Pentium применяется блок вычислений с плавающей точкой, использующий сложные восьмиступенча- тые конвейеры и внутренние функции. Большинство команд с плавающей точкой начинают выполняться в одном из целочисленных конвейеров, а затем передаются на конвейеры с плавающей точкой. Кроме того, обычные функции с плавающей точкой (сложение, умножение, деление) для более быстрого выполнения реализованы как внутренние функции.
Усовершенствованная 64-разрядная шина данных. Расширенная до 64 бит шина данных поддерживает поток команд и данных, передаваемых суперскалярному исполнительному процессорному ядру, что способствует повышению интенсивности обработки.
Помимо расширения шины данных, для увеличения ее пропускной способности процессор Pentium реализует:
конвейеризацию циклов шины, позволяющую начать второй цикл до завершения первого. Это предоставляет подсистемам памяти больше времени для декодирования адреса, благодаря чему можно применять более медленные и менее дорогие компоненты памяти, что отражается на общей стоимости системы;
поддержку пакетного чтения и записи, проверку четности адреса и данных;
поддержку двух буферов записи (по одному на каждый конвейер), благодаря которым процессор может продолжать работу, выполняя следующие команды, хотя результат одной из текущих команд еще не записан в память из-за занятости шины.
Средства обеспечения целостности данных. С целью повышения надежности систем, создаваемых на основе Pentium, в нем предусмотрены два средства, ранее присущие только большим ЭВМ, внутреннее обнаружение ошибок и тестирование с помощью функциональной избыточности.
Для внутреннего обнаружения ошибок используются биты четности внутренних буферов процессора. Для приложений, особо критичных к достоверности результата, может быть использовано средство функциональной избыточности FRC (Functional Redundancy Checking). FRC требует использования двух микропроцессоров - основного и проверяющего. Микропроцессоры выполняют одни и те же вычисления параллельно. Один процессор сравнивает результаты с результатами второго микропроцессора. В случае расхождения генерируется прерывание.
Управление энергопотреблением. Средства энергосбережения работают на двух уровнях: 1. на уровне микропроцессора; 2. на уровне системы.
На уровне микропроцессора управление энергопотреблением предусматривает при выполнении задач, не требующих интенсивных вычислений (например, при редактировании текстов), перевод процессора в режим с пониженной тактовой частотой и пониженным потреблением питания.
На уровне системы возможна даже полная остановка процессора («спящий» режим SL). Этот механизм поддерживается системой SMM, контролирующей энергопотребление во всем компьютере, включая периферийные устройства. Этот режим обеспечивает интеллектуальное управление системой, позволяющее микропроцессору замедлять функционирование, приостанавливать или полностью прекращать работу отдельных системных компонентов, максимизируя экономию электроэнергии.
Поддержка мультипроцессорности. В качестве средств поддержки мультипроцессорной работы, включенных в процессор Pentium, можно выделить:
- поддержку согласованности данных между различными процессорами через кэш-данные с использованием протокола MESI;
- внутрикристальный контроллер многопроцессорных прерываний, поддерживающий до 60 процессоров;
-двухвходовой контроллер кэш-памяти второго уровня, позволяющий двум процессорам совместно использовать один кэш второго уровня.
Мониторинг производительности. Мониторинг производительности - это средства процессора Pentium, позволяющие разработчикам системы и приложений оптимизировать их программное и аппаратное обеспечение благодаря идентификации в программном коде потенциально «узких мест». Разработчики могут наблюдать и подсчитывать такты для внутренних процессорных событий, влияющих на производительность операций чтения и записи, успешные и неуспешные обращения к кэшпамяти, прерывания, использование шины. Это позволяет оценивать эффективность программного кода относительно архитектуры Pentium и выполнять тонкую настройку разрабатываемых приложений или систем для получения максимальной производительности.
Процессоры Pentium имеют 64-битный счетчик меток реального времени TSC (Time Stamp Counter). Этот счетчик инкре- ментируется с каждым тактом процессорного ядра; отсчет начинается с нуля по аппаратному сбросу сигналом RESET. Разрядность регистра обеспечивает счет без переполнения в течение нескольких тысячелетий. Счетчик продолжает счет и при исполнении инструкции HLT, и при остановке процессора по сигналу энергосбережения

27. Особенности архитектуры микропроцессоров 6-го поколения семейства х86 фирмы Intel (Pentium Рrо, Pentium II)
13 SHAPE \* MERGEFORMAT 1415
Pentium Pro полностью поддерживает систему команд х86. Архитектурные особенности процессора делают эффективным его применение для 32-разрядных приложений, тогда как для 16-разрядных программ скорость выполнения может оказаться существенно меньшей, чем для Pentium с той же тактовой частотой.
В данном микропроцессоре применена новая конструкция корпуса, процессор состоит из двух микросхем, помещенных в один керамический корпус, и не согласуется по выводам с процессорами Pentium. Для его использования необходим переход на новые системные платы.
Достижение высокой производительности обеспечивается за счет использования следующих архитектурных и технологических новшеств:
- динамического выполнения команд; двойной независимой шины; интегрированного вторичного кэша; расширения системы команд.
Динамическое выполнение - комбинация методов предсказания переходов, анализа прохождения данных и виртуального выполнения. При этом команды, не зависящие от результатов предыдущих операций, могут выполняться в измененном порядке (спекулятивное выполнение), но последовательность выгрузки результатов в память и порты будет соответствовать исходному программному коду.
Команда готова к выполнению, как только готовы ее входные операнды. Однако есть ряд ограничений, связанных с доступностью физических ресурсов, таких как исполнительные устройства, коммутаторы и порты регистровых файлов. Для организации исполнения используются различные методы:
одной очереди; многих очередей; метод резервирующей станции.
Если имеется одна очередь, то переименования регистров не требуется, так как доступность значений операндов может отмечаться битом резервирования, сопоставленным каждому регистру (при выполнении программ используется механизм динамического отображения определяемых текстом программы логических ресурсов (ячеек памяти, регистров) на физические ресурсы микропроцессора. С одним логическим ресурсом может быть связано несколько значений в различных физических ресурсах, каждое из которых соответствует значению логической величины в один из моментов времени последовательного выполнения программы. Когда команда создает новое значение для логического ресурса, физический ресурс, в который помещается это значение, получает имя. Последующие команды, использующие это значение, снабжаются именем физического ресурса. Данная процедура называется переименованием регистров). Регистр резервируется, когда модифицирующая его команда назначается на исполнение. И регистр освобождается, когда заканчивается исполнение команды. Если для команды ресурсы не были зарезервированы, то она приостанавливает свое исполнение.
В методе многих очередей каждая очередь организуется для команд одного типа, например, команд с плавающей точкой или работы с памятью.
Третий метод предполагает использование резервирующей станции, состоящей из совокупности элементов, каждый из которых содержит позиции для размещения кода операции, имени первого операнда, самого первого операнда, имени второго операнда, самого второго операнда, признака доступности второго операнда и имени регистра результата. Когда команда завершает исполнение и вырабатывает результат, то имя результата сравнивается с именами операндов резервирующей станции.
Если в резервирующей станции обнаруживается команда, ждущая этого результата, то данные записываются в соответствующую позицию и устанавливается признак их доступности. Когда у команды доступны все операнды, инициируется ее исполнение. Резервирующая станция следит за доступностью операндов. Когда команда при диспетчеризации попадает в резервирующую станцию, все готовые операнды из регистрового файла переписываются в поля этой команды. Когда все операнды готовы, команда исполняется. Иногда резервирующая станция содержит не сами операнды, а указатели на них в регистровом файле или переупорядочивающем буфере.
Двойная независимая шина. Динамическое выполнение резко повышает частоту запросов процессорного ядра к шине за данными и инструкциями, поскольку ядро одновременно обрабатывает несколько инструкций. Для обхода «узкого места» - внешней шины - процессорное ядро использует архитектуру двойной независимой шины DIB (Dual Independent Bus). Одна из этих шин используется только для связи с кристаллом вторичного кэша, расположенным в том же корпусе микросхемы. Проводники этой локальной шины имеют длину порядка единиц сантиметров, что позволяет ее использовать на частоте ядра процессора. Значительный объем вторичного кэша позволяет удовлетворить большинство запросов к памяти сугубо локально, при этом коэффициент загрузки шины достигает 90 %. Вторая шина выходит на внешние выводы микросхемы и является системной шиной процессора. Эта шина работает на внешней частоте независимо от внутренней шины. По статистике загрузка процессором внешней шины для обычных применений составляет примерно 10% от ее пропускной способности, а для серверных применений может достигать 60 % при четырехпроцессорной конфигурации. Таким образом, ограниченная пропускная способность внешней шины перестает служить фактором, обесценивающим производительность процессора. Кроме этого, шина позволяет без дополнительных схем объединять до четырех процессоров.
Интегрированный вторичный кэш имеет объем 256 Кб. Всего микропроцессор содержит раздельные кэш-памяти первого уровня для данных и команд, каждая объемом 8 Кб, и объединенный кэш второго уровня. Кэш-память первого уровня двухпортовая, поддерживает одну операцию загрузки и одну операцию записи за такт. Интерфейс кэш-памяти второго уровня работает с тактовой частотой центрального процессора и может передавать 64 бита за такт.
Расширение системы команд. В систему команд введены инструкции условной пересылки данных, позволяющие сократить количество условных переходов. При этом повышается предсказуемость программного кода и, следовательно, эффективность использования конвейера.
Рассмотрим назначение и работу основных функциональных блоков процессора. 512-элементный буфер адресов переходов ВТВ позволяет сократить число тактов при выборке строк из кэш-памяти устройством подгрузки команд (IFU - Instruction Fetch Unit). Процесс выборки конвейеризирован. Новая строка выбирается каждый такт центрального процессора. Три параллельных декодера (ID) каждый такт преобразуют несколько команд архитектуры х86 в наборы микроопераций.
Таблица псевдонимов регистров (RAT - Register Alias Table) используется для переименования регистров. Результат переименования посылается в резервирующую станцию (RS - Reservation Station) и в буфер переупорядочивания (ROB - Reorder Buffer).
Микрооперации с переименованными операндами помещаются в очередь в резервирующей станции, где ожидают значений операндов, поступающих независимо из нескольких источников. Данными являются результаты выполненной микрооперации, адреса ВТВ, содержимое регистров.
Выбор микроопераций из очереди и динамическое исполнение осуществляется с учетом их истинных зависимостей по данным, а также в зависимости от доступности исполнительных устройств. Порядок, в котором выполняются микрооперации, в общем случае отличается от их расположения в исходной программе.
При планировании обращений к памяти используются резервирующая станция, устройство генерации адреса (AGU - Address Generation Unit) и буфер упорядочивания обращений к памяти (MOM - Memory Ordering Buffer).
Микрооперация становится кандидатом на выгрузку сразу, как только она выполнена, определен адрес перехода и полученные результаты направлены к нуждающейся в них микрооперации. Для восстановления первоначального порядка микроопераций используются временные метки микроопераций в буфере переупорядочивания и файле регистров выгрузки (RRF - Retirement Register File).
Процесс выгрузки должен обеспечить не только восстановление первоначального порядка микроопераций, но и гарантировать правильную обработку прерываний и ошибок, а также отменять все или часть результатов, полученных после неправильного предсказания ветвления. В момент выгрузки микрооперации ее результат из буфера переупорядочивания помещается в файл регистров выгрузки.
Процессоры Pentium II сочетают архитектуру Pentium Pro с технологией ММХ. По сравнению с Pentium Pro удвоен размер первичного кэша (16 + 16 Кб), размер вторичного кэша варьируется в диапазоне от 0 до 2 Мб. В процессоре используется новая технология корпусов - картридж с печатным краевым разъемом, на который выведена системная шина, на картридже размером 14x6,2x1,6 см установлена микросхема ядра процессора, несколько микросхем, реализующих вторичный кэш, и вспомогательные дискретные элементы (резисторы, конденсаторы). Снятие вторичного кэша с микросхемы процессора позволяет использовать для кэш-памяти и памяти тегов микросхемы сторонних производителей, специализирующихся на выпуске сверхбыстродействующей памяти. Объем вторичного кэша определяется емкостью и числом установленных микросхем памяти. В то же время сохраняется независимость шины вторичной кэш-памяти, которая тесно связана с ядром процессора собственной локальной шиной.
Первые процессоры Pentium II (весна 1997 г., технология 0,35 мкм) имели тактовые частоты ядра 233, 266 и 300 МГц при частоте системной шины 66,6 МГц. Следующее поколение Pentium II (1998 г., технология 0,25 мкм) имело более высокие тактовые частоты (333, 350, 400, 450 МГц). Причем для процессоров с частотой 350 и 400 МГц частота системной шины была увеличена до 100 МГц. Это стало возможным потому, что с уменьшением размеров элементов уменьшается рассеиваемая мощность.
По производительности Pentium II превосходил Pentium ММХ, однако уступал Pentium Pro.
Основным недостатком первых Pentium II было то, что они не содержали средств интеграции в мультипроцессорную систему.




28. Особенности архитектуры микропроцессоров 6-го поколения семейства х86 фирмы Intel (Pentium III, Pentium IV)
Процессор Intel Pentium III, выпущенный в начале 1999 г., содержит все основные компоненты архитектуры микропроцессоров шестого поколения: динамическое исполнение команд, системную шину с множественными транзакциями и технологию ММХ для обработки данных мультимедиа.
Основным отличием Pentium III является поддержка нового потокового S1MD (Single Instruction Multiple Data) расширения - 70 новых команд, обеспечивающих улучшенные возможности обработки изображений, трехмерной графики, потокового видео и аудио, а также распознавания речи. Для этого в структуру процессора введен блок 128-разрядных регистров ХММ, который позволяет одной инструкцией выполнять операции сразу над четырьмя комплектами 32-разрядных операндов в формате с плавающей точкой. При выполнении новых инструкций традиционные исполнительные устройства не используются, что позволяет эффективно смешивать инструкции ММХ с инструкциями над операндами с плавающей точкой. Инструкции с регистрами ХММ могут работать и в скалярном режиме, и выполнять логические операции.
Микропроцессор содержит неблокируемую кэш-память первого уровня емкостью 32 Кб (16 Кб данных, 16 Кб команд) и унифицированную неблокируемую кэш-память второго уровня емкостью 512 Кб. Pentium III поддерживает кэширование памяти с объемом адресного пространства до 4 Гб и позволяет создавать масштабируемые двухпроцессорные системы с объемом физической памяти до 64 Гб.
В Pentium III реализована функция серийного номера процессора как компонент системы обеспечения безопасности компьютера. Серийный номер является уникальным идентификатором процессора и может быть использован для идентификации компьютера (пользователя) в сети или со стороны прикладных программ.
Микропроцессор Pentium IV был выпущен фирмой Intel в июне 2000 г. В целом архитектура процессора Pentium IV ориентирована на эффективную работу с Internet-приложениями. К числу наиболее значимых достижений архитектуры Pentium IV, получившей название NetBurst (пакетно-сетевая), следует отнести значительное повышение тактовой частоты процессорного ядра и системной шины, а также появившуюся в старших представителях семейства мультитредовость (многопоточность), в терминологии Intel - Hyper-Threading (гиперпоточность).
В качестве отличий архитектуры Pentium IV можно выделить:
-работу с системной шиной, имеющей эффективную частоту 400 МГц; удвоение частоты работы блоков АЛУ микропроцессора; -значительное увеличение длины исполнительного конвейера (до 20 ступеней); добавление 144 новых команд поточной SIMD-обработки; использование кэша трассы команд в качестве кэшпамяти команд первого уровня; размещение кэш-памяти второго уровня на кристалле.
Микропроцессор имеет традиционно раздельные кэш-памяти
команд и данных первого уровня емкостью по 8 Кб. Кэш-память второго уровня имеет объем 256 Кб, реализует механизм обратной записи и представляет собой 8-входовую множественно- ассоциативную память, пропускная способность которой увеличена в 2 раза по сравнению с процессорами предыдущего поколения.
Всего процессор может адресовать до 64 Гб внешней памяти.
Четырехкратная передача данных по шине за такт при частоте тактирования 100 МГц обеспечивает эффективную частоту работы шины 400 МГц и скорость передачи данных 3,2 Гб/с.
Микропроцессор содержит 42 млн транзисторов и производится по технологии 0,18 мкм для тактовых частот от 1,4 до 1,7 ГГц и 0,13 мкм с 6-слойной металлизацией для тактовых частот от 2 до 3,06 ГГц.
Суть технологии Hyper-Threading заключается в том, что в кристалл процессора добавлено несколько блоков, позволяющих одному физическому процессору (с одним конвейером и обшей кэш-памятью второго уровня) распознаваться и работать в системе как два логических процессора, каждый из которых может быть загружен своей задачей. Основная часть блоков процессора используется совместно, но некоторые продублированы и могут выполнять разные задачи.
Технология Hyper-Threading помогает сократить периоды простоя процессора путем использования ресурсов, не занятых одной задачей, исполнением инструкций другой задачи, например, в случае:
- задержек при доступе к памяти; выполнения последовательности взаимозависимых инструкций; ошибок предсказания ветвлений;
-одновременных вычислений в целочисленном и экспоненциальном форматах.
В результате пропускная способность основных ресурсов процессора возрастает, а суммарное время выполнения двух задач сокращается.
Эффективность совместного использования ресурсов процессора двумя параллельными задачами в технологии Hyper- Threading существенно зависит от характера программного обеспечения: чем хуже приложения оптимизированы для данной архитектуры, тем больше может быть выигрыш от использования Hyper-Threading.

29. Микропроцессоры с архитектурой IА-64
13 SHAPE \* MERGEFORMAT 1415
Микропроцессор Itanium является первым представителем 64-разрядных микропроцессоров фирмы Intel. Фактически же данный микропроцессор является детищем совместных усилий двух фирм: Intel и Hewlett-Packard (фирма Hewlett-Packard в свое время «поглотила» фирмы DEC и Compaq), которые в этом проекте объединили свои интеллектуальные и финансовые ресурсы. Первоначально микропроцессор имел мнемоническое обозначение Р7, затем - Merced (сокращение от слова Mercedes) и только потом - Itanium. Выпуск процессора был начат в 2001 г.
Наряду с микропроцессорами фирмы Intel, предшественниками Itanium можно считать и микропроцессоры с архитектурой Precision Architecture, разработанной фирмой Hewlett-Packard для своих RISC-процессоров. Ее 32-разрядный микропроцессор
Таблица 5.1
Х86
IA-64

Использование сложных инструкций переменной длины, обрабатываемых по одной
Использование простых инструкций, сгруппированных по три, одинаковой длины

Переупорядочивание и оптимизация инструкций во время выполнения
Переупорядочивание и оптимизация инструкций во время компиляции

Реализация механизма предсказания переходов
Исполнение нескольких последовательностей команд одновременно без предсказания переходов

Загрузка данных из памяти по мере необходимости
Загрузка данных до того, как они потребуются

РА-8000 был выпущен в 1986 г. и в полной мере воплощал основные принципы динамического исполнения команд («интеллектуального выполнения» в терминах Hewlett-Packard).
РА-8000 имел 64-разрядную четырехконвейерную архитектуру с оригинальной схемой изменения последовательности выполняемых команд. Процессор содержал 10 функциональных устройств: два целочисленных АЛУ, два целочисленных устройства сдвига/объединения, два устройства умножения/накопления с плавающей точкой, два устройства деления/извлечения корня и два устройства загрузки/сохранения.
В РА-8000 использовался буфер переупорядочивания команд, просматривающий следующие 56 команд в потоке инструкций и определяющий, какие из них можно выполнять параллельно. Фактически буфер состоял из двух блоков на 28 команд каждый.
Команда, помещенная в буфер, ожидала готовности данных, являющихся результатом предыдущих команд, и выбиралась на выполнение (в порядке очередности), как только все требуемые данные получены и необходимое исполнительное устройство освободилось. Каждый из блоков буфера позволял планировать две команды за такт (итого до четырех команд за такт). Для устранения связей между параллельно выполняемыми командами в процессоре использовалось переименование регистров.
Hewlett-Packard спроектировала РА-8000 специально для научных и инженерных расчетов, при которых объем интенсивно используемых данных может быть велик. В этой связи возникла необходимость использования больших кэш-памятей команд и данных. РА-8000 использовал внешние основные кэшпамяти данных и команд объемом до 4 Мб, а также буфер переупорядочивания адресов, отслеживающий все команды загрузки/сохранения, что позволило сократить задержку, связанную с адресацией внешней кэш-памяти.
Архитектура микропроцессора Itanium (IA-64) реализует концепцию EPIC (Explicitly Parallel Instruction Computing - явное параллельное выполнение команд).
Основными особенностями EPIC являются:
- большое количество регистров; масштабируемость по количеству функциональных устройств (возможность увеличения числа функциональных устройств в последующих моделях микропроцессора); явное задание параллелизма в машинном коде; предикатное исполнение инструкций; упреждающая загрузка данных по предположению.
В табл. 5.1 приведены основные отличия архитектуры процессора IA-64 от архитектуры процессора х86.
В микропроцессоре Itanium последовательность команд и план загрузки исполнительных устройств формируются на этапе компиляции. В ходе выполнения программы последовательность команд не изменяется. В микропроцессоре используются: динамическое предсказание переходов, спекулятивное (по предположению) исполнение команд, аппаратная поддержка конвейерного выполнения циклов, отложенные операции обращения к памяти, предварительная загрузка данных в кэш.
Структура микропроцессора Itanium содержит (рис. 5.4):
- четыре целочисленных устройства; четыре устройства обработки мультимедийных данных; по два устройства вычислений в формате с плавающей точкой одинарной и расширенной точности; два устройства загрузки/сохранения; три устройства выполнения переходов.
Все функциональные устройства микропроцессора конвейеризированы. Команда выполняется за 10 тактов, причем одновременно в микропроцессоре может выполняться до шести команд. Для повышения эффективности функционирования исполнительных блоков микропроцессора результаты выполнения команды передаются непосредственно на вход другой команды, минуя запись в регистры. Для этой цели используется память временного хранения результатов.
Процессор может напрямую адресовать до 18 Гб оперативной памяти. Itanium использует трехуровневую кэш-память:
-первый уровень внутренняя раздельная кэш-память команд и данных, по 16 Кб каждая;
- второй уровень внутренняя общая кэш-память команд и данных - 96 Кб;
-третий уровень внешняя (в картридже) общая кэшпамять команд и данных - до 4 Мб.
Команды микропроцессора группируются компилятором в «связку» длиной 128 бит. Связка содержит три команды и шаблон, указывающий, какие команды в текущей и следующей связке могут выполняться одновременно Команды в связках могут размещаться в порядке, отличном от исходного, заданного в тексте программы, и могут быть как зависимыми (по управлению и данным), так и независимыми.
Команды микропроцессора имеют фиксированную длину 40 бит.
Формат команды приведен на рис. 5.5.

Рис. 5.5. Формат команды микропроцессора Itanium
Компилятор для микропроцессора Itanium использует технологию отмеченных ветвлений, сущность которой заключается в том, что команды, принадлежащие к различным ветвям алгоритма, помечаются различными значениями в поле предиката. Формирование связок команд осуществляется вне зависимости от значения предиката. Тем самым обеспечивается возможность одновременного выполнения команд, принадлежащих различным ветвям алгоритма.
В процессе выполнения программы после определения истинного направления ветвления вычислительного процесса сохраняются только результаты команд со значением предиката, соответствующим данной ветви.
Технология «отмеченных команд» существенно снижает негативное влияние ветвлений на машинном уровне.
Другой особенностью IA-64 является предварительная загрузка данных в кэш-память с разнесением во времени команд загрузки данных из памяти и команд, их использующих. Компилятор, анализируя исходный текст программы, заранее добавляет в формируемый исполняемый код команды загрузки необходимых данных и непосредственно перед командой, их использующей, - команду проверки их доступности. Таким образом удается в значительной степени сократить задержки, связанные с необходимостью ожидания загрузки требуемых данных.
В Itanium предусмотрена аппаратная поддержка выполнения циклов.
В микропроцессоре не используется динамическое переименование регистров. С целью обеспечения возможности конвейерного выполнения различных витков цикла в микропроцессоре применяется схема циклической замены используемых регистров («вращение регистров»): набор используемых в цикле регистров рассматривается как фрейм, отображаемый на регистровый файл, начиная с некоторой позиции - базы фрейма. При переходе на следующую итерацию цикла изменяется база фрейма на величину, равную количеству регистров во фрейме.
Микропроцессор Itanium II является вторым микропроцессором в семействе 64-разрядных микропроцессоров компании Intel. Itanium II рассчитан на применение в высокопроизводительных серверах и рабочих станциях.
Itanium II содержит кэш-память большой емкости: кэш третьего уровня емкостью 1,5 или 3 Мб, кэш второго уровня емкостью 256 Кб и кэш первого уровня емкостью 32 Кб. При размере кристалла 464 мм2 Itanium II содержит 221 млн транзисторов.Развитие технологии позволило на кристалле микропроцессора Itanium серии 9300 разместить уже миллиард транзисторов. За счет этого на кристалле располагаются четыре процессорных ядра, совокупная емкость трехуровневого кэша составила 30 Мб, а емкость оперативной памяти потенциально может быть равна 1 Тб. Разрядность виртуального адреса при этом составляет 64 бита, а физического - 50 бит. Межпроцессорный интерфейс обеспечивает скорость передачи до 48 Гб/с.

30. Микропроцессоры архитектуры х86 фирмы АМD 5-го и 6-го поколений
Микропроцессор К5. С 1990 г. AMD и Intel ведут судебную тяжбу по поводу собственности на микрокод процессоров архитектуры х86. В течение ряда лет AMD, отставая от Intel по крайней мере на одно поколение микропроцессоров, полагалась в основном на лицензированную технологию и вносила незначительные изменения в выпускаемые микропроцессоры. Появление Pentium создало для AMD прямую угрозу вытеснения с рынка, что стимулировало компанию к интенсификации работ над созданием нового семейства микропроцессоров, совместимых с семейством х86. Была поставлена цель - создать такое семейство микропроцессоров, которое опередило бы Pentium. Работы над К5 были начаты, когда еще не были известны подробности о микропроцессоре Pentium. К5 - это первый микропроцессор AMD, при создании которого не использовалась никакая интеллектуальная собственность Intel. В то же время он обладает лучшей по сравнению с процессорами Intel производительностью. По данным AMD, реальные приложения (Microsoft Excel, Word, CorelDraw) работают на процессорах серии К5 на 30 % быстрее, чем на Pentium с той же тактовой частотой. Такая производительность достигается в основном за счет увеличенного объема кэш-памяти и более прогрессивной суперскалярной архитектуры. Вместо парных конвейеров целочисленных вычислений Pentium в К5 используется суперскалярная архитектура со счетверенной подачей команд пяти обрабатывающим блокам и RISC-ядром с уникальным декодером инструкций х86.
Используемая в микропроцессорах AMD архитектура RISC 86 (впервые предложенная фирмой NexGen) показана на рис. 6.1.

Рис. 6.1. Архитектура RISC 86 компании AMD
Как известно, команды х86 отличает сложность и переменная длина, затрудняющие их динамическое выполнение. Декодер, представляющий собой наиболее сложную часть микропроцессора, разбивает длинные CISC-инструкции на небольшие RISC-подобные компоненты - так называемые ROP (RISC- операции). R-операции напоминают команды микрокода микропроцессоров х86. Первые микропроцессоры с архитектурой х86 выполняли свой сложный набор микрокоманд, выбирая из внутренней постоянной памяти микрокод. В последних микропроцессорах х86 использование микрокода сведено к минимуму за счет применения простых команд. В К5 применяется другой подход: здесь большинство R-операций генерируется динамически не микрокодом, а декодером. Однако микрокод все еще используется для обработки сложных и редко применяемых команд, таких как строковые операции и операции над комплексными числами. Тем не менее даже в этих случаях в результате генерируется поток R-операций. К5 может конвертировать команду х86 в 1-4 R-операции. Эти операции планируются для выполнения в ядре, в котором многое заимствовано от RISC- архитектуры. Используется динамическое переименование регистров, предсказание переходов, изменение последовательности выполнения и другие методы динамического выполнения. К5 реализует гибридную CISC/RISC-технологию.
Особенностью К5 является то, что вместо двух конвейеров для выполнения целочисленных операций он имеет пять параллельно функционирующих блоков. Как и Pentium, он может параллельно выполнять две целочисленные операции. Однако, в отличие от Pentium, в К5 одновременно могут выполняться также инструкции с плавающей точкой, загрузки/сохранения или перехода. Большой набор регистров и блок загрузки/сохранения позволяет выполнять за цикл выборки из памяти две операции. Другим отличием от Pentium является то, что К5 может изменять последовательность выполняемых операций.
Блок операций с плавающей точкой отвечает стандартам х86, однако по производительности несколько уступает FPU микропроцессора Pentium.
Основные характеристики К5:
- совместим с семейством микропроцессоров х86; суперскалярная архитектура с четырехвходовой подачей команд; конвейер с пятью стадиями обработки; пять параллельно функционирующих исполнительных блоков; кэш-команд 16 Кб, кэш данных 8 Кб с двумя портами, линейная адресация; изменение порядка выполнения команд, предсказание переходов, эффективное выполнение, отличный от Intel микрокод; совместим по выводам с Pentium.
Микропроцессор К6. Данный микропроцессор компании AMD явился продуктом совместных усилий AMD и специалистов из бывшей NexGen. По сути дела, Кб представляет собой воплощение проекта Nx686, ранее начатого компанией NexGen, но не завершенного по финансовым причинам. Процессор полностью совместим по системе команд с семейством х86. Кроме того, Кб оснащен ставшим отраслевым стандартом мультимедийным расширением системы команд - ММХ. По производительности Кб сравним с Pentium Pro и существенно превосходит Pentium ММХ. В отличие от Pentium Pro, Кб одинаково успешно работает как с 32-разрядными, так и с 16-разрядными приложениями.Как и в К5, в Кб применена суперскалярная архитектура RISC86 с раздельным декодированием/исполнением команд, обеспечивающая преемственность с системой команд х86 и достижение высокой производительности, свойственной микропроцессорам шестого поколения.
Высокая производительность процессора достигается благодаря ряду новых архитектурных и технологических решений:
- в процессоре реализуется преддекодирование команд х86 при их выборке в кэш. Каждая команда в кэш-памяти первого уровня снабжается битами преддекодирования, указывающими смещение начала следующей команды в кэше (от 1 до 15 байт); Кб содержит внутрикристальный кэш первого уровня по 32 Кб для данных и команд; в процессоре реализован высокопроизводительный блок вычислений с плавающей точкой; имеется высокопроизводительный блок мультимедийных операций стандарта ММХ; используется множественное декодирование х86 инструкций в однотактные RISC-операции;
- процессор поддерживает логику предсказания ветвлений, используя таблицу истории ветвлений из 8192 элементов, кэш адресов перехода и стек возврата, которые обеспечивают вероятность правильного предсказания перехода выше 0,95. В процессоре используется двухуровневая схема предсказания ветвлений. Таблица истории ветвлений не хранит при предсказании целевых адресов, специальные адресные АЛУ вычисляют целевые адреса во время декодирования инструкции. Кэш адресов ветвлений обеспечивает уточнение предсказанного ветвления, уменьшая потери при обращении к памяти. Кэш адресов поставляет на дешифраторы первые 16 байт инструкций, выбранных согласно прогнозу ветвления;
- процессор содержит параллельные дешифраторы, централизованный планировщик операций и семь исполнительных блоков, которые обеспечивают суперскалярное выполнение х86 инструкций в шестиступенчатом конвейере;
- в процессоре используется спекулятивное исполнение с изменением последовательности команд, предварительная посылка данных, переименование регистров.
Структура микропроцессора К6 приведена на рис. 6.2.

Рис. 6.2. Структура микропроцессора Кб
RISC-ядро микропроцессора может выполнять за один такт до шести команд RISC86. В процессе исполнения ROP ядро использует 48 физических регистров - 24 регистра общего назначения и 24 регистра для переименования. 24 регистра подразделяются на 16 рабочих регистров и восемь регистров, соответствующих универсальным регистрам архитектуры х86: ЕАХ, ЕВХ, ЕСХ, EDX, EBP, ESP, ESI и ED1.
Планировщик Кб содержит в буфере 24 команды RISC 86 и назначает инструкции на выполнение семи исполнительным устройствам:
- модулю сохранения; модулю загрузки; модулю перехода; двум целочисленным АЛУ; целочисленному блоку мультимедийных команд;блоку операций с плавающей точкой.
Наличие буфера позволяет планировщику в динамике анализировать и изменять выбранную для исполнения последовательность команд, обеспечивая максимальную загрузку исполнительных устройств.Блок мультимедийных команд выполняет все инструкции расширения ММХ. Целочисленный Х-блок выполняет арифме- тико-логические операции, включая умножение, деление, сдвиг, циклический сдвиг. Y-блок - основные одно- и двухсловные арифметико-логические операции: ADD, AND, CMP, OR, SUB, XOR, расширение нуля и расширение знакового разряда числа. Блок вычислений с плавающей точкой выполняет все команды с плавающей точкой. Блок переходов осуществляет обновление состояния процессора (регистров, флагов) после подтверждения предсказанного условного ветвления, обеспечивая тем самым возможность спекулятивного выполнения команд (на глубину до семи переходов).
Микропроцессор К7 (кодовое имя Athlon) начал выпускаться в 1999 г. сначала по технологии 0,25 мкм (22 млн транзисторов на кристалле), затем - 0,18 мкм (37 млн транзисторов на кристалле).Архитектура, реализованная в Athlon, получила название QuantiSpeed. Она включает в себя суперскалярное конвейерное выполнение команд, конвейерный блок вычислений с плавающей точкой, аппаратную предвыборку данных в кэш-память и усовершенствованную технологию предсказания ветвлений.
Athlon имеет девять исполнительных блоков: три для обработки целочисленных данных, три для вычисления адреса и три блока для вычислений с плавающей точкой и обработки мультимедийных данных (один для загрузки/сохранения данных с плавающей точкой и два конвейерных блока для исполнения команд). Длина целочисленного конвейера составляет 10 стадий, конвейера с плавающей точкой - 15 стадий (в предыдущих моделях FPU не был конвейеризированным). Команда FPU Athlon позволяет одновременно выполнять до двух команд с плавающей точкой.Athlon может декодировать три команды х86 в шесть RISC- операций. После декодирования ROP попадают в буфер, где ожидают своей очереди на выполнение в одном из функциональных блоков процессора. Буфер К7 содержит 72 операции (в три раза больше, чем у Кб) и выдает 9 ROP для 9 исполнительных устройств.
Увеличенная до 2048 позиций таблица предсказания переходов (в два раза больше, чем у Pentium III) и усовершенствованный алгоритм предсказания позволяют давать правильный прогноз в 95 % случаев (у Pentium III всего 90 %).Athlon имеет 128 Кб кэш-памяти первого уровня (64 Кб для данных и 64 Кб для команд). Для взаимодействия с кэш-памятью второго уровня предусмотрена специальная шина (как у архитектуры Р6 Intel). Кэш-память второго уровня размером 512 Кб расположена вне процессорного ядра - в процессорном картридже, и работает на половинной частоте ядра.Использование при производстве процессора Athlon технологии 0,18 мкм с медными соединениями позволило разработчикам разместить на кристалле кэш-память второго уровня размером 256 Кб, работающую на тактовой частоте ядра.Разновидностью микропроцессора с архитектурой К7 стал Duron - бюджетный вариант микропроцессора, ориентированный на дешевые ПК. Основным его отличием является уменьшенная до 64 Кб кэш-память второго уровня. Микропроцессор Duron содержит 25 млн транзисторов на кристалле.
Благодаря примененным в К7 новым архитектурно-техническим решениям микропроцессорам AMD удалось на 7-10% превысить производительность Pentium III при равных тактовых частотах.
Дальнейшее совершенствование архитектуры и технологии производства микропроцессоров в рамках семейства К7 привело к появлению двух новых версий Athlon: Athlon ХР и Athlon MP.
Процессор Athlon ХР имеет целый ряд преимуществ:
-расширен набор инструкций; -благодаря усовершенствованному ядру Athlon ХР потребляет на 20 % меньше мощности, чем Athlon при той же частоте;
-усовершенствован алгоритм предсказания ветвлений; улучшен механизм опережающей загрузки инструкций из основной памяти в кэш; модифицирован буфер преобразования адресов TLB; в процессор встроен термодатчик, позволяющий определять температуру кристалла.
Данный микропроцессор ориентирован на использование в высокопроизводительных персональных компьютерах; и особую эффективность, по мнению разработчиков, он должен проявлять при работе с операционной системой Windows ХР (отсюда и ХР в названии процессора).
Процессор содержит 54,3 млн транзисторов на кристалле. Производился Athlon ХР изначально по технологии 0,18 мкм, а затем -0,13 мкм с использованием медных проводников.
Athlon MP предназначен для использования в серверах и мощных рабочих станциях и предусматривает возможность работы в двухпроцессорной конфигурации.

31. Микропроцессоры АМD с 64-разрядной архитектурой Opteron.
Восьмое поколение процессоров AMD основано на технологии AMD64, которая существенно расширяет традиционную архитектуру х86. В результате не только достигается увеличение общей производительности, но и обеспечиваются масштабируемость и гибкость системы.
Стратегический подход AMD к переходу на 64-битные вычисления основывается на обеспечении совместимости с существующими 32-разрядными приложениями и операционными системами и одновременно возможности использовать 64-разрядные приложения там, где это необходимо.
Сравнительные характеристики архитектуры AMD64 и других 64-битных решений, присутствующих в настоящее время на рынке, приведены в табл. 6.1.
Таблица 6.1
Архитектура AMD64
Другие 64-битные решения

Полная совместимость с существующей архитектурой х86
Набор инструкций несовместим с существующей х86 архитектурой

Высокая производительность в 32-битном и в 64-битном режиме
Низкая производительность в 32-битном режиме

Полная поддержка 16-, 32- и 64-разрядных приложений, работающих одновременно
Поддержка 16- и 32-разрядных приложений только в режиме программной или аппаратной эмуляции

32-битный код работает без изменений. Возможность работы старых приложений с 64-разрядным адресным пространством
Необходимость перерабатывать 32-разрядный код для получения максимальной производительности

Архитектура AMD64 предполагает несколько режимов исполнения кода в зависимости от выполняемой задачи: Long mode и Legacy mode.
Режим Long mode реализует главное преимущество новой технологии и имеет два подрежима: 64-битный режим и режим совместимости.
Режим Long mode имеет следующие особенности:
- 64-разрядное виртуальное адресное пространство и 52-разрядное физическое адресное пространство;
- страничное управление памятью;
- ограниченная поддержка сегментации;
- отсутствие поддержки механизма переключения задач архитектуры х86;
-отсутствие поддержки устаревшего реального режима и режима Virtual-8086; поддержка только 64-битных приложений и 16- и 32-битных приложений защищенного режима.
64-битный подрежим поддерживает все новые возможности процессора:
- 64-разрядная виртуальная адресация;
- расширения регистров, доступные с помощью нового префикса (REX) восьми новых регистров общего назначения (R8-R15);
- расширение всех регистров общего назначения до 64 бит;
- восемь новых 128-битных регистров SSE (ХММ8-ХММ15);
- 64-разрядный указатель команд.
Подрежим совместимости позволяет 64-разрядным операционным системам сохранить полную совместимость с существующими 16- и 32-разрядными приложениями, т.е. возможность исполнять любые приложения без перекомпиляции в 64-разрядной операционной системе. В режиме совместимости приложения имеют доступ к первым 4 Гб виртуального адресного пространства. С точки зрения исполняющегося приложения режим совместимости выглядит как защищенный режим х86. С точки зрения операционной системы трансляция адресов, обработка прерываний и исключений, а также системные структуры данных используют механизмы режима Long mode.
Режим Legacy mode сохраняет полную двоичную совместимость с существующими 16- и 32-разрядными приложениями, операционными системами и существующей 32-разрядной реализацией архитектуры х86.

Новое семейство микропроцессоров с архитектурой AMD64 получило название Hammer (молоток). К нему относятся микропроцессор для персональных компьютеров Claw (коготь) Нат- mer и серверный процессор Sledge (санки) Hammer. Оба процессора производятся по технологии 0,13 мкм с медными соединениями и изолированной подложкой. Микропроцессоры данного семейства являются 64-разрядными, однако, в отличие от архитектуры 1А-64 Intel, обеспечивают совместимость с системой команд х86, в связи с чем архитектура получила название Х86-64.
Основные преимущества архитектуры х86-64 следующие:
- обратная совместимость с инструкциями х86;
- 64-битные версии регистров общего назначения;
- восемь новых РОН, доступных только для 64-битных приложений;
- увеличение объема адресуемой памяти;
- высокая производительность 32-битных приложений, поддержка 64-битных приложений.
Создавая новую архитектуру, разработчики компании AMD стремились повысить производительность микропроцессора не только за счет увеличения тактовой частоты или числа вычислительных блоков, но и за счет повышения степени их загрузки. С этой целью в микропроцессор внесены следующие изменения:
-увеличена длина вычислительных конвейеров: целочисленного конвейера - до 12 стадий, с плавающей точкой - до 17 стадий;
- встроен контроллер памяти;
- усовершенствован блок предсказания ветвлений;
- встроен когерентный интерфейс HyperTransport.
Встроенный когерентный интерфейс HyperTransport обеспечивает возможность использования Hammer в мультипроцессорной конфигурации.
Улучшение блока предсказания ветвлений заключается в выявлении и учете информации о типе ветвлений: статическое ветвление, т.е. адрес перехода не изменяется, или динамическое.
Различия процессоров для одно- и многопроцессорных конфигураций заключаются в основном в размере кэш-памяти второго уровня и числе портов интерфейса HyperTransport.

32. Микропроцессоры с архитектурой Alpha фирмы DЕС.
1. Микропроцессоры Alpha 210бх. Микропроцессоры Alpha являются хорошей иллюстрацией концепции Speed Daemon - достижения высокой производительности за счет увеличения тактовой частоты при относительно простой логике функционирования.
Архитектура микропроцессоров Alpha впервые была представлена в феврале 1992 г. на конференции ISSCC, а уже феврале 1993 г. был выпущен первый из микропроцессоров - Alpha 21064 с тактовой частотой 200 МГц (Микропроцессор Pentium с такой тактовой частотой появился только в 1996 г.).
Благодаря высокой тактовой частоте и высокой степени конвейеризации выполняемых операций (до 10 тактов на операцию) этот микропроцессор надолго занял лидирующее положение по производительности.
Основной областью использования процессора явились высокопроизводительные рабочие станции и серверы.
Следующими в сентябре 1993 г. были выпущены микропроцессоры Alpha 21066 - 166 МГц и Alpha 21068 - 66 МГц. Эти процессоры были ориентированы на использование в более дешевых системах - рабочих станциях нижнего и среднего уровня. Архитектура ядра данных микропроцессоров аналогична Alpha 21064. На кристалле микропроцессоров Alpha 21066/21068 располагались контроллеры: прямого доступа к памяти, графический и шины PCI, что позволяло снизить стоимость и упростить построение систем на их основе.
Выпуск в октябре 1993 г. микропроцессора Alpha 21064А с тактовыми частотами 225 и 275 МГц еще более упрочил позиции микропроцессоров компании DEC как лидеров по производительности.
Микропроцессор Alpha 21064 имеет 64-разрядную суперскалярную RISC-архитектуру с двумя исполнительными конвейерами и может выполнять за один такт до двух команд с фиксированной и плавающей точкой или команду перехода. Блок предсказания перехода обеспечивает вероятность правильного прогноза 0,8.
Микропроцессор содержит на кристалле раздельные кэшпамяти команд и данных, каждая емкостью 16 Кб, 32 регистра с плавающей точкой и 32 регистра с фиксированной точкой. Кэш второго уровня - внешний, может составлять от 128 Кб до 16 Мб. Тактовая частота шины в системе может быть в 2,5-10 раз меньшей, чем частота работы микропроцессора. Ширина внешних шин адреса и данных составляет 43 и 128 бит соответственно.
В микропроцессорах Alpha 21064 не используется сложная логика переупорядочивания команд и переименования регистров. Обеспечение эффективной загрузки исполнительных устройств возлагается на компилятор.
2. Микропроцессор Alpha 21164. Следующим рекордным достижением DEC стал выпуск в сентябре 1994 г. микропроцессора нового поколения Alpha 21164 с тактовыми частотами 266 и 300 МГц. Это был первый микропроцессор, имеющий производительность до 1,2 млрд операций в секунду.

Архитектура этого процессора максимально ориентирована на достижение высокой тактовой частоты.
По сравнению с предыдущим поколением, в Alpha 21164 вдвое увеличилось число исполнительных устройств, а число тактов, требуемых для выполнения команд, уменьшилось.
Четыре команды извлекаются одновременно из кэш-памяти команд объемом 8 Кб и помещаются в один из двух буферов команд, каждый из которых в состоянии хранить четыре команды. Команды извлекаются из буфера в порядке, определяемом программой. Буфер должен быть полностью освобожден, прежде чем начнется использование другого буфера. Это ограничивает пропускную способность выборки команд, однако значительно упрощает управление процессором.
Когда для команды готовы операнды (находятся в файле регистров или могут быть доступны на проходе между операционным устройством и регистровым файлом), команда передается на исполнение в соответствующий ей функциональный блок. Для обеспечения правильной обработки прерываний процессор не меняет порядка исполнения команд: изменение значений регистров происходит в порядке, предписанном программой.
За один такт процессор может исполнять до четырех команд: две с фиксированной точкой, две - с плавающей. Блоки целочисленных операций не идентичны. Один из них может выполнять запоминание, сдвиги и целочисленное умножение, а другой, кроме общих целочисленных команд, обрабатывает условные переходы. Блоки выполнения операций с плавающей точкой также различаются. Блок FPU+ выполняет конвейерное сложение, простое сложение, деление и условные переходы с плавающей точкой, а блок FPUx - конвейерное и простое умножение. Alpha 21164 имеет по 32 регистра для операций с фиксированной и плавающей точками.
Как и в более ранних микропроцессорах Alpha, в Alpha 21164 интенсивно используется конвейеризация. Первые четыре этапа выполнения команды являются общими для всех операций и выполняются в модуле инструкций. Это - предвыборка команды, переход, определение, проверка/подача команды. Блок целочисленных операций добавляет к обработке команд еще три этапа (выполнение 1, выполнение 2 и обратную запись), а блок операций с плавающей точкой - еще пять (доступ к регистрам с плавающей точкой, выполнение операции с плавающей точкой 1, выполнение операции с плавающей точкой 2, выполнение операции с плавающей точкой 3, обратная запись).
В микропроцессоре Alpha 21164, в отличие от предыдущих моделей, блок выполнения обновляет регистры непосредственно, ему не требуется сложный механизм отслеживания команд, обеспечивающий обновление регистров в нужном порядке. Чтобы избежать потерь производительности из-за ожидания завершения команд, Alpha 21164 предусматривает обходные пути, благодаря которым операнды становятся доступными еще до завершения команды. Это аналогично методам посылки данных с упреждением, применяемым в других микропроцессорах.
Помимо раздельных кэш-памятей первого уровня со сквозной записью (write through), на кристалле выполнен общий частично ассоциативный кэш второго уровня с обратной записью (write back) емкостью 96 Кб. На кристалле расположен также контроллер кэш-памяти третьего уровня, позволяющий работать как в синхронном, так и в асинхронном режиме.
Для предсказания ветвлений используется таблица, связанная с кэшем команд. Для каждой команды в кэше имеется элемент таблицы, содержащий историю ветвлений, в элементе таблицы используется двухбитовый счетчик. Предсказывается только один переход. Если при попытке выполнить команду перехода не определено истинное направление перехода предыдущей команды перехода, то выполнение следующей команды ветвления задерживается.
Кэш первого уровня может поддерживать некоторое число необработанных промахов. Процессор имеет шестиэлементный файл адресов необработанных промахов (MAF - miss address file), каждый элемент которого содержит адрес и регистр для загрузки при промахе. Если адреса промаха принадлежат одной строке кэш-памяти, то в MAF они рассматриваются как один элемент. Это позволяет накапливать в MAF больше шести промахов при обращении к кэшу (вплоть до 21).
Использование иерархии кэшей позволило увеличить интенсивность подкачки команд и данных из внешней памяти. Внешняя 128-разрядная шина данных процессора может работать с тактовой частотой до 115 раз меньшей частоты внутренней шины.
В ноябре 1995 г. был выпущен микропроцессор с тактовой частотой 333 МГц. А в марте 1996 г., с переходом на технологию 0,35 мкм, были представлены микропроцессоры Alpha 21164А с тактовыми частотами 366 и 400 МГц.
Дальнейшее развитие микропроцессоров семейства характеризуется увеличением тактовой частоты (в июле 1996 г. выпущен Alpha 21164 с 500 МГц, в марте 1997 г. - 600 МГц), резким снижением (почти в два раза) цены на процессоры, а также поиском путей адаптации архитектуры Alpha для использования в системах Windows NT. До этого архитектура была ориентирована на операционную систему Unix.
3. Микропроцессор Alpha 2126. В мае 1997 г. компанией DEC был представлен микропроцессор нового поколения - Alpha 21264, который значительно превосходит по производительности предыдущих представителей семейства.
В отличие от предыдущих микропроцессоров семейства, наряду с высокой тактовой частотой, в Alpha 21264 используется сложный механизм динамического исполнения команд: динамическое планирование с изменением последовательности команд, переименование регистров, спекулятивное выполнение команд.
Выполнение команды микропроцессора включает следующую шестиступенчатую последовательность:
- выборка команды с учетом предсказания перехода;
- передача данных для команды в устройство переименования (отображения) регистров;
- выполнение переименования (отображения) регистров;
- выбор команды из очередей на выполнение;
- выполнение целочисленных команд или команд с плавающей точкой;
- запись результатов выполнения.
Для динамического исполнения рассматриваются сразу 80 команд - больше, чем у любого другого процессора. После декодирования команда помещается в одну из очередей: к устройствам с фиксированной или плавающей точками. Команды, получившие все операнды, конкурируют за доступ к исполнительным устройствам. Больший приоритет имеют команды, которые дольше находятся в очереди. Одновременно может выполняться до шести команд.
Структура микропроцессора Alpha 21264 похожа на Alpha 21164.
Процессор содержит два блока операций с плавающей точкой, выполняющих сложение, умножение, деление, извлечение квадратного корня, и четыре целочисленных исполнительных устройства: два - общего назначения и два - адресных. Последние, наряду с простыми арифметическими и логическими операциями, выполняют все команды загрузки и сохранения как для целочисленных данных, так и для данных в формате с плавающей точкой. Целочисленные АЛУ общего назначения выполняют арифметические и логические операции, сдвиги и переходы. Одно из целочисленных АЛУ выполняет также умножение, а другое - новый набор команд обработки видеоданных. Для динамического переименования доступны 41 из 80 целочисленных регистров и 41 из 72 регистров с плавающей точкой.
Микропроцессор не содержит кэш-памяти второго уровня, однако размеры его кэш-памятей данных и команд первого уровня увеличены до 64 Кб. На кристалле расположены также контроллер кэш-памяти второго уровня и интерфейс с системной шиной, обеспечивающие пропускную способность 5,3 Гб/с при обмене с кэшем и 2,6 Гб/с при обмене с основной памятью.
DEC ориентировал этот микропроцессор для применения не только в UNIX-системах, но и в системах с 64-разрядной Windows NT и Windows 95.
4. Микропроцессор Alpha 21364. В конце 2002 г. новый микропроцессор 21364 с архитектурой Alpha был выпущен уже фирмой Hewlett-Packard, так как в 1998 г. компания DEC - разработчик архитектуры микропроцессоров Alpha, была куплена фирмой Compaq, которая, в свою очередь, влилась в Hewlett-Packard.
Процессор содержит то же самое ядро, что и Alpha 21264, однако имеет ряд существенных дополнений. В отличие от предыдущего процессора, на кристалле размещены 6-входовая множественно ассоциативная кэш-память второго уровня объемом 1,75 Мб, восьмиканальный контроллер динамической памяти и сетевой интерфейс. Обмен данными между кэш-памятями первого и второго уровней, кэш-памятью второго уровня и оперативной памятью буферизирован (по 16 буферов для каждого уровня памяти).
Благодаря встроенному сетевому интерфейсу упрощается объединение микропроцессоров в высокопроизводительные мультипроцессорные системы. Сетевой интерфейс поддерживает четыре линка со скоростью передачи данных 6,4 Гб/с каждый, обеспечивающие межпроцессорное соединение типа «точка- точка». Он же обеспечивает когерентность кэш-памяти в мультипроцессорной системе, реализует асинхронный обмен данными с адаптивной маршрутизацией. Процессор имеет также пятый порт ввода/вывода со скоростью обмена 3 Гб/с, который может использоваться для подключения коммутатора.
Пример структуры микропроцессорной системы на основе микропроцессоров Alpha 21364 показан на рис. 7.2.

Рис. 7.2. Структура МПС на основе микропроцессоров Alpha 21364
В дальнейших планах Compaq значился выпуск нового мультитредового микропроцессора Alpha 21464 по технологии 0,13 мкм, однако впоследствии компания полностью переключилась на поддержку разработки архитектуры IA-64 и объявила о намерении прекратить разработку и использование процессоров Alpha к 2004 г. Ключевые программные инструменты и процессорные технологии были переданы фирме Intel, что впоследствии привело к появлению микропроцессоров Itanium.

33. Микропроцессоры с архитектурой SPARC фирмы Sun Microsystems.
Семейство процессоров с архитектурой SPARC включает 32-разрядные микропроцессоры MicroSPARC, Super SPARC, HiperSPARC и целый подкласс 64-разрядных микропроцессоров UltraSPARCxx. Традиционно системы на основе SPARC микропроцессоров - это высокопроизводительные рабочие станции для научных расчетов и Unix-серверы. Архитектура SPARC была создана компанией Sun Microsystems в 1985 г. В ее основу положены результаты работ RISC I и RISC II, проводившиеся в Калифорнийском университете в Беркли с 1980 по 1982 г. В частности, в архитектуру SPARC вошла предложенная в Беркли концепция «регистровых окон», упрощающая создание однопроходных компиляторов и существенно снижающая количество команд обращения к памяти по сравнению с другими реализациями RISC-архитектуры. Основными чертами архитектуры SPARC являются:
- поддержка линейного 32-разрядного адресного пространства;
- использование 32-разрядных команд фиксированной структуры с тремя базовыми форматами;
- реализация доступа к памяти и пространству ввода/вывода посредством команд загрузки/сохранения;
- небольшое количество способов адресации (либо «регистр - регистр», либо «регистр - непосредственный операнд»);
- использование трехадресных регистровых команд, когда команда выполняется над двумя операндами, а результат помещается в регистр-приемник;
- большой регистровый файл с регистровыми окнами, что позволяет значительно сократить накладные расходы, связанные с переключением контекста при выполнении параллельных процессов; в каждый момент времени программе доступно восемь глобальных целочисленных регистров и регистровое окно (24 регистра), отображаемое на регистровый файл;
- отдельный регистровый файл вещественных регистров, который может интерпретироваться в программах как набор из 32 регистров обычной точности (32 бита) или 16 регистров двойной точности (64 бита), или восьми регистров учетверенной точности (128 бит), или как смесь регистров различной разрядности;
-отложенная передача управления, когда процессор всегда выбирает команду, следующую за командой передачи управления; она может быть выполнена или не выполнена в зависимости от состояния «аннулирующего» разряда в команде передачи управления;
- быстрые обработчики прерываний;
- команды межпроцессорной синхронизации - одна команда выполняет непрерываемую операцию «чтения с последующей записью», другая команда - «непрерываемый обмен содержимого регистра и памяти»;
- поддержка сопроцессора, который может использоваться наряду с АЛУ;
- двоичная совместимость программ пользователей на всех реализациях SPARC, т.е. готовые программы должны вести себя совершенно одинаково на всех SPARC-системах.
Любой процессор с архитектурой SPARC может работать попеременно в одном из двух режимов: пользовательском и привилегированном. В привилегированном режиме процессор выполняет все команды, включая привилегированные. В пользовательском режиме попытка выполнения привилегированных команд вызывает прерывание с передачей управления специальной системной программе.
Конкретная аппаратная реализация целочисленного устройства может содержать от 40 до 520 32-разрядных регистров общего назначения. Регистровый файл целочисленного устройства разбит на группы из восьми глобальных регистров и циклического стека, содержащего от двух до 32 наборов (регистровых окон) по 16 регистров в каждом. В каждый момент времени исполняемой программе доступны восемь глобальных регистров и регистровое окно размером в 24 регистра.
Регистры окна разбиты на три группы: восемь входных регистров, восемь локальных и восемь выходных регистров, которые в то же время являются входными регистрами смежного окна, т.е. соседние окна перекрываются на восемь регистров. Текущее окно задается полем указателя текущего окна в слове состояния процессора.
Архитектура SPARC поддерживает три основных типа данных:
-знаковое целое - 8, 16, 32 и 64 разряда;
-беззнаковое целое - 8, 16, 32 и 64 разряда;
-вещественное - 32, 64 и 128 разрядов.
Микропроцессоры UltraSPARCxx являются «старшими» представителями семейства, которые позволили существенно увеличить возможности SPARC-систем по обработке графики и видеоизображений. UltraSPARC стал одним из первых универсальных процессоров, в котором эти функции реализованы аппаратно. Он имеет специальный модуль для обработки видеоданных и графики. Функции обработки видеоизображений могут работать сразу с восемью элементами изображения. Обработка изображений выполняется в блоке FPU, который обычно выполняет операции над 64-битовыми данными с плавающей точкой. В этом блоке выполняются логическое сложение и умножение элементов изображения. В систему команд микропроцессора включен набор команд (VIS - Visual Instruction Set), позволяющий загружать и обрабатывать данные в виде 64-битовых блоков. VIS насчитывает 30 команд для эффективной обработки мультимедиа, графики, изображений и других алгоритмов, ориентированных на целочисленную обработку. Команды VIS включают в себя сложение, умножение и вычитание, что позволяет параллельно выполнять за один такт до восьми целочисленных операций над байтами или полусловами.
UltraSPARC имеет также несколько специальных средств, улучшающих его работу с памятью. Это повышает производительность программ мультимедиа и других системных задач. Самым крупным изменением является новая команда перемещения блока данных по шине «процессор - память» со скоростью 600 Мб/с. Это позволяет основному процессору работать как видеопроцессор, передавая данные с экрана на экран. Перемещение блока можно с выгодой использовать и в других приложениях, например в сетевом программном обеспечении для перемещения пакетов данных.
Команды сохраняются в кэше и для ускорения обработки предварительно декодируются. Каждые две инструкции в кэше ассоциируются с двумя битами, которые используются для предсказания переходов. Два бита позволяют отслеживать четыре различных состояния, кодирующих последние два перехода, выполняемых по этим командам. Механизм предвыборки использует эти биты для динамического упреждения переходов. UltraSPARC способен предсказывать переход с вероятностью около 0,9.
Обрабатывающий конвейер UltraSPARC имеет девять этапов и позволяет выполнять до четырех команд за один такт. Первые два этапа стандартные - это выборка и декодирование команд. На третьем этапе группируются все команды, которые можно передать следующему блоку. Микропроцессор не изменяет порядка выполнения этих команд. Задача планирования загрузки исполнительных модулей решается статически на этапе компиляции. В каждом такте могут выбираться на выполнение две целочисленные команды, две команды с плавающей точкой или графические команды, одна команда загрузки/записи в память или одна команда перехода. Таким образом, при шести возможных командах одновременно могут выполняться лишь четыре. На этом же этапе происходит получение информации из регистров.
После выбора команды конвейер разделяется на две части. Одна ветвь обрабатывает целочисленные команды и команды работы с памятью, а другая - команды с плавающей точкой и графические команды. Команды с плавающей точкой передаются в трехэтапный конвейер, который выполняет всю обработку, кроме деления с плавающей точкой и вычисления квадратного корня. Эти функции выполняет отдельный блок. Хотя микропроцессор подает команды поочередно, результаты не обязательно поступают в том же порядке.
Базовые целочисленные команды выполняются за один такт. Другие, такие как целочисленное умножение и деление, могут иметь переменную длительность. Остальные этапы целочисленного конвейера выполняют загрузку/запись в память.
Для получения высокой пропускной способности UltraSPARC использует иерархию шин. 128-разрядная шина памяти работает с тактовой частотой самого процессора. Для выполнения ввода-вывода на периферийные устройства используется шина SBus. Sun Microsystems реализует интерфейс с этой шиной на аппаратном уровне с помощью микросхемы коммутации магистрали, входящей в набор микросхем процессора. Она позволяет изолировать шину памяти от шины ввода-вывода и выполнять операции чтения из памяти одновременно с вводом- выводом на периферийные устройства. В результате достигается высокий коэффициент использования шины и пропускная способность 1,3 Гбит/с.
Следующий представитель семейства микропроцессор UltraSPARC III, в отличие от предыдущих моделей, требующих учета их архитектурных особенностей на уровне операционной системы, совместим со всеми операционными системами и приложениями, созданными для SPARC процессоров.
Новый микропроцессор UltraSPARC Т1 с технологией CoolThreads позволяет снизить энергопотребление систем центров обработки данных, существенно повышая при этом их производительность. Поддерживая выполнение сразу 32 потоков и потребляя примерно столько же энергии, сколько потребляет обычная лампочка, он обеспечивает высокий уровень производительности и низкий уровень энергопотребления в одно и то же время.
Микропроцессор поддерживает до восьми вычислительных ядер, каждое из которых может выполнять четыре потока.
Сверхнизкое энергопотребление значительно снижает тепловыделение процессора, повышая надежность и облегчая реализацию охлаждения систем центров обработки данных.
Микропроцессор UltraSPARC Т1 имеет следующие параметры:
- множественно ассоциативный кэш команд первого уровня по 16 Кб на каждое ядро;
- множественно ассоциативный кэш данных с четырьмя каналами по 8 Кб на одно ядро;
- интегрированная множественно ассоциативная кэш-память второго уровня с четырьмя каналами емкостью до 3 Мб;
- поддержка шифрования с открытым ключом (RSA);
- 48-разрядное виртуальное и 40-разрядное физическое адресное пространство;
- поддержка четырех размеров страниц: 8 Кб, 64 Кб, 4 Мб и 256 Мб;
- поддержка версий с 4, 6 и 8 ядрами;
- четыре 144-разрядных интерфейса памяти;
- исправление 4-битных ошибок, обнаружение 8-битных ошибок;
- 128-разрядная шина адреса/данных;
- технология 90-нанометровая.
Дальнейшее развитие данной линии в виде микропроцессора UltraSPARC Т2 представляет собой фактически уже целую вычислительную систему, выполненную на одном кристалле и реализующую серверные функции вычислений, сетевого администрирования, обеспечения безопасности и ввода/вывода.
Микропроцессоры с архитектурой MAJC, разработанной компанией Sun, предназначены для использования в системах обработки мультимедийных данных и выполнения Internet- приложений.
Первый микропроцессор с данной архитектурой MAJC 5200 был выпущен в середине 2000 г. Он представляет собой два 128-разрядных VLIM (Very Long Instruction Word) микропроцессорных ядра, интегрированных на одном кристалле.
В микропроцессоре реализовано четыре уровня параллелизма:
- мультипроцессорная структура кристалла;
- мультитредовое выполнение программы;
- VLIM-параллелизм на уровне команд;
- SIMD-обработка данных.
Система команд RISC-процессоров ориентирована на поточную обработку мультимедийной информации и аппаратную поддержку высокоуровневых конструкций языка Java. Аббревиатура MAJC образована от «Microprocessor Architecture for Java Computing» (микропроцессорная архитектура для вычислений на языке Java).Архитектура MAJC является масштабируемой. На одном кристалле MAJC может располагаться несколько идентичных процессоров (в зависимости от конкретной реализации), каждый из которых содержит от одного до четырех функциональных блоков - RISC-процессоров и кэш-команд. Каждый из расположенных на кристалле процессоров может выполнять до четырех команд за один такт.
Командное слово MAJC объединяет от одной до четырех 32-разрядных команд, каждая из которых предназначена для одного из четырех RISC-процессоров. В том случае, когда не представляется возможным одновременно задействовать все четыре RISC-процессора, отдельные команды могут отсутствовать, поэтому командное слово MAJC может иметь переменную длину. Для указания количества команд в слове используются его первые два разряда: 00 - одна команда; 01 - две команды; 10 - три команды; 11 - четыре команды. Назначения команд осуществляются в порядке номеров функциональных блоков.

34. Перспективы развития универсальных микропроцессоров.
Рассмотрение конкретных семейств микропроцессоров разных производителей дает возможность выделить три общих тенденции развития универсальных микропроцессоров:
1. повышение тактовой частоты;
2. увеличение объема и пропускной способности подсистем памяти;
3. увеличение количества параллельно функционирующих исполнительных устройств и распараллеливание вычислений.
Совокупная реализация в одном микропроцессоре рекордных значений по всем этим тенденциям невозможна:
1. из-за фундаментальных физических ограничений;
2. из-за ограничений технологического процесса изготовления;
3. из-за экономических ограничений на стоимость одного микропроцессора и микроэлектронного производства в целом.
Поэтому каждый конкретный тип микропроцессора есть результат многих компромиссов, принятых его создателями.
Повышение тактовой частоты
Основной проблемой, возникающей при «простом арифметическом» увеличении тактовой частоты, является разогрев кристалла за счет сопротивления в проводниках и отвод тепла. Поэтому для повышения тактовой частоты работы современных микропроцессоров используют:
а) более совершенный технологический процесс с меньшими проектными нормами;
б) увеличение числа слоев металлизации;
в) усовершенствованную схемотехнику меньшей каскадности и более плотную компоновку функциональных блоков кристалла.
Все эти приемы ориентированы на снижение сопротивления в проводниках за счет уменьшения уровней питающих напряжений, на сокращение длины проводников, что в конечном итоге ведет к уменьшению рассеиваемой на кристалле мощности. Рассмотрим эти методы более конкретно.
а) Технологические проектные нормы при изготовлении кристаллов микропроцессоров неуклонно снижаются, что позволяет, в свою очередь, сократить диапазоны питающих напряжений и тем самым увеличить тактовую частоту при определенном уровне рассеиваемой мощности.
б) Одним из путей уменьшения длины межсоединений на кристалле является увеличение числа слоев металлизации. В этом случае «вертикальное» расположение по отношению друг к другу функциональных узлов схемы минимизирует пути прохождения сигналов между ними.
в) Существенную долю длительности такта занимает время прохождения сигналов по проводникам внутри кристалла. Поэтому многие производители предпринимают специальные меры по кластеризации обработки, призванные локализовать взаимодействующие элементы микропроцессора. В этом случае наиболее активный обмен сигналами осуществляется только на небольшой части кристалла, сокращая общую длину трактов передачи данных
Увеличение пропускной способности подсистем памяти
Спектр возможных решений по увеличению пропускной способности подсистем памяти, снабжающей функциональные устройства процессора работой, включает:
- создание кэш-памятей одного или нескольких уровней;
- увеличение пропускной способности интерфейсов между процессором и кэш-памятью, а также между процессором и основной памятью.
Наиболее часто используемое решение состоит в реализации иерархии кэшей. Как правило, на кристалле располагаются раздельные кэш-памяти первого уровня для данных и команд с емкостью в 16 Кб или 32 Кб каждая. Мощные процессоры имеют на кристалле и объединенную кэш-память команд и данных второго уровня, емкость которой может составлять от нескольких сотен килобайт до нескольких мегабайт. Кроме этого, как правило, в схему микропроцессора включается интерфейс, позволяющий подключать кэш-память третьего (или второго) уровня.
Скорость передачи данных определяется количеством передаваемой информации в байтах за единицу времени, поэтому совершенствование интерфейсов реализуется как увеличением пропускной способности шин (путем повышения частоты работы шины и/или ее ширины), так и введением дополнительных шин, «расшивающих» конфликты между процессором, кэшпамятью и основной памятью. В последнем случае одна шина работает на частоте процессора с кэш-памятью, а вторая - на частоте работы основной памяти.
Повышение степени внутреннего параллелизма и распараллеливание вычислений
Каждое семейство микропроцессоров демонстрирует в следующем поколении увеличение числа функциональных исполнительных устройств и улучшение их характеристик, как временных
В настоящее время процессоры могут выполнять до 6-10 операций за такт, при этом длина конвейера может составлять от 6 до 17 (микропроцессоры с архитектурой AMD64) этапов.
Для того чтобы загрузить функциональные исполнительные устройства в суперскалярной архитектуре, используется:
- переименование регистров;
- предсказание переходов;
-устранение зависимости между командами по данным и управлению.
Устоявшихся решений в этой области практически нет, так как каждый микропроцессор демонстрирует изобретательность его создателей по симбиозу аппаратных средств и компилятора для статического и динамического устранения зависимостей между командами.
В микропроцессорах с явно параллельным выполнением команд количество одновременно функционирующих конвейеров от модели к модели растет, что можно объяснить постоянно растущими технологическими возможностями.











13 EMBED Visio.Drawing.11 1415



"Рисунок 4"Рисунок 35Рисунок 7Рисунок 1Рисунок 3Root Entry

Приложенные файлы

  • doc 8981728
    Размер файла: 3 MB Загрузок: 0

Добавить комментарий