掌桥专利:专业的专利平台
掌桥专利
首页

基于存储器的处理器

文献发布时间:2023-06-19 11:14:36


基于存储器的处理器

相关申请的交叉引用

本申请案要求于2018年9月6日申请的第61/727,653号美国临时专利申请的优先权,该申请通过引用的方式并入本文中。

技术领域

本公开大体上关于用于促进存储器密集型操作的装置。具体而言,本公开关于包括耦接至专用存储器组的处理元件的硬件芯片。本公开还关于用于改良存储器芯片的功率效率及速度的装置。具体而言,本公开关于用于在存储器芯片上实施部分刷新或甚至无刷新的系统及方法。本公开还关于大小可选择的存储器芯片及存储器芯片上的双端口能力。

背景技术

随着处理器速度及存储器大小均继续增大,对有效处理速度的显着限制为冯诺依曼(von Neumann)瓶颈。冯诺依曼瓶颈由常规计算机架构所导致的吞吐量限制造成。具体而言,相较于由处理器进行的实际计算,自存储器至处理器的数据传送常会遇到瓶颈。因此,用以对存储器进行读取及写入的时钟循环的数量随着存储器密集型处理程序而显着增大。这些时钟循环导致较低的有效处理速度,这是因为对存储器进行读取及写入会消耗时钟循环,该时钟循环无法用于对数据执行操作。此外,处理器的计算带宽通常大于处理器用以存取存储器的总线的带宽。

这些瓶颈对于以下各项特别明显:存储器密集型处理程序,诸如神经网络及其他机器学习算法;数据库建构、索引搜寻及查询;以及包括比数据处理操作多的读取及写入操作的其他任务。

另外,可用数字数据的容量及粒度的快速增长已产生开发机器学习算法的机会且已启用新技术。然而,这也为数据库及平行计算的领域带来棘手的挑战。例如,社交媒体及物联网(IoT)的兴起以创记录的速率产生数字数据。此新数据可用以产生用于多种用途的算法,范围为新广告技术至工业处理程序的更精确控制方法。然而,新数据难以储存、处理、分析及处置。

新数据资源可为巨大的,有时为大约千兆(peta)字节至泽(zetta)字节。此外,这些数据资源的增长速率可能超过数据处理能力。因此,数据科学家已转向平行数据处理技术,以应对这些挑战。为了提高计算能力且处置大量数据,科学家已尝试产生能够进行平行密集型计算的系统及方法。但这些现有系统及方法跟不上数据处理要求,常常因为所使用的技术受该技术对用于数据管理、整合分隔数据及分析分段数据的额外资源的需求限制。

为了促进对大数据集的操控,工程师及科学家现在正设法改良用以分析数据的硬件。例如,新的半导体处理器或芯片(例如本文中所描述的半导体处理器或芯片)可通过在以更适合存储器操作而非算术计算的技术制造的单一基板中并入存储器及处理功能而特定地针对数据密集型任务设计。利用特定地针对数据密集型任务而设计的集成电路,有可能满足新的数据处理要求。然而,应对大数据集的数据处理的此新方法需要解决芯片设计及制造中的新问题。例如,若针对数据密集型任务而设计的新芯片利用用于普通芯片的制造技术及架构制造,则该新芯片将具有不良的效能和/或不可接受的良率。此外,若该新芯片经设计以利用当前数据处置方法进行操作,则该新芯片将具有不良的效能,这是因为当前方法可限制芯片处置平行操作的能力。

本公开描述用于减轻或克服上文所阐述的问题中的一个或多个以及现有技术中的其他问题的解决方案。

发明内容

在本公开的一些实施例中,一种存储器芯片可包括:多个存储器组;一数据储存器,其被配置为储存指示多个存储器组中的一个或多个区段的存取操作的存取信息;以及一刷新控制器,其被配置为至少部分地基于所储存的存取信息而执行该一个或多个区段的刷新操作。

本公开的一些实施例可包括一种非暂时性计算机可读介质,其储存在由至少一个处理器执行时使该至少一个处理器进行以下操作的指令:接收较高阶计算机代码;识别要由该较高阶计算机代码存取的在与一存储器芯片相关联的多个存储器组上分布的多个存储器区段;评估该较高阶计算机代码以识别在多个存储器存取循环上出现的多个存储器读取命令;致使与多个存储器读取命令相关联的数据跨越多个存储器区段中的每个的一分布,使得在多个存储器存取循环中的每个期间存取多个存储器区段中的每个。

本公开的一些实施例可包括一种非暂时性计算机可读介质,其储存在由至少一个处理器执行时使该至少一个处理器进行以下操作的指令:接收较高阶计算机代码;识别要由该较高阶计算机代码存取的在与一存储器芯片相关联的多个存储器组上分布的多个存储器区段;评估该较高阶计算机代码以识别多个存储器存取命令,每个存储器存取指令涉及多个存储器区段中的一个或多个;基于对多个存储器存取命令的分析且对于多个存储器区段当中的每个存储器区段,追踪自该存储器区段的最后一次存取起所累积的一时间量;及响应于自任何特定存储器区段的最后一次存取起的一时间量将超过预定阈值的一判定,将被配置为致使对该特定存储器区段的存取的一存储器刷新命令或一存储器存取命令中的至少一个引入至该较高阶计算机代码中。

在本公开的一些实施例中,具有一软件可配置的存储器刷新控制件的种存储器芯片可包括:多个存储器组及包括于多个存储器组中的每个中的多个存储器区段;及一刷新控制器,其包括一数据储存元件,该数据储存元件储存至少一个存储器刷新图案,该至少一个存储器刷新图案要被实施以刷新包括于多个存储器组中的每个中的多个存储器区段,并且其中该存储器刷新图案可使用软件来配置,以识别在一刷新循环期间,一特定存储器组中的多个存储器区段中的哪些需刷新,而该特定存储器组中的多个存储器区段中的哪些在该刷新循环期间不需刷新。

根据本公开的一实施例为一种用于从晶圆生产大小可选择的存储器芯片的方法。该方法包括形成包含一群组的晶粒及一耦接电路的晶圆(wafer),其中该群组中的晶粒(die)包含存储器单元,并且其中该耦接电路耦接至该群组中的晶粒。该方法还包括通过以下操作中的至少一个形成大小可选择的存储器芯片:切割包含该群组的晶粒及该耦接电路的该晶圆的一区,以提供包含该群组的晶粒的单一存储器芯片;及配置与该群组的晶粒相关联的至少一个控制器以将该群组的晶粒共同作为单一存储器芯片来控制;及切割该晶圆的区,该晶圆的每个区包括该群组的晶粒以提供多个分开的存储器芯片。

根据本公开的另一实施例为一种用于从晶圆生产大小可选择的存储器芯片的方法。该方法包括:在该晶圆上形成多个存储器芯片,多个存储器芯片沿着一或多行布置;及形成对应于该一或多行的至少一个共享的输入输出总线,其中该至少一个共享的输入输出总线将多个存储器芯片中的至少两个相电连接以共同用作单一芯片。该方法还可以包括自该晶圆切下多个存储器芯片中的具有该共享的输入输出总线的至少一个对应部分的至少两个,使得至少一个存储器控制器可配置以控制多个存储器芯片中的该至少两个,以共同用作单一芯片。

根据本公开的另一实施例为一种包括具有可选择大小的存储器芯片的晶圆。该晶圆可包括沿着该晶圆的一或多行布置的多个存储器芯片及对应于该一或多行的至少一个共享的输入输出总线。该晶圆还可以包括多个切割形状,多个切割形状包括多个存储器芯片且不包括该共享的输入输出总线的至少一部分。

本公开的一些实施例可包括提供双端口功能性的一种存储器实例。该存储器实例可包括:多个存储器组,其沿着至少一行及至少一列布置;至少一个列多任务器,其被配置为在单一时钟循环期间接收用于读取或写入的两个地址;及一行解码器,其被配置为与该至少一个列多任务器协作以进行以下操作:基于该两个地址启动一字线,其中该两个地址共享一字线地址;在一存储器存取循环期间通过解码对应于该两个地址中的第一地址的一比特线自该至少一个列多任务器取回该第一地址;及在该存储器存取循环期间通过解码对应于该两个地址中的第二地址的一比特线自该至少一个列多任务器取回该第二地址

在本公开的其他实施例中,提供双端口功能性的一种存储器实例可包括:多个存储器组,其沿着至少一行及至少一列布置;至少一个行多任务器或至少一个列多任务器,其被配置为在单一时钟循环期间接收用于读取或写入的两个地址;以及一行解码器及一列解码器,该解码器被配置为协作进行以下操作:在一第一循环期间自该至少一个行多任务器或该至少一个列多任务器取回该两个地址中的第一地址,且解码对应于该第一地址的字线及比特线;及在该第一循环之后的一第二循环期间,自该至少一个行多任务器或该至少一个列多任务器取回该两个地址中的第二地址,且解码对应于该第二地址的字线及比特线。

在本公开的一些实施例中,一种存储器实例可包括:多个存储器组,其沿着至少一行及至少一列布置;至少一个行电路及至少一个列电路,该电路被配置为用作开关;以及一行解码器及一列解码器,该解码器被配置为协作进行以下操作:在一存储器时钟循环期间,通过以下操作取回两个地址中的第一地址:通过传输一个或多个控制信号以闭合对应于该第一地址的开关元件中的多个组件来启动对应于该第一地址的该至少一个行电路及该至少一个列电路中的对应者,及使用存储器芯片的至少一个行多任务器及至少一个列多任务器以解码对应于该第一地址的字线及比特线;及在该存储器时钟循环期间,通过以下操作取回两个地址中的第二地址:通过传输一个或多个控制信号以闭合对应于该第二地址的该开关元件中的多个组件来启动对应于该第二地址的该至少一个行电路及该至少一个列电路中的对应者,及使用该至少一个行多任务器及该至少一个列多任务器以解码对应于该第二地址的字线及比特线。

在本公开的其他实施例中,一种用于双端口存取的存储器垫可包括:多个存储器胞元,其沿着至少一行及至少一列布置且包含多个电容性元件;至少两个行解码器,其用于启动该至少一行;至少两个列多任务器,其用于启动该至少一列;及第一多条导线,其将该存储器胞元连接至该至少两个行解码器中的第一行解码器及该至少两个列多任务器中的第一列多任务器;及第二多条导线,其将该存储器胞元连接至该至少两个行解码器中的第二行解码器及该至少两个列多任务器中的第二列多任务器。

在本公开的一些实施例中,一种集成电路可包含:一存储器单元,其包含存储器胞元、一输出端口及读取电路系统;以及一处理单元。该读取电路系统可包含:一缩减单元;及用于经由该输出端口输出多达第一数量的比特的存储器内读取路径的第一群组。该处理单元可被配置为将一读取请求发送至该存储器单元以自该存储器单元读取第二数量的比特。该缩减单元可被配置为在由该读取请求触发的读取操作期间基于该第一数量的比特及该第二数量的比特而控制该存储器内读取路径。

本公开的另一实施例可包括集成电路,包含:一存储器单元,其包含存储器胞元、一输出端口及写入电路系统;以及一处理单元。该写入电路系统可包含:一缩减单元;及用于经由该输出端口输出多达第一数量的比特的存储器内写入路径的第一群组。该处理单元可被配置为将一写入请求发送至该存储器单元以写入来自该存储器单元的第二数量的比特。该缩减单元可被配置为在由该写入请求触发的写入操作期间基于该第一数量的比特及该第二数量的比特而控制该存储器内写入路径。

本公开的一些实施例可包括一种用于缩减一集成电路的能量的方法。该方法可包括:通过该集成电路的处理单元将一读取请求发送至该集成电路的存储器单元以自该存储器单元读取第二数量的比特;其中该存储器单元包含存储器胞元、一输出端口及读取电路系统,该读取电路系统包含一缩减单元,及用于经由该输出端口输出多达第一数量的比特的存储器内读取路径的第一群组;及通过该缩减单元在由该读取请求触发的读取操作期间基于该第一数量的比特及该第二数量的比特而控制该存储器内读取路径。

在本公开的一些实施例中,一种存储器单元可包括:一第一存储器垫;一第二存储器垫;及一启动单元,其被配置为启动包括于该第一存储器垫中的存储器胞元的一第一群组,而不启动包括于该第二存储器垫中的存储器胞元的一第二群组,其中存储器胞元的该第一群组及存储器胞元的该第二群组均属于该存储器单元的单一行。

本公开的另一实施例可包括一存储器单元,包含:一第一存储器垫;一第二存储器垫;及一启动单元,其被配置为将一启动信号供应至该第一存储器垫的存储器胞元的一第一群组,且延迟该启动信号至该第二存储器垫的存储器胞元的第二群组的一供应,至少直至存储器胞元的该第一群组的启动已完成。存储器胞元的该第一群组及存储器胞元的该第二群组可属于该存储器单元的单一行。

在本公开的一些实施例中,一种存储器单元可包含一第一存储器垫、一第二存储器垫及一隔离单元。该隔离单元可被配置为在该第一存储器垫的第一存储器胞元被启动的初始启动时段期间将该第一存储器胞元与该第二存储器垫的第二存储器胞元相隔离;及在该初始启动时段之后将该第一存储器胞元耦接至该二存储器胞元;其中该第一存储器胞元及该第二存储器胞元属于该存储器单元的单一行。

一些实施例可包括一种用于操作一存储器单元的方法。该方法可包括通过一启动单元启动包括于该存储器单元的第一存储器垫中的存储器胞元的第一群组,而不启动包括于该存储器单元的第二存储器垫中的存储器胞元的第二群组。存储器胞元的该第一群组及存储器胞元的该第二群组可均属于该存储器单元的单一行。

在本公开的一些实施例中,一种集成电路可包含:一基板;一存储器阵列,其安置于该基板上;一处理阵列,其安置于该基板上;及一接口,其安置于该基板上。该存储器阵列可包含多个存储器组,该处理阵列可包含多个测试单元,多个测试单元可被配置为测试该多个存储器组以提供测试结果,且该接口可被配置为在该集成电路外部输出指示该测试结果的信息。

本公开的另一实施例可包括一种集成电路,包含:一基板;一存储器阵列,其安置于该基板上;一处理阵列,其安置于该基板上;及一接口,其安置于该基板上。该存储器阵列可包含多个存储器组,该接口可被配置为接收包含指令的配置信息,该处理阵列可被配置为执行该指令以存取该存储器阵列,执行计算操作且提供结果,且该接口可被配置为在该集成电路外部输出指示该结果的信息。

本公开的一些实施例可包括一种用于测试一集成电路的存储器组的方法。该方法可包括接收测试一集成电路的存储器组的一请求,该集成电路包含一基板、安置于该基板上且包含该存储器组的存储器阵列、安置于该基板上的处理阵列及安置于该基板上的接口;其中该处理阵列包含多个测试单元;通过多个测试单元且响应于该请求而测试该多个存储器组以提供测试结果;及通过该接口及在该集成电路外部输出指示该测试结果的信息。

在本公开的一些实施例中,一种用于测试一集成电路的存储器组的方法可包含:通过一集成电路的接口接收包含指令的配置信息,该集成电路包含一基板、包含存储器组且安置于该基板上的存储器阵列、安置于该基板上的处理阵列及安置于该基板上的接口;通过该处理阵列执行该指令,该执行通过存取该存储器阵列、执行计算操作及提供结果来进行;及通过该接口及在该集成电路外部输出指示该结果的信息。

根据本公开的其他实施例,非暂时性计算机可读储存媒体可储存程序指令,该程序指令由至少一个处理设备执行且执行本文中所描述的方法中的任一者。

前文的一般性描述和下文的详细描述仅是示例性和说明性的,并不限制权利要求。

附图说明

并入于本公开中且构成本公开的一部分的随附图式说明各种所公开实施例。在图式中:

图1为中央处理单元(CPU)的示意图。

图2为图形处理单元(GPU)的示意图。

图3A为符合所公开实施例的示例性硬件芯片的一实施例的示意图。

图3B为符合所公开实施例的示例性硬件芯片的另一实施例的示意图。

图4为由符合所公开实施例的示例性硬件芯片执行的通用命令的示意图。

图5为由符合所公开实施例的示例性硬件芯片执行的专门命令的示意图。

图6为供用于符合所公开实施例的示例性硬件芯片中的处理群组的示意图。

图7A为符合所公开实施例的处理群组的矩形阵列的示意图。

图7B为符合所公开实施例的处理群组的椭圆形阵列的示意图。

图7C为符合所公开实施例的硬件芯片的阵列的示意图。

图7D为符合所公开实施例的硬件芯片的另一阵列的示意图。

图8为描绘用于编译一系列指令以供在符合所公开实施例的示例性硬件芯片上执行的示例性方法的流程图。

图9为存储器组的示意图。

图10为存储器组的示意图。

图11为符合所公开实施例的具有子组控制件的示例性存储器组的一实施例的示意图。

图12为符合所公开实施例的具有子组控制件的示例性存储器组的另一实施例的示意图。

图13为符合所公开实施例的示例性存储器芯片的功能方块图。

图14为符合所公开实施例的示例性冗余逻辑区块集合的功能方块图。

图15为符合所公开实施例的示例性逻辑区块的功能方块图。

图16为符合所公开实施例的与总线连接的示例性逻辑区块的功能方块图。

图17为符合所公开实施例的串联连接的示例性逻辑区块的功能方块图。

图18为符合所公开实施例的成二维阵列连接的示例性逻辑区块的功能方块图。

图19为符合所公开实施例的处于复杂连接中的示例性逻辑区块的功能方块图。

图20为说明符合所公开实施例的冗余区块启用处理程序的示例性流程图。

图21为说明符合所公开实施例的地址指派处理程序的示例性流程图。

图22为符合所公开实施例的示例性处理设备的功能方块图。

图23为符合所公开实施例的示例性处理设备的功能方块图。

图24包括符合所公开实施例的示例性存储器配置图。

图25为说明符合所公开实施例的存储器配置处理程序的示例性流程图。

图26为说明符合所公开实施例的存储器读取处理程序的示例性流程图。

图27为说明符合所公开实施例的处理程序执行的示例性流程图。

图28为符合本公开的具有刷新控制器的存储器芯片的一实施例。

图29A为符合本公开的一实施例的刷新控制器。

图29B为符合本公开的另一实施例的刷新控制器。

图30为符合本公开的通过刷新控制器执行的处理程序的一实施例的流程图。

图31为符合本公开的由编译程序实施的处理程序的一实施例的流程图。

图32为符合本公开的由编译程序实施的处理程序的另一实施例的流程图。

图33展示符合本公开的通过所储存图案配置的示例刷新控制器。

图34为符合本公开的由刷新控制器内的软件实施的处理程序的示例流程图。

图35A展示符合本公开的包括晶粒的示例晶圆。

图35B展示符合本公开的连接至输入/输出总线的示例存储器芯片。

图35C展示符合本公开的包括成行布置且连接至输入输出总线的存储器芯片的示例晶圆。

图35D展示符合本公开的形成群组且连接至输入输出总线的两个存储器芯片。

图35E展示符合本公开的示例晶圆,其包括以六边形晶格置放且连接至输入输出总线的晶粒。

图36A至图36D展示符合本公开的连接至输入/输出总线的存储器芯片的各种可能配置。

图37展示符合本公开的共享胶合逻辑(glue logic)的晶粒的示例分组。

图38A至图38B展示符合本公开的穿过晶圆的示例切割。

图38C展示符合本公开的晶圆上的晶粒的示例布置及输入输出总线的布置。

图39展示符合本公开的具有互连处理器子单元的晶圆上的示例存储器芯片。

图40为符合本公开的从晶圆布局存储器芯片的群组的处理程序的一示例流程图。

图41A为符合本公开的从晶圆布局存储器芯片的群组的处理程序的另一示例流程图。

图41B至图41C为符合本公开的判定用于从晶圆切割存储器芯片的一个或多个群组的切割图案的处理程序的示例流程图。

图42为符合本公开的提供沿着列的双端口存取的存储器芯片内的电路系统的示例。

图43为符合本公开的提供沿着行的双端口存取的存储器芯片内的电路系统的示例。

图44为符合本公开的提供沿着行和列两者的双端口存取的存储器芯片内的电路系统的示例。

图45A为使用复制存储器阵列或垫的双读取。

图45B为使用复制存储器阵列或垫的双写入。

图46为符合本公开的具有用于沿着列的双端口存取的开关元件的存储器芯片内的电路系统的示例。

图47A为符合本公开的用于在单端口存储器阵列或垫上提供双端口存取的一处理程序的示例流程图。

图47B为符合本公开的用于在单端口存储器阵列或垫上提供双端口存取的另一处理程序的示例流程图。

图48为符合本公开的提供沿着行和列两者的双端口存取的存储器芯片内的电路系统的另一示例。

图49为符合本公开的用于存储器垫内的双端口存取的开关元件的示例。

图50为符合本公开的具有被配置为存取部分字的缩减单元的示例集成电路。

图51为用于使用如关于图50所描述的缩减单元的存储器组。

图52为符合本公开的使用集成至PIM逻辑中的缩减单元的存储器组。

图53为符合本公开的使用PIM逻辑以启动用于存取部分字的开关的存储器组。

图54A为符合本公开的具有用于撤销启动以存取部分字的分段列多任务器的存储器组。

图54B为符合本公开的用于存储器中的部分字存取的处理程序的示例流程图。

图55为包括多个存储器垫的现有存储器芯片。

图56为符合本公开的具有用于在线断开期间缩减功率消耗的启动电路的存储器芯片的一实施例。

图57为符合本公开的具有用于在线断开期间缩减功率消耗的启动电路的存储器芯片的另一实施例。

图58为符合本公开的具有用于在线断开期间缩减功率消耗的启动电路的存储器芯片的又一实施例。

图59为符合本公开的具有用于在线断开期间缩减功率消耗的启动电路的存储器芯片的再一实施例。

图60为符合本公开的具有用于在线断开期间缩减功率消耗的全局字线及区域字线的存储器芯片的一实施例。

图61为符合本公开的具有用于在线断开期间缩减功率消耗的全局字线及区域字线的存储器芯片的另一实施例。

图62为符合本公开的用于依序断开存储器中的线的处理程序的流程图。

图63为用于存储器芯片的现有测试器。

图64为用于存储器芯片的另一现有测试器。

图65为符合本公开的使用与存储器在相同基板上的逻辑单元测试存储器芯片的一实施例。

图66为符合本公开的使用与存储器在相同基板上的逻辑单元测试存储器芯片的另一实施例。

图67为符合本公开的使用与存储器在相同基板上的逻辑单元测试存储器芯片的又一实施例。

图68为符合本公开的使用与存储器在相同基板上的逻辑单元测试存储器芯片的再一实施例。

图69为符合本公开的使用与存储器在相同基板上的逻辑单元测试存储器芯片的另一实施例。

图70为符合本公开的用于测试存储器芯片的处理程序的流程图。

图71为符合本公开的用于测试存储器芯片的另一处理程序的流程图。

具体实施方式

以下详细描述参考随附图式。在任何方便之处,在图式及以下描述中使用相同参考编号来指代相同或类似部分。虽然本文中描述了若干说明性实施例,但修改、调适及其他实施为可能的。例如,可对图式中所说明的组件进行替代、添加或修改,且可通过替代、重排序、移除步骤或添加步骤至所公开方法来修改本文中所描述的说明性方法。因此,以下详细描述不限于所公开实施例及示例。反而,适当范畴由所附权利要求界定。

如贯穿本公开所使用,术语「硬件芯片」指半导体晶圆(诸如,硅或其类似物),其上形成有一个或多个电路元件(诸如,晶体管、电容器、电阻器和/或其类似物)。该电路元件可形成处理元件或存储器元件。「处理元件」指代共同执行至少一个逻辑功能(诸如,算术功能、逻辑门、其他布尔运算(Boolean operations)或其类似物)的一个或多个电路元件。处理元件可为通用处理元件(诸如,可配置的多个晶体管)或专用处理元件(诸如,经设计以执行特定逻辑功能的特定逻辑门或多个电路元件)。「存储器元件」指可用以储存数据的一个或多个电路元件。「存储器元件」也可被称作「存储器胞元」。存储器元件可为动态(使得需要电刷新以维持数据储存)、静态(使得数据在失去电力之后持续存在至少一段时间)或非易失性的存储器。

处理元件可接合以形成处理器子单元。「处理器子单元」因此可包含可执行至少一个任务或指令(例如,属于一处理器指令集)的处理元件的最小分组。例如,一子单元可包含被配置为共同执行指令的一个或多个通用处理元件、与经配置成以互补方式执行指令的一个或多个专用处理元件配对的一个或多个通用处理元件,或其类似物。该处理器子单元可以以阵列布置在一基板(例如,一晶圆)上。尽管「阵列」可包含矩形形状,但阵列中的子单元的任何布置可形成于基板上。

存储器元件可接合以形成存储器组(memory bank)。例如,存储器组可包含沿着至少一条导线(或其他导电连接件)链接的存储器元件的一个或多个线。此外,存储器元件可在另一方向上沿着至少一条添加导线链接。例如,存储器元件可沿着字线及比特线布置,如下文所解释。尽管存储器组可包含线,但组中的元件的任何布置可用以在基板上形成组。此外,一个或多个组可电接合至至少一个存储器控制器以形成存储器阵列。尽管存储器阵列可包含组的矩形布置,但阵列中的组的任何布置可形成于基板上。

如贯穿本公开进一步所使用,「总线」指基板的组件之间的任何通信连接件。例如,导线或线(形成电连接件)、光纤(形成光学连接件)或进行元件之间的通信的任何其他连接件可被称作「总线」。

常规处理器使通用逻辑电路与共享存储器配对。共享存储器可储存用于由逻辑电路执行的指令集以及用于指令集的执行且由指令集的执行产生的数据两者。如下文所描述,一些常规处理器使用高速缓存系统来缩减执行自共享存储器提取时的延迟;然而,常规高速缓存系统保持共享。常规处理器包括中央处理单元(CPU)、图形处理单元(GPU)、各种特殊应用集成电路(ASIC)或其类似物。图1展示CPU的示例,且图2展示GPU的示例。

如图1所示,CPU 100可包含处理单元110,处理单元110可包括一个或多个处理器子单元,诸如处理器子单元120a及处理器子单元120b。尽管图1中未描绘,但每一处理器子单元可包含多个处理元件。此外,处理单元110可包括一个或多个层级的片上高速缓存。此类高速缓存元件通常与处理单元110形成于相同半导体晶粒上,而非经由形成于基板中的一个或多个总线连接至处理器子单元120a及120b,该基板含有处理器子单元120a及120b以及高速缓存元件。对于常规处理器中的第一阶(L1)及第二阶(L2)高速缓存,直接在相同晶粒上而非经由总线连接的布置为常用的。替代地,在早期处理器中,L2高速缓存系使用子单元与L2高速缓存之间的背侧总线而在处理器子单元当中共享。背侧总线通常大于下文所描述的前侧总线。因此,因为高速缓存要供晶粒上的所有处理器子单元共享,所以高速缓存130可与处理器子单元120a及120b在相同晶粒上形成或经由一个或多个背侧总线以通信方式耦接至处理器子单元120a及120b。在不具有总线(例如,高速缓存直接形成于晶粒上)的实施例以及使用背侧总线的实施例两者中,高速缓存在CPU的处理器子单元之间共享。

此外,处理单元110与共享存储器140a及存储器140b通信。例如,存储器140a及140b可表示共享动态随机存取存储器(DRAM)的存储器组。尽管描绘为具有两个存储器组,但大部分常规存储器芯片包括介于八个与十六个之间的存储器组。因此,处理器子单元120a及120b可使用共享存储器140a及140b储存数据,该数据接着由处理器子单元120a及120b进行操作。然而,此布置导致存储器140a及140b与处理单元110之间的总线在处理单元110的时钟速度超过总线的数据传送速度时成为瓶颈。对于常规处理器,通常系如此情况,从而导致低于基于时钟速率及晶体管数量的规定处理速度的有效处理速度。

如图2中所展示,GPU中也存在类似缺陷。GPU 200可包含处理单元210,处理单元210可包括一个或多个处理器子单元(例如,子单元220a、220b、220c、220d、220e、220f、220g、220h、220i、220j、220k、220l、220m、220n、220o及220p)。此外,处理单元210可包括一个或多个层级的片上高速缓存和/或寄存器档案。此类高速缓存元件通常与处理单元210形成于相同半导体晶粒上。实际上,在图2的实施例中,高速缓存210与处理单元210形成于相同晶粒上且在所有处理器子单元当中共享,而高速缓存230a、230b、230c及230d分别形成于处理器子单元的子集上且专用于该处理器子单元。

此外,处理单元210与共享存储器250a、250b、250c及250d通信。例如,存储器250a、250b、250c及250d可表示共享DRAM的存储器组。因此,处理单元210的处理器子单元可使用共享存储器250a、250b、250c及250d储存数据,该数据接着由该处理器子单元进行操作。然而,此布置导致存储器250a、250b、250c及250d与处理单元210之间的总线成为瓶颈,其类似于上文关于CPU所描述的瓶颈。

图3A为描绘示例性硬件芯片300的实施例的示意图。硬件芯片300可包含经设计以缓解上文关于CPU、GPU及其他常规处理器所描述的瓶颈的分布式处理器。分布式处理器可包括在空间上分布于单一基板上的多个处理器子单元。此外,如上文所解释,在本公开的分布式处理器中,对应存储器组还在空间上分布于基板上。在一些实施例中,分布式处理器可与一组指令相关联,且分布式处理器的处理器子单元中的每一个可负责执行包括于该组指令中的一个或多个任务。

如图3A中所描绘,硬件芯片300可包含多个处理器子单元,例如,逻辑及控制子单元320a、320b、320c、320d、320e、320f、320g及320h。如图3A中进一步所描绘,每一处理器子单元可具有一专用存储器实例。例如,逻辑及控制子单元320a可操作地连接至专用存储器实例330a,逻辑及控制子单元320b可操作地连接至专用存储器实例330b,逻辑及控制子单元320c可操作地连接至专用存储器实例330c,逻辑及控制子单元320d可操作地连接至专用存储器实例330d,逻辑及控制子单元320e可操作地连接至专用存储器实例330e,逻辑及控制子单元320f可操作地连接至专用存储器实例330f,逻辑及控制子单元320g可操作地连接至专用存储器实例330g,且逻辑及控制子单元320h可操作地连接至专用存储器实例330h。

尽管图3A将每个存储器实例描绘为单一存储器组,但硬件芯片300可包括两个或多于两个存储器组作为用于硬件芯片300上的处理器子单元的专用存储器实例。此外,尽管图3A将每一处理器子单元描绘为包含逻辑组件及用于专用存储器组的控制件两者,但硬件芯片300可使用用于存储器组的控制件,该控制件至少部分地与该逻辑组件分开。此外,如图3A中所描绘,可将两个或多于两个处理器子单元及其对应存储器组分组成例如处理群组310a、310b、310c及310d。「处理群组」可表示上面形成有硬件芯片300的基板上的空间区别。因此,处理群组可包括用于群组中的存储器组的其他控制件,例如,控制件340a、340b、340c及340d。另外或替代地,「处理群组」可表示用于编译代码以供在硬件芯片300上执行的目的的逻辑分组。因此,用于硬件芯片300的编译程序(下文进一步描述)可在硬件芯片300上的处理群组之间划分整组指令。

此外,主机350可将指令、数据及其他输入提供至硬件芯片300且自该硬件芯片读取输出。因此,一组指令可全部在单一晶粒上,例如在代管硬件芯片300的晶粒上执行。实际上,晶粒外的仅有通信可包括指令至硬件芯片300的加载、发送至硬件芯片300的任何输入及从硬件芯片300读取的任何输出。因此,所有计算及存储器操作可在晶粒上(在硬件芯片300上)执行,这是因为硬件芯片300的处理器子单元与硬件芯片300的专用存储器组通信。

图3B为另一示例性硬件芯片300'的实施例的示意图。尽管描绘为硬件芯片300的替代,但图3B中所描绘的架构可至少部分地与图3A中所描绘的架构组合。

如图3B中所描绘,硬件芯片300'可包含多个处理器子单元,例如,处理器子单元350a、350b、350c及350d。如图3B中进一步所描绘,每一处理器子单元可具有多个专用存储器实例。例如,处理器子单元350a可操作地连接至专用存储器实例330a及330b,处理器子单元350b可操作地连接至专用存储器实例330c及330d,处理器子单元350c可操作地连接至专用存储器实例330e及330f,且处理器子单元350d可操作地连接至专用存储器实例330g及330h。此外,如图3B中所描绘,可将处理器子单元及其对应存储器组分组成例如处理群组310a、310b、310c及310d。如上文所解释,「处理群组」可表示上面形成有硬件芯片300'的基板上的空间区别和/或用于编译代码以供在硬件芯片300'上执行的目的的逻辑分组。

如图3B中进一步所描绘,处理器子单元可经由总线彼此通信。例如,如图3B所展示,处理器子单元350a可经由总线360a与处理器子单元350b通信,经由总线360c与处理器子单元350c通信,且经由总线360f与处理器子单元350d通信。类似地,处理器子单元350b可经由总线360a与处理器子单元350a通信(如上文所描述),经由总线360e与处理器子单元350c通信,且经由总线360d与处理器子单元350d通信。此外,处理器子单元350c可经由总线360c与处理器子单元350a通信(如上文所描述),经由总线360e与处理器子单元350b通信(如上文所描述),且经由总线360b与处理器子单元350d通信。因此,处理器子单元350d可经由总线360f与处理器子单元350a通信(如上文所描述),经由总线360d与处理器子单元350b通信(如上文所描述),且经由总线360b与处理器子单元350c通信(如上文所描述)。本领域技术人员将理解,可使用比图3B中所描绘的总线少的总线。例如,可消除总线360e,使得处理器子单元350b与350c之间的通信经由处理器子单元350a和/或350d传递。类似地,可消除总线360f,使得处理器子单元350a与处理器子单元350d之间的通信经由处理器子单元350b或350c传递。

此外,本领域技术人员将理解,可使用除图3A及图3B中所描绘的架构以外的架构。例如,各具有单处理器子单元及存储器实例的处理群组的阵列可布置在基板上。处理器子单元可另外或替代地形成用于对应的专用存储器组的控制器的部分、用于对应的专用存储器的存储器垫的控制器的部分,或其类似物。

鉴于上文所描述的架构,相较于传统架构,硬件芯片300及300'可显着提高存储器密集型任务的效率。例如,数据库操作及人工智能算法(诸如,神经网络)为存储器密集型任务的示例,对于存储器密集型任务,传统架构在效率上低于硬件芯片300及300'。因此,硬件芯片300及300'可被称作数据库加速器处理器和/或人工智能加速器处理器。

上文所描述的硬件芯片架构可被配置为用于代码执行。例如,每一处理器子单元可与硬件芯片中的其他处理器子单元隔开而个别地执行代码(定义一组指令)。因此,替代依赖于操作系统来管理多线程处理或使用多任务处理(其为并发的而非平行的),本公开的硬件芯片可允许处理器子单元完全平行地操作。

除上文所描述的完全平行实施以外,指派给每一处理器子单元的指令中的至少一些可重叠。例如,分布式处理器上的多个处理器子单元可执行重叠指令作为例如操作系统或其他管理软件的实施,同时执行非重叠指令以便在操作系统或其他管理软件的内容背景内执行平行任务。

图4描绘通过处理群组410进行的用于执行通用命令的示例性处理程序400。例如,处理群组410可包含本公开的硬件芯片(例如,硬件芯片300、硬件芯片300'或其类似物)的一部分。

如图4中所描绘,命令可发送至与专用存储器实例420配对的处理器子单元430。外部主机(例如,主机350)可将该命令发送至处理群组410以供执行。替代地,主机350可能已发送包括该命令的指令集以用于储存于存储器实例420中,使得处理器子单元430可从存储器实例420取回命令且执行所取回的命令。因此,该命令可由处理元件440执行,该处理元件为可配置以执行所接收的命令的通用处理元件。此外,处理群组410可包括用于存储器实例420的控制件460。如图4中所描绘,控制件460可执行处理元件440在执行所接收的命令时所需的对存储器实例420的任何读取和/或写入。在执行命令之后,处理群组410可将命令的结果输出至例如外部主机或输出至相同硬件芯片上的不同处理群组。

在一些实施例中,如图4中所描绘,处理器子单元430还可以包括地址生成器450。「地址生成器」可包含多个处理元件,多个处理元件被配置为判定用于执行读取及写入的一个或多个存储器组中的地址,且也可对位于所判定地址处的数据执行操作(例如,加法、减法、乘法或其类似物)。例如,地址生成器450可判定用于对存储器进行的任何读取或写入的地址。在一个示例中,地址生成器450可通过在不再需要读取值时用基于命令所判定的新值覆写读取值来提高效率。另外或替代地,地址生成器450可选择可用地址以用于储存来自命令执行的结果。此可允许为后一时钟循环调度结果读出,这对于外部主机较为便利。在另一示例中,地址生成器450可在诸如向量或矩阵乘法累加(multiply-accumulate)计算的多循环计算期间判定读取及写入的地址。因此,地址生成器450可维持或计算用于读取数据及写入多循环计算的中间结果的存储器地址,使得处理器子单元430可继续处理而不必储存这些存储器地址。

图5描绘通过处理群组510进行的用于执行专门命令的示例性处理程序500。例如,处理群组510可包含本公开的硬件芯片(例如,硬件芯片300、硬件芯片300'或其类似物)的一部分。

如图5中所描绘,专门命令(例如,乘法累加命令)可发送至与专用存储器实例520配对的处理元件530。外部主机(例如,主机350)可将该命令发送至处理元件530以供执行。因此,该命令可由处理元件530在来自主机的给定信号下执行,该处理元件为可配置以执行特定命令(包括所接收的命令)的专门处理元件。替代地,处理元件530可从存储器实例520取回命令以供执行。因此,在图5的示例中,处理元件530为乘法累加(MAC)电路,该电路被配置为执行从外部主机接收或从存储器实例520取回的MAC命令。在执行命令之后,处理群组410可将命令的结果输出至例如外部主机或输出至相同硬件芯片上的不同处理群组。尽管关于单一命令及单一结果来描绘,但可接收或取回并执行多个命令,且多个结果可在输出之前在处理群组510上组合。

尽管在图5中描绘为MAC电路,但额外或替代的专门电路可包括于处理群组510中。例如,可实施MAX读取命令(其传回向量的最大值)、MAX0读取命令(也被称作整流器的常用功能,其传回整个向量,而且传回为0的最大值),或其类似物。

尽管分开地描绘,但图4的一般处理群组410及图5的专门处理群组510可组合。例如,通用处理器子单元可耦接至一个或多个专门处理器子单元以形成处理器子单元。因此,通用处理器子单元可用于不可由一个或多个专门处理器子单元执行的所有指令。

本领域技术人员将理解,可通过专门逻辑电路来处置神经网络实施及其他记忆密集型任务。例如,数据库查询、封包检测、字符串比较及其他功能在由本文中所描述的硬件芯片执行的情况下可提高效率。

在符合本公开的硬件芯片上,专用总线可在该芯片上的处理器子单元之间和/或在该处理器子单元与其对应的专用存储器组之间传送数据。使用专用总线可降低仲裁成本,这是因为竞争请求系不可能的或容易使用软件而非使用硬件来避免。

图6示意性地描绘处理群组600的示意图。处理群组600可供用于硬件芯片(例如,硬件芯片300、硬件芯片300'或其类似物)中。处理器子单元610可经由总线630连接至存储器620。存储器620可包含随机可存取存储器(RAM)元件,其储存用于由处理器子单元610执行的数据及代码。在一些实施例中,存储器620可为N路存储器(其中N为等于或大于1的数字,其暗示交错的存储器620中的区段的数量)。因为处理器子单元610经由总线630耦接至专用于处理器子单元610的存储器620,所以N可保持相对较小而不损害执行效能。此表示对常规多路寄存器档案或高速缓存的改良,其中较低N通常导致较低执行效能,且较高N通常导致大的面积及功率损失。

可根据例如一个或多个任务中所涉及的数据的大小而调整存储器620的大小、通路的数量及总线630的宽度以满足使用处理群组600的系统的任务及应用程序实施的要求。存储器元件620可包含此项技术中已知的一个或多个类型的存储器,例如,易失性存储器(诸如,RAM、DRAM、SRAM、相变RAM(PRAM)、磁阻式RAM(MRAM)、电阻式RAM(ReRAM)或其类似物)或非易失性存储器(诸如,快闪存储器或ROM)。根据一些实施例,存储器元件620的一部分可包含第一存储器类型,而另一部分可包含另一存储器类型。例如,存储器元件620的代码区可包含ROM元件,而存储器元件620的数据区可包含DRAM元件。此分割的另一示例为将神经网络的权重储存于快闪存储器中,而将用于计算的数据储存于DRAM中。

处理器子单元610包含处理元件640,该处理元件可包含处理器。该处理器可为管线式或非管线式的,可为定制精简指令集计算(RISC)元件或其他处理方案,实施于此项技术中已知的任何商业集成电路(IC)(诸如,ARM、ARC、RISCV等)上,如本领域技术人员所了解。处理元件640可包含控制器,该控制器在一些实施例中包括算术逻辑单元(ALU)或其他控制器。

根据本公开的一些实施例,执行所接收或所储存的代码的处理元件640可包含通用处理元件,且因此为灵活的并能够执行广泛多种处理操作。当比较在特定操作的执行期间所消耗的功率时,非专用电路系统通常比特定操作专用电路系统消耗更多功率。因此,当执行特定的复杂算术计算时,处理元件640可比专用硬件消耗更多功率且执行效率更低。因此,根据一些实施例,处理元件640的控制器可经设计以执行特定操作(例如,加法或「移动」操作)。

在本公开的一实施例中,特定操作可由一个或多个加速器650执行。每一加速器可为专用的且经编程以执行特定计算(诸如,乘法、浮点向量运算或其类似物)。通过使用加速器,每个处理器子单元的每次计算所消耗的平均功率可降低,且计算吞吐量此后增大。可根据系统经设计以实施的应用程序(例如,执行神经网络、执行数据库查询或其类似物)而选择加速器650。加速器650可由处理元件640配置且可与处理元件串接地操作以用于降低功率消耗且加速计算及计算。加速器可另外或替代地用以在诸如智能型直接存储器存取(DMA)周边设备的处理群组600的存储器与MUX/DEMUX/输入/输出端口(例如,MUX 650及DEMUX 660)之间传送数据。

加速器650可被配置为执行多种功能。例如,一个加速器可被配置为执行常用于神经网络中的16比特浮点计算或8比特整数计算。加速器功能的另一示例为常用于神经网络的训练阶段期间的32比特浮点计算。加速器功能的又一示例为查询处理,诸如用于数据库中的查询处理。在一些实施例中,加速器650可包含用以执行这些功能的专门处理元件和/或可根据储存于存储器元件620上的配置数据而配置使得其可加以修改。

加速器650可另外或替代地实施存储器移动的可配置的脚本处理列表以对数据至/从存储器620或至/从其他加速器和/或输入/输出的移动进行计时。因此,如下文进一步所解释,使用处理群组600的硬件芯片内部的所有数据移动可使用软件同步而非硬件同步。例如,一个处理群组(例如,群组600)中的加速器可每十个循环将数据从其输入端传送至其加速器,接着在下一个循环输出数据,藉此使信息从处理群组的存储器流送至另一存储器。

如图6中进一步所描绘,在一些实施例中,处理群组600还可包含连接至其输入端口的至少一个输入多任务器(MUX)660及连接至其输出端口的至少一个输出DEMUX 670。这些MUX/DEMUX可由来自处理元件640和/或来自加速器650中的一个的控制信号(未图标)控制,该控制信号系根据正由处理元件640进行的当前指令和/或由加速器650中的加速器执行的操作而判定。在一些情境中,可能需要处理群组600(根据来自其代码存储器的预定义指令)将数据从其输入端口传送至其输出端口。因此,除DEMUX/MUX中的每个连接至处理元件640及加速器650以外,输入MUX(例如,MUX 660)中的一个或多个也可经由一个或多个总线直接连接至输出DEMUX(例如,DEMUX 670)。

图6的处理群组600可排成阵列以形成分布式处理器,例如,如图7A中所描绘。处理群组可安置于基板710上以形成阵列。在一些实施例中,基板710可包含诸如硅的半导体基板。另外或替代地,基板710可包含电路板,诸如可挠性电路板。

如图7A中所描绘,基板710可包括安置于其上的多个处理群组,诸如处理群组600。因此,基板710包括存储器阵列,该存储器阵列包括多个组,诸如组720a、720b、720c、720d、720e、720f、720g及720h。此外,基板710包括处理阵列,该处理阵列可包括多个处理器子单元,诸如子单元730a、730b、730c、730d、730e、730f、730g及730h。

此外,如上文所解释,每一处理群组可包括一处理器子单元及专用于该处理器子单元的一个或多个对应的存储器组。因此,如图7A中所描绘,每一子单元与一对应的专用存储器组相关联,例如:处理器子单元730a与存储器组720a相关联,处理器子单元730b与存储器组720b相关联,处理器子单元730c与存储器组720c相关联,处理器子单元730d与存储器组720d相关联,处理器子单元730e与存储器组720e相关联,处理器子单元730f与存储器组720f相关联,处理器子单元730g与存储器组720g相关联,处理器子单元730h与存储器组720h相关联。

为了允许每一处理器子单元与其对应的专用存储器组通信,基板710可包括将处理器子单元中的一个连接至其对应的专用存储器组的第一多个总线。因此,总线740a将处理器子单元730a连接至存储器组720a,总线740b将处理器子单元730b连接至存储器组720b,总线740c将处理器子单元730c连接至存储器组720c,总线740d将处理器子单元730d连接至存储器组720d,总线740e将处理器子单元730e连接至存储器组720e,总线740f将处理器子单元730f连接至存储器组720f,总线740g将处理器子单元730g连接至存储器组720g,且总线740h将处理器子单元730h连接至存储器组720h。此外,为了允许每一处理器子单元与其他处理器子单元通信,基板710可包括将处理器子单元中的一个连接至处理器子单元中的另一个的第二多个总线。在图7A的示例中,总线750a将处理器子单元730a连接至处理器子单元750e,总线750b将处理器子单元730a连接至处理器子单元750b,总线750c将处理器子单元730b连接至处理器子单元750f,总线750d将处理器子单元730b连接至处理器子单元750c,总线750e将处理器子单元730c连接至处理器子单元750g,总线750f将处理器子单元730c连接至处理器子单元750d,总线750g将处理器子单元730d连接至处理器子单元750h,总线750h将处理器子单元730h连接至处理器子单元750g,总线750i将处理器子单元730g连接至处理器子单元750g,且总线750j将处理器子单元730f连接至处理器子单元750e。

因此,在图7A中所展示的示例布置中,多个逻辑处理器子单元布置成至少一行及至少一列。该第二多个总线将每一处理器子单元连接至相同行中的至少一个邻近处理器子单元且连接至相同列中的至少一个邻近处理器子单元。图7A可被称作「部分块连接」。

图7A中所展示的配置可经修改以形成「完全块连接」。完全块连接包括连接对角线处理器子单元的额外总线。例如,该第二多个总线可包括处理器子单元730a与处理器子单元730f之间、处理器子单元730b与处理器子单元730e之间、处理器子单元730b与处理器子单元730g之间、处理器子单元730c与处理器子单元730f之间、处理器子单元730c与处理器子单元730h之间以及处理器子单元730d与处理器子单元730g之间的额外总线。

完全块连接可用于卷积计算,在卷积计算中,使用储存于附近处理器子单元中的数据及结果。例如,在卷积图像处理期间,每一处理器子单元可接收图像的块(诸如,像素或像素群组)。为了计算卷积结果,每一处理器子单元可从所有八个邻近处理器子单元获取数据,该邻近处理器子单元中的每个已接收对应块。在部分块连接中,来自对角线邻近处理器子单元的数据可经由连接至该处理器子单元的其他邻近处理器子单元传递。因此,芯片上的分布式处理器可为人工智能加速器处理器。

在卷积计算的特定实施例中,可跨越多个处理器子单元来划分N×M图像。每一处理器子单元可在其对应块上通过A×B滤波器执行卷积。为了对块之间的边界上的一个或多个像素执行滤波,每一处理器子单元可能需要来自相邻处理器子单元的数据,该相邻处理器子单元具有包括相同边界上的像素的块。因此,针对每一处理器子单元产生的代码配置该子单元以计算卷积且每当需要来自邻近子单元的数据时从第二多个总线提取。将数据输出至第二多个总线的对应命令被提供至该子单元以确保所需数据传送的适当时序。

图7A的部分块连接可修改为N部分块连接。在此修改中,第二多个总线可进一步将每一处理器子单元连接至在图7A的总线延其所沿的四个方向(也即,上、下、左及右)上在该处理器子单元的阈值距离内(例如,在n个处理器子单元内)的处理器子单元。可对完全块连接进行类似修改(以产生N完全块连接),使得第二多个总线进一步将每一处理器子单元连接至在除两个对角线方向以外的图7A的总线延其所沿的四个方向上在该处理器子单元的阈值距离内(例如,在n个处理器子单元内)的处理器子单元。

其他布置也是可能的。例如,在图7B中所展示的布置中,总线750a将处理器子单元730a连接至处理器子单元730d,总线750b将处理器子单元730a连接至处理器子单元730b,总线750c将处理器子单元730b连接至处理器子单元730c,且总线750d将处理器子单元730c连接至处理器子单元730d。因此,在图7B中所展示的示例布置中,多个处理器子单元布置成星形图案。第二多个总线将每一处理器子单元连接至星形图案内的至少一个邻近处理器子单元。

其他布置(未示出)也是可能的。例如,可使用相邻者连接布置,使得多个处理器子单元布置在一个或多个线中(例如,类似于图7A中所描绘的情况)。在相邻者连接布置中,第二多个总线将每一处理器子单元连接至相同线中在左方的处理器子单元、相同线中在右方的处理器子单元、相同线中在左方及右方两者的处理器子单元,等等。

在另一实施例中,可使用N线性连接布置。在N线性连接布置中,第二多个总线将每一处理器子单元连接至在该处理器子单元的阈值距离内(例如,在n个处理器子单元内)的处理器子单元。N线性连接布置可与线阵列(上文所描述)、矩形阵列(图7A中所描绘)、椭圆形阵列(图7B中所描绘)或任何其他几何阵列共同使用。

在又一实施例中,可使用N对数连接布置。在N对数连接布置中,第二多个总线将每一处理器子单元连接至在该处理器子单元的二的幂的阈值距离内(例如,在2

可组合上文所描述的连接方案中的任一者以用于相同硬件芯片中。例如,可在一个区中使用完全块连接,而在另一区中使用部分块连接。在另一实施例中,可在一个区中使用N线性连接布置,而在另一区中使用N完全块连接。

替代存储器芯片的处理器子单元之间的专用总线或除该专用总线以外,也可使用一个或多个共享总线以互连分布式处理器的所有处理器子单元(或处理器子单元的子集)。仍可通过使用由处理器子单元执行的代码对共享总线上的数据传送进行计时来避免共享总线上的冲突,如下文进一步所解释。替代共享总线或除共享总线以外,也可使用可配置总线以动态地连接处理器子单元以形成连接至分开总线的处理器单元的群组。例如,可配置总线可包括晶体管或可由处理器子单元来控制以将数据传送引导至选定处理器子单元的其他机构。

在图7A及图7B两者中,处理阵列的多个处理器子单元在空间上分布于存储器阵列的多个离散存储器组当中。在其他替代实施例(未示出)中,多个处理器子单元可聚集在基板的一个或多个区中,且多个存储器组可聚集在基板的一个或多个其他区中。在一些实施例中,可使用空间分布与聚集的组合(未图标)。例如,基板的一个区可包括处理器子单元的丛集,基板的另一区可包括存储器组的丛集,且基板的又一区可包括分布于存储器组当中的处理阵列。

本领域技术人员将认识到,在基板上将处理器群组600排成阵列并非排他性实施例。例如,每一处理器子单元可与至少两个专用存储器组相关联。因此,可替代处理群组600或与处理群组600组合地使用图3B的处理群组310a、310b、310c及310d,以形成处理阵列及存储器阵列。可使用包括例如三个、四个或多于四个专用存储器组的其他处理群组(未示出)。

多个处理器子单元中的每个可被配置为相对于包括于多个处理器子单元中的其他处理器子单元独立地执行与特定应用程序相关联的软件代码。例如,如下文所解释,指令的多个子系列可分组为机器码且被提供至每一处理器子单元以供执行。

在一些实施例中,每一专用存储器组包含至少一个动态随机存取存储器(DRAM)。替代地,存储器组可包含诸如静态随机存取存储器(SRAM)、DRAM、快闪存储器或其类似物的存储器类型的混合。

在常规处理器中,处理器子单元之间的数据共享通常通过共享存储器来执行。共享存储器通常需要大部分芯片面积和/或执行由额外硬件(诸如,仲裁器)管理的总线。如上文所描述,该总线造成瓶颈。此外,可在芯片外部的共享存储器通常包括缓存一致性机制及更复杂的高速缓存(例如,L1高速缓存、L2高速缓存及共享DRAM),以便将准确且最新的数据提供至处理器子单元。如下文进一步所解释,图7A及图7B中所描绘的专用总线允许无硬件管理(诸如,仲裁器)的硬件芯片。此外,使用如图7A及图7B中所描绘的专用存储器允许消除复杂的高速缓存层及一致性机制。

反而,为了允许每一处理器子单元存取由其他处理器子单元计算和/或储存于专用于其他处理器子单元的存储器组中的数据,提供总线,该总线的时序系使用由每一处理器子单元个别地执行的代码动态地执行。此情形允许消除如常规地所使用的大部分(若非全部)总线管理硬件。此外,这些总线上的直接传送替换复杂的高速缓存机制,以缩减在存储器读取及写入期间的延时时间。

如图7A及图7B中所描绘,本公开的存储器芯片可独立地操作。替代地,本公开的存储器芯片可与诸如存储器设备(例如,一个或多个DRAM组)、系统单芯片、场可编程门阵列(FPGA)或其他处理和/或存储器芯片的一个或多个额外集成电路可操作地连接。在这些实施例中,由该架构执行的一系列指令中的任务可在存储器芯片的处理器子单元与额外集成电路的任何处理器子单元之间进行划分(例如,通过编译程序,如下文所描述)。例如,其他集成电路可包含将指令和/或数据输入至存储器芯片且从其接收输出的主机(例如,图3A的主机350)。

为了将本公开的存储器芯片与一个或多个额外集成电路互连,存储器芯片可包括存储器接口,诸如遵从联合电子设备工程委员会(Joint Electron Device EngineeringCouncil;JEDEC)标准或其变体中的任一者的存储器接口。一个或多个额外集成电路接着可连接至该存储器接口。因此,若该一个或多个额外集成电路连接至本公开的多个存储器芯片,则数据可经由该一个或多个额外集成电路在存储器芯片之间共享。另外或替代地,该一个或多个额外集成电路可包括用以连接至本公开的存储器芯片上的总线的总线,使得该一个或多个额外集成电路可与本公开的存储器芯片串接地执行代码。在这些实施例中,该一个或多个额外集成电路进一步辅助分布式处理,即使该额外集成电路可与本公开的存储器芯片在不同基板上亦如此。

此外,本公开的存储器芯片可排成阵列以便形成分布式处理器的阵列。例如,一个或多个总线可将存储器芯片770a连接至额外存储器芯片770b,如图7C中所描绘。在图7C的实施例中,存储器芯片770a包括处理器子单元与专用于每一处理器子单元的一个或多个对应的存储器组,例如:处理器子单元730a与存储器组720a相关联,处理器子单元730b与存储器组720b相关联,处理器子单元730e与存储器组720c相关联,且处理器子单元730f与存储器组720d相关联。总线将每一处理器子单元连接至其对应的存储器组。因此,总线740a将处理器子单元730a连接至存储器组720a,总线740b将处理器子单元730b连接至存储器组720b,总线740c将处理器子单元730e连接至存储器组720c,且总线740d将处理器子单元730f连接至存储器组720d。此外,总线750a将处理器子单元730a连接至处理器子单元750e,总线750b将处理器子单元730a连接至处理器子单元750b,总线750c将处理器子单元730b连接至处理器子单元750f,且总线750d将处理器子单元730e连接至处理器子单元750f。例如,如上文所描述,可使用存储器芯片770a的其他布置。

类似地,存储器芯片770b包括处理器子单元与专用于每一处理器子单元的一个或多个对应的存储器组,例如:处理器子单元730c与存储器组720e相关联,处理器子单元730d与存储器组720f相关联,处理器子单元730g与存储器组720g相关联,且处理器子单元730h与存储器组720h相关联。总线将每一处理器子单元连接至其对应的存储器组。因此,总线740e将处理器子单元730c连接至存储器组720e,总线740f将处理器子单元730d连接至存储器组720f,总线740g将处理器子单元730g连接至存储器组720g,且总线740h将处理器子单元730h连接至存储器组720h。此外,总线750g将处理器子单元730c连接至处理器子单元750g,总线750h将处理器子单元730d连接至处理器子单元750h,总线750i将处理器子单元730c连接至处理器子单元750d,且总线750j将处理器子单元730g连接至处理器子单元750h。例如,如上文所描述,可使用存储器芯片770b的其他布置。

存储器芯片770a及770b的处理器子单元可使用一个或多个总线来连接。因此,在图7C的实施例中,总线750e可将存储器芯片770a的处理器子单元730b与存储器芯片770b的处理器子单元730c连接,且总线750f可将存储器芯片770a的处理器子单元730f与存储器770b的处理器子单元730c连接。例如,总线750e可用作至存储器芯片770b的输入总线(且因此用作存储器芯片770a的输出总线),而总线750f可用作至存储器芯片770a的输入总线(且因此用作存储器芯片770b的输出总线),或反之亦然。替代地,总线750e及750f均可用作存储器芯片770a与770b之间的双向总线。

总线750e及750f可包括直接导线或可在高速连接上交错,以便缩减用于存储器芯片770a与集成电路770b之间的芯片间接口的接脚。此外,用于存储器芯片本身中的上文所描述的连接布置中的任一者可用以将存储器芯片连接至一个或多个额外集成电路。例如,存储器芯片770a及770b可使用完全块或部分块连接而非如图7C所展示仅使用两个总线来连接。

因此,尽管使用总线750e及750f来描绘,但架构760可包括更少总线或额外总线。例如,可使用处理器子单元730b与730c之间或处理器子单元730f与730c之间的单一总线。替代地,可使用例如处理器子单元730b与730d之间、处理器子单元730f与730d之间或其类似物的额外总线。

此外,尽管描绘为使用单一存储器芯片及一额外集成电路,但多个存储器芯片可使用如上文所解释的总线来连接。例如,如图7C的实施例中所描绘,存储器芯片770a、770b、770c及770d连接成一阵列。类似于上文所描述的存储器芯片,每个存储器芯片包括处理器子单元及专用存储器组。因此,此处不重复对这些组件的描述。

在图7C的实施例中,存储器芯片770a、770b、770c及770d连接成一回路。因此,总线750a连接存储器芯片770a与770d,总线750c连接存储器芯片770a与770b,总线750e连接存储器芯片770b与770c,且总线750g连接存储器芯片770c与770d。尽管存储器芯片770a、770b、770c及770d可利用完全块连接、部分块连接或其他连接布置来连接,但图7C的实施例允许存储器芯片770a、770b、770c及770d之间的更少接脚连接。

本公开的实施例可使用大小与常规处理器的共享存储器相比相对较大的专用存储器。使用专用存储器而非共享存储器允许继续获得效率增益而不会随着存储器增大而逐渐缩减。此允许诸如神经网络处理及数据库查询的存储器密集型任务比在常规处理器中更高效地执行,在常规处理器中,增大共享存储器的效率增益由于冯诺伊曼瓶颈而逐渐缩减。

例如,在本公开的分布式处理器中,安置于分布式处理器的基板上的存储器阵列可包括多个离散存储器组。离散存储器组中的每个可具有大于一兆字节(megabyte)的容量;以及安置于该基板上的处理阵列,该处理阵列包括多个处理器子单元。如上文所解释,该处理器子单元中的每个可与多个离散存储器组中的对应的专用存储器组相关联。在一些实施例中,多个处理器子单元可在空间上分布于存储器阵列内的多个离散存储器组当中。通过将至少一兆字节的专用存储器而非几兆字节的共享高速缓存用于大型CPU或GPU,本公开的分布式处理器获得在常规系统中由于CPU及GPU中的冯诺依曼瓶颈而不可能达成的效率。

不同存储器可用作专用存储器。例如,每一专用存储器组可包含至少一个DRAM组。替代地,每一专用存储器组可包含至少一个静态随机存取存储器组。在其他实施例中,不同类型的存储器可在单一硬件芯片上组合。

如上文所解释,每一专用存储器可为至少一兆字节。因此,每一专用存储器组可大小相同,或多个存储器组中的至少两个存储器组可具有不同大小。

此外,如上文所描述,该分布式处理器可包括:第一多个总线,其各将多个处理器子单元中的一个连接至一对应的专用存储器组;及第二多个总线,其各将多个处理器子单元中的一个连接至多个处理器子单元中的另一个。

如上文所解释,本公开的硬件芯片可使用软件而非硬件来管理数据传送。具体而言,因为总线上的传送、对存储器进行的读取及写入以及处理器子单元的计算的时序通过处理器子单元所执行的指令的子系列设定,所以本公开的硬件芯片可执行代码以防止总线上的冲突。因此,本公开的硬件芯片可避免常规地用以管理数据传送的硬件机构(诸如,芯片内的网络控制器、处理器子单元之间的封包剖析器及封包传送器、总线仲裁器、用以避免仲裁的多个总线,或其类似物)。

若本公开的硬件芯片常规地传送数据,则利用总线连接N个处理器子单元将需要由仲裁器控制的总线仲裁或宽MUX。反而,如上文所描述,本公开的实施例可在处理器子单元之间使用仅为导线、光学缆线或其类似物的总线,其中该处理器子单元个别地执行代码以避免总线上的冲突。因此,本公开的实施例可节省基板上的空间以及材料成本及效率损失(例如,由于仲裁导致的功率及时间消耗)。相较于使用先进先出(FIFO)控制器和/或信箱的其他架构,效率及空间增益甚至更大。

此外,如上文所解释,除一个或多个处理元件以外,每一处理器子单元也可包括一个或多个加速器。在一些实施例中,加速器可从总线而非从处理元件进行读取及写入。在这些实施例中,可通过允许加速器在处理元件执行一个或多个计算的相同循环期间传输数据来获得额外效率。然而,这些实施例需要用于加速器的额外材料。例如,可能需要额外晶体管以用于制造加速器。

代码也可考虑处理器子单元(例如,包括形成处理器子单元的部分的处理元件和/或加速器)的内部行为,包括时序及延时。例如,编译程序(如下文所描述)可执行当产生控制数据传送的指令子系列时考虑时序及延时的预处理。

在一个实施例中,多个处理器子单元可经指派计算神经网络层的任务,该神经网络层含有全部连接至较大多个神经元的前一层的多个神经元。假设前一层的数据均匀地散布在多个处理器子单元之间,执行该计算的一种方式可为配置每一处理器子单元,以依次将前一层的数据传输至主总线,且接着每一处理器子单元将此数据乘以子单元实施的对应神经元的权重。因为每一处理器子单元计算多于一个神经元,所以每一处理器子单元将数次传输前一层的数据,该次数等于神经元的数量。因此,每一处理器子单元的代码与用于其他处理器子单元的代码不相同,这是因为该子单元将在不同时间进行传输。

在一些实施例中,分布式处理器可包含基板(例如,诸如硅的半导体基板和/或诸如可挠性电路板的电路板),该基板具有:安置于该基板上的存储器阵列,该存储器阵列包括多个离散存储器组;及安置于该基板上的处理阵列,该处理阵列包括多个处理器子单元,如描绘于例如图7A及图7B中。如上文所解释,该处理器子单元中的每个可与多个离散存储器组中的对应的专用存储器组相关联。此外,如描绘于例如图7A及图7B中,分布式处理器还可包含多个总线,多个总线中的每个将多个处理器子单元中的一个连接至多个处理器子单元中的至少另一者。

如上文所解释,多个总线可用软件来控制。因此,多个总线可能不含时序硬件逻辑组件,使得在处理器子单元之间及跨越多个总线中的对应者的数据传送不受时序硬件逻辑组件控制。在一个实施例中,多个总线可能不含总线仲裁器,使得在处理器子单元之间及跨越多个总线中的对应者的数据传送不受总线仲裁器控制。

在一些实施例中,如描绘于例如图7A及图7B中,分布式处理器还可包含第二多个总线,该第二多个总线将多个处理器子单元中的一个连接至一对应的专用存储器组。类似于上文所描述的多个总线,第二多个总线可能不含时序硬件逻辑组件,使得处理器子单元与对应的专用存储器组之间的数据传送不受时序硬件逻辑组件控制。在一个实施例中,第二多个总线可能不含总线仲裁器,使得处理器子单元与对应的专用存储器组之间的数据传送不受总线仲裁器控制。

如本文中所使用,词组「不含」未必暗示诸如时序硬件逻辑组件(例如,总线仲裁器、仲裁树、FIFO控制器、信箱或其类似物)的组件的绝对不存在。这些组件仍可包括于描述为「不含」这些组件的硬件芯片中。反而,词组「不含」指硬件芯片的功能;也即,「不含」时序硬件逻辑组件的硬件芯片控制其数据传送的时序而不使用包括于其中的时序硬件逻辑组件(若存在)。例如,硬件芯片执行包括指令的子系列的代码,该指令控制该硬件芯片的处理器子单元之间的数据传送,即使该硬件芯片包括时序硬件逻辑组件作为防范由于所执行代码中的错误的冲突的辅助预防措施亦如此。

如上文所解释,多个总线可包含介于多个处理器子单元中的对应者之间的导线或光纤中的至少一个。因此,在一个实施例中,不含时序硬件逻辑组件的分布式处理器可仅包括导线或光纤,而无总线仲裁器、仲裁树、FIFO控制器、信箱或其类似物。

在一些实施例中,多个处理器子单元被配置为根据由多个处理器子单元执行的代码跨越多个总线中的至少一个传送数据。因此,如下文所解释,编译程序可组织指令的子系列,每一子系列包含由单处理器子单元执行的代码。该子系列指令可指示处理器子单元何时将数据传送至总线中的一个上及何时从总线取回数据。当该子系列以串接方式跨越分布式处理器执行时,处理器子单元之间的传送的时序可通过包括于该子系列中的用以传送及取回的指令来控制。因此,代码规定跨越多个总线中的至少一个的数据传送的时序。编译程序可产生要由单处理器子单元执行的代码。另外,编译程序可产生要由处理器子单元的群组执行的代码。在一些状况下,编译程序可将所有处理器子单元共同视为该处理器子单元系一个超处理器(例如,分布式处理器),且编译程序可产生用于由其定义的超处理器/分布式处理器执行的代码。

如上文所解释且如图7A及图7B中所描绘,多个处理器子单元可在空间上分布于存储器阵列内的多个离散存储器组当中。替代地,多个处理器子单元可聚集在基板的一个或多个区中,且多个存储器组可聚集在基板的一个或多个其他区中。在一些实施例中,可使用空间分布与聚集的组合,如上文所解释。

在一些实施例中,分布式处理器可包含基板(例如,包括硅的半导体基板和/或诸如可挠性电路板的电路板),该基板具有安置于其上的存储器阵列,该存储器阵列包括多个离散存储器组。处理阵列也可安置于基板上,该处理阵列包括多个处理器子单元,如描绘于例如图7A及图7B中。如上文所解释,该处理器子单元中的每个可与多个离散存储器组中的对应的专用存储器组相关联。此外,如描绘于例如图7A及图7B中,该分布式处理器还可包含多个总线,多个总线中的每个将多个处理器子单元中的一个连接至多个离散存储器组中的对应的专用存储器组。

如上文所解释,多个总线可用软件来控制。因此,多个总线可能不含时序硬件逻辑组件,使得处理器子单元与多个离散存储器组中的对应的专用离散存储器组之间及跨越多个总线中的对应者的数据传送不受时序硬件逻辑组件控制。在一个实施例中,多个总线可能不含总线仲裁器,使得在处理器子单元之间及跨越多个总线中的对应者的数据传送不受总线仲裁器控制。

在一些实施例中,如描绘于例如图7A及图7B中,分布式处理器还可包含第二多个总线,该第二多个总线将多个处理器子单元中的一个连接至多个处理器子单元中的至少另一者。类似于上文所描述的多个总线,第二多个总线可能不含时序硬件逻辑组件,使得处理器子单元与对应的专用存储器组之间的数据传送不受时序硬件逻辑组件控制。在一个实施例中,第二多个总线可能不含总线仲裁器,使得处理器子单元与对应的专用存储器组之间的数据传送不受总线仲裁器控制。

在一些实施例中,分布式处理器可使用软件时序组件与硬件时序组件的组合。例如,分布式处理器可包含基板(例如,包括硅的半导体基板和/或诸如可挠性电路板的电路板),该基板安置于其上的存储器阵列,该存储器阵列包括多个离散存储器组。处理阵列也可安置于基板上,该处理阵列包括多个处理器子单元,如描绘于例如图7A及图7B中。如上文所解释,该处理器子单元中的每个可与多个离散存储器组中的对应的专用存储器组相关联。此外,如描绘于例如图7A及图7B中,分布式处理器还可包含多个总线,多个总线中的每个将多个处理器子单元中的一个连接至多个处理器子单元中的至少另一者。此外,如上文所解释,多个处理器子单元可被配置为执行软件,该软件控制跨越多个总线的数据传送的时序,以避免与多个总线中的至少一个上的数据传送冲突。在此实施例中,软件可控制数据传送的时序,但传送本身可至少部分地由一个或多个硬件组件控制。

在这些实施例中,分布式处理器还可包含第二多个总线,该第二多个总线将多个处理器子单元中的一个连接至一对应的专用存储器组。类似于上文所描述的多个总线,多个处理器子单元可被配置为执行软件,该软件控制跨越该第二多个总线的数据传送的时序,以避免与该第二多个总线中的至少一个上的数据传送冲突。在此实施例中,如上文所解释,软件可控制数据传送的时序,但传送本身可至少部分地由一个或多个硬件组件控制。

如上文所解释,本公开的硬件芯片可跨越包括于形成硬件芯片的基板上的处理器子单元平行地执行代码。另外,本公开的硬件芯片可执行多任务处理。例如,本公开的硬件芯片可执行区域多任务处理,其中硬件芯片的处理器子单元的一个群组执行一个任务(例如,音频处理),而硬件芯片的处理器子单元的另一群组执行另一任务(例如,图像处理)。在另一实施例中,本公开的硬件芯片可执行时序多任务处理,其中硬件芯片的一个或多个处理器子单元在第一时间段期间执行一个任务且在第二时间段期间执行另一任务。也可使用区域多任务处理与时序多任务处理的组合,使得一个任务可在第一时间段期间指派给处理器子单元的第一群组,而另一任务可在第一时间段期间指派给处理器子单元的第二群组,此后,第三任务可在第二时间段期间指派给包括于第一群组及第二群组中的处理器子单元。

为了组织供在本公开的存储器芯片上执行的机器码,机器码可在存储器芯片的处理器子单元之间进行划分。例如,存储器芯片上的处理器可包含基板及安置于该基板上的多个处理器子单元。该存储器芯片还可包含安置于该基板上的对应的多个存储器组,多个处理器子单元中的每个连接至不被多个处理器子单元中的任何其他处理器子单元共享的至少一个专用存储器组。该存储器芯片上的每一处理器子单元可被配置为独立于其他处理器子单元执行一系列指令。每一系列指令可通过以下操作执行:根据定义该系列指令的代码而配置处理器子单元的一个或多个一般处理元件和/或根据在定义该系列指令的该代码中所提供的序列而启动处理器子单元的一个或多个特殊处理元件(例如,一个或多个加速器)。

因此,每一系列指令可定义要由单处理器子单元执行的一系列任务。单一任务可包含在由处理器子单元中的一个或多个处理元件的架构定义的指令集内的指令。例如,该处理器子单元可包括特定寄存器,且单一任务可将数据推送至寄存器上,从寄存器提取数据,对寄存器内的数据执行算术函数,对寄存器内的数据执行逻辑运算,或其类似物。此外,处理器子单元可针对任何数量的操作数来配置,诸如0操作数处理器子单元(也被称作「堆栈机」)、1操作数处理器子单元(也被称作累加机)、2操作数处理器子单元(诸如,RISC)、3操作数处理器子单元(诸如,复杂指令集计算机(CISC))或其类似物。在另一实施例中,处理器子单元可包括一个或多个加速器,且单一任务可启动一加速器以执行特定功能,诸如MAC功能、MAX功能、MAX-0功能或其类似物。

该系列指令还可以包括用于对存储器芯片的专用存储器组进行读取及写入的任务。例如,一任务可包括将一段数据写入至专用于执行该任务的处理器子单元的存储器组、从专用于执行该任务的处理器子单元的存储器组读取一段数据,或其类似物。在一些实施例中,读取及写入可由处理器子单元与存储器组的控制器串接地执行。例如,处理器子单元可通过将控制信号发送至控制器以执行读取或写入来执行读取或写入任务。在一些实施例中,该控制信号可包括用于读取及写入的特定地址。替代地,处理器子单元可听从存储器控制器以选择可用于读取及写入的地址。

另外或替代地,读取及写入可由一个或多个加速器与存储器组的控制器串接地执行。例如,该加速器可产生用于存储器控制器的控制信号,此类似于处理器子单元如何产生控制信号,如上文所描述。

在上文所描述的实施例中的任一者中,地址生成器也可用以引导对存储器组的特定地址的读取及写入。例如,该地址生成器可包含被配置为产生用于读取及写入的存储器地址的处理元件。该地址生成器可被配置为产生地址以便提高效率,例如通过将稍后计算的结果写入至与先前计算的不再需要的结果相同的地址。因此,地址生成器可响应于来自处理器子单元(例如,来自包括于其中的处理元件或来自其中的一个或多个加速器)的命令抑或与处理器子单元串接地产生用于存储器控制器的控制信号。另外或替代地,地址生成器可基于一些配置或寄存器产生地址,例如产生巢套循环结构,从而以某一图案在存储器中的某些地址上进行反复。

在一些实施例中,每一系列指令可包含定义对应的一系列任务的一组机器码。因此,上文所描述的该系列任务可囊封于包含该系列指令的机器码内。在一些实施例中,如下文关于图8所解释,该系列任务可由编译程序定义,该编译程序被配置为将较高阶系列的任务作为多个系列的任务分布于多个逻辑电路当中。例如,编译程序可基于较高阶系列的任务产生多个系列的任务,使得串接地执行对应的每一系列任务的处理器子单元执行与由较高阶系列的任务所概述的功能相同的功能。

如下文进一步所解释,较高阶系列的任务可包含用人类可读程序设计语言编写的一组指令。对应地,每一处理器子单元的该系列任务可包含较低阶系列任务,该任务中的每个包含以机器码编写的一组指令。

如上文关于图7A及图7B所解释,存储器芯片还可包含多个总线,每个总线将多个处理器子单元中的一个连接至多个处理器子单元中的至少另一者。此外,如上文所解释,多个总线上的数据传送可使用软件来控制。因此,跨越多个总线中的至少一个的数据传送可通过包括于连接至多个总线中的至少一个的处理器子单元中的该系列指令预定义。因此,包括于该系列指令中的任务中的一个可包括将数据输出至总线中的一个或从总线中的一个提取数据。这些任务可由处理器子单元的处理元件或由包括于处理器子单元中的一个或多个加速器执行。在后一实施例中,处理器子单元可执行计算或在相同循环中将控制信号发送至对应存储器组,在该循环期间,加速器从总线中的一个提取数据或将数据置放于总线中的一个上。

在一个实施例中,包括于连接至多个总线中的至少一个的处理器子单元中的该系列指令可包括发送任务,该发送任务包含针对连接至多个总线中的至少一个的处理器子单元的用以将数据写入至多个总线中的至少一个的命令。另外或替代地,包括于连接至多个总线中的至少一个的处理器子单元中的该系列指令可包括接收任务,该接收任务包含针对连接至多个总线中的至少一个的处理器子单元的用以从多个总线中的至少一个读取数据的命令。

除将代码分布在处理器子单元当中以外或替代将代码分布在处理器子单元当中,可在存储器芯片的存储器组之间划分数据。例如,如上文所解释,存储器芯片上的分布式处理器可包含安置于存储器芯片上的多个处理器子单元及安置于存储器芯片上的多个存储器组。多个存储器组中的每个可被配置为储存独立于储存在多个存储器组的其他者中的数据的数据,且多个处理器子单元中的一个可连接至多个存储器组当中的至少一个专用存储器组。例如,每一处理器子单元可存取专用于该处理器子单元的一个或多个对应存储器组的一个或多个存储器控制器,且其他处理器子单元不可存取这些对应的一个或多个存储器控制器。因此,储存于每个存储器组中的数据对于专用处理器子单元可为唯一的。此外,储存于每个存储器组中的数据可独立于储存在其他存储器组中的存储器,这是因为无存储器控制器可在存储器组之间共享。

在一些实施例中,如下文关于图8所描述,储存于多个存储器组中的每个中的数据可由编译程序定义,该编译程序被配置为将数据分布于多个存储器组当中。此外,该编译程序可被配置为使用分布于对应处理器子单元当中的多个较低阶任务将定义于较高阶系列的任务中的数据分布于多个存储器组当中。

如下文进一步所解释,较高阶系列的任务可包含用人类可读程序设计语言编写的一组指令。对应地,每一处理器子单元的该系列任务可包含较低阶系列任务,该任务中的每个包含以机器码编写的一组指令。

如上文关于图7A及图7B所解释,存储器芯片还可包含多个总线,每个总线将多个处理器子单元中的一个连接至多个存储器组当中的一个或多个对应的专用存储器组。此外,如上文所解释,多个总线上的数据传送可使用软件来控制。因此,跨越多个总线中的特定总线的数据传送可由连接至多个总线中的该特定总线的对应处理器子单元来控制。因此,包括于该系列指令中的任务中的一个可包括将数据输出至总线中的一个或从总线中的一个提取数据。如上文所解释,这些任务可由(i)处理器子单元的处理元件或(ii)包括于处理器子单元中的一个或多个加速器执行。在后一实施例中,处理器子单元可执行计算或在相同循环中使用将该处理器子单元连接至其他处理器子单元的总线,在该循环期间,加速器从连接至一个或多个对应的专用存储器组的总线中的一个提取数据或将数据置放于该总线中的一个上。

因此,在一个实施例中,包括于连接至多个总线中的至少一个的处理器子单元中的该系列指令可包括发送任务。该发送任务可包含针对连接至多个总线中的至少一个的处理器子单元的用以将数据写入至多个总线中的至少一个以供储存于一个或多个对应的专用存储器组中的命令。另外或替代地,包括于连接至多个总线中的至少一个的处理器子单元中的该系列指令可包括接收任务。该接收任务可包含针对连接至多个总线中的至少一个的处理器子单元的用以从多个总线中的至少一个读取数据以供储存于一个或多个对应的专用存储器组中的命令。因此,这些实施例中的发送任务及接收任务可包含控制信号,该控制信号沿着多个总线中的至少一个发送至一个或多个对应的专用存储器组中的一个或多个存储器控制器。此外,发送任务及接收任务可与由处理子单元的另一部分(例如,由处理子单元的一个或多个不同加速器)执行的计算或其他任务并发地由处理子单元的一个部分(例如,由处理子单元的一个或多个加速器)执行。此并发执行的实施例可包括MAC中继命令,其中接收、相乘及发送被串接地执行。

除将数据分布于存储器组当中以外,也可跨越不同存储器组复制数据的特定部分。例如,如上文所解释,存储器芯片上的分布式处理器可包含安置于存储器芯片上的多个处理器子单元及安置于存储器芯片上的多个存储器组。多个处理器子单元中的每个可连接至多个存储器组当中的至少一个专用存储器组,且多个存储器组中的每个存储器组可被配置为储存独立于储存在多个存储器组的其他者中的数据的数据。此外,储存于多个存储器组当中的一个特定存储器组中的数据中的至少一些可包含储存于多个存储器组中的至少另一存储器组中的数据的复制者。例如,该系列指令中所使用的数字、字符串或其他类型的数据可储存于专用于不同处理器子单元的多个存储器组中,而非从一个存储器组传送至存储器芯片中的其他处理器子单元。

在一个实施例中,平行字符串匹配可使用上文所描述的数据复制。例如,可将多个字符串与相同字符串进行比较。常规处理器可依序将多个字符串中的每一字符串与相同字符串进行比较。在本公开的硬件芯片上,可跨越存储器组复制相同字符串,使得处理器子单元可平行地将多个字符串中的分开字符串与所复制字符串进行比较。

在一些实施例中,如下文关于图8所描述,跨越多个存储器组当中的一个特定存储器组及多个存储器组中的至少另一存储器组复制的至少一些数据由编译程序定义,该编译程序被配置为跨越存储器组复制数据。此外,该编译程序可被配置为使用分布于对应处理器子单元当中的多个较低阶任务来复制至少一些数据。

数据的复制可适用于跨越不同计算重复使用数据的相同部分的特定任务。通过复制数据的这些部分,不同计算可分布于存储器芯片的处理器子单元当中以用于平行执行,而每一处理器子单元可将数据的该部分储存于专用存储器组中且从专用存储器组存取所储存部分(而非跨越连接处理器子单元的总线推送及提取数据的该部分)。在一个实施例中,跨越多个存储器组当中的一个特定存储器组及多个存储器组中的至少另一存储器组复制的至少一些数据可包含神经网络的权重。在此实施例中,该神经网络中的每一节点可由多个处理器子单元当中的至少一个处理器子单元定义。例如,每一节点可包含由定义该节点的至少一个处理器子单元执行的机器码。在此实施例中,权重的复制可允许每一处理器子单元执行机器码以至少部分地实现对应节点,同时仅存取一个或多个专用存储器组(而非与其他处理器子单元执行数据传送)。因为对专用存储器组进行的读取及写入的时序独立于其他处理器子单元,而处理器子单元之间的数据传送的时序需要时序同步(例如,使用软件,如上文所解释),所以复制存储器以避免处理器子单元之间的数据传送可进一步提高总体执行的效率。

如上文关于图7A及图7B所解释,存储器芯片还可包含多个总线,每个总线将多个处理器子单元中的一个连接至多个存储器组当中的一个或多个对应的专用存储器组。此外,如上文所解释,多个总线上的数据传送可使用软件来控制。因此,跨越多个总线中的特定总线的数据传送可由连接至所述多个总线中的该特定总线的对应处理器子单元来控制。因此,包括于该系列指令中的任务中的一个可包括将数据输出至总线中的一个或从总线中的一个提取数据。如上文所解释,这些任务可由(i)处理器子单元的处理元件或(ii)包括于处理器子单元中的一个或多个加速器执行。如上文进一步所解释,这些任务可包括包含控制信号的发送任务和/或接收任务,该控制信号沿着多个总线中的至少一个发送至一个或多个对应的专用存储器组中的一个或多个存储器控制器。

图8描绘用于编译一系列指令以供在例如如图7A及图7B中所描绘的本公开的示例性存储器芯片上执行的方法800的流程图。方法800可通过任何常规处理器(无论系通用抑或专用的)实施。

方法800可作为形成编译程序的计算机程序的一部分执行。如本文中所使用,「编译程序」指将较高级语言(例如,程序性语言,诸如C、FORTRAN、BASIC或其类似物;面向对象式语言,诸如Java、C++、Pascal、Python或其类似物;等等)转换成较低级语言(例如,组合代码、目标代码、机器码或其类似物)的任何计算机程序。编译程序可允许人类以人类可读语言来程序设计一系列指令,接着将该人类可读语言转换成机器可执行语言。

在步骤810处,处理器可将与该系列指令相关联的任务指派给处理器子单元中的不同处理器子单元。例如,该系列指令可分成子群组,该子群组要跨越处理器子单元平行地执行。在一个实施例中,可将神经网络分成其节点,且可将一个或多个节点指派给分开的处理器子单元。在此实施例中,每一子群组可包含跨越不同层连接的多个节点。因此,处理器子单元可实施来自神经网络的第一层的节点、来自连接至由相同处理器子单元实施的来自第一层的节点的第二层的节点,及类似节点。通过基于节点的连接来指派节点,可缩减处理器子单元之间的数据传送,此可导致效率提高,如上文所解释。

如上文图7A及图7B中所描绘而解释,处理器子单元可在空间上分布于安置于存储器芯片上的多个存储器组当中。因此,任务的指派可至少部分地为空间划分以及逻辑划分。

在步骤820处,处理器可产生用以在存储器芯片的成对的处理器子单元之间传送数据的任务,每一对处理器子单元由一总线连接。例如,如上文所解释,该数据传送可使用软件来控制。因此,处理器子单元可被配置为在同步时间将数据推送于总线上及提取总线上的数据。所产生的任务可因此包括用于执行数据的此同步推送及提取的任务。

如上文所解释,步骤820可包括预处理以考虑处理器子单元的内部行为,包括时序及延时。例如,处理器可使用处理器子单元的已知时间及延时(例如,将数据推送至总线的时间、从总线提取数据的时间、计算与推送或提取之间的延时,或其类似物)以确保所产生的任务同步。因此,包含由一个或多个处理器子单元进行的至少一次推送及由一个或多个处理器子单元进行的至少一次提取的数据传送可同时发生,而不会由于处理器子单元之间的时序差、处理器子单元的延时或其类似物而引起延迟。

在步骤830处,处理器可将所指派及产生的任务分组成子系列指令的多个群组。例如,该子系列指令可各包含供单处理器子单元执行的一系列任务。因此,子系列指令的多个群组中的每个可对应于多个处理器子单元中的不同处理器子单元。因此,步骤810、820及830可导致将该系列指令分成子系列指令的多个群组。如上文所解释,步骤820可确保不同群组之间的任何数据传送同步。

在步骤840处,处理器可产生对应于子系列指令的多个群组中的每个的机器码。例如,可将表示子系列指令的较高阶代码转换成可由对应处理器子单元执行的较低阶代码,诸如机器码。

在步骤850处,处理器可根据划分将对应于子系列指令的多个群组中的每个的所产生机器码指派给多个处理器子单元中的对应处理器子单元。例如,处理器可用对应处理器子单元的识别符来标记每一子系列指令。因此,当将子系列指令上传至存储器芯片以供执行(例如,由图3A的主机350)时,每一子系列可配置一正确的处理器子单元。

在一些实施例中,将与该系列指令相关联的任务指派给处理器子单元中的不同处理器子单元可至少部分地取决于存储器芯片上的处理器子单元中的两者或多于两者之间的空间接近性。例如,如上文所解释,可通过缩减处理器子单元之间的数据传送的数量来提高效率。因此,处理器可将跨越处理器子单元中的多于两者移动数据的数据传送减至最少。因此,处理器可结合一个或多个优化算法(诸如,贪婪算法)使用存储器芯片的已知布局,以便将子系列指派给处理器子单元,其指派方式使邻近传送达至最大(至少区域地)且使至非相邻处理器子单元的传送减至最少(至少区域地)。

方法800可包括针对本公开的存储器芯片的进一步优化。例如,处理器可基于划分将与该系列指令相关联的数据分组且根据该分组将数据指派给存储器组。因此,该存储器组可保存用于指派给每个存储器组所专用于的每一处理器子单元的子系列指令的数据。

在一些实施例中,将数据分组可包括判定在存储器组中的两者或多于两者中复制的数据的至少一部分。例如,如上文所解释,可跨越多于一个子系列指令使用一些数据。此数据可跨越专用于经指派不同子系列指令的多个处理器子单元的存储器组复制。此优化可进一步缩减跨越处理器子单元的数据传送。

可将方法800的输出输入至本公开的存储器芯片以供执行。例如,一存储器芯片可包含多个处理器子单元及对应的多个存储器组,每一处理器子单元连接至专用于该处理器子单元的至少一个存储器组,且该存储器芯片的该处理器子单元可被配置为执行由方法800产生的机器码。如上文关于图3A所解释,主机350可将由方法800产生的机器码输入至处理器子单元以供执行。

在常规存储器组中,控制器设置在组层级处。每一组包括多个垫,所述多个垫通常以矩形方式布置,但可按任何几何形状布置。每一垫包括多个存储器胞元,所述多个存储器胞元还通常以矩形方式布置,但可按任何几何形状布置。每一胞元可储存单一数据比特(例如,取决于该胞元保持在高电压抑或低电压下)。

此常规架构的实施例描绘于图9及图10中。如图9中所展示,在组层级处,多个垫(例如,垫930-1、930-2、940-1及940-2)可形成组900。在常规矩形组织中,可跨越全局字线(例如,字线950)及全局比特线(例如,比特线960)控制组900。因此,行解码器910可基于传入控制信号(例如,对从地址读取的请求、对写入至地址的请求或其类似物)选择正确字线,且全局感测放大器920(和/或全局列解码器,图9中未展示)可基于该控制信号选择正确比特线。放大器920也可在读取操作期间放大来自选定组的任何电压电平。尽管描绘为将行解码器用于初始选择且沿着列执行放大,但组可另外或替代地将列解码器用于初始选择且沿着行执行放大。

图10描绘垫1000的实施例。例如,垫1000可形成诸如图9的组900的存储器组的一部分。如图10中所描绘,多个胞元(例如,胞元1030-1、1030-2及1030-3)可形成垫1000。每一胞元可包含储存至少一个数据比特的电容器、晶体管或其他电路系统。例如,一胞元可包含电容器或可包含正反器(flip-flop),该电容器经充电以表示「1」且放电以表示「0」,该正反器具有表示「1」的第一状态及表示「0」的第二状态。常规垫可包含例如512个比特×512个比特。在垫1000形成MRAM、ReRAM或其类似物的一部分的实施例中,一胞元可包含晶体管、电阻器、电容器或用于隔离储存至少一个数据比特的材料的离子或一部分的其他机构。例如,一胞元可包含具有表示「1」的第一状态及表示「0」的第二状态的电解质离子、硫族化物玻璃的一部分,或其类似物。

如图10中进一步所描绘,在常规矩形组织中,可跨越区域字线(例如,字线1040)及区域比特线(例如,比特线1050)控制垫1000。因此,字线驱动器(例如,字线驱动器1020-1、1020-2、……、1020-x)可基于来自与存储器组(垫1000形成该存储器组的一部分)相关联的控制器的控制信号(例如,对从地址读取的请求、对写入至地址的请求、刷新信号)而控制选定字线以执行读取、写入或刷新。此外,区域感测放大器(例如,区域放大器1010-1、1010-2、……、1010-x)和/或区域列解码器(图10中未展示)可控制选定比特线以执行读取、写入或刷新。该区域感测放大器也可在读取操作期间放大来自选定胞元的任何电压电平。尽管描绘为将字线驱动器用于初始选择且沿着列执行放大,但垫可替代地将比特线驱动器用于初始选择且沿着行执行放大。

如上文所解释,复制大量垫以形成存储器组。可将存储器组群聚以形成存储器芯片。例如,存储器芯片可包含八个至三十二个存储器组。因此,使处理器子单元与常规存储器芯片上的存储器组配对可产生仅八个至三十二个处理器子单元。因此,本公开的实施例可包括具有额外子组阶层的存储器芯片。本公开的这些存储器芯片可接着包括具有用作与处理器子单元配对的专用存储器组的存储器子组的处理器子单元,以允许较大数量的子处理器,此可接着达成存储器内计算的较高平行性及效能。

在本公开的一些实施例中,组900的全局行解码器及全局感测放大器可用子组控制器来替换。因此,存储器组的控制器可将控制信号引导至适当的子组控制器,而非将控制信号发送至存储器组的全局行解码器及全局感测放大器。引导可动态地加以控制或可为硬联机的(例如,经由一个或多个逻辑门)。在一些实施例中,熔断器可用以指示每一子组或垫的控制器是否阻断控制信号或传递控制信号至适当的子组或垫。在这些实施例中,可因此使用熔断器来撤销启动故障子组。

在这些实施例中的一个实施例中,一存储器芯片可包括多个存储器组,每个存储器组具有一组控制器及多个存储器子组,每个存储器子组具有一子组行解码器及一子组列解码器以允许对该存储器子组上的位置进行读取及写入。每一子组可包含多个存储器垫,每个存储器垫具有多个存储器胞元且可具有在内部的区域行解码器、列解码器和/或区域感测放大器。该子组行解码器及该子组列解码器可处理用于子组存储器上的存储器内计算的来自组控制器或来自子组处理器子单元的读取及写入请求,如下文所描述。另外,每个存储器子组可进一步具有一控制器,该控制器被配置为判定处理来自组控制器的读取请求及写入请求和/或将读取请求及写入请求转送至下一层级(例如,垫上的行解码器及列解码器的下一层级),抑或阻断该请求,例如以允许内部处理元件或处理器子单元存取存储器。在一些实施例中,该组控制器可同步至系统时钟。然而,该子组控制器可不同步至系统时钟。

如上文所解释,子组的使用可允许在存储器芯片中包括比在处理器子单元与常规芯片的存储器组配对的情况下更大数量的处理器子单元。因此,每一子组可进一步具有使用子组作为专用存储器的处理器子单元。如上文所解释,该处理器子单元可包含RISC、CISC或其他通用处理子单元和/或可包含一个或多个加速器。另外,该处理器子单元可包括地址生成器,如上文所解释。在上文所描述的实施例中的任一者中,每一处理器子单元可被配置为使用专用于该处理器子单元的子组的行解码器及列解码器而不使用组控制器来存取该子组。与子组相关联的处理器子单元也可处置存储器垫(包括下文所描述的解码器及存储器冗余机构)和/或判定是否转送且因此处置来自上部层级(例如,组层级或存储器层级)的读取或写入请求。

在一些实施例中,子组控制器还可以包括储存子组的状态的寄存器。因此,在该寄存器指示该子组处于使用中时,若该子组控制器接收到来自存储器控制器的控制信号,则该子组控制器可传回错误。在每一子组还包括一处理器子单元的实施例中,若该子组中的该处理器子单元正存取与来自存储器控制器的外部请求冲突的存储器,则该寄存器可指示错误。

图11展示使用子组控制器的存储器组的另一实施例的实施例。在图11的实施例中,组1100具有行解码器1110、列解码器1120,及具有子组控制器(例如,控制器1130a、1130b及1130c)的多个存储器子组(例如,子组1170a、1170b及1170c)。该子组控制器可包括地址解算器(例如,解算器1140a、1140b及1140c),该地址解算器可判定是否将请求传递至由子组控制器控制的一个或多个子组。

该子组控制器还可以包括一个或多个逻辑电路(例如,逻辑1150a、1150b及1150c)。例如,包含一个或多个处理元件的逻辑电路可允许执行诸如刷新子组中的胞元、清除子组中的胞元或其类似物的一个或多个操作而无需来自组1100外部的处理请求。替代地,逻辑电路可包含处理器子单元,如上文所解释,使得处理器子单元具有由子组控制器控制的任何子组作为对应的专用存储器。在图11的实施例中,逻辑1150a可具有子组1170a作为对应的专用存储器,逻辑1150b可具有子组1170b作为对应的专用存储器,且逻辑1150c可具有子组1170c作为对应的专用存储器。在上文所描述的实施例中的任一者中,逻辑电路可具有至子组的总线,例如,总线1131a、1131b或1131c。如图11中进一步所描绘,该子组控制器可各包括多个解码器,诸如子组行解码器及子组列解码器,以允许处理元件或处理器子单元或发布命令的较高阶存储器控制器对存储器子组上的地址进行读取及写入。例如,子组控制器1130a包括解码器1160a、1160b及1160c,子组控制器1130b包括解码器1160d、1160e及1160f,且子组控制器1130c包括解码器1160g、1160h及1160i。基于来自组行解码器1110的请求,子组控制器可使用包括于子组控制器中的解码器来选择字线。所描述系统可允许子组的处理元件或处理器子单元在不中断其他组及甚至其他子组的情况下存取存储器,藉此允许每一子组处理器子单元与其他子组处理器子单元平行地执行存储器计算。

此外,每一子组可包含多个存储器垫,每个存储器垫具有多个存储器胞元。例如,子组1170a包括垫1190a-1、1190a-2、……、1190a-x;子组1170b包括垫1190b-1、1190b-2、……、1190b-x;且子组1170c包括垫1190c-1、1190c-2、……、1190c-3。如图11中进一步所描绘,每一子组可包括至少一个解码器。例如,子组1170a包括解码器1180a,子组1170b包括解码器1180b,且子组1170c包括解码器1180c。因此,组列解码器1120可基于外部请求而选择全局比特线(例如,比特线1121a或1121b),而由组行解码器1110选择的子组可使用其列解码器基于来自子组所专用于的逻辑电路的区域请求而选择区域比特线(例如,比特线1181a或1181b)。因此,每一处理器子单元可被配置为使用子组的行解码器及列解码器来存取专用于该处理器子单元的子组而无需使用组行解码器及组列解码器。因此,每一处理器子单元可存取对应子组而不会中断其他子组。此外,当对子组的请求在处理器子单元外时,子组解码器可向组解码器反映所存取的数据。替代地,在每一子组仅具有一行存储器垫的实施例中,区域比特线可为垫的比特线,而非子组的比特线。

可使用以下实施例的组合:使用子组行解码器及子组列解码器的实施例;及图11中所描绘的实施例。例如,可消除组行解码器,但保留组列解码器且使用区域比特线。

图12展示具有多个垫的存储器子组1200的实施例的实施例。例如,子组1200可表示图11的子组1100的一部分或可表示存储器组的替代实施。在图12的实施例中,子组1200包括多个垫(例如,垫1240a及1240b)。此外,每一垫可包括多个胞元。例如,垫1240a包括胞元1260a-1、1260a-2、……、1260a-x,且垫1240b包括胞元1260b-1、1260b-2、……、1260b-x。

每一垫可经指派将指派给垫的存储器胞元的地址的范围。这些地址可在生产时配置,使得垫可到处移动且使得故障垫可被撤销启动且保持未使用(例如,使用一个或多个熔断器,如下文进一步所解释)。

子组1200接收来自存储器控制器1210的读取及写入请求。尽管图12中未描绘,但来自存储器控制器1210的请求可经由子组1200的控制器来筛选且引导至子组1200的适当垫以进列地址解算。替代地,来自存储器控制器1210的请求的地址的至少一部分(例如,较高比特)可传输至子组1200的所有垫(例如,垫1240a及1240b),使得仅当垫的经指派地址范围包括命令中所指定的地址时,每一垫方可处理完整地址及与该地址相关联的请求。类似于上文所描述的子组引导,垫判定可动态地加以控制或可为硬联机的。在一些实施例中,熔断器可用以判定每一垫的地址范围,以还允许通过指派不合法地址范围来停用故障垫。垫可另外或替代地通过其他常用方法或熔断器的连接来停用。

在上文所描述的实施例中的任一者中,子组的每一垫可包括用于选择垫中的字线的行解码器(例如,行解码器1230a或1230b)。在一些实施例中,每一垫还可以包括熔断器及比较器(例如,1220a及1220b)。如上文所描述,比较器可允许每一垫判定是否处理传入请求,且熔断器可允许每一垫在发生故障的情况下撤销启动。替代地,可使用组和/或子组的行解码器,而非使用每一垫中的行解码器。

此外,在上文所描述的实施例中的任一者中,包括于适当垫中的列解码器(例如,列解码器1250a或1250b)可选择区域比特线(例如,比特线1251或1253)。区域比特线可连接至存储器组的全局比特线。在子组具有其自身的区域比特线的实施例中,胞元的区域比特线可进一步连接至子组的区域比特线。因此,可经由胞元的列解码器(和/或感测放大器)、接着经由子组的列解码器(和/或感测放大器)(在包括子组列解码器和/或感测放大器的实施例中)且接着经由组的列解码器(和/或感测放大器)来读取选定胞元中的数据。

垫1200可经复制及排成阵列以形成存储器组(或存储器子组)。例如,本公开的存储器芯片可包含多个存储器组,每个存储器组具有多个存储器子组,且每个存储器子组具有用于处理对存储器子组上的位置进行的读取及写入的子组控制器。此外,每个存储器子组可包含多个存储器垫,每个存储器垫具有多个存储器胞元且具有一垫行解码器及一垫列解码器(例如,如图12中所描绘)。该垫行解码器及该垫列解码器可处理来自子组控制器的读取及写入请求。例如,该垫解码器可接收所有请求且基于每一垫的已知地址范围判定(例如,使用比较器)是否处理请求,或该垫解码器可基于子组(或组)控制器对垫的选择而仅接收在已知地址范围内的请求。

除使用处理子单元来共享数据以外,本公开的存储器芯片中的任一者也可使用存储器控制器(或子组控制器或垫控制器)来共享数据。例如,本公开的存储器芯片可包含:多个存储器组(例如,SRAM组、DRAM组或其类似物),每个存储器组具有一组控制器、一行解码器及一列解码器,以允许对该存储器组上的位置进行读取及写入;以及多个总线,其将多个组控制器中的每一控制器连接至多个组控制器中的至少一个其他控制器。所述多个总线可类似于如上文所描述的连接处理子单元的总线,但所述多个总线直接地而非经由处理子单元来连接该组控制器。此外,尽管描述为连接组控制器,但总线可另外或替代地连接符组控制器和/或垫控制器。

在一些实施例中,可在不中断连接至一个或多个处理器子单元的存储器组的主总线上的数据传送的情况下存取所述多个总线。因此,存储器组(或子组)可在与将数据传输至不同存储器组(或子组)或从不同存储器组(或子组)传输数据相同的时钟循环中将数据传输至对应处理器子单元或从对应处理器子单元传输数据。在每一控制器连接至多个其他控制器的实施例中,该控制器可能可配置以用于选择其他控制器中的另一个用于发送或接收数据。在一些实施例中,每一控制器可连接至至少一个相邻控制器(例如,空间邻近控制器对可彼此连接)。

本公开大体上系有关于具有用于芯片上数据处理的主要逻辑部分的存储器芯片。该存储器芯片可包括冗余逻辑部分,该冗余逻辑部分可替换有缺陷的主要逻辑部分以提高芯片的制造良率。因此,该芯片可包括片上组件,该片上组件允许基于对该逻辑部分的个别测试来配置存储器芯片中的逻辑区块。该芯片的此特征可提高良率,这是因为具有专用于逻辑部分的较大面积的存储器芯片更容易发生制造故障。例如,具有大冗余逻辑部分的DRAM存储器芯片可容易发生制造问题,此降低良率。然而,实施冗余逻辑部分可导致提高良率及可靠性,这是因为该实施使DRAM存储器芯片的制造商或使用者能够在维持高平行性的同时接通或断开全部逻辑部分。应注意,在此处及贯穿本公开,可识别某些存储器类型(诸如,DRAM)的实施例,以便促进解释所公开实施例。然而,应理解,在这些情况下,识别的存储器类型并不意欲为限制性的。确切而言,诸如DRAM、快闪存储器、SRAM、ReRAM、PRAM、MRAM、ROM或任何其他存储器的存储器类型可与所公开实施例共同使用,即使在本公开的某一章节中特定地识别较少实施例亦如此。

图13为符合所公开实施例的示例性存储器芯片1300的功能方块图。存储器芯片1300可实施为DRAM存储器芯片。存储器芯片1300也可实施为任何类型之易失性或非易失性存储器,诸如快闪存储器、SRAM、ReRAM、PRAM和/或MRAM等。存储器芯片1300可包括基板1301,该基板中布置有地址管理器1302、包括多个存储器组1304(a,a)至1304(z,z)的存储器阵列1304、存储器逻辑1306、商业逻辑1308及冗余商业逻辑1310。存储器逻辑1306及商业逻辑1308可构成主要逻辑区块,而冗余商业逻辑1310可构成冗余区块。此外,存储器芯片1300可包括配置开关,该配置开关可包括撤销启动开关1312及启动开关1314。撤销启动开关1312及启动开关1314也可安置于基板1301中。在本申请案中,存储器逻辑1306、商业逻辑1308及冗余商业逻辑1310也可统称为「逻辑区块」。

地址管理器1302可包括行和列解码器或其他类型的存储器辅助设备。替代地或另外,地址管理器1302可包括微控制器或处理单元。

在一些实施例中,如图13中所展示,存储器芯片1300可包括单一存储器阵列1304,该存储器阵列可将多个存储器区块以二维阵列布置在基板1301上。然而,在其他实施例中,存储器芯片1300可包括多个存储器阵列1304,且存储器阵列1304中的每个可按不同配置布置存储器区块。例如,存储器阵列中的至少一个中的存储器区块(也被称为存储器组)可按径向分布配置以促进地址管理器1302或存储器逻辑1306至存储器区块之间的路由。

商业逻辑1308可用以进行与用以管理存储器本身的逻辑无关的应用程序的存储器内计算。例如,商业逻辑1308可实施与AI相关的功能,诸如用作启动功能的浮点、整数或MAC运算。此外,商业逻辑1308可实施数据库相关功能,如最小值、最大值、排序、计数以及其他。存储器逻辑1306可执行与存储器管理相关的任务,包括(但不限于)读取、写入及刷新操作。因此,可在组层级、垫层级或垫群组层级中的一个或多个中添加商业逻辑。商业逻辑1308可具有一个或多个地址输出及一个或多个数据输入/输出。例如,商业逻辑1308可通过至地址管理器1302的行\列线来寻址。然而,在某些实施例中,逻辑区块可另外或替代地经由数据输入\输出来寻址。

冗余商业逻辑1310可为商业逻辑1308的再制品。此外,冗余商业逻辑1310可连接至撤销启动开关1312和/或启动开关1314,其可包括小的熔断器\反熔断器,且用于逻辑停用或启用实例中的一个(例如,预设连接的实例)且启用其他逻辑区块中的一个(例如,预设断开的实例)。在一些实施例中,如关于图15进一步所描述,区块的冗余在诸如商业逻辑1308的逻辑区块内可为区域的。

在一些实施例中,存储器芯片1300中的逻辑区块可通过专用总线连接至存储器阵列1304的子集。例如,存储器逻辑1306、商业逻辑1308及冗余商业逻辑1310的集合可连接至存储器阵列1304中的第一行存储器区块(也即,存储器区块1304(a,a)至1304(a,z))。专用总线可允许相关联逻辑区块快速地存取存储器区块的数据,而不要求经由例如地址管理器1302开放通信线。

多个主要逻辑区块中的每个可连接至多个存储器组1304中的至少一个。另外,诸如冗余商业区块1310的冗余区块可连接至存储器实例1304(a,a)至1304(z,z)中的至少一个。冗余区块可再制多个主要逻辑区块中的至少一个,诸如存储器逻辑1306或商业逻辑1308。撤销启动开关1312可连接至所述多个主要逻辑区块中的至少一个,且启动开关1314可连接至所述多个冗余区块中的至少一个。

在这些实施例中,在侦测到与多个主要逻辑区块中的一个(存储器逻辑1306和/或商业逻辑1308)相关联的故障后,撤销启动开关1312可被配置为停用多个主要逻辑区块中的该者。同时,启动开关1314可被配置为启用多个冗余区块中的再制多个主要逻辑区块中的一个的冗余区块,诸如冗余逻辑区块1310。

此外,可统称为「配置开关」的启动开关1314及撤销启动开关1312可包括用以配置开关的状态的外部输入。例如,启动开关1314可被配置为使得外部输入中的启动信号产生闭合开关条件,而撤销启动开关1312可被配置为使得外部输入中的撤销启动信号产生断开开关条件。在一些实施例中,1300中的所有配置开关可默认为撤销启动,且在测试指示相关联逻辑区块起作用且信号施加于外部输入中之后变得被启动或启用。替代地,在一些状况下,1300中的所有配置开关可默认为经启用,且可在测试指示相关联逻辑区块不起作用且撤销启动信号施加于外部输入中之后被撤销启动或停用。

无关于最初启用抑或停用配置开关,在侦测到与相关联逻辑区块相关联的故障后,配置开关可停用相关联逻辑区块。在最初启用配置开关的状况下,配置开关的状态可改变至停用,以便停用相关联逻辑区块。在最初停用配置开关的状况下,配置开关的状态可保持在其停用状态中,以便停用相关联逻辑区块。例如,可操作性测试的结果可指示,某一逻辑区块不操作或该逻辑区块不能在某些规格内操作。在这些状况下,可停用逻辑区块,可能不启用其对应配置开关。

在一些实施例中,配置开关可连接至两个或多于两个逻辑区块,且可被配置为在不同逻辑区块之间进行选择。例如,配置开关可连接至商业逻辑区块1308及冗余逻辑区块1310两者。配置开关可启用冗余逻辑区块1310,同时停用商业逻辑1308。

替代地或另外,多个主要逻辑区块中的至少一个(存储器逻辑1306和/或商业逻辑1308)可通过第一专用连接件连接至多个存储器组或存储器实例1304的子集。接着,多个冗余区块中的再制多个主要逻辑区块中的至少一个的至少一个冗余区块(诸如,冗余商业逻辑1310)可通过第二专用连接件连接至相同多个存储器组或实例1304的子集。

此外,存储器逻辑1306可具有不同于商业逻辑1308的功能及能力。例如,虽然存储器逻辑1306可经设计以实现存储器组1304中的读取及写入操作,但商业逻辑1308可经设计以执行存储器内计算。因此,若商业逻辑1308包括第一商业逻辑区块且商业逻辑1308包括第二商业逻辑区块(如冗余商业逻辑1310),则有可能将有缺陷的商业逻辑1308断开且重新连接冗余商业逻辑1310使得不会失去任何能力。

在一些实施例中,配置开关(包括撤销启动开关1312及启动开关1314)可用熔断器、反熔断器或可编程设备(包括可一次性可编程设备)或其他形式的非易失性存储器来实施。

图14为符合所公开实施例的示例性冗余逻辑区块集合1400的功能方块图。在一些实施例中,冗余逻辑区块集合1400可安置于基板1301中。冗余逻辑区块集合1400可包括分别连接至开关1312及1314的商业逻辑1308及冗余商业逻辑1310中的至少一个。此外,商业逻辑1308及冗余商业逻辑1310可连接至地址总线1402及数据总线1404。

在一些实施例中,如图14中所展示,开关1312及1314可将逻辑区块连接至时钟节点。以此方式,配置开关可将逻辑区块与时钟信号接合或脱离,以有效地启动或撤销启动逻辑区块。然而,在其他实施例中,开关1312及1314可将逻辑区块连接至其他节点以用于启动或撤销启动。例如,配置开关可将逻辑区块连接至电压供应节点(例如,VCC)或连接至接地节点(例如,GND)或时钟信号。以此方式,逻辑区块可由配置开关启用或停用,这是因为该配置开关可产生开路或截断逻辑区块供电。

在一些实施例中,如图14中所展示,地址总线1402及数据总线1404可在逻辑区块的相对侧中,该逻辑区块并联地连接至该总线中的每个。以此方式,可通过逻辑区块集合1400促进不同片上组件的路由。

在一些实施例中,多个撤销启动开关1312中的每个将多个主要逻辑区块中的至少一个与时钟节点耦接,且多个启动开关1314中的每个可将多个冗余区块中的至少一个与时钟节点耦接,以允许连接\断开时钟以作为简单的启动\撤销启动机制。

冗余逻辑区块集合1400的冗余商业逻辑1310允许设计者基于面积及路由而选择值得复制的区块。例如,芯片设计者可选择较大区块进行复制,这是因为较大区块可更容易出错。因此,芯片设计者可决定复制大的逻辑区块。另一方面,设计者可偏好复制较小逻辑区块,这是因为较小逻辑区块容易复制而无显着的空间损失。此外,使用图14中的配置,设计者可容易取决于每个区域的错误的统计数据来选择复制逻辑区块。

图15为符合所公开实施例的示例性逻辑区块1500的功能方块图。该逻辑区块可为商业逻辑1308和/或冗余商业逻辑1310。然而,在其他实施例中,示例性逻辑区块可描述存储器逻辑1306或存储器芯片1300的其他组件。

逻辑区块1500呈现在小型处理器管线内使用逻辑冗余的又一实施例。逻辑区块1500可包括寄存器1508、取得电路1504、解码器1506及写回电路1518。此外,逻辑区块1500可包括计算单元1510及复制计算单元1512。然而,在其他实施例中,逻辑区块1500可包括其他单元,该其他单元不包含控制器管线,但包括包含所需商业逻辑的分散的处理元件。

计算单元1510及复制计算单元1512可包括能够执行数字计算的数字电路。例如,计算单元1510及复制计算单元1512可包括算术逻辑单元(ALU)以对二进制数执行算术及逐比特操作。替代地,计算单元1510及复制计算单元1512可包括对浮点数进行操作的浮点单元(FPU)。此外,在一些实施例中,计算单元1510及复制计算单元1512可实施数据库相关功能,如最小值、最大值、计数及比较操作以及其他。

在一些实施例中,如图15中所展示,计算单元1510及复制计算单元1512可连接至开关电路1514及1516。当经启动时,该开关电路可启用或停用该计算单元。

在逻辑区块1500中,复制计算单元1512可再制计算单元1510。此外,在一些实施例中,寄存器1508、取得电路1504、解码器1506及写回电路1518(统称为区域逻辑单元)的大小可小于计算单元1510。因为较大元件更容易在制造期间出现问题,所以设计者可决定复制较大单元(诸如,计算单元1510)而非复制较小单元(诸如,区域逻辑单元)。然而,取决于历史良率及错误率,除复制大单元(或整个区块)以外或替代复制大单元(或整个区块),设计者也可选择复制区域逻辑单元。例如,计算单元1510可比寄存器1508、取得电路1504、解码器1506及写回电路1518大,且因此更容易出错。设计者可选择复制计算单元1510而非复制逻辑区块1500中的其他元件或整个区块。

逻辑区块1500可包括多个区域配置开关,所述多个区域配置开关中的每个连接至计算单元1510或复制计算单元1512中的至少一个中的至少一者。当侦测到计算单元1510中的故障时,区域配置开关可被配置为停用计算单元1510且启用复制计算单元1512。

图16展示符合所公开实施例的与总线连接的示例性逻辑区块的功能方块图。在一些实施例中,逻辑区块1602(其可表示存储器逻辑1306、商业逻辑1308或冗余商业逻辑1310)可彼此独立,可经由总线连接,且可通过特定地寻址该逻辑区块而在外部启动。例如,存储器芯片1300可包括许多逻辑区块,每个逻辑区块具有一ID号。然而,在其他实施例中,逻辑区块1602可表示由存储器逻辑1306、商业逻辑1308或冗余商业逻辑1310中的若干个(一个或多个)构成的较大单元。

在一些实施例中,逻辑区块1602中的每个可与其他逻辑区块1602冗余。所有区块可作为主要或冗余区块来操作的此完全冗余性可改良制造良率,这是因为设计者可断开故障单元同时维持整个芯片的功能性。例如,设计者可能够停用容易出错但维持类似计算能力的逻辑区域,这是因为所有复制区块可连接至相同的地址总线及数据总线。例如,逻辑区块1602的初始数量可大于目标容量。因而,停用一些逻辑区块1602将不会影响目标容量。

连接至逻辑区块的总线可包括地址总线1614、命令线1616及数据线1618。如图16中所展示,逻辑区块中的每个可独立于总线中的每一线而连接。然而,在某些实施例中,逻辑区块1602可按阶层式结构连接以促进路由。例如,总线中的每一线可连接至将该线路由至不同逻辑区块1602的多任务器。

在一些实施例中,为了在不知晓内部芯片结构(其可能由于启用及停用单元而改变)的情况下允许外部存取,逻辑区块中的每个可包括熔断ID,诸如熔断标识1604。熔断标识1604可包括判定ID的开关(如熔断器)的阵列,且可连接至管理电路。例如,熔断标识1604可连接至地址管理器1302。替代地,熔断标识1604可连接至较高存储器地址单元。在这些实施例中,熔断标识1604可能可配置以用于特定地址。例如,熔断标识1604可包括可编程的非易失性设备,其基于从管理电路接收到的指令而判定最终ID。

存储器芯片上的分布式处理器可设计成具有图16中所描绘的配置。在芯片唤醒时或在工厂测试时执行为BIST的测试程序可将运行ID号指派给通过测试协议的多个主要逻辑区块(存储器逻辑1306及商业逻辑1308)中的区块。测试程序也可将不合法ID号指派给未通过测试协议的多个主要逻辑区块中的区块。测试程序也可将运行ID号指派给通过测试协议的多个冗余区块中的区块(冗余逻辑区块1310)。因为冗余区块替换发生故障的主要逻辑区块,所以经指派运行ID号的多个冗余区块中的区块可等于或大于经指派不合法ID号的多个主要逻辑区块中的区块,藉此停用区块。此外,多个主要逻辑区块中的每个及多个冗余区块中的每个可包括至少一个熔断标识1604。另外,如图16中所展示,连接逻辑区块1602的总线可包括命令线、数据线及地址线。

然而,在其他实施例中,连接至总线的所有逻辑区块1602将开始被停用且不具有ID号。逐个地测试,每一良好逻辑区块将得到运行ID号,且不工作的这些逻辑区块将保留不合法ID,此将停用这些区块。以此方式,冗余逻辑区块可通过替换在测试处理程序期间已知有缺陷的区块来改良制造良率。

地址总线1614可将管理电路耦接至多个存储器组中的每个、多个主要逻辑区块中的每个及多个冗余区块中的每个。这些连接允许管理电路在侦测到与主要逻辑区块(诸如,商业逻辑1308)相关联的故障后将无效地址指派给多个主要逻辑区块中的一个且将有效地址指派给多个冗余区块中的一个。

例如,如图16A中所展示,不合法ID被配置至所有逻辑区块1602(a)至1602(c)(例如,地址0xFFF)。在测试之后,逻辑区块1602(a)及1602(c)经验证为起作用,而逻辑区块1602(b)不起作用。在图16A中,无阴影逻辑区块可表示成功地通过功能性测试的逻辑区块,而阴影逻辑区块可表示未通过功能性测试的逻辑区块。因而,测试程序针对起作用的逻辑区块将不合法ID改变为合法ID,而为不作用的逻辑区块保留不合法ID。作为一实施例,在图16A中,逻辑区块1602(a)及1602(c)的地址从0xFFF分别改变为0x001及0x002。相比之下,逻辑区块1602(b)的地址仍为不合法地址0xFFF。在一些实施例中,ID通过编程对应熔断标识1604来改变。

来自逻辑区块1602的测试的不同结果可产生不同配置。例如,如图16B中所展示,地址管理器1302最初可将不合法ID指派给所有逻辑区块1602(也即,0xFFF)。然而,测试结果可指示两个逻辑区块1602(a)及1602(b)起作用。在这些状况下,对逻辑区块1602(c)的测试可能并非必要的,这是因为存储器芯片1300可能仅需要两个逻辑区块。因此,为了将测试资源减至最少,可仅根据1300的产品定义所需的起作用逻辑区块的最小数量来测试逻辑区块,以使其他逻辑区块未经测试。图16B还展示表示通过功能性测试的经测试逻辑区块的无阴影逻辑区块及表示未测试逻辑区块的阴影逻辑区块。

在这些实施例中,在起动时执行BIST的生产测试器(外部或内部的,自动或人工的)或控制器可针对起作用的经测试逻辑区块将不合法ID改变为运行ID,而为未测试逻辑区块保留不合法ID。作为一实施例,在图16B中,逻辑区块1602(a)及1602(b)的地址从0xFFF分别改变为0x001及0x002。相比之下,未测试逻辑区块1602(c)的地址仍为不合法地址0xFFF。

图17为符合所公开实施例的串联连接的示例性单元1702及1712的功能方块图。图17可表示整个系统或芯片。替代地,图17可表示含有其他起作用区块的芯片中的区块。

单元1702及1712可表示包括诸如存储器逻辑1306和/或商业逻辑1308的多个逻辑区块的完整单元。在这些实施例中,单元1702及1712也可包括执行操作所需的元件,诸如地址管理器1302。然而,在其他实施例中,单元1702及1712可表示诸如商业逻辑1308或冗余商业逻辑1310的逻辑单元。

图17呈现单元1702及1712可能需要在其本身之间通信的实施例。在此类状况下,单元1702及1712可串联连接。然而,非工作单元可破坏逻辑区块之间的连续性。因此,当单元由于缺陷而需要被停用时,单元之间的连接可包括旁路选项。该旁路选项也可为旁路单元本身的部分。

在图17中,单元可串联连接(例如,1702(a)至1702(c)),且发生故障的单元(例如,1702(b))可在其有缺陷时被绕过。该单元可进一步与开关电路并联地连接。例如,在一些实施例中,单元1702及1712可与开关电路1722及1728连接,如图17中所描绘。在图17中所描绘的实施例中,单元1702(b)有缺陷。例如,单元1702(b)未通过电路功能性测试。因此,可使用例如启动开关1314(图17中未展示)来停用单元1702(b),和/或可启动开关电路1722(b)以绕过单元1702(b)且维持逻辑区块之间的连接性。

因此,当多个主要单元串联连接时,所述多个单元中的每个可与一并联开关并联地连接。在侦测到与多个单元中的一个相关联的故障后,可启动连接至所述多个单元中的该者的并联开关以连接所述多个单元中的两者。

在其他实施例中,如图17中所展示,开关电路1728可包括将致使一个或多个循环延迟的一或更多个取样点,以维持单元的不同线之间的同步。当停用一单元时,邻近逻辑区块之间的连接的短路可能会产生与其他计算的同步误差。例如,若一任务需要来自A线及B线两者的数据,且A及B中的每个系由独立的一系列单元承载,则停用一单元将导致将需要进一步数据管理的线之间的去同步。为了防止去同步,样本电路1730可仿真由经停用单元1712(b)引起的延迟。然而,在一些实施例中,并联开关可包括反熔断器而非取样电路1730。

图18为符合所公开实施例的成二维阵列连接的示例性单元的功能方块图。图18可表示整个系统或芯片。替代地,图18可表示含有其他起作用区块的芯片中的区块。

单元1806可表示包括诸如存储器逻辑1306和/或商业逻辑1308的多个逻辑区块的自主单元。然而,在其他实施例中,单元1806可表示诸如商业逻辑1308的逻辑单元。在方便时,图18的论述可参考图13(例如,存储器芯片1300)中所识别且上文所论述的元件。

如图18中所展示,单元可布置成二维阵列,其中单元1806(其可包括或表示存储器逻辑1306、商业逻辑1308或冗余商业逻辑1310中的一个或多个)经由开关箱1808及连接箱1810互连。此外,为了控制二维阵列的配置,二维阵列可在二维阵列的周边中包括I/O区块1804。

连接箱1810可为可编程且可重配置的设备,其可对从I/O区块1804输入的信号作出响应。例如,连接箱可包括来自单元1806的多个输入接脚且也可连接至开关箱1808。替代地,连接箱1810可包括将可编程逻辑胞元的接脚与路由轨线连接的开关的群组,而开关箱1808可包括连接不同轨线的开关的群组。

在某些实施例中,连接箱1810及开关箱1808可通过诸如开关1312及1314的配置开关实施。在这些实施例中,连接箱1810及开关箱1808可由生产测试器或在芯片起动时所执行的BIST来配置。

在一些实施例中,连接箱1810及开关箱1808可在测试单元1806的电路功能性之后进行配置。在这些实施例中,I/O区块1804可用以将测试信号发送至单元1806。取决于测试结果,I/O区块1804可发送编程信号,该编程信号以停用未通过测试协议的单元1806且启用通过测试协议的单元1806的方式来配置连接箱1810及开关箱1808。

在这些实施例中,多个主要逻辑区块及多个冗余区块可成二维栅格安置于基板上。因此,多个主要单元1806中的每个及多个冗余区块中的每个(诸如,冗余商业逻辑1310)可用开关箱1808互连,且输入区块可安置于二维栅格的每一线及每一列的周边中。

图19为符合所公开实施例的处于复杂连接中的示例性单元的功能方块图。图19可表示整个系统。替代地,图19可表示含有其他起作用区块的芯片中的区块。

图19的复杂连接包括单元1902(a)至1902(f)及配置开关1904(a)至1904(f)。单元1902可表示包括诸如存储器逻辑1306和/或商业逻辑1308的多个逻辑区块的自主单元。然而,在其他实施例中,单元1902可表示诸如存储器逻辑1306、商业逻辑1308或冗余商业逻辑1310的逻辑单元。配置开关1904可包括撤销启动开关1312及启动开关1314中的任一者。

如图19中所展示,该复杂连接可包括两个平面中的单元1902。例如,复杂连接可包括在z轴上分开的两个独立基板。替代地或另外,单元1902可布置在基板的两个表面中。例如,出于缩减存储器芯片1300的面积的目的,基板1301可布置在两个重叠表面中且与在三维上布置的配置开关1904连接。配置开关可包括撤销启动开关1312和/或启动开关1314。

基板的第一平面可包括「主」单元1902。这些区块可预设为经启用。在这些实施例中,第二平面可包括「冗余」单元1902。这些单元可默认为经停用。

在一些实施例中,配置开关1904可包括反熔断器。因此,在测试单元1902之后,区块可通过将某些反熔断器切换至「始终接通」及停用选定单元1902来连接于起作用单元的块中,即使该单元在不同平面中亦如此。在图19中所呈现的实施例中,「主」单元中的一个(单元1902(e))不工作。图19可将不起作用区块或未测试区块表示为阴影区块,而经测试或起作用区块可为无阴影的。因此,配置开关1904被配置为使得不同平面中的逻辑区块中的一个(例如,单元1902(f))变为作用中。以此方式,即使主逻辑区块中的一个有缺陷,存储器芯片仍通过替换备用逻辑单元而工作。

图19另外展示不测试或启用第二平面中的单元1902中的一个(也即,1902(c)),这是因为主逻辑区块起作用。例如,在图19中,两个主单元1902(a)及1902(d)通过功能性测试。因此,单元1902(c)未被测试或启用。因此,图19展示特定地选择取决于测试结果而变为在作用中的逻辑区块的能力。

在一些实施例中,如图19中所展示,并非第一平面中的所有单元1902均可具有对应的备用或冗余区块。然而,在其他实施例中,所有单元可彼此冗余以实现完全冗余,其中所有单元均为主要或冗余的。此外,虽然一些实施可遵循图19中所描绘的星形网络拓朴,但其他实施可使用并联连接、串联连接和/或将不同元件与配置开关并联地或串联地耦接。

图20为说明符合所公开实施例的冗余区块启用处理程序2000的示例性流程图。可针对存储器芯片1300且特别地针对DRAM存储器芯片实施启用处理程序2000。在一些实施例中,处理程序2000可包括以下步骤:测试存储器芯片的基板上的多个逻辑区块中的每个的至少一个电路功能性;基于测试结果识别多个主要逻辑区块中的故障逻辑区块;测试存储器芯片的基板上的至少一个冗余或额外逻辑区块的至少一个电路功能性;通过将外部信号施加至撤销启动开关来停用至少一个故障逻辑区块;及通过将该外部信号施加至启动开关来启用该至少一个冗余区块,该启动开关与该至少一个冗余区块连接且安置于该存储器芯片的该基板上。以下图20的描述进一步详述处理程序2000的每一步骤。

处理程序2000可包括测试诸如商业区块1308的多个逻辑区块(步骤2002)及多个冗余区块(例如,冗余商业区块1310)。测试可在封装之前使用例如用于晶圆上测试的探测站进行。然而,步骤2000也可在封装之后执行。

步骤2002中的测试可包括将有限序列的测试信号施加至存储器芯片1300中的每个逻辑区块或存储器芯片1300中的逻辑区块的子集。该测试信号可包括请求预期得到0或1的计算。在其他实施例中,测试信号可请求读取存储器组中的特定地址或写入特定存储器组中。

可在步骤2002中实施测试技术以测试逻辑区块在反复处理程序下的响应。例如,该测试可涉及通过传输将数据写入存储器组中的指令及接着验证写入数据的完整性来测试逻辑区块。在一些实施例中,该测试可包括利用反转数据重复算法。

在替代实施例中,步骤2002的测试可包括运行逻辑区块的模型以基于一组测试指令产生目标存储器图像。接着,可对存储器芯片中的逻辑区块执行相同序列的指令,且可记录结果。模拟的残余存储器图像也可与自测试获得的图像进行比较,且任何失配可标示为故障。

替代地,在步骤2002中,该测试可包括阴影模型化,在阴影模型化中会产生诊断,但未必预测结果。反而,使用阴影模型化的测试可对存储器芯片及模拟两者平行地执行。例如,当存储器芯片中的逻辑区块完成指令或任务时,仿真可经发信以执行相同指令。一旦存储器芯片中的逻辑区块完成该指令,便可将两个模型的架构状态进行比较。若存在失配,则标示故障。

在一些实施例中,可在步骤2002中测试所有逻辑区块(包括例如存储器逻辑1306、商业逻辑1308或冗余商业逻辑1310中的每个)。然而,在其他实施例中,可在不同测试回合中仅测试逻辑区块的子集。例如,在第一测试回合中,可仅测试存储器逻辑1306及相关联区块。在第二回合中,可仅测试商业逻辑1308及相关联区块。在第三回合中,取决于前两个回合的结果,可测试与冗余商业逻辑1310相关联的逻辑区块。

处理程序2000可继续至步骤2004。在步骤2004中,可识别故障逻辑区块,且也可识别故障冗余区块。例如,未通过步骤2002的测试的逻辑区块可在步骤2004中识别为故障区块。然而,在其他实施例中,最初仅可识别某些故障逻辑区块。例如,在一些实施例中,仅可识别与商业逻辑1308相关联的逻辑区块,且仅在需要故障冗余区块以替代故障逻辑区块的情况下识别故障冗余区块。此外,识别故障区块可包括在存储器组或非易失性存储器上写入经识别故障区块的标识信息。

在步骤2006中,可停用故障逻辑区块。例如,使用配置电路,可通过将故障逻辑区块与时钟、接地和/或电源节点断开来停用故障逻辑区块。替代地,可通过以避开逻辑区块的布置来配置连接箱来停用故障逻辑区块。另外,在其他实施例中,可通过从地址管理器1302接收不合法地址来停用故障逻辑区块。

在步骤2008中,可识别复制故障逻辑区块的冗余区块。即使一些逻辑区块已发生故障,为了支持存储器芯片的相同能力,在步骤2008中,可识别可用且可复制故障逻辑区块的冗余区块。例如,若执行向量的乘法的逻辑区块经判定为发生故障,则在步骤2008中,地址管理器1302或片上控制器可识别还执行向量的乘法的可用冗余逻辑区块。

在步骤2010中,可启用在步骤2008中所识别的冗余区块。与步骤2006的停用操作相比,在步骤2010中,可通过将经识别冗余区块连接至时钟、接地和/或电源节点来启用该经识别冗余区块。替代地,可通过以连接经识别冗余区块的布置来配置连接箱来启用经识别冗余区块。另外,在其他实施例中,可通过在测试程序运行时间接收运列地址来启用经识别冗余区块。

图21为说明符合所公开实施例的地址指派处理程序2100的示例性流程图。可针对存储器芯片1300且特别地针对DRAM存储器芯片实施地址指派处理程序2100。如关于图16所描述,在一些实施例中,存储器芯片1300中的逻辑区块可连接至数据总线且具有地址标识。处理程序2100描述地址指派方法,该地址指派方法停用故障逻辑区块且启用通过测试的逻辑区块。处理程序2100中所描述的步骤将描述为由生产测试器或在芯片起动时所执行的BIST执行;然而,存储器芯片1300的其他组件和/或外部设备也可执行处理程序2100的一个或多个步骤。

在步骤2102中,测试器可通过在芯片层级将不合法标识指派给每个逻辑区块来停用所有逻辑区块及冗余区块。

在步骤2104中,测试器可执行逻辑区块的测试协议。例如,测试器可针对存储器芯片1300中的逻辑区块中的一个或多个执行步骤2002中所描述的测试方法。

在步骤2106中,取决于步骤2104中的测试的结果,测试器可判定逻辑区块是否有缺陷。若逻辑区块无缺陷(步骤2106:否),则地址管理器可在步骤2108中将运行ID指派给经测试逻辑区块。若逻辑区块有缺陷(步骤2106:是),则地址管理器1302可在步骤2110中为有缺陷逻辑区块保留不合法ID。

在步骤2112中,地址管理器1302可选择复制有缺陷逻辑区块的冗余逻辑区块。在一些实施例中,复制有缺陷逻辑区块的冗余逻辑区块可具有与有缺陷逻辑区块相同的组件及连接。然而,在其他实施例中,冗余逻辑区块可具有不同于有缺陷逻辑区块的组件和/或连接,但能够执行等效操作。例如,若有缺陷逻辑区块经设计以执行向量的乘法,则选定冗余逻辑区块将能够执行向量的乘法,即使选定冗余逻辑区块不具有与有缺陷单元相同的架构亦如此。

在步骤2114中,地址管理器1302可测试冗余区块。例如,测试器可将步骤2104中应用的测试技术应用于经识别冗余区块。

在步骤2116中,基于步骤2114中的测试的结果,测试器可判定冗余区块是否有缺陷。在步骤2118中,若冗余区块无缺陷(步骤2116:否),则测试器可将运行ID指派给经识别冗余区块。在一些实施例中,处理程序2100可在步骤2118之后返回至步骤2104,以产生测试存储器芯片中的所有逻辑区块的反复循环。

若测试器判定冗余区块有缺陷(步骤2116:是),则在步骤2120中,测试器可判定额外冗余区块是否可用。例如,测试器可向存储器组查询关于可用冗余逻辑区块的信息。若冗余逻辑区块可用(步骤2120:是),则测试器可返回至步骤2112且识别再制有缺陷逻辑区块的新的冗余逻辑区块。若冗余逻辑区块不可用(步骤2120:否),则在步骤2122中,测试器可产生错误信号。该错误信号可包括有缺陷逻辑区块及有缺陷冗余区块的信息。

本公开所公开的实施例还包括分布式高效能处理器。该处理器可包括介接存储器组及处理单元的存储器控制器。该处理器可能可配置以加快将数据递送至处理单元以用于计算。例如,若处理单元需要两个数据例项以执行任务,则存储器控制器可被配置为使得通信线独立地提供对来自两个数据例项的信息的存取。所公开的存储器架构试图将与复杂高速缓存及复杂寄存器档案方案相关联的硬件要求降至最低。通常,处理器芯片包括允许核心直接与寄存器一起工作的高速缓存阶层。然而,高速缓存操作需要相当大的晶粒面积且消耗额外功率。所公开的存储器架构通过在存储器中添加逻辑组件来避免使用高速缓存阶层。

所公开架构还实现数据在存储器组中的策略性(或甚至优化)置放。即使存储器组具有单一端口及高延时,所公开的存储器架构也可通过将数据策略性地定位于存储器组的不同区块中来实现高效能及避免存储器存取瓶颈。以将数据的连续串流提供至处理单元为目标,编译优化步骤可针对特定或一般任务判定数据应如何储存于存储器组中。接着,介接处理单元及存储器组的存储器控制器可被配置为在特定处理单元需要数据以执行操作时向该特定处理单元授权存取。

存储器芯片的配置可由处理单元(例如,配置管理者)或外部接口执行。该配置也可由编译程序或其他SW工具写入。此外,存储器控制器的配置可基于存储器组中的可用端口及存储器组中的数据的组织。因此,所公开架构可向处理单元提供来自不同存储器区块的恒定数据流或同时信息。以此方式,存储器内的计算任务可通过避免延时瓶颈或高速缓存要求来快速地处理。

此外,储存于存储器芯片中的数据可基于编译优化步骤进行布置。编译可允许建置处理程序,其中处理器将任务高效地指派给处理单元而无存储器延时相关联的延迟。该编译可由编译程序执行且被传输至连接至基板中的外部接口的主机。通常,某些存取图案的高延时和/或少量端口将导致需要数据的处理单元的数据瓶颈。然而,所公开编译可按使得处理单元能够甚至在不利存储器类型的情况下仍连续地接收数据的方式将数据定位于存储器组中。

此外,在一些实施例中,配置管理器可基于任务所需的计算向所需处理单元发信。芯片中的不同处理单元或逻辑区块可具有针对不同任务的专门硬件或架构。因此,取决于将执行的任务,可选择处理单元或处理单元群组来执行任务。基板上的存储器控制器可能可配置以根据处理子单元的选择来投送数据或授权存取,以改良数据传输速度。例如,基于编译优化及存储器架构,当需要处理单元以执行任务时,可授权该处理单元对存储器组的存取。

此外,芯片架构可包括片上组件,该片上组件通过缩减存取存储器组中的数据所需的时间来促进数据的传送。因此,本公开描述用于能够使用简单的存储器实例执行特定或一般任务的高效能处理器的芯片架构连同编译优化步骤。存储器实例可具有高的随机存取延时和/或少量端口,诸如DRAM设备或其他存储器定向技术中所使用的这些存储器实例,但所公开架构可通过实现从存储器组至处理单元的连续(或几乎连续)数据流来克服这些缺点。

在本申请案中,同时通信可指一时钟循环内的通信。替代地,同时通信可指在预定时间量内发送信息。例如,同时通信可指在几奈秒内的通信。

图22提供符合所公开实施例的示例性处理设备的功能方块图。图22A展示处理设备2200的第一实施例,其中存储器控制器2210使用多任务器连接第一存储器区块2202及第二存储器区块2204。存储器控制器2210也可连接至少一配置管理器2212、一逻辑区块2214及多个加速器2216(a)至2216(n)。图22B展示处理设备2200的第二实施例,其中存储器控制器2210使用总线连接存储器区块2202及2204,该总线连接存储器控制器2210与至少一配置管理器2212、一逻辑区块2214及多个加速器2216(a)至2216(n)。此外,主机2230可在处理设备2200外部且经由例如外部接口连接至处理设备。

存储器区块2202及2204可包括DRAM垫或垫群组、DRAM组、MRAM\PRAM\RERAM\SRAM单元、快闪存储器垫或其他存储器技术。存储器区块2202及2204可替代地包括非易失性存储器、快闪存储器设备、电阻式随机存取存储器(ReRAM)设备或磁阻式随机存取存储器(MRAM)设备。

存储器区块2202及2204可另外包括多个存储器胞元,所述多个存储器胞元在多条字线(未示出)与多条比特线(未示出)之间布置成行和列。每一行存储器胞元的栅极可连接至多条字线中的各别者。每一列存储器胞元可连接至多条比特线中的各别者。

在其他实施例中,存储器区域(包括存储器区块2202及2204)由简单的存储器实例建置。在本申请案中,术语「存储器实例」可与术语「存储器区块」互换使用。存储器实例(或区块)可具有不良特性。例如,存储器可为仅单端口存储器且可具有高随机存取延时。替代地或另外,存储器在列及线改变期间可能无法存取且面临与例如电容充电和/或电路系统设置相关的数据存取问题。然而,通过允许存储器实例与处理单元之间的专用连接及以考虑区块的特性的某一方式来布置数据,图22中所呈现的架构仍促进存储器设备中的平行处理。

在一些设备架构中,存储器实例可包括若干端口,以促进平行操作。然而,在这些实施例中,当数据基于芯片架构来编译及组织时,芯片仍可达成改良效能。例如,编译程序可通过提供指令及组织数据置放来改良存储器区域中的存取的效率,因此即使使用单端口存储器,仍能够容易存取存储器区域。

此外,存储器区块2202及2204可为单一芯片中的存储器的多个类型。例如,存储器区块2202及2204可为eFlash及eDRAM。另外,存储器区块可包括具有ROM实例的DRAM。

存储器控制器2210可包括用以处置存储器存取及将结果传回至模块的其余部分的逻辑电路。例如,存储器控制器2210可包括地址管理器及诸如多任务器的选择设备,以在存储器区块与处理单元之间投送数据或授权对存储器区块的存取。替代地,存储器控制器2210可包括用以驱动DDR SDRAM的双数据速率(DDR)存储器控制器,其中数据在系统的存储器时钟的上升边缘及下降边缘上传送。

此外,存储器控制器2210可构成双通道存储器控制器。双通道存储器的并入可促进存储器控制器2210对平行存取线的控制。该平行存取线可被配置为具有相同长度,以在结合使用多个线时促进数据同步。替代地或另外,该平行存取线可允许存取存储器组的多个存储器端口。

在一些实施例中,处理设备2200可包括可连接至处理单元的一个或多个多任务器。该处理单元可包括可直接至多任务器的配置管理器2212、逻辑区块2214及加速器2216。另外,存储器控制器2210可包括来自多个存储器组或区块2202及2204的至少一个数据输入端,及连接至多个处理单元中的每个的至少一个数据输出端。通过此配置,存储器控制器2210可经由两个数据输入端同时从存储器组或存储器区块2202及2204接收数据,且经由两个数据输出端同时将经由接收的数据传输至至少一个选定处理单元。然而,在一些实施例中,至少一个数据输入端及至少一个数据输出端可实施于单一端口中,以允许仅读取或写入操作。在这些实施例中,单一端口可实施为包括数据线、地址线及命令线的数据总线。

存储器控制器2210可连接至多个存储器区块2202及2204中的每个,且也可经由例如选择开关连接至处理单元。基板上的处理单元(包括配置管理器2212、逻辑区块2214及加速器2216)也可独立地连接至存储器控制器2210。在一些实施例中,配置管理器2212可接收要执行的任务的指示,且作为响应,根据储存于存储器中或从外部供应的配置而配置存储器控制器2210、加速器2216和/或逻辑区块2214。替代地,存储器控制器2210可由外部接口配置。该任务可能需要可用以从多个处理单元选择至少一个选定处理单元的至少一次计算。替代地或另外,该选择可至少部分地基于选定处理单元执行至少一次计算的能力。作为响应,存储器控制器2210可授权对存储器组的存取,或使用专用总线和/或以管线式存储器存取在至少一个选定处理单元与至少两个存储器组之间投送数据。

在一些实施例中,至少两个存储器区块中的第一存储器区块2202可布置在多个处理单元的第一侧上;且至少两个存储器组中的第二存储器组2204可布置在所述多个处理单元的与该第一侧相对的第二侧上。另外,用以执行任务的选定处理单元(例如,加速器2216(n))可被配置为在至第一存储器组或第一存储器区块2202的通信线开放的时钟循环期间存取第二存储器组2204。替代地,该选定处理单元可被配置为在至第一存储器区块2202的通信线开放的时钟循环期间将数据传送至第二存储器区块2204。

在一些实施例中,存储器控制器2210可实施为独立元件,如图22中所展示。然而,在其他实施例中,存储器控制器2210可嵌入于存储器区域中或可沿着加速器2216(a)至2216(n)安置。

处理设备2200中的处理区域可包括配置管理器2212、逻辑区块2214及加速器2216(a)至2216(n)。加速器2216可包括具有预定义功能的多个处理电路且可由特定应用程序定义。例如,加速器可为处置模块之间的存储器移动的向量乘法累加(MAC)单元或直接存储器存取(DMA)单元。加速器2216也可能够计算其自身地址且向存储器控制器2210请求数据或将数据写入至存储器控制器。例如,配置管理器2212可向加速器2216中的至少一个发信该加速器可存取存储器组。接着,加速器2216可配置存储器控制器2210以投送数据或向加速器本身授权存取。此外,加速器2216可包括至少一个算术逻辑单元、至少一个向量处置逻辑单元、至少一个字符串比较逻辑单元、至少一个寄存器及至少一个直接存储器存取件。

配置管理器2212可包括用以配置加速器2216及指示任务的执行的数字处理电路。例如,配置管理器2212可连接至存储器控制器2210及多个加速器2216中的每个。配置管理器2212可具有其自身的专用存储器以保存加速器2216的配置。配置管理器2212可使用存储器组以经由存储器控制器2210取得命令及配置。替代地,配置管理器2212可经由外部接口来编程。在某些实施例中,配置管理器2212可用具有自身的高速缓存阶层的片上精简指令集计算机(RISC)或片上复杂CPU来实施。在一些实施例中,也可省略配置管理器2212,且加速器可经由外部接口来配置。

处理设备2200也可包括外部接口(未示出)。该外部接口允许从上部层级(此存储器组控制器,其接收来自外部主机2230或片上主处理器的命令)对存储器进行存取,或从外部主机2230或片上主处理器对存储器进行存取。该外部接口可通过经由存储器控制器2210将配置或代码写入至存储器以供配置管理器2212或单元2214及2216本身稍后使用来允许对配置管理器2212及加速器2216进行编程。然而,该外部接口也可直接编程处理单元而不经由存储器控制器2210进行路由。在配置管理器2212为微控制器的状况下,配置管理器2212可允许经由外部接口将代码从主存储器加载至控制器区域存储器。存储器控制器2210可被配置为响应于接收到来自外部接口的请求而中断任务。

该外部接口可包括与逻辑电路相关联的多个连接器,该连接器提供至处理设备上的多种元件的无胶合接口。该外部接口可包括:用于数据读取的数据I/O输入端及用于数据写入的输出端;外部地址输出端;外部CE0芯片选择接脚;低有效芯片选择器;字节启用接脚;用于存储器循环的等待状态的接脚;写入启用接脚;输出启用有效接脚;及读取写入启用接脚。因此,该外部接口具有所需输入端及输出端以控制处理程序且从处理设备获得信息。例如,该外部接口可符合JEDEC DDR标准。替代地或另外,外部接口可符合其他标准,诸如SPI\OSPI或UART。

在一些实施例中,该外部接口可安置于芯片基板上且可连接外部主机2230。外部主机可经由外部接口存取存储器区块2202及2204、存储器控制器2210以及处理单元。替代地或另外,外部主机2230可对存储器进行读取及写入,或可经由读取及写入命令向配置管理器2212发信以执行操作,诸如开始处理程序和/或停止处理程序。此外,外部主机2230可直接配置加速器2216。在一些实施例中,外部主机2230能够直接对存储器区块2202及2204执行读取/写入操作。

在一些实施例中,配置管理器2212及加速器2216可被配置为取决于目标任务而使用直接总线来连接设备区域与存储器区域。例如,当加速器2216的子集能够执行任务执行所需的计算时,加速器的该子集可与存储器实例2204连接。通过进行此分开,有可能确保专用加速器获得存储器区块2202及2204所需的带宽(BW)。此外,具有专用总线的此配置可允许将大存储器分裂成较小实例或区块,这是因为将存储器实例连接至存储器控制器2210允许甚至在具有高行延时时间的情况下也可快速存取不同存储器中的数据。为达成连接的平行化,存储器控制器2210可用数据总线、地址总线和/或控制总线连接至存储器实例中的每个。

存储器控制器2210的上述包括可消除对处理设备中的高速缓存阶层或复杂寄存器档案的要求。尽管可添加高速缓存阶层以得到添加的能力,但处理设备处理设备2200中的架构可允许设计者基于处理操作而添加足够存储器区块或实例且在无高速缓存阶层的情况下相应地管理该实例。例如,处理设备处理设备2200中的架构可通过实施管线式存储器存取来消除对高速缓存阶层的需求。在管线式存储器存取中,处理单元可在某些数据线可开放(或启动)而其他数据线接收或传输数据的每个循环中接收持续数据流。使用独立通信线的持续数据流可能由于线改变而实现改良的执行速度及最小延时。

此外,图22中的所公开架构实现管线式存储器存取,有可能将数据组织在少量存储器区块中且节省由线切换造成的功率损耗。例如,在一些实施例中,编译程序可向主机2230传达数据在存储器组中的组织或用以将数据组织在存储器组中的方法,以促进在给定任务期间存取数据。接着,配置管理器2212可定义哪些存储器组且在一些状况下存储器组的哪些端口可由加速器存取。存储器组中的数据的位置与数据访问方法之间的此同步通过以最小延时将数据馈入至加速器来改良计算任务。例如,在配置管理器2212包括RISC\CPU的实施例中,该方法可用脱机软件(SW)来实施,且接着配置管理器2212可经编程以执行该方法。该方法可用可由RISC/CPU计算机执行的任何语言来开发且可在任何平台上执行。该方法的输入可包括存储器控制器后方的存储器的配置及数据本身,连同存储器存取的图案。此外,该方法可用特定于实施例的语言或机器语言来实施,且也可仅为以二进制或文字表示的一系列配置值。

如上文所论述,在一些实施例中,编译程序可将指令提供至主机2230以用于在准备管线式存储器存取时将数据组织在存储器区块2202及2204中。该管线式存储器存取通常可包括以下步骤:接收多个存储器组或存储器区块2202及2204的多个地址;根据所接收的地址使用独立数据线存取所述多个存储器组;经由第一通信线将来自第一地址的数据供应至多个处理单元中的至少一个且开放至第二地址的第二通信线,该第一地址在所述多个存储器组中的第一存储器组中,该第二地址在所述多个存储器组中的第二存储器组2204中;及在第二时钟循环内,经由该第二通信线将来自该第二地址的数据供应至所述多个处理单元中的该至少一者且开放至第一线中的第一存储器组中的第三地址的第三通信线。在一些实施例中,该管线式存储器存取可在两个存储器区块连接至单一端口的情况下执行。在这些实施例中,存储器控制器2210可将两个存储器区块隐藏在单一端口后,但利用管线式存储器访问方法将数据传输至处理单元。

在一些实施例中,编译程序可在主机2230上执行,之后执行任务。在这些实施例中,编译程序可能够基于存储器设备的架构而判定数据流的配置,这是因为该配置将为编译程序已知的。

在其他实施例中,若存储器区块2204及2202的配置在脱机时间系未知的,则管线式方法可在主机2230上执行,该主机可在开始计算之前将数据布置在存储器区块中。例如,主机2230可将数据直接写入存储器区块2204及2202中。在这些实施例中,诸如配置管理器2212及存储器控制器2210的处理单元在运行时间之前可能不会具有关于所需硬件的信息。接着,可能有必要延迟对加速器2216的选择,直至任务开始运行。在这些情形中,处理单元或存储器控制器2210可随机地选择加速器2216且产生测试数据存取图案,该存取图案可在执行任务时加以修改。

然而,当任务预先已知时,编译程序可将数据及指令组织在存储器组中以供主机2230提供至诸如配置管理器2212的处理单元,以设定将存取延时减至最少的信号连接。例如,在一些状况下,加速器2216可能同时需要n个字。然而,每个存储器实例支持每次仅取回m个字,其中「m」及「n」为整数且m

例如,加速器2216(a)可被配置为将两个向量相乘。向量中的每个可储存于诸如存储器区块2202及2204的独立存储器区块中,且每个向量可包括多个字。因此,为了完成需要加速器2216(a)进行乘法的任务,可能有必要存取两个存储器区块且取回多个字。然而,在一些实施例中,存储器区块仅允许每个时钟循环存取一个字。例如,存储器区块可具有单一端口。在这些状况下,为了在操作期间加快数据传输,编译程序可将构成向量的字组织于不同存储器区块中,以允许对字的平行和/或同时读取。在这些情形中,编译程序可将字储存于具有专用线的存储器区块中。例如,若每个向量包括两个字且存储器控制器能够直接存取四个存储器区块,则编译程序可将数据布置在四个存储器区块中,每个存储器区块传输一字且加快数据递送。此外,在实施例中,当存储器控制器2210可具有至每个存储器区块的多于单一连接时,编译程序可指示配置管理器2212(或其他处理单元)存取端口特定端口。以此方式,处理设备2200可执行管线式存储器存取,以通过同时在一些线中加载字及在其他线中传输数据来将数据连续地提供至处理单元。因此,此管线式存储器存取避免可避免延时问题。

图23为符合所公开实施例的示例性处理设备2300的功能方块图。该功能方块图展示简化的处理设备2300,其显示呈MAC单元2302形式的单一加速器、配置管理器2304(等效或类似于配置管理器2212)、存储器控制器2306(等效或类似于存储器控制器2210)及多个存储器区块2308(a)至2308(d)。

在一些实施例中,MAC单元2302可为用于处理特定任务的特定加速器。作为实施例,处理设备2300可以2D卷积为任务。接着,配置管理器2304可向具有适当硬件的加速器发信以执行与任务相关联的计算。例如,MAC单元2302可具有四个内部递增计数器(用以管理卷积计算所需的四个回路的逻辑加法器及寄存器)及一乘法累加单元。配置管理器2304可向MAC单元2302发信以处理传入数据且执行任务。配置管理器2304可将指示传输至MAC单元2302以执行任务。在这些情形中,MAC单元2302可在所计算地址上进行反复,将数字相乘,且将其累加至内部寄存器。

在一些实施例中,配置管理器2304可配置加速器,而存储器控制器2306授权使用专用总线存取区块2308及MAC单元2302。然而,在其他实施例中,存储器控制器2306可基于从配置管理器2304或外部接口接收的指令而直接配置加速器。替代地或另外,配置管理器2304可预先加载几个配置且允许加速器反复地在具有不同大小的不同地址上运行。在这些实施例中,配置管理器2304可包括高速缓存,该高速缓存储存命令,之后该命令被传输至诸如加速器2216的多个处理单元中的至少一者。然而,在其他实施例中,配置管理器2304可能不包括高速缓存。

在一些实施例中,配置管理器2304或存储器控制器2306可接收为了任务需要存取的地址。配置管理器2304或存储器控制器2306可检查寄存器以判定地址是否已经在至存储器区块2308中的一个的加载的线中。若在加载的线中,则存储器控制器2306可从存储器区块2308读取字且将该字传递至MAC单元2302。若地址不在加载的线中,则配置管理器2304可请求存储器控制器2306可加载该线且向MAC单元2302发信以延迟,直至取回该加载的线。

在一些实施例中,如图23中所展示,存储器控制器2306可包括形成两个独立地址的两个输入。但若应同时存取多于两个地址,且这些地址在单一存储器区块中(例如,地址仅在存储器区块2308(a)中),则存储器控制器2306或配置管理器2304可能会引发例外状况。替代地,当两个地址仅可经由单一线来存取时,配置管理器2304可传回无效数据信号。在其他实施例中,该单元可延迟处理程序执行,直至有可能取回所有需要的数据。此可降低总体效能。然而,编译程序可能够找到将防止延迟的配置及数据置放。

在一些实施例中,编译程序可产生用于处理设备2300的配置或指令集,该配置或指令集可配置配置管理器2304及存储器控制器2306以及加速器2302以处置需要从单一存储器区块存取多个地址但该存储器区块具有一个端口的情形。例如,编译程序可将数据重新布置在存储器区块2308中,使得处理单元可存取存储器区块2308中的多个线。

此外,存储器控制器2306也可在相同时间同时对多于一个输入进行工作。例如,存储器控制器2306可允许经由一个端口存取存储器区块2308中的一个及在于另一输入端中接收对不同存储器区块的请求时供应数据。因此,此操作可导致以示例性2D卷积为任务的加速器2216从相关存储器区块的专用通信线接收数据。

另外或替代地,存储器控制器2306或逻辑区块可保持针对每个存储器区块2308的刷新计数器且处置所有线的刷新。具有此计数器允许存储器控制器2306插入设备的停滞访问时间之间的刷新循环中。

此外,存储器控制器2306可能可配置以执行管线式存储器存取,以接收地址且开放存储器区块中的线,之后供应数据。该管线式存储器存取可在不中断或不延迟时钟循环的情况下将数据提供至处理单元。例如,虽然存储器控制器2306或逻辑区块中的一个在图23中利用右方线存取数据,但存储器控制器或逻辑区块可正在左方线中传输数据。将关于图26更详细地解释这些方法。

响应于所需数据,处理设备2300可使用多任务器和/或其他开关设备来选择服务哪些设备以执行给定任务。例如,配置管理器2304可配置多任务器,使得至少两个数据线到达MAC单元2302。以此方式,需要来自多个地址的数据的任务(诸如,2D卷积)可较快地执行,这是因为在卷积期间需要乘法的向量或字可在单一时钟中同时到达处理单元。此数据传送方法可允许诸如加速器2216的处理单元快速地输出结果。

在一些实施例中,配置管理器2304可能可配置以基于任务的优先权执行处理程序。例如,配置管理器2304可被配置为使运行中处理程序无任何中断地完成。在此状况下,配置管理器2304可将任务的指令或配置提供至加速器2216,使该加速器不间断地运行,且仅在任务完成时切换多任务器。然而,在其他实施例中,配置管理器2304可在其接收到优先任务(诸如,来自外部接口的请求)时中断任务且重新配置数据路由。然而,在存储器区块2308足够的情况下,存储器控制器2306可能可配置以利用专用线将数据投送至处理单元或向处理单元授权存取,该专用线在任务完成之前不必改变。此外,在一些实施例中,所有设备可通过总线连接至配置管理器2304的实体,且设备可管理设备本身与总线之间的存取(例如,使用与多任务器相同的逻辑)。因此,存储器控制器2306可直接连接至数个存储器实例或存储器区块。

替代地,存储器控制器2306可直接连接至存储器子实例。在一些实施例中,每个存储器实例或区块可由子实例建置(例如,DRAM可由布置在多个子区块中的具有独立数据线的垫建置)。另外,实例可包括DRAM垫、DRAM、组、快闪存储器垫或SRAM垫或任何其他类型的存储器中的至少一个。接着,存储器控制器2306可包括专用线以直接寻址子实例,以将管线式存储器存取期间在延时减至最少。

在一些实施例中,存储器控制器2306也可保持特定存储器实例所需的逻辑(诸如,行\列解码器、刷新逻辑等),且存储器区块2308可处置其自身的逻辑。因此,存储器区块2308可获得地址且产生用于传回\写入数据的命令。

图24描绘符合所公开实施例的示例性存储器配置图。在一些实施例中,产生用于处理设备2200的代码或配置的编译程序可执行用以通过将数据预先布置在每个区块中来配置自存储器区块2202及2204的加载的方法。例如,编译程序可预先布置数据,使得任务所需的每一字与一存储器实例或存储器区块的线相关。但对于需要比处理设备2200中可用的存储器区块多的存储器区块的任务,编译程序可实施使数据适配每个存储器区块的多于一个存储器位置的方法。编译程序也可依序储存数据且评估每个存储器区块的延时以避免线错漏延时。在一些实施例中,主机可为处理单元的部分,诸如配置管理器2212,但在其他实施例中,编译程序主机可经由外部接口连接至处理设备2200。在这些实施例中,主机可运行编译功能,诸如针对编译程序所描述的编译功能。

在一些实施例中,配置管理器2212可为CPU或微控制器(uC)。在这些实施例中,配置管理器2212可能必须存取存储器以取得置放于存储器中的命令或指令。特定编译程序可产生代码且以一方式将该代码置放于存储器中,该方式允许在相同存储器线中及跨越数个存储器组储存连续命令,以允许还对所取得命令进行管线式存储器存取。在这些实施例中,配置管理器2212及存储器控制器2210可能够通过促进管线式存储器存取来避免线性执行中的行延时。

程序的线性执行的先前状况描述供编译程序辨识及置放指令以允许管线式存储器执行的方法。然而,其他软件结构可能更复杂且将需要编译程序辨识其他软件结构且相应地采取动作。例如,在任务需要循环及分支的状况下,编译程序可将所有循环代码置放于单一线内,使得单一线可在不具有线开放延时的情况下进行循环。接着,存储器控制器2210可能不需要在执行期间改变线。

在一些实施例中,配置管理器2212可包括内部高速缓存或小存储器。内部高速缓存可储存由配置管理器2212执行以处置分支及循环的命令。例如,内部高速缓存中的命令可包括用以配置用于存取存储器区块的加速器的指令。

图25为说明符合所公开实施例的可能存储器配置处理程序2500的示例性流程图。在便于描述存储器配置处理程序2500的情况下,可参考图22中所描绘及上文所描述的元件的识别符。在一些实施例中,处理程序2500可由编译程序执行,该编译程序将指令提供至经由外部接口连接的主机。在其他实施例中,处理程序2500可由处理设备2200的组件(诸如,配置管理器2212)执行。

一般而言,处理程序2500可包括:判定执行任务同时所需的字的数量;判定可同时自多个存储器组中的每个存取的字的数量;及当同时所需的字的数量大于可同时存取的字的数量时,在多个存储器组之间划分同时所需的该数量的字。此外,划分同时所需的该数量的字可包括执行字的循环组织及依序地每个存储器组指派一个字。

更具体而言,处理程序2500可以步骤2502开始,在该步骤中,编译程序可接收任务规格。该规格包括所需计算和/或优先权等级。

在步骤2504中,编译程序可识别可执行任务的加速器或加速器群组。替代地,编译程序可产生指令,因此处理单元(诸如,配置管理器2212)可识别加速器以执行该任务。例如,使用所需计算配置管理器2212可识别加速器2216的群组中的可处理该任务的加速器。

在步骤2506中,编译程序可判定为了执行该任务需要同时存取的字的数量。例如,两个向量的乘法需要存取至少两个向量,且编译程序因此可判定必须同时存取向量字以执行操作。

在步骤2508中,编译程序可判定执行该任务必需的循环的数量。例如,若该任务需要对四个附带产生结果的卷积运算,则编译程序可判定至少4个循环将为执行该任务所必需的。

在步骤2510中,编译程序可将需要同时存取的字置放于不同存储器组中。以此方式,存储器控制器2210可被配置为开放至不同存储器实例的线且在一时钟循环内存取所需存储器区块,而不需要任何高速缓存数据。

在步骤2512中,编译程序将依序存取的字置放于相同存储器组中。例如,在需要操作的四个循环的状况下,编译程序可产生指令以在依序循环中将所需字写入单一存储器区块中,以避免在执行期间在不同存储器区块之间改变线。

在步骤2514中,编译程序产生用于编程诸如配置管理器2212的处理单元的指令。该指令可指定操作开关设备(诸如,多任务器)或配置数据总线的条件。通过这些指令,配置管理器2212可根据任务配置存储器控制器2210以使用专用通信线将数据自存储器区块投送至处理单元或授权对该存储器区块的存取。

图26为说明符合所公开实施例的存储器读取处理程序2600的示例性流程图。在便于描述存储器读取处理程序2600的情况下,可参考图22中所描绘及上文所描述的元件的识别符。在一些实施例中,如下文所描述,处理程序2600可由存储器控制器2210实施。然而,在其他实施例中,处理程序2600可由处理设备2200中的其他元件(诸如,配置管理器2212)实施。

在步骤2602中,存储器控制器2210、配置管理器2212或其他处理单元可接收投送来自存储器组的数据或授权对存储器组的存取的指示。请求可指定地址及存储器区块。

在一些实施例中,该请求可经由线2218中指定读取命令及线2220中指定地址的数据总线接收。在其他实施例中,该请求可经由连接至存储器控制器2210的解多任务器接收。

在步骤2604中,配置管理器2212、主机或其他处理单元可查询内部寄存器。该内部寄存器可包括关于至存储器组的开放线、开放地址、开放存储器区块和/或即将进行的任务的信息。基于内部寄存器中的信息,可判定是否存在至存储器组的开放线和/或存储器区块是否在步骤2602中接收到请求。替代地或另外,存储器控制器2210可直接查询该内部寄存器。

若该内部寄存器指示存储器组未加载开放线中(步骤2606:否),则处理程序2600可继续至步骤2616,且可将线加载至与所接收地址相关联的存储器组。此外,存储器控制器2210或诸如配置管理器2212的处理单元可在步骤2616中将延迟发信至请求来自存储器地址的信息的元件。例如,若加速器2216正请求位于已被占用的存储器区块的存储器信息,则在步骤2618中,存储器控制器2210可将延迟信号发送至加速器。在步骤2620中,配置管理器2212或存储器控制器2210可更新内部寄存器以指示已开放至新存储器组或新存储器区块的线。

若该内部寄存器指示存储器组加载开放线中(步骤2606:是),则处理程序2600可继续至步骤2608。在步骤2608中,可判定加载有存储器组的线是否正用于不同地址。若该线正用于不同地址(步骤2608:是),则此将指示单一区块中存在两个实例,且因此,不能同时存取该两个实例。因此,可在步骤2616中将错误或免除信号发送至请求来自存储器地址的信息的元件。但若该线并未正用于不同地址(步骤2608:否),则可开放针对该地址的线并从目标存储器组取回数据,且继续至步骤2614以将数据传输至请求来自存储器地址的信息的元件。

利用处理程序2600,处理设备2200能够建立处理单元与含有执行任务所需的信息的存储器区块或存储器实例之间的直接连接。数据的此组织将使得能够自不同存储器实例中的经组织向量读取信息,以及允许在设备请求多个这些地址时同时自不同存储器区块取回信息。

图27为说明符合所公开实施例的执行处理程序2700的示例性流程图。在便于描述执行处理程序2700的情况下,可参考图22中所描绘及上文所描述的元件的识别符。

在步骤2702中,编译程序或诸如配置管理器2212的区域单元可接收需要执行的任务的指示。该任务可包括单一运算(例如,乘法)或更复杂运算(例如,矩阵之间的卷积)。该任务也可指示所需计算。

在步骤2704中,编译程序或配置管理器2212可判定执行该任务同时所需的字的数量。例如,配置编译程序可判定同时需要两个字来执行向量之间的乘法。在另一实施例(2D卷积任务)中,配置管理器2212可判定矩阵之间的卷积需要「n」乘「m」个字,其中「n」及「m」为矩阵维度。此外,在步骤2704中,配置管理器2212也可判定执行该任务必需的循环的数量。

在步骤2706中,取决于步骤2704中的判定,编译程序可将需要同时存取的字写入安置于基板上的多个存储器组中。例如,当可从多个存储器组中的一者同时存取的字的数量的数量小于同时所需的字的数量时,编译程序可将数据组织在多个存储器组中以促进在一时钟内存取不同所需字。此外,当配置管理器2212或编译程序判定执行任务必需的循环的数量时,编译程序可在依序循环中将所需的字写入多个存储器组中的单一存储器组中,以防止存储器组之间的线的切换。

在步骤2708中,存储器控制器2210可被配置为使用第一存储器线从多个存储器组或区块中的第一存储器组读取至少一个第一字或授权对该至少一个第一字的存取。

在步骤2170中,处理单元(例如,加速器2216中的一个)可使用至少一个第一字来处理任务。

在步骤2712中,存储器控制器2210可被配置为开放第二存储器组中的第二存储器线。例如,基于任务且使用管线式存储器访问方法,存储器控制器2210可被配置为开放在步骤2706中写入有任务所需的信息的第二存储器区块中的第二存储器线。在一些实施例中,该第二存储器线可在步骤2170中的任务将要完成时开放。例如,若一任务需要100个时钟,则该第二存储器线可在第90个时钟中开放。

在一些实施例中,步骤2708至2712可在一个线存取循环内执行。

在步骤2714中,存储器控制器2210可被配置为授权使用在步骤2710中开放的第二存储器线存取来自第二存储器组的至少一个第二字的数据。

在步骤2176中,处理单元(例如,加速器2216中的一个)可使用至少第二字来处理任务。

在步骤2718中,存储器控制器2210可被配置为开放第一存储器组中的第二存储器线。例如,基于任务且使用管线式存储器访问方法,存储器控制器2210可被配置为开放至第一存储器区块的第二存储器线。在一些实施例中,至第一区块的第二存储器线可在步骤2176中的任务将要完成时开放。

在一些实施例中,步骤2714至2718可在一个线存取循环内执行。

在步骤2720中,存储器控制器2210可使用第一记忆组中的第二存储器线或第三记忆组中的第一线及在不同存储器组中继续而从多个存储器组或区块中的第一存储器组读取至少一个第三字或授权对该至少一个第三字的存取。

诸如动态随机存取存储器(DRAM)芯片的一些存储器芯片使用刷新以避免所储存数据(例如,使用电容)由于芯片的电容器或其他电组件中的电压衰减而失去。例如,在DRAM中,必须时常刷新每一胞元(基于特定处理程序及设计)以恢复电容器中的电荷,使得数据不会丢失或损坏。随着DRAM芯片的存储器容量增加,刷新存储器所需的时间量变得显着。在正刷新存储器的某一线的时间段期间,不能存取含有正刷新的该线的组。此可导致效能降低。另外,与刷新处理程序相关联的功率也可为显着的。先前已努力尝试缩减执行刷新的速率以缩减与刷新存储器相关联的不利影响,但大部分这些努力集中于DRAM的物理层。

刷新类似于读取及写回存储器的行。使用此原理且集中于存取存储器的图案,本公开的实施例包括软件及硬件技术以及对存储器芯片的修改,以使用较少功率用于刷新且缩减刷新存储器期间的时间量。例如,作为概述,一些实施例可使用硬件和/或软件以追踪线存取时序且在刷新循环内跳过最近存取行(例如,基于时序阈值)。在另一实施例中,一些实施例可依赖于由存储器芯片的刷新控制器执行的软件来指派读取及写入,使得对存储器的存取为非随机的。因此,软件可更精确地控制刷新以避免浪费刷新循环和/或线。这些技术可单独使用或与编码用于刷新控制器的命令及用于处理器的机器码的编译程序组合使用,使得对存储器的存取同样为非随机的。使用下文详细描述的这些技术及配置的任何组合,所公开实施例可通过缩减刷新存储器单元期间的时间量来降低存储器刷新功率要求和/或提高系统效能。

图28描绘符合本公开的具有刷新控制器2803的实施例存储器芯片2800。例如,存储器芯片2800可包括基板上的多个存储器组(例如,存储器组2801a及其类似物)。在图28的实施例中,基板包括四个存储器组,其各具有四个线。一线可指存储器芯片2800的一个或多个存储器组或存储器芯片2800内的存储器胞元的任何其他集合(诸如,存储器组的一部分或沿着存储器组的一整行或存储器组的群组)内的字线。

在其他实施例中,基板可包括任何数量的存储器组,且每个存储器组可包括任何数量的线。一些存储器组可包括相同数量的线(如图28中所展示),而其他存储器组可包括不同数量的线。如图28中进一步描绘,存储器芯片2800可包括控制器2805,该控制器用以接收至存储器芯片2800的输入且自存储器芯片2800传输输出(例如,如上文在「码的划分」中所描述)。

在一些实施例中,多个存储器组可包含动态随机存取存储器(DRAM)。然而,多个存储器组可包含储存需要周期性刷新的数据的任何易失性存储器。

如下文将更详细地论述,本公开所公开的实施例可使用计数器或电阻器-电容器电路以对刷新循环进行计时。例如,计数器或定时器可用以对自最后完整刷新循环的时间进行计数,且接着当计数器达到其目标值时,可使用另一计数器对所有行进行反复。本公开的实施例可另外追踪对存储器芯片2800的区段的存取且缩减所需的刷新功率。例如,尽管未在图28中描绘,但存储器芯片2800还可以包括数据储存器,该数据储存器被配置为储存指示多个存储器组中的一个或多个区段的存取操作的存取信息。例如,该一个或多个区段可包含存储器芯片2800内的存储器胞元的线、列或任何其他分组的任何部分。在一个特定实施例中,该一个或多个区段可包括多个存储器组内的至少一行的存储器结构。刷新控制器2803可被配置为至少部分地基于所储存的存取信息而执行该一个或多个区段的刷新操作。

例如,该数据储存器可包含与存储器芯片2800的区段(例如,存储器芯片2800内的存储器胞元的线、列或任何其他分组)相关联的一个或多个寄存器、静态随机存取存储器(SRAM)胞元,或其类似物。另外,该数据储存器可被配置为储存指示相关联的区段是否在一个或多个先前循环中经存取的比特。「比特」可包含储存至少一个比特的任何数据结构,诸如寄存器、SRAM胞元、非易失性存储器或其类似物。此外,比特可通过将数据结构的对应开关(或开关元件,诸如晶体管)设定为接通(其可等效于「1」或「真」)来设定。另外或替代地,比特可通过修改数据结构内的任何其他性质(诸如,对快闪存储器的浮动门充电,修改SRAM中的一个或多个正反器的状态或其类似物)以便将「1」写入至该数据结构(或指示比特的设定的任何其他值)来设定。若一比特被判定为作为存储器控制器的刷新操作的部分而经设定,则刷新控制器2803可跳过相关联区段的刷新循环且清空与其部分相关联的寄存器。

在另一实施例中,数据储存器可包含与存储器芯片2800的区段(例如,存储器芯片2800内的存储器胞元的线、列或任何其他分组)相关联的一个或多个非易失性存储器(例如,快闪存储器或其类似物)。非易失性存储器可被配置为储存指示相关联的区段是否在一个或多个先前循环中经存取的比特。

一些实施例可另外或替代地在每一行或行群组(或存储器芯片2800的其他区段)上添加时间戳寄存器,该时间戳寄存器保存当前刷新循环内线被存取的最后时刻。此意谓在每一行存取的情况下,刷新控制器可更新行时间戳寄存器。因此,当下一次刷新发生时(例如,在刷新循环结束时),刷新控制器可比较所储存时间戳,且若相关联区段先前在某一时间段内(例如,在如应用于所储存时间戳的某一阈值内)经存取,则刷新控制器可跳至下一区段。此避免系统在最近已存取的区段上消耗刷新功率。此外,刷新控制器可继续追踪存取以确保在下一循环存取或刷新每个区段。

因此,在又一实施例中,数据储存器可包含与存储器芯片2800的区段(例如,存储器芯片2800内的存储器胞元的线、列或任何其他分组)相关联的一个或多个寄存器或非易失性存储器。该寄存器或非易失性存储器可被配置为储存指示相关联区段的最近存取的时间戳或其他信息,而非使用比特来指示是否已存取相关联区段。在此实施例中,刷新控制器2803可基于储存于相关联寄存器或存储器中的时间戳与当前时间(例如,来自定时器,如下文在图29A及图29B中所解释)之间的时间量是否超过预定阈值(例如,8ms、16ms、32ms、64ms或其类似物)来判定是否刷新或存取相关联区段。

因此,预定阈值可包含确保相关联区段在每个刷新循环内被刷新(若并非存取)至少一次的刷新循环的时间量。替代地,预定阈值可包含短于刷新循环所需的时间量的时间量(例如,以确保任何所需刷新或存取信号可在刷新循环完成之前到达相关联区段)。例如,预定时间可包含用于具有8ms刷新时段的存储器芯片的7ms,使得若区段在7ms内尚未被存取,则刷新控制器将发送在8ms刷新时段结束时到达该区段的刷新或存取信号。在一些实施例中,预定阈值可取决于相关联区段的大小。例如,对于存储器芯片2800的较小区段,预定阈值可较小。

尽管上文关于存储器芯片进行描述,但本公开的刷新控制器也可用于分布式处理器架构中,如在上文及贯穿本公开的章节中描述的这些架构。此类架构的一个实施例描绘于图7A中。在这些实施例中,与存储器芯片2800相同的基板可包括安置于其上的多个处理群组,例如,如图7A中所描绘。如上文关于图3A所解释,「处理群组」可指基板上的两个或多于两个处理器子单元及其对应存储器组。该群组可表示用于编译代码以供在存储器芯片2800上执行的目的的基板上的空间分布和/或逻辑分组。因此,该基板可包括存储器阵列,该存储器阵列包括多个组,诸如图28中所展示的组2801a及其他组。此外,该基板可包括处理阵列,该处理阵列可包括多个处理器子单元(诸如,图7A中所展示的子单元730a、730b、730c、730d、730e、730f、730g及730h)。

如上文关于图7A进一步所解释,每一处理群组可包括一处理器子单元及专用于该处理器子单元的一个或多个对应存储器组。此外,为了允许每一处理器子单元与其对应的专用存储器组通信,该基板可包括将处理器子单元中的一个连接至其对应的专用存储器组的第一多个总线。

在这些实施例中,如图7A中所展示,该基板可包括用以将每一处理器子单元连接至至少一个其他处理器子单元(例如,相同行中的邻近子单元、相同列中的邻近处理器子单元,或基板上的任何其他处理器子单元)的第二多个总线。第一多个总线和/或第二多个总线可能不含时序硬件逻辑组件,使得在处理器子单元之间及跨越所述多个总线中的对应者的数据传送不受时序硬件逻辑组件控制,如上文在「使用软件的同步」章节中所解释。

在与存储器芯片2800相同的基板可包括安置于其上的多个处理群组(例如,如图7A中所描绘)的实施例中,处理器子单元还可以包括地址生成器(例如,如图4中所描绘的地址生成器450)。此外,每一处理群组可包括一处理器子单元及专用于该处理器子单元的一个或多个对应存储器组。因此,地址生成器中的每个可与所述多个存储器组中的对应的专用存储器组相关联。此外,该基板可包括多个总线,每个总线将所述多个地址生成器中的一个连接至其对应的专用存储器组。

图29A描绘符合本公开的实施例刷新控制器2900。刷新控制器2900可并入本公开的存储器芯片(诸如,图28的存储器芯片2800)中。如图29A中所描绘,刷新控制器2900可包括定时器2901,该定时器可包含用于刷新控制器2900的片上振荡器或任何其他时序电路。在图29A中所描绘的配置中,定时器2901可周期性地(例如,每8ms、16ms、32ms、64ms或其类似时间)触发刷新循环。刷新循环可使用行计数器2903以循环通过对应存储器芯片的所有行,且使用加法器2901结合有效比特2905来针对每一行产生一刷新信号。如图29A中所展示,比特2905可固定为1(「真」)以确保每一行在一循环期间刷新。

在本公开的实施例中,刷新控制器2900可包括数据储存器。如上文所描述,该数据储存器可包含与存储器芯片2800的区段(例如,存储器芯片2800内的存储器胞元的线、列或任何其他分组)相关联的一个或多个寄存器或非易失性存储器。该寄存器或非易失性存储器可被配置为储存指示相关联区段的最近存取的时间戳或其他信息。

刷新控制器2900可使用所储存的信息来跳过存储器芯片2900的区段的刷新。例如,若该信息指示一区段在一个或多个先前刷新循环期间已刷新,则刷新控制器2900可在当前刷新循环中跳过该区段。在另一实施例中,若针对一区段所储存的时间戳与当前时间之间的差低于阈值,则刷新控制器2900可在当前刷新循环中跳过该区段。刷新控制器2900可进一步经由多个刷新循环继续追踪存储器芯片2800的区段的存取及刷新。例如,刷新控制器2900可使用定时器2901更新所储存时间戳。在这些实施例中,刷新控制器2900可被配置为在阈值时间间隔之后,使用定时器的输出来清除储存于数据储存器中的存取信息。例如,在数据储存器储存相关联区段的最近存取或刷新的时间戳的实施例中,每当将存取命令或刷新信号发送至该区段时,刷新控制器2900便可将新时间戳储存于数据储存器中。若数据储存器储存比特而非时间戳,则定时器2901可被配置为清除经设定持续长于阈值时间段的比特。例如,在数据储存器储存指示相关联区段在一个或多个先前循环中经存取的实施例中,每当定时器2901触发新的刷新循环,刷新控制器2900便可清除数据储存器中的比特(例如,将其设定为0),该新的刷新循环在设定相关联比特(例如,设定为1)后经过临界数量的循环(例如,一个、两个或其类似物)的循环。

刷新控制器2900可协同存储器芯片2800的其他硬件追踪存储器芯片2800的区段的存取。例如,存储器芯片使用感测放大器以执行读取操作(例如,如上文在图9及图10中所展示)。该感测放大器可包含多个晶体管,所述多个晶体管被配置为感测来自将数据储存于一个或多个存储器胞元中的存储器芯片2800的区段的低功率信号,且将小的电压摆动放大至较高电压电平,使得数据可由诸如如上文所解释的外部CPU或GPU或集成式处理器子单元的逻辑解译。尽管在图29A中未描绘,但刷新控制器2900可进一步与感测放大器通信,该感测放大器被配置为存取一个或多个区段且改变至少一个比特寄存器的状态。例如,当感测放大器存取一个或多个区段时,其可设定与该区段相关联的比特(例如,设定为1),该比特指示相关联区段在前一循环中经存取。在数据储存器储存相关联区段的最近存取或刷新的时间戳的实施例中,当感测放大器存取一个或多个区段时,其可触发将来自定时器2901的时间戳写入至寄存器、存储器或包含数据储存器的其他元件。

在上文所描述的实施例中的任一者中,刷新控制器2900可与用于多个存储器组的存储器控制器集成。例如,类似于图3A中所描绘的实施例,刷新控制器2900可并入至与存储器芯片2800的存储器组或其他区段相关联的逻辑及控制子单元中。

图29B描绘符合本公开的另一实施例刷新控制器2900'。刷新控制器2900'可并入本公开的存储器芯片(诸如,图28的存储器芯片2800)中。类似于刷新控制器2900,刷新控制器2900'包括定时器2901、行计数器2903、有效比特2905及加法器2907。另外,刷新控制器2900'可包括数据储存器2909。如图29B中所展示,数据储存器2909可包含与存储器芯片2800的区段(例如,存储器芯片2800内的存储器胞元的线、列或任何其他分组)相关联的一个或多个寄存器或非易失性存储器,且数据储存器内的状态可被配置为响应于一个或多个区段经存取而改变(例如,通过感测放大器和/或刷新控制器2900'的其他元件,如上文所描述)。因此,刷新控制器2900'可被配置为基于数据储存器内的状态跳过一个或多个区段的刷新。例如,若与区段相关联的状态经启动(例如,通过接通、使性质变更以便储存「1」或其类似物而设定为1),则刷新控制器2900'可跳过相关联区段的刷新循环且清除与其部分相关联的状态。该状态可至少通过一比特寄存器或被配置为储存至少一个数据比特的任何其他存储器结构来储存。

为了确保存储器芯片的区段在每一刷新循环期间经刷新或存取,刷新控制器2900'可重设或以其他方式清除状态以便在下一刷新循环期间触发刷新信号。在一些实施例中,在一区段被跳过之后,刷新控制器2900'可清除相关联状态,以便确保在下一刷新循环刷新该区段。在其他实施例中,刷新控制器2900'可被配置为在阈值时间间隔之后重设数据储存器内的状态。例如,每当从相关联状态经设定(例如,通过接通、使性质变更以便储存「1」或其类似物而设定为1)起,定时器2901超过阈值时间,刷新控制器2900'便可清除数据储存器中的状态(例如,将其设定为0)。在一些实施例中,刷新控制器2900'可使用临界数量的刷新循环(例如,一个、两个或其类似物)或使用临界数量的时钟循环(例如,两个、四个或其类似物)而非阈值时间。

在其他实施例中,该状态可包含相关联区段的最近刷新或存取的时间戳,使得若该时间戳与当前时间(例如,来自图29A及图29B的定时器2901)之间的时间量超过预定阈值(例如,8ms、16ms、32ms、64ms或其类似时间),则刷新控制器2900'可将存取命令或刷新信号发送至相关联区段且更新与其部分相关联的时间戳(例如,使用定时器2901)。另外或替代地,若刷新时间指示符指示最后刷新时间在预定时间阈值内,则刷新控制器2900'可被配置为跳过相对于多个存储器组中的一个或多个区段的刷新操作。在这些实施例中,在跳过相对于一个或多个区段的刷新操作之后,刷新控制器2900'可被配置为更改与一个或多个区段相关联的所储存的刷新时间指示符,使得在下一操作循环期间,将刷新该一个或多个区段。例如,如上文所描述,刷新控制器2900'可使用定时器2901来更新所储存的刷新时间指示符。

因此,数据储存器可包括被配置为储存刷新时间指示符的时间戳寄存器,该刷新时间指示符指示最后刷新多个存储器组中的一个或多个区段的时间。此外,刷新控制器2900'可在阈值时间间隔之后,使用定时器的输出来清除储存于数据储存器中的存取信息。

在上文所描述的实施例中的任一者中,对一个或多个区段的存取可包括与一个或多个区段相关联的写入操作。另外或替代地,对一个或多个区段的存取可包括与一个或多个区段相关联的读取操作。

此外,如图29B中所描绘,刷新控制器2900'可包含被配置为至少部分地基于数据储存器内的状态而辅助更新数据储存器2909的行计数器2903及加法器2907。数据储存器2909可包含与多个存储器组相关联的比特表。例如,该比特表可包含被配置为保存用于相关联区段的比特的开关(或开关元件,诸如晶体管)或寄存器(例如,SRAM或其类似物)的阵列。另外或替代地,数据储存器2909可储存与多个存储器组相关联的时间戳。

此外,刷新控制器2900'可包括刷新门2911,该刷新门被配置为基于储存于比特表中的对应值而控制是否进行对一个或多个区段的刷新。例如,刷新门2911可包含逻辑门(诸如,「与(and)门」,该逻辑门在数据储存器2909的对应状态指示相关联区段在一个或多个先前时钟循环期间经刷新或存取的情况下使来自行计数器2903的刷新信号无效。在其他实施例中,刷新门2911可包含微处理器或其他电路,该微处理器或其他电路被配置为在来自数据储存器2909的对应时间戳指示相关联区段在预定阈值时间值内经刷新或存取的情况下使来自行计数器2903的刷新信号无效。

图30为用于存储器芯片(例如,图28的存储器芯片2800)中的部分刷新的处理程序3000的实施例流程图,处理程序3000可由符合本公开的刷新控制器执行,诸如图29A的刷新控制器2900或图29B的刷新控制器2900'。

在步骤3010处,刷新控制器可存取指示多个存储器组中的一个或多个区段的存取操作的信息。例如,如上文关于图29A及图29B所解释,刷新控制器可包括数据储存器,该数据储存器与存储器芯片2800的区段(例如,存储器芯片2800内的存储器胞元的线、列或任何其他分组)相关联且被配置为储存指示相关联区段的最近存取的时间戳或其他信息。

在步骤3020处,刷新控制器可至少部分地基于所存取信息而产生刷新和/或存取命令。例如,如上文关于图29A及图29B所解释,若所存取信息指示最后刷新或访问时间在预定时间阈值内和/或若所存取信息指示最后刷新或存取发生在一个或多个先前时钟循环期间,则刷新控制器可跳过相对于多个存储器组中的一个或多个区段的刷新操作。另外或替代地,刷新控制器可基于所存取信息是否指示最后刷新或访问时间超过预定阈值和/或所存取信息是否指示最后刷新或存取并未在一个或多个先前时钟循环期间发生,而产生刷新或存取相关联区段的意见。

在步骤3030处,刷新控制器可更改与一个或多个区段相关联的所储存的刷新时间指示符,使得在下一操作循环期间,将刷新该一个或多个区段。例如,在跳过相对于一个或多个区段的刷新操作之后,刷新控制器可更改指示该一个或多个区段的存取操作的信息,使得在下一时钟循环期间,将刷新该一个或多个区段。因此,在跳过刷新循环之后,刷新控制器可清除区段的状态(例如,设定为0)。另外或替代地,刷新控制器可设定在当前循环期间刷新和/或存取的区段的状态(例如,设定为1)。在指示一个或多个区段的存取操作的信息包括时间戳的实施例中,刷新控制器可更新与在当前循环期间刷新和/或存取的区段相关联的任何所储存的时间戳。

方法3000还可以包括额外步骤。例如,除步骤3030以外或作为该步骤的替代,感测放大器可存取一个或多个区段且可改变与该一个或多个区段相关联的信息。另外或替代地,感测放大器可在存取已发生时向刷新控制器发信,使得刷新控制器可更新与一个或多个区段相关联的信息。如上文所解释,感测放大器可包含多个晶体管,所述多个晶体管被配置为感测来自将数据储存于一个或多个存储器胞元中的存储器芯片的区段的低功率信号,且将小的电压摆动放大至较高电压电平,使得数据可由诸如如上文所解释的外部CPU或GPU或集成式处理器子单元的逻辑解译。在此实施例中,每当感测放大器存取一个或多个区段时,其可设定(例如,设定为1)与区段相关联的比特,该比特指示相关联区段在前一循环中经存取。在指示一个或多个区段的存取操作的信息包括时间戳的实施例中,每当感测放大器存取一个或多个区段时,其便可触发将来自刷新控制器的定时器的时间戳写入至数据储存器以更新与该区段相关联的任何所储存的时间戳。

图31为用于判定存储器芯片(例如,图28的存储器芯片2800)的刷新的处理程序3100的一实施例流程图。处理程序3100可实施于符合本公开的编译程序内。如上文所解释,「编译程序」指将较高级语言(例如,程序性语言,诸如C、FORTRAN、BASIC或其类似物;面向对象式语言,诸如Java、C++、Pascal、Python或其类似物;等等)转换成较低级语言(例如,组合代码、目标代码、机器码或其类似物)的任何计算机程序。编译程序可允许人类以人类可读语言来程序设计一系列指令,接着将该人类可读语言转换成机器可执行语言。编译程序可包含由一个或多个处理器执行的软件指令。

在步骤3110处,一个或多个处理器可接收较高阶计算机代码。例如,该较高阶计算机代码可编码于存储器(例如,诸如硬盘机或其类似物的非易失性存储器、诸如DRAM的易失性存储器,或其类似物)上的一个或多个档案中或经由网络(例如,因特网或其类似物)接收。另外或替代地,可从使用者接收该较高阶计算机代码(例如,使用诸如键盘的输入设备)。

在步骤3120处,一个或多个处理器可识别要由较高阶计算机代码存取的在与存储器芯片相关联的多个存储器组上分布的多个存储器区段。例如,一个或多个处理器可存取定义存储器芯片的多个存储器组及一对应结构的数据结构。一个或多个处理器可从存储器(例如,诸如硬盘机或其类似物的非易失性存储器、诸如DRAM的易失性存储器,或其类似物)存取数据结构,或经由网络(例如,因特网或其类似物)接收数据结构。在这些实施例中,数据结构包括于可由编译程序存取的一个或多个库中,以准许编译程序产生用于要存取的特定存储器芯片的指令。

在步骤3130处,一个或处理器可评估较高阶计算机代码以识别在多个存储器存取循环内出现的多个存储器读取命令。例如,一个或多个处理器可识别需要自存储器读取的一个或多个读取命令和/或写入至存储器的一个或多个写入命令的较高阶计算机代码内的每一操作。这些指令可包含变量初始化、变量重新指派、对变量进行逻辑运算、输入输出操作或其类似物。

在步骤3140处,一个或多个处理器可致使与多个存储器存取命令相关联的数据跨越多个存储器区段中的每个的分布,使得在多个存储器存取循环中的每个期间存取多个存储器区段中的每个。例如,一个或多个处理器可自定义存储器芯片的结构的数据结构识别存储器区段,且接着将来自较高阶代码的变量指派给存储器区段中的各者,使得在每一刷新循环(其可包含特定数量的时钟循环)期间存取(例如,经由写入或读取)每个存储器区段至少一次。在此实施例中,一个或多个处理器可存取指示较高阶代码的每一线需要多少个时钟循环的信息,以便指派来自较高阶代码的线的变量,使得在特定数量的时钟循环期间存取(例如,经由写入或读取)每个存储器区段至少一次。

在另一实施例中,一个或多个处理器可首先自较高阶代码产生机器码或其他较低阶代码。一个或多个处理器可接着将来自较低阶代码的变量指派给存储器区段中的各者,使得在每一刷新循环(其可包含特定数量的时钟循环)期间存取(例如,经由写入或读取)每个存储器区段至少一次。在此实施例中,较低阶代码的每一线可能需要单一时钟循环。

在上文所给出的实施例中的任一者中,一个或多个处理器可将使用临时输出的逻辑运算或其他命令进一步指派给存储器区段中的各者。这些临时输出也可产生读取和/或写入命令,使得即使尚未将指明的变量指派给经指派的存储器区段,在此刷新循环期间仍存取该存储器区段。

方法3100还可以包括额外步骤。例如,在变量在编译之前经指派的实施例中,一个或多个处理器可从较高阶代码产生机器码或其他较低阶代码。此外,一个或多个处理器可传输经编译代码以供存储器芯片及对应的逻辑电路执行。该逻辑电路可包含诸如GPU或CPU的常规电路,或可包含与存储器芯片在相同基板上的处理群组,例如,如图7A中所描绘。因此,如上文所描述,该基板可包括存储器阵列,该存储器阵列包括多个组,诸如图28中所展示的组2801a及其他组。此外,该基板可包括处理阵列,该处理阵列可包括多个处理器子单元(诸如,图7A中所展示的子单元730a、730b、730c、730d、730e、730f、730g及730h)。

图32为用于判定存储器芯片(例如,图28的存储器芯片2800)的刷新的处理程序3200的另一实施例流程图。处理程序3200可实施于符合本公开的编译程序内。处理程序3200可由执行包含编译程序的软件指令的一个或多个处理器执行。处理程序3200可与图31的处理程序3100分开地或组合地实施。

在步骤3210处,类似于步骤3110,一个或多个处理器可接收较高阶计算机代码。在步骤3220处,类似于步骤3210,一个或多个处理器可识别要由较高阶计算机代码存取的在与存储器芯片相关联的多个存储器组上分布的多个存储器区段。

在步骤3230处,一个或多个处理器可评估较高阶计算机代码以识别各涉及多个存储器区段中的一个或多个的多个存储器读取命令。例如,一个或多个处理器可识别需要自存储器读取的一个或多个读取命令和/或写入至存储器的一个或多个写入命令的较高阶计算机代码内的每一操作。这些指令可包含变量初始化、变量重新指派、对变量进行逻辑运算、输入输出操作或其类似物。

在一些实施例中,一个或多个处理器可使用逻辑电路及多个存储器区段模拟较高阶代码的执行。例如,该模拟可包含较高阶代码的逐线逐步通过,其类似于除错器或其他指令集仿真器(ISS)的情况。该模拟可进一步维持表示多个存储器区段的地址的内部变量,其类似于除错器可如何维持表示处理器的寄存器的内部变量。

在步骤3240处,一个或多个处理器可基于对存储器存取命令的分析且针对多个存储器区段当中的每个存储器区段而追踪自对存储器区段的最后一次存取起所累积的时间量。例如,使用上文所描述的模拟,一个或多个处理器可判定对多个存储器区段中的每个内的一个或多个地址的每一存取(例如,读取或写入)之间的时间长度。可按绝对时间、时钟循环或刷新循环(例如,由存储器芯片的已知刷新速率判定)来量测时间长度。

在步骤3250处,响应于自任何特定存储器区段的最后一次存取起经过的时间量将超过预定阈值的判定,一个或多个处理器可将被配置为致使对特定存储器区段的存取的存储器刷新命令或存储器存取命令中的至少一个引入至较高阶计算机代码中。例如,一个或多个处理器可包括供刷新控制器(例如,图29A的刷新控制器2900或图29B的刷新控制器2900')执行的刷新命令。在逻辑电路不嵌入与存储器芯片相同的基板上的实施例中,一个或多个处理器可产生与用于发送至逻辑电路的较低阶代码分开的用于发送至存储器芯片的刷新命令。

另外或替代地,一个或多个处理器可包括供存储器控制器(其可与刷新控制器分开或并入至刷新控制器中)执行的存取命令。该存取命令可包含虚设命令,该虚设命令被配置为触发对存储器区段的读取操作,但不使逻辑电路对来自存储器区段的经读取或写入变量执行任何其他操作。

在一些实施例中,编译程序可包括来自处理程序3100的步骤及来自处理程序3200的步骤的组合。例如,编译程序可根据步骤3140指派变量且接着根据步骤3250运行上文所描述的模拟以加入任何额外的存储器刷新命令或存储器存取命令中。此组合可允许编译程序跨越尽可能多的存储器区段来分布变量,且为无法在预定阈值时间量存取的任何存储器区段产生刷新或存取命令。在另一组合实施例中,编译程序可根据步骤3230模拟代码,且基于该模拟指示在预定阈值时间量内将不存取的任何存储器区段而根据步骤3140指派变量。在一些实施例中,此组合还可以包括步骤3250以允许编译程序为在预定阈值时间量内无法存取的任何存储器区段产生刷新或存取命令,即使在根据步骤3140的指派完成之后亦如此。

本公开的刷新控制器可允许由逻辑电路(无论系诸如CPU及GPU的常规逻辑电路抑或与存储器芯片在相同基板上的处理群组,例如,如图7A中所描绘)执行的软件停用由刷新控制器执行的自动刷新,且替代地经由所执行软件控制刷新。因此,本公开的一些实施例可将具有已知存取图案的软件提供至存储器芯片(例如,若编译程序能够存取定义存储器芯片的多个存储器组及一对应结构的数据结构)。在这些实施例中,编译后优化器可停用自动刷新,且仅针对存储器芯片的在阈值时间量内未被存取的区段手动地设定刷新控制。因此,类似于上文所描述的步骤3250但在编译之后,编译后优化器可产生刷新命令以确保使用预定阈值时间量存取或刷新每个存储器区段。

缩减刷新循环的另一实施例可包括使用对存储器芯片的存取的预定义图案。例如,若由逻辑电路执行的软件可控制其用于存储器芯片的存取图案,则一些实施例可产生用于超出常规线性线刷新的刷新的存取图案。例如,若控制器判定由逻辑电路执行的软件规则地每隔一行存储器进行存取,则本公开的刷新控制器可使用并非每隔一线进行刷新的存取图案以便加速存储器芯片且缩减功率使用量。

此刷新控制器的实施例展示于图33中。图33描绘符合本公开的通过所储存图案配置的实施例刷新控制器3300。刷新控制器3300可并入本公开的存储器芯片中,该存储器芯片例如具有多个存储器组及包括于多个存储器组中的每个中的多个存储器区段,诸如图28的存储器芯片2800。

刷新控制器3300包括定时器3301(类似于图29A及图29B的定时器2901)、行计数器3303(类似于图29A及图29B的行计数器2903)及加法器3305(类似于图29A及图29B的加法器2907)。此外,刷新控制器3300包括数据储存器3307。不同于图29B的数据储存区2909,数据储存器3307可储存至少一个存储器刷新图案,该至少一个存储器刷新图案要被实施以刷新包括于多个存储器组中的每个中的多个存储器区段。例如,如图33中所描绘,数据储存器3307可包括成行和/或列定义存储器组中的区段的Li(例如,在图33的实施例中,L1、L2、L3及L4)及Hi(例如,在图33的实施例中,H1、H2、H3及H4)。此外,每个区段可与Inci变量(例如,在图33的实施例中,Inc1、Inc2、Inc3及Inc4)相关联,该变量定义与区段相关联的行如何递增(例如,是否存取或刷新每一行,是否每隔其他行进行存取或刷新,或其类似物)。因此,如图33中所展示,刷新图案可包含一表,该表包括由软件指派的多个存储器区段识别符,所述多个存储器区段识别符用以识别特定存储器组中的在刷新循环期间需刷新的多个存储器区段的范围,及该特定存储器组中的在该刷新循环期间不需刷新的多个存储器区段的范围。

因此,数据储存器3308可定义由逻辑电路(无论系诸如CPU及GPU的常规逻辑电路抑或与存储器芯片在相同基板上的处理群组,例如,如图7A中所描绘)执行的软件可选择以供使用的刷新图案。存储器刷新图案可使用软件可配置,以识别在刷新循环期间,特定存储器组中的多个存储器区段中的哪些需刷新,而特定存储器组中的多个存储器区段中的哪些在该刷新循环期间不需刷新。因此,刷新控制器3300可根据Inci刷新在当前循环期间未被存取的所定义区段内的一些或所有行。刷新控制器3300可跳过经设定为在当前循环期间被存取的所定义区段的其他行。

在刷新控制器3300的数据储存器3308包括多个存储器刷新图案的实施例中,每个存储器刷新图案可表示不同的刷新图案,用于刷新包括于多个存储器组中的每个中的多个存储器区段。存储器刷新图案可为可选择的以用于多个存储器区段上。因此,刷新控制器3300可被配置为允许选择在特定刷新循环期间实施多个存储器刷新图案中的哪一个。例如,由逻辑电路(无论系诸如CPU及GPU的常规逻辑电路抑或与存储器芯片在相同基板上的处理群组,例如,如图7A中所描绘)执行的软件可选择不同存储器刷新图案以供在一个或多个不同刷新循环期间使用。替代地,由逻辑电路执行的软件可选择一个存储器刷新图案以供贯穿不同刷新循环中的一些或全部而使用。

可使用储存于数据储存器3308中的一个或多个变量来编码存储器刷新图案。例如,在多个存储器区段布置成行的实施例中,每个存储器区段识别符可被配置为识别在存储器的行内,存储器刷新应开始或结束的特定位置。例如,除Li及Hi以外,一个或多个额外变量也可定义由Li及Hi定义哪些行的哪些部分在区段内。

图34为用于判定存储器芯片(例如,图28的存储器芯片2800)的刷新的处理程序3400的实施例流程图。处理程序3100可由符合本公开的刷新控制器(例如,图33的刷新控制器3300)内的软件实施。

在步骤3410处,刷新控制器可储存至少一个存储器刷新图案,该至少一个存储器刷新图案要被实施以刷新包括于多个存储器组中的每个中的多个存储器区段。例如,如上文关于图33所解释,刷新图案可包含一表,该表包括由软件指派的多个存储器区段识别符,所述多个存储器区段识别符用以识别特定存储器组中的在刷新循环期间需刷新的多个存储器区段的范围,及该特定存储器组中的在刷新循环期间不需刷新的多个存储器区段的范围。

在一些实施例中,至少一个刷新图案可在制造期间编码至刷新控制器上(例如,编码至与刷新控制器相关联或至少可由刷新控制器存取的只读存储器上)。因此,刷新控制器可存取至少一个存储器刷新图案,但不储存该至少一个存储器刷新图案。

在步骤3420及3430处,刷新控制器可使用软件以识别特定存储器组中的多个存储器区段中的哪些在刷新循环期间需刷新,而特定存储器组中的多个存储器区段中的哪些在该刷新循环期间不需刷新。例如,如上文关于图33所解释,由逻辑电路(无论系诸如CPU及GPU的常规逻辑电路抑或与存储器芯片在相同基板上的处理群组,例如,如图7A中所描绘)执行的软件可选择至少一个存储器刷新图案。此外,刷新控制器可存取选定的至少一个存储器刷新图案以在每一刷新循环期间产生对应刷新信号。刷新控制器可根据该至少一个存储器刷新图案刷新在当前循环期间未被存取的所定义区段内的一些或所有部分,且可跳过经设定为在当前循环期间被存取的所定义区段的其他部分。

在步骤3440处,刷新控制器可产生对应刷新命令。例如,如图33中所描绘,加法器3305可包含逻辑电路,该逻辑电路被配置为根据数据储存器3307中的至少一个存储器刷新图案来使用于未被刷新的特定区段的刷新信号无效。另外或替代地,微处理器(图33中未展示)可基于根据数据储存器3307中的至少一个存储器刷新图案将刷新哪些区段而产生特定刷新信号。

方法3400还可以包括额外步骤。例如,在至少一个存储器刷新图案被配置为每一个、两个或其他数量的刷新循环而改变(例如,自L1、H1及Inc1移动至L2、H2及Inc2,如图33中所展示)的实施例中,刷新控制器可根据步骤3430及3440存取数据储存器的不同部分以用于刷新信号的下一判定。类似地,若由逻辑电路(无论系诸如CPU及GPU的常规逻辑电路抑或与存储器芯片在相同基板上的处理群组,例如,如图7A中所描绘)执行的软件自数据储存器选择新的存储器刷新图案以用于一个或多个未来刷新循环中,则刷新控制器可根据步骤3430及3440存取数据储存器的不同部分以用于刷新信号的下一判定。

当设计存储器芯片且目标为存储器的某一容量时,存储器容量改变至较大大小或较小大小可能需要重新设计产品及重新设计整个光罩集。通常,产品设计与市场研究平行地进行,且在一些状况下,产品设计在市场研究可用之前完成。因此,产品设计与市场的实际需求之间可能存在脱节。本公开提出灵活地提供具有满足市场需求的存储器容量的存储器芯片的方式。设计方法可包括在晶圆上设计晶粒连同适当的互连电路系统,使得可从晶圆选择性地切割可含有一个或多个晶粒的存储器芯片,以便提供自单一晶圆生产具有大小可变的存储器容量的存储器芯片的机会。

本公开系关于用于通过从晶圆切割存储器芯片来制造存储器芯片的系统及方法。该方法可用于从晶圆生产大小可选择的存储器芯片。含有晶粒3503的晶圆3501的实施例实施例展示于图35A中。晶圆3501可由半导体材料(例如,硅(Si)、硅锗(SiGe)、绝缘体上硅(SOI)、氮化镓(GaN)、氮化铝(AlN)、氮化铝镓(AlGaN)、氮化硼(BN)、砷化镓(GaAs)、砷化镓铝(AlGaAs)、氮化铟(InN)、以上各者的组合及其类似物)形成。晶粒3503可包括任何合适的电路元件(例如,晶体管、电容器、电阻器和/或其类似物),该电路元件可包括任何合适的半导体、介电或金属组件。晶粒3503可由可能与晶圆3501的材料相同或不同的半导体材料形成。除晶粒3503以外,晶圆3501也可包括其他结构和/或电路系统。在一些实施例中,可提供一个或多个耦接电路且该一个或多个耦接电路将晶粒中的一个或多个耦接在一起。在一实施例实施例中,此耦接电路可包括由两个或多于两个晶粒3503共享的总线。另外,该耦接电路可包括经设计以控制与晶粒3503相关联的电路系统和/或将信息导引至晶粒3503/导引来自晶粒3503的信息的一个或多个逻辑电路。在一些状况下,该耦接电路可包括存储器存取管理逻辑。此逻辑可将逻辑存储器地址转译成与晶粒3503相关联的实体地址。应注意,如本文中所使用,术语制造可共同地指用于建置所公开晶圆、晶粒和/或芯片的步骤中的任一者。例如,制造可指包括于晶圆上的各种晶粒(及任何其他电路系统)的同时布置及形成。制造也可指从晶圆切割大小可选择的存储器芯片以在一些状况下包括一个晶粒,或在其他状况下包括多个晶粒。当然,术语制造并不欲限于这些实施例,而是可包括与所公开存储器芯片及中间结构中的任一者或全部的产生相关联的其他方面。

晶粒3503或一群组的晶粒可用于制造存储器芯片。存储器芯片可包括分布式处理器,如本公开的其他章节中所描述。如图35B中所展示,晶粒3503可包括基板3507及安置于该基板上的存储器阵列。该存储器阵列可包括一个或多个存储器单元,诸如经设计以储存数据的存储器组3511A至3511D。在各种实施例中,存储器组可包括基于半导体的电路元件,诸如晶体管、电容器及其类似物。在一实施例实施例中,一存储器组可包括多行及多列储存单元。在一些状况下,此存储器组可具有大于一兆字节的容量。该存储器组可包括动态或静态存取存储器。

晶粒3503还可以包括安置于基板上的处理阵列,该处理阵列包括多个处理器子单元3515A至3515D,如图35B中所展示。如上文所描述,每个存储器组可包括由一专用总线连接的专用处理器子单元。例如,处理器子单元3515A经由总线或连接件3512与存储器组3511A相关联。应理解,存储器组3511A至3511D与处理器子单元3515A至3515D之间的各种连接系可能的,且仅一些说明性连接展示于图35B中。在一实施例实施例中,处理器子单元可对相关联的存储器组执行读取/写入操作,且可进一步相对于储存于各种存储器组中的存储器执行刷新操作或任何其他合适的操作。

如所提到,晶粒3503可包括被配置为将处理器子单元与其对应存储器组连接的总线的第一群组。实施例总线可包括连接电组件的一组导线或导体,且允许将数据及地址传送至每个存储器组及其相关联的处理器子单元以及从每个存储器组及其相关联的处理器子单元传送数据。在一实施例中,连接件3512可用作用于将处理器子单元3515A连接至存储器组3511A的专用总线。晶粒3503可包括此类总线的群组,每个总线将一处理器子单元连接至一对应的专用存储器组。另外,晶粒3503可包括总线的另一群组,每个总线将处理器子单元(例如,子单元3515A至3515D)彼此连接。例如,此类总线可包括连接件3516A至3516D。在各种实施例中,用于存储器组3511A至3511D的数据可经由输入输出总线3530递送。在一实施例中,输入输出总线3530可携载数据相关信息,及用于控制晶粒3503的存储器单元的操作的命令相关信息。数据信息可包括用于储存于存储器组中的数据、自存储器组读取的数据、基于相对于储存于对应存储器组中的数据执行的操作的来自处理器子单元中的一个或多个的处理结果、命令相关信息、各种代码等。

在各种状况下,由输入输出总线3530传输的数据及命令可由输入输出(IO)控制器3521控制。在一实施例中,IO控制器3521可控制自总线3530至处理器子单元3515A至3515D及来自处理器子单元3515A至3515D的数据流。IO控制器3521可判定自处理器子单元3515A至3515D中的哪一个取回信息。在各种实施例中,IO控制器3521可包括被配置为撤销启动IO控制器3521的熔断器3554。若多个晶粒组合在一起以形成较大存储器芯片(也被称作多晶粒存储器芯片,作为仅含有一个晶粒的单晶粒存储器芯片的替代),则可使用熔断器3554。该多晶粒存储器芯片可接着使用形成该多晶粒存储器芯片的晶粒单元中的一个的IO控制器中的一个,同时通过使用对应于与其他晶粒单元相关的其他IO控制器的熔断器来停用其他IO控制器。

如所提到,每个存储器芯片或前置晶粒或一群组的晶粒可包括与对应存储器组相关联的分布式处理器。在一些实施例中,这些分布式处理器可布置在与多个存储器组安置在相同基板上的处理阵列中。另外,该处理阵列可包括各包括一地址生成器(也被称作地址生成器单元(AGU))的一个或多个逻辑部分。在一些状况下,该地址生成器可为至少一个处理器子单元的部分。该地址生成器可产生自与存储器芯片相关联的一个或多个存储器组取得数据所需的存储器地址。地址产生计算可涉及整数算术运算,诸如加法、减法、模数运算或比特移位。该地址生成器可被配置为一次对多个操作数进行运算。此外,多个地址生成器可同时执行多于一个地址计算运算。在各种实施例中,地址生成器可能与对应存储器组相关联。地址生成器可藉助于对应总线线与其对应存储器组连接。

在各种实施例中,大小可选择的存储器芯片可通过选择性地切割晶圆3501的不同区而由该晶圆形成。如所提到,该晶圆可包括晶粒3503的群组,该群组包括晶圆上所包括的两个或多于两个晶粒(例如,2个、3个、4个、5个、10个或多于10个晶粒)的任何群组。如将在下文进一步所论述,在一些状况下,单一存储器芯片可通过切割晶圆的仅包括一群组的晶粒中的一个晶粒的一部分来形成。在这些状况下,所得存储器芯片将包括与一个晶粒相关联的存储器单元。然而,在其他状况下,大小可选择的存储器芯片可形成为包括多于一个晶粒。这些存储器芯片可通过切割晶圆的包括晶圆上所包括的一群组的晶粒中的两个或多于两个晶粒的区来形成。在这些状况下,晶粒连同将晶粒耦接在一起的耦接电路提供多晶粒存储器芯片。一些额外电路元件也可板载地线连接于芯片之间,诸如时钟元件、数据总线或任何合适的逻辑电路。

在一些状况下,与一群组的晶粒相关联的至少一个控制器可被配置为控制一群组的晶粒作为单一存储器芯片(例如,多存储器单元存储器芯片)进行操作。该控制器可包括管理进入存储器芯片及来自存储器芯片的数据流的一个或多个电路。存储器控制器可为存储器芯片的一部分,或其可为不与存储器芯片直接相关的分开芯片的一部分。在一实施例中,控制器可被配置为促进与存储器芯片的分布式处理器相关联的读取及写入请求或其他命令,且可被配置为控制存储器芯片的任何其他合适的方面(例如,刷新存储器芯片,与分布式处理器相互作用等)。在一些状况下,控制器可为晶粒3503的部分,且在其他状况下,控制器可邻近于晶粒3503布置。在各种实施例中,控制器也可包括存储器芯片上所包括的存储器单元中的至少一个的至少一个存储器控制器。在一些状况下,用于存取存储器芯片上的信息的协议可能与可存在于存储器芯片上的复制逻辑及存储器单元(例如,存储器组)无关。该协议可被配置为具有用于充分存取存储器芯片上的数据的不同ID或地址范围。具有此协议的芯片的实施例可包括具有联合电子设备工程委员会(JEDEC)双数据速率(DDR)控制器的芯片,其中不同存储器组可具有不同地址范围、串行周边接口(SPI)连接,其中不同存储器单元(例如,存储器组)具有不同标识(ID),及其类似物。

在各种实施例中,可从晶圆切割多个区,其中各个区包括一个或多个晶粒。在一些状况下,每一分开区可用以建置一多晶粒存储器芯片。在其他状况下,要从晶圆切割的每个区可包括单一晶粒以提供单晶粒存储器芯片。在一些状况下,该区中的两者或多于两者可具有相同形状且具有以相同方式耦接至耦接电路的相同数量的晶粒。替代地,在一些实施例中,区的第一群组可用以形成第一类型的存储器芯片,且区的第二群组可用以形成第二类型的存储器芯片。例如,如图35C中所展示,晶圆3501可包括区3505,该区可包括单一晶粒,且第二区3504可包括两个晶粒的群组。当从晶圆3501切割区3505时,将提供单晶粒存储器芯片。当从晶圆3501切割区3504时,将提供多晶粒存储器芯片。图35C中所展示的群组仅为说明性,且可从晶圆3501切下晶粒的各种其他区及群组。

在各种实施例中,晶粒可形成于晶圆3501上,使得其沿着晶圆的一或多行布置,如展示于例如图35C中。晶粒可共享对应于一或多行的输入输出总线3530。在一实施例中,可使用各种切割形状从晶圆3501切下一群组的晶粒,其中当切下可用以形成存储器芯片的一群组的晶粒时,可能不包括共享的输入输出总线3530的至少一部分(例如,仅可包括输入输出总线3530的一部分作为形成为包括一群组的晶粒的存储器芯片的一部分)。

如先前所论述,当多个晶粒(例如,晶粒3506A及3506B,如图35C中所展示)用以形成存储器芯片3517时,对应于所述多个晶粒中的一个的一个IO控制器可经启用且被配置为控制至晶粒3506A及3506B的所有处理器子单元的数据流。例如,图35D展示经组合以形成存储器芯片3517的存储器晶粒3506A及3506B,该存储器芯片包括存储器组3511A至3511H、处理器子单元3515A至3515H、IO控制器3521A及3521B,以及熔断器3554A及3554B。应注意,在从晶圆移除存储器芯片3517之前,该存储器芯片对应于晶圆3501的区3517。换言之,如此处且在本公开中别处所使用,一旦从晶圆3501切割,晶圆3501的区3504、3505、3517等便将产生存储器芯片3504、3505、3517等。另外,本文中的熔断器也被称作停用元件。在一实施例中,熔断器3554B可用以撤销启动IO控制器3521B,且IO控制器3521A可用以通过将数据传达至处理器子单元3515A至3515H来控制至所有存储器组3511A至3511H的数据流。在一实施例中,IO控制器3521A可使用任何合适的连接来连接至各种处理器子单元。在一些实施例中,如下文进一步所描述,处理器子单元3515A至3515H可互连,且IO控制器3521A可被配置为控制至形成存储器芯片3517的处理逻辑的处理器子单元3515A至3515H的数据流。

在一实施例中,诸如控制器3521A及3521B的IO控制器以及对应熔断器3554A及3554B可连同形成存储器组3511A至3511H及处理器子单元3515A至3515H一起在晶圆3501上形成。在各种实施例中,当形成存储器芯片3517时,可启动熔断器中的一个(例如,熔断器3554B)使得晶粒3506A及3506B被配置为形成存储器芯片3517,该存储器芯片用作单一芯片且受单一输入输出控制器(例如,控制器3521A)控制。在一实施例中,启动熔断器可包括施加电流以触发熔断器。在各种实施例中,当多于一个晶粒用于形成存储器芯片时,可经由对应熔断器撤销启动除一个IO控制器之外的所有其他IO控制器。

在各种实施例中,如图35C中所展示,多个晶粒连相同组输入输出总线和/或控制总线一起形成于晶圆3501上。输入输出总线3530的实施例绘示于图35C中。在一实施例中,输入输出总线中的一个(例如,输入输出总线3530)可连接至多个晶粒。图35C展示接近晶粒3506A及3506B通过的输入输出总线3530的实施例。如图35C中所展示的晶粒3506A及3506B以及输入输出总线3530的配置仅为说明性的,且可使用各种其他配置。例如,图35E说明形成于晶圆3501上且布置成六边形形式的晶粒3540。可从晶圆3501切下包括四个晶粒3540的存储器芯片3532。在一实施例中,存储器芯片3532可包括通过合适的总线线(例如,线3533,如图35E中所展示)连接至四个晶粒的输入输出总线3530的一部分。为了将信息投送至存储器芯片3532的适当存储器单元,存储器芯片3532可包括置放于输出总线3530的分支点处的输入/输出控制器3542A及3542B。控制器3542A及3542B可经由输入输出总线3530接收命令数据,且选择总线3530的分支用于将信息传输至适当存储器单元。例如,若命令数据包括自/至与晶粒3546相关联的存储器单元的读取/写入信息,则控制器3542A可接收命令请求且将数据传输至总线3530的分支3531A,如图35D中所展示,而控制器3542B可接收命令请求且将数据传输至分支3531B。图35E指示可进行的不同区的各种切割,其中切割线由虚线表示。

在一实施例中,一群组的晶粒及互连电路系统可经设计以包括于如图36A中所展示的存储器芯片3506中。此实施例可包括可被配置为彼此通信的处理器子单元(用于存储器内处理)。例如,要包括于存储器芯片3506中的每一晶粒可包括诸如存储器组3511A至3511D的各种存储器单元、处理器子单元3515A至3515D,以及IO控制器3521及3522。IO控制器3521及3522可并联连接至输入输出总线3530。IO控制器3521可具有熔断器3554,且IO控制器3522可具有熔断器3555。在一实施例中,处理器子单元3515A至3515D可藉助于例如总线3613连接。在一些状况下,IO控制器中的一个可使用对应熔断器来停用。例如,可使用熔断器3555停用IO控制器3522,且IO控制器3521可经由处理器子单元3515A至3515D控制至存储器组3511A至3511D中的数据流,该处理器子单元经由总线3613彼此连接。

如图36A中所展示的存储器单元的配置仅为说明性的,且各种其他配置可通过切割晶圆3501的不同区来形成。例如,图36B展示具有三个域3601至3603的配置,该三个域含有存储器单元且连接至输入输出总线3530。在一实施例中,域3601至3603系使用可由对应熔断器3554至3556停用的IO控制模块3521至3523连接至输入输出总线3530。布置含有存储器单元的域的实施例的另一实施例绘示于图36C中,其中使用总线线3611、3612及3613将三个域3601、3602及3603连接至输入输出总线3530。图36D展示经由IO控制器3521至3524连接至输入输出总线3530A及3530B的存储器芯片3506A至3506D的另一实施例。在一实施例中,可使用对应熔断器元件3554至3557撤销启动IO控制器,如图36D中所展示。

图37展示晶粒3503的各种群组,诸如可包括一个或多个晶粒3503的群组3713及群组3715。在一实施例中,除在晶圆3501上形成晶粒3503以外,晶圆3501也可含有被称作胶合逻辑3711的逻辑电路3711。相较于在不存在胶合逻辑3711的情况下可能已制造的晶粒的数量,胶合逻辑3711可占用晶圆3501上的一些空间,以导致每晶圆3501制造较少数量的晶粒。然而,存在胶合逻辑3711可允许多个晶粒被配置为共同用作单一存储器芯片。例如,胶合逻辑可连接多个晶粒,而不必改变配置且不必为仅用于将晶粒连接在一起的电路系统指明晶粒本身中的任一者内的区域。在各种实施例中,胶合逻辑3711提供与其他存储器控制器的接口,使得多晶粒存储器芯片用作单一存储器芯片。胶合逻辑3711可连同一群组的晶粒(例如,如由群组3713展示)一起切割。替代地,若存储器芯片仅需要一个晶粒,例如,如对于群组3715,则可能不切割胶合逻辑。例如,在不需要实现不同晶粒之间的协作之处,可选择性地消除胶合逻辑。在图37中,可进行不同区的各种切割,例如,如由虚线区所展示。在各种实施例中,如图37中所展示,对于每两个晶粒3506,可在晶圆上布置一个胶合逻辑元件3711。在一些状况下,一个胶合逻辑元件3711可用于形成一群组的晶粒的任何合适数量的晶粒3506。胶合逻辑3711可被配置为连接至来自一群组的晶粒的所有晶粒。在各种实施例中,连接至胶合逻辑3711的晶粒可被配置为形成多晶粒存储器芯片,且可被配置为在晶粒不连接至胶合逻辑3711时形成分开的单晶粒存储器芯片。在各种实施例中,连接至胶合逻辑3711且经设计以共同起作用的晶粒可作为群组从晶圆3501切下,且可包括胶合逻辑3711,例如,如由群组3713所指示。未连接至胶合逻辑3711的晶粒可从晶圆3501切下而不包括胶合逻辑3711,例如,如由群组3715所指示,以形成单晶粒存储器芯片。

在一些实施例中,在从晶圆3501制造多晶粒存储器芯片期间,可判定一个或多个切割形状(例如,形成群组3713、3715的形状)用于产生多晶粒存储器芯片中的所要集合。在一些状况下,如由群组3715所展示,切割形状可能不包括胶合逻辑3711。

在各种实施例中,胶合逻辑3711可为用于控制多晶粒存储器芯片的多个存储器单元的控制器。在一些状况下,胶合逻辑3711可包括可由各种其他控制器修改的参数。例如,用于多晶粒存储器芯片的耦接电路可包括用于配置胶合逻辑3711的参数或存储器控制器的参数的电路(例如,处理器子单元3515A至3515D,如展示于例如图35B中)。胶合逻辑3711可被配置为进行多种任务。例如,逻辑3711可被配置为判定哪些晶粒可能需要寻址。在一些状况下,逻辑3711可用以使多个存储器单元同步。在各种实施例中,逻辑3711可被配置为控制各种存储器单元,使得存储器单元作为单一芯片操作。在一些状况下,可在输入输出总线(例如,总线3530,如图35C中所展示)与处理器子单元3515A至3515D之间添加放大器以放大来自总线3530的数据信号。

在各种实施例中,从晶圆3501切割复杂形状在技术可能为困难/昂贵的,且可采用较简单的切割方法,其限制条件为晶粒在晶圆3501上对准。例如,图38A展示经对准以形成矩形栅格的晶粒3506。在一实施例中,可进行跨越整个晶圆3501的竖直切割3803及水平切割3801以分开切下的一群组的晶粒。在一实施例中,竖直切割3803及水平切割3801可产生含有选定数量的晶粒的群组。例如,切割3803及3801可产生含有单一晶粒的区(例如,区3811A)、含有两个晶粒的区(例如,区3811B)及含有四个晶粒的区(例如,区3811C)。由切割3801及3803形成的区仅为说明性的,且可形成任何其他合适的区。在各种实施例中,取决于晶粒对准,可进行各种切割。例如,若晶粒布置成三角形栅格,如图38B中所展示,则诸如线3802、3804及3806的切割线可用以制成多晶粒存储器芯片。例如,一些区可包括六个晶粒、五个晶粒、四个晶粒、三个晶粒、两个晶粒、一个晶粒任何其他合适数量的晶粒。

图38C展示布置成三角形栅格的总线线3530,其中晶粒3503在通过总线线3530相交形成的三角形的中心对准。晶粒3503可经由总线线3820连接至所有相邻的总线线。通过切割含有两个或多于两个邻近晶粒的区(例如,区3822,如图38C中所展示),至少一个总线线(例如,线3824)保留在区3822内,且总线线3824可用以将数据及命令供应至使用区3822形成的多晶粒存储器芯片。

图39展示可形成于处理器子单元3515A至3515P之间以允许存储器单元的群组用作单一存储器芯片的各种连接件。例如,各种存储器单元的群组3901可包括处理器子单元3515B与子单元3515E之间的连接件3905。连接件3905可用作用于将数据及命令自子单元3515B传输至可用以控制各别存储器组3511E的子单元3515E的总线线。在各种实施例中,处理器子单元之间的连接件可在晶圆3501上形成晶粒期间实施。在一些状况下,额外连接件可在由若干晶粒形成的存储器芯片的封装阶段期间制造。

如图39中所展示,处理器子单元3515A至3515P可使用各种总线(例如,连接件3905)彼此连接。连接件3905可能不含时序硬件逻辑组件,使得在处理器子单元之间及跨越连接件3905的数据传送可能不受时序硬件逻辑组件控制。在各种实施例中,连接处理器子单元3515A至3515P的总线可在晶圆3501上制造各种电路之前布置于晶圆3501上。

在各种实施例中,处理器子单元(例如,子单元3515A至3515P)可互连。例如,子单元3515A至3515P可通过合适总线(例如,连接件3905)连接。连接件3905可将子单元3515A至3515P中的任一者与子单元3515A至3515P中的任何其他子单元连接。在一实施例中,连接的子单元可在相同晶粒上(例如,子单元3515A及3515B),且在其他状况下,连接的子单元可在不同晶粒上(例如,子单元3515B及3515E)。连接件3905可包括用于连接符单元的专用总线且可被配置为在子单元3515A至3515P之间高效地传输数据。

本公开的各种方面系关于用于从晶圆生产大小可选择的存储器芯片的方法。在一实施例中,大小可选择的存储器芯片可由一个或多个晶粒形成。如前文所提到,晶粒可沿着一或多行布置,如展示于例如图35C中。在一些状况下,对应于一或多行的至少一个共享的输入输出总线可布置于晶圆3501上。例如,总线3530可如图35C中所展示而布置。在各种实施例中,总线3530可电连接至晶粒中的至少两个的存储器单元,且连接的晶粒可用以形成多晶粒存储器芯片。在一实施例中,一个或多个控制器(例如,输入输出控制器3521及3522,如图35B中所展示)可被配置为控制用以形成多晶粒存储器芯片的至少两个晶粒的存储器单元。在各种实施例中,可从晶圆切下具有连接至总线3530的存储器单元的晶粒,其具有共享的输入输出总线(例如,总线3530,如图35B中所展示)的一个对应部分,该共享的输入输出总线将信息传输至至少一个控制器(例如,控制器3521、3522)以配置控制器以控制所连接晶粒的存储器单元,以用作单一芯片。

在一些状况下,可在通过切割晶圆3501的区来制造存储器芯片之前测试位于晶圆3501上的存储器单元。可使用至少一个共享的输入输出总线(例如,总线3530,如图35C中所展示)进行该测试。当存储器单元通过测试时,存储器芯片可由含有所述存储器单元的晶粒的群组形成。可舍弃未通过测试的存储器单元,且不将所述存储器单元用于制造存储器芯片。

图40展示从一群组的晶粒建置存储器芯片的处理程序4000的一实施例。在处理程序4000的步骤4011处,可在半导体晶圆3501上布置晶粒。在步骤4015处,可使用任何合适的方法在晶圆3501上制造晶粒。例如,可通过蚀刻晶圆3501,沉积各种电介质、金属或半导体层及进一步蚀刻所沉积层等来制造晶粒。例如,可沉积及蚀刻多个层。在各种实施例中,可使用任何合适的掺杂元素对层进行n型掺杂或P型掺杂。例如,可用磷对半导体层进行n型掺杂有且用硼对半导体层进行P型掺杂。如图35A中所展示,晶粒3503可通过可用以从晶圆3501切下晶粒3503的空间彼此分开。例如,晶粒3503可通过间隔区彼此隔开,其中可选择间隔区的宽度以允许在间隔区中进行晶圆切割。

在步骤4017处,可使用任何合适的方法从晶圆3501切下晶粒3503。在一实施例中,可使用雷射切下晶粒3503。在一实施例中,可首先刻划(scribe)晶圆3501,其后接着进行机械划割。替代地,可使用机械划割锯。在一些状况下,可使用隐式划割处理程序。在划割期间,一旦切下晶粒,晶圆3501便可安装于用于固持晶粒的划割带上。在各种实施例中,可进行大的切割,例如,如在图38A中由切割3801及3803所展示或在图38B中由切割3802、3804或3806所展示。一旦个别地或以群组切下晶粒3503,如在图35C中例如由群组3504所展示,便可封装晶粒3503。晶粒的封装可包括形成至晶粒3503的接点,在接点上方沉积保护层,附接热管理设备(例如,散热片)及囊封晶粒3503。在各种实施例中,取决于选择多少晶粒来形成一存储器芯片,可使用接点及总线的适当配置。在一实施例中,可在存储器芯片封装期间制作形成存储器芯片的不同晶粒之间的接点中的一些。

图41A展示用于制造含有多个晶粒的存储器芯片的处理程序4100的一实施例。处理程序4100的步骤4011可与处理程序4000的步骤4011相同。在步骤4111处,如图37中所展示,可将胶合逻辑3711布置于晶圆3501上。胶合逻辑3711可为用于控制晶粒3506的操作的任何合适的逻辑,如图37中所展示。如前文所描述,胶合逻辑3711的存在可允许多个晶粒用作单一存储器芯片。胶合逻辑3711可提供与其他存储器控制器的接口,使得由多个晶粒形成的存储器芯片用作单一存储器芯片。

在处理程序4100的步骤4113处,可将总线(例如,输入输出总线及控制总线)布置于晶圆3501上。总线可布置为使得其与各种晶粒及诸如胶合逻辑3711的逻辑电路连接。在一些状况下,总线可连接存储器单元。例如,总线可被配置为连接不同晶粒的处理器子单元。在步骤4115处,可使用任何合适的方法制造晶粒、胶合逻辑及总线。例如,可通过蚀刻晶圆3501,沉积各种电介质、金属或半导体层及进一步蚀刻所沉积层等来制造逻辑元件。可使用例如金属蒸镀来制造总线。

在步骤4140处,可使用切割形状以切割连接至单一胶合逻辑3711的晶粒的群组,如展示于例如图37中。可使用含有多个晶粒3503的存储器芯片的存储器要求来判定切割形状。例如,图41B展示处理程序4101,该处理程序可为处理程序4100的变体,其中步骤4117及4119可置于处理程序4100的步骤4140之前。在步骤4117处,用于切割晶圆3501的系统可接收描述存储器芯片的要求的指令。例如,要求可包括形成包括四个晶粒3503的存储器芯片。在一些状况下,在步骤4119处,程序软件可判定用于一群组的晶粒及胶合逻辑3711的周期性图案。例如,周期性图案可包括两个胶合逻辑3711元件及四个晶粒3503,其中每两个晶粒连接至一个胶合逻辑3711。替代地,在步骤4119处,可由存储器芯片的设计者提供该图案。

在一些状况下,可选择该图案以使从晶圆3501形成的存储器芯片的产率达至最大。在一实施例中,可测试晶粒3503的存储器单元以识别具有故障存储器单元的晶粒(此类晶粒被称作发生故障晶粒),且基于故障晶粒的位置,可识别含有通过测试的存储器单元的晶粒3503的群组且可判定适当的切割图案。例如,若在晶圆3501的边缘处,大量晶粒3503发生故障,则可判定切割图案以避开晶圆3501的边缘处的晶粒。处理程序4101的诸如步骤4011、4111、4113、4115及4140的其他步骤可与处理程序4100的相同编号步骤相同。

图41C展示可为处理程序4101的变化形式的处理程序4102的实施例。处理程序4102的步骤4011、4111、4113、4115及4140可与处理程序4101的相同编号步骤相同,处理程序4102的步骤4131可替代处理程序4101的步骤4117,且处理程序4102的步骤4133可替代处理程序4101的步骤4119。在步骤4131处,用于切割晶圆3501的系统可接收描述第一存储器芯片集合及第二存储器芯片集合的要求的指令。例如,要求可包括:形成具有由四个晶粒3503组成的存储器芯片的第一存储器芯片集合;及形成具有由两个晶粒3503组成的存储器芯片的第二存储器芯片集合。在一些状况下,可能需要从晶圆3501形成多于两个存储器芯片集合。例如,第三存储器芯片集合可包括仅由一个晶粒3503组成的存储器芯片。在一些状况下,在步骤4133处,程序软件可判定用于一群组的晶粒及胶合逻辑3711的周期性图案,以用于形成每个存储器芯片集合的存储器芯片。例如,第一存储器芯片集合可包括含有两个胶合逻辑3711及四个晶粒3503的存储器芯片,其中每两个晶粒连接至一个胶合逻辑3711。在各种实施例中,用于相同存储器芯片的胶合逻辑单元3711可链接在一起以用作单一胶合逻辑。例如,在制造胶合逻辑3711期间,可形成将胶合逻辑单元3711彼此链接的适当总线线。

第二存储器芯片集合可包括含有一个胶合逻辑3711及两个晶粒3503的存储器芯片,其中晶粒3503连接至胶合逻辑3711。在一些状况下,当选择第三存储器芯片集合时且当第三存储器芯片集合包括由单一晶粒3503组成的存储器芯片时,这些存储器芯片可能不需要胶合逻辑3711。

当设计存储器芯片或芯片内的存储器实例时,一个重要的特性为在单一时钟循环期间可同时存取的字的数量。对于读取和/或写入,可同时存取的地址愈多(例如,沿着也被称作字或字线的行及也被称作比特或比特线的列的地址),存储器芯片愈快。虽然在开发包括多路端口的存储器时已存在一些活动,该端口允许同时存取多个地址,例如用于建置寄存器档案、现金或共享存储器,但大部分实例使用大小较大且支持多个地址存取的存储器垫。然而,DRAM芯片通常包括连接至每个存储器胞元的每一电容器的单一比特线及单一行线。因此,本公开的实施例试图提供对现有DRAM芯片的多端口存取,而不修改DRAM阵列的此常规单端口存储器结构。

本公开的实施例可使用存储器以两倍于逻辑电路的速度来对存储器实例或芯片进行时钟控制。使用存储器的任何逻辑电路可因此「对应于」存储器及其任何组件。因此,本公开的实施例可在两个存储器阵列时钟循环中对两个地址进行撷取或写入,该两个存储器阵列时钟循环等效于用于逻辑电路的单一处理时钟循环。该逻辑电路可包含诸如控制器、加速器、GPU或CPU的电路,或可包含与存储器芯片在相同基板上的处理群组,例如,如图7A中所描绘。如上文关于图3A所解释,「处理群组」可指基板上的两个或多于两个处理器子单元及其对应存储器组。该群组可表示用于编译代码以供在存储器芯片2800上执行的目的的基板上的空间分布和/或逻辑分组。因此,如上文关于图7A所描述,具有存储器芯片的基板可包括存储器阵列,该存储器阵列具有多个组,诸如图28中所展示的组2801a及其他组。此外,该基板也可包括处理阵列,该处理阵列可包括多个处理器子单元(诸如,图7A中所展示的子单元730a、730b、730c、730d、730e、730f、730g及730h)。

因此,本公开的实施例可在两个连续存储器循环中的每个内从阵列取回数据,以便针对每个逻辑循环处置两个地址,且向逻辑提供两个结果,就如同单端口存储器阵列为双端口存储器芯片一般。额外时钟控制可允许本公开的存储器芯片如同单端口存储器阵列为双端口存储器实例、三端口存储器实例、四端口存储器实例端口或任何其他多端口存储器实例一般起作用。

图42描绘符合本公开的提供沿着存储器芯片的列的双端口存取的电路系统4200的实施例,在该存储器芯片中使用电路系统4200。图42中所描绘的实施例可使用具有两个列多任务器(「mux」)4205a及4205b以在用于逻辑电路的相同时钟循环期间存取相同行上的两个字的一个存储器阵列4201。例如,在一存储器时钟循环期间,RowAddrA用于行解码器4203中且ColAddrA用于多任务器4205a中以缓冲来自具有地址(RowAddrA,ColAddrA)的存储器胞元的数据。在相同存储器时钟循环期间,ColAddrB用于多任务器4205b中以缓冲来自具有地址(RowAddrA,ColAddrB)的存储器胞元的数据。因此,电路系统4200可允许沿着相同行或字线对储存于两个不同地址处的存储器胞元上的数据(例如,DataA及DataB)进行双端口存取。因此,两个地址可共享行使得行解码器4203针对两次取回启动相同字线。此外,如图42中所描绘的实施例可使用列多任务器,使得可在相同存储器时钟循环期间存取两个地址。

类似地,图43描绘符合本公开的提供沿着存储器芯片的行的双端口存取的电路系统4300的一实施例,在该存储器芯片中使用电路系统4300。图43中所描绘的实施例可使用具有与多任务器(「mux」)耦接的行解码器4303以在用于逻辑电路的相同时钟循环期间存取相同列上的两个字的一个存储器阵列4301。例如,在两个存储器时钟循环中的第一存储器时钟循环上,RowAddrA用于行解码器4303中且ColAddrA用于列多任务器4305中以缓冲来自具有地址(RowAddrA,ColAddrA)的存储器胞元的数据(例如,至图43的「缓冲字」缓冲器)。在两个存储器时钟循环中的第二存储器时钟循环上,RowAddrB用于行解码器4303中且ColAddrA用于列多任务器4305中以缓冲来自具有地址(RowAddrB,ColAddrA)的存储器胞元的数据。因此,电路系统4300可允许沿着相同列或比特线对储存于两个不同地址处的存储器胞元上的数据(例如,DataA及DataB)进行双端口存取。因此,两个地址可共享行使得列解码器(其可与一个或多个列多任务器分开或组合,如图43中所描绘)针对两次取回启动相同比特线。如图43中所描绘的实施例可使用两个存储器时钟循环,这是因为行解码器4303启动每一字线都可能需要一个存储器时钟循环。因此,若以至少两倍于对应的逻辑电路的速度进行时钟控制,则使用电路系统4300的存储器芯片可用作双端口存储器。

因此,如上文所解释,图43可在比用于对应的逻辑电路的时钟循环快的两个存储器时钟循环期间取回DataA及DataB。例如,行解码器(例如,图43的行解码器4303)及列解码器(其可与一个或多个列多任务器分开或组合,如图43中所描绘)可被配置为以至少两倍于对应的逻辑电路产生两个地址的速率的速率进行时钟控制。例如,用于电路系统4300的时钟电路(图43中未展示)可根据至少两倍于对应的逻辑电路产生两个地址的速率的速率对电路系统4300进行时钟控制。

可分开地或组合地使用图42的实施例及图43的实施例。因此,在单端口存储器阵列或垫上提供双端口功能性的电路系统(例如,电路系统4200或4300)可包含沿着至少一行及至少一列布置的多个存储器组。所述多个存储器组在图42中描绘为存储器阵列4201及在图43中描绘为存储器阵列4301。该实施例可进一步使用被配置为在单一时钟循环期间接收用于读取或写入的两个地址的至少一个行多任务器(如图43中所描绘)或至少一个列多任务器(如图42中所描绘)。此外,该实施例可使用行解码器(例如,图42的行解码器4203及图43的行解码器4303)及列解码器(其可与一个或多个列多任务器分开或组合,如图42及图43中所描绘)以从两个地址读取或写入至两个地址。例如,行解码器及列解码器可在第一循环期间从至少一个行多任务器或至少一个列多任务器取回两个地址中的第一地址,且解码对应于第一地址的字线及比特线。此外,行解码器及列解码器可在第二循环期间从至少一个行多任务器或至少一个列多任务器取回两个地址中的第二地址,且解码对应于第二地址的字线及比特线。该取回可各包含使用行解码器启动对应于地址的字线及使用列解码器启动经启动的字线上的对应于地址的比特线。

尽管上文针对取回进行了描述,但图42及图43的实施例(无论系分开地抑或组合地实施)均可包括写入命令。例如,在第一循环期间,行解码器及列解码器可将从至少一个行多任务器或至少一个列多任务器取回的第一数据写入至两个地址中的第一地址。例如,在第二循环期间,行解码器及列解码器可将从至少一个行多任务器或至少一个列多任务器取回的第二数据写入至两个地址中的第二地址。

图42绘示在第一地址及第二地址共享字线地址时的此处理程序的实施例,而图43绘示在第一地址及第二地址共享列地址时的此处理程序的实施例。如下文关于图47进一步所描述,在第一地址及第二地址不共享字线地址抑或列地址时,可实施相同处理程序。

因此,尽管上文的实施例提供沿着行或列中的至少一个的双端口存取,但额外实施例可提供沿着行和列两者的双端口存取。图44描绘符合本公开的提供沿着存储器芯片的行和列两者的双端口存取的电路系统4400的实施例,在该存储器芯片中使用电路系统4400。因此,电路系统4700可表示图42的电路系统4200与图43的电路系统4300的组合。

图44中所描绘的实施例可使用具有与多任务器(「mux」)耦接的行解码器4403以在用于逻辑电路的相同时钟循环期间存取两行的一个存储器阵列4401。此外,图44中所描绘的实施例可使用具有与多任务器(「mux」)耦接的列解码器(或多任务器)4405以在相同时钟循环期间存取两列的存储器阵列4401。例如,在两个存储器时钟循环中的第一存储器时钟循环上,RowAddrA用于行解码器4403中且ColAddrA用于列多任务器4405中以缓冲来自具有地址(RowAddrA,ColAddrA)的存储器胞元的数据(例如,至图44的「缓冲字」缓冲器)。在两个存储器时钟循环中的第二存储器时钟循环上,RowAddrB用于行解码器4403中且ColAddrB用于列多任务器4405中以缓冲来自具有地址(RowAddrB,ColAddrB)的存储器胞元的数据。因此,电路系统4400可允许对储存于两个不同地址处的存储器胞元上的数据(例如,DataA及DataB)进行双端口存取。如图44中所描绘的实施例可使用额外缓冲器,这是因为行解码器4403启动每一字线可能都需要一个存储器时钟循环。因此,若以至少两倍于对应的逻辑电路的速度进行时钟控制,则使用电路系统4400的存储器芯片可用作双端口存储器。

尽管在图44中未描绘,但电路系统4400还可以包括沿着行或字线的图46(下文进一步描述)的额外电路系统和/或沿着列或比特线的类似额外电路系统。因此,电路系统4400可启动对应电路系统(例如,通过断开一个或多个开关元件,诸如图46的开关元件4613a、4613b及其类似物中的一个或多个)以启动包括地址的断开部分(例如,通过连接电压或允许电流流动至断开部分)。因此,当电路系统的元件(诸如,线或其类似物)包括识别地址的位置时和/或当电路系统的元件(诸如,开关元件)控制至由地址识别的存储器胞元的供应或电压和/或电流时,该电路系统可「对应」。电路系统4400可接着使用行解码器4403及列多任务器4405以解码对应字线及比特线,以从位于经启动的断开部分中的地址取回数据或将数据写入至该地址。

如图44中进一步所描绘,电路系统4400可进一步使用被配置为在单一时钟循环期间接收用于读取或写入的两个地址的至少一个行多任务器(描绘为与行解码器4403分开,但可并入其中)和/或至少一个列多任务器(例如,描绘为与列多任务器4405分开,但可并入其中)。因此,实施例可使用行解码器(例如,行解码器4403)及列解码器(其可与列多任务器4405分开或组合)以从两个地址读取或写入至两个地址。例如,行解码器及列解码器可在存储器时钟循环期间从至少一个行多任务器或至少一个列多任务器取回两个地址中的第一地址,且解码对应于第一地址的字线及比特线。此外,行解码器及列解码器可在相同存储器循环期间从至少一个行多任务器或至少一个列多任务器取回两个地址中的第二地址,且解码对应于第二地址的字线及比特线。

图45A及图45B描绘用于在单端口存储器阵列或垫上提供双端口功能性的现有复制技术。如图45A中所展示,双端口读取可通过跨越存储器阵列或垫使数据的复本保持同步来提供。因此,可从存储器实例的两个复本执行读取,如图45A中所描绘。此外,如图45B中所展示,双端口写入可通过跨越存储器阵列或垫复制所有写入来提供。例如,存储器芯片可能需要使用存储器芯片的逻辑电路重复地发送写入命令,每一数据复本发送一个写入命令。替代地,在一些实施例中,如图45A中所展示,额外电路系统可允许使用存储器实例的逻辑电路发送单写入命令,单写入命令由额外电路系统自动地复制以跨越存储器阵列或垫产生写入数据的复本,以便使复本保持同步。图42、图43及图44的实施例可通过使用多任务器在单一存储器时钟循环中存取两条比特线(例如,如图42中所描绘)和/或通过比对应的逻辑电路更快地时钟控制存储器(例如,如图43及图44中所描绘)及提供额外多任务器以处置额外地址而非复制存储器中的所有数据来缩减来自这些现有复制技术的冗余。

除上文所描述的更快时钟控制和/或额外多任务器以外,本公开的实施例也可使用在存储器阵列内的一些点处断开比特线和/或字线的电路系统。这些实施例可允许对阵列的多个同时存取,只要行解码器及列解码器存取不耦接至断开电路系统的相同部分的不同位置即可。例如,可同时存取具有不同字线及比特线的位置,这是因为断开电路系统可允许行和列解码存取不同地址而无电干扰。在设计存储器芯片期间,可权衡存储器阵列内的断开区的粒度与断开电路系统所需的额外区域。

用于实施此同时存取的架构描绘于图46中。具体而言,图46描绘在单端口存储器阵列或垫上提供双端口功能性的电路系统4600的实施例。如图46中所描绘,电路系统4600可包括沿着至少一行及至少一列布置的多个存储器垫(例如,存储器垫4609a、垫4609b及其类似物)。电路系统4600的布局还包括多条字线,诸如对应于行的字线4611a及4611b,以及对应于列的比特线4615a及4615b。

图46所绘示的实施例包括十二个存储器垫,每个存储器垫具有两条线及八个列。在其他实施例中,基板可包括任何数量的存储器垫,且每个存储器垫可包括任何数量条线及任何数量的列。一些存储器垫可包括相同数量的线及列(如图46中所展示),而其他存储器垫可包括不同数量的线和/或列。

尽管在图46中未描绘,但电路系统4600可进一步使用被配置为在单一时钟循环期间接收用于读取或写入的两个(或三个或任何多个)地址的至少一个行多任务器(与行解码器4601a和/或4601b分开或与该行解码器合并)或至少一个列多任务器(例如,列多任务器4603a和/或4603b)。此外,实施例可使用行解码器(例如,行解码器4601a和/或4601b)及列解码器(其可与列多任务器4603a和/或4603b分开或组合)以从两个(或多于两个)地址读取或写入至两个(或多于两个)地址。例如,行解码器及列解码器可在存储器时钟循环期间从至少一个行多任务器或至少一个列多任务器取回两个地址中的第一地址,且解码对应于第一地址的字线及比特线。此外,行解码器及列解码器可在相同存储器循环期间从至少一个行多任务器或至少一个列多任务器取回两个地址中的第二地址,且解码对应于第二地址的字线及比特线。如上文所解释,只要两个地址处于不耦接至断开电路系统(例如,开关元件,诸如4613a、4613b及其类似物)的相同部分的不同位置中,便可在相同存储器时钟循环期间进行存取。另外,电路系统4600可在第一存储器时钟循环期间同时存取前两个地址,且接着在第二存储器时钟循环期间同时存取接下来两个地址。在这些实施例中,若以至少两倍于对应的逻辑电路的速度进行时钟控制,则使用电路系统4600的存储器芯片可用作四端口存储器。

图46还包括被配置为用作开关的至少一个行电路及至少一个列电路。例如,诸如4613a、4613b及其类似物的对应开关元件可包含晶体管或任何其他电元件,其被配置为允许或停止电流流动和/或连接或断开电压与连接至诸如4613a、4613b及其类似物的开关元件的字线或比特线。因此,对应开关元件可将电路系统4600分成断开部分。尽管描绘为包含单一行且每一行包含十六列,但电路系统4600内的断开区可取决于电路系统4600的设计而包括不同粒度等级。

电路系统4600可使用控制器(例如,行控制件4607)以启动至少一个行电路及至少一个列电路中的对应者,以便在上文所描述的地址操作期间启动对应断开区。例如,电路系统4600可传输一个或多个控制信号以闭合开关元件(例如,开关元件4613a、4613b及其类似物)中的对应者。在开关元件4613a、4613b及其类似物包含晶体管的实施例中,控制信号可包含断开晶体管的电压。

取决于包括地址的断开区,可由电路系统4600启动开关元件中的多于一者。例如,为到达图46的存储器垫4609b内的地址,必须断开允许存取存储器垫4609a的开关元件以及允许存取存储器垫4609b的开关元件。行控制件4607可判定要启动的开关元件,以便根据特定地址取回电路系统4600内的特定地址。

图46表示用以划分存储器阵列(例如,包含存储器垫4609a、垫4609b及其类似物)的字线的电路系统4600的实施例。然而,其他实施例可使用类似电路系统(例如,将存储器芯片4600分成断开区的开关元件)以划分存储器阵列的比特线。因此,电路系统4600的架构可用于双列存取(如图42或图44中所描绘的情况)以及双行存取(如图43或图44中所描绘的情况)中。

用于对存储器阵列或垫进行多循环存取的处理程序描绘于图47A中。具体而言,图47A为用于在单端口存储器阵列或垫上提供双端口存取(例如,使用图43的电路系统4300或图44的电路系统4400)的处理程序4700的实施例的流程图,可使用符合本公开的行解码器及列解码器执行处理程序4700,诸如分别图43或图44的行解码器4303或4403,及列解码器(其可与一个或多个列多任务器分开或组合,诸如分别描绘于图43或图44中的列多任务器4305或4405)。

在步骤4710处,在第一存储器时钟循环期间,该电路系统可使用至少一个行多任务器及至少一个列多任务器以解码对应于两个地址中的第一地址的字线及比特线。例如,至少一个行解码器可启动字线,且至少一个列多任务器可放大来自沿着经启动的字线并对应于第一地址的存储器胞元的电压。可将经放大电压提供至使用包括该电路系统的存储器芯片的逻辑电路,或根据下文所描述的步骤4720缓冲经放大电压。该逻辑电路可包含诸如GPU或CPU的电路,或可包含与存储器芯片在相同基板上的处理群组,例如,如图7A中所描绘。

尽管上文描述为读取操作,但方法4700可类似地处理写入操作。例如,至少一个行解码器可启动字线,且至少一个列多任务器可将电压施加至沿着经启动的字线并对应于第一地址的存储器胞元,以将新数据写入至该存储器胞元。在一些实施例中,该电路系统可将对写入的确认提供至使用包括该电路系统的存储器芯片的逻辑电路,或根据下文步骤4720缓冲该确认。

在步骤4720处,该电路系统可缓冲第一地址的所取回数据。例如,如图43及图44中所描绘,缓冲器可允许电路系统取回两个地址中的第二地址(如下文描述于步骤4730中)且将两次取回的结果一起传回。缓冲器可包含寄存器、SRAM、非易失性存储器或任何其他数据储存设备。

在步骤4730处,在第二存储器时钟循环期间,该电路系统可使用至少一个行多任务器及至少一个列多任务器以解码对应于两个地址中的第二地址的字线及比特线。例如,至少一个行解码器可启动字线,且至少一个列多任务器可放大来自沿着经启动的字线并对应于第二地址的存储器胞元的电压。可将经放大电压提供至使用包括该电路系统的存储器芯片的逻辑电路,无论系个别地抑或连同例如来自步骤4720的经缓冲电压一起。该逻辑电路可包含诸如GPU或CPU的电路,或可包含与存储器芯片在相同基板上的处理群组,例如,如图7A中所描绘。

尽管上文描述为读取操作,但方法4700可类似地处理写入操作。例如,至少一个行解码器可启动字线,且至少一个列多任务器可将电压施加至沿着经启动的字线并对应于第二地址的存储器胞元,以将新数据写入至该存储器胞元。在一些实施例中,该电路系统可将对写入的确认提供至使用包括该电路系统的存储器芯片的逻辑电路,无论系个别地抑或连同例如来自步骤4720的经缓冲电压一起。

在步骤4740处,该电路系统可输出第二地址与经缓冲第一地址的所取回数据。例如,如图43及图44中所描绘,该电路系统可将两次取回的结果(例如,来自步骤4710及4730)一起传回。该电路系统可将结果传回至使用包括该电路系统的存储器芯片的逻辑电路,该逻辑电路可包含诸如GPU或CPU的电路,或可包含与存储器芯片在相同基板上的处理群组,例如,如图7A中所描绘。

尽管参考多个循环进行描述,但若两个地址共享一字线,如图42中所描绘,则方法4700可允许对两个地址的单循环存取。例如,步骤4710及4730可在相同存储器时钟循环期间进行,这是因为多个列多任务器可在相同存储器时钟循环期间解码相同字线上的不同比特线。在这些实施例中,可跳过缓冲步骤4720。

用于同时存取(例如,使用上文所描述的电路系统4600)的处理程序描绘于图47B中。因此,尽管依序地展示,图47B的步骤可全部在相同存储器时钟循环期间进行,且可同时执行至少一些步骤(例如,步骤4760与4780或步骤4770与4790)。具体而言,图47B为用于在单端口存储器阵列或垫上提供双端口存取(例如,使用图42的电路系统4200或图46的电路系统4600)的处理程序4750的实施例的流程图,可使用符合本公开的行解码器及列解码器执行处理程序4750,诸如分别图42或图46的行解码器4203或行解码器4601a及4601b,及列解码器(其可与一个或多个列多任务器分开或组合,诸如分别描绘于图42或图46中的列多任务器4205a及4205b或列多任务器4603a及4306b)。

在步骤4760处,在一存储器时钟循环期间,该电路系统可基于两个地址中的第一地址启动至少一个行电路及至少一个列电路中的对应者。例如,该电路系统可传输一个或多个控制信号以闭合包含至少一个行电路及至少一个列电路的开关元件中的对应者。因此,该电路系统可存取包括两个地址中的第一地址的对应断开区。

在步骤4770处,在该存储器时钟循环期间,该电路系统可使用至少一个行多任务器及至少一个列多任务器以解码对应于第一地址的字线及比特线。例如,至少一个行解码器可启动字线,且至少一个列多任务器可放大来自沿着经启动的字线并对应于第一地址的存储器胞元的电压。可将经放大电压提供至使用包括该电路系统的存储器芯片的逻辑电路。例如,如上文所描述,该逻辑电路可包含诸如GPU或CPU的电路,或可包含与存储器芯片在相同基板上的处理群组,例如,如图7A中所描绘。

尽管上文描述为读取操作,但方法4500可类似地处理写入操作。例如,至少一个行解码器可启动字线,且至少一个列多任务器可将电压施加至沿着经启动的字线并对应于第一地址的存储器胞元,以将新数据写入至该存储器胞元。在一些实施例中,该电路系统可将对写入的确认提供至使用包括该电路系统的存储器芯片的逻辑电路。

在步骤4780处,在相同循环期间,该电路系统可基于两个地址中的第二地址启动至少一个行电路及至少一个列电路中的对应者。例如,该电路系统可传输一个或多个控制信号以闭合包含至少一个行电路及至少一个列电路的开关元件中的对应者。因此,该电路系统可存取包括两个地址中的第二地址的对应断开区。

在步骤4790处,在相同循环期间,该电路系统可使用至少一个行多任务器及至少一个列多任务器以解码对应于第二地址的字线及比特线。例如,至少一个行解码器可启动字线,且至少一个列多任务器可放大来自沿着经启动的字线并对应于第二地址的存储器胞元的电压。可将经放大电压提供至使用包括该电路系统的存储器芯片的逻辑电路。例如,如上文所描述,该逻辑电路可包含诸如GPU或CPU的常规电路,或可包含与存储器芯片在相同基板上的处理群组,例如,如图7A中所描绘。

尽管上文描述为读取操作,但方法4500可类似地处理写入操作。例如,至少一个行解码器可启动字线,且至少一个列多任务器可将电压施加至沿着经启动的字线并对应于第二地址的存储器胞元,以将新数据写入至该存储器胞元。在一些实施例中,该电路系统可将对写入的确认提供至使用包括该电路系统的存储器芯片的逻辑电路。

尽管参考单一循环进行描述,但若两个地址处于共享字线或比特线(或以其他方式共享至少一个行电路及至少一个列电路中的开关元件)的断开区中,则方法4500可允许对两个地址的多循环存取。例如,步骤4760及4770可在第一存储器时钟循环期间进行,在该第一存储器时钟循环中,第一行解码器及第一列多任务器可解码对应于第一地址的字线及比特线,而步骤4780及4790可在第二存储器时钟循环期间进行,在该第二存储器时钟循环中,第二行解码器及第二列多任务器可解码对应于第二地址的字线及比特线。

用于沿着行和列两者的双端口存取的架构的另一实施例描绘于图48中。具体而言,图48描绘使用多个行解码器结合多个列多任务器提供沿着行和列两者的双端口存取的电路系统4800的一实施例。在图48中,行解码器4801a可存取第一字线,且列多任务器4803a可解码来自沿着第一字线的一个或多个存储器胞元的数据,而行解码器4801b可存取第二字线,且列多任务器4803b可解码来自沿着第二字线的一个或多个存储器胞元的数据。

如关于图47B所描述,此存取可在一个存储器时钟循环期间同时进行。因此,类似于图46的架构,图48的架构(包括下文描述于图49中的存储器垫)可允许在相同时钟循环中存取多个地址。例如,图48的架构可包括任何数量的行解码器及任何数量的列多任务器,使得与行解码器及列多任务器的数量对应的数量的地址可全部在单一存储器时钟循环内存取。

在其他实施例中,此存取沿着两个存储器时钟循环可依序进行。通过比对应的逻辑电路更快地时钟控制存储器芯片4800,两个存储器时钟循环可等效于使用存储器的逻辑电路的一个时钟循环。例如,如上文所描述,该逻辑电路可包含诸如GPU或CPU的常规电路,或可包含与存储器芯片在相同基板上的处理群组,例如,如图7A中所描绘。

其他实施例可允许同时存取。例如,如关于图42所描述,多个列解码器(其可包含列多任务器,诸如4803a及4803b,如图48中所展示)可在单一存储器时钟循环期间读取沿着相同字线的多条比特线。另外或替代地,如关于图46所描述,电路系统4800可并有额外电路系统使得此存取可为同时的。例如,行解码器4801a可存取第一字线,且列多任务器4803a可在相同存储器时钟循环期间解码来自沿着第一字线的存储器胞元的数据,在该存储器时钟循环中,行解码器4801b存取第二字线,且列多任务器4803b解码来自沿着第二字线的存储器胞元的数据。

图48的架构可与形成存储器组的经修改存储器垫一起使用,如图49中所展示。在图49中,通过两条字线及两条比特线存取每个存储器胞元(描绘为类似于DRAM的电容器,但也可包含以类似于SRAM或任何其他存储器胞元的方式布置的数个晶体管)。因此,图49的存储器垫4900允许通过两个不同逻辑电路同时存取两个不同比特,或甚至存取相同比特。然而,图49的实施例使用对存储器垫的修改而非在标准DRAM存储器垫上实施双端口解决方案,该存储器垫经线连接以用于单端口存取,如上文实施例一般。

尽管描述为具有两个端口,但上文所描述的实施例中的任一者可扩展至多于两个端口。例如,图42、图46、图48及图49的实施例可分别包括额外的列多任务器或行多任务器,以在单一时钟循环期间提供对额外列或行的存取。作为另一实施例,图43及图44的实施例可包括额外的行解码器和/或列多任务器,以在单一时钟循环期间分别提供对额外行或列的存取。

如上文及下文进一步所使用,术语「耦接」可包括直接连接、间接连接、电通信及其类似物。

此外,如「第一」、「第二」及其类似物的术语用以区分具有相同或类似名称或标题的元件或方法步骤,且未必指示空间或时间次序。

通常,存储器芯片可包括存储器组。存储器组可耦接至行解码器及列解码器,该解码器被配置为选择要读取或写入的特定字(或其他固定大小的数据单元)。每个存储器组可包括用以储存数据单元的存储器胞元、用以放大来自通过行解码器及列解码器选择的存储器胞元的电压,及任何其他适当电路。

每个存储器组通常具有特定I/O宽度。例如,I/O宽度可包含字。

虽然由使用存储器芯片的逻辑电路执行的一些处理程序可受益于使用极长字,但一些其他处理程序可仅需要该字的一部分。

实际上,存储器内计算单元(诸如,与存储器芯片安置于相同基板上的处理器子单元,例如,如图7A中所描绘及描述)频繁地执行仅需要该字的一部分的存储器存取操作。

为了缩减在仅使用一部分时与存取整个字相关联的延时,本公开的实施例可提供用于仅取得一字的一个或多个部分的方法及系统,藉此缩减与传送该字的不需要部分相关联的数据损失且允许存储器设备中的功率节省。

此外,本公开的实施例也可缩减存储器芯片与其他实体(诸如,逻辑电路,无论系分开的,如CPU及GPU,抑或与存储器芯片包括于相同基板上,诸如图7A中所描绘及描述的处理器子单元)之间的相互作用的功率消耗,该其他实体存取存储器芯片,其可仅接收或写入该字的一部分。

存储器存取命令(例如,来自使用存储器的逻辑电路)可包括存储器中的地址。例如,该地址可包括行地址及列地址,或可例如通过存储器的存储器控制器转移成行地址及列地址。

在诸如DRAM的许多易失性存储器中,将行地址发送(例如,直接由逻辑电路或使用存储器控制器)至行解码器,该行解码器启动整个行(也被称作字线)且加载包括于该行中的所有比特线。

该列地址识别经启动行上的比特线,其在包括比特线的存储器组外部转送且传送至下一层级电路系统。例如,下一层级电路系统可包含存储器芯片的I/O总线。在使用存储器内处理的实施例中,下一层级电路系统可包含存储器芯片的处理器子单元(例如,如图7A中所描绘)。

因此,下文所描述的存储器芯片可包括于如图3A、图3B、图4至图6、图7A至图7D、图11至图13、图16至图19、图22或图23中的任一者中所说明的存储器芯片中,或以其他方式包含该存储器芯片。

该存储器芯片可通过针对存储器胞元而非逻辑胞元优化的第一制造处理程序来制造。例如,由第一制造处理程序制造的存储器胞元可展现比由第一制造处理程序制造的逻辑电路的临界尺寸小的临界尺寸(例如,小超过2倍、3倍、4倍、5倍、6倍、7倍、8倍、9倍、10倍及其类似物)。例如,第一制造处理程序可包含模拟制造处理程序、DRAM制造处理程序及其类似物。

此存储器芯片可包含集成电路,该集成电路可包括存储器单元。该存储器单元可包括存储器胞元、输出端口及读取电路系统。在一些实施例中,该存储器单元还可以包括处理单元,诸如,如上文所描述的处理器子单元。

例如,该读取电路系统可包括缩减单元及存储器内读取路径的第一群组,该存储器内读取路径用于经由输出端口输出多达第一数量的比特。该输出端口可连接至芯片外逻辑电路(诸如,加速器、CPU、GPU或其类似物)或片上处理器子单元,如上文所描述。

在一些实施例中,该处理单元可包括缩减单元,可为缩减单元的部分,可不同于缩减单元,或可以其他方式包含缩减单元。

存储器内读取路径可包含于集成电路中(例如,可在存储器单元中),且可包括被配置用于从存储器胞元读取和/或写入至存储器胞元的任何电路和/或链路。例如,存储器内读取路径可包括感测放大器、耦接至存储器胞元的导体、多任务器及其类似物。

该处理单元可被配置为将一读取请求发送至该存储器单元以从该存储器单元读取第二数量的比特。另外或替代地,该读取请求可源自芯片外逻辑电路(诸如,加速器、CPU、GPU或其类似物)。

该缩减单元可被配置为例如通过使用本文中所描述的部分字存取中的任一者来辅助缩减与存取请求相关的功率消耗。

该缩减单元可被配置为在由该读取请求触发的读取操作期间基于该第一数量的比特及该第二数量的比特而控制该存储器内读取路径。例如,来自缩减单元的控制信号可影响读取路径的存储器消耗,以缩减与所请求的第二数量的比特不相关的存储器读取路径的能量消耗。例如,该缩减单元可被配置为在第二数量小于第一数量时控制不相关的存储器读取路径。

如上文所解释,该集成电路可包括于如图3A、图3B、图4至图6、图7A至图7D、图11至图13、图16至图19、图22或图23中的任一者中所说明的存储器芯片中,可包括该存储器芯片或以其他方式包含该存储器芯片。

不相关的存储器内读取路径可与第一数量的比特中的不相关的比特相关,诸如第一数量的比特中的不包括于第二数量的比特中的比特。

图50说明本公开的一实施例中的集成电路5000,其包括:存储器胞元阵列5050中的存储器胞元5001至5008;输出端口5020,其包括比特5021至5028;读取电路系统5040,其包括存储器读取路径5011至5018;及缩减单元5030。

当使用对应的存储器读取路径读取第二数量的比特时,第一数量的比特中的不相关比特可对应于不应读取的比特(例如,不包括于第二数量的比特中的比特)。

在读取操作期间,缩减单元5030可被配置为启动对应于第二数量的比特的存储器读取路径,使得经启动的存储器读取路径可被配置为输送第二数量的比特。在这些实施例中,可仅启动对应于第二数量的比特的存储器读取路径。

在读取操作期间,缩减单元5030可被配置为切断每一不相关的存储器读取路径的至少一部分。例如,不相关的存储器读取路径可对应于第一数量的比特中的不相关比特。

应注意,替代切断不相关的存储器路径的至少一部分,缩减单元5030可替代地保证不启动不相关的存储器路径。

另外或替代地,在读取操作期间,缩减单元5030可被配置为将不相关的存储器读取路径维持在低功率模式中。例如,低功率模式可包含分别向不相关的存储器路径供应低于正常工作电压或电流的电压或电流。

缩减单元5030可被进一步配置为控制不相关的存储器读取路径的比特线。

因此,缩减单元5030可被配置为加载相关的存储器读取路径的比特线,且将不相关的存储器读取路径的比特线维持在低功率模式中。例如,仅可加载相关的存储器读取路径的比特线。

另外或替代地,缩减单元5030可被配置为加载相关的存储器读取路径的比特线,同时将不相关的存储器读取路径的比特线维持为撤销启动。

在一些实施例中,缩减单元5030可被配置为在读取操作期间利用相关的存储器读取路径的部分,且将每一不相关的存储器读取路径的一部分维持在低功率模式中,其中该部分不同于比特线。

如上文所解释,存储器芯片可使用感测放大器以放大来自包括于存储器芯片中的存储器胞元的电压。因此,缩减单元5030可被配置为在读取操作期间利用相关的存储器读取路径的部分,且将与不相关的存储器读取路径中的至少一些读取路径相关联的感测放大器维持在低功率模式中。

在这些实施例中,缩减单元5030可被配置为在读取操作期间利用相关的存储器读取路径的部分,且将与所有不相关的存储器读取路径相关联的一个或多个感测放大器维持在低功率模式中。

另外或替代地,缩减单元5030可被配置为在读取操作期间利用相关的存储器读取路径的部分,且将在与不相关的存储器读取路径相关联的一个或多个感测放大器之后(例如,在空间上和/或在时间上)的不相关的存储器读取路径的部分维持在低功率模式中。

在上文所描述的实施例中的任一者中,该存储器单元可包括列多任务器(未示出)。

在这些实施例中,缩减单元5030可耦接于列多任务器与输出端口之间。

另外或替代地,缩减单元5030可嵌入于列多任务器中。

另外或替代地,缩减单元5030可耦接于存储器胞元与列多任务器之间。

缩减单元5030可包含可为可独立控制的缩减子单元。例如,不同的缩减子单元可与不同的存储器单元列相关联。

尽管上文关于读取操作及读取电路系统进行描述,但上文实施例可类似地应用于写入操作及写入电路系统。

例如,根据本公开的集成电路可包括存储器单元,该存储器单元包含存储器胞元、输出端口及写入电路系统。在一些实施例中,该存储器单元还可以包括处理单元,诸如,如上文所描述的处理器子单元。该写入电路系统可包括缩减单元及用于经由输出端口输出多达第一数量的比特的存储器内写入路径的第一群组。该处理单元可被配置为将一写入请求发送至该存储器单元以写入来自该存储器单元的第二数量的比特。另外或替代地,该写入请求可源自芯片外逻辑电路(诸如,加速器、CPU、GPU或其类似物)。缩减单元5030可被配置为在由该写入请求触发的写入操作期间基于该第一数量的比特及该第二数量的比特而控制该存储器写入路径。

图51说明存储器组5100,该存储器组包括使用行地址及列地址(例如,来自片上处理器子单元或芯片外逻辑电路,诸如加速器、CPU、GPU或其类似物)来寻址的存储器胞元的阵列5111。如图51中所展示,存储器胞元馈接至比特线(竖直)及字线(水平,为简单起见省略许多字线)。此外,行解码器5112可馈入有行地址(例如,来自片上处理器子单元、芯片外逻辑电路,或图51中未展示的存储器控制器),列多任务器5113可馈入有列地址(例如,来自片上处理器子单元、芯片外逻辑电路,或图51中未展示的存储器控制器),且列多任务器5113可经由输出总线5115接收来自多达整个线的输出及多达一字的输出。在图51中,列多任务器5113的输出总线5115耦接至主I/O总线5114。在其他实施例中,输出总线5115可耦接至存储器芯片(例如,如图7A中所描绘)的发送行地址及列地址的处理器子单元。为简单起见,未展示将存储器组分成存储器垫。

图52说明存储器组5101。在图52中,存储器组还说明为包括存储器内处理(PIM)逻辑5116,该逻辑具有耦接至输出总线5115的输入端。PIM逻辑5116可产生地址(例如,包含行地址及列地址)且经由PIM地址总线5118输出地址以存取存储器组。PIM逻辑5116为还包含处理单元的缩减单元(例如,单元5030)的实施例。PIM逻辑5016可控制图52未展示的辅助缩减功率的其他电路。PIM逻辑5116可进一步控制包括存储器组5101的存储器单元的存储器路径。

如上文所解释,在一些状况下,字长(例如,选择一次传送的比特线的数量)可为大的。

在这些状况下,用于读取和/或写入的每一字可与可在读取和/或写入操作的各种阶段消耗功率的存储器路径相关联,例如:

a.加载比特线——为了将比特线加载至所需值(在读取循环中从比特线上的电容器,抑或在写入循环中要写入至电容器的新值),需要停用位于存储器阵列的末端处的感测放大器且确保保存数据的电容器不放电或充电(否则,储存于其上的数据将被破坏);及

b.经由选择比特线的列多任务器将来自感测放大器的数据移动至芯片的其余部分(移动至将数据传入及传出芯片的I/O总线或移动至将使用数据的嵌入式逻辑,诸如与存储器在相同基板上的处理器子单元)。

为了达成功率节省,本公开的集成电路可在行启动时间判定一字的一些部分为不相关的且接着针对该字的该不相关的部分将停用信号发送至一个或多个感测放大器。

图53说明存储器单元5102,该存储器单元包括存储器胞元阵列5111、行解码器5112、耦接至输出总线5115的列多任务器5113,及PIM逻辑5116。

存储器单元5102还包括启用或停用比特至列多任务器5113的通道的开关5201。开关5201可包含模拟开关、被配置为用作开关的晶体管,被配置为控制至存储器单元5102的部分的供应或电压和/或电流流动。感测放大器(未示出)可位于存储器胞元阵列的末端处,例如,在开关5201之前(在空间上和/或在时间上)。

开关5201可由从PIM逻辑5116经由总线5117发送的启用信号控制。当断开时,该开关被配置为断开存储器单元5102的感测放大器(未示出),且因此不对与感测放大器断开的比特线放电或充电。

开关5201及PIM逻辑5116可形成缩减单元(例如,缩减单元5030)。

在又一实施例中,PIM逻辑5116可将启用信号发送至感测放大器(例如,当感测放大器具有启用输入时)而非发送至开关5201。

比特线可另外或替代地在其他点处断开,例如,不在比特线的末端处及在感测放大器之后断开。例如,比特线可在进入阵列5111之前断开。

在这些实施例中,在从感测放大器及转送硬件(诸如,输出总线5115)的数据传送上,也可节省功率。

其他实施例(其可节省较少功率,但可较容易实施)聚焦于节省列多任务器5113的功率且将损失从列多任务器5113转移至下一层级电路系统。例如,如上文所解释,下一层级电路系统可包含存储器芯片的I/O总线(诸如,总线5115)。在使用存储器内处理的实施例中,下一层级电路系统可另外或替代地包含存储器芯片的处理器子单元(诸如,PIM逻辑5116)。

图54A说明分段为区段5202的列多任务器5113。列多任务器5113的每个区段5202可通过从PIM逻辑5116经由总线5119发送的启用和/或停用信号来个别地启用或停用。列多任务器5113也可由地址列总线5118馈入。

图54A的实施例可提供对来自列多任务器5113的输出的不同部分的较佳控制。

应注意,对不同存储器路径的控制可具有不同分辨率,例如范围为从一比特分辨率至多比特分辨率。前者在功率节省的意义上可能更有效。后者的实施可能较简单且需要较少控制信号。

图54B说明方法5130的实施例。例如,可使用上文关于图50、图51、图52、图53或图54A所描述的存储器单元中的任一者来实施方法5130。

方法5130可包括步骤5132及5134。

步骤5132可包括:通过集成电路的处理单元(例如,PIM逻辑5116)将存取请求发送至集成电路的存储器单元以从该存储器单元读取第二数量的比特。该存储器单元可包括存储器胞元(例如,阵列5111的存储器胞元)、输出端口(例如,输出总线5115),及读取/写入电路系统,该读取/写入电路系统可包括缩减单元(例如,缩减单元5030)及存储器读取/写入路径的第一群组,该存储器读取/写入路径用于经由输出端口输出和/或输入多达第一数量的比特。

存取请求可包含读取请求和/或写入请求。

存储器输入/输出路径可包含存储器读取路径、存储器写入路径和/或用于读取及写入两者的路径。

步骤5134可包括对存取请求作出响应。

例如,步骤5134可包括在由存取请求触发的存取操作期间通过缩减单元(例如,单元5030)基于第一数量的比特及第二数量的比特而控制存储器读取/写入路径。

步骤5134还可以包括以下操作中的任一者和/或以下操作中的任一者的任何组合。下文列出的操作中的任一者可在对存取请求作出响应期间执行,但也可在对存取请求作出响应之前和/或之后执行。

因此,步骤5134可包含以下操作中的至少一个:

a.在第二数量小于第一数量时控制不相关的存储器读取路径,其中不相关的存储器读取路径与第一数量的比特中的不包括于第二数量的比特中的比特相关联;

b.在读取操作期间启动相关的存储器读取路径,其中相关的存储器读取路径被配置为输送第二数量的比特;

c.在读取操作期间切断不相关的存储器读取路径中的每个的至少一部分;

d.在读取操作期间将不相关的存储器读取路径维持在低功率模式中;

e.控制不相关的存储器读取路径的比特线;

f.加载相关的存储器读取路径的比特线且将不相关的存储器读取路径的比特线维持在低功率模式中;

g.加载相关的存储器读取路径的比特线,同时将不相关的存储器读取路径的比特线维持为撤销启动;

h.在读取操作期间利用相关的存储器读取路径的部分且将每一不相关的存储器读取路径的一部分维持在低功率模式中,其中该部分不同于比特线;

i.在读取操作期间利用相关的存储器读取路径的部分且将用于不相关的存储器读取路径中的至少一些读取路径的感测放大器维持在低功率模式中;

j.在读取操作期间利用相关的存储器读取路径的部分且将不相关的存储器读取路径中的至少一些读取路径的感测放大器维持在低功率模式中;及

k.在读取操作期间利用相关的存储器读取路径的部分且将在不相关的存储器读取路径的感测放大器之后的不相关的存储器读取路径维持在低功率模式中。

低功率模式或闲置模式可包含存储器存取路径的功率消耗低于在存储器存取路径用于存取操作时存储器存取路径的功率消耗的模式。在一些实施例中,低功率模式可甚至涉及切断存储器存取路径。低功率模式可另外或替代地包括不启动存储器存取路径。

应注意,在比特线阶段期间发生的功率缩减可能需要在开放字线之前应知晓存储器存取路径的相关性或不相关性。在别处发生(例如,在列多任务器中)的功率缩减可替代地允许在每次存取时决定存储器存取路径的相关性或不相关性。

DRAM及其他存储器类型(诸如,SRAM、快闪存储器或其类似物)常常从存储器组建置,该存储器组通常建置为允许行和列存取方案。

图55说明存储器芯片5140的实施例,该存储器芯片包括多个存储器垫及相关联逻辑(诸如,行和列解码器,在图55中分别描绘为RD及COL)。在图55的实施例中,垫被分组成组且具有通过其的字线及比特线。存储器垫及相关联逻辑在图55中标明为5141、5142、5143、5144、5145及5146,且共享至少一个总线5147。

存储器芯片5140可包括于如图3A、图3B、图4至图6、图7A至图7D、图11至图13、图16至图19、图22或图23中的任一者中所说明的存储器芯片中,可包括该存储器芯片或以其他方式包含该存储器芯片。

例如,在DRAM中,与启动新行(例如,准备用于存取的新线)相关联的开销很大。一旦一线经启动(也被称作开放),该行内的数据便可用于更快存取。在DRAM中,此存取可能以随机方式进行。

与启动新线相关联的两个问题为功率及时间:

c.由于共同存取该线上的所有电容器及必须加载该线所导致的电流骤增,功率会上升(例如,当开放仅具有几个存储器组的线时,功率可达到若干安培);及

d.时间延迟问题主要与加载行(字)线及接着加载比特(列)线所花费的时间相关联。

本公开的一些实施例可包括用以在启动线期间缩减峰值功率消耗且缩减线启动时间的系统及方法。一些实施例可至少在一定程度上牺牲一线内的完全随机存取,以缩减这些功率及时间成本。

例如,在一个实施例中,存储器单元可包括第一存储器垫、第二存储器垫及启动单元,该启动单元被配置为启动包括于第一存储器垫中的存储器胞元的第一群组,而不启动包括于第二存储器垫中的存储器胞元的第二群组。存储器胞元的该第一群组及存储器胞元的该第二群组可均属于该存储器单元的单一行。

替代地,该启动单元可被配置为启动包括于第二存储器垫中的存储器胞元的第二群组,而不启动存储器胞元的第一群组。

在一些实施例中,该启动单元可被配置为在启动存储器胞元的第一群组之后启动存储器胞元的第二群组。

例如,该启动单元可被配置为在存储器胞元的第一群组的启动已完成之后起始的延迟时段期满之后启动存储器胞元的第二群组。

另外或替代地,该启动单元可被配置为基于信号的值而启动存储器胞元的第二群组,该信号在耦接至存储器胞元的第一群组的第一字线区段上产生的。

在上文所描述的实施例中的任一者中,该启动单元可包括安置于第一字线区段与第二字线区段之间的中间电路。在这些实施例中,第一字线区段可耦接至第一存储器胞元且第二字线区段可耦接至第二存储器胞元。中间电路的非限制性实施例包括开关、正反器、缓冲器、反相器及其类似物,其中的一些贯穿图56至图61加以说明。

在一些实施例中,第二存储器胞元可耦接至第二字线区段。在这些实施例中,第二字线区段可耦接至通过至少第一存储器垫的旁路字线路径。此类旁路路径的实施例说明于图61中。

该启动单元可包含控制单元,该控制单元被配置为基于来自与单一行相关联的字线的启动信号而控制电压(和/或电流)至存储器胞元的第一群组及存储器胞元的第二群组的供应。

在另一实施例中,存储器单元可包括第一存储器垫、第二存储器垫及启动单元,该启动单元被配置为将启动信号供应至第一存储器垫的存储器胞元的第一群组且延迟该启动信号至第二存储器垫的存储器胞元的第二群组的供应,至少直至存储器胞元的第一群组的启动已完成。存储器胞元的该第一群组及存储器胞元的该第二群组可属于该存储器单元的单一行。

例如,该启动单元可包括可被配置为延迟供应启动信号的延迟单元。

另外或替代地,该启动单元可包括比较器,该比较器可被配置为在其输入端处接收启动信号且基于启动信号的至少一个特性而控制延迟单元。

在另一实施例中,存储器单元可包括第一存储器垫、第二存储器垫及隔离单元,该隔离单元可被配置为:在第一存储器垫的第一存储器胞元被启动的初始启动时段期间将该第一存储器胞元与第二存储器垫的第二存储器胞元相隔离;及在该初始启动时段之后将该第一存储器胞元耦接至该二存储器胞元。第一存储器胞元及第二存储器胞元可属于存储器单元的单一行。

在以下实施例中,可能不需要对存储器垫本身进行修改。在某些示例中,实施例可依赖于对存储器组的少量修改。

以下图式描绘缩短添加至存储器组的字信号,藉此将字线分裂成数个较短部分的机构。

在以下诸图中,为了清楚起见省略各种存储器组组件。

图56至图61说明存储器组的部分(分别标明为5140(1)、5140(2)、5140(3)、5140(4)、5140(5)及5149(6)),该部分包括分组于不同群组内的行解码器5112及多个存储器垫(诸如,5150(1)、5150(2)、5150(3)、5150(4)、5150(5)、5150(6)、5151(1)、5151(2)、5151(3)、5151(4)、5151(5)、5151(6)、5152(1)、5152(2)、5152(3)、5152(4)、5152(5)及5152(6))。

布置成行的存储器垫可包括不同群组。

图56至图59及图61说明存储器垫的九个群组,其中每一群组包括一对存储器垫。可使用任何数量的群组,每一群组具有任何数量的存储器垫。

存储器垫5150(1)、5150(2)、5150(3)、5150(4)、5150(5)及5150(6)布置成行,共享多条存储器线,且分成三个群组:第一上部群组,其包括存储器垫5150(1)及5150(2);第二上部群组,其包括存储器垫5150(3)及5150(4);及第三上部群组,其包括存储器垫5150(5)及5150(6)。

类似地,存储器垫5151(1)、5151(2)、5151(3)、5151(4)、5151(5)及5151(6)布置成行,共享多条存储器线且分成三个群组:第一中间群组,其包括存储器垫5151(1)及5151(2);第二中间群组,其包括存储器垫5151(3)及5151(4);及第三中间群组,其包括存储器垫5151(5)及5151(6)。

此外,存储器垫5152(1)、5152(2)、5152(3)、5152(4)、5152(5)及5152(6)布置成行,共享多条存储器线且分组成三个群组:第一下部群组,其包括存储器垫5152(1)及5152(2);第二下部群组,其包括存储器垫5152(3)及5152(4);及第三下部群组,其包括存储器垫5152(5)及5152(6)。任何数量的存储器垫可布置成行并共享存储器线,且可分成任何数量的群组。

例如,每个群组的存储器垫的数量可为一个、两个或可超过两个。

如上文所解释,启动电路可被配置为启动存储器垫的一个群组,而不启动共享相同存储器线或至少耦接至具有相同线地址的不同存储器线区段的存储器垫的另一群组。

图56至图61说明启动电路的不同示例。在一些实施例中,启动电路的至少一部分(诸如,中间电路)可位于存储器垫群组之间,以允许启动一个群组的存储器垫,而不启动相同行的存储器垫的另一群组。

图56说明如定位于存储器的第一上部群组的不同线与存储器垫的第二上部群组的不同线之间的中间电路,诸如延迟或隔离电路5153(1)至5153(3)。

图56还说明如定位于存储器的第二上部群组的不同线与存储器垫的第三上部群组的不同线之间的中间电路,诸如延迟或隔离电路5154(1)至5154(3)。另外,一些延迟或隔离电路定位于由中间群组的存储器垫形成的群组之间。此外,一些延迟或隔离电路定位于由下部群组的存储器垫形成的群组之间。

该延迟或隔离电路可延迟或停止字线信号从行解码器5112沿着一行传播至另一群组。

图57说明包含正反器(诸如,5155(1)至5155(3)及5156(1)至5156(3))的中间电路,诸如延迟或隔离电路。

当将启动信号注入至字线时,启动第一垫群组中的一者(取决于该字线),而沿着该字线的其他群组保持撤销启动。可在下一时钟循环启动其他群组。例如,可在下一时钟循环启动其他群组中的第二群组,且可在又一时钟循环之后启动其他群组中的第三群组。

正反器可包括D型正反器或任何其他类型的正反器。为简单起见,从图式省略馈入至D型正反器的时钟。

因此,对第一群组的存取可使用电力以仅对与第一群组相关联的字线的部分充电,此比对整条字线充电更快且需要更少电流。

可在存储器垫群组之间使用多于一个正反器,藉此增加开放部分之间的延迟。另外或替代地,实施例可使用较慢时钟以增加延迟。

此外,经启动的群组可仍含有来自所使用的先前线值的群组。例如,该方法可允许启动新的线区段,同时仍存取先前线的数据,藉此缩减与启动新线相关联的损失。

因此,一些实施例可具有经启动的第一群组且允许先前启动线的其他群组保持在作用中,其中比特线的信号彼此不干扰。

另外,一些实施例可包括开关及控制信号。该控制信号可由组控制器控制或通过在控制信号之间添加正反器(例如,产生上文所描述的机构具有的相同时序效应)来控制。

图58说明诸如延迟或隔离电路的中间电路,其为开关(诸如,5157(1)至5157(3)及5158(1)至5158(3))且定位于另一群组的一群组之间。定位于群组之间的一组开关可由专用控制信号控制。在图58中,控制信号可由行控制单元5160(1)发送且由不同组开关之间的一个或多个延迟单元的序列(例如,单元5160(2)及5160(3))延迟。

图59说明诸如延迟或隔离电路的中间电路,其为反相器门或缓冲器(诸如,5159(1)至5159(3)及5159'1(0-5159'(3))的序列且定位于存储器垫群组之间。

替代开关,可在存储器垫群组之间使用缓冲器。缓冲器可能不允许开关之间沿着字线降低电压,此为在使用单一晶体管结构时有时会发生的效应。

其他实施例可允许更多的随机存取,且通过使用添加至存储器组的区域仍提供极低的启动功率及时间。

图60绘示一实施例,用以说明使用接近存储器垫定位的全局字线(诸如,5152(1)至5152(8))。这些字线可能通过或可能不通过存储器垫且经由诸如开关(诸如,5157(1)至5157(8))的中间电路耦接至存储器垫内的字线。该开关可控制将启动哪一存储器垫且允许存储器控制器在每一时间点处仅启动相关线部分。不同于上文所描述的使用线部分的依序启动的实施例,图60的实施例可提供更好的控制。

诸如行部分启用信号5170(1)及7150(2)的启用信号可源自未展示的逻辑,诸如存储器控制器。

图61说明全局字线5180通过存储器垫且形成用于可能不需要在垫外部投送的字线信号的旁路路径。因此,图61中所展示的实施例可以一些存储器密度为代价来缩减存储器组的面积。

在图61中,全局世界线可不间断地通过存储器垫且可能不连接至存储器胞元。区域字线区段可由开关中的一个控制且连接至垫中的存储器胞元。

当存储器垫群组提供字线的实质分割区时,存储器组可实际上支持完全随机存取。

用于减缓启动信号沿着字线的散布的另一实施例也可节省一些布线及逻辑,在存储器垫之间使用开关和/或其他缓冲或隔离电路,而不使用专用启用信号及专用线来输送启用信号。

例如,比较器可用以控制开关或其他缓冲或隔离电路。当由比较器监测的字线区段上的信号的电平达到某一电平时,比较器可启动开关或其他缓冲或隔离电路。例如,某一电平可指示完全加载先前字线区段。

图62说明用于操作存储器单元的方法5190。例如,可使用上文关于图56至图61所描述的存储器组中的任一者来实施方法5130。

方法5190可包括步骤5192及5194。

步骤5192可包括通过启动单元启动包括于存储器单元的第一存储器垫中的存储器胞元的第一群组,而不启动包括于存储器单元的第二存储器垫中的存储器胞元的第二群组。存储器胞元的该第一群组及存储器胞元的该第二群组可均属于该存储器单元的单一行。

步骤5194可包括通过启动单元启动存储器胞元的第二群组,例如,在步骤5192之后。

可在启动存储器胞元的第一群组时,在完全启动存储器胞元的第一群组之后,在存储器胞元的第一群组的启动已完成之后起始的延迟时段期满之后,在存储器胞元的第一群组撤销启动之后及在类似情况下执行步骤5194。

延迟时段可为固定或可调整的。例如,延迟时段的持续时间可基于存储器单元的预期存取图案,或可与预期存取图案无关地设定。延迟时段的范围可介于少于一毫秒与多于一秒之间。

在一些实施例中,步骤5194可基于信号的值起始,该信号在耦接至存储器胞元的第一群组的第一字线区段上产生的。例如,当信号的值超过第一阈值时,其可指示存储器胞元的第一群组完全启动。

步骤5192及5194中的任一者可涉及使用安置于第一字线区段与第二字线区段之间的中间电路(例如,启动单元的中间电路)。第一字线区段可耦接至第一存储器胞元且第二字线区段可耦接至第二存储器胞元。

中间电路的实施例贯穿图56至图61予以说明。

步骤5192及5194还可以包括通过控制单元来控制启动信号至存储器胞元的第一群组及存储器胞元的第二群组的供应,该启动信号来自与单一行相关联的字线。

本公开的一些实施例可使用芯片内测试单元来加速测试。

一般而言,存储器芯片测试需要大量测试时间。缩减测试时间可缩减生产成本且还允许进行更多测试,以产生更可靠的产品。

图63及图64说明测试器5200及芯片(或芯片的晶圆)5210。测试器5200可包括管理测试的软件。测试器5200可将不同数据序列运行至所有存储器5210,且接着读回该序列以识别存储器5210的发生故障比特位于何处。一旦辨识到,测试器5200便可发出修复比特的命令,且若能够修复问题,则测试器5200可声明存储器5210通过。在其他状况下,可声明一些芯片未通过。

测试器5200可写入测试序列且接着读回数据以将其与预期结果进行比较。

图64展示测试系统,其具有测试器5200及被平行地测试的芯片(诸如,5210)的完整晶圆5202。例如,测试器5200可通过导线总线连接至芯片中的每个。

如图64中所展示,测试器5200必须数次读取及写入所有存储器芯片,且该数据必须经由外部芯片接口传递。

此外,例如使用可编程配置信息测试集成电路的逻辑及存储器组两者可为有益的,可使用规则I/O操作提供该配置信息。

该测试也可受益于集成电路内存在测试单元。

该测试单元可属于集成电路且可分析测试结果,并找到例如逻辑(例如,如图7A中所描绘及所描述的处理器子单元)和/或存储器(例如,跨越多个存储器组)中的故障。

存储器测试器通常极简单且根据简单格式与集成电路交换测试向量。例如,可存在写入向量,该写入向量包括成对的要写入的存储器条目的地址与要写入至存储器条目的值。也可存在读取向量,该读取向量包括要读取的存储器条目的地址。写入向量的地址中的至少一些可与读取向量中的至少一些地址相同。写入向量的至少一些其他地址可不同于读取向量的至少一些其他地址。当经编程时,存储器测试器也可接收预期结果向量,该预期结果向量可包括要读取的存储器条目的地址及要读取的预期值。存储器测试器可将预期值与其读取值进行比较。

根据一实施例,集成电路(具有或不具有集成电路的存储器)的逻辑(例如,处理器子单元)可通过存储器测试器使用相同协议/格式来测试。例如,写入向量中的一些值可为要由集成电路的逻辑执行的命令(且可例如涉及计算和/或存储器存取)。可运用读取向量及预期结果向量来编程存储器测试器,该预期结果向量可包括存储器条目地址,其中的一些储存计算的预期值。因此,存储器测试器可用于测试逻辑以及存储器。存储器测试器通常比逻辑测试器更简单且更便宜,且所提议方法允许使用简单的存储器测试器执行复杂的逻辑测试。

在一些实施例中,存储器内的逻辑可通过仅使用向量(或其他数据结构)而不使用逻辑测试中常见的更复杂机制(诸如,例如经由接口与控制器通信,告知逻辑测试哪一电路)来启用对存储器内的逻辑的测试。

替代使用测试单元,存储器控制器可被配置为接收存取包括于配置信息中的存储器条目的指令,且执行存取指令并输出结果。

图65至图69中所说明的集成电路中的任一者可执行测试,甚至在缺乏测试单元的情况下或在存在不能够执行测试的情况下。

本公开的实施例可包括使用存储器平行性及内部芯片带宽来加速及改良测试时间的方法及系统。

该方法及系统可基于存储器芯片测试本身(相对于测试器运行测试、读取测试结果及分析结果),保存结果且最终允许测试器读取该结果(且在需要时,将存储器芯片编程回,例如启动冗余机构)。该测试可包括测试存储器或测试存储器组及逻辑(在具有要测试的起作用逻辑部分的计算存储器的状况下,诸如上文在图7中所描述的状况)。

在一个实施例中,该方法可包括读取及写入芯片内的数据使得外部带宽不限制测试。

在存储器芯片包括处理器子单元的实施例中,每一处理器子单元可通过测试代码或配置来编程。

在存储器芯片具有无法执行测试代码的处理器子单元或不具有处理器子单元但具有存储器控制器的实施例中,存储器控制器接着可被配置为读取及写入图案(例如,在外部编程至控制器)且标记故障的位置(例如,将值写入至存储器条目,读取该条目,及接收不同于写入值的值)以供进一步分析。

应注意,测试存储器可能需要测试大量比特,例如,测试存储器的每一比特及验证受测比特是否起作用。此外,有时可在不同电压及温度条件下重复存储器测试。

对于一些缺陷,可启动一个或多个冗余机构(例如,通过编程快闪存储器或OTP或烧断熔断器)。此外,可能还必须测试存储器芯片的逻辑及模拟电路(例如,控制器、调节器、I/O)。

在一个实施例中,集成电路可包括:基板、安置于基板上的存储器阵列、安置于基板上的处理阵列,及安置于基板上的接口。

本文中所描述的集成电路可包括于如图3A、图3B、图4至图6、图7A至图7D、图11至图13、图16至图19、图22或图23中的任一者中所说明的存储器芯片中,可包括该存储器芯片,或以其他方式包含该存储器芯片。

图65至图69说明各种集成电路5210及测试器5200。

该集成电路说明为包括存储器组5212、芯片接口5211(诸如,由该存储器组共享的I/O控制器5214及总线5213)及逻辑单元(在下文中为「逻辑」)5215。图66说明熔断器接口5216及耦接至熔断器接口及不同存储器组的总线5217。

图65至图70还说明测试处理程序中的各种步骤,诸如:

a.写入测试序列5221(图65、图67、图68及图69);

b.读回测试结果5222(图67、图68及图69);

c.写入预期结果序列5223(图65);

d.读取故障地址以修复5224(图66);及

e.程序熔断器5225(图66)。

每个存储器组可耦接至其自身的逻辑单元5215和/或由该逻辑单元来控制。然而,如上文所描述,可提供对逻辑单元5215的任何存储器组分配。因此,逻辑单元5215的数量可不同于存储器组的数量,逻辑单元可控制多于单一存储器组或一存储器组的一部分,及其类似物。

逻辑单元5215可包括一个或多个测试单元。图65说明逻辑5215内的测试单元(TU)5218。TU可包括于所有或一些逻辑单元5212中。应注意,测试单元可与逻辑单元分开或与逻辑单元集成。

图65还说明TU 5218内的测试图案生成器(标明为GEN)5219。

测试图案生成器可包括于所有或一些测试单元中。为简单起见,测试图案生成器及测试单元未说明于图66至图70中,但可包括于这些实施例中。

该存储器阵列可包括多个存储器组。此外,该处理阵列可包括多个测试单元。所述多个测试单元可被配置为测试多个存储器组以提供测试结果。该接口可被配置为将指示测试结果的信息输出至在集成电路外部的设备。

所述多个测试单元可包括至少一个测试图案生成器,该至少一个测试图案生成器被配置为产生至少一个测试图案以用于测试多个存储器组中的一个或多个。在一些实施例中,如上文所解释,所述多个测试单元中的每个可包括一测试图案生成器,该测试图案生成器被配置为产生一测试图案以供所述多个测试单元中的特定测试单元使用以测试多个存储器组中的至少一个。如上文所指示,图65说明测试单元内的测试图案生成器(GEN)5219。一个或多个或甚至所有逻辑单元可包括测试图案生成器。

至少一个测试图案生成器可被配置为从接口接收用于产生至少一个测试图案的指令。测试图案可包括在测试期间应存取(例如,读取和/或写入)的存储器条目和/或要写入至该条目的值,及其类似物。

该接口可被配置为从可在集成电路外部的外部单元接收配置信息,该配置信息包括用于产生至少一个测试图案的指令。

至少一个测试图案生成器可被配置为从存储器阵列读取配置信息,该配置信息包括用于产生至少一个测试图案的指令。

在一些实施例中,该配置信息可包括向量。

该接口可被配置为从可在集成电路外部的设备接收配置信息,该配置信息可包括可为至少一个测试图案的指令。

例如,至少一个测试图案可包括要在存储器阵列的测试期间存取的存储器阵列条目。

至少一个测试图案进一步可包括要写入至在存储器阵列的测试期间存取的存储器阵列条目的输入数据。

另外或替代地,至少一个测试图案进一步可包括要写入至在存储器阵列的测试期间存取的存储器阵列条目的输入数据,及要从在存储器阵列的测试期间存取的存储器阵列条目读取的输出数据的预期值。

在一些实施例中,所述多个测试单元可被配置为从存储器阵列取回一旦由所述多个测试单元执行便使所述多个测试单元测试该存储器阵列的测试指令。

例如,该测试指令可包括于配置信息中。

配置信息可包括存储器阵列的测试的预期结果。

另外或替代地,该配置信息可包括要从在存储器阵列的测试期间存取的存储器阵列条目读取的输出数据的值。

另外或替代地,该配置信息可包括向量。

在一些实施例中,所述多个测试单元可被配置为从存储器阵列取回一旦由所述多个测试单元执行便使所述多个测试单元测试该存储器阵列且测试该处理阵列的测试指令。

例如,该测试指令可包括于配置信息中。

该配置信息可包括向量。

另外或替代地,该配置信息可包括存储器阵列及处理阵列的测试的预期结果。

在一些实施例中,如上文所描述,所述多个测试单元可能缺乏测试图案生成器,该测试图案生成器用于产生在多个存储器组的测试期间使用的测试图案。

在这些实施例中,所述多个测试单元中的至少两个可被配置为平行地测试多个存储器组中的至少两个。

替代地,所述多个测试单元中的至少两个可被配置为串行地测试多个存储器组中的至少两个。

在一些实施例中,指示测试结果的信息可包括故障存储器阵列条目的识别符。

在一些实施例中,该接口可被配置为在存储器阵列的测试期间多次取回由多个测试电路获得的部分测试结果。

在一些实施例中,该集成电路可包括错误校正单元,该错误校正单元被配置为校正在存储器阵列的测试期间侦测到的至少一个错误。例如,该错误校正单元可被配置为使用任何适当技术来修复存储器误差,例如,通过停用一些存储器字及用冗余字替换这些字。

在上文所描述的实施例中的任一者中,该集成电路可为存储器芯片。

例如,该集成电路可包括分布式处理器,其中处理阵列可包括分布式处理器的多个子单元,如图7A中所描绘。

在这些实施例中,该处理器子单元中的每个可与多个存储器组中的对应的专用存储器组相关联。

在上文所描述的实施例中的任一者中,指示测试结果的信息可指示至少一个存储器组的状态。可用一个或多个粒度来提供存储器组的状态:每个存储器字,每一条目群组,或每一完整存储器组。

图65至图66说明测试器测试阶段中的四个步骤。

在第一步骤中,测试器写入(5221)测试序列,且组的逻辑单元将数据写入至其存储器。该逻辑也可足够复杂以从测试器接收命令且其自身产生序列(如下文所解释)。

在第二步骤中,测试器将预期结果写入(5223)至受测存储器,且逻辑单元将预期结果与从其存储器组读取的数据进行比较,保存错误清单。若逻辑足够复杂以自身产生预期结果的序列(如下文所解释),则可简化预期结果的写入。

在第三步骤中,测试器从逻辑单元读取(5224)故障地址。

在第四步骤中,测试器对结果采取动作(5225)且可恢复错误。例如,测试器可连接至特定接口以编程存储器中的熔断器,但也可使用允许编程存储器内的错误校正机构的任何其他机构。

在这些实施例中,存储器测试器可使用向量以测试存储器。

例如,每个向量可从输入系列及输出系列建置。

输入系列可包括成对的地址与写入至存储器的数据(在许多实施例中,此系列可模型化为允许程序在需要时产生的公式,该程序诸如由逻辑单元执行的程序)。

在一些实施例中,测试图案生成器可产生此类向量。

应注意,向量为数据结构的一实施例,但一些实施例可使用其他数据结构。该数据结构可与由位于集成电路外部的测试器产生的其他测试数据结构兼容。

该输出系列可包括地址与数据对,其包含要从存储器读回的预期数据(在一些实施例中,该系列可另外或替代地由程序在运行时间产生,例如通过逻辑单元)。

存储器测试通常包括执行向量清单,每个向量根据输入系列将数据写入至存储器,且接着根据输出系列读回数据并将该数据与其预期数据进行比较。

在失配的状况下,存储器可分类为发生故障的,或若存储器包括用于冗余的机构,则可启动冗余机构使得再次在经启动冗余机构上测试向量。

在存储器包括处理器子单元(如上文关于图7A所描述)或含有许多存储器控制器的实施例中,整个测试可由组的逻辑单元操控。因此,存储器控制器或处理器子单元可执行测试。

该存储器控制器可从测试器编程,且测试结果可保存于控制器本身中以稍后由测试器读取。

为了配置及测试逻辑单元的操作,测试器可配置逻辑单元以用于存储器存取且确认结果可通过存储器存取来读取。

例如,输入向量可含有用于逻辑单元的编程序列,且输出向量可含有此测试的预期结果。例如,若诸如处理器子单元的逻辑单元包含被配置为对存储器中的两个地址执行计算的乘法器或加法器,则输入向量可包括将数据写入至存储器的一组命令以及至加法器/乘法器逻辑的一组命令。只要可将加法器/乘法器结果读回至输出向量,便可将结果发送至测试器。

该测试还可以包括从存储器加载逻辑配置及使逻辑输出发送至存储器。

在逻辑单元从存储器加载其配置(例如,若该逻辑为存储器控制器)的实施例中,该逻辑单元可运行来自存储器本身的代码。

因此,该输入向量可包括用于逻辑单元的程序,且该程序本身可测试逻辑单元中的各种电路。

因此,测试可能不限于接收呈由外部测试器使用的格式的向量。

若加载至逻辑单元的命令指示逻辑单元将结果写回至存储器组中,则测试器可读取这些结果且将这些结果与预期输出系列进行比较。

例如,写入至存储器的向量可为或可包括用于逻辑单元的测试程序(例如,测试可假定存储器有效,但即使存储器无效,写入的测试程序将不工作且测试将未通过,此为可接受的结果,这是因为芯片无论如何为无效的)和/或逻辑单元如何运行代码及将结果写回至存储器。由于逻辑单元的所有测试可经由存储器进行(例如,将逻辑测试输入写入至存储器及将测试结果写回至该存储器),因此测试器可运用输入序列及预期输出序列来运行简单的向量测试。

逻辑配置及结果可存取为读取和/或写入命令。

图68说明发送写入测试序列5221的测试器5200,该写入测试序列为向量。

向量的部分包括在耦接至处理阵列的逻辑5215的存储器组5212之间分裂的测试代码5232。

每个逻辑5215可执行储存于其相关联存储器组中的代码5232,且该执行可包括存取一个或多个存储器组,执行计算及将结果(例如,测试结果5231)储存于存储器组5212中。

测试结果可由测试器5200发送回(例如,读回结果5222)。

此可允许逻辑5215受由I/O控制器5214接收的命令控制。

在图68中,I/O控制器5214连接至存储器组及逻辑。在其他实施例中,逻辑可连接于I/O控制器5214与存储器组之间。

图70说明用于测试存储器组的方法5300。例如,可使用上文关于图65至图69所描述的存储器组中的任一者来实施方法5300。

方法5300可包括步骤5302、5310及5320。步骤5302可包括接收测试集成电路的存储器组的请求。该集成电路可包括:基板、安置于基板上且包含存储器组的存储器阵列、安置于基板上的处理阵列,及安置于基板上的接口。该处理阵列可包括多个测试单元,如上文所描述。

在一些实施例中,该请求可包括配置信息、一个或多个向量、命令,及其类似物。

在这些实施例中,该配置信息可包括存储器阵列的测试的预期结果、指令、数据、要从在存储器阵列的测试期间存取的存储器阵列条目读取的输出数据的值、测试图案,及其类似物。

该测试图案可包括以下各者中的至少一个:(i)要在存储器阵列的测试期间存取的存储器阵列条目,(ii)要写入至在存储器阵列的测试期间存取的存储器阵列条目的输入数据,或(iii)要从在存储器阵列的测试期间存取的存储器阵列条目读取的输出数据的预期值。

步骤5302可包括以下各者中的至少一个和/或其后可接着以下各者中的至少一个:

a.通过至少一个测试图案生成器从接口接收用于产生至少一个测试图案的指令;

b.通过该接口及从在集成电路外部的外部单元接收配置信息,该配置信息包括用于产生至少一个测试图案的指令;

c.通过至少一个测试图案生成器从存储器阵列读取配置信息,该配置信息包括用于产生至少一个测试图案的指令;

d.通过该接口及从在集成电路外部的外部单元接收配置信息,该配置信息包含为至少一个测试图案的指令;

e.通过多个测试单元及从存储器阵列取回一旦由所述多个测试单元执行便使所述多个测试单元测试存储器阵列的测试指令;及

f.通过多个测试单元及从该存储器阵列接收一旦由所述多个测试单元执行便使所述多个测试单元测试存储器阵列且测试处理阵列的测试指令。

步骤5302之后可接着步骤5310。步骤5310可包括通过多个测试单元且响应于请求而测试多个存储器组以提供测试结果。

方法5300还可以包括通过该接口在存储器阵列的测试期间接收由多个测试电路获得的部分测试结果。

步骤5310可包括以下各者中的至少一个和/或其后可接着以下各者中的至少一个:

a.通过一个或多个测试图案生成器(例如,包括于多个测试单元中的一个、一些或全部中)产生测试图案以供一个或多个测试单元用于测试多个存储器组中的至少一个;

b.通过所述多个测试单元中的至少两个平行地测试多个存储器组中的至少两个;

c.通过所述多个测试单元中的至少两个串行地测试多个存储器组中的至少两个;

d.将值写入至存储器条目,读取存储器条目及比较结果;及

e.通过错误校正单元校正在存储器阵列的测试期间侦测到的至少一个错误。

步骤5310之后可接着步骤5320。步骤5320可包括通过接口及在集成电路外部输出指示测试结果的信息。

指示测试结果的该信息可包括故障存储器阵列条目的识别符。通过不发送关于每个存储器条目的读取数据,可节省时间。

另外或替代地,指示测试结果的该信息可指示至少一个存储器组的状态。

因此,在一些实施例中,指示测试结果的该信息可比在测试期间写入至存储器组或从存储器组读取的数据单元的总大小小得多,且可比在无测试单元辅助的情况下可从测试存储器的测试器发送的输入数据小得多。

受测集成电路可包含如先前诸图中的任一者中所说明的存储器芯片和/或分布式处理器。例如,本文中所描述的集成电路可包括于如图3A、图3B、图4至图6、图7A至图7D、图11至图13、图16至图19、图22或图23中的任一者中所说明的存储器芯片中,可包括该存储器芯片,或以其他方式包含该存储器芯片。

图71说明用于测试集成电路的存储器组的方法5350的实施例。例如,可使用上文关于图65至图69所描述的存储器组中的任一者来实施方法5350。

方法5350可包括步骤5352、5355及5358。步骤5352可包括通过集成电路的接口接收包含指令的配置信息。包括接口的集成电路也可包括基板、包含存储器组且安置于基板上的存储器阵列、安置于基板上的处理阵列,及安置于基板上的接口。

该配置信息可包括存储器阵列的测试的预期结果、指令、数据、要从在存储器阵列的测试期间存取的存储器阵列条目读取的输出数据的值、测试图案,及其类似物。

另外或替代地,该配置信息可包括指令、用以写入指令的存储器条目的地址、输入数据,且也可包括用以接收在指令执行期间计算得的输出值的存储器条目的地址。

该测试图案可包括以下各者中的至少一个:(i)要在存储器阵列的测试期间存取的存储器阵列条目,(ii)要写入至在存储器阵列的测试期间存取的存储器阵列条目的输入数据,或(iii)要从在存储器阵列的测试期间存取的存储器阵列条目读取的输出数据的预期值。

步骤5352之后可接着步骤5355。步骤5355可包括通过处理阵列执行指令,该执行通过存取存储器阵列,执行计算操作及提供结果来进行。

步骤5355之后可接着步骤5358。步骤5358可包括通过接口及在集成电路外部输出指示结果的信息。

已出于说明的目的呈现先前描述。先前描述并不详尽且不限于所公开的精确形式或实施例。从本说明书的考虑及所公开实施例的实践,修改及调适对本领域技术人员将为显而易见的。另外,尽管所公开实施例的方面描述为储存于存储器中,但本领域技术人员将了解,这些方面也可储存于其他类型的计算机可读介质上,诸如次要储存设备,例如硬盘或CD ROM,或其他形式的RAM或ROM、USB媒体、DVD、蓝光、4K超HD蓝光,或其他光驱媒体。

基于书面描述及所公开方法的计算机程序在有经验开发者的技能范围内。可使用本领域技术人员已知的技术中的任一者产生或可结合现有软件设计各种程序或程序模块。例如,程序区段或程序模块可用或藉助于.Net Framework、.Net Compact Framework(及相关语言,诸如Visual Basic、C等)、Java、C++、Objective-C、HTML、HTML/AJAX组合、XML或包括Java小程序的HTML来设计。

此外,尽管本文已经描述了说明性实施例,但是本领域技术人员基于本公开将了解具有等效组件、修改、省略、组合(例如,跨各种实施例的方面的组合)、调适和/或更改的任何及所有实施例的范畴。权利要求中的限制应基于权利要求中所使用的语言来广泛地解释,且不限于本说明书中所描述或在本申请的审查期间的实施例。实施例应解释为非排他性的。此外,所公开方法的步骤可用任何方式进行修改,包括通过对步骤重排序和/或插入或删除步骤。因此,本说明书及实施例仅被认为是说明性的,其中真实的范围和精神由所附权利要求及其等同物的全部范围指示。

相关技术
  • 基于处理器的系统中的存储器中的经压缩的存储器行的基于优先级的存储和存取
  • 使用存储器容量压缩的存储器控制器,以及相关的基于处理器的系统和方法
技术分类

06120112852454