CN106201980A - 处理单元及其处理方法 - Google Patents

处理单元及其处理方法 Download PDF

Info

Publication number
CN106201980A
CN106201980A CN201510330215.4A CN201510330215A CN106201980A CN 106201980 A CN106201980 A CN 106201980A CN 201510330215 A CN201510330215 A CN 201510330215A CN 106201980 A CN106201980 A CN 106201980A
Authority
CN
China
Prior art keywords
caching
core
processing unit
gpu
pry
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.)
Withdrawn
Application number
CN201510330215.4A
Other languages
English (en)
Inventor
黃锡霖
呂坚平
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.)
MediaTek Singapore Pte Ltd
Original Assignee
MediaTek Singapore Pte Ltd
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 MediaTek Singapore Pte Ltd filed Critical MediaTek Singapore Pte Ltd
Publication of CN106201980A publication Critical patent/CN106201980A/zh
Withdrawn legal-status Critical Current

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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/314In storage network, e.g. network attached cache
    • 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
    • G06F2212/6046Using a specific cache allocation policy other than replacement policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供一种处理单元及其处理方法,处理单元包括一个或多个第一核心,其中,一个或多个第一核心以及一个或多个第二核心是异构计算***的一部分,并共用***存储器,其中第一核心中的每一个还包括:第一L1缓存接收第一缓存存取请求,其中,第一L1缓存支持被一个或多个第二核心窥探;以及第二L1缓存接收第二缓存存取请求,其中,第二L1缓存不支持窥探;以及L2缓存,由一个或多个第一核心共用的,L2缓存耦接于第一L1缓存以及第二L1缓存,其中,L2缓存支持被一个或多个第二核心窥探,其中,L2缓存从第一L1缓存接收第一缓存存取请求,以及从第二L1缓存接收第二缓存存取请求。本发明的处理单元及其处理方法提高了异构计算***中数据一致性的效率。

Description

处理单元及其处理方法
【技术领域】
本发明是关于异构计算***技术,特别关于一种处理单元及其处理方法。
【背景技术】
在多处理器***中,每个处理器具有其自有的缓存以储存也在***存储器中储存的数据的备份。当缓存中的多个数据备份不一致(即,具有不同的值)时,就会出现问题。发展出了各种不同的技术来确保多处理器***中的数据一致性。一个技术是窥探(snooping),其记录包含于储存器事务(memorytransaction)中的缓存线(cache line)的一致性状态(也被称作“状态”)。“缓存线”(也被称作“线”)是关于缓存中的固定大小的数据区块(fixed-size datablock),其是***存储器以及缓存之间的数据传输的基础单元。缓存线的状态指示缓存线是否被修改,是否在***存储器外部具有一个或多个有效的备份,是否已经失效等。
异构计算***是多处理器***的一种类型。异构计算***是一种包含多个类型的处理器的计算***,上述多个类型的处理器以串联的方式工作来执行计算任务。例如,异构计算***可包含一个或多个中央处理单元(central processingunit,CPU),一个或多个图形处理单元(graphics processing unit,GPU),一个或多个数字信号处理器(digital signal processor,DSP)等。
在传统的异构计算***中,通常没有对全部不同的处理器类型的数据一致性的硬件支持。这样的支持的缺乏会使得不同的处理器类型难以共用公共***存储器空间。因此,典型的不同类型的处理器之间的数据传输需要涉及到存储器备份。于某些***中,CPU在***存储器中存取数据,而GPU在单独的图形存储器中存取数据。为了从***存储器中读取数据,首先,GPU通过存储器控制器从CPU请求数据备份。接着,GPU通过直接存储器存取(direct memoryaccess,DMA)逻辑从***存储器数据缓存区接收数据备份到图形存储器数据缓存区。从一个缓存区到另一个缓存区的存储器备份是缓慢且低效率的。在更先进的***中,一个或多个CPU以及GPU被集成在一个片上***(system-on-a-chip,SoC)中。CPU以及GPU共用相同的***总线,但分别使用相同物理存储器的两个不同区域。CPU以及GPU之间的数据传输仍然包括相同物理存储器中从一个缓存区到其他缓存区的存储器备份。
【发明内容】
为了解决上述问题,本发明提出了一种处理单元及其处理方法。
根据本发明的第一方面,提供一种处理单元,包括:一个或多个第一核心,其中,所述一个或多个第一核心以及一个或多个第二核心是异构计算***的一部分,并共用***存储器,以及其中,所述第一核心中的每一个还包括:第一L1缓存耦接于所述第一核心的基于指令的计算模块以接收第一缓存存取请求,其中,所述第一L1缓存支持被所述一个或多个第二核心窥探;以及第二L1缓存耦接于所述第一核心的固定功能管线模块以接收第二缓存存取请求,其中,所述第二L1缓存不支持窥探;以及L2缓存,由所述一个或多个第一核心共用的,所述L2缓存耦接于所述第一L1缓存以及所述第二L1缓存,其中,所述L2缓存支持被所述一个或多个第二核心窥探,以及其中,所述L2缓存从所述第一L1缓存接收所述第一缓存存取请求,以及从所述第二L1缓存接收所述第二缓存存取请求。
根据本发明的第二方面,提供一种处理单元的处理方法,所述处理单元包括一个或多个第一核心并共用异构计算***中具有一个或多个第二核心的***存储器,所述方法包括:通过耦接于第一核心的基于指令的计算模块的第一L1缓存接收第一缓存存取请求,其中,所述第一L1缓存支持被所述一个或多个第二核心窥探;通过耦接于所述第一核心的固定功能管线模块的第二L1缓存接收第二缓存存取请求,其中,所述第二L1缓存不支持窥探;以及通过由所述一个或多个第一核心共用的L2缓存从所述第一L1缓存接收所述第一缓存存取请求,以及从所述第二L1缓存接收所述第二缓存存取请求,其中,所述L2缓存支持被所述一个或多个第二核心窥探。
本发明提供的处理单元及其处理方法提高了异构计算***中数据一致性的效率。
【附图说明】
图1为根据本发明实施例的异构***的示例架构示意图。
图2为根据本发明实施例的GPU的方框示意图。
图3为根据本发明实施例的GPU核心的功能模块的示意图。
图4为根据本发明实施例的执行于GPU缓存上的操作的概述示意图。
图5为根据本发明实施例的执行图4中支持窥探的操作的GPU的进一步的细节框图。
图6为根据本发明实施例的每个GPU缓存包含一个或多个等级缓存的示意图。
图7为根据本发明实施例的处理单元的处理方法的流程图。
【具体实施方式】
下面的描述是实施本发明的较佳预期模式。这种描述是为了说明本发明的一般原理的目的,而不应被理解成具有限制性的意义。但是应当理解,实施例可以利用软件、硬件、固件、或其任何组合来实现。
在以下的描述中,阐述了很多具体细节。然而,可以理解的是,本发明的实施例可以在没有这些具体细节的情况下实施。在其它实例中,公知的电路、结构以及技术没有被详细的示出,以便不模糊对此描述的理解。然而,本领域的普通技术人员可以理解的是,本发明可以在没有这些具体细节的情况下实施。本领域的普通技术人员利用所包括的描述,无需过多的实验就能够实现适当的功能。
本发明是关于异构计算***(heterogeneous computing system);更具体地,是关于使用共用存储器(shared memory)的异构计算***的数据一致性(coherence)。
本发明的实施例提供一种在异构计算***中管理数据一致性的***架构。术语“异构计算***”是指一种计算***,其包括具有不同的硬件架构的处理器,例如:CPU、GPU以及DSP。于下文的描述中,本发明的实施例是参考一个异构计算***的示例来描述的,此异构计算***包括一个或多个CPU以及一个或多个GPU。然而,可以理解的是,本发明的实施例可应用于任何异构计算***,例如,包括不同类型的CPU、GPU、DSP和/或其它类型的处理器的任何组合的***。
作为一个示例,异构计算***可包含CPU以及GPU的组合。GPU执行一系列处理步骤以将3D场景切割为区块(raster)以创建2D表示(representation)。这些处理步骤被称作3D图形管线技术(pipelining)或渲染管线技术。3D图形管线技术将3D场景(其可为3D模型或3D计算机动画)切割为区块变成2D表示以进行显示。于传统的GPU中,3D图形管线技术是通过专为加快计算速度而量身打造的固定功能的硬件来实现。随着技术的演进,越来越多的GPU包括通用可编程硬件,以允许在图形渲染过程中具有灵活性。除了渲染图形,目前的GPU还可执行通用的计算任务。
在例如处理器***的异构***中,多个CPU群集被集成到相同SoC的GPU上。CPU支持窥探;也就是说,每个CPU追踪其缓存线的一致性状态(也被称作“状态”)。,并提供它们的状态以及内容给***的其余部分来读取。因此,GPU可以从CPU缓存中获得有效的数据备份。然而,典型的GPU缓存不支持被其它类型的处理器窥探;即,其它的处理器(例如,CPU)不能存取GPU的缓存线的状态。其结果是,在这样的***中,GPU可以存取CPU缓存,但是CPU不能存取GPU缓存。CPU也不能使用***存储器中GPU的缓存线的备份,因为此备份可能是过时(stale)的。某些***使用软件解决方案来解决CPU对GPU缓存线的请求。一个软件解决方案是刷新(flush)GPU缓存线的全部或一个范围到***存储器,接着,无效GPU的那些缓存线。这种软件解决方案通常效率很低,因为其相对于保持数据一致性所涉及的缓存线的数量是粗粒度(coarse-grained)的。
本发明实施例提供了一种用于异构计算***中数据一致性的高效的硬件解决方案。此硬件解决方案能够使GPU来提供其缓存线的状态以及内容到***的其余部分。因此,GPU缓存支持窥探,CPU能窥探(snoop)GPU缓存的状态,就像GPU可以窥探CPU缓存的状态。窥探允许保持CPU缓存、GPU缓存(其支持窥探)以及***存储器之间的数据一致性。此外,就像CPU缓存一样,支持窥探的GPU缓存可对物理地址进行存取。因为CPU缓存以及GPU缓存两者都于相同的物理地址空间中被寻址(addressed),CPU以及GPU之间的数据传输可以通过地址(即,指针)传递来执行。因此,可以避免存储器备份。
图1为根据本发明实施例的异构***100的示例架构示意图。异构***100包括一个或多个CPU群集(CPU cluster)110,且每个CPU群集110还包含一个或多个CPU核心115。异构***100也包括GPU 120,GPU 120还包含一个或多个GPU核心125。CPU群集110以及GPU 120都可经由缓存一致性互连140以及存储器控制器150对***存储器130(例如,动态随机存取存储器或其它易失性或非易失性随机存取存储器)进行存取。在一个实施例中,缓存一致性互连140以及存储器控制器150之间的通信链路,以及存储器控制器150以及***存储器130之间的通信链路,使用高性能,高时钟频率协议;例如,高级可扩展接口(Advanced eXtensible Interface,AXI)协议。在一个实施例中,CPU群集110以及GPU 120都使用支持全***一致性的协议(例如:AXI一致性扩展(AXI Coherency Extensions,ACE)协议)与缓存一致性互连140进行通信。虽然如图1所示,异构***100包括两个CPU群集110(每个CPU群集110具有两个CPU核心115)以及一个GPU 120(具有两个GPU核心125),需要理解的是,异构***100可包含任何数量的具有任何数量的CPU核心115的CPU群集110,以及具有任何数量的GPU核心125的任何数量的GPU 120。
图1也显示了每个CPU群集110包括一个等级2的(level-2,以下简称为L2)缓存116,其由相同CPU群集110中的CPU核心115共用。类似地,GPU120也包括L2缓存126,其由GPU核心125共用。L2缓存116以及L2缓存126是分别用于CPU核心115以及GPU核心125的多等级缓存层次(cachehierarchies)结构的一部分。
图2为根据本发明实施例的GPU 120的方框示意图。在本实施例中,每个GPU核心125包括:命令引擎210,基于指令的计算模块220,以及固定功能管线模块230。命令引擎210接收以及发送命令到适当的处理模块。基于指令的计算模块220是执行预定义的指令集中的指令的可编程计算模块。固定功能管线模块230用于图形管线处理最优化的专用硬件。基于指令的计算模块220以及固定功能管线模块230都在虚拟地址空间执行计算。
基于指令的计算模块220操作于第一等级1的(1st level-1,以下简称为第一L1)缓存224,其用于通用计算以及可编程图形计算;且固定功能管线模块230操作于第二L1缓存234,其用于固定功能图形管线计算。于GPU 120内部且在GPU核心125外部是由GPU核心125共用的L2缓存126。第一L1缓存224、第二L1缓存234以及L2缓存126中的数据可以是***存储器130中的数据的影子备份(shadow copy)或更新的备份(newer copy)。
根据本发明的实施例,第一L1缓存224以及L2缓存126都支持窥探,而第二L1缓存234不支持窥探。在一个实施例中,第一L1缓存224以及L2缓存126都使用物理地址(或物理地址的一部分)来索引以及存取其缓存线。此外,第一L1缓存224以及L2缓存126都提供其缓存线的状态给异构***100的其余部分来读取。保持及最终缓存线的状态的操作可以由位于第一L1缓存224以及L2缓存126内的电路来执行,或由耦接于第一L1缓存224以及L2缓存126的电路来执行,或由可存取第一L1缓存224以及L2缓存126的电路来执行。
由于基于指令的计算模块220操作于虚拟地址空间,其发送存储器请求(或等效的”缓存存取请求”)到使用虚拟地址的第一L1缓存224,以识别将被存取的所请求的指令和/或数据。虚拟地址被转换为物理地址,以使得第一L1缓存224可以确定由物理地址索引的缓存线的状态,并在有一个命中(hit)时存取其内部存储空间。类似地,当L2缓存126接收包括虚拟地址的存储器请求时,虚拟地址被转换为物理地址。使用物理地址,L2缓存126可以确定由物理地址索引的缓存线的状态,并在有一个命中(hit)时存取其内部存储空间。第一L1缓存224以及L2缓存126都支持窥探,第一L1缓存224以及L2缓存126的缓存线的内容以及状态都能够被其它处理器(例如,CPU核心115)获取,以保持整个处理器的缓存之间的一致性。因此,这些GPU缓存以及CPU缓存可使用相同的存储器地址空间以用于数据存取,且可以通过指针(即,地址)来对彼此进行数据传输。
另一方面,第二L1缓存234操作于虚拟地址空间并且不支持窥探。因为固定功能管线模块230也操作于虚拟地址空间,其发送存储器请求到使用虚拟地址的第二L1缓存234以识别将被存取的所请求的指令和/或数据。第二L1缓存234可以在不需要虚拟到物理地址转换(virtual-to-physical address translation)的情况下,作用于这些存储器请求的虚拟地址。
图3为根据本发明实施例的GPU核心300的功能模块的示意图。GPU核心300是图1以及图2中所示的GPU核心125的一个示例。在一个实施例中,GPU核心300包括:分级引擎(binning engine)310,分级缓存区(bin buffer)320以及渲染引擎(rendering engine)330。分级引擎320还包含:顶点加载单元(vertexload unit)311,顶点着色器(vertex shader)312,修剪选择单元(clip and cull unit)313,设置单元314,以及分级储存单元315。顶点加载单元311加载顶点数据到分级引擎320以进行分级,其中,顶点数据描述将被渲染的图形对象。分级是在本领域中公知的用于减少存储器I/O负荷的延迟渲染技术。顶点着色器312、修剪选择单元313以及设置单元314处理并设置顶点数据。分级储存单元315将顶点数据分类到对应分级,并根据分级数据结构将每个分级储存到分级缓存区320。渲染引擎330包括分级加载单元331,变化的加载单元(varying load unit)332,区块切割器(rasterizer)333,片段着色器(fragment shader)334以及渲染输出(render output,以下简称为ROP)单元335。分级加载单元331以及变化的加载单元332逐级从分级缓存区320加载分级数据以及变化的变量(例如,由定义的变化的变量)以用于渲染。区块切割器333将所加载的数据切割为区块(rasterize)。片段着色器334将已切割为区块的几何形状(geometry)处理成区块(tile),并以色彩以及深度值来渲染以及施加到区块。ROP单元335将色彩以及深度值写入到存储器中。于备选实施例,GPU核心300可包含图3中所显示的不同的功能模块。
虽然图3中的每个功能模块是以独立的单元来显示,在一些实施例中,这些功能模块中的某些可以共用相同的硬件、软件、固件或任何以上的组合,以执行其指定的任务。此外,于备选实施例中,每个功能模块的位置可能会与图3所示的实施例有所不同。例如,虽然图3所示的顶点着色器312以及片段着色器334为两个独立的功能模块,在一些实施例中,顶点着色器312以及片段着色器334的操作可以由相同的硬件(例如,作为图2所示的基于指令的计算模块220的可编程的统一着色器)执行。其余的功能模块的操作可由图2中的固定功能管线模块230来执行。
图4为根据本发明实施例的执行于GPU缓存(例如第一L1缓存224、第二L1缓存234以及L2缓存126中任何一个)上的操作400的概述示意图。操作400可以由GPU缓存中的电路来执行,或由耦接到GPU缓存的电路来执行,或可由可存取GPU缓存的电路来执行。虽然图4所示的操作400是基于回写策略(write-back policy),但是不同的写入策略,例如:直写(write-through)或是回写与直写的变形(a variant of write-back or write-through)都可被使用。此外,操作400的描述已被简化以集中于GPU缓存操作的高阶概念上。进一步的细节将于后续结合图5进行说明。
当GPU缓存接收存储器请求(步骤401)时,操作400开始。GPU缓存可以对包含于存储器请求中的地址执行地址转换,也可以不对包含于存储器请求中的地址执行地址转换;是否执行地址转换的操作是取决于特定的缓存以及存储器请求中的地址类型。对于第一L1缓存224以及L2缓存126,当存储器请求中包括虚拟地址时,执行地址转换,且将虚拟地址转换为物理地址(步骤402)。然而,对于L2缓存126,当存储器请求包含物理地址时,不需执行地址转换。另一方面,对于第二L1缓存234,不需执行地址转换。这是因为第二L1缓存234的存储器请求包含虚拟地址,以及第二L1缓存234中的所有存储器存取都是在虚拟地址空间中执行。
如果存储器请求为读取请求,对所请求的地址执行命中/未命中(hit/miss)测试(步骤403)。如果读取请求命中了,则GPU缓存从所请求的地址读取数据,并返回读取的数据(步骤406)。如果读取请求没有命中,则GPU缓存首先识别要替代的一个缓存线(步骤404)。识别要替代哪一个缓存线以及如何进行替代的细节是由缓存所选择的替代策略(replacement policy)来决定的,且此处不再做描述。然后,GPU缓存从较低的存储器(lower memory)请求数据,并读取该数据到所识别的缓存线(步骤405)。在一个实施例中,对于第一L1缓存224以及第二L1缓存234,较低的存储器是L2缓存126;对于L2缓存126,较低的存储器是***存储器130。于备选实施例中,其具有多于两个等级的缓存,较低的存储器是指等级更接近于***存储器130的缓存,或指***存储器自身。接着,GPU缓存返回所读取的数据(步骤406)。
类似地,对于写入请求,对所请求的地址执行命中/未命中测试(步骤407)。如果命中了,GPU缓存写入新的数据到GPU缓存中(步骤409),覆盖所请求的地址中旧的数据。如果未命中,GPU缓存首先识别要代替的一个缓存线(步骤408)。识别要替代哪一个缓存线以及如何进行替代的细节是由缓存所选择的替代策略来决定的,且此处不再做描述。接着,GPU缓存写入新的数据到所识别的缓存线(步骤409)。
图5为根据本发明实施例的执行图4中支持窥探的操作400的GPU 120的进一步的细节框图。需要理解的是,图4中的操作400是作为示例的作用;图5中的GPU 120可以执行不同于图4中所示的操作。再参考图1,图5所示的GPU核心125可以是图1所示的任一GPU核心125。
在一个实施例中,异构***100所提供的窥探硬件支持GPU窥探。窥探硬件为异构***100的其余部分提供缓存线的状态以及内容。在一个实施例中,窥探硬件包括:窥探滤波器520、窥探控制器510以及窥探控制器530。
在一个实施例中,窥探滤波器520保持追踪哪些缓存线存在于该缓存中。更具体地,对于每个由窥探滤波器520监视的缓存,窥探滤波器520储存物理标签(physical tag)(每个物理标签是物理地址的一部分)或储存存在于缓存中的所有缓存线的每个物理标签的一部分。于图5的示例中,窥探滤波器520可以储存每个GPU核心125的第一L1缓存224的所有缓存线的物理标签,以及L2缓存126中所有缓存线的物理标签。因此,窥探滤波器520可以通知任一CPU核心115,GPU 120中的哪一个缓存或哪一些缓存持有(hold)所请求的数据备份。虽然所示出的窥探滤波器520位于GPU 120内,在一些实施例中,窥探滤波器520可以集中地位于异构***100中,例如,位于缓存一致性互连140内;或可以分布式地位于异构***100中,例如,于每个CPU群集110以及GPU 120中,或于每个CPU核心115以及GPU核心125中。
当窥探滤波器520指示缓存线存在于第一L1缓存224中时,存储器请求经由窥探控制器510转发到第一L1缓存224。窥探控制器510执行,或指示第一L1缓存224执行基于其缓存线状态的窥探命中/未命中测试。术语“窥探命中/未命中测试”、“命中/未命中测试”、以及”缓存命中/未命中测试”都是指缓存上的测试,以确定缓存线是否存在。然而,术语“窥探命中/未命中测试”明确地指示请求发起者(originator)位于GPU 120外部,例如,CPU核心115中的一个。
第一L1缓存224保持,或以其它方式存取,其所有缓存线的状态。在一个实施例中,缓存线的状态是使用MESI协议来追踪,以指示是否每个缓存线被修改(M),只具有一个***存储器130外部的有效的备份(E),具有由多个缓存共享的多个有效的备份(S),或已经失效(I)。备选协议也可被使用,例如,MOESI协议,其中,附加的状态(O)表示修改以及共享的数据。窥探命中/未命中测试的结果会发回给请求发起者,例如,CPU核心115中的一个。窥探命中/未命中测试的结果可包含一个命中或未命中信号(例如,1个比特),如果窥探命中,则还可包括所请求的数据。术语“窥探命中”、“命中”以及”缓存命中”都是指所请求的缓存线是存在的确定。然而,术语”窥探命中”明确地指示请求发起者位于GPU 120外部,例如,CPU核心115中的一个。命中或未命中信号还可通过窥探控制器510转发到窥探滤波器520以更新其记录。类似地,窥探控制器530执行,或指示L2缓存126执行基于其缓存线的状态的窥探命中/未命中测试。窥探控制器510以及窥探控制器530发送第一L1缓存224以及L2缓存126之间的缓存线信息,以及第一L1缓存224及L2缓存126以及窥探滤波器520之间的缓存线信息。
更具体地,当另一处理核心(例如,任一CPU核心115)根据窥探滤波器520请求位于GPU 120的数据备份时,所请求的数据的物理标签可以分别经由窥探控制器510以及窥探控制器530转发到第一L1缓存224以及L2缓存126,以执行窥探命中/未命中测试。在一个实施例中,每一个L1缓存224的写入都会写入到L2缓存126,窥探命中/未命中测试可以仅于L2缓存126被执行,且测试结果可以经由窥探控制器530以及窥探滤波器520转发到请求发起者。在一些实施例中,窥探控制器510以及窥探控制器530的全部或部分硬件可以位于GPU核心125外部,但是位于GPU 120内部。在一些实施例中,窥探控制器510以及窥探控制器530硬件的全部或一部分可以集中地位于异构***100内,例如,于缓存一致性互连140内。
当第一L1缓存224从GPU核心125(更具体地,从基于指令的计算模块220)接收到存储器请求,其将请求中的虚拟地址转换为物理地址。物理地址需要存取第一L1缓存224,因为其SRAM 513是使用物理地址的一部分来索引。
为了地址转换,第一L1缓存224包括转换旁视缓存区(translation look-asidebuffer,TLB)511,或以其它方式使用TLB 511,其中,TLB 511储存虚拟地址以及对应物理地址之间的映射。TLB 511作为第一等级地址转换器(first-leveladdress translator)用于储存页表(page table)中的少数条目(few entries),包括最有可能被参考的那些转换(例如,最近使用的转换或基于替代策略所储存的转换)。如果地址转换不能在TLB 511中被找到,未命中地址信号从TLB 511发送到联合TLB 540。联合TLB 540作为第二等级地址转换器,用于储存包括附加的地址转换的页表数据。联合TLB 540由第一L1缓存224以及L2缓存126共同使用。联合TLB 540,TLB 511(第一L1缓存224)以及TLB 532(L2缓存126)总称为存储器管理单元(memory management unit,MMU)。如果联合TLB 540也没有所请求的地址转换,其发送通过缓存一致性互连140的未命中地址信号到存储器控制器150,其从***存储器130检索(retrieve)包括所请求的地址转换的页表数据,或从用于联合TLB 540的异构***100的其他部分检索包括所请求的地址转换的页表数据。接着,联合TLB 540将所请求的地址转换转发到TLB 511。
物理地址的一部分,也被称作物理标签,用于执行命中/未命中测试以确定SRAM 513中是否存在具有物理标签的有效的数据。命中/未命中测试单元512(图中简称为:命中/未命中测试512)包括用于比较所请求的物理标签以及储存于SRAM 513内的缓存线的标签的硬件,以确定所请求的数据的存在。命中/未命中测试单元512也保持或存取第一L1缓存224的缓存线的状态。此状态被用于确定缓存线所包括的所请求的数据是否有效。如果具有所请求的物理标签的有效的缓存线存在于SRAM 513中(即,命中),由所请求的索引(其也是物理地址的一部分)指向的缓存线被从SRAM 513中检索,以获得所请求的数据。数据的备份被发送给请求发起者,其可以是基于指令的计算模块220、另一GPU核心125、或异构***100中的任何CPU核心115。
在一个实施例中,如果SRAM 513不包含具有所请求的物理标签的有效的数据备份,未命中的报告经由窥探控制器510报告回窥探滤波器520。于读取未命中的情况下,第一L1缓存224将物理地址转发到L2缓存126,以继续寻找所请求的数据。在由第一L1缓存224执行图4所示的步骤404到步骤405的操作的实施例中,SRAM 513的缓存线根据替代策略被确定用于替换,且后续从L2缓存126或异构***100的其他部分找到的所请求的数据被读到所确定的缓存线。如上所述在命中的情况下,所请求的数据被返回给请求发起者。如上所述,如果使用的写入策略不同,第一L1缓存224的操作可能会不同。
当L2缓存126从一个GPU核心125的第一L1缓存224或第二L1缓存234接收存储器请求时,需要做出是否需要地址转换的决定。在一个实施例中,为了正确地路由(route)存储器请求,L2缓存126包括虚拟输出序列(virtual outputqueue,VOQ)531,虚拟输出序列531中,来自第一L1缓存224以及第二L1缓存234的存储器请求被彼此区分。在一个实施例中,VOQ 531对每个所接收的存储器请求使用一个比特来指示请求是否包含虚拟地址(如果请求来自第二L1缓存234)或物理地址(如果请求来自第一L1缓存224)。包括物理地址的请求可以绕开(bypass)地址转换。类似于第一L1缓存224,L2缓存126也包括TLB 532,命中/未命中测试单元533(图中简称为命中/未命中测试533),SRAM 534以及窥探控制器530,其执行的操作分别与第一L1缓存224中的TLB511、命中/未命中测试单元512、SRAM 513以及窥探控制器510执行的操作相同。特别地,命中/未命中测试单元533也保持或存取L2缓存126中缓存线的状态。此状态被用于确定L2缓存126中的缓存线是否有效。
在一个实施例中,L2缓存126独占(inclusive)第一L1缓存224,即,L2缓存126独占第一L1缓存224中的所有缓存线。即,第一L1缓存224中的所有缓存线也位于L2缓存126中。第一L1缓存224中的缓存线被替换,L2缓存126被通知关于来自第一L1缓存224的缓存线的移除(removal)以及所替换的缓存线的存在。当L2缓存126中的缓存线被替换,第一L1缓存224中的对应缓存线(即,具有相同物理标签的缓存线)是无效的。缓存线的状态的更新可以经由窥探控制器510以及窥探控制器530于第一L1缓存224以及L2缓存126之间通信。一般而言,此“独占”增强了缓存的性能。在一实施例中,使用了MESI协议,第一L1缓存224以及L2缓存126可以具有下表中MESI状态的组合:
L1 States I I E M S I E M S I S
L2 States I E E E E M M M M S S
以上“独占”没有被应用于第二L1缓存234:一般而言,并不是所有的第二L1缓存234的缓存线都包含于L2缓存126中。于备选实施例中,第一L1缓存224以及L2缓存126都可使用缓存一致性协议(例如,MESI或MEOSI)来追踪或存取其相应的缓存线的状态,但是L2缓存126不会独占第一L1缓存224。
图5所示的实施例也显示了耦接于窥探滤波器520、L2缓存126以及联合TLB 540的仲裁器550。仲裁器550在总线争用的情况下,控制哪一个硬件能与缓存一致性互连140相通信。
如上所述,第二L1缓存234不支持窥探。第二L1缓存234从固定功能管线模块230接收存储器请求。这些存储器请求中的每一个都包含虚拟地址。因为第二L1缓存234使用虚拟标签(其为虚拟地址的一部分)来存取其内部SRAM,所以不需要为了缓存存取而进行地址转换。然而,因为异构***100追踪物理地址空间中的缓存线状态,其不追踪第二L1缓存234的缓存线状态。CPU核心115从第二L1缓存234中获取数据备份的一个方式是刷新所有或预定义的范围的第二L1缓存234到***存储器130。接着,第二L1缓存234中已经刷新的缓存线被无效。因此,第二L1缓存234的数据一致性相对于异构处理器之间的数据传输所涉及(即,刷新)的缓存线的数量是粗粒度的。与此相反,第一L1缓存224以及L2缓存126的数据一致性是细粒度(fine-grained)的,因为所请求的缓存线或数据条目可以通过参考其物理地址于异构处理器之间传输。
需要理解的是,于备选实施例中,图5所示的某些硬件元件可位于与图5中所示位置的不同位置。例如,TLB 511、命中/未命中测试单元512、以及窥探控制器510的一个或多个可位于第一L1缓存224的外部,并耦接于第一L1缓存224。类似地,VOQ 531、TLB 532、命中/未命中测试单元533、以及窥探控制器530中的一个或多个可位于L2缓存126的外部,并耦接于L2缓存126。
此外,虽然术语“第一L1缓存”、“第二L1缓存”以及“L2缓存”用于整个说明书中,需要理解的是,这些缓存中的每个可包含多于一个等级的缓存。此外,这些缓存可包含相同或不同等级的缓存。例如,第一L1缓存以及第二L1缓存可以各自包含两个等级的缓存,且L2缓存可包含一个等级的缓存。不论缓存中包含几个等级,缓存的特性(例如,是否支持窥探)都将传递到所有其包含的缓存的等级中。
图6为根据本发明实施例的每个GPU缓存包含一个或多个等级缓存的示意图。在本实施例中,第一L1缓存224,第二L1缓存234以及L2缓存126分别包含m,n以及k个等级的缓存,其中,m,n以及k可以是任何正整数。第一L1缓存224中的所有m个等级的缓存都支持窥探,且L2缓存126中的所有k个等级的缓存都支持窥探,而第二L1缓存234中的所有n个等级的缓存都不支持窥探。关于先前描述的第一L1缓存224、第二L1缓存234以及L2缓存126的相同操作将分别由其所包含的多个等级的缓存来执行。
图7为根据本发明实施例的处理单元的处理方法700的流程图,其中,处理单元包括一个或多个第一核心,并共用异构计算***中具有一个或多个第二核心的***存储器。请参考图7,处理方法700开始于接收第一缓存存取请求,其中,第一缓存存取请求是通过耦接于第一核心的基于指令的计算模块的第一L1缓存接收,其中,第一L1缓存支持被一个或多个第二核心窥探(步骤701)。处理方法700还包括通过耦接于第一核心的固定功能管线模块的第二L1缓存接收第二缓存存取请求,其中,第二L1缓存不支持窥探(步骤702)。处理方法700还包括通过由一个或多个第一核心共用的L2缓存从第一L1缓存中接收第一缓存存取请求,且从第二L1缓存中接收第二缓存存取请求,其中,L2缓存支持被一个或多个第二核心窥探(步骤703)。
处理方法700可以由硬件(例如,电路、专属逻辑、可编程逻辑、微码等)、软件(例如,处理装置上运行的指令)、或其组合来执行。在一个实施例中,处理方法700由图1、图2以及图5中所示的异构***100中的GPU 120来执行。在一个实施例中,异构***100可以是移动计算和/或通信装置(例如,智能电话,平板电脑,笔记本电脑等)的一部分。在一个实施例中,异构***100可以是云计算***的一部分。在一个实施例中,处理方法700可由任何类型的处理器来执行,包括:异构***100中的第一L1缓存224、第二L1缓存234以及L2缓存126(图2以及图5中)。
图4以及图7所示的流程图中的操作已经参考图1、图2以及图5的示范性实施例做了描述。然而,应该理解的是,本发明实施例的图4以及图7的流程图的操作可以不同于关于图1、图2以及图5中所讨论的,且关于图1、图2以及图5所讨论的实施例可以执行不同于关于图4以及图7所示的流程图所讨论的操作。而由本发明的某些实施例执行的图4以及图7所示的流程图显示了特定的操作顺序,应该理解的是,这样的操作顺序是示范性的(例如,备选实施例可以以不同的操作顺序来操作,可以组合某些操作,可以重叠某些操作等)。
本发明虽以较佳实施例揭露如上,然其并非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当视权利要求所界定者为准。

Claims (22)

1.一种处理单元,其特征在于,包括:
一个或多个第一核心,其中,所述一个或多个第一核心以及一个或多个第二核心是异构计算***的一部分,并共用***存储器,以及其中,所述第一核心中的每一个还包括:
第一L1缓存,耦接于所述第一核心的基于指令的计算模块,以接收第一缓存存取请求,其中,所述第一L1缓存支持被所述一个或多个第二核心窥探;以及
第二L1缓存,耦接于所述第一核心的固定功能管线模块,以接收第二缓存存取请求,其中,所述第二L1缓存不支持窥探;以及
L2缓存,由所述一个或多个第一核心共用,所述L2缓存耦接于所述第一L1缓存以及所述第二L1缓存,其中,所述L2缓存支持被所述一个或多个第二核心窥探,以及其中,所述L2缓存从所述第一L1缓存接收所述第一缓存存取请求,以及从所述第二L1缓存接收所述第二缓存存取请求。
2.如权利要求1所述的处理单元,其特征在于,为所述第一L1缓存以及所述L2缓存中的每个提供缓存线的一致性状态以供所述一个或多个第二核心读取。
3.如权利要求2所述的处理单元,其特征在于,所述第一L1缓存以及所述L2缓存的每个包括基于所述一致性状态来执行缓存命中/未命中测试的电路。
4.如权利要求1所述的处理单元,其特征在于,所述第一L1缓存包括一个或多个等级的缓存层次,以及所述第二L1缓存包括一个或多个等级的缓存层次。
5.如权利要求1所述的处理单元,其特征在于,所述第一L1缓存使用从虚拟地址转换得到的物理地址处理缓存存取请求。
6.如权利要求1所述的处理单元,其特征在于,所述第二L1缓存使用虚拟地址处理缓存存取请求。
7.如权利要求1所述的处理单元,其特征在于,所述L2缓存包括硬件逻辑,用以区分从所述第一L1缓存所接收的物理地址以及从所述第二L1缓存所接收的虚拟地址,以及旁路对所述物理地址的地址转换。
8.如权利要求1所述的处理单元,其特征在于,所述第一L1缓存在窥探缓存命中的情况下提供缓存线以供所述一个或多个第二核心读取,以及所述第二L1缓存刷新缓存线的至少一范围到所述***存储器以供所述一个或多个第二核心读取。
9.如权利要求1所述的处理单元,其特征在于,还包括:
窥探控制硬件,将缓存存取请求从第二核心转发到所述第一L1缓存以及所述L2缓存中的至少一个,以及将由所述第一L1缓存以及所述L2缓存中的所述至少一个执行的窥探命中/未命中测试的结果转发至所述第二核心。
10.如权利要求1所述的处理单元,其特征在于,每个所述第一核心是图形处理单元的核心。
11.如权利要求1所述的处理单元,其特征在于,每个所述第一核心是数字信号处理器的核心。
12.一种处理单元的处理方法,所述处理单元包括一个或多个第一核心并共用异构计算***中具有一个或多个第二核心的***存储器,所述方法包括:
通过耦接于第一核心的基于指令的计算模块的第一L1缓存接收第一缓存存取请求,其中,所述第一L1缓存支持被所述一个或多个第二核心窥探;
通过耦接于所述第一核心的固定功能管线模块的第二L1缓存接收第二缓存存取请求,其中,所述第二L1缓存不支持窥探;以及
通过由所述一个或多个第一核心共用的L2缓存从所述第一L1缓存接收所述第一缓存存取请求,以及从所述第二L1缓存接收所述第二缓存存取请求,其中,所述L2缓存支持被所述一个或多个第二核心窥探。
13.如权利要求12所述的处理单元的处理方法,其特征在于,还包括:
提供为所述第一L1缓存以及所述L2缓存中的每个提供缓存线的一致性状态,以供所述一个或多个第二核心进行读取。
14.如权利要求13所述处理单元的处理方法,其特征在于,还包括:
基于所述一致性状态,于所述第一L1缓存以及所述L2缓存的每一个上执行缓存命中/未命中测试。
15.如权利要求12所述处理单元的处理方法,其特征在于,所述第一L1缓存包括一个或多个等级的缓存层次,以及所述第二L1缓存包括一个或多个等级的缓存层次。
16.如权利要求12所述处理单元的处理方法,其特征在于,还包括:
处理使用从虚拟地址转换得到的物理地址存取所述第一L1缓存的请求。
17.如权利要求12所述处理单元的处理方法,其特征在于,还包括:
处理使用虚拟地址存取所述第二L1缓存的请求。
18.如权利要求12所述处理单元的处理方法,其特征在于,还包括:
区分通过所述L2缓存从所述第一L1缓存所接收的物理地址以及通过所述L2缓存从所述第二L1缓存所接收的虚拟地址;以及
旁路对所述物理地址的地址转换。
19.如权利要求12所述处理单元的处理方法,其特征在于,还包括:
所述第一L1缓存在窥探缓存命中的情况下提供缓存线以供所述一个或多个第二核心读取;以及
从所述第二L1缓存刷新缓存线的至少一范围到所述***存储器以供所述一个或多个第二核心读取。
20.如权利要求12所述处理单元的处理方法,其特征在于,还包括:
通过窥探控制硬件从第二核心转发缓存存取请求到所述第一L1缓存以及所述L2缓存中的至少一个;以及
通过所述窥探控制硬件将所述第一L1缓存以及所述L2缓存的所述至少一个执行的窥探命中/未命中测试的结果转发到所述第二核心。
21.如权利要求12所述处理单元的处理方法,其特征在于,每个所述第一核心是图形处理单元的核心。
22.如权利要求12所述处理单元的处理方法,其特征在于,每个所述第一核心是数字信号处理器的核心。
CN201510330215.4A 2015-01-21 2015-06-15 处理单元及其处理方法 Withdrawn CN106201980A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/601,565 US20160210231A1 (en) 2015-01-21 2015-01-21 Heterogeneous system architecture for shared memory
US14/601,565 2015-01-21

Publications (1)

Publication Number Publication Date
CN106201980A true CN106201980A (zh) 2016-12-07

Family

ID=52813917

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510330215.4A Withdrawn CN106201980A (zh) 2015-01-21 2015-06-15 处理单元及其处理方法

Country Status (3)

Country Link
US (1) US20160210231A1 (zh)
EP (1) EP3048533B1 (zh)
CN (1) CN106201980A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018201967A1 (zh) * 2017-05-05 2018-11-08 华为技术有限公司 一种存储处理方法及装置
CN110235112A (zh) * 2017-02-08 2019-09-13 Arm有限公司 高速缓存略过
CN111158907A (zh) * 2019-12-26 2020-05-15 深圳市商汤科技有限公司 数据处理方法及装置、电子设备和存储介质

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6468121B2 (ja) * 2015-08-17 2019-02-13 富士通株式会社 演算処理装置および演算処理装置の制御方法
US10157133B2 (en) 2015-12-10 2018-12-18 Arm Limited Snoop filter for cache coherency in a data processing system
US9900260B2 (en) 2015-12-10 2018-02-20 Arm Limited Efficient support for variable width data channels in an interconnect network
US9990292B2 (en) * 2016-06-29 2018-06-05 Arm Limited Progressive fine to coarse grain snoop filter
US10733695B2 (en) * 2016-09-16 2020-08-04 Intel Corporation Priming hierarchical depth logic within a graphics processor
US10540280B2 (en) * 2016-12-23 2020-01-21 Advanced Micro Devices, Inc. High-speed selective cache invalidates and write-backs on GPUS
US10042766B1 (en) 2017-02-02 2018-08-07 Arm Limited Data processing apparatus with snoop request address alignment and snoop response time alignment
US11422938B2 (en) * 2018-10-15 2022-08-23 Texas Instruments Incorporated Multicore, multibank, fully concurrent coherence controller
US11508031B2 (en) * 2020-12-16 2022-11-22 Samsung Electronics Co., Ltd. Warping data
CN117217977A (zh) * 2023-05-26 2023-12-12 摩尔线程智能科技(北京)有限责任公司 Gpu的数据访问处理方法、装置及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095672A1 (en) * 2003-06-30 2006-05-04 Microsoft Corporation System and method for parallel execution of data generation tasks
CN101958834A (zh) * 2010-09-27 2011-01-26 清华大学 支持高速缓存一致的片上网络***及数据请求方法
CN101978359A (zh) * 2008-03-28 2011-02-16 英特尔公司 在不同高速缓存一致性域之间共享信息的技术
US20140040552A1 (en) * 2012-08-06 2014-02-06 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
CN104067246A (zh) * 2012-01-10 2014-09-24 高通股份有限公司 通过物理地址进行的非分配存储器存取
CN104160420A (zh) * 2012-03-07 2014-11-19 高通股份有限公司 在图形处理单元上执行图形和非图形应用

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6115795A (en) * 1997-08-06 2000-09-05 International Business Machines Corporation Method and apparatus for configurable multiple level cache with coherency in a multiprocessor system
US9760498B2 (en) * 2014-09-26 2017-09-12 Qualcomm Incorporated Hybrid cache comprising coherent and non-coherent lines

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060095672A1 (en) * 2003-06-30 2006-05-04 Microsoft Corporation System and method for parallel execution of data generation tasks
CN101978359A (zh) * 2008-03-28 2011-02-16 英特尔公司 在不同高速缓存一致性域之间共享信息的技术
CN101958834A (zh) * 2010-09-27 2011-01-26 清华大学 支持高速缓存一致的片上网络***及数据请求方法
CN104067246A (zh) * 2012-01-10 2014-09-24 高通股份有限公司 通过物理地址进行的非分配存储器存取
CN104160420A (zh) * 2012-03-07 2014-11-19 高通股份有限公司 在图形处理单元上执行图形和非图形应用
US20140040552A1 (en) * 2012-08-06 2014-02-06 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110235112A (zh) * 2017-02-08 2019-09-13 Arm有限公司 高速缓存略过
CN110235112B (zh) * 2017-02-08 2023-11-10 Arm有限公司 用于高速缓存略过的方法和装置
WO2018201967A1 (zh) * 2017-05-05 2018-11-08 华为技术有限公司 一种存储处理方法及装置
CN111158907A (zh) * 2019-12-26 2020-05-15 深圳市商汤科技有限公司 数据处理方法及装置、电子设备和存储介质
CN111158907B (zh) * 2019-12-26 2024-05-17 深圳市商汤科技有限公司 数据处理方法及装置、电子设备和存储介质

Also Published As

Publication number Publication date
EP3048533A1 (en) 2016-07-27
US20160210231A1 (en) 2016-07-21
EP3048533B1 (en) 2017-02-01

Similar Documents

Publication Publication Date Title
CN106201980A (zh) 处理单元及其处理方法
US10078590B2 (en) Technique to share information among different cache coherency domains
US8782348B2 (en) Microprocessor cache line evict array
US7552288B2 (en) Selectively inclusive cache architecture
US7305522B2 (en) Victim cache using direct intervention
US8015365B2 (en) Reducing back invalidation transactions from a snoop filter
CN102103547B (zh) 替换高速缓冲存储器中的高速缓存行
US6304945B1 (en) Method and apparatus for maintaining cache coherency in a computer system having multiple processor buses
US7305523B2 (en) Cache memory direct intervention
CN100356348C (zh) 一种支持处理器的功率操作模式的高速缓存存储器
US9304923B2 (en) Data coherency management
US20070136535A1 (en) System and Method for Reducing Unnecessary Cache Operations
US20120102273A1 (en) Memory agent to access memory blade as part of the cache coherency domain
CA2674723A1 (en) Snoop filtering using a snoop request cache
US6560681B1 (en) Split sparse directory for a distributed shared memory multiprocessor system
GB2444818A (en) Line swapping scheme to reduce back invalidations in a snoop filter
US7117312B1 (en) Mechanism and method employing a plurality of hash functions for cache snoop filtering
US11526449B2 (en) Limited propagation of unnecessary memory updates
US7024520B2 (en) System and method enabling efficient cache line reuse in a computer system
US8473686B2 (en) Computer cache system with stratified replacement
US6950906B2 (en) System for and method of operating a cache
CN106339330B (zh) 高速缓存刷新的方法及***
US6965972B2 (en) Real time emulation of coherence directories using global sparse directories
US6240487B1 (en) Integrated cache buffers
EP0936556A2 (en) Cache coherency protocol including a hovering state (HR)

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20161207