Текст книги "Основы AS/400"
Автор книги: Фрэнк Солтис
Жанр:
ОС и Сети
сообщить о нарушении
Текущая страница: 38 (всего у книги 41 страниц)
После RISC
Разговоры о технологиях процессоров после RISC вызывают в IBM большие волнения. Стратегия IBM в отношении будущих процессоров серии AS/400е и RS/6000 – PowerPC. Другие компании собираются перейти на новые архитектуры процессоров. Например, новая архитектура Intel IA-64 процессора под кодовым наименованием Merced имеет определенные признаки отхода от философии х86. Впрочем, здесь детали еще не вполне ясны, и только время покажет, что все означает для существующих программ ПК. Некоторые производители могут не пережить драматического роста себестоимости процессоров.
Этот рост, как предполагается, наступит в районе 2005 года. Как мы отмечали в главе 2, стоимость предприятия по производству микросхем с размерами транзисторов менее 0,1 микрона достигнет, вероятно, величин порядка 10 миллиардов долларов. В таких условиях вряд ли, скажем, Digital, чей годовой доход примерно равен этой цифре, сможет производить процессоры Alpha. HP уже заявила, что прекратит производство PA-RISC и заменит их процессорами, разработанными совместно с Intel. В прессе довольно часто можно встретить предположения, что HP не станет даже переводить на 64 разряда свою ОС HP-UX, но объединит силы с SCO (Santa Cruz Operations) для создания новой 64-разрядной ОС Unix. Так как современная SCO Unix работает на процессорах Intel, то основания верить в переход HP исключительно на архитектуру IA-64, бесспорно, есть. Будет интересно понаблюдать за попытками владельцев HP 9000 перейти на новые процессоры и новую ОС без остановки повседневной работы.
Ни одна конструкция не вечна. Эффект от использования суперскалярной RISC-архитектуры с выполнением команд вне порядка их следования и предсказанием переходов уже стал уменьшаться. Возникает вопрос: что же дальше? Широко обсуждаемая альтернатива RISC – VLIW (Very Long Instruction Word)[ 87 ]87
«Very Long Instruction Word» – «Очень длинное слово команды». – Прим. переводчика.
[Закрыть]. Сначала полагали, что первый процессор, разрабатываемый Intel вместе НР (Merced) будет использовать VLIW-технологию. Теперь оказывается, что в нем, вероятно, использована гораздо более привычная суперскалярная архитектура и лишь задействованы некоторые концепции VLIW.
Давайте разберемся, почему VLIW-технология вызывает столь большой интерес. Дело в том, что ее применение может изменить генеральное направление развития современной информатики: от суперскалярных RISC-процессоров – вспять, к повышению сложности схем на кристалле. Ранее, такие процессоры с повышенной сложностью мы назвали Brainiac. Более простые архитектуры, такие как Speed Demons, могут «крутиться» быстрее и достигать больших тактовых частот. VLIW переносит сложность на компиляторы, позволяя создавать более быстрые процессоры.
Главный недостаток RISC-процессоров и причина сложности аппаратуры – трудности в поддержании загрузки конвейера. Мы уже говорили, что самые суперскалярные RISC-процессоры способны обрабатывать за один цикл лишь несколько команд (как правило, три—четыре), что ограничивает параллелизм выполнения команд на одном процессоре. Четыре команды: за один цикл означают лишь четырехкратный параллелизм, а из-за зависимостей между командами и переходов средний показатель вряд ли превзойдет двукратный. В реальности для некоторых задач он даже меньше.
Почему же суперскалярный RISC-процессор не может диспетчировать 8-16 команд за цикл? Во-первых, мешает ограничение аппаратной технологии: у обычного RISC-процессора для этого просто мало независимых функциональных узлов. Другая причина в том, что в цикле недостаточно времени, чтобы проанализировать 8-16 команд, определить, какие функциональные устройства не заняты, и отправить каждую команду на соответствующий узел; увеличение же времени цикла сократит производительность процессора. Третье ограничение – генерировать для каждого цикла по 8-16 независимых команд не способен компилятор.
Развитие аппаратных технологий позволяет создать однокристальный процессор с 8, 16 и даже большим числом функциональных узлов. Технология компиляторов также развилась достаточно, чтобы распознать многократный параллелизм команд и обеспечить работой больше функциональных узлов.
Но возможность выбирать на выполнение большее число команд бесполезна, если аппаратура суперскалярного RISC-процессора может выполнять одновременно лишь малое их число. VLIW-технология решает эту проблему, снимая с аппаратуры процессора задачу распределения команд. Вместо того чтобы, как в RISC-процессоре, анализировать каждую инструкцию в потоке команд и затем распределять их по одной в функциональные узлы, компилятор VLIW генерирует отдельную команду для каждого функционального узла на каждом цикле. Например, если функциональных узлов 16, то компилятор генерирует для каждого процессорного цикла 16 команд; но в отличие от RISC-процессора, который анализирует, в какой функциональный узел направлять каждую команду, VLIW-процессор просто посылает первую команду в первый узел, вторую – во второй и т. д. Конечно, если на каком-то цикле у компилятора не оказывается команды для некоторого узла, он по-прежнему должен сгенерировать код «нет операции». Так как VLIW-процессор ни о чем не «размышляет», то его время цикла меньше, чем время цикла суперскалярного RISC-процессора. Меньшее время цикла и увеличенная степень параллелизма исполнения команд, достигаемая посредством загрузки большего числа функциональных узлов, дает VLIW преимущества перед RISC.
Вы можете спросить, откуда взялось название «VLIW»2. Компилятор упаковывает независимые команды для каждого цикла в одно очень длинное слово – отсюда и название. На каждом цикле процессор выбирает по одному такому очень длинному слову из своего кэша команд. Таким образом, если каждая из 16 команд занимает 4 байта, то в результате получается 64-байтовое (512-битное) слово команды. Несомненно, название «очень длинное» здесь уместно.
Генератор кода компилятора (аналог транслятора AS/400) для VLIW-процессора находит процессору достаточно работы на каждом цикле и генерирует соответствующие команды:. Если на каждом цикле исполняется от 4 до 20 полезных команд, то на одном процессоре можно добиться производительности на уровне миллиарда команд в секунду.
Самая большая проблема VLIW в том, что генератор кода компилятора должен быть тесно связан с аппаратурой. Чтобы генерировать команды для каждого функционального узла процессора, компилятор должен иметь точную информацию, сколько узлов на микросхеме, какие они и как связаны друг с другом. В результате, практически невозможно использовать код, сгенерированный таким компилятором на любом модифицированном процессоре, так как у них отсутствует двоичная совместимость (или они имеют разное число функциональных узлов).
Ранее предполагалось, что Intel использует в микросхеме Merced трансляцию команд х86 и IA-64 в команды VLIW «на лету», аналогично Pentium II и Pentium Pro, где команды х86 и IA-64 «на лету» транслируются в последовательность RISC-подобных команд непосредственно микросхемой. Intel называет эти RISC-подобные команды микрооперациями и описывает данный прием как динамическое исполнение. Затем ядро процессора исполняет эти микрооперации конвейерным устройством, которое выглядит точно так же, как и любой RISC-процессор.
Intel не первая применила такой механизм. Точно так же работал процессор Nx586 другого производителя микросхем х86 – NexGen, теперь приобретенной AMD (Advanced Micro Devices). NexGen называла этот подход внутренними командами RISC86. Теперь он использован в другой совместимой с х86 микросхеме AMD – К6. Все эти продукты продемонстрировали, что динамическое исполнение удачно для RISC-процессора. В то же время оно может не очень хорошо сказываться на объеме параллелизма в потоке команд VLIW-процессора.
Далее RISC-процессор анализирует следующие 3 – 6 команд и направляет их в максимально возможное в данный момент количество узлов процессора. RISC-компиляторы отвечают за помещение в поток команд независимых друг от друга инструкций, чтобы за один цикл можно было отправить на выполнение их максимальное количество. Генератор кода компилятора обрабатывает промежуточное представление и генерирует двоичные машинные команды. Обычно для предоставления процессору достаточного числа независимых команд требуется анализ команд некоторого участка промежуточного представления.
В VLIW-машине число функциональных устройств сильно возрастает, что нужно для достижения большего параллелизма. В ближайшее время можно вполне ожидать появления процессоров, имеющих от 16 до 32 (а в будущем и более) функциональных узлов. Для обеспечения загрузки командами компьютеров такого типа генератору кода компилятора потребуется проанализировать гораздо больший диапазон промежуточного представления. Для генерации команд каждого цикла компилятору придется просмотреть, возможно, сотни и даже тысячи промежуточных команд. При использовании динамического подхода «на лету», для генерации команды VLIW просматривается лишь несколько команд. Способность эффективной загрузки большого числа функциональных узлов в этом случае остается под большим вопросом.
В соответствии с последней информацией от Intel, подход, который будет использован в Merced, будет больше походить на RISC-подобный подход Pentium Pro. В новом процессоре могут быть использованы некоторые базовые концепции VLIW, включая параллельное диспетчирование большого числа команд. Один из руководителей Intel сказал, что они взяли разработки VLIW от HP и разработки CISC/RISC от Intel и собираются создать на их основе нечто новое. Он сказал, что это новый тип архитектуры, который идет дальше не только RISC, но и VLIW. Мы в Рочестере наблюдаем за происходящим с большим интересом.
VLIW в Рочестере
Рочестер заинтересовался архитектурой с очень длинным словом команд в начале 80-х. В то время здесь было организовано специальное подразделение исследования новых технологий для наших будущих системах. В этом подразделении я руководил группой систем. Задача группы состояла не в том, чтобы создать продукт, который будет поставляться заказчикам, но разобраться, заслуживают ли некоторые идеи внимания, и может ли на их основе быть создана аппаратура. Разумеется, лучший способ продемонстрировать положительный ответ – работоспособный прототип.
Наша группа сосредоточила свое внимание на высокопроизводительных вычислениях и параллельной обработке, в основном, применительно к System/38. Мы были убеждены, что когда-нибудь создадим модели System/38 очень высокой производительности, и хотели быть готовы к этому. Исследование процессоров возглавлял Рой Хоффман. Его идея состояла в следующем: добавить к System/38 процессоры, специально предназначенные для приложений, с которыми эта система справлялась не очень хорошо. Одним из сопроцессоров, которые мы присоединили к System/38, был высокопроизводительный процессор операций с плавающей точкой. После этого мы решили пойти дальше и построить System/38 с производительностью суперкомпьютера. В наши намерения входило добиться на своем прототипе большей производительности приложений, интенсивно использующих плавающую точку, чем на System/ 390 с ее векторными возможностями. Достичь поставленной цели мы собирались с помощью сопроцессора фирмы FPS (Floating Point Systems).
В 1975 году FPS выпустила АР-120В – первенец семейства матричных процессоров FPS, использовавшийся, в основном, для обработки сигналов. Матричные процессоры работают с упорядоченными наборами данных, обычно, векторами или матрицами. В 1980 году FPS выпустила FPS-164 на основе архитектуры АР, предназначенный для сложных научных расчетов. FPS-164 был полностью 64-разрядным процессором. Он мог с успехом соревноваться с любыми суперкомпьютерами того времени, включая Cray.
Процессор FPS не был автономным, а подключался к управляющей вычислительной системе. Мы купили его и подключили к System/38, а параллельно стали разыскивать коммерческие приложения, которым требовались высокопроизводительные вычисления с плавающей точкой. Мы хотели показать, что вычисления такого типа применимы не только к научным расчетам. Наиболее обещающими были приложения для банков и работы с ценными бумагами.
^чЧУЦ//>, Физически FPS-164 был гораздо больше System/38. У него были также свои «капризы», которыми не страдала наша система, например требования к охлаждению воздуха. Мы оборудовали ему специальную комнату с фальшполом и самым большим кондиционером, который когда-либо устанавливали наши техники. Вентиляторы FPS засасывали холодный воздух из-под фальшпола с таким шумом, будто в комнате находилось судно на воздушной подушке. Когда мы его выключали, в комнате становилось так холодно, и никто из персонала не мог там долго находиться. Однако, как вычислительная машина FPS-164 работал по-настоящему быстро.
У FPS были планы – создать с помощью новых технологий такие версии FPS-164, которые работали бы вместе с System/38 в нормальных условиях офиса. Но именно тогда проект Fort Knox был прекращен, и мы сосредоточили все свои силы на Silverlake. Увы, проект использования с System/38 новых сопроцессоров нам не довелось довести до конца. Однако он кое-чему научил нас, и этот опыт пригодился при работе над сопроцессорами для AS/400.
Системы FPS были одними из первых с длинным словом команды, содержавшим по несколько операций на команду. В машине имелось 10 функциональных узлов, и каждому из них требовалась на каждом цикле собственная подкоманда. В длинном слове команды были отдельные подкоманды для каждого узла. Одна команда могла полностью обработать вектор.
Вместо оптимизирующего компилятора для создания длинных слов команд применялись библиотеки языка ассемблера. Основной компьютер обрабатывал логику программы и вызывал процедуры с длинными командами для исполнения на машине FPS. Данный тип программирования схож с микрокодом с длинным словом типа HMC, использовавшегося в System/38. Хотя в командах НМС было не так много битов, как длинном слове команды FPS, но каждая команда НМС запускала несколько функций процессора System/38. Одно время мы рассматривали возможности использовать в НМС некоторые приемы для распределения команд по функциональным узлам.
Примерно в то же самое время, группа исследователей Йельского университета (Yale University) предложила создать машину с очень длинной командой (512 бита), которую они назвали VLIW. Коммерческий проект попыталась осуществить фирма Multiflow Computers, но, в конечном счете, потерпела неудачу из-за недостатка финансирования. В 1993 HP лицензировала у более не существующей компании пакет ее патентов.
Интерес к машинам VLIW в Рочестере сохранялся и в конце 80-х годов, главным образом, благодаря связи этой технологии и НМС. После объявления IBM AS/400 мы начали работу над процессором для систем следующего поколения. Технология VLIW стала частью новой архитектуры.
Одним из руководителей проекта VLIW был Дэйв Льюк (Dave Luick). Дэйв начинал с нашего первого процессора, возглавлял разработку процессора System/38 Model 7 и с тех пор участвовал в проектировании всех наших процессоров. Он из тех, кто всегда стремится выйти за пределы традиционной технологии, и очень заинтересовался применением к НМС некоторых технологий VLIW. Процессор C-RISC, обсуждавшийся в главе 2, был разработан как процессор для Advanced Series перед тем, как мы перешли на технологию PowerPC. Так вот, благодаря Дэйву и некоторым его соратникам, C-RISC имел НМС с рядом характеристик машины VLIW.
В 1991 году Дэйв в составе группы из 10 человек занимался оценкой возможности использования процессоров PowerPC для AS/400. После принятия решения о переходе на технологию PowerPC, он и его единомышленники направили свои усилия на создание PowerPC-совместимой машины VLIW. Так как VLIW очень зависит от технологии компиляторов, немедленно начались совместные исследования с IBM Research. Специалисты этой лаборатории, работавшие над VLIW, не могли найти для этой технологии такую платформу, чтобы новшества не оказали негативного влияния на бизнес заказчиков. Технологическая независимость AS/400 снимала этот вопрос. Мы могли внедрить VLIW в AS/400 безболезненно для пользователей.
Работа над VLIW в Рочестере показала огромный потенциал данной технологии для повышения производительности AS/400. Во-первых, благодаря упрощенной архитектуре, больше похожей на Speed Demon; можно сократить время такта процессора и создать по той же технологии микросхему, которая по скорости будет вдвое превосходить стандартный PowerPC. Во-вторых, в течение нескольких следующих лет достижим намного больший параллелизм (16 или даже более конвейеров) на одной микросхеме, чем в суперскалярных RISC; где всего лишь пять или шесть конвейеров.
В настоящее время работа над VLIW в Рочестере по ряду причин приостановлена. Дело, прежде всего, в том, что мы договорились использовать универсальную технологию процессора как для серии AS/400е, так и для продуктов линии RS/6000. Хотя благодаря независимости от технологии в AS/400 можно внедрить столь радикально новую технологию как VLIW, на RS/6000 это невозможно. Зато обе системы могут использовать RISC-процессоры PowerPC.
Некоторое время мы рассматривали возможность создания процессора PowerPC с ядром VLIW. Такой процессор мог бы использоваться как AS/400, так и RS/6000. Новый транслятор для AS/400 генерировал бы код либо для интерфейса процессора PowerPC, либо обходил его и генерировал код непосредственно для ядра VLIW. Компоненты SLIC работали бы через интерфейс PowerPC, а со временем мы переписали бы их для исполнения непосредственно ядром VLIW. Прикладные программы с шаблоном внутри программного объекта, могли бы автоматически конвертироваться для VLIW, а программы без шаблона продолжали бы работать как программы PowerPC.
Из-за споров вокруг эффективности трансляции команд в операции ядра VLIW мы приостановили работы над процессором PowerPC с таким ядром. Придется подождать и посмотреть, сколь успешно технология VLIW будет использована в Intel Merced. Некоторые из наших разработчиков даже предлагали подумать над возможностью перехода AS/400 на этот новый 64-разрядный процессор Intel. На мой взгляд, это было бы забавно.
Вторая причина приостановок работ по VLIW – то, что производительность одиночного процессора в сегодняшних системах не является слабым местом. На наш взгляд, гораздо больше выгод принесет усовершенствование подсистем памяти, и первые реализации новых подсистем уже это подтвердили.
До сих пор мы говорили только об отдельных процессорах и возможностях их применения в серии ASA^X^. Следующий раздел посвящен перспективам развития многопроцессорных систем.
Будущее многопроцессорных систем
На любой конференции по компьютерным архитектурам, независимо от заявленной темы, разговор обязательно заходит о масштабируемых многопроцессорных системах с общей памятью. Я твердо верю, что многопроцессорные системы данного типа обеспечат в будущем прогресс вычислительных систем. Внимание к архитектурам МРР без разделения памяти гораздо меньше – ведь они более специализированы и набор типов приложений для них ограничен. А, кроме того, заниматься масштабируемыми архитектурами с общей памятью нам просто интересно!
Масштабируемые многопроцессорные системы с общей памятью
Системы с централизованной и распределенной общей памятью мы рассматривали в главе 2.
В первой из них имеется центральная память, которую совместно используют несколько процессоров, и именно такую модель имеют в виду, когда говорят об SMP. Так как в такой системе время, требуемое каждому процессору для доступа к центральной памяти, одинаково, то их обычно называют системами с однородным доступом к памяти или системами UMA.
Во втором случае память распределена между несколькими узлами, каждый из которых содержит небольшое число процессоров, подключенных к памяти узла по схеме SMP. В узле есть процессоры и память, но нет дисков и других устройств ввода-вывода. Адресное пространство всех узлов общее, то есть любой процессор может адресовать память любого узла. Чтобы проще представить это себе, вообразите фрагменты общей памяти расположенные в узлах системы и связанные между собой вы
сокоскоростным глобальным соединением. У каждого узла общая шина памяти, соединенная с его фрагментом общей памяти, но доступ к этому фрагменту возможен и для процессоров всех остальных узлов с помощью глобального соединения. Отличие состоит только во времени доступа. Локальный доступ выполняется быстрее глобального, и поэтому подобный кластер узлов SMP называется машиной с неоднородным доступом к памяти, или машиной NUMA.
Мы уже достаточно подробно рассмотрели модель централизованной общей памяти в AS/400. Описанная в главе 2 подсистема памяти UMA с перекрестными переключателями и ее разновидности могут с легкостью поддерживать 16-канальные конфигурации SMP с высокопроизводительными процессорами, планируемыми для серии AS/400е. После версии 4, возможно, появятся 20– или даже 24-канальные конфигурации SMP.
Для очень больших конфигураций будут использованы кластеры узлов SMP. В главе 11 мы рассмотрели последовательность кластерной поддержки для AS/400: и системы без разделения, каждая из которых использует собственные дисковые устройства; и кластеры с переключением дисков между системами; и, наконец, системы с разделением дисков между компьютерами кластера. Получив с помощью независимых ASP возможность разделения всех дисков кластерного пула, мы можем подумать о разделении памяти между узлами, и, таким образом, о создании нашей первой машины NUMA.
Интерес к применению NUMA в AS/400 возник несколько лет назад. Дик Бут (Dick Booth), рочестерский инженер, занимался в начале 90-х годов многопроцессорными системами в IBM Research. В процессе работы у него возникла идея новой архитектуры. Первоначально Дик назвал ее «крепко связанным мультипроцессором», так как она занимает промежуточное положение между слабо связанными (МРР) и сильно связанными (SMP) мультипроцессорами. Теперь подобная структура называется просто NUMA.
Дик верил, что NUMA будет работать в AS/400. Вернувшись в Рочестер, он заразил своей идеей коллег. В 1991 году был основан объединенный проект с IBM Research и началась работа над прототипом. Как это часто бывает, новая идея натолкнулась на определенный скептицизм. Группа выстояла, завершила прототип и продемонстрировала его, чем завербовала в свои ряды новых сторонников. Сегодня эти люди успешно работают над NUMA для будущих AS/400.