Реклама:

Прошло уже более двадцати лет с тех пор, как были сконструированы первые компьютеры RISC, однако некоторые принципы их функционирования можно перенять, учитывая современное состояние технологии разработки аппаратного обеспечения. Если происходит очень резкое изменение в технологии (например, новый процесс производства делает время обращения к памяти в 10 раз меньше, чем время обращения к центральному процессору), меняются все условия. Поэтому разработчики всегда должны учитывать возможные технологические изменения, которые могли бы повлиять на баланс между компонентами компьютера.

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

♦ Все команды должны выполняться непосредственно аппаратным обеспечением. То есть обычные команды не интерпретируются микрокомандами. Устранение уровня интерпретации повышает скорость выполнения большинства команд. В компьютерах типа CISC более сложные команды могут разбиваться на несколько шагов, которые затем выполняются как последовательность микрокоманд. Эта дополнительная операция снижает быстродействие машины, но может использоваться для редко применяемых команд.

♦ Компьютер должен запускать как можно больше команд в секунду. В современных компьютерах используется много различных способов повышения производительности, главный из которых - запуск как можно большего количества команд в секунду. Процессор 500-MIPS способен запускать 500 млн команд в секунду, и при этом не имеет значения, сколько времени занимает выполнение этих команд. (MIPS - это сокращение от Millions of Instructions Per Second - миллионы команд в секунду.) Этот принцип предполагает, что параллелизм должен играть главную роль в повышении производительности, поскольку запустить на выполнение большое количество команд за короткий промежуток времени можно только в том случае, если есть возможность одновременного выполнения нескольких команд.

Хотя команды любой программы всегда располагаются в памяти в определенном порядке, компьютер способен изменить порядок их запуска (так как необходимые ресурсы памяти могут быть заняты) и (или) завершения. Конечно, если команда 1 устанавливает значение в регистр, а команда 2 использует этот регистр, нужно действовать с особой осторожностью, чтобы команда 2 не считала значение из регистра раньше, чем оно там окажется. Чтобы не допускать подобных ошибок, необходимо хранить в памяти большое количество дополнительной информации, но благодаря возможности выполнять несколько команд одновременно производительность все равно оказывается выше.

♦ Команды должны легко декодироваться. Предел количества запускаемых в секунду команд зависит от темпа декодирования отдельных команд. Декодирование команд позволяет определить, какие ресурсы им необходимы и какие действия нужно выполнить. Полезно все, что способствует упрощению этого процесса. Например, можно использовать единообразные команды с фиксированной длиной и с небольшим количеством полей. Чем меньше разных форматов команд, тем лучше.

♦ К памяти должны обращаться только команды загрузки и сохранения. Один из самых простых способов разбить операцию на отдельные шаги - сделать так, чтобы операнды большей части команд брались из регистров и возвращались туда же. Операция перемещения операндов из памяти в регистры и обратно может осуществляться в разных командах. Поскольку доступ к памяти занимает много времени, причем длительность задержки не поддается прогнозированию, выполнение этих команд могут взять на себя другие команды, единственное назначение которых - перемещение операндов между регистрами и памятью. То есть к памяти должны обращаться только команды загрузки и сохранения (LOAD и STORE).

♦ Регистров должно быть много. Поскольку доступ к памяти происходит довольно медленно, в компьютере должно быть много регистров (по крайней мере, 32). Если слово однажды вызвано из памяти, при наличии большого числа регистров оно может содержаться в регистре до тех пор, пока не потребуется. Возвращение слова из регистра в память и новая загрузка этого же слова в регистр нежелательны. Лучший способ избежать излишних перемещений - наличие достаточного количества регистров.

Системы RISC и CISC || Оглавление || Параллелизм на уровне команд