РАЗРАБОТКА МЕХАНИЗМА КОМПРЕССИИ ДАННЫХ ДЛЯ КЭШ-ПАМЯТИ ТРЕТЬЕГО УРОВНЯ ПРОЦЕССОРОВ C АРХИТЕКТУРОЙ "ЭЛЬБРУС"

Страница создана Инна Лебедева
 
ПРОДОЛЖИТЬ ЧТЕНИЕ
Московский физико-технический институт
               (государственный университет)
           Факультет радиотехники и кибернетики
       Кафедра информатики и вычислительной техники

        РАЗРАБОТКА МЕХАНИЗМА
         КОМПРЕССИИ ДАННЫХ
   ДЛЯ КЭШ-ПАМЯТИ ТРЕТЬЕГО УРОВНЯ
ПРОЦЕССОРОВ C АРХИТЕКТУРОЙ «ЭЛЬБРУС»
            Выпускная квалификационная работа
                (магистерская диссертация)

                                                       Студент: Сурченко А.В.
                                          Научный руководитель: Фельдман В.М.
                                                   Консультант: Кожин А.С.

                       Москва, 2020
Компрессия данных в кэш-памяти

                        Компрессия

                       Декомпрессия
                  L3-кэш                Память данных

 • Применение:
   Увеличение эффективного объема кэш-памяти при незначительном
   изменении площади и времени доступа

 • Алгоритм BΔI*-HL:
   - Скорость (задержка декомпрессии – 1 такт)
   - Простота (занимает не более 0,1% от площади банка L3)
   - Эффективность (доля сжатых строк – 24,2%, степень сжатия – 1.246)

   Характеристики алгоритма исследованы в ходе бакалаврской работы
                                                                         2
Цель работы
 Разработка механизма компрессии на базе алгоритма BΔI*-HL в
 кэш-памяти третьего уровня процессора «Эльбрус-16С»
 Задачи:
 • разработка и RTL-описание алгоритма совместного размещения сжатых
   кэш-строк для увеличения эффективного объема L3-кэша
 • доработка RTL-описания L3-кэша для интеграции механизмов компрессии
   и декомпрессии
 • отладка разработанного решения на Verilog-модели и FPGA-прототипе
   процессора «Эльбрус-16С»
 Требования:
 • Внедрение механизма не должно вносить существенные изменения в
   структуру L3-кэша, влиять на алгоритмы вытеснения и протокол
   когерентности
 • Внедрение механизма не должно уменьшать частоту работы L3-кэша и
   существенно увеличивать время доступа к нему
                                                                         3
Принцип сжатия BΔI*-HL
       Сегмент S0         Сегмент S1       Сегмент S2                          Сегмент S7

      0x000175FA         0x000175FC    0x000175FD                 …           0x00000003
        База
     0x000175 0xFA 0xFC 0xFD           …      0x03      0b000…1       Si = {base × ~mi, Δi}
                    Δ0     Δ1     Δ2           Δ7
                                                     m0m1m2…m7
• Кэш-строка параллельно разбивается на 4, 8, 16 и 32 сегмента равных размеров,
  проверяется равенство их старших разрядов нулю или между собой
• Сжатая кэш-строка содержит общие старшие разряды (база), набор младших разрядов
  – смещений (Δ), и маску, показывающую, относительно нуля или базы получено
  смещение (m)
• Размеры смещений выбираются так, чтобы сжатая кэш-строка была не больше
  половины размера полной
• Это повышает пропускную способность внутри кэша (кэш-строки передаются по
  половинам) и позволяет хранить две кэш-строки в одной ячейке памяти
                                                                                              4
Организация L3-кэша процессора «Эльбрус-16С»
L3-кэш состоит из памяти тэгов и состояний              LDD          LDX
(TA, Tag Array) и памяти данных (DA, Data Array)
                                                   TA
В TA находится локальный справочник LD c
информацией о когерентном состоянии строк
в L3 и кэшах ядер
LD состоит из равных по размеру частей:            DA
• LDD – локальный справочник с данными
• LDX – расширение локального справочника
Записям в LDD могут соответствовать кэш-строки в памяти данных, записям в LDX
кэш-строки не соответствуют
Ассоциативность кэш-памяти по тэгам в два раза превышает ассоциативность по
данным: 32 против 16
                                                                                5
Совместное размещение сжатых кэш-строк
Проблема: как хранить больше данных в кэш-памяти, увеличив тем самым ее
эффективный объем?
Решение: данные могут соответствовать тэгам и в LDD, и в LDX

TA                LDD      • Записи в памяти тэгов дополняются
                             информацией о компрессии данных (позволяет
                             не хранить нулевые данные)
                   LDX     • Тип компрессии в тэге указывает на размер
                             данных в кэш-строке (полный, половинный или
                             нулевой)
                           • В зависимости от размеров данных в кэш-
DA                           строке в ячейке памяти данных возможно
                             совместное хранение кэш-строк, относящихся к
                             тэгам в LDD и LDX
                                                                            6
Действия при обработке запросов в L3-кэше
без компрессии
В зависимости от того, какого типа запрос по протоколу когерентности
приходит в кэш-память и его попадания/промаха выполняемые действия
различаются:
• При RD Hit LDD или WB Hit LDD перестановок в тэгах не требуется. При
  необходимости происходит запись данных по тэгу
• При RD Hit LDX или WB Hit LDX происходит перенос тэга, по которому
  пришел запрос, в LDD. Происходит запись данных в кэш по новому месту
  расположения тэга
• Запись нового тэга в LDD (при промахе по чтению RD Miss), а также перенос
  в LDD тэга из LDX (RD Hit LDX и WB Hit LDX) могут потребовать вытеснения
  из LDD в LDX. Данные вытесняемого тэга при этом покидают кэш
                                                                              7
Дополнительные действия при обработке запросов
в L3-кэше с компрессией
Хранение данных при тэгах LDX делает LDX Victim-кэшем по отношению к
LDD:
• При переносе тэга из LDX в LDD (при RD Hit LDX или WB Hit LDX) данные
  при тэге в LDX, если они есть, переносятся за тэгом
• При вытеснении из LDD в LDX (при промахе по чтению RD Miss, переносе
  из LDX в LDD) данные вытесняются вслед за тэгом и остаются в кэше,
  если возможно их совместное размещение по месту записи, иначе
  покидают кэш
• Запись данных по RD и WB происходит для тэга, находящегося в LDD (в
  случае Hit LDX он туда переносится). Может потребоваться
  дополнительное вытеснение, если нельзя сохранить соответствующие
  LDX данные вместе с записываемыми
                                                                          8
Дополнительные действия при обработке запросов
в L3-кэше с компрессией на примере RD Miss
Одинаковые цвета блоков на рисунке показывают зависимость между тэгом и
данными. Цвет линий показывает зависимость между переносами и переносимыми
тэгами/данными
    R

                                                             R
     D

                                                              D
        M

                                                                 M
         is

                                                                  is
            s

                                                                     s
   Way:         Req   Victim         Req   Victim           Way:         Req   Victim         Req   Victim

                                                    LDD                                                      LDD
    TA                                                      TA
                               (a)                  LDX                                 (b)                  LDX

                X                                   Half0                                                    Half0
    DA                                                      DA
                X                                   Half1                Х                                   Half1

(а) – действия при L3-кэше без компрессии
(b) – действия при L3-кэше с компрессией. Занесение данных в кэш требует
дополнительного вытеснения данных при тэге в LDX                                                                     9
Проблема потери актуальности информации о данных
Необходимо разработать ограничения для поддержки атомарности транзакции в
пределах одного ассоциативного пути
Их отсутствие может привести к ошибке из-за потери актуальности информации о
размерах данных, участвующих в транзакциях
                                                     RD
           R
            D

                                                          Hi
               M

                                                               tL
                is

                                                                    DD
                 s

          Way:       Req   Victim           Way:   Req                   Victim           Way:   Req   Victim

                                    LDD                                           LDD                           LDD
           TA                               TA                                            TA
                                    LDX                                    X      LDX                           LDX

                                                                                                                Half0
                                    Half0                                         Half0
                                            DA                                            DA
           DA                                                                                                   Half1
                                    Half1                                         Half1

RD Miss: соседствующих данных по месту записи нет, данные при вытеснении переносятся
RD Hit LDD: данных при тэге LDX нет, вытеснения не требуется
Возникает потеря данных одной из транзакций
                                                                                                                        10
Поддержка атомарности транзакций в пределах
одного ассоциативного пути
Введенные ограничения для поддержки атомарности:
• При занесении новых данных предполагается, что они будут иметь полный
  размер, поскольку заранее неизвестно, смогут ли они сжаться при размещении
  в кэше
• В случае записи данных для тэга LDD такая запись отменяется, если
  соседствующий тэг в LDX участвует в другой транзакции. В противном случае
  запись по одной из транзакций может испортить данные другой
• Запись данных для тега, вытесняемого из LDD в LDX, отменяется, если
  соседствующий тэг в LDD по месту записи задействован в другой транзакции
Поиск описанных ситуаций и решения о размещении данных
принимаются при начале работы транзакции, предотвращая
конфликты
                                                                               11
Интеграция механизма компрессии в конвейер
записи данных
                                                         CMPRS

                 R2_DA_WR        R3_DA_WR                                  DA_WR

                                 R3_DA_WR_DATA

                                                                    R4   DA_WR_DATA
                            R3
                                     R3_DA_WR_CMPRS        CMPRS?

                                                 CMPRS

В случае, когда данные записи R3_DA_WR_DATA удалось сжать, производится модификация
записи в память данных
    • Запись дополняется информацией о сжатии данных, которая затем записывается в
       соответствующий кэш-строке тэг
    • В случае сжатия до половины размера запись передается в один такт вместо двух
    • В случае нулевой строки запись отменяется, меняется только информация в тэге кэш-
       строки
                                                                                          12
Интеграция механизма декомпрессии в конвейер
чтения данных
                                                DECMPRS

                     D5_RD       ~CMPRS    NO                    D6_RD
                                    or
                                  ZERO?

                                     YES

                    D5_RD_DATA   ~CMPRS    NO                  D6_RD_DATA
                                    or          DECMPRS
                                  ZERO?
               D5                                         D6
                                     YES

                     B2N_DAT_HDR

                     B2N_DAT_DATA

• При чтении из памяти данные D5_RD_DATA подвергаются декомпрессии, если они были
  сжаты и не являются нулевыми, т.к. в последнем случае значение данных заранее
  известно
• Декомпрессия задерживает отправку пакета с данными “DAT” на такт
                                                                                    13
Тестовый стенд
                   Банк L3-кэша в составе FPGA-прототипа

                                                  Блок счетчиков
         Запросы
                      Анализ
                     состояний                      Счетчики
                                                    событий
                                  Память тэгов

                   Компрессия
                                                                                Конфиг.
         Данные
                   Декомпрессия                      APB Slave     AMBA APB    Регистры
                                                                              процессора
                                  Память данных
                   L3-кэш

• Был разработан тестовый стенд, позволяющий собирать данные о работе алгоритмов компрессии
  и декомпрессии, совместном размещении данных и кэш-памяти в целом через программно-
  доступные счетчики событий
• Тестирование производилось на Verilog-модели, системных и автономных тестах
• Прошли 184 теста на базе системных тестов на когерентность
• Удалось добиться успешного прохождения прогона на автономной конфигурации из 2854 тестов
                                                                                              14
Характеристики разработанного механизма
Разработанный механизм компрессии соответствуют заявленным
требованиям к проекту
  • В кэш-памяти осталась неизменной работа алгоритмов вытеснения и протокола
    когерентности*
  • Разработанный механизм компрессии не потребовал существенных изменений
    в структуре кэш-памяти
  • Не изменилось время доступа по чтению для несжатых кэш-строк, время
    доступа к сжатым строкам, кроме доступа к нулевым данным, увеличилось на
    один такт
  • Результаты синтеза в САПР Synopsys Design Compiler и Intel Quartus:
     • частота работы не изменилась и составила 2ГГц
     • прирост аппаратуры – 4,5% и 10% от общего числа регистров и логических
        элементов банка L3-кэша соответственно
     • механизм занимает 1% от общей площади всего банка, размер L3-кэша при
        этом не меняется                                                        15
Результаты работы
• Разработан алгоритм совместного размещения сжатых кэш-строк для
  увеличения эффективного объема кэш-памяти, разработано его RTL-
  описание
• Разработаны ограничения для поддержки атомарности транзакций,
  связанных с обработкой в L3-кэше запросов по протоколу
  когерентности
• Доработано RTL-описание кэш-памяти для поддержки работы со
  сжатыми кэш-строками
• Характеристики разработанного механизма соответствуют
  заявленным требованиям к проекту

• В настоящее время механизм отлажен на системных и автономных
  тестах, начата отладка на FPGA-прототипе
                                                                    16
Дополнительные
  материалы
Схемы компрессии BΔI*-HL
                           Размер      Размер        Размер     Размер сжатой строки,
        Название схемы
                         сегмента, Б смещения, Б     маски, Б         Б ( ≤ 34Б)
        Zero values           0            0            0                 0
        Base4-Δ1              4            1            2                21
        Base16-Δ4             16           4            1                29
        Base8-Δ3              8            3            1                30
        Base2-Δ1              2          7 бит          4                34
        Half0 Zero             –           –            –                34
        Half1 Zero             –           –            –                34
        Нет компрессии         –           –            –                68
• К размеру кэш-строки (64 Б) добавлены 4 Б, поскольку каждое слово в строке дополняется 2
  битами тега защищенного режима
• Схемы выбраны так, чтобы размер сжатой строки укладывался в ширину шины передачи данных,
  равной половине размера кэш-строки (34 Б)
• Half0 Zero и Half1 Zero – дополнительные схемы, проверяющие кэш-строку на наличие нулевых
  половин
                                                                                              I
Конфликт выдачи пакетов DAT
Поскольку пакеты могут отправляться с разных стадий конвейера, возможен
конфликт при одновременной отправке двух пакетов
                                            D3     D4       D5

                                                 DAT1      DAT1

                                                 DAT2

                                                     !       !
                                                 B2N_DAT

                      D3     D4       D5                          D3     D4       D5

                           DAT1      DAT1

                           DAT2                                        DAT2      DAT2
                             X

                           B2N_DAT                                     B2N_DAT

Для предотвращения конфликта передача пакета DAT2 на интерфейс задерживается
на такт                                                                                 II
Возможности применения
                            Несжатые данные
                             Сжатые данные

                          Сеть-на-кристалле

• При большом числе подключенных к сети-на-кристалле абонентов ее
  пропускная способность ограничивает производительность системы
• Компрессия позволит уменьшить размер пакетов данных,
  передаваемых по сети, повышая тем самым пропускную способность
                                                                    III
Возможности применения

                             Cmpr

                             Dec
                                       Data Memory

                 L3

       B   B    B               B
                         …

               Network                 MC        Cmpr   Dec

                         …
       C   C    C                  C

                                                              IV
Вы также можете почитать