Главная страница
Навигация по странице:

  • Лекция 14 Особенности RISC архитектуры

  • Классификация архитектур микропроцессоров

  • ЛЕКЦИЯ 15 Суперскалярные процессоры Архитектура суперскалярных процессоров

  • Архитектура ЭВМ и систем (конспект лекций). Архитектура эвм и систем


    Скачать 1.88 Mb.
    НазваниеАрхитектура эвм и систем
    Дата09.09.2022
    Размер1.88 Mb.
    Формат файлаpdf
    Имя файлаАрхитектура ЭВМ и систем (конспект лекций).pdf
    ТипЛекция
    #669002
    страница6 из 11
    1   2   3   4   5   6   7   8   9   10   11
    если Ус [М] = 1
    то АСК
    УП
    :
    СчК := РгК [А]
    иначе АСК
    ЕП
    : СчК := СчК + L
    К
    ;
    Здесь Ус[М] —логическая функция (условие), заданная маской М. Если условие перехода задается кодом операции команды, то в приведенном выражении Ус[М] надо заменить на
    Ус[К0п].

    35
    Обычно выполнение машинной команды сопровождается выработкой кода признака результата ПР, формируемого в специальном регистре РгПР. Команда УП анализирует сформированный предыдущей командой ПР. Смысл кодов ПP может быть установлен различным для разных операций. Например, в ЕС ЭВМ двухразрядный признак результата ПР при выполнении арифметических операций принимает значения, приведенные в табл. 3.1
    (ПР[0] и ПР[1] — нулевой и первый разряды ПР).
    С помощью двухразрядной маски можно задать в качестве условия УП любое значение ПР.
    Таблица 9.1
    Результат операции
    Код ПР
    Маска условия (ЕС ЭВМ)
    П
    Р[0]
    П
    Р[1]
    М
    [0]
    М
    [1]
    М
    [2]
    М
    [3]
    Равен 0 0
    0 1
    0 0
    0
    Меньше 0 0
    1 0
    1 0
    0
    Больше 0 1
    0 0
    0 1
    0
    Переполнение
    1 1
    0 0
    0 1
    В машинах ЕС ЭВМ используется четырехразрядная маска, и это дает возможность задавать в качестве условия перехода выполнение не только любого из ПР, но и их дизъюнкции (если в маске М несколько 1).
    В общем случае имеем
     
         
         
         
         
    1 0
    3 1
    0 2
    1 0
    1 1
    0 0
    ПР
    ПР
    М
    ПР
    ПР
    М
    ПР
    ПР
    М
    ПР
    ПР
    М
    М
    Ус




    Отметим, что при М=1111 команда УП выполняет безусловный переход, а при М=0000
    (пустая команда) действует естественный порядок выборки команд. Таким образом, исключается необходимость в отдельной команде безусловного перехода.
    Команды условных переходов позволяют реализовать программы с разветвлениями в зависимости от промежуточных результатов вычислений или состояния машины.
    Важным случаем передачи управления являются безусловные переходы к подпрограммам.
    Их особенность состоит в том, что помимо перехода они должны обеспечить по окончании подпрограммы возврат к исходной программе, к той точке ее, откуда был совершен переход.
    Обычно для переходов к под программам используется специальная команда Безусловный
    перевод с возвратом (БПВ). По этой команде (рис. 3.11) сначала адрес возврата А
    ВОЗ
    , т.е. содержимое СчК (увеличенное па «приращение адреса команды» L
    К
    ), запоминается по адресу
    Р, указанному в команде БПВ. затем в счетчик команд заносится содержимое поля А команды
    БПВ, т.е. адрес А начала подпрограммы. В конце подпрограммы размещается команда возврата, которая представляет собой команду БПК, указывающую путем косвенной адресации адрес ячейки (или регистра), в которой находится адрес А
    ВОЗ
    Формально всю эту процедуру после приема в РгК команды БПВ можно представить в следующем виде (см. рис. 3.9 и 3.11):
    СчК := СчК + L
    К
    ; образование адреса возврата А
    ВОЗ
    РгИОП := СчК;
    РгАОП := РгК [Р];
    Запись: ОП[РгАОП] = РгИОП; запоминание адреса возврата А
    ВОЗ
    , в ячейке Р
    СчК := РгК[А]; передача в СчК адреса начала подпрограммы
    ;
    Выполнение подпрограммы

    36
    ;
    Считывание и передача в
    РгК заключающей подпрограммы команды БПК, содержащей в поле А косвенный адрес Р *)
    РгАОП := РгК[А];
    Счит: РгИОП := ОП[РгАОП]; извлечение адреса возврата А
    ВОЗ
    АСК
    БПВ
    :
    СчК := РгИОП [А]; возврат к основной программе
    - команде в ячейке А
    ВОЗ
    Операция замещения, реализуемая командой Выполнение
    (Вып), состоит в том, что вместо очередной команды, соответствующей естественному порядку выборки команд, исполняется замещающая команда, указываемая адресной частью команды Вып, а затем, если только замещающая команда не оказалась командой перехода, восстанавливается приостановленный на время выполнения команды Вып естественный порядок выборки команд. Команда Вып должна сохранять неизменным содержимое СчК. Поэтому адрес замещающей команды берется не из СчК, а из РгК. (см. рис.
    9.10). Соответствующую процедур после приема в РгК команды Вып можно представить в виде
    РгАОП := РгК[А];
    Счит:РгИОП := ОП[РгАОП];
    РгК := РгИОП;
    выборка замещающей команды
    ;
    Выполнение замещающей команды
    СчК := СчК + L
    К
    восстановление естественного порядка выборки команд.
    Лекция 14
    Особенности RISC архитектуры
    RISC-архитектура предполагает реализацию в ЭВМ сокращенного набора простейших, но часто употребляемых команд, что позволяет упростить аппаратурные средства процессора и благодаря этому получить возможность повысить его быстродействие.
    При использовании RISC-архитектуры выбор набора команд и структуры процессора
    (микропроцессора) направлены на то, чтобы команды набора выполнялись за один машинный цикл процессора. Выполнение более сложных, но редко встречающихся операций обеспечивают подпрограммы..
    В ЭВМ с RISC машинным циклом называют время, в течение которого производится
    выборка двух операндов из регистров, выполнение операции в АЛУ и запоминание результата в
    регистре. Большинство команд в RISC являются быстрыми командами типа «регистр - регистр» и выполняются без обращений к ОП. Обращения к ОП сохраняются лишь в командах загрузки регистров из памяти и запоминания в ОП. Чтобы это было возможным, процессор должен содержать достаточно большое число общих регистров.
    Рис. 3.11. Обращение к подпрограмме с помощью команды безусловного перехода с возвратом.

    37
    Благодаря характерным для RISC-архитектуры особенностям - сокращенному набору команд (обычно не более 50-100), небольшому числу (обычно 2-3) простых способов адресации
    (в основном регистровой), небольшому числу простых форматов команд с фиксированными размерами и функциональным назначением их полей - упрощается управляющее устройство процессора, который в этом случае обходится без микропрограммного уровня управления и управляющей памяти, и его УУ может быть выполнено на «схемной логике».
    Уменьшение количества выполняемых команд и другие отмеченные выше особенности
    RISC-архитектуры приводят к столь значительному упрощению структуры процессора, что становится возможной его реализация на одном кристалле вместе с большим регистровым файлом и кэшем.
    Большое число регистров, особенно при наличии обеспечивающего их эффективное использование «оптимизирующего компилятора», позволяет до предела сократить обращение к
    ОП путем сохранения нарегистрах промежуточных результатов, передачи через регистры операндов из одних программ в другие программы или подпрограммы, отказа от передач на сохранение в ОП содержимого регистров при прерываниях.
    Особенностью RISC-архитектуры является механизм перекрывающихся регистровых окон, предназначенный для уменьшения числа обращений к ОП и межрегистровых передач, что способствует повышению производительности ЭВМ.
    Процедурам динамически выделяются небольшие группы регистров фиксированной длины
    (регистровые окна). Окна последовательно выполняемых процедур перекрываются, благодаря чему возможна передача параметров от одной процедуры к другой При вызове процедуры процессор переключается на работу с другим регистровым окном, при этом не возникает необходимости в передаче содержимого регистров в память.
    Окно состоит из трех подгрупп регистров (рис. 9.21). Первая подгруппа содержит параметры, переданные данной процедуре от ее вызвавшей, и результаты для вызывающей процедуры при возврате в нее. Вторая подгруппа содержит локальные переменные процедуры.
    Третья, являясь буфером для двустороннего обмена между данной и ею вызываемой следующей процедурами, передает последней параметры от данной, которая, в свою очередь, получает через этот буфер результаты от ею вызванной процедуры. Таким образом, одна и та же подгруппа для данной процедуры является регистрами временного хранения, а для следующей — регистрами параметров. Отдельное окно, доступное всем процедурам программы, выделяется для ее глобальных переменных.
    В настоящее время за рубежом выпущен ряд микропроцессоров с RISC- архитектурой.
    Примером являются высокопроизводительные станции на базе микропроцессора Alpha 21264, микропроцессор для WindowsCE Intel
    StrongARM.
    Несмотря на начавшееся использование
    RISC-архитектуры в выпускаемой промышленностью ЭВМ, продолжаются дискуссии вокруг достоинств и недостатков этой архитектуры. К последним, в частности, относят большую длину кода программы после компиляции по сравнению с длиной кода машин обычной архитектуры. Например, при эмуляции команд x86 в среднем на каждую его команду требуется пять-шесть команд машины с RISC-архитектурой. Однако, как показали исследования, выигрыш в скорости выполнения команд перекрывает проигрыш от удлинения объектного кода программы.
    В 1989 фирме Intel удалось на основе RISC-архитектуры создать однокристальный микропроцессор 80860, который практически представляет собой кремниевый эквивалент суперЭВМ Gray-1.
    Рис 9.21. СНК-архитектура ЭВМ. Перекрывающиеся регистровые окна.

    38
    Классификация архитектур микропроцессоров
    Развитие архитектуры ЭВМ, направленное на повышение их производительности, во многих случаях идет по пути усложнения процессоров путем расширения системы (набора) команд, введения сложных команд, выполняющих процедуры, приближающиеся к примитивам языков высокого уровня, увеличения числа используемых способов адресации и т. д.
    Однако расширение и усложнение набора команд порождают и ряд нежелательных побочных эффектов.
    Расширение набора команд, увеличение числа способов адресации, введение сложных команд сопровождаются увеличением длины кода команды, в первую очередь, кода операции, что может приводить к использованию «расширяющегося кода операции», увеличению числа форматов команд. Это вызывает усложнение и замедление процесса дешифрации кода операции и других процедур обработки команд. Возрастающая сложность процедур обработки команд заставляет прибегать к микропрограммным управляющим устройствам с управляющей памятью вместо более быстродействующих УУ с «жесткой» («схемной») логикой.
    Усложнение процессора делает более трудным или даже невыполнимым реализацию его на одном кристалле интегральной микросхемы, что благодаря сокращению длин межсоединений могло бы облегчить достижение высокой производительности.
    Анализ кода программ, генерируемого компиляторами языков высокого уровня, показал, что практически используется только ограниченный набор простых команд форматов "регистр, регистр -> регистр" и "регистр <-> память". Компиляторы не в состоянии эффективно использовать сложные команды. Именно это наблюдение способствовало формированию концепции процессоров с сокращенным набором команд, так называемых RISC-процессоров.
    Другим обстоятельством, фактически приведшим к появлению RISC-процессоров, было развитие архитектуры конвейерных процессоров типа Cray. В этих процессорах используются отдельные наборы команд для работы с памятью и отдельные наборы команд для преобразования информации в регистрах процессора. Каждая такая команда единообразно разбивается на небольшое количество этапов с одинаковым временем исполнения (выборка команды, дешифрация команды, исполнение, запись результата), что позволяет построить эффективный конвейер процессора, способный каждый такт выдавать результат исполнения очередной команды.
    Однако конвейерность исполнения команд породила проблемы, связанные с зависимостями по данным и управлению между последовательно запускаемыми в конвейер командами.
    Например, если очередная команда использует результат предыдущей, то ее исполнение невозможно в течение нескольких тактов, необходимых для получения этого результата.
    Аналогичные проблемы возникают при исполнении команд перехода по условию, когда данные, по которым производится переход, к моменту дешифрации команды условного перехода еще не готовы.
    Эти проблемы решаются либо компилятором, устанавливающим очередность запуска команд в конвейере и вставляющим команды "Нет операции" при невозможности запуска очередной команды, либо специальной аппаратурой процессора, отслеживающей зависимости между командами и устраняющей конфликты.
    После обособления RISC-процессоров в отдельный класс, процессоры с традиционными наборами команд стали называться CISC-процессорами с полным набором команд. Как правило, в этих процессорах команды имеют много разных форматов и требуют для своего представления различного числа ячеек памяти. Это обусловливает определение типа команды в ходе ее дешифрации при исполнении, что усложняет устройство управления процессора и препятствует повышению тактовой частоты до уровня, достижимого в RISC-процессорах на той же элементной базе.
    Очевидно, что RISC-процессоры эффективны в тех областях применения, в которых можно продуктивно использовать структурные способы уменьшения времени доступа к оперативной

    39 памяти. Если программа генерирует произвольные последовательности адресов обращения к памяти и каждая единица данных используется только для выполнения одной ко- манды, то фактически производительность процессора определяется временем обращения к основной памяти. В этом случае использование сокращенного набора команд только ухудшает эффективность, так как требует пересылки операндов между памятью и регистром вместо выполнения команд "память, память - память". Программист должен учитывать необходимость локального размещения обрабатываемых данных, чтобы при пересылках между уровнями памяти по возможности все данные пересылаемых блоков данных принимали участие в обработке. Если программа будет написана так, что данные будут размещены хаотично и из каждого пересылаемого блока данных будет использоваться только небольшая их часть, то скорость обработки замедлится в несколько раз до скорости работы основной памяти. В качестве примера приведем в таблице 1.1 результаты замеров производительности микропроцессора Alpha 21066 233 Мгц при реализации преобразования Адамара при n = 8 - 20.
    Таблица 1.1 Производительность микропроцессора Alpha 2I066 при выполнении
    преобразования Адамара
    n
    Производительность в условных алгоритмических операциях, млн.оп/с
    8 150 10 133 11 73
    >=12 20
    Пример показывает, что, пока данные размещаются во внутрикристальной кэш-памяти, производительность высока. Как только объем данных превышает размер кэш-памяти и обращения в память идут в "равномерно" распределенные по объему адреса, производительность падает более, чем в 7 раз.
    Развитие микропроцессоров происходит при постоянном стремлении сохранения преемственности программного обеспечения (ПО) и повышения производительности за счет совершенствования архитектуры и увеличения тактовой частоты. Сохранение преемственности
    ПО и повышение производительности, вообще говоря, противоречат друг другу. Процессоры с системой команд х86, относящиеся к классу CISC-процессоров, имеют более низкие тактовые частоты по сравнению с микропроцессорами ведущих компаний-изготовителей RISC- процессоров. Существуют приложения, на которых производительность х86 микропроцессоров значительно ниже, чем у RISC-процессоров, реализованных на той же элементной базе. Однако возможность использования совместимого ПО для различных поколений х86 процессоров, выпущенных в течение последнего десятилетия, обеспечивает им устойчивое доминирующее положение на рынке.
    В настоящее время на основе пионерских разработок компаний NexGen и AMD, подхваченных компанией Intel, предпринята попытка решить проблему повышения производительности в рамках архитектуры х86. Эти компании в последних разработках, сохраняя преемственность по системе команд с CISC-микропроцессорами семейства х86, создают новые устройства с использованием элементов RISC-архитектуры. Примером такого подхода могут служить микропроцессоры Nx586 (NexGen), K5, К6 (AMD), Pentium PRO,
    Pentium II (Intel), использующие концепцию разделенной (decoupled) архитектуры и RISC ядра.
    В микропроцессор встраивается аппаратный транслятор, превращающий команды х86, в команды RISC-процессора. При этом одна команда х86 может порождать до четырех команд
    RISC-процессора. Исполнение команд происходит как в развитом суперскалярном процессоре.
    Компания Intel использовала этот подход в своем микропроцессоре Pentium Pro, что весьма укрепило ее позиции на фоне достижений RISC-архитектур.

    40
    ЛЕКЦИЯ 15
    Суперскалярные процессоры
    Архитектура суперскалярных процессоров
    Есть два крайних подхода, при возможных промежуточных, к отображению присущего микропроцессору внутреннего параллелизма обработки данных на архитектурном уровне в системе команд. Первый подход более консервативен и состоит в том, что никакого указания на параллельную обработку внутри процессора система команд не содержит. Такие процессоры относятся к классу суперскалярных.
    Второй подход - напротив полностью открывает все возможности параллельной обработки.
    В специально отведенных полях команды каждому из параллельно работающих обрабатывающих устройств предписывается действие, которое устройство должно совершить.
    Такие процессоры называются процессорами с длинным командным словом (VLIW или EPIC).
    Предполагается, что существуют компиляторы с языков высокого уровня, которые готовят программы для загрузки их в микропроцессоры.
    Основная идея, определяющая развитие суперскалярных микропроцессоров, состоит в построении возможно большего количества параллельных структур при сохранении традиционных последовательных программ. Это означает, что компиляторы и аппаратура микропроцессора сами, без вмешательства программиста, обеспечивают загрузку параллельно работающих функциональных устройств микропроцессора.
    В соответствии с моделью последовательного программирования, программы пишутся в предположении, что команды будут выполнены в том же порядке, в каком они представлены в программе. Однако с целью достижения большей эффективности современные процессоры пытаются выполнять несколько команд одновременно и в некоторых случаях в порядке, отличном от их исходной последовательности в программе. Это переупорядочение может быть выполнено в трансляторе и (или) в аппаратных средствах во время выполнения.
    Суперскалярные и VLIW-процессоры принадлежат классу архитектур, которые используют параллельность уровня команды (ILP).
    ILP-процессоры и компиляторы обычно преобразуют полностью упорядоченное множество команд исходной программы в частично упорядоченное множество, структурированное зависимостями по данным и управлению. Зависимости по управлению (которые проявляются как переходы по условию) представляют главное препятствие высокопараллельному выполнению потому, что эти зависимости должны быть установлены прежде, чем будут выполнены все последующие команды.
    Текст последовательной программы, представленной на языке высокого уровня, компилируется в машинный код, отражающий статическую структуру программы, т. е. упорядоченное множество команд (инструкций) в памяти компьютера. Процесс выполнения программы с конкретными наборами входных данных может быть представлен динамической структурой программы, т. е. множеством последовательностей инструкций в порядке их исполнения.
    Повысить степень параллелизма программы можно изменяя соответствующим образом ее статическую или динамическую структуру. Поскольку статическая структура программы однозначно соответствует ее исходному тексту (в предположении неизменности компилятора), то изменение статической структуры сводится к изменению исходного кода, что, в общем случае, не всегда возможно. Динамическая же структура программы может быть изменена при неизменной статической структуре. И главной целью такого изменения должно быть повышение степени параллельного исполнения команд.
    Допустимые границы преобразования динамической структуры программы задают существующие на множестве инструкций отношения: зависимость по управлению и

    41 зависимость по данным. При описании архитектур суперскалярных процессоров часто используется модель окна исполнения. При исполнении программы микропроцессор как бы продвигает по статической структуре программы окно исполнения. Команды в окне могут исполняться параллельно, если между ними нет зависимости.
    Для устранения зависимостей, вызванных командами переходов, используется метод предсказания, позволяющий извлекать и условно исполнять команды предсказанного перехода.
    Если позднее обнаруживается, что предсказание было сделано верно, то результаты условно исполненных команд принимаются. Если предсказание было ошибочным, состояние процессора восстанавливается на момент принятия решения о выполнении перехода.
    Команды, помещенные в окно исполнения, могут быть зависимы по данным. Эти зависимости обусловлены использованием одних и тех же ресурсов памяти (регистров, ячеек памяти) в разных командах. Поэтому для правильного исполнения программы необходимо использование этих ресурсов в предписываемом программой порядке.
    Все виды зависимостей по данным могут быть классифицированы по типу ассоциаций: RAR - "чтение после чтения", WAR - "запись после чтения" и WAW - "запись после записи", RAW - "чтение после записи".
    Некоторые из зависимостей по данным могут быть устранены.
    1   2   3   4   5   6   7   8   9   10   11


    написать администратору сайта