gpt4 book ai didi

caching - 典型的多核处理器是否具有从 L1 到 L2 的多个端口

转载 作者:行者123 更新时间:2023-12-04 16:49:24 25 4
gpt4 key购买 nike

对于典型的 x86 多核处理器,比方说,我们有一个具有 2 个内核的处理器,并且两个内核在读取指令时都遇到了 L1 指令缓存未命中。我们还假设两个内核都在访问位于不同缓存行中的地址中的数据。这两个内核会同时从 L2 指令缓存获取数据到 L1 指令缓存,还是会被序列化?换句话说,我们是否有多个端口用于不同内核的 L2 缓存访问?

最佳答案

For typical x86 multicore processors, let us say, we have a processor with 2 cores

好的,让我们使用具有两个内核 (Conroe) 的 Intel Core 2 Duo 的一些早期变体。它们有 2 个 CPU 内核、2 个 L1i 缓存和共享的 L2 缓存。

and both cores encounter an L1 instruction cache miss when reading an instruction.

好的,在读取下一条指令时,L1i 中会出现 miss(L1d 中的 miss,当您访问数据时,以类似的方式工作,但只有从 L1i 读取和从 L1d 读取和写入)。每个未命中的 L1i 都会生成对下一层内存层次结构的请求,即对 L2 缓存的请求。

Lets also assume that both of the cores are accessing data in addresses which are in separate cache lines.

现在我们必须知道缓存是如何组织的(这是典型的中间细节缓存方案,逻辑上类似于真实硬件)。 Cache是​​具有特殊访问电路的内存阵列,它看起来像一个二维数组。我们有很多集合(这张图片中有 64 个),每个集合都有几种方式。当我们要求缓存从某个地址获取数据时,该地址被分成三部分:标签、设置索引和缓存行内的偏移量。集合索引用于选择集合(在我们的二维缓存内存数组中的行),然后将所有方式的标签与请求地址的标签部分进行比较(以在二维数组中找到正确的列),这是由 8 个标签并行完成的比较器。如果缓存中有等于请求地址标签部分的标签,则缓存已“命中”,并且来自所选单元格的缓存行将返回给请求者。

方式和集合;二维缓存数组(图片来自 http://www.cnblogs.com/blockcipher/archive/2013/03/27/2985115.htmlhttp://duartes.org/gustavo/blog/post/intel-cpu-caches/ ) ways and lines of cache

选择集合索引 2 的示例,并行标签比较器为方式 1 提供“命中”(标签相等): cache tag comparators to check for hit

某些内存或缓存的“端口”是什么?这是外部硬件 block 和内存之间的硬件接口(interface),其中包含请求地址行(由外部 block 设置,对于 L1,它由 CPU 设置,对于 L2 - 通过 L1),访问类型(加载或存储;可能是固定的端口)、数据输入(用于存储)和带有就绪位的数据输出(由内存设置;缓存逻辑也处理未命中,因此它在命中和未命中时都返回数据,但稍后会返回未命中的数据)。

如果我们想增加真正的端口数,我们应该增加硬件:对于原始 SRAM 存储器阵列,我们应该为每个位添加两个晶体管,以将端口数增加 1;对于缓存,我们应该复制所有标签比较器逻辑。但这成本太高,所以CPU中没有多少多端口内存,如果有多个端口,那么真正的端口总数就很少了。

但是我们可以模拟拥有多个端口。 http://web.eecs.umich.edu/~twenisch/470_F07/lectures/15.pdf EECS 470 2007 幻灯片 11:

Parallel cache access is harder than parallel FUs

  • 根本区别:缓存有状态,FU 没有
  • 一个港口影响其他港口的 future

Several approaches used

  • 真正的多端口
  • 多个缓存副本
  • 虚拟多端口
  • 多银行业务(交错)
  • 行缓冲区

现代芯片使用多银行(有时称为切片)(“Intel Core i7 在 L1 中有四个银行,在 L2 中有八个银行”;ISBN 1598297546(2011 年)第 9 页的图 1.6 ) - https://books.google.com/books?id=Uc9cAQAAQBAJ&pg=PA9&lpg=PA9 )。这意味着,有几个较小尺寸的硬件缓存,并且请求地址的一些位(集合索引的一部分 - 认为集合 - 行分为 8 个部分或已着色为交错行)用于选择组。每个 bank 的端口数较少 (1),功能类似于经典缓存(每个 bank 中都有全套标签比较器;但 bank 的高度 - 其中的集合数量较小,并且阵列中的每个标签都被路由仅适用于单标签比较器 - 与单端口缓存一样便宜)。

Would those two cores get data from L2 to L1 instruction cache simultaneously or would it be serialized? In other words, do we have multiple ports for L2 cache access for different cores?

如果两个访问路由到不同的 L2 bank(切片),则缓存的行为类似于多端口,可以同时处理两个请求。但是如果两者都被路由到具有单个端口的单个 bank,它们将被序列化以用于缓存。缓存序列化可能会花费几个滴答,请求将在端口附近停滞; CPU 会将此视为稍长的访问延迟。

关于caching - 典型的多核处理器是否具有从 L1 到 L2 的多个端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27193349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com