Тема 5_2010__Процессоры (542582), страница 2
Текст из файла (страница 2)
Для CISC-систем подобной проблемы не существует, посколькумодификация регистров может происходить на фоне обработки команд формата"память – память".Существуют два подхода к решению проблемы модификации регистров вRISC-архитектуре: аппаратный, предложенный в проектах RISC-1 и RISC-2, ипрограммный, разработанный специалистами IВМ и Стэндфордскогоуниверситета. Принципиальная разница между ними заключается в том, чтоаппаратное решение основано на стремлении уменьшить время вызова процедурза счет установки дополнительного оборудования процессора, тогда какпрограммное решение базируется на возможностях компилятора и является болееэкономичным с точки зрения аппаратуры процессора.3.3. Некоторые задачи реализации RISC-процессоровВыбор оптимального набора операций.Обычно по некоторой джентльменской смеси задач, для выполнения которойпредназначен компьютер, выбирают пакет контрольных программ и строят для нихпрофиль их выполнения либо используют метод статических или динамическихизмерений параметров самих программ.При профилировании программы определяется доля общего временицентрального процессора, затрачиваемого на выполнение каждого оператора(операции) программы.
Анализ полученных результатов позволит выявитьхарактерные особенности профилируемой программы.При статических или динамических измерениях подсчитывается, сколькораз в программе встречается тот или иной оператор (операция) или как частопризнаки принимают положительные или отрицательные значения в текстепрограммы (статика) либо в результате выполнения (динамика).Сочетание результатов, полученных в ходе предложенных исследований,дает общую картину анализируемой программы.
Вот результаты одного из такихизмерений в статике, проведенные для программ-компиляторов:••••операторы присваивания – 48 %;условные операторы – 15; циклы – 16;операторы вызова-возврата – 18;прочие операторы – 3 %.Измерение трехсот процедур, используемых в программах – операционныхсистемах в динамике показали следующие измерения типов операндов:• константы – 33 %;• скаляры – 42;• массивы (структуры) – 20• и прочие – 5 %.При этом статистика среди команд управления потоком данных следующая.В разных тестовых пакетах программ• команды условного перехода занимают от 66 до 78 %,• команды безусловного перехода – от 12 до 18 %,• частота переходов на выполнение составляет от 10 до 16 %.Отсюда можно сделать вывод, что операторы присваивания занимаютосновную часть в программах-компиляторах, а операнды типа константа илокальные скаляры составляют основную часть операндов в процедурах, ккоторым происходит обращение в процессе выполнения программы.Подобные количественные и качественные измерения образуют основу дляоптимизации процессорной архитектуры.Так, если операторы присваивания занимают 48 % всех операторов, то ясно,что операцию доступа к операндам следует реализовать аппаратно.
Особенноэто важно, если речь идет о нечисловых задачах, в которых операциивычислительного плана, как правило, просты. В условных операторах, операторахцикла и вызова-возврата производятся манипуляции над множеством операндов,что также подтверждает необходимость аппаратной реализации операциидоступа к операндам.При анализе типов операндов обычно учитывают три категории:• константы – не меняются во время выполнения программы и имеют, какправило, небольшие значения;• скаляры – обращение к ним происходит, как правило, явно по их имени.Их обычно немного, и они описываются в процедурах как локальные;• обращение к элементам массивов и структур происходит посредствоминдексов и указателей, т.
е. через косвенную адресацию. Этих элементов, какправило, много.Для осуществления доступа к операнду необходимо вначале определитьфизический адрес ячейки, где хранится операнд, а затем осуществить доступ коперанду. Если операнд – константа, ее можно указать в команде. Доступ к нейможет быть осуществлен немедленно после обращения.
В других случаях всезависит от типа памяти, где хранится операнд. Регистровые блоки и кэш-памятьмало отличаются по емкости, скорости доступа и стоимости, однако существенноотличаются по накладным расходам на адресацию. Обращение к кэш-памятиосуществляется при помощи адресов полной длины, которые требуют болеевысокой полосы пропускания каналов обмена. Как правило, этот адресприходится формировать во время выполнения программы, что как минимумтребует полноразрядного сложения или обращения к регистру либо и того, идругого.
Регистровые блоки адресуются короткими номерами регистров, которыеобычно указываются в команде, что упрощает их декодирование. Однакорегистровая память может хранить только определенные типы данных, в то времякак кэш-память может использоваться и как основная. В связи с этимраспределение скалярных переменных по регистрам необычайно важно, ибосущественно влияет на скорость обработки.Необходимо решить вопрос с размером регистровых окон, ибо в обычнойархитектуре окна однорегистровые, что требует операции запоминаниявосстановления при каждом вызове-возврате.При вызовах процедур необходимо запоминать содержимое регистров, апри возвращении – восстанавливать их, на что тратится значительное время.Вызовы процедур в современных структурированных программах делаютсядовольно часто, при этом суммарные накладные расходы на выполнение командвызова и возврата из процедур на стандартных процессорах доходит до 50 % всехобращений к памяти в программе.
Чтобы уменьшить время передачи данныхмежду процедурами-родителями и процедурами-дочерьми (в случае, когдаглубина их вложенности больше единицы), можно создать блок регистров,предоставив и родителям, и дочерям доступ к некоторым из них. Другимисловами, необходимо создать перекрывающиеся блоки регистров. Такаявозможность реализуется через перекрывающиеся "окна", накладываемые на блокрегистров. Этот механизм реализован в RISC-архитектуре. Многие измеренияпоказывают, что около 97 % процедур имеют не более шести параметров, чтотребует, чтобы перекрытие соседних окон шло где-то на пять регистров.Процессор всегда содержит указатель текущего окна с возможностью егомодификации в рамках реализованной глубины вложения процедур.
Если глубинапереполняется, часть содержимого окон направляется в основную память, чтобыиметь место для новых процедур. Для простоты реализации в ОП направляетсясодержимое целого окна. Это говорит о целесообразности введениямногооконного механизма с заданным размером окна. Размер окна определяетсяколичеством передаваемых параметров, а количество окон – допустимойвложенностью процедур.Среди достоинств применения больших регистровых блоков можновыделить высокую скорость доступа к блокам и увеличение частоты вызовапроцедур. Среди недостатков – высокая стоимость большого регистрового блока,организуемого в ущерб другим функциональным блокам на кристалле.Аппаратная реализация механизма перекрытия окон должна вводиться, еслиполучаемый выигрыш перекрывает затраты.Так как значительная часть процедур требует от трех до шести параметров,то следует подумать об оптимизации использования окон.
Во-первых, пересылатьв ОП в случае переполнения регистрового блока можно не все окна, а толькосодержимое регистров, используемых для данной процедуры, и, во-вторых,применять механизм с окнами переменных размеров, определяемых во времявыполнения.Перспективной разновидностью RISC-архитектуры явилась архитектураSPARC (Scalable Processor Architecture). Scaling – масштабирование, т. е.способность представлять данные таким образом, чтобы и они, и результатпроводимых с ними вычислений находились в диапазоне чисел, которые могутобрабатываться в рамках данного процесса или на данном оборудовании.Новая серия SPARCSTATIONS фирмы Sun Microsystems базируется наSPARC-архитектуре.
Первые модели этой фирмы были изготовлены уже в 1989 г.Операционной средой для всех станций фирмы Sun является SunOS –разновидность OS Unix, снабженная многооконным графическим интерфейсомOpen Look.Для повышения скорости обработки данных используются компьютеры сVLIW (Very Long Instruction Word)-архитектурой. Структура команды такихкомпьютеров наряду с кодом операции и адресами операндов включает теги идескрипторы. Наряду с существенным ускорением обработки данных такаяархитектура позволяет экономить память при достаточном количестве обращений ккомандам и сокращать общее количество команд в системе команд.3.4.
Методы адресации и типы командВ машинах с регистрами общего назначения метод (или режим) адресацииобъектов, с которыми манипулирует команда, может задавать константу, регистрили ячейку памяти.В табл. 3.2 представлены основные методы адресации операндов.Таблица 3.2. Методы адресацииМетодадресацииПримеркомандыСмыслкомандыИспользованиекомандыРегистроваяAdd R4, R3R4 = R4+R3Непосредственнаяили литернаяБазовая сосмещениемAdd R4, #3R4 = R4+3Add R4,100(R1)R4= R4+M(100+R1)КосвеннаярегистроваяAdd R4,(R1)R4 = R4+M(R1)ИндекснаяAdd R3,(R1+R2)R3 = R3+M(R1+R2)Прямая илиабсолютнаяAdd R1,(1000)R1=R1+M(1000)КосвеннаяAdd R1,@(R3)R1 = R1+M(M(R3))АвтоинкрементнаяAdd R1,(R2)+R1 = R1+M(R2)Для записитребуемого значенияв регистрДля заданияконстантДля обращения клокальнымпеременнымДля обращения поуказателю квычисленному адресуПолезна при работес массивами: R1 –база, R3 – индексПолезна дляобращенияк статическимданнымЕсли R3 – адресуказателя р, товыбираетсязначение по этомууказателюПолезна для проходав цикле по массиву сшагом: R2 – началомассива.
В каждомцикле R2 получаетприращение dАналогичнапредыдущей. Обемогутиспользоваться дляR2 = R2+dАвтодекрементнаяAdd R1,(R2)–R2 = R2–dR1 = R1+M(R2)Базовая индекснаясо смещением имасштабированиемAddR1=R1+M(100)+R2+R3*dреализации стекаДля индексациимассивовR1,100(R2)(R3)Адресация непосредственных данных и литерных констант обычнорассматривается как один из методов адресации памяти (хотя значения данных, ккоторым в этом случае производятся обращения, являются частью самой командыи обрабатываются в общем потоке команд).В табл.
3.2 на примере команды сложения (Add) приведены наиболееупотребительные названия методов адресации, хотя при описании архитектуры вдокументации производители компьютеров и ПО используют разные названиядля этих методов. В табл. 3.2. знак "=" используется для обозначения оператораприсваивания, а буква M обозначает память (Memory). Таким образом M(R1)обозначает содержимое ячейки памяти, адрес которой определяется содержимымрегистра R1.Использование сложных методов адресации позволяет существенносократить количество команд в программе, но при этом значительноувеличивается сложность аппаратуры.Команды традиционного машинного уровня можно разделить на несколькотипов, которые показаны в табл.
3.3.Таблица 3.3. Основные типы командТип операцииАрифметическиеи логическиеПримерыЦелочисленные арифметические и логическиеоперации: сложение, вычитание, логическоесложение, логическое умножение и т. д.Пересылки данныхОперации загрузки/записиУправление потоком Безусловные и условные переходы, вызовы процедуркоманди возвратыСистемные операцииСистемные вызовы, команды управлениявиртуальной памятью и т.