Современные микропроцессоры. Современные микропроцессоры Особенности архитектуры MIPS компании MIPS Technology

  • Дата: 30.11.2021

Современные микропроцессоры - это сложные устройства, отличающиеся друг от друга построением, системой команд и математическим обеспечением. Поэтому дать конкретные подробные рекомендации использования анализатора Для конкретного типа микропроцессора не представляется возможным. [1 ]

Конструктивно современный микропроцессор представляет собой сверхбольшую интегральную схему, реализованную на одном полупроводниковом кристалле - тонкой пластинке кристаллического кремния прямоугольной формы площадью всего несколько квадратных миллиметров. На ней размещены схемы, реализующие все функции процессора. Кристалл-пластинка обычно помещается в пластмассовый или керамический плоский корпус и соединяется золотыми выводами с металлическими штырьками, чтобы его можно было присоединить к системной плате компьютера. [2 ]

Архитектуре присущи многие особенности. Одна из них состоит в том, что команды и данные хранятся в одном и том же запоминающем устройстве. Для большинства систем это необходимо, так как в них с помощью определенных средств разработки программ осуществляется обмен команд и данных. Например, загрузчик производит загрузку программы, хранимой во внешнем запоминающем устройстве, в память и для этого должен интерпретировать ее как данные. Однако в широко распространенных приложениях, таких, как кассовые аппараты и системы автомобильного зажигания, средства разработки резидентных программ отсутствуют и программы никогда не смешиваются с данными. Поэтому в некоторых микроконтроллерах, например MCS-48, команды и данные хранятся в разных запоминающих устройствах; команды таких микроконтроллеров не позволяют производить обращение к ячейкам памяти, в которых хранится программа, как к ячейкам с данными. [3 ]

В на аппаратном уровне реализована схема зашиты, использование которой операционной системой позволит адекватно реагировать на ошибки и аварийные ситуации в прикладных программах, исключив доступ к критически важным системным элементам, обеспечить надежную работу нескольких приложений в случае возникновения ошибки в одном из них. [4 ]

В современных микропроцессорах используется, как правило, одинаковое напряжение питания. Обычно источником питания для микропроцессора является источник постоянного тока напряжением 5 В. Для подключения этого источника используются два вывода микропроцессора: на один из них подается напряжение 5 В, второй вывод заземляется. В некоторых микропроцессорах предусматриваются еще два вывода, предназначенные для подачи напряжений питания 12 и - 5 В. [5 ]

Для архитектуры современных микропроцессоров характерно наличие единого адресуемого пространства памяти, которое называется основной памятью. [6 ]

Микропроцессор КР580ИК80 является одним из самых простых среди семейства современных микропроцессоров . [7 ]

В настоящее время проявляется тенденция к усложнению стековых структур данных современных микропроцессоров . Для обеспечения их гибкости стек в общем случае должен иметь иерархическую структуру, хотя на уровне базисной системы команд целесообразно реализовать только одно -, двух - или трехстековую структуру. [8 ]

Во-первых, это недостаточно полная (т.е. не отражающая всех функций современных микропроцессоров ) функциональная модель самого микропроцессора. [9 ]

Скорость вращения дисков, достигающая 10000 об / м, и тактовые частоты современных микропроцессоров , составляющие 100 МГц и выше, позволяют без особых проблем справиться с формированием проверочных кодов в RAID. Шины передачи данных между процессором и устройствами хранения данных поддерживают пропускную способность на уровне 100 Мбайт / с, что также разрешает проблемы, связанные с сетевым доступом к дисковым массивам. Кроме того, некоторые шины, например, FC-AL, имеют интерфейс сетевых протоколов TCP / IP, FDDI, ATM, что позволяет подключать устройства хранения данных непосредственно к сетям. [10 ]

Вообще, период второй половины 50 - х годов был чрезвычайно интересным и богатым на фонтанирование идей, сохранившихся и в современных микропроцессорах , но чаще под другими названиями, и воспринимаемых молодым поколением как нечто совершенно новое. [11 ]

Действительно, если признанная как первая большая ЭВМ Эниак (1946 год) занимала площадь около 90 м2 и весила более 30 тонн, то современный микропроцессор , способный вместить все электронное оборудование такой машины, имеет площадь всего 1 5 - 2 см2, обеспечивая при этом такую вычислительную мощность, которая превышает суммарную вычислительную мощность всех ЭВМ, имевшихся в мире в середине 60 - х годов. Первая ЭВМ содержала около 17 тысяч электронных ламп, а сейчас такое количество электронных компонентов технологии 0 15 мкм позволяют разместить в срезе человеческого волоса. [12 ]

С помощью специальной утилиты ехе - и dll - файлы сдвигаются в пределах занимаемого ими пространства таким образом, чтобы обеспечить реальное соответствие страничной организации памяти, реализуемой. [13 ]

Из-за невозможности внесения в MS DOS необходимых принципиальных усовершенствований фирма Microsoft оказалась вынужденной создавать новые ОС (Windows, Windows NT, Windows 95 и др.), обеспечивающие надлежащий сервис для пользователей и разработчиков, поддерживающие одновременную работу нескольких программ, средства защиты данных и позволяющие эффективнее использовать возможности современных микропроцессоров . [1 ]

Современные микропроцессоры выполняют функции малых ЭВМ. Они применяются в автоматических устройствах цифрового контроля и управления, регуляторах, системах телемеханики и телеавтоматических комплексах. [2 ]

МП 80286 и выше имеется возможность многозадачной работы (многопро-граммность) и сопутствующая ей защита памяти. Современные микропроцессоры имеют два режима работы. [3 ]

Обе части МП работают параллельно, причем интерфейсная часть опережает операционную, так что выборка очередной команды из памяти (ее запись в блок регистров команд и предварительный анализ) происходит во время выполнения операционной частью предыдущей команды. Современные микропроцессоры имеют несколько групп регистров в интерфейсной части, работающих с различной степенью опережения, что позволяет выполнять операции в конвейерном режиме. Такая организация МП позволяет существенно повысить его эффективное быстродействие. [4 ]

Первые микропроцессоры были выполнены на р - МОП-схе-мах. Современные микропроцессоры выполняются на и - МОП-схемах, имеющих низкую стоимость и среднее быстродействие, на предельно-маломощных КМОП-схемах и на ТТЛ-схемах с высоким быстродействием. [5 ]

Глубина допустимого уровня вложения подпрограмм зависит от типа вычислительной машины и используемого языка программирования. Большинство современных микропроцессоров и языков программирования допускает многоуровневое вложение. [6 ]

Что касается операций над числами с плавающей точкой и других специальных сложных операций, то в системах на базе первых процессоров их реализовали последовательностью более простых команд, специальными подпрограммами, однако затем были разработаны специальные вычислители - математические сопроцессоры, которые заменяли основной процессор на время выполнения таких команд. Всовременных микропроцессорах математические сопроцессоры входят в структуру как составная часть. [7 ]

Рассматриваемые здесь способы адресации памяти следующие: с индексированием; относительный и способ адресации данных, хранимых в стеке, с помощью указателя стека. Во многих современных микропроцессорах используется либо первый, либо второй указанный способ. Почти каждый микропроцессор располагает стековым способом обращения к данным с помощью указателя стека. [8 ]

Микропроцессор реализуется на одном или нескольких кристаллах полупроводника и обычно состоит из арифметического устройства и устройства управления. По структурным решениям современный микропроцессор обеспечивает обработку информации по определенной задаваемой в каждом случае применения программе и программное управление, необходимое для выполнения различных функций прибора. [9 ]

Очевидно, в скором времени нас ожидают изменения в этой области и переход на 32-разрядные операционные системы. При этом будет наконец реализован ряд важных свойств современных микропроцессоров , таких, как защищенный режим работы, многозадачность, одноранговая (плоская) модель памяти, станет возможна многопотоковость, многопроцессорная и сетевая работа на различных аппаратных платформах. [10 ]

Важная особенность данного метода состоит в том, что задан-н (ые графические изображения перед выводом на дисплей должны быть разложены на соответствующие наборы элементарных векторов. Эту операцию можно выполнять с помощью основной ЭВМ, однако современные микропроцессоры позволяют осуществить ее более рационально на дисплейном терминале. В этом случае дисплейный терминал имеет две памяти, одну для обычного дисплейного файла и вторую для регенераци изображения, причем в по-йледней находятся координаты концов элементарных векторов или коды литер для каждой из ячеек. Как для основной ЭВМ, так и для программиста такая система ничем не отличается от векторного дисплея с управляемым лучом, за исключением более низкой разрешающей способности. [11 ]

Указанные негативные явления в области производства средств ВТ на государственных предприятиях России были вызваны прежде всего отсутствием необходимой элементной базы, соответствующей современному мировому уровню. Электронная промышленность России в условиях распада СССР по ряду причин оказалась неспособной быстро осваивать и развивать массовое производство современных микропроцессоров и микросхем для памяти большой емкости. [12 ]

Для формирования цифровых значений активной мощности необходимо численное интегрирование за период изменения мгновенной мощности полученной последовательности чисел. Перемножение, задержка и суммирование при численном интегрировании - типовые операции процессоров цифровых ЭВМ и при промышленной частоте выполняются современными микропроцессорами в реальном времени. При этом необходимое для цифровых измерительных преобразователей мощности время преобразования в цифровой сигнал активной и реактивной мощностей практически составляет половину и три четверти длительности периода промышленной частоты. Известны некоторые результаты исследований по реализации и более быстродействующих цифровых измерительных преобразователей мощности. [13 ]

Для формирования цифровых значений активной мощности необходимо численное интегрирование за период изменения мгновенной мощности полученной последовательности чисел. Перемножение, задержка и суммирование при численном интегрировании - типовые операции процессоров цифровых ЭВМ, которые при промышленной частоте выполняются современными микропроцессорами в реальном времени. [14 ]

Какие требования предъявляются к источникам питания микропроцессоров. Укажите, какая потребляемая мощность характерна для современных микропроцессоров . [1 ]

Полупроводниковые приборы и микросхемы непрерывно совершенствуются. Улучшаются их параметры, кроме того, растет степень интеграции микросхем и усложнаются их функции. Ярким примером этой тенденции являются микропроцессорные комплекты интегральных микросхем. Современные микропроцессоры фактически представляют собой ЭВМ на кристалле. [2 ]

Несомненно, рекурсивный вариант программы более компактный, однако многократный вызов функции, использующийся в любом рекурсивном алгоритме, заметно снижает его быстродействие. Поэтому использование цикла более приемлемо с точки зрения скорости выполнения. Кроме того, благодаря оптимизации арифметических операций в большинстве современных микропроцессоров превосходство нерекурсивных алгоритмов в скорости становится все более очевидным. [3 ]

Современные достижения в области микроэлектроники позволили в настоящее время проектировать и серийно выпускать так называемые микропроцессоры. Микропроцессор по выполняемым функциям аналогичен процессору универсальной ЭВМ, реализуется он обычно на одной или нескольких больших микросхемах с высокой степенью интеграции. Функции микропроцессора задаются соответствующим набором выполняемых команд, записанных в постоянном запоминающем устройстве. Микропроцессор характеризуется также некоторым объемом регистровой памяти, разрядностью обрабатываемой информации и другими параметрами. Имеются микропроцессоры с наращиваемой и постоянной разрядностью. Длясовременных микропроцессоров число выполняемых операций достигает 100 и более, причем предусматриваются операции с двойной длиной слова и побайтовой обработкой информации. Кроме того, микропроцессор комплектуется общим программным обеспечением, которое хранится в постоянном запоминающем устройстве на интегральных микросхемах. [4 ]

Рассмотрение материала проводится на базе некоего гипотетического микропроцессора. Это объясняется несколькими причинами, Прежде всего следует отметить, что большинство микропроцессоров, выпускаемых промышленностью, слишком сложно, чтобы служить основой для ознакомления с принципами построения и функционирования этих устройств. Однако овладевание указанными общими принципами делает доступным освоение микропроцессоров любого типа и модели. Более того, всегда есть опасность, что такой микропроцессор останется для изучающего наиболее предпочтительным. Что же касается выбранного здесь гипотетического микропроцессора, то некоторые его характеристики нельзя найти ни у одного современного микропроцессора . Прогнозировать же их у будущих моделей автор не берется, поскольку слишком быстро происходит в наше время смена техники и технологии. [5 ]

Однако когда речь идет о борьбе с детонацией, то имеют в виду форсированные режимы, при которых опасность детонации особенно велика. А правильно ли это, если более 80 % топлива сгорает во время стабильной работы двигателя, когда вовсе не нужны высокие антидетонационные характеристики и можно обойтись низкооктановым бензином. Не забиваем ли мы гвозди скрипкой. Так родилась мысль о разделении топлива на два бака: один поменьше, для высокооктановой добавки, а другой побольше, для обычного низкооктанового бензина. Весь вопрос в дозировке, в подаче этих потоков в соотношении, точно соответствующем характеру работы двигателя в данный момент. Понятно, что и дозировка, и карбюрация должны в таком двигателе регулироваться с точностью ювелирной. Эту заботу могут взять на себясовременные микропроцессоры в сочетании с ЭВМ. [6 ]

Этой публикацией мы начинаем цикл переводов замечательных статей, популярно рассказывающих о принципах работы современных микропроцессоров.

Современные процессоры вобрали в себя так много технологий, что за улучшениями и надстройками легко можно потерять из виду те принципы, которые сегодня лежат в основе современных компьютерных технологий. Будем начинать с основ, вернувшись во времена технического превосходства процессоров DEC Alpha и выхода на рынок AMD Athlon.

Все новое – хорошо развитое старое

Вы когда-нибудь задавались вопросом, почему процессоры Alpha способны достигать столь высоких скоростей? Почему ядро Intel P6 сможет достичь 800 МГц и более а ядро К6 скорее всего никогда? И почему AMD утверждает что ядро К7 рассчитано на высокие частоты?

Ну что же, пора выяснить, в чем дело. Эта статья представляет собой первую в серии статей, целью которой является разъяснить, что же делает процессор быстрым. Мы пристально взглянем под панцирь этим цифродробилкам. Поверьте, там есть на что посмотреть. И не беспокойтесь: цель этой статьи объяснить, а не забросать умными словами. Так что вперед!

Процессоры 5-7 поколения. Они уже такие разные...

Довольно занятно: в то время как процессоры Alpha "летали" на умопомрачительной тогда скорости в 700 МГц, AMD были все еще на 450 МГц, а Intel только-только добрался до 500 МГц. Это различие становится еще более заметным, если учесть тот факт что Alpha достигала 533-600 МГц еще на 0,35 мкм процессорах! AMD и Cyrix никогда не могли выжать из своих 0,35 процессоров больше чем 233 МГц. Так что больше не позволяйте кому-то говорить вам что все зависит от тех процесса!

Как получить высокие частоты

На вопрос, почему некоторые процессоров быстрее чем другие, обычно получаешь три ответа:
1) Лучшие производственные возможности (передовые технологии, более тонкий тех процесс)
2) Меньший размер процессора и более низкая теплоотдача.
3) Более глубокие конвейеры

А теперь, давайте посмотрим на цифры:

Процессор Год запуска Техпроцесс,мкм Размер кристалла,мм2 Макс. частота, МГц Spec Int 95 Spec FP 95
Intel P II 97 0,35 203 300 11,9 8,6
AMD K6 97 0,35 168 233 7,1 3,9
Sun UltrSparc lli 98 0,35 156 360 15,2 19,9
DEC Alpha 21164 95 0,5 299 333 9,8 13,4
DEC Alpha 21164a 97 0,35 209 600 18,4 21,4
DEC Alpha 21264 98 0,25 302 667 40 60
HP PA-RISC 8200 97 0,5 345 220 15,5 25

Хотя DEC обычно сама производила свои процессоры Alpha, последнее время (до продажи процессорного бизнеса легендарной компании корейскому Samsung’у) кристаллы для DEC производились на фабриках Intel, производственный процесс которых был лучше. Процессоры на 0,25 мкм тех процессе появились у Intel заметно раньше, чем у DEC. Опять же, как мы уже отмечали, Alpha работали намного быстрее.

Малый размер кристалла? Но кристаллы процессоров Alpha и HP просто огромны! И это не мешает им обходить намного более меньшие по размерам процессоры от Intel и AMD (используя такой же тех процесс, конечно).

Winchip IDT был очень мал, и процессоры AMD всегда были меньше их аналогов от Intel. Но совсем не помогло им в противоборстве с Intel. Выходит, что не все зависит от производственного процесса.

Глубокий конвейер? Это ни о чем не говорящий ответ. Как может глубокий конвейер помочь достичь высоких мегагерц? И вообще, что из себя представляет глубокий конвейер?

Ваш первый микропроцессор

Чтобы ответить на наши вопросы нам придется собрать свой собственный маленький процессор. Первое что вам следует узнать, это то, что главные события в процессоре разворачиваются в так называемом "Арифметико-Логическом Устройстве" или просто АЛУ. Это именно тот отдел процессора где происходит непосредственно обработка данных. Данные же, АЛУ получает из регистров.

Оно считывает данные из регистров, производит определенные вычисления (например, сложение, вычитание, увеличение на единицу, логическое "или", и т.д.), а затем заносит результаты вычислений обратно в регистры. Впоследствии эти данные (посредством кэша) возвращаются в основную память.

Таким образом, можно сделать вывод, что регистры должны быть очень быстрыми, иначе АЛУ будет простаивать во время записи и считывания данных.

Итак, в течении всего одного такта мы и считываем данные с регистра, и записываем их в него! Другими словами, если у вас, положим, в регистре Z хранится число X, а АЛУ, по инструкции, следует, скажем, прибавить к нему единицу, то возможно записать число ответ в тот регистр. Хм, и неужели это пройдет без проблем? Вообще-то говоря, не совсем. Давайте, тогда, разбираться что же делает процессор в течении такта.

Как известно, все современные микропроцессоры являются синхронными. Иными словами там есть счетчик, который регулярно посылает сигналы, представляющие собой, в идеале, чередование прямоугольных импульсов. При "падении" импульса мы выставляем затворы регистров (черные и синие стрелки), делается это для того, чтобы данные, поступающие из L1 кэша (синие стрелки указывающие на регистры) записались в верный регистр. Помимо этого, если, вы обратили внимание, на рисунке изображены четыре горизонтальных стрелки слева от АЛУ. Это – шина команд. По ней передаются инструкции для АЛУ. (На нашем процессоре мы можем сделать до 2^4=16 различных команд). На все это уходит очень малое время Dsignal. Оно занимает лишь небольшую часть такта.

Затем надлежащие данные следует отправить по шине (красно-желтая стрелка) в АЛУ. На доставку также уходит некоторое время (DB), так как прежде чем АЛУ начнет производить вычисления, значения чисел в регистрах должны хорошо установиться.

Коль скоро все выполнено, АЛУ приступает к работе. После вычислений (DАЛУ) результаты передаются шине данных регистров (еще DR). При "подъеме" следующего импульса они загружаются в регистры.

В этом заключается основная концепция современных микропроцессоров: в каждом цикле есть сигнал, который переключает определенные триггеры. Например, в регистры можно загружать данные лишь в начале ("подъеме") импульса, а считывать только в конце (загрузка в это время блокируется). Именно поэтому АЛУ может в течении(?) одного цикла и считать, и записать данные в регистр.

Сказанное выше поможет ответить нам на наш изначальный вопрос: как получить высокую тактовую частоту. Ясно что, высокая частота значит малое время между последовательными импульсами. Ясно также (см. рис.), что это время не может быть меньше чем сумма времен DSig, D B, DALU, и D R (плюс еще немного, для подстраховки). В противном случае, может оказаться так, что мы, например, начнем загружать новые данные, прежде чем результаты будут соответствующим образом занесены в регистры.

Итак, если мы способны уменьшить какой-нибудь из D , мы сможем увеличить частоту. Три возможных способа:
1) Сделать так, чтобы данные шли через процессор быстрее.
2) Сократить время вычислений.
3) Делать как можно меньше операций в течении одного цикла.

…чтобы шли быстрее

Заставить поток битов ходить в процессоре быстрее непросто. Во-первых, нужно, насколько это возможно, уменьшить число препятствий на пути электронов. Это зависит от технологии производства, и температуры кристалла. Чем лучше технология, тем лучше конечный продукт.

А температура? Она то тут причем? А притом, что атомы в кристаллической решетке находятся в тепловом движении, и амплитуда его пропорциональна температуре. А чем больше амплитуда, тем меньше шансов у электрона проскочить мимо атома. Таким образом, чем ниже температура, тем более беспрепятственно движутся электроны. Именно поэтому охлажденные процессоры работают быстрее.

Еще один способ уменьшить время прохождения битов заключается в сокращении проходимого ими пути. Для этого следует уменьшить размеры транзисторов, а как следствие, расстояние между ними. Такой подход позволил Intel и AMD достичь 600 МГц; они собирались изготовить 0,18 микронные процессоры взамен более «громоздких» 0,25-х.

…сократить время вычислений

Машины хорошо умеют делать параллельно несколько вещей. Поэтому какой-нибудь навороченный блок для сложения сможет складывать быстрее, чем более простая конструкция, сокращая, таким образом, D ALU. Впрочем, здесь не все так просто: сложное устройство, конечно, считает быстро, но зато оно и больше.

…делать поменьше операций

Улучшить технологию производства – легко сказать, да трудно сделать. Это стоит чертову уйму денег. Такое называют «методом грубой силы». Неужели нет более интеллектуального подхода? Ведь в конце концов, инженеры из Alpha просто смеются над 500 МГц на 0,25 мкм процессоре; они достигли 600 МГц на 0,35!

Давайте-ка, попробуем модернизировать наш процессор, иначе он сможет работать только на 10 МГц, и то, если повезет. (Найдете такой в местном магазине, не в коем случае не берите!).

Можно сократить объем работы производимой в течении одного цикла. Вместо 7 операций за один цикл, будем делать один. Тогда, очевидно, можно будет сократить и продолжительность цикла.

Звучит очень странно. Ведь в таком случае, та же процедура займет в 7 раз дольше времени! Ну, разве это не полная чепуха? А вот и нет, вот тут то мы и сталкиваемся с конвейерами.

Использование конвейера позволяет всем устройствам процессора выполнять свою работу одновременно. Пусть, например, в нашем процессоре есть 4 устройства:
Fetcher – ищет следующую инструкцию.
Декодер – выясняет смысл инструкции.
АЛУ – выполняет инструкции.
Retire блок – возвращает результаты в память.

Итак, если в нашей схеме используются конвейеры, процесс будет выглядеть так: fetcher получает инструкцию 4, decoder декодирует инструкцию 3, АЛУ выполняет инструкцию 2, а результат инструкции 1 отправляется назад в память. И таким образом, в конце каждого такта мы имеем выполненную инструкцию.

Такт Fetcher Decoder АЛУ Retire
1 инструкция 1
2 инструкция 2 инструкция 1
3 инструкция 3 инструкция 2 инструкция 1
4 инструкция 4 инструкция 3 инструкция 2 инструкция 1
5 инструкция 5 инструкция 4 инструкция 3 инструкция 2
6 инструкция 6 инструкция 5 инструкция 4 инструкция 3
7 инструкция 6 инструкция 6 инструкция 5 инструкция 4
8 инструкция 7 инструкция 7 инструкция 6 инструкция 5
9 инструкция 8 инструкция 8 инструкция 7 инструкция 6

К счастью, глубокая конвейеризация не единственный способ увеличить частоту. Можно делать побольше операций параллельно. Ведь именно число операций сделанных последовательно определяет минимальную продолжительность цикла.

Собираем вместе

Если вы помните, семейство К-6 обладало 6 уровневым конвейером. А у PII их было 12! И хотя у К6 был лучше и АЛУ (DАЛУ меньше), и декодеры (они делают многое параллельно), К6-3 было очень сложно достичь частоты PII при той же технологии производства. Предел для.35 микронного К6 равен 233 МГц, а для такого же PII 300 МГц. (тоже самое можно сказать и о противостоянии следующих поколений: Athlon и P4).

Ultrasparc II использует конвейер с 9 стадиями, но следует учесть тот факт что RISC процессоры не нуждаются в большом объеме декодировки. На один только фетчинг и декодировку у PII уходит 7 циклов, в то время как у UltraSPARC лишь 3. Так что, в некотором смысле, у UltraSPARC конвейеризация глубже.

Конвейер Alpha состоит из 7 стадий (10 у FPU), но и у него, по сравнению с PII, с декодировкой проблем меньше. Вдобавок к этому, инженеры Alpha делают каждую стадию настолько простой, насколько это только возможно. Добиваются они этого, заставляя делать процессор по возможности больше операций параллельно. Продолжительность такта, таким образом, уменьшается до минимума. За что, в прочем, приходиться платить: процессоры Alpha просто огромны (302 мм2 у Alpha 21264).

Понимаете ли вы теперь почему латентность конвейеризованного FPU К7 (4 такта на сложение, 4 такта на умножение) возросла по сравнению с К6 (2 на сложение, 2 на умножение)? FPU К7 делает меньше чем работы за один такт чем К6, что позволяет ему достигать много больших частот. 10 уровневый конвейер для целочисленных операций (15 для FPU) позволило К7 достичь таких частот, о каких К6 мог только мечтать…Cyrix делало то же с Jalapeno (сейчас это VIA C3).

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

1. Введение
2. Процессоры с архитектурой 80x86 и Pentium, Pentium II, Pentium III

4. Процессоры семейства R4000 архитектуры MIPS компании MIPS Technology
5. Процессоры с архитектурой SPARC компании Sun Microsystems
6. Процессоры с архитектурой PA-RISC компании Hewlett-Packard,
7. Список литературы.

1. Введение.

Итак, в данной контрольной работе необходимо осветить следующий вопрос.

Современные микропроцессоры

1. Процессоры с архитектурой 80x86 и Pentium, Pentium II, Pentium III
2. Особенности архитектуры Alpha компании DEC
3. Особенности архитектуры POWER компании IBM и PowerPC компаний Motorola, Apple и IBM.

Однако, освещая этот вопрос, нельзя обойти вниманием:

Процессоры семейства R4000 архитектуры MIPS компании MIPS

Процессоры с архитектурой SPARC компании Sun Microsystems

Процессоры с архитектурой PA-RISC компании Hewlett-Packard, хотя в данной работе эти процессыре подробно рассматриваться не будут.

В данной работе будет предоставлена аналитическая информация по процессорам указанных архитектур.

Данная работа не претендует на абсолютность взглядов и мнений.

2. Процессоры с архитектурой 80x86 и Pentium, Pentium II, Pentium III.

Итак, сначала немного истории: архитектура Intel 8086 – 1978г.

В 1978 году была анонсирована архитектура Intel 8086 как совместимое вверх расширение в то время успешного 8-бит микропроцессора 8080. 8086 представляет собой 16-битовую архитектуру со всеми внутренними регистрами, имеющими 16-битовую разрядность. Микропроцессор 8080 был просто построен на базе накапливающего сумматора (аккумулятора), но архитектура 8086 была расширена дополнительными регистрами. Поскольку почти каждый регистр в этой архитектуре имеет определенное назначение, 8086 по классификации частично можно отнести к машинам с накапливающим сумматором, а частично - к машинам с регистрами общего назначения, и его можно назвать расширенной машиной с накапливающим сумматором. Микропроцессор 8086 (точнее его версия 8088 с 8- битовой внешней шиной) стал основой завоевавшей в последствии весь мир серии компьютеров IBM PC, работающих под управлением операционной системы
MS-DOS.

В 1980 году был анонсирован сопроцессор плавающей точки 8087. Эта архитектура расширила 8086 почти на 60 команд плавающей точки. Ее архитекторы отказались от расширенных накапливающих сумматоров для того, чтобы создать некий гибрид стеков и регистров, по сути расширенную стековую архитектуру. Полный набор стековых команд дополнен ограниченным набором команд типа регистр-память.

В 1982 году был анонсирован микропроцессор 80286, который еще дальше расширил архитектуру 8086. Была создана сложная модель распределения и защиты памяти, расширено адресное пространство до 24 разрядов, а также добавлено небольшое число дополнительных команд. Поскольку очень важно было обеспечить выполнение без изменений программ, разработанных для 8086, в
80286 был предусмотрен режим реальных адресов, позволяющий машине выглядеть почти как 8086. В 1984 году компания IBM объявила об использовании этого процессора в своей новой серии персональных компьютеров IBM PC/AT.

В 1987 году появился микропроцессор 80386, который расширил архитектуру 80286 до 32 бит. В дополнение к 32-битовой архитектуре с 32- битовыми регистрами и 32-битовым адресным пространством, в микропроцессоре
80386 появились новые режимы адресации и дополнительные операции. Все эти расширения превратили 80386 в машину, по идеологии близкую к машинам с регистрами общего назначения. В дополнение к механизмам сегментации памяти, в микропроцессор 80386 была добавлена также поддержка страничной организации памяти. Также как и 80286, микропроцессор 80386 имеет режим выполнения программ, написанных для 8086. Хотя в то время базовой операционной системой для этих микропроцессоров оставалась MS-DOS, 32- разрядная архитектура и страничная организация памяти послужили основой для переноса на эту платформу операционной системы UNIX. Следует напомнить,
Виктор Владиленович, что для процессора 80286 была создана операционная система XENIX, а UNIX на 286 не юзали (по-крайней мере «на моей памяти»).

Эта история иллюстрирует эффект, вызванный необходимостью обеспечения совместимости с 80x86, поскольку существовавшая база программного обеспечения на каждом шаге была слишком важной. К счастью, последующие процессоры (80486 в 1989 и Pentium в 1993 году) были нацелены на увеличение производительности и добавили к видимому пользователем набору команд только три новые команды, облегчающие организацию многопроцессорной работы. Что бы ни говорилось о неудобствах архитектуры 80x86, следует иметь в виду, что она преобладает в мире персональных компьютеров. Почти 80% установленных малых систем базируются именно на этой архитектуре. Споры относительно преимуществ CISC и RISC архитектур постепенно стихают, поскольку современные микропроцессоры стараются вобрать в себя наилучшие свойства обоих подходов. Уже давно устаревшее, но тем не менее активно используемое, семейство процессоров i486 (468SX, 486DX, 486DX2 и 486DX4), в котором сохранились система команд и методы адресации процессора i386, уже имеет некоторые свойства RISC-микропроцессоров. Например, наиболее употребительные команды выполняются за один такт. Компания Intel для оценки производительности своих процессоров ввела в употребление специальную характеристику, которая называется рейтингом iCOMP. Компания надеялась, что эта характеристика станет стандартной тестовой оценкой и будет применяться другими производителями микропроцессоров, однако последние с понятной осторожностью отнеслись к системе измерений производительности, введенной компанией Intel, и не без оснований.

Если сравнивать i486SX-25 и Pentium-133, то их производительность, согласно рейтингу iCOMP соотносилась как 1:12. Что, само собой, говорило о том что повышение производительности достигнуто не повышением тактовой частот работы процессора и «косметическим облизыванием» ядра. Так чт разберем их чуть подробнее.

Процессоры i486SX и i486DX - это 32-битовые процессоры с внутренней кэш-па-мятью емкостью 8 Кбайт и 32-битовой шиной данных. Основное отличие между ними заключается в том, что в процессоре i486SX отсутствует интегрированный сопроцессор плавающей точки. Поэтому он имеет меньшую цену и применяется в системах, для которых не очень важна производительность при обработке вещественных чисел. Для этих систем обычно возможно расширение с помощью внешнего сопроцессора i487SX. Процессоры Intel OverDrive и i486DX2 практически идентичны. Однако кристалл OverDrive имеет корпус, который может устанавливаться в гнездо расширения сопроцессора i487SX, применяемое в ПК на базе i486SX. В процессорах OverDrive и i486DX2 применяется технология удвоения внутренней тактовой частоты, что позволяет увеличить производительность процессора почти на 70%. Процессор i486DX4/100 использует технологию утроения тактовой частоты. Он работает с внутренней тактовой частотой 99 МГц, в то время как внешняя тактовая частота (частота, на которой работает внешняя шина) составляет 33 МГц. Этот процессор практически обеспечивает равные возможности с машинами класса 60 МГц
Pentium, являясь их полноценной и доступной по цене альтернативой.

Появившийся в 1993 году процессор Pentium ознаменовал собой новый этап в развитии архитектуры x86, связанный с адаптацией многих свойств процессоров с архитектурой RISC. Он изготовлен по смешной по нынешним временам 0.8 микронной БиКМОП технологии и содержит 3.1 миллиона транзисторов. Первоначальная реализация была рассчитана на работу с тактовой частотой 60 и 66 МГц. В настоящее время имеются процессоры
Pentium, работающие с тактовой частотой 75, 90, 100, 120, 133, 150, 200,
233 МГц. Процессор Pentium по сравнению со своими предшественниками обладает целым рядом улучшенных характеристик. Главными его особенностями являются: двухпотоковая суперскалярная организация, допускающая параллельное выполнение пары простых команд; наличие двух независимых двухканальных множественно-ассоциативных кэшей для команд и для данных, обеспечивающих выборку данных для двух операций в каждом такте; динамическое прогнозирование переходов; конвейерная организация устройства плавающей точки с 8 ступенями; двоичная совместимость с существующими процессорами семейства 80x86.

Блок-схема процессора Pentium представлена на рисунке 1. Прежде всего новая микроархитектура этого процессора базируется на идее суперскалярной обработки (правда с некоторыми ограничениями). Основные команды распределяются по двум независимым исполнительным устройствам (конвейерам U и V). Конвейер U может выполнять любые команды семейства x86, включая целочисленные команды и команды с плавающей точкой. Конвейер V предназначен для выполнения простых целочисленных команд и некоторых команд с плавающей точкой. Команды могут направляться в каждое из этих устройств одновременно, причем при выдаче устройством управления в одном такте пары команд более сложная команда поступает в конвейер U, а менее сложная - в конвейер V.
Такая попарная выдача команд возможна правда только для ограниченного подмножества целочисленных команд. Команды арифметики с плавающей точкой не могут запускаться в паре с целочисленными командами. Одновременная выдача двух команд возможна только при отсутствии зависимостей по регистрам. При остановке команды по любой причине в одном конвейере, как правило останавливается и второй конвейер, после чего компьютер радостно повисает.

Остальные устройства процессора предназначены для снабжения конвейеров необходимыми командами и данными. В отличие от процессоров i486 в процессоре Pentium используется раздельная кэш-память команд и данных емкостью по 8 Кбайт, что обеспечивает независимость обращений. За один такт из каждой кэш-памяти могут считываться два слова. При этом кэш-память данных построена на принципах двухкратного расслоения, что обеспечивает одновременное считывание двух слов, принадлежащих одной строке кэш-памяти.
Кэш-память команд хранит сразу три копии тегов, что позволяет в одном такте считывать два командных слова, принадлежащих либо одной строке, либо смежным строкам для обеспечения попарной выдачи команд, при этом третья копия тегов используется для организации протокола наблюдения за когерентностью состояния кэш-памяти. Для повышения эффективности перезагрузки кэш-памяти в процессоре применяется 64-битовая внешняя шина данных

В процессоре УЖЕ предусмотрен механизм динамического прогнозирования направления переходов. С этой целью на кристалле размещена небольшая кэш- память, которая называется буфером целевых адресов переходов (BTB), и две независимые пары буферов предварительной выборки команд (по два 32-битовых буфера на каждый конвейер). Буфер целевых адресов переходов хранит адреса команд, которые находятся в буферах предварительной выборки. Работа буферов предварительной выборки организована таким образом, что в каждый момент времени осуществляется выборка команд только в один из буферов соответствующей пары. При обнаружении в потоке команд операции перехода вычисленный адрес перехода сравнивается с адресами, хранящимися в буфере
BTB. В случае совпадения предсказывается, что переход будет выполнен, и разрешается работа другого буфера предварительной выборки, который начинает выдавать команды для выполнения в соответствующий конвейер. При несовпадении считается, что переход выполняться не будет и буфер предварительной выборки не переключается, продолжая обычный порядок выдачи команд. Это позволяет избежать простоев конвейеров при правильном прогнозе направления перехода. Окончательное решение о направлении перехода естественно принимается на основании анализа кода условия. При неправильно сделанном прогнозе содержимое конвейеров аннулируется и выдача команд начинается с необходимого адреса. Неправильный прогноз приводит к приостановке работы конвейеров на 3-4 такта. Следует отметить, что возросшая производительность процессора Pentium требовала и соответствующей организации системы на его основе. Компания Intel разработала и поставляет все необходимые для этого наборы микросхем. Прежде всего для согласования скорости с динамической основной памятью необходима кэш-память второго уровня. Контроллер кэш-памяти 82496 и микросхемы статической памяти 82491 обеспечивают построение такой кэш-памяти объемом 256 Кбайт и работу процессора без тактов ожидания. Для эффективной организации систем Intel разработала стандарт на высокопроизводительную локальную шину PCI.
Выпускаются наборы микросхем для построения мощных компьютеров на ее основе.

Следующим процессором, продолжающим лиию Pentium, был выпущен P6 или
PentiumPro. Он работает с тактовыми частотами 150: 166: 180 и 200 МГц.
PentiumPro обеспечивает полную совместимость с процессорами предыдущих поколений. Он предназначен главным образом для поддержки высокопроизводительных 32-битовых вычислений в области САПР, трехмерной графики и мультимедиа: а также широкого круга коммерческих приложений баз данных. По результатам испытаний на тестах SPEC (8.58 SPECint95 и 6.48
SPECfp95) процессор PentiumPro по производительности целочисленных операций в текущий момент времени вышел на третье место в мировой классификации, уступая только 180 МГц HP PA-8000 и 400 МГц DEC Alpha (рис.2.). Для достижения такой производительности необходимо использование технических решений, широко применяющихся при построении RISC-процессоров:

Рис.2. выполнение команд не в предписанной программой последовательности, что устраняет во многих случаях приостановку конвейеров из-за ожидания операндов операций; использование методики переименования регистров, позволяющей увеличивать эффективный размер регистрового файла (малое количество регистров - одно из самых узких мест архитектуры x86); расширение суперскалярных возможностей по отношению к процессору Pentium, в котором обеспечивается одновременная выдача только двух команд с достаточно жесткими ограничениями на их комбинации.

Кроме того, в борьбу за новое поколение процессоров x86 включились компании, ранее занимавшиеся изготовлением Intel-совместимых процессоров.
Это компании Advanced Micro Devices (AMD), Cyrix Corp и NexGen. С точки зрения микроархитектуры наиболее близок к Pentium процессор М1 компании
Cyrix, который должен появиться на рынке в ближайшее время. Также как и
Pentium он имеет два конвейера и может выполнять до двух команд в одном такте. Однако в процессоре М1 число случаев, когда операции могут выполняться попарно, значительно увеличено. Кроме того в нем применяется методика обходов и ускорения пересылки данных, позволяющая устранить приостановку конвейеров во многих ситуациях, с которыми не справляется
Pentium. Процессор содержит 32 физических регистра (вместо 8 логических, предусмотренных архитектурой x86) и применяет методику переименования регистров для устранения зависимостей по данным. Как и Pentium, процессор
M1 для прогнозирования направления перехода использует буфер целевых адресов перехода емкостью 256 элементов, но кроме того поддерживает специальный стек возвратов, отслеживающий вызовы процедур и последующие возвраты.

Процессоры К5 компании AMD и Nx586 компании NexGen используют в корне другой подход. Основа их процессоров - очень быстрое RISC-ядро, выполняющее высокорегулярные операции в суперскалярном режиме. Внутренние форматы команд (ROP у компании AMD и RISC86 у компании NexGen) соответствуют традиционным системам команд RISC-процессоров. Все команды имеют одинаковую длину и кодируются в регулярном формате. Обращения к памяти выполняются специальными командами загрузки и записи. Как известно, архитектура x86 имеет очень сложную для декодирования систему команд. В процессорах K5 и
Nx586 осуществляется аппаратная трансляция команд x86 в команды внутреннего формата, что дает лучшие условия для распараллеливания вычислений. В процессоре К5 имеются 40, а в процессоре Nx586 22 физических регистра, которые реализуют методику переименования. В процессоре К5 информация, необходимая для прогнозирования направления перехода, записывается прямо в кэш команд и хранится вместе с каждой строкой кэш-памяти. В процессоре
Nx586 для этих целей используется кэш-память адресов переходов на 96 элементов.

Таким образом, компания Intel не обладает монополией на методы конструирования высокопроизводительных процессоров x86. Следует отметить, что сама компания Intel заключила стратегическое соглашение с компанией
Hewlett-Packard на разработку следующего поколения микропроцессоров, в которых архитектура x86 будет сочетаться с архитектурой очень длинного командного слова (VLIW –архитектурой.

А теперь мы плавненько перейдем на Pentium II.

Для компаний Intel и Hewlett-Packard не существовало "проблемы 2000 года" - для них это был год новых возможностей. В конце 1999 года Intel представила Merced - первый процессор, построенный с использованием архитектуры нового поколения, совместно разработанной двумя компаниями.
Хотя эта 64-разрядная архитектура основана на многолетних исследованиях
Intel, HP, других компаний и университетов, она радикально отличается от всего, что было представлено на рынке до нее.

Эта архитектура, известная под названием Intel Architecture-64 (IA-
64), полностью "порвала с прошлым". IA-64 не является как 64-разрядным расширением 32-разрядной архитектуры х86 компании Intel, так и переработкой
64-разрядной архитектуры PA-RISC компании HP. IA-64 представляет собой нечто абсолютно новое - передовую архитектуру, использующую длинные слова команд (long instruction words -- LIW), предикаты команд (instruction predication), устранение ветвлений (branch elimination), предварительную загрузку данных (speculative loading) и другие ухищрения для того, чтобы
"извлечь больше параллелизма" из кода программ.

По поводу совместимости, стоит заметить, что но в Merced на самом деле существует два режима декодирования команд VLIW и старый CISC. Т.е. программы переключаются в необходимый режим исполнения. В архитектуре х86 были добавлен ряд команд для перехода в новый режим, а также для передачи данных. В IA-64 такие команды есть изначально. Перед тем, как углубиться в технические детали, попробуем понять, почему Intel и HP рискнули пойти на столь кардинальные перемены. Причина сводится к следующему: они считают, что как CISC, так и RISC-архитектуры исчерпали себя.

Небольшой экскурс в прошлое. Архитектура х86 компании Intel - CISC архитектура, появившаяся в 1978 году. В те времена процессоры представляли собой скалярные устройства (то есть могли в каждый момент времени выполнять только одну команду), при этом конвейеров практически не было. Процессоры содержали десятки тысяч транзисторов.

PA-RISC компании HP была разработана в 1986 году, когда технология суперскалярных (с возможностью выполнения нескольких команд одновременно) конвейеров только начала развиваться. Процессоры содержали сотни тысяч транзисторов. В конце 90-х наиболее совершенные процессоры содержали миллионы транзисторов. К моменту начала выпуска Merced компания Intel перешла на 0.18-микронную технологию вместо нынешней 0.25-микронной. Уже первые чипы архитектуры IA-64 содержали десятки миллионов транзисторов.

Проблему ещё осложняет тот факт, что микросхемы памяти не успевают за тактовой частотой процессоров. Когда Intel разработала архитектуру х86, процессор мог извлекать данные из памяти с такой же скоростью, с какой он их обрабатывал. Сегодня процессор тратит сотни тактов на ожидание загрузки данных из памяти, даже несмотря на наличие большой и быстрой кэш-памяти.
Команды в формате IA-64 упакованы по три в 128-битный пакет для быстрейшей обработки. Обычно это называют "LIW encoding". (Русский аналог подобрать сложно. Наиболее адекватно, на мой взгляд, перевести как "кодирование в длинные слова команд".) Однако компания Intel избегает такого названия, заявляя, что с ним связаны "негативные ассоциации" (negative connotation).
По той же причине Intel не любит называть сами команды RISC-подобными (RISC- like), даже несмотря на то, что они имеют фиксированную длину и предположительно оптимизированы для исполнения за один такт в ядре, не нуждающемся в микрокоде. Intel предпочитает называть свою новую LIW- технологию Explicitly Parallel Instruction Computing или EPIC (Вычисления с
Явной Параллельностью Инструкций, где "явной" означае явно указанной при трансляции). В любом случае формат команд IA-64 не имеет ничего общего с х86. Команды х86 могут иметь длину от 8 до 108 бит, и процессор должен последовательно декодировать каждую команду после определения её границ.
Каждый 128-битный пакет содержит шаблон (template) длиной в несколько бит, помещаемый в него компилятором, который указывает процессору, какие из команд могут выполняться параллельно. Теперь процессору не нужно будет анализировать поток команд в процессе выполнения для выявления "скрытого параллелизма". Вместо этого наличие параллелизма определяет компилятор и помещает информацию в код программы. Каждая команда (как для целочисленных вычислений, так и для вычислений с плавающей точкой) содержит три 7-битных поля регистра общего назначения (РОН). Из этого следует, что процессоры архитектуры IA-64 содержат 128 целочисленных РОН и 128 регистров для вычислений с плавающей точкой. Все они доступны программисту и являются регистрами с произвольным доступом (programmer-visible random-access registers). По сравнению с процессорами х86, у которых всего восемь целочисленных РОН и стек глубины 8 для вычислений с плавающей точкой, IA-64 намного "шире" и, соответственно, будет намного реже простаивать из-за
"нехватки регистров".
Компиляторы для IA-64 будут использовать технологию "отмеченных команд"
(predication) для устранения потерь производительности из-за неправильно предсказанных переходов и необходимости пропуска участков кода после ветвлений. Когда процессор встречает "отмеченное" ветвление в процессе выполнения программы, он начинает одновременно выполнять все ветви. После того, как будет определена "истинная" ветвь, процессор сохраняет необходимые результаты и сбрасывает остальные.
Компиляторы для IA-64 будут также просматривать исходный код с целью поиска команд, использующих данные из памяти. Найдя такую команду, они будут добавлять пару команд - команду предварительной загрузки (speculative loading) и проверки загрузки (speculative check). Во время выполнения программы первая из команд загружает данные в память до того, как они понадобятся программе. Вторая команда проверяет, успешно ли произошла загрузка, перед тем, как разрешить программе использовать эти данные.
Предварительная загрузка позволяет уменьшить потери производительности из- за задержек при доступе к памяти, а также повысить параллелизм.

3. Особенности архитектуры Alpha компании DEC

В настоящее время семейство микропроцессоров с архитектурой Alpha представлено несколькими кристаллами, имеющими различные диапазоны производительности, работающие с разной тактовой частотой и рассеивающие разную мощность. Первым на рынке появился 64-разрядный микропроцессор Alpha
(DECchip 21064) . Он представляет собой RISC-процессор в однокристальном исполнении, в состав которого входят устройства целочисленной и плавающей арифметики, а также кэш-память емкостью 16 Кб. Кристалл проектировался с учетом реализации передовых методов увеличения производительности, включая конвейерную организацию всех функциональных устройств, одновременную выдачу нескольких команд для выполнения, а также средства организации симметричной многопроцессорной обработки. В кристалле имеются два регистровых файла по
32 64-битовых регистра: один для целых чисел, второй - для чисел с плавающей точкой. Для обеспечения совместимости с архитектурами MIPS и VAX архитектура Alpha поддерживает арифметику с одинарной и двойной точностью как в соответствии со стандартом IEEE 754, так и в соответствии с внутренним для компании стандартом арифметики VAX. Самая мощная модель процессора 21064 работает на частоте 200 МГц. В конце 1993 года появилась модернизированная версия кристалла - модель 21064А, имеющая на кристалле кэш-память удвоенного объема и работающая с тактовой частотой 275 МГц.
Затем были выпущены модели 21066 и 21068, оперирующие на частоте 166 и 66
МГц. Отличительной особенностью этой ветви процессоров Alpha является реализация на кристалле шины PCI. Это существенно упрощает и удешевляет как проектирование, так и производство компьютеров. Отличительная особенность модели 21068 - низкая потребляемая мощность (около 8 ватт). Основное предназначение этих двух новых моделей - персональные компьютеры и одноплатные ЭВМ. На рисунке 3. представлена блок-схема микропроцессора
21066. Основными компонентами этого процессора являются: кэш-память команд, целочисленное устройство, устройство плавающей точки, устройство выполнения команд загрузки/записи, кэш-память данных, а также контроллер памяти и контроллер ввода/вывода.

Кэш-память команд представляет собой кэш прямого отображения емкостью
8 Кбайт. Команды, выбираемые из этой кэш-памяти, могут выдаваться попарно для выполнения в одно из исполнительных устройств. Кэш-память данных емкостью 8 Кбайт также реализует кэш с прямым отображением. При выполнении операций записи в память данные одновременно записываются в этот кэш и в буфер записи. Контроллер памяти или контроллер ввода/вывода шины PCI обрабатывают все обращения, которые проходят через расположенные на кристалле кэш-памяти первого уровня. Контроллер памяти прежде всего проверяет содержимое внешней кэш-памяти второго уровня, которая построена на принципе прямого отображения и реализует алгоритм отложенного обратного копирования при выполнении операций записи. При обнаружении промаха контроллер обращается к основной памяти для перезагрузки соответствующих строк кэш-памяти. Контроллер ввода/вывода шины PCI обрабатывает весь трафик, связанный с вводом/выводом. Под управлением центрального процессора он выполняет операции программируемого ввода/вывода. Трафик прямого доступа к памяти шины PCI обрабатывается контроллером PCI совместно с контроллером памяти. При выполнении операций прямого доступа к памяти в режиме чтения и записи данные не размещаются в кэш-памяти второго уровня. Интерфейсы памяти и PCI были разработаны специально в расчете на однопроцессорные конфигурации и не поддерживают реализацию мультипроцессорной архитектуры.
На рисунке 4. показан пример системы, построенной на базе микропроцессора
21066. В представленной конфигурации контроллер памяти выполняет обращения как к статической памяти, с помощью которой реализована кэш-память второго уровня, так и к динамической памяти, на которой построена основная память.
Для хранения тегов и данных в кэш-памяти второго уровня используются кристаллы статическая памяти с одинаковым временем доступа по чтению и записи.

Высокоскоростная шина PCI имеет ряд привлекательных свойств. Помимо возможности работы с прямым доступом к памяти и программируемым вводом/выводом она допускает специальные конфигурационные циклы, расширяемость до 64 бит, компоненты, работающие с питающими напряжениями
3.3 и 5 В, а также более быстрое тактирование. Базовая реализация шины PCI поддерживает мультиплексирование адреса и данных и работает на частоте 33
МГц, обеспечивая максимальную скорость передачи данных 132 Мбайт/с. Шина
PCI непосредственно управляется микропроцессором. На рисунке 4 показаны некоторые высокоскоростные периферийные устройства: графические адаптеры, контроллеры SCSI и сетевые адаптеры, подключенные непосредственно к шине
PCI. Мостовая микросхема интерфейса ISA позволяет подключить к системе низкоскоростные устройства типа модема, флопа и т.д. Позже, на смену процессору пришла его модернизированная версия. Как и его предшественник, новый кристалл Alpha 21066A помимо интерфейса PCI содержит на кристалле интегрированный контроллер памяти и графический акселератор. Эти характеристики позволяют значительно снизить стоимость реализации систем, базирующихся на Alpha 21066A, и обеспечивают простой и дешевый доступ к внешней памяти и периферийным устройствам. Alpha 21066A имеет две модификации в соответствии с частотой: 100 МГц и 233 МГц. Модель с 233 МГц обеспечивает производительность 94 и 100 единиц, соответственно, по тестам
SPECint92 и SPECfp92. Микропроцессор Alpha 21164 представляет собой вторую полностью новую реализацию архитектуры Alpha. Микропроцессор 21164, представленный в сентябре 1994 года, обеспечивает производительность 330 и
500 единиц, соответственно, по шкалам SPECint92 и SPECfp92 или около 1200
MIPS и выполняет до четырех инструкций за такт. На кристалле микропроцессора 21164 размещено около 9,3 миллиона транзисторов, большинство из которых образуют кэш. Кристалл построен на базе 0.5 микронной КМОП технологии компании DEC. Он собирается в 499-контактные корпуса PGA (при этом 205 контактов отводятся под разводку питания и земли) и рассеивает 50 Вт при питающем напряжении 3.3 В на частоте 300 МГц.
Переход в 1996 году на 0.35 микронную КМОП технологию привел к возможности дальнейшего увеличения тактовой частоты и производительности процессора.
Процессоры 21164 выпускались с тактовой частотой 366 МГц (11.3 SPECint95,
15.4 SPECfp95) и 433 МГц (13.3 SPECint95, 18.3 SPECfp95). В конце 1996 года начались массовые поставки 21164 с тактовой частотой 500 МГц (15.4
SPECint95, 21.1 SPECfp95). Таким образом, в 1996г. компания DEC имела самые мощные процессоры, пиковая производительность которых составляла 2 миллиарда операций в секунду.

Ключевыми моментами для реализации высокой производительности является суперскалярный режим работы процессора, обеспечивающий выдачу для выполнения до четырех команд в каждом такте, высокопроизводительная неблокируемая подсистема памяти с быстродействующей кэш-памятью первого уровня, большая, размещенная на кристалле, кэш-память второго уровня и уменьшенная задержка выполнения операций во всех функциональных устройствах. На рисунке 5 представлена блок-схема процессора, который включает пять функциональных устройств: устройство управления потоком команд (IBOX), целочисленное устройство (EBOX), устройство плавающей точки
(FBOX), устройство управления памятью (MBOX) и устройство управления кэш- памятью и интерфейсом шины (CBOX). На рисунке также показаны три расположенных на кристалле кэш-памяти. Кэш-память команд и кэш-память данных представляют собой первичные кэши, реализующие прямое отображение.
Множественно-ассоциативная кэш-память второго уровня предназначена для хранения команд и данных. Длина конвейеров процессора 21164 варьируется от
7 ступеней для выполнения целочисленных команд и 9 ступеней для реализации команд с плавающей точкой до 12 ступеней при выполнении команд обращения к памяти в пределах кристалла и переменного числа ступеней при выполнении команд обращения к памяти за пределами кристалла. Устройство управления потоком команд осуществляет выборку и декодирование команд из кэша команд и направляет их для выполнения в соответствующие исполнительные устройства после разрешения всех конфликтов по регистрам и функциональным устройствам.
Оно управляет выполнением программы и всеми аспектами обработки исключительных ситуаций, ловушек и прерываний. Кроме того, оно обеспечивает управление всеми исполнительными устройствами, контролируя все цепи обхода данных и записи в регистровый файл. Устройство управления содержит 8 Кбайт кэш команд, схемы предварительной выборки команд и связанный с ними буфер перезагрузки, схемы прогнозирования направления условных переходов и буфер преобразования адресов команд (ITB). Целочисленное исполнительное устройство выполняет целочисленные команды, вычисляет виртуальные адреса для всех команд загрузки и записи, выполняет целочисленные команды условного перехода и все другие команды управления. Оно включает в себя регистровый файл и несколько функциональных устройств, расположенных на четырех ступенях двух параллельных конвейеров. Первый конвейер содержит сумматор, устройство логических операций, сдвигатель и умножитель. Второй конвейер содержит сумматор, устройство логических операций и устройство выполнения команд управления.

Устройство плавающей точки состоит из двух конвейерных исполнительных устройств: конвейера сложения, который выполняет все команды плавающей точки, за исключением команд умножения, и конвейер умножения, который выполняет команды умножения с плавающей точкой. Два специальных конвейера загрузки и один конвейер записи данных позволяют командам загрузки/записи выполняться параллельно с выполнением операций с плавающей точкой.
Аппаратно поддерживаются все режимы округления, предусмотренные стандартами
IEEE и VAX.

Устройство управления памятью выполняет все команды загрузки, записи и барьерные операции синхронизации. Оно содержит полностью ассоциативный 64- строчный буфер преобразования адресов (DTB), 8 Кбайт кэш-память данных с прямым отображением, файл адресов промахов и буфер записи. Длина строки в кэше данных равна 32 байтам, он имеет два порта по чтению и реализован по принципу сквозной записи. Он индексируется разрядами физического адреса и в тегах хранятся физические адреса. В устройство управления памятью в каждом такте может поступать до двух виртуальных адресов из целочисленного устройства. DTB также имеет два порта, поэтому он может одновременно выполнять преобразование двух виртуальных адресов в физические. Команды загрузки обращаются к кэшу данных и возвращают результат в регистровый файл в случае попадания. При этом задержка составляет два такта. В случае промаха физические адреса направляются в файл адресов промахов, где они буферизуются и ожидают завершения обращения к кэш-памяти второго уровня.
Команды записи записывают данные в кэш данных в случае попадания и всегда помещают данные в буфер записи, где они ожидают обращения к кэш-памяти второго уровня. Отличительной особенностью микропроцессора 21164 является размещение на кристалле вторичного трехканального множественно- ассоциативного кэша, емкостью 96 Кбайт. Вторичный кэш резко снижает количество обращений к внешней шине микропроцессора. Кроме вторичного кэша на кристалле поддерживается работа с внешним кэшем третьего уровня.

Сочетание большого количества вычислительных устройств, более быстрого выполнения операций с плавающей точкой (четыре такта вместо шести), более быстрого доступа к первичному кэшу (два такта вместо трех) обеспечивала этому микропроцессору рекордную по тем временам производительности.

4. Особенности архитектуры POWER компании IBM и PowerPC компаний

Motorola, Apple и IBM.

Как уже было отмечено, одним из разработчиков фундаментальной концепции RISC-архитектуры был Джон Кук из Исследовательского центра IBM им. Уотсона, который в середине 70-х проводил исследования в этом направлении и построил миникомпьютер IBM 801, который так никогда и не появился на рынке. Дальнейшее развитие этих идей в компании IBM нашло отражение при разработке архитектуру POWER в конце 80-х. Архитектура POWER
(и ее поднаправления POWER2 и PowerPC) в настоящее время являются основой семейства рабочих станций и серверов RISC System /6000 компании IBM.
Развитие архитектуры IBM 801 в направлении POWER шло в следующих направлениях: воплощение концепции суперскалярной обработки, улучшение архитектуры как целевого объекта компиляторов, сокращение длины конвейера и времени выполнения команд и, наконец, приоритетная ориентация на эффективное выполнение операций с плавающей точкой.
Архитектура POWER

Архитектура POWER во многих отношениях представляет собой традиционную RISC-архитектуру. Она придерживается наиболее важных отличительных особенностей RISC: фиксированной длины команд, архитектуры регистр-регистр, простых способов адресации, простых (не требующих интерпретации) команд, большого регистрового файла и трехоперандного
(неразрушительного) формата команд. Однако архитектура POWER имеет также несколько дополнительных свойств, которые отличают ее от других RISC- архитектур.

Во-первых, набор команд был основан на идее суперскалярной обработки.
В базовой архитектуре команды распределяются по трем независимым исполнительным устройствам: устройству переходов, устройству с фиксированной точкой и устройству с плавающей точкой. Команды могут направляться в каждое из этих устройств одновременно, где они могут выполняться одновременно и заканчиваться не в порядке поступления. Для увеличения уровня параллелизма, который может быть достигнут на практике, архитектура набора команд определяет для каждого из устройств независимый набор регистров. Это минимизирует связи и синхронизацию, требуемые между устройствами, позволяя тем самым исполнительным устройствам настраиваться на динамическую смесь команд. Любая связь по данным, требующаяся между устройствами, должна анализироваться компилятором, который может ее эффективно спланировать. Следует отметить, что это только концептуальная модель. Любой конкретный процессор с архитектурой POWER может рассматривать любое из концептуальных устройств как множество исполнительных устройств для поддержки дополнительного параллелизма команд. Но существование модели приводит к согласованной разработке набора команд, который естественно поддерживает степень параллелизма по крайней мере равную трем.

Во-вторых, архитектура POWER расширена несколькими "смешанными" командами для сокращения времен выполнения. Возможно единственным недостатком технологии RISC по сравнению с CISC, является то, что иногда она использует большее количество команд для выполнения одного и того же задания. Было обнаружено, что во многих случаях увеличения размера кода можно избежать путем небольшого расширения набора команд, которое вовсе не означает возврат к сложным командам, подобным командам CISC. Например, значительная часть увеличения программного кода была обнаружена в кодах пролога и эпилога, связанных с сохранением и восстановлением регистров во время вызова процедуры. Чтобы устранить этот фактор IBM ввела команды
"групповой загрузки и записи", которые обеспечивают пересылку нескольких регистров в/из памяти с помощью единственной команды. Соглашения о связях, используемые компиляторами POWER, рассматривают задачи планирования, разделяемые библиотеки и динамическое связывание как простой, единый механизм. Это было сделано с помощью косвенной адресации посредством таблицы содержания (TOC - Table Of Contents), которая модифицируется во время загрузки. Команды групповой загрузки и записи были важным элементом этих соглашений о связях.

Другим примером смешанных команд является возможность модификации базового регистра вновь вычисленным эффективным адресом при выполнении операций загрузки или записи (аналог автоинкрементной адресации). Эти команды устраняют необходимость выполнения дополнительных команд сложения, которые в противном случае потребовались бы для инкрементирования индекса при обращениях к массивам. Хотя это смешанная операция, она не мешает работе традиционного RISC-конвейера, поскольку модифицированный адрес уже вычислен и порт записи регистрового файла во время ожидания операции с памятью свободен.

Архитектура POWER обеспечивает также несколько других способов сокращения времени выполнения команд такие как: обширный набор команд для манипуляции битовыми полями, смешанные команды умножения-сложения с плавающей точкой, установку регистра условий в качестве побочного эффекта нормального выполнения команды и команды загрузки и записи строк (которые работают с произвольно выровненными строками байтов).

Третьим фактором, который отличает архитектуру POWER от многих других
RISC-архитектур, является отсутствие механизма "задержанных переходов".
Обычно этот механизм обеспечивает выполнение команды, следующей за командой условного перехода, перед выполнением самого перехода. Этот механизм эффективно работал в ранних RISC-машинах для заполнения "пузыря", появляющегося при оценке условий для выбора направления перехода и выборки нового потока команд. Однако в более продвинутых, суперскалярных машинах, этот механизм может оказаться неэффективным, поскольку один такт задержки команды перехода может привести к появлению нескольких "пузырей", которые не могут быть покрыты с помощью одного архитектурного слота задержки. Почти все такие машины, чтобы устранить влияние этих "пузырей", вынуждены вводить дополнительное оборудование (например, кэш-память адресов переходов). В таких машинах механизм задержанных переходов становится не только мало эффективным, но и привносит значительную сложность в логику обработки последовательности команд. Вместо этого архитектура переходов POWER была организована для поддержки методики "предварительного просмотра условных переходов" (branch-lockahead) и методики "свертывания переходов" (branch- folding).

Методика реализации условных переходов, используемая в архитектуре
POWER, является четвертым уникальным свойством по сравнению с другими RISC- процессорами. Архитектура POWER определяет расширенные свойства регистра условий. Проблема архитектур с традиционным регистром условий заключается в том, что установка битов условий как побочного эффекта выполнения команды, ставит серьезные ограничения на возможность компилятора изменить порядок следования команд. Кроме того, регистр условий представляет собой единственный архитектурный ресурс, создающий серьезное узкое горло в машине, которая параллельно выполняет несколько команд или выполняет команды не в порядке их появления в программе. Некоторые RISC-архитектуры обходят эту проблему путем полного исключения из своего состава регистра условий и требуют установки кода условий с помощью команд сравнения в универсальный регистр, либо путем включения операции сравнения в саму команду перехода. Последний подход потенциально перегружает конвейер команд при выполнении перехода. Поэтому архитектура POWER вместо того, чтобы исправлять проблемы, связанные с традиционным подходом к регистру условий, предлагает: a) наличие специального бита в коде операции каждой команды, что делает модификацию регистра условий дополнительной возможностью, и тем самым восстанавливает способность компилятора реорганизовать код, и b) несколько (восемь) регистров условий для того, чтобы обойти проблему единственного ресурса и обеспечить большее число имен регистра условий так, что компилятор может разместить и распределить ресурсы регистра условий, как он это делает для универсальных регистров.

Другой причиной выбора модели расширенного регистра условий является то, что она согласуется с организацией машины в виде независимых исполнительных устройств. Концептуально регистр условий является локальным по отношению к устройству переходов. Следовательно, для оценки направления выполнения условного перехода не обязательно обращаться к универсальному регистровому файлу (который является локальным для устройства с фиксированной точкой). Для той степени, с которой компилятор может заранее спланировать модификацию кода условия (и/или загрузить заранее регистры адреса перехода), аппаратура может заранее просмотреть и свернуть условные переходы, выделяя их из потока команд. Это позволяет освободить в конвейере временной слот (такт) выдачи команды, обычно занятый командой перехода, и дает возможность диспетчеру команд создавать непрерывный линейный поток команд для вычислительных исполнительных устройств.

Первая реализация архитектуры POWER появилась на рынке в 1990 году. С тех пор компания IBM представила на рынок еще две версии процессоров POWER2 и POWER2+, обеспечивающих поддержку кэш-памяти второго уровня и имеющих расширенный набор команд.

По данным IBM процессор POWER требует менее одного такта для выполнении одной команды по сравнению с примерно 1.25 такта у процессора
Motorola 68040, 1.45 такта у процессора SPARC, 1.8 такта у Intel i486DX и
1.8 такта Hewlett-Packard PA-RISC. Тактовая частота архитектурного ряда в зависимости от модели меняется от 25 МГц до 62 МГц.

Процессоры POWER работают на частоте 33, 41.6, 45, 50 и 62.5 МГЦ.
Архитектура POWER включает раздельную кэш-память команд и данных (за исключением рабочих станций и серверов рабочих групп начального уровня, которые имеют однокристальную реализацию процессора POWER и общую кэш- память команд и данных), 64- или 128-битовую шину памяти и 52-битовый виртуальный адрес. Она также имеет интегрированный процессор плавающей точки и таким образом хорошо подходит для приложений с интенсивными вычислениями, типичными для технической среды, хотя текущая стратегия
RS/6000 нацелена как на коммерческие, так и на технические приложения.
RS/6000 показывает хорошую производительность на плавающей точке: 134.6
SPECp92 для POWERstation/Powerserver 580. Это меньше, чем уровень моделей
Hewlett-Packard 9000 Series 800 G/H/I-50, которые достигают уровня 150
SPECfp92.

Для реализации быстрой обработки ввода/вывода в архитектуре POWER используется шина Micro Channel, имеющая пропускную способность 40 или 80
Мбайт/сек. Шина Micro Channel включает 64-битовую шину данных и обеспечивает поддержку работы нескольких главных адаптеров шины. Такая поддержка позволяет сетевым контроллерам, видеоадаптерам и другим интеллектуальным устройствам передавать информацию по шине независимо от основного процессора, что снижает нагрузку на процессор и соответственно увеличивает системную производительность.
Многокристальный набор POWER2 состоит из восьми полузаказных микросхем
(устройств):
Блок кэш-памяти команд (ICU) - 32 Кбайт, имеет два порта с 128-битовыми шинами;
Блок устройств целочисленной арифметики (FXU) - содержит два целочисленных конвейера и два блока регистров общего назначения (по 32 32-битовых регистра). Выполняет все целочисленные и логические операции, а также все операции обращения к памяти;
Блок устройств плавающей точки (FPU) - содержит два конвейера для выполнения операций с плавающей точкой двойной точности, а также 54 64- битовых регистра плавающей точки;
Четыре блока кэш-памяти данных - максимальный объем кэш-памяти первого уровня составляет 256 Кбайт. Каждый блок имеет два порта. Устройство реализует также ряд функций обнаружения и коррекции ошибок при взаимодействии с системой памяти;
Блок управления памятью (MMU).

Набор кристаллов POWER2 содержит порядка 23 миллионов транзисторов на площади 1217 квадратных мм и изготовлен по технологии КМОП с проектными нормами 0.45 микрон. Рассеиваемая мощность на частоте 66.5 МГц составляет
65 Вт.

Производительность процессора POWER2 по сравнению с POWER значительно повышена: при тактовой частоте 71.5 МГц она достигает 131 SPECint92 и 274
SPECfp92.

Эволюция архитектуры POWER в направлении архитектуры PowerPC

Компания IBM распространяет влияние архитектуры POWER в направлении малых систем с помощью платформы PowerPC. Архитектура POWER в этой форме может обеспечивать уровень производительности и масштабируемость, превышающие возможности современных персональных компьютеров. PowerPC базируется на платформе RS/6000 в дешевой конфигурации. В архитектурном плане основные отличия этих двух разработок заключаются лишь в том, что системы PowerPC используют однокристальную реализацию архитектуры POWER, изготавливаемую компанией Motorola, в то время как большинство систем
RS/6000 используют многокристальную реализацию. Имеется несколько вариаций процессора PowerPC, обеспечивающих потребности портативных изделий и настольных рабочих станций, но это не исключает возможность применения этих процессоров в больших системах. Первым на рынке был объявлен процессор 601, предназначенный для использования в настольных рабочих станциях компаний
IBM и Apple. За ним последовали кристаллы 603 для портативных и настольных систем начального уровня и 604 для высокопроизводительных настольных систем. Наконец, процессор 620 разработан специально для серверных конфигураций и ожидается, что со своей 64-битовой организацией он обеспечит исключительно высокий уровень производительности.

При разработке архитектуры PowerPC для удовлетворения потребностей трех различных компаний (Apple, IBM и Motorola) при сохранении совместимости с RS/6000, в архитектуре POWER было сделано несколько изменений в следующих направлениях: упрощение архитектуры с целью ее приспособления ее для реализации дешевых однокристальных процессоров; устранение команд, которые могут стать препятствием повышения тактовой частоты; устранение архитектурных препятствий суперскалярной обработке и внеочередному выполнению команд; добавление свойств, необходимых для поддержки симметричной многопроцессорной обработки; добавление новых свойств, считающихся необходимыми для будущих прикладных программ; ясное определение линии раздела между "архитектурой" и "реализацией"; обеспечение длительного времени жизни архитектуры путем ее расширения до 64- битовой.

Первый микропроцессор PowerPC, PowerPC 601, в настоящее время выпускается как компанией IBM, так и компанией Motorola. Он представляет собой процессор среднего класса и предназначен для использования в настольных вычислительных системах малой и средней стоимости. Он был разработан в качестве переходной модели от архитектуры POWER к архитектуре
PowerPC и реализует возможности обеих архитектур. При этом двоичные коды
RS/6000 выполняются на нем без изменений, что дало дополнительное время разработчикам компиляторов для освоения архитектуры PowerPC, а также разработчикам прикладных систем, которые должны перекомпилировать свои программы, чтобы полностью использовать возможности архитектуры PowerPC.

Процессор 601 базировался на однокристальном процессоре IBM, который был разработан к моменту создания альянса трех ведущих фирм. Но по сравнению со своим предшественником, PowerPC 601 претерпел серьезные изменения в сторону повышения производительности и снижения стоимости.
Например, в его состав было включено более сложное устройство переходов, расширенные возможностями мультипроцессорной работы, включая интерфейс шины высокопроизводительного процессора 88110 компании Motorola. В Power 601 реализована суперскалярная обработка, позволяющая выдавать на выполнение в каждом такте 3 команды, возможно не в порядке их расположения в программном коде.

Процессор PowerPC 603

PowerPC 603 является первым микропроцессором в семействе PowerPC, который полностью поддерживает архитектуру PowerPC (рисунок 6.). Он включает пять функциональных устройств: устройство переходов, целочисленное устройство, устройство плавающей точки, устройство загрузки/записи и устройство системных регистров, а также две, расположенных на кристалле кэш- памяти для команд и данных, емкостью по 8 Кбайт. Поскольку PowerPC 603 - суперскалярный микропроцессор, он может выдавать в эти исполнительные устройства и завершать выполнение до трех команд в каждом такте. Для увеличения производительности PowerPC 603 допускает внеочередное выполнение команд. Кроме того он обеспечивает программируемые режимы снижения потребляемой мощности, которые дают разработчикам систем гибкость реализации различных технологий управления питанием.

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

В случае промаха при обращении к кэш-памяти, обращение к основной памяти осуществляется с помощью 64-битовой высокопроизводительной шины, подобной шине микропроцессора MC88110. Для максимизации пропускной способности и, как следствие, увеличения общей производительности кэш- память взаимодействует с основной памятью главным образом посредством групповых операций, которые позволяют заполнить строку кэш-памяти за одну транзакцию.

После окончания выполнения команды в исполнительном устройстве ее результаты направляются в буфер завершения команд (completion buffer) и затем последовательно записываются в соответствующий регистровый файл по мере изъятия команд из буфера завершения. Для минимизации конфликтов по регистрам, в процессоре PowerPC 603 предусмотрены отдельные наборы из 32 целочисленных регистров общего назначения и 32 регистров плавающей точки.
PowerPC 604

Суперскалярный процессор PowerPC 604 обеспечивает одновременную выдачу до четырех команд. При этом параллельно в каждом такте может завершаться выполнение до шести команд. На рисунке 5.21 представлена блок- схема процессора 604. Процессор включает шесть исполнительных устройств, которые могут работать параллельно: устройство плавающей точки (FPU); устройство выполнения переходов (BPU); устройство загрузки/записи (LSU); три целочисленных устройства (IU): два однотактных целочисленных устройства (SCIU); одно многотактное целочисленное устройство (MCIU).

Такая параллельная конструкция в сочетании со спецификацией команд
PowerPC, допускающей реализацию ускоренного выполнения команд, обеспечивает высокую эффективность и большую пропускную способность процессора.
Применяемые в процессоре 604 буфера переименования регистров, буферные станции резервирования, динамическое прогнозирование направления условных переходов и устройство завершения выполнения команд существенно увеличивают пропускную способность системы, гарантируют завершение выполнения команд в порядке, предписанном программой, и обеспечивают реализацию модели точного прерывания.

В процессоре 604 имеются отдельные устройства управления памятью и отдельные по 16 Кбайт внутренние кэши для команд и данных. В нем реализованы два буфера преобразования виртуальных адресов в физические TLB
(отдельно для команд и для данных), содержащие по 128 строк. Оба буфера являются двухканальными множественно-ассоциативными и обеспечивают переменный размер страниц виртуальной памяти. Кэш-памяти и буфера TLB используют для замещения блоков алгоритм LRU.

Процессор 604 имеет 64-битовую внешнюю шину данных и 32-битовую шину адреса. Интерфейсный протокол процессора 604 позволяет нескольким главным устройствам шины конкурировать за системные ресурсы при наличии централизованного внешнего арбитра. Кроме того, внутренние логические схемы наблюдения за шиной поддерживают когерентность кэш-памяти в мультипроцессорных конфигурациях. Процессор 604 обеспечивает как одиночные, так и групповые пересылки данных при обращении к основной памяти.

К концу 1995 года ожидается появление нового процессора PowerPC 620.
В отличие от своих предшественников это будет полностью 64-битовый процессор. При работе на тактовой частоте 133 МГц его производительность оценивается в 225 единиц SPECint92 и 300 единиц SPECfp92, что соответственно на 40 и 100% больше показателей процессора PowerPC 604.

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

В процессоре имеется кэш-память данных и команд общей емкостью 64
Кбайт, интерфейсные схемы управления кэш-памятью второго уровня, 128- битовая шина данных между процессором и основной памятью, а также логические схемы поддержания когерентного состояния памяти при организации многопроцессорной системы.

Процессор PowerPC 620 нацелен на рынок высокопроизводительных рабочих станций и серверов.

В заключении отметим, что в иллюстрациях к курсу приведены основные характеристики некоторых современных систем, построенных на рассмотренных в данном разделе процессорах.

4. Особенности архитектуры MIPS компании MIPS Technology

Архитектура MIPS была одной из первых RISC-архитектур, получившей признание со стороны промышленности. Она была анонсирована в 1986 году.
Первоначально это была полностью 32-битовая архитектура, которая включала
32 регистра общего назначения, 16 регистров плавающей точки и специальную пару регистров для хранения результатов выполнения операций целочисленного умножения и деления. Размер команд составлял 32 бит, в ней поддерживался всего один метод адресации, и пользовательское адресное пространство также определялось 32 битами. Выполнение арифметических операций регламентировалось стандартом IEEE 754. В компьютерной промышленности широкую популярность приобрели 32-битовые процессоры R2000 и R3000, которые в течение достаточно длительного времени служили основой для построения рабочих станций и серверов компаний Silicon Graphics, Digital, Siemens
Nixdorf и др. Процессоры R3000/R3010 работали на тактовой частоте 33 или 40
МГц и обеспечивали производительность на уровне 20 SPECint92 и 23 SPECfp92.

Затем на смену микропроцессорам семейства R3000 пришли новые 64- битовые микропроцессоры R4000 и R4400. (MIPS Technology была первой компанией выпустившей процессоры с 64-битовой архитектурой). Набор команд этих процессоров (спецификация MIPS II) был расширен командами загрузки и записи 64-разрядных чисел с плавающей точкой, командами вычисления квадратного корня с одинарной и двойной точностью, командами условных прерываний, а также атомарными операциями, необходимыми для поддержки мультипроцессорных конфигураций. В процессорах R4000 и R4400 реализованы 64- битовые шины данных и 64-битовые регистры. В этих процессорах применяется метод удвоения внутренней тактовой частоты.

Процессоры R2000 и R3000 имели стандартные пятиступенчатые конвейеры команд. В процессорах R4000 и R4400 применяются более длинные конвейеры
(иногда их называют суперконвейерами). Количество ступеней в процессорах
R4000 и R4400 увеличилось до восьми, что объясняется прежде всего увеличением тактовой частоты и необходимостью распределения логики для обеспечения заданной пропускной способности конвейера. Процессор R4000 может работать с тактовой частотой 50/100 МГц и обеспечивает уровень производительности в 58 SPECint92 и 61 SPECfp92. Процессор R4400 может работать на частоте 50/100 МГц, или 75/150 МГц, показывая уровень производительности 94 SPECint92 и 105 SPECfp92.

Внутренняя кэш-память процессора R4000 имеет емкость 16 Кбайт. Она разделена на 8-Кб кэш команд и 8-Кб кэш данных. С точки зрения реализации кэш-памяти процессор R4400 имеет более развитые возможности. Он выпускается в трех модификациях: PC (Primary Cashe) - имеет внутренние кэши команд и данных емкостью по 16 Кбайт. Процессор в такой конфигурации предназначен главным образом для дешевых моделей рабочих станций. SC (Secondary Cashe) содержит логику управления кэш-памятью второго уровня. MC (Multiprocessor
Cashe) - использует специальные алгоритмы обеспечения когерентности и согласованного состояния памяти для многопроцессорных конфигураций.

В середине 1994 года компания MIPS анонсировала процессор R8000, который прежде всего был ориентирован на научные прикладные задачи с интенсивным использованием операций с плавающей точкой. Этот процессор построен на двух кристаллах (выпускается в виде многокристальной сборки) и представляет собой первую суперскалярную реализацию архитектуры MIPS.
Теоретическая пиковая производительность процессора для тактовой частоты 75
МГц составляет 300 MFLOPs (до четырех команд и шести операций с плавающей точкой в каждом такте). Реализация большой кэш-памяти данных емкостью 16
Мбайт, высокой пропускной способности доступа к данным (до 1.2 Гбайт/с) в сочетании с высокой скоростью выполнения операций позволяет R8000 достигать
75% теоретической производительности даже при решении больших задач типа
LINPACK с размерами матриц 1000x1000 элементов. Аппаратные средства поддержки когерентного состояния кэш-памяти вместе со средствами распараллеливания компиляторов обеспечивают возможность построения высокопроизводительных симметричных многопроцессорных систем. Например, процессоры R8000 используются в системе Power Challenge компании Silicon
Graphics, которая вполне может сравниться по производительности с известными суперкомпьютерами Cray Y-MP, имеет на порядок меньшую стоимость и предъявляет значительно меньшие требования к подсистемам питания и охлаждения. В однопроцессорном исполнении эта система обеспечивает производительность на уровне 310 SPECfp92 и 265 MFLOPs на пакете LINPACK
(1000x1000).

В 1994 году MIPS Technology объявила также о создании своего нового суперскалярного процессора R10000. MIPS Technology R10000 обеспечивает пиковую производительность в 800 MIPS при работе с внутренней тактовой частотой 200 МГц за счет обеспечения выдачи для выполнения четырех команд в каждом такте синхронизации. При этом он обеспечивает обмен данными с кэш- памятью второго уровня со скоростью 3.2 Гбайт/с.

Рис. 8. Блок-схема микропроцессора R10000

Иерархия памяти

При разработке процессора R10000 большое внимание было уделено эффективной реализации иерархии памяти. В нем обеспечиваются раннее обнаружение промахов кэш-памяти и параллельная перезагрузка строк с выполнением другой полезной работой. Реализованные на кристалле кэши поддерживают одновременную выборку команд, выполнение команд загрузки и записи данных в память, а также операций перезагрузки строк кэш-памяти.
Заполнение строк кэш-памяти выполняется по принципу "запрошенное слово первым", что позволяет существенно сократить простои процессора из-за ожидания требуемой информации. Все кэши имеют двухканальную множественно- ассоциативную организацию с алгоритмом замещения LRU.

Кэш-память данных первого уровня

Кэш-память данных первого уровня процессора R10000 имеет емкость 32
Кбайт и организована в виде двух одинаковых банков емкостью по 16 Кбайт, что обеспечивает двухкратное расслоение при выполнении обращений к этой кэш- памяти. Каждый банк представляет собой двухканальную множественно- ассоциативную кэш-память с размером строки (блока) в 32 байта. Кэш данных индексируется с помощью виртуального адреса и хранит теги физических адресов памяти. Такой метод индексации позволяет выбрать подмножество кэш- памяти в том же такте, в котором формируется виртуальный адрес. Однако для того, чтобы поддерживать когерентность с кэш-памятью второго уровня, в кэше первого уровня хранятся теги физических адресов памяти.

Массивы данных и тегов в каждом банке являются независимыми. Эти четыре массива работают под общим управлением очереди формирования адресов памяти и схем внешнего интерфейса кристалла. В очереди адресов могут одновременно находиться до 16 команд загрузки и записи, которые обрабатываются в четырех отдельных конвейерах. Команды из этой очереди динамически выдаются для выполнения в специальный конвейер, который обеспечивает вычисление исполнительного виртуального адреса и преобразование этого адреса в физический. Три других параллельно работающих конвейера могут одновременно выполнять проверку тегов, осуществлять пересылку данных для команд загрузки и завершать выполнение команд записи в память. Хотя команды выполняются в строгом порядке их расположения в памяти, вычисление адресов и пересылка данных для команд загрузки могут происходить неупорядоченно. Схемы внешнего интерфейса кристалла могут выполнять заполнение или обратное копирование строк кэш-памяти, либо операции просмотра тегов. Такая параллельная работа большинства устройств процессора позволяет R10000 эффективно выполнять реальные многопроцессорные приложения.

Работа конвейеров кэш-памяти данных тесно координирована. Например, команды загрузки могут выполнять проверку тегов и чтение данных в том же такте, что и преобразование адреса. Команды записи сразу же начинают проверку тегов, чтобы в случае необходимости как можно раньше инициировать заполнение требуемой строки из кэш-памяти второго уровня, но непосредственная запись данных в кэш задерживается до тех пор, пока сама команда записи не станет самой старой командой в общей очереди выполняемых команд и ей будет позволено зафиксировать свой результат ("выпустится").
Промах при обращении к кэш-памяти данных первого уровня инициирует процесс заполнения строки из кэш-памяти второго уровня. При выполнении команд загрузки одновременно с заполнением строки кэш-памяти данные могут поступать по цепям обхода в регистровый файл.

При обнаружении промаха при обращении к кэш-памяти данных ее работа не блокируется, т.е. она может продолжать обслуживание следующих запросов.
Это особенно полезно для уменьшения такого важного показателя качества реализованной архитектуры как среднее число тактов на команду (CPI - clock cycles per instruction). На рисунке 5.14 представлены результаты моделирования работы R10000 на нескольких программах тестового пакета SPEC.
Для каждого теста даны два результата: с блокировкой кэш-памяти данных при обнаружении промаха (вверху) и действительное значение CPI R10000 (внизу).
Выделенная более темным цветом правая область соответствует времени, потерянному из-за промахов кэш-памяти. Верхний результат отражает полную задержку в случае, если бы все операции по перезагрузке кэш-памяти выполнялись строго последовательно. Таким образом, стрелка представляет потери времени, которые возникают в блокируемом кэше. Эффект применения неблокируемой кэш-памяти сильно зависит характеристик самих программ. Для небольших тестов, рабочие наборы которых полностью помещаются в кэш-памяти первого уровня, этот эффект не велик. Однако для более реальных программ, подобных тесту tomcatv или тяжелому для кэш-памяти тесту compress, выигрыш оказывается существенным.

Кэш-память второго уровня

Интерфейс кэш-памяти второго уровня процессора R10000 поддерживает
128-битовую магистраль данных, которая может работать с тактовой частотой до 200 МГц, обеспечивая скорость обмена до 3.2 Гбайт/с (для снижения требований к быстродействию микросхем памяти предусмотрена также возможность деления частоты с коэффициентами 1.5, 2, 2.5 и 3). Все стандартные синхронные сигналы управления статической памятью вырабатываются внутри процессора. Не требуется никаких внешних интерфейсных схем. Минимальный объем кэш-памяти второго уровня составляет 512 Кбайт, максимальный размер - 16 Мбайт. Размер строки этой кэш-памяти программируется и может составлять 64 или 128 байт.

Одним из методов улучшения временных показателей работы кэш-памяти является построение псевдо-множествнно-ассоциативной кэш-памяти. В такой кэш-памяти частота промахов находится на уровне частоты промахов множественно-ассоциативной памяти, а время выборки при попадании соответствует кэш-памяти с прямым отображением. Кэш-память R10000 организована именно таким способом, причем для ее реализации используются стандартные синхронные микросхемы памяти (SRAM). В одном наборе микросхем памяти находятся оба канала кэша. Информация о частоте использования этих каналов хранится в схемах управления кэшем на процессорном кристалле.
Поэтому после обнаружения промаха в первичном кэше из наиболее часто используемого канала вторичного кэша считываются две четырехсловные строки.
Их теги считываются вместе с первой четырехсловной строкой, а теги альтернативного канала читаются одновременно со второй четырехсловной строкой (это осуществляется простым инвертированием старшего разряда адреса).

При этом возможны три случая. Если происходит попадание по первому каналу, то данные доступны немедленно. Если происходит попадание по альтернативному каналу, происходит повторное чтение вторичного кэша. Если отсутствует попадание по обоим каналам, вторичный кэш должен перезаполняться из основной памяти.

Для обеспечения целостности данных в кэш-памяти большой емкости обычной практикой является использование кодов исправляющих одиночные ошибки (ECC-кодов). В R10000 с каждой четырехсловной строкой хранится 9- битовый ECC-код и бит четности. Дополнительный бит четности позволяет сократить задержку, поскольку проверка на четность может быть выполнена очень быстро, чтобы предотвратить использование некорректных данных. При этом, если обнаруживается корректируемая ошибка, то чтение повторяется через специальный двухтактный конвейер коррекции ошибок.

Кэш-память команд

Объем внутренней двухканальной множественно-ассоциативной кэш-памяти команд составляет 32 Кбайт. В процессе ее загрузки команды частично декодируются. При этом к каждой команде добавляются 4 дополнительных бит, которые указывают исполнительное устройство, в котором она будет выполняться. Таким образом, в кэш-памяти команды хранятся в 36-битовом формате. Размер строки кэш-памяти команд составляет 64 байта.

Обработка команд перехода

При реализации конвейерной обработки возникают ситуации, которые препятствуют выполнению очередной команды из потока команд в предназначенном для нее такте. Такие ситуации называются конфликтами.
Конфликты снижают реальную производительность конвейера, которая могла бы быть достигнута в идеальном случае. Одним из типов конфликтов, с которыми приходится иметь дело разработчикам высокопроизводительных процессоров, являются конфликты по управлению, которые возникают при конвейеризации команд перехода и других команд, изменяющих значение счетчика команд.

Конфликты по управлению могут вызывать даже большие потери производительности суперскалярного процессора, чем конфликты по данным. По статистике среди команд управления, меняющих значение счетчика команд, преобладают команды условного перехода. Таким образом, снижение потерь от условных переходов становится критически важным вопросом. Имеется несколько методов сокращения приостановок конвейера, возникающих из-за задержек выполнения условных переходов. В процессоре R10000 используются два наиболее мощных метода динамической оптимизации выполнения условных переходов: аппаратное прогнозирование направления условных переходов и
"выполнение по предположению" (speculation).

Устройство переходов процессора R10000 может декодировать и выполнять только по одной команде перехода в каждом такте. Поскольку за каждой командой перехода следует слот задержки, максимально могут быть одновременно выбраны две команды перехода, но только одна более ранняя команда перехода может декодироваться в данный момент времени. Во время декодирования команд к каждой команде добавляется бит признака перехода.
Эти биты используются для пометки команд перехода в конвейере выборки команд.

Направление условного перехода прогнозируется с помощью специальной памяти (branch history table) емкостью 512 строк, которая хранит историю выполнения переходов в прошлом. Обращение к этой таблице осуществляется с помощью адреса команды во время ее выборки. Двухбитовый код прогноза в этой памяти обновляется каждый раз, когда принято окончательное решение о направлении перехода. Моделирование показало, что точность двухбитовой схемы прогнозирования для тестового пакета программ SPEC составляет 87%.

Все команды, выбранные вслед за командой условного перехода, считаются выполняемыми по предположению (условно). Это означает, что в момент их выборки заранее не известно, будет ли завершено их выполнение.
Процессор допускает предварительную обработку и прогнозирование направления четырех команд условного перехода, которые могут разрешаться в произвольном порядке. При этом для каждой выполняемой по предположению команды условного перехода в специальный стек переходов записывается информация, необходимая для восстановления состояния процессора в случае, если направление перехода было предсказано неверно. Стек переходов имеет глубину в 4 элемента и позволяет в случае необходимости быстро и эффективно (за один такт) восстановить конвейер.

Структура очередей команд

Процессор R10000 содержит три очереди (буфера) команд (очередь целочисленных команд, очередь команд плавающей точки и адресную очередь).
Эти три очереди осуществляют динамическую выдачу команд в соответствующие исполнительные устройства. С каждой командой в очереди хранится тег команды, который перемещается вместе с командой по ступеням конвейера.
Каждая очередь осуществляет динамическое планирование потока команд и может определить моменты времени, когда становятся доступными операнды, необходимые для выполнения каждой команды. Кроме того, очередь определяет порядок выполнения команд на основе анализа состояния соответствующих исполнительных устройств. Как только ресурс оказывается свободным очередь выдает команду в соответствующее исполнительное устройство.

Очередь целочисленных команд

Очередь целочисленных команд содержит 16 строк и выдает команды в два арифметико-логических устройства. Целочисленные команды поступают в свободные строки этой очереди, причем в каждом такте в нее могут записываться до 4 команд. Целочисленные команды остаются в очереди до тех пор, пока они не будут выданы в одно из АЛУ.

Очередь команд плавающей точки

Очередь команд плавающей точки также содержит 16 строк и выдает команды в исполнительные устройства сложения и умножения с плавающей точкой. Команды плавающей точки поступают в свободные строки очереди, причем в каждом такте в нее могут записываться до 4 команд. Команды остаются в очереди до тех пор, пока они не будут выданы в одно из исполнительных устройств. Очередь команд плавающей точки содержит также логику управления команд типа "умножить-сложить". Эта команда сначала направляется в устройство умножения, а затем прямо в устройство сложения.

Адресная очередь

Очередь адресных команд выдает команды в устройство загрузки/записи и содержит 16 строк. Очередь организована в виде циклического буфера FIFO
(first-in first-out). Команды могут выдаваться в произвольном порядке, но должны записываться в очередь и изыматься из нее строго последовательно. В каждом такте в очередь могут поступать до 4 команд. Буфер FIFO поддерживает первоначальную последовательность команд, что упрощает обнаружение зависимостей по адресам. Выполнение выданной команды может не закончиться при обнаружении зависимости по адресам, кэш-промаха или конфликта по ресурсам. В этих случаях адресная очередь должна заново повторять выдачу команды до тех пор, пока ее выполнение не завершится.

Переименование регистров

Одним из аппаратных методов минимизации конфликтов по данным является метод переименования регистров (register renaming). Он получил свое название от широко применяющегося в компиляторах метода переименования - метода размещения данных, способствующего сокращению числа зависимостей и тем самым увеличению производительности при отображении необходимых исходной программе объектов (например, переменных) на аппаратные ресурсы
(например, ячейки памяти и регистры).

При аппаратной реализации метода переименования регистров выделяются логические регистры, обращение к которым выполняется с помощью соответствующих полей команды, и физические регистры, которые размещаются в аппаратном регистровом файле процессора. Номера логических регистров динамически отображаются на номера физических регистров посредством таблиц отображения, которые обновляются после декодирования каждой команды. Каждый новый результат записывается в новый физический регистр. Однако предыдущее значение каждого логического регистра сохраняется и может быть восстановлено в случае, если выполнение команды должно быть прервано из-за возникновения исключительной ситуации или неправильного предсказания направления условного перехода.

В процессе выполнения программы генерируется множество временных регистровых результатов. Эти временные значения записываются в регистровые файлы вместе с постоянными значениями. Временное значение становится новым постоянным значением, когда завершается выполнение команды (фиксируется ее результат). В свою очередь, завершение выполнения команды происходит когда все предыдущие команды успешно завершились в заданном программой порядке.
Программист (или компилятор) имеет дело только с логическими регистрами.
Реализация физических регистров от него скрыта.

Таким образом, аппаратный метод переименования регистров, используемый в процессоре R10000, имеет три основных достоинства. Во- первых, результаты "выполняемых по предположению" команд могут прямо записываться в регистровый файл. Во-вторых, этот метод устраняет все конфликты типа "запись после чтения" и "запись после записи", которые часто возникают при неупорядоченном выполнении команд. И, наконец, метод переименования регистров упрощает контроль зависимостей по данным.
Поскольку процессор обеспечивает выдачу для выполнения до четырех команд в каждом такте, в процессе переименования регистров их логические номера сравниваются для определения зависимостей между четырьмя командами, декодированными в одном и том же такте.

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

Микропроцессор R10000 содержит по 64 физических регистра
(целочисленных и плавающей точки). В любой момент времени значение физического регистра содержится в одном из указанных выше списков. На рисунке 5.15 показана упрощенная блок-схема отображения целочисленных команд.

Команды выбираются из кэша команд и помещаются в таблицу отображения.
В любой момент времени каждый из 64 номеров физических регистров находится в одном из трех указанных на рисунке блоков.

Список активных команд длиною 32 элемента может хранить упорядоченную в соответствии с программой последовательность команд, которые могут находиться в обработке в любой данный момент времени. Команды из очереди целочисленных команд могут выполняться неупорядочено и записывать результаты в физические регистры, но порядок их окончательного завершения определяется списком активных команд.

На этом касательно MIPS можно пока остановиться. Перейдем теперь так же плавненько к процессорам с архитектурой SPARC.

5. Особенности процессоров с архитектурой SPARC компании Sun Microsystems

Масштабируемая процессорная архитектура SPARC (Scalable Processor
Architecture) компании Sun Microsystems является наиболее широко распространенной RISC-архитектурой, отражающей доминирующее положение компании на рынке UNIX рабочих станций и серверов. Процессоры с архитектурой SPARC лицензированы и изготавливаются по спецификациям Sun несколькими производителями, среди которых следует отметить компании Texas
Instruments, Fujitsu, LSI Logic, Bipolar International Technology, Philips,
Cypress Semiconductor и Ross Technologies. Эти компании осуществляют поставки процессоров SPARC не только самой Sun Microsystems, но и другим известным производителям вычислительных систем, например, Solbourne,
Toshiba, Matsushita, Tatung и Cray Research.

Первоначально архитектура SPARC была разработана с целью упрощения реализации 32-битового процессора. В последствии, по мере улучшения технологии изготовления интегральных схем, она постепенно развивалось и в настоящее время имеется 64-битовая версия этой архитектуры (SPARC-V9), которая положена в основу новых микропроцессоров, получивших название
UltraSPARC. Первый процессор SPARC был изготовлен компанией Fujitsu на базе вентильной матрицы, работающей на частоте 16.67 МГц. На основе этого процессора была разработана первая рабочая станция Sun-4 с производительностью 10 MIPS, объявленная осенью 1987 года (до этого времени компания Sun использовала в своих изделиях микропроцессоры Motorola 680X0).
В марте 1988 года Fujitsu увеличила тактовую частоту до 25 МГц создав процессор с производительностью 15 MIPS.

Позднее компания Sun умело использовала конкуренцию среди компаний- поставщиков интегральных схем, выбирая наиболее удачные разработки для реализации своих изделий SPARCstation 1, 1+, IPC, ELC, IPX, 2 и серверов серий 4xx и 6xx. Тактовая частота процессоров SPARC была повышена до 40
МГц, а производительность - до 28 MIPS.

Дальнейшее увеличение производительности процессоров с архитектурой
SPARC было достигнуто за счет реализации в кристаллах принципов суперскалярной обработки компаниями Texas Instruments и Cypress. Процессор
SuperSPARC компании Texas Instruments стал основой серии рабочих станций и серверов SPARCstation/SPARCserver 10 и 20. В зависимости от смеси команд он обеспечивает выдачу до трех команд за один машинный такт. Процессор
SuperSPARC имеет сбалансированную производительность на операциях с фиксированной и плавающей точкой. Он имеет внутренний кэш емкостью 36 Кб
(20 Кб - кэш команд и 16 Кб - кэш данных), раздельные конвейеры целочисленной и вещественной арифметики и при тактовой частоте 75 МГц обеспечивает производительность около 205 MIPS.

Хотя архитектура SPARC в течение длительного времени оставалась доминирующей на рынке процессоров RISC, особенно в секторе рабочих станций, повышение тактовой частоты процессоров в 1992-1994 годах происходило более медленными темпами по сравнению с повышением тактовой частоты конкурирующих архитектур процессоров. Чтобы ликвидировать это отставание, а также в ответ на появление на рынке 64-битовых процессоров компания Sun разработала и проводит в жизнь пятилетнюю программу модернизации. В соответствии с этой программой Sun планировала довести тактовую частоту процессоров MicroSPARC до 100 МГц в 1994 году (процессор MicroSPARC II с тактовой частотой 110 МГц используется в рабочих станциях и серверах SPARCstation 4 и 5). В конце
1994 и в течение 1995 года на рынке появились микропроцессоры hyperSPARC и однопроцессорные и многопроцессорные рабочие станции SPARCstation 20 с тактовой частотой процессора 100, 125 и 150 МГц. К середине 1995 года тактовая частота процессоров SuperSPARC была доведена до 85 МГц (60, 75 и
85 МГц версии этого процессора в настоящее время применяются в рабочих станциях и серверах SPARCstation 20, SPARCserver 1000 и SPARCcenter 2000 компании Sun и 64-процессорном сервере компании Cray Research). Наконец, в ноябре 1995 года, появились 64-битовые процессоры UltraSPARC-I с тактовой частотой 143, 167 и 200 МГц, и процессоры UltraSPARC-II с тактовой частотой от 250 до 300 МГц, серийное производство которых началось в середине 1996 года. В дальнейшем начался выпуск процессоров UltraSPARC-III с частотой до
500 МГц.

Имеется несколько версий этого процессора, позволяющего в зависимости от смеси команд обрабатывать до трех команд за один машинный такт, отличающихся тактовой частотой (50, 60, 75 и 85 МГц). Процессор SuperSPARC
(рисунок 9) имеет сбалансированную производительность на операциях с фиксированной и плавающей точкой. Он имеет внутренний кэш емкостью 36 Кб
(20 Кб - кэш команд и 16 Кб - кэш данных), раздельные конвейеры целочисленной и вещественной арифметики и при тактовой частоте 75 МГц обеспечивает производительность около 205 MIPS. Процессор SuperSPARC применяется также в серверах SPARCserver 1000 и SPARCcenter 2000 компании
Sun.

Конструктивно кристалл монтируется на взаимозаменяемых процессорных модулях трех типов, отличающихся наличием и объемом кэш-памяти второго уровня и тактовой частотой. Модуль M-bus SuperSPARC, используемый в модели
50 содержит 50-МГц SuperSPARC процессор с внутренним кэшем емкостью 36 Кб
(20 Кб кэш команд и 16 Кб кэш данных). Модули M-bus SuperSPARC в моделях
51, 61 и 71 содержат по одному SuperSPARC процессору, работающему на частоте 50, 60 и 75 МГц соответственно, одному кристаллу кэш-контроллера
(так называемому SuperCache), а также внешний кэш емкостью 1 Мб. Модули M- bus в моделях 502, 612, 712 и 514 содержат два SuperSPARC процессора и два кэш-контроллера каждый, а последние три модели и по одному 1 Мб внешнему кэшу на каждый процессор. Использование кэш-памяти позволяет модулям CPU работать с тактовой частотой, отличной от тактовой частоты материнской платы; пользователи всех моделей поэтому могут улучшить производительность своих систем заменой существующих модулей CPU вместо того, чтобы производить upgrade всей материнской платы.

Рис. 9. hyperSPARC

Одной из главных задач, стоявших перед разработчиками микропроцессора hyperSPARC, было повышение производительности, особенно при выполнении операций с плавающей точкой. Поэтому особое внимание разработчиков было уделено созданию простых и сбалансированных шестиступенчатых конвейеров целочисленной арифметики и плавающей точки. Логические схемы этих конвейеров тщательно разрабатывались, количество логических уровней вентилей между ступенями выравнивалось, чтобы упростить вопросы дальнейшего повышения тактовой частоты.

Производительность процессоров hyperSPARC может меняться независимо от скорости работы внешней шины (MBus). Набор кристаллов hyperSPARC обеспечивает как синхронные, так и асинхронные операции с помощью специальной логики кристалла RT625. Отделение внутренней шины процессора от внешней шины позволяет увеличивать тактовую частоту процессора независимо от частоты работы подсистем памяти и ввода/вывода. Это обеспечивает более длительный жизненный цикл, поскольку переход на более производительные модули hyperSPARC не требует переделки всей системы.

Процессорный набор hyperSPARC с тактовой частотой 100 МГц построен на основе технологического процесса КМОП с тремя уровнями металлизации и проектными нормами 0.5 микрон. Внутренняя логика работает с напряжением питания 3.3В.

Процессор hyperSPARC реализован в виде многокристальной микросборки
(рисунок 5.4), в состав которой входит суперскалярная конвейерная часть и тесно связанная с ней кэш-память второго уровня. В набор кристаллов входят
RT620 (CPU) - центральный процессор, RT625 (CMTU) - контроллер кэш-памяти, устройство управления памятью и устройство тегов и четыре RT627 (CDU) кэш- память данных для реализации кэш-памяти второго уровня емкостью 256 Кбайт.
RT625 обеспечивает также интерфейс с MBus. Центральный процессор RT620
(рисунок 10) состоит из целочисленного устройства, устройства с плавающей точкой, устройства загрузки/записи, устройства переходов и двухканальной множественно-ассоциативной памяти команд емкостью 8 Кбайт. Целочисленное устройство включает АЛУ и отдельный тракт данных для операций загрузки/записи, которые представляют собой два из четырех исполнительных устройств процессора. Устройство переходов обрабатывает команды передачи управления, а устройство плавающей точки, реально состоит из двух независимых конвейеров - сложения и умножения чисел с плавающей точкой. Для увеличения пропускной способности процессора команды плавающей точки, проходя через целочисленный конвейер, поступают в очередь, где они ожидают запуска в одном из конвейеров плавающей точки. В каждом такте выбираются две команды. В общем случае, до тех пор, пока эти две команды требуют для своего выполнения различных исполнительных устройств при отсутствии зависимостей по данным, они могут запускаться одновременно. RT620 содержит два регистровых файла: 136 целочисленных регистров, сконфигурированных в виде восьми регистровых окон, и 32 отдельных регистра плавающей точки, расположенных в устройстве плавающей точки. Кэш-память второго уровня в процессоре hyperSPARC строится на базе RT625 CMTU, который представляет собой комбинированный кристалл, включающий контроллер кэш-памяти и устройство управления памятью, которое поддерживает разделяемую внешнюю память и симметричную многопроцессорную обработку. Контроллер кэш-памяти поддерживает кэш емкостью 256 Кбайт, состоящий из четырех RT627 CDU. Кэш- память имеет прямое отображение и 4К тегов. Теги в кэш-памяти содержат физические адреса, поэтому логические схемы для соблюдения когерентности кэш-памяти в многопроцессорной системе, имеющиеся в RT625, могут быстро определить попадания или промахи при просмотре со стороны внешней шины без приостановки обращений к кэш-памяти со стороны центрального процессора.
Поддерживается как режим сквозной записи, так и режим обратного копирования.

Устройство управления памятью содержит в своем составе полностью ассоциативную кэш-память преобразования виртуальных адресов в физические
(TLB), состоящую из 64 строк, которая поддерживает 4096 контекстов. RT625 содержит буфер чтения емкостью 32 байта, используемый для загрузки, и буфер записи емкостью 64 байта, используемый для разгрузки кэш-памяти второго уровня. Размер строки кэш-памяти составляет 32 байта. Кроме того, в RT625 имеются логические схемы синхронизации, которые обеспечивают интерфейс между внутренней шиной процессора и SPARC MBus при выполнении асинхронных операций.

RT627 представляет собой статическую память 16К (32, специально разработанную для удовлетворения требований hyperSPARC. Она организована как четырехканальная статическая память в виде четырех массивов с логикой побайтной записи и входными и выходными регистрами-защелками. RT627 для ЦП является кэш-памятью с нулевым состоянием ожидания без потерь (т.е. приостановок) на конвейеризацию для всех операций загрузки и записи, которые попадают в кэш-память. RT627 был разработан специально для процессора hyperSPARC, таким образом для соединения с RT620 и RT625 не нужны никакие дополнительные схемы.

Набор кристаллов позволяет использовать преимущества тесной связи процессора с кэш-памятью. Конструкция RT620 допускает потерю одного такта в случае промаха в кэш-памяти первого уровня. Для доступа к кэш-памяти второго уровня в RT620 отведена специальная ступень конвейера. Если происходит промах в кэш-памяти первого уровня, а в кэш-памяти второго уровня имеет место попадание, то центральный процессор не останавливается.

Команды загрузки и записи одновременно генерируют два обращения: одно к кэш-памяти команд первого уровня емкостью 8 Кбайт и другое к кэш-памяти второго уровня. Если адрес команды найден в кэш-памяти первого уровня, то обращение к кэш-памяти второго уровня отменяется и команда становится доступной на стадии декодирования конвейера. Если же во внутренней кэш- памяти произошел промах, а в кэш-памяти второго уровня обнаружено попадание, то команда станет доступной с потерей одного такта, который встроен в конвейер. Такая возможность позволяет конвейеру продолжать непрерывную работу до тех пор, пока имеют место попадания в кэш-память либо первого, либо второго уровня, которые составляют 90% и 98% соответственно для типовых прикладных задач рабочей станции. С целью достижения архитектурного баланса и упрощения обработки исключительных ситуаций целочисленный конвейер и конвейер плавающей точки имеют по пять стадий выполнения операций. Такая конструкция позволяет RT620 обеспечить максимальную пропускную способность, не достижимую в противном случае.

На рассмотрении этого процессора можно и закончить выкладку по процессорам архитектуры SPARK.

6. Процессоры PA-RISC компании Hewlett-Packard

Основой разработки современных изделий Hewlett-Packard является архитектура PA-RISC. Она была разработана компанией в 1986 году и с тех пор прошла несколько стадий своего развития благодаря успехам интегральной технологии от многокристального до однокристального исполнения. В сентябре
1992 года компания Hewlett-Packard объявила о создании своего суперскалярного процессора PA-7100, который с тех пор стал основой построения семейства рабочих станций HP 9000 Series 700 и семейства бизнес- серверов HP 9000 Series 800. В настоящее время имеются 33-, 50- и 99 МГц реализации кристалла PA-7100. Кроме того выпущены модифицированные, улучшенные по многим параметрам кристаллы PA-7100LC с тактовой частотой 64,
80 и 100 МГц, и PA-7150 с тактовой частотой 125 МГц, а также PA-7200 с тактовой частотой 90 и 100 МГц. Компания активно разрабатывает процессор следующего поколения HP 8000, которые будет работать с тактовой частотой
200 МГц и обеспечивать уровень 360 единиц SPECint92 и 550 единиц SPECfp92.
Появление этого кристалла ожидается в 1996 году. Кроме того, Hewlett-
Packard в сотрудничестве с Intel создала новый процессор с очень длинным командным словом (VLIW-архитектура), который совместим как с семейством
Intel x86, так и семейством PA-RISC. Выпуск этого процессора начался в1998 году. В качестве наглядного примера выберем PA-7100/

Особенностью архитектуры PA-RISC является внекристальная реализация кэша, что позволяет реализовать различные объемы кэш-памяти и оптимизировать конструкцию в зависимости от условий применения (рисунок
12.). Хранение команд и данных осуществляется в раздельных кэшах, причем процессор соединяется с ними с помощью высокоскоростных 64-битовых шин. Кэш- память реализуется на высокоскоростных кристаллах статической памяти
(SRAM), синхронизация которых осуществляется непосредственно на тактовой частоте процессора. При тактовой частоте 100 МГц каждый кэш имеет полосу пропускания 800 Мбайт/с при выполнении операций считывания и 400 Мбайт/с при выполнении операций записи. Микропроцессор аппаратно поддерживает различный объем кэш-памяти: кэш команд может иметь объем от 4 Кбайт до 1
Мбайт, кэш данных - от 4 Кбайт до 2 Мбайт. Чтобы снизить коэффициент промахов применяется механизм хеширования адреса. В обоих кэшах для повышения надежности применяются дополнительные контрольные разряды, причем ошибки кэша команд корректируются аппаратными средствами.

Устройство плавающей точки (рисунок 13) реализует арифметику с одинарной и двойной точностью в стандарте IEEE 754. Его устройство умножения используется также для выполнения операций целочисленного умножения. Устройства деления и вычисления квадратного корня работают с удвоенной частотой процессора. Арифметико-логическое устройство выполняет операции сложения, вычитания и преобразования форматов данных. Регистровый файл состоит из 28 64-битовых регистров, каждый из которых может использоваться как два 32-битовых регистра для выполнения операций с плавающей точкой одинарной точности. Регистровый файл имеет пять портов чтения и три порта записи, которые обеспечивают одновременное выполнение операций умножения, сложения и загрузки/записи. Большинство улучшений производительности процессора связано с увеличением тактовой частоты до 100
МГц по сравнению с 66 МГц у его предшественника.

Конвейер целочисленного устройства включает шесть ступеней: Чтение из кэша команд (IR), Чтение операндов (OR), Выполнение/Чтение из кэша данных
(DR), Завершение чтения кэша данных (DRC), Запись в регистры (RW) и Запись в кэш данных (DW). На ступени ID выполняется выборка команд. Реализация механизма выдачи двух команд требует небольшого буфера предварительной выборки, который обеспечивает предварительную выборку команд за два такта до начала работы ступени IR. Во время выполнения на ступени OR все исполнительные устройства декодируют поля операндов в команде и начинают вычислять результат операции. На ступени DR целочисленное устройство завершает свою работу. Кроме того, кэш-память данных выполняет чтение, но данные не поступают до момента завершения работы ступени DRC. Результаты операций сложения (ADD) и умножения (MULTIPLY) также становятся достоверными в конце ступени DRC. Запись в универсальные регистры и регистры плавающей точки производится на ступени RW. Запись в кэш данных командами записи (STORE) требует двух тактов. Наиболее раннее двухтактное окно команды STORE возникает на ступенях RW и DW. Однако это окно может сдвигаться, поскольку записи в кэш данных происходят только когда появляется следующая команда записи. Операции деления и вычисления квадратного корня для чисел с плавающей точкой заканчиваются на много тактов позже ступени DW.

Конвейер проектировался с целью максимального увеличения времени, необходимого для выполнения чтения внешних кристаллов SRAM кэш-памяти данных. Это позволяет максимизировать частоту процессора при заданной скорости SRAM. Все команды загрузки (LOAD) выполняются за один такт и требуют только одного такта полосы пропускания кэш-памяти данных. Поскольку кэши команд и данных размещены на разных шинах, в конвейере отсутствуют какие-либо потери, связанные с конфликтами по обращениям в кэш данных и кэш команд.

Процессор может в каждом такте выдавать на выполнение одну целочисленную команду и одну команду плавающей точки. Полоса пропускания кэша команд достаточна для поддержания непрерывной выдачи двух команд в каждом такте. Отсутствуют какие-либо ограничения по выравниванию или порядку следования пары команд, которые выполняются вместе. Кроме того, отсутствуют потери тактов, связанных с переключением с выполнения двух команд на выполнение одной команды. Специальное внимание было уделено тому, чтобы выдача двух команд в одном такте не приводила к ограничению тактовой частоты. Чтобы добиться этого, в кэше команд был реализован специально предназначенный для этого заранее декодируемый бит, чтобы отделить команды целочисленного устройства от команд устройства плавающей точки. Этот бит предварительного декодирования команд минимизирует время, необходимое для правильного разделения команд.

Потери, связанные с зависимостями по данным и управлению, в этом конвейере минимальны. Команды загрузки выполняются за один такт, за исключением случая, когда последующая команда пользуется регистром- приемником команды LOAD. Как правило компилятор позволяет обойти подобные потери одного такта. Для уменьшения потерь, связанных с командами условного перехода, в процессоре используется алгоритм прогнозирования направления передачи управления. Для оптимизации производительности циклов передачи управления вперед по программе прогнозируются как невыполняемые переходы, а передачи управления назад по программе - как выполняемые переходы.
Правильно спрогнозированные условные переходы выполняются за один такт.

Количество тактов, необходимое для записи слова или двойного слова командой STORE уменьшено с трех до двух тактов. В более ранних реализациях архитектуры PA-RISC был необходим один дополнительный такт для чтения тега кэша, чтобы гарантировать попадание, а также для того, чтобы объединить старые данные строки кэш-памяти данных с записываемыми данными. PA 7100 использует отдельную шину адресного тега, чтобы совместить по времени чтение тега с записью данных предыдущей команды STORE. Кроме того, наличие отдельных сигналов разрешения записи для каждого слова строки кэш-памяти устраняет необходимость объединения старых данных с новыми, поступающими при выполнении команд записи слова или двойного слова. Этот алгоритм требует, чтобы запись в микросхемы SRAM происходила только после того, когда будет определено, что данная запись сопровождается попаданием в кэш и не вызывает прерывания. Это требует дополнительной ступени конвейера между чтением тега и записью данных. Такая конвейеризация не приводит к дополнительным потерям тактов, поскольку в процессоре реализованы специальные цепи обхода, позволяющие направить отложенные данные команды записи последующим командам загрузки или командам STORE, записывающим только часть слова. Для данного процессора потери конвейера для команд записи слова или двойного слова сведены к нулю, если непосредственно последующая команда не является командой загрузки или записи. В противном случае потери равны одному такту. Потери на запись части слова могут составлять от нуля до двух тактов. Моделирование показывает, что подавляющее большинство команд записи в действительности работают с однословным или двухсловным форматом.

Все операции с плавающей точкой, за исключением команд деления и вычисления квадратного корня, полностью конвейеризованы и имеют двухтактную задержку выполнения как в режиме с одинарной, так и с двойной точностью.
Процессор может выдавать на выполнение независимые команды с плавающей точкой в каждом такте при отсутствии каких-либо потерь. Последовательные операции с зависимостями по регистрам приводят к потере одного такта.
Команды деления и вычисления квадратного корня выполняются за 8 тактов при одиночной и за 15 тактов при двойной точности. Выполнение команд не останавливается из-за команд деления/вычисления квадратного корня до тех пор, пока не потребуется регистр результата или не будет выдаваться следующая команда деления/вычисления квадратного корня.

Процессор может выполнять параллельно одну целочисленную команду и одну команду с плавающей точкой. При этом "целочисленными командами" считаются и команды загрузки и записи регистров плавающей точки, а "команды плавающей точки" включают команды FMPYADD и FMPYSUB. Эти последние команды объединяют операцию умножения с операциями сложения или вычитания соответственно, которые выполняются параллельно. Пиковая производительность составляет 200 MFLOPS для последовательности команд FMPYADD, в которых смежные команды независимы по регистрам.

Потери для операций плавающей точки, использующих предварительную загрузку операнда командой LOAD, составляют один такт, если команды загрузки и плавающей арифметики являются смежными, и два такта, если они выдаются для выполнения одновременно. Для команды записи, использующей результат операции с плавающей точкой, потери отсутствуют, даже если они выполняются параллельно.

Потери, возникающие при промахах в кэше данных, минимизируются посредством применения четырех разных методов: "попадание при промахе" для команд LOAD и STORE, потоковый режим работы с кэшем данных, специальная кодировка команд записи, позволяющая избежать копирования строки, в которой произошел промах, и семафорные операции в кэш-памяти. Первое свойство позволяет во время обработки промаха в кэше данных выполнять любые типы других команд. Для промахов, возникающих при выполнении команды LOAD, обработка последующих команд может продолжаться до тех пор, пока регистр результата команды LOAD не потребуется в качестве регистра операнда для другой команды. Компилятор может использовать это свойство для предварительной выборки в кэш необходимых данных задолго до того момента, когда они действительно потребуются. Для промахов, возникающих при выполнении команды STORE, обработка последующих команд загрузки или операций записи в части одного слова продолжается до тех пор, пока не возникает обращений к строке, в которой произошел промах. Компилятор может использовать это свойство для выполнения команд на фоне записи результатов предыдущих вычислений. Во время задержки, связанной с обработкой промаха, другие команды LOAD и STORE, для которых происходит попадание в кэш данных, могут выполняться как и другие команды целочисленной арифметики и плавающей точки. В течение всего времени обработки промаха команды STORE, другие команды записи в ту же строку кэш-памяти могут происходить без дополнительных потерь времени. Для каждого слова в строке кэш-памяти процессор имеет специальный индикационный бит, предотвращающий копирование из памяти тех слов строки, которые были записаны командами STORE. Эта возможность применяется к целочисленным и плавающим операциям LOAD и STORE.

Выполнение команд останавливается, когда регистр-приемник команды
LOAD, выполняющейся с промахом, требуется в качестве операнда другой команды. Свойство "потоковости" позволяет продолжить выполнение как только нужное слово или двойное слово возвращается из памяти. Таким образом, выполнение команд может продолжаться как во время задержки, связанной с обработкой промаха, так и во время заполнения соответствующей строки при промахе.

При выполнении блочного копирования данных в ряде случаев компилятор заранее знает, что запись должна осуществляться в полную строку кэш-памяти.
Для оптимизации обработки таких ситуаций архитектура PA-RISC 1.1 определяет специальную кодировку команд записи ("блочное копирование"), которая показывает, что аппаратуре не нужно осуществлять выборку из памяти строки, при обращении к которой может произойти промах кэш-памяти. В этом случае время обращения к кэшу данных складывается из времени, которое требуется для копирования в память старой строки кэш-памяти по тому же адресу в кэше
(если он "грязный") и времени, необходимого для записи нового тега кэша. В процессоре PA 7100 такая возможность реализована как для привилегированных, так и для непривилегированных команд.

Последнее улучшение управления кэшем данных связано с реализацией семафорных операций "загрузки с обнулением" непосредственно в кэш-памяти.
Если семафорная операция выполняется в кэше, то потери времени при ее выполнении не превышают потерь обычных операций записи. Это не только сокращает конвейерные потери, но и снижает трафик шины памяти. В архитектуре PA-RISC 1.1 предусмотрен также другой тип специального кодирования команд, который устраняет требование синхронизации семафорных операций с устройствами ввода/вывода.

Управление кэш-памятью команд позволяет при промахе продолжить выполнение команд сразу же после поступления отсутствующей в кэше команды из памяти. 64-битовая магистраль данных, используемая для заполнения блоков кэша команд, соответствует максимальной полосе пропускания внешней шины памяти 400 Мбайт/с при тактовой частоте 100 МГц.

В процессоре предусмотрен также ряд мер по минимизации потерь, связанных с преобразованиями виртуальных адресов в физические.

Конструкция процессора обеспечивает реализацию двух способов построения многопроцессорных систем. При первом способе каждый процессор подсоединяется к интерфейсному кристаллу, который наблюдает за всеми транзакциями на шине основной памяти. В такой системе все функции по поддержанию когерентного состояния кэш-памяти возложены на интерфейсный кристалл, который посылает процессору соответствующие транзакции. Кэш данных построен на принципах отложенного обратного копирования и для каждого блока кэш-памяти поддерживаются биты состояния "частный" (private),
"грязный" (dirty) и "достоверный" (valid), значения которых меняются в соответствии с транзакциями, которые выдает или принимает процессор.

Второй способ организации многопроцессорной системы позволяет объединить два процессора и контроллер памяти и ввода-вывода на одной и той же локальной шине памяти. В такой конфигурации не требуется дополнительных интерфейсных кристаллов и она совместима с существующей системой памяти.
Когерентность кэш-памяти обеспечивается наблюдением за локальной шиной памяти. Пересылки строк между кэшами выполняются без участия контроллера памяти и ввода-вывода. Такая конфигурация обеспечивает возможность построения очень дешевых высокопроизводительных многопроцессорных систем.

Процессор поддерживает ряд операций, необходимых для улучшения графической производительности рабочих станций серии 700: блочные пересылки, Z-буферизацию, интерполяцию цветов и команды пересылки данных с плавающей точкой для обмена с пространством ввода/вывода.

Процессор построен на базе технологического процесса КМОП с проектными нормами 0.8 микрон, что обеспечивает тактовую частоту 100 МГц.

Вот, Виктор Владиленович, собственно и все, что я хотел предложить по указанному вопросу.

7. Литература.

1. М. Гук Современные микропроцессоры Pentium, Pentium II, Pentium III.

Издательство “Питер” 2000г.
М. Гук Аппаратные средства IBM PC Издательство «ПитерКом» С.-П.1999г.
Жаров А. Железо IBM 2000 или все о современном компьютере М.2000
Издательство «Микроарт».
Так же использованы материалы, опубликованные на сайтах: www.Ixbt.com www.informix.ru www.banknet.kz www.hardware.ru www.fcentr.com
Использованы материалы статей, опубликованных в журналах:
«Мир ПК», «Computerworld», «Computerra».

Успешную конкуренцию микропроцессорам Intel составляет продукция компании AMD. По ряду показателей микропроцессоры этой компании занимают лидирующее положение. Отдельные интересные архитектурно-технические решения, впервые примененные в микропроцессорах AMD, впоследствии получили распространение в изделиях других производителей, в том числе и в микропроцессорах компании Intel.

Микропроцессор К5

В течение ряда лет AMD, отставая от Intel по крайней мере на одно поколение микропроцессоров, полагалась в основном на лицензированную технологию и вносила незначительные конструктивные изменения в выпускаемые микропроцессоры. Появление микропроцессора Pentium создало лля AMD прямую угрозу вытеснения с рынка, что стимулировало компанию к интенсификации работ по созданию нового семейства х86-совместимых микропроцессоров. Работы над К5 были начаты, когда еще не были известны подробности о процессоре Pentium. Инженерам AMD пришлось разрабатывать собственную микроархитектуру, обеспечивая при этом совместимость с существующим программным обеспечением для процессоров х86.

Первоначально AMD планировала начать поставки своего микропроцессора с тактовой частотой 100--120 МГц в 1995 году, однако было выпущено лишь несколько тысяч таких процессоров, а их тактовая частота составила всего 75 МГц. Основные поставки К5 начались в первом квартале 1996 года, после того как компания перешла на 0,35 мкм технологию, разработанную совместно с Hewlett-Packard. Это позволило довести число транзисторов до 4,2 млн на кристалле площадью 167 мм 2 .

К5 ]68] -- это первый микропроцессор AMD, при создании которого не использовалась никакая интеллектуальная собственность Intel (за исключением микрокода), в то же время, он обладает лучшей по сравнению с процессорами Intel производительностью. Многие приложения, такие как Microsoft Excel, Word, CorelDRAW, работали на процессорах серии К5 на 30% быстрее, чем на Pentium с той же тактовой частотой. Такая производительность достигалась в основном за счет увеличенного объема кэш-памяти и более прогрессивной суперскалярной архитектуры. Используемая в микропроцессорах AMD архитектура RISC86 .

Как известно, команды х86 отличает переменная длина и сложная структура, затрудняющие их декодирование и анализ существующих зависимостей между инструкциями по данным. В предлагаемой AMD архитектуре декодер, представляющий собой наиболее сложную часть микропроцессора, раз бивает длинные CISC-инструкции на небольшие RISC-подобные комгюнен ты, так называемые ROP (RISC-операции).

ROP напоминают команды микрокода микропроцессоров х86. Первые микропроцессоры с архитектурой х86 выполняли свой сложный набор микрокоманд, выбирая из внутренней постоянной памяти микрокод. В последних микропроцессорах х86 использование микрокода сведено к минимуму за счет применения простых команд и их аппаратной реализации.

В отличие от Pentium, вместо двух конвейеров для параллельного выполнения двух целочисленных операций, К5 имеет шесть параллельно функционирующих блоков. Одновременно с целочисленными операциями могут выполняться инструкции с плавающей точкой, загрузки/сохранения или перехода. Блок загрузки/сохранения может за один цикл выбирать из памяти две инструкции. Другим отличием от Pentium является то, что К5 может изменять последовательность выполняемых команд.

Блок выполнения операций с плавающей точкой (FPU) отвечает стандартам х86, однако по производительности несколько уступает FPU процессора Pentium.

Использованное в архитектуре К5 сочетание принципов CISC и RISC позволило преодолеть ограничения набора команд х86. Ценой увеличения сложности процессора AMD удалось повысить его производительность, сохранив совместимость с системой команд х86. Последнее весьма важно с учетом широкой распространенности программного обеспечения для этой микропроцессорной архитектуры.

Микропроцессор К6

Микропроцессор К6 был выпушен в 1997 году по технологии КМОП 0,35 мкм с пятислойной металлизацией, содержал 8,8 млн транзисторов на кристалле площадью 162 мм 2 , работал с тактовыми частотами 166, 200 и 233 МГц и устанавливался в разъем Socket 7.

Как и в К5, в К6 была применена суперскалярная архитектура RISC86 с раздельным декодированием/исполнением команд, обеспечивающая преемственность с системой команд х86 и достижение высокой производительности, свойственной микропроцессорам шестого поколения. К6 был оснащен мультимедийным расширением системы команд-- ММХ. По производительности К6 при одной и той же тактовой частоте существенно превосходил Pentium ММХ и был сравним с Pentium Pro. В отличие от Pentium Pro, К6 одинаково успешно работал как с 32-разрядными, так и с 16-разрядными приложениями.

Высокая производительность процессора обеспечивалась благодаря ряду новых архитектурных и технологических решений.

· В процессоре выполняется преддекодирование команд х86 при их выборке в кэш-памяти. Каждая команда в кэш-памяти первого уровня снабжается битами преддекодирования, указывающими смещение начала следующей команды в кэш-памяти (от I до 15 байт).

· К6 содержит внутреннюю раздельную кэш-память первого уровня по 32 Кбайт для данных и команд.

· В процессоре реализован высокопроизводительный блок вычислений с плавающей точкой.

· Имеется высокопроизводительный блок мультимедийных операций стандарта ММХ.

· Используется множественное декодирование х86-инструкций в однотактовые RISC-операции (ROP).

· Процессор содержит параллельные дешифраторы, централизованный планировщик операций и семь исполнительных блоков, которые обеспечивают суперскалярное выполнение инструкций в шестиступенчатом конвейере.

· В процессоре используется спекулятивное исполнение с изменением последовательности команд, предварительная посылка данных, переименование регистров.

В начале 1998 года были выпущены варианты процессора по технологии 0,25 мкм с пятью слоями металлизации для тактовых частот 266 МГц и 300 МГц.

Микропроцессор К7

Микропроцессор следующего поколения -- К7 (кодовое имя Athlon) был выпущен в июне 1999 года. К7 содержит более 22 млн транзисторов на кристалле площадью 184 мм 2 и изначально производился по технологии 0,25 мкм с 6 слоями металлизации* для тактовых частот 500, 550, 600 и 650 МГц. Впоследствии, с переходом на технологию 0,18 мкм, частота была увеличена до 1 ГГц и выше. Напряжение питания микропроцессора составляет 1,6 В.

Процессор размешен в картридже и соединяется с платой через Slot А, разработанный AMD. Athlon и Slot А используют шинный протокол Digital Alpha EV6, который имеет ряд преимуществ по сравнению с GTL+, используемым Intel. Так, EV6 предусматривает возможность использования топологии "point to point" для мультипроцессорных систем. Кроме этого, EV6 работает по переднему и заднему фронту тактирующего сигнала, что при частоте 100 МГц дает эффективную частоту передачи данных 200 МГц и пропускную способность интерфейса 1,6 Гбайт/с. В последующих моделях процессора частота работы шины (эффективная частота) достигла значений 133 (266), а затем и 200 (400) МГц.

Архитектура, реализованная в Athlon, получила название QuantiSpeed™, она определяет суперскалярное, суперконвейерное выполнение команд, конвейерный блок вычислений с плавающей точкой, аппаратную предвыборку данных в кэш-память и усовершенствованную технологию предсказания ветвлений.

Athlon имеет девять исполнительных блоков: три для обработки целочисленных данных (IEU), три для вычисления адреса (AGU) и три блока для вычислений с плавающей точкой и обработки мультимедийных данных (один для загрузки/сохранения данных с плавающей точкой (FSTORE) и два конвейерных блока для исполнения команд FPU/MMX/3DNOW).

Athlon может декодировать три команды х86 в шесть RISC-операций. После декодирования ROP попадают в буфер, где ожидают своей очереди на выполнение в одном из функциональных блоков процессора. Буфер К7 содержит 72 операции (в три раза больше чем у Кб) и выдает 9 ROP для 9 исполнительных устройств.

Athlon имеет 128 Кбайт кэш-памяти первого уровня (64 Кбайт для данных и 64 Кбайт для команд). Для взаимодействия с кэш-памятью второго уровня предусмотрена специальная шина (как у архитектуры Р6 Intel), Кэш-память второго уровня размером 512 Кбайт расположена вне процессорного ядра, в процессорном картридже, и работает на половинной частоте ядра.

Следующим микропроцессором с архитектурой К7 на ядре Thunderbird стал Duron -- бюджетный вариант микропроцессора, ориентированный на дешевые ПК. Основным его отличием является уменьшенная до 64 Кбайт кэшпамять второго уровня. Duron содержит 25 млн транзисторов на кристалле 100 мм 2 и рассчитан на частоты от 600 до 1200 МГц.

Размещение кэш-памяти на кристалле позволило разработчикам отказаться от использования картриджа и вернуться к разъему типа soket (462-контактный разъем Socket А). В процессорах Athlon и Duron работа кэшпамяти осуществляется по алгоритму, обеспечивающему эксклюзивность представления данных в кэшах (данные не дублируются в кэш-памяти первого и второго уровней), что увеличивает эффективный объем кзширован-ных данных.

Благодаря примененным в К7 новым архитектурно-техническим решениям микропроцессорам AMD удалось на 7--10% превысить производительность Pentium III при равных тактовых частотах.

Дальнейшее совершенствование архитектуры и технологии производства микропроцессоров в рамках семейства К7 привело к появлению двух новых версий Athlon: Athlon XP й Athlon MP.

Основное отличие процессора AMD Athlon MP от AMD Athlon XP -- использование технологии Smart MP, которая представляет собой совокупность высокоскоростной двойной системной шины и протокола когерентного кэша MOESI, управляющего пропускной способностью памяти, что необходимо для достижения оптимального баланса работы процессоров в многопроцессорных системах. Пропускная способность шины составляет 2,1 Гбайт/с, в расчете на каждый процессор.

Процессор выпускается с тактовыми частотами от I ГГц (технология 0,18 мкм) до 2,133 ГГц (технология 0,13 мкм, ядро Thoroughbred).

Выпускаемые различными производи­телями процессоры делятся на отдельные типы в соответствии с используемыми классификационными признаками. Одним из важнейших признаков помимо вида архитектуры является функциональное назначение. По этому признаку, микро­процессоры разбивают на два больших класса:

  • процессоры общего назначения, или универсальные микропроцессоры;
  • специализированные процессоры, среди которых наиболее широкое распро­странение получили микроконтроллеры, цифровые сигнальные процессоры и медийные процессоры. Рассмотрим особенности этих процессоров.

Микропроцессоры общего назначения

Этот класс процессоров предназ­начен для решения широкого круга задач обработки разнообразной информации и находит применение в персональных компьютерах, рабочих станциях, серверах и других цифровых системах массового применения. К универсальным процессо­рам относят 32–разрядные микропроцессоры (хотя некоторые микропроцессоры этого класса имеют 64–разрядную или 128–разрядную структуру), которые изго­тавливаются по самой современной промышленной технологии, обеспечивающей максимальную частоту функционирования.

Большинство типов микропроцессоров этого класса имеют CISC–архитектуру, поскольку используют набор разноформатных команд с различными способами адресации.

В их внутренней структуре может содержаться RISC–ядро, выполня­ющее преобразование поступивших команд в оследовательность простых RISC–операций. Некоторые типы микропроцессоров этого класса непосредственно реализует RISC–архитектуру.

В ряде последних разработок (Itanium РА8500) успешно используются прин­ципы VLIW–архитектуры.

Практически все современные универсальные микропроцессоры используют гарвардскую архитектуру с разделением потоков команд и данных при помощи отдельных блоков внутренней кэш–памяти. В большинстве случаев они имеют су­перскалярную структуру (несколько операционных устройств, осуществляющих одновременную обработку данных) с несколькими исполнительными конвейера­ми (до 10 в современных моделях), каждый из которых содержит до 20 ступеней.

Микроконтроллеры. Этот класс специализированных микропроцессоров ориентирован на применение в качестве устройств или систем управления, встраиваемых в разнообразную (в том числе и бытовую) аппаратуру. Номенкла­тура выпускаемых микроконтроллеров исчисляется несколькими тысячами типов, а общий годовой объем их выпуска составляет миллиарды экземпляров.

Особенностью микроконтроллеров является размещение на одном кристалле, помимо центрального процессора, внутренней памяти и большого набора пери­ферийных устройств.

В состав периферийных устройств обычно входят от одного до восьми 8–раз­рядных параллельных портов ввода–вывода данных, один или два последователь­ных порта, таймерный блок, аналого–цифровой преобразователь, а также такие специализированные устройства, как блок формирования сигналов с широтно–импульсной модуляцией, контроллер жидкокристаллического дисплея и ряд других. Благодаря использованию внутренней памяти и периферийных устройств реализуемые на базе микроконтроллеров системы управления содержат мини­мальное количество дополнительных компонентов.

Для удовлетворения запросов потребителей выпускается большая номенкла­тура микроконтроллеров, которые принято подразделять на 8–, 16– и 32–разрядные.


8–разрядные микроконтроллеры

8–разрядные микроконтроллеры являются наиболее простыми и де­шевыми изделиями этого класса, ориентированными на использование в относи­тельно несложных устройствах массового выпуска. Микроконтроллеры этой груп­пы обычно выполняют относительно небольшой набор команд (50–100), исполь­зующих наиболее простые способы адресации. Основными областями их приме­нения являются промышленная автоматика, автомобильная электроника, измерительная техника, теле–, видео– и аудиотехника, средства связи, бытовая аппаратура.

Для 8–разрядных микроконтроллеров характерна гарвардская архитектура:

  • с отдельной внутренней памятью для хранения программ, в качестве которой используются масочно–программируемые ПЗУ (ROM), однократно програм­мируемое ПЗУ (PROM) или электрически репрограммируемое ПЗУ (EPROM, EEPROM или Flash) с объемом от нескольких единиц до десятков килобайт;
  • с отдельной внутренней памятью для хранения данных, в качестве которой используется регистровый блок, организованный в виде нескольких регист­ровых банков, или ОЗУ. Ее объем составляет от нескольких десятков байт до нескольких килобайт.

В случае необходимости имеется возможность дополнительно подключать внешнюю память команд и данных объемом до 64–256 Кбайт и более.

Для повышения производительности во многих моделях 8–разрядных микро­контроллеров реализованы принципы RISC–архитектуры, обеспечивающие вы­полнение большинства команд за один такт машинного времени.

16–разрядные микроконтроллеры

16–разрядные микроконтроллеры помимо повышенной разрядности обрабатываемых данных характеризуются:

  • более высокой производительностью;
  • расширенной системой команд и способов адресации;
  • увеличенным набором регистров и объемом адресуемой памяти;
  • возможностью расширения объема памяти программ и данных до нескольких мегабайт путем подключения внешних микросхем памяти;
  • программной совместимостью с 8–разрядными микроконтроллерами и други­ми возможностями.

Основные области применения - сложная промышленная автоматика, теле­коммуникационная аппаратура, медицинская и измерительная техника.

32–разрядные микроконтроллеры

32–разрядные микроконтроллеры ориентированы на применение в системах управления сложными объектами промышленной автоматики (сред­ствами комплексной автоматизации производства, робототехнические устрой­ствами, двигателями и др.), в контрольно–измерительной аппаратуре, телеком­муникационном оборудовании и других сложных устройствах. 32–разрядные микроконтроллеры содержат:

  • высокопроизводительный CISC , соответствующий по своим возможностям младшим моделям микропроцессоров общего назначе­ния. Например, в микроконтроллерах компании Intel используется процессор i386, а в микроконтроллерах компании Motorola - процессор 680×0. Введе­ние этих процессоров в состав микроконтроллеров позволяет использовать в соответствующих системах управления огромный объем прикладного и си­стемного программного обеспечения, созданный ранее для соответствующих персональных компьютеров. Некоторые типы микроконтроллеров содержат несколько исполнительных конвейеров, образующих суперскалярную структуру;
  • внутреннюю память команд емкостью до десятков килобайт и память данных емкостью до нескольких килобайт;
  • средства для подключения внешней памяти объемом до 16 Мбайт и выше;
  • набор сложных периферийных устройств - таймерный процессор, коммуни­кационный процессор, модуль последовательного обмена и ряд других. Во внутренней структуре этих микроконтроллеров реализуется принстонская или гарвардская архитектура.

Цифровые сигнальные процессоры

Этот класс специализированных мик­ропроцессоров предназначен для цифровой обработки поступающих аналоговых сигналов в реальном времени. Архитектура цифровых сигнальных процессоров (ЦСП) ориентирована на быстрое выполнение последовательности операций ум­ножения–сложения с накоплением промежуточного результата в регистре–аккуму­ляторе, что обусловлено особенностью алгоритмов обработки аналоговых сигна­лов. Поэтому набор команд этих процессоров содержит специальные команды MAC (Multiplication with Accumulation - умножение с накоплением), реализующие эти операции.

Значение оцифрованного аналогового сигнала может быть представлено в виде числа с фиксированной или с плавающей точкой. В соответствии с этим ЦСП де­лятся на два класса:

  • на процессоры, обрабатывающие числа с фиксированной точкой. К этому классу относятся более простые и дешевые ЦСП, которые обычно обрабатывают 16– или 24–разрядные операнды, представленные в виде правильной дроби. Однако ограниченная разрядность в ряде случаев не позволяет обес­печить необходимую точность результатов;
  • на процессоры, обрабатывающие числа с плавающей точкой. Процессоры этого класса проводят вычисления над 32– и 40–разрядными операндами и обеспечивают более высокую точность результатов.

Для повышения производительности при выполнении специфических опера­ций обработки сигналов в большинстве ЦСП реализуется гарвардская архитекту­ра с использованием отдельных шин для передачи адресов, команд и данных. В ряде ЦСП нашли применение также некоторые черты

VLIW–архитектуры , для ко­торой характерно совмещение в одной команде нескольких операций. Такое со­вмещение обеспечивает обработку имеющихся данных и одновременную загруз­ку в исполнительный конвейер новых данных для последующей обработки.


Медийные процессоры

Этот тип процессоров предназначен для обработки аудио–сигналов, графики, видеоизображений, а также для решения ряда комму­никационных задач в мультимедиа–компьютерах, игровых приставках, бытовых приборах и др.

Аппаратную поддержку операций с новыми типами данных, характерными для обработки видео– и звуковой информации обеспечивают универсальные процес­соры с мультимедийным расширением набора команд: Pentium ММХ, UltraSPARC, Cyrix 6х86МХ (М2), AMD–K6 и др. Однако, когда мультимедийные операции до­минируют над традиционными числовыми операциями, больший эффект дает ис­пользование мультимедийных микропроцессоров. Их архитектура представляет собой некоторый гибрид архитектурных решений сигнальных и универсальных процессоров. Производством медиа–процессоров заняты компании MicroUnity (процессор Mediaprocessor), Philips (TriMedia), Chromatic Research (Mpact Media Engine) и др.

Структура и режимы работы микропроцессорной системы

Микропроцес­сор в совокупности с модулями ввода и вывода информации, интерфейса и памя­ти образует простейшую микропроцессорную систему. Среди микропроцессор­ных систем важное место занимают системы общего назначения, которые пред­назначены для решения широкого круга различных задач по обработка информа­ции в цифровой форме согласно заданной программе.

Основные функции микропроцессорной системы сводятся к приему данных (информации) от внешнего устройства, их обработке с помощью микропроцессо­ра и выдаче результата обработки на внешнее устройство.

Рассмотрим в общих чертах особенности работы простейшей микропроцес­сорной системы (рис. 2.1.3), состоящей из центрального процессора, памяти и подсистемы ввода/вывода.


Подлежащая исполнению программа загружается в (оперативную) память. В процессе ее исполнения центральный процессор выдает на шину адреса адрес ячейки памяти, в которой хранится очередная команда, а на шину управления - сигнал, обеспечивающий ее чтение из памяти. Запрошенная команда по шине данных поступает в центральный процессор. после расшифров­ки кода команды приступает к ее выполнению, если данные, над которыми долж­ны быть выполнены действия, находятся в регистрах центрального процессора. В противном случае на шину адреса выставляется адрес ячейки памяти, на шину управления - сигнал чтения памяти, и только после получения требуемых данных команда будет исполнена. Затем центральный процессор приступает к обработке следующей команды, и процесс повторяется.

Для обмена данными между центральным процессором и внешними устрой­ствами в подсистеме ввода/вывода предусмотрен контроллер обмена.

При программном обмене в контроллер обмена от центрального процессора, поступает информация о режиме обмена, содержащая код порта (регистра), на­правление обмена (от центрального процессора к внешнему устройству или от внешнего устройства к центральному процессору), число передаваемых бит, слу­жебные символы и другие данные.

Непосредственный обмен данными происходит под действием сигналов управ­ления, поступающих в контроллер обмена от центрального процессора и внешне­го устройства.

При обмене по инициативе внешнего устройства микропроцессор переводит­ся в состояние прерывания. Для этого внешнее устройство посылает в централь­ный процессор сигнал запроса на прерывание. В состоянии прерывания цент­ральный процессор прекращает выполнение основной программы и приступает к исполнению команд прерывающей программы, которая хранится в (оператив­ной) памяти и обеспечивает обмен данными, требуемый внешнему устройству. По окончании прерывающей программы центральный процессор возвращается к выполнению основной программы.

Описанные способы обеспечивают низкую скорость обмена.

Для увеличения скорости обмена используется режим прямого доступа к памяти, который реали­зуется с помощью контроллера прямого доступа к памяти. Этот режим иницииру­ется сигналом запроса на захват шин. После получения сигнала запроса цент­ральный процессор пересылает по шине данных в контроллер прямого доступа информацию, необходимую для управления обменом (адрес ячейки памяти, в ко­торой размещается первый байт записываемых или считываемых данных, общее число передаваемых байт, направление передачи и др.), и отключается от шины данных и шины адреса, предоставляя их контроллеру для организации обмена.

Обмен данными между внешним устройством и памятью осуществляется через контроллер. В процессе обмена контроллер прямого доступа к памяти выдает ад­реса ячеек памяти в шину адреса и сигналы чтения (записи) в шину управления. По завершении обмена центральный процессор получает сигнал от контроллера и переходит к выполнению основной программы.