用于自主存储器的方法及系统的制作方法

文档序号:10517832阅读:465来源:国知局
用于自主存储器的方法及系统的制作方法
【专利摘要】本发明揭示了一种方法、一种设备及一种系统。所述方法的实施例包含:自主存储器装置接收指令集,所述存储器装置执行所述指令集,将所述指令集与响应于所述指令集而从所述存储器装置恢复的任何数据组合成包,及从所述存储器装置发射所述包。
【专利说明】用于自主存储器的方法及系统
[0001 ] 优先权申请
[0002]本申请案主张2013年12月2日申请的序列号为14/094,273的美国申请案的优先权的权益,所述申请案以全文引用的方式并入本文中。
【背景技术】
[0003]存储器装置通常经提供为计算机或其它电子装置中的内部半导体集成电路。存在许多不同类型的存储器,包含随机存取存储器(RAM)、只读存储器(R0M)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)及非易失性(例如,快闪)存储器。
[0004]若干非易失性存储器装置可经组合以形成固态驱动器(SSD),所述固态驱动器可在计算机系统中仿真机械操作硬盘驱动器。固态驱动器可比机械硬驱动器(由于缺少移动的部件)提供更快存取与更大可靠性。
[0005]至少部分地由于计算机系统的增加的性能,存储器及固态驱动器制造商可始终处于增加其存储器的性能的压力下以便努力与计算机系统性能增加保持同步。一般需要使对存储器的读取及写入更高效以释放对计算机系统的任何操作负担。
【附图说明】
[0006]图1图解说明自主存储器处理设备的实施例的功能性框图。
[0007]图2图解说明根据图1的实施例的包解析器的实施例的框图。
[0008]图3图解说明根据图1的实施例的程序计数器的实施例的框图。
[0009]图4图解说明根据图1的实施例的指令存储器的实施例的框图。
[0010]图5图解说明根据图1的实施例的解码逻辑的实施例的框图。
[0011]图6图解说明根据图1的实施例的寄存器堆的实施例的框图。
[0012 ]图7A及7B图解说明根据图1的实施例的执行单元的实施例的框图。
[0013]图8图解说明根据图1的实施例的解析器的实施例的框图。
[0014]图9图解说明根据图1的实施例的包产生器的实施例的框图。
[0015]图10图解说明用于根据图1的实施例的指令执行的格式的实施例的图式。
[0016]图11图解说明存储器系统的实施例的框图。
[0017]图12图解说明自主存储器装置中的自主存储器处理设备的操作的实施例的流程图。
【具体实施方式】
[0018]在以下详细说明中,参考形成其一部分的附图,且在附图中以图解方式展示特定实施例。在图式中,贯穿数个视图的相似编号基本上描述类似组件。可利用其它实施例,且可在不背离本发明的范围的情况下作出结构、逻辑及电改变。因此,不应在一限制意义上理解以下详细说明。
[0019]本发明并不限于任何一种类型的存储器。自主存储器处理设备可与任何类型的存储器装置、存储器装置的群组或存储器技术(包含半导体存储器、光学存储器或磁性存储器)相关联。举例来说,存储器可包含非易失性(例如,NAND快闪、NOR快闪、相变存储器(PCM))或易失性(例如,DRAM、SRAM)。
[0020]如本文中所使用,节点可包含:包解析器,其用于解析所接收包;包产生器,其用于产生待从节点发射到网络的包;及网络端口,其可将节点与任何网络介接。所述节点可另外包含用于控制节点以及存储器的操作以用于存储数据的处理元件。在其它实施例中,所述节点可包含用于额外功能的额外硬件及/或软件/固件。具有自主处理设备的自主存储器装置可被视为节点。
[0021]图1图解说明自主存储器处理设备的实施例的功能性框图。此设备可与存储器100相关联且可用于释放基于中央处理单元(CPU)的计算系统中的存储器带宽瓶颈。自主存储器处理设备可位于自主存储器装置中。
[0022]自主存储器处理设备可包含包解析器101、程序计数器107、指令存储器105、解码逻辑103、寄存器堆109、解析器115、包产生器111、一个或多个执行单元(EU)113及页缓冲器117。图1的元件及架构仅为出于图解目的,这是因为其它实施例可使用其它元件及其它架构。
[0023]图2图解说明包解析器101的框图。包解析器101可耦合到网络(例如,在存储器100外部的网络)并从所述网络接受数据包。包解析器101还可耦合到程序计数器107的输入,使得包解析器101可使程序计数器107加载有从网络接收于包中的程序计数(例如,指令存储器位置)。包解析器101还可耦合到程序计数器107的输出,使得程序计数器107可将其当前程序计数(例如,指令存储器位置)加载到包解析器101中。包解析器101可进一步耦合到指令存储器105及寄存器堆109的输入以使从网络接收于包中的数据(例如,指令)能够加载到指令存储器105及寄存器堆109中。
[0024]图3图解说明程序计数器107的框图。出于图解目的,程序计数器107经展示为32位计数器。然而,其它实施例可使用其它程序计数器大小。
[0025]程序计数器107可具有来自包解析器101及程序计数器执行单元(PCEU)IH的输入,所述程序计数器执行单元可为一个或多个执行单元113的部分。程序计数器107可具有耦合到指令存储器105的输出。
[0026]程序计数器107可含有程序计数值(例如,指令存储器位置)以存取可含有程序(例如,可执行指令)的指令存储器105中的特定指令位置。可依据由包解析器101确定且从包解析器101接收的传入包中的特定数据字段,或来自程序计数器执行单元114的所计算值来设定所述程序计数值。接着,程序计数器107可将程序计数(例如,32位寄存器)的值输出到指令存储器105。
[0027]图4图解说明指令存储器105的框图。指令存储器105可包含用于存储程序(例如,可执行指令)的若干寄存器。包解析器101可耦合到指令存储器105的写入端口。可由包解析器101写入到指令存储器105,使得在由包解析器101确定的传入包内接收的指令可从所述包加载到指令存储器105中。
[0028]指令存储器105可包含两个地址端口,所述两个地址端口可各自接受用于存取指令存储器105内的特定位置的地址。一个地址可来自程序计数器107。另一地址可来自包产生器111。
[0029]在一个操作期间,指令存储器105可从由程序计数器107的地址指示的位置输出指令(例如,数据端口)。此指令可被解码且由执行单元113执行以便向执行单元113作出关于待执行的操作的指示。此指令可对执行单元113给出操作数以及到寄存器堆109中的索引,所述索引用以向寄存器堆109作出关于要将何种数据输出到执行单元113以供处理的指示。
[0030]图5图解说明解码逻辑103的框图。解码逻辑103可包含执行单元解码逻辑501、解析器解码逻辑502及多路分用功能503(例如,多路分用器)。
[0031]到多路分用功能503的输入可耦合到来自指令存储器105的输出的指令流。指令流中的一个或多个控制位可用于选择所述指令流中的特定指令的目的地(例如,EU解码逻辑501、解析器解码逻辑502)。
[0032]如果指令被发送到EU解码逻辑501,则EU解码逻辑501可处理所述指令以便将所述指令发送到执行单元113中的一者。所述指令可向执行单元113中的一者作出关于将执行何种类型的操作的指示并且对执行单元113中的一者给出将在指令的执行期间使用的操作数。所述操作数可在寄存器堆109的寄存器中加索引且向所述寄存器作出关于将输出何种数据,使得执行单元113中的一者可处理所述数据的指示。
[0033]多路分用功能503还可将指令发送到耦合到解析器115的解析器解码逻辑502。所述指令可控制解析器解码逻辑502,解析器解码逻辑502继而指示解析器将存取页缓冲器117的哪些分段以便将来自页缓冲器117的特定分段的数据读取到执行单元113中的一者中以供处理。
[0034]图6图解说明寄存器堆109的框图。寄存器堆109可包含来自包解析器101、包产生器111、执行单元113中的一者或多者的输入,及存储器读取指示。存储器读取指示可为由解析器115产生的信号,所述信号指示完成存储器操作的时间。寄存器堆109可包含到包产生器111、执行单元113及解析器115的输出。
[0035]寄存器堆109可包含存储器(例如,多个寄存器)以在正发生由执行单元113进行的处理的同时存储变量。这些变量可包含响应于一个或多个指令从存储器检索的数据。可由包解析器101写入到寄存器堆109以便在所述寄存器内设定初始条件且可由包产生器111从寄存器堆109读取。执行单元113中的每一者可通过多路复用功能从寄存器堆109接收变元。到包产生器111的输出可用于将存储于寄存器堆109的寄存器中的数据捆绑成包以供发射到网络。
[0036]图7A图解说明一般来说执行单元113(例如,执行单元(O到N)的实施例的框图而图7B图解说明特定来说程序计数器执行单元114的实施例的框图。PCEU 114可被视为执行单元113的群组的部分,但其可具有与其它执行单元113不同的架构。
[0037]不存在对可包含于特定自主存储器处理设备中的执行单元113的特定数目的要求。一个设备可具有单个执行单元113而另一设备可具有多个(例如,数百个)执行单元。
[0038]图7A图解说明执行单元113可包含四个算术逻辑单元(ALU)701到70LALU1 703及ALU2 704的输出可输入到多路复用功能706。可通过Comp ALU 702的输出确定选择哪一ALU703、704输出,Comp ALU 702的输出可用作用于多路复用功能706的选择信号。第四ALU(ALUOut 701)可具有作为寄存器地址Rd的到寄存器堆109的输出,所述输出可对寄存器堆109指示由执行单元113执行的操作的结果将存储的地方。
[0039]下部三个ALU702到704及多路复用功能706可执行如果-则-否则运算。多路复用功能706可提供“如果某一条件”,其中所述条件是由Comp ALU 702确定。因此,如果条件为真,则由Comp ALU 702的输出选择一个ALU(例如,ALUl 703)的输出,否则由Comp ALU 702的输出选择另一ALU(例如,ALU2 704)的输出。
[0040]举例来说,如果假定ALUl 703具有操作数输入OpERANDI(R1)及0PERAND2(R2)以及命令输入0PERAT0R1,且ALU2 704具有操作数输入0PERAND3(R3)及0PERAND4(R4)以及命令输A0PERAT0R2,如果-则-否则语句可类似于:
[0041]如果(条件)
[0042]则
[0043]操作数10PERAT0R1操作数2
[0044]否则
[0045]操作数30PERAT0R2操作数4
[0046]其中“操作数10PERAT0R1操作数2”可由ALUl 703提供,“操作数30PERAT0R2操作数4”可由ALU2 704提供,且“如果(条件)”可由Comp ALU 702及多路复用功能706提供。
[0047]如随后参考图10的指令的格式所描述,可由指令提供操作数及算子或所述指令可指示操作数值位于哪一寄存器。举例来说,0PERAND1 (Rl)可位于寄存器R1中,OPERAND(R2)可位于寄存器R2中,OPERAND(R3)可位于寄存器R3中,OPERAND (R4)可位于寄存器R4中。
[0048]ALUl 703及ALU2 704可执行相同运算或不同运算。换句话说,0PERAT0R1可与0PERAT0R2 相同或者OPERATOR I 可不同于0PERAT0R2。
[0049]ALU Out 701可具有操作数输入1?5及1?6(例如,寄存器1?5及1?6)以及命令输入0PERAT0R3。通过ALU Out 701对来自抱及办的值执行命令0PERAT0R3所产生的结果Rd确定执行单元113的结果所存储的地方。
[0050]Comp ALU 702可具有操作数输入R7及R8(例如,寄存器R7及R8)以及命令输入0PERAT0R4。如先前所讨论,对来自R7及R8的值执行命令0PERAT0R4的结果确定多路复用功能106的选择。
[0051 ]在以上ALU 701 到704中可用作命令(例如,0PERAT0R1、0PERAT0R2、0PERAT0R3、0PERAT0R4)的典型运算可包含加法、减法、逻辑AND、逻辑OR、逻辑NOT、逻辑NOR、等于、小于或等于、小于、不等于、大于或等于或者大于。这些运算仅为出于图解目的,这是因为其它实施例可使用其它运算。
[0052]图7B图解说明程序计数器执行单元(PCEU)IH的架构。此架构可类似于执行单元O至Ijn 113,但没有了ALU Out 701。由于PCEU 114可专用于确定程序计数器107的新地址,因此由于用以存储PCEU 114运算的结果的位置将为程序计数器107而不包含ALU Out 701。
[0053]PCEU 114可包含具有操作数输入R9及RlO以及命令输入0PERAT0R5的Comp ALU710oALUl 711可包含操作数输入Rll及R12以及命令输入0PERAT0R6JLU2 712可包含操作数输入Rl 3及Rl 4以及命令输入0PERAT0R7。
[0054]ALUl 711及ALU2 712的输出可输入到多路复用功能714<Xomp ALU 710的输出可提供用于多路复用功能714的选择信号。因此,如在先前所描述执行单元113中,PCEU 114可提供如果-则-否则语句,其中多路复用功能714提供“如果某一条件”,其中所述条件是由Comp ALU 710确定。因此,如果条件为真,则由Comp ALU 710的输出选择一个ALU(例如,ALUl 711)的输出,否则由Comp ALU 710的输出选择另一ALU(例如,ALU2 712)的输出。可将结果加载到程序计数器107中。
[0055]如在先前所描述执行单元113中,可从来自指令存储器的指令加载待用于PCEU114中的算子及命令或者所述指令可指示哪一寄存器可含有值。
[0056]图8图解说明解析器115的框图。解析器115可包含存储器写入端口,所述存储器写入端口包含待写入的地址以及数据。存储器读取地址端口可向存储器提供将从中进行读取的地址,使得可将所读取数据读取到存储器读取数据端口中。当存储器读取操作完成时,解析器115还可输出存储器读取指示信号。解析器115可进一步包含到执行单元113的输出、来自寄存器堆109的输入及来自解析器解码逻辑502的配置输入。
[0057]解析器115可具有对存储器100的直接存取,使得其可从存储器100的页缓冲器117直接读取或写入到页缓冲器117。解析器115可存取页缓冲器117的整个长度,使得为使处理较可管理,其可将页缓冲器117细分成较小分段(例如,经规则定义的分段)。举例来说,解析器115可对页缓冲器的前100字节操作,接着对接下来的100字节操作,且继续此直到已读取/写入整个页缓冲器117为止。为实现此,可对解析器115给出来自包解析器101的地址,所述包解析器确定待从页缓冲器117读取页缓冲器117的哪一分段。
[0058]解析器115可从寄存器堆109接收配置输入,所述配置输入可为解析器115指示解析页缓冲器117的内容的方式。解析器115可产生存储器读取指示信号,所述存储器读取指示信号为执行程序指示新内容可用于寄存器堆109中。
[0059]图9图解说明包产生器111的实施例的框图。所述包产生器可包含来自指令存储器105及寄存器堆109的输入以及到指令存储器105及寄存器堆109的输出。包产生器111另外具有到网络的输出以便输出任何所产生包。
[0060]包产生器111可产生针对指令存储器105的地址及针对寄存器堆109的地址以便从这些元件105、109读取数据。包产生器111可接着使用来自寄存器堆109的读取数据(例如,来自指令存储器105的指令及上下文(例如,数据、来自存储器读取的结果、来自所执行操作的结果)),捆绑此数据并产生待经由网络发射的包。
[0061]图10图解说明根据图1的实施例的指令执行的格式的实施例。每一指令1001到1003可存储于指令存储器中以供由执行单元113执行。
[0062]指令的所图解说明实施例包含四个指令1000到1003。每一指令可与执行单元113的不同ALU相关联。因此,如果执行单元113包含不同数量的ALU,执行格式可包含不同数量的指令1000到1003。在以下讨论中参考图10及图7A的ALU两者。
[0063]第一指令1000(例如,指令D)可表示由执行单元113中的一者进行的运算的结果的目的地寄存器(例如,Rd)。如先前所讨论,ALU Out 701可产生其中存储有执行单元113的结果的目的地寄存器Rd的地址。因此,ALU Out 701可与第一指令1000相关联以用于产生寄存器Rd ο
[0064]第二指令1001(例如,指令C)可表示由执行单元113表示的如果-则-否则语句的条件。在所图解说明实施例中,条件由比较值Vc表示。如先前所讨论,Comp ALU 702可产生用作用于多路复用功能706的选择信号的条件。因此,Comp ALU 702可与第二指令1001相关联以用于比较Vc是否为真。
[0065]第三指令1002(例如,指令T)可表示由执行单元113表示的如果-则-否则语句的“则”结果。在所图解说明实施例中,由Vt-如果为真的值表示“则”结果。如先前所讨论,ALUl703可产生“则”结果。因此,ALUl 703可与第三指令1002相关联以使“则”结果成为Vt。
[0066]第四指令1003(例如,指令F)可表示由执行单元113表示的如果-则-否则语句的“否则”结果。在所图解说明实施例中,由Vf-如果为假的值表示“否则”结果。如先前所讨论,ALU2 704可产生“否则”结果。因此,ALU2 704可与第四指令1003相关联以实现Vf的“否则”结果。
[0067]使用条件VC、“则”结果Vt、“否则”结果Vf及结果寄存器Rd,如果-则-否则语句可通过以下表示:
[0068]如果(Vc==真)
[0069]贝Ij
[0070]Reg[Rd]: =Vt[0071 ] 否则
[0072]Reg[Rd]: =Vf
[0073]图11图解说明可并入有图1的自主存储器处理设备130的存储器系统的实施例的框图。存储器系统可包含可经由网络1120与一个或多个存储器装置(例如,SSD) 1101、1102通信的控制器1100(例如,CPU)。网络1120可为有线总线或无线通信(例如,WiFi)。
[0074]存储器装置1101可包含本地存储器100(例如,RAM、DRAM、SRAM、NAND快闪、NOR快闪、相变存储器(PCM))以及图1的自主存储器处理设备130,所述本地存储器构成存储器装置1101的存储部分。自主存储器处理设备130可相对接近于存储器100而定位(例如,同一裸片、同一裸片堆叠、同一存储器模块)。举例来说,自主存储器处理设备130可包含于处于存储器100的存储体等级的电路中。每一存储体可具有不同自主存储器处理设备130,使得一个存储器芯片可具有基本上同时操作的自主存储器处理设备130的多个实例。如本文中所使用,本地存储器100可为不经由网络便能连接到自主存储器处理设备130的存储器。
[0075]图11的系统的装置中的每一者可被视为节点。每一节点可经由网络1120与其它节点通信。节点中的每一者可基本上类似或者节点中的一者或多者可具有不同架构。举例来说,第一存储器装置1101可具有除程序计数器执行单元114以外的仅单个执行单元113,而第二存储器装置1102可具有除程序计数器执行单元114以外的一个以上执行单元113。
[0076]因此,如随后所描述,控制器1100(例如,源节点)可将含有指令及源节点的当前处理状态的消息(例如,包)发送到存储器装置1101(例如,目标节点)。在另一实施例中,第一存储器装置1101可为源节点而第二存储器装置1102可为目标节点。
[0077]指令可包含对存储器装置1101的命令(例如,搜索、分类、比较)。存储器装置1101可在不受控制器干预的情况下执行由命令指示的任务。自主存储器处理设备130可发送并接收去往及来自其它节点1100、1102的消息、发送并接收去往及来自其它节点1100、1102的处理指令及状态、还原并保存程序状态、执行处理指令、读取并写入本地存储器及/或支持单个节点中的多个处理上下文。
[0078]自主存储器处理设备130架构可提供添加及移除执行单元113(例如,包括ALU)的动态、无缝灵活性,因此视需要赋予节点额外处理能力。可在以下操作实例中图解说明执行单元113在自主存储器处理设备130中的动态添加及移除。
[0079]可产生如下典型现有技术程序:
[0080]指令I (ADD寄存器1、寄存器2、寄存器3)[0081 ] 指令2(SUB寄存器2、寄存器3、寄存器4)
[0082]如在典型现有技术CPU系统中,这些指令中存在所暗示相依性。举例来说,指令2可不能在指令I之前(或与指令I在同一循环中)执行,这是因为在指令I有机会执行之前,寄存器2中的值将被覆写。
[0083]在自主存储器处理设备架构中,可使用较复杂执行单元(EU)架构以便较少用以执行程序所需的循环的数目。每一EU可含有各自执行相异任务的若干不同ALU(例如,四个ALU)。因此,可产生如下针对自主存储器处理设备所写入的程序(假定具有一个EU加PCEU的架构):
[0084][ PCEU 指令 I] [EUl 指令 I]
[0085][PCEl^$2][EUUg$2]
[0086]每一[EU#指令#]可如下显现,如图10中所图解说明:
[0087][目的地指令][比较指令][如果-真指令][如果-假指令]
[0088]同样,作为自主存储器处理设备架构的部分,处理器可具有嵌入于其内的不同数目个EU。此可实现具有四个EU及一个PCEU的架构,举例来说:
[0089][ PCEU 指令 I ] [EUl 指令 I ] [EU2 指令 I ] [EU3 指令 I ] [EU4 指令 I ]
[0090][PCEU 指令 2] [EUl 指令 2] [EU2 指令 2] [EU3 指令 2] [EU4 指令 2]
[0091]由于在此循环中可不存在待执行的额外工作的事实,因此这些EU指令中的任一者可为空的。此可由于在程序的特定阶段缺少并行性。
[0092]自主存储器处理设备架构可在系统中的一组异构自主存储器处理设备引擎之间实现互动(例如一个设备(“A”)可具有一个EU加PCEU,而同一互连系统中的另一设备(“B” )可具有4个EU加PCEU)。如果假定在此情景中,设备A需要将其上下文发送到设备“B”,可将程序封装成指令的顺序流且将其运送到设备“B”。设备“B”可接着以与如下相同的方式在其硬件上调度所述程序:
[0093][PCEU 指令I] [EUl 指令I][空][空][空]
[0094][PCEU 指令 2] [EUl 指令 2][空][空][空]
[0095]...
[0096]此可导致并行性损失,从而在系统中造成效率低下,这是因为每一程序最终将接近最窄的自主存储器处理设备。
[0097]在不确保在指令之间不存在任何相依性的情况下,可不将指令捆绑到并行EU中。由于此种比较在典型现有技术系统中可为计算上昂贵的,因此自主存储器处理设备可使用指令“栅栏”旗标的概念。“栅栏”旗标使应用程序写入器或编译器能够标记指令流不再对所述流中的先前指令具有任何相依性的地方。此信息可使指令流能够在不需要显著处理额外开销的情况下在一组异构处理器上传送并调度。
[0098]举例来说,以下指令流:[PCEU指令][EU指令I] [EU指令2] [EU指令3][栅栏标记/指令][EU指令4] [EU指令5] [EU指令6] [EU指令7][栅栏旗标/指令]可以以下方式在自主存储器处理设备“A”上进行调度(其中[F]指示“栅栏”标记):[PCEU][1][PCEU][2][F][PCEU][3][PCEU] [4] [PCEU] [5] [PCEU] [6] [F] [PCEU] [7],且可在自主存储器处理设备“B”中调度为:[PCEU][1][2][3][X][F][PCEU][4][5][6][7]0
[0099]“栅栏”指令可在其被加载到给定自主存储器处理设备(例如,“A”或“B” )的指令存储器中时由包传入逻辑处理。“栅栏”旗标的存在可存储于指令存储器中,但其在调度的上下文外部可为无意义的。然而,“栅栏”旗标经存储为指令存储器中的旗标,使得包传出逻辑可重建原始流。
[0100]作为自主存储器处理设备的操作的实例(例如,存储器搜索),可由包解析器101从网络(例如,存储器网络)接收包。包解析器101可将包解析成分段。一些分段可为上下文,这是因为其可含有表示当包离开前一节点时所述前一节点所处的状态的寄存器内容。
[0101]包可含有指令存储器105中用于待执行程序的开始位置。可将此开始点加载到程序计数器107中。包还可含有待加载到指令存储器105中的指令集及可加载到寄存器堆109中的一组初始条件。初始条件可为通过指令从前一节点发送的变量。初始条件也可为以供由当前执行的程序使用的常数。
[0102]程序计数器107中的值确定从指令存储器105读取哪一指令以供执行。程序计数器107中的下一值可为来自前一值的增量或由程序计数器执行单元114确定的所计算值。
[0103]指令可设定解析器115的配置。解析器115可通过指令的执行经配置以从页缓冲器117移除变量且最终执行存储器读取操作。
[0104]当存储器读取操作发生时,变量可实时地移出页缓冲器117内容且向执行单元113呈现为输入。可从寄存器堆读取其它潜在输入,如通过程序指令所确定,且可向执行单元113呈现所述潜在输入以供处理。如先前所描述,“栅栏”可提供并行执行数个连续指令的能力。无法并行执行的指令可被推迟且在后一循环期间执行。
[0105]执行单元113可将那些输入变元处理为多组输入变元,每一组均并行处理。因此,多个执行单元113可产生输出变量,所述输出变量可接着被传送回到寄存器堆,被传送到解析器115以最终作为用于一个或多个存储器写入操作的数据而写入到页缓冲器117,或者输出变量可进入寄存器堆中以产生某一特定动作。所述动作可为由包产生器111产生包或起始新的存储器读取或存储器写入操作。
[0106]可向包产生器111呈现待包含于包中的页缓冲器117内容(例如,搜索命令的结果)以经由网络将其发射到请求节点。所述包可包含到请求节点的指示任务(例如,搜索)已完成且结果包含于包中的消息。
[0107]作为较广泛的操作实例,网络可包含自主存储器装置组构(fabric),每一自主存储器装置均包含至少一个自主存储器处理设备。数据群组可跨存储器装置组构而存储。当期望搜索整个数据群组来寻求特定数据列表时,可将搜索程序推动到一个自主存储器装置中以搜索所述装置来寻求特定数据列表。当程序确定已搜索存储于所述特定自主存储器装置内的数据且不存在来自列表的所有数据时,可将程序捆绑成一个或多个包且将其传送到另一自主存储器装置,其中所述装置的自主存储器处理设备可继续搜索。程序的此捆绑可继续直到已搜索自主存储器装置的整个组构或已完成数据列表。在一些实施例中,也可将存在于特定自主存储器装置中的数据随程序一起捆绑成包以供传送。
[0108]在图12的流程图中图解说明此实施例。所图解说明方法可在图11的系统中由自主存储器装置1101中的自主存储器处理设备130执行。
[0109]存储器装置1101可接收经提供到自主存储器处理设备130的包1201。设备130可解析包1203以移除指令、程序计数器及数据,如先前所讨论。接着可执行指令1205以对存储于存储器100中的数据执行所要任务。接着可将所述指令及由所述指令所产生的任何数据捆绑成包1207以供在网络1209上发射。
[0110]设备可被定义为电路、集成电路裸片、存储器装置、存储器阵列或系统。
[0111]结论
[0112]自主存储器装置内的自主存储器处理设备的一个或多个实施例可执行指令的处理以释放传统基于CPU的计算系统的存储器带宽瓶颈。可在节点当中传送含有指令集(例如,程序)及/或数据的包,使得可独立于来自源节点或CPU的控制而通过指令对那些节点中的存储器中的数据进行操作。
[0113]尽管本文中已图解说明及描述特定实施例,但所属领域的技术人员将了解,任何经计算以实现相同目的的任何配置均可替代所展示的特定实施例。许多更改对所属领域的技术人员来说将是显而易见的。因此,本申请案打算涵盖任何更改或变化。
【主权项】
1.一种方法,其包括: 在自主存储器装置处接收指令集; 在所述存储器装置中执行所述指令集; 将所述指令集与响应于所述指令集而从所述存储器装置恢复的任何数据组合成包;及 从所述存储器装置发射所述包。2.根据权利要求1所述的方法,其中在所述存储器装置处接收所述指令集及从所述存储器装置发射所述包分别包括:从耦合到所述存储器装置的网络接收所述指令集及将所述包发射到所述网络。3.根据权利要求1所述的方法,其中接收所述指令集包括接收包括所述指令集的包,且所述方法进一步包括解析所述所接收包,所述方法包括: 给程序计数器加载与所述所接收指令集相关联的初始程序计数器值; 给指令存储器加载所述指令集;及 给寄存器堆加载与所述指令集相关联的一组初始条件。4.根据权利要求3所述的方法,其中执行所述指令集包括: 在执行所述指令集的第一指令之后计算新程序计数器值;及 将所述新程序计数器值存储于所述程序计数器中。5.根据权利要求1所述的方法,其中执行所述指令集包括:在第一执行单元中执行第一指令且在第二执行单元中执行第二指令,其中所述第一及第二指令的所述执行是基本上并行的。6.根据权利要求1所述的方法,其中所述存储器装置为多个节点中的第一节点,且从所述存储器装置发射所述包包括将所述包发射到所述多个节点中的第二节点。7.根据权利要求6所述的方法,且其进一步包括: 从所述多个节点中的第三节点接收初始条件;及 将所述初始条件存储于文件寄存器中。8.根据权利要求1所述的方法,其中所述指令集包括栅栏旗标,且存储所述指令集包括: 将在所述栅栏旗标之前的一个或多个指令存储于指令存储器中,且将在所述栅栏旗标之后的一个或多个指令存储于所述指令存储器中。9.根据权利要求8所述的方法,且其进一步包括: 在第一执行单元中执行在所述栅栏旗标之前的所述一个或多个指令;及 在第二执行单元中执行在所述栅栏旗标之后的所述一个或多个指令。10.根据权利要求9所述的方法,其中执行在所述栅栏旗标之前的所述一个或多个指令是与执行在所述栅栏旗标之后的所述一个或多个指令基本上同时执行的。11.根据权利要求1所述的方法,其中执行所述指令集包括: 向程序计数器执行单元提供多个操作数; 向所述程序计数器执行单元提供算子;及 响应于来自所述算子对所述多个操作数的执行的结果而产生经更新程序计数器值。12.—种设备,其包括: 包解析器,其经配置以接收包括指令及开始位置的包; 指令存储器,其耦合到所述包解析器且经配置以接收所述指令; 程序计数器,其耦合到所述指令存储器及所述包解析器,所述程序计数器经配置以最初从所述包解析器接收所述开始位置且从所述指令存储器在所述开始位置检索指令;多个执行单元,其耦合到所述指令存储器以用于执行所述指令; 解析器,其耦合到所述多个执行单元,所述解析器经配置以控制数据从本地存储器的读取; 寄存器堆,其耦合到所述解析器及所述指令存储器,且经配置以存储来自所述解析器及所述包解析器的数据;及 包产生器,其耦合到所述指令存储器及所述寄存器堆,所述包产生器经配置以产生包以供发射,所述包包括指令集及所述数据。13.根据权利要求12所述的设备,其中所述多个执行单元中的每一者包括: 多个算术逻辑单元ALU ;及 多路复用功能,其耦合于所述多个所述算术逻辑单元中的至少两者的输出之间。14.根据权利要求13所述的设备,其中所述多个ALU包括与来自所述指令的每一指令相关联的ALU。15.根据权利要求13所述的设备,其中所述多个执行单元中的每一者实施如果-则-否则语句。
【文档编号】G06F12/00GK105874436SQ201480072099
【公开日】2016年8月17日
【申请日】2014年12月1日
【发明人】肯尼思·M·丘尔维茨, 肖恩·艾勒特, 亚明·D·艾卡尔, 王宏育
【申请人】美光科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1