Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Повышение производительности компьютерных систем

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

 ADD AX, [SI+BX+66h]

 Необходимо разобрать сложное поле адресации, чтобы понять, что это  именно
"SI+BX+66h",  а  не  что-то  другое;  сложить  (то   есть   вычислить   этот
результат), затем загрузить содержимое требуемой ячейки  и,  наконец,  опять
сложить его со значением регистра AX.
 Следовательно, для  выполнения  инструкции  за  один  такт  требуется  два
арифметических устройства и один загрузчик. Но и в этом случае все  действия
должны выполняться последовательно. То  есть  ВЫЧИСЛЕНИЕ  АДРЕСА,  ЗАГРУЗКА,
ВЫЧИСЛЕНИЕ РЕЗУЛЬТАТА. И никакие действия не могут быть спарены. Хоть  умри,
но потребуется три такта на  выполнение,  или  хотя  бы  одно  из  устройств
должно функционировать на удвоенной тактовой частоте.
 RISC казались более  приятным  полигоном  для  проникновения  параллельных
вычислений  в  бытовые  компьютеры.  А  в  том,  что   будущее   принадлежит
параллельным   архитектурам,   уже    никто    не    сомневался:    линейные
(последовательные) вычисления наткнулись  на  непреодолимые  на  сегодняшнем
этапе  физические  и  технические  ограничения  и  к   середине   девяностых
сохранились только там,  где  производительность  была  некритична  (скажем,
микрокалькуляторы, наручные часы, аппаратура определения номера и др.).

                             ВЫБОР ДРУГОГО ПУТИ

 Производители CISC-архитектур недолго  оставались  в  тупике.  Они  решили
усилить параллелизм не в исполнении команд,  а  в  обработке  данных,  введя
поддержку векторных операций. Именно в этом и заключается  широко  известная
MMX-технология.
 Однако новая технология не давала никакого выигрыша на старых  приложениях
- не спасала даже перекомпиляция.  Существенно  повлиять  на  быстродействие
могло только принципиальное изменение  идеологии  программирования:  переход
на векторные операции.
 Несомненный плюс - явный параллелизм всего в  одной  инструкции  там,  где
раньше  их  требовалась  сотня.  Использование  MMX  дает  до  60  процентов
прироста производительности приложений, манипулирующих графикой, звуком  или
аналогичными вычислениями и обработкой больших массивов чисел.
 AMD не отстала от конкурентов и активно продвигает на рынок  свой  вариант
реализации  MMX  -  технологию  3DNow!,   ориентированную   на   вычисления,
связанные с трехмерной графикой.
 Однако существовали многие ограничения на внедрение и распространение этих
технологий. Прежде всего, векторные вычисления не типичны для платформы  PC.
Они требуют не столько поддержки со стороны компиляторов  (компиляторам  что
-   просто   новый   набор   инструкций),   сколько   именно    используемых
программистами алгоритмов и языков. Ни Си, ни Паскаль, ни другие  популярные
языки не ориентированы на векторные операции.
 Более того, не  ориентированы  на  них  и  задачи,  решаемые  персональным
компьютером.  Большую  часть  времени   процессор   занят   не   наукоемкими
вычислениями, а "работой  по  хозяйству":  обмен  с  периферией,  прорисовка
окон, бесконечные вызовы функций  и  передача  многочисленных  параметров  с
постоянным контролем границ последних.
 Во всех вышеперечисленных операциях операндами выступают  именно  скаляры,
никак не векторы. Конечно, графические приложения ускоряют работу, но  не  в
той степени, как специализированные графические процессоры. В  целом  польза
от MMX  оказалась  настолько  сомнительной,  что  сегодня  только  единичные
приложения используют расширенный набор команд.
 Гораздо большего можно  было  добиться,  заставив  компилятор  располагать
инструкции  так,  чтобы  максимально  увеличить  возможность  спаривания   и
распараллеливания  вычислений.  Иными   словами,   помогать   процессору   в
оптимизации. Прежде всего, не использовать сложную  адресацию  и  ограничить
себя только командами, которые выполняются за  один  такт,  при  этом  -  не
мешая выполнению других.
 Но не приходим ли мы добровольно к  RISC-концепции,  вновь  возвращаясь  к
началу на очередном витке прогресса? К тому же правила  оптимизации  даже  у
соседних моделей процессоров (например, Pentium  75,  Pentium  100,  Pentium
166  MMX,  Pentium  II)  отличаются  очень  и  очень.  Настолько,  что  код,
оптимизированный   под   один   процессор,   может   исполняться   медленнее
неоптимизированного - на другом.
 Воистину,  "мартышкин  труд".   Это   что   же,   при   появлении   нового
микропроцессора  перекомпилировать  все  программное   обеспечение   заново?
Поставлять покупателю исходные тексты с компилятором? Или пытаться  в  ущерб
производительности найти компромиссный вариант? Причем  любое  решение  было
бы  надругательством  над  самой  концепцией   суперскалярной   архитектуры:
параллелизм распознает сам процессор, и ему не требуется помощи  со  стороны
компилятора.
 Вот если бы был волшебный  способ  не  подстраиваться  под  логику  работы
процессора, а явно  указать  ему  связи  между  командами...  Именно  так  и
возникла архитектура VLIW.
 VLIW (процессоры с длинным командным словом)
 Параллелизм был свойствен еще первым ламповым компьютерам. Тогда  это  был
единственный    путь     увеличения     производительности.     Потом,     с
совершенствованием  технологий,  о  нем  то  забывали,  то,  когда  вставали
технические препятствия наращивания производительности, вспоминали.
 Почему? Да потому, что параллелизм - это...  как  бы  помягче  выразиться?
Нет, не плохо, скорее всего - излишне сложно и  непривычно,  и  сопряжено  с
трудностями в разработке компиляторов.
 Однако на рубеже второго тысячелетия компьютерная индустрия завела себя  в
тупик. Считается, что с поправкой на ионный ветер и длину волны  излучателя,
который рисует  матрицу  будущего  кристалла,  вкупе  с  некоторыми  другими
эффектами, невозможно (читай: технически неоправданно сложно) перейти  порог
0,1 мкм в ближайшие десять лет, а выпускаемые сейчас по 0,18-мкм  технологии
микропроцессоры его уже почти достигли. (Texas Instruments  уже  разработала
технологический процесс с проектными нормами 0,07 мкм. - Г.Б.)
 Так же невозможно  уменьшение  до  бесконечности  напряжения  питания.  Во
всяком случае, оно должно  превышать  фоновый  "шум",  вызванный  случайными
перескоками   электронов,   космическим   излучением   и   электромагнитными
наводками.
 Менее проблематичным выглядит увеличение  слоев  металлизации.  Технически
это нетрудно, но вот экономически - неоправданно. Вероятность  брака  растет
экспоненциально. Именно этим (высоким процентом брака) в  первую  очередь  и
объясняется значительная стоимость процессора Pentium Pro.
 Это был тупик. Тупик, в который попали и CISC, и RISC. Ни одна из  них  не
была   приспособлена   для   параллельных   вычислений,   а   суперскалярные
архитектуры уже не обеспечивали должной производительности.
 Архитектура VLIW была известна и ранее, хотя процессоры на ее основе  были
мало распространены. Наиболее известные модели были  выпущены  ныне  уже  не
существующей фирмой Multiflow Computer.   [6]  В  нашей  стране  по  сходной
архитектуре был построен суперкомпьютер "Эльбрус-3".
 Из микропроцессоров, построенных по VLIW-архитектуре, можно назвать только
семейство  сигнальных  чипов  TMS320C6x   фирмы   Texas   Instruments.   Эта
архитектура не стала бы знаменитой,  если  бы  именно  на  нее  не  обратили
внимание  компании  HP  и  Intel  при  разработке   микропроцессора   нового
поколения Merced. Поэтому есть смысл рассмотреть ее подробнее.
 Основной идеей VLIW был явный параллелизм, задаваемый на уровне команд. То
есть в каждой команде  имелось  поле,  в  котором  указывалась  связь  между
инструкциями. Как правило, три команды объединялись в одно слово, в  котором
были возможны следующие варианты исполнения:
 - все три команды выполняются параллельно;
 - сначала выполняются первые две команды, потом третья;
 - выполняется одна команда, а затем параллельно последующие две.
 Изюминка в том, что сами слова можно было упаковывать по три (или более  -
это зависело только от конкретной  реализации),  и  поскольку  явно  указана
зависимость  между  командами,  возможно  неограниченно   наращивать   число
параллельно  выполняемых  инструкций.  Причем  код  мог  без  перекомпиляции
эффективно работать на совместимых процессорах с разным  числом  исполняющих
устройств. Хотя обычно ограничивались девятью. То  есть  три  слова  по  три
команды в каждом исполнялись за один такт.
 Неплохой результат, верно? Особенно если вспомнить, что RISC были способны
выполнить не более четырех команд, а CISC - и  вовсе  двух,  тогда  как  для
VLIW девять (или 16 = 4  по  4)  инструкций  не  предел.  Более  того:  если
суперскалярные архитектуры только некоторые - удачные  -  команды  исполняли
параллельно, то VLIW - в  большинстве  случаев.  Поэтому  производительность
может повышаться в десятки  раз  при  незначительном  аппаратном  усложнении
конструкции.
 В чем же тогда камень преткновения? Почему архитектура так и не  вышла  из
стен лабораторий и процессоров суперкомпьютеров, если  технически  она  была
достижима еще вчера?
 Вся сложность в компиляторах. Точнее  -  в  распараллеливании  инструкций.
Чтобы параллельно исполнять девять и более  команд,  необходимо  расположить
их так, чтобы не было явной зависимости. Теперь процессор не будет нам ни  в
чем  помогать.  Он  будет  лишь  буква  в  букву   следовать   распоряжениям
компилятора.
 Сложность  разрабо
12345След.
скачать работу

Повышение производительности компьютерных систем

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ