Для того, чтобы время обработки стремилось к нулю, быстродействие надо устремить в бесконечность. |
Не можешь заставить других - работай сам. Когда-то давно попросил я Константина Афанасьева рассказать читателям о тех процессорах, которые не Pentium. "Сделаем," - ответил Афанасьев. Вот и делаем.
Как известно, сердцем любой современной персоналки является микропроцессор. У многих это слово однозначно ассоциируется с фирмой Intel, которая некогда выпустила получивший широкое распространение процессор 8086 и с тех пор почивает на лаврах, создавая все более мощные его версии. Однако на этом семействе свет клином не сошелся, и процессор Pentium II - отнюдь не венец эволюции, промежуточной ступенью перед которым якобы является человек.
Недолгое, но бурное развитие микрокомпьютеров привело к появлению двух доминирующих ветвей эволюции - Intel X86 и RISC. Первые появились раньше и успели занять значительную долю рынка, но разработанные в середине 80-х RISC-компьютеры оказались гораздо мощнее и оттяпали нишу высокопроизводительных систем.
Процессоры, не принадлежащие к классу RISC (Reduced Instruction Set Computing, вычисления с сокращенным набором команд), принято называть CISC (Complex ISC, вычисления со сложным набром команд). Так получилось, что из них пережило конкурентную борьбу только семейство X86 с его багажом накопленных программ, да и то современные представители семейства X86 (Pentium Pro, Pentium II, K5, K6) используют внутри себя все ту же архитектуру RISC. А потому RISC можно назвать новым, или, за давностью лет, очередным этапом развития процессоров.
А дело было так. В 80-е годы на пути роста производительности микропроцессоров стало сложное устройство центрального управления, связанное с доставшимся в наследство от традиционных ЭВМ большим набором команд. Теоретические исследования показали, что сведение набора команд до минимума наболее часто используемых позволит за счет незначительного увеличения объема программы добиться значительного упрощения процессора.
Тогда были сформулированы основные принципы RISC:
- Каждая команда независимо от ее типа выполняется за один такт.
- Все команды должны иметь одинаковую длину и использовать минимум адресных форматов.
- Вся обработка данных осуществляется в регистрах процессора, обращение к памяти происходит только при выполнении операций записи и чтения.
- Система команд должна обеспечивать поддержку языков высокого уровня.
Освободившаяся в результате площадь кристалла была пущена на увеличение разрядности и производительности процессоров. Например, выпущенный в 1985 году 32-разрядный процессор ARM (Advanced RISC Machine) при значительно большем быстродействии по степени интеграции был сопоставим с 8-разрядным Intel 8080 (25 тыс. транзисторов). И теперь 64 разряда для RISC-процессоров норма, а для X86 - далекое будущее.
То же сэкономленное место на кристалле было пущено на всевозможные ухищрения, позволяющие увеличить скорость обработки данных. За полвека существования компьютеров было разработано множество таких наворотов, которые разместить в CISC-процессоре было просто негде.
Преимущество RISC не только в экономии места. Активное использование регистров уменьшает число обращений к памяти до минимума. Загрузка регистров, то есть обмен между регистрами и памятью, осуществляется двумя различными способами - аппаратным и программным.
Аппаратный, применяющийся в процессорах SPARC, подразумевает реализацию 138 регистров, десять из которых видны всегда, а оставшиеся 128 разбиваются на восемь перекрывающихся окон, которые сменяют друг друга при вызове подпрограмм. Такая схема называется MORS (Multiple Overlapping Register Sets) или Rolodex.
В этом случае вызов процедуры происходит без обращения к памяти, передача параметров осуществляется через общие регистры двух окон, но для вызова девятой процедуры приходится прибегать к сложным техническим решениям, а сохранение 138 регистров в памяти при контекстном переключении процессов в многозадачной системе и вовсе вызывает непредсказуемую задержку.
Поэтому в большинстве RISC-процессоров применяется программное управление обращениями к памяти. Число регистров невелико (обычно 32), вызов процедур использует обычный стековый механизм. Предполагается, что обращения к памяти все равно поглощаются кэшем. Задача рационального использования регистров возлагается на компилятор.
Для архитектуры RISC вообще характерно возложение всех и всяческих задач на компилятор. Скорость работы одной и той же программы на RISC-процессоре может различаться в несколько раз в зависимости от компилятора, а ручная оптимизация позволяет сократить время работы фрагмента программы еще вдвое.
Еще один недостаток RISC - увеличение размера кода приблизительно в полтора раза из-за сокращенного набора команд и их фиксированной длины. Впрочем, в наше время немеренных мегабайтов это не слишком критично-развитие мультимедии привело к тому, что объем обрабатыаемых данных стал заведомо больше размера кода, а быстродействия не хватает по определению (см. эпиграф).
Дмитрий БОРОДАЕНКО,
forever@mad.scientist.com
Кому нужны 64-битные вычисления
Не успели мы освоиться с Windows 95 и 32-разрядными вычислениями, как оказалось, что и этого недостаточно. Гонка за числом разрядов продолжается, и дело тут не только и не столько в доступном адресном пространстве. Просто еще во времена больших машин было доказано, что для целочисленных вычислений оптимально 32-битовое представление, а для чисел с плавающей запятой необходимо и достаточно 64 бита.
Поэтому 32-разрядный процессор с действительными числами полной точности может управиться только в два захода, что для RISC-архитектуры с ее требованием минимизации форматов по крайней мере неудобно. Увеличение разрядности обрабатываемых данных вдвое требует увеличения либо разрядности процессора вдвое, либо тактовой частоты - вчетверо. Отчасти поэтому 32-разрядный PowerPC так отстает в вычислениях с плавающей запятой от полноценных 64-разрядных собратьев.
Горячие темы