这是要求于2010年1月28日提交的美国临时专利申请No.61/299,158的权益的国际专利合作条约专利申请,该美国临时专利申请No.61/299,158通过引用的方式全部并入本文。
具体实施方式
本文所公开的示例性的方法、装置和制品可以用于促进比可以使用传统的DRAM接口设计所达到的更大的可扩展性,同时不增加(或者不显著增加)处理器开销。除了更大的可扩展性以外,本文所公开的示例性方法、装置和制品还可以用于与存储器设备连接以达到更高带宽的存储器存取以及更高功效和时效的存储器存取。结合动态随机存取存储器(DRAM)架构公开了示例性的方法、装置和制品,但是也可以结合包括忆阻器存储器设备、相变RAM(PCRAM)设备、静态RAM(SRAM)设备、铁电RAM(FRAM)设备等的其它类型的存储器来实现示例性方法、装置和制品。
传统上,DRAM设备被设计为严格地根据来自存储器控制器的命令来进行操作,使得已知的DRAM设备以被动方式且无偏差地执行接收到的命令。因此,传统上,DRAM设备几乎没有独立的逻辑,并因此表现出较低程度的自治性。例如,同步DRAM(SDRAM)设备根据时钟信号来进行操作,使得必须根据与时钟信号相关联的严格的定时准则来接收、处理和输出通信(例如,读、写、数据通信)。此外,传统的DRAM设备的物理接口对扩展容量以及达到更高数据速率的通信构成了限制。也即是说,传统的DRAM物理接口包括不容易扩展的单独的地址和数据线以及单独的命令线。此外,传统的DRAM物理接口适应存储器控制器与存储器设备之间的通信,而不适应存储器设备到存储器设备的通信。
虽然传统的DRAM接口设计的简单性支持简单的存储器存取操作,但是这些传统的接口设计展现出了对提高存储器性能的巨大的瓶颈。这在被设计用于高性能处理器但是受到其存储器子系统的限制的基于处理器的系统中尤其明显。例如,提高总线时钟速率通常是改善存储器性能的答案。然而,提高总线时钟速率最终由于引起最终的边缘偏移和信号故障的印刷电路板(PCB)限制(例如,迹线长度、电容、热额定值等)而变得不切实际。
传统的DRAM接口设计的其它缺点包括如何使用存储器接口来传送存储器存取请求和其它命令。例如,为了执行读或写操作,存储器控制器首先发送被称作行地址的地址的一部分,DRAM使用该行地址来识别存储体并且读取相应的行。然后,存储器控制器发送被称作列地址的剩余的地址来识别打开的行中的特定的高速缓存线。存储器控制器发送单独的控制信号来区分行地址和列地址。此外,存储器控制器必须模拟DRAM中的打开的行的状态,这将DRAM的使用限制于由控制器模拟的特定类型。因此,DRAM依赖于来自存储器控制器的大量通信以用于其大量的操作。这种传统的“主—从”设计的缺点在于随着存储器组件中的存储器芯片或存储体的数量的增加,存储器控制器的复杂度也增加。随着向处理器提供更多的存储器控制器,存储器控制器设计的增加的复杂度将需要额外的处理器区域和功率预算。另一个缺点在于DRAM组织严格地受到这种传统的主—从设计的约束。例如,不论处理技术或存储器容量如何,行存取是使用由存储器控制器发送的第一组比特来进行的,并且相对于此的任何偏差将引起不正确或不可操作的存储器存取,或者将导致由于存储器组件等待列地址来执行存取的额外的延迟。
结合光学互连来进一步了解传统的DRAM接口设计的缺点。例如,由于由光学提供的显著的带宽增加,可以连接到存储器控制器的存储器组件的数量相对较高。用于对所有DRAM组件中的所有打开的存储体进行跟踪的存储器控制器将会明显地更加复杂。因此,使用传统DRAM接口设计的可扩展性可能不具有成本效益或者不是可行的。
本文所公开的示例性的方法、装置和制品涉及向存储器提供被配置为使用总线分组格式来与存储器控制器和其它存储器(例如,存储器到存储器的传送)交换信息的总线接口。总线分组可以用于使用点到点或广播通信在单个存储器总线上在一个或多个存储器设备与一个或多个存储器控制器之间传送地址、数据和/或控制信息。在一些示例性的实现中,本文所描述的示例性存储器总线接口可以在多控制器模式中使用以使得多个存储器控制器能够连接到一个或多个存储器设备。本文所描述的示例性存储器总线接口包括命令/请求总线和单独的响应总线。命令/请求总线用于将命令信息和存储器存取请求信息从一个或多个存储器控制器传送到一个或多个存储器设备。响应总线用于在存储器设备与存储器控制器之间传送包括应答和请求的数据的响应信息。
结合本文所描述的存储器总线接口使用的总线分组通信允许存储器控制器与存储器设备之间的更高效的通信以及对存储器设备内部的存储器存取带宽的更好的利用。例如,传统的DRAM存储器接口被配置为一次仅为一个存储器控制器和一个存储器存取请求服务。虽然这使得传统的存储器控制器能够处于所有存储器存取请求和大多数或所有内部存储器操作(例如,预充电、自刷新、低功率模式转换等)的控制之中,但是传统的存储器接口架构对存储器控制器施加了很大的负担并且促使所有的数据传送通过存储器控制器。相反,本文所公开的存储器总线、总线分组通信和内部结构使得DRAM存储器(或其它类型的存储器)能够同时服务于同一存储器总线上的存储器控制器和其它存储器设备,并且在来自一个或多个存储器控制器或存储器设备的多个待决的存储器存取请求之间进行仲裁。也即是说,本文所描述的存储器设备结构可以从存储器控制器或存储器设备经由总线分组接收存储器存取请求,同时在内部仲裁待决的存储器存取请求并且将数据返回到该存储器总线上的相同的或其它的存储器控制器或存储器设备。通过这种方式,本文所公开的示例性的方法、装置和制品允许具有比传统存储器接口显著更少的定时约束的存储器接口,并且允许能够更高效地对存储器存储位置进行存取同时从存储器控制器或存储器设备同时接收额外的存储器存取请求或其它总线分组通信的存储器设备。
使用本文所描述的总线分组,任何存储器可以向连接到同一总线的另一存储器发起通信,而无需到存储器控制器或处理器的高速缓存的复制数据的中间通信。检查点是这种存储器到存储器传送的示例性使用。使用传统的DRAM接口设计,当将数据从一个存储器组件复制到另一个存储器组件时,必须将该数据复制到处理器的高速缓存,这会引起延迟并且污染处理器的高速缓存,从而导致不必要的高速缓存未命中。使用本文所公开的基于分组的通信,存储器控制器可以直接在存储器组件之间发起传送。
此外,本文所公开的示例性的方法、装置和制品使得存储器设备能够比已知的存储器设备相对更加自治地执行操作。通过这种方式,存储器总线利用和存储器存取操作可以比在已知的存储器设备实现中相对更加高效。为了提供存储器设备的更自治的操作,本文所公开的示例性的方法、装置和制品使得存储器控制器能够向存储器设备传送触发存储器设备的自治行动的提示信息。可以经由例如存储器总线接口的命令/请求总线来传送这种提示信息。示例性的提示信息可以指示存储器控制器针对某一已知的或期望的时间量不需要对存储器设备进行存取,使得存储器设备可以进入自刷新状态或者低功率模式(例如,待机或睡眠模式)而没有延迟。
当接收到提示信息时,本文所描述的存储器设备的自治决定逻辑可以确定是按提示信息行动还是忽略该提示信息而无需从传送该提示信息的存储器控制器接收另一指示。例如,根据本文所公开的示例性的方法、装置和制品实现的存储器设备可以考虑存储器设备尚未完成的任何内部执行或排队的存储器存取操作来仲裁从存储器控制器接收的提示。通过这种仲裁,存储器设备可以自治地确定其是否可以或应当按任何特定的提示来行动。例如,如果第一存储器控制器确定其将在至少接下来的100毫秒(ms)内不执行任何存储器存取,则第一存储器控制器生成指示允许存储器设备进入自刷新或低功率模式的提示。如果同时地,该存储器设备从同一或另一存储器控制器或另一存储器设备接收到下一个存储器存取请求,则该存储器设备可以自治地确定忽略或者推迟来自第一存储器控制器的提示,这是因为存储器设备应当保持活动以服务于下一个存储器存取请求。这仅仅是可以被传送到本文所公开的存储器设备并且可以由其处理的一种类型的提示的一个示例。如下面详细描述的,也可以使用其它提示信息。
与其中由存储器控制器在中心执行存储器操作管理的传统的存储器控制器和存储器设备不同,本文所描述的提示信息允许将大部分的存储器操作管理卸载、共享或转移到存储器设备。通过这种方式,本文所描述的存储器设备结构使得存储器设备能够从多个存储器控制器接收多个存储器存取请求,并且在内部仲裁如何处理存储器控制器的这些存储器存取请求。因此,本文所公开的示例性存储器控制器负担了相对较少的总线定时约束,这是因为其可以向存储器设备发送存储器存取请求和提示信息,并且让存储器设备来确定用于执行所请求的或提示的操作的定时。
现在转向图1,示例性的存储器接口配置100示出了可操作地耦合到存储器104的存储器控制器102。存储器控制器102可以是独立的存储器控制器集成电路(IC)或者在处理器芯片中实现的嵌入式存储器控制器(例如,与处理器内核制作在同一管芯上或者位于同一芯片封装中)。在所示的示例中,存储器104是DRAM存储器。DRAM存储器104可以是单个的DRAM存储器IC或者包括多个DRAM存储器IC的存储器组件。在一些示例性的实现中,DRAM存储器104可以是在处理器芯片中实现的嵌入式存储器。如所示,存储器接口配置100包括存储器总线106。
存储器总线106可以具有任意数量比特的宽度,并且用于在存储器控制器102与DRAM存储器104之间传送地址、数据、命令和/或提示信息。当实现为存储器组件时,存储器总线106的每个线路可以连接到存储器组件的多个存储器芯片(或存储器设备)。如下面更详细讨论的,存储器控制器102可以基于芯片标识信息和/或地址范围来选择性地与单独的每个存储器芯片进行通信。
在所示的示例中,存储器控制器102和DRAM存储器104经由通过存储器总线106发送的总线分组来进行通信。总线分组可以包含提示108、数据110、地址112或操作代码114中的一个或多个。在一些示例性的实现中,分组可以用于单独地传送提示信息,并且单独的读/写分组可以用于传送存储器存取请求。在图2、图3和图4中示出了示例性的总线分组。
转向图2,图2的示例性读/写总线分组200可以用于将存储器存取请求从存储器控制器传送到存储器设备。总线分组200还可以用于在存储器设备之间传送存储器存取请求。在所示的示例中,读/写总线分组200包括报头字段202、目的地选择字段204、操作代码字段206和地址字段208。读/写总线分组200还可以包括数据字段210、校验和字段212、奇偶校验字段214和纠错码(ECC)字段216。例如,当读/写总线分组200用于请求写操作时,可以存在数据字段210、校验和字段212、奇偶校验字段214和ECC字段216。在该例子中,数据字段210存储写入数据。此外,校验和字段212存储校验和值,奇偶校验字段214存储奇偶校验值,ECC字段216存储ECC值,所有这些可以用于检测在数据字段210和/或读/写总线分组200中的其它信息中传送的写入数据的任何错误。
在所示的示例中,读请求消息可以包括地址比特和突发长度,以减少需要在存储器总线106上传送的读请求消息的数量。在一些示例性的实现中,读请求消息还可以包括跨距和请求间隔值,其指示突发数据应当被传送到请求存储器控制器的跨距和间隔。该跨距和请求间隔值可以与通常在特定的间隔或时间处需要数据的流式应用结合使用。跨距和请求间隔值的使用减小了需要由存储器控制器传送的读请求消息的数量。为了停止或取消突发存取,存储器控制器可以传送具有中断消息的下一个分组。这种分组可以是下面结合图3所描述的并且携带指示存储器停止流出数据的不可忽略中断的提示总线分组300的形式。
在所示的示例中,报头字段202包括传送总线分组200的请求存储器控制器(例如,图1的存储器控制器102)的标识。报头字段202可以额外地或可替换地包括将适合于作为报头信息进行传送的任何其它信息。例如,这种其它信息可以是对正传送的信息或操作的类型的指示(例如,读/写/提示信息)。
目的地选择字段204可以用于传送指示请求存储器控制器(或者其它存储器设备)打算将总线分组200发送到的特定存储器设备的信息。例如,目的地选择字段204可以是唯一地识别总线(例如,存储器总线106)上的特定存储器设备的存储器设备标识符。在一些例子中,省略了目的地选择字段204并且地址字段208用于指示目标存储器设备。例如,如果存储器设备接收到读/写总线分组200并且确定所包含的地址属于物理存储器映射(例如,图8的物理存储器映射816)的其存储器范围部分,则存储器设备将该读/写总线分组200标记或标识为相关的并且进一步处理该总线分组200。
操作代码字段206用于传送指示所请求的操作的代码。示例性的代码可以指示读操作、写操作、突发读取等。
地址字段208可以包括指示要从中读取数据或者要向其写入数据的存储位置的一个或多个地址和/或地址偏移信息。
当操作代码字段206指示写操作时,数据字段210可以包括由存储器控制器102传送的数据。例如,该数据可以是要存储在所寻址的存储器中的数据。校验和字段212包括数据字段210中的数据的校验和。
转向图3,示例性提示总线分组300可以用于将提示信息从存储器控制器传送到存储器设备或者在存储器设备之间传送提示信息。在所示的示例中,提示总线分组300被示出为具有报头字段302、目的地选择字段304、操作代码字段306、提示字段308、可选的奇偶校验字段310以及可选的ECC字段312。奇偶校验字段310和ECC字段312可以用于检测提示总线分组300的传输中的错误。报头字段302可以与图2的报头字段202基本上类似或相同。目的地选择字段304可以与图2的目的地选择字段204基本上类似或相同。操作代码字段306可以与图2的操作代码字段206基本上类似或相同。在图3所示的示例中,操作代码字段306可以包括无操作被执行(NOP)代码或指示总线分组300传送提示信息的某个其它代码。提示字段308用于传送提示信息,该提示信息可以由存储器控制器用来基于随后某时间量存储器控制器的存储器存取需要(或存储器控制器的存储器存取不足)来向一个或多个存储器设备通知允许的内部存储器设备操作。在一些示例性的实现中,该时间量可以在提示中指定,或者可以由存储器设备基于例如所接收的提示的类型而预先已知。在其它示例性的实现中,可能不使存储器设备知道时间量,而是存储器设备可以执行所提示的操作(例如,自刷新、待机、低功耗模式转换等),直到其随后被激活(例如,通过一个或多个控制线或下一个提示总线分组的操作代码字段306中的唤醒操作代码)或者接收到下一个存储器存取请求。
其它类型的提示可以用于控制包含不同类型的存储器技术的混合存储器组件(例如,DRAM/忆阻器存储器组件或DRAM/PCRAM存储器组件)。例如,由于非易失性存储器(例如,闪存、忆阻器存储器和PCRAM存储器)的低写寿命额定值,因此在存储器组件中用作本地高速缓存或写入缓冲器的DRAM(或SRAM)可以存储频繁写入或改变的数据,该数据可以被定期地直写(write though)到非易失性存储器。可以在写请求之前或之后将提示总线分组(例如,提示总线分组300)传送到目的地存储器组件以指示该写请求包含频繁写入的数据(例如,频繁写入数据提示)或者只读数据(例如,只读数据提示)。通过这种方式,目的地存储器组件可以选择缓存该数据或者将该数据直写到非易失性存储器。此外,提示可以用于向存储器组件通知可以在其间执行直写操作的存储器存取空闲时间。
图4的示例性响应总线分组400可以用于将响应通信从存储器设备发送到存储器控制器或另一存储器设备。在所示的示例中,响应总线分组400包括报头字段402、目的地选择字段404、可选的数据字段406、可选的校验和字段408、可选的奇偶校验字段410以及可选的ECC字段412。报头字段402可以用于传送通信存储器设备的标识信息、应答信息和/或适合于作为报头信息的任何其它信息。目的地选择字段404可以用于传送指示响应总线分组400打算去往的特定目的地设备(例如,存储器控制器102)的信息。例如,目的地选择字段404可以存储唯一地识别总线(例如,存储器总线106)上的特定设备的设备标识符。在某些例子中,当存储器总线(例如,存储器总线106)上仅存在两个设备(例如,图1的存储器控制器102和存储器104)时,目的地选择字段404可以被省略、忽略、或者可以始终传送相同的信息。
当响应总线分组400用于返回响应于读取请求的数据时,响应总线分组400可以在数据字段406中包括从存储器获取的数据。此外,校验和字段408用于存储校验和,奇偶校验字段410用于存储奇偶校验值,ECC字段412用于存储ECC值,所有这些可以用于检测在数据字段406和/或响应总线分组400中的其它信息中传送的数据的任何错误。
返回图1,处理器116被示出为与存储器控制器102进行通信。处理器116包括用作处理器116的处理器内核的临时快速存取存储区域的高速缓存存储器118。高速缓存存储器118由多个高速缓存线形成,其中一个高速缓存线被标记为高速缓存线120。在某些示例性的处理器系统实现中,高速缓存线的大小(例如,64字节的高速缓存线、128字节的高速缓存线等)指示可以从外部存储器(例如,DRAM)读取以填充高速缓存宽度的字节的数量。
图5描绘了将存储器控制器102(图1)与多个存储器设备104、502、504和506互连的存储器总线106(图1)的示例性印刷电路板(PCB)配置的等角视图。在所示的示例中,存储器控制器102可以作为源或目的地设备操作,存储器设备104、502、504和506中的每一个也可以作为源或目的地设备操作。在本文所描述的所示的示例中,存储器设备104、502、504和506可以彼此通信以例如在其间传送存储器内容。例如,在检查点处理期间,可以使用存储器到存储器的传送操作将来自一个存储器设备的内容传送或复制到另一个存储器设备。
虽然未示出,但是还可以放置额外的存储器控制器与存储器总线106进行通信,并且存储器总线106可以作为多源和多目的地总线被操作。此外,存储器控制器和存储器设备可以在将特定的存储器控制器或存储器设备作为目标时以点到点的方式或者在将多个设备作为目标时以广播的方式来在存储器总线106上传送总线分组。
在图5所示的示例中,存储器总线106包括命令/请求/数据(CMD/RQST/DATA)总线508和响应/数据总线510。在所示的示例中,CMD/RQST/DATA总线508形成了用于将命令、存储器存取请求、写入数据和/或提示从存储器控制器102(和/或存储器总线106上的任何其它存储器控制器)传送到存储器设备104、502、504和506中的一个或多个的外出通信路径。在所示的示例中,响应/数据总线510形成了用于将包括应答和数据的响应信息从存储器设备104、502、504和506传送到存储器控制器102(和/或存储器总线106上的任何其它存储器控制器)的进入通信路径。
在图5所示的示例中,CMD/RQST/DATA总线508和响应/数据总线510使得存储器设备104、502、504和506之间的通信能够执行例如存储器到存储器的传送。例如,存储器设备104可以请求接入到CMD/RQST/DATA总线508以将数据传送到存储器设备502或任意其它存储器设备504、506。类似地,任意存储器设备104、502、504和506可以请求接入到响应/数据总线510以将响应或数据发送到另一存储器设备104、502、504和506。存储器设备之间(例如,存储器设备104、502、504和506中的两个或更多个之间)的存储器到存储器的传送可以用于在同构存储器技术(即,具有相同类型的存储器技术的存储器设备)之间或异构存储器技术(即,具有不同类型的存储器技术的存储器设备)之间实现直接存储器存取(DMA)传送。在一些示例中,存储器到存储器的传送可以用于执行从用于存储频繁改变的数据的具有高写寿命的存储器技术(例如,DRAM存储器)到用于存储长期持久数据的具有低写寿命的存储器技术(例如,闪存、忆阻器存储器和/或PCRAM存储器)的数据直写操作。
可以使用电互连或光学互连来实现存储器总线106。可以使用已知的技术在PCB上形成电互连。可以例如如在于2007年10月16日提交的、题为“Optical Interconnect System Providing Communication Between ComputerSystem Components”的并转让给惠普开发有限公司的美国专利申请No.11/873,325中所描述的那样来形成光学互连,该美国专利申请通过引用的方式全部并入本文。
转向图6和图12,其中描绘的示例性的存储器组件600和1200可以用于实现本文所公开的示例性的方法、装置和/或制品。在图6所示的示例中,DRAM PCB直插式存储器组件600(例如,双列直插式存储器组件(DIMM))被实现为包括安装在PCB 604上的四个存储器芯片602a-d的多芯片存储器组件。DRAM PCB直插式存储器组件600可以有利地用在光学接口系统中,在该光学接口系统中存储器组件600经由光学线路连接到其它子系统(例如,其它存储器组件和/或存储器控制器)。可替换地,存储器组件600还可以用在电接口系统中。为了与存储器总线106(图1和图5)互连,向存储器组件600提供存储器总线接口焊盘(pad)606。存储器总线接口焊盘606的每条线可以与存储器芯片602a-d中的一个或多个进行通信。通过这种方式,存储器总线接口焊盘606在存储器组件600上形成了本地总线以使用与上面结合图1至图5所描述的通信基本上类似或相同的通信来在主存储器总线(例如,存储器总线106)与存储器芯片602a-d之间交换通信。存储器组件600可以使用源同步时钟控制或外部时钟控制来进行操作。
如图6所示,存储器总线接口焊盘606被划分为与图5的CMD/RQST/DATA总线508进行通信的CMD/RQST/DATA总线接口焊盘608以及与图5的响应/数据总线510进行通信的响应/数据总线接口焊盘610。存储器组件600还提供有电源和地焊盘612以用于将电源和地互联至存储器芯片602a-d。
虽然存储器组件600被示出为具有四个存储器芯片,但是本文所公开的示例性的方法、装置和制品可以在具有更少或更多芯片的存储器组件中实现。此外,在一些示例性的实现中,可以可替换地使用光学互连接口来实现存储器总线接口焊盘606,并且存储器组件600可以提供有本地波导,以在光学互连接口与板载光检测器之间或者直接在光学互连接口与存储器芯片602a-d之间路由光学信号。
存储器组件600还包括在存储器总线106和存储器芯片602a-d之间进行通信的组件控制器614以对来自存储器控制器和其它存储器组件或设备的消息进行过滤和仲裁并且在存储器总线106和存储器芯片602a-d之间交换信息。下面结合图7来描述组件控制器614的示例性实现。
在一些示例性实现中,存储器组件600可以实现为可以将不同技术类型的存储器提供在其上的多存储器类型组件。例如,存储器芯片602a可以是易失性SDRAM型存储器,存储器芯片602b-d可以是非易失性忆阻器型存储器。由于SDRAM型存储器的低数据存取时间(times)和高写寿命额定值(rating)(例如,写周期额定值),因此其可以用作用于频繁写入数据的本地高速缓存。可以将来自SDRAM型存储器的数据定期地直写到一般可以具有更高的数据存取时间和更低的写寿命额定值的非易失性忆阻器型存储器。在其它示例性实现中,可替换地,可以使用PCRAM、闪存或任何其它类型的存储器来实现存储器芯片602b-d。
在一些示例中,可以使用堆叠了两个或更多个存储器管芯(例如,同构或异构存储器技术类型)的3D芯片堆叠(例如,与图12中所示的3D堆叠结构类似)来实现存储器芯片602a-d中的每一个。可替换地,可以仅使用3D芯片堆叠实现存储器芯片602a-d中的选择的存储器芯片。
在图12中示出了示例性的3D芯片堆叠存储器组件1200。3D芯片堆叠存储器组件1200可以有利地用在电接口系统中,在该电接口系统中存储器组件1200经由电线路连接到其它子系统(例如,其它存储器组件和/或存储器控制器)。可替换地或额外地,存储器组件1200可以用在光学接口系统中。图12的示例性的3D芯片堆叠存储器组件1200包括堆叠在第二IC管芯1204上的第一IC管芯1202,该第二IC管芯1204堆叠在第三IC管芯1205上。IC管芯1202、1204和1205承载在球栅阵列(BGA)芯片封装1206上。虽然在所示的示例中将芯片封装1206示出为BGA芯片封装,但是可以使用任何其它适当类型的芯片封装来实现示例性的3D芯片堆叠存储器组件1200。在所示的示例中,第一IC管芯1202是SDRAM存储器内核,第二IC管芯1204可以是另一SDRAM存储器内核或任何其它类型的存储器(例如,忆阻器存储器、SRAM、闪存、PCRAM等)或IC(例如,处理器、控制器等)。在SDRAM管芯(或任何其它存储器技术管芯)被堆叠在处理器或控制器管芯上的示例性实现中,可以将SDRAM管芯的地址线、控制线和数据线直接路由到芯片堆叠封装内部的处理器或控制器管芯。在这种实现中,可能不会出现芯片堆叠封装外部的存储器存取。可替换地或额外地,为了实现外部存储器存取,可以将存储器IC管芯的地址线、控制线和数据线路由到外部芯片接口(例如,BGA焊盘、表面安装焊盘、芯片引线等)。在一些示例中,存储器组件控制器可以与多存储器管芯堆叠在一起。例如,在图12所示的示例中,IC管芯1205可以是组件控制器(例如,与组件控制器614类似或相同)。虽然3D芯片堆叠存储器组件1200被示出为BGA封装,但是也可以使用其它类型的封装。
图7是图6的组件控制器614的框图。下面所描述的组件控制器614的不同部分可以实现为芯片或IC管芯中的集成电路。然后,可以将包含组件控制器614的芯片或IC管芯电或光学地安装在具有一个或多个存储器设备的PCB(例如,图6的PCB 604)和/或3D芯片堆叠结构(例如,图12的3D芯片堆叠存储器组件1200)上,以在存储器总线106(图1和图5)与相应的存储器芯片(例如,图6的存储器芯片602a-d)之间交换信息。虽然下面结合图7的示图描述组件控制器614,但是其它示例性实现也同样是合适的。例如,可以添加额外的结构,和/或可以取消图7中描绘的组件控制器614的某些部分或将其与其它部分组合。
在所示的示例中,组件控制器614包括将组件控制器614可通信地耦合到存储器总线106(图1和图5)的总线数据接口702。总线数据接口702可以包括三态双向缓冲器,以在组件控制器614在存储器总线106上活动地通信时能够在存储器总线106上接收/发送信息,以及在组件控制器614未在存储器总线106上活动地通信时能够将总线引脚或焊盘置于高阻抗三态水平。
在组件控制器614使用外部时钟控制进行操作的示例性实现中,总线数据接口702还可以包括时钟接口。否则,如果组件控制器614使用源同步时钟控制进行操作,则组件控制器614可以包括时钟源(未示出)。
为了对从存储器总线106接收的消息或总线分组进行解码和过滤,组件控制器614提供有消息输入子系统704。消息输入子系统704包括消息解码器706、消息过滤器708、操作解码器710和地址解码器712。在所示的示例中,消息解码器706对总线分组(例如,图2和图3的总线分组200和300)进行解析,以识别总线分组的不同字段(例如,图2的字段202、204、206、208、210和212和/或图3的字段302、306和308)中的信息。
消息过滤器708通过识别哪些总线分组与存储器组件600相关(例如,与和组件控制器614进行通信的存储器芯片602a-d相关)以及哪些总线分组可以被忽略(例如,其与存储器总线106上的其它存储器设备相关),来对接收的总线分组进行过滤。这可以通过探测分组的报头来完成。例如,消息过滤器708可以从报头信息(例如,图2至图4的报头202、302、402)获取(例如,来自图2的目的地选择字段204或图3的目的地选择字段304的)存储器设备标识信息,并且将所获取的存储器设备标识信息与存储器组件600的唯一标识值进行比较,以确定总线分组是否与存储器组件600相关。在一些例子中,目的地选择字段可以是空白的,或者包含指示总线分组是打算去往同一存储器总线上的所有存储器设备的广播分组的一般代码。如果总线分组与存储器组件600相关,则消息过滤器708可以生成所接收的总线分组应当由组件控制器614处理(即,不应被忽略)的指示。否则,如果消息过滤器708基于探测报头信息确定总线分组是不相关的,则可以在总线接口702处滤除分组的剩余部分。
操作解码器710从所接收的总线分组(例如,从图2和图3的操作代码字段206和306)获取并识别操作代码。地址解码器712从所接收的总线分组(例如,从图2的地址字段208)获取并解码地址。例如,如果存储器芯片602a-d使用行地址和列地址在内部操作,则地址解码器712可以将地址信息分为行地址和列地址。
为了处理提示信息,组件控制器614提供有包括提示解码器718和提示控制器720的提示逻辑子系统716。在所示的示例中,提示解码器718接收消息解码器706从总线分组中提取出的提示信息,并且对提示信息进行解码以识别不同类型的提示。提示控制器720分析所识别的提示以确定应当按该提示行动还是忽略该提示。提示控制器720基于不同的因素(或标准)做出这种决定,这些因素(或标准)包括存储器组件600是否正在执行待决的存储器存取请求、存储器存取请求是否排队等候、和/或存储器组件600是否正在处理或将要处理可能阻止其按提示行动的某些其它的存储器操作。提示控制器720也可以丢弃不相关的提示(例如,在存储器芯片已经处于睡眠模式时所接收的睡眠提示)。
为了控制内部维护操作的性能,组件控制器614提供有维护控制器722。在所示的示例中,维护控制器722确定何时执行比特单元的预充电(以允许存储器读取)、自刷新操作、低功率模式转换、唤醒转换等。在一些例子中,维护控制器722可以与提示逻辑子系统716协作以在由提示逻辑子系统716基于所接收的提示信息识别的时机期间执行某些内部维护操作。例如,如果所接收的提示指示特定的存储器控制器将不会在特定的时间段、时间长度或持续时间内存取存储器组件600,则提示控制器720可以识别维护控制器722执行自刷新操作、进入低功率模式和/或执行其它维护操作的时机。
为了存储信息,组件控制器614提供有与所示示例中的存储器芯片602a-d进行通信的存储器设备接口726。存储器设备接口726可以包括双向缓冲器以用于从存储器芯片602a-d读取数据并且向存储器芯片602a-d写入数据以及用于向存储器芯片602a-d提供地址信息。
为了仲裁对存储器存取请求的服务,组件控制器614提供有数据存储存取仲裁器728。数据存储存取仲裁器728可以存储和/或存取传送到存储器组件600的存储器存取请求的存储器操作队列729并且允许以诸如基于先入先出优先级之类的有序的方式向这些请求提供服务。在所示的示例中,数据存储存取仲裁器728还管理并监视存储器操作队列729,以确定排队的请求的数量何时超过阈值,所述阈值指示何时不能再向队列729添加另外的存储器存取请求。例如,这可以在队列已满并且不能再缓冲进入的请求时发生。当不能向存储器操作队列729添加其它的存取请求时,所示示例的数据存储存取仲裁器728使消息输出子系统736向经由总线数据接口702接收到的后续的存储器存取请求响应否定应答,直到队列729中的请求的数量低于阈值为止。否定应答可以向一个或多个请求设备(例如,图1、图5和图8的存储器控制器102或图1和图5的任意存储器设备104、502、504和506)指示不准许存储器存取请求。在一些示例中,否定应答还指示请求设备应当在某随后的时间(例如,可以由或可以不由数据存储存取仲裁器728或组件控制器614指定的时间)向存储器组件600重新发送该存储器存取请求。在一些示例中,否定应答使得请求设备在某随后的时间(例如,可以由或可以不由数据存储存取仲裁器728或组件控制器614指定的时间)向存储器组件600重新发送该存储器存取请求。
为了监视存储器芯片602a-d的状态,组件控制器614提供有数据存储状态监视器730。数据存储状态监视器730跟踪何时对存储器芯片602a-d执行包括读/写操作、自刷新操作、预充电操作、断电操作之类的操作。数据存储状态监视器730跟踪存储器芯片602a-d何时处于睡眠状态、待机或其它低功率模式。基于在存储器芯片602a-d中跟踪的活动,数据存储状态监视器730可以确定存储器芯片602a-d是繁忙还是空闲以及排队的或最近接收的操作是可以被立即执行还是需要被延迟直到完成其它操作为止。在所示的示例中,数据存储状态监视器730可以与数据存储存取仲裁器728、维护控制器722和提示逻辑子系统716交换信息。
为了生成用于在存储器总线106上发送的消息或总线分组,组件控制器614提供有消息输出子系统732。例如,响应于来自存储器控制器(例如,图1和图5的存储器控制器102)的读取请求,消息输出子系统732可以生成图4的响应总线分组400以将数据传送到该存储器控制器。消息输出子系统732包括目的地选择器734和消息发生器736。目的地选择器734选择总线分组要被发送到的目的地设备(例如,图1和图5的存储器控制器102)的唯一标识,并且将该唯一标识存储在总线分组的目的地选择字段(例如,图4的目的地选择字段404)中。目的地选择器734可以存储设备标识符代码的数据结构,每一个设备标识符代码对应于经由存储器总线106连接到组件控制器614的相应设备。在一些示例性的实现中,目的地选择器734可以从与从数据存储接口726接收数据的消息输出子系统732相连的数据存储存取仲裁器728接收设备标识符代码。通过这种方式,从数据存储存取仲裁器728接收的设备标识符代码可以用于指示请求从数据存储接口726接收的数据的设备。
消息发生器736通过例如将来自报头字段402、目的地选择字段404、数据字段406和校验和字段408的信息结合来形成响应总线分组400。在一些示例性的实现中,消息发生器736可以被配置为针对读取数据生成校验和、奇偶校验值和ECC值,而在其它示例性的实现中,数据存储接口726可以被配置为生成这种信息。
为了请求访问存储器总线106,所示示例的组件控制器614提供有总线请求线738。在图7所示的示例中,总线请求线738位于组件控制器614的外部,并且被配置为连接到存储器控制器102以请求存储器控制器102准许存储器组件600访问存储器总线106。通过这种方式,存储器组件600可以经由存储器总线106向其它设备(例如,向存储器控制器102和/或向诸如图1和图5的存储器设备104、502、504和/或506等其它存储器设备)发送数据和/或消息,而不会在存储器总线106上引起冲突或总线争用。在图7所示的示例中,总线请求线738在内部连接到消息输出子系统732。通过这种方式,当消息输出子系统732准备好在存储器总线106上传送总线分组时,所示示例的消息输出子系统732在总线请求线738上产生信号断言以请求访问存储器总线106。在一些示例中,总线请求线738是双向线,存储器控制器102可以经由该双向线做出响应以准许存储器总线访问。在其它示例中,总线请求线738是组件控制器614的单向输出线,存储器控制器102经由存储器总线106向组件控制器614发送总线访问准许响应。
在多个存储器组件(例如,图1和图5的存储器设备104、502、504和506)连接到同一存储器总线106的一些示例中,其它的存储器组件也提供有与图7的总线请求线738类似或相同的相应总线请求线,以允许其它的存储器组件请求访问存储器总线106。
图8是示例性存储器控制器102(图1和图5)的框图。下面所描述的示例性存储器控制器102的不同部分可以被实现为单个IC管芯中的集成电路、独立的存储器控制器或者嵌入在处理器IC管芯中的存储器控制器。可替换地,存储器控制器102的某些部分可以被实现为一个或多个单独的集成电路管芯上的集成电路。额外地或可替换地,可以使用专用集成电路(ASIC)、可编程逻辑设备(PLD)、现场可编程逻辑设备(FPLD)、分立的逻辑、硬件、固件等的任意组合来实现存储器控制器102。此外,存储器控制器102可以被实现为前述技术中的任意技术的任意组合,例如,固件、软件、分立的逻辑和/或硬件的任意组合。虽然下面结合图8的示图描述存储器控制器102,但是其它的示例性实现可以包括额外的和/或可替换的结构。例如,图8中描绘的存储器控制器102的某些部分可以被取消或者与其它部分组合。
在所示的示例中,存储器控制器102包括总线数据接口802以将存储器控制器102可通信地耦合到存储器总线106(图1、图5和图7)。总线数据接口802可以包括三态双向缓冲器,以在存储器控制器102在存储器总线106上活动地通信时能够在存储器总线106上接收/发送信息,以及在存储器控制器102未在存储器总线106上活动地通信时能够将总线引脚或焊盘置于高阻抗三态水平。为了与处理器(例如,图1的处理器116)进行通信,存储器控制器102提供有处理器总线接口804。
为了生成提示,存储器控制器102提供有提示发生器806。提示发生器806可以基于从处理器(例如,图1的处理器116)接收到存储器存取请求或者基于从处理器接收的状态信息来生成提示。例如,如果连接到存储器控制器102的处理器还未向存储器控制器102发送任何存储器存取请求或者未处于活动操作模式(例如,处于空闲或低功率模式),则存储器控制器102可以生成向一个或多个存储器设备通知存储器控制器102将不会在特定的时间段、时间长度或持续时间内对存储器设备进行存取的提示(例如,从而允许存储器设备执行诸如自刷新、进入低功率模式等一个或多个内部处理)。在一些示例性的实现中,提示发生器806可以从连接的处理器接收不同的控制或状态信息,这些信息指示处理器的操作模式,诸如活动、待机、睡眠、深度睡眠、断电等。通过这种方式,提示发生器806可以基于处理器的操作模式来生成提示信息。例如,如果处理器处于深度睡眠模式,则提示发生器806可以生成向一个或多个存储器设备通知其可以转换到极低功率(very low-power)模式(例如,深度睡眠模式)的提示。
为了仲裁在存储器总线106上交换的通信,存储器控制器102提供有总线仲裁器810。在所示的示例中,总线仲裁器810可以用于控制对存储器总线106的访问,并且识别存储器总线106何时可用于发送通信(例如,总线分组)以及存储器总线106何时正被另一设备使用。当存储器组件或存储器控制器不能存储进入的请求时,总线仲裁器810可以向源设备发出否定应答消息以要求再传送。可替换地,总线仲裁器810可以跟踪在存储器总线106上的各存储器组件处待决的请求,并且在允许存储器控制器102发出请求以前确保这些存储器组件的输入缓冲器的可用性。
可以实现总线仲裁器810以在基于电的存储器总线或光学存储器总线上使用。可以使用总线仲裁器810的示例性光学存储器总线涉及光学令牌信道的使用,在该光学令牌信道中,令牌在总线上循环以用于要求由不同的设备在不同的时间独占地使用总线。在使用这种光学令牌信道存储器总线的示例性实现中,总线仲裁器810可以跟踪令牌何时在存储器总线106上循环以识别总线何时是可用的以及总线何时由另一设备使用。
为了生成用于在存储器总线106上发送的消息或总线分组,存储器控制器102提供有消息输出子系统808。例如,消息输出子系统808可以生成用于向一个或多个存储器设备(例如,图1、图5和图7的DRAM存储器104)传送数据存取请求的图2的读/写总线分组200以及用于向一个或多个存储器设备传送提示的图3的提示总线分组300。消息输出子系统808包括地址发生器(未示出)、消息发生器812和设备选择器814。
消息发生器812形成总线分组(例如,读/写总线分组200和/或提示总线分组300)。在一些示例性的实现中,消息发生器812可以被配置为针对写入数据(例如,图2的数据字段210中的数据)生成校验和、奇偶校验值和纠错码,而在其它的示例性实现中,可以由连接到存储器控制器102的处理器提供校验和、奇偶校验值和纠错码。此外,消息发生器812可以将地址分为两个或更多个可独立传输的部分,使得可以使用两个或更多个独立的总线分组来将冗长的地址传送到存储器设备。
设备选择器814选择总线分组要被传送到的存储器设备(例如,图5的存储器设备104、502、504和506中的一个)的唯一标识,并且将该唯一标识存储在总线分组的芯片/设备选择字段(例如,图4的目的地选择字段204)中。设备选择器814可以存储存储器设备标识符代码的数据结构,每一个存储器设备标识符代码对应于经由存储器总线106连接到存储器控制器102的相应存储器设备。在一些示例性的实现中,设备选择器814可以基于由不同的存储器设备占用的不同的物理存储器插槽来接收存储器设备标识符代码。可替换地,设备选择器814可以被配置为向在存储器总线106上检测到的每个存储器设备分配唯一的标识符代码。通过这种方式,设备选择器814可以确定性地识别特定的存储器设备以用于传送相应的总线分组。
在一些示例性的实现中,设备选择器814可以基于存储器请求的物理地址来识别目的地设备。例如,存储器控制器102可以包括存储设备ID范围和相应的存储器地址范围之间的交叉参考的设备ID到地址数据结构816。设备选择器814可以使用设备ID到地址数据结构816来基于存储器存取请求中的地址识别目的地设备。
为了对从存储器总线106接收的消息或总线分组进行解码和过滤,存储器控制器102提供有消息输入子系统818。消息输入子系统818包括消息解码器820和消息过滤器822。在所示的示例中,消息解码器820对总线分组(例如,图4的响应总线分组400)进行解析,以识别总线分组的不同字段(例如,图4的字段402、404、406和408)中的信息。
消息过滤器822通过识别哪些总线分组与存储器控制器102相关以及哪些总线分组可以被忽略(例如,其可以与存储器总线106上的其它设备相关但是与和消息过滤器822相关联的存储器控制器无关)来对接收到的总线分组进行过滤。例如,消息过滤器822可以从总线分组获取(例如,来自图4的目的地选择字段404的)设备标识信息,并且将所获取的设备标识信息与存储器控制器102的唯一标识值进行比较,以确定总线分组是否与存储器控制器102相关。如果总线分组与存储器控制器102相关,则消息过滤器822可以生成所接收的总线分组应当由存储器控制器102处理(即,不应当被忽略)的指示。
为了缓冲来自处理器或来自存储器设备的数据,存储器控制器102提供有数据缓冲器824。在所示的示例中,数据缓冲器824存储从处理器接收到的响应于写请求要被写入存储器中的数据,并且存储来自存储器的响应于读请求要被传送到处理器的数据。当生成写请求总线分组时,消息发生器812可以从数据缓冲器824获取相应的数据,并且将数据存储在写请求总线分组的数据字段(例如,数据字段210)中。当接收响应总线分组(例如,图4的响应总线分组400)时,消息解码器820可以从响应总线分组的数据字段(例如,图4的数据字段406)解析出数据,并且将该数据存储在数据缓冲器824中以便随后传送到请求处理器。
为了接收存取存储器总线106的请求,所示示例的存储器控制器102提供有总线请求线826。在图8所示的示例中,总线请求线826位于存储器控制器102的外部,并且被配置为连接到存储器设备或存储器组件(例如,图1和图5的存储器设备104、502、504和506)或者请求访问存储器总线106以经由存储器总线106与存储器控制器102交换通信和/或彼此交换通信的其它存储器控制器或处理器。通过这种方式,存储器设备或存储器组件和/或存储器控制器102可以经由存储器总线106向彼此发送数据和/或消息,而不会在存储器总线106上引起冲突或总线争用。如果存在多于一个连接到存储器总线106的存储器控制器,则具有总线仲裁器(例如,总线仲裁器810)的存储器控制器是主存储器控制器。在一些示例中,所有存储器控制器都可以具有总线仲裁器,但是只有被指定为主存储器控制器的存储器控制器才启用其总线仲裁器,从存储器控制器将禁用或不使用其总线仲裁器,使得多个存储器控制器将不会竞争管理存储器总线106的使用。在图8所示的示例中,总线请求线826在内部连接到总线仲裁器810。通过这种方式,当连接的存储器组件经由总线请求线826中的相应一个以信号形式发送总线请求时,所示示例的总线仲裁器810确定是否和/或何时准许访问存储器总线106。例如,总线仲裁器810可以基于诸如存储器总线106繁忙(例如,存储器总线106正由另一存储器控制器、存储器组件或存储器设备、处理器等使用)时的状态等存储器总线106的状态来准许访问存储器总线106。在一些示例中,总线仲裁器810可以包括总线访问队列828或者与总线访问队列828进行通信,以存储总线访问请求并且基于排队的请求来准许存储器总线访问。在一些示例中,总线请求线826是双向线,存储器控制器102可以经由该双向线做出响应以准许存储器总线访问。在其它示例中,总线请求线826是进入存储器控制器102的单向输入线,存储器控制器102经由存储器总线106向请求设备发送总线访问准许响应。
图9A和图9B描绘了可以由存储器组件执行以处理存储器存取请求和提示信息的示例性过程的流程图。结合图6和图7的存储器组件600描述该示例性过程,但是可替换地,也可以使用其它存储器(例如,图5的存储器设备502、504和506和/或图12的存储器组件1200)和/或其它类型的存储器来实现该示例性过程。此外,虽然下面结合所描绘的流程图描述了图9A和图9B,但是一些示例采用除了或替代于图9A和图9B的操作的不同的操作。例如,图9A和图9B的一些操作可以被省略、或者与其它操作结合、或者以不同的顺序或者与其它操作并行地执行。
首先,消息输入子系统704(图7)从诸如存储器控制器102(图1、图5和图8)等源设备接收总线分组(方框902)(图9A)。在一些示例中,可以使用与示例性存储器组件600在同一存储器总线(例如,存储器总线106)上的任何存储器设备(例如,图1和图5的任意存储器设备104、502、504和506)来实现源设备,并且该源设备可以请求执行存储器组件间的存储器到存储器的数据传送,以例如将数据写入存储器组件600中。在这种示例中,可以经由总线数据接口702来接收总线分组。在其它示例中,源设备可以是与消息输入子系统704位于同一存储器组件上的存储器芯片(例如,图6的存储器芯片602a-d中的一个)或IC管芯(例如,图12的IC管芯1202、1204、1205中的一个),并且总线分组可以包含执行存储器组件内的存储器到存储器的数据传送以例如在图6的同一存储器组件600内或者图12的同一存储器组件1200内的存储器之间写入数据的请求。在这种示例中,可以经由数据存储接口726来接收总线分组。虽然方框902被描述为涉及到接收总线分组,但是也可以使用除了总线分组通信以外的通信来接收在方框902处接收的通信。
消息解码器706(图7)从接收的总线分组解析存储器设备标识信息(方框904)。例如,消息解码器706可以从设备选择字段(例如,图2的目的地选择字段204或图3的目的地选择字段304)获取存储器设备标识符。消息过滤器708(图7)通过例如将从总线分组获取的存储器设备标识符与存储器组件600的存储器设备标识符进行比较,来确定接收的总线分组是否与存储器组件600相关(方框906)。在一些例子中,目的地选择字段可以是空白的,或者包含指示总线分组是打算去往存储器总线106上的所有存储器设备的广播分组的一般代码。在其它示例性的实现中,消息过滤器708基于在总线分组中传送的(并且由地址解码器712(图7)解码的)地址是否落入到分配给存储器组件600的存储器地址范围内,来确定总线分组是否是相关的。
如果接收的总线分组是不相关的(方框906),则组件控制器614忽略该总线分组(方框910)。然而,如果接收的总线分组是相关的(方框906),则消息解码器706继续对该总线分组进行解码(方框912)。操作解码器710(图7)确定总线分组是否包含提示信息(方框914)。例如,操作代码字段(例如,图3的操作代码字段306)中的操作代码或报头字段(例如,图3的报头字段302)中的代码可以用于将总线分组识别为提示总线分组(例如,图3的提示总线分组300)。
如果操作解码器710确定总线分组确实包含提示信息(方框914),则组件控制器614处理该提示信息(方框916)。可以用于实现方框916的示例性过程将在下面结合图10描述。
如果操作解码器710确定总线分组不包含提示信息(方框914),则操作解码器710例如基于操作代码字段(例如,图2的操作代码字段202)中的操作代码从总线分组解码所请求的操作(方框918)。所请求的操作可以是读操作、写操作或其某些变形(例如,突发读取、页面模式读取等)。
地址解码器712(图7)从总线分组解码地址(方框920)(例如,图2的地址字段208中存储的地址)。在使用两个总线分组来传送目标存储位置的地址的示例性实现中,地址解码器712可以从两个相应的总线分组解码地址信息,以形成可用于对存储器芯片602a-d(图6和图7)的目标存储位置进行存取的地址。
所示示例的数据存储状态监视器730确定存储器芯片602a-d的状态(方框922)(图9B)。例如,数据存储状态监视器730确定存储器芯片602a-d当前是否执行读操作、写操作、自刷新操作、预充电操作、断电操作或者当前是否处于睡眠模式、待机模式或其它低功率模式。如果存储器芯片602a-d正在执行这些操作中的任意操作(或任何其它操作),则存储器芯片602a-d繁忙并且不能立即执行在方框918处解码的所请求的操作。否则,如果存储器芯片602a-d空闲(即,没有执行指示其繁忙的任何操作),则存储器芯片602a-d不繁忙,并且可以立即执行在方框918处解码的所请求的操作。
所示示例的数据存储存取仲裁器728例如基于在方框922处确定的存储器芯片602a-d的状态来确定存储器芯片602a-d是否繁忙(方框924)。如果存储器芯片602a-d繁忙(方框924),则数据存储存取仲裁器728确定存储器组件600的存储器操作队列729是否太满而不能添加另一排队的存储器存取请求(方框926)。例如,如果排队的请求的数量超过指示何时不能再向队列729添加另外的存储器存取请求的阈值,则数据存储存取仲裁器728可以确定存储器操作队列729太满。在一些示例中,数据存储存取仲裁器728可以基于队列729中存取请求的数量来确定其是否可以服务于所请求的存储器存取操作,而无需依赖于在方框924处基于在方框922处确定的存储器芯片602a-d的状态确定的存储器芯片602a-d的繁忙状态。因此,在这样的一些示例中,可以省略方框922和924的操作。如果存储器操作队列729太满(方框926),则所示示例的数据存储存取仲裁器728提示或促使消息输出子系统732经由例如包括请求设备的标识的总线分组通信利用否定确定来对在方框902处接收的总线分组进行响应(方框928)。在所示的示例中,否定应答指示不能准许(或者不能服务于)存储器存取请求。在某些示例中,否定应答使请求设备在某随后的时间(例如,可以由或可以不由数据存储存取仲裁器728或组件控制器614指示的时间)向存储器组件600重新发送该存储器存取请求。在一些示例中,否定应答可以明确地指示请求设备应当在某随后的时间向存储器组件600重新发送该存储器存取请求。
如果在方框926处,数据存储存取仲裁器728确定存储器操作队列729不是太满,则控制前进至方框930,在方框930处,数据存储存取仲裁器728将所请求的存储器存取操作置于存储器操作队列729中(方框930)。然后,数据存储存取仲裁器728确定所请求的操作是否已经到达存储器操作队列729中以用于服务(方框932)。如果所请求的操作还未到达存储器操作队列729中,则数据存储存取仲裁器728继续在方框932处监视队列729,以确定所请求的操作何时到达存储器操作队列729中以用于服务。
当所请求的操作到达存储器操作队列729中以用于服务(方框932)时,或者如果数据存储存取仲裁器728确定存储器芯片602a-d不繁忙(方框924),则所示示例的数据存储存取仲裁器728促使执行所请求的读或写操作(方框934)。如上面结合图7并且结合方框926、930和932所讨论的,如果在存储器芯片602a-d上仍然在执行其它的存储器存取请求或者正在执行其它的维护操作,使得不能立即对存储器芯片602a-d进行存取以执行另一存储器存取操作,则数据存储存取仲裁器728可以将存储器存取操作排队。因此,方框934的操作可以是由数据存储存取仲裁器728确定的立即执行或延迟执行的读或写操作。
在执行了存储器存取操作以后,目的地选择器734选择设备标识(方框936)以识别响应总线分组(例如,图4的响应总线分组400)要传送到的请求存储器控制器(例如,存储器控制器102)。消息发生器736(图7)生成包含设备标识的响应总线分组(方框938)。如果所请求的存储器存取操作是读请求,则响应总线分组可以在数据字段(例如,图4的数据字段406)中包括从存储器芯片602a-d获取的数据,并且消息发生器736还可以在校验和字段(例如,图4的校验和字段408)中存储相应的校验和。如果所请求的存储器存取操作是写请求,则响应总线分组可以包括确认成功写入的应答消息。应答消息可以包括在报头字段(例如,图4的报头字段402)中。消息输出子系统732在存储器总线106上传送响应总线分组(方框940)。
在传送了响应总线分组(方框940)以后或者在忽略了所接收的总线分组(方框910)(图9A)以后或者在处理了提示信息(方框916)(图9A)以后,图9A和图9B的示例性过程结束。
图10描绘了可以在存储器组件中实现以处理接收的提示信息的示例性过程的流程图。结合图6和图7的存储器组件600描述示例性过程,但是可替换地,也可以使用其它存储器(例如,图5的存储器设备502、504和506和/或图12的存储器组件1200)和/或其它类型的存储器来实现该示例性过程。此外,虽然下面结合所描绘的流程图描述了图10,但是一些示例可以采用除了或替代于图10的操作的不同的操作。例如,图10的一些操作可以被省略、或者与其它操作结合、或者以不同的顺序或者与其它操作并行地执行。
首先,提示逻辑子系统716(图7)从例如消息输入子系统704(图7)接收提示信息(方框1002)。提示解码器718(图7)对提示信息进行解码(方框1004)。提示控制器720(图7)从数据存储状态监视器730(图7)获得存储器芯片602a-d(图6和图7)的数据存储状态(方框1006)。通过这种方式,提示逻辑子系统716可以确定存储器组件600是否可以按提示行动。例如,如果存储器芯片602a-d忙于存储器存取请求(或者维护操作),或者如果数据存储存取仲裁器728(图7)具有等待执行的(来自相同的或不同的存储器控制器的)其它存储器存取请求的队列,则提示控制器720可以确定存储器组件600不能执行所提示的操作。在一些例子中,如果存储器芯片602a-d的状态指示其当前繁忙(例如,忙于存储器存取或维护操作)但是该操作将很快完成并且没有由数据存储存取仲裁器728排队的其它存储器存取请求,则提示控制器720可以确定其可以将所提示的操作排队。
如果提示控制器720确定存储器组件600不能按提示行动(方框1008),则提示逻辑子系统716忽略该提示(方框1010)。否则,如果提示控制器720确定存储器组件600可以按提示行动(方框1008),则提示控制器720确定存储器组件600是否可以立即行动(方框1012)。如果存储器组件600可以立即按提示行动(方框1012),则存储器组件600立即执行所提示的操作(方框1014)。例如,提示控制器720可以指示维护控制器722执行所提示的操作。如果存储器组件600不能立即按提示行动(方框1012),则提示控制器720(例如,在图7的存储器操作队列729中)将所提示的操作排队,以在随后的时间执行所提示的操作(方框1016)。在将所提示的操作排队(方框1016)以后或者在执行了所提示的操作(方框1014)以后或者如果忽略了提示(方框1010),则控制返回到诸如图9A和图9B的示例性过程等调用过程或者函数,并且图10的示例性过程结束。
图11描绘了可以在存储器控制器中实现以生成提示信息的示例性过程的流程图。结合图1、图5和图8的存储器控制器102描述图11的示例性过程,但是可替换地,也可以使用对诸如图1、图5、图7和图8的存储器总线106等存储器总线上的存储器设备进行存取的其它存储器控制器或设备来实现该示例性过程。此外,虽然下面结合所描绘的流程图描述了图11,但是一些示例采用除了或替代于图11的操作的不同的操作。例如,在不偏离本申请的范围和精神的情况下,图11的一些操作可以被省略、或者与其它操作结合、或者以不同的顺序或与其它操作并行地执行。
首先,提示发生器806(图8)确定连接的处理器(例如,图1的处理器116)的状态(方框1102)以识别处理器是处于活动状态、空闲状态还是低功率模式(例如,睡眠、深度睡眠、断电等)。提示发生器806还确定从连接的处理器接收的存储器存取请求的状态(方框1104)以识别是否有任意的存储器存取请求当前正在被处理或者仍然需要被处理。
提示发生器806确定是否生成提示(方框1106)。例如,如果处理器处于空闲或低功率模式或者如果没有来自处理器的待决的存储器存取请求,则提示发生器806可以确定可以生成提示。如果提示发生器806确定其可以生成提示(方框1106),则提示发生器806确定要生成的所提示的操作(方框1108)。例如,如果处理器处于空闲或低功率模式,则所提示的操作可以向一个或多个存储器设备通知其可以进入低功率模式。或者,如果不存在待决的请求但是处理器是活动的,则所提示的操作可以是自刷新操作。在一些例子中,提示可以指示存储器控制器102的空闲时间的持续时间(例如,存储器控制器102将不进行存储器存取请求的持续时间),并且该一个或多个存储器设备可以使用所指示的空闲时间的持续时间来确定其可以在空闲时间的持续时间期间执行哪些内部操作。
消息发生器812(图8)生成提示总线分组(方框1110)(例如,图3的提示总线分组300)。如果要将提示传送到单个存储器设备(例如,DRAM存储器104),则设备选择器814(图8)可以选择该单个存储器设备的存储器设备标识符,并且消息发生器812可以将该存储器设备标识符和所提示的操作存储在提示总线分组中。如果提示是可应用于存储器总线106上的所有存储器设备的一般提示,则可以从提示总线分组中省略存储器设备标识符,并且可以将提示总线分组作为一般广播总线分组传送。
消息输出子系统808在存储器总线106上传送提示总线分组(方框1112)。在传送了提示总线分组(方框1112)以后或者如果没有提示要生成(方框1106),则图11的示例性过程结束。
在一些示例性的实现中,可以使用机器可读指令来实现图9A、图9B、图10和/或图11的示例性过程中的一个或多个,这些机器可读指令当被执行时使得设备(例如,可编程控制器或其它可编程机器或集成电路)执行图9A、图9B、图10和/或图11中所示的操作。例如,可以使用处理器、控制器和/或任何其它适当的处理设备来执行图9A、图9B、图10和/或图11的示例性过程。例如,可以在诸如与处理器或控制器相关联的闪存、只读存储器(ROM)和/或随机存取存储器(RAM)等有形机器可读介质上存储的编码指令中实现图9A、图9B、图10和/或图11的示例性过程。如本文所使用的,术语有形计算机可读介质被明确地定义为包括任意类型的计算机可读存储设备并且不包括传播信号。额外地或可替换地,可以使用在诸如闪存、只读存储器(ROM)、随机存取存储器(RAM)、高速缓存或将信息存储任意持续时间(例如,扩展的时间段、永久地、短暂地、临时缓冲和/或信息的缓存)的任何其它存储介质等非瞬态计算机可读介质上存储的编码指令(例如,计算机可读指令)来实现图9A、图9B、图10和/或图11的示例性过程。如本文所使用的,术语非瞬态计算机可读介质被明确地定义为包括任意类型的计算机可读介质并且不包括传播信号。
可替换地,可以使用专用集成电路(ASIC)、可编程逻辑设备(PLD)、现场可编程逻辑设备(FPLD)、分立的逻辑、硬件、固件等的任意组合来实现图9A、图9B、图10和/或图11的示例性过程。此外,可以将图9A、图9B、图10和/或图11的示例过程实现为前述技术中的任意技术的任意组合,例如,固件、软件、分立的逻辑和/或硬件的任意组合。此外,虽然参照图9A、图9B、图10和/或图11的流程图描述了图9A、图9B、图10和/或图11的示例性过程,但是也可以采用实现图9A、图9B、图10和/或图11的过程的其它方法。例如,可以改变方框的执行顺序,和/或可以改变、消除、再分或组合所描述的一些方框。此外,可以由例如独立的处理线程、处理器、设备、分立的逻辑、电路等来顺序地和/或并行地执行图9A、图9B、图10和/或图11的任意或全部示例性过程。
虽然已经在本文中描述了某些方法、装置和制品,但是本专利的覆盖范围并不限于这些方法、装置和制品。相反,本专利涵盖按照字面或根据等同原则完全落入所附权利要求的范围内的所有方法、装置和制品。