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

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

Идеи о подобной, на лету, оптимизации кода породили суперскалярные микропроцессоры, то есть такие, где параллелизм команд явно не указан и отслеживается процессором самостоятельно.

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

MOV AX,1234h ; Записать в регистр AX число 1234h

ADD DX,AX ; Сложить содержимое регистра DX с регистром AX

MOV CX,666h ; Записать в регистр CX число 666h

ADD BX.CX ; Сложить содержимое регистра BX с регистром CX

Можно исполнить в другом порядке:

MOV AX,1234h ; Записать в регистр AX число 1234h

MOV CX,666h ; Записать в регистр CX число 666h

ADD DX,AX ; Сложить содержимое регистра DX с регистром AX

ADD BX.CX ; Сложить содержимое регистра BX с регистром CX

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

RISC в этой ситуации оказались в более выигрышном положении. Ограниченный набор регистров CISC порождал проблемы аналогично следующей:

MOV AX,1234h ; Записать в регистр AX число 1234h

ADD DX,AX ; Сложить содержимое регистра DX с регистром AX

MOV AX,666h ; Записать в регистр CX число 666h

ADD BX.AX ; Сложить содержимое регистра BX с регистром AX

Теперь уже невозможно одновременно выполнить первую и третью строки, однако этой, казалось бы, на первый взгляд, неразрешимой проблеме быстро было найдено красивое решение. В действительности зависимость между двумя командами ложная. Очевидно (даже машине), что должны использоваться дополнительные регистры. Но что нас ограничивает? Давайте переименуем регистры в AX~1 и AX~2 соответственно. Тогда получим следующий код:

MOV AX~1,1234h ; Записать в регистр AX число 1234h

ADD DX, AX~1 ; Сложить содержимое регистра DX с регистром AX

MOV AX~2,666h ; Записать в регистр CX число 666h

ADD BX, AX~2 ; Сложить содержимое регистра BX с регистром AX

Разумеется, теперь никаких проблем с параллельным исполнением уже не возникнет. Конечно же, потребуется больше регистров! Но регистры дешевы (всего лишь набор триггеров из 4-6 транзисторов), а за быстродействие потребитель деньги охотно заплатит.

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

И Intel находит блестящее решение. Существующие регистры при декодировании команды проецируются на гораздо больший набор внутренних. И как только обнаруживается ложная зависимость, очередной регистр переименовывается. Разрыв в производительности между CISC и RISC снова утерян.

ПАРАЛЛЕЛИЗМ В МИКРОПРОЦЕССОРАХ RISC и CISC

Микропроцессоры PowerPC (RISC)

Процессор PowerPC был разработан в результате тесного сотрудничества ведущих производителей индустрии - IBM, Apple и Motorola. Он воплотил в себе гений тысяч инженеров, долгое время был лидером среди собратьев в отношении цена/производительность.

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

К-во Просмотров: 327
Бесплатно скачать Реферат: Повышение производительности компьютерных систем