Современные микропроцессоры
программируется и может составлять 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.
Компания Texas Instruments разработала также 50 МГц процессор
MicroSPARC с встроенным кэшем емкостью 6 Кб, который ранее широко
использовался в дешевых моделях рабочих станций SPARCclassic и LX. Затем
Sun совместно с Fujitsu создали новую версию кристалла MicroSPARC II с
встроенным кэшем емкостью 24 Кб. На его основе построены рабочие станции и
серверы SPARCstation/SPARCserver 4 и 5, работающие на частоте 70, 85 и 110
МГц.
Хотя архитектура 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 МГц.
SuperSPARC
Имеется несколько версий этого процессора, позволяющего в зависимости
от смеси команд обрабатывать до трех команд за один машинный такт,
отличающихся тактовой частотой (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В.
Рис. 10.
Процессор 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, могут быстро
определить попадания или промахи при просмотре со стороны внешней шины без
приостановки обращений к кэш-памяти со стороны центрального процессора.
Поддерживается как режим сквозной записи, так и режим обратного
копирования.
Рис. 11.
Устройство управления памятью содержит в своем составе полностью
ассоциативную кэш-память преобразования виртуальных адресов в физические
(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 7100
Особенностью архитектуры PA-RISC является внекристальная реализация
кэша, что позволяет реализовать различные объемы кэш-памяти и
оптимизировать конструкцию в зависимости от условий применения (рисунок
12.). Хранение команд и данных осуществляется в раздельных кэшах, причем
процессор соединяется с ними с помощью высокоскоростных 64-битовых шин. Кэш-
память реализуется на высокоскоростных кристаллах статической памяти
(SRAM), синхронизация которых осуществляется непосредственно на тактовой
частоте процессора. При тактовой частоте 100 МГц каждый кэш имеет полосу
пропускания 800 Мбайт/с при выполнении операций считывания и 400 Мбайт/с
при выполнении операций записи. Микропроцессор аппаратно поддерживает
различный объем кэш-памяти: кэш команд может иметь объем от 4 Кбайт до 1
Мбайт, кэш данных - от 4 Кбайт до 2 Мбайт. Чтобы снизить коэффициент
промахов применяется механизм хеширования адреса. В обоих кэшах для
повышения надежности применяются дополнительные контрольные разряды, причем
ошибки кэша команд корректируются аппаратными средствами.
Рис. 12.
Устройство плавающей точки (рисунок 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.
Рис. 13.
Конвейер проектировался с целью максимального увеличения времени,
необходимого для выполнения чтения внешних кристаллов 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».
2.
Страницы: 1, 2, 3
|