CN102834813B - 用于多通道高速缓存的更新处理机 - Google Patents

用于多通道高速缓存的更新处理机 Download PDF

Info

Publication number
CN102834813B
CN102834813B CN201180017610.7A CN201180017610A CN102834813B CN 102834813 B CN102834813 B CN 102834813B CN 201180017610 A CN201180017610 A CN 201180017610A CN 102834813 B CN102834813 B CN 102834813B
Authority
CN
China
Prior art keywords
cache
memory
channel
speed
miss
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201180017610.7A
Other languages
English (en)
Other versions
CN102834813A (zh
Inventor
E·阿霍
J·尼卡拉
K·库西林纳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Technologies Oy
Original Assignee
Nokia Technologies Oy
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nokia Technologies Oy filed Critical Nokia Technologies Oy
Publication of CN102834813A publication Critical patent/CN102834813A/zh
Application granted granted Critical
Publication of CN102834813B publication Critical patent/CN102834813B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0851Cache with interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors

Abstract

这里公开了用于多通道高速缓存存储器的未命中处理机以及一种方法,所述方法包括确定至少由于高速缓存未命中的发生或需要预取数据之一更新多通道高速缓存存储器的需要。所述方法还包括操作多通道高速缓存未命中处理机,以从主存储器更新所述多通道高速缓存存储器中的至少一个高速缓存通道存储器。

Description

用于多通道高速缓存的更新处理机
技术领域
本发明的示例性且非限制性实施方式一般地涉及数据存储系统、装置、设备、方法和计算机程序,并且尤其涉及高速缓存存储器系统、装置、设备、方法和计算机程序。
背景技术
本节意在提供权利要求中所叙述的本发明的内容的背景或环境。这里的描述可以包括能够被实现的概念,但这些概念并不一定是此前构想、实施或描述过的概念。因此,除非另外指出,本节所描述的内容并不是本申请的说明书和权利要求的现有技术,而且也不因被包括在本节中而被承认为现有技术。
说明书和/或附图中可能出现的以下缩写形式定义如下:
BO字节偏移
CMH(多通道)高速缓存未命中处理机
CPU中央处理器
DRAM动态随机存取存储器
HW硬件
LSB最低有效位
MC多通道
MC_Cache多通道高速缓存
MCMC多通道存储器控制器
MMU存储器管理单元
PE处理元件
SIMD单指令多数据流
SW软件
TLB旁路转换缓冲器
VPU向量处理单元
μP微处理器
处理设备典型的包括一个或多个处理单元和存储器。在一些情况中,到存储器的存取可能比期望的要慢一些。这可能是由于例如并行存取之间的竞争和/或因为所使用的记忆存储(memorystorage)对其存取速度有基本的限制。为了缓解这个问题,可在处理单元和存储器之间插入高速缓存存储器。高速缓存存储器一般小于所述存储器,并可以使用具有较快的存取速度的记忆存储。
可以给多个处理单元安排每个处理单元都可用的高速缓存。每个存储单元可以具有其自己专用的高速缓存。可替换地,共享高速缓存存储器单元可以包括分离的高速缓存,其中在处理单元之间对高速缓存的分配由集成crossbar确定。
发明内容
根据本发明的示例性实施方式,前述问题以及其它问题都被克服,并且实现了其它优势。
在本发明的示例性实施方式的第一方面,提供了一种方法,包括:确定至少由于高速缓存未命中的发生或需要预取数据这两种情况之一更新多通道高速缓存存储器的需要;以及操作多通道高速缓存未命中处理机以从主存储器更新所述多通道高速缓存存储器中的至少一个高速缓存通道存储器。
在本发明的示例性实施方式的另一方面,提供了一种设备,包括:多通道高速缓存存储器,该多通道高速缓存存储器包括多个高速缓存通道存储器。所述设备进一步包括多通道高速缓存未命中处理机,其被配置为至少由于高速缓存未命中的发生或需要预取数据这两种情况之一,响应更新所述多通道高速缓存存储器的需要以从主存储器更新所述多通道高速缓存存储器中的至少一个高速缓存通道存储器。
附图说明
当结合附图阅读以下具体实施方式时,本发明的示例性实施方式的上述以及其它方面会变得更加明显,其中:
图1-6示出了在共同所有的PCT/EP2009/062076中描述的发明的示例性实施方式中的实施方式,其有助于增强对本发明的示例性实施方式的理解,其中
图1示意性地图示了涉及使用存储器的多高速缓存通道的方法;
图2A示出了针对存储器接入请求的高速缓存分配取决于包括在存储器接入中的存储器地址;
图2B示出了针对存储器接入请求的高速缓存分配独立于关于其作出所述存储器接入请求的处理单元的身份;
图3示意性地图示了适于执行图1中的方法的系统的功能性组件;
图4示意性地图示了多通道高速缓存存储器单元;
图5示意性地图示了所述系统的物理实施的一个示例;
图6A示出了包括一个或多个标识参考的存储器接入请求的示例;以及
图6B示出了跟随在读访问之后的典型响应的示例。
图7-11示出了本发明的示例性实施方式中的实施方式,其中
图7示出了根据本发明的示例性实施方式的具有多通道高速缓存和多通道高速缓存未命中处理机的示例性系统架构;
图8更详细地示出了图7的多通道高速缓存;
图9A、9B和9C对地址分配和相应的高速缓存通道编号和索引的各种非限制性示例进行了描述;
图10A、10B和10C描述了具有分布式高速缓存未命中处理机(图10A、10C)和集中式高速缓存未命中处理机(图10B)的多通道高速缓存的示例性实施方式;以及
图11是在描述根据示例性实施方式的方法以及计算机程序指令的执行结果时有用的逻辑流程图。
具体实施方式
本发明的示例性实施方式涉及存储器分级体系中的高速缓存存储器,并且提供一种用于至少当高速缓存未命中发生时或当存在从主存储器预先获取数据给所述多通道的需要时更新多通道高速缓存中的数据的技术。也就是说,在没有高速缓存未命中发生时也可使用示例性实施方式来从存储器分级体系的下一级别预先获取数据给多通道高速缓存。考虑到多通道存储器分级体系的独特能力,示例性实施方式提供在多通道高速缓存中更新数据。示例性实施方式使得高速缓存行更新能够在多通道高速缓存存储器的环境中被有效执行。
在详细描述本发明的示例性实施方式之前,参考图1-6回顾在2009年9月17日递交的共同拥有的PCT/EP2009/062076中描述的多通道高速缓存存储器是有用的。
图1示意性地图示了涉及使用多通道高速缓存存储器作为存储器的方法1。存储器具有典型地大于多通道高速缓存存储器的容量的地址空间。使用存储器接入请求来访问存储器,其中每个存储器接入请求都包括存储器地址。
图2A示意性地图示了如何将存储器的地址空间分成多个定义部分10A、10B和10C。在这一特定的示例中,部分10A、10B和10C是不重叠的部分。这些部分10A、10B、10C中的每一个部分可称为唯一地址空间10,这是因为这些部分中的每一个部分在任何特定的时刻都是存储器的地址空间的唯一可用部分,其中存储器的地址空间包括没有为在该特定时刻使用而被包括在任何其它定义部分中的一个或多个地址。
回到图1中的块2,唯一地址空间10中的每一个与不同的高速缓存通道11A、11B、11C相关联。在图2A中通过图表对该关联进行了图示,其中每个唯一地址空间10A、10B、10C只与高速缓存通道11A、11B、11C中的一个相关联。
在合适的存储中对所述关联进行了记录,以供以后使用。所述关联可以是直接的,例如,用于高速缓存通道的高速缓存块20(图4)可以被明确地标识。所述关联可以是间接的,例如,只服务特定高速缓存块的输出接口可以被明确地标识。
在图1的块4中,处理每一个存储器接入请求。来自所接收的存储器接入请求的存储器地址被用来标识包括该地址的唯一地址空间10。
进而,参考图2A,如果所接收的存储器接入请求包括存储器地址11,则包括存储器地址11的定义的唯一地址空间10B被标识。根据所述关联,与被标识的唯一地址空间部分10B相关联的特定的高速缓存通道11B被标识并被分配进行使用。随后将存储器接入请求发送到关联的高速缓存通道11B。
从图2A应该注意到,定义的唯一地址空间10并不需要覆盖全部存储器地址空间。
还应注意到,虽然在图2A中唯一地址空间10被描述为包括存储器的地址空间中的连续地址序列,但这并不是必须的。可以使用任何适当的方式对唯一地址空间进行定义,只要唯一地址空间保持唯一即可。例如,可以使用存储器地址中的任何N个比特(相邻或非相邻)来定义2N个(其中N是大于或等于1的整数)不重叠的唯一地址空间。
在一些实施方式中,存储器接入请求可以涉及单个处理单元。在其它实施方式中,存储器接入请求可以涉及多个处理单元。图2B示出了高速缓存通道11到存储器接入请求的分配与关于其做出存储器接入请求的处理单元的身份无关,而图2A则示出了高速缓存通道11到存储器接入请求的分配取决于包括在存储器接入请求中的存储器地址和所定义的唯一地址空间10。
在一些实施方式中,存储器接入请求可以源自其所涉及的处理单元,而在其它实施方式中,存储器接入请求可以源自不同于其所涉及的处理单元的电路。对存储器接入请求的响应返回到存储器接入请求所针对的处理单元。
图3示意性地图示了适于执行图1中的方法的系统18的功能性组件。
系统18包括:多个高速缓存通道11A、11B、11C;仲裁电路24;和多个处理单元22A、22B。虽然示出了特定数量的高速缓存通道11,但这只是示例,可以存在M(M>1)个高速缓存通道。虽然示出了特定数量的处理单元22,但这只是示例,可以存在P(P≥1)个处理单元。
在该实施方式中,第一处理单元22A被配置成向仲裁电路24提供第一存储器接入请求23A。第二处理单元22B被配置成向仲裁电路24提供第二存储器接入请求23B。每个处理单元22可以经由仲裁电路24向所有高速缓存通道11A、11B、11C提供存储器接入请求。
每个存储器接入请求(箭头23所示)包括存储器地址。存储器接入请求23可被描述为对应于与存储器地址相关联的一定量的存储器数据,该地址可位于系统的主存储器中的任何地方。
仲裁电路24基于包括在请求中的存储器地址将所接收的存储器接入请求23引导至合适的高速缓存通道,作为被引导的存储器接入请求25。每个高速缓存通道11只接收包括位于与高速缓存通道11相关联的唯一地址空间10内的存储器地址的(被引导的)存储器接入请求25。
高速缓存通道11A、11B、11C中的每一个服务不同的唯一地址空间10A、10B、10C。高速缓存通道11只接收包括落入与该高速缓存通道相关联的唯一地址空间10内的存储器地址的那些存储器接入请求。(涉及不同的唯一地址空间的)存储器接入请求被不同的高速缓存通道并行(即,例如在同一时钟周期期间)接收并处理。
然而,由于单个高速缓存通道11可以从多个不同的处理单元同时接收存储器接入请求,高速缓存通道优选地包括用于缓冲存储器接入请求的电路。
所有高速缓存通道11A、11B、11C可以实现在单个多通道单元中,或实现在仅单通道单元、或仅多通道单元、或单通道单元和多通道单元两者的任何组合中。单元可分布在整个系统18中,并且不必位于同一位置。
在该示例中,仲裁电路24包括输入接口28、控制电路30和输出接口29。
在该特定非限制性示例中,仲裁电路24包括本地数据存储27。在其它实现中,存储27可以在另一组件中。数据存储27是任何本地的或远程的合适存储设施,并用于存储数据结构,在该示例中,所述数据结构将多个定义的唯一地址空间10中的每一个与多个不同的输出接口29中的特定的一个输出接口相关联。
在其它实现中,多个定义的唯一地址空间10中的每一个与高速缓存通道之间的关联可以以其它的方式实现。
输入接口28被配置成接收存储器接入请求23。在该示例中,存在两个输入接口28A、28B。第一输入接口28A接收对第一处理单元22A的存储器接入请求23A。第二输入接口28B接收对第二处理单元22B的存储器接入请求23B。
输出接口29中的每一个只连接到相应的单个高速缓存通道11。每个高速缓存通道11只连接到相应的单个输出接口29。也就是说,在输出接口29与高速缓存通道11之间存在一对一映射。
控制电路30被配置成将所接收的存储器接入请求23路由到适当的输出接口29。控制电路30被配置成将包括在所接收的存储器接入请求中的存储器地址标识为目标地址。控制电路30被配置成使用数据存储27来将包括目标地址的唯一地址空间10标识为目标唯一地址空间。控制电路30被配置成访问数据存储27并选择与数据存储27中的目标唯一地址空间相关联的输出接口29。控制所选择的输出接口29以将存储器接入请求25发送到一个高速缓存通道11,并且不发送到其它高速缓存通道11。
在该非限制性示例中,所选择的接入请求可以是针对多个处理单元中的任何一个处理单元的,并且对输出接口29的选择独立于存储器接入请求所涉及的处理单元的身份。
在该非限制性示例中,控制电路30被配置成并行处理多个存储器接入请求23并分别并行选择不同的输出接口29。
仲裁电路24可以包括每个输出接口29的缓冲器。于是缓冲器将为特定输出接口/高速缓存通道缓冲存储器接入请求25。仲裁电路24的操作可以被描述为:从多个处理单元22接收存储器接入请求23;如果第一存储器地址来自存储器的地址空间中定义的第一部分10A,则只向第一高速缓存通道11A发送包括第一存储器地址的所接收的第一存储器接入请求23A,但如果第一存储器地址来自不同于存储器的地址空间中定义的第一部分10A的存储器的地址空间中的部分10B或10C则不是这样;以及如果第一存储器地址来自存储器的地址空间中定义的第二部分10B,则只向第二高速缓存通道11B发送第一存储器接入请求23A,但如果第一存储器地址来自不同于存储器的地址空间中定义的第二部分10B的存储器的地址空间中的部分10A或10C则不是这样;如果第二存储器地址来自存储器的地址空间中定义的第一部分10A,则只向第一高速缓存通道11A发送包括第二存储器地址的所接收的第二存储器接入请求23B,但如果第二存储器地址来自不同于存储器的地址空间中定义的第一部分10A的存储器的地址空间中的部分10B或10C则不是这样;以及如果第二存储器地址来自存储器中定义的第二部分10B,则只向第二高速缓存通道11B发送第二存储器接入请求23B,但如果第二存储器地址来自不同于存储器的地址空间中定义的第二部分10B的存储器的地址空间中的部分10A或10C则不是这样。
仲裁电路24以及(尤其是)控制电路30可以只在硬件中实现,或者其可具有仅在包括固件的软件中实现的某些方面,或者其可以是硬件和软件(包括固件)的组合。
仲裁电路24以及(尤其是)控制电路30的实施可以使用允许硬件功能性的指令来实现,例如,通过在通用或专用处理器中使用可执行的计算机程序指令来实现,所述可执行的计算机程序可存储在计算机可读存储介质(磁盘、半导体存储器等)上以由这种处理器执行。
一个或多个存储器存储单元可用于为高速缓存通道提供高速缓存块。在一些实施中,每个高速缓存通道11可以具有用于服务发送到该高速缓存通道的存储器接入请求的其自己的高速缓存块。所述高速缓存块可以与其它高速缓存块逻辑地或物理地分离。如果高速缓存块是逻辑地定义的,则可以通过在块之间移动逻辑边界来重配置高速缓存块。
图4示意性地图示了多通道高速缓存存储器单元40的许多可能实施中的一个。在该示例中,多通道高速缓存存储器单元40包括(但不限于)多个并联的输入端口44A、44B、44C、44D(统称为并联输入端口44)和多个高速缓存块20A、20B、20C、20D(统称为高速缓存块20)。
如围绕每个高速缓存块20的虚线所指示的一样,高速缓存块20A、20B、20C和20D被认为是彼此隔离的。“隔离”可以是例如“一致性隔离”,其中,高速缓存不为了数据一致性的目的与其它高速缓存通信。“隔离”可以是例如“完全隔离”,其中高速缓存不为任何目的与其它高速缓存通信。隔离配置多个高速缓存中的每个高速缓存以服务存储器中的指定的地址空间。由于多个高速缓存未被配置为服务存储器的任何共享地址空间,因此不需要用于维持高速缓存块之间的一致性的一致性电路,而且该一致性电路不存在。
多个并联输入端口44A、44B、44C和44D被配置成并行接收相应的存储器接入请求25A、25B、25C和25D。每个并联输入端口44只接收对单个唯一地址空间10的存储器接入请求。
在该示例中,多个并联输入端口44中的每一个被处理单元22(但不被高速缓存块20)共享,并被配置成接收对所有处理单元22的存储器接入请求。并行排列多个高速缓存块20中的每一个,并且它们作为组合被配置成并行处理来自多个不同处理单元的多个存储器接入请求。
多个高速缓存块20中的每一个包括多个条目49。通常,每个条目包括用于标识关联的数据字及其有效性的部件。在示出的示例中,每个条目49包括标记字段45和至少一个数据字46。在这一示例中,每个条目还包括有效性位字段47。每个条目49被查找索引48引用。应该理解的是,这只是一个示例性的实施。
在可以找到的教科书里面对单独的高速缓存块20的操作进行了很好的记载,这里不再详细讨论。然而,为了完整性,将会给出关于高速缓存块20如何处理存储器(读取)接入请求的简要概述。需要注意的是,对单独的高速缓存块20的这一操作的讨论不应被解释为指示在根据发明的示例性方面的多通道高速缓存存储器的上下文中提供多个这种高速缓存块20是已知的。
使用包括在所接收的存储器接入请求25中的存储器地址的索引部分访问由该索引引用的条目49。所接收的存储器地址中的标记部分被用于验证所访问的条目49的标记字段45。成功的验证导致“高速缓存命中”,并且命中响应的生成包括来自所访问的条目49的字46。不成功的验证导致“未命中”、对存储器的读取访问以及对高速缓存的更新。
在示出的示例中,每个高速缓存块20具有关联的专用缓冲器42,专用缓冲器42对所接收的但尚未处理的对高速缓存通道的存储器接入请求进行缓冲。这些缓冲器是可选的,尽管它们的存在至少在解决争用情况时是优选的,其中在两个或更多PU尝试同时访问同一高速缓存通道时会发生这种争用情况。
可以例如以模块的形式来提供多通道高速缓存存储器单元40。在这里使用的“模块”可以指排除由终端制造商或用户添加的某些部件/组件的单元或设备。
图5示意性地图示了之前参照图3描述的系统18的物理实施的一个示例。在该示例中,多个处理单元22A、22B、22C是加速器50(比如,例如图像加速器)的一部分。加速器被优化以进行有效处理。
在这一示例中,仲裁电路24是加速器50的不可或缺的一部分。加速器50在仲裁电路24和多通道高速缓存之间具有大量并联的互连52。每个互连连接仲裁电路24的单个输出接口29与单个高速缓存输入端口44。
本例中的处理单元22包括通用处理单元(CPU)22A、专用处理元件(PE)22B和矢量处理单元(VPU)22C。CPU22A和PE22B生成它们自己的存储器接入请求。VPU22C是SIMD类型的处理元件,并且在本例中需要四个并行的数据字。每个处理单元执行其自己的任务并独立地访问存储器56。
虽然图5将仲裁电路24示为加速器50的一部分,但应该理解的是,在一些实施方式中,仲裁电路可以是多通道高速缓存单元40的一部分。在其它实施方式中,仲裁电路24可以是处理单元的一部分或加速器的一部分。在另外的实施方式中,仲裁电路可以分布在两个或更多之前提到的位置。
在这一实施方式中以及在之前描述的实施方式中,系统18可以执行许多功能。例如,仲裁电路24可以重新定义唯一地址空间并改变存储27中记录的关联。结果,每个高速缓存块20可以变成与不同的唯一地址空间10相关联。
结果,仲裁电路24的控制电路30被配置成访问数据存储27以重新定义唯一地址空间,并被配置成生成用于高速缓存块20的至少一个控制信号。
在通过多个处理单元22检测到对存储器的特定预定访问模式之后,仲裁电路24可以重新定义唯一地址空间。例如,仲裁电路24可以通过多个处理单元22标识对存储器的预定接入模式,然后基于所述标识重新定义唯一地址空间10。对唯一地址空间的重新定义可以通过增加命中的百分比使得能够对高速缓存通道进行更有效的使用。例如,所述重新定义可以增加在每一周期所有高速缓存通道都被成功接入的几率。MCC存储器单元40被配置成通过将多通道高速缓存存储器单元40中的所有有效性位字段47设定成无效来响应控制信号。所有高速缓存块20可使用单个全局控制信号,或每个高速缓存块20可使用单独的控制信号。在一些实施方式中,只有唯一地址空间10的一部分可被重新定义,并且可使用单独的控制信号选择性的将MCC存储器单元40中的有效位设置成无效。
参照图6A,其中示出了存储器接入请求23的实施的非限制性示例。存储器接入请求23包括标识访问是否是用于读取或用于写入的读/写位60、包括存储器地址的地址字段62、以及一个或多个标识编号(reference)。在示出的示例中,存储器访问是针对特定存储单元22的,第一标识编号64标识该处理单元,第二标识编号66排序对所标识的处理单元的存储器接入请求。
当高速缓存块20接收存储器接入请求25并紧接在高速缓存查找之后生成响应70时,响应包括在存储器接入请求中接收的一个或多个标识编号。图6B示出了紧接在成功读取访问之后的典型响应70的示例。响应70包括所访问的字46,还包括第一标识编号64和第二标识编号66。第一标识编号64可以使得能够将响应70路由到由第一标识编号64所标识的特定处理单元22。第二标识编号66可以使得能够排序或重排序对处理单元的响应70。
在对共有的PCT/EP2009/062076中描述的发明的示例性实施方式进行描述之后,现在参照图7-11描述本发明的示例性实施方式。
首先注意的是,为了增强处理性能,可以期望增加采用多核处理、多通道高速缓存和多通道DRAM的形式的增加的HW并行性。本发明的示例性实施方式提供了用于诸如上述MC_Cache40的多通道高速缓存的未命中处理机(图7中示出的高速缓存未命中处理机或CMH102),并提供了用于并行存储器主处理器(master)(例如多核)有效开发MC_Cache40的部件。注意到,不失一般性,CMH102还可被称作多通道高速缓存更新处理机。
图7在更宽的系统环境中示出了图5中的加速器结构50。在示例性的系统环境中,可以存在至少一个具有相关联的MMU112的CPU110,MMU112与连接到系统互连52(从而同样连接到主存储器56)的常规高速缓存114耦合。在这一示例中,主存储器56是使用多通道(MC)DRAM实现的,并经由MCMC54耦合到系统互连52。闪存(非易失性存储器)118也经由闪存控制器116耦合到系统互连52。可以存在桥接电路120,以用于将系统互连52连接到服务一些外围组件124A、124B的外围互连122。可使用附加的桥接电路126将外围互连122耦合到外部互连128,以使得能够与外部电路/网络连接。在这一非限制性示例中,CMH102与MC_Cache40位于同一位置。
图7中示出的系统可以是包括个人电脑(台式电脑或笔记本电脑)、工作站、服务器、路由器或便携式用户装置(诸如包含个人数字助理、游戏装置或控制台、以及便携式移动通信装置(比如蜂窝电话)中的一个或多个的一个便携式用户装置)作为多个非限制性示例的任意类型的系统。
通常,在某些情况中(例如当发生高速缓存未命中时或当执行高速缓存预取时),需要对高速缓存存储器内容进行更新。也就是说,高速缓存内容是从/向存储器分级体系的下一级(比如DRAM56或闪存118)加载/存储的。然而,在具有若干存储器主处理器、多通道存储器和多通道高速缓存的环境中,传统的高速缓存更新策略或者将是不能被操作的,或者将导致低性能。
与传统的高速缓存相比,多通道高速缓存(MC_Cache)40提供增强的功能。然而,用于处理高速缓存未命中的传统技巧可能是不够的。关于MC_Cache40的一个具体问题是从存储器分级体系的下一级存取了什么数据。关于MC_Cache40可能出现的另一问题是,在若干单独的事务处理中,若干通道可以访问同一地址或连续的地址,这可以减少带宽。
现代的高速缓存利用所述访问的空间局域性。这指的是,当一些数据元素被访问时,假定位于该数据元素附近的一些数据将很有可能不久就会被访问。因此,当高速缓存中发生未命中(即,所请求的数据元素没有位于所述高速缓存中)时,不仅在高速缓存中对所需要的数据进行更新,而且在所需要的地址周围的数据也被存取到所述高速缓存。所存取的数据量可被称作“高速缓存行”或“高速缓存块”。
图7中示出的多通道高速缓存未命中处理机(CMH)102管理对存储器分级体系的下一级(例如对多通道主存储器56)的MC_Cache40操作。图8描述了具有多通道高速缓存未命中处理机(CMH)102的MC_Cache40架构。
当发生高速缓存未命中时,CMH102的示例性实施方式具有许多从存储器分级体系的下一级更新MC_Cache40的高速缓存更新方法(下文中详细描述)。此外,在可能时CMH_102操作以合并来自若干高速缓存通道的访问。CMH102可以将数据接入到其他通道,而不仅仅是产生未命中的通道,并且还可以合并初始化于若干高速缓存通道的访问。
现在更详细地描述高速缓存更新方法,存储器地址释义(包括通道分配)可以说明如下。假设如图8所示的32-比特地址空间和4-通道(Ch)MC_Cache40。在图8中,符号$’指示高速缓存通道存储器。当假定32-比特数据字的非限制性情况时,地址的两个LSB定义字节偏移(BO)。地址比特4:3可被解释为标识所述通道(Ch)。十个比特可以表示索引(例如比特[13:5]以及[2])。18个最高有效位[31:14]可以表示标志。
以下示例关于从存储器分级体系的下一级的高速缓存数据更新方法。除非另外指示,这些非限制性示例假定对MC_Cache40的每次接入都发生未命中。
在常规(非多通道)高速缓存中,高速缓存行是直接定义的。例如,具有32-比特字和16字节的高速缓存行长度,地址0...15构成单条线,地址16...31构成第二线,等等。从而,高速缓存行被对齐为彼此相邻。在这种情况中,当处理器访问来自地址12的一个字(并且发生高速缓存未命中)时,整条线都更新到高速缓存。在这一情况中,从主存储器访问来自地址0-15的数据,并将这些数据存储在高速缓存中。
作为MC_Cache40的示例,假定使用四个通道(Ch0、Ch1、Ch2、Ch3)并且假定地址如图9A中示出的那样分配,其中使用与图8中相同的地址释义。如果来自地址12的一个字被访问并且高速缓存行长度是16字节,产生的问题是当发生高速缓存未命中时从存储器分级体系中的下一级更新什么数据。存在四种可能(如下标为1、2、3和4)
1)第一种可能是,只访问引起所述高速缓存未命中发生的数据(即在这一情况中的来自地址12的字)。
2)第二种可能是,只访问发生未命中的通道中的高速缓存行长度的数据。地址12位于索引1(In1)中的通道1(Ch1),因此,通道1中的索引In0、In1、In2、In3被更新。在这一示例中,这意味着地址8-15和40-47。
3)第三种可能是,访问地址0-15,意味着两个高速缓存通道(Ch0和Ch1)被更新,尽管只在一个通道中发生未命中。这基于期望的高速缓存行大小是16字节的假定。
可选地,从两个通道(Ch0和Ch1)中访问数量为高速缓存行数量的数据。在这一情况中,地址0-15和32-47被访问。
4)第四种可能是,访问所有高速缓存通道中的同一索引。因此,由于在地址12(通道1中的索引1)处发生了未命中;数据被更新到所有通道中的索引1(地址4、12、20和28)。在这一情况中,从主存储器56向MC_Cache40的所有通道加载相同数量的数据。在每个通道都具有可选的最小高速缓存行间隔尺寸(granularity)的情况下,接入地址从0到63,导致总共64个字节被更新。
MC_Cache40的另一示例关于分配给分离通道的存储器空间相对较大的情况。作为一个具有两个通道的示例,地址0...4K-1属于通道0(K=1024),地址4K...8K-1属于通道1,地址8K...12K-1属于通道0,等等。这一情况示于图9B中。现在,当地址12发生未命中且高速缓存行长度是16字节时,更新进程按如下方法进行(使用上述四种可能):
A)地址12...15被更新;
B)地址0...15被更新(通道0中的索引In0...In3);
C)地址0...15被更新;或
D)更新地址12和4K+12(通道0和1中的索引In3)
这样,由于该示例中存在两个通道,因此在情况D)中只有8个字节被访问。可选的,被访问的地址是0...15和4k...4k+15。该例中总共32个字节被访问。
为了概括高速缓存更新方法,考虑如下内容。
多通道高速缓存未命中处理机102具有当高速缓存未命中发生时使用若干从存储器分级体系的下一级(或从存储器分级体系的任意随后的级)更新MC_Cache40的高速缓存更新方法进行操作的可能性。多通道高速缓存未命中处理机102能够从使用一种特定的更新方法转换到使用另一种更新方法,比如通过从MMU100进行可编程的控制。高速缓存更新方法被指定为下文中的A、B、C和D,分别对应于上文中讨论的可能性1、2、3和4。
高速缓存更新方法A):只更新引起高速缓存未命中发生的数据。然而,由于例如DRAM对存储器56的读取操作的实施,这一方法可能效率不高。
高速缓存更新方法B):为单个高速缓存通道存储器更新高速缓存行数量(worth)的数据。因此,只对未命中发生的高速缓存通道更新数据。
高速缓存更新方法C):更新来自随后的地址的高速缓存行数量的数据。在这一情况中,可以对若干高速缓存通道更新数据。
高速缓存更新方法D):更新所有通道中的同一索引。在这一情况中,对所有通道更新数据,并对所有通道产生相同的带宽。
可选地,方法C和D可用于单个通道具有最小间隔尺寸的高速缓存行的情况中。在这一情况中,对齐的(aligned)高速缓存行是对于单个通道来讲最小被接入的数据量。
与传统系统相比,可以更加自由的选择高速缓存行的大小。典型的高速缓存行是32或64字节。由于一些上述方法使用通道的数量来倍增需要的更新动作(即多通道高速缓存更新)的数量,因此限制高速缓存行的大小可能是期望的。最小的有效率高速缓存行大小基本上由存储器技术所决定(主要由读脉冲(burst)的大小所决定)。
为了有效率的使用,对下一级存储器分级体系(例如多通道主存储器)的配置优选地考虑上述方法和多通道高速缓存配置。
现在讨论矢量接入以及接入的合并。
图9C示出了具有两个通道的另一分配示例。举例来讲,当图5和7中示出的VPU22C访问MC_Cache40时,它可以同时访问若干数据元素。作为非限制性示例,VPU22C可以从地址4访问跨距为8的两个字。因此,它访问地址4和12。这些地址位于不同的通道(Ch1和Ch0),意味着这些字可被并行访问。然而,在这一示例中假定由于MC_Cache40中不存在这些字,发生两次未命中。结果,所影响的两个高速缓存通道从存储器分级体系的下一级更新数量为高速缓存行数量的数据。
根据上述方法B、C和D,所接入的地址如下所示(假定高速缓存行长度=16字节,并且这一示例中未示出方法A):
1)由于地址4中的未命中,地址0、4、16、20被访问(通道0,索引In0、In1、In2和In3)。由于地址12中的未命中,地址8、12、24、28被访问(通道1,索引In0、In1、In2和In3)。
2)由于地址4中的未命中,地址0、4、8、12被访问。由于地址12中的未命中,地址0、4、8、12被访问。
3)由于地址4中的未命中,地址4和12被访问(通道0和1,索引In1)。由于地址12中的未命中,地址4和12被访问(通道0和1,索引In1)。
在这些方法中,可按如下方法对接入进行合并。
1)合并成单个接入:作为单个长事务处理接入地址0至28。与使用两个单独的接入相比,这将典型地产生更好的性能,这是因为现代的总线、DRAM和闪存的特性倾向于在较长接入脉冲时比短接入脉冲时能够更有效率的进行操作。
2)存在两个相似的接入。将接入合并成单个接入(访问地址0-12)。
3)存在两个相似的接入。将接入合并成单个接入(访问地址4和12)。
为了总结对接入的合并,当可能时,多通道高速缓存未命中处理机102对来自若干高速缓存通道的接入进行合并。通常来讲,避免了对相同地址的重复接入,并且在可能时形成较长访问事务。
一种用来实施MC_Cache40的方法是使用传统的高速缓存存储和单独的高速缓存未命中处理机102作为构件。图10A示出了具有分离的未命中处理机102的MC_Cache40的示例性实施方式。在图10A(以及图10B)中,$’指示高速缓存通道存储器。四个通道耦合到加速器结构(AF)50(CH0_AF,...,CH3_AF),并且两个通道耦合到系统互连(SI)52(CH0_SI和CH1_SI)。一对多路复用器103A、103B被用于将一对CMH中的一个CMH102选择性地连接到系统互连52。未命中处理机102中的每一个都独立于其它未命中处理机。图10A中示出的实施方式支持高速缓存更新方法A和B。然而,并不能使用该示例性实施方式来容易地执行接入合并操作。
图10B示出了使用共享高速缓存未命中处理机102的另一示例性实施方式。图10B中示出的实施方式支持高速缓存更新方法A、B、C和D,并同样支持接入合并。
另一用于实施MC_Cache40的方法使用通用高速缓存未命中处理机102的更加分布式的版本,其示于图10C中。该实施方式与10A中的实施方式相似,但在CMH102之间具有充分的通信(示为CMH间通信总线103B)以使得每个CMH102能够基于其它CMH102的操作执行必要的更新。该方法具有CMH102可以“懒惰地”进行操作的附加益处,即首先执行它们自己的通道操作,然后当还有时间时执行由其它CMH102委托的更新操作。从而将在每个CMH102中提供用于来自其它CMH的更新命令的缓冲器以及用于防止缓冲溢出(例如将更新操作重新排序到更高的优先级)的方法。
可以注意到,图10C中的实施方式能够为高速缓存更新方法A、B、C和D中的每一个提供支持,并且还可以为接入合并实施方式提供支持。
通过使用本发明的示例性实施方式可以实现多种技术优势和技术效果。例如,关于上述四种高速缓存更新方法A-D,存在由于(a)从若干高速缓存通道对相同地址的接入被合并以及(b)对随后的地址的接入被合并以形成单个较长接入事务导致的对存储器分级体系的增强的可用带宽。由于DRAM和闪存特性以及由于常规互连,这是相对速度较快的。当与长接入脉冲一起使用时,通常DRAM和闪存以及互连会更有效率。
关于更新方法B,该方法使用标准高速缓存单元实施会更简单,并允许增强的并行实现。
关于更新方法C,从应用的角度来看,与使用传统高速缓存一样来利用空间局域性。
关于更新方法D,一个优势是,在所有高速缓存通道中所使用的吞吐量相等。
基于上述内容,显然本发明的示例性实施方式提供了方法、设备以及计算机程序,以提供用于与多通道高速缓存存储器一起使用的未命中处理机。根据示例性实施方式,高速缓存未命中处理机102(在不失一般性的情况下其也可被称作多通道高速缓存更新处理机)被配置成至少基于多通道高速缓存未命中条件的发生以及基于因任何原因需要预取数据给多通道高速缓存40的情况的发生按上文所述进行操作。
图11是根据本发明的示例性实施方式的逻辑流程图,其中示出了对方法的操作以及执行计算机程序指令的结果。根据这些示例性实施方式,在方块11A处,方法执行以下步骤:确定至少由于高速缓存未命中的发生或需要预取数据之一而更新多通道高速缓存存储器的需要。在方块11B,存在以下步骤:操作多通道高速缓存未命中处理机以从主存储器更新多通道高速缓存存储器中的至少一个高速缓存通道存储器。
进一步根据图11中所示的方法,多通道高速缓存未命中处理机只更新引起所述未命中发生的单个高速缓存通道存储器的数据。
进一步根据上文中所述的方法,其中多通道高速缓存未命中处理机更新单个高速缓存通道存储器的高速缓存行,其中所更新的高速缓存行包括引起所述高速缓存未命中发生的数据。
进一步根据上文中所述的方法,其中多通道高速缓存未命中处理机更新引起所述高速缓存未命中发生的地址随后的地址的高速缓存行。
进一步根据前段中所述的方法,其中所述更新引起所述高速缓存未命中发生的地址随后的地址的高速缓存行为多个高速缓存通道存储器更新数据。
进一步根据上文中所述的方法,其中多通道高速缓存未命中处理机更新与每个高速缓存通道存储器中同一索引关联的数据。
进一步根据上文中所述的方法,其中在多通道高速缓存存储器的单个通道具有最小间隔尺寸的单个高速缓存行的情况下发生更新。
进一步根据上文中所述的方法,其中当更新多个高速缓存通道存储器时,多通道高速缓存未命中处理机进行操作以合并多个高速缓存存储到主存储器的接入。
进一步根据上文中所述的方法,其中每个单独的高速缓存通道存储器由关联的高速缓存未命中处理机进行服务,其中多个所述高速缓存未命中处理机一起构成分布式的多通道高速缓存未命中处理机。
进一步根据上文中一些段落所述的方法,其中每个单独的高速缓存通道存储器由单个集中式多通道高速缓存未命中处理机进行服务。
进一步根据上文中所述的方法,其中多通道高速缓存存储器包括多个并联的输入端口,其中每个输入端口对应于通道中的一个,并被配置成并行接收存储器接入请求,每个并联的输入端口被配置成接收对多个处理单元中的任意一个的存储器接入请求,并且其中所述多通道高速缓存存储器还包括多个高速缓存块,其中每个高速缓存块被配置成从多个输入端口中的唯一一个接收存储器接入请求,从而存在多个并联输入端口和多个高速缓存块之间的一对一映射,其中多个高速缓存块中的每一个被配置成服务存储器的地址空间中的唯一部分。
本发明的示例性实施方式还涵盖存储计算机软件指令的有形存储器介质,对计算机软件指令的执行的结果是执行上文中的任一段落中的方法。
示例性实施方式还涵盖一种设备,该设备包括:多通道高速缓存存储器,该多通道高速缓存存储器包括多个高速缓存通道存储器;多通道高速缓存未命中处理机,其被配置成对至少由于高速缓存未命中的发生或需要预取数据之一而更新多通道高速缓存存储器的需要进行响应,从主存储器更新多通道高速缓存存储器中的至少一个高速缓存通道存储器。
一般来讲,各种示例性实施方式可以在硬件或专用电路、软件、逻辑或其任意组合中实施。例如,一些方面可以在硬件中实施,而其他方面可以在可由控制器、微处理器或其他计算装置执行的软件或固件中实施,虽然本发明并不限于此。虽然本发明的示例性实施方式的各个方面可被图示和描述为框图、流程图、或使用其他图形表示进行描述,能够理解的是,此处描述的这些方块、设备、系统、技术或方法可作为非限制性示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算装置、或其一些组合中实施。
从而,应该理解的是本发明的示例性实施方式的至少一些方面可在诸如集成电路芯片和模块的各种组件中实行,并且本发明的示例性实施方式可在被实施为集成电路的设备中实现。集成电路可以包括用于体现至少以下各项中的一个或多个的电路(也可能是固件):可被配置以便根据本发明的示例性实施方式进行操作的基带电路和射频电路、一个或多个数据处理器、一个或多个数字信号处理器。
在结合附图阅读了上述描述之后,对本发明的上述示例性实施方式进行各种修改和改写对相关领域技术人员将变得显而易见。然而,任何以及所有修改都应落入本发明的非限制性和示例性的实施方式的范围内。
应该注意到,术语“连接”、“耦合”或任何其它变形指的是两个或更多个元件之间任意的连接或耦合(直接或间接),并可以涵盖“连接”或“耦合”在一起的两个元件之间存在一个或多个中间元件的情况。元件之间的耦合或连接可以是物理的、逻辑的或它们的组合。在这里使用时,作为若干非限制性和非穷举的示例,可以认为两个元件通过使用一个或多个电线、电缆和/或印刷电连接,以及通过使用电磁能,比如具有射频区域、微波区域和光学(包括可见的和不可见的)区域波长的电磁能而被“连接”或“耦合”在一起。
本发明的示例性实施方式不应被认为只限于使用上述地址比特数目(32),特定的实施中可以存在更多或更少的地址比特。此外,MC_Cache40可以具有任何期望数目(大于或等于2)的通道。在这一情况中,存储器地址中的比特(比特数不等于2)可被解码以标识多通道高速缓存的特定通道编号。例如,如果MC_Cache40被认为包括8个并联的输入端口,则3个地址比特可被解码以标识并联输入端口(通道)之一。标志和索引字段的比特数也可以与上文中讨论的及附图中示出的值不同。对本领域技术人员来讲,还可以出现对上述教导的其它修改,但是,这种修改应落入本发明的示例性实施方式的范围内。
此外,本发明的各种非限制性且示例性的实施方式中的一些特征可在不使用其它特征的情况下使用,以突出优势。如此,上述描述将被认为仅是对本发明的原理、教导和示例性实施方式的描述,而不对其进行限制。

Claims (23)

1.一种用于更新多通道高速缓存存储器的方法,包括:
确定至少由于高速缓存未命中的发生或需要数据预取之一更新多通道高速缓存存储器的需要;以及
操作多通道高速缓存未命中处理机以从主存储器更新所述多通道高速缓存存储器中的至少一个高速缓存通道存储器;
其中所述多通道高速缓存存储器包括多个高速缓存块,所述多个高速缓存块中的每一个高速缓存块被配置成服务所述主存储器的地址空间中的唯一地址空间,使得每一个高速缓存块只接收包括落入与该高速缓存块相关联的唯一地址空间内的存储器地址的那些存储器接入请求;以及
所述方法还包括:重新定义所述唯一地址空间,使得每个高速缓存块变成与不同的唯一地址空间相关联。
2.根据权利要求1的方法,其中所述多通道高速缓存未命中处理机只更新引起所述未命中发生的单个高速缓存通道存储器的数据。
3.根据权利要求1的方法,其中所述多通道高速缓存未命中处理机更新单个高速缓存通道存储器的高速缓存行,其中所更新的高速缓存行包括引起所述高速缓存未命中发生的所述数据。
4.根据权利要求1的方法,其中所述多通道高速缓存未命中处理机更新引起所述高速缓存未命中发生的地址随后的地址的高速缓存行。
5.根据权利要求4的方法,其中更新引起所述高速缓存未命中发生的地址随后的地址的高速缓存行为多个高速缓存通道存储器更新数据。
6.根据权利要求2-5中的任意一项的方法,其中所述多通道高速缓存未命中处理机更新与每个高速缓存通道存储器中的同一索引关联的数据。
7.根据权利要求4和5中的任意一项的方法,其中所述更新在所述多通道高速缓存存储器的单个通道具有最小间隔尺寸的单个高速缓存行时发生。
8.根据权利要求1-5中的任意一项的方法,其中在更新多个高速缓存通道存储器时,所述多通道高速缓存未命中处理机进行操作以合并所述多个高速缓存存储到主存储器的接入。
9.根据权利要求1-5中的任意一项的方法,其中每个单独的高速缓存通道存储器由关联的高速缓存未命中处理机服务,其中多个所述高速缓存未命中处理机一起构成分布式的多通道高速缓存未命中处理机。
10.根据权利要求1-5中的任意一项的方法,其中每个单独的高速缓存通道存储器由单个集中式多通道高速缓存未命中处理机服务。
11.根据权利要求1-5中的任意一项的方法,其中所述多通道高速缓存存储器包括多个并联的输入端口,其中每个输入端口对应于所述通道中的一个,并被配置成并行接收存储器接入请求,每个并联的输入端口被配置成接收对多个处理单元中的任意一个的存储器接入请求,并且其中每个高速缓存块被配置成从所述多个输入端口中的唯一一个接收存储器接入请求,从而存在所述多个并联的输入端口和所述多个高速缓存块之间的一对一映射。
12.一种用于更新多通道高速缓存存储器的设备,包括:
多通道高速缓存存储器,其包括多个高速缓存通道存储器;以及
多通道高速缓存未命中处理机,其被配置成对至少由于高速缓存未命中的发生或需要预取数据之一更新所述多通道高速缓存存储器的需要进行响应,以从主存储器更新所述多通道高速缓存存储器中的至少一个高速缓存通道存储器;
其中所述多通道高速缓存存储器包括多个高速缓存块,所述多个高速缓存块中的每一个高速缓存块被配置成服务所述主存储器的地址空间中的唯一地址空间,使得每一个高速缓存块只接收包括落入与该高速缓存块相关联的唯一地址空间内的存储器地址的那些存储器接入请求;以及
所述多通道高速缓存存储器还包括:仲裁电路,其配置成重新定义所述唯一地址空间,使得每个高速缓存块变成与不同的唯一地址空间相关联。
13.根据权利要求12的设备,其中所述多通道高速缓存未命中处理机只更新引起所述未命中发生的单个高速缓存通道存储器的数据。
14.根据权利要求12的设备,其中所述多通道高速缓存未命中处理机更新单个高速缓存通道存储器的高速缓存行,其中所更新的高速缓存行包括引起所述高速缓存未命中发生的所述数据。
15.根据权利要求12的设备,其中所述多通道高速缓存未命中处理机更新引起所述高速缓存未命中发生的地址随后的地址的高速缓存行。
16.根据权利要求15的设备,其中更新引起所述高速缓存未命中发生的地址随后的地址的高速缓存行为多个高速缓存通道存储器更新数据。
17.根据权利要求12-16中的任意一项的设备,其中所述多通道高速缓存未命中处理机更新与每个高速缓存通道存储器中同一索引关联的数据。
18.根据权利要求15和16中的任意一项的设备,其中所述更新在所述多通道高速缓存存储器的单个通道具有最小间隔尺寸的单个高速缓存行时发生。
19.根据权利要求12-16中的任意一项的设备,其中在更新多个高速缓存通道存储器时,所述多通道高速缓存未命中处理机进行操作以合并所述多个高速缓存存储对主存储的接入。
20.根据权利要求12-16中的任意一项的设备,其中每个单独的高速缓存通道存储器由关联的高速缓存未命中处理机服务,其中多个所述高速缓存未命中处理机一起构成分布式的多通道高速缓存未命中处理机。
21.根据权利要求12-16中的任意一项的设备,其中每个单独的高速缓存通道存储器由单个集中式多通道高速缓存未命中处理机服务。
22.根据权利要求12-16中的任意一项的设备,其中所述多通道高速缓存存储器包括多个并联的输入端口,其中每个输入端口对应于所述通道中的一个,并被配置成并行接收存储器接入请求,每个并联的输入端口被配置成接收对多个处理单元中的任意一个的存储器接入请求,并且其中每个高速缓存块被配置成从所述多个输入端口中的唯一一个接收存储器接入请求,从而存在所述多个并联的输入端口和所述多个高速缓存块之间的一对一映射。
23.根据权利要求12-16中的任意一项的设备,至少部分地实现在集成电路中。
CN201180017610.7A 2010-02-05 2011-01-25 用于多通道高速缓存的更新处理机 Expired - Fee Related CN102834813B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/701,067 US20110197031A1 (en) 2010-02-05 2010-02-05 Update Handler For Multi-Channel Cache
US12/701,067 2010-02-05
PCT/FI2011/050053 WO2011095678A1 (en) 2010-02-05 2011-01-25 Update handler for multi-channel cache

Publications (2)

Publication Number Publication Date
CN102834813A CN102834813A (zh) 2012-12-19
CN102834813B true CN102834813B (zh) 2016-05-11

Family

ID=44354578

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180017610.7A Expired - Fee Related CN102834813B (zh) 2010-02-05 2011-01-25 用于多通道高速缓存的更新处理机

Country Status (4)

Country Link
US (1) US20110197031A1 (zh)
EP (1) EP2531924A4 (zh)
CN (1) CN102834813B (zh)
WO (1) WO2011095678A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9892047B2 (en) * 2009-09-17 2018-02-13 Provenance Asset Group Llc Multi-channel cache memory
US8793419B1 (en) * 2010-11-22 2014-07-29 Sk Hynix Memory Solutions Inc. Interface between multiple controllers
US8787368B2 (en) * 2010-12-07 2014-07-22 Advanced Micro Devices, Inc. Crossbar switch with primary and secondary pickers
EP3712774B1 (en) 2011-09-30 2023-02-15 Tahoe Research, Ltd. Apparatus and method for implementing a multi-level memory hierarchy
CN107608910B (zh) 2011-09-30 2021-07-02 英特尔公司 用于实现具有不同操作模式的多级存储器分级结构的设备和方法
WO2013048493A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Memory channel that supports near memory and far memory access
CN103946813B (zh) 2011-09-30 2017-08-25 英特尔公司 基于使用统计量追踪的远存储器访问信号的生成
US9323679B2 (en) * 2012-08-14 2016-04-26 Nvidia Corporation System, method, and computer program product for managing cache miss requests
US9372796B2 (en) * 2012-10-24 2016-06-21 Texas Instruments Incorporated Optimum cache access scheme for multi endpoint atomic access in a multicore system
US9892063B2 (en) * 2012-11-27 2018-02-13 Advanced Micro Devices, Inc. Contention blocking buffer
US9678860B2 (en) * 2012-11-29 2017-06-13 Red Hat, Inc. Updating data fields of buffers
FR3010598B1 (fr) * 2013-09-06 2017-01-13 Sagem Defense Securite Procede de gestion de coherence de caches
KR20150090491A (ko) * 2014-01-29 2015-08-06 삼성전자주식회사 전자 장치 및 전자 장치에서 데이터를 액세스하는 방법
US10824574B2 (en) * 2019-03-22 2020-11-03 Dell Products L.P. Multi-port storage device multi-socket memory access system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0637799A2 (en) * 1993-08-02 1995-02-08 International Business Machines Corporation Shared cache for multiprocessor system
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
US6604174B1 (en) * 2000-11-10 2003-08-05 International Business Machines Corporation Performance based system and method for dynamic allocation of a unified multiport cache
WO2008047180A1 (en) * 2006-10-20 2008-04-24 Freescale Semiconductor, Inc. System and method for fetching an information unit

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5924117A (en) * 1996-12-16 1999-07-13 International Business Machines Corporation Multi-ported and interleaved cache memory supporting multiple simultaneous accesses thereto
GB9701960D0 (en) * 1997-01-30 1997-03-19 Sgs Thomson Microelectronics A cache system
US6405322B1 (en) * 1999-04-13 2002-06-11 Hewlett-Packard Company System and method for recovery from address errors
US7558920B2 (en) * 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7558941B2 (en) * 2005-06-30 2009-07-07 Intel Corporation Automatic detection of micro-tile enabled memory
US7539840B2 (en) * 2006-05-30 2009-05-26 International Business Machines Corporation Handling concurrent address translation cache misses and hits under those misses while maintaining command order
US8060226B2 (en) * 2006-08-01 2011-11-15 Creative Technology Ltd Method and signal processing device to provide one or more fractional delay lines
US9015399B2 (en) * 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US20100058025A1 (en) * 2008-08-26 2010-03-04 Kimmo Kuusilinna Method, apparatus and software product for distributed address-channel calculator for multi-channel memory
WO2010122677A1 (en) * 2009-04-23 2010-10-28 Hitachi,Ltd. Storage apparatus and its program processing method and storage controller
US8250332B2 (en) * 2009-06-11 2012-08-21 Qualcomm Incorporated Partitioned replacement for cache memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0637799A2 (en) * 1993-08-02 1995-02-08 International Business Machines Corporation Shared cache for multiprocessor system
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
US6604174B1 (en) * 2000-11-10 2003-08-05 International Business Machines Corporation Performance based system and method for dynamic allocation of a unified multiport cache
WO2008047180A1 (en) * 2006-10-20 2008-04-24 Freescale Semiconductor, Inc. System and method for fetching an information unit

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Molecular Caches: A caching structure for dynamic creation of application-specific Heterogeneous cache regions;Varadarajan K et al.;《Proceedings of The 39th Annual IEEE/ACM International Symposium on Microarchitecture》;20061231;全文 *

Also Published As

Publication number Publication date
EP2531924A4 (en) 2013-11-13
EP2531924A1 (en) 2012-12-12
WO2011095678A1 (en) 2011-08-11
CN102834813A (zh) 2012-12-19
US20110197031A1 (en) 2011-08-11

Similar Documents

Publication Publication Date Title
CN102834813B (zh) 用于多通道高速缓存的更新处理机
CN108228094B (zh) 存储器侧高速缓存中通路的伺机增加
CN103218208B (zh) 用于实施成形的存储器访问操作的系统和方法
US8549231B2 (en) Performing high granularity prefetch from remote memory into a cache on a device without change in address
US20020087614A1 (en) Programmable tuning for flow control and support for CPU hot plug
EP1309918A1 (en) System and method for semaphore and atomic operation management in a multiprocessor
CN108268421B (zh) 用于在机架规模环境中提供可重新配置的数据层的机制
CN108268385B (zh) 具有集成目录高速缓存的优化的高速缓存代理
US9697111B2 (en) Method of managing dynamic memory reallocation and device performing the method
CN105677580A (zh) 访问缓存的方法和装置
US20100161911A1 (en) Method and apparatus for mpi program optimization
CN114860329B (zh) 动态一致性偏置配置引擎及方法
US6546465B1 (en) Chaining directory reads and writes to reduce DRAM bandwidth in a directory based CC-NUMA protocol
KR20180027646A (ko) I/o 패킷 압축을 위한 레지스터 파일
KR100543731B1 (ko) 다중 프로세서 시스템에서 마이크로프로세서 통신을 위한방법, 프로세싱 장치 및 데이터 프로세싱 시스템
JP7205033B2 (ja) キャッシュの割当方法と装置、記憶媒体、電子装置
CN104321750B (zh) 在共享存储器编程中保持释放一致性的方法和系统
US20110320731A1 (en) On demand allocation of cache buffer slots
US20080016282A1 (en) Cache memory system
US6701387B1 (en) Adaptive data fetch prediction algorithm
CN114238171B (zh) 电子设备、数据处理方法和装置、计算机系统
US6832300B2 (en) Methods and apparatus for control of asynchronous cache
CN109542835A (zh) 用于使用多个存储器通道来降低平台中的加速器-存储器访问成本的技术
JP3876771B2 (ja) 情報処理装置及びそれに用いるキャッシュフラッシュ制御方法
US7073004B2 (en) Method and data processing system for microprocessor communication in a cluster-based multi-processor network

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20151222

Address after: Espoo, Finland

Applicant after: Technology Co., Ltd. of Nokia

Address before: Espoo, Finland

Applicant before: Nokia Oyj

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160511

Termination date: 20170125

CF01 Termination of patent right due to non-payment of annual fee