Э. Таненбаум - Архитектура компьютера (1127755), страница 115
Текст из файла (страница 115)
Пока что новые модели совершенствуются только благодаря новым технологиям производства, которые позволяют уменьшать размеры транзисторов, а значит, повышать тактовые частоты. В то же время, повышать скорость работы становится все труднее, и виной тому — ограничения, свойственные архитектуре команд 1А-32.
Единственное эффективное решение проблемы — при разработке новых процессоров перейти от 1А-32 к новой архитектуре команд. Именно такие планы строит компания 1псе1. Более того, предполагается запустить две новых линейки. Первая из них, называемая ЕМТ-64, представляет собой расширенную версию Репйшп 4 с 64-разрядными регистрами и 64-разрядным же адресным пространством. В этой архитектуре решается проблема адресного пространства, но сложности реализации, свойственные Реванш 4, сохраняются. Ее можно назвать расширенным вариантом архитектуры Репг1пш. Еще одна архитектура, которую совместно разрабатывают компании 1пте1 и Нев1егг Раскагд, называется 1А-64.
Это уже полноценная 64-разрядная машина. Более того — она во многих отношениях разительно отличается от Репс1пш 4. Первоначально 1А-64 предполагается вывести на рынок профессиональных серверных систем, но вполне возможно, что впоследствии эта архитектура укрепится и в сегменте настольных компьютеров. В любом случае архитектура 1А-64, впервые реализованная в линейке процессоров 1сап1шп, настолько отличается от всего, что мы рассматривали ранее, что просто необходимо познакомиться с ней Архитектура !А-64 и процессор !?ап!цш 2 461 поближе. Итак, оставшаяся часть раздела посвящена архитектуре 1А-64 как та- ковой и ее реализации в процессорах серии ?гап1пш 2. Проблема Реп11ит 4 Прежде чем переходить к детальному рассмотрению архитектуры 1А-62 и процессора ?гап?пш 2, полезно разобраться в том, чем, собственно, плох процессор Репг1цш 4 и какие проблемы компания ?пге! намеревается решить путем разработки новой архитектуры.
Основная проблема заключается в том, что 1А-32— это старая архитектура команд с совершенно неподходящими для современной техники свойствами. Это типичная С?ЯС-архитектура с командами разной длины и огромным количеством различных форматов, которые трудно декодировать быстро и «на лету». Современная техника лучше всего работает с В?ВС-архитектурами, в которых команды одинаковы по размеру, а код операции имеет фиксированную длину, поэтому его легко декодировать.
Хотя команды архитектуры 1А-32 во время выполнения программы можно разделить на микрооперации наподобие ИЯС-команд, но для этого требуется дополнительное аппаратное обеспечение (пространство на микросхеме), к тому же это занимает время и усложняет разработку. Это первый недостаток. 1А-32 — это архитектура, ориентированная на двухадресные команды. В настоящее время популярны архитектуры команд типа загрузки/сохранения, в которых обращения к памяти выполняются только для того, чтобы поместить операнды в регистры, а все вычисления делаются с использованием трехздресных регистровых команд. Поскольку скорость работы процессора растет гораздо быстрее, чем памяти, положение дел с 1А-32 со временем все больше ухудшается.
Это второй недостаток. Архитектура 1А-32 содержит небольшой и нерегулярный набор регистров. Из-за малого числа регистров общего назначения (четыре или шесть, в зависимости от того, куда отнести регистры ЕБ? и ЕО?) постоянно приходится записывать в память промежуточные результаты, что ведет к дополнительным обращениям к памяти, даже когда они по логике вещей не нужны. Это третий недостаток. Из-за недостаточного числа регистров возникает множество ситуаций зависимостей, особенно КУАК-зависимостей, поскольку промежуточные результаты нужно куда-то помещать, а дополнительных регистров нет.
Из-за недостатка регистров постоянно требуется их подмена (то есть использование скрытых регистров). Во избежание слишком частых кэш-промахов команды приходится выполнять не по порядку. Однако семантика архитектуры? А-32 определяет точные прерывания, поэтому команды, выполняемые не по порядку, должны записывать результаты в выходные регистры в строгом порядке. Все это очень сложно реализовать аппаратно. Это четвертый недостаток. Чтобы скорость работы была высокой, система должна быть в значительной степени конвейеризирована. Однако это значит, что для выполнения любой команды требуется множество циклов.
Следовательно, становится существенным точное предсказание переходов, поскольку в конвейер должны попадать только нужные команды. Однако даже если процент неправильных прогнозов невысок, существенно снижается производительность. Это пятый недостаток. 462 Глава 5. Уровень архитектуры набора команд Чтобы избежать проблем с неправильным прогнозированием переходов, процессору приходится осуществлять спекулятивное выполнение команд со всеми вытекающими отсюда последствиями.
Это шестой недостаток. Мы не будем перечислять недостатки дальше, поскольку и так ясно, что за ними кроется реальная проблема. А ведь мы еще не упомянули, что 32-разрядные адреса архитектуры 1А-32 ограничивают размер отдельных программ значением 4 Гбайт, что является серьезной проблемой для высокопроизводительных серверов. Допустим, эта проблема решается в архитектуре ЕМТ-64, но остальные недостатки остаются. Ситуацию с 1А-32 можно сравнить с положением дел в небесной механике как раз перед появлением Коперника. В те времена в астрономии доминировала геоцентрическая теория, в соответствии с которой Земля является центром вселенной и неподвижна, а планеты движутся вокруг нее.
Однако новые наблюдения показывали все больше и больше несоответствий этой теории действительности, что в конце концов привело к ее полной несостоятельности. Компания 1пге1 находится приблизительно в таком же положении. Множество транзисторов в процессоре Репс1пш 4 предназначено исключительно для переделки С1ЯС-команд в Е1ЯС-команды, разрешения конфликтов, прогнозирования переходов, исправления неправильных предсказаний и решения многих других задач подобного рода, а для реальной работы, которая собственно и нужна пользователю, остается лишь незначительная часть этих транзисторов. Поэтому компания 1пге1 пришла к следующему выводу; нужно выбросить 1А-32 на помойку и начать все заново (1А-64).
Архитектура ЕМТ-64 призвана лишь выиграть некоторое время, оставляя проблему нерешенной. Модель 1А-64 — вычисления с явным параллелизмом команд Основной принцип организации архитектуры 1А-64 сводится к тому, чтобы перенести нагрузку с периода выполнения в период компиляции. Процессор Репйшп 4 в ходе выполнения переупорядочивает команды, подменяет регистры, распределяет функциональные блоки и выполняет множество других функций, что ведет к максимальной загрузке всех аппаратных ресурсов. В модели 1А-64 эти задачи заранее решает компилятор. В результате он генерирует программу, которую можно выполнять без излишних манипуляций аппаратными средствами. К примеру, в Репс1цш 4 компилятор получает информацию о том, что в машине всего 8 регистров, хотя на самом деле их 128, в результате во время выполнения программы приходится как-то выкручиваться, чтобы избежать взаимозависимостей.
Согласно архитектуре 1А-64, компилятор получает достоверную информацию о количестве регистров в машине, а затем генерирует программу, в которой нет никаких конфликтов между регистрами. Кроме того, компилятор следит за загрузкой функциональных блоков и не запускает команды, в которых предполагается обращение к занятым функциональным блокам. Модель, в которой аппаратный параллелизм является видимым для компилятора, называется ЕР1С (Ехр11с1т1у Рагаце1 1пзггпсс|оп Сошрпг1пй — вычисления с явным параллелизмом Архитектура !А-64 и процессор Папюш 2 463 команд).
В определенной степени модель ЕР1С можно считать развитием В.18С-технологии. Некоторые особенности 1А-64 заметно повышают производительность. Среди них — сокращение числа обращений к памяти, планирование команд, сокращение числа условных переходов и спекулятивные операции. Все эти особенности мы обсудим как с теоретической точки зрения, так и в контексте их реализации в 1гапшш 2.
Сокращение числа обращений к памяти Модель памяти 1гапшш 2 довольно проста. Всего предусмотрено 2ы байт линейной памяти. Имеющиеся команды позволяют обращаться к блокам памяти размером 1, 2, 4, 8, 16 и 10 байт (последнее значение введено для совместимости с 80-разрядными числами с плавающей точкой стандарта 1ЕЕЕ 745). Категорической необходимости в выравнивании обращений к памяти по естественным границам нет, однако без выравнивания производительность ниже. Память может быть как с прямым, так и с обратным порядком следования байтов; тот или иной формат устанавливается специальным битом в регистре, загружаемом операционной системой. Доступ к памяти в современных компьютерах считается узким местом. Связно это с тем, что процессоры работают гораздо быстрее модулей памяти.