19343

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

Лекция

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

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

Русский

2013-07-11

158.5 KB

14 чел.

АК ЛЕКЦИЯ № 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.


 

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

14911. АЛАШ ИДЕЯСЫ – ҚАЗАҚ ИДЕЯСЫ 68.5 KB
  АЛАШ ИДЕЯСЫ ҚАЗАҚ ИДЕЯСЫ Алаш қозғалысының тарихи негізгі Ресей отаршылдығының қазақ жеріндегі аса асқынған кезеңінен басталды десек те Алаш идеясы одан әлдеқайда бұрын өмірге келіп күні бүгінге дейін елім жерім деп ұлт болашағын ойлаған әрбір қазақ ...
14912. «АЛАШ» ИДЕЯСЫ ЖӘНЕ ХАЛЫҚАРАЛЫҚ «ҚАЗАҚ ТІЛІ» ҚОҒАМЫ 41.5 KB
  АЛАШ ИДЕЯСЫ ЖӘНЕ ХАЛЫҚАРАЛЫҚ ҚАЗАҚ ТІЛІ ҚОҒАМЫ Қазақ халқының тарихында әр ғасырдың басы аласапыран оқиғаларға толы болды. Бұл өз кезегінде тарих сахнасына іріірі тұлғалар мен қайраткерлерді шығарып түбірлі өзгерістерге алып келіп отырды. Әсіресе ХХ ғасырд
14913. АЛАШ ҚАЙРАТКЕРЛЕРІ ЖӘНЕ ҚАЗІРГІ ТІЛ МӘСЕЛЕСІ 50.5 KB
  АЛАШ ҚАЙРАТКЕРЛЕРІ ЖӘНЕ ҚАЗІРГІ ТІЛ МӘСЕЛЕСІ Қазақ халқының тарихында Алаш қайраткерлерінің алар орны ерекше. Олар өз ұлтының бостандығы жолында басын бәйгеге тіккен туған елін отаршылдықтың бұғауынан босатып тәуелсіз мемлекет құру үшін ақтық демі қалғанша күреск...
14914. АЛАШ ҚОЗҒАЛЫСЫ ЖӘНЕ АТБАСАР ӨҢІРІ 40.5 KB
  АЛАШ ҚОЗҒАЛЫСЫ ЖӘНЕ АТБАСАР ӨҢІРІ Алаш қозғалысына қатысты әрбір дерек біз үшін маңызды болуы тиіс. Өйткені бұл ұлтазаттық қозғалыс халқымызды ұйыстыруға дербес мемлекет құруға ең бастысы ұлтымыздың рухын көтеруге арналған ұлы шара еді. Тәуелсіздік алған жылдан
14915. «АЛАШ» ҚОЗҒАЛЫСЫ ЖӘНЕ НАРМАНБЕТ ОРМАНБЕТҰЛЫ 49.5 KB
  АЛАШ ҚОЗҒАЛЫСЫ ЖӘНЕ НАРМАНБЕТ ОРМАНБЕТҰЛЫ Қоғамдық өмірге белсене араласқан Н.Орманбетұлы Ресей империясының отаршылдық саясатына қарсы халықтық үн көтерілген 1905 жылғы Қоянды жәрмеңкесіндегі атақты Қарқаралы петициясына қатысушылардың бірі болды. Патша өкімет...
14916. АЛАШ МҰРАТЫ – ОТАНДЫҚ БІЛІМ МЕН ҒЫЛЫМДЫ НЕГІЗДЕУШІ КҮШ 73 KB
  АЛАШ МҰРАТЫ ОТАНДЫҚ БІЛІМ МЕН ҒЫЛЫМДЫ НЕГІЗДЕУШІ КҮШ Алаш тарихы жаңаруға ұмтылған тарихи сабақтастықты үзбеген білім мен елшілдікті басым бағыт еткен ұлттық серпілудің тарихы. Сондықтан біз Алашты ауызға алған сайын осыдан 90 жыл бұрынғы саяси қозғалыс пен күре
14917. АЛАШ ТАҒЫЛЫМЫ ЖӘНЕ ҚАЗІРГІ ҚАЗАҚ РУХАНИЯТЫ 45 KB
  АЛАШ ТАҒЫЛЫМЫ ЖӘНЕ ҚАЗІРГІ ҚАЗАҚ РУХАНИЯТЫ Ұлт тарихы тек қана саяси әлеуметтік қоғамдық оқиғалардан ғана емес сонымен қатар ұрпақтар жалғастығынан өміршең дәстүрлерден құралатыны да белгілі. Сол игі дәстүрлерден тағылым ала отырып мемлекет әлеумет жеке адам к
14918. АЛАШ ТҰЛҒАЛАРЫНЫҢ КӨЗҚАРАСЫНДАҒЫ ҮНДЕСТІК 46.5 KB
  АЛАШ ТҰЛҒАЛАРЫНЫҢ КӨЗҚАРАСЫНДАҒЫ ҮНДЕСТІК XIX ғасырдың екінші жартысынан басталған қазақ ішіндегі күрестартыстардың басында болған қайраткерлер халқын орыс езгісінен азат етуді көздеді. Олар елін отарлаудан құтқарып ашық түрде күреске бастады. Олардың алға қойға
14919. АЛАШОРДА ҮКІМЕТІ ЖӘНЕ МЕМЛЕКЕТТІК ТІЛ САЯСАТЫ 59.5 KB
  АЛАШОРДА ҮКІМЕТІ ЖӘНЕ МЕМЛЕКЕТТІК ТІЛ САЯСАТЫ Елбасы Н.Назарбаев Қазақстанның болашағы бүгінгі жастар. Сіздер оларға қалай білім берсеңіздер Қазақстан сол деңгейде болады деп атап көрсеткен [1]. Тәуелсіз ел тірегі білімді ұрпақ десек дәуірдің күн тәртібінде т...