ПОД (пособие) (1184372), страница 19
Текст из файла (страница 19)
Эта идеология направлена на то, чтобы упростить аппаратное обеспечениеи, в то же время, извлечь как можно больше «скрытого параллелизма» на уровне команд,используя большую ширину «выдачи» команд (WIW -Wide Issue-Width) и длинные(глубокие) конвейеры с большой задержкой (DPL — Deep Pipeline-Latency), чем это можносделать при реализации VLIW или суперскалярных стратегий. EPIC упрощает дваключевых момента, реализуемых во время выполнения. Во-первых, его принципыпозволяют во время исполнения отказаться от проверки зависимостей между операциями,которые компилятор уже объявил как независимые. Во-вторых, данная архитектурапозволяет отказаться от сложной логики внеочередного исполнения операций, полагаясь напорядок выдачи команд, определенный компилятором. Более того, EPIC совершенствуетвозможность компилятора статически генерировать планы выполнения за счет поддержкиразного рода перемещений кода во время компиляции, которые были бы некорректными впоследовательной архитектуре.
Более ранние решения достигали этой цели главнымобразом за счет серьезного увеличения сложности аппаратного обеспечения, которое сталонастолько значительным, что превратилась в препятствие, не позволяющее отраслидобиваться еще более высокой производительности. EPIC разработан именно для того,чтобы обеспечить более высокую степень параллелизма на уровне команд, поддерживаяпри этом приемлемую сложность аппаратного обеспечения.Более высокая производительность достигается как за счет увеличения скорости передачисигналов, так и благодаря увеличению плотности расположения функциональных устройствна кристалле. Зафиксировав рост этих двух составляющих, дальнейшего увеличенияскорости выполнения программ можно добиться в первую очередь благодаря реализацииопределенного вида параллелизма.
Так, параллелизм на уровне команд (ILP — InstructionLevel Parallelism) стал возможен благодаря созданию процессоров и методик компиляции,которые ускоряют работу за счет параллельного выполнения отдельных RISC-операций.Системы на базе ILP используют программы, написанные на традиционных языкахвысокого уровня, для последовательных процессоров, а обнаружение «скрытого58параллелизма» автоматически выполняется благодаря применению соответствующейкомпиляторной технологии и аппаратного обеспечения.Тот факт, что эти методики не требуют от прикладных программистов дополнительныхусилий, имеет крайне важное значение, поскольку данное решение резко отличается оттрадиционного микропроцессорного параллелизма, который предполагает, чтопрограммисты должны переписывать свои приложения.
Параллельная обработка на уровнекоманд является единственным надежным подходом, позволяющим добиться увеличенияпроизводительности без фундаментальной переработки приложения.Суперскалярные процессоры — это реализации ILP-процессора для последовательныхархитектур, программа для которых не должна передавать и, фактически, не можетпередавать точную информацию о параллелизме. Поскольку программа не содержит точнойинформации о наличии ILP, задача обнаружения параллелизма должна решатьсяаппаратурой, которая, в свою очередь, должна создавать план действий для обнаружения«скрытого параллелизма».
Процессоры VLIW представляют собой пример архитектуры,для которой программа предоставляет точную информацию о параллелизме — компиляторвыявляет параллелизм в программе и сообщает аппаратному обеспечению какие операциине зависят друг от друга. Эта информация имеет важное значение для физического слоя,поскольку в этом случае он «знает» без дальнейших проверок какие операции можноначинать выполнять в одном и том же такте. Архитектура EPIC — это эволюцияархитектуры VLIW, которая абсорбировала в себе многие концепции суперскалярнойархитектуры, хотя и в форме, адаптированной к EPIC. По сути — это «идеология»,определяющая, как создавать ILP-процессоры, а также набор характеристик архитектуры,которые поддерживают данную основу.
В таком смысле EPIC похож на RISC:определяющий класс архитектур, подчиняющихся общим основным принципам. Точнотакже, как существует множество различных архитектур наборов команд (ISA) для RISC,может существовать и больше одной ISA для EPIC. В зависимости от того, какие изхарактеристик EPIC использует архитектура EPIC ISA, она может быть оптимизирована дляразличных приложений — например, для систем общего назначение или встроенныхустройств. Первым примером коммерческой EPIC ISA стала архитектура IA-64.Код для суперскалярных процессоров содержит последовательность команд, котораяпорождает корректный результат, если выполняется в установленном порядке.
Кодуказывает последовательный алгоритм и, за исключением того, что он используетконкретный набор команд, не представляет себе точно природу аппаратного обеспечения,на котором он будет работать или точный временной порядок, в котором будутвыполняться команды. В отличие от программ для суперскалярных процессоров, код VLIWпредлагает точный план (POE — Plan Of Execution, схема исполнения создается статическиво время компиляции) того, как процессор будет выполнять программу. Код точноуказывает когда будет выполнена каждая операция, какие функциональные устройствабудут работать и какие регистры будут содержать операнды. Компилятор VLIW создаеттакой план выполнения, имея полное представление о самом процессоре, чтобы добитьсятребуемой записи исполнения (ROE — Record Of Execution) — последовательностисобытий, которые действительно происходят во время работы программы.
Компиляторпередает POE (через архитектуру набора команд, которая точно описывает параллелизм)аппаратному обеспечению, которое, в свою очередь, выполняет указанный план. Этот планпозволяет VLIW использовать относительно простое аппаратное обеспечение, способноедобиться высокого уровня ILP. В отличие от VLIW, суперскалярная аппаратурадинамически строит POE на основе последовательного кода. Хотя такой подход иувеличивает сложность физической реализации, суперскалярный процессор создает план,59используя преимущества тех факторов, которые могут быть определены только во времявыполнения.Одна из целей, которые ставили перед собой при создании EPIC, состояла в том, чтобысохранить реализованный во VLIW принцип статического создания POE, но и в то же времяобогатить его возможностями, аналогичными возможностям суперскалярного процессора,позволяющими новой архитектуре лучше учитывать динамические факторы, традиционноограничивающие параллелизм, свойственный VLIW.
Чтобы добиться этих целей,«идеология» EPIC была построена на некоторых основных принципах.Первый — это создание плана выполнения во время компиляции. EPIC возлагает нагрузкупо созданию POE на компилятор. Хотя, в общем, архитектура и физическая реализациямогут препятствовать компилятору в выполнении этой задачи, процессоры EPICпредоставляют функции, которые помогают компилятору создавать план выполнения.
Вовремя исполнения поведение процессора EPIC с точки зрения компилятора должно бытьпредсказуемым и управляемым. Динамическое внеочередное исполнение команд может«запутать» компилятор так, что он не будет «понимать», как его решения повлияют нареальную запись выполнения, созданную процессором, поэтому ему необходимо уметьпредсказывать действия процессора, что еще больше усложняет задачу. В данной ситуациипредпочтителен процессор, четко исполняющий то, что ему указывает программа.
Суть жесоздания плана во время компиляции состоит в переупорядочивании исходногопоследовательного кода так, чтобы использовать все преимущества параллелизмаприложения и максимально эффективно тратить аппаратные ресурсы, минимизируя времявыполнения. Без соответствующей поддержки архитектуры такое переупорядочиваниеможет нарушить корректность программы. Таким образом, поскольку EPIC возлагаетсоздание POE на компилятор, она должна обеспечивать еще и архитектурные возможности,поддерживающие интенсивное переупорядочивание кода во время компиляции.Следующим принципом является использование компилятором вероятностных оценок.Компилятор EPIC сталкивается с серьезной проблемой при создании плана выполнения:информация определенного типа, которая существенно влияет на запись исполнения,становится известна только лишь в момент выполнения программы.