用于分布式缓冲器存储器系统的地址/命令芯片同步的自动数据芯片地址定序器

文档序号:1327715 发布日期:2020-07-14 浏览:5次 >En<

阅读说明:本技术 用于分布式缓冲器存储器系统的地址/命令芯片同步的自动数据芯片地址定序器 (Automatic data chip address sequencer for address/command chip synchronization for distributed buffer memory systems ) 是由 S·卡洛 S·M·艾克霍夫 S·鲍威尔 郑杰 G·范休本 P·J·米尼 于 2018-11-22 设计创作,主要内容包括:公开了一种或多种存储器系统、架构结构和/或在存储器设备中存储信息的方法,以改进数据带宽和/或减少存储器系统中的通信链路上的负载。该系统可以包括一个或多个存储器设备、一个或多个存储器控制电路和一个或多个数据缓冲器电路。在一个实施例中,主机仅通过其与数据缓冲器电路的通信链路来传输数据。在一个方面,存储器控制电路不向数据缓冲器电路发送控制信号。在一个方面,存储器控制电路和数据缓冲器电路各自维持单独的状态机驱动的地址指针或本地地址定序器,其包含相同序列中的相同标签。在另一方面,公开了一种重新同步方法。(One or more memory systems, architecture structures, and/or methods of storing information in a memory device are disclosed to improve data bandwidth and/or reduce loading on a communication link in a memory system. The system may include one or more memory devices, one or more memory control circuits, and one or more data buffer circuits. In one embodiment, the host transfers data only over its communication link with the data buffer circuitry. In one aspect, the memory control circuitry does not send control signals to the data buffer circuitry. In one aspect, the memory control circuitry and the data buffer circuitry each maintain a separate state machine driven address pointer or local address sequencer that includes the same tag in the same sequence. In another aspect, a resynchronization method is disclosed.)

用于分布式缓冲器存储器系统的地址/命令芯片同步的自动 数据芯片地址定序器

背景技术

本发明涉及存储器系统,更具体地说,涉及分布式缓冲器存储器系统。

随着信息技术的最新发展和用于存储和处理信息的因特网的广泛使用,越来越多的需求被置于计算系统对信息的获取、处理、存储和传播上。计算系统正在被开发以提高计算机能够执行用于商业、个人使用和娱乐的日益复杂的应用的速度。整个计算机系统性能受到计算机结构的每个关键元素的影响,包括处理器、任何存储器高速缓存、输入/输出(I/O)子系统的性能/结构、存储器控制功能的效率、存储器设备和系统以及任何相关联的存储器接口元素的性能、以及存储器互连接口的类型和结构。

执行日益复杂的应用的处理器的不断增加的速度对计算机中的所有其它子系统(包括存储器子系统)提出了更严格的性能要求,在软件应用的操作期间,数据在所述存储器子系统中被存储、访问和更新多次。存储器读/写操作所消耗的时间是计算机系统的最终速度和效率的主要因素。大多数计算机的存储器子系统通常由存储器控制器操作。存储器控制器的任务是尽可能快和有效地在计算机的存储器子系统和它的一个或多个处理器之间移动数据。计算机的存储器子系统通常包括存储器模块,通常是一个或多个双列直插存储器模块(DIMM),其包括若干动态随机存取存储器(DRAM)设备。

在许多存储器子系统中,存储器控制器可以控制多个存储器通道,其中每个通道可以包括一个或多个双列直插存储器模块(DIMM),其中DIMM可以被布置成一排或多排。计算需求需要以越来越快的存取速度存取越来越多的较高密度存储器设备的能力。

业界投入了大量的研究和开发努力,以创建改进的和/或创新的解决方案,以通过改进存储器系统/子系统设计和/或结构以及存储器系统/子系统操作的方法来最大化整体系统性能。这些努力已经导致了分布式存储器系统、分布式缓冲存储器系统、注册DIMM(RDIMM)和负载减小的DIMM(LRDIMM)以及其他系统、规范和标准(诸如例如DDR4和DDR5)的发展,这些都提供了增强的存储器性能。

在一个示例中,分布式存储器系统可以包括多个存储器设备、一个或多个地址芯片(也称为存储器控制电路)以及多个数据缓冲器或数据电路(DC)(也称为DC芯片)。在主处理器和存储器控制电路和数据缓冲器电路之间存在通信链路或总线。还存在从存储器控制电路到数据缓冲器电路的通信链路或总线。在例如DRAM的存储器设备与存储器控制电路和数据缓冲器电路之间也存在通信链路。通信链路上的带宽限制可影响存储器系统的性能。通过主机、存储器控制电路、数据缓冲器电路与存储器设备之间的通信链路及总线发送的数据、命令、控制及响应信号的量(其包括经分配以传输存储数据控制功能(例如,存储数据地址标签及位置)的带宽)影响存储器系统的性能。

发明内容

给出本公开的发明内容是为了帮助理解存储系统、架构结构以及存储和提取数据的方法,而不是为了限制本公开或本发明。本公开针对本领域的普通技术人员。应当理解,本公开的各个方面和特征可以在一些情况下有利地单独使用,或者在其他情况下与本公开的其他方面和特征组合使用。因此,可对存储器系统、架构结构及操作方法作出变化及修改以实现不同效果。

在一个实施例中,公开了一种用于响应于从主机接收的命令而存储数据的存储器系统,该存储器系统包括:存储器控制电路,用于从主机接收命令并输出模块命令和控制信号;至少一个且优选地多个存储器设备,被配置为存储数据并从存储器控制电路接收命令信号;与至少一个存储器设备相关联的至少一个且优选地多个数据缓冲器电路;通信链路,用于在主机和至少一个数据缓冲器电路之间传送数据;以及控制通信链路,在存储器控制电路和至少一个数据缓冲器电路之间。在一个实施例中,存储器控制电路被配置为:响应于从主机接收到存储命令和存储数据标签,从存储器控制电路本地地址定序器获得本地存储数据标签,将主机存储数据标签与存储器控制电路存储数据标签相关联,以及将所述关系存储在存储器控制电路中的映射表中。在一个方面,该系统不通过主机和至少一个数据缓冲器电路之间的通信链路向至少一个数据缓冲器电路发送存储数据标签,该存储数据标签指定在至少一个数据缓冲器电路中存储数据的位置。

在另一实施例中,公开了一种用于向存储器设备读取和写入数据的存储器系统,其中该系统包括:至少一个存储器控制电路,用于从主机接收命令并输出命令和控制信号,该存储器控制电路具有本地地址定序器,该本地地址定序器具有序列中的本地存储标签位置;至少一个且优选地多个存储器设备,其被配置成读取和存储数据,并且从存储器控制电路接收命令信号;与所述至少一个存储器控制电路相关联的至少一个数据缓冲器电路,优选地多个数据缓冲器电路,所述至少一个数据缓冲器电路具有本地地址定序器,所述本地地址定序器在与所述至少一个存储器控制电路的本地地址定序器相同的序列中具有本地存储标签位置;数据通信链路,用于在主机和至少一个数据缓冲器电路之间传送数据;以及在至少一个存储器控制电路、至少一个存储器设备和至少一个数据缓冲器电路之间的控制通信链路,用于传输存储器系统的读和写操作信号;其中,所述至少一个存储器控制电路被配置为:(i)将存储命令处理成写入缓冲器命令和从缓冲器存储命令;(ii)在接收到存储命令时,从所述至少一个存储器控制电路的本地地址定序器获得本地存储数据标签;(iii)将所述写入缓冲器命令发送到所述至少一个数据缓冲器电路;(iv)将所述存储命令发送到所述至少一个存储器设备;以及(iv)将从缓冲器存储命令连同存储数据标签一起发送到至少一个数据缓冲器电路;并且其中所述至少一个数据缓冲器电路被配置为:(i)在接收到所述写入缓冲器命令后,从所述至少一个数据缓冲器电路的本地地址定序器获得本地存储数据标签;(ii)将传入的存储数据发送到由所述至少一个数据缓冲器电路的所述本地地址定序器获得的所述本地存储数据标签所指向的数据缓冲器中;(iii)从由从所述至少一个存储器控制电路接收的存储数据标签所指向的所述本地数据缓冲器中拉出存储数据,以及(iv)将存储数据发送到所述至少一个存储器设备。

还公开了一种用于在存储器设备中存储数据的方法,该方法包括:在接收到主机存储命令时,从存储器控制电路中的地址定序器获得本地存储数据标签,将主机标签与存储器控制电路本地存储数据标签相关联,并且将相关联的标签存储在映射表中;将所述存储器控制电路中的所述存储命令处理为写入缓冲器命令和从缓冲器存储命令;将所述写入缓冲器命令发送到数据缓冲器电路;从数据缓冲器电路中的地址定序器获得本地存储数据标签;以及将传入数据推送到由从数据缓冲器电路本地地址定序器获得的本地存储数据标签所指向的数据缓冲器电路中的位置。在一个实施例中,数据缓冲器电路在接收到写入缓冲命令时将传入数据推送到数据缓冲器。优选地,存储器控制电路和数据缓冲器电路各自保持单独的本地地址定序器,该本地地址定序器包含相同序列中的相同标签。并且在一个实施例中,存储器控制电路被配置为不将从存储器控制电路本地地址定序器接收的标签发送到数据缓冲器电路。

还公开了一种检查具有远程存储器控制电路的分布式存储系统中的本地地址定序器的方法,该方法包括:从多个数据缓冲器电路的每个本地地址定序器中拉出下一个要使用的存储数据标签;比较从每个数据缓冲器电路的本地地址定序器恢复的存储数据标签;以及如果来自数据缓冲器电路的标签中的任何标签不同,则发出恢复命令。公开了在具有远程存储器控制电路的存储器系统中检查本地地址定序器的另一种方法,该方法包括将要从存储器控制电路的本地地址定序器发布的下一个标签发送到数据缓冲器电路,将要从数据缓冲器电路的本地地址定序器发布的下一个标签与由存储器控制电路发送的下一个要使用的标签进行比较,并且如果标签不匹配,则发布恢复命令。恢复命令可以包括包含停止发出任何新操作、冲刷所有未完成的操作、等待所有取出操作完成及其组合的群组中的至少一个。根据一个实施例的方法还可以包括重置存储器控制电路和数据缓冲器电路两者的本地地址定序器。

附图说明

当结合所提供的图式来阅读时,将更好地理解存储器系统、架构结构及其操作方法的各种方面、特征及实施例。在附图中提供实施例是为了说明存储器系统、架构结构和操作方法的方面、特征和/或各种实施例,但权利要求书不应限于所示出的精确布置、结构、特征、方面、实施例或设备,且所示出的布置、结构、子组件、特征、方面、实施例、方法和设备可单独使用或与其它布置、结构、子组件、特征、方面、实施例、方法和设备组合使用。

图1描绘了根据一个实施例的通用计算或数据处理系统。

图2描绘了根据一个实施例的存储器子系统。

图3描绘了根据一个实施例的包括带缓冲的DIMM配置的存储器子系统。

图4示意性地描述了根据一个实施例的分布式缓冲存储器系统。

图5示出了根据一个实施例的在主机和存储器控制电路之间的通信链路上发送的命令和地址帧。

图6示出了根据一个实施例的通过通信链路从主机发送到数据缓冲器电路的数据帧。

图7示出了根据一个实施例的通过通信链路从存储器控制电路发送到主机的帧。

图8描绘了根据一个实施例的执行存储操作的方法的流程图。

图9描绘了根据一个实施例的映射存储器子系统中的存储操作的方法的流程图。

图10描绘了根据一个实施例的存储器子系统中的远程地址定序器映射存储操作的示意图。

图11描绘了根据一个实施例的执行存储操作的替换方法的流程图。图12描绘了根据一个实施例的检查和/或同步存储器子系统中的标签的方法的流程图。

图13描绘了根据一个实施例的检查和/或同步存储器子系统中的标签的替代方法的流程图。

具体实施方式

以下描述是为了说明本发明的一般原理而作出的,并且不意味着限制本文要求保护的发明概念。在以下详细描述中,陈述许多细节以便提供对存储器系统、架构结构和操作方法的理解,然而,所属领域的技术人员将了解,可在没有那些特定细节的情况下实践存储器系统、架构结构和操作方法的不同和许多实施例,且权利要求和本发明不应限于本文具体描述和示出的实施例、子组件、特征、过程、方法、方面、细节的特征。此外,本文所述的特定特征可与其它所述特征以各种可能的组合和排列组合使用。

除非本文另有明确定义,否则所有术语将被给予其最宽泛的可能解释,包括说明书中暗示的含义以及本领域技术人员理解的和/或词典、论文等中定义的含义。还必须注意,如在说明书和所附权利要求中所使用的,单数形式"一"、"一个"和"该"包括复数对象,除非另有说明。

计算机的存储器子系统通常包括存储器模块,通常是一个或多个双列直插存储器模块(DIMM),其通常包括多个存储器设备,例如动态随机存取存储器(DRAM)设备。分布式存储系统可以包括可以作为DIMM布置在模块上的多个存储设备(例如DRAM)、一个或多个存储控制电路、以及一个或多个数据缓冲器电路或数据电路。在一个实施例中,存储器控制电路从主机处理器接收信号,并输出命令和控制信号。存储器控制电路可以包括存储器控制器,并且在一个实施例中,可以具有调度器,其可以是电路的形式。在一个实施例中,存储器控制电路和/或存储器控制器可以远离主处理器、数据缓冲器电路和/或存储器设备。存储器控制电路(例如调度器)可以优化操作和指令的顺序,并且向数据缓冲电路和存储器设备发出命令信号(例如指令)。在主机(例如,处理器)、存储器控制电路、数据缓冲器电路和/或存储器设备之间存在通信链路或总线。在一个实施例中,存在从存储器控制电路到数据缓冲器电路的通信总线或链路。在一个实施例中,在主机和存储器控制电路之间还可以存在通信链路或总线,并且在主机和数据缓冲器电路之间可以存在分离的通信链路或总线。存储器系统和/或架构结构还可以包括在存储器设备和存储器控制电路和/或存储器设备和数据缓冲电路之间的通信链路或总线。

公开了存储器系统、存储器架构和/或在包括例如分布式存储器系统的存储器系统或子系统中执行读/写操作的方法。在一个实施例中,公开了一种在包括存储器设备的存储器系统中存储和/或提取数据的存储器系统、架构结构和/或方法。如下文更详细地揭示的存储器系统可包含一个或多个存储器设备及一个或多个数据缓冲器电路。存储器系统还可以包括存储器控制电路,在一个实施例中,该存储器控制电路可以包括存储器控制器,以控制去往和来自存储器设备的数据流。可以存在用于在主机、存储器设备、数据缓冲器电路和/或存储器控制电路之间传递数据、命令、响应和/或信号的通信链路或总线。

在一个方面,用于执行读/写操作的存储器系统、架构结构和/或方法改进了主机和数据缓冲器电路之间的通信链路上的数据带宽。在另一实施例中,公开了一种存储器系统、架构结构和/或方法,用于减少存储器控制电路和数据缓冲器电路之间的通信链路上的负载。在一个实施例中,公开了一种将写入数据存储到数据缓冲器电路的存储器系统、架构结构和/或方法。在一个方面,公开了一种存储器系统、架构结构和/或方法,其在数据缓冲器电路处管理存储数据,而不从存储器控制电路发送控制信息,例如存储数据位置标签地址。在一个实施例中,本公开提供了一种系统、架构结构和/或方法,用于数据缓冲器电路以将存储数据放入它们的写缓冲器中的存储器控制电路已知的位置,而没有数据缓冲器电路告诉存储器控制电路数据缓冲器电路将数据放在哪里,并且没有存储器控制电路告诉数据缓冲器电路将数据放在哪里。在一个方面,存储器控制电路从主机接收存储命令和存储数据标签,并将存储数据命令发送到数据缓冲器电路,但是存储器控制电路不将存储数据标签发送到数据缓冲器电路。在一个方面,存储器控制电路和数据缓冲器电路各自维持单独的状态机驱动的地址指针或本地地址定序器,例如本地存储标签FIFO,其包含相同序列中的相同标签(识别数据缓冲器中的地址或位置)。存储器控制电路和数据缓冲器电路两者都使用来自其地址定序器的相同标记,例如本地存储标记FIFO,用于存储操作。存储器控制电路将主机存储数据标签关联或映射到其本地存储数据标签FIFO,并将主机存储数据标签存储到映射表。

在系统的另一方面,存储器控制电路还被配置为响应于接收到主机存储命令而将存储命令处理成写入缓冲器命令和从缓冲器存储命令,并且通过控制通信链路将写入缓冲器命令发送到至少一个数据缓冲器电路,但是不将标签发送到数据缓冲器电路,该标签指定在数据缓冲器电路中存储数据的位置。在一个实施例中,数据缓冲电路包括逻辑电路,用于跟踪在数据缓冲电路中的何处写入用于存储操作的数据。该系统的至少一个数据缓冲器电路可以进一步被配置为响应于接收到写入缓冲器命令,从数据缓冲器电路本地地址定序器获得指向至少一个数据缓冲器电路内的存储位置的本地存储数据标签,并且将传入的存储数据推入由数据缓冲器电路的本地地址定序器指向的数据缓冲器。

在一个实施例中,存储器控制电路可以进一步被配置为通过控制通信链路将从缓冲器存储命令连同从其本地地址定序器接收的本地存储数据标签一起发送到至少一个数据缓冲器电路,并且将存储命令发送到至少一个存储器设备。并且,在一个实施例中,所述至少一个数据缓冲器电路还被配置为使所述至少一个数据缓冲器电路从由通过所述控制通信链路从所述存储器控制电路接收的所述存储数据标签指向的所述数据缓冲器位置拉出存储数据,并且将所述存储数据发送到所述至少一个存储器设备。

在所述系统的一个方面中,所述存储器控制电路包括状态机驱动的本地地址指针,其标识所述至少一个数据缓冲器电路的将向其写入数据的所述下一地址标签位置,且其中所述至少一个数据缓冲器电路包括状态机驱动的本地地址指针,其标识所述至少一个数据缓冲器电路的将向其写入数据的所述下一地址标签位置,其中所述存储器控制电路的所述状态机驱动的本地地址指针与所述至少一个数据缓冲器电路的所述状态机驱动的本地地址指针同步。在一个实施例中,存储器控制电路本地地址定序器和至少一个数据缓冲器电路本地地址定序器都包含相同序列中的相同标签。在另一方面,存储器系统的存储器控制电路不向至少一个数据缓冲器电路发送写入缓冲器数据标签。在一个方面,存储器系统中的数据通信链路包括主机与至少一个数据缓冲器电路之间的通信链路,以及至少一个数据缓冲器电路与至少一个存储器设备之间的通信链路,并且在至少一个数据缓冲器电路与主机之间的通信链路上仅传输数据和CRC。

在一个实施例中,存储系统包括至少一个模块,该模块具有在模块上的单个芯片上形成的存储控制电路,具有在模块上的单独芯片上形成的至少九个数据缓冲器电路,以及在模块上布置的以九个为一组组织的多个存储设备。

还公开了一种用于在存储器设备中存储数据的方法,该方法包括:在接收到主机存储命令时,从存储器控制电路中的地址定序器获得本地存储数据标签,将主机标签与存储器控制电路本地存储数据标签相关联,并且将相关联的标签存储在映射表中;将所述存储器控制电路中的所述存储命令处理为写入到缓冲器命令和从缓冲器存储命令;将所述写入缓冲器命令发送到数据缓冲器电路;从数据缓冲器电路中的地址定序器获得本地存储数据标签;以及将传入数据推送到由从数据缓冲器电路本地地址定序器获得的本地存储数据标签所指向的数据缓冲器电路中的位置。在一个实施例中,数据缓冲器电路在接收到写入缓冲器命令时将传入数据推送到数据缓冲器。优选地,存储器控制电路和数据缓冲器电路各自保持单独的本地地址定序器,该本地地址定序器包含相同序列中的相同标签。并且在一个实施例中,存储器控制电路被配置为不将从存储器控制电路本地地址定序器接收的标签发送到数据缓冲器电路。

所述方法可以进一步包括将存储命令从存储器控制电路发送到存储器设备,以及将数据从由从数据缓冲器电路本地地址定序器获得的本地存储数据标签指向的位置发送到存储器设备。在另一方面中,所述方法包含将所述本地存储数据标签推送回到所述数据缓冲器电路本地地址定序器,从与所述存储器控制电路本地存储数据标签相关联的所述存储器控制电路映射表取回所述主机存储数据标签,将所述本地存储数据标签推送回到所述存储器控制电路本地地址定序器,以及将所述主机存储数据标签推送回所述主机。

在另一方面,为了增加可靠性,并且防止和避免本地地址定序器(例如,本地存储标签FIFO)脱离同步,实现了周期性标签检查和重新同步或恢复方法。根据一个方面的系统还被配置为检查至少一个存储器控制电路的状态机驱动的本地地址指针是否具有与至少一个数据缓冲器电路的状态机驱动的本地地址指针相同的下一个标签。所述系统可以进一步被配置,使得如果存储器控制电路状态机驱动的本地地址指针不指向与数据缓冲器电路状态机驱动的本地地址指针相同的地址,则存储器控制电路本地地址指针和数据缓冲器电路本地地址指针都被重置。在另一方面中,所述系统可经配置以使得如果所述存储器控制电路状态机驱动的本地地址指针与所述数据缓冲器电路状态机驱动的本地地址指针不同,那么所述系统重置所述存储器控制电路本地地址指针及所述数据缓冲器电路本地地址指针。在一个实施例中,存储器控制电路可以将下一个要使用的存储数据标签从其本地地址定序器发送到数据缓冲器电路,并且数据缓冲器电路将来自其本地地址定序器的下一个要使用的标签与由存储器控制电路发送的标签进行比较,以查看这些标签是否相同。在另一实施例中,数据缓冲器电路可将下一个要使用的存储数据标签发送到主机,并且主机比较从每个数据缓冲器电路接收的标签以查看它们是否相同。如果标签不相同,则系统可以经历恢复例程,该恢复例程可以重置本地地址定序器等等。

公开了一种用于在存储器设备中存储数据的计算机程序产品,该计算机程序产品包括具有与其一起体现的程序指令的计算机可读存储介质,该程序指令可由存储器系统执行以使存储器系统执行一种方法,在一个实施例中,存储器系统可以包括存储器控制电路、一个或多个数据缓冲器电路和多个存储器设备,该方法包括在接收到主机存储命令时从存储器控制电路中的地址定序器获得本地存储数据标签,将主机标签与存储器控制电路本地存储数据标签相关联并且将相关联的标签存储在映射表中,将存储器控制电路中的存储命令处理成写入到缓冲器命令和从缓冲器存储命令;将写入缓冲器命令发送到数据缓冲器电路,从数据缓冲器电路中的地址定序器获得本地存储数据标签,以及将传入数据推送到数据缓冲器电路中由从数据缓冲器电路本地地址定序器获得的本地存储数据标签所指向的位置。在一个实施例中,所述计算机程序产品还包括数据缓冲器电路,用于在接收到所述写入缓冲器命令时将传入数据推送到所述数据缓冲器。根据一个方面的计算机程序产品,其中所述存储器控制电路和所述数据缓冲器电路各自维护单独的本地地址定序器,所述本地地址定序器包含相同序列中的相同标签,根据另一方面,其中所述存储器控制电路被配置为不将从所述存储器控制电路本地地址定序器接收的标签发送到所述数据缓冲器电路。

所述计算机程序产品,其中所述方法还包括将所述存储命令从所述存储器控制电路发送到所述存储器设备,以及将数据从由从所述数据缓冲器电路本地地址定序器获得的所述本地存储数据标签指向的位置发送到所述存储器设备。所述计算机程序产品,其中所述方法进一步包括将所述本地存储数据标签推送回到所述数据缓冲器电路本地地址定序器,从与所述存储器控制电路本地存储数据标签相关联的所述存储器控制电路映射表取回所述主机存储数据标签,将所述本地存储数据标签推送回到所述存储器控制电路本地地址定序器,以及将所述主机存储数据标签推送回到所述主机。该计算机程序产品,其中该方法还包括从多个数据缓冲器电路的每个本地地址定序器拉出下一个要使用的存储数据标签,比较从每个数据缓冲器电路的本地地址定序器恢复的存储数据标签,并且如果来自数据缓冲器电路的任何标签不同,则发出恢复命令。根据一个实施例的计算机程序产品,其中所述方法包括:将从所述存储器控制电路的本地地址定序器发布的下一个标签发送到数据缓冲器电路;将从所述数据缓冲器电路的本地地址定序器发布的下一个标签与由所述存储器控制电路发送的下一个要使用的标签进行比较;以及如果所述标签不匹配,则发布恢复命令。

适于存储和/或执行程序代码的计算或数据处理系统100可以采取许多形式,并且在一个实施例中可以包括至少一个处理器102,其可以是控制器或者是控制器的一部分,直接或者通过系统总线间接耦合到存储器设备或元件,如图1所示。图1中的计算系统100被示出为具有处理器102、随机存取存储器(RAM)103、非易失性存储器104、设备专用电路101和I/O接口105。或者,RAM103和/或非易失性存储器104可以包含在处理器102中,设备专用电路101和I/O接口105也可以包含在其中。处理器102可以包括例如现成的微处理器、定制处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、离散逻辑等。RAM103通常用于保存可变数据、堆栈数据、可执行指令等,并且可以包括动态随机存取存储器或DRAM。

根据各种方法,非易失性存储器104可以包括任何类型的非易失性存储器,例如但不限于电可擦除可编程只读存储器(EEPROM)、闪速可编程只读存储器(PROM)、电池备份RAM、硬盘驱动器等。非易失性存储器104通常用于保存可执行固件和任何包含编程指令的非易失性数据,所述编程指令可被执行以使处理器102执行某些功能。

在一些实施例中,I/O接口105可以包括允许处理器102与控制器外部的设备通信的通信接口。通信接口的示例可以包括但不限于串行接口,诸如RS-232、USB(通用串行总线)、小型计算机系统接口(SCSI)、RS-422或无线通信接口,诸如Wi-Fi、蓝牙、近场通信(NFC)或其他无线接口。计算系统100可以以诸如自动化/驱动接口(ADI)的任何通信协议经由通信接口105与外部设备通信。

图2描绘了可以是更大的计算机系统结构或网络的一部分的示例性存储器系统200。计算机系统200包括控制处理器系统202,其是包括至少一个处理器单元(CPU)206的处理子系统,该处理器单元可以被配置为与存储器控制单元(MCU)210对接。处理器或CPU206可以是处理来自系统控制器(未示出)的读、写和配置请求的模块。处理器206可以是多核处理器。MCU210可以包括存储器控制器同步(MCS)208,也称为存储器控制器,其控制与存储器子系统220中的一个或多个存储器设备250(图1中未示出)的通信。MCU210和MCS208可以包括一个或多个处理电路,或者处理可以由处理器206执行或与其结合执行。控制处理器系统202通过通信总线215与存储器子系统220通信,如将结合图4更详细地描述。控制处理器系统202、处理器或CPU206、存储器控制单元210和MCS208在本文中可以单独地或共同地被称为主机。如本文所使用的主机广泛地用于指代向存储器系统或子系统发送和接收命令和/或控制信号的处理器、控制器或设备。主机还可发送数据信号并从存储器系统或子系统接收数据信号。

图3描绘了存储器子系统320的示例。存储器系统320包括多个存储器模块,例如双列直插存储器模块或DIMM325。虽然在图3中仅示出了三(3)个DIMM325a-c,但是将理解,存储器子系统320可以包含更多或更少的DIMM325。DIMM325可以按通道和排来布置,其中每个通道或排一个或多个DIMM325。每个DIMM325可以包含一个或多个易失性存储器设备,例如,动态随机存取存储器芯片或DRAM350。存储器设备350可为集成电路或芯片且形成保持信息位的基本存储器单元。存储器设备(例如,DRAM)中的存储器单元通常布置成存储体,其中每个存储体是行和列的阵列。

存储器子系统还可以包括一个或多个存储器控制电路330、一个或多个数据缓冲器或数据(DC)电路或(DC)芯片340、以及一个或多个存储器设备350。存储器控制电路管理去往和来自存储器设备的数据流。存储器控制电路通常从主机(例如,主机处理器)接收例如命令和控制信号等信号。控制信号可以包括在存储器设备中存储数据的位置上的地址位置或标签。存储器控制电路可以向存储器设备和/或数据缓冲器电路输出命令和控制信号。为了便于参考,存储器控制电路330也可以被称为地址和命令电路、AC电路或AC芯片。存储器控制电路330可以具有或不具有寄存的时钟驱动器或RCD。在一个实施例中,存储器控制电路330可以具有存储器控制器332。存储器控制电路330或存储器控制器332可以具有调度器338。存储器控制器332和/或调度器338可以优化操作和指令的顺序,并且向数据缓冲器电路和存储器设备发送信号。存储器控制电路330/存储器控制器332/存储器调度器338可以对操作序列重新排序。存储器控制电路可以位于或不位于板或模块上,例如,与存储器设备一起的DIMM。在实施例中,如图3所示,存储器控制电路330被形成为集成电路或芯片,并且位于具有存储器设备350的模块325上。在一个实施例中,存储器控制电路可以远离主机处理器。

数据缓冲器电路340在主机(例如,控制处理器系统302)与存储器设备350之间缓冲、接收、传输及/或传递数据。数据缓冲器电路可以与存储器设备和/或存储器控制电路位于或不位于同一板或模块上,例如DIMM。在一个实施例中,数据缓冲电路340也形成为集成电路或芯片,并且与存储器器件350一起位于模块325上。数据缓冲器电路也可以称为数据电路、DC电路和/或DC芯片。

在图3的示例中,示出了具有存储器控制处理器302和/或存储器控制单元310以及存储器子系统320的分布式存储器系统300。存储器控制单元310和/或存储器控制处理器302可以是主机。存储器或数据存储系统320可以被配置为存储数据并向一个或多个主机提供存储服务,所述主机可以直接或通过网络(例如,通过互联网)连接到存储系统320。存储系统可以包括用于支持与主机通信的接口。

在图3的实施例中,存储器子系统300具有三(3)个DIMM325a-c。分布式存储器系统300可具有一个或多个控制处理器系统302,并且可具有更多或更少的DIMM325。在图3的分布式存储系统300中,每个存储模块325被配置为DIMM,并具有一个存储控制电路或AC芯片330、九(9)个数据缓冲器电路或DC芯片340、以及36个存储设备350,例如DRAM。存储器控制电路被配置和编程为向数据缓冲器电路和存储器设备发送命令和控制信号。在这个例子中,每个存储器控制芯片或AC芯片330管理去往和来自模块325上的存储器设备的数据流。在该示例中,每个数据缓冲电路或DC芯片340与四个存储器设备350交互并在其间缓冲数据。DIMM可以包括存储设备,例如DRAM,优选地以九个为一组,例如9、18、27、36或更多,或者以十个为一组,例如10、20、30或更多来布置和组织。

对于存储器模块325和存储器子系统320,预期其它配置。通常,每九个或十个数据缓冲器芯片340有一个存储器控制芯片330。作为实例,DDR4存储器系统可包含存储器控制电路或AC芯片以及九(9)个数据缓冲器电路或DC芯片的组。虽然图3的存储器设备结构和/或模块以九个为一组的方式示出存储器设备350,但是可以设想,存储器设备可以以十个或更多为一组的方式布置。在图3的示例中,示出了每个DIMM一个AC芯片,尽管每个DIMM可以使用更多的AC芯片。存储器系统架构可经格式化及结构化以支持DDR4及DDR5标准,但所公开及教导的方法、系统及架构将适用于其它配置,包含未来标准。

在一个示例中,数据缓冲器电路或DC芯片340可各自具有写入缓冲器阵列,所述写入缓冲器阵列用于保持来自主机处理器302(存储器控制单元310)的存储操作,直到存储器控制电路330上的存储器控制器332可调度所述存储操作为止。在主机302与存储器控制电路330之间以及在存储器控制电路330与存储器设备350之间存在通信总线或链路。在主机302和数据缓冲器电路340之间以及数据缓冲器电路340和存储器设备350之间也存在数据通信链路或总线。可以存在从存储器控制电路330到数据缓冲器电路或DC芯片340的通信链路或总线332。存储器控制电路330和数据缓冲电路340之间的通信链路或总线可以是称为BCOM的单向广播通信链路或总线。下面将描述关于通信总线和链路的具体实施例的更多信息。

通信链路的带宽影响存储器系统300的性能。在一个或一个以上实施例中,所述存储器系统、架构结构和/或操作方法提供在主机与一个或一个以上存储器设备之间存储和/或取回数据方面的改进。在一个实施例中,公开了存储器系统、架构结构和/或方法以改进可用于在主机302和数据缓冲器电路或DC芯片340之间的通信链路上的数据的性能和/或带宽。在一个实施例中,通过降低(或消除)从主机302向数据缓冲电路或DC芯片340发送控制信息(标签)的频率,来提高主机302和数据缓冲电路340之间的通信链路的带宽。

在另一实施例中,公开了一种存储器系统、架构结构和/或方法,以改进存储器控制电路330和数据缓冲器电路或DC芯片340之间的通信链路的性能和/或带宽。在一个实施例中,通过降低从存储器控制电路330向数据缓冲器电路(DC芯片)340发送控制信息(位置标签)的频率,来提高存储器控制电路330和数据缓冲器电路340之间的通信链路的带宽。为了减少对存储器控制电路330与DC芯片340之间的链路的需求,在执行存储操作的一个实施例中,主机300向存储器控制电路(AC芯片)330发送存储命令和存储数据标签,并且AC芯片330向DC芯片340发送存储数据命令,但是AC芯片330不向DC芯片340发送对应的存储数据标签。相反,存储器控制电路(AC芯片)330和DC芯片340两者都保持单独的状态机驱动的本地地址指针或地址定序器335、345,例如存储标签FIFO,其包含相同序列中的相同标签。AC芯片330和DC芯片340使用来自其本地地址定序器335、345(例如本地FIFO)的相同标记用于存储操作。AC芯片330将主机存储数据标签关联或映射到在其本地地址定序器335(例如,其本地存储数据标签FIFO)中可用的下一个标签(位置地址),并且将相关的标签对存储到映射表336。

图4示出了根据一个实施例的分布式缓冲器存储器系统400的示意图。该系统包括多个存储设备450,例如DRAM。DRAM可以被布置在通常为DIMM325的模块上。系统400可以具有一个或多个DIMM。该系统还可以包括一个或多个存储器控制电路或AC芯片430,以及一个或多个数据缓冲电路或DC芯片440。在一个实施例中,每个DIMM可以包括一个存储器控制电路或AC芯片430以及多个数据缓冲电路或DC芯片440(每个AC芯片9或10个芯片)。每个DIMM325可以具有多个存储器设备,例如DRAM450,优选地以九个为一组布置,例如九(9)、十八(18)、二十七(27)、三十六(36)或更多。DIMM可以具有不等数量的存储器设备,例如DRAM450。在一个实施例中,该系统被设计为支持DDR4或DDR5存储器系统,尽管可以考虑其他配置和布置。存储器控制电路430可以具有或不具有经调节的时钟驱动器,并且在一个实施例中,存储器控制电路430可以具有存储器控制器432和/或存储器调度器438。

图4中示意性地示出的链路460是差分高速串行(HSS)总线,其具有从主机402/410到存储器控制电路或AC芯片430的八(8)个通道,用于向存储器子系统320发送命令,以及一个HSS道返回,用于报告状态,诸如完成或错误通知和细节的操作。图5示出了通过链路460从主机402/410向存储器控制电路或AC芯片430发送的地址和命令帧的一个示例。在图5中,地址和命令帧具有两(2)位(L0-L1)以指定组成帧的周期数;可寻址空间的三十九(39)个位(A0-A38);用于命令的四(4)位(C0-C3)空间;用于所述Tagfield匹配的被发送到所述DC芯片用于写操作的七(7)位(Q0-Q6);用于对所述上行帧的确认的一个比特(ACK);以及十一(11)位(P0-P10),用于为通道错误检测和隔离提供的循环冗余校验(CRC)码。

链路465是HSS总线,其具有从主机402/410到每个数据缓冲器电路或DC芯片440的用于存储数据的两(2)个通道和从每个DC芯片440到主机402/410的用于获取数据的两(2)个通道。对于主线操作,在一个实施例中,链路465仅用于传输数据和用于保护该数据所需的循环冗余校验(CRC)。在一个实施例中,链路465的带宽不被任何种类的控制信息消耗,并且可能没有任何带宽被响应信息消耗。在一个实施例中,链路465的所有两条带宽通道都用于传输数据(和CRC)。图6示出了用于主机402/410通过链路465向DC芯片440通信的数据帧的一个示例。在图6中,128位(在存储器周期(帧)1-8中的D0-D127)是数据字段,并且十六(16)位(在存储器周期(帧)9中的CRC0-CRC15)用于CRC,从而9个帧中的九(9)个(或链路465的带宽的100%)用于数据和CRC。通过不使用链路465用于传输控制信号,例如标签或地址位置,所有九(9)个存储器周期用于数据和CRC的传输,这改进了链路465中的数据传递效率。

链路470是从存储器控制电路或AC芯片430到数据缓冲电路或DC芯片440的广播(BCOM)总线,用于通知DC芯片何时执行预定操作。对于提取操作,仅通过链路470从AC芯片430向DC芯片440发送命令。根据一个方面,对于存储操作,控制存储器电路430将存储命令拆分成两个子操作,称为"写缓冲器"或"写入缓冲器",其将来自主机402/410的数据写入DC芯片440上的数据缓冲器,以及"存储缓冲器"或"存储来自缓冲器",其将来自DC芯片440的数据存储到存储器设备450,例如DRAM。对于写缓冲器,在一个实施例中,命令通过链路470从AC芯片430发送到数据缓冲器电路或DC芯片440,但是控制信号,例如位置标签地址,不发送到数据缓冲器电路,例如写缓冲器,以节省带宽。相反,每个DC芯片440中的状态机驱动的地址指针或地址定序器445跟踪存储数据将被写入数据缓冲器电路的位置,例如写入缓冲器中的地址或位置。对于存储缓冲器操作,命令和控制信号,例如,写缓冲器地址,都被发送到数据缓冲器电路或DC芯片440。下面将更详细地描述存储器子系统的操作。

数据缓冲电路或DC芯片440与存储器控制电路或AC芯片430之间的错误ATTN网络475可以包含来自数据缓冲电路或DC芯片440的错误ATTN信号,其通知存储器控制电路或AC芯片430DC芯片440发生了需要向主机402/410报告的错误。注意,指示存储器设备450(例如DRAM)发生错误的DRAM ATTN信号被从存储器设备450路由回其DC芯片440,而不是将它们直接路由回AC芯片430。AC芯片430必须向主机402/410报告该错误,因为DC芯片440在其上游帧中没有响应或控制信息。DC芯片440经由链路475将存储器设备错误转发回AC芯片430,但是每个DC芯片440知道其存储器设备之一,例如DRAM450,发生错误。AC芯片430将错误信号路由回主机。主机402/410可调用其错误恢复例程,并且来自主机402/410的非主线操作可用于读取DC芯片440的状态寄存器。如果错误发生在HSS链路上或是来自其存储器设备之一的ATTN,或者如果是发生在DC芯片440上的一些其他错误,则主机402/410然后能够隔离哪个DC芯片440出错。主机402/410然后可按照需要采取行动以从错误中恢复。

链路480是从存储器控制电路或AC芯片430到存储器设备450(例如DRAM)的命令和地址总线。链路490是由DC芯片440使用的存储器设备数据总线,以将存储数据发送到存储器设备并接收来自存储器装置450的提取数据。通信链路490还接收存储器设备ATTN信号。

现在转到存储器系统的操作,在正常操作期间,主机402/410向存储器控制电路或AC芯片430发送存储命令。由主机发送到AC芯片430的存储命令可以被处理、解码或分解成"写缓冲器"命令和"存储缓冲器"命令,其中"写缓冲器"命令将数据从主机写入DC芯片440上的数据缓冲器,而"存储缓冲器"命令将数据从DC芯片440存储到存储器设备450。"写缓冲器"命令被调度为立即执行,"存储缓冲器"命令被调度为由存储器控制电路基于优化系统性能来执行。

写缓冲器命令由存储器控制电路或AC芯片430通过链路470发送到数据缓冲器电路或DC芯片440,并且主机402/410优选地在可配置的延迟之后通过链路465发送要存储到DC芯片440的数据。在主机和数据缓冲器电路之间的通信链路上不发送控制信号。在一个实施例中,AC芯片不向DC芯片440发送地址、标签或位置,以标识存储数据应当位于数据缓冲电路440的写缓冲器中的何处。相反,每个DC芯片440通过状态机驱动的地址指针或地址定序器445进行跟踪,其中来自主机的用于下一存储操作的数据应当被写入DC芯片440的写缓冲器中。每个DC芯片440可以检查来自所接收的存储数据的CRC码,以验证在HSS链路465上没有发生错误。如果发现已经发生错误,则DC芯片440经由链路475上的错误ATTN信号通知AC芯片430已经发生错误,并且该错误被记录在DC芯片的状态寄存器448中。

AC芯片430可以包括调度器438,其优化操作和系统指令的顺序并发送出命令。调度器438可重新排序操作。当对于系统性能而言执行该操作是最佳时,AC芯片调度器438可调度"存储缓冲器"命令。存储体冲突、周期性操作和提取指令可能导致存储操作被延迟,以允许其它操作在其之前完成或执行。一旦"存储缓冲器"操作完成了存储操作,就认为主机存储命令完成,并且AC芯片430使用图7中的格式作为示例来经由链路480向主机发送上游帧,以指示哪些操作完成。

在一个实施例中,提取操作开始于提取命令经由通信链路460发送到AC芯片430,因为不需要提前发送数据。在系统中,提取操作可以被优先化,并且如果总线可供使用,则提取操作将绕过队列中的存储操作以最小化延迟。然而,如果有其它待决的提取操作需要被调度,则提取操作将进入存储器控制电路调度器或存储器定序器438。

一旦存储器控制电路存储器调度器438调度要执行的提取操作,命令信号和控制信号,例如地址(标签),就通过链路480从AC芯片430发送到存储器设备450,并且AC芯片430通过链路470通知DC芯片440提取数据将到达,以在固定数量的周期中被发送到主机402/410。一旦提取数据到达DC芯片440,则通过链路465将数据直接转发到主机410/402。优选地不缓冲提取数据,因为这将产生额外的延迟。AC芯片430作为响应将发送上行帧到主机,通知它提取操作已经完成。

图7中示出了指示哪些操作完成的响应帧。在图7中,两(2)位(T0-T1)是帧/类型标识符;两(2)位(R0-R1(op1))标识第一操作的响应类型,例如存储完成、提取完成或注意响应;七(7)位(Q0-Q6(op1))是与第一操作的响应类型相关联的命令队列标签;两(2)位(D0-D1(op1))提供用于第一操作的帧偏移代码(以指定相对于四(4)个存储器循环帧的开始,提取数据将何时返回);6位(CRC0-CRC5)是用于该帧的CRC;并且一个比特(ACK)是对下游帧的确认(例如,对图5中由AC接收的帧的确认)。对于存储完成响应类型操作,Q0-Q6表示存储完成标记,而对于提取完成响应类型操作,Q0-Q6表示与提取数据相关联的数据标记。当操作是注意(ATTN)响应时,一个或两个命令队列标签字段可能过载,以将恢复和状态错误信息传送回主机。响应类型字段R0-R1、命令队列字段Q0-Q6和帧偏移字段D0-D1具有两个操作字段op1和op2,并且用于第二操作(op2)的字段具有与用于第一操作(op1)的字段相同的定义。为了优化带宽,可以一次发送用于两个操作的完成信息。Op2用于允许AC每帧返回两个操作响应(即,一个存储完成操作和一个提取完成操作、两个存储完成操作或两个提取完成操作)。当AC芯片报告错误情况时发送给主机的响应帧将不同于图7。

将描述存储器系统的操作的进一步细节,在某些实施例中包含分布式存储器缓冲器系统。图8是根据一个实施例的示例性流程图,其示出并描述了根据本公开的一个实施例的在包括分布式缓冲存储器系统的存储器系统中存储数据的方法。虽然存储方法800是为了方便而描述的,并且不是为了将本公开限制为包括一系列和/或多个步骤,但是应当理解,该过程不需要作为一系列步骤来执行,和/或这些步骤不需要以关于图8所示和所述的顺序来执行,但是该过程可以被集成和/或一个或多个步骤可以一起、同时执行,或者这些步骤可以以所公开的顺序或以替代顺序来执行。

在805,主机(例如,处理器、存储器控制器)经由第一通信链路(例如,图4中的链路460)将存储命令连同来自主机标签池的存储数据标签或HOST TAG一起发送到存储器控制电路(例如,AC芯片430)。为了便于参考,在本讨论和图8中,存储器控制电路可以被称为AC电路或AC芯片。来自主机标签池的存储数据标签或主机TAG与主机存储命令相关并标识该主机存储命令。在该过程的稍后阶段,当存储操作完成时,从AC芯片向主机发回响应,告知主机操作完成,该标签是该响应的一部分,因此主机知道哪个操作完成。在图5中,地址(DRAM中将要存储数据的位置)作为位A0-A38被发送,而跟踪操作的标签是Q0-Q6。

在810处,主机经由不同的第二通信链路,例如图4中的链路465,将待存储的数据发送到数据缓冲器电路,例如DC芯片。在一个实施例中,没有控制信号,例如地址标签,通过主机和数据缓冲器电路之间的通信链路发送。在该实施例中,仅数据(和CRC)通过主机和数据缓冲器电路之间的通信链路(例如,图4中的链路465)发送。要存储在数据缓冲器电路或DC电路中的数据可以在可配置(或可编程)延迟之后被发送到DC电路。延迟可以是可配置的或可编程的固定延迟。通过不在链路465上发送地址标签,可以提高链路465传输数据的效率或能力。为了便于参考,在本讨论和图8中,数据缓冲器电路可以被称为DC电路或DC芯片。

在一个实施例中,如815处所称,AC电路430和DC电路440两者可维持单独的状态机驱动的地址指针或地址定序器435、445,例如本地存储标签FIFO,其包含相同序列中的相同标签。如本文所使用的,来自AC和DC电路的本地地址定序器435、445的本地存储数据标签是对数据缓冲器电路中可存储数据的位置或地址的引用。状态机驱动的地址指针或地址定序器具有标签池,其引用或标识缓冲器(例如,数据缓冲器电路)地址位置,并且状态机驱动的地址指针或地址定序器跟踪标签和/或地址。AC电路和DC电路的本地地址定序器435、445优选地被同步,并且可以是自动和同步的,因为控制FIFO的状态机是同步的。

在820处,AC电路430在接收到主机存储命令时从其地址定序器435(例如,本地存储标签FIFO)获得或弹出本地存储数据标签。在825处,AC芯片将主机存储数据标签关联(例如,映射)到由其地址定序器435(例如,本地存储数据标签FIFO)指向的本地存储数据标签(例如,DC芯片上数据将被缓冲的位置),并将信息存储在索引或映射表436中。映射表436是一个将从AC芯片地址定序器435中提取的本地存储数据地址标签与存储数据标签相关联和/或关联的表。在830处,AC电路将主机存储命令解码、处理和/或拆分成写入缓冲器("写入缓冲器")命令和从缓冲器存储("存储缓冲器")命令。在835处,AC电路430经由第三不同的通信链路,例如图4中的链路470,将写入缓冲器命令发送到DC电路440。在一个实施例中,没有控制信号,例如本地存储标签,被发送到DC电路440,指定将数据写入数据缓冲器电路440中的何处。更具体地说,AC电路430不通过第三通信链路,例如图4中的链路470,向DC电路440发送存储数据标签。然后,AC电路将把从缓冲器存储的命令连同存储数据标签(保持存储数据的缓冲器位置)一起推送到调度器中的存储命令缓冲器。即,从缓冲器存储命令被推送到AC本地存储标签中的存储命令缓冲器中,使得该命令可以稍后由调度器调度(例如,参见图8的流程图中的850)。

在840处,DC电路在从第三通信链路(例如,图4中的链路470)接收到写入到缓冲器命令后从其本地地址定序器445(例如,本地存储标签FIFO)获得、产生和/或弹出本地存储数据标签。DC电路的本地地址定序器445优选地与AC电路的本地地址定序器435同步,以便本地存储数据标签指向DC电路中的相同位置。响应于接收到写入缓冲器命令,在845处,DC电路440将要存储的传入数据从第二通信链路(例如图4中的链路465)推送到由从其本地地址定序器445(例如本地存储标签FIFO)获得、生成和/或弹出的存储数据标签所指向的数据缓冲器。DC电路440可在可配置(或可编程)延迟之后将数据推送到其缓冲器中。

在850,AC电路430调度从缓冲器存储命令,并经由例如图4中的链路480的第四通信链路将存储命令发送到一个或多个存储器设备450。存储命令可包括存储命令和数据将被存储在存储器设备中的位置的地址位置。该存储命令类似于先前被解码或分解成单独的写入缓冲器命令和从缓冲器存储命令的主机存储命令。在一个实施例中,这可以是DDR4存储操作,其包括存储命令和数据将被存储在存储器设备中的地址标签或位置。在855处,AC电路430还经由第三通信链路,例如图4中的链路470,将从缓冲器存储命令连同存储数据标签一起发送到DC电路440。发送到直流电路的存储数据标签是通知直流电路要存储到存储器设备的数据位于直流电路中何处的本地标签。在860处,DC电路440从由存储数据标签所指向的数据缓冲器中提取要存储的数据,其中存储数据标签是经由第三通信链路(例如图4中的链路470)从AC电路430接收的。在865处,DC电路440经由第五通信链路(例如,图4中的链路490)将待存储的数据发送到存储器设备450。从存储器设备的观点来看,存储器设备从AC电路和DC电路的组合中看到存储操作,在一个实施例中是DDR4存储操作。

在870处,DC电路440将存储数据标签推送回到其地址定序器445,例如其本地存储标签FIFO。AC电路430使用其本地存储数据标签作为映射表的索引,并且在875处从AC电路映射表436取回主机存储数据标签。在880处,AC电路430将其本地存储数据标签推送回到其地址定序器435,例如AC芯片本地存储标签FIFO。在885处,AC电路430经由第一通信链路,例如图4中的链路460,将主机存储数据标签返回给主机。HOST标记的返回指示与该标签相关联的操作或命令完成。在890处,主机将存储数据标签返回到主机标签池。虽然图8将该方法公开和描述为一系列步骤,但是应当理解,可以改变上面和图8中描述的顺序。

在将数据存储在存储器系统中的系统、架构和方法的一个方面中,存储器控制电路使用远程地址定序器来跟踪在数据缓冲器电路的写入缓冲器中的何处写入数据以用于下一存储操作。使用同步的状态机驱动的地址指针或地址定序器来跟踪数据应当被写入数据缓冲器电路中的何处,例如缓冲器地址,应当提高主机和DC芯片之间的数据链路的效率以及AC芯片和DC芯片之间的链路的效率。图9示出了示例性流程图,其图示和描述了具有AC电路控制的地址定序器的分布式存储器缓冲器系统如何使用远程定序器来跟踪数据缓冲器电路(例如DC芯片)的写缓冲器中的何处为下一操作写数据的方法。结合图10描述图9的方法,其示出AC和DC芯片的映射表和状态机驱动的地址指针或地址定序器435、445,例如本地存储标签FIFO。虽然为了方便起见并且不是为了限制本公开而将方法900描述为包括一系列和/或多个步骤,但是应当理解,该过程不需要作为一系列步骤来执行,和/或这些步骤不需要以关于图9所示和所述的顺序来执行,但是该过程可以被集成和/或一个或多个步骤可以一起、同时执行,或者这些步骤可以以所公开的顺序或以替代顺序来执行。

在图9的示例性方法中,在905处,主机402发送并且存储器控制电路430接收具有存储数据标签的存储命令。存储数据标签可以是主机从主机标签池406获得、生成或弹出的主机存储数据标签。为了便于参考,图9和图10中的存储器控制电路可替换地可以称为AC电路或AC芯片。在图10所示的示例中,主机402从主机标签池406获得存储数据标签"G"。存储数据标签关联并标识主机存储命令。存储命令标识存储器设备中存储数据的位置,且在图5中,位A0-A38是存储器设备中存储数据的位置,而位Q0-6是用于标识命令的主机标签。在接收到存储命令时,图9中在910处的AC电路从其本地地址定序器获得或弹出下一个标签。在图10的示例中,AC电路430从其本地地址定序器(例如,本地存储标签FIFO435)弹出的下一标签是标签#29。

图9中915处的AC电路将从缓冲器中存储的命令与从AC电路地址定序器435获得的本地标签(例如本地存储数据标签)相关联,并且将来自AC电路地址定序器的标签(例如本地存储数据标签)映射到从主机标签池接收的存储数据标签,并且将信息(例如关系、关联)存储在映射表436中,如图10所示。以这种方式,本地存储数据标签与从主机接收的命令和存储数据标签相关联。在图10的示例中,来自AC电路地址定序器435的下一标签为标签#29,且本地存储数据标签#29被映射到主机存储数据标签G,使得存储数据标签#29与主机标签G相关联。

图9中的AC电路在920处向DC电路440发送写入缓冲器命令,以通知DC电路440从其本地地址定序器(例如图10所示的本地存储标签FIFO445)获得或弹出下一标签。在图9中的925处,DC电路处理、获得或弹出来自其本地地址定序器(例如本地存储标签FIFO445)的下一标签,并且将来自主机402的数据存储到由DC电路的本地地址定序器445指向的数据缓冲器位置中。在图10的示例中,DC电路从其本地地址定序器445(例如,其本地存储标签FIFO)获得标签#29,且将来自主机的数据存储到与标签#29相关的数据缓冲器位置中。AC电路430的本地地址定序器435应当与DC电路440的本地地址定序器445同步,以便定序器指向DC电路中的相同地址/位置,例如存储器缓冲器。

图10所示的AC电路调度器448在图9中的930处将存储命令连同其映射表中的相关本地存储标签一起发布到存储器设备。在图9和图10的示例中,AC电路430将与标签#29相关联的存储命令发送到图4中的存储装置450。AC电路向存储器设备发送命令(提取或存储)和到存储器设备的存储器地址(图5中的A0-A38)。图9中935处的AC电路将具有本地存储数据标签的从缓冲器存储命令发送到DC电路。在图10的示例中,AC电路调度器438向DC电路440发布与标签#29相关联的从缓冲器存储命令。在图9中的940处,DC电路使用从AC电路接收的本地存储标签从缓冲器位置取回数据。在图10的示例中,DC电路440使用从AC电路430接收的本地标签#29从缓冲区#29取回数据。

在图9中的945处,DC电路将数据存储到存储器设备。在图10的示例中,DC电路440将数据存储到存储器设备(例如,图4中的存储器设备450)中的最初由主机存储命令标识的位置(由图5中的位A0-A38标识的位置或地址)。在图9中的950处,DC电路440将本地标签推送回到其地址定序器,例如本地存储标签FIFO。在图10的示例中,DC电路440将标签#29推送回或返回到其本地存储标签FIFO445。在图9中的955处,AC电路430通过使用本地存储标签作为索引来从其映射表436中取回主机标签,并且在955处将主机存储数据标签返回给主机。在图10的示例中,AC电路通过使用标签#29作为索引从其映射表436中取回主机标签G,并将主机存储数据标签G返回给主机。在图9中的960处,AC电路430将其本地存储数据标签推送回到其本地地址定序器。在图10的例子中,AC电路430将其本地存储数据标记#29推送回或返回到本地存储标记FIFO435。在图9中的965处,主机将主机存储数据标签返回到主机标签池。在图10的示例中,主机402将主机存储数据标签G返回到主机标签池406。

图11中示出了根据一个实施例的将数据存储在存储器系统中的替代方法。虽然为了方便起见并且不是为了将本公开限制为包括一系列和/或多个步骤而描述方法1100,但是应当理解,该过程不需要作为一系列步骤来执行,和/或这些步骤不需要以关于图11所示和所述的顺序来执行,而是该过程可以被集成和/或一个或多个步骤可以一起、同时执行,或者这些步骤可以以所公开的顺序或以替代顺序来执行。

在图11的示例性方法中,在1105处,主机将存储命令拆分成写入缓冲器命令和从缓冲器存储命令。在1110处,通过主机和DC电路之间的通信链路,例如图4中的链路465,主机发送并且DC芯片接收存储数据和写入缓冲器命令。在1115,AC和DC芯片都维护单独的本地状态机驱动的地址指针或本地地址定序器(例如,本地存储标签FIFO),其被同步并且以相同的顺序包含相同的标签。在该实施例中,本地存储标签标识存储器数据缓冲器电路中的位置,例如DC电路中的地址或位置。在1120处,经由主机和AC电路之间的通信链路(例如图4中的链路460)主机发送并且AC电路接收存储命令连同来自托管池的存储数据标签(例如主机标签)。

在1125处,AC电路在接收到主机存储数据命令时从其本地地址定序器(例如,AC存储标记FIFO)获得本地存储数据标签。在1130,AC电路将主机存储数据标签关联或映射到从AC本地地址定序器接收或获得的AC本地存储数据标签,并将该关联存储在映射表中。在1135处,AC电路将主机存储命令解码为从缓冲器存储的命令。由于写入缓冲命令直接从主机发送到DC电路,因此本实施例的AC电路不需要将缓冲器写入命令发送到DC电路。在1140处,AC电路将从缓冲器存储命令连同从其本地地址定序器(其对应于并标识缓冲存储器或DC电路中的地址位置)接收的本地存储数据一起推送到其调度器中的存储命令缓冲器中。在1145处,DC电路440在接收到写入缓冲器命令时从其地址定序器445(例如本地存储标签FIFO)获得或弹出本地存储数据标签,并且在1150,将存储数据存储到由从其本地地址定序器获得的存储数据标签所指向的数据缓冲器中。

图11中的存储数据的过程继续进行图8中的框850到890所示的操作,如上所述。在存储数据的这个实施例中,AC电路430将主机存储命令解码为从缓冲器存储命令。AC电路430不再需要向DC电路440发送写入缓冲器命令,因为DC电路知道在DC电路(缓冲存储器)中的何处存储数据。在该实施例中,AC电路430和DC电路440之间的BCOM链路的带宽不用于写入缓冲器命令。然而,主机和DC电路之间的链路的带宽不是仅用于传递数据。代替AC电路指示DC电路弹出它们的本地标签FIFO,如图8和9的方法中那样,主机告诉DC电路弹出它们的本地标签FIFO。

使用同步状态机来跟踪存储数据应被写入的缓冲器地址的地址指针改进了主机与DC芯片之间以及AC芯片与DC芯片之间的数据链路的效率,但其可能产生可靠性问题。如果状态机驱动的地址指针(例如地址定序器,诸如例如本地存储标签FIFO)失去同步,则数据缓冲器电路将把存储数据连续地写入到与存储器控制电路(AC芯片)将告知要存储在存储器设备中的数据的地址不同的地址。当这种情况发生时,无法检测到状态机之一(例如地址定序器)不同步,并且错误可能不会被注意到,直到来自读取操作的ECC错误(被检测到)为止。当对与错误数据相关联的地址(例如,先前与不同步状态机一起存储到的位置)执行读取操作时,ECC将是坏的。

为了降低存储器控制电路(AC芯片)和数据缓冲器电路(DC芯片)的地址定序器(例如本地存储标签FIFO)失去同步的风险,可以实现周期性的标签检查和再同步过程。在一个实施例中,存储器控制电路(AC电路)可以在BCOM链路的空闲周期期间将下一个要使用的存储数据标签发送到数据缓冲器电路(DC芯片),和/或在替代实施例中,数据缓冲器电路或DC芯片可以将下一个要使用的存储数据标签发送到主机。下面将更详细地描述这两个过程。

在图12的流程图中示意性地示出了一种检查存储器控制电路和数据缓冲器电路的状态机驱动的地址指针是否不同步的方法。虽然为了方便起见并且不是为了将本公开限制为包括一系列和/或多个步骤而描述图12中的方法1200,但是应当理解,该过程不需要作为一系列步骤来执行,和/或这些步骤不需要以关于图12所示和描述的顺序来执行,而是该过程可以被集成和/或一个或多个步骤可以一起、同时执行,或者这些步骤可以以所公开的顺序或以替代顺序来执行。

在图12中的1205处,所有DC芯片将它们的“下一个要写入地址”从它们的本地地址定序器发送到主机。例如,图4中的DC芯片440可以将它们的下一个要写入地址,例如本地存储数据标签,从其本地地址定序器,例如图10中的本地存储标签FIFO445,经由第二链路465发送到主机。在图12中的1210处,比较从每个DC芯片440接收的标签,优选地由主机进行比较。如果来自DC芯片的任何标签不同,则在1215处,恢复命令可优选地由主机经由链路460发布到AC芯片430,从而系统将进入恢复模式。作为恢复的一部分,在图12中的1220处,AC芯片430可以经由链路470重置DC芯片440。当到主机的链路空闲时,或者如果检查没有较早发生,则根据设定的频率或时间周期,系统可以进行周期性地检查AC芯片本地地址定序器和DC芯片本地地址定序器的同步的过程。注意,当存储器控制电路(AC芯片)控制系统的地址指针(例如地址定序器)时,主机不知道数据缓冲器电路(DC芯片)是否正在发送正确的地址标签。主机仅检测由于DC芯片不是都报告相同的下一个要写入地址的事实而发生的错误。主机可以读取数据缓冲器电路(DC芯片)的状态寄存器,以查看错误发生在哪里以及错误是什么。然而,主机可能能够隔离哪个DC芯片出错而不轮询状态寄存器,因为一个以上的DC芯片具有不同步的地址序列发生器(指针)是非常不可能的。

恢复模式可以包括以下动作中的一个或多个。主机(例如处理器或主机存储器控制器)可停止在存储器通道上发送新操作,主机可冲刷所有未完成的存储操作,和/或主机可等待所有提取操作完成。可以采取适当的动作,例如可以排空数据队列,可以节省通道等。该动作可以包括如果坏DC芯片正在发生频繁错误则移除或节省掉它。这些动作中的一些通常需要进入存储器系统上的非主线模式。主机也可以发布状态机重置操作,使得存储器控制电路(AC芯片)和数据缓冲器电路(DC芯片)全部重新初始化它们的状态机驱动的地址指针或地址定序器。AC芯片可以通过经由链路470发送命令来重置DC芯片本地地址定序器。在优选实施例中,这样的动作将是非主线操作。在采取适当动作之后,系统和主机可重新开始在存储器通道上发布命令。

图13的流程图中示出了检查存储器控制电路(AC芯片)和数据缓冲器电路(DC芯片)的本地地址定序器是否不同步的替代方法。虽然为了方便起见并且不是为了将本公开限制为包括一系列和/或多个步骤而描述图13中的方法1300,但是应当理解,该过程不需要作为一系列步骤来执行,和/或这些步骤不需要以关于图13所示和描述的顺序来执行,而是该过程可以被集成和/或一个或多个步骤可以一起、同时执行,或者这些步骤可以以所公开的顺序或以替代顺序来执行。

检查本地地址定序器是否同步的方法还可涉及经历校正动作。在一个实施例中,校正动作可以包括使AC芯片向DC芯片发送周期性SYNC命令。在一个实施例中,AC芯片可以检查BCOM链路470是否空闲。作为替代或补充,如果在一定量的时间或一定数量的操作之后未检查本地地址定序器,则系统仍然可以根据如下面关于图13描述的一个实施例经历同步检查。在通信链路470被完全利用的系统中,其中在可编程时间量之后,针对AC芯片430不能发现空闲周期来发送其下一个要使用的标签,在AC芯片430经由链路470向所有DC芯片440发送下一个要使用的存储数据标签之后,AC芯片430发信号通知其调度器438暂停,使得系统可以经历同步检查。在图13的1305,存储器控制电路(AC芯片)可以将下一个要写入的地址(TAG)从AC芯片本地地址定序器(例如,其本地存储标签FIFO)发送到数据缓冲器电路(DC芯片)。在一个示例中,AC芯片430可将其下一个要写入地址标签从其本地存储标签FIFO435通过BCOM总线(链路470)发送到DC芯片440。在图13中的410处,每个DC芯片440将其下一个要写入的来自其本地地址定序器(例如其本地存储数据标签FIFO445)的地址(标签)与由AC芯片430发送的标签进行比较,以检查DC芯片的地址指针(地址定序器)是否正确。如果在图13中的1315处DC芯片440之一出错,则DC芯片440通过链路475上的ATTN信号通知AC芯片1030。

该ATTN信号不提供关于哪个DC芯片出错的信息,因为这是线或信号。在图13的步骤1320处,AC芯片440接着通过链路460发送错误ATTN信号给主机。主机然后可以进入恢复模式。在接收到注意信号时,在图13中1325处的主机可经由链路460向AC芯片430发布恢复命令。然而,主机不再知道什么是错误的以及在哪里,如当DC芯片简单地将下一地址从地址定序器(地址指针)发送到主机时所做的那样。系统可进入恢复模式,借此主机可停止在存储器通道上发送新操作并冲刷所有未完成的操作。由于主机不知道什么是错误的或在哪里,所以应当冲刷提取和存储操作。系统可以进入非主线操作。主机可以从DC芯片寄存器读取状态寄存器,以查看在哪里发生错误以及发生什么错误。既然主机知道什么是错误的以及在哪里,主机可能采取动作。如果其经常出错,则该动作可以是省去坏的DC芯片。动作还可以包括发布状态机重置操作,使得AC芯片和DC芯片都重新初始化它们的状态机驱动的地址指针,例如地址定序器。图13中1330处的AC芯片可以经由链路470重置(一个或多个)DC芯片440。在适当的动作之后,系统可退出非主线模式并恢复在存储器通道上发布命令。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言(例如Smalltalk、C++等)以及常规的过程式编程语言(例如"C"编程语言或类似的编程语言)。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

此外,根据各种实施例的系统可以包括处理器和与处理器集成和/或可由处理器执行的逻辑,该逻辑被配置为执行本文所述的过程步骤中的一个或多个。通过集成,是指处理器具有作为硬件逻辑嵌入其中的逻辑,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)等。通过可由处理器执行,意味着逻辑是硬件逻辑;软件逻辑,例如固件、操作系统的一部分、应用程序的一部分;等等,或者硬件和软件逻辑的某种组合,其可由处理器访问并且被配置成使处理器在由处理器执行时执行某种功能。软件逻辑可以存储在任何存储器类型的本地和/或远程存储器上,如本领域所公知的。可以使用本领域已知的任何处理器,诸如软件处理器模块和/或硬件处理器,诸如ASIC、FPGA、中央处理单元(CPU)、集成电路(IC)、图形处理单元(GPU)等。

很清楚,前述系统和/或方法的各种特征可以以任何方式组合,从而从以上所呈现的描述中产生多个组合。

还应当理解,本发明的实施例可以以代表客户部署的服务的形式提供,以便按需提供服务。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

34页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于增加加速处理装置的带宽的并行数据传送

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!