用于数据路径内计算操作的设备及方法与流程

文档序号:19159575发布日期:2019-11-16 01:11阅读:212来源:国知局
用于数据路径内计算操作的设备及方法与流程

本发明大体上涉及半导体存储器及方法,且更特定来说,涉及用于数据路径内计算操作的设备及方法。



背景技术:

存储器装置通常提供为计算机或其它电子系统中的内部半导体集成电路。存在许多不同类型的存储器,包含易失性存储器及非易失性存储器。易失性存储器可需要电力来维持其数据(例如,主机数据、错误数据等),且包含随机存取存储器(ram)、动态随机存取存储器(dram)、静态随机存取存储器(sram)、同步动态随机存取存储器(sdram)与晶闸管随机存取存储器(tram)等。非易失性存储器可在未供电时通过留存存储数据而提供永久性数据,且可包含nand快闪存储器、nor快闪存储器及电阻可变存储器(例如相变随机存取存储器(pcram))、电阻性随机存取存储器(rram)及磁阻性随机存取存储器(mram),例如自旋力矩转移随机存取存储器(sttram)等。

电子系统通常包含数个处理资源(例如,一或多个处理器),所述处理资源可检索及执行指令且将所述经执行指令的结果存储到合适位置。处理器可包括数个功能单元(例如算术逻辑单元(alu)电路、浮点单元(fpu)电路及组合逻辑块),举例来说,所述功能单元可用于通过对数据(例如,一或多个操作数)执行运算而执行指令。如本文中所使用,运算可为(例如)布尔(boolean)运算(例如and、or、not、not、nand、nor及xor),及/或其它运算(例如,反相、移位、算术、统计以及许多其它可能运算)。举例来说,功能单元电路可用于经由数个运算对操作数执行算术运算,例如加法、减法、乘法及除法。

在提供指令到功能单元电路以供执行时可涉及电子系统中的数个组件。可例如通过处理资源(例如控制器及/或主机处理器)执行所述指令。数据(例如,将对其执行指令的操作数)可存储于可通过功能单元电路存取的存储器阵列中。可从所述存储器阵列检索指令及/或数据,且可在功能单元电路开始对所述数据执行指令之前序列化及/或缓冲所述指令及/或数据。此外,由于可通过功能单元电路以一或多个时钟循环执行不同类型的运算,所以还可序列化及/或缓冲所述指令及/或数据的中间结果。在一或多个时钟循环中完成运算的序列可被称为运算循环。就计算设备及/或系统的处理及计算性能及电力消耗来说,完成运算循环所消耗的时间成本较高。

在许多例子中,处理资源(例如,处理器及相关联功能单元电路)可在存储器阵列外部,且可经由所述处理资源与所述存储器阵列之间的总线存取数据以执行指令集。可改进其中可在存储器内部及/或附近(例如,直接在与存储器阵列相同的芯片上)实施处理及/或逻辑资源的存储器中处理(pim)装置中的处理性能。存储器中处理(pim)装置可通过减小及消除外部通信而节省时间且还可节约电力。

附图说明

图1a是根据本发明的数个实施例的呈包含存储器装置的计算系统的形式的设备的框图。

图1b是根据本发明的数个实施例的呈包含存储器装置(其具有在阵列的存储器库区段本地的数据路径中的共享输入/输出(i/o)线)的计算系统的形式的设备的另一框图。

图2是说明根据本发明的数个实施例的存储器装置的电路的示意图,所述电路包含感测放大器及计算组件,其可包含于感测电路及/或逻辑条中。

图3是说明根据本发明的数个实施例的用于阵列的数据路径中的多个共享i/o线的电路的示意图。

图4是说明根据本发明的数个实施例的通过在阵列本地的数据路径中的多个共享i/o线耦合到具有多个逻辑条的计算单元的所述阵列的多个区段的框图。

图5是说明根据本发明的数个实施例的存储器装置的控制器的实例的框图。

图6是说明根据本发明的数个实施例的存储器装置的控制器的另一实例的框图,所述控制器使用共享i/o线控制数据值到具有多个逻辑条的计算单元的移动。

图7是说明根据本发明的数个实施例的逻辑条的计算组件的示意图。

图8是说明根据本发明的数个实施例的通过图7中所展示的计算组件实施的可选择逻辑运算结果的逻辑表。

图9a到9c是说明根据本发明的数个实施例的用于在存储器装置中对数据值执行运算的数个调度策略的实施方案的示意图。

具体实施方式

本发明包含用于数据路径内计算操作的设备及方法。在至少一个实施例中,设备包含具有存储器单元阵列的存储器装置及可选择地耦合到所述存储器单元阵列的感测电路。在各种实施例中,存储器装置可为存储器中处理(pim)装置且感测电路可包含感测放大器。多个输入/输出(i/o)线共享为用于与阵列相关联的数据路径内计算操作的数据路径(例如,感测电路可选择地耦合到存储器单元列及/或共享i/o线)。

多个共享i/o线将阵列的行的第一子行经由感测电路可选择地耦合到数据路径中的第一计算组件以将第一数据值从第一子行移动到第一计算组件。如本文中所使用,“子行”希望意味着存储预定数目个数据值的阵列的行的预定存储器单元子集。举例来说,行的一个子行可为具有16,384(16k)个存储器单元的行的预定1024(1k)个存储器单元,借此导致所述行的16个子行(例如,如在428-1、428-2、…、428-16处展示且结合图4及本文中其它处描述)。多个共享i/o线将相应行的第二子行经由感测电路可选择地耦合到数据路径中的第二计算组件以将第二数据值从第二子行移动到第二计算组件。使用第一计算组件对来自第一子行的第一数据值执行运算(例如,如通过控制器引导),大体上同时将第二数据值从第二子行移动到第二计算组件。

例如第一及第二的序数在本文中用于协助关联及/或区分类似及/或可选择地耦合的组件(例如,存储器单元子阵列、数据值及相关联计算组件、存储器单元子行及相关联计算组件、逻辑条及相关联计算组件、连接电路及相关联计算组件及/或逻辑条等)且并非用于指示组件之间的特定排序及/或关系,除非上下文另有明确规定(例如,通过使用例如相邻等的术语)。

举例来说,第一数据值从存储器阵列的第一行经由共享i/o线到第一逻辑条的第一计算组件的移动希望指示来自特定行的特定子行(例如,其可为(但未必)子行序列中的第一子行)的特定数据值可移动到特定逻辑条的特定计算组件(例如,其中的每一者可为(但未必)计算组件及/或逻辑条序列中的第一者)。类似地,来自第一行的第二子行(其可为相邻于先前提及的第一子行的下一子行但可为(但未必)子行序列中的第二子行)的第二数据值的移动希望指示来自相同行的第二子行的特定数据值可移动到不同逻辑条的特定计算组件。举例来说,参考第二数据值移动到第二逻辑条的第二计算组件是用于使第二数据值与不同于先前称为此类组件的第一者的计算组件及/或逻辑条相关联。因而,第二计算组件可为(但未必)第二逻辑条的计算组件序列中的第一计算组件及/或第二逻辑条可为(但未必)逻辑条序列中的第二逻辑条。

类似地,如本文中所描述,控制器经配置以在第一操作循环中引导第一子行的数个多个数据值到第一逻辑条的对应数目个多个第一计算组件的第一并行移动(例如,经由共享i/o线)希望指示控制器可在特定操作循环中(例如,在约2纳秒(ns)到60纳秒(ns)的时间帧中)引导对应于第一子行的多个数据值的特定数目个数据值到第一逻辑条的相同数目个计算组件的移动的执行。控制器经配置以在第二操作循环中引导第二子行的数个多个数据值到第二逻辑条的对应数目个多个第二计算组件的第二并行移动希望指示控制器可在第二操作循环中(例如,其可为(但未必)下一(例如,相邻)2ns到60ns时间帧)引导对应于第二子行的多个数据值的特定数目个数据值到第二逻辑条的相同数目个计算组件的移动的执行。第二子行的多个数据值及/或第二逻辑条的第二计算组件的特定数目可为(但未必)与第一子行的数据值及/或第一逻辑条的第一计算组件的数目相同的数目。

共享i/o线(例如,如在155处展示且结合图1b及本文中其它处描述)用作与存储器阵列(例如,如在130处展示且结合图1a及本文中其它处描述)相关联的数据路径。共享i/o线将感测电路(例如,如在150处展示且结合图1a及本文中其它处描述)耦合到共享i/o线的数据路径中的计算组件(例如,如在231处展示且结合图2及本文中其它处描述)。与共享i/o线的数据路径相关联的计算组件具有等于数据路径的间距的间距且所述间距依据存储器单元阵列的数字线(例如,如在205处展示且结合图2及本文中其它处描述)的间距而变化。举例来说,计算组件具有间距,其是存储器单元阵列的数字线的间距的整数倍。

如本文中所使用,“共享i/o线”希望意味着在数据路径中的阵列本地的i/o线,所述数据路径具有依据存储器单元阵列的间距而变化的间距。共享i/o可定位于存储器阵列的存储器库(例如,如在121-1处展示且结合图1b及本文中其它处描述)上且可经多路复用到所述阵列的多个列(例如,dram阵列的互补数字线)。共享i/o不同且相异于与阵列相关联的i/o电路,其希望根据阵列协议(例如ddr4)往返于阵列移动数据及/或结合主机(例如,如在110处展示且结合图1a及本文中其它处描述)将数据移到及移出存储器装置(例如,如在120处展示且结合图1a及本文中其它处描述)。

在一些实施例中,计算组件可在与数据的共享i/o线相关联的逻辑条(例如,如在124-1、124-2、…、124-n处展示且结合图1b及本文中其它处描述)中。阵列可具有用于阵列本地的数据路径的多个共享i/o线且每一逻辑条可具有多个计算组件(例如,如在431-1、431-2、…、431-z处展示且结合图4及本文中其它处描述)。多个计算组件中的每一者与数据路径的多个共享i/o线中的至少一者相关联。在一些实施例中,多个计算组件中的每一者中的一者可与数据路径的多个共享i/o线中的特定一者相关联。

在各种实施例中,多个计算组件中的每一者可移位到数据路径的多个共享i/o线中的另一者。举例来说,行(例如,如在319处展示且结合图3及本文中其它处描述)的数个列及/或存储器单元(例如,16,384个列及/或存储器单元以及其它可能配置)可经多路复用,使得例如通过选择耦合到所述列中的连续多个行及/或存储器单元且经由多个共享i/o线(例如,1024个个别共享i/o线)并行移动数据而获得16个子行(16个子行各具有1024个相邻行及/或存储器单元,如在图4中所展示),使得来自连续存储器单元的数据值(例如,1024个数据值)可并行移动。替代地或另外,所述列的数个行及/或存储器单元可经多路复用,例如使得可通过选择耦合到所述行中的每十六个列及/或存储器单元且经由共享i/o线并行移动数据值而获得16个子行,使得来自每十六个存储器单元的数据值(例如,1024个数据值)可并行移动。在一些实施例中,阵列可为dram阵列且用于感测及/或放大选定存储器单元中的数据值的感测电路可包含感测放大器及/或计算组件。

存储器装置120包含控制器(例如,如在140处展示且结合图1a及本文中其它处描述)。除其它功能以外,控制器140还可经配置以引导数据值从阵列中的存储器单元行(例如,其选定子行)到与数据路径的多个共享i/o线中的一者相关联的计算组件的移动(例如,经由与控制器相关联的移动组件171)。

如下文更详细描述,实施例可允许主机系统分配一或多个dram存储器库中的数个位置(例如,阵列、子阵列及/或子阵列的部分,例如行及其子行)以保持(例如,存储)及/或处理数据。主机系统及控制器可对整个块的程序指令(例如,pim命令指令)及数据执行地址解析且引导(例如,控制)数据及命令分配、存储及/或移动(例如,流动)到目的地(例如,目标)存储器库内的经分配位置(例如,子阵列及子阵列的部分)中。在dram阵列中写入及/或读取数据及/或执行命令(例如,移动数据值以用于通过逻辑条执行运算,如本文中所描述)可利用dram装置的正常dram读取/写入路径。如读者将了解,虽然关于在本文中提呈的数据路径内计算操作的实例论述pim装置的dram型存储器阵列,但实施例不限于pimdram实施方案。

本文中所描述的存储器装置可使用针对子阵列的存储器库的数个控制器、针对个别子阵列的控制器及/或针对锁存器组件的控制器(例如,每一控制器为序列发生器、状态机、微控制器、子处理器、alu电路或某一其它类型的控制器)来执行指令集以对数据(例如,一或多个操作数)执行运算。如本文中所使用,运算可为例如布尔逻辑运算(例如and、or、not、not、nand、nor及xor),及/或其它运算(例如,反相、移位、算术、统计以及许多其它可能运算)。举例来说,功能单元电路可用于经由数个逻辑运算对操作数执行算术运算,例如加法、减法、乘法及除法。

本发明描述实现对通过存储器单元存储的数据值(例如,在移动到计算组件时,如本文中所描述)执行数据路径内计算操作(例如,pim运算,例如and、or、刷新、行复制、移位、加法、乘法等),大体上同时对来自相同存储器库、所述相同存储器库中的相同子阵列及/或所述相同子阵列中的相同行(例如,在dram阵列中,以及其它类型的存储器阵列中)的数据值执行例如读取及/或写入操作。举例来说,可对存储于子阵列的行中的存储器单元子行中的数据值执行移动操作,大体上同时如控制器及/或主机引导那样对先前移动到数据路径中的计算组件(例如,到选定逻辑条)的相同数据值执行例如逻辑运算,如本文中所描述。

因此,当子行经激活以在阵列中经感测时,通过所述子行的存储器单元存储的多个数据值(例如,整个行的数据值)可移动(例如,复制、传送及/或输送)到与阵列相关联的数据路径中的对应多个计算组件(例如,其各自形成计算单元(例如,如在460处展示且结合图4及本文中其它处描述)中的逻辑条424的至少部分)。多个共享i/o线将数据值耦合到数据路径中的多个计算组件。在一些实施例中,计算单元中的数个逻辑条的多个计算组件可与阵列的存储器库的每一存储器库区段相关联。与共同i/o相关联的计算组件可经配置以耦合(例如,直接或间接连接,如本文中所描述)到阵列本地的共享i/o的数据路径。在一些实施例中,计算组件431、逻辑条424及/或计算单元460可进一步耦合到连接到存储器装置外部的主机110的数据总线及/或耦合到将阵列的存储器库连接到存储器装置上的阵列的另一存储器库的数据总线。

在一些实施例中,本发明描述在感测行时,所述行中的数据值(例如,来自所述行中的所有16,384(16k)个存储器单元的数据值)可经移动以存储(例如,高速缓冲存储)于锁存器组件(例如,感测放大器)中以进一步在共享i/o线上移动到阵列本地的共享i/o的数据路径中的计算单元中的逻辑条。在一些实施例中,2048(2k)个共享i/o线可经配置为2k位宽共享i/o线。根据一些实施例,可通过将与阵列中的存储器单元行交叉的阵列中的列数除以多个共享i/o线的2k位宽度而确定用于将数据从源位置中的第一行移动到目的地位置中的第二行的循环数目。举例来说,阵列(例如,存储器库、存储器库区段或其子阵行)可具有16k个列,其可对应于行中的16k个数据值,其在除以与行交叉的多个共享i/o线的2k位宽度时可产生八个循环,每一单独循环处于用于移动行中的数据的每一2k位分率的大体上相同时间点(例如,并行),使得在完成八个循环之后移动行中的所有16k个数据位。举例来说,源位置的感测电路350中的多个(例如,八的子集,如在图3中展示)感测放大器306或计算组件331中的仅一者可同时耦合到相应共享i/o线355。在具有16k个共享i/o线的实施例中,可并行移动所有16k个数据位。

在一个实例中,2k个数据值可通过八路多路复用器通过2k个共享i/o线从16k个列(例如,数字线对)的2k个感测放大器同时(例如,并行)多路复用到计算单元的每一逻辑条中的2k个计算组件(例如,每一逻辑条具有2k个计算组件)(例如,以存储及/或处理总共2k个位)。在一些实施例中,计算单元可具有八个逻辑条以每逻辑条存储2k个数据值,借此每计算单元能够存储已在八个循环中通过2k个共享i/o线移动的16k个数据值。在另一实例中,1k个数据值可通过十六路多路复用器通过1k个共享i/o线从16k个列的1k个感测放大器同时多路复用到计算单元的逻辑条中的1k个计算组件(例如,每一逻辑条具有1k个计算组件)(例如,以存储及/或处理总共1k个位)。在一些实施例中,计算单元(例如,如在460处展示且结合图4描述)可具有十六(16)个逻辑条以每逻辑条存储1k个数据值,借此每计算单元能够存储已在16个循环中通过1k个共享i/o线移动的16k个数据值。举例来说,16个逻辑条(例如,在424-1、424-2、…、424-n处展示且结合图4描述)中的每一者及每一逻辑条中的1k个计算组件(例如,如在431-1、432-2、…、432-z处展示且结合图4描述)可对应于通过相应1k个共享i/o线从其移动(例如,多路复用)1k个数据值的子行(例如,如在428-1、428-2、…、424-16处展示且结合图4描述)。

因而,从其移动数据值的存储器库、子阵列、行及/或子行中的存储器单元可用于(例如,通过使原始数据值移动到阵列本地的共享i/o的数据路径中的计算单元中的逻辑条而)对存储于其中的其它数据值执行运算。在各种实施例中,每一逻辑条可包含对应于数个计算组件(例如,与其相同或其整数倍)的数个多个锁存器以存储从另一存储器库、子阵列、行及/或子行移动的多个数据值以能够对通过与计算组件相关联的锁存器存储的数据值执行数个运算(例如,逻辑运算)。

如本文中所使用,数据移动是包含性术语,其包含例如将数据值从源位置复制、传送及/或输送到目的地位置。举例来说,数据可从子阵列的感测电路的感测放大器移动到阵列本地的共享i/o线的数据路径中的逻辑条中的计算组件。复制数据值可指示存储(高速缓冲存储)于感测放大器中的数据值经复制及移动到阵列本地的共享i/o线的数据路径中的逻辑条中的计算组件且存储于行的子行中的原始数据值可保持不变。传送数据值可指示存储(高速缓冲存储)于感测放大器中的数据值经复制及移动到阵列本地的共享i/o线的数据路径中的逻辑条中的计算组件且存储于行的子行中的原始数据值中的至少一者可改变(例如,通过经擦除及/或通过后续写入操作,如本文中所描述)。输送数据值可用于指示借以使经复制及/或经传送的数据值移动(例如,通过将数据值从源位置放置于共享i/o线上且输送到目的地位置)的过程。

用于数据路径内计算操作的dram架构的实施方案可在感测放大器及计算组件层级处(例如,在逻辑条中)执行处理。用于数据路径内计算操作的dram架构的实施方案可允许仅有限数目个存储器单元(例如,1k个存储器单元,如上文一个实例中给出)连接到共享i/o线的数据路径中的逻辑条中的计算组件。阵列可包含从约8k到约16k个列(数字线对)及相关联感测放大器。在一些实施例中(例如,如在图4中展示),阵列的存储器库区段423可划分成四个象限且每一象限可具有多个子阵列(例如,32个子阵列)。每一子阵列可具有多个行(例如,512个行)且可耦合到16k个列。如本文中所描述,每一行可包含各自具有1k个存储器单元的16个子行(例如,所述存储器单元的选择构成通过多路复用确定的经由感测电路耦合到特定共享i/o线的1k个存储器单元)。然而,实施例不限于此阐释性实例。

在一些实施例中,作为计算单元的部分的多个逻辑条可与每一象限相关联。举例来说,共享i/o线的数据路径中的计算单元中的每一逻辑条可与存储器库的每一象限中的子阵列相关联。因此,在以上实例中,在阵列本地的共享i/o线的数据路径中的计算单元可具有128个逻辑条(4个象限,一个逻辑条针对每象限32个子阵列中的每一者)。然而,实施例不限于此阐释性实例。在一些实施例中,存储器(例如,dram阵列中的存储器单元)的存储器库可包含dram的64k个行×16k个列以提供约千兆位的存储器。

本发明描述在阵列本地的共享i/o线的数据路径中的计算组件,其可包含用作感测放大器以存储(高速缓冲存储)从与所述阵列相关联的感测电路移动(例如,复制、传送及/或输送)的数据值的多个锁存器。计算组件可在阵列本地的多个共享i/o线的数据路径中的计算单元中的多个逻辑条中使得所述多个逻辑条各自包含总数目个计算组件的子集。逻辑条424-1、…、424-n的计算组件431-1、…、431-z(例如,如结合图4展示及描述)可具有等于在阵列的存储器库121-1本地的多个共享i/o线455的数据路径的间距的间距。在一些实施例中,多个共享i/o线455的数据路径的间距可依据存储器单元阵列的数字线(例如,如在图2中的205-1及205-2及图3中的305-1及305-2处展示)的间距而变化。计算组件431-1、…、431-z及/或逻辑条424-1、…、424-n可通过感测电路150(例如,感测电路的感测放大器206)及/或额外锁存器170(如图1a中所展示)耦合到多个共享i/o线455的数据路径。

因而,用于数据路径内计算操作的架构可促进存储于阵列的行的子行中的数据值移动(例如,复制、传送及/或输送)到阵列本地的多个共享i/o线的数据路径中的计算组件431-1、…、431-z及/或逻辑条424-1、…、424-n。具有感测放大器的感测电路150(其在一些实施例中还可包含如图2中所展示的计算组件)可将来自阵列中的存储器单元的经多路复用列的存储器单元耦合到多个共享i/o线455的数据路径中的计算单元中的计算组件431-1、…、431-z及/或逻辑条424-1、…、424-n。以此方式,计算组件431-1、…、431-z及/或逻辑条424-1、…、424-n可经由操作为多路复用器的列选择电路(例如,如在358处展示且结合图3描述)及相关联选择逻辑(如结合图3到7所论述)通过多个共享i/o线455间接耦合到列的存储器单元。

本文中所描述的存储器阵列架构可提供除刚描述的益处以外的数个益处。可通过例如与执行其它运算(例如,执行ddr4i/o运算)并行地实现对通过存储器单元存储的数据执行的pim运算而增大整体处理速度。举例来说,可在阵列本地的共享i/o线455的数据路径中的具有多个计算组件431-1、…、431-z及/或逻辑条424-1、…、424-n的计算单元中执行pim运算。通过实例且非限制地,一旦将数据值从阵列的子行加载到计算单元中的多个计算组件431-1、…、431-z及/或逻辑条424-1、…、424-n,便可在计算单元中以2ns的速度(相较于触发阵列中的行所需的60ns的实例时间)控制计算操作而无需将所述数据值移动回到所述行中。以此方式,计算组件431-1、…、431-z及/或逻辑条424-1、…、124-n(连同相关联锁存器)可提供经移动数据值的存储以执行特定函数(例如,and、or、nor、xor、加法、减法、乘法、除法等),同时可将子行的原始数据值保存回到行,保存于别处及/或改写。如结合图5及6更多论述,可通过存储器库121的控制器140引导多个共享i/o线的数据路径中的计算单元中的计算组件431-1、…、431-z及/或逻辑条424-1、…、424-n的操作。

在本发明的以下详细描述中,参考形成本发明的部分的附图,且在附图中通过图解展示可如何实践本发明的一或多个实施例。这些实施例经足够详细描述以使所属领域的技术人员能够实践本发明的实施例,且应理解,可利用其它实施例且可在不脱离本发明的范围的情况下作出过程、电及结构改变。

如本文中所使用,指定符例如“x”、“y”、“z”、“n”、“m”等(尤其关于图式中的元件符号)指示可包含如此指定的数个特定特征。还应理解,本文中所使用的术语仅出于描述特定实施例的目的,且并不希望限制。如本文中所使用,除非上下文另有明确规定,否则单数形式“一”及“所述”可包含单数及多个参考物两者。另外,“数个”、“至少一个”及“一或多个”(例如,数个存储器阵列)可是指一或多个存储器阵列,而“多个”意指一个以上此类事物。此外,贯穿此申请案在允许意义上(即,在本文中所描述的至少一些实施例中有可能及/或能够)而非在强制意义上(即,必须)使用字词“可(can及may)”。术语“包含”及其衍生词意味着“包含(但不限于)”。术语“耦合(couple、coupled及coupling)”意味着直接或间接物理连接或用于命令及/或数据的存取及移动(传输),视上下文而定。术语“数据”及“数据值”在本文中可互换使用且可具有相同含义,视上下文而定。

如本文中所描述,多个共享i/o线455可经由耦合到每一阵列的选择逻辑而由多个子阵列、存储器库区段、象限、行、子行及/或存储器单元的特定列可选择地共享。举例来说,包含感测放大器及用于多路复用数个列的可选择数目个子集(例如,总数目个列的8个、16个等列子集)中的每一者的选择逻辑的感测电路150及/或额外锁存器170可选择地耦合到多个共享i/o线455中的每一者以使数据值移动到多个共享i/o线455的数据路径中的计算单元460中的多个计算组件431-1、…、431-z及/或逻辑条424-1、…、424-n。在一些实施例中,可选择地耦合到多个共享i/o线455中的每一者的多个计算组件431-1、…、431-z可对应于可选择地耦合到多个共享i/o线的列数(例如,1k、2k等)。因为单数形式“一”及“所述”在本文中可包含单数及多个参考物两者,所以除非上下文另有明确规定,否则“共享i/o线”可用于指代“一对互补共享i/o线”。此外,“共享i/o线”是“多个共享i/o线”的缩写。

本文中的图遵循编号惯例,其中首位数字或前几位数字对应于图号且剩余数字识别图中的元件或组件。可通过使用类似数字识别不同图之间的类似元件或组件。举例来说,108可指代图1a中的元件“08”,且类似元件可在图2中指代为208。如将了解,可添加、交换及/或消除本文中的各个实施例中所展示的元件,以便提供本发明的数个额外实施例。另外,图中所提供的元件的比例及/或相对尺度希望说明本发明的某些实施例,且不应被视作限制意义。

图1a是根据本发明的数个实施例的呈包含存储器装置120(其包含存储器阵列130)的计算系统100的形式的设备的框图。如本文中所使用,存储器装置120、控制器140、存储器阵列130、感测电路150及/或数个额外锁存器170还可被单独视作“设备”。

如本文中所使用,额外锁存器意味着感测、耦合及/或移动(例如,读取、存储、高速缓存)阵列中的存储器单元的数据值且相异于图3到4及6到7中所展示的多个共享i/o线455的数据路径中的计算单元460中的多个计算组件431-1、…、431-z及/或逻辑条424-1、…、424-n的额外功能性(例如,放大器、选择逻辑)。如图1b中所展示,在阵列本地的多个共享i/o线155的数据路径中的逻辑条124-1、…、124-n可与存储器库121-1中的存储器单元的各种存储器库区段123-1、…、123-n相关联。存储器库121-1可为存储器装置120上的多个存储器库中的一者。

图1a中的系统100包含耦合(例如,连接)到存储器装置120的主机110。主机110可为主机系统,例如个人膝上型计算机、桌上型计算机、数码相机、智能电话或存储卡读取器以及各种其它类型的主机。主机110可包含系统主板及/或底板,且可包含数个处理资源(例如,一或多个处理器、微处理器或某一其它类型的控制电路)。系统100可包含单独集成电路,或主机110及存储器装置120两者可在相同集成电路上。系统100可为例如服务器系统及/或高性能计算(hpc)系统及/或其部分。尽管图1a中所展示的实例说明具有冯·诺伊曼(vonneumann)架构的系统,但本发明的实施例还可实施于非冯·诺伊曼架构中,其可不包含通常与冯·诺伊曼架构相关联的一或多个组件(例如,cpu、alu等)。

为清楚起见,系统100已经简化以聚焦于与本发明特定相关的特征。存储器阵列130可为dram阵列、sram阵列、sttram阵列、pcram阵列、tram阵列、rram阵列、nand快闪阵列及/或nor快闪阵列以及其它类型的阵列。阵列130可包含布置成通过存取线(其在本文中可被称为字线或选择线)耦合的行及通过感测线(其在本文中可被称为数据线或数字线)耦合的列的存储器单元。尽管图1a中展示单个阵列130,但实施例不限于此。举例来说,存储器装置120可包含数个阵列130(例如,dram单元、nand快闪单元的数个存储器库等)。

存储器装置120可包含寻址电路142以锁存通过i/o电路144经由数据总线156(例如,连接到主机110的i/o总线)提供的地址信号(例如,经由局部i/o线及全局i/o线提供到外部alu电路及/或dramdq)。如本文中所使用,dramdq可能够经由总线(例如,数据总线156)将数据输入到存储器库及/或从存储器库输出数据(例如,从控制器140及/或主机110输出数据及/或将数据输入到控制器140及/或主机110)。在写入操作期间,可将电压(高=1、低=0)施加到dq(例如,引脚)。此电压可转变成适当信号且通过选定存储器单元存储。在读取操作期间,一旦完成存取,从选定存储器单元读取的数据值便可出现于dq处且(例如,通过输出启用信号为低)启用输出。在其它时间,dq可处于高阻抗状态中,使得dq未流出或汲入电流且未向系统呈现信号。当两个或两个以上装置(例如,存储器库)共享经组合数据总线时,这还可减少dq争用,如本文中所描述。此类dq是单独的且相异于在阵列130本地的数据路径中的多个共享i/o线155(在图1b中)。

状态及异常信息可(例如)通过频带外(oob)总线157(例如,高速接口(hsi))从存储器装置120的控制器140提供到信道控制器143,又可从信道控制器143提供到主机110。信道控制器143可包含逻辑组件以将多个位置(例如,针对子阵列的控制器)分配于相应存储器库的阵列中以存储与多个存储器装置120中的每一者的操作相关联的各种存储器库的存储器库命令、应用程序指令(例如,针对运算序列)及自变量(pim命令)。信道控制器143可将命令(例如,pim命令)分派给多个存储器装置120以将所述程序指令存储于存储器装置120的给定存储器库121(例如,图1b的121-1)内。

通过寻址电路142接收地址信号且通过行解码器146及列解码器152解码所述地址信号以存取存储器阵列130。可通过使用感测电路150的如本文中所描述的数个感测放大器感测在感测线(数字线)上的电压及/或电流变化而从存储器阵列130感测(读取)数据。感测放大器可从存储器阵列130读取及锁存页(例如,行)数据。如本文中所描述,额外计算电路可耦合到感测电路150且可结合感测放大器一起用于感测、存储(例如,高速缓冲存储及/或缓冲)、执行计算功能(例如,运算)及/或移动数据。可使用i/o电路144以经由数据总线156(例如,64位宽数据总线)与主机110进行双向数据通信。可使用写入电路148以将数据写入到存储器阵列130。

控制器140(例如,图5中所展示的存储器库控制逻辑、序列发生器及时序电路)可解码通过控制总线154从主机110提供的信号(例如,命令)。这些信号可包含芯片启用信号、写入启用信号及/或地址锁存信号,所述信号可用于控制对存储器阵列130执行的操作,包含数据感测、数据存储、数据移动(例如,复制、传送及/或输送数据值)、数据写入及/或数据擦除操作以及其它操作。在各个实施例中,控制器140可负责执行来自主机110的指令及/或存取存储器阵列130。控制器140可为状态机、序列发生器或某一其它类型的控制器。控制器140可控制使数据在阵列(例如,存储器阵列130)的行中移位(例如,向右或向左)及执行微码指令以执行例如计算操作的运算(例如,and、or、nor、xor、加法、减法、乘法、除法等)。

下文(例如,在图2及3中)进一步描述感测电路150的实例。举例来说,在一些实施例中,感测电路150可包含数个感测放大器。在一些实施例中,感测电路150可包含数个感测放大器及对应数目个计算组件,其可用作累加器且可用于在每一子阵列中(例如,对与互补感测线相关联的数据)执行运算以及本文中所描述的数据路径内计算操作。

在一些实施例中,感测电路150可用于使用通过存储器阵列130存储的数据作为输入执行操作且参与将用于复制、传送、输送、写入、逻辑及/或存储操作的数据移动到存储器阵列130中及/或逻辑条124中的不同位置而不经由感测线地址存取传送数据(例如,未触发列解码信号)。因而,在一些实施例中,各种计算功能可使用感测电路150且在感测电路150内执行而非通过感测电路150外部的处理资源(例如,通过与主机110相关联的处理器及/或定位于装置120上(例如定位于控制器140上或别处)的其它处理电路,例如alu电路)执行(或与由处理资源执行相关联)。然而,另外,本文中所描述的实施例可对从阵列的行移动到计算单元中的多个计算组件431-1、…、431-z及/或逻辑条124-1、…、124-n的数据值执行数据路径内计算功能及/或操作。且作为实例,根据一些实施例,可在所述计算单元中以2ns的速度(相较于触发阵列中的行所需的60ns)的实例时间)控制计算操作而无需将所述数据值移动回到所述行中。

在各种先前方法中,(例如)与操作数相关联的数据将经由感测电路从存储器读取且经由i/o线(例如,经由局部i/o线及/或全局i/o线)提供到外部alu电路。外部alu电路可包含数个寄存器且将使用操作数执行计算功能且结果将经由i/o电路144传送回到阵列。

相比来说,本文中的实施例在阵列本地的数据路径中的计算单元中对经由多个共享i/o线155从阵列的行及/或子行移动到多个计算组件431-1、…、431-z及/或逻辑条124-1、…、124-n的数据值执行计算功能。另外,感测电路150可经配置以对通过存储器阵列130存储的数据执行运算且在未启用耦合到感测电路150的i/o线(例如,局部i/o线)的情况下将结果存储回到存储器阵列130。然而,一旦经加载,便可在计算单元中更快(例如,以2ns的速度)(相较于触发阵列中的行所需的(例如)60ns的实例时间)地控制计算操作而无需将所述数据值移动回到行及/或子行中。感测电路150可形成于与阵列的存储器单元的间距上。与多个共享i/o线155的数据路径相关联的多个计算组件431-1、…、431-z及/或逻辑条124-1、…、124-n可具有等于所述数据路径的间距的间距且所述间距依据存储器单元阵列的数字线的间距而变化。

举例来说,本文中所描述的感测电路150可形成于与一对互补感测线(例如,数字线)相同的间距上。作为实例,一对互补存储器单元可具有拥有6f2间距(例如,3f×2f)的单元大小,其中f是特征大小。如果互补存储器单元的一对互补感测线的间距是3f,那么感测电路在间距上指示感测电路(例如,每相应对的互补感测线的感测放大器及/或对应计算组件)经形成以装配于互补感测线的3f间距内。同样地,与多个共享i/o线155的数据路径相关联的逻辑条124-1、…、124-n的计算组件431-1、…、431-z具有依据互补感测线的3f间距而变化的间距。举例来说,逻辑条124-1、…、124-n的计算组件431-1、…、431-z可具有存储器单元阵列的数字线的3f间距的整数倍的间距,所述间距还可对应于多个共享i/o线155的间距。

相比来说,各种先前系统的处理资源(例如,计算引擎,例如alu)的电路可不符合与存储器阵列相关联的间距规则。举例来说,存储器阵列的存储器单元可具有4f2或6f2单元大小。因而,与先前系统的alu电路相关联的装置(例如,逻辑门)可不能够形成于与存储器单元的间距上(例如,形成于与感测线相同的间距上),举例来说,此可影响芯片大小及/或存储器密度。在一些计算系统及子系统(例如,中央处理单元(cpu))的背景内容中,可在并不处于与存储器(例如,阵列中的存储器单元)的间距上及/或具有存储器的芯片上的位置中处理数据,如本文中所描述。举例来说,可通过与主机相关联的处理资源(例如,而非在与存储器的间距上)处理数据。

因而,在数个实施例中,不需要在阵列130及感测电路150外部的电路来执行计算功能,因为感测电路150可在不使用外部处理资源的情况下执行适当操作以执行此类计算功能或可在阵列本地的多个共享i/o线的数据路径中执行此类操作。因此,感测电路150及/或多个共享i/o线155的数据路径中的计算单元中的多个计算组件431-1、…、431-z及/或逻辑条124-1、…、124-n可用于至少在一定程度上补充或取代此外部处理资源(或此外部处理资源的至少带宽消耗)。在一些实施例中,感测电路150及/或多个共享i/o线155的数据路径中的计算单元中的多个计算组件431-1、…、431-z及/或逻辑条124-1、…、124-n可用于执行除了通过外部处理资源(例如,主机110)执行的操作以外的操作(例如,执行指令)。举例来说,主机110及/或感测电路150可限于仅执行特定操作及/或特定数目个操作。

本文中所描述的操作可包含与具备pim能力的装置相关联的操作。具备pim能力的装置操作可使用基于位向量的操作。如本文中所使用,术语“位向量”意味着位向量存储器装置(例如,pim装置)上的物理上连续或非连续存储于存储器单元阵列的行中的数个位。因此,如本文中所使用,“位向量操作”意味着对位向量(其是(例如,通过pim装置使用的)虚拟地址空间的连续或非连续部分)执行的操作。举例来说,所述pim装置中的虚拟地址空间的行可具有16k个位的位长度(例如,对应于dram配置中的16k对互补存储器单元)。如本文中所描述,用于此16k位行的感测电路150可包含形成于与可选择地耦合到16位行中的对应存储器单元的感测线的间距上的对应16k个感测放大器及/或处理元件(例如,计算组件231)。pim装置的感测电路及/或逻辑条中的计算组件可作为单位元处理元件(pe)而对通过感测电路150感测(例如,通过感测放大器感测及/或存储,如本文中所描述)的存储器单元的行或子行的位向量的单个位进行操作。类似地,多个共享i/o线155的数据路径中的计算单元中的逻辑条124-1、…、124-n的多个计算组件431-1、…、431-z各自可作为单位元pe而对在阵列中感测的存储器单元的行及/或子行的位向量的单个位进行操作。

启用i/o线可包含启用(例如,接通、激活)具有耦合到解码信号(例如,列解码信号)的栅极及/或耦合到所述i/o线的源极/漏极的晶体管。然而,实施例不限于不启用i/o线。例如,在数个实施例中,感测电路(例如,150)可用于在不启用阵列的列解码线的情况下执行操作。

然而,可启用多个共享i/o线155以便将数据值加载到所述多个共享i/o线155的数据路径中的计算单元中的多个计算组件431-1、…、431-z及/或逻辑条124-1、…、124-n(其中可更快地控制计算操作)。举例来说,在计算单元中的多个计算组件431-1、…、431-z及/或逻辑条124-1、…、124-n中,可以2ns的速度执行计算操作。此速度增强可归因于无需凭借用于触发阵列中的行的相关联时间(例如,60ns)将数据值移动回到行及/或子行中。

图1b是根据本发明的数个实施例的呈包含存储器装置(其具有在阵列的存储器库区段123-1、123-2、…、123-n本地的数据路径中的共享i/o线155)的计算系统的形式的设备的另一框图。举例来说,存储器库121-1可表示存储器装置120的实例存储器库。如图1b中所展示,存储器库121-1可包含多个主存储器列(水平展示为x)(例如,在实例dram存储器库中的16,384个列)。另外,存储器库121-1可划分成存储器库区段(例如,32个子阵列的象限)123-1、123-2、…、123-n。每一存储器库区段可与多个共享i/o线155的数据路径中的计算单元中的逻辑条124-1、…、124-n中的多个计算组件431-1、…、431-z相关联。存储器库区段123-1、…、123-n中的每一者可包含多个行(垂直展示为y)(例如,每一区段可为实例dram存储器库中的包含32个子阵列的象限,每一子阵列各自可包含512行且每行包含16个子行)。实例实施例不限于本文所描述的列及行及子行的实例水平及/或垂直定向或所述列及行及子行的实例数目。

在一些实施例中,每一存储器库区段可具有与其相关联的多个共享i/o线155的数据路径中的计算单元中的多个计算组件431-1、…、431-z及逻辑条124-1、…、124-n。存储器库121-1可包含与每一存储器区段及/或子阵列相关联以引导对加载到多个共享i/o线155的数据路径中的计算单元中的逻辑条124-1、…、124-n中的多个计算组件431-1、…、431-z的数据值的移动(例如,经由移动组件171)及/或操作的控制器140及/或数个控制器。

图2是说明根据本发明的数个实施例的存储器装置120的电路的示意图,所述电路包含感测放大器206及计算组件231,其在各种实施例中各自可包含于感测电路250及/或逻辑条124中。感测电路250可对应于图1a中所展示的感测电路150。

如图2的实例实施例中所展示,存储器单元可包含存储元件(例如,电容器)及存取装置(例如,晶体管)。举例来说,第一存储器单元可包含晶体管202-1及电容器203-1,且第二存储器单元可包含晶体管202-2及电容器203-2等。在此实施例中,存储器阵列230是1t1b(一个晶体管一个电容器)存储器单元的dram阵列,但可使用其它配置的实施例(例如,每存储器单元具有两个晶体管及两个电容器的2t2c)。在数个实施例中,存储器单元可为破坏性读取存储器单元(例如,读取通过单元存储的数据损毁所述数据使得最初通过单元存储的数据在被读取之后刷新)。

存储器阵列230的单元可布置成通过存取(字)线204-x(行x)、204-y(行y)等耦合的行及通过互补感测线对(例如,图2中所展示的数字线digit(d)及digit(d)_)耦合的行。对应于每一对互补感测线的个别感测线还可分别被称为数字线205-1digit(d)及205-2digit(d)_或图3中的对应元件符号。尽管图2中展示仅一对互补数字线,但本发明的实施例不限于此,且存储器单元阵列可包含额外列的存储器单元及数字线(例如,4,096、8,192、16,384等)。

尽管行及列是说明为正交定向在平面中,但实施例不限于此。举例来说,行及列可相对于彼此以任何可行三维配置定向。举例来说,行及列可相对于彼此定向成任何角度,可定向于大体上水平平面中或大体上垂直平面中,及/或可定向成折叠拓扑以及其它可能三维配置。

存储器单元可耦合到不同数字线及字线。举例来说,晶体管202-1的第一源极/漏极区域可耦合到数字线205-1(d),晶体管202-1的第二源极/漏极区域可耦合到电容器203-1且晶体管202-1的栅极可耦合到字线204-y。晶体管202-2的第一源极/漏极区域可耦合到数字线205-2(d_),晶体管202-2的第二源极/漏极区域可耦合到电容器203-2且晶体管202-2的栅极可耦合到字线204-x。如图2中所展示的单元板可耦合到电容器203-1及203-2中的每一者。单元板可为共同节点,在各种存储器阵列配置中可将参考电压(例如,接地)施加到所述共同节点。

根据本发明的数个实施例,存储器阵列230经配置以耦合到感测电路250。在此实施例中,感测电路250包括对应于相应存储器单元列(例如,耦合到相应互补数字线对)的感测放大器206及计算组件231。然而,在一些实施例中,用于通过逻辑条的计算组件执行的数据路径内计算操作的感测电路250可不包含感测电路250中的计算组件。感测放大器206可耦合到互补数字线对205-1及205-2。如果存在,那么计算组件231可经由传递门207-1及207-2耦合到感测放大器206。传递门207-1及207-2的栅极可耦合到运算选择逻辑213。

运算选择逻辑213可经配置以包含:传递门逻辑,其用于控制传递门以将未转置的互补数字线对耦合于感测放大器206与计算组件231之间;及交换门逻辑,其用于控制交换门以将经转置的互补数字线对耦合于感测放大器206与计算组件231之间。运算选择逻辑213还可耦合到互补数字线对205-1及205-2。运算选择逻辑213可经配置以基于选定操作控制传递门207-1及207-2的连续性。

感测放大器206可经操作以确定通过选定存储器单元存储的数据值(例如,逻辑状态)。感测放大器206可包括交叉耦合锁存器(其在本文中可被称为主要锁存器)。在图2中所说明的实例中,对应于感测放大器206的电路包括锁存器215,锁存器215包含耦合到一对互补数字线d205-1及(d)_205-2的四个晶体管。然而,实施例不限于此实例。锁存器215可为交叉耦合锁存器(例如,一对晶体管的栅极)例如n沟道晶体管(例如,nmos晶体管)227-1及227-2与另一对晶体管的栅极耦合,例如p沟道晶体管(例如,pmos晶体管)229-1及229-2)。包括晶体管227-1、227-2、229-1及229-2的交叉耦合锁存器215可被称为主要锁存器。

在操作中,当感测(例如,读取)存储器单元时,数字线205-1(d)或205-2(d)_中的一者上的电压将略大于数字线205-1(d)或205-2(d)_中的另一者上的电压。可驱使act信号及rnl*信号降低以启用(例如,触发)感测放大器206。具有较低电压的数字线205-1(d)或205-2(d)_将接通pmos晶体管229-1或229-2中的一者到大于pmos晶体管229-1或229-2中的另一者的程度,借此驱使具有较高电压的数字线205-1(d)或205-2(d)_升高到大于另一数字线205-1(d)或205-2(d)_经驱使而升高的程度。

类似地,具有较高电压的数字线205-1(d)或205-2(d)_将接通nmos晶体管227-1或227-2中的一者到大于nmos晶体管227-1或227-2中的另一者的程度,借此驱使具有较低电压的数字线205-1(d)或205-2(d)_降低到大于另一数字线205-1(d)或205-2(d)_经驱使而降低的程度。因此,在短暂延迟后,具有略大电压的数字线205-1(d)或205-2(d)_通过源极晶体管驱动到供应电压vcc的电压,且另一数字线205-1(d)或205-2(d)_通过耗散晶体管驱动到参考电压(例如,接地)的电压。因此,交叉耦合nmos晶体管227-1及227-1及pmos晶体管229-1及229-2用作感测放大器对,其放大数字线205-1(d)及205-2(d)_上的差分电压且操作以锁存从选定存储器单元感测的数据值。

实施例不限于图2中所说明的感测放大器206配置。作为实例,感测放大器206可为电流模式感测放大器及单端感测放大器(例如,耦合到一个数字线的感测放大器)。此外,本发明的实施例不限于折叠数字线架构(例如图2中所展示的架构)。

感测放大器206可连同计算组件231一起操作以使用来自阵列的数据作为输入而执行各种运算。在数个实施例中,可在不经由数字线地址存取传送数据的情况下(例如,在未触发列解码信号使得经由局部i/o线将数据传送到阵列及感测电路外部的电路的情况下)将运算的结果存储回到阵列。因而,本发明的数个实施例可能够使用少于各种先前方法的功率执行运算及与所述运算相关联的计算功能。另外,因为数个实施例无需跨局部及全局i/o线传送数据以便执行计算功能(例如,在存储器与离散处理器之间),所以相较于先前方法,数个实施例可实现增大(例如,更快)的处理能力。

感测放大器206可进一步包含平衡电路214,平衡电路214可经配置以使数字线205-1(d)及205-2(d)_平衡。在此实例中,平衡电路214包括耦合于数字线205-1(d)与205-2(d)_之间的晶体管224。平衡电路214还包括各自具有耦合到平衡电压(例如,vdd/2)的第一源极/漏极区域的晶体管225-1及225-2,其中vdd是与阵列相关联的供应电压。晶体管225-1的第二源极/漏极区域可耦合到数字线205-1(d),且晶体管225-2的第二源极/漏极区域可耦合到数字线205-2(d)_。晶体管224、225-1及225-2的栅极可耦合在一起且耦合到平衡(eq)控制信号线226。因而,激活eq启用晶体管224、225-1及225-2,这将数字线205-1(d)及205-2(d)_有效地短接在一起且短接到平衡电压(例如,vcc/2)。

尽管图2展示包括平衡电路214的感测放大器206,但实施例不限于此,且平衡电路214可与感测放大器206离散地实施,以与图2中所展示的配置不同的配置实施,或完全不实施。

如下文进一步描述,在数个实施例中,感测电路250(例如,感测放大器206及计算组件231)可经操作以执行选定运算且在不经由局部或全局i/o线传送来自感测电路的数据的情况下(例如,在不经由例如激活列解码信号执行感测线地址存取的情况下)首先将结果存储于感测放大器206或计算组件231中的一者中。

然而,进一步关于本文中所描述的实施例,具有感测放大器206的感测电路250(其在一些实施例中还可包含如图2中所展示的计算组件231)还可将来自阵列中的存储器单元的经多路复用列的存储器单元耦合到如结合图4所论述的在阵列本地的多个共享i/o线455的数据路径中的计算单元460中的计算组件431-1、…、431-z及/或逻辑条424-1、…、424-n。以此方式,计算组件431-1、…、431-z及/或逻辑条424-1、…、424-n可经由选择逻辑(结合图3到7所论述)通过多个共享i/o线455间接耦合到列的存储器单元。

运算(例如,涉及数据值的布尔逻辑运算)的执行是基本且常用的。布尔逻辑运算用于许多更高阶运算中。因此,可通过改进运算实现的速度及/或功率效率可转变成更高阶功能性的速度及/或功率效率。

如图2中所展示,计算组件231还可包括锁存器(其在本文中可被称为次要锁存器264)。次要锁存器264可以类似于上文关于主要锁存器215所描述的方式的方式配置及操作,唯以下除外:包括在次要锁存器中的交叉耦合的p沟道晶体管(例如,pmos晶体管)对可具有耦合到供应电压(例如,vdd)的其相应源极,且次要锁存器的交叉耦合的n沟道晶体管(例如,nmos晶体管)对可具有可选择地耦合到参考电压(例如,接地)的其相应源极,使得连续地启用次要锁存器。计算组件231的配置不限于图2中所展示的配置且各种其它实施例是可行的,例如用作结合图4的逻辑条424-1、…、424-n描述的计算组件431-1、…、431-z。

如本文中所描述,存储器装置(例如,图1a中的120)可经配置以经由数据总线(例如,156)及控制总线(例如,154)耦合到主机(例如,110)。存储器装置120中的存储器库121可包含存储器单元的多个存储器库区段(图1b中的123-1、…、123-n)。存储器库121可包含经由存储器单元的多个列(图1b)耦合到多个阵列的感测电路(例如,图1a中的150及图2及3中的对应元件符号)。感测电路可包含耦合到列中的每一者的感测放大器及/或计算组件(例如,在图2中分别为206及231)。

每一存储器库区段123可与在阵列230本地的多个共享i/o线(图1b中的155)的数据路径中的计算单元中的多个逻辑条(例如,图1b中的124-0、124-1、…、124-n-1)相关联。耦合到存储器库的控制器(例如,图1a及1b中的140)可经配置以如本文中所描述那样引导数据值移动到阵列230本地的共享i/o线355/455(图3及4)的数据路径中的计算单元360/460(图3及4)中的逻辑条424(图4)中的计算组件431(图4)。

存储器装置可包含具有各自可对应于子行(例如,图4中的428-1、…、428-16)中的存储器单元的多个列(图1b)的数目的多个计算组件(例如,图4中的431-1、…、431-z)的逻辑条(例如,图1b中的124及图4中的424)。如结合图3进一步论述,感测电路250中的数个感测放大器206及/或计算组件231可(例如,经由图3中的列选择电路358-1及358-2多路复用)可选择地耦合到多个共享i/o线355(图3)。列选择电路可经配置以通过可选择地耦合到多个(例如,四个、八个及十六个及其它可能性)感测放大器及/或计算组件而可选择地感测阵列的存储器单元的特定列中的数据。

在一些实施例中,存储器库中的多个逻辑条(例如,图1b中的124-1、…、124-n)的数目可对应于所述存储器库中的图1b中的存储器库区段123-1、…、123-n(例如,具有多个子阵列的象限)的数目。替代地或另外,存储器库中的多个逻辑条的数目可对应于dram阵列的行中的多个子行的数目。逻辑条可包含在阵列230本地的共享i/o线455(图4)的数据路径中的多个计算组件431-1、…、431-z(图4),其可如同图2中所展示的计算组件231那样配置及/或操作。如图3中将展示,从阵列的行或子行感测的数据值可通过列选择逻辑经由多个共享i/o线355(图3)并行移动到多个共享i/o线355/455(图3及4)的数据路径的计算单元360/460(图3及4)中的多个计算组件431(图4)。在一些实施例中,数据量可对应于多个共享i/o线的1k位宽度,其还可对应于子行的存储器单元及/或数据值的数目。

在各种实施例中,连接电路232-1可例如在217-1处耦合且连接电路232-2可在217-1处耦合到主要锁存器215(例如,感测放大器206用作与逻辑条中的计算组件231相关联的锁存器)以用于移动逻辑条的已对其执行运算的经感测、经存储及/或数据值。数据值可直接(例如,作为位串行链路)经由连接电路232-1及232-2移动到另一逻辑条中的选定锁存器及/或计算组件231(例如,未经由共享i/o线移动)。

尽管图2将连接电路232-1及232-2展示为分别在主要锁存器215的217-1及217-2处耦合,但实施例不限于此。举例来说,连接电路232-1及232-2可例如耦合到次要锁存器264(例如,计算组件231)以用于将数据值经由连接电路232-1及232-2移动到另一逻辑条中的选定锁存器及/或计算组件231。举例来说,此类连接电路232-1及232-2可实现(例如,如通过控制器140引导)从第一逻辑条中的锁存器及/或计算组件到第二逻辑条中的对应锁存器及/或计算组件的数据值(位)的级联以用于在多个逻辑条中执行脉动运算序列(例如,如结合图9c描述)。

如本文中所描述,存储器单元阵列可包含dram存储器单元的实施方案,其中控制器经配置以响应于命令而经由共享i/o线将数据从源位置移动(例如,复制、传送及/或输送)到目的地位置。在各个实施例中,所述源位置可在第一存储器库中且所述目的地位置可在阵列230本地的共享i/o线355(图3)的数据路径中的计算单元360(图3)中。

如图3中所描述,设备可经配置以将数据从包含与第一数目个感测放大器及计算组件相关联的特定行(例如,图3中的319)及列地址的源位置移动(例如,复制、传送及/或输送)到共享i/o线(例如,图3中的355)。另外,设备可经配置以将数据移动到包含与共享i/o线355(图3)的数据路径中的计算单元360(图3)相关联的特定逻辑条424(图4)的目的地位置。如读者将了解,每一共享i/o线355(图3)可为单个线或可包含一对互补共享i/o线(例如,图3中的共享i/o线及共享i/o线*)。在一些实施例中,2k个共享i/o线(例如,互补共享i/o线对)可经配置为2k位宽共享i/o线。在一些实施例中,1k个共享i/o线(例如,互补共享i/o线对)可经配置为1k位宽共享i/o线。

图3是说明根据本发明的数个实施例的用于阵列的数据路径中的多个共享i/o线的电路的示意图。图3展示各自耦合到相应互补共享i/o线355对(例如,共享i/o线及共享i/o线*)的八个感测放大器(例如,分别在306-0、306-1、…、306-7处展示的感测放大器0、1、…、7)。图3还展示各自经由相应传递门307-1及307-2以及数字线305-1及305-2耦合到相应感测放大器(例如,如对于感测放大器0以306-0展示)的八个计算组件(例如,在331-0、331-1、…、331-7处展示的计算组件0、1、…、7)。传递门可如图2中所展示那样连接且可通过运算选择信号pass加以控制。举例来说,选择逻辑的输出可耦合到传递门307-1及307-2的栅极以及数字线305-1及305-2。在一些实施例中,对应感测放大器及计算组件对可促进形成在350-0、350-1、…、350-7处指示的感测电路。

可将存在于所述对互补数字线305-1及305-2上的数据值加载到感测放大器306-0中,如结合图2所描述。在一些实施例中,当启用传递门307-1及307-2时,可将所述对互补数字线305-1及305-2上的数据值从感测放大器传递到计算组件(例如,306-0到331-0)。当触发感测放大器306-0时所述对互补数字线305-1及305-2上的数据值可为通过感测放大器306-0存储的数据值。

图3中的感测放大器306-0、306-1、…、306-7可各自对应于图2中所展示的感测放大器206。图3中所展示的计算组件331-0、331-1、…、331-7可各自对应于图2中所展示的计算组件231。单独感测放大器、一个感测放大器与一个计算组件的组合可促成耦合到共享i/o线355(其由共享i/o线355的数据路径中的计算组件360的数个逻辑条共享)的dram存储器子阵列325的部分的感测电路(例如,350-0、350-1、…、350-7)。

图3中所说明的实施例的配置是为清楚目的而展示且不限于此类配置。例如,图3中所说明的用于感测放大器306-0、306-1、…、306-7连同计算组件331-0、331-1、…、331-7及共享i/o线355的配置不限于感测电路的感测放大器306-0、306-1、…、306-7及/或计算组件331-0、331-1、…、331-7的组合的一半形成于存储器单元列322(未展示)上方且一半形成于存储器单元列322下方。形成经配置以耦合到共享i/o线的感测电路的感测放大器及/或计算组件的此类组合的数目还不限于八个。举例来说,当每行的子行数目及/或逻辑条的数目是16个时,形成经配置以耦合到共享i/o线的感测电路的感测放大器及/或计算组件的数目可为16个。另外,共享i/o线355的配置不限于分成单独耦合两组互补数字线305-1及305-2中的每一者的两个部分,共享i/o线355还不限于定位于形成感测电路的感测放大器及/或计算组件的组合的中间(例如,而非定位于感测放大器与计算组件的组合的任一端处)。

图3中所说明的电路还展示列选择电路358-1及358-2,其经配置以通过相对于子阵列325的特定列322、与其相关联的互补数字线305-1及305-2以及共享i/o线355多路复用而实施数据移动操作(例如,如通过图1a及1b中所展示的控制器140引导)。举例来说,列选择电路358-1具有经配置以与对应列(例如列0(332-0)、列2、列4及列6)耦合的选择线0、2、4及6。列选择电路358-2具有经配置以与对应列(例如列1、列3、列5及列7)耦合的选择线1、3、5及7。在各个实施例中,结合图3所描述的列选择电路358可表示通过多路复用器(例如,8路多路复用器、16路多路复用器等)体现及包含在多路复用器中的功能性的至少部分。

控制器140可耦合到列选择电路358以控制选择线(例如,选择线0)以存取通过感测放大器、计算组件存储及/或存在于互补数字线对(例如,305-1及305-2,当经由来自选择线0的信号激活选择晶体管359-1及359-2时)上的数据值。激活选择晶体管359-1及359-2(例如,如通过控制器140引导)实现列0(322-0)的感测放大器306-0、计算组件331-0及/或互补数字线305-1及305-2的耦合以将数字线0及数字线0*上的数据值移动到共享i/o线355。举例来说,所述经移动的数据值可为来自存储(高速缓冲存储)于感测放大器306-0及/或计算组件331-0中的特定行319的数据值。类似地可通过控制器140激活适当选择晶体管而选择来自列0到列7中的每一者的数据值。

此外,启用(例如,激活)选择晶体管(例如,选择晶体管359-1及359-2)可启用特定感测放大器及/或计算组件(例如,分别为306-0及/或331-0)以与共享i/o线355耦合使得可将通过放大器及/或计算组件存储的数据值移动到共享i/o线355(例如,放置于共享i/o线355上及/或传送到共享i/o线355)。在一些实施例中,每次选择一个列(例如,列322-0)以耦合到特定共享i/o线355以移动(例如,复制、传送及/或输送)经存储数据值。在图3的实例配置中,共享i/o线355是说明为共享、差分i/o线对(例如,共享i/o线及共享i/o线*)。因此,选择列0(322-0)可从行(例如,行319)的子行产生两个数据值(例如,具有值0及/或1的两个位)及/或可产生如通过与互补数字线305-1及305-2相关联的感测放大器及/或计算组件存储的两个数据值。这些数据值可并行输入到共享差分i/o线355的每一共享、差分i/o对(例如,共享i/o线及共享i/o线*)。

图4是说明根据本发明的数个实施例的通过在阵列130(图1a)本地的数据路径中的多个共享i/o线455耦合到具有多个逻辑条424-1、…、424-z的计算单元460的阵列130的存储器库区段423的框图。在图4的实施例中,存储器库区段423(例如,具有多个存储器库象限)经展示为每象限具有多个子阵列425-1、…、425-32。在图4中,存储器库象限1中说明32个子阵列。然而,实施例不限于此实例。此实例将存储器库区段423展示为具有16k个列,其可(例如,经由在358-1及358-2处展示且结合图3描述的列选择电路)通过每行的16个子行428-1、…、428-16多路复用到共享i/o线455。在一些实施例中,每十六个列及经耦合存储器单元可提供可作为子行作为1k个位的群组并行移动到计算单元460的数据值。替代地或另外,连续1k个列及经耦合存储器单元可提供可作为子行作为1k个位的群组并行移动到计算单元460的1k个数据值。在任一实施例中,除其它可能实施例以外,还可在16个循环中通过共享i/o线455将1k个位的群组循序移动到16个指定逻辑条424-1、…、424-n的1k个指定计算组件431-1、…、431-z。

举例来说,来自第一子行428-1的序列中的第一感测放大器及/或存储器单元的位可经引导(例如,通过控制器140)以通过第一逻辑条424-1中的计算组件序列中的第一计算组件431-1或相关联锁存器存储。举例来说,来自第一子行428-1的序列中的第二感测放大器及/或存储器单元的位可经引导以通过第一逻辑条424-1中的计算组件序列中的第二计算组件431-2或相关联锁存器存储。此外,来自第二子行428-2的序列中的第一感测放大器及/或存储器单元的位可经引导以通过第二逻辑条424-2中的计算组件序列中的第一计算组件431-1或相关联锁存器存储。来自第二子行428-2的序列中的第二感测放大器及/或存储器单元的位可经引导以通过第二逻辑条424-1中的计算组件序列中的第二计算组件或相关联锁存器存储。对应于每行的子行428-2、428-1、…、428-16的序列中的每一感测放大器及/或存储器单元的位可类似地经指定以通过逻辑条424-1、…、424-n的序列中的对应计算组件或相关联锁存器存储(例如,来自子行428-1的数据值移动到逻辑条424-1,来自子行428-2的数据值移动到逻辑条424-2,等等)。移动可经由共享i/o线455引导到指定逻辑条,其可提供计算单元460的1k位宽数据路径。

在图4的实例中,每一逻辑条424-1、…、424-n可具有多个计算组件431-1、…、431-z,如本文中已结合图2的感测电路250描述的计算组件231。在一些实施例中,多个逻辑条424-1、…、424-n中的每一者可经配置以使用多个计算组件431-1、…、431-z执行计算功能。在一些实施例中,多个逻辑条424-1、…、424-z中的每一者可使用多个计算组件431-1、…、431-z执行不同逻辑运算。举例来说,多个逻辑条424-1、…、424-z中的至少一者可经配置以执行and运算且多个逻辑条424-1、…、424-z中的至少一者可经配置以执行nor运算以及逻辑运算的各种组合及/或序列。

在一些实施例中,与存储器库区段相关联的控制器140(图1a)可执行微码指令以引导1k个数据值从与特定经存取子行连接的多个子阵列425-1、…、425-32中的对应1k个经多路复用列并行移动到计算单元460中的特定逻辑条424-1、…、424-n的特定计算组件431-1、…、431-z。

在一些实施例中,可使用共享i/o线以将1k个数据值连接到多个逻辑条424-1、…、424-n中的相应一者中的多个计算组件431-1、…、431-z中的相应一者。通过实例且非限制地,可将1k位的数据值并行移动到与每一子行相关联的特定逻辑条。在各种实施例中,例如可存在与存储器库区段423的4个象限中的每一者中的32个子阵列425-1、…、425-32中的每一者相关联的计算单元460或计算单元可在子阵列、象限及/或存储器库区段的各种组合之间共享。可根据来自控制器140(图1a)的微码指令对加载到计算单元460的逻辑条424-1、…、424-n中的多个计算组件431-1、…、431-z的数据值进行操作以对所述数据值执行运算(例如,and、or、nor、xor、加法、减法、乘法、除法等),如本文中已结合图2的感测电路250描述。

如本文中所描述,举例来说,一旦第一子行428-1的1k个数据值移动(例如,加载)到计算单元460的第一逻辑条424-1,便可在数据值从第二子行428-2移动到计算单元460的第二逻辑条424-2之前及/或大体上同时对此类数据值开始计算操作。可根据通过控制器140(图1a)执行的微码指令更快地(例如,以约2ns的速度)控制在计算单元的逻辑条中执行的此类操作而无需将所述数据值移动回到阵列130(图1a)的行中。举例来说,可使用计算单元460以更快速度(相较于触发及存取阵列130(图1a)中的行所需的实例时间(例如,约60ns))执行计算操作。如结合图2描述,连接电路232-1及232-2可能够在逻辑条之间移动逻辑条的已对其执行运算的经感测、经存储及/或数据值而未经由共享i/o线移动

因此,在各种实施例中,存储器装置120可包含共享为用于与存储器单元阵列130相关联的数据路径内计算操作的数据路径的多个i/o线。多个共享i/o线可将阵列的行的第一子行(例如,428-1)经由感测电路(例如,350)可选择地耦合到数据路径中的第一计算组件(例如,431-1)以将第一数据值从第一子行移动到第一计算组件。多个共享i/o线可将相应行的第二子行(例如,428-2)经由感测电路可选择地耦合到数据路径中的第二计算组件(例如,对应于第一逻辑条中的第一计算组件的位置的计算组件)以将第二数据值从第二子行移动到第二计算组件。举例来说,第一逻辑条(例如,424-1)可包含第一计算组件且第二逻辑条(例如,424-2)可包含第二计算组件。如本文中所描述,可使用第一计算组件对来自第一子行的第一数据值执行运算,大体上同时将第二数据值从第二子行移动到第二计算组件。

在各种实施例中,数据路径可进一步包含:第一逻辑条(例如,424-1),其可包含对应于第一子行(例如,428-1)的数个多个存储器单元(未展示)的数个多个第一计算组件(例如,431-1、…、431-z);及第二逻辑条(例如,424-2),其可包含对应于第二子行(例如,428-2)的数个多个存储器单元的数个多个第二计算组件。多个逻辑条(例如,424-1、…、424-n)的数目可对应于相应行的多个子行(例如,428-1、…、428-16)的数目。计算单元(例如,460)可包含多个逻辑条(例如,424-1、…、424-n),其可各自包含多个计算组件(例如,431-1、…、431-z),其中多个计算组件中的每一者可与阵列本地的多个共享i/o线455中的至少一者相关联(例如,可选择地耦合到其)。多个共享i/o线的数目可对应于相应行的子行的多个存储器单元的数目(例如,子行或行的每8或16个存储器单元及/或列单独共享i/o线以及其它可能配置)。逻辑条(例如,424-1)可包含对应于耦合到相应逻辑条的子行的数个多个存储器单元的数个多个计算组件(例如,431-1、…、431-z)。

图5是说明根据本发明的数个实施例的存储器装置520的控制器540的实例的框图。在一些实施方案中,图5的框图提供具备pim能力的装置(例如图1a及1b中的存储器装置120)的一个实例的部分的更多细节。在图5的实例中,控制器540-1、…、540-7(通称为控制器540)可与具备pim能力的装置520的每一存储器库521-1、…、521-7(通称为存储器库521)相关联。在图5的实例中展示八个存储器库。然而,实施例不限于此实例数目。举例来说,控制器540可表示图1a中所展示的控制器140。每一存储器库可包含一或多个存储器单元阵列(未展示)。举例来说,每一存储器库可包含一或多个阵列(例如图1a中的阵列130)且可包含如图1a中所展示的解码器、其它电路及/或寄存器。在图5中所展示的实例存储器装置520中,控制器540-1、…、540-7经展示为具有控制逻辑531-1、…、531-7、序列发生器532-1、…、532-7及时序电路533-1、…、533-7作为存储器装置520的一或多个存储器库521上的控制器540的部分。具备pim能力的装置520可表示图1a中所展示的存储器装置120的部分。

如图5中所展示,存储器装置520可包含用以在具备pim能力的装置520处接收数据、地址、控制信号及/或命令的高速接口(hsi)541。在各个实施例中,hsi541可耦合到与具备pim能力的装置520相关联的存储器库仲裁器545。hsi541可经配置以从主机(例如,图1a中的110)接收命令及/或数据。如图5中所展示,存储器库仲裁器545可耦合到多个存储器库521-1、…、521-7。

在图5中所展示的实例中,控制逻辑531-1、…、531-7可呈负责提取及执行来自每一存储器库521-1、…、521-7的部分的存储器单元阵列(例如,图1a中的阵列130)的机器指令(例如,微码指令)的微码引擎的形式。序列发生器532-1、…、532-7还可呈微码引擎的形式。替代性地,控制逻辑531-1、…、531-7可呈特大指令字(vliw)类型处理资源的形式且序列发生器532-1、…、532-7及时序电路533-1、…、533-7可呈状态机及晶体管电路的形式。

控制逻辑531-1、…、531-7可将微码指令解码成通过序列发生器532-1、…、532-7实施的函数调用(例如,微码函数调用(ucode))。图6说明在图6中展示为642的控制器540的另一实施例,其说明根据本发明的实施例的序列发生器的更详细部分。微码函数调用可为序列发生器532-1、…、532-7接收及执行以引起存储器装置520使用感测电路(例如图1a中的感测电路150)或使用分别在图4及6中所展示的计算单元460及660的计算组件431-1、…、431-z及631-1、…、631-z执行特定逻辑运算的操作。时序电路533-1、…、533-7可提供时序以通过分别在图4及6中所展示的计算单元460及660的逻辑条424-1、…、424-n及624-1、…、624-n协调逻辑运算的执行及/或负责提供对阵列(例如图1a中的阵列130)的无冲突存取。

如结合图1a所描述,控制器540-1、…、540-7可经由图5中展示为555-1、…、555-7的控制线及数据路径耦合到与存储器单元阵列相关联的感测电路150、计算单元460/660及/或额外逻辑电路170(包含高速缓冲存储器、缓冲器、感测放大器、扩展行地址(xra)锁存器及/或寄存器)。因而,图1a、4及6中所展示的感测电路150、计算单元460/660及逻辑170可(例如,使用在图5中的555-1、…、555-7处展示的共享i/o线及/或其它i/o电路)与存储器单元阵列130相关联。控制器540-1、…、540-7可控制阵列的正规dram操作(例如读取、写入、复制及/或擦除操作等)。另外,然而,通过控制逻辑531-1、…、531-7检索及执行的微码指令及通过序列发生器532-1、…、532-7接收及执行的微码函数调用引起图1a、4及6中所展示的感测电路150及/或计算单元460/660执行额外逻辑运算(例如加法、乘法或(作为更特定实例)布尔运算,例如and、or、xor等),其不同于常规dram读取及写入操作(例如,比常规dram读取及写入操作更复杂)。因此,在此实例存储器装置520中,可在具备pim能力的装置的存储器库521-1、…、521-7上执行微码指令执行及/或逻辑运算。

在各种实施例中,控制逻辑531-1、…、531-7、序列发生器532-1、…、532-7及时序电路533-1、…、533-7可操作以针对dram阵列产生操作循环序列及/或引导存储器装置520上(例如,存储器库521-1、…、521-7上,包含在共享i/o线455-1、…、455-7的数据路径中的计算单元460/660中)的运算(例如,逻辑运算)的执行。在具备pim能力的装置实例中,每一序列可经设计以执行一起实现特定功能的运算(例如布尔逻辑运算and、or、xor等)。举例来说,运算序列可重复执行(1)位加法的逻辑运算以计算多位总和。在另一实例中,用于运算序列的指令可经执行以执行数个α混合图形操作以及各种其它类型的操作。可将每一运算序列馈送到耦合到时序电路533-1、…、533-7的先进/先出(fifo)缓冲器中以提供与和图1a中所展示的存储器单元阵列130(例如,dram阵列)相关联的感测电路150、计算单元460/660及/或额外逻辑电路170的时序协调。

在图5中所展示的实例具备pim能力的存储器装置520中,时序电路533-1、…、533-7可提供时序且可从四(4)个fifo队列提供对阵列的无冲突存取及/或可协调计算单元460/660中的运算的时序。在此实例中,一个fifo队列可支持阵列计算,一个fifo队列用于微码(例如,ucode)指令提取,一个fifo队列可用于与共享i/o线、逻辑条、计算单元、连接电路等相关的数据路径的控制,且一个fifo队列用于drami/o。控制逻辑531-1、…、531-7及序列发生器532-1、…、532-7两者都可产生可经由fifo接口投送回到存储器库仲裁器545的状态信息。存储器库仲裁器545可汇总此状态数据且例如经由hsi541将其报告回到主机110。

图6是说明存储器装置520(图5)的控制器642的部分的另一实例的框图。除其它功能以外,控制器642还经配置以根据本发明的数个实施例使用在阵列130(图1a)本地的数据路径中的共享i/o线655655控制数据值到具有多个逻辑条624-1、…、624-n的计算单元660的移动。在图6的实例中,控制器642的部分是控制器的序列发生器部分(例如图5中的序列发生器532)的实例。

在图6的实例实施例中,控制器642的序列发生器部分可对三种类别的微码指令(阵列操作、计算组件操作及控制操作)操作。如601处所展示,位值可提供为子阵列掩模的部分以识别存储器库区段的象限中的特定子阵列,如上文所描述。在602-1及602-2处,与如结合图2的感测电路250描述且在图7中更详细展示为731(a)及706(b)的主要锁存器及次要锁存器相关联的a及b地址指针提供阵列130(图1a)中的数据值的物理地址的指针。在603处,位值可另外提供到阵列130(图1a)中的额外索引。如图6的实例中所展示,地址指针602-1及602-2以及索引603用于存取阵列130(图1a)的特定行及感测线(例如,对行字线及位线)。

本文中所描述的多个共享i/o线655可将阵列130(图1a)连接到在阵列本地的共享i/o655的数据路径中的计算单元660。将指令从控制器642提供到所述计算单元以将来自共享i/o线655的数据值加载到所述计算单元660的给定逻辑条624-1、…、624-n中的给定计算组件631-1、…、631-z。计算单元660的掩模条641可能够选择感测线及计算组件值以用于读取或写入。

在604处,来自布线或(wiredor)逻辑配置的条件代码可提供运用计算单元660的布线或运算的位值结果。在611处,位值可提供寄存器地址作为用于计算组件操作指令的第二寄存器源的指针。在612处,位值可指示计算单元660的逻辑条624-1、…、624-n的寄存器索引以及用于计算组件操作指令的第二寄存器源的寄存器地址指针611。

图7是说明根据本发明的数个实施例的逻辑条(例如,如在124、424及624处展示且结合图1b、4及6描述)的计算组件731的示意图。图7还为说明根据本发明的数个实施例的能够实施逻辑运算的计算单元460/660电路的示意图。

在一些实施例中,图7展示直接耦合到一对互补共享i/o线755-1及755-2(例如,如结合图3中的共享i/o线355展示及描述)的锁存器706及/或逻辑运算选择逻辑713及经由传递门707-1及707-2耦合到锁存器706的计算组件731。通过图解且非限制地,锁存器706在图7中展示为直接耦合到所述对互补共享i/o线755-1及755-2。举例来说,共享i/o线可为单个共享i/o线755或可包含图7中所展示的所述对互补共享i/o线。在各种实施例中,共享i/o线的任一实施例可选择地及/或直接耦合到锁存器706以载入(例如,存储)来自阵列的第一行的第一子行的第一数据值及/或可选择地及/或直接耦合到计算组件731以加载(例如,存储)来自第二行的第二子行的第二数据值以能够通过计算组件731使用两个经存储数据值执行逻辑运算。

在一些实施例中,可存在与计算组件731相关联的多个锁存器706,使得锁存器可在各种实施例中可选择地、直接及/或间接耦合到共同i/o线以将数据值加载到锁存器中的每一者,数据值可接着(例如,如通过控制器引导)通过相关联计算组件可选择地用于执行多个逻辑运算(例如,如通过锁存器数目的平方而确定)。因此,传递门707-1及707-2可在各种实施例中用于将锁存器706、计算组件731及/或逻辑运算选择逻辑713直接及/或间接耦合到彼此及/或将共享i/o线755间接连接到锁存器706、计算组件731及/或逻辑运算选择逻辑713。

图7中所展示的锁存器706可以类似于结合图2展示及描述的如与感测电路250相关联的感测放大器206(例如,主要锁存器)的方式运作。图7中所展示的计算组件731可类似于图2中所展示的如与感测电路250相关联的计算组件231(例如,次要锁存器)运作。图7中所展示的逻辑运算选择逻辑713可类似于图2中所展示的与感测电路250相关联的逻辑运算选择逻辑213运作。传递门707-1及707-2的栅极可由逻辑运算选择逻辑713信号(例如,pass)加以控制。举例来说,逻辑运算选择逻辑713的输出可耦合到传递门707-1及707-2的栅极。此外,计算组件731可包括经配置以使数据值向左及向右移位的可载入移位寄存器。

根据图7中所说明的实施例,计算组件731可包括经配置以使数据值向左及向右移位的可载入移位寄存器的相应阶段(例如,移位单元)。举例来说,如图7中所说明,移位寄存器的每一计算组件731(例如,级)包括一对右移位晶体管781及786、一对左移位晶体管789及790以及一对反相器787及788。可将信号phase1r、phase2r、phase1l及phase2l施加到相应控制线782、783、791及792以启用/停用对应计算组件731的锁存器上与根据本文中所描述的实施例执行逻辑运算及/或移位数据相关联的反馈。

图7中所展示的计算单元460/660电路展示耦合到数个逻辑选择控制输入控制线(包含iso、tf、tt、ft及ff)的运算选择逻辑713。从逻辑选择控制输入控制线上的逻辑选择控制信号的条件以及在经由断言iso控制信号启用隔离晶体管750-1及750-2时存在于互补共享i/o线对755-1及755-2上的数据值而确定从多个逻辑运算的逻辑运算选择。

根据各个实施例,运算选择逻辑713可包含四个逻辑选择晶体管:耦合于交换晶体管742的栅极与tf信号控制线之间的逻辑选择晶体管762、耦合于传递门707-1及707-2的栅极与tt信号控制线之间的逻辑选择晶体管752、耦合于传递门707-1及707-2的栅极与ft信号控制线之间的逻辑选择晶体管754及耦合于交换晶体管742的栅极与ff信号控制线之间的逻辑选择晶体管764。逻辑选择晶体管762及752的栅极通过隔离晶体管750-1(其具有耦合到iso信号控制线的栅极)耦合到真感测线。逻辑选择晶体管764及754的栅极通过隔离晶体管750-2(其还具有耦合到iso信号控制线的栅极)耦合到互补感测线。

可经由传递门707-1及707-2将存在于互补共享i/o线对755-1及755-2上的数据值加载到计算组件731中。计算组件731可包括可加载移位寄存器。当传递门707-1及707-2开启时,互补共享i/o线对755-1及755-2上的数据值(“a”)经传递到计算组件731且借此经载入到所述可载入移位寄存器中。互补共享i/o线对755-1及755-2上的数据值可为在触发感测放大器706时通过感测放大器存储的数据值(“b”)。在此实例中,逻辑运算选择逻辑信号pass为高以开启传递门707-1及707-2。

iso、tf、tt、ft及ff控制信号可操作以基于感测放大器706中的数据值(“b”)及计算组件731中的数据值(“a”)选择逻辑函数进行实施。特定来说,iso、tf、tt、ft及ff控制信号经配置以独立于存在于互补共享i/o线对755-1及755-2上的数据值而选择逻辑函数进行实施(尽管经实施逻辑运算的结果可取决于存在于互补共享i/o线对755-1及755-2上的数据值)。举例来说,iso、tf、tt、ft及ff控制信号直接选择逻辑运算进行实施,这是因为存在于互补共享i/o线对755-1及755-2上的数据值并未传递通过用以操作传递门707-1及707-2的栅极的逻辑。

另外,图7展示经配置以在感测放大器706与计算组件731之间交换互补共享i/o线对755-1及755-2的定向的交换晶体管742。当交换晶体管742开启时,交换晶体管742的感测放大器706侧上的互补共享i/o线对755-1及755-2上的数据值相反耦合(oppositely-couple)到交换晶体管742的计算组件731侧上的互补共享i/o线对755-1及755-2,且借此加载到计算组件731的可加载移位寄存器中。

当iso控制信号线被激活且tt控制信号在真共享i/o线上的数据值为“1”的情况下被激活(例如,为高)或ft控制信号在互补共享i/o线上的数据值为“1”的情况下被激活(例如,为高)时,逻辑运算选择逻辑713信号pass可经激活(例如,为高)以开启传递门707-1及707-2(例如,传导)。

真共享i/o线上的数据值是“1”开启逻辑选择晶体管752及762。互补共享i/o线上的数据值是“1”开启逻辑选择晶体管754及764。如果iso控制信号或对应共享i/o线(例如,特定逻辑选择晶体管的栅极耦合到的共享i/o线)上的相应tt/ft控制信号或数据值并非为高,那么传递门707-1及707-2将不会由特定逻辑选择晶体管开启。

当iso控制信号线经激活且tf控制信号在真共享i/o线上的数据值为“1”的情况下经激活(例如,为高)或ff控制信号在互补共享i/o线上的数据值为“1”的情况下经激活(例如,为高)时,逻辑运算选择逻辑信号pass*可经激活(例如,为高)以开启交换晶体管742(例如,传导)。如果对应共享i/o线(例如,特定逻辑选择晶体管的栅极耦合到的共享i/o线)上的相应控制信号或数据值并非为高,那么交换晶体管742将不会由特定逻辑选择晶体管开启。

pass*控制信号不一定与pass控制信号互补。可同时激活或撤销激活pass及pass*控制信号两者。然而,pass及pass*控制信号两者的同时激活使互补共享i/o对短接在一起,这可为应避免的破坏性配置。

图7中所说明的计算单元460/660电路经配置以从四个逻辑选择控制信号直接选择多个逻辑运算中的一者来实施(例如,逻辑运算选择并不取决于存在于互补共享i/o线对上的数据值)。逻辑选择控制信号的一些组合可引起传递门707-1及707-2及交换晶体管742两者同时开启,这将互补共享i/o线对755-1及755-2短接在一起。根据本发明的数个实施例,可通过图7中所说明的计算单元460/660电路实施的逻辑运算可为图8中展示的逻辑表中概述的逻辑运算。

图8是说明根据本发明的数个实施例的通过图7中所展示的计算组件731及相关联电路实施的可选择逻辑运算结果的逻辑表。可通过图7中所展示的多个共享i/o线755-1及755-2的数据路径中的计算单元460/660电路实施可选择逻辑运算结果。四个逻辑选择控制信号(例如,tf、tt、ft及ff)连同存在于互补共享i/o线上的特定数据值一起可用于选择多个逻辑运算中的一者进行实施,这涉及通过计算单元460/660电路的感测放大器706(例如,主要锁存器)及计算组件731(例如,次要锁存器)存储的起始数据值(“a”及“b”)。所述四个控制信号连同存在于互补共享i/o线上的特定数据值一起控制传递门707-1及707-2以及交换晶体管742的连续性,此又影响在触发之前/之后在计算组件731及/或感测放大器706中的数据值。可选择地控制交换晶体管742的连续性的能力促进实施涉及反相数据值(例如,反相操作数及/或反相结果)等的逻辑运算。

图8中所说明的逻辑表8-1展示在844处的栏a中所展示的通过计算组件731(例如,次要锁存器)存储的起始数据值及在845处的栏b中所展示的通过锁存器(例如,作为主要锁存器的感测放大器706)存储的起始数据值。逻辑表8-1中的其它3栏标头是指传递门707-1及707-2以及交换晶体管742的连续性,其可取决于四个逻辑选择控制信号(例如,tf、tt、ft及ff)的状态以及存在于互补共享i/o线对755-1及755-2上的特定数据值而分别控制为开启或关闭。“notopen”栏对应于传递门707-1及707-2以及交换晶体管742都处于非传导条件,“opentrue”对应于传递门707-1及707-2处于传导条件下且“openinvert”对应于交换晶体管742处于传导条件。在逻辑表8-1中未反映对应于传递门707-1及707-2以及交换晶体管742都处于传导条件的配置,这是因为此导致感测线短接在一起。

经由传递门707-1及707-2以及交换晶体管742的连续性的选择性控制,逻辑表8-1的上部分的三个栏中的每一者可与逻辑表8-1的下部分的三个栏中的每一者组合以提供对应于九个不同逻辑运算的3×3=9个不同结果组合,如通过875处所展示的各种连接路径所指示。在图8中所说明的逻辑表8-2中概述可通过计算单元460/660电路实施的九个不同可选择逻辑运算(包含and、or、not、not、nand、nor及xor逻辑运算)。

图8中所说明的逻辑表8-2的栏展示包含逻辑选择控制信号的状态的标头880。举例来说,在表8-2的行876中提供第一逻辑选择控制信号的状态,在表8-2的行877中提供第二逻辑选择控制信号的状态,在表8-2的行878中提供第三逻辑选择控制信号的状态且在表8-2的行879中提供第四逻辑选择控制信号的状态。在表8-2的行847中概述对应于结果的特定逻辑运算。

图9a到9c是说明根据本发明的数个实施例的用于在存储器装置中对数据值执行运算的数个调度策略的实施方案的示意图。图9a到9c中所说明的实施例希望说明经由共享i/o线及/或连接电路移动到在图中从上到下的连续时间帧(操作循环)中指示的计算单元960的数个逻辑条924的数据值(位)的配置。

在一些实施例中,操作循环可对应于先前描述为使用共享i/o线从对应于数个逻辑条的数个子行移动数据值的循序循环。因而,操作循环(在此期间通过一个子行的逻辑条的计算组件执行运算)的每一部分可例如持续约2ns,在此时间帧期间可针对下一操作循环起始从其它子行移动数据值。图9a及9b在924-1、924-2、…、924-16处说明16个逻辑条(其标记为l1、l2、…、l16),且在特定操作循环期间保持(存储)经移动数据值的每一逻辑条的1k个计算组件及/或锁存器由所述操作循环处所展示的整数1指示。

如本文中所描述,存储器装置(例如,图1a及1b中的120)可包含存储器单元阵列(例如,图1a中的130)及可选择地耦合到存储器单元阵列的感测电路(例如,图1a及2中的150及250)。存储器装置可进一步包含共享为用于与阵列相关联的数据路径内计算操作的数据路径的多个i/o线(例如,图1及3到7中分别为155、355、455、555、655、755)。多个共享i/o线可将感测电路可选择地耦合到共享i/o线的数据路径中的计算组件(例如,图2到4及6到7中的231、331、431、631、731)。

控制器(例如,图1a及1b中的140)可与阵列相关联。控制器140可经配置以经由感测电路引导第一数据值从阵列的第一行的第一子行(例如,图4中的428-1)经由共享i/o线移动到数据路径中的第一逻辑条(例如,图4中的424-1)的第一计算组件(例如,图4中的431-1)且经由感测电路引导第二数据值从第一行的第二子行(例如,图4中的428-2)经由共享i/o线移动到数据路径中的第二逻辑条(例如,图4中的424-2)的第二计算组件(例如,图4中的431-1)。

控制器140可经配置以在第一操作循环中引导第一数据值从第一子行(例如,图4中的428-1)移动且在第二操作循环中引导从第二子行(例如,图4中的428-2)移动第二数据值。举例来说,控制器可经配置以在第一操作循环中引导第一子行的数个多个数据值到第一逻辑条的对应数目个多个第一计算组件的经由共享i/o线的第一并行移动。控制器可经进一步配置以在第二操作循环中引导第二子行的数个多个数据值到第二逻辑条的对应数目个多个第二计算组件的经由共享i/o线的第二并行移动。控制器140可经配置以在第一操作循环中引导起始通过数个多个第一计算组件对并行移动到第一逻辑条的第一子行的对应数目个多个数据值执行运算(例如,逻辑运算)且在第二操作循环中引导起始通过数个多个第二计算组件对并行移动到第二逻辑条的第二子行的对应数目个多个数据值执行运算。

如图9a中所说明,控制器可经配置以实施“时钟同步(lockstep)”调度。因而,控制器可经配置以在第二操作循环中引导起始通过第一逻辑条(例如,逻辑条924-1)的计算组件执行运算,大体上同时起始通过第二逻辑条(例如,逻辑条924-2)的计算组件执行运算。举例来说,可在操作循环完成且逻辑条的所有计算组件及/或锁存器已使数据值从对应子行(例如,图4中的428-1、428-2、…、428-16)经由共享i/o线移动到其之后起始通过逻辑条l1、l2、…、l16中的计算组件执行运算。

替代地或另外,如图9b中所说明,控制器可经配置以实施“管线”调度。因而,控制器可经配置以在第一操作循环中引导起始通过第一逻辑条(例如,逻辑条924-1)的计算组件对第一子行(例如,图4中的428-1)的数个多个数据值执行运算,大体上同时在第二操作循环中将第二子行(例如,图4中的428-2)的数个多个数据值移动到第二逻辑条(例如,逻辑条924-1)。

举例来说,可在第一操作循环中将数据值从第一子行加载(存储)到逻辑条l1的计算组件及/或锁存器完成之后但在随后操作循环中起始对应于随后子行的逻辑条中的运算之前起始通过逻辑条l1中的计算组件执行运算。然而,在各种实施例中,在对逻辑条l1中的数据值执行运算的期间,可针对在第二操作循环中对第二逻辑条中的数据值执行运算而起始从下一子行移动数据值。

在特定操作循环中通过图9b中的特定逻辑条的计算组件及/或锁存器存储数据值之后,原始数据值及/或对两个原始数据值的逻辑运算的结果可保持于逻辑条中,如由整数1指示。因而,控制器可引导对存储及/或移动到相同逻辑条的数据值执行运算序列(例如,and、or、not、not、nand、nor及xor逻辑运算的任何数目及/或组合),如在图9a及9b中所展示的任一时钟同步或管线调度中所展示。

因此,由于在l2中起始运算之前的一个操作循环在l1中起始运算且在l3中起始运算之前的一个操作循环在l2中起始运算等等,所以运算序列的执行的完成可交错。举例来说,如针对图9b的底部处的最后操作循环所展示,通过l1执行的运算序列在通过l2执行的运算序列完成之前的一个操作循环完成且通过l2执行的运算序列在通过l3执行的运算序列完成之前的一个操作循环完成,等等。

因此,控制器140可经配置以引导使用单个逻辑条的多个计算组件执行循序多个运算。可对从阵列的子行移动到逻辑条的数个多个数据值执行循序多个运算,所述逻辑条在完成循序多个运算中的最后一者之前对应于数个多个计算组件及/或循序多个运算的部分完成结果。

控制器140可经配置以应用调度策略(例如,本文中所描述的时钟同步、管线及/或脉动调度策略)以用于对第一数据值执行第一运算及对第二数据值执行第二运算。特定调度策略的应用可是基于通过第一逻辑条的第一计算组件存储第一数据值的预期时序(例如,如通过控制器540的序列发生器532及/或时序电路533引导)及通过第二逻辑条的第二计算组件存储第二数据值的时序。在各种实施例中,第一运算(例如,第一运算序列)可为相同于第二运算(例如,第二运算序列)的运算或第一运算可不同于第二运算。控制器可经配置以基于特定调度策略引导使用第一逻辑条的第一计算组件对第一数据值执行第一运算且基于调度策略引导使用第二逻辑条的第二计算组件对第二数据值执行第二运算。

在一些实施例中,第一逻辑条的第一计算组件可与第一锁存器相关联。因此,控制器可经配置以经由感测电路引导第三数据值从阵列的第二行的第三子行(例如,不同行的任何子行)经由共享i/o线移动到第一逻辑条的第一锁存器且引导对通过第一计算组件存储的来自第一行的第一数据值及通过第一锁存器存储的来自第二行的第三数据值执行逻辑运算。在一些实施例中,第一锁存器可包含或可为感测放大器(例如,结合图2及本文中其它处展示及描述的感测放大器206)以存储第三数据值。

本文中所描述的多个共享i/o线可如通过控制器引导那样配置以可选择地耦合到感测电路以经由多路复用器(例如,其可包含或可为在358处展示且结合图3描述的列选择电路)可选择地实现通过感测电路存储的对应于第一行的第一子行的数个多个存储器单元的数个多个数据值的并行移动。多路复用器可经配置以将数个多个数据值移动到第一逻辑条的对应数目个多个第一计算组件,如本文中所描述。第一子行(例如,428-1)的多个存储器单元的数目可对应于第一逻辑条(例如,424-1)的多个第一计算组件(例如,431-1)的数目。

替代地或另外,如图9c中所说明,控制器可经配置以实施“脉动”调度。如本文中所使用,脉动希望意味着数据经输入以流动通过硬接线数据路径内处理器节点(例如,逻辑条中的计算组件,如本文中所描述)的网络以将从存储器阵列(例如,130处展示的dram型阵列)的行及/或子行输入的数据组合、处理、合并及/或分类成经导出最终结果。每一节点可独立计算部分结果,将部分结果存储于自身内且向下游移动(例如,传送及/或复制)部分结果以用于进一步处理部分结果直到获得经导出最终结果的计算及输出(例如,用于存储于存储器阵列的数个行及/或子行中)。脉动阵列可被称为多指令多数据(mimd)架构。

已输入到例如六个逻辑条的序列(例如,区域924-a)中的第一逻辑条(例如,图9c中的逻辑条924-1的计算组件及锁存器)中的第一批未处理数据可经处理及移动(例如,传送及/或复制)到另一(例如,第二)逻辑条(例如,逻辑条924-2的计算组件及锁存器)以供脉动处理。在一些实施例中,第二批未处理数据可输入到第一逻辑条中,在第二批已移动(例如,传送及/或复制)到第二逻辑条且第一批已移动(例如,传送及/或复制)到第三逻辑条时其后接着第三批,以此类推。

如本文中所描述,延迟希望意味着将第一批未处理数据输入到第一逻辑条以用于执行第一运算与将第一批输出为经完全处理的数据之间的时段。举例来说,当已执行六个指令的序列且已在六个操作循环之后(例如,在执行六个运算的序列中的第六运算之后)输出经处理数据时,来自六个逻辑条的序列的输出延迟已过期。

因而,由于在一些实施例中可在每一操作循环之后输入额外批数据,所以存储器装置在延迟之后的每一操作循环可输出一批经完全处理的数据。在一些实施例中,例如当大体上同时使用逻辑条的多个区域(例如,如通过图9c中的区域924-a、924-b及924-c所展示)时,每操作循环可输出超过一批经完全处理的数据。

在一些实施例中,一批新、未处理数据(例如,两个数据值)可在经过数个操作循环(例如,经过在已执行六个运算的序列中的第一运算之后的1到5个操作循环)之后输入到区域的第一逻辑条中,而非在已在序列中执行每一运算且结果数据值已移动到下一逻辑条之后将未处理数据输入到序列中的第一逻辑条中。将数据值输入到第一逻辑条中的此延迟可在逻辑条之间引入缓冲,举例来说,其中已在六个逻辑条中进行先前提出的六个逻辑运算的序列中的第一or运算以用于执行序列中的其它逻辑运算且将新数据值引入到第一逻辑条中以用于执行第一or运算以开始另一运算序列。可通过例如用于执行序列中的不同逻辑运算的时间及/或用于对经由共享i/o线从存储器阵列的子行移动到第一逻辑条的数据值执行运算的时间对用于对先前通过与逻辑条的计算组件相关联的多个锁存器存储的数据值执行运算的时间的可能变化及/或不可预测性的因素以及其它可能因素确定包含于此缓冲中的操作循环数目。

通过实例且非限制地,区域924-a、924-b及924-c各自展示为包含六个逻辑条(例如,区域924-a中的逻辑条924-1(l1)、…、924-6(l6)、区域924-b中的逻辑条924-7(l7)、…、924-12(l12)及区域924-c中的逻辑条924-13(l13)、…、924-18(l18))以各自执行六个逻辑运算的序列中的逻辑运算。举例来说,每一区域可包含多于或少于六个逻辑条以执行具有多于或少于六个逻辑运算的序列及/或可存在多于或少于三个区域,使得计算单元960中可存在多于或少于总共18个逻辑条(例如,924-1、…、924-18),如图9c中所展示。

许多应用可涉及输入冗长及/或连续数据流以供数据处理。举例来说,此类应用可包含信号处理、图像处理、语音识别、包检测、逗号分隔值(csv)剖析、α混合图形操作、矩阵乘法及神经网络以及可对冗长及/或连续数据流进行操作的其它应用。在一些实施例中,如图9c中所展示,此未处理数据可输入到逻辑条阵列(例如,计算单元960)的图像左侧中且可通过在连续逻辑条中执行指令序列而处理数据,且可在逻辑条序列的图像左侧处输出结果。

因此,如本文中所描述,存储器装置(例如,图1a及1b中的120)可包含存储器单元阵列(例如,图1a中的130)及可选择地耦合到存储器单元阵列的感测电路(例如,图1a及2中的150及250)。在各种实施例中,感测电路可包含数个感测放大器(例如,如在206处展示且结合图2及本文中其它处描述)。存储器装置可包含共享为用于与阵列相关联的数据路径内计算操作的数据路径的多个i/o线(例如,图1及3到7中分别为155、355、455、555、655、755)。多个共享i/o线可将感测电路可选择地耦合到共享i/o线的数据路径中的计算组件(例如,图2到4及6到7中的231、331、431、631、731)。存储器装置可包含数据路径中的多个逻辑条(例如,924-1、…、924-18)。多个逻辑条可包含第一逻辑条(例如,924-1),第一逻辑条可包含对应于阵列的行(例如,319)的第一子行(例如,428-1)的数个多个存储器单元(未展示)的数个多个第一计算组件(例如,631-1、…、631-z)。

控制器(例如,图1a及1b中的140)可与阵列相关联。控制器140可经配置以经由感测电路引导第一数据值从阵列的第一行的第一子行(例如,428-1)经由共享i/o线移动到数据路径中的第一逻辑条(例如,l1)的第一计算组件。控制器140可经进一步配置以引导使用第一计算组件对来自第一子行的第一数据值执行第一运算且引导由执行第一运算所获得的第二数据值从第一逻辑条(例如,l1)经由连接电路(例如,232)移动到数据路径中的第二逻辑条(例如,l2)的第二计算组件(例如,对应于第一逻辑条中的第一计算组件的位置的计算组件)。

控制器可经配置以引导使用第二逻辑条(例如,l2)的第二计算组件对第二数据值执行第二运算。控制器可经配置以引导由执行第二运算所获得的第三数据值从第二逻辑条(例如,l2)经由连接电路(例如,232)移动到第三逻辑条(例如,l3)的第三计算组件(例如,对应于第一逻辑条中的第一计算组件的位置及第二逻辑条中的第二计算组件的位置的计算组件)。

因此,控制器可经配置以通过通过对应数目个多个逻辑条(例如,区域924-a中的l1、…、l6、区域924-b中的l7、…、l12及区域924-c中的l13、…、l18)脉动地移动逻辑运算结果而引导执行数个多个逻辑运算序列(例如,在每一区域924-a、924-b及/或924-c中从上到下展示的数个操作循环)。可使用对应数目个多个逻辑条的对应数目个多个计算组件计算数个多个逻辑运算结果。举例来说,区域(例如,924-a)中的第一逻辑条(例如,l1)或所有逻辑条(例如,l1、…、l6)中的计算组件(例如,631-1、…、631-z)的数目可对应于(例如,从逻辑条l6输出的)逻辑运算结果的数目。

在各种实施例中,多个逻辑运算序列(例如,区域924-a、924-b及924-c中所展示)可各自为相同逻辑运算序列(例如,or、and、xor、or、and及not的序列)或多个逻辑运算序列可包含不同于其它逻辑运算序列的至少一个逻辑运算序列。举例来说,多个逻辑条可经配置为对应于数个多个逻辑运算序列的数个多个区域(例如,924-a、924-b及924-c)。在一些实施例中,控制器可经配置以引导大体上同时起始多个逻辑运算序列,其中多个逻辑运算序列中的每一者经引导以在多个区域中的不同者中执行。多个区域(例如,三个区域924-a、924-b及924-c)的数目可对应于阵列的行的多个子行(例如,子行428-1、…、428-18)的数目除以多个逻辑运算序列(例如,三个区域924-a、924-b及924-c中的三个逻辑运算序列)的数目。

控制器可经配置以在第一操作循环(例如,来自第一区域924-a的顶部的第一操作循环)中引导起始通过第一区域中的对应数目个多个逻辑条上的数个多个第一计算组件(例如,每一逻辑条中的计算组件631-1)对来自第一子行(例如,428-1)的第一数据值执行第一逻辑运算序列。控制器可经配置以在第二操作循环(例如,来自第一区域924-a的顶部的第二操作循环)中引导起始通过第二区域(例如,区域924-b)中的对应数目个多个逻辑条上的数个多个第二计算组件(例如,每一逻辑条中的计算组件631-1)对来自第二子行(例如,428-2)的第二数据值执行第二逻辑运算序列。

控制器可经配置以在第一操作循环中引导通过第一区域中的逻辑条的计算组件对第一数据值执行第一逻辑运算序列。控制器可经进一步配置以在第二操作循环中引导第一数据值从第一子行经由共享i/o线移动到第一区域中的第一计算组件,大体上同时将第二数据值从第二子行经由共享i/o线移动到第二区域中的第二计算组件。

控制器可经配置以在第二操作循环中引导通过第一区域(例如,区域924-a)中的逻辑条(例如,l1、…、l6)的计算组件对第一数据值执行第一逻辑运算序列,大体上同时通过第二区域(例如,区域924-b)中的逻辑条(例如,l7、…、l12)的计算组件对第二数据值执行第二逻辑运算序列。类似地,在第三操作循环中,控制器可经配置以引导通过第一区域(例如,区域924-a)中的逻辑条(例如,l1、…、l6)的计算组件对第一数据值执行第一逻辑运算序列,大体上同时通过第二区域(例如,区域924-b)中的逻辑条(例如,l7、…、l12)的计算组件对第二数据值执行第二逻辑运算序列且通过第三区域(例如,区域924-c)中的逻辑条(例如,l13、…、l18)的计算组件对第三数据值执行第三逻辑运算序列。

因此,由于在区域924-b的l7中起始逻辑运算序列之前的一个操作循环在区域924-a的l1中起始逻辑运算序列且在l13中起始运算之前的一个操作循环在l7中起始逻辑运算序列,所以逻辑运算序列的执行的完成可交错。举例来说,如针对图9c的底部处的最后操作循环所展示,通过l1起始的运算序列在通过l7起始的运算序列完成之前的一个操作循环完成且通过l7起始的运算序列在通过l13起始的运算序列完成之前的一个操作循环完成。

通过实例且非限制地展示在图9a、9b及9c中从上到下说明的数个操作循环。举例来说,尽管数个操作循环经展示为在每一图中不同,但图中的一或多者中的数个操作循环可相同于或不同于另一图中的数个操作循环。

本文中所描述的用于数据路径内计算操作的设备及方法包含对例如pimdram实施方案的控制器的操作的数个改变。举例来说,控制器可协调将用于运算序列的分开运算的指令指派到数个子控制器(未展示),使得每一子控制器可引导关于存储于例如存储器库121、存储器库区段423、子阵列425-1、…、425-32、计算组件660、逻辑条924-1、…、924-18及/或区域924-a、924-b、924-c中的每一者中的数据值的分开运算。举例来说,对于每逻辑条具有1k个计算组件的逻辑条,可潜在地(例如,大体上同时)起始1k个不同逻辑运算序列,如通过控制器140及/或对应数目个子控制器所引导。

举例来说,子控制器可经配置以(例如,通过执行指令而)引导输入数据从行的子行经由感测电路移动(例如,传送及/或复制)到特定计算单元中的特定逻辑条中的特定计算组件。子控制器可经配置以在序列的逻辑运算的每一执行之后引导所得经处理数据值从其中执行运算的逻辑条移动(例如,传送及/或复制)到另一(例如,下一)逻辑条中的对应计算组件以用于执行运算序列(例如,脉动序列)中的下一运算。

本文中所描述的用于数据路径内计算操作的脉动数据移动的优点可包含如此配置的存储器装置可有效利用大量并行化及计算能力。举例来说,存储器装置可延伸其计算及执行能力,以便大体上同时执行运算序列中的多个、独立及/或独特运算,同时将经处理数据值从一个运算并行输出到下一运算。

因此,本文中所描述的实施例提供一种用于操作用于通过使用处理资源执行非暂时性指令而执行的数据路径内计算操作(例如,通过脉动数据移动,如本文中所描述)的存储器装置的方法。如本文中所描述,所述方法可包含对从存储器单元阵列的第一行中的第一子行中的存储器单元移动到第一逻辑条的数据值执行第一运算,所述数据值经由通过所述阵列及数据路径中的多个逻辑条共享的i/o线而移动。所述方法还可包含在已对数据值执行第一运算之后将数据值经由可选择地耦合第一逻辑条与选定第二逻辑条的连接电路移动到第二逻辑条且对移动到第二逻辑条的数据值执行第二运算。

所述方法可进一步包含通过执行非暂时性指令集而执行第一运算,移动数据值及执行第二运算。如本文中所描述,可通过控制器及/或子控制器经由用于阵列的处理资源、共享i/o线、多个逻辑条及/或连接电路以及其它组件执行非暂时性指令集。

所述方法可进一步包含使用第一逻辑条的第一计算组件执行第一运算且使用第二逻辑条的第二计算组件(例如,对应于第一逻辑条中的第一计算组件的位置的计算组件)执行第二运算。在各种实施例中,可如通过控制器及/或子控制器引导那样执行第一运算及第二运算。第一运算及第二运算可经执行为对应于数个多个逻辑条(例如,区域924-a中的l1、…、l6、区域924-b中的l7、…、l12及区域924-c中的l13、…、l18)的数个多个逻辑运算(例如,逻辑运算序列中的六个逻辑运算)中的前两个运算。多个逻辑运算可为经执行以产生不同于从第一子行中的存储器单元移动的数据值的结果的循序多个逻辑运算。

所述方法可进一步包含经由共享i/o线将循序多个逻辑运算的最后运算的完成结果从最后逻辑条(例如,区域924-a中的l6、区域924-b中的l12及/或区域924-c中的l18)移动到阵列的行中的选定存储器单元。最后逻辑条希望意味着其中执行循序多个逻辑运算的最后运算的逻辑条。在各种实施例中,用于存储结果的阵列的行可为存储器库、存储器库区段、象限及/或子阵列中(例如,dram存储器装置中)的相对于先前从其移动输入数据值的行的子行或若干行的子行相同或不同的行。

本发明的实施例可通过使用dram实施方案的经改进数据路径(例如,共享i/o线)增大pim阵列中的数据移动的速度、速率及/或效率。如本文中所描述,存储器装置中的一对存储器库位置中的源位置与目的地位置可经配置以经由多个共享i/o线耦合。如本文中所描述,所述存储器装置中的存储器库包含存储器单元阵列、经由多个感测线耦合到所述阵列的感测电路(所述感测电路包含感测放大器及计算组件)及经由多个共享i/o线耦合到所述阵列及所述感测电路的计算单元电路(所述计算单元电路包含具有经配置以实施运算的感测放大器及计算组件的多个逻辑条)。控制器耦合到所述阵列、所述感测电路及所述计算单元电路。

可从所述控制器接收命令以将来自阵列中的源位置的数据值移动(例如,复制、传送及/或输送)到计算单元电路中的目的地位置。可使用感测放大器及/或计算组件经由多个共享i/o线将所述数据值从所述源位置移动到所述目的地位置。

虽然在本文中已说明及描述包含感测电路、感测放大器、计算组件、锁存器、逻辑条、共享i/o线、列选择电路、连接电路、多路复用器等的各种组合及配置的实例实施例,但本发明的实施例不限于本文中明确叙述的所述组合。本文中所揭示的感测电路、感测放大器、计算组件、锁存器、逻辑条、共享i/o线、列选择电路、连接电路、多路复用器等的其它组合及配置是明确包含于本发明的范围内。

尽管在本文中已说明及描述特定实施例,但所属领域的技术人员将了解,经计算以实现相同结果的布置可替代所展示的特定实施例。本发明希望涵盖本发明的一或多个实施例的调适或变化。应理解,已以阐释性方式且非限制性方式作出上文描述。所属领域的技术人员在审阅上文描述之后将明白在本文中未具体描述的上述实施例的组合及其它实施例。本发明的一或多个实施例的范围包含其中使用上述结构及过程的其它应用。因此,应参考所附权利要求书以及此类权利要求书所授权的等效物的全范围而确定本发明的一或多个实施例的范围。

在前述具体实施方式中,出于简化本发明的目的,将一些特征集中于单个实施例中。本发明的此方法不应解释为反映本发明的所揭示实施例必须使用多于每一权利要求中明确叙述的特征的意图。而是,如所附权利要求书所反映,本发明目标在于少于单个所揭示实施例的所有特征。因此,所附权利要求书特此并入具体实施方式中,其中每一权利要求自身独立地作为单独实施例。

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