处理单元及其处理方法与流程

文档序号:11950141阅读:540来源:国知局
本发明是关于异构计算系统技术,特别关于一种处理单元及其处理方法。
背景技术
::在多处理器系统中,每个处理器具有其自有的缓存以储存也在系统存储器中储存的数据的备份。当缓存中的多个数据备份不一致(即,具有不同的值)时,就会出现问题。发展出了各种不同的技术来确保多处理器系统中的数据一致性。一个技术是窥探(snooping),其记录包含于储存器事务(memorytransaction)中的缓存线(cacheline)的一致性状态(也被称作“状态”)。“缓存线”(也被称作“线”)是关于缓存中的固定大小的数据区块(fixed-sizedatablock),其是系统存储器以及缓存之间的数据传输的基础单元。缓存线的状态指示缓存线是否被修改,是否在系统存储器外部具有一个或多个有效的备份,是否已经失效等。异构计算系统是多处理器系统的一种类型。异构计算系统是一种包含多个类型的处理器的计算系统,上述多个类型的处理器以串联的方式工作来执行计算任务。例如,异构计算系统可包含一个或多个中央处理单元(centralprocessingunit,CPU),一个或多个图形处理单元(graphicsprocessingunit,GPU),一个或多个数字信号处理器(digitalsignalprocessor,DSP)等。在传统的异构计算系统中,通常没有对全部不同的处理器类型的数据一致性的硬件支持。这样的支持的缺乏会使得不同的处理器类型难以共用公共系统存储器空间。因此,典型的不同类型的处理器之间的数据传输需要涉及到存储 器备份。于某些系统中,CPU在系统存储器中存取数据,而GPU在单独的图形存储器中存取数据。为了从系统存储器中读取数据,首先,GPU通过存储器控制器从CPU请求数据备份。接着,GPU通过直接存储器存取(directmemoryaccess,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为根据本发明实施例的处理单元的处理方法的流程图。【具体实施方式】下面的描述是实施本发明的较佳预期模式。这种描述是为了说明本发明的 一般原理的目的,而不应被理解成具有限制性的意义。但是应当理解,实施例可以利用软件、硬件、固件、或其任何组合来实现。在以下的描述中,阐述了很多具体细节。然而,可以理解的是,本发明的实施例可以在没有这些具体细节的情况下实施。在其它实例中,公知的电路、结构以及技术没有被详细的示出,以便不模糊对此描述的理解。然而,本领域的普通技术人员可以理解的是,本发明可以在没有这些具体细节的情况下实施。本领域的普通技术人员利用所包括的描述,无需过多的实验就能够实现适当的功能。本发明是关于异构计算系统(heterogeneouscomputingsystem);更具体地,是关于使用共用存储器(sharedmemory)的异构计算系统的数据一致性(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群集(CPUcluster)110,且每个CPU群集110还包含一 个或多个CPU核心115。异构系统100也包括GPU120,GPU120还包含一个或多个GPU核心125。CPU群集110以及GPU120都可经由缓存一致性互连140以及存储器控制器150对系统存储器130(例如,动态随机存取存储器或其它易失性或非易失性随机存取存储器)进行存取。在一个实施例中,缓存一致性互连140以及存储器控制器150之间的通信链路,以及存储器控制器150以及系统存储器130之间的通信链路,使用高性能,高时钟频率协议;例如,高级可扩展接口(AdvancedeXtensibleInterface,AXI)协议。在一个实施例中,CPU群集110以及GPU120都使用支持全系统一致性的协议(例如:AXI一致性扩展(AXICoherencyExtensions,ACE)协议)与缓存一致性互连140进行通信。虽然如图1所示,异构系统100包括两个CPU群集110(每个CPU群集110具有两个CPU核心115)以及一个GPU120(具有两个GPU核心125),需要理解的是,异构系统100可包含任何数量的具有任何数量的CPU核心115的CPU群集110,以及具有任何数量的GPU核心125的任何数量的GPU120。图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为根据本发明实施例的GPU120的方框示意图。在本实施例中,每个GPU核心125包括:命令引擎210,基于指令的计算模块220,以及固定功能管线模块230。命令引擎210接收以及发送命令到适当的处理模块。基于指令的计算模块220是执行预定义的指令集中的指令的可编程计算模块。固定功能管线模块230用于图形管线处理最优化的专用硬件。基于指令的计算模块220以及固定功能管线模块230都在虚拟地址空间执行计算。基于指令的计算模块220操作于第一等级1的(1stlevel-1,以下简称为第一L1)缓存224,其用于通用计算以及可编程图形计算;且固定功能管线模块230操作于第二L1缓存234,其用于固定功能图形管线计算。于GPU120内部且在GPU核心125外部是由GPU核心125共用的L2缓存126。第一L1缓存224、第二L1缓存234以及L2缓存126中的数据可以是系统存储器130中的数据的影子备份(shadowcopy)或更新的备份(newercopy)。根据本发明的实施例,第一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-physicaladdresstranslation)的情况下,作用于这些存储器请求的虚拟地址。图3为根据本发明实施例的GPU核心300的功能模块的示意图。GPU核心300是图1以及图2中所示的GPU核心125的一个示例。在一个实施例中,GPU核心300包括:分级引擎(binningengine)310,分级缓存区(binbuffer)320以及渲染引擎(renderingengine)330。分级引擎320还包含:顶点加载单元(vertexloadunit)311,顶点着色器(vertexshader)312,修剪选择单元(clipandcullunit)313,设置单元314,以及分级储存单元315。顶点加载单元311加载顶点数据到分级引擎320以进行分级,其中,顶点数据描述将被渲染的图形对象。分级是在本领域中公知的用于减少存储器I/O负荷的延迟渲染技术。顶点着色器312、修剪选择单元313以及设置单元314处理并设置顶点数据。分级储存单元315将顶点数据分类到对应分级,并根据分级数据结构将每个分级储存到分级缓存区320。渲染引擎330包括分级加载单元331,变化的加载单元(varyingloadunit)332,区块切割器(rasterizer)333,片段着色器(fragmentshader)334以及渲染输出(renderoutput,以下简称为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-backpolicy),但是不同的写入策略,例如:直写(write-through)或是回写与直写的变形(avariantofwrite-backorwrite-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)。识别要替代哪一个缓存线以及如何进行替代的细节是由缓存所选择的替代策略(replacementpolicy)来决定的,且此处不再做描述。然后,GPU缓存从较低的存储器(lowermemory)请求数据,并读取该数据到所识别的缓存线(步骤405)。在一个实施例中,对于第一L1缓存224以及第二L1缓存234,较低的存储器是L2缓存126;对于L2缓存126,较低的存储器是系统存储器130。于备选实施例中,其具有多于两个等级的缓存,较低的存储器是指等级更接近于系统存储器130的缓存,或指系统存储器自身。接着,GPU缓存返回所读取的数据(步骤406)。类似地,对于写入请求,对所请求的地址执行命中/未命中测试(步骤407)。如果命中了,GPU缓存写入新的数据到GPU缓存中(步骤409),覆盖所请求的地址中旧的数据。如果未命中,GPU缓存首先识别要代替的一个缓存线(步骤408)。识别要替代哪一个缓存线以及如何进行替代的细节是由缓存所选择的替代策略来决定的,且此处不再做描述。接着,GPU缓存写入新的数据到所识别的缓存线(步骤409)。图5为根据本发明实施例的执行图4中支持窥探的操作400的GPU120的进一步的细节框图。需要理解的是,图4中的操作400是作为示例的作用;图5中的GPU120可以执行不同于图4中所示的操作。再参考图1,图5所示的GPU核心125可以是图1所示的任一GPU核心125。在一个实施例中,异构系统100所提供的窥探硬件支持GPU窥探。窥探硬件为异构系统100的其余部分提供缓存线的状态以及内容。在一个实施例中,窥探硬件包括:窥探滤波器520、窥探控制器510以及窥探控制器530。在一个实施例中,窥探滤波器520保持追踪哪些缓存线存在于该缓存中。更具体地,对于每个由窥探滤波器520监视的缓存,窥探滤波器520储存物理标签(physicaltag)(每个物理标签是物理地址的一部分)或储存存在于缓存中的所有缓存线的每个物理标签的一部分。于图5的示例中,窥探滤波器520可以储存每个GPU核心125的第一L1缓存224的所有缓存线的物理标签,以及L2缓存126中所有缓存线的物理标签。因此,窥探滤波器520可以通知任一CPU核心115,GPU120中的哪一个缓存或哪一些缓存持有(hold)所请求的数据备份。虽然所示出的窥探滤波器520位于GPU120内,在一些实施例中,窥探滤波器520可以集中地位于异构系统100中,例如,位于缓存一致性互连140内;或可以分布式地位于异构系统100中,例如,于每个CPU群集110以及GPU120中,或于每个CPU核心115以及GPU核心125中。当窥探滤波器520指示缓存线存在于第一L1缓存224中时,存储器请求经由窥探控制器510转发到第一L1缓存224。窥探控制器510执行,或指示第一L1缓存224执行基于其缓存线状态的窥探命中/未命中测试。术语“窥探命中/未命中测试”、“命中/未命中测试”、以及”缓存命中/未命中测试”都是指缓存上的测试,以确定缓存线是否存在。然而,术语“窥探命中/未命中测试”明确地指示请求发起者(originator)位于GPU120外部,例如,CPU核心115中的一个。第一L1缓存224保持,或以其它方式存取,其所有缓存线的状态。在一个实施例中,缓存线的状态是使用MESI协议来追踪,以指示是否每个缓存线被修改(M),只具有一个系统存储器130外部的有效的备份(E),具有由多个缓存共享的多个有效的备份(S),或已经失效(I)。备选协议也可被使用,例如, MOESI协议,其中,附加的状态(O)表示修改以及共享的数据。窥探命中/未命中测试的结果会发回给请求发起者,例如,CPU核心115中的一个。窥探命中/未命中测试的结果可包含一个命中或未命中信号(例如,1个比特),如果窥探命中,则还可包括所请求的数据。术语“窥探命中”、“命中”以及”缓存命中”都是指所请求的缓存线是存在的确定。然而,术语”窥探命中”明确地指示请求发起者位于GPU120外部,例如,CPU核心115中的一个。命中或未命中信号还可通过窥探控制器510转发到窥探滤波器520以更新其记录。类似地,窥探控制器530执行,或指示L2缓存126执行基于其缓存线的状态的窥探命中/未命中测试。窥探控制器510以及窥探控制器530发送第一L1缓存224以及L2缓存126之间的缓存线信息,以及第一L1缓存224及L2缓存126以及窥探滤波器520之间的缓存线信息。更具体地,当另一处理核心(例如,任一CPU核心115)根据窥探滤波器520请求位于GPU120的数据备份时,所请求的数据的物理标签可以分别经由窥探控制器510以及窥探控制器530转发到第一L1缓存224以及L2缓存126,以执行窥探命中/未命中测试。在一个实施例中,每一个L1缓存224的写入都会写入到L2缓存126,窥探命中/未命中测试可以仅于L2缓存126被执行,且测试结果可以经由窥探控制器530以及窥探滤波器520转发到请求发起者。在一些实施例中,窥探控制器510以及窥探控制器530的全部或部分硬件可以位于GPU核心125外部,但是位于GPU120内部。在一些实施例中,窥探控制器510以及窥探控制器530硬件的全部或一部分可以集中地位于异构系统100内,例如,于缓存一致性互连140内。当第一L1缓存224从GPU核心125(更具体地,从基于指令的计算模块220)接收到存储器请求,其将请求中的虚拟地址转换为物理地址。物理地址需要存取第一L1缓存224,因为其SRAM513是使用物理地址的一部分来索引。为了地址转换,第一L1缓存224包括转换旁视缓存区(translationlook-asidebuffer,TLB)511,或以其它方式使用TLB511,其中,TLB511储存虚拟地址以及对应物理地址之间的映射。TLB511作为第一等级地址转换器(first-leveladdresstranslator)用于储存页表(pagetable)中的少数条目(fewentries),包括最有可能被参考的那些转换(例如,最近使用的转换或基于替代策略所储存的转换)。如果地址转换不能在TLB511中被找到,未命中地址信号从TLB511发送到联合TLB540。联合TLB540作为第二等级地址转换器,用于储存包括附加的地址转换的页表数据。联合TLB540由第一L1缓存224以及L2缓存126共同使用。联合TLB540,TLB511(第一L1缓存224)以及TLB532(L2缓存126)总称为存储器管理单元(memorymanagementunit,MMU)。如果联合TLB540也没有所请求的地址转换,其发送通过缓存一致性互连140的未命中地址信号到存储器控制器150,其从系统存储器130检索(retrieve)包括所请求的地址转换的页表数据,或从用于联合TLB540的异构系统100的其他部分检索包括所请求的地址转换的页表数据。接着,联合TLB540将所请求的地址转换转发到TLB511。物理地址的一部分,也被称作物理标签,用于执行命中/未命中测试以确定SRAM513中是否存在具有物理标签的有效的数据。命中/未命中测试单元512(图中简称为:命中/未命中测试512)包括用于比较所请求的物理标签以及储存于SRAM513内的缓存线的标签的硬件,以确定所请求的数据的存在。命中/未命中测试单元512也保持或存取第一L1缓存224的缓存线的状态。此状态被用于确定缓存线所包括的所请求的数据是否有效。如果具有所请求的物理标签的有效的缓存线存在于SRAM513中(即,命中),由所请求的索引(其也是物理地址的一部分)指向的缓存线被从SRAM513中检索,以获得所请求的数 据。数据的备份被发送给请求发起者,其可以是基于指令的计算模块220、另一GPU核心125、或异构系统100中的任何CPU核心115。在一个实施例中,如果SRAM513不包含具有所请求的物理标签的有效的数据备份,未命中的报告经由窥探控制器510报告回窥探滤波器520。于读取未命中的情况下,第一L1缓存224将物理地址转发到L2缓存126,以继续寻找所请求的数据。在由第一L1缓存224执行图4所示的步骤404到步骤405的操作的实施例中,SRAM513的缓存线根据替代策略被确定用于替换,且后续从L2缓存126或异构系统100的其他部分找到的所请求的数据被读到所确定的缓存线。如上所述在命中的情况下,所请求的数据被返回给请求发起者。如上所述,如果使用的写入策略不同,第一L1缓存224的操作可能会不同。当L2缓存126从一个GPU核心125的第一L1缓存224或第二L1缓存234接收存储器请求时,需要做出是否需要地址转换的决定。在一个实施例中,为了正确地路由(route)存储器请求,L2缓存126包括虚拟输出序列(virtualoutputqueue,VOQ)531,虚拟输出序列531中,来自第一L1缓存224以及第二L1缓存234的存储器请求被彼此区分。在一个实施例中,VOQ531对每个所接收的存储器请求使用一个比特来指示请求是否包含虚拟地址(如果请求来自第二L1缓存234)或物理地址(如果请求来自第一L1缓存224)。包括物理地址的请求可以绕开(bypass)地址转换。类似于第一L1缓存224,L2缓存126也包括TLB532,命中/未命中测试单元533(图中简称为命中/未命中测试533),SRAM534以及窥探控制器530,其执行的操作分别与第一L1缓存224中的TLB511、命中/未命中测试单元512、SRAM513以及窥探控制器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状态的组合:L1StatesIIEMSIEMSISL2StatesIEEEEMMMMSS以上“独占”没有被应用于第二L1缓存234:一般而言,并不是所有的第二L1缓存234的缓存线都包含于L2缓存126中。于备选实施例中,第一L1缓存224以及L2缓存126都可使用缓存一致性协议(例如,MESI或MEOSI)来追踪或存取其相应的缓存线的状态,但是L2缓存126不会独占第一L1缓存224。图5所示的实施例也显示了耦接于窥探滤波器520、L2缓存126以及联合TLB540的仲裁器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中所示位置的不同位置。例如,TLB511、命中/未命中测试单元512、以及窥探控制器510的一个或多个可位于第一L1缓存224的外部,并耦接于第一L1缓存224。类似地,VOQ531、TLB532、命中/未命中测试单元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中的GPU120来执行。在一个实施例中,异构系统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所示的流程图显示了特 定的操作顺序,应该理解的是,这样的操作顺序是示范性的(例如,备选实施例可以以不同的操作顺序来操作,可以组合某些操作,可以重叠某些操作等)。本发明虽以较佳实施例揭露如上,然其并非用以限定本发明的范围,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当视权利要求所界定者为准。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1