用于改进串行端口存储器通信等待时间和可靠性的方法和系统的制作方法

xiaoxiao2020-7-22  4

专利名称:用于改进串行端口存储器通信等待时间和可靠性的方法和系统的制作方法
技术领域
本发明的实施例一般涉及计算机存储器领域,具体而言,涉及改进串行端口存储器通信等待时间和可靠性。
背景技术
在使用高速串行接口的存储器系统中,其中命令和数据经各个端口在主机或多个主机和存储器之间传递,期望与某些差错检测组合地提供最大带宽以确保合适的系统操作。串行链路由于每次只发送一位而具有固有的等待时间。另外,串行化和去串行化过程导致额外的等待时间。单独地使用端口没有显著改进等待时间,并且使用程式化的访问方法(如从每个端口访问不同的、专用的存储器区域,如条状访问)来改进带宽。通过启用端口绑定(协调地使用多个端口),可通过一次传递若干位数据来减少存储器等待时间, 同时增大带宽而无需程式化的访问方法。存储器还要求一定量的数据安全。例如,在串行信道中,可能发生不能检测的差错,除非使用将引入不可接受的等待时间的方法。在绑定端口的情况下,某些端口在命令周期期间保持空闲。该未使用的带宽用相同周期的命令的副本来填充。该方法使用时间上的复制延伸至单个端口,从而为端口配置提供特征。

图1示出EIA标准RS-232-C的常规串行位分配100。在图示中,数据的串行传递类似于RS-232链路,其中各个二进制值(位)102-118通过依次每次观察它们中的一个并将它们分配给全值1 不同的有效位(significance)而被组合成全值124。例如,如果第一位是分配给值124的最高有效位的104,则接下来是第二位106,依此类推直到最低有效位由传送的最后一位118填充。在这种情况下,该组合值被称为帧128,它包括值124以及结束位和起始位102,120。另外,帧1 使用称为成帧位126的额外的位来描绘,它包括起始位120和结束位122,接收机可使用它以找出帧128的起点并检验帧是否在预料时到达。 在其它方案中,即使在发射机和接收机之间的数据速率略微不同或改变时,成帧位126也可用于帮助接收机可靠地找到各个位。通过各个串行链路与存储器的通信引入大量等待时间,并且提供多于一个的主机对单个存储器的访问弓I入存储器资源复杂化。另外,存储器可具有一个或多个端口,每个端口包括串行发射机和串行接收机,以及相关联的用于改进等待时间和带宽的电路。在绑定端口的情况下,某些端口在命令周期期间保持空闲。该未使用的带宽用相同时间段的命令的空间副本填充,并且该方法使用不同时间段的时间上的复制延伸至单个端口,从而为所
4有端口配置提供特征。在绑定端口的情况下,在多个端口上发送数据,但是命令必须是独立的。首先,未使用的端口可包括命令副本。其次,某些命令可在相同的时间发布。另外,由于串行化、去串行化、使数据成帧以便差错管理、以及诸如同步的附加过程,串行通信相对于并行通信增加了等待时间。因此,期望引入并利用减少存储器等待时间的技术。

发明内容
揭示了用于改进端口存储器通信等待时间和可靠性的方法、装置和系统。在一个实施例中,一种方法包括在多个时间间隔经由存储器处的一组端口在主机计算机系统和存储器之间传送数据,其中主机计算机耦合至存储器;以及在单个时间间隔经由一组端口中的一个端口在主机计算机系统和存储器之间传送与数据相关联的命令。在一个实施例中,一种装置包括耦合至存储器的主机计算机系统,存储器在多个时间间隔经由存储器处的一组端口从主机计算机系统接收数据。存储器还被修改为在单个时间间隔经由一组端口中的一个端口从主机计算机系统接收与数据相关联的命令。在一个实施例中,一种方法包括在主机计算机系统和存储器之间传送数据,其中一个组中端口的数目可为了改变带宽和等待时间和/或节电的目的而特别选择。在一个实施例中,一种装置包括在主机计算机系统和存储器之间传送数据,以为了改变带宽和等待时间和/或节电的目的而特别选择一个组中端口的数目。在一个实施例中,揭示了用以将多个主机连接到存储器的一种系统。该系统包括与存储器耦合的主机计算机系统或计算机系统中的功能,存储器利用端口绑定系统来减少系统等待时间,端口绑定系统具有用于传送数据和命令的多个端口,其中多个端口中的两个或更多端口能够特别地组合成一个或多个端口组,端口绑定系统在多个时间间隔经由存储器处的一组端口在主机和存储器之间传送数据,并且在单个时间间隔经由一组端口中的一个端口在主机和存储器之间传送与数据相关联的命令。附图简述本发明的各实施例在各附图中是作为示例而非限定来示出的,在附图中相同的附图标记指代相同的要素。图1示出RS-232中的常规串行位分配;图2A示出单个主机绑定端口存储器的实施例;图2B示出四端口存储器的单个主机连接的实施例;图2C示出单个主机接口的端口绑定选择的实施例;图2D示出智能移动电话体系结构的实施例;图2E示出使用串行端口 DRAM(SPDRAM)的智能电话体系结构的图2D的替换实施例;图2F示出多主机绑定配置的实施例;图2G示出多主机绑定端口存储器的实施例;图2H示出用于高达16端口的端口绑定控制寄存器和用于高达16端口的复制命令检验寄存器的实施例;图21示出绑定多路分解器的实施例;
图2J示出表示绑定多路分解器路由的表格的实施例;图I示出绑定多路复用器的实施例;图2L示出表示绑定多路复用器路由的表格的实施例;图3示出帧同步的过程的实施例;图4示出功率控制的过程的实施例;图5示出采用单个端口的复制检验和命令解释的过程的实施例;图6示出在端口内接收并解码帧的过程的实施例;图7A示出17位解码后的帧(格式)的实施例;图7B示出命令、状态和数据编码帧的实施例;图7C示出活动存储体和活动命令的实施例;图7D示出写掩码和写命令的实施例;图8A、8B和8C示出写掩码模型的实施例;图9示出采用多个端口的复制检验和命令解释的过程的实施例;以及图10示出命令复制模型的实施例。
具体实施例方式本发明的各实施例一般针对改进串行端口存储器通信等待时间和可靠性;然而, 它们也可相同地应用于其它类型的接口,如高速并行接口。如此处所使用的,“存储器”是指计算机系统(如图2D、2E)中负责检索先前存储的数据以供任何“主机”(如计算处理器)或外围设备(如键盘、显示器、相机、大容量存储 (磁盘、光盘、磁带等)、网络控制器或无线网络)使用的组件。典型地,存储器耦合至用于在计算机系统中处理数据的一个或多个微处理器。数据可由主机存储在存储器中,如对于随机存取存储器(RAM)、静态RAM (SRAM)、动态RAM (DRAM)、闪存、PROM (可编程只读存储器)、 可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、或者是预定的,如对于只读存储器(ROM)的情况。存储器可由主机经由诸如PCI的总线或经由中间存储器控制器直接访问。对存储器的串行访问包括经由单个电路传播的单个电信号序列与去向和来自存储器的有意义的命令和数据之间的转换(类似于图1所呈现的RS-232)。执行该转换的电路被称为“端口”。在一个实施例中,为了减少存储器等待时间,采用一掩码方案,使得可描述写命令和数据而不包括相同通信帧中的掩码信息,从而减少了帧中位的数目并减少了等待时间。 另外,为了减少等待时间,提供基于存储器的协议,以用更短的帧大小来减少等待时间,与传统动态随机存取存储器(DRAM)协议相比提供更大的可扩展性,并减少带宽增加时命令集的变化。图2A示出单个主机绑定端口存储器200的实施例。绑定端口存储器200的所示实施例包括具有多个存储体(如8个存储体)的核心存储器202 (如DRAM,闪存),它与绑定端口存储器200的绑定端口存储器系统204相关联。存储器核心202的存储体与多个端口通信,如4个端口 206-212。所有4个端口 206-212 —同工作,从而提供具有可变带宽的至单个主机的接口。存储体被独立地使用,例如在同时从一个存储体进行读取并从另一个存储体进行写入时。存储器核心200可还包括用于读取数据的存储器读取总线和用于写入数据的存储器写入总线;然而,存储器核心202中可能只有单个连接用于读取和写入数据。
6另外,绑定端口存储器系统204包括将分别在图I和21中描述的绑定多路复用器264和绑定多路分解器262。在常规技术中,发送的所有命令和数据位立即通过各个并行线路,对于要形成的代码同时到达;然而,随着速度变快,经由这些各个线路的数据将被不正确地或在错误的时间采样(如使用相关联的时钟信号)。为了解决高速采样问题,利用自采样串行信号(如图 1中的RS-232);然而,相对于并行方法增加了等待时间,因为数据是在时间上处理的。在一个实施例中,与存储器的串行端口通信的通信等待时间和可靠性采用多个串行接口或端口的编组,以及接连地、或时间上地、或端口之间同时地、或空间上地复制命令。该技术的一个实施例在此示出,并由单个主机端口绑定端口存储器200采用。在一个实施例中,发射机(Tx)可将16位的并行数据变成串行位流并发射单个位流,而接收机(Rx)接收16位单个流并且然后可将它变成并行流。在这种情况下,本地存储器可以是粗略相同速率的32位宽。在所示的端口存储器200中,采用四个端口 206-212,因此经由4个端口 206-212有1 位的数据移动,其中每个通道64位数据流(如16位乘以 4个端口等于每个通道64位)。该1 位的移动由芯片内的必要电路支持。与常规技术不同,每个端口 206-212使用串行化器/去串行化器来以较快的速率串行化和去串行化数据流。例如,PLL可用于将输入时钟倍增至较高速度,以匹配用于采样各个位的输入数据速率。虽然端口 206-212处数据流的到达时间可略有不同,但是这些数据流的流动变得更快。换句话说,每个流以相同但快得多的的速度流动。另外,各个位的时序可能不是完全完美的,但是因为这些位的实际到达时间并不重要所以不需要对准这些位,因此不是在引脚处同步每个位,而是在每个端口 206-212中去串行化之后同步这些位, 如星号232-238所示。同样,数据位在去串行化之后流过端口 206-212到达或接近这些星号 232-238的速度可以比高速外部存储器接口 214-228 (如250皮秒)慢20倍(如5纳秒)。 在一个实施例中,端口 206-212能够进行相位检测、数据位管理、数据位采样、和通道对准。命令解释器248基于通道配置继续处理命令,附属/密切相关命令(在图2C、7C 和7D中进一步描述)。图2B示出四端口存储器200的单个主机连接270的实施例。所示的实施例是存储器200至主机271的连接270。主机271每次进行一个读取和一个写入操作。SPMT将编组的端口一起定义以形成宽数据通信,而绑定组中多个端口 206-212的数目是可动态选择的。例如,可使用单个端口,或者可绑定任何数目的端口以达到所提供的端口 206-212的数目(如2的幂)。当使用较少的端口时,使用较少的引脚和较少的功率。当使用较多的端口时,带宽将增加且检索相同量数据的等待时间将减少。可以构想,绑定端口的数目可随时改变。图2C示出单个主机接口的端口绑定选择275的实施例。当绑定两个或更多端口 277,278时,数据在组内的所有端口上传递,从而有效地倍增了数据带宽。然而,各个命令可能只需要一个端口,留下其余的端口未使用,因此为了避免浪费带宽、增强存储器操作、并节省命令带宽,提供一组密切相关的命令或附属命令。这些命令适当使用否则将被浪费的额外带宽,并且这种密切相关/附属命令可在命令可同时在其它端口上发布之前或之后发布。例如,当发布活动命令(ACT)时,可同时发布活动存储体命令(ABNK)作为附属以完成命令。同样,附属写掩码命令(WMSK)可同时伴随写入命令(W 。可在端口 0接受所有命令,但是可在其它端口接收相关附属命令以节省命令带宽。命令ACT、ABNK、WR和丽SK将参考图7B-7D进一步描述。另外,单个选项启用用于增强差错检测的命令复制以防止错误命令破坏存储器操作状态。通过启用该选项,单个端口将第一帧中的命令与其后帧中的副本作比较。当绑定并使用两个或更多端口 277,278时,没有额外的带宽用于副本,因为副本同时出现在另一端口上。虽然命令被复制,但是该实施例中数据未被复制。当有至少四个绑定端口 278时, 可同时使用复制和附属命令两者。图2D示出智能移动电话体系结构280的实施例,它包括基带处理器观2、应用处理器沘1、各个易失性存储器(如DRAM 274.SRAM/DRAM 283)、非易失性存储器(如NAND 272 和NOR闪存27 、以及两个处理器281和282之间的通信信道洸9。存储器272_274、283用于存储并检索可执行程序代码以及对各自连接的处理器保持专用而不共享的数据。任何共享或通信经由通信信道269执行。应用处理器281可耦合至其它外围设备,如相机201和显示设备203。图2E示出具有SPDRAM 285的智能电话体系结构284的图2D的替换实施例。在一个实施例中,在基带处理器282和应用处理器281之间共享存储器。在该实施例中,SPDRAM 285可用于在基带处理器和应用处理器之间通信,为两个处理器存储程序代码和数据,并减少实现该体系结构所需的存储器组件或技术的数目。另外,减少了存储器和处理器之间连接的数目,包括去除了专用通信信道。提供分割,使得某些主机能访问存储器的一部分,而其它主机则不能。这使得存储器设备可能在安全的环境中共享,例如,对于基带软件。例如, 应用处理器281可将基带软件图像载入SPDRAM 285并向基带处理器282指示图像已准备好。基带处理器282然后移除对其它主机的访问,并检验图像的有效性。如果它是正确的, 则基带处理器282可继续以从该图像进行操作,而不中断应用处理器281上运行的软件。图2F示出多主机绑定配置观6,观7,观8的实施例。在一个实施例中,多个端口绑定可与多主机功能组合。例如,如果一个主机,如应用处理器观1,要求更大的带宽,则它可将若干个绑定端口用于其接口,而其它主机可继续使用单个端口。在所示的实施例中,提供了在四端口设备上绑定若干个主机的几个组合观6,观7,观8。例如,在组合观6中,主机1 和2中的每一个与两个端口连接。在组合观7中,主机1与端口 0连接,而主机2与两个端口 2,3连接。在组合288中,每个主机与单个端口连接。可以构想,可提供主机-端口绑定或连接的任何组合,如单个端口可一同绑定所有四个主机。确切地,哪个端口分配给哪个主机可取决于给出绑定端口组的长度的寄存器设置。图2G示出多主机绑定端口存储器四2的实施例。所示的具有四个端口 290的多主机绑定端口存储器(多主机存储器系统)292与具有8个存储体观9的存储器核心291 通信。为了简化和简洁起见,示出有限数目的端口 290和存储体观9。虽然该多主机存储器系统292类似于图2A的单主机存储器系统204,但是此处来自每个端口 290的数据单独地对每个存储体289是可用的。在该实施例中,存储体289被定义为整个多主机存储器系统 292的可被独立寻址用于数据传递的一部分。另外,通过提供单独的访问,端口 290的单个端口在指令期间可与存储体观9的单个存储体相关联,而不与访问其它存储体的其它端口冲突。绑定多路复用器293和多路分解器294被复用以产生用于在存储体289和端口 290 的多个端口组之间弓I导数据的纵横开关的可能实施例。
图2H示出用于高达16端口的端口绑定控制寄存器295和用于高达16端口的复制命令检验寄存器四6的实施例。为了简洁和简明起见,该实施例假设绑定发生在二进制倍数的连续端口(如端口 1,2或4)并具有匹配模数(如,用于4端口的端口 0,用于2端口的端口 0或2,或者用于单端口的任何端口)。端口可基于寄存器设置来确定其自己在绑定组中的成员资格。示出了 16端口绑定控制寄存器四5。该绑定被描述为并提供分层模式,例如当没有设置位时,所有端口独立工作。对于两端口设备,仅使用位0,而对于四端口设备,位0-4描述了通过加入两端口绑定的剩余部分用于四端口和绑定所有端口的可能绑定。对于8端口设备,两端口绑定的剩余部分在位8-11中,四端口绑定在位13和14中,所有端口在位15中。该模式可无限继续。另外,端口可能不属于绑定组,在这种情况下它们可独立操作。端口可能不是绑定组的一部分且单独操作,或者它们可以是一个以上绑定组的一部分。解决这种冲突的一种技术是选择规定的最大绑定组。当使用寄存器295将端口加入绑定组时,下一命令然后在该绑定组的环境中使用,并且在新端口准备好之前没有命令必须被发布。当端口从绑定组移除时,它在此之后立即可被禁用或独立使用。另外,向寄存器分配每端口一位以启用复制命令检验,在此示为复制命令检验寄存器四6。如果端口被绑定到任何组,它用其连续端口来检验其命令值。如果它没有绑定到一个组,在其连续循环中找出副本。图21示出绑定多路分解器四5的实施例。在一个实施例中,在给出其绑定指令的情况下端口准备通道四5(如p0rt_rdy通道)由各个端口 290产生。例如,当绑定四个端口 290时,所有端口准备通道295被断言。然而,如果仅将端口四0中的端口 2和3绑定成两端口组,那么端口准备通道295中的port_rdy[3:2]被断言。类似地,如果端口 1独立工作,那么只有port_rdy[l]被断言。该技术用于确定从端口 290到通向存储体观9的正确端口准备通道四5的传递大小和路由,以及构建完整存储器字用于存储的闩锁(latch)。图2J示出表示绑定多路分解器路由的表格四6,297的实施例。例如,当数据到达时,多路分解器根据路由函数表296将端口数据路由至正确的通道。多路分解器寄存器然后根据如表297中所述的函数enable_fn(启用函数,图21中的四8)将数据捕获到为存储器绑定的正确端口通道中。一旦锁存了所有数据,则命令核心使用wr_Str0be (写入选通) 通过enable_fn 298存储数据。写入掩码函数或禁止所选数据的存储可使用并行数据通路实现。在存储循环的开始,根据enable_fn设置所有掩码(如禁止所有通道)。当数据到达时,相关联的掩码与数据一起被路由并存储。如果不是所有数据都到达(如中断或短传递),则只存储到达的数据,因为未到达的数据通道没有机会清除相关联的掩码。图观示出绑定多路复用器四3的实施例。在一个实施例中,存储器的读取等待时间(RL) 299使端口准备(如port_rdy) 295和读取命令(如read_cmd)信号延迟,从而数据及时从存储器到达(并锁存)以选择输出端口四0。对这些端口的选择使用经延迟的输入值简单地进行。来自读取命令的port_rdy通道四5由多路复用器293解释,其类似于多路分解器四4的解释。多路复用器基于图2L的表279所示的函数选择映射到输出端口 290 的通道。为了简洁和简明起见,假设在每个循环中可能从存储器传送一个(64位)数据字,并且存在可能降低数据速率的存储或延迟以覆盖单个端口的情况。在取数据所需循环多于输出循环的情况下,用从存储器加载较大的字并在连续循环上选择较短分段的“预取缓冲器”来构建核心。在这种情况下,数据闩锁可与预取缓冲器组合。为了对数据进行扼流 (throttle),命令解释器可将读取命令分割成较短的量,并以较慢的步调发布中间命令以匹配输出速率。图3示出帧同步的过程的实施例。最初,存储器端口断电用于系统重置302。在链路断电(Link Power-Down,/LPD)等于零且端口被禁用时,为了使端口通电,/LPD被驱动至高304。然而,当/LPD等于1时,开始帧搜索306以找出称为SYNC的特定代码或位序列。 当检测到SYNC时,过程进行到操作模式308。该过程可如图4所述地对于多个端口(如果采用)继续。由于主机和存储器串行地交换数据,接收机被同步以确定帧中位的位置的对应性。为了确定正确的同步,链路在“帧搜索”状态期间搜索特定位序列306。例如,最初,串行链路发送两个同步位序列SYNC和SYNC2中的一个。由主机和存储器两者使用,Rx-PHY 检测这些成帧的数据分组。SYNC在重置或差错之后的链路建立(bring-up)中扮演重要角色。同样,在正常操作中在任何未使用的帧期间SYNC由存储器Tx-PHY发送。主机Tx-PHY 在正常操作中在任何未使用的帧期间发送SYNC或SYNC2。当从存储器检测并识别SYNC时, 该过程进行到正常操作模式308。如果成帧失败,例如如20位解码差错所指示的,则存储器返回至“帧搜索”状态306直到再次检测到SYNC。在任何状态,如果/LPD成为零,则指示端口返回至“链路关闭”状态且重新开始。存储器发送SYNC2以指示由于处于“链路关闭”状态或者由于成帧差错而造成的接收主机数据中的差错。主机通过专门地发送SYNC作出响应,直到存储器重新建立成帧并开始发送SYNC。主机在命令之间发送SYNC2用于适当的差错恢复操作。SYNC和SYNC2建立并恢复链路成帧,并且主机协调(orchestrate)链路建立。图4示出功率控制的过程的实施例。接收/LPD(链路断电)。在判定框402,确定端口是否开启。/LPD前的斜线表示相反逻辑,如当/LPD等于零时链路断电,这意味着它未通电。类似地,/LPD等于1表示未断电,这意味着它通电。如果/LPD等于1 (如链路通电), 则在处理框404执行训练过程,以从帧中找出特定代码或位序列(如SYNC)。SYNC搜索的训练过程继续,直到检测到SYNC,然后过程进入处理框406处的操作模式。该过程参照图3 进一步描述。在判定框408,确定是否有端口差错。如果是,过程继续到判定框402。如果否,则在判定框410确定是否有更多的端口接连进入操作模式。如果没有增加其它端口,过程继续处理框406的操作模式。然而如果检测到附加端口,则过程在处理框414继续训练新端口。在处理框416处理这些附加(多个)端口。多个端口的使用也参考图9进行描述。 在判定框418,确定端口差错。如果确定端口差错,如在判定框430由端口断电(如/LPD = 0)引起的差错。如果是,在处理框432禁用所有端口,并且过程可在判定框434继续单个端口模式。如果在判定框434处/LPD不是零(如/LPD = 1),则在处理框436训练所有端口并且过程继续到处理框416。返回至判定框430,如果/LPD不是零(如/LPD = 1),过程在处理框4 继续训练差错端口,然后继续到处理框416。返回至判定框418,如果未发现端口差错,则在判定框420作出是否添加更多端口的另一确定。如果是,过程在处理框414继续新端口的训练过程(如为每个新端口寻找 SYNC)。如果未启用附加的端口,则在判定框422确定是否移除任何端口。如果否,过程继续到判定框416。如果是,在处理框似4禁用任何移除的端口。此时,在判定框426,确定单个端口是否可用于返回单个端口模式。如果是,过程在处理框406继续单个端口模式。如果否,过程在处理框416继续多个端口模式。功率控制238(图2A的)负责传播/LPD,而端口 206-212负责训练它们本身以及图3和4的处理。图5示出采用单个端口的复制检验和命令解释的过程的实施例。采用多个端口的更复杂的过程在图9中示出。如图5中进一步所示,在处理框502,数据的接收、读取和解码在端口(如第一端口或主端口)处从第一帧开始执行。在判定框504,确定是否检测到端口差错。如果检测到差错,过程在框528以返回差错结束。如果未检测到端口差错,在判定框506确定是否开启复制。可以构想,复制可以根据需要开启或关闭。如果开启复制,过程在处理框508继续在端口处现在是对第二帧执行数据的接收、读取和解码。再次,在判定框 510,确定是否检测到端口差错。如果是,过程在框528以差错返回结束。如果未检测到端口差错(并且复制未开启,返回参考判定框506),过程运行至确定帧是命令还是数据。如果帧是命令,则在判定框516确定该命令是否有效。如果命令无效,过程在框528以返回差错结束。如果命令有效,在判定框518确定命令是否按顺序或位于正确位置。如果命令未按顺序,过程在框528以返回差错结束。如果命令按顺序,则在处理框520处理该命令并在框530发布正常返回。返回参考判定框514,如果帧是数据,则在判定框522确定存储器是否已准备好写入操作。如果否,过程在框528以差错返回结束。如果是,在处理框5M将数据写入存储器, 并且过程在框530以正常返回结束。在该实施例中,框516,518,520的过程在图2A的命令解释器248处执行,而其余的过程在图2A的端口 206-212处执行。图6示出在端口内执行各种功能的过程的实施例。在框602,提供接收、读取和解码数据流的过程。例如,单个数据流(以位为单位)在端口处经由Rx接收,并形成并行流, 然后如此处所示地被解码(如使用17B/20B解码)。链路断电(/LPD)信号用于控制至所有端口的功率(经由功率控制机制),如进入和离开图2A所示的单个主机绑定端口存储器的所有端口的功率(如图2A的虚线表示/LPD的功率控制)。在判定框604,确定/LPD是否等于零。如果它是零,在框614返回差错并结束该过程。然而,如果/LPD不等于零,过程继续至处理框606。在处理框606,读取数据帧,它包括端口接收逐位的数据流并产生帧的并行流(如 20位,去串行化)。在处理框608对帧解码(如使用17B/20B解码技术),然后产生有效性数据。在判定框610,检验帧的有效性;例如,确定帧是否具有将被正确解码为17位值的20 位代码。如果该转换失败,例如它由于不确定性没有产生任何结果,则有效性检验失败并且在框614返回差错。然而,如果转换成功并产生结果,数据帧将被认为有效,并且在框612 返回正常,进一步将如图9所示。图7A示出17位解码后的帧格式700的实施例。17位的解码帧700的所示实施例可用于发送17位的数据、命令和/或状态,并经历转换编码以产生20位的帧用于串行传输。用20位帧发送和接收数据、命令和状态。在接收时,执行相反过程,其中20位的转换编码帧经历解码以产生保存数据、命令和状态的17位帧700。所示的17位的解码后的帧(格式)700将前16位专用于有效负载702,并将最后一位(如第17位)专用于有效负载指示符704。存储器访问格式基于基本解码格式构建。 例如,位16704指示针对数据、命令或状态有效负载是置为1还是0。命令和写入数据能够以逐个帧为基础共享接收机链路。为了减少等待时间,命令可插入或先占(preempt)写入数据流,从而延迟了写入命令的完成。图7B示出命令、状态和数据编码帧格式720的实施例。所示的实施例包括,但不限于,串行端口 DRAM命令、状态和数据编码帧720的实施例。所示的17位编码帧720是可扩展的,因为它提供了灵活性以保留一些位用于例如当技术改变或需要时在将来增加附加命令。例如,标志722和子命令724占用帧720的前七位(位0_7),并且由于子命令724中的大部分条目是1,所以包括标志区域722的该区域在将来可用于增加附加命令(如多达 16条命令),从而扩展帧720。类似地,还有具有有限范围的其它部分,如模式寄存器组726,它也可用于附加命令(如模式寄存器组726的子命令区域只有三个命令)。另一这种区域是DRAM命令组 728 (如DRAM命令组728的子命令区域全部为1),它也可用于增加其它命令。SYNC 730控制并保持链路帧同步,而SYNC2 732指示特定链路操作状态。SYNC 730和732两者参考图3和4进一步讨论。类似于图7A所示的数据帧700,数据帧734包括17位帧,它具有置为1的17位和之后的两个8位字节。活动存储体(ABNK) 736和活动 (ACT) 738在图7C中讨论。写入命令(WR)740启动对指定存储体和列的存储器写入周期。 写入掩码(WMSK) 741为进行中的写入命令设置8字节掩码,并跟随WR命令740以具有任何效果。丽SK 742参考7D进一步讨论。读取(RD) 744是指启动存储器读取周期的读取命令,而脉冲停止(BSTP) 746是指依赖于指定的存储体中断端口当前读取或写入命令的命令。预充(PCG) 748是指预充命令中指定存储体的指令,而预充全部(PCA) 750包括同时预充所有存储体的命令。按存储体刷新(REFB) 752规定对指定存储体自动刷新,而全部存储体刷新(REFA) 7M规定根据内部计数器对所有存储体刷新。在发布REFA命令前,所有存储体处于预充状态。模式寄存器写入(MRW) 758是指对模式寄存器执行写入的命令。模式寄存器写入数据(MRD) 760提供MRD命令760形式的来自端口 0的下一紧接帧中跟随MRW命令758的写入数据。模式寄存器读取(MRR) 756是指对模式寄存器执行读取的命令。自刷新断电 (SRPD) 762使存储器核心立即进入自刷新状态。断电退出(PDX) 764是指发布以退出自刷新断电并用于在链路建立之后唤醒存储器核心的命令。图7C示出ABNK和ACT命令736,738的实施例。为了同时发送两个或更多个命令, 它们支持彼此的功能或在功能上正交。第三准则包括复杂性,因为存储器语义或实现判定可能导致正交性失败。例如,串行端口 DRAM可具有激活存储体的命令,而待激活的行地址对一个帧来说太长了。在单个端口的情况下,该命令可能需要两个或更多个帧,但是在绑定端口的情况下,它可在一个帧的时间在两个或更多个端口上通信。例如,ABNK 736设置目标存储体752和将与后续活动(ACT)命令738 —起使用的较高5位行地址754。活动命令738发送至最后ABNK命令736中指定的存储体752。如果绑定两个或更多个端口,可任选的ABNK 736命令可出现在端口 2。较低15位行地址764在
12ACT命令738的最低有效15位中指定,5个最高有效位在最后ABNK命令736或在端口 2上出现的ABNK 770的较低5位中指定。该示例指出每个命令736、738任何时候可单独存在于后续帧中。这实现了可变端口组大小、不依赖于端口组大小的公用控制器以及跨端口绑定的一致语义。同样,命令738,770彼此互补并且可同时执行。图7D示出丽SK和WR命令742,740的实施例。图7D示出WR命令742和相关联的用于选择性写入的字节/写入掩码742。WMSK 742表示设置用于进行中的写入命令740的 8字节掩码772并跟随WR命令740以具有任何效果的命令。在传送了 8字节数据后,掩码 722对下一个8字节重新开始。掩码722中的字母‘H’代表字传递的高字节(如位15_8), 而‘L’代表低字节(如位7-0)。WR命令740启动对指定存储体774和列776的存储器写入周期。一旦发送WR命令740,写入数据就跟随。如果绑定两个或更多个端口,在端口 2上发送可任选WMSK命令 780,从而覆盖或掩蔽前8字节。掩码778对每8个字节重复,直到后续WMSK命令重置它。 2个或更多个端口绑定的其它示例包括根据存储器和接口语义,组合同时的读取和写入,或者同时的激活和写入。图8A,8B和8C示出写入掩码模型800,850,875的实施例。对于使用串行通信的存储器,用于不可分割的传递的位的数目的减少用于减少等待时间。不可分割的传递被定义为以位为单位的帧或字长度,它描述一个完整数据量(如字节)或包括完成命令所需的任何直接操作数数据的可执行命令,如‘写入’和目标地址。对于大多数存储器,写入操作同时包括WR命令、地址、算子(在该例中是掩码)、 和写入数据。对于较快的存储器设备,描述命令所需的速度变得高得惊人,所以使用脉冲传递。脉冲传递用命令和初始数据发起,但是用具有计算的(如递增的)后续地址的数据流继续。每当传递数据时,它伴随有附加写入掩码指示信号。对于串行通信,对命令、地址、写入掩码和数据一次进行同时编码可能是效率低的,因为命令和地址对于后续的数据传递可能不是必需的。为此,数据跟随WR命令和地址, 从而使用脉冲传递来提交数据。为了减少等待时间,取决于何时值不要存储至写入脉冲中的位置,写入掩码或WMSK命令(如每字节1位)只需伴随数据。虽然这种优化对串行接口效率是关键的,但是该方案可用于减少并行存储器接口的带宽要求。因为串行接口改进多主机存储器的实用性,所以每个主机有能力通过将写入掩码置于命令流中来使用独立写入掩码以用于独立传递。为了减少对将WMSK与数据一同包括以减少等待时间的依赖性,假设并在此示出脉冲中的三种使用模型。图8A示出重复模式WMSK模型800的实施例,它包括之前的存储器内容802、命令流804和之后的存储器内容806。在该图示中,WMSK对于每个传递重复;如只改变含红色、 绿色和蓝色数据的矩形中的红色值,其它两种颜色将被掩蔽并使用该WMSK对矩形中的所有RGB (红色、绿色和蓝色)数据重复。图8B示出初始和最终丽SK模型850的实施例,它包括之前的存储器内容852、命令流邪4和之后的存储器内容856。在此,写入掩码只用于传递的初始部分。例如,网络分组可在临时(odd)传递边界(四字节传递的第二字节)开始,以优化分组中其余数据结构的访问(对准)。一旦初始掩码用尽,就将所有其余分组数据写入存储器。为了完成传递,插入新WMSK以修整最后两个字节。图8C示出使用多个串行接口来重复模式WMSK模型875的实施例,它包括之前的存储器内容876、命令流878和之
13后的存储器内容880。此处,WMSK用于选择传递大小中一个数据结构的单个传递。例如,只写入32位整数中的第二字节。对于模型800,850,写入掩码很少被重新使用或使用。例如,若干种类型的传递,如高速缓存写入和大容量存储传递,不需要掩码。在这些情况下,将写入掩码与数据一同包括是效率低的,因为它在大多数时间是不使用的。与单元传递同样小或更小的传递未获得脉冲传递的益处,所以数据、命令、地址和写入掩码全部被指定。这种短传递通常在高速缓存存储器内部发生,以减轻基于脉冲的存储器频繁地执行这种类型的操作。聚焦模型800,850中的假设,将写入掩码与数据一同包括,但是如果要获得脉冲传递的益处,将写入掩码与命令绑定是不够的。为此,将写入掩码传递从命令和数据去耦合已作为新命令实现。在包括不可分割的传递(帧)的单个串行流中,发布写入命令,并伴随其在一帧中的地址以及在帧序列中至所计算的存储器地址的数据流,并且写入掩码被描述为单独命令并被应用于在写入命令之后发布且位于所需数据中的单位脉冲。单位脉冲被定义为单个写入掩码位所应用的位的数目乘以写入掩码命令中写入掩码位的数目。当发布写入命令时,写入掩码将被清除,如写入所有后续数据。如果写入掩码命令立刻跟随写入命令,其应用将从第一单位脉冲开始。如果使用模型800中所述的重复模式,则掩码将跨所有单位脉冲重复。如果模式在传递中改变,则将发布附加写入掩码命令,从而使新的写入掩码应用于所有后续数据。如果使用模型850中所述的初始模式,则写入掩码将在第一单位脉冲之后被清除。如果需要附加掩码(如,在最终单位脉冲中),则发布附加写入掩码命令,其仅在写入掩码被清除时应用于下一单位脉冲。对于模型875,使用模型800的多端口版本,其中掩码被重复,但丽SK命令与WR命令同时发生但在不同的端口上。如果使用多个串行接口,可能产生更灵活的命令配置。如果一起使用两个端口,例如,写入命令可被组合于一端口上,而第一写入掩码组合于另一端口上,以改善带宽利用。图9示出采用多个端口的复制检验和命令解释的过程的实施例。在框902开始处理端口,在处理框904处理多个端口的第一端口。在处理框906,具有数据的数据流在第一端口经由对应的Rx被接收(然后被解码)。参考处理框906的术语“端口 m+i”,“m”表示绑定组,而“i”表示绑定组中的数目。在该实施例中,i从零开始,而因为采用单个主机,所以m等于零。在判定框908,检验第一端口(端口 0)是否有任何差错。如果发现差错,过程在框942以差错返回结束。如果未发现错误,过程在处理框910继续检验下一端口,直到检验了所有端口。例如,在判定框912确定是否剩下任何端口。如果是,过程继续到处理框 906以处理下一端口。如果否,过程继续到处理框914。在判定框916,确定复制是否开启。如果是,在判定框918,确定当前端口,并根据其结果,过程或者在框942以返回差错结束,或者(如果未开启复制,则返回参考判定框 916)过程将继续到判定框920,其中将确定该端口是否具有数据。如果数据不是复制的,其不会进行比较。如果有数据,在判定框936执行写入操作。如果写入不在进行中,过程在框 942以返回差错结束。如果正执行写入操作,则在处理框938将数据从所有端口写入存储器,并且在框940执行正常返回。返回参考判定框920,如果端口不具有数据,在判定框922执行命令确认。在判定框922,确定端口命令是否有效,例如通过检验命令列表。如果命令不是有效的,则过程在框 942结束。如果发现命令有效,则在判定框924,确定命令是否按顺序(如命令位于正确位置)。如果命令没有按顺序,在框942返回差错。如果发现命令按顺序,则在处理框拟6处理命令。在判定框928,检验下一端口以观察在下一对端口处是否有数据复制。因为数据的复制通常涉及一对端口,所以在处理框930将端口数量增加2以检验下两个端口。返回参考判定框928,如果回答为是,则在处理框934选择下一(单个)端口。过程然后前进至判定框932,以确定是否要处理更多端口。如果是,过程继续到判定框916。如果否,在框940 发布正常返回。在一个实施例中,数据在一端口处接收,并且命令也在该端口处接收。命令在命令解释器M8 (如图2A所示)处被处理,在此表示为框922、924、926,而复制检验在由两个三角2M(如图2A所示)所指示的位置处执行,在此处表示为框916、918、920。图10示出命令复制模型1002、1004、1006的实施例。在一个实施例中,命令复制用于增强差错检测。命令被发送两次,且将原始命令与复制命令作比较。如果使用一个或二个端口 1002、1004,复制命令1010、1014在紧接原始命令1008、1012之后的帧上出现。如果使用四个或更多个端口 1006,则复制命令1016、1018在其它端口上出现。命令是特定选择的,因为(1)在绑定端口的情况下,复制可用于填充未使用的带宽;( 命令的误解释可能造成预料不到的结果,如违反命令排序(如,激活已激活的存储体,或写入未激活的存储体)或破坏与当前传递不相关的存储器位置;反之,如果命令是正确的,则任何坏数据至少被限制于当前传递;以及(3)虽然重复的数据可产生较好的结果, 但有效系统带宽将变为一半,因为对命令可用的自由空间对在数据流中不可用。命令复制模型1002、1004、1006示出单个端口 1002,以及具有复制的绑定端口 1004、1006的组合。将进一步示出,复制及多个命令如何一同工作。例如,在一个帧的时间中传递最多两个的不同命令。在单个端口模型1002中,命令被单个地发布,且其复制1010跟随在命令1008之后。对于两端口模型1004,复制命令1014在相同的帧时间中发送;然而,如果关闭复制,两个命令可占用该帧时间。对于四端口或更多端口模型1006,二个(或更多个)命令1020、 1022可占用一个帧的时间,且两个命令1020、1022两者都可被复制为相同帧时间中的复制命令1016、1018。对于同时发送的命令的数目或组中端口的数目的粒度(granularity)没有必需的限制。依赖于使用模型1002、1004、1006,按机会(opportunistically)执行命令是可接受的。在某些情况下,这节省了等待时间,但将以出差错的可能性和处理该差错的成本为代价。如果副本在一个帧的时间中全部可获得,那么差错结果将立刻可获得。在以上描述中,出于说明目的阐述了众多具体细节以便提供对本发明的全面理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节也可实践本发明。在其他情况下,公知结构和设备以框图的形式示出。在所示组件之间可能有中间结构。此处所描述或示出的各组件可具有未示出或描述的附加输入或输出。本发明的各种实施例可包括各种过程。这些过程可由硬件组件来执行或可以用计算机程序或机器可执行指令来实现,这可被用于使得用这些指令编程的通用或专用处理器或逻辑电路执行这些过程。替代地,这些过程可由硬件和软件的组合来执行。本文中所述的一个或多个模块、组件或元件,如多主机增强机制的实施例中所示或相关联的,可包含硬件、软件和/或它们的组合。在模块包括软件的情况下,软件数据、指令和/或配置可经由机器/电子设备/硬件的制品提供。制品可包括具有内容以提供指令、 数据等的机器可访问/可读介质。内容可使诸如文件管理器、盘片或盘片控制器的电子设备如此处所述地执行所述的各种操作或执行。本发明的各种实施例的各部分可以作为计算机程序产品来提供,计算机程序产品可包括其上存储有计算机程序指令的计算机可读介质,计算机程序指令可被用来对计算机 (或其他电子设备)进行编程来执行根据本发明的实施例的过程。该机器可读介质可以包括,但不限于,软盘、光盘、CD-ROM、以及磁光盘、ROM、RAM、EPROM、EEPR0M、磁卡或光卡、闪存存储器、或适于存储电子指令的其它类型的介质/机器可读介质。此外,本发明还可作为计算机程序产品下载,其中该程序可以从远程计算机传递至作出请求的计算机。许多方法是以其最基本的形式来描述的,但可以向这些方法中的任一个添加或从中删除各个过程并且可以向所描述的消息中的任一个添加或从中减去信息,而不背离本发明的基本范围。对本领域技术人员而言显而易见的是,还可以作出许多修改和变化。各具体实施例不是为了限制本发明而是为了说明本发明而提供的。本发明的实施例的范围不是由上面提供的具体示例来确定的,而是仅由所附权利要求书来确定。当提到元件“A”耦合至元件“B”或与其相耦合时,元件A可直接耦合至元件B,或通过例如元件C间接地耦合。当说明书或权利要求书声明组件、特征、结构、过程、或特性 A “引起”组件、特征、结构、过程或特性B时,它意味着“A”至少是“B”的部分起因,但还可能有帮助引起“B的至少一个其它组件、特征、结构、过程或特性。”如果说明书指示“可”、 “可能”或“可以”包括组件、特征、结构、过程或特性,则不一定必须包括该特定组件、特征、 结构、过程或特性。如果说明书或权利要求引用“一”或“一个”元件,这不意味着仅有一个所描述的元件。实施例是本发明的实现或示例。在本说明书中对“实施例”、“一个实施例”、“某些实施例”或“其他实施例”的引用意味着结合这些实施例所描述的特定特征、结构或特性被包括在至少某些实施例中,但不一定被包括在所有实施例中。“实施例”、“ 一个实施例”、或 “某些实施例”的多次出现不一定都指代相同的实施例。应当领会,在对本发明的示例实施例的以上描述中,出于简化本公开和帮助理解各创新性方面中的一个或多个方面的目的, 各个特征有时一起编组在单个实施例、附图、或其描述中。然而,本公开的方法不应解释为反映所要求保护的发明需要比在每一权利要求中明确表述的特征更多的特征的意图。相反,如下面权利要求书所反映的,各创新性方面在于比单个前面披露的实施例的全部特征要少的特征。因此,权利要求书据此特意合并到说明书中,每一权利要求都独立作为本发明的一个单独实施例。
权利要求
1.一种用于减少存储器等待时间的方法,包括在多个时间间隔经由存储器处的端口或一组端口在主机计算机系统和存储器之间传送数据,其中所述主机计算机耦合至所述存储器,所述端口是所述一组端口中的成员;以及在单个时间间隔经由所述端口或所述一组端口在所述主机计算机系统和所述存储器之间传送与所述数据相关联的命令。
2.如权利要求1所述的方法,其特征在于,所述端口在所述一组端口中的成员资格在存储器操作期间的任何时间是可变化的。
3.如权利要求1所述的方法,其特征在于,还包括经由所述一组端口中未被所述命令占用的剩余端口传送所述命令的后续命令。
4.如权利要求3所述的方法,其特征在于,所述后续命令与所述命令一样在单个时间间隔内传送。
5.如权利要求1所述的方法,其特征在于,还包括经由所述一组端口中的剩余端口传送所述命令的复制命令。
6.如权利要求1所述的方法,其特征在于,还包括采用掩码方案来禁止写入数据而不将掩码信息包括在与写入数据相同的通信帧内,以进一步减少通信位的数目和存储器等待时间。
7.如权利要求6所述的方法,其特征在于,所述掩码方案在数据流中是可变化的。
8.如权利要求7所述的方法,其特征在于,所述掩码方案被修改为禁止写入数据而不将掩码信息包括在与写入命令相同的通信帧内。
9.如权利要求7所述的方法,其特征在于,所述掩码方案对后续的单元传递自动重复。
10.如权利要求7所述的方法,其特征在于,所述掩码方案在单个单元传递后终止。
11.如权利要求1所述的方法,其特征在于,命令能够插入到写入数据流内。
12.如权利要求1所述的方法,其特征在于,状态信息能够插入到读取数据流内。
13.一种用于减少存储器等待时间的装置,包括耦合至存储器的主机计算机系统,所述存储器在多个时间间隔经由所述存储器处的端口或一组端口从所述主机计算机系统接收数据,所述端口是所述一组端口的成员;以及所述存储器被进一步修改为在单个时间间隔经由所述端口或所述一组端口从所述主机计算机系统接收与所述数据相关联的命令。
14.如权利要求13所述的装置,其特征在于,所述端口在所述一组端口中的成员资格在存储器操作期间的任何时间是可变化的。
15.如权利要求14所述的装置,其特征在于,所述存储器被进一步修改为经由所述一组端口中未被所述命令占用的剩余端口接收所述命令的后续命令。
16.如权利要求15所述的装置,其特征在于,所述后续命令与所述命令一样在单个时间间隔内传送。
17.如权利要求13所述的装置,其特征在于,所述存储器被进一步修改为经由所述一组端口中的剩余端口接收所述命令的复制命令。
18.如权利要求17所述的装置,其特征在于,所述存储器被进一步修改为采用掩码方案,所述掩码方案禁止写入数据而不将掩码信息包括在与写入数据相同的通信帧内,以进一步减少通信位的数目和存储器等待时间。
19.如权利要求18所述的装置,其特征在于,所述掩码方案在数据流中是可变化的。
20.如权利要求19所述的方法,其特征在于,所述掩码方案被修改为禁止写入数据而不将掩码信息包括在与写入命令相同的通信帧内。
21.如权利要求20所述的装置,其特征在于,所述掩码方案对后续的单元传递自动重Μ. ο
22.如权利要求20所述的装置,其特征在于,所述掩码方案在单个单元传递后终止。
23.如权利要求13所述的装置,其特征在于,命令能够插入到写入数据流内。
24.如权利要求13所述的装置,其特征在于,状态信息能够插入到读取数据流内。
25.一种用于减少存储器等待时间的系统,包括耦合至存储器的主机计算机系统,所述存储器采用端口绑定系统来减少存储器等待时间,所述端口绑定系统具有用于传送数据和命令的多个端口,其中多个端口中的两个或更多个端口能够组合成一组或多组端口,所述端口绑定系统在多个时间间隔经由存储器处的端口或一组端口在所述主机计算机系统和所述存储器之间传送数据,其中所述端口是所述一组端口中的成员;以及在单个时间间隔经由所述端口或所述一组端口在所述主机计算机系统和所述存储器之间传送与所述数据相关联的命令。
26.如权利要求25所述的装置,其特征在于,所述端口在所述一组端口中的成员资格在存储器操作期间的任何时间是可变化的。
27.如权利要求25所述的系统,其特征在于,所述端口绑定系统被进一步修改为经由所述一组端口中未被所述命令占用的剩余端口传送所述命令的后续命令。
28.如权利要求25所述的系统,其特征在于,所述后续命令与所述命令一样在单个时间间隔内传送。
29.如权利要求25所述的系统,其特征在于,所述端口绑定系统进一步经由所述一组端口中的剩余端口传送所述命令的复制命令。
30.如权利要求23所述的系统,其特征在于,所述端口绑定系统采用掩码方案来禁止写入数据而不将掩码信息包括在与写入数据相同的通信帧内,以进一步减少通信位的数目和存储器等待时间。
31.如权利要求30所述的系统,其特征在于,所述掩码方案在数据流中是可变化的。
32.如权利要求31所述的系统,其特征在于,所述掩码方案被修改为禁止写入数据而将掩码信息包括在与写入命令相同的通信帧内。
33.如权利要求32所述的系统,其特征在于,所述掩码方案被进一步修改为禁止写入数据而不将掩码信息包括在与写入命令相同的通信帧内。
34.如权利要求33所述的系统,其特征在于,所述掩码方案对后续的单元传递自动重Μ. ο
35.如权利要求33所述的系统,其特征在于,所述掩码方案在单个单元传递后终止。
36.如权利要求25所述的系统,其特征在于,命令能够插入到写入数据流内。
37.如权利要求25所述的系统,其特征在于,状态信息能够插入到读取数据流内。
全文摘要
揭示了一种用于减少存储器等待时间的方法、装置和系统。在一个实施例中,主机计算机系统和存储器之间的数据在多个时间间隔经由存储器处的端口或一组端口通信,其中主机计算机耦合至存储器。另外,与数据相关联的命令在单个时间间隔经由端口或一组端口在主机计算机系统和存储器之间通信。
文档编号G06F13/42GK102197384SQ200980143643
公开日2011年9月21日 申请日期2009年10月27日 优先权日2008年10月29日
发明者A·莫西, A·鲁贝格, H·R·李, S·金, 李东润, 李承钟, 沈大尹 申请人:晶像股份有限公司

最新回复(0)