Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Организация систем памяти высокопроизводительных вычислителей




 

Скоростные параллельные вычислители на несколько порядков опережают по быстродействию системы динамического ОЗУ для хранения больших массивов данных. Для обеспечения непрерывной загрузки высокопроизводительных конвейеров применяются иерархичные системы ОЗУ (рис. 5.1). В таких системах памяти блок основной динамической памяти имеет самое медленное время доступа. Другая причина усложнения систем ОЗУ в высокопроизводительных вычислителях - повышенные требования к защите данных при многозадачном режиме работы вычислителя. Последняя причина обусловила наличие виртуальной адресации памяти и соответствующей аппаратуры преобразования виртуальных адресов программы в физические адреса ОЗУ, как показано на рис. 5.2. Виртуальный адрес программы всегда начинается с нулевого адреса.

Он суммируется с содержимым регистра базы, базовый адрес которого указывает, в какое место поместить программу в физической памяти. Аппаратура управления памятью включает в себя также регистр границы, с помощью которого проверяются обращения программы за пределы области разрешенных для данной задачи адресов ОЗУ, и регистр кода доступа к области ОЗУ, с помощью которого разрешается доступ на чтение/запись в ОЗУ, только чтение из ОЗУ, либо полный запрет обращения к данной области памяти. Аппаратура сравнения адресов проверяет разрешение на доступ данной задачи к данной области адресов ОЗУ. Если сформированный физический адрес - вне диапазона разрешенных адресов,

 

либо код доступа задачи не соответствует коду доступа к данной области ОЗУ, устройство управления памятью инициирует прерывание по ошибке доступа к ОЗУ. Аппаратура управления памятью обеспечивает с помощью кодов доступа сегментацию ОЗУ, т.е. деление памяти на различного размера сегменты для совместного использования несколькими задачами. Для организации более быстрого обмена с внешними устройствами виртуальная память делится на страницы. Страницы - это блоки последовательных адресов равного размера в ОЗУ. Страница является минимальной единицей обмена данными между ОЗУ и внешними устройствами. Типичный размер страницы - 4 кбайт или 2 Мбайт. Разрыв между быстродействием параллельного вычислителя и относительно медленным циклом обращения к ОЗУ устраняется введением блока дополнительной быстродействующей памяти – КЭШ - памяти между вычислителем и основным ОЗУ [3]. КЭШ - память может входить как непосредственно в состав кристалла МП, если он выполняет роль вычислителя, так и выполняться в виде отдельных БИС. Чтобы собственно вычислитель не загружать управлением данными в КЭШ - памяти, она имеет собственное устройство управления. Аппаратура такого устройства обеспечивает следующие функции:

‑ перезапись областей основного ОЗУ в КЭШ - память при отсутствии в ней данных, необходимых вычислителю;

‑ устранение неоднозначности данных КЭШ - памяти и основного ОЗУ при записи в КЭШ со стороны вычислителя и при записи в основное ОЗУ со стороны нескольких внешних устройств новых данных.

В большинстве случаев программа обращается к памяти вблизи текущей ячейки памяти (принцип локальности программы). В КЭШ - памяти находятся копии данных основного ОЗУ. В случае, если при обращении данные находятся в КЭШ - памяти, произошло КЭШ-попадание и данные быстро поступят в вычислитель. Если данные отсутствуют в КЭШ - памяти - произошел КЭШ - промах и требуемые данные загружаются в КЭШ аппаратурой управления КЭШ - памятью из основного ОЗУ.

Существуют три способа организации КЭШ - памяти:

- полностью ассоциативный;

‑ с прямым отображением;

‑ частично ассоциативный.

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

 
 

При обращении вычислителя к КЭШ - памяти аппаратура КЭШа сравнивает параллельно адреса в КЭШ - памяти с требуемым и при совпадении выдает данные по этому адресу. Недостаток такой организации - громоздкая аппаратура параллельных компараторов сравнения адресов.

В КЭШ - памяти с прямым отображением каждый блок из основного ОЗУ занимает в КЭШе определенное единственное место, тогда не требуется хранить и сравнивать адреса основной памяти в КЭШ - памяти (рис. 5.3). При этом адрес вычислителя состоит из двух частей - поля индекса КЭШ - памяти (адрес блока данных в КЭШ - памяти) и поля признака - тега (это поле указывает, какие блоки ОЗУ можно записать на указываемое индексом место в КЭШе). Недостаток такого метода организации КЭШа - при обращении программы по двум адресам ОЗУ, загружаемым в одно и то же место КЭШа, происходит конфликт в КЭШе и непрерывная перезапись данных из ОЗУ в КЭШ - память.

Существенно снижает недостатки обоих перечисленных методов частично ассоциативная КЭШ - память. Она имеет несколько блоков прямого отображения, например "два", и называется в этом случае двухканальной или двухвходовой частично ассоциативной КЭШ - памятью. Эти блоки функционируют параллельно. Если в одном из блоков конкретное место занято данными и требуются данные, которые должны попасть на то же место в этом блоке прямого отображения (возник конфликт), они помещаются во второй блок прямого отображения. Когда вычислитель обращается к данным на этом месте в КЭШ - памяти, поле индекса адреса указывает на два места в параллельных блоках прямого отображения, нужные данные выбираются при совпадении в поле адреса вычислителя кода адреса с номером одного из блоков прямого отображения. Таким образом, в такой КЭШ - памяти есть небольшая аппаратура для сравнения адресов, и она является упрощенным вариантом аппаратуры по сравнению с полностью ассоциативной КЭШ - памятью.

При выборке блока данных из основного ОЗУ для записи в КЭШ - память при КЭШ - промахе существует три алгоритма записи, выбирающие, на место каких старых данных в КЭШе записать:

‑ метод случайного выбора;

‑ запись в последовательном порядке;

‑ запись на место блока, который не адресовался дольше других (при этом необходимо наличие счетчиков "возраста записи").

При записи новых данных в КЭШ со стороны вычислителя необходимо копию этих данных переписать в основное ОЗУ. Для этого используются следующие алгоритмы:

‑ сквозная запись - данные переписываются в ОЗУ сразу после записи в КЭШ;

‑ буферизованная сквозная запись - данные переписываются в буферный регистр, а при освобождении шины записываются из него в ОЗУ, при этом возможно параллельное чтение со стороны вычислителя из КЭШ, что уменьшает простои вычислителя при такой записи;

‑ обратная запись - в этом случае существует поле признака каждого блока в КЭШ, указывающее, был ли он модифицирован; и при записи новых данных на это место блок переписывается в ОЗУ, если такая модификация была либо теряется, если ее не было, причем этот алгоритм самый производительный, но и требует наибольших аппаратурных затрат.

Использование КЭШ - памяти с быстрым доступом в параллельных вычислителях высокой производительности не устраняет до конца разрыв в быстродействии собственно вычислителя и системы памяти. Для наиболее высокоскоростных параллельных или конвейерных вычислителей между КЭШем и вычислителем добавляется буферный блок высокоскоростной памяти. Существует три основных схемы построения таких буферов.

Первый вариант представляет собой два параллельно функционирующих блока буферного ОЗУ, причем пока из одного данные считываются вычислителем, в другой данные записываются со стороны КЭШ - памяти и наоборот (рис. 5.4,а). Такая буферная память выполняется на схемах регистровых скоростных файлов, у которых время доступа близко к быстродействию вычислителя (часто регистровые файлы выполняются на одном кристалле с вычислителем, если он выполнен в виде БИС). Второй вариант выполнения буфера - двухпортовый регистровый файл, аппаратура которого допускает параллельное чтение как со стороны КЭШ -памяти, так и со стороны вычислителя, и разрешает конфликт при записи с обеих сторон, придерживая запись со стороны КЭШа в пользу более быстрой записи со стороны вычислителя (рис. 5.4,б).

Третий вариант буферизации - организация очереди или нескольких очередей предварительной выборки при поступлении данных (команд) со стороны КЭШа в вычислитель и в другую сторону (рис. 5.4,в). Простейший

вариант очереди - набор сдвиговых регистров для перемещения данных по тактовым сигналам в сторону вычислителя и из него в КЭШ.

 

Организация высокоскоростного непрерывного потока информации для эффективной загрузки параллельного вычислителя - важнейшая задача обеспечения его запланированной производительности, поэтому система иерархической памяти обычно проектируется совместно с вычислительным ядром устройства цифровой обработки информации.


6. Особенности архитектуры универсальных производительных микропроцессоров

Появление и развитие первых микропроцессоров стимулировало вначале подход к максимальному усложнению и развитию их системы команд. С каждым новым микропроцессором добавлялись все новые специализированные и сложные команды. Идеалом такого подхода считалась система команд микропроцессора, в которой каждая команда реализовывала бы команду операционной системы или оператор языка высокого уровня. Максимально приближается к такому подходу система команд 86 семейства микропроцессоров. Впоследствии микропроцессоры с такими сложными командами стали называть – микропроцессоры со сложным набором команд (complex instruction set command CISC). Очевидные достоинства такого подхода:

- упрощается разработка программного обеспечения,

- машинные коды занимают меньше места в оперативной памяти и на внешних носителях,

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

Однако к концу 20 века этот подход все более заводил в тупик разработчиков микропроцессоров, поскольку наличие сложных специализированных команд требует введение большого количества аппаратных специализированных блоков и устройств, которые используются в одной – двух сложных командах, а при выполнении других команд простаивают, зря потребляя мощность. Кроме того, сложные команды выполняются не за один, а за ряд последовательных тактов генератора, что снижает производительность по командам в секунду.

Все это привело к тому, что для преодоления барьера по производительности к концу 20 века появился прямо противоположенный подход к построению системы команд процессоров. При этом подходе сначала разрабатывается аппаратный вычислительный конвейер под заданную производительность и потребление, а затем, исходя из полученной структуры конвейера формируется система команд, при этом, поскольку команды выполняются на конвейере – они в среднем занимают один такт тактовой частоты внутри кристалла. Поскольку такие конвейерные команды существенно проще и короче сложных, микропроцессоры с такими сокращенными командами стали называть – микропроцессоры с сокращенным набором команд (reduced instruction set command RISC). Команды при этом, как правило, фиксированной длины и считываются за один такт генератора. Недостатки такого подхода к формированию системы команд:

- на основе простых коротких команд сложнее разрабатывать программное обеспечение,

- программы в машинных кодах занимают больше места в оперативной памяти и на внешних носителях,

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

Единственное достоинство RISC микропроцессоров – высокая производительность при минимальном потреблении, но это достоинство перевесило все недостатки. Недостаток несовместимости был решен просто – каждому новому микропроцессору разрабатывался компилятор языка C, и программное обеспечение, включая операционную систему, перекомпилировалось этим компилятором. Таким образом, к началу 21 века RISC микропроцессоры победили своих предшественников с CISC системой команд. Особенности системы команд для RISC микропроцессоров:

- сокращенные режимы адресации в командах – нет косвенной, индексной и инкрементной адресации,

- все арифметико-логические команды только типа регистр – регистр, то есть данные для обработки должны находиться в регистрах,

- отсюда увеличенное количество регистров общего назначения (в среднем не менее 32 РОН),

- команды обращения к памяти являются отдельными командами типа чтение/запись.

Немного не так пошло развитие процессоров на рынке персональных компьютеров. Семейства процессоров, совместимых по системе команд с 86-семейством, реализуют эти команды внутри себя с помощью разбиения их на RISC микрокоманды. Поэтому современные микропроцессоры фактически все типа RISC и делятся на новые три группы уже по характеру конвейеров – суперскалярные, суперконвейерные и гиперконвейерные.

Суперскалярные микропроцессоры - это процессоры, у которых за один такт генератора может запускаться на выполнение более одной команды. Они содержат несколько явно раздельных параллельно работающих однотипных и разнотипных исполнительных устройств с жесткой, не перестраиваемой системой связей. К таким микропроцессорам можно отнести процессор UltraSPARC, используемый в рабочих станциях фирмы SUN. Он содержит три целочисленных процессора, один сопроцессор плавающей точки и процессор ветвлений, при этом на его конвейерных исполнительных устройствах можно запускать до трех команд параллельно за один такт внутренней частоты кристалла.

В суперконвейерных микропроцессорах нет жестко разделенных исполнительных устройств, они образуются из набора конвейерных каскадов, формирующих так называемое “хаотичное” беспорядочное вычислительное ядро. Дешифратор команд в таких микропроцессорах параллельно дешифрирует несколько команд. Эти текущие команды поступают в требующиеся им конвейерные блоки, формируя собой текущую структуру вычислительного конвейера. Смена типов дешифрируемых команд может сменить структуру текущего вычислительного конвейера. Поскольку для некоторых команд конвейер удлиняется, например, для получения данных из памяти, и они выполняются дольше, а некоторые команды уже имеют готовые данные и выполняются быстрее, в таких архитектурах происходит “беспорядочное” не в порядке следования в программе выполнение команд. После беспорядочного ядра в таких микропроцессорах устанавливается переупорядочивающий постпроцессор, на выходе которого результаты выполнения команд упорядочиваются в порядке следования в программе. Типичными процессорами такого типа являются процессоры Pentium II и III, Athlon-XP. Структура исполнительных блоков процессора Pentium III показана на рис. 6.1. Работа исполнительных блоков начинается в упорядоченном предпроцессоре. Очередь предварительной выборки заполняется командами задолго до их исполнения. Блок выборки команд выбирает команды пакетами по 16 байт, а поскольку в 86 семействе могут быть команды из нескольких байт, предварительный декодер следит, чтобы на границе 16 байт команда заканчивалась, если она не умещается – она относится к следующему блоку команд в 16 байт. Далее используется схема переключаемых буферов, пока буфер 1 заполняется пакетом в 16 байт, буфер 2 предоставляет свои команды параллельно для декодирования. Два декодера параллельно могут декодировать до трех команд. Информация о командах ветвления и стековых возвратов запоминается в соответствующих буферах для динамического предсказания ветвлений и возвратов. Поскольку команды декодированы параллельно, то блок переименования регистров и выделения ресурсов назначает аппаратные регистры на программные, таким образом могут быть выделены два аппаратных регистра для одного программного EAX для разных команд с разными данными. Переупорядочивающий буфер чтения данных из регистров позволяет передавать данные на обработку не в порядке их следования в программе. Все команды исполняются шестью портами беспорядочного ядра. Перед этим они поступают на станцию резервации. Если данные для команды готовы к исполнению, то есть находились в регистрах - команда без задержки выполняется в соответствующих портах, если данные не готовы, находятся в памяти – команда приостанавливается на станции резервации, пропуская на выполнение команды, что ведет к их выполнению не в порядке следования в программе.

 

Рис. 6.1 Структура исполнительных блоков Pentium III

Все результаты поступают в переупорядочивающий буфер записи результата, образующий упорядочивающий пост-процессор. Он обеспечивает вывод результатов из процессора в порядке следования в программе.

К гиперконвейерным микропроцессорам относятся архитектуры, содержащие ряд раздельных и независимых суперконвейреных исполнительных устройств. Как правило, конвейерные исполнительные устройства таких архитектур имеют повышенное число каскадов, а каждый каскад выполняет очень простую микрооперацию. Это позволяет повышать частоту работы таких конвейеров. Избыточность числа исполнительных конвейерных устройств и каскадов привела к появлению технологии Hyper-Threading (HT). Статистика исполнения большинства приложений показала, что в производительных микропроцессорах при поддержке вычислений одной последовательностью команд используется не более 40% всех исполнительных устройств. Технология HT поддерживает параллельно две последовательности команд, формируя два логических процессора из одного микропроцессора. Особенность этой технологии связана с тем, что не все исполнительные устройства имеют свои пары, поэтому при исполнении некоторых команд необходимо задерживать одну последовательность команд относительно другой, то есть нет полной независимости в паре последовательностей команд. Одна последовательность при этом является главной, вторая – второстепенной и необходимы специальные команды синхронизации этих двух последовательностей. В дальнейшем развитие гиперконвейерных архитектур привело к полному разделению параллельно поддерживаемых последовательностей команд. Достаточное количество исполнительных устройств привело к параллельной поддержке нескольких независимых последовательностей команд, образуя два, четыре и более логических независимых процессора, называемых вычислительными ядрами. Примерами таких архитектур являются развивающиеся архитектуры Pentium IV.

В современных микропроцессорах уделяется большое внимание ускорению выполнения команд ветвлений. Команды ветвлений нарушают линейный поток адресов команд, а команды условных ветвлений принципиально не могут выполняться в пределах одного такта внутренней частоты кристалла из-за проверки выполнения условия ветвления. Поскольку в производительных микропроцессорах параллельно выполняется несколько команд, то команды ветвлений резко снижают производительность в целом таких архитектур. Существует ряд аппаратных решений, которые основаны на вычислениях по предположению или “спекулятивных” вычислениях, а аппаратура их реализующая, называется аппаратурой предсказания ветвлений.

Существует три группы аппаратуры предсказания ветвлений. Первая группа называется статическим предсказанием ветвлений. В этом случае команды загружаются заранее перед выполнением в буфер – очередь предварительной выборки команд. Часто такую загрузку называют агрессивной предвыборкой команд, подчеркивая то, что процессор пытается загрузить буфер командами полностью. При появлении команды условного ветвления в очереди, следующей в буфер загружается команда, идущая в программе следующей за командой ветвления, то есть всегда загружаются команды прямой ветки ветвления. Команды обратной ветки ветвления начинаются с адреса, присутствующего в команде ветвления, и не загружаются в очередь. При этом в процессоре без ожидания вычисления условия ветвления выполняются команды прямой ветки ветвления. Если после вычисления условия ветвления оно произошло по прямой ветке, далее вычисления ведутся без потери производительности, так как уже заранее команды этой ветки выполнялись процессором. Если ветвление идет по обратной ветке, то потеря производительности происходит в таком варианте аппаратуры всегда, так как в очередь необходимо загрузить команды обратной ветки и после этого начать их выполнять. Выигрыш в производительности при таком подходе происходит при выполнении условных циклов, так как разработчикам, пишущим программы на ассемблере, а также разрабатывающим языки программирования, рекомендуется команды условного выхода из цикла всегда ставить перед циклом. Выполнение команд цикла при этом происходит без потери производительности и только выход из цикла связан с потерей производительности. Достоинством такого статического предсказания ветвлений является минимальные аппаратные затраты, недостатком – наличие среднестатистической потери производительности в 40% команд ветвлений в программах. Он реализуется в относительно дешевых микропроцессорах, например, встраиваемых в управление измерительными приборами и обработку данных.

Вторая группа аппаратного предсказания ветвлений называется процессором ветвлений. На рис. 6.2 показана структура такого процессора.

Рис. 6.2. Процессор ветвлений.

В этом случае для агрессивной предвыборки команд применяется две очереди. Обязательным условием является наличие в кристалле нескольких идентичных исполнительных блоков команд – арифметико-логических устройств (АЛУ1 и АЛУ2), работающих параллельно. Пока отсутствуют команды ветвлений, последовательность команд загружается в первую очередь. При появлении команды ветвления команды прямой ветки загружаются в первую очередь, а команды обратной ветки загружаются во вторую очередь. До вычисления ветвления в двух АЛУ выполняются команды прямой и обратной ветки параллельно. После вычисления ветвления принимается результат выполнения команд соответствующей ветки – той, куда нужно было перейти, а второй результат отбрасывается и далее выполняются команды из соответствующей очереди. Появление следующих команд ветвления вызывает использование двух очередей. Достоинством такого подхода является отсутствие потери производительности независимо от результата ветвления. Недостаток применения процессора ветвлений – существенные аппаратные затраты, поэтому такой подход используется только в дорогостоящих производительных процессорах, например, рабочих станций фирмы SUN.

Третьим видом аппаратуры предсказания ветвлений является динамическое предсказание ветвлений (рис. 6.3).

Рис. 6.3. Динамическое предсказание ветвлений.

При таком подходе используется одна очередь предварительной выборки команд, но к ней добавляется буфер предсказания ветвлений – быстрая регистровая память, работающая, как и очередь с внутренней тактовой частотой кристалла микропроцессора. При первом появлении команды ветвления в очереди команд применяется статическое предсказание ветвления, то есть в буфер загружаются команды прямой ветви ветвления. Параллельно из дешифратора команд в буфер предсказания ветвлений записывается адрес команды ветвления. После вычисления ветвления происходит либо потеря производительности либо нет, как в статическом подходе, но статистика в виде логических нулей и единиц о том, куда произошло ветвление записывается в буфер предсказания ветвлений. Появление команды ветвления, адрес которой записан в буфере предсказания ветвлений, вызывает загрузку в очередь команд либо прямой, либо обратной ветви, в зависимости от того, куда чаще ветвилась данная команда в предыдущие проходы программы. Эта информация записана в виде нескольких бит статистики ветвления для данной команды ветвления в буфере предсказания ветвлений. В ранних версиях процессоров Pentium такой подход обеспечивал выполнение команд ветвлений без потери производительности для 80% команд ветвлений. В Pentium IV увеличение размера буфера и объема статистики обеспечило выполнение команд ветвлений без потери производительности для 95% команд ветвлений. Однако оставшиеся 5% команд давали существенную потерю производительности. Для уменьшения этой потери разработчики фирмы Intel перенесли дешифратор команд 86 семейства и поставили его перед КЭШем команд первого уровня. В результате в КЭШ уровня L1 теперь записываются микроинструкции RISC архитектуры, а сами микроинструкции хранятся в виде трасс – последовательностей команд прямых и обратных ветвей ветвления, что существенно сократило потери производительности при неверном предсказании ветвления, но увеличило объем КЭШа команд до нескольких сотен килобайт. Таким образом достоинство динамического предсказания ветвлений – приемлемые аппаратные затраты при высокой эффективности предсказаний ветвлений. Такой подход применяется теперь в большинстве производительных микропроцессоров средней стоимости.

Длительное время считалось, что 32-разрядные архитектуры, имеющие целочисленное 32-разрядное АЛУ, достаточны с точки зрения представления данных и производительности, но с усложнением вычислительных задач их производительности и точности стало не хватать. Крупнейшими фирмами – разработчиками микропроцессоров решено было перейти к 64-разрядным целочисленным АЛУ, сменив по ходу число регистров общего назначения 8 и систему команд 86 семейства на более близкую к RISC 64-разраядную систему команд с 16 РОН.

Следует отметить, что переход от 32-рахрядных к 64-разрядным архитектурам производительные микропроцессоры прошли плавно с совместимостью с 32-разрядными моделями, это в первую очередь касается микропроцессоров Athlon-64 и Pentium IV.

 


Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...