存储器单元和存储器单元处理操作请求的操作方法与流程

文档序号:17286483发布日期:2019-04-03 03:36阅读:202来源:国知局
存储器单元和存储器单元处理操作请求的操作方法与流程

本公开涉及存储器系统。更具体而言,本公开涉及在存储器系统内对操作请求的处理。



背景技术:

在传统系统中,已知将数据从存储器系统传送到处理器,以使得处理器可对数据执行处理操作。在其他系统中,在存储器系统内的某些级别(例如在缓存的一个或多个级别)可额外地实现某种处理电路,从而使得传送执行对数据的操作的请求并且使存储器单元内的处理电路随后执行该操作也成为可能。这样的操作被称为远方操作(faroperation)(有时也称为远方原子操作),并且被用于减少系统中数据的移动。先前,远方操作限于少数相对简单的操作,例如算术和逻辑操作,并且因此实现能够在存储器系统中的多个级别处理这些操作的处理电路只招致很少的成本。可处理远方操作的存储器系统的多个级别(例如,缓存的多个级别)通常具有相同的处理能力,从而使得对远方操作的处理相对简单直观。具体地,执行远方操作的请求可简单地被传播通过存储器系统的支持远方操作的各种级别,直到其到达存储数据的存储器单元,在此该操作可被执行。如果到达了支持远方操作的最后级别(例如,最后级别缓存)而没有找到数据,那么将从存储器系统的更深级别取回数据并在该最后级别处理该数据。

然而,随着高级编程语言的发展,可能希望引入更复杂的远方操作。复杂远方操作的引入不仅要求在将要执行远方操作的存储器单元处提供更复杂的处理电路,而且使得对远方操作的高效处理更加复杂。



技术实现要素:

本技术的至少一些示例提供了一种存储器单元,包括:

数据存储部,存储数据;

操作控制器,接收由上游源发出的操作请求;

下游能力存储部,存储对至少一个下游存储器单元可执行的操作的指示;以及

处理电路,在操作控制器的控制下对存储在数据存储部中的数据执行操作;

其中,当从上游源接收到对目标数据执行操作的操作请求时,操作控制器被布置为依据目标数据是否被存储在数据存储部中和对至少一个下游存储器单元可执行的操作的所述指示来确定何时控制处理电路执行该操作以及何时将该操作转发到下游存储器单元。

本技术的至少一些示例提供了一种方法,包括:

将数据存储在数据存储部中;

接收由上游源发出的操作请求;

存储对至少一个下游存储器单元可执行的操作的指示;并且

提供处理电路来对存储在数据存储部中的数据执行操作;并且

其中,当接收到执行操作的操作请求时,该方法还包括:

依据目标数据是否被存储在数据存储部中和对至少一个下游存储器单元可执行的操作的所述指示来确定何时控制处理电路执行该操作以及何时将该操作转发到下游存储器单元。

本技术的至少一些示例提供了一种存储器设备,包括:

数据存储装置,用于存储数据;

操作控制器装置,用于接收由上游源发出的操作请求;

下游能力存储装置,用于存储对至少一个下游存储器单元可执行的操作的指示;以及

处理装置,在操作控制器装置的控制下对存储在数据存储装置中的数据执行操作;

其中,当从上游源接收到对目标数据执行操作的操作请求时,操作控制器还用于依据目标数据是否被存储在数据存储装置中和对至少一个下游存储器单元可执行的操作的所述指示来确定何时控制处理装置执行该操作以及何时将该操作转发到下游存储器单元。

附图说明

将参考在附图中图示的本技术的实施例来仅作为示例进一步描述本技术,附图中:

图1示意性地图示了存储器系统的示例,其中存储器单元具有处理电路;

图2示意性图示了根据本技术的实施例的存储器单元的示例;

图3图示了下游能力寄存器的示例,其存储了对存储器系统中的下游存储器单元可执行的操作的指示;

图4图示了用于响应操作请求的方法的一个示例;

图5示意性图示了存储器系统的另一示例,其中给定存储器单元可执行的操作是上游存储器单元可执行的操作的严格子集;

图6示意性图示了存储器系统的另一示例,其中存储器单元具有各种各样的能力并且在给定存储器单元可执行的操作和该存储器单元在存储器系统中的位置之间具有更小的相关性;

图7图示了一种响应操作请求的方法,其中接收方存储器单元可能不能够执行该操作;

图8图示了一种响应操作请求的方法,其中存储器单元可能是响应这种操作请求的优选位置;并且

图9图示了一种动态地填充下游能力寄存器的方法。

具体实施方式

在参考附图论述实施例之前,提供以下对实施例的描述。

根据本技术,被布置为处理远方操作的存储器单元在确定如何处理远方操作时不依赖于存储器系统中的存储器单元具有统一的处理能力。当力图提供对处理相对复杂的远方操作的支持时,设计约束可导致上游源和下游存储器单元具有与该存储器单元不同的处理能力。例如,当要执行的操作相对复杂时,在系统中的所有存储器单元处实现能够执行这些复杂操作的高级处理电路可能是不经济的。根据本技术的存储器单元包括存储对至少一个下游存储器单元可执行的操作的指示的下游能力存储部,以及确定如何高效地处理操作请求的操作控制器。具体而言,操作控制器既考虑到要被操作的目标数据是否被存储在本地数据存储部中,也考虑到至少一个下游存储器单元可执行的操作,并且基于此,操作控制器被布置为或者控制其本地处理电路对目标数据执行该操作,或者将操作请求转发到下游存储器单元。通过既考虑数据被存储在何处,又考虑下游存储器单元的处理能力,这允许了对操作请求的更高效处理,支持了个体存储器单元的处理能力不统一的配置,同时减少了处理操作请求时的不必要的路由开销。

在一些示例中,当存储器单元确定目标数据被本地存储在数据存储部中并且存储器单元能够执行期望的处理操作时,操作控制器被布置为控制处理电路对目标数据执行该操作。无论存储在下游能力存储部中的指示如何这都可发生,因为如果该操作可在该存储器单元处被执行,那么执行该操作而不是转发请求通常将比将操作请求传递到下游存储器单元更高效。

在至少一些示例中,当确定目标数据不存在于数据存储部中时,操作控制器被布置为根据下游能力寄存器确定是否至少一个下游能力寄存器能够执行该操作。因此,操作控制器可确定如何高效地处理操作请求。也就是说,在所有存储器单元都具有统一能力的存储器系统中,假定该操作可在下游被执行并且基于此自动转发操作请求,可能是安全的。然而,本技术认识到统一的布置可能并非总是经济的,从而对于下游能力的这种考虑可提高效率。

在一些示例中,当目标数据不存在于数据存储部中并且对至少一个下游存储器单元可执行的操作的指示指出至少一个下游存储器单元能够执行该操作时,操作控制器被布置为将操作请求转发到下游存储器单元。由于下游能力存储部指示出至少一个下游存储器单元能够执行该操作,所以存储器单元可继续转发该请求,知道它将被下游存储器单元之一处理。这提供了对操作请求的更高效处理,因为它避免了如下需求:当前存储器单元试图从下游存储器单元取回数据以便其可在本地执行该操作。

在一些示例中,当目标数据不存在于数据存储部中并且对于至少一个下游存储器单元可执行的操作的指示指出所有下游存储器单元都不能够执行该操作时,操作控制器被布置为向下游存储器单元发送对目标数据的读取请求以便取回目标数据。存储器单元随后可对目标数据执行该操作。这样,避免了对操作请求的不必要转发。

在至少一些示例中,处理电路被布置为对于从上游源接收的任何操作请求都能够执行操作。也就是说,在这个布置中,存储器单元将只会接收到对于其本地处理电路能够执行的操作的操作请求。这种约束可通过确保任何给定存储器单元可执行的操作与上游存储器单元可执行的操作相同或者是上游存储器单元可执行的操作的严格子集来实现,从而如果上游源关于下游能够执行什么操作的记录指出所关注的操作能够被至少一个下游存储器单元执行,那么该操作至少将是其将该请求传播到的下一个下游存储器单元可执行的。

在至少一些示例中,当确定目标数据被存储在数据存储部中,但处理电路不能够执行该操作时,操作控制器被布置为既将操作请求转发到下游存储器单元,又控制将目标数据从数据存储部转发到下游存储器单元。由于操作请求和目标数据都被向下游转发,所以当它们被能够执行该操作的下游存储器单元接收到时该操作可被执行,即使该下游存储器单元先前并未存储该数据也是如此。

在至少一些示例中,存储器单元可能是执行特定种类的操作的优选位置。在这种情况中,可能希望在该存储器单元处执行所有这种操作,即使其他存储器可能也能够执行同一操作。为了实现这一点,当目标数据不存在于数据存储部中时,操作控制器可被布置为不考虑存储在下游能力存储部中的任何指示,自动转发对目标数据的读取请求。因此,目标数据可被取回,并且操作可被优选位置处的本地处理电路执行。例如,当存储器单元因为其对于处理特定类型的操作尤其高效而是优选位置时,将该类型的操作请求指引到该存储器会提高效率。

在一些示例中,下游能力存储部可以是暴露于软件的存储元素,其可被编程来识别对于至少一个下游存储器单元可执行的操作的指示。在此情况下,下游能力可被知晓下游能力的程序员或设计者静态确立。

在一些其他示例中,存储器单元可被布置为动态地确定下游能力。具体而言,操作控制器可被布置为触发被联络的下游存储器单元生成指示出至少一个下游存储器单元可执行的操作的至少一个能力指示符。能力指示符可指示出被联络的下游存储器单元独家可执行的操作,或者可指示出多个下游存储器单元共同可执行的操作。随后可基于至少一个能力指示符来填充下游能力存储部。

在一些示例中,当对于至少一个下游单元是否能够执行操作请求所指示的操作的指示不存在于下游能力存储部中时,操作控制器被布置为基于从下游存储器单元接收的能力指示符来更新下游能力寄存器。可响应于转发到下游存储器单元的操作请求而接收能力指示符。如前所述,能力指示符可被布置为指示出至少一个下游存储器单元是否能够执行该操作,从而允许操作控制器动态地确定下游能力。

在一些示例中,操作控制器还可被布置为把从任何下游存储器单元接收的能力指示符转发到上游源。这样,上游源也可动态地填充又一个能力存储部。

能力指示符可采取各种形式,但在一些示例中,已执行操作确认信号和未执行操作确认信号可被采用来作为能力指示符。如果在将操作请求转发到下游存储器单元之后,存储器单元随后接收到操作已被执行的确认,则这意味着至少一个下游存储器单元能够执行该操作。相反,如果存储器单元接收到“未执行”确认信号,则这表明没有一个下游存储器单元能够执行该操作。在两种情况下,下游能力存储部都可被相应地更新。

在一些示例中,当操作控制器确定存储器单元是层次化存储器系统中的最末存储器单元(这在一个实施例中意味着该存储器单元将包含该数据),但确定处理电路不能够执行该操作时,操作控制器被布置为向上游源发送指出操作没有被执行的能力指示符。这因此提供了一种使得能够采取校正性动作的机制。

可利用描述的实施例的技术被作为远方操作处理的操作可采取各种形式,但在至少一些示例中,操作请求所指定的操作包括以下各项中的至少一者:

布尔算术操作;

整数算术操作;

整数simd操作;

浮点操作;

浮点simd操作;

现在将参考附图描述具体示例。

图1示出了系统100的一个示例,其包括耦合到多级别存储器系统的三个处理器cpu0、cpu1和cpu2。系统100包括三个顶级处理块:102、104和106。每个处理块包括一cpu:分别是cpu0、cpu1和cpu2,并且每个cpu具有对形成存储器系统的第一级别的关联的l1(级别1)缓存103-1、103-2和103-3的独占使用。除了l1缓存103-1、103-2和103-3以外,cpu0还具有对l2(级别2)缓存108的独占使用,而cpu1和cpu2共享l2缓存110。cpu经由互连115连接,并且全都具有对l3(级别3)缓存114的共享使用。类似地,存储器124可被所有cpu访问,并且是经由存储器控制器118被访问的。存储器控制器包括缓冲器120,该缓冲器120可用于临时存储被计划写入到存储器124的数据,或者最近从存储器124读取的数据。存储器系统的处理块102、104和106、l2和l3缓存108、110和114、存储器控制器118和存储器126的每一者具有存储和处理数据的能力并且可被认为是存储器单元。存储器单元形成一种层次结构,在该层次结构中,对数据的请求将被从cpu朝着存储器126传播,从而使得存储器层级的每一级将被顺序地检查,直到该特定数据被找到为止。存储器单元在其相对于特定参考点更靠近cpu级别时将被称为“上游”,而在其相对于该同一特定参考点更靠近存储器124时将被称为“下游”。

在图1的存储器系统中,每个存储器单元包括处理电路。例如,l2缓存108包括处理电路109-1,处理电路109-1具有算术逻辑单元(arithmeticlogicunit,alu),用于执行单指令多数据(singleinstructionmultipledata,simd)操作的电路以及用于执行浮点(floatingpoint,fp)操作的电路。在这个示例中,l2缓存110和l3缓存114包括与l2缓存108相同的处理电路,因此能够执行相同的处理操作。另一方面,存储器系统100的存储器控制器118包括alu122并且能够执行算术操作,但可能不能够执行诸如simd或浮点之类的复杂操作。类似地,存储器124包括布尔逻辑126并且能够执行布尔操作,但可能不能够执行其他类型的操作,例如存储器控制器118可执行的更复杂的alu操作。缓存比存储器控制器118和存储器124具有更高级的处理电路的这个布置可能生产起来是更经济的,因为用于处理诸如simd操作和fp操作之类的复杂操作的处理电路可能是昂贵的。

当cpu要对数据执行操作时,其可从存储数据的存储器单元取回该数据并且在本地执行该操作。然而,由于存储器系统的存储器单元各自具有在本地执行操作的某种能力,所以在一些情况下,改为从cpu向存储数据的存储器单元传送操作请求并且允许该存储器单元执行该操作,可能是有利的。例如,cpu0可能要求对存储在l3缓存114中的数据执行浮点操作。然而,取代从l3缓存114取回数据并且执行浮点操作,cpu0可改为发出识别该数据和要执行的操作的操作请求。在接收到此操作请求后,l3缓存114可自己利用处理电路109-3对该数据执行浮点操作。这种操作在这里被称为远方操作(也称为远方原子操作),因为这种操作是在数据存在之处被处理的,而不是将数据取回到cpu中来允许在本地执行操作。对远方操作的使用可大幅减少存储器系统内的数据流量。

图2示出了存储器单元200的配置的示例。存储器单元包括用于存储数据的存储部202、用于访问存储部202的访问电路204、下游能力寄存器206、操作控制器208和处理电路210。可经由接口212从上游存储器单元接收数据和请求,并且经由接口214向下游存储器单元发送数据和请求。如与接口212和接口214相关联的双向数据路径所指示,也可从下游存储器单元接收数据并且向上游发送数据。

存储器单元200被布置为从上游请求源接收典型的读/写请求。这种请求被路由到访问电路204,访问电路204对存储部202中的数据执行相应的读或写。

存储器单元200还被布置为对从上游请求源接收的远方操作请求(这里简称为操作请求)作出响应。在接收到对目标数据执行操作的操作请求后,操作控制器208被布置为确定目标数据是否存在于存储部202中,以及任何下游存储器单元是否能够执行该操作。基于这些标准,操作控制器208或者将经由接口214将操作请求转发到下游存储器单元,或者将控制处理电路210来对目标数据执行该操作。对于任何下游存储器单元是否能够执行该操作的指示被存储在下游能力寄存器206中。图2中所示的存储器单元102、104、106、108、110、114、118、124的每一者一般可按如图1所示那样布置。考虑处理块102、104、106的示例,cpu实际上形成处理电路210。

图3示出了下游能力寄存器206的逻辑表示300。这里,“1”指示至少一个下游存储器单元能够执行操作,而“0”指示没有一个下游存储器单元具有执行该操作的能力。因此,在图3的示例中,至少一个下游存储器单元能够执行布尔操作、整数操作和整数simd操作。然而,没有一个下游存储器单元能够执行浮点操作或浮点simd操作。图3的示例是一种简单的下游能力寄存器,其中对于每种类型的操作只提供1比特表示。然而,将会明白,其他表示也是可能的,例如指示“是”、“否”或“不知道”之一的2比特表示。下游能力寄存器206可以是暴露于软件的,从而可被编程为按任何设计对应于下游存储器单元的下游能力,或者下游能力寄存器可被布置为被动态填充。

在一些示例中,例如图1那样的存储器系统的每个存储器单元可设有指示出下游存储器单元的能力的下游能力寄存器。此外,从图1可以看出,该示例中的存储器系统的每个存储器单元的能力或者等于紧邻的上游的存储器单元的能力,或者是其子集。因此,仅当知道相邻下游存储器单元能够执行期望的操作时,操作请求才会被分派到该相邻下游存储器单元。

图4图示了可与这种布置关联使用的用于对操作请求作出响应的方法400的一个示例。在一个实施例中,此方法被用在每个存储器单元内。在步骤402中,在位置a接收到对操作x的操作请求,位置a是层次化存储器系统内的存储器单元之一。存储器单元首先在步骤404中确定其是否具有执行操作x所需要的数据。当数据存在时,存储器单元如步骤406中所示在本地对该数据执行操作x。然而,如果数据不存在,则存储器单元如步骤408中所示确定至少一个下游存储器单元是否能够执行操作x。基于此确定,存储器单元随后或者如步骤410中所示转发操作x,或者在步骤412中取回操作x所需要的数据并且在步骤406在本地执行操作x。从方法400明显可见,仅当知道至少一个下游存储器单元能够执行操作x时,对于操作x的操作请求才会被向下游传播。

图5示出了系统500的另一示例。系统500与图1所示的类似,除了与每个存储器单元相关联的处理电路以外。在系统500中,每个存储器单元的处理电路是其上游的存储器单元的处理电路的严格子集。换言之,cpu之后的每一级处可执行的操作是单调的。系统500与图1的系统具有类似的特性,因为可以假定如果接收到了对特定操作的请求,则存储器单元能够执行该操作。因此,在图5的存储器系统中,就存储器单元处实现的处理电路而言可实现成本降低,而不会向例如图4的方法添加额外的复杂性。

图6示出了存储器系统600的另一示例。在系统600中,存储器单元具有各种各样的能力,因此在给定的存储器单元可执行的操作与该存储器单元在存储器系统中的具体位置之间具有更小的相关性。例如,l2缓存608不包括任何处理电路,从而不能执行任何操作。另一方面,l2缓存610被布置有能够执行算术操作和simd操作的处理电路612。l3缓存614设有处理电路616,处理电路616具有比任一l2缓存更多的功能并且既能够执行算术操作和simd操作也能够执行浮点操作。存储器控制器618包括缓冲器620和用于执行算术操作的alu622,并且存储器624包括用于执行布尔操作的布尔逻辑626。

在系统600中,如下情形是可能出现的:某个存储器单元具有作为操作请求的目标的数据,但没有执行该操作的能力。例如,如果cpu1发出对存储在l2缓存612中的数据执行浮点操作的操作请求,那么尽管具有目标数据,l2缓存612也将不能够响应该请求。因此,在系统600中,存储器单元可进一步被布置为响应于不能够响应操作请求而向下游转发操作请求和数据。从而,l2缓存610将把操作请求以及目标数据转发到l3缓存614。然后,l3缓存614于是将能够利用处理电路616对目标数据执行操作。

图7图示了可与例如图6那样的存储器系统关联使用的方法700的一个示例,此方法是在每个存储器单元处执行的。首先,在步骤702,对操作x的操作请求到达位置a。然后在步骤704,确定操作x的数据是否存在于位置a处。如果在步骤704确定操作x的数据存在于位置a处,则也需要确认位置a能够执行操作x,如步骤712中所示。如果位置a能够执行操作x,则在步骤710,在位置a执行操作x。然而,如果位置a不能够执行操作x,则方法前进到步骤714,在这里对操作x的操作请求以及操作x的数据被转发到下游存储器单元。或者,如果数据不存在,则方法700与图4所示的类似,并且在步骤706,确定下游存储器单元之一是否能够执行操作x。如果下游存储器单元之一能够执行操作x,则对操作x的操作请求在步骤708中被向下游转发。或者,如果步骤706确定没有下游存储器单元能够执行操作x,则在步骤716中操作x所需要的数据被取回到位置a,并且在步骤710中,操作x在位置a处被执行。

在步骤704中确定了数据不存在于位置a,并且在步骤706中确定没有下游存储器单元能够执行操作x后,可以假定位置a能够执行该操作。因此,沿着这一连串事件,就不需要包括例如步骤712那样的额外的确定步骤。这是因为,虽然任何给定数目的存储器单元的能力可能看起来是任意的,但上游请求源仍能够确定一组下游存储器单元总体执行的操作,并且将只会在此基础上发出操作请求。因此,如果确定操作x的数据不存在并且没有一个下游存储器单元能够执行操作x,那么按照排除法,位置a在此实施例中将能够执行操作x。

在一些存储器系统中,给定的存储器单元可被布置有对于执行一个或多个特定操作尤其有效的处理电路。例如,在例如图1那样的系统100中,l2缓存108可被布置为以比存储器系统的其他存储器单元更高的效率执行simd操作。在这种情况下,无论数据存储在何处,并且尽管l3缓存109-3也能够执行simd操作,l2缓存108都可被布置为响应于simd操作请求而执行simd操作。图8图示了用于操作根据这种布置的存储器系统的方法800,此方法是在每个存储器单元处执行的。在步骤802,对操作x的操作请求到达位置a。然后在步骤804,确定操作x的数据是否存在。如果该数据存在,则如步骤806所示,在位置a执行操作x。然而,如果操作x的数据不存在,则在步骤808,确定位置a是否是执行操作x的优选位置。当位置a是执行x的优选位置时,方法前进到步骤810,在这里操作x所需要的数据被取回到位置a,并且在步骤806,操作x在位置a处被执行。这个过程实际上无视了先前描述的当位置a不具有该数据时检查下游存储器单元是否能够执行该操作并且基于此向下游转发操作请求的过程。因此,当存储器系统包括作为执行特定操作的优选位置的存储器单元时,此方法增加了在该存储器单元处执行的那些操作的数目。然而,如果位置a不是执行操作x的优选位置,则在步骤812,确定下游的存储器单元是否能够执行操作x。当能够执行时,则在步骤814,操作请求被转发到下游存储器单元。或者,如果没有下游存储器单元能够执行操作x,则在步骤810中操作x所需要的数据被取回到位置a,并且在步骤806中,操作x在位置a处被执行。

在一些示例中,下游能力寄存器最初可不存储对于下游存储器单元可执行的操作的指示。在这种情况下,可基于在存储器系统的存储器单元之间发送的指示来动态地填充下游能力寄存器。图9示出了用于动态地填充下游能力寄存器的方法900的示例,此方法是在每个存储器单元处执行的。在步骤902,对操作x的操作请求到达位置a,并且在步骤904,确定操作x的数据是否存在于位置a处。如果该数据存在,并且在步骤906确定位置a能够执行操作x,则在步骤908中操作x在位置a处被执行。在此之后,额外的步骤910包括向上游发送“ack”。或者,如果位置a不能够执行操作x,并且在步骤912确定位置a也是存储器系统的最末级别,例如图1的系统100的存储器124,则过程前进到步骤914,在这里向上游发送“nack”(指示出操作没有被执行)。向上游发送“ack”或“nack”为任何上游存储器单元布置其下游能力寄存器指示出操作x在下游是否可执行提供了基础。

当操作x的数据不存在于位置a处时,则在步骤916,检查位置a的下游能力寄存器是否存储关于操作x的操作类型是至少一个下游位置可执行的示例的信息。如果位置a的下游能力寄存器没有存储任何这样的信息,或者如果在步骤912确定位置a不是存储器系统的最末级别,则在步骤918,对操作x的操作请求被向下游转发。然后在步骤920,该过程等待从下游存储器单元接收指示出操作x是否能被执行的“ack”或“nack”。在步骤922,基于接收到的“ack”或“nack”来更新位置a的下游能力寄存器。此外,在步骤924中还向上游传播“ack”或“nack”,以便其他存储器单元也可基于此来更新其下游能力寄存器。

替代地,如果在步骤916中下游能力寄存器确实存储了关于下游位置的信息,并且在步骤926根据此信息确定没有一个下游存储器单元能够执行操作x,则在步骤928该数据被取回到位置a。随后在步骤908,操作x在位置a处被执行,并且在步骤910,“ack”被向上游发送。如果在步骤926确定至少一个下游位置支持操作x的执行,则过程前进到步骤918。

随着各种存储器单元的下游能力寄存器基于接收到的ack/nack信息被填充,存储器单元于是可对于被用作了ack/nack信息的生成的触发的当前操作请求采取进一步的额外步骤——如果需要的话。例如,如果存储器单元确定没有一个下游存储器单元能够执行特定的操作,则可采取步骤来使得操作x在能够执行该操作的存储器单元处被执行,并且此时如果需要的话可首先从下游存储器位置获得所需的数据。

在一个实施例中,图9的过程可被更改,以使得执行操作所需的数据可与最终级别存储器单元发出的nack信号一起被向上游传播,直到到达能够执行该操作的存储器单元为止。具体地,如果在步骤912确定该存储器单元是存储器系统的最末级别,那么当在步骤914发送nack信号时,该最末级别存储器单元也可将操作所需的数据与nack信号一起向上游存储器单元传播。上游存储器单元将在步骤920等待ack/nack信号,并且当接收到nack信号时,其不仅将会在步骤922更新其下游能力寄存器以识别出没有下游存储器单元能够执行该操作,而且还将评估其是否能够执行该操作。如果其能够执行该操作,则其将利用已从最末级别存储器单元返回的数据在本地执行该操作,然后将会向上游传播ack信号。或者,如果其不能够执行该操作,则其将会将nack信号与该数据一起向上游传播。将会明白,下一个上游存储器单元随后也可执行以上经修改的步骤920、922、924的序列,这在某个时刻将会使得该操作被能够执行该操作的第一个上游存储器执行。

根据以上描述的实施例,将会明白这种实施例允许了远方操作在存储器系统内的适当位置处被执行,其中不仅考虑到了数据存在于何处,而且考虑到了远方操作的复杂度和设在存储器系统内的各种存储器位置处的处理电路的能力。这提供了一种非常灵活的远方操作执行机制,允许了存储器系统内的不同位置被提供以不同的处理能力,同时仍确保了对远方操作请求的高效处理。

通过这样的方案,远方操作不仅可在各种级别的缓存内在片上执行,而且也可在存储器控制器内或者在片外存储器自身内执行,但具有向存储器系统的不同级别提供不同的执行远方操作的处理能力,从而提供了非常高的灵活性。

根据描述的实施例,远方操作请求具有表达操作的复杂度并从而表达操作的要求的编码,并且这随后与整个存储器系统中做出的知晓复杂度的决策相耦合,其中给定的存储器单元在决定应当在何处处理该操作时不仅着眼于所需数据是否存在于该存储器单元内本地,而且考虑了其本地处理电路的能力,以及下游存储器单元的能力。

有各种机制可用于对能力和操作的复杂度编码。例如,一个这种编码可仅仅涉及作为消息头部的一部分通过总线结构传输的操作家族的分类,例如:布尔算术、整数alu、整数simd、浮点和浮点simd。

在本申请中,词语“被配置为”用于意指装置的元件具有能够执行定义的操作的配置。在这个上下文中,“配置”指的是硬件或软件的布置或互连方式。例如,装置可具有提供定义的操作的专用硬件,或者处理器或其他处理设备可被编程为执行该功能。“被配置为”并不意味着装置元件为了提供定义的操作需要以任何方式被改变。

虽然这里已参考附图详细描述了本发明的说明性示例,但要理解本发明不限于这些确切的实施例,并且在不脱离如所附权利要求限定的本发明的范围和精神的情况下,本领域技术人员可在其中实现各种改变、添加和修改。例如,在不脱离本发明的范围的情况下,从属权利要求的特征可与独立权利要求的特征进行各种组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1