本公开总体上涉及存储器阵列,例如,在学习/推理机(例如,人工神经网络(ann))中使用的存储器阵列。
背景技术:
众所周知,各种计算机视觉、语音识别和信号处理应用受益于学习/推理机的使用。如本公开中所讨论的,学习/推理机可以归于机器学习、人工智能、神经网络、概率推理引擎、加速器等的技术范畴。这样的机器被布置为快速执行成百上千乃至数百万的并发操作。常规的学习/推理机可以提供数百万亿次浮点运算(即,每秒一万亿(1012)次浮点运算)的计算能力。
已知的计算机视觉、语音识别和信号处理应用受益于学习/推理机(例如,深度卷积神经网络(dcnn))的使用。dcnn是对大量数据进行处理并通过将数据内与近端相关的特征进行合并,对数据进行广泛的预测并基于可靠的结论和新的合并对预测进行细化来自适应地“学习”的基于计算机的工具。dcnn被布置在多个“层”中,并且在每个层处进行不同类型的预测。
例如,如果提供了多个二维的面部图片作为dcnn的输入,则dcnn将学习面部的各种特征(例如,边缘、曲线、角度、点、颜色对比、亮点、暗点等)。这些一个或多个特征在dcnn的一个或多个第一层处进行学习。然后,在一个或多个第二层中,dcnn将学习面部的各种可识别特征(例如,眼睛、眉毛、前额、头发、鼻子、嘴巴、脸颊等);每个特征都可以与所有其他特征区分开。即,dcnn学习识别并区分眼睛与眉毛或任何其他面部特征。在一个或多个第三层或随后的层中,dcnn学习整个面部和更高阶的特征(例如,种族、性别、年龄、情绪状态等)。在某些情况下,甚至会教导dcnn识别人的特定身份。例如,可以将随机图像标识为面部,并且可以将面部识别为person_a、person_b或其他某个身份。
在其他示例中,可以为dcnn提供动物的多个图片,并且可以教导dcnn标识狮子、老虎和熊;可以为dcnn提供多个汽车图片,并且可以教导dcnn标识和区分不同类型的载具;并且也可以形成许多其他dcnn。dcnn可用于学习语句中的单词模式、标识音乐、分析个人购物模式、玩视频游戏、创建交通路线,并且dcnn也可用于许多其他基于学习的任务。
技术实现要素:
系统可以概括为包括:存储器阵列,该存储器阵列具有第一多个单元,第一多个单元被布置为多个单元行与多个单元列相交;多个第一计算电路,其中每个第一计算电路在操作中根据第一多个单元中对应单元列中的单元值来推算计算值;第一列复用器,该第一列复用器在操作中循环通过多个数据线,该多个数据线中的每个数据线对应于多个第一计算电路中的第一计算电路;第一感测电路,在操作中,该第一感测电路在第一列复用器循环通过多个数据线时经由第一列复用器从多个第一计算电路获得计算值,并且组合在确定数目的复用器循环内所获得的计算值;以及集群循环管理电路装置,该集群循环管理电路装置在操作中基于存储计算集群的数据的列的数目来确定复用器循环的确定数目。复用器循环的确定数目可以小于第一列复用器的多个物理数据线。
计算值可以是对应列中的单元值的部分和,并且在操作中,第一感测电路在第一列复用器的第一循环集合期间,经由多个数据线的第一集合,根据所获得的部分和来推算第一和,并且在第一列复用器的第二循环集合期间,经由多个数据线中的第二集合,根据所获得的部分和来推算第二和,其中第一循环集合和第二循环集合具有确定数目的复用器循环。第一列复用器在操作中可以循环通过第二多个数据线,每个数据线对应于多个第二计算电路中的相应第二计算电路,其中每个第二计算电路根据第二多个单元中对应单元列中的单元值来计算部分和。用于第一列复用器的第二多个数据线可以由第二列复用器提供。
系统可以包括:多个第二计算电路,其中每个第二计算电路在操作中根据存储器阵列的第二多个单元中的对应单元列中的单元值来推算计算值;第二列复用器,该第二列复用器在操作中循环通过多个数据线,每个数据线对应于多个第二计算电路中的第二计算电路;以及第二感测电路,在操作中,该第二感测电路在第二列复用器循环通过多个数据线时经由第二列复用器,从多个第二计算电路获得计算值,并组合在确定数目的复用器循环内所获得的计算值。
集群循环管理电路装置在操作中,可以响应于时钟信号而生成多个控制信号,并且可以将多个控制信号提供给第一感测电路和第一列复用器,以循环通过多个数据线达确定数目的复用器循环,从而使得第一感测电路从对应的第一计算电路获得计算值。第一列复用器在操作中,可以修改第一列复用器的多个数据线中的每个数据线的地址,以将连续的多个数据写入第一多个单元。系统可以包括数据线选择电路装置,数据线选择电路装置在操作中,选择通过第一列复用器的多个数据线的不同循环顺序,以将连续的多个数据写入第一多个单元。
方法可以被概括为包括:将数据存储在多个存储器单元中,存储器单元被布置为多个单元行与多个单元列相交;根据来自多个单元列的单元值来推算多个计算值,其中每个相应计算值根据来自相应单元列的单元值进行计算;确定多个单元列中的、存储用于数据计算集群的数据的列的数目;基于所确定的列的数目来选择复用器循环的数目;通过采用列复用器循环通过多个计算值的第一子集达所选择的数目的复用器循环,并且通过采用感测引擎将来自计算值的第一子集的相应计算值进行组合,来生成数据计算集群的结果;以及输出数据计算集群的结果。
方法可以包括:通过采用第二列复用器循环通过多个计算值的第二子集达所选择的数目的复用器循环,并且通过采用第二感测引擎将来自计算值的第二子集的相应计算值进行组合,来生成数据计算集群的第二结果;以及输出数据计算集群的第二结果。方法可以包括:通过采用列复用器循环通过多个计算值的第二子集达所选择的数目的复用器循环,并且通过采用感测引擎将来自计算值的第二子集的相应计算值进行组合,生成数据计算集群的第二结果;以及输出数据计算集群的第二结果。
方法可以包括:基于针对数据计算集群的所选择的数目的复用器循环,修改列复用器所利用的数据线的数目。方法可以包括:响应于非存储器时钟信号,启动列复用器,以循环通过计算值的第一子集达所选择的数目的复用器循环;以及响应于存储器时钟信号,针对所选择的数目的复用器循环,启动列复用器的每个数据线的每个循环,以获得计算值的第一子集。方法可以包括:修改列复用器的多个数据线中的每个数据线的地址,以将连续的多个数据写入第一多个单元。方法可以包括:选择列复用器循环通过多个单元列的不同的循环顺序,从而将连续的多个数据写入多个单元。
计算设备可以被概括为包括:用于在多个单元中存储数据的装置,多个单元被布置为多个单元行与多个单元列相交;用于根据来自多个单元列中的每个相应列的单元值来计算相应计算值的装置;用于基于多个单元列中的、存储用于数据计算集群的数据的列的数目来确定计算集群循环大小的装置;用于针对所确定的计算集群循环大小循环通过相应计算值的装置;以及用于将相应计算值进行组合来针对所确定的计算集群循环大小生成数据计算集群的结果的装置。
计算设备可以包括:用于针对所确定的计算集群循环大小启动通过相应计算值的循环的装置;以及用于针对所确定的计算集群循环大小的每个相应计算值启动每个循环的装置。计算设备可以包括:用于修改在多个单元列中存储数据的顺序以将连续的多个数据写入多个单元的装置。
具有内容的非暂态计算机可读介质,该内容使得集群循环管理电路装置执行动作,该动作可以概括为包括:将数据存储在多个存储器单元中,该多个存储器单元被布置为多个单元行与多个单元列相交;确定多个单元列中的、存储用于计算操作的数据的列的数目;基于所确定的列的数目来选择复用器循环的数目;通过采用列复用器循环通过多个单元列的第一子集达所选择的数目的复用器循环,并且通过采用感测引擎将来自单元列的第一子集的值进行组合,生成计算操作的结果;以及输出计算操作的结果。
附图说明
参考以下附图描述了非限制性和非穷举性实施例,其中除非另外指明,否则贯穿各个视图,相同的附图标记指代相同的部分。附图中元件的大小和相对位置不必按比例绘制。例如,各种元件的形状被选择、放大和定位来改进附图的可读性。为了便于在附图中识别,已选择了所绘制的元件的特定形状。此外,为了便于图示,在附图中未示出本领域技术人员已知的一些元件。在下文中,参考附图来描述一个或多个实施例,在附图中:
图1是根据一个实施例的具有处理核和存储器的电子设备或系统的一个实施例的功能框图;
图2a-图2c图示了具有可配置的复用器和感测电路的存储器阵列的用例上下文图;
图3a-图3d图示了使用自移位复用器将多个数据连续写入存储器阵列的用例上下文图;
图4a-图4d图示了使用预解码移位将多个数据连续写入存储器阵列的用例上下文图;
图5图示了总体上示出了使用如图2a-图2c所示的可配置的复用器和感测电路从存储器阵列读取数据的过程的一个实施例的逻辑流程图;
图6图示了总体上示出了采用复用器的过程的一个实施例的逻辑流程图,复用器修改数据线地址,以将多个数据连续写入如图3a-图3d所示的存储器阵列;
图7图示了总体上示出了采用预解码移位来将多个数据连续写入图4a-图4d所示的存储器阵列的一个实施例的逻辑流程图;以及
图8图示了总体上示出了用于利用第一时钟来发起对存储器阵列的复用器读取和写入并且利用第二时钟来发起复用器的读取和写入的每个循环的过程的一个实施例的逻辑流程图。
具体实施方式
以下描述以及附图阐述了某些特定细节,以提供对各种公开实施例的透彻理解。然而,相关领域的技术人员将认识到,可以在没有这些特定细节中的一个或多个,或者利用其他方法、组件、设备、材料等,以各种组合来实践所公开的实施例。在其他情况下,为了避免不必要的混淆实施例的描述,未示出或描述与本公开的环境相关联的众所周知的结构或组件(包括但不限于接口、电源、物理组件布局等)。附加地,各种实施例可以是方法、系统或设备。
在整个说明书、权利要求书和附图中,除非上下文另外明确指出,否则以下术语具有本文明确关联的含义。术语“本文”指代与本申请相关联的说明书、权利要求书和附图。除非上下文另外明确指出,否则短语“在一个实施例中”、“在另一实施例中”、“在各种实施例中”、“在一些实施例中”、“在其他实施例中”及其其他变型指代本公开的一个或多个特征、结构、功能、限制或特性,并且不限于相同或不同的实施例。如本文所使用的,术语“或”是包含性的“或”运算符,并且等价于短语“a或b,或两者”或“a或b或c,或其任何组合”,并且具有附加元件的列表被类似地处理。除非上下文另有明确指示,否则术语“基于”不是排他性的,并且允许基于未描述的附加特征、功能、方面或限制。附加地,贯穿说明书,“一”、“一个”和“该”的含义包括单数和复数。
由dcnn或其他神经网络执行的计算通常包括对大量数据的重复计算。例如,许多学习/推理机将已知信息或内核与未知数据或特征向量进行比较(例如,将已知像素分组与图像的一部分进行比较)。一个常见的比较类型是内核与特征向量之间的点积。但是,内核大小、特征大小和深度往往在神经网络的不同层之间变化。在某些情况下,可以使用专用计算单元对变化的数据集进行这些操作。但是,由于数据集的变化,存储器利用率可能无法完全优化。例如,可以通过选择连接到一个计算线的所有元件来启用小摆幅计算,而大型计算集群可能会利用多个计算线上的大量元件,这可能导致存储器的纵横比利用率很差。同样,由于电压裕量有限,这样的变化可能导致精度损失。
图1是将应用待描述的实施例类型的电子设备或系统100的一个实施例的功能框图。系统100包括一个或多个处理核或电路102。处理核102可包括例如一个或多个处理器、状态机、微处理器、可编程逻辑电路、分立电路装置、逻辑门、寄存器等及其各种组合。处理核可以控制系统100的整体操作、系统100执行应用程序等。
系统100包括一个或多个存储器(例如,一个或多个易失性和/或非易失性存储器),该一个或多个存储器可以存储例如与系统100的控制、由系统100执行的应用和操作等有关的全部或部分指令和数据。如图所示,系统100包括一个或多个高速缓存存储器104、一个或多个初级存储器106和一个或多个次级存储器108。存储器104、106、108中的一个或多个包括在操作中由系统100执行的一个或多个过程共享的存储器阵列(参见例如图2a-图2c的存储器阵列202、图3a-图3d中的存储器阵列302或图4a-图4d中的存储器阵列402)。
系统100可以包括一个或多个传感器120(例如,图像传感器、音频传感器、加速度计、压力传感器、温度传感器等)、一个或多个接口130(例如,无线通信接口、有线通信接口等)、一个或多个bist电路140和其他电路150(可以包括天线、电源等)和主总线系统170。主总线系统170可以包括耦合到系统100的各个组件的一个或多个数据、地址、功率和/或控制总线。系统100还可以包括附加总线系统,例如,将高速缓存存储器104和处理核102通信地耦合的总线系统162、将高速缓存存储器104和初级存储器106通信地耦合的总线系统164、将初级存储器106和处理核102通信地耦合的总线系统166以及将初级存储器106和次级存储器108通信地耦合的总线系统168。
系统100还包括集群循环管理电路装置160,集群循环管理电路装置160在操作中采用一个或多个存储器管理例程来利用可配置的复用器和感测电路,以从存储器104、106或108读取数据(例如,参见图2a-图2c),或将数据动态地写入共享存储器阵列的存储器中(例如,参见图3a-图3d和图4a-图4d)。存储器管理电路装置160可以单独地或与其他处理结合(例如,通过处理核102)来执行本文所述的例程和功能(包括分别在图5-图8中的过程500-800)。集群循环管理电路装置160可以是一个或多个处理器、状态机、微处理器、可编程逻辑电路、分立电路装置、逻辑门、寄存器等以及它们的各种组合。
初级存储器106通常是系统100的工作存储器(例如,处理核102在其上工作的一个或多个存储器),并且通常可以是存储与由系统100执行的过程有关的代码和数据的有限大小的易失性存储器。为了方便起见,本文中对存储器中存储的数据的引用也可以指代存储器中存储的代码。次级存储器108通常可以是存储指令和数据的非易失性存储器,当系统100需要指令和数据时可以将指令和数据取回并存储在初级存储器106中。高速缓存存储器104与次级存储器108相比,可以是相对较快的存储器,并且通常具有可以比初级存储器106的大小大的有限大小。
高速缓存存储器104临时存储由系统100稍后使用的代码和数据。代替从次级存储器108取回所需的代码或数据以存储在初级存储器106中,系统100可以首先检查高速缓存存储器104来查看数据或代码是否已存储在高速缓存存储器104中。通过减少对系统100使用的数据和代码进行取回所需的时间和其他资源,高速缓存存储器104可以显著改进系统(例如,系统100)的性能。当(例如,从次级存储器108)取回由系统100使用的代码和数据时,或者当数据或代码被写入(例如,写入初级存储器106或次级存储器108)时,可以将数据或代码的副本存储在高速缓存存储器104中,以供系统100稍后使用。各种高速缓存管理例程可以用于控制一个或多个高速缓存存储器104中存储的数据。
图2a-图2c图示了具有可配置的复用器的存储器阵列和用于从存储器阵列读取数据的感测电路的用例上下文图。图2a中的系统200a包括存储器阵列202、多个计算电路(如所示的部分和电路206)、一个或多个列复用器208a-208b以及一个或多个感测电路210a-210b。
如图所示,存储器202包括被配置在列-行布置中的多个单元230,在列-行布置中,多个单元行与多个单元列相交。每个单元可以经由特定的列和特定的行来寻址。存储器阵列202中图示的单元230的数目仅出于例示的目的,并且采用本文所述实施例的系统可以在更多或更少列和更多或更少行中包括更多或更少单元。用于访问特定存储器单元的功能和组件的细节对于本领域技术人员而言是已知的,为简洁起见在本文中不再描述。
存储器阵列202的每一列204a-204h与对应的部分和电路206电通信。每个部分和电路206包括:被配置为在操作中推算或确定来自对应列中每个单元230的单元值之和的电路装置。例如,部分和ps1是列204a中单元230之和,部分和ps2是列204b中单元230之和,依此类推。在一个实施例中,部分和电路206可以是采样与保持电路。
因为本文描述的实施例可以用于神经网络计算,所以可以在计算集群中处理数据。计算集群是对数据集执行的多个计算。例如,计算集群可以包括例如在预选择的数目的像素之上,内核数据和特征向量数据之间的比较。在所示的实施例中,数据被添加到存储器202,使得用于单个计算集群的所有数据与相同的感测电路210a-210b相关联。例如,标记为k1[a1],k1[a2],...,k1[n1],k1[n2],...,k1[p1],k1[p2],...,k1[x1]和k1[x2]的数据用于第一计算集群,并且存储在列204a-204d中的单元230中。相反,标记为k2[a1],k2[a2],...,k2[n1],k2[n2],...,k2[p1],k2[p2],...,k2[x1]和k2[x2]的数据用于分离的第二计算集群并且存储在列204e-204h中的单元230中。以此方式,由感测电路210a获得的结果用于一个计算集群,而由感测电路210b获得的结果用于另一计算集群。
每个复用器208a-208b包括多个数据线216和输出218a-218b。在所示的实施例中,每个复用器208a-208b包括四个物理数据线216。因此,复用器208a-208b被认为具有四个物理复用器循环。参考c1、c2、c3和c4图示了数据线216。这些附图标记不是对沿数据线216传递的值的指示,相反,它们指代特定时钟循环,在该特定时钟循环中复用器208a-208b选择特定数据线以将来自对应部分和206的值传递到相应输出218a-218b。在其他实施例和配置中,复用器可以具有两个物理数据线、八个物理数据线或其他数目的物理数据线。此外,复用器208a-208b被图示为只读复用器,并且被配置为从存储器202读取数据。然而,在一些实施例中,复用器208a-208b可以是读取/写入复用器,并且被配置用于将数据写入存储器202并且用于从存储器202读取数据。
复用器208a-208b被配置为基于完整的计算集群循环中的所选择的循环数而循环通过数据线216。计算集群循环对应于与特定计算集群相关联的列。针对给定的计算集群循环,复用器208a-208b循环通过的数据线216的数目基于计算集群循环的大小来确定,计算集群循环的大小是存储器202中针对给定的计算集群、存储数据的列204的数目。集群循环大小与每个复用器可用的物理数据线循环的数目无关。如上所述且如图2a所示,用于第一计算集群的数据存储在四个列(列204a-204d)中,而用于第二计算集群的数据存储在四个单独列(列204e-204h)中。在该示例中,计算集群大小为四个循环。
在各个实施例中,每个复用器208a-208b接收控制信号,控制信号指示何时启动通过数据线216的循环、或何时循环到每个个体数据线216、或其组合。在所示的实施例中,由复用器208a-208b接收的控制信号包括例如各种时钟信号。例如,每个复用器208a-208b包括第一时钟输入228。第一时钟输入228从第一时钟212接收一个或多个时钟信号,以针对给定的计算集群循环在读取操作期间循环通过数据线216。第一时钟212可以在存储器的外部或内部。在一些实施例中,第一时钟212是系统时钟。
在一些实施例中,经由第一时钟输入228从第一时钟212接收到的信号将复用器208a-208b初始化,以循环通过数据线216,但是每个个体数据线循环由经由第二时钟输入226从第二时钟214接收的信号触发。以这种方式,每个单独的计算集群循环由来自第一时钟212的时钟信号触发。在该示例中,从第一时钟212接收的时钟信号是启动复用器的循环的集群控制信号的示例,并且从第二时钟214接收的时钟信号是启动复用器的每个个体循环的复用器循环控制信号的示例。
例如,当复用器208a从第一时钟212接收时钟信号clk时,复用器208a启动计算集群循环,该计算集群循环触发复用器208a利用来自第二时钟214的下一时钟信号循环到第一数据线216。这样,当从第二时钟214接收时钟信号c1时,复用器208a循环到与部分和ps1相对应的数据线,使得其部分和值由感测电路210a获得。当从第二时钟214接收时钟信号c2时,复用器208a循环到与部分和ps2相对应的下一数据线,使得其部分和值由感测电路210a获得并与其先前保持的值组合。对于从第二时钟214接收的时钟信号c3和c4,复用器208a继续以类似的方式操作,以使得感测电路210a获得来自ps3和ps4的值,并将来自ps3和ps4的值与来自ps1和ps2的值组合。
同样,当复用器208b从第一时钟212接收到时钟信号clk时,复用器208b启动计算集群循环,计算集群循环触发复用器208b利用来自第二时钟214的下一时钟信号循环到第一数据线216。当从第二时钟214接收到时钟信号c1时,复用器208b循环到与部分和ps5相对应的数据线,使得其部分和值由感测电路210b获得。在该示例中,启动复用器208b的时钟信号clk与启动复用器208a的时钟信号相同。以这种方式,单个时钟信号启动两个复用器208a-208b,以开始循环通过对应的数据线216。复用器208b响应于从第二时钟214接收到时钟信号c2、c3和c4而循环通过与部分和ps6、ps7和ps8相对应的数据线,使得类似于复用器208a和感测电路210b,由感测电路210b获得部分和值并将其组合。
一旦对于给定的计算集群循环达到了最大数目的复用器循环(例如,在图2a所示的示例中为四个),则感测电路210a-210b输出其获得的值,并且复用器208a-208b等待来自第一时钟212的下一第一时钟信号,以启动复用器208a-208b,以针对下一计算集群循环集合再次循环通过数据线216。结果,系统200a针对两个计算集群获得两个结果,一个结果由感测电路210a针对列204a-204d获得,另一个结果由感测电路210b针对列204e-204h获得。并且由于复用器208a-208b利用相同的时钟信号(第一时钟信号、或第一时钟信号和第二时钟信号的组合)来循环通过其相应的数据线216,因此在单个计算集群循环期间获得了针对两个计算集群的两个结果。
如图所示,复用器208a-208b利用来自第一时钟212的一个时钟信号和来自第二时钟214的四个时钟信号来访问其对应的四个数据线216。然而,实施例不限于此。相反,在其他实施例中,接收来自第一时钟212的时钟信号可以指示复用器208a-208b循环到第一数据线216,然后在从第二时钟214接收到下一时钟信号时,循环到第二数据线216。以这种方式,第二时钟214被用于在第一循环之后,针对给定的计算集群循环,循环通过每个对应的数据线,在该示出的示例中,复用器208a-208b将利用来自第一时钟212的一个时钟信号和来自第二时钟214的三个时钟信号来访问其对应的四个数据线216。
在至少一个实施例中,第二时钟214可以是用于刷新存储器阵列202中的数据的存储器时钟。在其他实施例中,第二时钟214可以是专用于复用器208a-208b的时钟或一些其他时钟。第二时钟214可以在存储器的外部或内部。通常,第二时钟214在物理上更靠近复用器208a-208b,并且比第一时钟212使用更少的功率来循环通过复用器数据线。在各种实施例中,第二时钟信号可以被称为循环控制信号。
在其他实施例中,经由第一时钟输入228从第一时钟212(或某个其他时钟)接收的每个信号触发个体数据线循环。例如,当复用器208a-208b从第一时钟212接收第一时钟信号时,复用器208a循环到与部分和ps1相对应的数据线,使得其部分和值由感测电路210a获得,并且复用器208b循环到与部分和ps5相对应的数据线,使得其部分和值由感测电路210b获得。但是,当复用器208a-208b从第一时钟212接收第二时钟信号时,复用器208a循环到与部分和ps2相对应的数据线,使得其部分和值由感测电路210a获得,并且复用器208b循环到与部分和ps6相对应的数据线,使得其部分和值由感测电路210b获得。对于从第一时钟212接收的附加时钟信号,复用器208a-208b继续以类似的方式操作。一旦针对计算集群循环达到了复用器循环的最大数目(例如,在图1所示的示例中为四个),则复用器208a在下一时钟信号上循环回到第一数据线。在这样的实施例中,第二时钟214是可选的并且不被使用。
在一些实施例中,复用器208a-208b可以具有其他输入/输出接口(未示出),例如用于在读取和写入操作之间进行选择、选择特定数据线216、选择计算集群循环大小等。
例如,如图所示,复用器208a-208b直接利用时钟信号来循环通过数据线216。然而,在其他实施例中,每个复用器208a-208b还可以包括一个或多个数据选择线(未示出)。数据选择线被配置为从选择电路装置接收地址,以循环到特定数据线216。在至少一个这样的实施例中,如本文所述,选择电路装置利用来自第一时钟212的第一时钟信号或来自第二时钟214的第二时钟信号或其某个组合而循环通过不同的数据线216。图4a-图4d图示了如何利用这样的选择电路装置的一个示例。尽管图4a-图4d中图示的数据线选择电路装置用于指示复用器循环通过多个数据线以将数据写入存储器,但是类似的电路装置也可以用于指示复用器循环通过多个数据线以从存储器读取数据。
作为其他输入/输出接口的另一示例,复用器208a-208b可以包括一个或多个计算集群循环大小输入线(未示出)。计算集群循环大小输入线可以用于标识:对于单个计算集群,复用器208a-208b和感测电路210a-210b将利用多少列204或数据线216来从存储器202获得结果。例如,在图2a所示的示例中,复用器208a-208b针对单个计算集群的四个列,利用四个数据线来从部分和中获得结果。在该示例中,每个复用器208可以具有一个或多个计算集群循环大小输入线,一个或多个计算集群循环大小输入线指示复用器208a-208b作为计算集群循环(四个复用器循环或四个数据线)进行操作。
类似于复用器208a-208b,感测电路210a-210b还可以从第一时钟212和第二时钟214接收时钟信号。这些时钟信号用于针对给定计算集群循环,触发感测电路210a-210b在何时获得由复用器208a-208b选择并经由输出218a-218b输出的部分和值。当计算集群循环完成时,响应于来自第二时钟214的最终时钟信号或响应于来自第一时钟的下一时钟信号,感测电路210a-210b将其组合的存储值分别移动到输出缓冲器232a-232b中。在一些实施例中,类似于本文针对复用器208a-208b所描述的,感测电路210a-210b还可以包括一个或多个计算集群循环大小输入线(未示出),以指示针对给定的计算集群循环,将获得多少个不同的部分和值(与给定计算相关联的列的数目)。
系统200a还包括集群循环管理电路装置160。在一些实施例中,集群循环管理电路装置160基于针对给定计算集群的存储数据的列的数目来确定待用于计算集群循环的复用器循环的数目(例如,计算集群循环大小)。在至少一个实施例中,针对给定计算集群存储数据的列的数目可以基于与用于神经网络处理的内核数据的批次大小相比的一个或多个阈值。在一些实施例中,基于正在使用的当前神经网络层,将内核集划分为按顺序处理的批次。
在各个实施例中,集群循环管理电路装置160将与计算器集群大小或所利用的时钟信号有关的信息或指令(例如,第一时钟是否触发所有复用器循环或第一时钟是否响应于第二时钟信号而启动复用器循环)提供给复用器208a-208b和感测电路210a-210b。在一些实施例中,集群循环管理电路装置160管理或生成控制信号(例如,第一时钟信号和第二时钟信号),并将控制信号提供给复用器208a-208b和感测电路210a-210b。在一些实施例中,集群循环管理电路装置可以协调来自输出缓冲器232a-232b的数据的输出,以进行进一步处理(例如,输入到神经网络过程中的下一层)。
尽管图2a图示了其中复用器208a-208b循环通过其全部四个物理数据线216,使得每个感测电路210a-210b在单个计算集群循环期间将四个部分和组合的实施例,但是一些实现可以期望感测电路210a-210b将较少的部分和(例如,两个部分和)组合。例如,在某些情况和实现中,由于纵横比不佳,当使用四个列时,小的计算集群可能无法最佳地利用存储器。为了改进纵横比,用于小的计算集群的数据被存储在两个列中,而不是如上所述的四个列中,并且如图2b所示,复用器208a-208b和感测电路也相应地重新配置。
图2b中的系统200b图示了其中可配置的复用器208a-208b和感测电路210a-210b利用存储器202中的两个列而不是四个列的实施例。系统200b是图2a中描述的系统200a的一个实施例。
如上所述,存储器阵列202的每一列204a-204h与对应的部分和电路206电通信,部分和电路206被配置为推算或确定来自该对应列中的每个单元的单元值之和。但是,在该示例中,计算集群比以上在图2a中描述的小。在所示的实施例中,标记为k1[a1],k1[a2],...和k1[n1],k1[n2],...的数据用于第一计算集群,并存储在列204a-204b中的单元中;标记为k2[p1],k2[p2],k2[p3],k2[x1]和k2[x2]的数据用于第二计算集群,并存储在列204c-204d中的单元中;标记为k3[a1],k3[a2],...和k3[n1],k3[n2],...的数据用于第三计算集群,并存储在列204e204f中的单元中;标记为k4[p1],k4[p2],k4[p3],k4[x1]和k4[x2]的数据用于第四计算集群,并存储在列204g-204h中的单元中。
每个复用器208a-208b包括四个物理数据线216。因为每个计算集群被存储在存储器202中的两个列204中,所以每个复用器208a-208b被重新配置为针对给定的计算集群循环,循环通过两个数据线216。如上所述,在一些实施例中,经由第一时钟输入228从第一时钟212接收的信号可以将复用器208a-208b初始化,以循环通过数据线216,但是每个个体数据线循环由经由第二时钟输入226从第二时钟214接收的信号触发。来自第二时钟214的信号被利用,使得复用器数据线的循环数等于单个计算集群所使用的列的数目。
例如,当复用器208a从第一时钟212接收时钟信号clk1以启动计算集群循环时,复用器208a在从第二时钟214接收到下一时钟信号c1时循环到与部分和ps1相对应的数据线,使得来自ps1的部分和值由感测电路210a获得。当从第二时钟214接收到时钟信号c2时,复用器208a循环到与部分和ps2相对应的数据线,使得其部分和值由感测电路210a获得并与其先前保持的值组合。在感测电路210a已组合了来自ps1和ps2的值之后,将所得值输出(作为对应的计算集群输出)到例如输出缓冲器232a。
然后,复用器208a从第一时钟212接收第二信号clk2,以启动另一计算集群循环,另一计算集群循环启动了第二计算集群循环。当从第二时钟214接收时钟信号c3时,复用器208a循环到与部分和ps3相对应的数据线,使得其部分和值由感测电路210a获得。当从第二时钟214接收时钟信号c4时,复用器208a循环到与部分和ps4相对应的数据线,从而其部分和值由感测电路210a获得并与其先前保持的值组合。在感测电路210a已组合了来自ps3和ps4的值之后,所得值被输出到输出缓冲器232a,作为对应的计算集群输出。
类似于复用器208a,当复用器208b从第一时钟212接收时钟信号clk1以启动计算集群循环时,复用器208b在从第二时钟214接收到下一时钟信号c1和c2时,循环到与部分和ps5和ps6相对应的数据线。当从第二时钟214接收时钟信号c2时,复用器208b循环到与部分和ps6相对应的数据线,使得其部分和值由感测电路210b获得并与其先前保持的值组合。在感测电路210b已组合了来自ps5和ps6的值之后,将所得值作为对应的计算集群输出输出到例如输出缓冲器232b。
然后,复用器208b从第一时钟212接收第二信号clk2以启动另一计算集群循环,另一计算集群循环启动了第二计算集群循环。当从第二时钟214接收时钟信号c3时,复用器208b循环到与部分和ps7相对应的数据线,使得其部分和值由感测电路210b获得。当从第二时钟214接收时钟信号c4时,复用器208b循环到与部分和ps8相对应的数据线,使得其部分和值由感测电路210b获得并与其先前保持的值组合。在感测电路210b已组合了来自ps7和ps8的值之后,所得值被输出到输出缓冲器232b,作为对应的计算集群输出。
一旦达到物理复用器循环的最大数目(例如,在图2b中的示例中为四个),则复用器208a-208b等待来自第一时钟212的下一第一时钟信号,以启动复用器208a-208b再次基于计算集群循环大小循环通过数据线216。
结果,系统200b针对四个计算集群获得四个结果,一个结果由感测电路210a针对列204a-204b获得,第二结果由感测电路210a针对列204c-204d获得,第三结果由感测电路210b针对列204e-204f获得,并且第四结果由感测电路210b针对列204g-204h获得。并且由于复用器208a-208b利用相同的时钟信号(第一时钟信号、或第一时钟信号和第二时钟信号的组合)来循环通过其相应的数据线216,因此针对前两个计算集群(列204a-204b和204e-204f)的前两个结果在第一计算集群循环时间期间获得,而针对后两个计算集群(列204c-204d和204g-204h)的后两个结果在第二计算集群循环时间期间获得。
与上述类似,复用器208a-208b可以利用来自第一时钟212的时钟信号来指示复用器208a-208b在从第二时钟214接收到下一时钟信号时循环到第一数据线216,以允许每个复用器循环由从第二时钟214接收的时钟信号控制,或者它们可以利用来自第一时钟212的一个时钟信号和来自第二时钟214的一个时钟信号来访问给定计算集群的对应两个数据线216,或者它们可以利用从第一时钟212接收的每个单独的时钟信号来循环到下一数据线。同样地,从第一时钟212、第二时钟214或其组合接收的时钟信号也可以被用于分别触发感测电路210a-210b来获得复用器208a-208b的当前输出值。
在一些实施例中,用于给定计算集群的数据线的数目可以由第一时钟信号212控制。例如,第一时钟信号可以针对两个第二时钟信号保持值“1”,然后下降到值“0”。更改为“0”指示新的计算集群循环开始。在另一示例中,其他电路装置(未示出)可以存储与给定计算集群循环相关联的列的数目,并且监视使得复用器能够循环到对应数目的数据线的第二时钟信号的数目。一旦第二时钟信号的数目等于与给定计算集群循环相关联的列的数目,则其他电路装置释放下一第一时钟信号来启动新的计算集群循环。
在其他实施例中,如上所述,复用器208a-208b可以具有计算集群循环大小输入线(未示出),输入线指示复用器关于与给定计算集群循环相关联的列的数目。例如,可以使用单个输入线,使得“0”指示两个列,而“1”指示四个列。其他数目的计算集群循环大小输入线也可以用于表示不同的计算集群循环大小。类似地,感测电路210a-210b可以利用计算集群循环大小输入线或时钟信号来指示感测电路输出当前保持的值。
尽管图2a和图2b图示了其中复用器208a-208b循环通过四个数据线216,使得每个感测电路210a-210b将针对一个或多个计算集群循环的部分和组合的实施例,但是一些实现可以期望感测电路将更多的部分和(例如,八个部分和)组合。例如,在某些情况和实现中,由于纵横比不佳,使用两个列或四个列时,很大的计算集群可能无法最佳地利用存储器。为了改进纵横比,如图2c所示,大的计算集群的数据可以存储在八个列中,而不是如上所述的两个列或四个列中。
如上所述,图2c中的系统200c图示了其中可配置的复用器208a-208b和感测电路210a-210b被重新配置为利用存储器202中的八个列而不是两个列或四个列的实施例。系统200c是图2a中描述的系统200a和图2b中描述的系统200b的一个实施例。
如上所述,存储器阵列202的每一列204a-204h与对应的部分和电路206电通信,部分和电路206被配置为推算或确定来自该对应列中的每个单元的单元值之和。但是,在该示例中,计算集群比以上在图2a和图2b中描述的大。在所示的实施例中,标记为k1[a1],...,k1[a4],k1[n1],...,k1[n3],k1[p1],...,k1[p3],k1[x1],k1[x2],k1[e1],...,k1[e4],k1[h1],...,k1[h3],k1[q1],...,k1[q3],k1[y1]和k1[y2]的数据用于计算集群并存储在列204a-204h的单元中。
然而,在该示出的示例中,复用器208a被重新配置为具有八个数据线216。在一些实施例中,复用器208a被重新配置为使得附加数据线由先前用作另一复用器的电路装置提供。在其他实施例中,第二复用器(例如,图2a或图2b中的复用器208b)由复用器208a控制或“从动”来利用其数据线。例如,在复用器208a已循环通过其物理数据线之后,复用器208a可以将时钟信号提供给第二复用器。
如上所述,在一些实施例中,经由第一时钟输入228从第一时钟212接收的信号可以将复用器208a初始化,以循环通过数据线216,但是每个个体数据线循环由经由第二时钟输入226从第二时钟214接收的信号触发。利用来自第二时钟214的信号,使得所循环的复用器数据线的数目等于单个计算集群循环所利用的列的数目。
例如,当复用器208a从第一时钟212接收时钟信号clk以启动计算集群循环时,复用器208a等待来自第二时钟214的时钟循环c1,以循环到与部分和ps1相对应的数据线216。当从第二时钟214接收时钟信号c2时,复用器208a循环到与部分和ps2相对应的数据线,使得其部分和值由感测电路210a获得并与其先前保持的值组合。复用器208a继续循环到与部分和ps3、ps4、ps5、ps6、ps7和ps8相对应的其他数据线216,使得响应于来自第二时钟214的时钟信号c3、c4、c5、c6、c7和c8由感测电路210a获得其部分和值并将其部分和值组合。
在感测电路210a已组合了从ps1到ps8的值之后,将所得值作为对应的计算集群输出输出到例如输出缓冲器232a。一旦达到计算集群循环的最大复用器循环数目(例如,在图2c所示示例中为八个),则复用器208a等待来自第一时钟212的下一第一时钟信号,以启动复用器208a再次循环通过数据线216。
类似于以上所述,复用器208a可以利用来自第一时钟212的时钟信号来指示复用器208a在从第二时钟214接收的下一时钟信号处循环到第一数据线216,以允许每个复用器循环由从第二时钟214接收的时钟信号控制,或者复用器208a可以利用来自第一时钟212的一个时钟信号和来自第二时钟214的七个时钟信号来访问用于计算集群的数据线216,或者复用器208a可以利用从第一时钟212接收的每个单独的时钟信号循环到下一数据线。如上所述,复用器208a可以利用一个或多个计算集群循环大小输入线(未示出)来将复用器208a重新配置为给定计算集群循环大小的正确数目的数据线。同样地,从第一时钟212、第二时钟214或其组合接收的时钟信号也可以用于触发感测电路210a来获得复用器208a的当前输出值。
应当认识到,其他数目的复用器208a-208b、感测电路210a-210b和部分和电路206可以用于存储器202的其他大小。类似地,复用器208a-208b可以利用其他数目的物理数据线,以及不同的计算集群循环大小。此外,部分和电路206可以获得存储器202中的对应列204中的每个单元值的数学和。然而,在一些实施例中,部分和电路206可以获得单元值的其他数学组合(例如,乘法)。
尽管将图2a-图2c中的实施例描述为使用来自第一时钟212和第二时钟214的时钟信号来从存储器202读取数据,但是实施例不限于此。在一些实施例中,诸如结合图3a-图3d和图4a-图4d图示和描述的,类似的时钟信号也可以用于将数据写入存储器。
此外,图2a-图2c图示了基于存储给定计算集群的数据的列的数目来确定和利用在读取操作期间待采用的复用器循环的数目的实施例,其中复用器循环的数目可以小于、等于、或大于复用器的物理数据线的数目。在一些其他实施例中,在写入操作期间,复用器可以循环通过确定数目(小于、等于或大于复用器的物理数据线的数目)的复用器循环。例如,在一些实施例中,集群循环管理电路装置160可以将给定计算集群的内核批次大小与一个或多个阈值进行比较,以确定存储给定计算集群的内核数据的列的数目。在一个这样的实施例中,每个阈值可以对应于特定数目的复用器循环,例如,如果批次大小小于第一阈值,则复用器循环的数目为两个,如果批次大小大于第一阈值但是小于第二阈值,则复用器循环的数目为四个,并且如果批次大小大于第二阈值,则复用器循环的数目为八个。还可以利用其他数目的阈值和对应数目的复用器循环(可以基于神经网络层或所执行的处理而变化)。
上面结合图2a-图2c描述的实施例图示了在高数据处理神经网络环境中,利用可配置的复用器来从存储器中读取数据,同时还对从存储器中读取的值执行计算(例如,针对给定计算集群,获得部分和并将部分和组合)的各种实施例。
为了从存储器读取这样的数据量,需要将输入的数据写入存储器。如上所述,神经网络通常涉及大量数据的许多类似计算。而且,神经网络旨在从大量训练数据中学习特定特性。这些训练数据中的一些有用,而其他则没有用。结果,随着系统的学习,错误的数据最终应从系统中删除。但是,某些情况可能会导致错误的训练或输入数据。例如,如果以相同方式将连续图像读取到存储器中,则相同像素位置被存储在相同存储器位置中。但是如果像素变为“死区”(例如,由于光传感器或相关电路装置故障或存储器单元故障),则该存储器位置将始终具有相同的值。结果,系统可能会在训练过程中学习“死区”像素,或者无法正确处理连续的输入图像。
图3a至图3d图示了根据一个实施例的将移位或线移位复用器308用于将多个数据连续写入存储器阵列302的用例上下文图。移位复用器或线移位复用器指代包括电路装置的复用器,该电路装置在操作中使得复用器本身改变复用器的每个物理数据线的地址或修改用于连续数据写入的物理数据线的选择。在各种实施例中,复用器308包括桶式移位器,桶式移位器修改每个数据线316的内部地址,以用于多个数据的连续数据写入。复用器408可以是只写或读写复用器。
图3a图示了用于第一计算集群写入的示例300a。分别经由寻址为00、01、10和11的数据线,按该顺序将输入数据写入列304a、304b、304c和304d。第一计算集群的第一数据存储在列304a中,第一计算集群的第二数据存储在列304b中,第一计算集群的第三数据存储在列304c中,第一计算集群的第四数据存储在列304d中。然后例如以上结合图2a-图2c所描述的,对存储器中的数据进行处理。
图3b图示了在图3a中的第一计算集群写入之后的第二计算集群写入的示例300b。当接收到用于第二计算集群写入的数据时,桶式移位器修改数据线的地址,使得寻址为00、01、10和11的数据线分别对应于列304b、304c、304d和304a。输入的数据分别经由寻址为00、01、10和11的数据线以该顺序写入列304b、304c、304d和304a。第二计算集群的第一数据存储在列304b中,第二计算集群的第二数据存储在列304c中,第二计算集群的第三数据存储在列304d中,第二计算集群的第四数据存储在列304a中。然后例如以上结合图2a-图2c所描述的,对存储器中的数据进行处理。
图3c图示了在图3b中的第二计算集群写入之后的第三计算集群写入的示例300c。当接收到用于第三计算集群写入的数据时,桶式移位器再次修改数据线的地址,使得寻址为00、01、10和11的数据线分别对应于列304c、304d、304a和304b。输入的数据分别经由寻址为00、01、10和11的数据线以该顺序写入列304c、304d、304a和304b。第三计算集群的第一数据存储在列304c中,第三计算集群的第二数据存储在列304d中,第三计算集群的第三数据存储在列304a中,第三计算集群的第四数据存储在列304b中。然后例如以上结合图2a-图2c所描述的,对存储器中的数据进行处理。
图3d图示了在图3c中的第三计算集群写入之后的第四计算集群写入的示例300d。当接收到用于第四计算集群写入的数据时,桶式移位器再次修改数据线的地址,使得寻址为00、01、10和11的数据线分别对应于列304d、304a、304b和304c。输入的数据分别经由寻址为00、01、10和11的数据线以该顺序写入列304d、304a、304b和304c。第四计算集群的第一数据存储在列304d中,第四计算集群的第二数据存储在列304a中,第四计算集群的第三数据存储在列304b中,第四计算集群的第四数据存储在列304c中。然后例如以上结合图2a-图2c所描述的,对存储器中的数据进行处理。
当接收到第五计算集群写入的数据时,桶式移位器再次修改数据线的地址,使得如图3a所示,寻址为00、01、10和11的数据线分别对应于列304a、304b、304c和304d。如图3a-图3d所示,对于连续的计算集群写入,数据线地址的移位可以这种方式继续进行。该移位有助于连续错误的半随机存储,这有助于借助学习/推理过程消除这样的错误,或者有助于在分析目标图像时忽略这样的错误。
如上所述,第一时钟信号可以用于启动复用器来循环通过其数据线,以用于可配置数目的数据线的计算集群循环的读取操作。图3a-图3d还图示了用于数据写入操作的这样的时钟信号的使用。
在一些实施例中,经由第一时钟输入228从第一时钟212接收的信号将复用器308初始化,以循环通过数据线216,但是每个单独的数据线循环由经由第二时钟输入226从第二时钟214接收的信号触发。以这种方式,每个个体计算集群循环均由来自第一时钟212的时钟信号触发。
例如,在图3a中,当复用器308从第一时钟212接收时钟信号clk以启动计算集群写入循环时,复用器308响应于来自第二时钟214的c1而循环到数据线216的地址00,使得可以将数据写入列304a。时钟信号c2使得复用器308循环到数据线316的地址01,从而可以将数据写入列304b。复用器308继续以类似的方式操作,以使得时钟信号c3和c4分别将数据写入列304c和304d。
图3b类似,但是当复用器308从第一时钟212接收时钟信号clk来启动计算集群写入循环并随后从第二时钟214接收c1时,复用器308循环到数据线316的地址00,使得可以将数据写入列304b(不是图3a中的列304a)。从第二时钟214接收的时钟信号c2、c3和c4使得复用器308分别循环到数据线316的地址01、10和11,从而可以将数据分别写入列304c、304d和304a。
同样,在图3c中,当复用器308从第一时钟212接收时钟信号clk时,启动计算集群写入循环。当从第二时钟214接收c1时,复用器308循环到数据线316地址00,使得可以将数据写入列304c(不是图3b中的列304b)。从第二时钟214接收的时钟信号c2、c3和c4使得复用器308分别循环到数据线316的地址为01、10和11,从而可以将数据分别写入列304d、304a和304b。。
此外,在图3d中,当复用器308从第一时钟212接收时钟信号clk时,复用器208响应于从第二时钟214接收c1而启动计算集群写入循环并循环到数据线316地址00,使得可以将数据写入列304d(不是图3c中的列304c)。从第二时钟214接收的时钟信号c2、c3和c4使得复用器308分别循环到数据线316的地址为01、10和11,从而可以将数据分别写入列304a、304b和304c。
如图所示,复用器308利用来自第一时钟212的一个时钟信号和来自第二时钟214的四个时钟信号写入四个数据线216。然而,实施例不限于此。相反,在其他实施例中,从第一时钟212接收时钟信号可以指示复用器308循环到第一数据线316的地址为00。以这种方式,针对给定的计算集群循环写入操作,第一时钟212用于循环到第一数据线且第二时钟214用于循环通过每个对应的数据线,在该示例中,复用器308将利用来自第二时钟214的三个时钟信号将数据写入列304a-304d。
在其他实施例中,经由第一时钟输入228从第一时钟212接收的每个信号触发个体数据线循环。例如,当复用器308从第一时钟212接收第一时钟信号时,复用器308循环到数据线地址00。但是,当复用器308从第一时钟212接收第二时钟信号时,复用器308循环到数据线地址01。对于从第一时钟212接收的附加时钟信号,复用器308继续以类似的方式操作。一旦在计算集群循环中达到了复用器循环的最大数目(例如,在图3a-图3d所示示例中为四个),则复用器308在下一时钟信号上循环回到数据线地址00。在这样的实施例中,第二时钟214是可选的并且不被使用。
尽管图3a-图3d图示了使用具有内置桶式移位器的复用器来改变数据线的地址,但是实施例不限于此。相反,在一些实施例中,其他移位电路装置(例如,复用器外部的电路装置)可以用作复用器的预解码,以在不改变复用器的内部数据线地址的情况下,针对复用器对数据线进行移位和选择。
图4a-图4d图示了用于将多个数据连续写入存储器阵列中的预解码移位的用例上下文图。系统包括复用器408、存储器阵列402和数据线选择电路装置406。复用器408可以是只写或读写复用器。与图3a-图3d所示的示例(其中数据线的地址改变)不同,每个数据线416对应于不变的地址。因此,数据线地址00对应于存储器402中的列404a,数据线地址01对应于存储器402中的列404b,数据线地址10对应于存储器402中的列404c,数据线地址11对应于存储器402中的列404d。
图4a图示了用于第一计算集群写入的示例400a。数据线选择电路装置406选择复用器408的数据线416被循环以写入数据的顺序。在该示例中,数据线选择电路装置406以该顺序将数据线地址选择为00、01、10和11,并且经由地址选择线318将数据线地址输出到复用器408。第一计算集群的第一数据存储在列304a中,第一计算集群的第二数据存储在列304b中,第一计算集群的第三数据存储在列304c中,第一计算集群的第四数据存储在列304d中。然后例如以上结合图2a-图2c所描述的,对存储器中的数据进行处理。
图4b图示了在图4a中的第一计算集群写入之后的第二计算集群写入的示例400b。当接收到用于第二计算集群写入的数据时,数据线选择电路装置406修改复用器408的数据线416被循环写入数据的顺序。在该示例中,数据线选择电路装置406以该顺序将数据线地址选择为01、10、11和00,并且经由地址选择线418将数据线地址输出到复用器408。第二计算集群的第一数据存储在列304b中,第二计算集群的第二数据存储在列304c中,第二计算集群的第三数据存储在列304d中,第二计算集群的第四数据存储在列304a中。然后例如以上结合图2a-图2c所描述的,对存储器中的数据进行处理。
图4c图示了在图4b中的第二计算集群写入之后的第三计算集群写入的示例400c。当接收到用于第二计算集群写入的数据时,数据线选择电路装置406修改复用器408的数据线416被循环写入数据的顺序。在该示例中,数据线选择电路装置406以该顺序将数据线地址选择为10、11、00和01,并且经由地址选择线418将数据线地址输出到复用器408。第三计算集群的第一数据存储在列304c中,第三计算集群的第二数据存储在列304d中,第三计算集群的第三数据存储在列304a中,第三计算集群的第四数据存储在列304b中。然后例如以上结合图2a-图2c所描述的,对存储器中的数据进行处理。
图4d图示了在图4c中的第三计算集群写入之后的第四计算集群写入的示例400d。当接收到用于第二计算集群写入的数据时,数据线选择电路装置406修改复用器408的数据线416被循环以写入数据的顺序。在该示例中,数据线选择电路装置406以该顺序将数据线地址选择为11、00、01和10,并且经由地址选择线418将数据线地址输出到复用器408。第四计算集群的第一数据存储在列304d中,第四计算集群的第二数据存储在列304a中,第四计算集群的第三数据存储在列304b中,第四计算集群的第四数据存储在列304c中。然后例如以上结合图2a-图2c所描述的,对存储器中的数据进行处理。
当接收到用于第五计算集群写入的数据时,如图4a所示,数据线选择电路装置406以该顺序将数据线416的顺序修改为数据线地址00、01、10和11。如图4a-图4d所示,对于连续的计算集群写入,数据线地址的移位可以这种方式继续进行。类似于以上在图3a-图3d中所讨论的,移位允许连续错误的半随机存储,这允许借助学习/推理过程来去除错误或者在目标图像的分析中忽略错误。
如以上在图3a-图3d中所描述的,第一时钟信号可用于启动复用器来循环通过其数据线,以用于计算集群循环和每个个体循环的第二时钟的写入操作。结合图4a-图4d描述的实施例还可以以类似的方式利用第一时钟和第二时钟。然而,在图4a-图4d所示的示例中,数据线选择电路装置406从第一时钟212和第二时钟214而不是复用器408本身接收时钟信号。相反,地址选择线318上的变化由时钟信号触发,并触发复用器选择适当的数据线416。在其他实施例中,类似于图3a-图3d所示,复用器408可以包括输入端(未示出)来接收第一时钟信号和第二时钟信号。
数据线选择电路装置406从第一时钟212接收信号,以将数据线地址的选择初始化,但是每个个体数据线地址循环由从第二时钟214接收的信号触发。以这样的方式,每个单独的计算集群循环由来自第一时钟212的时钟信号触发。
与上面描述的类似,在一些实施例中,数据线选择电路装置406利用来自第一时钟212的一个时钟信号和来自第二时钟214的四个时钟信号来选择四个数据线地址,以供复用器408写入到四个不同的列404a-404d。在其他实施例中,针对给定的计算集群循环写入操作,从第一时钟212接收时钟信号可以指示数据线选择电路装置406循环到第一数据线地址,并利用第二时钟214循环通过每个剩余的对应数据线地址,在该所示示例中,数据线选择电路装置406将利用来自第一时钟212的一个时钟信号和来自第二时钟214的三个时钟信号来选择四个数据线地址,以供复用器将数据写入列304a-304d。在其他实施例中,经由第一时钟输入228从第一时钟212接收的每个信号触发个体数据线地址选择。
在各种实施例中,分别结合图3a-图3d和图4a-图4d所述的桶式移位器和数据线选择电路装置的输入序列也可以将地址/数据线选择序列改变为不同的序列。而且,在一些实施例中,并非所有地址输入/数据线地址都可以被移位。例如,对于大的复用器比率,仅地址输入/数据线地址的子集可以被移位到所考虑的存储器中存储的抖动数据。
现在将参考图5-图8来描述本公开的某些方面的操作。在各种实施例的至少一个中,如本文所述,分别结合图5-图8描述的过程500、600、700和800可以由与存储器内计算元件相关联的一个或多个组件或电路来实现。
图5图示了总体上示出了过程500的一个实施例的逻辑流程图,过程500用于使用如图2a-图2c所示的可配置的复用器和感测电路来从存储器阵列读取数据。在开始框之后,过程500在框502处开始,在框502处,将集群数据存储在列-行存储器阵列中。下面结合图6和图7来更详细地描述促进数据存储在存储器中的各种实施例。
过程500进行到框504,在框504中,针对存储器中的每一列计算部分和。
过程500在框506处继续,在框506处,针对计算集群来选择列的数目。在各种实施例中,这是针对单个计算集群存储数据的列的数目(可以被称为计算集群循环大小)。
过程500继续进行到判定框508,在判定框508处,确定用于计算集群的所选择的列的数目是否大于列复用器循环的数目。在至少一个实施例中,该确定基于所选择的列的数目与复用器上的物理数据线的数目之间的比较。如果用于计算集群的所选择的列的数目大于复用器循环的数目,则过程500进行到框510;否则,过程500进行到框512。
在框510处,复用器被扩大。在一些实施例中,复用器支持的数据线的数目被重新配置为容纳用于计算集群的所选择的列的数目。在至少一个实施例中,复用器的扩大可以包括利用第二复用器作为复用器的扩大部分。例如,这可以通过重新配置第一复用器以利用第二复用器的电路装置来提供附加的数据线或通过将第一复用器配置为控制如关于图2c所讨论的复用器来实现。过程500进行到框512。
如果在判定框508处,所选择的列的数目等于或小于复用器循环的数目,或者在框510之后,过程500进行到框512。在框512处,启动复用器和感测电路,以循环通过与计算集群相关联的存储器中每一列的部分和。如上所述,第一时钟信号可以启动复用器,以循环通过计算集群循环的部分和。
过程500进行到框514,在框514处,获得针对当前复用器循环的当前部分和,并将其与计算集群值组合。
过程500继续到判定框516,在判定框516处,确定所获得的部分和的数目是否等于针对计算集群的所选择的列的数目。在各种实施例中,基于所选择的复用器循环的数目(所获得的部分和的数目)与所选择的列的数目(计算集群循环大小)之间的比较来进行该确定。如果所获得的部分和的数目等于所选择的列的数目,则过程500进行到框520;否则,过程500进行到框518。
在框518处,使复用器循环递增,以获得针对计算集群的下一部分和。在框518之后,过程500循环到框514,以获得针对已递增的复用器循环的下一部分和。
如果在判定框516处,所获得的部分和的数目等于针对计算集群的所选择的列的数目,则过程500从判定框516进行到框520。在框520处,将经组合的计算集群值输出至缓冲器,缓冲器可以由系统的另一组件访问以进行进一步处理(例如,输入到神经网络处理的下一层)。
过程500在判定框522处继续,在判定框522处,确定是否达到复用器循环的最大数目。在各个实施例中,复用器循环的最大数目是与复用器相关联的数据线的物理数目。如果达到了复用器循环的最大数目,则过程500进行到判定框524;否则,过程500循环到框512,以启动复用器和感测电路循环通过针对所选择的数目的列的下一计算集群的下一部分和集合。
在判定框524处,确定例如针对下一计算集群集合,是否将附加数据存储在存储器中。如果将附加数据存储在存储器中,则过程500循环到框502;否则,过程500终止或以其他方式返回到调用过程来执行其他动作。
图6图示了总体上示出用于采用复用器的过程600的一个实施例的逻辑流程图,复用器对数据线地址进行修改,以用于将多个数据连续写入如图3a-图3d所示的存储器阵列。
在开始框之后,过程600在框602处开始,在框602处,接收命令以将数据存储在列-行存储器阵列中来用于集群计算操作。该命令可以是写入命令,也可以是特定输入数据线上的数据。
过程600进行到框604,在框604处,每个复用器数据线与存储器中的对应列相关联。在各种实施例中,存储器中的列与复用器的特定数据线之间的关联包括:选择复用器地址并将其分配给该特定数据线。在一个示例实施例中,将复用器的第一数据线分配给地址00,将复用器的第二数据线分配给地址01,将复用器的第三数据线分配给地址10,并且将复用器的第四数据线分配给地址11。
过程600在框606处继续,在框606处,接收用于集群计算操作的下一数据。在各种实施例中,下一数据是待存储在存储器中的、用于特定计算集群的输入数据。
过程600继续到框608,在框608处,用于集群计算的下一数据被存储在与当前复用器循环的复用器数据线相关联的列中。在各个实施例中,当前复用器循环是复用器的数据线的当前地址。例如,当接收第一数据时,当前复用器循环是第一循环,并且可以使用地址00;当接收第二数据时,当前复用器循环为第二循环,并且可以使用地址01等。
接下来,过程600在判定框610处继续,在判定框610处,确定是否已达到复用器的最大数据线循环。在一些实施例中,最大数据线循环是复用器的物理数据线的数目。在其他实施例中,最大数据线循环可以是用于特定计算集群的数据线或列的所选择的数目。如果已达到复用器的最后或最大数据线循环,则过程600进行到框612;否则,过程600进行到框616。
在框616处,复用器循环到下一数据线。在至少一个实施例中,复用器将其当前复用器循环数据线地址递增到下一地址。例如,如果在框608处经由地址00存储了数据,则下一复用器数据线地址可以为01。然后,过程600循环至框606,以接收待存储在存储器中的下一数据来用于集群计算操作。
如果在判定框610处已达到最大复用器数据线循环,则过程600从判定框610进行到框612。在框612处,执行集群计算操作。在一些实施例中,可以接收读取命令,读取命令经由复用器和感测电路(例如,本文所述,包括图2a-图2c和图5中的过程500)来启动对存储列的读取。
过程600进行到判定框614,在判定框614处,确定是否接收到存储用于连续集群计算操作的数据的命令。如果要执行连续集群计算操作,则过程600进行到框618;否则,过程600终止或返回到调用过程来执行其他动作。
在框618处,修改每个复用器数据线和存储器中的列之间的关联。在至少一个非限制性实施例中,复用器包括桶式移位器,桶式移位器修改连续集群计算操作的存储数据之间的数据线/列关联。例如,如图3a-图3d所示,桶式移位器修改数据线的地址。如果先前的关联指示复用器的第一数据线被分配了地址00,复用器的第二数据线被分配了地址01,复用器的第三数据线被分配了地址10,复用器的第四数据线被分配了地址11,则经修改的关联可以是复用器的第一数据线被分配了地址01,复用器的第二数据线被分配了地址10,复用器的第三数据线被分配了地址11,并且复用器的第四数据线被分配地址00。
在框618之后,过程600循环到框606,以接收用于下一集群计算机操作的数据。
图7图示了总体上示出过程700的一个实施例的逻辑流程图,过程700采用预解码移位来将多个数据连续写入图4a-图4d所示的存储器阵列。
在开始框之后,过程700在框702处开始,在框702处,接收命令以将数据存储在列-行存储器阵列中来进行集群计算操作。在各种实施例中,框702可以采用以上结合图6中的框602描述的实施例。
过程700进行到框704,在框704处,每个复用器数据线与存储器中的对应列相关联。在各种实施例中,框704可以采用以上结合图6中的框604描述的实施例。
过程700在框706处继续,在框706处,确定用于写入数据以进行集群计算操作的复用器数据线的顺序。在一些实施例中,复用器数据线的初始顺序可以被预先选择或预先确定。在其他实施例中,初始数据线顺序可以是随机的。
在至少一个实施例中,复用器数据线顺序是将数据线地址提供给复用器以进行数据写入的顺序。例如,选择电路装置可以确定数据线地址的初始顺序是00、01、10、11。但是,也可以使用其他顺序。同样,根据复用器的大小,也可以使用其他数目的地址。
过程700继续到框708,在框708处,基于所确定的数据线顺序来选择初始复用器数据线。在至少一个实施例中,初始复用器数据线的选择是所确定的数据线顺序中的第一数据线地址,并输出到复用器。
过程700在框710处继续,在框710处,接收用于集群计算操作的下一数据。在各个实施例中,框710可以采用以上结合图6中的框606描述的实施例。
过程700继续到框712,在框712处,用于集群计算的下一数据被存储在与所选择的复用器数据线相关联的列中。在至少一个实施例中,与针对所选择的数据线的数据线地址相关联的数据线被用于将所接收的数据存储在存储器中的对应列中。
接下来,过程700在判定框714处继续,在判定框714处,确定是否已达到复用器的最大数据线循环。在各种实施例中,判定框714可以采用图6中的判定框610的实施例。如果已达到了复用器的最后或最大数据线循环,则过程700进行至框716;否则,过程700进行至框720。
在框720处,基于所确定的数据线顺序,指示复用器循环到下一数据线。在至少一个实施例中,选择电路装置以所确定的数据线顺序递增到数据线地址。例如,如果先前数据线地址是00,并且数据线顺序是地址00、01、10、11,则下一数据线地址是01。然后,过程700循环到框710,以接收待存储在存储器中、用于集群计算操作的下一数据。
如果在判定框714处,已达到最大复用器数据线循环,则过程700从判定框714进行到框716。在框716处,执行集群计算操作。在各种实施例中,框716可以采用以上结合图6中的框612描述的实施例。
过程700继续进行到判定框718,在判定框718处,确定是否接收存储用于连续集群计算操作的数据的命令。在各个实施例中,判定框718可以采用以上结合图6中的判定框614所述的实施例。如果要执行连续集群计算操作,则过程700进行到框722;否则,过程700终止或以其他方式返回到调用过程来执行其他动作。
在框722处,确定新的复用器数据线顺序。新的复用器数据线顺序可以是随机的,或者新的复用器数据线顺序可以将先前地址递增。例如,如果先前顺序是地址00、01、10、11,则新的顺序可以是地址01、10、11、00。在至少一个非限制性实施例中,数据线选择电路装置包括选择数据线顺序来存储数据以进行连续的集群计算操作的电路装置(例如,桶式移位器)。例如,数据线选择电路装置选择指示复用器循环通过其数据线来进行如图4a-图4d所示的连续集群计算操作的不同顺序。
在框722之后,过程700循环到框708,以接收用于下一集群计算机操作的数据。
图8图示了总体上示出用于利用第一时钟(例如,外部系统时钟)来启动对存储器阵列的复用器读取和写入以及利用第二时钟(例如,内部存储器时钟)来启动复用器读取和写入的每个循环的过程的一个实施例的逻辑流程图。
在开始框之后,过程800在框802处开始,在框802处,接收用于列-行存储器中的数据的集群计算操作的命令。在一些实施例中,命令可以是例如从存储器读取数据(例如,如以上结合图2a-图2c所描述的)的读取命令。在其他实施例中,命令可以是例如将数据写入存储器(例如,如以上结合图3a-图3d和图4a-图4d所描述的)的写入命令。
过程800进行到框804,在框804处,第一时钟信号被用来启动列复用器,以促进对存储器的读取或写入操作。在各种实施例中,第一时钟与存储器本身是分离的。在至少一个实施例中,第一时钟可以与存储器单元或芯片分离并且可以是整体系统时钟。
过程800在框806处继续,在框806处,触发第二时钟以步进通过复用器循环。在至少一个实施例中,第一时钟信号可以触发第一复用器循环。在其他实施例中,在第一时钟信号之后,利用第二时钟信号来触发第一复用器循环。
过程800继续到框808,在框808处,在与当前复用器循环相对应的列处,从存储器读取数据或将数据写入存储器。在各种实施例中,根据复用器和存储器的操作和使用,框808可以采用图5中的框514、图6中的框608或图7中的框712的实施例。
过程800继续到判定框810,在判定框810处,确定是否达到最大复用器循环数目。在各种实施例中,判定框810可以采用图5中的判定框522、图6中的判定框610或图7中的判定框714的实施例。如果达到了最大复用器循环,则过程800进行到框812;否则,过程800进行到框716。
在框716处,在下一第二时钟信号处将复用器递增到下一复用器循环。在各种实施例中,响应于接收下一第二时钟信号,递增当前存储器循环地址。在框716之后,过程800循环到框808,以将数据读取或写入到存储器中与下一复用器循环相关联的下一列。
如果在判定框810处达到最大复用器循环,则过程800从判定框810进行到框812。在框812处,将存储器置于低功率模式或存储器保持模式。在一些实施例中,存储器可以在操作模式与存储器保持模式之间或在低功率模式与保持模式之间借助其他状态进行转换。这样的其他状态可以包括但不限于空闲状态、等待状态、轻度睡眠状态等。在其他实施例中,框812可以是可选的,并且在判定框810处达到最大复用器循环之后,存储器可以不进入保持或低功率模式。
前述过程和方法的实施例可以包含图5-图8中未示出的附加动作、可以不包含图5-图8中所示的所有动作、可以以各种顺序执行图5-图8中所示的动作、可以将动作组合并且可以在各个方面进行修改。例如,图8中的过程800可以在将连续计算集群写入存储器并从存储器读取以进行连续神经网络层处理时将动作812省略,将动作804和806组合等。
一些实施例可以采取计算机程序产品的形式或包括计算机程序产品。例如,根据一个实施例,提供了包括被适配用于执行上述方法或功能中的一个或多个的计算机程序的计算机可读介质。介质可以是物理存储介质(例如诸如只读存储器(rom)芯片),也可以是磁盘(例如,数字多功能盘(dvd-rom))、光盘(cd-rom)、硬盘、存储器、网络或将由适当的驱动器或经由适当的连接读取的便携式介质制品(包括编码为在一个或多个这样的计算机可读介质上存储的一个或多个条形码或其他相关代码,并且可由适当的阅读器设备读取)。
此外,在一些实施例中,一些或所有方法和/或功能可以以其他方式(例如,至少部分地以固件和/或硬件,包括但不限于一个或多个专用集成电路(asic)、数字信号处理器、分立电路装置、逻辑门、标准集成电路、控制器(例如,通过执行适当的指令并包括微控制器和/或嵌入式控制器)、现场可编程门阵列(fpga)、复杂可编程逻辑设备(cpld)等以及采用rfid技术的设备及其各种组合)来实现或提供。
如下所述,可以进一步或备选地概括实施例。
系统可以被概括为包括:具有多个单元的存储器阵列,多个单元被布置为多个单元行与多个单元列相交;具有多个数据线和多个选择线的列复用器,其中每个相应的数据线对应于多个列中的相应列,并且多个选择线指示在给定循环内选择了多个数据线中的哪一个,其中列复用器在操作中,基于经由多个选择线接收的数据线地址,循环通过多个数据线来将数据写入多个单元;以及在操作中为第一写入操作选择第一循环顺序以将第一多个数据写入多个单元,并为第二写入操作选择第二循环顺序以将第二多个数据写入多个单元的数据线选择电路装置,其中第一和第二循环顺序指示在每个循环上选择多个数据线的顺序并且其中第一循环顺序与第二循环顺序不同。
列复用器可以包括数据线选择电路装置,以在第一写入操作期间以第一循环顺序来选择多个数据线,并在第二写入操作期间以第二循环顺序来选择多个数据线。数据线选择电路装置可以包括与列复用器的多个选择线相对应的多个输出线,并且数据线选择电路装置在操作中根据第一所选择的循环顺序,经由多个输出线来输出多个数据线的数据线地址,以在第一写入操作期间将第一多个数据写入多个单元,并根据第二所选择的循环顺序,经由多个输出线来输出多个数据线的数据线地址,以在第二写入操作期间将第二多个数据写入多个单元。
系统可以包括集群循环管理电路装置,集群循环管理电路装置在操作中,响应于时钟信号而生成多个控制信号,并将多个控制信号提供给列复用器,以循环通过多个数据线,从而将数据写入多个单元列中的相应列。
系统可以包括:多个计算电路,其中每个计算电路根据多个单元中的对应单元列中的单元值来推算计算值,并且与列复用器的多个数据线中的相应数据线相对应;以及感测电路,感测电路在操作中,当列复用器循环通过多个数据线时,经由列复用器从多个计算电路获得计算值,并在读取操作期间,组合在确定数目的复用器循环内所获得的计算值。复用器循环的确定数目可以小于列复用器的多个数据线。在操作中,感测电路可以在读取操作的第一部分期间,在列复用器的第一循环集合期间,经由多个数据线中的第一集合,根据所获得的计算值来推算第一值,并在读取操作的第二部分期间,在列复用器的第二循环集合期间,经由多个数据线的第二集合,根据所获得的计算值来推算第二值,其中第一循环集合和第二循环集合包括确定数目的复用器循环。列复用器在操作中可以循环通过第二多个数据线,第二多个数据线各自与多个第二计算电路中的相应第二计算电路相对应,其中每个第二计算电路根据第二多个单元中的对应单元列中的单元值来推算计算值。用于列复用器的第二多个数据线可以由第二列复用器提供。系统可以包括第一时钟和第二时钟,第一时钟在操作中启动列复用器在确定数目的复用器循环内循环通过多个数据线的读取操作,并且第二时钟在操作中,在读取操作期间,启动列复用器的每个数据线的每个循环达确定数目的复用器循环,以使得感测电路从对应的计算电路获得计算值。
方法可以被概括为包括:接收第一命令,以在多个单元中存储用于第一集群计算操作的第一数据,多个单元被布置为多个单元行与多个单元列相交;将多个复用器数据线中的每一个与多个列中的相应列相关联;确定用于在多个单元中存储第一数据的第一数据线顺序;根据第一数据线顺序循环通过多个数据线,以将第一数据存储在多个列中的相应列中来进行第一集群计算操作;执行第一集群计算操作;响应于第一集群计算操作的完成,接收第二命令,以在多个单元中存储用于第二集群计算操作的第二数据;确定用于在多个单元中存储第二数据的第二数据线顺序,第二数据线顺序与第一数据线顺序不同;以及根据第二数据线顺序循环通过多个数据线,以将第二数据存储在多个列中的相应列中来进行第二集群计算操作。
确定用于在多个单元中存储第二数据的第二数据线顺序可以包括采用桶式移位器,以基于第一数据线顺序来修改多个数据线中的每一个数据线的地址。确定用于在多个单元中存储第一数据的第一数据线顺序可以包括选择第一数据线顺序,并指示列复用器根据第一数据线顺序来循环通过多个数据线,并且其中确定用于在多个单元中存储第二数据的第二数据线顺序可以包括选择第二数据线顺序,并指示列复用器根据第二数据线顺序来循环通过多个数据线。
根据第一数据线顺序循环通过多个数据线可以包括:响应于来自第一时钟的第一时钟信号,根据第一数据线顺序启动通过多个数据线的循环;以及响应于来自第二时钟的第一时钟信号集合,以第一数据线顺序启动针对每个数据线的每个循环,以将数据写入多个列中的每个相应列;其中根据第二数据线顺序循环通过多个数据线可以包括响应于来自第一时钟的第二时钟信号,根据第二数据线顺序启动通过多个数据线的循环;并且响应于来自第二时钟的第二时钟信号集合,以第一数据线顺序启动针对每个数据线的每个循环,以将数据写入多个列中的每个相应列。
执行第一集群计算操作可以包括:根据来自多个单元列的单元值来计算多个计算值,其中每个相应的计算值根据来自相应单元列的单元值来计算;基于存储用于第一集群计算操作的数据的列的数目,选择用于第一集群计算操作的复用器循环数目;通过采用列复用器循环通过多个计算值的第一子集达所选择的数目的复用器循环,并且通过采用感测引擎将来自计算值的第一子集的相应计算值进行组合,生成第一集群计算操作的结果;以及输出第一集群计算操作的结果。方法可以进一步包括通过采用第二列复用器循环通过多个计算值的第二子集达所选择的数目的复用器循环,并通过采用第二感测引擎将来自计算值的第二子集的相应计算值进行组合,生成第一集群计算操作的第二结果;以及输出第一集群计算操作的第二结果。限定的复用器循环的数目可以小于多个数据线。
计算设备可以被概括为包括:用于接收多个数据以存储在多个单元中的装置,多个单元被布置为多个单元行与多个单元列相交;用于确定数据线顺序的装置,数据线顺序用于将所接收的多个数据存储在多个单元中;用于根据数据线顺序循环通过多个数据线以将所接收的多个数据存储在多个列中的相应列中的装置;以及用于修改数据线顺序以将随后接收的多个数据存储在多个单元中的装置。
计算设备可以进一步包括:用于基于来自第一时钟的信号来启动通过多个数据线的循环的装置;以及用于基于来自第二时钟的信号,根据数据线顺序启动多个数据线中的每个数据线的每个循环的装置。计算设备可以进一步包括:用于根据来自多个单元列中的每个相应列的单元值来计算相应计算值的装置;用于针对确定数目的计算值,循环通过每个相应计算值的装置;以及用于将来自计算值的子集中的相应计算值进行组合,以针对确定数目的计算值生成数据计算集群的结果的装置。
系统可以被概括为包括:具有多个单元的存储器阵列,多个单元被布置为多个单元行与多个单元列相交;具有多个数据线的列复用器,其中每个相应的数据线对应于多个列中的相应列,其中列复用器在操作中响应于来自第一时钟的时钟信号,针对读取或写入操作,启动循环通过多个数据线,以从多个单元读取数据或将数据写入多个单元,并且其中列复用器在操作中,响应于来自与第一时钟分离的第二时钟的时钟信号,启动针对列复用器的每个数据线的每个循环,以从多个单元列中的相应列读取数据或将数据写入多个单元列中的相应列。第一时钟可以是在多个单元外部的系统时钟,第二时钟可以是与多个单元相关联的存储器刷新时钟。
系统可以包括数据线选择电路装置,数据线选择电路装置在操作中选择用于第一写入操作的第一循环顺序,以将第一多个数据写入多个单元,并且选择用于第二写入操作的第二循环顺序,以将第二多个数据写入多个单元,其中第一和第二循环顺序指示在每个循环上选择多个数据线的顺序,并且其中第一循环顺序与第二循环顺序不同。数据线选择电路装置可以包括与列复用器的多个选择线相对应的多个输出线,并且数据线选择电路装置在操作中,根据第一所选择的循环顺序,经由多个输出线,输出多个数据线的数据线地址,以在第一写入操作期间将第一多个数据写入多个单元,并根据第二所选择的循环顺序,经由多个输出线,输出多个数据线的数据线地址,以在第二写入操作期间将第二多个数据写入多个单元。
列复用器在操作中可以修改列复用器的多个数据线中的每个数据线的地址,以将连续的多个数据写入多个单元。列复用器在操作中可以在第一写入操作期间以第一循环顺序选择多个数据线,并且在第二写入操作期间以第二循环顺序选择多个数据线。
系统可以包括:集群循环管理电路装置,集群循环管理电路装置在操作中基于存储与读取操作相关联的数据的列的数目来确定复用器循环的数目;多个计算电路,其中每个计算电路根据多个单元中对应单元列中的单元值来推算计算值,并且与列复用器的多个数据线中的相应数据线相对应;以及感测电路,在操作中,当列复用器循环通过多个数据线时,感测电路经由列复用器从多个计算电路获得计算值,并在读取操作期间,组合在确定数目的复用器循环内所获得的计算值。复用器循环的确定数目可以小于列复用器的多个数据线。在操作中,感测电路可以在读取操作的第一部分期间,在列复用器的第一循环集合期间,经由多个数据线中的第一集合,根据所获得的计算值来推算第一值,并在读取操作的第二部分期间,在列复用器的第二循环集合期间,经由多个数据线中的第二集合,根据所获得的计算值来推算第二值,其中第一和第二循环集合包括确定数目的复用器循环。列复用器在操作中可以循环通过第二多个数据线,第二多个数据线各自与多个第二计算电路中的相应第二计算电路相对应,其中每个第二计算电路根据第二多个单元中对应单元列中的单元值来推算计算值。
方法可以被概括为包括:接收与集群计算操作相关联的命令,以从多个单元读取数据或将数据写入多个单元,多个单元被布置为多个单元行与多个单元列相交;响应于来自第一时钟的时钟信号,启动复用器以循环通过多个数据线,多个数据线中的每一个与多个列中的相应列相对应;以及响应于来自第二时钟的时钟信号,针对多个数据线中的每个数据线启动复用器的每个循环,以从多个列中的每个相应列读取数据或将数据写入多个列中的每个相应列。第一时钟可以是多个单元外部的系统时钟,第二时钟是与多个单元相关联的存储器刷新时钟。
方法可以进一步包括:在启动复用器以循环通过多个数据线之前,确定用于在多个单元中存储第一数据的数据线顺序;并且其中针对多个数据线中的每个数据线启动复用器的每个循环包括根据数据线顺序循环通过多个数据线,以将数据存储在多个列中的相应列中。
方法可以进一步包括:接收第二命令,以将第二数据写入多个单元;确定用于在多个单元中存储第一数据的第二数据线顺序;响应于来自第一时钟的第二时钟信号,启动复用器以循环通过多个数据线;以及针对多个数据线中的每个数据线启动复用器的每个循环,以根据第二条数据线顺序并响应于来自第二时钟的附加时钟信号,将第二数据存储到多个列中的每个相应列。确定用于在多个单元中存储第二数据的第二数据线顺序可以包括:采用桶式移位器,以基于第一数据线顺序来修改多个数据线中的每个数据线的地址。
方法可以进一步包括:根据来自多个单元列的单元值来计算多个计算值,其中每个相应的计算值根据来自相应单元列的单元值来计算;基于存储用于集群计算读取操作的数据的列的数目,选择用于集群计算读取操作的复用器循环的数目;以及通过采用复用器,针对所选择的数目的复用器循环,循环通过多个计算值的第一子集,并通过采用感测引擎将来自计算值的第一子集的相应计算值进行组合,生成集群计算读取操作的结果。
方法还可包括:响应于来自第一时钟的时钟信号,启动第二复用器以循环通过第二多个数据线,第二多个数据线中的每一个与多个单元中第二多个列中的相应列相对应;响应于来自第二时钟的时钟信号,针对第二多个数据线的每个数据线启动第二复用器的每个循环,以从第二多个列的每一个相应列读取数据;以及通过针对所选择的数目的复用器循环,循环通过多个计算值的第二子集并通过采用第二感测引擎将来自计算值的第二子集的相应计算值进行组合,生成集群计算读取操作的第二结果。
计算设备可以被概括为包括:用于接收从多个单元读取数据或将数据写入多个单元的命令的装置,多个单元被布置为多个单元行与多个单元列相交;用于启动复用器根据第一时钟源,循环通过多个数据线的装置,多个数据线中的每一个与多个列中的相应列相对应;以及用于针对多个数据线中的每个数据线启动复用器的每个循环,以根据第二时钟源从多个列中的每个相应列读取数据或将数据写入多个列中的每个相应列的装置。
计算设备可以进一步包括:用于确定在多个单元中存储多个所接收数据的数据线顺序的装置;用于根据数据线顺序循环通过多个数据线以将所接收的多个数据存储在多个列的相应列中的装置;以及用于修改数据线顺序以将随后接收的多个数据存储在多个单元中的装置。计算设备可以进一步包括:用于根据来自多个单元列中的每个相应列的单元值来计算相应计算值的装置;用于基于存储与数据计算集群相关联的数据的列的数目来确定计算值的数目的装置;用于针对确定数目的计算值,循环通过每个相应计算值的装置;以及用于将来自计算值子集的相应计算值进行组合,以针对确定数目的计算值生成数据计算集群的结果的装置。
上述各种实施例可以被组合来提供其他实施例。可以根据以上详细描述对实施例进行这些和其他改变。通常,在以下权利要求中,所使用的术语不应解释为将权利要求限制为说明书和权利要求书中公开的特定实施例,而应解释为包括所有可能的实施例以及权利要求所要求保护的等同物的全部范围。因此,权利要求不受公开内容的限制。