View on GitHub

ITMO-PE

My study notes about Program Engineering at University ITMO

Архитектура компьютера

Лекция 14

Кеширование. Ассоциативность 缓存。 关联性

Пенской А.В., 2022


План лекции



Организация кеш-памяти 缓存组织

Кеш = память + логика (схемы):
缓存=内存+逻辑(电路):

Больше данных $\rightarrow$ больше логики.
更多数据 $\rightarrow$ 更多逻辑。

Масштабирование по времени или по площади:
按时间或区域缩放:


Ассоциативность кеша 缓存关联性

Тег – идентификатор области памяти, сохранённой в кеш-линии:
Tag——存储在缓存行中的内存区域的标识符:

- адрес ячейки памяти; 存储单元地址; - адрес ячейки памяти, обрезанный снизу (младшие биты), для адресации машинным словом или блоком; 存储单元的地址,从下面(低位)修剪,用于按机器字或块寻址; - адрес ячейки памяти, обрезанный сверху (старшие биты): 存储单元的地址,在顶部修剪(高位): - 64 бита адресного пространства никто не использует; 没有人使用 64 位地址空间; - локальность данных; 数据局部性; - адрес ячейки памяти, обрезанный в середине. 存储单元地址,中间切断。

_Отображение кеша на память_


Полностью ассоциативный кеш
(Fully Associative Cache)
全关联缓存

Любая строка памяти может быть отображена в любую строку кеша.
任何内存行都可以映射到任何高速缓存行。



Кеш с прямым отображением
(Direct Mapping Cache)
直接映射缓存

Данная строка ОЗУ может быть отображена в единственную строку кеша, но в каждую строку кеша может быть отображено множество возможных строк ОЗУ.
给定的 RAM 行可以映射到单个高速缓存行,但每个高速缓存行可以有许多可能的 RAM 行映射到它。

Адрес “обрезается” выделением индекса, а значит:
通过分配索引来“截断”地址,这意味着:



Множественно-ассоциативный кеш
(N-Way Set Associative Cache)
N路组关联高速缓存

кеш-память делится на несколько “банков”, каждый из которых функционирует как кеш с прямым отображением.
高速缓冲存储器被分成几个“存储体”,每个“存储体”充当直接映射高速缓存。

_Эффективность кеша от уровня ассоциативности_



Многоуровневый кеш. Варианты 多级缓存。 选项


Inclusive / Exclusive Caches 包含/独占缓存

  1. инклюзивная (записи дублируются);
    包含(记录有重复);
  2. эксклюзивная (записи не дублируются, а перемещаются между кешами разных уровней, поэтому информация в кеше каждого уровня уникальна);
    独占(条目不重复,而是在不同级别的缓存之间移动,因此每个级别的缓存中的信息都是唯一的);
  3. ни эксклюзивная, ни инклюзивная (NINE) (произвольные варианты).
    既不排他也不包容(NINE)(任意选项)。


Параллельный доступ. Состояние кеш-линий

并行访问。 缓存行状态

  1. Modified – It means that the value in the cache is dirty, that is the value in the current cache is different from the main memory.
    修改 – 表示缓存中的值是脏的,即当前缓存中的值与主存中的值不同。
  2. Exclusive – It means that the value present in the cache is the same as that present in the main memory, that is the value is clean.
    独占 – 表示缓存中存在的值与主存中存在的值相同,即该值是干净的。
  3. Shared – It means that the cache value holds the most recent data copy and that is what is shared among all the cache and main memory as well.
    共享 – 这意味着缓存值保存最新的数据副本,并且这也是所有缓存和主内存之间共享的内容。
  4. Owned – It means that the current cache holds the block and is now the owner of that block, that is having all rights on that particular block.
    拥有 – 这意味着当前缓存持有该块,并且现在是该块的所有者,即拥有该特定块的所有权利。
  5. Invalid – This states that the current cache block itself is invalid and is required to be fetched from other cache or main memory.
    无效 – 这说明当前缓存块本身无效,需要从其他缓存或主存中获取。

Параллельный доступ. Когерентность 并行访问。 连贯性

_Когерентность кешей_


Параллельный доступ. Offtopic. CAP

CAP-теорема. В распределённых системах нельзя одновременно получить:
CAP定理。 在分布式系统中你无法同时获得:


Параллельный доступ. Offtopic. Consistency 并行访问。 无关。 一致性

Notes: https://habr.com/ru/post/100891/


Примеры непрозрачности кеш-памяти 缓存不透明的示例


Перемножение матриц 矩阵乘法

$c_{ij} = \sum_{r=1}^m a_{ir}b_{rj} \left(i=1, 2, \ldots l; j=1, 2, \ldots n \right)$

где:

_Длительность перемножения матриц от их размера_


Наивное перемножение матриц 朴素矩阵乘法
for (int i = 0; i < size; i++) {
  for (int j = 0; j < size; j++) {
    C[i][j] = 0;
    for (int k = 0; k < size; k++) {
      C[i][j] += A[i][k] * B[k][j];
    }
  }
}

_Длительность перемножения матриц от их размера_


Перемножение транспонированных матриц 转置矩阵相乘
B2 = transpose(size, B);
// ...
for (int i = 0; i < size; i++) {
  for (int j = 0; j < size; j++) {
    C[i][j] = 0;
    for (int k = 0; k < size; k++) {
      C[i][j] += A[i][k] * B2[j][k];
    }
  }
}

_Длительность перемножения матриц от их размера_


Паттерн доступа к памяти 内存访问模式

_Примерный паттерн доступа к памяти_



Array of Structures (AoS), Structure of Arrays (SoA) 结构数组 (AoS)、数组结构 (SoA)

struct point3D {
    float x;
    float y;
    float z;
};
struct point3D points[N];
float get_point_x(int i) { return points[i].x; }
struct pointlist3D {
    float x[N];
    float y[N];
    float z[N];
};
struct pointlist3D points;
float get_point_x(int i) { return points.x[i]; }

Meltdown и другие уязвимости, связанные с кеш-памятью 崩溃和其他与缓存相关的漏洞

Уязвимость позволяет локальному атакующему (при запуске специальной программы) получить несанкционированный доступ на чтение к привилегированной памяти (памяти, используемой ядром операционной системы).
该漏洞允许本地攻击者(通过运行特殊程序)获得对特权内存(操作系统内核使用的内存)的未经授权的读取访问权限。

— Wikipedia


Основная память как кеш процессора 主存作为处理器缓存

Фантом ОС Phantom 操作系统
операционная система, разрабатываемая российской компанией Digital Zone с 2010 года.
俄罗斯公司 Digital Zone 自 2010 年以来开发的操作系统。

[Фантом (операционная система)]


Параллелизм 并行性

  1. Когда нужно работать сразу над несколькими задачами (ввод-вывод, системы управления).
    当您需要同时处理多项任务时(输入输出、控制系统)。
  2. Когда нужно повысить уровень утилизации ресурсов (не простаиваем, а занимаемся чем-то полезным).
    当你需要提高资源利用率时(我们不会闲着,而是做一些有用的事情)。
  3. Когда нужно повысить производительность компьютера (делаем больше дел за единицу времени).
    当您需要提高计算机性能时(单位时间做更多的事情)。

Виды параллелизма 并行类型

  1. Уровень битов (Bit-level Parallelism). “Ширина” комбинационных схем, шин данных и машинного слова.
    **位级并行性。 组合电路、数据总线和机器字的“宽度”。
  2. Уровень команд (Instruction-level parallelism). Параллельное выполнение нескольких инструкций.
    命令级(指令级并行)。 多条指令的并行执行。
  3. Уровень задач (Task/Thread-level parallelism). Параллельное выполнение нескольких программ.
    任务级(任务/线程级并行性)。 并行执行多个程序。

Рост производительности процессоров 处理器性能增长

Рост производительности относительно процента задачи, который может быть выполнен параллельно, и количества вычислителей.
相对于可以并行执行的任务的百分比和计算机数量而言,生产率的提高。

Amdahl's law