用于存储器内计算的本地旁路的方法和系统的制作方法

文档序号:6540413阅读:154来源:国知局
用于存储器内计算的本地旁路的方法和系统的制作方法
【专利摘要】本发明涉及一种用于存储器内计算的本地旁路的方法和系统。各实施例包括一种在有源存储器件中以旁路传输数据的方法。所述方法包括:请求方确定去往许可方但尚未传送到所述许可方的传输数量;基于所述传输数量达到阈值,向所述互连网络请求将所述旁路路径用于所述传输;以及基于所述请求经由所述旁路路径将所述传输传送到所述许可方,所述互连网络响应于所述请求而许可对所述许可方的控制。所述方法还包括:所述互连网络基于事件而请求对所述许可方的控制;以及经由所述互连网络传送来自其它请求方的延迟传输,所述延迟传输由于所述许可方先前被所述请求方控制而延迟,所述传送基于对所述许可方的控制被更改回所述互连网络。
【专利说明】用于存储器内计算的本地旁路的方法和系统

【技术领域】
[0001]本发明一般地涉及计算机处理和存储器,更具体地说,涉及存储器内计算的旁路通信路径。

【背景技术】
[0002]计算机系统经常需要大量诸如随机存取存储器(RAM)之类的高速存储器以在计算机加电并执行操作时保存信息(例如,数据和程序)。随着计算机系统的性能和复杂度增加,存储器件需求也在持续增长。当器件的复杂度增加时,管理处理单元(例如,核心)所用的功率就成为整体计算性能中非常重要的因素。
[0003]对于具有分布式处理的系统,将处理器和存储体相连的网络结构随着处理器数量的增加而增大。这可导致在存储器与处理器之间移动数据的功率大幅增加。


【发明内容】

[0004]各实施例包括一种用于在有源存储器件中以旁路传输数据的系统、计算机程序产品和方法,所述有源存储器件包括互连网络、存储库、处理元件以及在所述存储库与所述处理元件之间的绕开所述互连网络的旁路路径。所述方法包括:请求方确定去往许可方但尚未传送到所述许可方的传输数量;基于所述传输数量达到阈值,向所述互连网络请求将所述旁路路径用于所述传输;以及基于所述请求经由所述旁路路径将所述传输传送到所述许可方,所述互连网络响应于所述请求而许可对所述许可方的控制。所述方法还包括:所述互连网络基于事件而请求对所述许可方的控制;以及经由所述互连网络传送来自其它请求方的延迟传输,所述延迟传输由于所述许可方先前被所述请求方控制而延迟,所述传送基于对所述许可方的控制被更改回所述互连网络,所述请求方是所述处理元件和所述存储库中的一个,并且所述许可方是所述处理元件和所述存储库中的另一个。

【专利附图】

【附图说明】
[0005]图1示出根据一个实施例的有源存储器系统的框图;
[0006]图2示出根据一个实施例的具有有源存储器的存储系统的框图;
[0007]图3示出根据一个实施例的具有有源存储器的存储系统的示意图;
[0008]图4示出根据一个实施例的具有旁路路径的存储器内计算系统的一部分的框图;
[0009]图5示出根据一个实施例的具有旁路路径的存储器内计算系统的一部分的框图;
[0010]图6示出根据一个实施例的从互连网络的角度来看,将许可方的控制从互连网络转移到请求方的流程图的一部分;以及
[0011]图7示出根据一个实施例的从请求方的角度来看,将许可方的控制从互连网络转移到请求方的流程图的一部分。

【具体实施方式】
[0012]一个实施例涉及改善具有存储器内处理或计算的计算机系统(例如,具有一个或多个有源存储器件的计算机系统)的通信路径。所述通信路径可以是旁路路径,所述旁路路径允许存储器内处理元件在不必穿过主互连网络的情况下访问一个或多个存储体组,从而缩短延迟并减小功耗。所述有源存储器件可以是任何适当的存储器件,包括与被配置为控制存储器件的一个或多个集线器芯片(也称为存储控制器芯片)相连的一个或多个存储器件(例如,随机存取存储器“RAM”芯片)。在一个实施例中,有源存储器件包括多层存储,这些存储层形成三维(“3D”)存储器件(也称为“存储立方”),其中存储芯片的各列形成与集线器芯片通信的叠层或库(vault)。在一个实施例中,多个库位于存储模块上,其中每个库具有位于存储库下方的相应集线器芯片。集线器芯片均可以包括存储控制器以及一个或多个处理元件(“PE”)。处理元件被配置为与存储库和其它集线器芯片中的其它处理元件通信。在一个实施例中,处理元件通过互连网络访问库中的选定地址。在一个实施例中,多个存储器件、库和处理元件可以经由包括一个或多个交叉开关(crossbar switch)的互连网络通?目。。
[0013]在一个实施例中,在诸如具有许多处理元件(PE)和存储控制器及库(MCV)的有源存储器件之类的存储芯片内,互连(也称为“互连网络”)的延迟和功耗可能变得非常重要。为了缩短延迟并降低功率,可提供绕开全域互连的本地路径。本地旁路路径可以将PE的子集与MCV的子集相关联,使得来自PE子集中PE的访问可使用到达MCV子集中任一 MCV的本地互连路径。如果来自本地PE的存储请求经常到达对应的MCV,则可以降低互连的延迟并减小其功率。此外,系统的全域互连可缩小尺寸来节省面积和功率。类似地,来自外部主处理器芯片的链路子集可以与MCV子集关联,并且在使用该链路子集的处理芯片核心经常仅访问存储空间的对应MCV子集的情况下,通过不必穿过全域互连来缩短延迟并减小功率。
[0014]利用此技术的实施例将数据存储在特定的存储位置,这样,数据对于MCV子集而言被本地化。本地化的旁路路径在产生备用的上下文中面临挑战,其中某些PE或MCV可能不起作用,在这种情况下,需要能够将旁路切换为由其它邻近PE使用,这样所有PE均具有本地旁路。在各实施例中,PE因此可具有至少到达两个或更多邻近MCV的旁路,这样,如果在制造之后确定PE子集出现故障,则其它PE可以根据芯片上的物理位置,切换其旁路路径以使用正常情况下对应于那些故障PE的MCV,这样所有旁路均可保持为本地。在3D存储立方的一个实施例中,PE的邻近存储库可以包括直接位于该PE上方的库以及直接位于该PE的邻近PE上方的库。类似地,存储库的邻近PE可以包括直接位于该库下方的PE以及直接位于该库的邻近库下方的ΡΕ。应该理解,PE和库可被置于任何适当的位置,其中包括在彼此的下方或上方,具体取决于系统需求,其中旁路路径可连接邻近PE和库而不考虑它们的布置。
[0015]有源存储器件可以是任何适当的存储器件,其中包括多个与逻辑部分和处理元件相连的存储元件(例如,芯片)。在一个实施例中,有源存储器件包括多层存储器,这些存储层形成三维(“3D”)存储器件(例如,存储立方),其中芯片的各列形成与处理元件和逻辑通信的库。有源存储器件可以包括多个被配置为与芯片和其它处理元件通信的处理元件。在一个实施例中,处理元件通过互连网络访问库中的选定地址。此外,互连网络提供有源存储器件上的处理元件与库之间以及处理元件与主处理器之间的通信路径。每个库具有关联的存储控制器或逻辑单元,该存储控制器或逻辑单元也与互连网络相连。
[0016]各实施例包括可以使用有源存储器件内的多个位置(例如,存储在特定地址处的数据)作为操作数来执行一组复杂操作的有源存储器件。此外,提供过程来借助此过程针对有源存储器件内的这些操作数自主地执行指令和操作。具体而言,指令存储在有源存储器件本身内,并且不由主处理器执行。所存储的指令被提供给处理元件以便由有源存储器件中的处理元件进行处理。在一个实施例中,处理元件是可编程的引擎,其中包括指令缓冲器、具有分支功能和指令解码能力的指令单元、矢量、标量和屏蔽寄存器文件的混合、多个加载/存储单元(用于在存储器与寄存器文件之间移动数据)以及多个执行单元(用于各种数据类型的算术和逻辑处理)。有源存储器件中还包括地址转换功能,用于将虚拟地址转换为物理地址,将统一加载/存储队列转换为存储器与处理元件之间的一系列数据移动,另外还包括处理器通信单元,用于与主处理器通信。
[0017]在一个实施例中,有源存储器件被配置为在从诸如主处理器或另一处理元件之类的外部请求方接收命令之后,将配置信息或指令从有源存储器件的一部分加载到处理单元中。此外,处理元件可以执行虚拟-实地址转换,这些地址转换在执行加载的指令之时计算。在一个实例中,当执行加载指令时,有源存储器件从存储位置存取操作数并将操作数置于处理元件中的寄存器内。存储位置的虚拟地址由加载指令生成并且被处理元件转换为实地址。类似地,当执行存储指令时,有源存储器件将包含内容(例如,操作数)的存储位置写入处理元件中的寄存器内。存储地址的虚拟地址由存储指令生成并且被处理元件转换为实地址。
[0018]有源存储器件中的处理元件的各实施例还具有通过互连网络在有源存储器件的任意部分中读写操作数的能力。具体而言,处理元件可以使用互连网络访问有源存储器件中的其它库。在一个实施例中,处理元件形成池并通过互连网络耦合到库,其中处理元件并非物理地位于库叠层中。在一个实施例中,互连网络是耦合设备,例如交叉开关,其被配置为当处理元件和存储库与互连耦合时,将任何处理元件连接到任何存储库。在一个实施例中,互连网络可以耦合多个有源存储器件,其中互连网络提供单独器件的处理元件与存储库之间的通信路径。
[0019]在一个实施例中,处理元件作为叠层的一部分包括在存储控制器中。此外,处理元件可以针对操作数执行复杂的算术和逻辑运算,并将最终结果读回和写回存储器中的位置。有源存储器件可以将单个结果值或信号返回到主处理器以指示所需的复杂运算的结果在有源存储器件中准备就绪,这样便可在有源存储器件上执行高带宽处理并使用有源存储器件与主处理器之间的低带宽通信。
[0020]有源存储器件内的处理能力可缩短当位于单个芯片中的处理器访问存储器时否则将遇到的存储延迟和能耗。主处理器可以配置有源存储器件内的处理元件,然后指示它们执行数据处理任务,而非通过低带宽通信路径将数据从存储器发送到单独处理芯片,针对数据执行通常十分简单的计算,然后将已处理的数据传输回存储器。可通过将一个或多个命令从主处理器发送到有源存储器件来实现此目的。在此情况下,执行数据处理的位置与存储器之间的数据移动显著减少,不仅是数据必须从存储器到数据处理位置的传输距离缩短,而且穿过存储层次结构遍历的缓存层数也减少。
[0021]图1示出根据一个实施例的用于存储和检索存储器中的数据的系统的框图。图1所示的系统100包括计算机处理器(CPU)102、具有存储器件的存储器106,以及存储控制器104和用于从计算机处理器102接收和处理要存储在存储器106中的数据的处理元件108。
[0022]存储控制器104可以与计算机处理器102通信并且在不使用处理元件108功能的情况下,从计算机处理器102接收写请求。写请求包含要写入存储器106的数据以及用于识别存储器106中的位置(数据将被写入该位置)的实地址。存储控制器104在存储器106内的实地址处存储数据。当存储或检索数据时,计算机处理器102可以将虚拟地址映射到存储器106内的实地址。给定虚拟地址的实地址可以在存储器106中的数据每次被修改时发生变化。
[0023]在一个实施例中,处理元件108与计算机处理器102通信并从计算机处理器102接收命令。命令可以对应于存储器106中存储的指令以针对要被写入存储器106的数据执行写请求。命令还可以包括虚拟地址,用于识别存储器106中将写入数据的位置。存储控制器104和/或处理元件108在存储器106内的实地址处存储数据。在一个实施例中,当存储或检索数据时,处理元件108将虚拟地址映射到存储器106内的实地址。如下面进一步详细描述的,计算机处理器102将命令提供给存储器106,其中处理元件108接收命令并从存储器106取回对应的指令。系统100是可用于执行此处描述的处理的配置的一个实例。尽管系统100被描述为具有单个存储器106、存储控制器104、处理单元108和计算机处理器102,但是将理解,其它实施例也可以在具有存储器106、存储控制器104、处理单元108或计算机处理器102中的两个或更多的其它系统中执行操作。在一个实施例中,存储器106、存储控制器104、处理单元108和计算机处理器102不位于同一计算机内。例如,存储器106、处理元件108和存储控制器104可以位于一个物理位置(例如,位于存储器模块上),而计算机处理器102位于另一物理位置(例如,计算机处理器102通过网络访问存储控制器104和/或处理元件108)。此外,此处描述的处理的各部分可以跨存储器106、存储控制器104、处理单元108和计算机处理器102中的一个或多个。
[0024]图2是实现有源存储器的计算机系统200的一个实施例的示意图。在一个实施例中,计算机系统200包括有源存储器件202、有源存储器件203和有源存储器件204。有源存储器件202包括存储库206,存储控制器208和处理元件210。在一个实施例中,处理元件210、存储库206和存储控制器208通过互连网络212耦合和通信。具体而言,处理元件210通过互连网络212与存储库206、存储控制器208和诸如有源存储器件203和204之类的其它存储器件通信。互连网络212还通过处理器链路220和222耦合到主处理器224。互连网络212提供快速的高带宽路径以实现器件的各部分(例如,处理元件、存储控制器和存储器)之间的通信,从而提供有源存储器的改进的性能和缩短的延时。
[0025]有源存储器件203包括存储库226、存储控制器228和处理元件230。在一个实施例中,处理元件230、存储库226和存储控制器228均位于互连网络212的同一侧,例如位于单个叠层内。通过将处理元件230与存储库226置于同一叠层,在访问存储库226内的位置时缩短延迟,这进一步提高性能。在一个实施例中,有源存储器204包括存储库214和通过互连网络212与处理元件210和处理元件218耦合的存储控制器216。如图所示,处理元件218位于互连网络212的另一侧,与存储控制器216和存储库214不在一侧。在一个实施例中,有源存储器件202、203和204包括多层层叠的可寻址存储元件。此外,叠层存储器可被分成存储库206、226和214,或者存储器件的三维分块区域,这些三维分块区域共享公共存储控制器和/或存储元件,并且能够将存储器访问请求相互独立地提供给它们各自的存储域。
[0026]在各实施例中,处理元件、存储库和存储控制器可以通过适当的方式排列,具体取决于应用。例如,诸如处理元件218之类的一个或多个处理元件可以位于互连网络212的一侧,并且可以作为处理元件池执行操作,这些处理元件可用于访问与互连网络212耦合的存储系统中的任何存储器。形成池的处理元件不限于访问特定的存储库,因此,可在从主处理器224接收到命令时使用一个或多个元件。相应地,处理元件218可被配置为访问每个存储库206、226和214。在另一实施例中,诸如处理元件230之类的一个或多个处理元件作为包括存储库226和存储控制器228的叠层的一部分放置。在这样的配置中,处理元件230被配置为访问与互连网络212耦合的存储库226,其中包括存储库206和214。在一个实施例中,诸如处理元件210之类的一个或多个处理元件被置于互连网络212的另一侧,与存储库206和存储控制器208不在一侧。在该配置中,处理元件210被配置为访问任何与互连网络212耦合的存储器,其中包括存储库226和214。
[0027]在一个实施例中,计算机系统可以包括多个有源存储器件,例如有源存储器件202、203和204。此外,每个有源存储器件可以包括多个叠层,每个叠层包括存储库、存储控制器和关联的处理元件。在一个实例中,处理元件的数量可以大于存储库的数量。在另一实施例中,存储器件可以包括少于存储库的处理元件。在各实施例中,处理元件形成池并可用于访问系统中的任何存储器。例如,存储器件可以包括16个存储库和存储控制器,但是仅包括八个处理元件。八个处理元件形成池,被用作访问与互连网络耦合的任何存储库的资源。在另一实例中,存储器件可以是无源存储器件,其中该器件由与互连网络耦合的有源存储器件的处理元件控制。
[0028]图3是实现有源存储器的示例性计算机系统300的示意图。计算机系统300包括电路板302、主处理器304、有源存储器件306和有源存储器件308。有源存储器件306、有源存储器件308和主处理器304位于电路板302上。如图所示,有源存储器件306和308的各部分被进行分解以示出计算机系统300的排列细节。有源存储器件306和308分别通过信号路径324和344与主处理器304通信。如图所示,有源存储器件306排列为多个层,其中基层311包括多个存储控制器310和处理元件312。例如,有源存储器件306包括存储层309,该层位于基层311上面,其中层309均具有多个存储元件。如图所示,基层311还包括互连网络346以实现器件中的存储器、存储控制器与处理元件之间的高带宽通信。
[0029]在一个实施例中,有源存储器件306包括多个存储库314,其中每个存储库314包括来自每个层309的存储元件,存储库314邻近存储控制器310和处理元件312放置。具体而言,示例性有源存储器件306包括存储元件层16,其中各个元件层形成叠层,包括叠层316,其中叠层316包括被置于存储控制器318和处理元件320上方的存储库322。高带宽通信路径326提供存储库322内的处理元件320与存储位置之间的高带宽通信路径,该路径为直连路径,长度大幅缩短(例如,与路径324、344相比),这样缩短了用于存储访问的延迟并降低了功耗。例如,处理元件320可以从主处理器304接收命令,基于该命令加载来自有源存储器件306的指令,并且作为已加载指令的一部分,访问存储库314中某个位置处的数据,然后在处理元件320中对该数据执行复杂操作。此外,处理元件320还可以将诸如结果之类的数据存储在存储库314中,然后在执行命令之后将值或信号发送到主处理器304。在一个实施例中,处理元件320存储数据(例如,操作数)或将数据(例如,操作数)从处理元件320中的寄存器写入存储库314。作为读取或存储操作的一部分,处理元件320还被配置为将地址从虚拟地址转换为实地址以及从实地址转换为虚拟地址。这样,处理元件320提供指令加载、地址转换、复杂运算和存储器本地的其它任务以缩短延迟、节省功耗并使主处理器304有时间执行其它任务。
[0030]类似地,有源存储器件308包括多个被置于基层331上的存储控制器328和处理元件330。在一个实施例中,有源存储器件308包括被置于基层331上面的存储器件层329,其中层329均具有多个存储器件。基层331还包括互连网络346以实现存储器与器件内的处理元件之间的高带宽通信。在一个实施例中,有源存储器件306和有源存储器件308的互连网络346相耦合并允许单独器件上的处理元件与存储器之间的通信。
[0031]在一个实施例中,有源存储器件308包括多个存储库332,其中每个存储库332包括来自每个层309的存储元件,存储库332邻近存储控制器328和处理元件330放置。示例性有源存储器件308包括16个叠层,其中包括叠层334,叠层334包括被置于存储控制器340和处理元件338上方的存储库336。高带宽通信路径342提供处理元件330与存储库336内的存储位置之间的通信。
[0032]图4示出具有用于存储器内计算的本地旁路的示例性存储系统400的一部分。存储系统400是图1-3所示的系统的至少一部分的一个实施例。存储系统400包括与处理元件(PE)410和412耦合的存储库402,404,406和408。互连414允许库402,404,406和408与PE410和412之间的通信。在各实施例中,互连414包括多个交叉开关和控制器以组织和控制通过互连的业务。互连414 (也称为“互连网络”)经由链路410和456与存储系统400的其它互连通信。PE410、412可以经由互连414或旁路路径416、418、436和438与库402、404、406和408通信。PE412与库406、408之间的通信通过互连414、互连链路454、440和442实现。类似地,PE410与库402、404之间的通信通过互连414、互连链路452、420和422实现。在一个实施例中,当去往特定库的未决传输数量达到阈值时,PE可以经由旁路路径通信。在阈值为32的一个实施例中,如果从PE410到库404的未决传输数量为32或更大,则传输将使用旁路路径418传送未决传输。所述传输可以是命令,例如命令指定的存储地址上的MCV所支持的加载、存储或算术运算。命令可以包含有效负载以将数据传输到存储器或从存储器传输数据。
[0033]在一个实施例中,可以通过相应多路复用器(“1111?”)432、430、448和450传送去往库402、404、406和408的传输。旁路选择链路426和428控制库402和404分别经由多路复用器432和430接收的输入。旁路选择链路446和444控制库406和408分别经由多路复用器448和450接收的输入。互连414可以经由链路426、428、444、446控制多路复用器,其中互连中的控制器基于符合本地通信的准则,向发出请求的PE许可库402、404、406和408之一的控制。在各实施例中,当未决传输的数量达到阈值时,PE410、412分别经由链路424、434请求对是未决传输目标的库(B卩,具有传输指定的地址的库)的控制。在图4的一个实施例中,PE410、412被称为请求方,“目标”存储库402、404、406和408被称为许可方。当从请求方到许可方的未决传输达到阈值时,请求方PE从互连414请求对许可方库的控制。在一个实施例中,通过对未决传输队列中的传输计数来确定未决传输的数量。在另一实施例中,通过从加载-存储单元(LSU)确定以许可方库为目标的指令流中的指令数量来确定未决传输的数量。例如,在执行向量代码的PE中,通过向量迭代计数和加载-更新或存储-更新指令的地址步幅,很容易在LSU中识别以库为目标的指令数量。一旦互连已将对许可方库的控制许可给请求方PE,该PE便经由本地旁路路径或链路直接将未决传输传送到许可方库。尽管请求方PE具有对许可方库的控制,但是互连414可以累积从其它PE到许可方库的传输,其中传输被延迟,直到互连414具有对许可方库的控制。在各实施例中,当满足选定事件或条件时,互连从请求方PE请求对许可方库的控制。所述事件包括但不限于:当延迟的传输请求的数量或互连414累积的传输达到第二阈值时,当传输请求或去往互连414的传输未决的时钟周期数量达到第三阈值时,当旁路空闲的时钟周期数量达到第四阈值时,当提供了请求方已完成到许可方的传送的指示时,或者发生这些条件的任意组合时。在请求方PE将对许可方库的控制许可返回互连414之后,将延迟传输传送到许可方库。在另一实施例中,互连414基于请求方完成将未决传输传送到许可方库,从请求方PE请求对许可方库的控制。
[0034]当互连414将对许可方库的控制许可给请求方PE时,互连处去往许可方库的未决传输请求可被删除以确保传输不会重复并且去往同一地址的加载和存储传输按次序传输。在一个实施例中,旁路路径416、418、436、438可以使用PE410、412上的共享端口,其中这些端口也被互连链路452、454使用。在另一实施例中,PE410、412均具有用于经由旁路路径416、418、436、438通信的专用端口。在各实施例中,经由旁路路径传送未决传输,从而避免方框414中的互连多路复用延迟,并且避免长互连链路420、422、452、440、442、454的线延迟。此外,旁路多路复用选择426、428、444、446在旁路活动时不会切换。
[0035]图5示出具有用于存储器内计算的本地旁路的示例性存储系统500的一部分。存储系统500是图1-3所示的系统的至少一部分的一个实施例。存储系统500包括与处理元件(PE) 520,522,524和526耦合的存储库504和506。互连514允许库404和506与PE520、522、524和526之间的通信。在各实施例中,互连514包括多个交叉开关和控制器以组织和控制通过互连的业务。互连514经由链路516和518与存储系统500的其它互连通信。PE520、522、524和526可以经由互连514或旁路路径502,528,508和544与库504和506通信。库504与PE520、522之间的通信通过互连514、互连链路530、532和534实现。类似地,库506与PE524、526之间的通信通过互连514、互连链路550、546和548实现。在一个实施例中,当去往特定PE的未决传输数量达到阈值时,库可以经由旁路路径通信。在阈值为32的一个实施例中,如果从库504到PE522的未决传输数量为32或更大,则传输将使用旁路路径528传送未决传输。所述传输可以是指定去往或来自PE的数据传输的命令。命令可以包含有效负载以将数据传输到PE或从PE传输数据。
[0036]在一个实施例中,可以通过相应多路复用器536、538、552和554传送去往PE520、522、524和526的传输。旁路选择链路540和542控制PE520和522分别经由多路复用器536和538接收的输入。旁路选择链路556和558控制PE526和524分别经由多路复用器554和552接收的输入。互连514可以经由链路540、542、556、558控制多路复用器,其中互连中的控制器基于符合本地通信的准则,将对PE520、522、524和526之一的控制许可给发出请求的库。在各实施例中,当未决传输的数量达到阈值时,库504、506分别经由链路510、512请求对是未决传输目标的PE (即,具有传输指定的地址的PE)的控制。在图5的一个实施例中,存储库504、506被称为请求方,“目标”PE520、522、524和526被称为许可方。当从请求方到许可方的未决传输达到阈值时,请求方库从互连514请求对许可方PE的控制。在一个实施例中,通过对未决传输队列中的传输计数来确定未决传输的数量。在另一实施例中,请求方库基于PE提供的提示请求对许可方PE的控制,PE基于它已经做出或将要做出的去往库的加载或存储传输的数量生成提示。在一个实施例中,该提示随着PE做出的加载或存储传输一起传递到库。
[0037]一旦互连已将对许可方PE的控制许可给请求方库,该库便经由本地旁路路径或链路直接将未决传输传送到许可方PE。尽管请求方库具有对许可方PE的控制,但是互连514可以累积从其它库到许可方PE的传输,其中传输被延迟,直到互连514具有对许可方PE的控制。在一个实施例中,当满足选定事件或条件时,互连从请求方PE请求对许可方库的控制。所述选定事件包括但不限于:当延迟的传输请求的数量或互连514累积的传输达到第二阈值时,当传输请求或去往互连514的传输未决的时钟周期数量达到第三阈值时,当旁路空闲的时钟周期数量达到第四阈值时,当提供了请求方已完成到许可方的传送的指示时,或者发生这些条件的任意组合时。在请求方库将对许可方PE的控制许可回互连514之后,延迟传输被传送到许可方PE。在另一实施例中,互连514基于请求方完成将未决传输传送到许可方PE,从请求方库请求对许可方PE的控制。
[0038]当互连514将对许可方PE的控制许可给请求方库时,互连处去往许可方PE的未决传输请求可被删除以确保传输不会重复并且来自同一地址的加载传输按次序传输。在一个实施例中,旁路路径502、528、544、508可以使用库504、506上的共享端口,其中这些端口也被互连链路530、550使用。在另一实施例中,库504、506均具有用于经由旁路路径502、528,544,508通信的专用端口。在各实施例中,未决传输经由旁路路径传送,从而避免方框514中的互连多路复用延迟,并且避免长互连链路532、534、530、546、548、550的线延迟。此夕卜,旁路多路复用选择540、542、556、558在旁路活动时不会切换。
[0039]图6示出从互连网络的角度来看,将对许可方(402、404、406、408或520、522、524、526)的控制从互连网络(414或514)转移到请求方(410、412或504,506之一)的示例性流程图的一部分。控制转移序列在方框600开始。只要没有请求方“R”请求旁路到许可方“G”,在方框622,请求方R与许可方G之间的旁路便保持不活动。在方框602,如果请求方R请求旁路到许可方G,则在方框604,互连网络首先完成任何当前正在进行的去往许可方G的传输,在方框606删除任何从请求方R到许可方G的未决传输请求,并且通过相应地设定旁路路径(416、418、436、438 或 502、528、508、544)的对应旁路复用(430、432、448、450 或536、538、558、554)的多路复用选择(426、428、444、446 或 540、542、556、558),激活 R 与许可方G之间的旁路,例如“旁路(R,G)”。在各实施例中,请求方在不导致切换多路复用选择的情况下,经由旁路路径将传输传送到许可方。在一个实施例中,在方框610将诸如“计数器(R,G)”之类的计数器设定为O。在方框612,如果存在来自请求方R之外的请求方的去往许可方G的未决请求,则递增计数器(R,G)。在方框614,对照阈值T检查计数器(R,G)的值。如果计数器(R,G)的值不大于阈值T的值,则控制序列返回到方框612。如果计数器(R, G)的值大于阈值T的值,则互连网络请求该请求方R关闭R与许可方G之间的旁路(旁路(R,G))。在方框620,互连网络等待请求方R许可请求。一旦请求被许可,便在方框618使旁路(R,G)不活动,然后控制序列返回到方框602。
[0040]图7示出从请求方的角度来看,将对许可方(402、404、406、408或520、522、524、526)的控制从互连网络(414或514)转移到请求方(410、412或504、506)的示例性流程图的一部分。对于PE到库旁路,PE是请求方并且库是许可方。对于库到PE旁路,库是请求方并且PE是许可方。控制转移的控制序列在方框700开始。在一个实施例中,如果在方框702,请求方R的未决队列中去往许可方G的未决请求数量不大于阈值T,则在方框716,请求方R与许可方G之间诸如“旁路(R,G)”之类的旁路保持不活动。如果该数量大于阈值T,则在方框704,请求方R将请求发送到互连网络以开启旁路(R,G)。在方框706,请求方R等待互连网络许可该请求。一旦互连网络激活旁路,请求方R便在方框708检查互连网络是否做出关闭旁路(R,G)的请求。如果互连尚未做出该请求,则在方框710,旁路(R,G)保持活动,否则,请求方R在方框712完成当前去往许可方G的传输(如果有),然后许可互连网络关闭旁路(R,G),接着控制序列返回到方框702。
[0041]此处使用的术语只是为了描述特定的实施例并且并非旨在作为本发明的限制。如此处所使用的,单数形式“一”、“一个”和“该”旨在同样包括复数形式,除非上下文明确地另有所指。还将理解,当在此说明书中使用时,术语“包括”和/或“包含”指定了声明的特征、整数、步骤、操作、元素和/或组件的存在,但是并不排除一个或多个其他特征、整数、步骤、操作、元素、组件和/或其组合的存在或增加。
[0042]以下的权利要求中的对应结构、材料、操作以及所有功能性限定的装置(means)或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它单元相组合地执行该功能的结构、材料或操作。所给出的对本发明的描述其目的在于示意和描述,并非是穷尽性的,也并非是要把本发明限定到所表述的形式。对于所属【技术领域】的普通技术人员来说,在不偏离本发明范围和精神的情况下,显然可以作出许多修改和变型。对实施例的选择和说明,是为了最好地解释本发明的原理和实际应用,使所属【技术领域】的普通技术人员能够明了,本发明可以有适合所要的特定用途的具有各种改变的各种实施方式。
[0043]此外,如所属【技术领域】的技术人员将理解的,本公开的各个方面可以实现为系统、方法或计算机程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本公开的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0044]可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于一电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0045]计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括一但不限于一电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0046]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0047]可以以一种或多种程序设计语言的任意组合来编写用于执行本公开的各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN) —连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0048]以上参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0049]也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)0
[0050]也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
[0051]附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
【权利要求】
1.一种用于在有源存储器件中通信的方法,所述有源存储器件包括互连网络、存储库、处理元件以及在所述存储库与所述处理元件之间的绕开所述互连网络的旁路路径,所述方法包括: 由请求方确定去往许可方但尚未传送到所述许可方的传输数量; 由所述请求方基于所述传输数量达到阈值,向所述互连网络请求将所述旁路路径用于所述传输; 基于所述请求经由所述旁路路径将所述传输传送到所述许可方,所述互连网络响应于所述请求而许可对所述许可方的控制; 由所述互连网络基于事件而请求对所述许可方的控制;以及 经由所述互连网络传送来自其它请求方的延迟传输,所述延迟传输由于所述许可方先前被所述请求方控制而延迟,所述传送基于对所述许可方的控制被更改回所述互连网络,所述请求方包括所述处理元件和所述存储库中的一个,并且所述许可方包括所述处理元件和所述存储库中的另一个。
2.根据权利要求1的方法,其中确定去往所述许可方的传输数量进一步包括确定所述请求方的未决 队列中的未决传输数量。
3.根据权利要求1的方法,其中确定去往所述许可方的传输数量进一步包括由加载-存储单元确定目标为所述许可方的指令的数量。
4.根据权利要求1的方法,其中基于所述事件而请求对所述许可方的控制进一步包括基于以下项中的一个或多个而请求对所述许可方的控制:去往所述许可方的延迟传输数量达到第二阈值、延迟传输已被延迟的时钟周期数量达到第三阈值、所述旁路路径空闲的时钟周期数量达到第四阈值,以及所述请求方已完成到所述许可方的传送的指示。
5.根据权利要求1的方法,其中经由所述旁路路径将所述传输传送到所述许可方进一步包括在不导致切换多路复用选择的情况下经由所述旁路路径传送所述传输。
6.根据权利要求1的方法,其中所述存储库和处理元件在模块上彼此直接叠加放置。
7.根据权利要求1的方法,其中所述存储库和处理元件在模块上彼此相邻。
8.一种用于在计算机系统中通信的方法,所述计算机系统包括: 有源存储器件,其包括互连网络、存储库、处理元件以及在所述存储库与所述处理元件之间的绕开所述互连网络的旁路路径,所述系统被配置为执行一种方法,所述方法包括: 由请求方确定去往许可方但尚未传送到所述许可方的传输数量; 由所述请求方基于所述传输数量达到阈值,向所述互连网络请求将所述旁路路径用于所述传输; 基于所述请求经由所述旁路路径将所述传输传送到所述许可方,所述互连网络响应于所述请求而许可对所述许可方的控制; 由所述互连网络基于事件而请求对所述许可方的控制;以及 经由所述互连网络传送来自其它请求方的延迟传输,所述延迟传输由于所述许可方先前被所述请求方控制而延迟,所述传送基于对所述许可方的控制被更改回所述互连网络,所述请求方包括所述处理元件和所述存储库中的一个,并且所述许可方包括所述处理元件和所述存储库中的另一个。
9.根据权利要求8的系统,其中确定去往所述许可方的传输数量进一步包括确定所述请求方的未决队列中的未决传输数量。
10.根据权利要求8的系统,其中确定去往所述许可方的传输数量进一步包括由加载-存储单元确定目标为所述许可方的指令的数量。
11.根据权利要求8的系统,其中基于所述事件而请求对所述许可方的控制进一步包括基于以下项中的一个或多个而请求对所述许可方的控制:去往所述许可方的延迟传输数量达到第二阈值、延迟传输已被延迟的时钟周期数量达到第三阈值、所述旁路路径空闲的时钟周期数量达到第四阈值,以及所述请求方已完成到所述许可方的传送的指示。
12.根据权利要求8的系统,其中经由所述旁路路径将所述传输传送到所述许可方进一步包括在不导致切换多路复用选择的情况下经由所述旁路路径传送所述传输。
13.根据权利要求8的系统,其中所述存储库和处理元件在模块上彼此直接叠加放置。
14.根据权利要求8 的系统,其中所述存储库和处理元件在模块上彼此相邻。
【文档编号】G06F13/16GK104050110SQ201410093662
【公开日】2014年9月17日 申请日期:2014年3月13日 优先权日:2013年3月15日
【发明者】B·M·弗莱舍, T·W·福克斯, H·M·雅各布森, R·奈尔, M·奥马赫特, K·苏伽梵纳姆 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1