CN102197384B - 用于改进串行端口存储器通信等待时间和可靠性的方法和系统 - Google Patents
用于改进串行端口存储器通信等待时间和可靠性的方法和系统 Download PDFInfo
- Publication number
- CN102197384B CN102197384B CN200980143643.9A CN200980143643A CN102197384B CN 102197384 B CN102197384 B CN 102197384B CN 200980143643 A CN200980143643 A CN 200980143643A CN 102197384 B CN102197384 B CN 102197384B
- Authority
- CN
- China
- Prior art keywords
- port
- order
- binding
- data
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1443—Transmit or communication errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C5/00—Details of stores covered by group G11C11/00
- G11C5/06—Arrangements for interconnecting storage elements electrically, e.g. by wiring
- G11C5/066—Means for reducing external access-lines for a semiconductor memory clip, e.g. by multiplexing at least address and data signals
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1075—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for multiport memories each having random access ports and serial ports, e.g. video RAM
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Information Transfer Systems (AREA)
- Dram (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Bus Control (AREA)
Abstract
本发明揭示了一种用于减少存储器等待时间的方法、装置和系统。在一个实施例中,主机计算机系统和存储器之间的数据在多个时间间隔经由存储器处的端口或一组端口通信,其中主机计算机耦合至存储器。另外,与数据相关联的命令在单个时间间隔经由端口或一组端口在主机计算机系统和存储器之间通信。
Description
相关申请
本申请是2008年10月29日提交的美国临时申请No.61/109,480的非临时申请,并要求其优先权。
技术领域
本发明的实施例一般涉及计算机存储器领域,具体而言,涉及改进串行端口存储器通信等待时间和可靠性。
背景技术
在使用高速串行接口的存储器系统中,其中命令和数据经各个端口在主机或多个主机和存储器之间传递,期望与某些差错检测组合地提供最大带宽以确保合适的系统操作。
串行链路由于每次只发送一位而具有固有的等待时间。另外,串行化和去串行化过程导致额外的等待时间。单独地使用端口没有显著改进等待时间,并且使用程式化的访问方法(如从每个端口访问不同的、专用的存储器区域,如条状访问)来改进带宽。通过启用端口绑定(协调地使用多个端口),可通过一次传递若干位数据来减少存储器等待时间,同时增大带宽而无需程式化的访问方法。
存储器还要求一定量的数据安全。例如,在串行信道中,可能发生不能检测的差错,除非使用将引入不可接受的等待时间的方法。在绑定端口的情况下,某些端口在命令周期期间保持空闲。该未使用的带宽用相同周期的命令的副本来填充。该方法使用时间上的复制延伸至单个端口,从而为端口配置提供特征。
图1示出EIA标准RS-232-C的常规串行位分配100。在图示中,数据的串行传递类似于RS-232链路,其中各个二进制值(位)102-118通过依次每次观察它们中的一个并将它们分配给全值124不同的有效位(significance)而被组合成全值124。例如,如果第一位是分配给值124的最高有效位的104,则接下来是第二位106,依此类推直到最低有效位由传送的最后一位118填充。在这种情况下,该组合值被称为帧128,它包括值124以及结束位和起始位102,120。另外,帧128使用称为成帧位126的额外的位来描绘,它包括起始位120和结束位122,接收机可使用它以找出帧128的起点并检验帧是否在预料时到达。在其它方案中,即使在发射机和接收机之间的数据速率略微不同或改变时,成帧位126也可用于帮助接收机可靠地找到各个位。
通过各个串行链路与存储器的通信引入大量等待时间,并且提供多于一个的主机对单个存储器的访问引入存储器资源复杂化。另外,存储器可具有一个或多个端口,每个端口包括串行发射机和串行接收机,以及相关联的用于改进等待时间和带宽的电路。在绑定端口的情况下,某些端口在命令周期期间保持空闲。该未使用的带宽用相同时间段的命令的空间副本填充,并且该方法使用不同时间段的时间上的复制延伸至单个端口,从而为所有端口配置提供特征。在绑定端口的情况下,在多个端口上发送数据,但是命令必须是独立的。首先,未使用的端口可包括命令副本。其次,某些命令可在相同的时间发布。另外,由于串行化、去串行化、使数据成帧以便差错管理、以及诸如同步的附加过程,串行通信相对于并行通信增加了等待时间。
因此,期望引入并利用减少存储器等待时间的技术。
发明内容
揭示了用于改进端口存储器通信等待时间和可靠性的方法、装置和系统。
在一个实施例中,一种方法包括:在多个时间间隔经由存储器处的一组端口在主机计算机系统和存储器之间传送数据,其中主机计算机耦合至存储器;以及在单个时间间隔经由一组端口中的一个端口在主机计算机系统和存储器之间传送与数据相关联的命令。
在一个实施例中,一种装置包括耦合至存储器的主机计算机系统,存储器在多个时间间隔经由存储器处的一组端口从主机计算机系统接收数据。存储器还被修改为在单个时间间隔经由一组端口中的一个端口从主机计算机系统接收与数据相关联的命令。
在一个实施例中,一种方法包括在主机计算机系统和存储器之间传送数据,其中一个组中端口的数目可为了改变带宽和等待时间和/或节电的目的而特别选择。
在一个实施例中,一种装置包括在主机计算机系统和存储器之间传送数据,以为了改变带宽和等待时间和/或节电的目的而特别选择一个组中端口的数目。
在一个实施例中,揭示了用以将多个主机连接到存储器的一种系统。该系统包括与存储器耦合的主机计算机系统或计算机系统中的功能,存储器利用端口绑定系统来减少系统等待时间,端口绑定系统具有用于传送数据和命令的多个端口,其中多个端口中的两个或更多端口能够特别地组合成一个或多个端口组,端口绑定系统在多个时间间隔经由存储器处的一组端口在主机和存储器之间传送数据,并且在单个时间间隔经由一组端口中的一个端口在主机和存储器之间传送与数据相关联的命令。
附图简述
本发明的各实施例在各附图中是作为示例而非限定来示出的,在附图中相同的附图标记指代相同的要素。
图1示出RS-232中的常规串行位分配;
图2A示出单个主机绑定端口存储器的实施例;
图2B示出四端口存储器的单个主机连接的实施例;
图2C示出单个主机接口的端口绑定选择的实施例;
图2D示出智能移动电话体系结构的实施例;
图2E示出使用串行端口DRAM(SPDRAM)的智能电话体系结构的图2D的替换实施例;
图2F示出多主机绑定配置的实施例;
图2G示出多主机绑定端口存储器的实施例;
图2H示出用于高达16端口的端口绑定控制寄存器和用于高达16端口的复制命令检验寄存器的实施例;
图2I示出绑定多路分解器的实施例;
图2J示出表示绑定多路分解器路由的表格的实施例;
图2K示出绑定多路复用器的实施例;
图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中可能只有单个连接用于读取和写入数据。另外,绑定端口存储器系统204包括将分别在图2K和2I中描述的绑定多路复用器264和绑定多路分解器262。
在常规技术中,发送的所有命令和数据位立即通过各个并行线路,对于要形成的代码同时到达;然而,随着速度变快,经由这些各个线路的数据将被不正确地或在错误的时间采样(如使用相关联的时钟信号)。为了解决高速采样问题,利用自采样串行信号(如图1中的RS-232);然而,相对于并行方法增加了等待时间,因为数据是在时间上处理的。在一个实施例中,与存储器的串行端口通信的通信等待时间和可靠性采用多个串行接口或端口的编组,以及接连地、或时间上地、或端口之间同时地、或空间上地复制命令。该技术的一个实施例在此示出,并由单个主机端口绑定端口存储器200采用。
在一个实施例中,发射机(Tx)可将16位的并行数据变成串行位流并发射单个位流,而接收机(Rx)接收16位单个流并且然后可将它变成并行流。在这种情况下,本地存储器可以是粗略相同速率的32位宽。在所示的端口存储器200中,采用四个端口206-212,因此经由4个端口206-212有128位的数据移动,其中每个通道64位数据流(如16位乘以4个端口等于每个通道64位)。该128位的移动由芯片内的必要电路支持。
与常规技术不同,每个端口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)可同时伴随写入命令(WR)。可在端口0接受所有命令,但是可在其它端口接收相关附属命令以节省命令带宽。命令ACT、ABNK、WR和WMSK将参考图7B-7D进一步描述。
另外,单个选项启用用于增强差错检测的命令复制以防止错误命令破坏存储器操作状态。通过启用该选项,单个端口将第一帧中的命令与其后帧中的副本作比较。当绑定并使用两个或更多端口277,278时,没有额外的带宽用于副本,因为副本同时出现在另一端口上。虽然命令被复制,但是该实施例中数据未被复制。当有至少四个绑定端口278时,可同时使用复制和附属命令两者。
图2D示出智能移动电话体系结构280的实施例,它包括基带处理器282、应用处理器281、各个易失性存储器(如DRAM 274、SRAM/DRAM 283)、非易失性存储器(如NAND 272和NOR闪存273)、以及两个处理器281和282之间的通信信道269。存储器272-274、283用于存储并检索可执行程序代码以及对各自连接的处理器保持专用而不共享的数据。任何共享或通信经由通信信道269执行。应用处理器281可耦合至其它外围设备,如相机201和显示设备203。
图2E示出具有SPDRAM 285的智能电话体系结构284的图2D的替换实施例。在一个实施例中,在基带处理器282和应用处理器281之间共享存储器。在该实施例中,SPDRAM 285可用于在基带处理器和应用处理器之间通信,为两个处理器存储程序代码和数据,并减少实现该体系结构所需的存储器组件或技术的数目。另外,减少了存储器和处理器之间连接的数目,包括去除了专用通信信道。提供分割,使得某些主机能访问存储器的一部分,而其它主机则不能。这使得存储器设备可能在安全的环境中共享,例如,对于基带软件。例如,应用处理器281可将基带软件图像载入SPDRAM 285并向基带处理器282指示图像已准备好。基带处理器282然后移除对其它主机的访问,并检验图像的有效性。如果它是正确的,则基带处理器282可继续以从该图像进行操作,而不中断应用处理器281上运行的软件。
图2F示出多主机绑定配置286,287,288的实施例。在一个实施例中,多个端口绑定可与多主机功能组合。例如,如果一个主机,如应用处理器281,要求更大的带宽,则它可将若干个绑定端口用于其接口,而其它主机可继续使用单个端口。在所示的实施例中,提供了在四端口设备上绑定若干个主机的几个组合286,287,288。例如,在组合286中,主机1和2中的每一个与两个端口连接。在组合287中,主机1与端口0连接,而主机2与两个端口2,3连接。在组合288中,每个主机与单个端口连接。可以构想,可提供主机-端口绑定或连接的任何组合,如单个端口可一同绑定所有四个主机。确切地,哪个端口分配给哪个主机可取决于给出绑定端口组的长度的寄存器设置。
图2G示出多主机绑定端口存储器292的实施例。所示的具有四个端口290的多主机绑定端口存储器(多主机存储器系统)292与具有8个存储体289的存储器核心291通信。为了简化和简洁起见,示出有限数目的端口290和存储体289。虽然该多主机存储器系统292类似于图2A的单主机存储器系统204,但是此处来自每个端口290的数据单独地对每个存储体289是可用的。在该实施例中,存储体289被定义为整个多主机存储器系统292的可被独立寻址用于数据传递的一部分。另外,通过提供单独的访问,端口290的单个端口在指令期间可与存储体289的单个存储体相关联,而不与访问其它存储体的其它端口冲突。绑定多路复用器293和多路分解器294被复用以产生用于在存储体289和端口290的多个端口组之间引导数据的纵横开关的可能实施例。
图2H示出用于高达16端口的端口绑定控制寄存器295和用于高达16端口的复制命令检验寄存器296的实施例。为了简洁和简明起见,该实施例假设绑定发生在二进制倍数的连续端口(如端口1,2或4)并具有匹配模数(如,用于4端口的端口0,用于2端口的端口0或2,或者用于单端口的任何端口)。端口可基于寄存器设置来确定其自己在绑定组中的成员资格。示出了16端口绑定控制寄存器295。该绑定被描述为并提供分层模式,例如当没有设置位时,所有端口独立工作。对于两端口设备,仅使用位0,而对于四端口设备,位0-4描述了通过加入两端口绑定的剩余部分用于四端口和绑定所有端口的可能绑定。对于8端口设备,两端口绑定的剩余部分在位8-11中,四端口绑定在位13和14中,所有端口在位15中。该模式可无限继续。
另外,端口可能不属于绑定组,在这种情况下它们可独立操作。端口可能不是绑定组的一部分且单独操作,或者它们可以是一个以上绑定组的一部分。解决这种冲突的一种技术是选择规定的最大绑定组。当使用寄存器295将端口加入绑定组时,下一命令然后在该绑定组的环境中使用,并且在新端口准备好之前没有命令必须被发布。当端口从绑定组移除时,它在此之后立即可被禁用或独立使用。
另外,向寄存器分配每端口一位以启用复制命令检验,在此示为复制命令检验寄存器296。如果端口被绑定到任何组,它用其连续端口来检验其命令值。如果它没有绑定到一个组,在其连续循环中找出副本。
图2I示出绑定多路分解器295的实施例。在一个实施例中,在给出其绑定指令的情况下端口准备通道295(如port_rdy通道)由各个端口290产生。例如,当绑定四个端口290时,所有端口准备通道295被断言。然而,如果仅将端口290中的端口2和3绑定成两端口组,那么端口准备通道295中的port_rdy[3:2]被断言。类似地,如果端口1独立工作,那么只有port_rdy[1]被断言。该技术用于确定从端口290到通向存储体289的正确端口准备通道295的传递大小和路由,以及构建完整存储器字用于存储的闩锁(latch)。
图2J示出表示绑定多路分解器路由的表格296,297的实施例。例如,当数据到达时,多路分解器根据路由函数表296将端口数据路由至正确的通道。多路分解器寄存器然后根据如表297中所述的函数enable_fn(启用函数,图2I中的298)将数据捕获到为存储器绑定的正确端口通道中。一旦锁存了所有数据,则命令核心使用wr_strobe(写入选通)通过enable_fn 298存储数据。
写入掩码函数或禁止所选数据的存储可使用并行数据通路实现。在存储循环的开始,根据enable_fn设置所有掩码(如禁止所有通道)。当数据到达时,相关联的掩码与数据一起被路由并存储。如果不是所有数据都到达(如中断或短传递),则只存储到达的数据,因为未到达的数据通道没有机会清除相关联的掩码。
图2K示出绑定多路复用器293的实施例。在一个实施例中,存储器的读取等待时间(RL)299使端口准备(如port_rdy)295和读取命令(如read_cmd)信号延迟,从而数据及时从存储器到达(并锁存)以选择输出端口290。对这些端口的选择使用经延迟的输入值简单地进行。来自读取命令的port_rdy通道295由多路复用器293解释,其类似于多路分解器294的解释。多路复用器基于图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),过程在处理框428继续训练差错端口,然后继续到处理框416。
返回至判定框418,如果未发现端口差错,则在判定框420作出是否添加更多端口的另一确定。如果是,过程在处理框414继续新端口的训练过程(如为每个新端口寻找SYNC)。如果未启用附加的端口,则在判定框422确定是否移除任何端口。如果否,过程继续到判定框416。如果是,在处理框424禁用任何移除的端口。此时,在判定框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以差错返回结束。如果是,在处理框524将数据写入存储器,并且过程在框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以具有任何效果。WMSK 742参考7D进一步讨论。
读取(RD)744是指启动存储器读取周期的读取命令,而脉冲停止(BSTP)746是指依赖于指定的存储体中断端口当前读取或写入命令的命令。预充(PCG)748是指预充命令中指定存储体的指令,而预充全部(PCA)750包括同时预充所有存储体的命令。按存储体刷新(REFB)752规定对指定存储体自动刷新,而全部存储体刷新(REFA)754规定根据内部计数器对所有存储体刷新。在发布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在ACT命令738的最低有效15位中指定,5个最高有效位在最后ABNK命令736或在端口2上出现的ABNK 770的较低5位中指定。该示例指出每个命令736、738任何时候可单独存在于后续帧中。这实现了可变端口组大小、不依赖于端口组大小的公用控制器以及跨端口绑定的一致语义。同样,命令738,770彼此互补并且可同时执行。
图7D示出WMSK和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示出初始和最终WMSK模型850的实施例,它包括之前的存储器内容852、命令流854和之后的存储器内容856。在此,写入掩码只用于传递的初始部分。例如,网络分组可在临时(odd)传递边界(四字节传递的第二字节)开始,以优化分组中其余数据结构的访问(对准)。一旦初始掩码用尽,就将所有其余分组数据写入存储器。为了完成传递,插入新WMSK以修整最后两个字节。图8C示出使用多个串行接口来重复模式WMSK模型875的实施例,它包括之前的存储器内容876、命令流878和之后的存储器内容880。此处,WMSK用于选择传递大小中一个数据结构的单个传递。例如,只写入32位整数中的第二字节。
对于模型800,850,写入掩码很少被重新使用或使用。例如,若干种类型的传递,如高速缓存写入和大容量存储传递,不需要掩码。在这些情况下,将写入掩码与数据一同包括是效率低的,因为它在大多数时间是不使用的。与单元传递同样小或更小的传递未获得脉冲传递的益处,所以数据、命令、地址和写入掩码全部被指定。这种短传递通常在高速缓存存储器内部发生,以减轻基于脉冲的存储器频繁地执行这种类型的操作。
聚焦模型800,850中的假设,将写入掩码与数据一同包括,但是如果要获得脉冲传递的益处,将写入掩码与命令绑定是不够的。为此,将写入掩码传递从命令和数据去耦合已作为新命令实现。在包括不可分割的传递(帧)的单个串行流中,发布写入命令,并伴随其在一帧中的地址以及在帧序列中至所计算的存储器地址的数据流,并且写入掩码被描述为单独命令并被应用于在写入命令之后发布且位于所需数据中的单位脉冲。单位脉冲被定义为单个写入掩码位所应用的位的数目乘以写入掩码命令中写入掩码位的数目。当发布写入命令时,写入掩码将被清除,如写入所有后续数据。如果写入掩码命令立刻跟随写入命令,其应用将从第一单位脉冲开始。
如果使用模型800中所述的重复模式,则掩码将跨所有单位脉冲重复。如果模式在传递中改变,则将发布附加写入掩码命令,从而使新的写入掩码应用于所有后续数据。如果使用模型850中所述的初始模式,则写入掩码将在第一单位脉冲之后被清除。如果需要附加掩码(如,在最终单位脉冲中),则发布附加写入掩码命令,其仅在写入掩码被清除时应用于下一单位脉冲。
对于模型875,使用模型800的多端口版本,其中掩码被重复,但WMSK命令与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返回差错。如果发现命令按顺序,则在处理框926处理命令。
在判定框928,检验下一端口以观察在下一对端口处是否有数据复制。因为数据的复制通常涉及一对端口,所以在处理框930将端口数量增加2以检验下两个端口。返回参考判定框928,如果回答为是,则在处理框934选择下一(单个)端口。过程然后前进至判定框932,以确定是否要处理更多端口。如果是,过程继续到判定框916。如果否,在框940发布正常返回。
在一个实施例中,数据在一端口处接收,并且命令也在该端口处接收。命令在命令解释器248(如图2A所示)处被处理,在此表示为框922、924、926,而复制检验在由两个三角254(如图2A所示)所指示的位置处执行,在此处表示为框916、918、920。
图10示出命令复制模型1002、1004、1006的实施例。在一个实施例中,命令复制用于增强差错检测。命令被发送两次,且将原始命令与复制命令作比较。如果使用一个或二个端口1002、1004,复制命令1010、1014在紧接原始命令1008、1012之后的帧上出现。如果使用四个或更多个端口1006,则复制命令1016、1018在其它端口上出现。
命令是特定选择的,因为:(1)在绑定端口的情况下,复制可用于填充未使用的带宽;(2)命令的误解释可能造成预料不到的结果,如违反命令排序(如,激活已激活的存储体,或写入未激活的存储体)或破坏与当前传递不相关的存储器位置;反之,如果命令是正确的,则任何坏数据至少被限制于当前传递;以及(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、EEPROM、磁卡或光卡、闪存存储器、或适于存储电子指令的其它类型的介质/机器可读介质。此外,本发明还可作为计算机程序产品下载,其中该程序可以从远程计算机传递至作出请求的计算机。
许多方法是以其最基本的形式来描述的,但可以向这些方法中的任一个添加或从中删除各个过程并且可以向所描述的消息中的任一个添加或从中减去信息,而不背离本发明的基本范围。对本领域技术人员而言显而易见的是,还可以作出许多修改和变化。各具体实施例不是为了限制本发明而是为了说明本发明而提供的。本发明的实施例的范围不是由上面提供的具体示例来确定的,而是仅由所附权利要求书来确定。
当提到元件“A”耦合至元件“B”或与其相耦合时,元件A可直接耦合至元件B,或通过例如元件C间接地耦合。当说明书或权利要求书声明组件、特征、结构、过程、或特性A“引起”组件、特征、结构、过程或特性B时,它意味着“A”至少是“B”的部分起因,但还可能有帮助引起“B的至少一个其它组件、特征、结构、过程或特性。”如果说明书指示“可”、“可能”或“可以”包括组件、特征、结构、过程或特性,则不一定必须包括该特定组件、特征、结构、过程或特性。如果说明书或权利要求引用“一”或“一个”元件,这不意味着仅有一个所描述的元件。
实施例是本发明的实现或示例。在本说明书中对“实施例”、“一个实施例”、“某些实施例”或“其他实施例”的引用意味着结合这些实施例所描述的特定特征、结构或特性被包括在至少某些实施例中,但不一定被包括在所有实施例中。“实施例”、“一个实施例”、或“某些实施例”的多次出现不一定都指代相同的实施例。应当领会,在对本发明的示例实施例的以上描述中,出于简化本公开和帮助理解各创新性方面中的一个或多个方面的目的,各个特征有时一起编组在单个实施例、附图、或其描述中。然而,本公开的方法不应解释为反映所要求保护的发明需要比在每一权利要求中明确表述的特征更多的特征的意图。相反,如下面权利要求书所反映的,各创新性方面在于比单个前面披露的实施例的全部特征要少的特征。因此,权利要求书据此特意合并到说明书中,每一权利要求都独立作为本发明的一个单独实施例。
Claims (34)
1.一种用于减少存储器等待时间的方法,包括:
在多个时间间隔经由存储器处的端口或绑定的一组端口在主机计算机系统和存储器之间传送数据,其中所述主机计算机耦合至所述存储器,所述端口是所述绑定的一组端口中的成员;以及
在单个时间间隔经由所述端口或所述绑定的一组端口在所述主机计算机系统和所述存储器之间传送与所述数据相关联的命令,其中通过绑定两个或更多个端口,在无需使用额外的带宽的情况下,所述命令被复制成一个或多个复制命令,其中所述数据不被复制,并且其中所述命令以及所述一个或多个复制命令被同时使用,
其中所述绑定的一组端口中的端口数目是可动态选择的以使所述端口在所述绑定的一组端口中的成员资格在存储器操作期间的任何时间是可变化的。
2.如权利要求1所述的方法,其特征在于,还包括经由所述绑定的一组端口中未被所述命令占用的剩余端口传送所述命令的后续命令。
3.如权利要求2所述的方法,其特征在于,所述后续命令与所述命令一样在单个时间间隔内传送。
4.如权利要求1所述的方法,其特征在于,还包括经由所述绑定的一组端口中的剩余端口传送所述命令的复制命令。
5.如权利要求1所述的方法,其特征在于,还包括采用掩码方案来禁止写入数据而不将掩码信息包括在与写入数据相同的通信帧内,以进一步减少通信位的数目和存储器等待时间。
6.如权利要求5所述的方法,其特征在于,所述掩码方案在数据流中是可变化的。
7.如权利要求6所述的方法,其特征在于,所述掩码方案被修改为禁止写入数据而不将掩码信息包括在与写入命令相同的通信帧内。
8.如权利要求6所述的方法,其特征在于,所述掩码方案对后续的单元传递自动重复。
9.如权利要求6所述的方法,其特征在于,所述掩码方案在单个单元传递后终止。
10.如权利要求1所述的方法,其特征在于,命令能够插入到写入数据流内。
11.如权利要求1所述的方法,其特征在于,状态信息能够插入到读取数据流内。
12.一种用于减少存储器等待时间的装置,包括:
耦合至存储器的主机计算机系统,所述存储器在多个时间间隔经由所述存储器处的端口或绑定的一组端口从所述主机计算机系统接收数据,所述端口是所述绑定的一组端口的成员;以及
所述存储器被进一步修改为在单个时间间隔经由所述端口或所述绑定的一组端口从所述主机计算机系统接收与所述数据相关联的命令,其中通过绑定两个或更多个端口,在无需使用额外的带宽的情况下,所述命令被复制成一个或多个复制命令,其中所述数据不被复制,并且其中所述命令以及所述一个或多个复制命令被同时使用,
其中所述绑定的一组端口中的端口数目是可动态选择的以使所述端口在所述绑定的一组端口中的成员资格在存储器操作期间的任何时间是可变化的。
13.如权利要求12所述的装置,其特征在于,所述存储器被进一步修改为经由所述绑定的一组端口中未被所述命令占用的剩余端口接收所述命令的后续命令。
14.如权利要求13所述的装置,其特征在于,所述后续命令与所述命令一样在单个时间间隔内传送。
15.如权利要求12所述的装置,其特征在于,所述存储器被进一步修改为经由所述绑定的一组端口中的剩余端口接收所述命令的复制命令。
16.如权利要求15所述的装置,其特征在于,所述存储器被进一步修改为采用掩码方案,所述掩码方案禁止写入数据而不将掩码信息包括在与写入数据相同的通信帧内,以进一步减少通信位的数目和存储器等待时间。
17.如权利要求16所述的装置,其特征在于,所述掩码方案在数据流中是可变化的。
18.如权利要求17所述的装置,其特征在于,所述掩码方案被修改为禁止写入数据而不将掩码信息包括在与写入命令相同的通信帧内。
19.如权利要求18所述的装置,其特征在于,所述掩码方案对后续的单元传递自动重复。
20.如权利要求18所述的装置,其特征在于,所述掩码方案在单个单元传递后终止。
21.如权利要求12所述的装置,其特征在于,命令能够插入到写入数据流内。
22.如权利要求12所述的装置,其特征在于,状态信息能够插入到读取数据流内。
23.一种用于减少存储器等待时间的系统,包括如权利要求12至22中任何一项所述的装置,其中:
耦合至所述主机计算机系统的所述存储器采用端口绑定系统来减少存储器等待时间,所述端口绑定系统具有用于传送数据和命令的多个端口,其中多个端口中的两个或更多个端口能够组合成绑定的一组或多组端口,所述端口绑定系统:
在多个时间间隔经由存储器处的端口或绑定的一组端口在所述主机计算机系统和所述存储器之间传送数据,其中所述端口是所述绑定的一组端口中的成员;以及
在单个时间间隔经由所述端口或所述绑定的一组端口在所述主机计算机系统和所述存储器之间传送与所述数据相关联的命令,其中通过绑定两个或更多个端口,在无需使用额外的带宽的情况下,所述命令被复制成一个或多个复制命令,其中所述数据不被复制,并且其中所述命令以及所述一个或多个复制命令被同时使用,
其中所述绑定的一组端口中的端口数目是可动态选择的以使所述端口在所述绑定的一组端口中的成员资格在存储器操作期间的任何时间是可变化的。
24.如权利要求23所述的系统,其特征在于,所述端口绑定系统被进一步修改为经由所述绑定的一组端口中未被所述命令占用的剩余端口传送所述命令的后续命令。
25.如权利要求24所述的系统,其特征在于,所述后续命令与所述命令一样在单个时间间隔内传送。
26.如权利要求23所述的系统,其特征在于,所述端口绑定系统进一步经由所述绑定的一组端口中的剩余端口传送所述命令的复制命令。
27.如权利要求23所述的系统,其特征在于,所述端口绑定系统采用掩码方案来禁止写入数据而不将掩码信息包括在与写入数据相同的通信帧内,以进一步减少通信位的数目和存储器等待时间。
28.如权利要求27所述的系统,其特征在于,所述掩码方案在数据流中是可变化的。
29.如权利要求28所述的系统,其特征在于,所述掩码方案被修改为禁止写入数据而将掩码信息包括在与写入命令相同的通信帧内。
30.如权利要求29所述的系统,其特征在于,所述掩码方案被进一步修改为禁止写入数据而不将掩码信息包括在与写入命令相同的通信帧内。
31.如权利要求30所述的系统,其特征在于,所述掩码方案对后续的单元传递自动重复。
32.如权利要求30所述的系统,其特征在于,所述掩码方案在单个单元传递后终止。
33.如权利要求23所述的系统,其特征在于,命令能够插入到写入数据流内。
34.如权利要求23所述的系统,其特征在于,状态信息能够插入到读取数据流内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410571509.1A CN104317766B (zh) | 2008-10-29 | 2009-10-27 | 用于改进串行端口存储器通信等待时间和可靠性的方法和系统 |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10948008P | 2008-10-29 | 2008-10-29 | |
US61/109,480 | 2008-10-29 | ||
US12/605,134 US8407427B2 (en) | 2008-10-29 | 2009-10-23 | Method and system for improving serial port memory communication latency and reliability |
US12/605,134 | 2009-10-23 | ||
PCT/US2009/062231 WO2010053756A2 (en) | 2008-10-29 | 2009-10-27 | Method and system for improving serial port memory communication latency and reliability |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410571509.1A Division CN104317766B (zh) | 2008-10-29 | 2009-10-27 | 用于改进串行端口存储器通信等待时间和可靠性的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102197384A CN102197384A (zh) | 2011-09-21 |
CN102197384B true CN102197384B (zh) | 2014-12-10 |
Family
ID=42118607
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410571509.1A Active CN104317766B (zh) | 2008-10-29 | 2009-10-27 | 用于改进串行端口存储器通信等待时间和可靠性的方法和系统 |
CN200980143643.9A Active CN102197384B (zh) | 2008-10-29 | 2009-10-27 | 用于改进串行端口存储器通信等待时间和可靠性的方法和系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410571509.1A Active CN104317766B (zh) | 2008-10-29 | 2009-10-27 | 用于改进串行端口存储器通信等待时间和可靠性的方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (3) | US8407427B2 (zh) |
EP (2) | EP2350847B1 (zh) |
JP (2) | JP5635521B2 (zh) |
KR (1) | KR101611516B1 (zh) |
CN (2) | CN104317766B (zh) |
WO (1) | WO2010053756A2 (zh) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8489817B2 (en) | 2007-12-06 | 2013-07-16 | Fusion-Io, Inc. | Apparatus, system, and method for caching data |
US8706968B2 (en) | 2007-12-06 | 2014-04-22 | Fusion-Io, Inc. | Apparatus, system, and method for redundant write caching |
US9104599B2 (en) | 2007-12-06 | 2015-08-11 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for destaging cached data |
US8443134B2 (en) | 2006-12-06 | 2013-05-14 | Fusion-Io, Inc. | Apparatus, system, and method for graceful cache device degradation |
ES2507072T3 (es) | 2006-12-06 | 2014-10-14 | Fusion-Io, Inc. | Aparato, sistema, y método para un almacenamiento de estado sólido como memoria caché para un almacenamiento no volátil de alta capacidad |
US9519540B2 (en) | 2007-12-06 | 2016-12-13 | Sandisk Technologies Llc | Apparatus, system, and method for destaging cached data |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
JP5588100B2 (ja) * | 2008-06-23 | 2014-09-10 | ピーエスフォー ルクスコ エスエイアールエル | 半導体装置およびデータ処理システム |
US8769213B2 (en) * | 2009-08-24 | 2014-07-01 | Micron Technology, Inc. | Multi-port memory and operation |
US9021158B2 (en) | 2009-09-09 | 2015-04-28 | SanDisk Technologies, Inc. | Program suspend/resume for memory |
US8289801B2 (en) * | 2009-09-09 | 2012-10-16 | Fusion-Io, Inc. | Apparatus, system, and method for power reduction management in a storage device |
US9223514B2 (en) | 2009-09-09 | 2015-12-29 | SanDisk Technologies, Inc. | Erase suspend/resume for memory |
US8984216B2 (en) | 2010-09-09 | 2015-03-17 | Fusion-Io, Llc | Apparatus, system, and method for managing lifetime of a storage device |
KR101796116B1 (ko) | 2010-10-20 | 2017-11-10 | 삼성전자 주식회사 | 반도체 장치, 이를 포함하는 메모리 모듈, 메모리 시스템 및 그 동작방법 |
US9218278B2 (en) | 2010-12-13 | 2015-12-22 | SanDisk Technologies, Inc. | Auto-commit memory |
US10817421B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent data structures |
WO2012082792A2 (en) | 2010-12-13 | 2012-06-21 | Fusion-Io, Inc. | Apparatus, system, and method for auto-commit memory |
US9047178B2 (en) | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
US9208071B2 (en) | 2010-12-13 | 2015-12-08 | SanDisk Technologies, Inc. | Apparatus, system, and method for accessing memory |
US10817502B2 (en) | 2010-12-13 | 2020-10-27 | Sandisk Technologies Llc | Persistent memory management |
US8966184B2 (en) | 2011-01-31 | 2015-02-24 | Intelligent Intellectual Property Holdings 2, LLC. | Apparatus, system, and method for managing eviction of data |
WO2012109677A2 (en) | 2011-02-11 | 2012-08-16 | Fusion-Io, Inc. | Apparatus, system, and method for managing operations for data storage media |
WO2012116369A2 (en) | 2011-02-25 | 2012-08-30 | Fusion-Io, Inc. | Apparatus, system, and method for managing contents of a cache |
KR20120098325A (ko) * | 2011-02-28 | 2012-09-05 | 에스케이하이닉스 주식회사 | 비휘발성 메모리 시스템 및 이를 위한 특성 정보 설정 방법 |
JP2012252558A (ja) * | 2011-06-03 | 2012-12-20 | Sony Corp | 不揮発性メモリ、メモリコントローラ、不揮発性メモリのアクセス方法、およびプログラム |
US9767032B2 (en) | 2012-01-12 | 2017-09-19 | Sandisk Technologies Llc | Systems and methods for cache endurance |
US9251086B2 (en) | 2012-01-24 | 2016-02-02 | SanDisk Technologies, Inc. | Apparatus, system, and method for managing a cache |
US9275699B2 (en) | 2012-08-17 | 2016-03-01 | Rambus Inc. | Memory with alternative command interfaces |
US9666244B2 (en) | 2014-03-01 | 2017-05-30 | Fusion-Io, Inc. | Dividing a storage procedure |
JP2015177408A (ja) * | 2014-03-17 | 2015-10-05 | 日本電気株式会社 | データ通信装置、データ通信システム及びデータ通信方法 |
US9933950B2 (en) | 2015-01-16 | 2018-04-03 | Sandisk Technologies Llc | Storage operation interrupt |
US9525608B2 (en) | 2015-02-25 | 2016-12-20 | Quanta Computer, Inc. | Out-of band network port status detection |
US10009438B2 (en) | 2015-05-20 | 2018-06-26 | Sandisk Technologies Llc | Transaction log acceleration |
KR102328014B1 (ko) * | 2015-08-24 | 2021-11-18 | 삼성전자주식회사 | 싱글 와이어 인터페이스를 포함하는 장치와 이를 포함하는 데이터 처리 시스템 |
KR102407917B1 (ko) * | 2015-11-12 | 2022-06-10 | 삼성전자주식회사 | 멀티 프로세서에 의해 공유되는 메모리를 포함하는 멀티 프로세서 시스템 및 상기 시스템의 동작 방법 |
CN106341110B (zh) * | 2016-08-22 | 2019-02-12 | 北京空间飞行器总体设计部 | 一种具有反馈实时自动纠错能力的数据锁存装置 |
CN109213710B (zh) * | 2017-07-03 | 2021-12-10 | 扬智科技股份有限公司 | 高速串行接口装置与其数据传输方法 |
US10395722B2 (en) | 2017-09-29 | 2019-08-27 | Intel Corporation | Reading from a mode register having different read and write timing |
US10579578B2 (en) * | 2017-10-24 | 2020-03-03 | Micron Technology, Inc. | Frame protocol of memory device |
US10437495B1 (en) | 2018-04-18 | 2019-10-08 | EMC IP Holding Company LLC | Storage system with binding of host non-volatile memory to one or more storage devices |
US10922078B2 (en) | 2019-06-18 | 2021-02-16 | EMC IP Holding Company LLC | Host processor configured with instruction set comprising resilient data move instructions |
US11086739B2 (en) | 2019-08-29 | 2021-08-10 | EMC IP Holding Company LLC | System comprising non-volatile memory device and one or more persistent memory devices in respective fault domains |
WO2024054427A1 (en) * | 2022-09-08 | 2024-03-14 | Rambus Inc. | Multi-channel memory stack with shared die |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4807189A (en) * | 1987-08-05 | 1989-02-21 | Texas Instruments Incorporated | Read/write memory having a multiple column select mode |
CN1570899A (zh) * | 2004-04-25 | 2005-01-26 | 赵红刚 | 电脑与串口外接模块自动匹配通信的方法 |
CN1573723A (zh) * | 2003-05-15 | 2005-02-02 | 三星电子株式会社 | 通过多端口串行的通信方法和装置 |
CN101055553A (zh) * | 2006-04-14 | 2007-10-17 | 乐金电子(昆山)电脑有限公司 | Pda与主机cpu和外围设备之间的周边装置用串联接口通信方法及系统 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01144119A (ja) * | 1987-11-30 | 1989-06-06 | Nec Corp | 記憶装置 |
US5502728A (en) | 1992-02-14 | 1996-03-26 | International Business Machines Corporation | Large, fault-tolerant, non-volatile, multiported memory |
US5337414A (en) | 1992-09-22 | 1994-08-09 | Unisys Corporation | Mass data storage and retrieval system |
JPH09282868A (ja) * | 1996-04-12 | 1997-10-31 | Oki Electric Ind Co Ltd | ランダムアクセスメモリ |
JPH10171750A (ja) | 1996-12-09 | 1998-06-26 | Fujitsu Ltd | メモリ間データ転送システム |
US5870350A (en) * | 1997-05-21 | 1999-02-09 | International Business Machines Corporation | High performance, high bandwidth memory bus architecture utilizing SDRAMs |
JP2001166986A (ja) * | 1999-12-08 | 2001-06-22 | Yokogawa Electric Corp | データ割付装置 |
JP2002063791A (ja) * | 2000-08-21 | 2002-02-28 | Mitsubishi Electric Corp | 半導体記憶装置およびメモリシステム |
AU2003247264A1 (en) * | 2002-08-05 | 2004-02-23 | Tetra Laval Holding And Finance S.A. | Device and method for through-cutting of an extruded ice mass |
US6851033B2 (en) | 2002-10-01 | 2005-02-01 | Arm Limited | Memory access prediction in a data processing apparatus |
US7633935B2 (en) * | 2003-05-29 | 2009-12-15 | Ericsson Ab | Dynamic port updating |
US7657667B2 (en) | 2004-03-25 | 2010-02-02 | International Business Machines Corporation | Method to provide cache management commands for a DMA controller |
US20060090059A1 (en) | 2004-10-21 | 2006-04-27 | Hsiang-I Huang | Methods and devices for memory paging management |
JP4565966B2 (ja) * | 2004-10-29 | 2010-10-20 | 三洋電機株式会社 | メモリ素子 |
US7346713B2 (en) * | 2004-11-12 | 2008-03-18 | International Business Machines Corporation | Methods and apparatus for servicing commands through a memory controller port |
US7251185B2 (en) * | 2005-02-24 | 2007-07-31 | International Business Machines Corporation | Methods and apparatus for using memory |
JP2007242162A (ja) * | 2006-03-09 | 2007-09-20 | Toshiba Corp | 半導体記憶装置 |
JP5087870B2 (ja) | 2006-07-12 | 2012-12-05 | 富士通セミコンダクター株式会社 | 半導体メモリ、コントローラおよび半導体メモリの動作方法 |
US7529149B2 (en) | 2006-12-12 | 2009-05-05 | Mosaid Technologies Incorporated | Memory system and method with serial and parallel modes |
JP5599969B2 (ja) | 2008-03-19 | 2014-10-01 | ピーエスフォー ルクスコ エスエイアールエル | マルチポートメモリ、および該マルチポートメモリを備えるコンピュータシステム |
US8572455B2 (en) * | 2009-08-24 | 2013-10-29 | International Business Machines Corporation | Systems and methods to respond to error detection |
US8248869B1 (en) * | 2009-10-16 | 2012-08-21 | Xilinx, Inc. | Configurable memory map interface and method of implementing a configurable memory map interface |
-
2009
- 2009-10-23 US US12/605,134 patent/US8407427B2/en active Active
- 2009-10-27 JP JP2011534681A patent/JP5635521B2/ja active Active
- 2009-10-27 CN CN201410571509.1A patent/CN104317766B/zh active Active
- 2009-10-27 EP EP09752943.2A patent/EP2350847B1/en active Active
- 2009-10-27 EP EP14168733.5A patent/EP2767908A1/en not_active Withdrawn
- 2009-10-27 CN CN200980143643.9A patent/CN102197384B/zh active Active
- 2009-10-27 WO PCT/US2009/062231 patent/WO2010053756A2/en active Application Filing
- 2009-10-27 KR KR1020117012261A patent/KR101611516B1/ko active IP Right Grant
-
2013
- 2013-03-25 US US13/850,147 patent/US8892825B2/en active Active
-
2014
- 2014-10-16 US US14/516,136 patent/US10056123B2/en active Active
- 2014-10-16 JP JP2014211607A patent/JP5927263B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4807189A (en) * | 1987-08-05 | 1989-02-21 | Texas Instruments Incorporated | Read/write memory having a multiple column select mode |
CN1573723A (zh) * | 2003-05-15 | 2005-02-02 | 三星电子株式会社 | 通过多端口串行的通信方法和装置 |
CN1570899A (zh) * | 2004-04-25 | 2005-01-26 | 赵红刚 | 电脑与串口外接模块自动匹配通信的方法 |
CN101055553A (zh) * | 2006-04-14 | 2007-10-17 | 乐金电子(昆山)电脑有限公司 | Pda与主机cpu和外围设备之间的周边装置用串联接口通信方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20100106917A1 (en) | 2010-04-29 |
JP2012507795A (ja) | 2012-03-29 |
JP5927263B2 (ja) | 2016-06-01 |
US20150032975A1 (en) | 2015-01-29 |
US8892825B2 (en) | 2014-11-18 |
US8407427B2 (en) | 2013-03-26 |
CN104317766A (zh) | 2015-01-28 |
EP2350847B1 (en) | 2014-05-21 |
WO2010053756A2 (en) | 2010-05-14 |
CN104317766B (zh) | 2017-09-29 |
US20130282991A1 (en) | 2013-10-24 |
KR101611516B1 (ko) | 2016-04-11 |
JP2015053063A (ja) | 2015-03-19 |
EP2350847A2 (en) | 2011-08-03 |
EP2767908A1 (en) | 2014-08-20 |
KR20110089321A (ko) | 2011-08-05 |
US10056123B2 (en) | 2018-08-21 |
JP5635521B2 (ja) | 2014-12-03 |
CN102197384A (zh) | 2011-09-21 |
WO2010053756A3 (en) | 2010-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102197384B (zh) | 用于改进串行端口存储器通信等待时间和可靠性的方法和系统 | |
KR100962769B1 (ko) | 수퍼차지 메시지 교환기 | |
US3253262A (en) | Data processing system | |
CN104205078B (zh) | 具有降低的延迟的远程直接存储器访问 | |
CN1770110B (zh) | 对I/O完成进行无锁InfiniBand轮询的方法和系统 | |
US6425044B1 (en) | Apparatus for providing fast memory decode using a bank conflict table | |
US5687393A (en) | System for controlling responses to requests over a data bus between a plurality of master controllers and a slave storage controller by inserting control characters | |
CN114880259B (zh) | 数据处理方法、装置、系统、电子设备及存储介质 | |
CA1178378A (en) | High-speed external memory system | |
US6513090B1 (en) | Bidirectional data transfer during buffer flushing operations | |
CN110720126B (zh) | 传输数据掩码的方法、内存控制器、内存芯片和计算机系统 | |
CN104471645B (zh) | 采用检错编码的事务的存储器设备的定时优化装置和方法 | |
CN108153485A (zh) | 一种多设备协同访问sram的方法及系统 | |
JPS5913762B2 (ja) | 情報バス制御装置 | |
JPH0715670B2 (ja) | デ−タ処理装置 | |
US6425043B1 (en) | Method for providing fast memory decode using a bank conflict table | |
WO2024001332A1 (zh) | 多端口存储器、多端口存储器的读写方法及装置 | |
CN103024087A (zh) | 同时支持大容量存储和以太网通信的系统及方法 | |
TWI467381B (zh) | 用於降低記憶體潛時之方法、裝置及系統 | |
CN118363790A (zh) | 一种远程复制系统、方法及装置 | |
JPH08340348A (ja) | 情報処理システム | |
CN117931481A (zh) | 一种实时与分时系统数据快速交换的方法 | |
JPS60107791A (ja) | 磁気バブルメモリ装置 | |
JPH05120152A (ja) | 複数の共有メモリ管理装置 | |
JPS61125664A (ja) | ネツトワ−クシステムにおけるメモリ管理方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20151130 Address after: oregon Patentee after: LATTICE SEMICONDUCTOR CORPORATION Address before: American California Patentee before: Silicon Image Inc. A. Delaware C. |