19343

АРХИТЕКТУРЫ С ПОЛНЫМ И СОКРАЩЁННЫМ НАБОРОМ КОМАНД

Лекция

Информатика, кибернетика и программирование

АК ЛЕКЦИЯ № 20 АРХИТЕКТУРЫ С ПОЛНЫМ И СОКРАЩЁННЫМ НАБОРОМ КОМАНД Современная технология программирования ориентирована на языки высокого уровня ЯВУ главная задача которых облегчить процесс написания программ. Более 90 всего процесса программирования осуществл...

Русский

2013-07-11

158.5 KB

13 чел.

АК ЛЕКЦИЯ № 20 АРХИТЕКТУРЫ С ПОЛНЫМ И СОКРАЩЁННЫМ НАБОРОМ КОМАНД

Современная технология программирования ориентирована на языки высокого уровня (ЯВУ), главная задача которых — облегчить процесс написания программ. Более 90% всего процесса программирования осуществляют на ЯВУ. К сожалению, операции, характерные для ЯВУ, отличаются от операций, реализуемых машинными командами. Эта проблема получила название семантического разрыва и ведет она к недостаточно эффективному выполнению программ. Пытаясь преодолеть семантический разрыв, разработчики ВМ расширяют систему команд, дополняя ее командами, реализующими сложные операторы ЯВУ на аппаратурном уровне, вводят дополнительные виды адресации и т. п. Вычислительные машины, где реализованы эти средства, принято называть ВМ с полным набором команд (CISC — Complex Instruction Set Computer). К типу CISC можно отнести практически все ВМ, выпускавшиеся до середины 80-х годов и значительную часть из выпускаемых в настоящее время.

Характерные для CISC способы решения проблемы семантического разрыва, вместе с тем ведут к усложнению архитектуры ВМ, главным образом устройства управления, что, в свою очередь, негативно сказывается на производительности в целом. Кроме того, в CISC очень сложно организовать эффективный конвейер команд, который, как уже отмечалось, является одним из наиболее перспективных путей повышения производительности ВМ. Все это заставило более внимательно проанализировать программы, получаемые после компиляции с ЯВУ. Был предпринят комплекс исследований, в результате которых обнаружились интересные закономерности:

- Реализация сложных команд, эквивалентных операторам ЯВУ, требует увеличения емкости управляющей памяти в микропрограммном УУ. Микропрограммы требуют существенного объёма памяти для хранения, между тем как их доля в общем объеме программы зачастую не превышает 0,2%.

- В откомпилированной программе операторы ЯВУ реализуются в виде процедур (подпрограмм), поэтому на операции вызова процедуры и возврата из нее приходится от 15 до 45% вычислительной нагрузки.

- При вызове процедуры вызывающая программа передает этой процедуре некоторое количество аргументов. В 98% случаев число передаваемых аргументов не превышает шести. Примерно такое же положение сложилось и с параметрами, которые процедура возвращает вызывающей программе. Более 80% переменных, используемых программой, являются локальными, то есть создаются при входе в процедуру и уничтожаются при выходе из нее. Количество локальных переменных, создаваемых отдельной процедурой, в 92% случаев не превышает шести.

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

Детальный анализ результатов исследований привел к серьезному пересмотру традиционных архитектурных решений, следствием чего стало появление архитектуры с сокращенным набором команд (RISC — Reduced Instruction Set Computer). Термин «RISC» впервые был использован Паттерсоном и Дитцелем в 1980 году.

Основные черты RISC-архитектуры

Главные усилия в архитектуре RISC направлены на построение максимально эффективного конвейера команд, то есть такого, где все команды извлекаются из памяти и поступают в ЦП на обработку в виде равномерного пoтока, причем ни одна команда не должна находиться в состоянии ожидания, а ЦП должен оставаться загруженным на протяжении всего времени. Кроме того, идеальным будет вариант, когда любой этап цикла команды выполняется в течение одного тактового периода, Последнее условие относительно просто можно реализовать для этапа выборки.

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

Помимо одинаковой длины команд, важно иметь относительно простую подсистему декодирования и управления: сложное устройство управления (УУ) будет вносить дополнительные задержки в формирование сигналов управления.

Очевидный путь существенного упрощения УУ — сокращение числа выполняемых команд, форматов команд и данных, а также видов адресации.

Излишне напоминать, что в сокращенном списке команд должны оставаться те, которые используются наиболее часто. Исследования показали, что 80-90% времени выполнения типовых программ приходится на относительно малую часть команд (10-20%). К наиболее часто востребуемым действиям относятся пересылка данных, арифметические и логические операции. Основная причина, препятствующая сведению всех этапов цикла команды к одному тактовому периоду, - потенциальная необходимость доступа к памяти для выборки операндов и/или записи результатов. Следует максимально сократить число команд, имеющих доступ к памяти. Это соображение добавляет к ранее упомянутым принципам RISC еще два:

- доступ к памяти во время исполнения осуществляется только командами «Чтение» и «Запись»;

- все операции, кроме «Чтение» и «Запись», имеют тип «регистр-регистр».

Для упрощения выполнения большинства команд и приведения их к типу «регистр-регистр* требуется снабдить ЦП значительным числом регистров общего назначения. Большое число регистров в регистровом файле ЦП позволяет обеспечить временное хранение промежуточных результатов, используемых как операнды в последующих операциях, и ведет к уменьшению числа обращений к памяти, ускоряя выполнение операций. Минимальное число регистров, равное 32, принято как стандарт де-факто большинством производителей RISC-компьютеров.

Суммируя сказанное, концепцию RISC-компьютера можно свести к следующим положениям:

- выполнение всех (или, по крайней мере, 75% команд) за один цикл;

- стандартная однословная длина всех команд, равная естественной длине слова и ширине шины данных и допускающая унифицированную поточную обработку всех команд;

- малое количество форматов команд (не более 4);

- малое число способов адресации (не более 4);

- доступ к памяти только посредством команд «Чтение» и -«Запись»;

- все команды, за исключением «Чтения» и «Записи», используют внутрипроцессорные межрегистровые пересылки;

- устройство управления «жесткой» логикой;

- относительно большой (не менее 32) процессорный файл регистров общего назначения (число РОН в современных RISC-микропроцессорах может превышать 500).

Регистры в RISC-процессорах

Отличительная черта RISC-архитектуры — большое число регистров общего назначения, что объясняется стремлением свести все пересылки к типу «регистр-регистр». Но увеличение числа РОН способно дать эффект лишь при разумном их использовании. Оптимизация использования регистров в RISC-процессорах обеспечивается как программными, так и аппаратными средствами.

Программная оптимизация выполняется на этапе компиляции программы, написанной на ЯВУ. Компилятор стремится так распределить регистры процессора, чтобы разместить в них те переменные, которые в течение заданного периода времени будут использоваться наиболее интенсивно.

На начальном этапе компилятор выделяет каждой переменной виртуальный регистр. Число виртуальных регистров в принципе не ограничено. Затем компилятор отображает виртуальные регистры на ограниченное количество физических регистров. Виртуальные регистры, использование которых не перекрывается, отображаются на один и тот же физический регистр. Если в определенном фрагменте программы физических регистров не хватает, то их роль для оставшихся виртуальных регистров выполняют ячейки памяти. В ходе вычислений содержимое каждой такой ячейки с помощью команды «Чтение» временно засылается в регистр, после чего командой «Запись» вновь возвращается в ячейку памяти.

Задача оптимизации состоит в определении того, каким переменным в данной точке программы выгоднее всего выделить физические регистры. Наиболее распространенный метод, применяемый для этой цели, известен как раскраска графа.

В общем случае метод формулируется следующим образом. Имеется граф, состоящий из узлов и ребер. Необходимо раскрасить узлы так, чтобы соседние узлы имели разный цвет и чтобы при этом общее количество привлеченных цветов было минимальным. В нашем случае роль узлов выполняют виртуальные регистры. Если два виртуальных регистра одновременно присутствуют в одном и том же фрагменте программы, они соединяются ребром. Делается попытка раскрасить граф в n цветов, где п — число физических регистров. Если такая попытка не увенчалась успехом, то узлам, которые не удалось раскрасить, вместо физических регистров выделяются ячейки в памяти.

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

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

Аппаратная оптимизация использования регистров в RISC-процессорах ориентирована на сокращение затрат времени при работе с процедурами. Наибольшее время в программах, написанных на ЯВУ, расходуется на вызовы процедур и возврат из них. Связано это с созданием и обработкой большого числа локальных переменных и констант. Одним из механизмов для борьбы с этим эффектом являются так называемые регистровые окна. Главная их задача — упростить и ускорить передачу параметров от вызывающей процедуры к вызываемой и обратно.

Регистровый файл разбивается на группы регистров, называемые окнами. Отдельное окно назначается глобальным переменным. Глобальные регистры доступны всем процедурам, выполняемым в системе в любое время. С другой стороны, каждой процедуре выделяется отдельное окно в регистровом файле. Все окна имеют одинаковый размер (обычно по 32 регистра) и состоят из трех полей. Левое поле каждого регистрового окна одновременно является и правым полем предшествующего ему окна (рис. 9.38). Среднее поле служит для хранения локальных переменных и констант процедуры.

База окна (первый в последовательности регистров окна) указывается полем, называемым указателем текущего окна (CWP, Current Window Pointer), обычно расположенным в регистре (слове) состояния ЦП. Если текущей процедуре назначено регистровое окно j CWP содержит значение j.

Каждой вновь вызванной процедуре выделяется регистровое окно, непосредственно следующее за окном вызвавшей ее процедуры. Последние k регистров окна одновременно являются первыми k регистрами окна j + 1. Если процедура, занимающая окно j обращается к процедуре, которой в данной архитектуре должно быть назначено окно j + 1, она может передать в процессе вызова k аргументов.

Упомянутые k регистров сразу же будут доступны вызванной процедуре без всяких пересылок. Естественно, вызов приведет к увеличению содержимого поля CPW на единицу.

Глубина вложения процедур одна в другую может быть весьма велика, и желательно, чтобы количество регистровых окон не было сдерживающим фактором.

Это достигается за счет организации окон в виде циклического буфера.

На рис. 9.39 показан циклический буфер из шести окон, заполненный на глубину 4 (процедура А вызвала В, В вызвала С, С вызвала D). Указатель текущего окна (CWP) идентифицирует окно активной на данный момент процедуры — D, то есть окно 03, При выполнении процедуры все ссылки на регистры в командах преобразуются в смещение относительно С WP. Указатель сохраненного окна (SWP, Saved Window Pointer) содержит номер последнего из окон, сохраненных в памяти по причине переполнения циклического буфера. Если процедура D теперь вызовет процедуру Е, аргументы для нее она поместит в общее для обеих поле регистровых окон (пересечение окон 03 и О4 а значение CWP увеличится на единицу, то есть CWP будет показывать на окно 04.

Если далее процедура Е вызовет нроцедуру F, то этот вызов при существующем состоянии буфера не может быть выполнен, поскольку окно для F(05) перекрывается с окном процедуры А (0 ). Следовательно, при попытке F начать загружать правое поле своего окна будут потеряны параметры процедуры А (А вх). Поэтому когда CWP увеличивается на единицу (операция выполняется по модулю 6) и оказывается равным SWP, возникает прерывание и окно процедуры А сохраняется в памяти (запоминаются только поля А вх и А вых). Далее значение CWP инкрементируется и производится вызов процедуры F, Аналогичное прерывание происходит и при возврате, например когда выполнится возврат из В в A. CWP уменьшается, что приведет к восстановлению содержимого окна процедуры А из памяти.

Как видно из примера, регистровый файл из п окон способен поддерживать п – 1 вызов процедуры. Число п не должно быть большим. Показано, что при 8 регистровых окнах сохранение и восстановление окон в памяти требуется лишь для 1% операций вызова процедур. В ВМ Pyramid, например, используется 16 окон по 32 регистра в каждом.

Теоретически такой прием не исключен и в CISC. Однако устройство управления CISC-процессора оккупирует на кристалле более 50% площади, оставляя мало места для других подсистем, в частности для большого файла регистров. УУ RISC занимает порядка 10% поверхности кристалла, предоставляя возможность иметь большой регистровый файл.

Другая часто встречаемая техника аппаратной оптимизации использования регистров — придание некоторым из них специального качества: такие регистры в состоянии принимать на себя имя любого РОН. Набор регистров, обладающих подобным свойством, называют буфером переименования. Прием оказывается очень удобным при конвейеризации команд и позволяет предотвратить конфликты, когда одна команда хочет воспользоваться регистром, в данный момент занятым другой командой.

Преимущества и недостатки RISC

Сравнивая достоинства и недостатки CISC и RISC, невозможно сделать однозначный вывод о неоспоримом преимуществе одной архитектуры над другой. Для отдельных сфер использования ВМ лучшей оказывается та или иная. Тем не менее ниже приводится основная аргументация «за» и «против» RISC-архитектуры.

Для технологии RISC характерна сравнительно простая структура устройства управления. Площадь, выделяемая на кристалле микросхемы для реализации УУ, существенно меньше. Так, в RISC I она составляет 6%,а в RISC II — 10%. Как следствие, появляется возможность разместить на кристалле большое число регистров ЦП (138 в RISC II). Кроме того, остается больше места для других узлов ЦП и для дополнительных устройств: кэш-памяти, блока арифметики с плавающей запятой, части основной памяти, блока управления памятью, портов ввода/вывода.

Унификация набора команд, ориентация на потоковую конвейерную обработку, унификация размера команд и длительности их выполнения, устранение периодов ожидания в конвейере — все эти факторы положительно сказываются на общем быстродействии. Простое устройство управления имеет немного вентилей и, следовательно, короткие линии связи для прохождения сигналов управления.

Малое число команд, форматов и режимов приводит к упрощению схемы декодирования, и оно происходит быстрее. Применяемое в RISC УУ с «жесткой» логикой быстрее микропрограммного. Высокой производительности способствует и упрощение передачи параметров между процедурами. Таким образом, применение RISC ведет к сокращению времени выполнения программы или увеличению скорости, за счет сокращения числа циклов на команду.

Простота УУ, сопровождаемая снижением стоимости и повышением надежности, также говорит в пользу RISC. Разработка УУ занимает меньше времени. Простое УУ будет содержать меньше конструктивных ошибок и поэтому более надежно.

Многие современные CISC-машины, такие как VAX 11/780, VАХ-8600, имеют много средств для прямой поддержки функций ЯВУ, наиболее частых в этих языках (управление процедурами, операции с массивами, проверка индексов массивов, защита информации, управление памятью и т. д.). RISC также обладает рядом средств для непосредственной поддержки ЯВУ и упрощения разработки компиляторов ЯВУ, благодаря чему эта архитектура в плане поддержки ЯВУ ни в чем не уступает CISC,

Недостатки RISC прямо связаны с некоторыми преимуществами этой архитектуры. Принципиальный недостаток — сокращенное число команд: на выполнение ряда функций приходится тратить несколько команд вместо одной в CISC.

Это удлиняет код программы, увеличивает загрузку памяти и трафик команд между памятью и ЦП. Недавние исследования показали, что RISC-программа в среднем на 30% длиннее CISC-программы, реализующей те же функции.

Хотя большое число регистров дает существенные преимущества, само по себе оно усложняет схему декодирования номера регистра, тем самым увеличивается время доступа к регистрам,

УУ с «жесткой» логикой, реализованное в большинстве RISC-систем, менее гибко, более склонно к ошибкам, затрудняет поиск и исправление ошибок, уступает при выполнении сложных команд.

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


 

А также другие работы, которые могут Вас заинтересовать

39025. Типовое проектирование ИС 58 KB
  Сущность: Является одной из разновидностей индустриального проектирования. Содержание: Процесс проектирования ИС состоит из следующих основных этапов: Разбиение проекта информационной системы на отдельные составляющие компоненты. Основная цель применения ТПР – уменьшение трудоемкости и стоимости проектирования и или разработки ИС.
39026. Основные понятия технологии проектирования информационных систем 66 KB
  Основные понятия технологии проектирования информационных систем Понятие и сущность проектирования ИС Определение Проектирование от лат. Обладает возможностью последовательной детализации и конкретизации могут быть выделены стадии этапы проектирования. Предполагает возможность частичной автоматизации Традиционные виды проектирования: архитектурностроительное машиностроительное технологическое. Проектирование информационных систем – сравнительно новый вид проектирования.
39027. Жизненный цикл информационных систем 92 KB
  Поэтому с точки зрения проектирования ИС имеет смысл говорить о модели жизненного цикла. Модель жизненного цикла ИС – это модель создания и использования ИС отражающая ее различные состояния начиная с момента возникновения необходимости в данном комплексе средств и заканчивая моментом его полного выхода из употребления у пользователей. Вопрос к семинарскому занятию: можно ли назвать моделью жизненного цикла такую модель которая бы охватывала не все возможные состояния ИС а только некоторую их часть. Модель жизненного цикла и технология...
39028. Каноническое проектирование информационных систем 126 KB
  В зависимости от сложности объекта автоматизации и набора задач требующих решения при создании конкретной ИС стадии и этапы работ могут иметь различную трудоемкость. Формирование требований к ИС включает в себя следующие этапы: Обследование объекта и обоснование необходимости создания ИС; Формирование требований пользователя к ИС; Оформление отчёта о выполненной работе и заявки на разработку ИС тактикотехнического задания Обследование объекта автоматизации ОА – важнейшая составляющая предпроектной стадии. Обследование объекта...
39029. Проектирование информационного обеспечения ИС 188 KB
  Информационное обеспечение совокупность единой системы классификации и кодирования информации унифицированных систем документации схем информационных потоков циркулирующих в организации а также методология построения баз данных. Понятие и виды информационного обеспечения Информационное обеспечение ИС является средством для решения следующих задач: однозначного и экономичного представления информации в системе на основе кодирования объектов; организации процедур анализа и обработки информации с учетом характера связей между...
39030. Базовые технологии доступа к БД в Borland C++ Builder 159 KB
  Указания к выполнению лабораторной работы Процессор баз данных Borlnd Dtbse Engine – не единственный механизм организации доступа к данным в БДприложениях. Важным примером таких разработок является технология ODBC которая на сегодняшний день стала фактическим отраслевым стандартом работы с базами данных из клиентских приложений. Аббревиатура ODBC расшифровывается как Open DtBse Connectivity что можно перевести как открытая система связи с базами данных. В системе взаимодействия приложений с базами данных посредством ODBC принято...
39031. Базовые технологии доступа к БД в Borland C++ Builder. Лабораторная работа 125.5 KB
  Указания к выполнению лабораторной работы Ранее уже говорилось что наборы данных представляют собой группы записей переданных из базы данных в приложения для просмотра и редактирования. Каждый набор данных инкапсулирован в специальном компоненте доступа к данным. Основные свойства и методы базового класса наборов данных TDtSet уже были рассмотрены нами ранее.
39032. Современные технологии доступа к БД 117 KB
  Технология ODBC все еще признается в качестве отраслевого стандарта доступа к базам данных однако также не развивается поэтому разработчики программного обеспечения все чаще обращают свое внимание на современные и возможно более эффективные технологии. С конца 90ых годов и до настоящего времени фирма Microsoft пытается создать универсальную платформу доступа к разнородным хранилищам данных для семейства своих операционных систем Windows. Источниками данных в данном случае могут являться не только SQLсервера Баз Данных но и иные...
39033. Технологии разработки распределенных информационных систем 121.5 KB
  Получить представление о компонентной объектной модели COM. Развитием трехуровневой архитектуры является так называемая многоуровневая nуровневая организация вычислений Multitier computing когда информационная система состоит из большого количества удаленных друг от друга объектов серверов каждый из которых может предоставлять другим объектам клиентам разнообразные информационные услуги. В настоящее время наиболее популярны следующие технологии организации распределенных информационных систем: Технология COM и ее развитие...