Схема сделает новые кэши данных большой емкости на 33–50 процентов более эффективными.

По мере того, как количество транзисторов в процессорах возрастало, довольно медленное соединение между основной памятью и процессором стало главным препятствием на пути увеличения производительности компьютеров. Так, в последние пара лет производители микросхем начали размещать динамическую память с произвольным доступом — либо DRAM, тип памяти, традиционно применяемый для главной памяти — прямо в корпус микросхемы.Естественный метод применения данной памяти — это кэш громадной емкости, стремительное локальное хранилище довольно часто применяемых данных.

Но DRAM принципиально отличается от типа памяти, в большинстве случаев применяемой для кеш-памяти на кристалле, и существующие схемы управления кешем не применяют ее действенно.На недавнем интернациональном симпозиуме IEEE / ACM по микроархитектуре исследователи из Массачусетского технологического университета, Intel и ETH Zurich представили новую схему управления кешем, которая повышает скорость передачи данных встроенных кешей DRAM на 33–50 процентов.«Пропускная свойство данной встроенной DRAM возможно в пять раз выше, чем DRAM вне пакета», — говорит Сянъяо Ю, постдок из Лаборатории компьютерных искусственного интеллекта и наук Массачусетского технологического университета и первый создатель новой статьи. «Но оказывается, что прошлые схемы тратят через чур много трафика на доступ к метаданным либо перемещение данных между встроенной и внешней памятью DRAM, в действительности не обращаясь к данным, и они тратят большое количество пропускной способности. Производительность не наилучшая, которую вы имеете возможность получить от этого новая разработка."

Кеш-хешПод «метаданными» Ю подразумевает эти, каковые обрисовывают, откуда берутся данные в кэше. В современном компьютерном чипе, в то время, когда процессору требуется определенный фрагмент данных, он контролирует собственные локальные кеши, дабы определить, имеется ли в том месте эти. Данные в кэше «помечаются» адресами в главной памяти, из которой они извлекаются; теги — это метаданные.

В обычном внутреннем кэше возможно хватает места для 64 000 элементов данных с 64 000 тегов. Разумеется, что процессор не желает искать во всех 64000 записей тот, что ему увлекателен. Исходя из этого совокупности кеширования в большинстве случаев организуют эти посредством так называемой «хеш-таблицы». В то время, когда процессор ищет эти с определенным тегом, он сперва передает данный тег хэш-функции, которая обрабатывает его заданным образом чтобы получить новое числа.

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

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

Тупая памятьВот где проявляется отличие между DRAM и SRAM, разработкой, применяемой в стандартных кэшах. Для каждого бита данных, каковые она хранит, SRAM применяет шесть транзисторов.

DRAM применяет один, а это указывает, что он намного более экономичен. Но SRAM имеет некую встроенную вычислительную мощность, а DRAM — нет. В случае если процессор желает выполнить поиск элемента данных в кэше SRAM, он отправляет тег в кэш.

Сама схема SRAM сравнивает тег с тегами элементов, хранящихся в соответствующем хеш-расположении, и, если он находит совпадение, возвращает связанные эти.DRAM, наоборот, не имеет возможности ничего, не считая передачи запрошенных данных. Так, процессор запросит первый тег, хранящийся в заданном месте хеширования, и, если он сходится, пошлёт второй запрос для связанных данных. Если он не сходится, он запросит второй сохраненный тег, а если он не сходится, третий и без того потом, пока он или не отыщет необходимые эти, или не откажется и не перейдет в главную память.

Встроенная в пакет DRAM может иметь громадную пропускную свойство, но данный процесс растрачивает ее. Ю и его коллеги — Шринивас Девадас, доктор наук компьютерных наук и электротехники Эдвина Сибли Вебстера в Массачусетском технологическом университете; Кристофер Хьюз и Надатур Сатиш из Intel; и Онур Мутлу из ETH Zurich — избежать передачи всех этих метаданных посредством маленькой модификации совокупности управления памятью, которая имеется в большинстве современных чипов.

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

Новая совокупность Ю и его сотрудников, названную Banshee, додаёт три бита данных к каждой записи в таблице. Один бит показывает, возможно ли отыскать эти по этому виртуальному адресу в кэше DRAM, а два вторых показывают его размещение довольно любых вторых элементов данных с тем же хеш-индексом.

«В записи вам необходимо указать физический адрес, вам нужен виртуальный адрес и другие эти», — говорит Ю. «Это уже практически 100 бит. Так что три дополнительных бита — это небольшие накладные затраты».У этого подхода имеется одна неприятность, которую Банши кроме этого обязана решить.

В случае если одно из ядер микросхемы помещает элемент данных в кэш DRAM, другие ядра не определят об этом. Отправка сообщений всем ядрам чипа любой раз, в то время, когда одно из них обновляет кэш, требует большое количество времени и пропускной способности. Итак, Banshee воображает еще одну маленькую схему, именуемую буфером тегов, где любое заданное ядро ??может записывать новое расположение кэшируемого элемента данных.Любой запрос, посланный в кэш DRAM либо в главную память любым ядром, сперва проходит через буфер тегов, что контролирует, есть ли запрошенный тег тем, расположение которого было переназначено.

Лишь в то время, когда буфер заполняется, Banshee уведомляет все ядра чипов о том, что им нужно обновить собственные таблицы виртуальной памяти. После этого он очищает буфер и начинает заново.Буфер маленькой, всего 5 килобайт, исходя из этого его добавление не займет через чур много полезной внутренней памяти.

И моделирования исследователей говорят о том, что время, нужное для одного дополнительного поиска адреса на доступ к памяти, тривиально если сравнивать с экономией полосы пропускания, которую предоставляет Banshee.


Портал обо всем