Иркутский государственный университет путей сообщения
Иркутск 2010
Анализ процесса выполнения программ, написанных на языках высокого уровня, создал предпосылки для разработки нового типа архитектуры процессоров — RISC-архитектуры. Ее особенностью является использование сокращенного набора машинных команд. Анализ показал» что доминирующими в программе являются операторы присваивания, а это означает, что основные усилия следует направить на оптимизацию операций передачи переменных. Кроме того, в программах встречается очень много условных выражений XF и операторов цикла LOOP, что требует разработки эффективного механизма управления, оптимизирующего конвейерную организацию выполнения ма-шинных команд. В то же время анализ форм адресации показал, что вполне возможно добиться высокой производительности работы процессора, размещая операнды в регистрах.
Результаты этих исследований и определили ключевые характеристики RISC-компьютеров; небольшое количество команд фиксированного формата в наборе, большое количество регистров или применение компиляторов, оптимизирующих использование регистров, упор на рациональную организацию работы конвейера операций.
Само по себе сокращение набора команд уже создает достаточно хорошие предпосылки для повышения эффективности работы конвейера, поскольку алго-ритм выполнения команд становится более регулярным и лучше предсказуемым. Кроме того, RISC-архитектура лучше подходит для применения задержанной технологии выполнения команд перехода и перекомпоновки других команд в программе, что также повышает эффективность работы конвейера.
С тех пор как в начале 1950-х годов были созданы первые вычислительные машины с хранимой программой, принципиально новых идей в области архитектуры и структурной организации компьютерных систем было не так много, и пересчитать их можно на пальцах.
• Концепция семейства машин. Эта концепция была внедрена впервые специалистами из IBM при проектировании семейства S/360 в 1964 году. За ними последовали разработчики из DEC со своим семейством PDP-8. Концепция семейства предусматривает определенное дистанцирование архитектуры компьютера от его структурной и схемной реализации. Потребителю предлагается функциональный ряд компьютеров, разных по производительности и стоимости, но имеющих одинаковую архитектуру.
• Микропрограммное управление. Этот принцип предложен М. Уилксом (M.V. Wiikes) в 1951 году и реализован в семействе IBM S/360 в 1964 году. Микропрограммирование облегчает разработку и упрощает структуру устройства управления процессора, а также хорошо сочетается с концепцией семейства компьютеров.
• Применение кэш-памяти. Реально впервые реализовано в модели IBM 360/85 в 1968 году. Включение уровня, кэш-памяти в иерархию памяти компьютера позволило существенно повысить его производительность.
• Конвейерная организация. Такая организация позволила на практике реализовать принцип совмещения операций при последовательном характере обработки команд программы. Примерами могут служить конвейер выполнения машинных команд и векторная обработка.
• Использование в единой системе множества "процессоров. Эта концепция имеет множество интерпретаций, отличающихся целевым назначением и структурной организацией.
К этому списку сейчас можно добавить и одну из наиболее интересных новейших идей, потенциально сулящую переворот в наших взглядах на архитектуру компьютеров — идею сокращенного набора команд. Переход на RISC-архитектуру означает кардинальное изменение многих существующих взглядов на принципы построения процессоров.
Хотя специалисты и не руководствуются единым общепринятым критерием принадлежности определенной системы к типу RISC-систем, большинство из них со-глашается с тем, что следует учитывать указанные ниже особенности организации:
• большое количество универсальных регистров в составе процессора или ориентация на применение компиляторов, оптимизирующих использование регистров;
• ограниченное количество относительно простых команд в наборе; .
• перенос центра усилий при проектировании на' оптимизацию конвейера операций.
В табл. 12.1 сравниваются параметры некоторых RISC-систем, CISC-систем1 и систем с суперскалярной архитектурой.
Эту главу мы начнем с небольшого обзора особенностей процесса выполнения программы и рассмотрим три только что упомянутых темы. Затем последует описание двух конкретных RISC-систем, по которым имеется широко доступная и подробная техническая документация.
1Аббревиатура CISC означает complex instruction set computer — компьютер с расширенным набором команд. — Прим, перев.
Таблица 12:1. Сравнительные характеристики процессоров с CISC-, RISC- и суперскалярной архитектурой
CISC-системы | RISC-системы | Суперскалярные | системы | |||||
Параметр | IBM 370/168 | VAX 11/780 | Intel 80486 | SPAEC | MIPSR4000 | PowerPC | Ultra SPARC | MIPSR10000 |
Год разработки | 1973 | 1978 | 1989 | 1987 | 1991 | 1993 | 1996 | 1996 |
Количество команд в наборе | 208 | 308 | 235 | 69 | 94 | 225 | ||
Размер команды (байт) | 2-6 | 2-57 | 1-11 | 4 | 4 | 4 | 4 | 4 |
Количество режимов адресации | 4 | 22 | 11 | 1 | 1 | 2 | 1 | 1 |
Количествоуниверсальных регистров | 16 | 16 | 8 | 40-520 | 82' | 32 | 40-620 | 32 |
Размер управляющей памяти (Кбит) | 420 | 480 | 246 | _ | _ | _ | _ | _ |
Размер кэш-памяти' (Кбайт) | 64 | 64 | 8 | 32 | 128 | 16-32 | 32 | 64 |
Характеристики выполнения команд
Наиболее заметно эволюция применения компьютеров во всех областях жизни общества отразилась на языках программирования. По мере того как доля стоимости аппаратной части в общей цене компьютерной системы снижается, доля программной части растет. Кроме того, хроническая нехватка специалистов по разработке программного обеспечения влечет за собой и рост стоимости программ в абсолютном выражении. Помимо увеличения стоимости и неудобства работы с некоторыми программами существует' еще и фактор ненадежности программного обеспечения — нередки случаи, когда в течение многих лет эксплуатации в программах обнаруживаются все новые и новые ошибки, причем это в равной мере относится и к системным, и к прикладным программам.
В ответ на запросы пользователей разных категорий разрабатываются все новые и новые языки программирования высокого уровня (ЯПВУ), которые позволяют в более компактной форме представлять алгоритмы, берут на себя заботы о деталях реализации вычислений и "часто поддерживают естественный для многих задач объектно-ориентированный характер обработки информации.
Но увы, повышение уровня "интеллектуальности" ЯПВУ порождает проблему, известную сейчас под именем "семантического разрыва" — существенного разрыва между операциями, описываемыми выражениями ЯПВУ, и операциями, поддерживаемыми на уровне машинного языка. Этот разрыв проявляется в снижении эффективности процесса выполнения программы, росте размеров машинного программного кода и усложнении программ-компиляторов. Специалисты, занятые разработкой архитектуры компьютеров, задались целью устранить разрыв. Среди причин его возникновения многие называют возросшее количество машинных команд в наборе, большое разнообразие режимов адресации, стремление аппаратно реализовать некоторые операторы ЯПВУ. Примером последней тенденции является машинная команда CASE в процессоре VAX. Использование расширенных наборов команд преследует такие цели:
• упрощение компиляторов;
• повышение эффективности выполнения программы, поскольку сложные последовательности операций могут быть реализованы на уровне микрокоманд;
• поддержка все более сложных и "интеллектуальных" ЯПВУ.
В последние годы проводилось множеств исследований с целью выявления закономерностей, процесса выполнения машинного кода, . который формируется после компиляции программ, написанных на ЯПВУ. Результаты этих исследований послужили для некоторых специалистов основой поиска нового подхода — добиваться повышения эффективности поддержки ЯПВУ не. за счет усложнения, а, наоборот, за счет упрощения архитектуры компьютера.
Чтобы понять ход рассуждений адептов нового подхода, обратимся к особенностям процесса выполнения машинной команды. Вас интересуют следующие аспекты этого процесса.
• Выполняемые операции — функции, которые возлагаются на процессор, и взаимодействие процессора с памятью.
• Используемые операнды — типы операндов и частота их использования в командах. Эта информация послужит для выбора множества режимов адресации.
• Последовательность выполнения. Эта информация определяет структуру управления процессором и конвейера операции.
В данном разделе мы рассмотрим результаты многочисленных исследований статистических характеристик программ .на языках высокого уровня. В процессе исследований анализировалось поведение программы во время ее. выполнения, что позволяет считать соответствующие, параметры динамическими, в отличие от статических, получаемых при анализе "чистого" текста программы. Статические параметры не несут информации, необходимой для оценки производительности работы компьютера, на котором выполняется программа, поскольку при определении этих параметров не учитывается, сколько раз выполняется тот или иной фрагмент программы в процессе решения задачи
Операции
Анализу частоты применения операторов определенных типов в программах на языках высокого уровня посвящено довольно много исследований, основные результаты которых приведены в табл. 4.9 (см. приложение 4А в конце главы 4). Как видно из этой таблицы, данные, полученные при исследовании программ разного назначения, написанных на • распространенных языках, достаточно хорошо согласуются. Доминирующее положение в 'программах занимают операторы присваивания, что указывает на важность простых средств пересылки данных в наборе машинных команд. Следующими по частоте появления в программах являются условные выражения вроде IF и LOOP. В машинных программах эти выражения реализуются командами сравнения и условного перехода. Отсюда следует, что при проектировании набора команд особое внимание должно быть уделено командам управления ходом выполнения программы. Результаты анализа структур программ служат исходной информацией разработчику набора машинных команд процессора, указывая, какие операции встречаются при выполнении программ чаще других, а следовательно, оптимальная реализация каких команд дает наиболее ощутимый эффект. Нужно отметить, что оценки, полученные при анализе текстов программ, не несут информации о том, сколько времени реально тратится в процессе выполнения программы на операции того или иного типа. Чтобы получить оценки динамических параметров, требуется анализировать процесс выполнения странсированной программы на машинном языке и выяснить, какие операторы в исходном тексте программы повлекли за собой включение в выполняемую машинную программу большей части команд.