具有用于缩短读取延迟的多个读取缓冲器的存储器装置的制作方法

文档序号:12837764阅读:263来源:国知局
具有用于缩短读取延迟的多个读取缓冲器的存储器装置的制作方法

本发明总体上涉及半导体装置领域,并且更具体地,涉及存储器装置的控制和排布结构,以便缩短读取延迟。



背景技术:

在诸如固态硬盘驱动器、可去除数字图像卡等的应用中越来越多地见到非易失性存储器(nvm)。闪速存储器是当今使用的流行nvm技术。然而,闪速存储器具有很多限制,诸如相对较高的功率和相对较慢的操作速度。另外,微处理器性能可能对于存储器读取延迟(readlatency)非常敏感。与微处理器相比,许多非易失性存储装置具有相对较慢的读取时间或延迟。另外,微处理器/主机与存储器之间的各种通信协议的许多实现(如串行外围接口(spi))可以增加比可能因存储器阵列本身造成的延迟更多的延迟。



技术实现要素:

在一个实施方式中,一种存储器装置可以包括:(i)存储器阵列,其具有被设置为多个数据行的多个存储器单元,其中,每个数据行都包括预定数量字节的数据;(ii)接口,其被设置成接收第一读取命令,该第一读取命令从起始字节的地址起按连续寻址次序请求多个字节的数据;(iii)高速缓存存储器,其具有第一缓冲器和第二缓冲器,并且被设置成存储多个数据行;(iv)该第一缓冲器被设置成存储来自高速缓存存储器或者存储器阵列的所述多个数据行中的第一数据行,其中,第一数据行包括所述起始字节;(v)该第二缓冲器被设置成存储来自高速缓存存储器或存储器阵列的所述多个数据行中的第二数据行,其中,第二数据行相对于第一数据行连续寻址;(vi)输出电路,其被设置成从第一缓冲器读取(access)数据,并且被设置成从第一数据行的起始字节到第一数据行的最高寻址字节顺序地输出每一个字节;以及(vii)该输出电路被设置成从第二缓冲器读取数据,并且被设置成从第二数据行的最低寻址字节起顺序输出每一个字节,直到所请求的多个字节的数据已输出为止,以便执行第一读取命令,其中,第一缓冲器和第二缓冲器的内容被保持在高速缓存存储器中。

在一个实施方式中,一种控制具有存储器阵列和高速缓存存储器的存储器装置的方法,该存储器阵列具有被设置为多个数据行的多个存储器单元,并且该高速缓存存储器具有第一缓冲器和第二缓冲器,并且被设置成存储多个数据行,其中,每个数据行都包括预定数量字节的数据,该方法可以包括:(i)通过接口接收第一读取命令,该第一读取命令从起始字节的地址起按连续寻址顺序请求多个字节的数据;(ii)在第一缓冲器中,存储来自高速缓存存储器或存储器阵列的所述多个数据行中的第一数据行,其中,该第一数据行包括所述起始字节;(iii)在第二缓冲器中,存储来自高速缓存存储器或者存储器阵列的所述多个数据行中的第二数据行,其中,第二数据行相对于第一数据行连续寻址;(iv)由输出电路从第一缓冲器读取数据,并且从第一数据行的起始字节到最高寻址字节顺序地输出每一个字节;(v)由输出电路从第二缓冲器读取数据,并且从第二数据行的最低寻址字节起顺序输出每一个字节,直到请求的所述多个字节的数据已经输出为止,以便执行第一读取命令;以及(iv)在高速缓冲存储器中保持第一缓冲器的内容和第二缓冲器的内容。

附图说明

图1是根据本发明的实施方式的示例主机和存储器装置排布结构的示意性框图。

图2是根据本发明的实施方式的示例存储器装置结构的示意性框图。

图3是根据本发明的实施方式的示例存储器装置的框图。

图4是根据本发明的实施方式的示例存储器阵列和用于读取数据的缓冲器排布结构的框图。

图5是根据本发明的实施方式的存储器装置中的示例缓冲器和高速缓存排布结构的框图。

图6是根据本发明的实施方式的第一示例读取事务的波形图。

图7是根据本发明的实施方式的第二示例读取事务的波形图。

图8是根据本发明的实施方式的从存储器阵列读取多个字节的数据的示例方法的流程图。

具体实施方式

下面,对本发明的具体实施方式进行详细说明,在附图中进行了例示其示例。虽然本发明将结合优选实施方式进行描述,但应当明白,它们不旨在将本发明限制成这些实施方式。与此相反,本发明旨在覆盖可以包括在如所附权利要求书所限定的本发明的精神和范围内的另选例、修改例以及等同物。而且,在本发明的下列详细描述中,阐述了许多具体细节,以便提供对本发明的详尽理解。然而,本领域技术人员容易明白,本发明可以在不需要这些具体细节的情况下来实践。在其它情况下,公知方法、过程、处理,组件、结构以及电路未被详细描述,以不使不必要地模糊本发明的方面。

下面的详细描述的一些部分从针对计算机、处理器、控制器、装置和/或存储器内的数据流、信号或波形的过程、程序、逻辑模块、功能模块、处理、示意性符号和/或操作的其它符号性表述方面来呈现。这些描述和表述被数据处理领域的技术人员通常所使用,以向本领域其它技术人员有效地表达他们的工作的实质。通常来说,尽管不必要,但被操纵的量采取能够在计算机或数据处理系统中存储、传递、组合、比较以及以其它方式操纵的电气、磁性、光学或量子信号的形式。已经证实,主要出于常见用法的理由,有时便利地引用这些信号,作为比特、波、波形、流、值、元素、符号、字符、项、数字等。

具体实施方式可以涉及存储器装置,包括诸如sram和dram的易失性存储器,并且还包括诸如闪速存储器装置的非易失性存储器(nvm),和/或电阻式开关存储器(例如,导电桥接随机存取存储器[cbram]、电阻式ram[reram]等)。具体实施方式可以包括操作可以在一个或更多个电阻和/或电容状态之间写入(编程/擦除)的闪速存储器和/或电阻式开关存储器的结构和方法。在一个具体示例中,cbram存储部件可以被设置成,使得当跨该cbram存储部件的电极施加大于阈值电压的正向或反向偏压时,该cbram存储部件的电气特性(例如,电阻)可以改变。在任何情况下,某些实施方式适于任何类型的存储器装置,并且特别是诸如闪速存储器装置的nvm装置,并且在一些情况下可以包括电阻式开关存储器装置。

下面,参照图1,示出了根据本发明的实施方式的示例存储器装置和主机排布结构100。在这个示例中,多个cpu或主机102可以经由互连/总线106和支持串行接口的存储器控制器108(例如,spi主机控制器)与存储器装置104连接。在其它情况下,单一cpu/主机102可以直接与每一个存储器装置104连接。例如,每个cpu/主机102可以是任何合适的控制器(例如,cpu、mcu、通用处理器、gpu、dsp等),并且存储器装置104可以是任何类型的存储器装置(例如,sram、dram、psram、eeprom、闪存、cbram、磁性ram、reram等)。存储器装置104由此可以按多种存储器技术(如非易失性类型)来实现。在某些情况下,存储器装置104可以是可按更传统的非易失性存储器或者按cbram/reram电阻式切换存储器实现的串行闪速存储器。

可以包括诸如串行外围接口(spi)中的各种接口信号以在cpu102与存储器装置104之间通信。例如,串行时钟(sck或sclk)可以向装置104提供时钟,并且可以用于控制去往该装置的数据流。命令、地址以及输入数据可由存储器装置104锁存在sck的上升沿上(例如,经由i/o引脚),而输出数据可以根据sck或数据选通(strobe)(ds)被时钟输出存储器装置104(例如,经由i/o引脚)。可以利用芯片选择(cs)(低电平有效)来选择存储器装置104(如从共享公共总线或电路板的多个这种存储器装置中选择),或者不然就作为接入该装置的方式。当芯片选择信号被解除断言(de-asserted)(例如,处于高电平)时,存储器装置104可以被取消选择,并且被置于待机模式。激活芯片选择信号(例如,经由cs上的高到低转变)可以被用于开始一操作,并且使芯片选择信号返回至高态可以被用于终止一操作。对于内部自计时操作(例如,编程或擦除周期)来说,如果在操作期间芯片选择被解除断言,则存储器装置104可以在特定的正在进行的操作完成之前不进入待机模式。

在该示例接口中,可以经由i/o信号向存储器装置104提供数据(例如,用于写入操作、其它命令等)和从存储器装置104提供数据(例如,用于读取操作、验证操作等)。例如,i/o上的输入数据可由存储器装置104在sck的边沿上锁存,并且如果该装置被取消选择(例如,当芯片选择信号被解除断言时),则这种输入数据可以被忽略。数据也可以经由i/o信号从存储器装置104输出。例如,为了计时一致性,可以在ds或sck的边沿上时钟输出从存储器装置104输出的数据,并且当装置被取消选择时(例如,当芯片选择信号被解除断言时),输出信号可以处于高阻抗状态。

在这个示例中,多个cpu核心102(例如,102-0、102-1、…、102-n)可以通过串行接口与存储器装置104连接。存储器请求可以按交错方式发送,使得cpu/主机102中的一个每次具有对串行接口的控制。如下将更详细讨论的,在执行可能改变顺序执行的分支、跳转、中断或其它指令的情况下,或者在来自多个cpu核心的交错的存储器请求的情况下,存储器请求的存储器装置104的地址可能变得非顺序的。例如,一个读取请求可以从cpu102-0发送至存储器装置104,并且可以从cpu102-1向存储器装置104发送非顺序或中断的存储器请求。与时间上非顺序相反,在此使用的“非顺序”可以指非顺序地址。

在一个实施方式中,一种存储器装置可以包括:(i)存储器阵列,其具有被设置为多个数据行的多个存储器单元,其中,每个数据行都包括预定数量字节的数据;(ii)接口,其被设置成接收第一读取命令,该第一读取命令从起始字节的地址起按连续寻址次序请求多个字节的数据;(iii)高速缓存存储器,其具有第一缓冲器和第二缓冲器,并且被设置成存储多个数据行;(iv)该第一缓冲器被设置成存储来自高速缓存存储器或者存储器阵列的所述多个数据行中的第一数据行,其中,第一数据行包括所述起始字节;(v)该第二缓冲器被设置成存储来自高速缓存存储器或存储器阵列的所述多个数据行中的第二数据行,其中,第二数据行相对于第一数据行连续寻址;(vi)输出电路,其被设置成从第一缓冲器读取数据,并且被设置成从第一数据行的起始字节到第一数据行的最高寻址字节顺序地输出每一个字节;以及(vii)该输出电路被设置成从第二缓冲器读取数据,并且被设置成从第二数据行的最低寻址字节起顺序输出每一个字节,直到所请求的多个字节的数据已输出为止,以便执行第一读取命令,其中,第一缓冲器和第二缓冲器的内容被保持在高速缓存存储器中。

下面,参照图2,示出了根据本发明的实施方式的示例存储器装置104结构的示意性框图。例如,存储器装置104可以包括:存储器阵列202、缓冲器204(例如,sram或其它快速存取存储器)以及i/o接口206。在一些排布结构中,可以设置超过一个缓冲器204,如用于输入路径的缓冲器和用于输出路径的另一缓冲器。另选或另外地,可以设置多个缓冲器,以供多层缓冲。例如,存储器装置104可以被设置为数据闪存和/或串行闪存装置。存储器阵列202可以被组织为任何合适数量的页面的数据。例如,每一个页面都可以包括256或264个字节的数据。类似地,缓冲器204可以存储指示一页面的数据。i/o接口206可提供存储器阵列202、缓冲器204及串行数据输入(si)和输出(so)之间的连接。例如,i/o接口206可以是spi或其它串行类型接口的一部分,并且还可以支持许多spi接口模式(例如,单spi、qpi及八进制模式)。

数据缓冲器/高速缓存210可以包括一个或更多个缓冲器204以及高速缓存存储器208。在一些排布结构中,“高速缓存”可以包括:缓冲器204以及附加缓冲器,如下将更详细讨论的(例如,参见图5)。在一个示例中,缓冲器204可以存储可通过/o接口206读取的数据,以经由串行输出从存储器装置输出,而高速缓存存储器208(例如,sram或其它快速存取存储器)或缓冲器204中的一个或更多个可以存储可易于缩短即将到来(例如,非顺序或中断)的读取请求的读取延迟的数据。在某些情况下,高速缓存存储器208可以在当前读取操作的完成或中断(或任何类型的终止)时接收缓冲器204的内容,或者可以将指定内容保持在缓冲器204中的一个或更多个中,并且可以从高速缓存存储器208读取这些内容以支持新的读取请求。因为可以由高速缓存存储器210(例如,包括缓冲器204)而不是存储器阵列202来服务新的读取请求,所以可以缩短与其关联的读取延迟。

下面,参照图3,示出根据本发明的实施方式的示例存储器装置的框图。存储器装置104可以包括接口控制和逻辑206,接口控制和逻辑206可以管理接口(例如,spi接口),并且将命令和地址信息解码。控制和保护逻辑302可以包括用于读取和写入存储器阵列的控制电路,包括用于字节读取和组寻址/排序的地址映射和控制,下面将更详细地讨论。例如,控制和保护逻辑302可以包括命令解码器、用于命令执行参数(例如,读取参数、编程/擦除参数等)的寄存器以及用于命令执行的控制器。

i/o缓冲器和锁存器304可以控制来自接口控制和逻辑206的数据输入以及对接口控制和逻辑206的数据输出。例如,可以经由i/o缓冲器和锁存器304来容纳从存储器阵列202读取的数据的基于芯片选择的控制和基于时钟的控制。即,如本文所述,可以通过在突发读取和顺序提取操作期间切换sck,来控制i/o缓冲器和锁存器304中的寄存器/锁存器。sram数据缓冲器/高速缓存210可以在存储器阵列202与i/o缓冲器和锁存器304之间缓冲/存储数据。地址锁存器块306可以经由接口控制逻辑208接收地址信息,并且可以将锁存地址提供给用于行地址的x解码器308,提供给用于列地址的y解码器310,并且提供给sram数据缓冲器/高速缓存210。

从地址锁存器306提供给sram数据缓冲器/高速缓存210的地址可以被用于从存储器高速缓存208搜索所请求数据的匹配/命中或未命中。由此,如果经由地址匹配在缓冲器/高速缓存210中发现所请求的数据,则与从存储器阵列202读取数据相反,所请求的数据可以直接提供给i/o缓冲器和锁存器304以直接输出。可以经由地址锁存块306和/或控制和保护逻辑302执行地址的递增。y解码器310可以向y选通312提供列地址,y选通318可以包括传输门(passgate)等,以复用去往/来自存储器阵列202的i/o线。如上所讨论的,存储器阵列202可以包括易失性存储器单元或非易失性存储器单元(例如,cbram、reram、闪存等)的阵列。

下面,参照图4,示出了根据本发明的实施方式的示例存储器阵列和用于读取数据的缓冲器排布结构的框图。例如,存储器装置104可以包括:存储器阵列202(例如,闪速存储器阵列)、缓冲器204-0和204-1以及高速缓存存储器208(可以按sram或任何其它相对快速的存取存储器实现)。在一些排布结构中,可以提供仅一个或者超过两个缓冲器204,如用于多层缓冲和更深流水线的多个缓冲器。存储器装置104可以被设置为数据闪存和/或串行闪存装置,并且存储器阵列202可以被组织为数据的任何合适数量或布置的页面。而且,高速缓存存储器208可以至少存储与缓冲器204相同量的数据,并且在一些情况下可以是缓冲器204的数据的很多倍(例如,4倍、8倍、16倍等)。在一个实现中,通过如同多个缓冲器204是高速缓存存储器中的多个行那样来维持所述多个缓冲器,所述多个缓冲器可以有效地形成高速缓存存储器,并因此可以不需要分离的高速缓存208。在任何情况下,作为读取操作的一部分,来自存储器阵列202的读取请求的数据可以被复制到一个或更多个缓冲器204中。输出电路206可以接收时钟信号,并且可以执行各种逻辑、复用以及驱动功能,以便驱动i/o引脚(例如,4个、8个或任何其它数量的引脚)和可选的数据选通引脚(ds)。

如在此使用的,“数据行”可以是一组数据字节,其可以包括用于原地执行的代码和/或以其它方式用于代码执行的数据,或任何其它类型的存储数据。数据行可以是可以在一个存储器读取周期中从存储器阵列读取的一组连续寻址的数据字节,并且其可以通过一时钟或数据选通的多个输出周期(例如,16个周期,或8个周期的双倍数据速率输出)从存储器装置输出。例如,数据行中的存储单元可以共享公共字线和所选择的读出放大器组。作为一个具体示例,数据行可以等同于可由主机请求填充的高速缓存行,或等同于数据页。而且,例如,一数据行可以是顺序/连续寻址的16字节的数据。而且,数据行可以表示边界,使得当指定数据行中的一个字节被请求作为读取操作的一部分时,可以利用针对下一个顺序寻址的数据行的随后存储器阵列读取,以便取出从请求的字节开始的、一个完整数据行(例如,16个连续字节)的数据。而且,在某些情况下,数据行除了数据的字节量以外还可以包括额外的比特。

因此,在许多情况下,针对存储器阵列202的两次读取可以在(例如,在预提取中)经由输出电路206输出数据之前或与之并行地发生。例如,可以从存储器阵列202读取数据行1000(例如,16字节=128b),提供给缓冲器204-0,并经由输出电路206输出。接着,可以读取数据行1010,并提供给缓冲器204-1以经由输出电路206输出。如在此标记的,该数据行通过其示例性的十六进制的起始字节对齐的地址。因此,对于16字节的数据行大小,“1000”可以是对应数据行的最低寻址字节的十六进制地址(即,对应于指定数据行的最低地址的字节),而“1010”可以是下一顺序寻址的数据行的最低寻址字节的十六进制地址。

可以利用缓冲(例如,经由缓冲器204和高速缓存存储器208)来帮助最小化存储器阵列读取延迟,并且可以允许每八个时钟周期从存储器装置输出128b的块(例如,数据行大小)。例如,缓冲器204-0和204-1中的每一个都可以存储至少128b的数据。在标准spi中,可能没有办法向主机102通知缓冲器204可能具有不足于满足于当前读取请求(例如,从起始地址到连续寻址字节的总共16个字节)的数据(例如,小于128b的数据),结果可能增加延迟。由此,2个实体或数据行可以按顺序和乒乓方式提前读取(预提取),如将数据行1000提供给缓冲器204-0、之后将数据行1010提供给缓冲器204-1。这可以确保足够的缓冲,以便满足对存储器装置的时钟输出要求。这样,读取请求可以由主机102发出(例如,每4个或8个时钟(例如,sck)周期),并且流出数据(例如,一旦缓冲器204充分充满)可以利用预提取而有效地是连续的,如每4或8个周期一128b的数据块,取决于i/o和数据行宽度/大小配置。

在一示例操作中,如果由存储器装置接收到具有128b实体(例如,数据行)的特定起始地址字节的读取请求,则这种数据可以从存储器装置输出,并且可以从主机发送请求或暗示,以便读出下一个顺序/连续寻址的数据行。如果该读取请求包括朝向指定数据行的末端的起始地址,则可能存在可以从该数据行顺序地(例如,连续寻址的字节)读取的不足的数据,如下将更详细讨论的。例如,其中仅单个实体或数据行需要读取以满足读取请求的这样一种情况是指定数据行中的第一个字节(即,最低地址处的数据字节)是起始地址。对于16字节的数据行大小,这种特定情况可能具有1/16的发生概率。

然而,读取延迟瓶颈可能由于利用从存储器阵列202背对背读取的这一过程而发生。这种瓶颈可以是由于起始字节地址可以是任何字节(字节对齐寻址)的要求所致。为了适应所有寻址情况(包括极端情况,即,感测到的n比特(例如,数据行)的最后字节(即,处于最高地址的数据字节)被请求作为起始字节),然后可以读取下一个n比特(例如,下一个连续寻址的数据行)的第一字节,针对每个读取请求都必须进行两次存储器阵列读取。在另一方法中,可以利用一个或更多个模式比特,以便改变成字、双字甚或行对齐寻址,这可以被使用以便增加背对背读取之间的时间,并因此时段读取操作的明显的延迟。

在存储器装置用作微处理器的或主机的存储器分级体系的一部分的情况下,可能出现相对较高的读取延迟,并且这种延迟可能对cpu/主机102的性能有很大的影响。具体来说,为了缩短单个cpu系统中的实际延迟而可以采用的方法在多核系统中可能不太可行(例如,参见图1)。这是因为在这种多核系统中,来自各种cpu的存储器请求可能是交错的,这可能因存储器请求的所产生的可能的非顺序和/或中断性质而导致读取延迟的增加。

如上所述,在许多情况下,可以通过预提取连续的存储器行(例如,到缓冲器204-0和204-1)并且用最小延迟将这些数据行提供给处理器来缩短存储器延迟。当来自cpu的存储器请求针对连续或顺序的存储器行时,该方法可以很好地工作,这是在单个cpu/主机上典型执行程序方面的常见情况。然而,存储器请求可能在许多情况下变为非顺序的,包括在执行分支、跳转和/或中断期间或者改变顺序执行的任何其它指令,以及来自多个cpu核心的交错的存储器请求(例如,参见图1的排布结构)。在特定实施方式中,通过与缓冲器204一起采用高速缓存存储器208,或通过简单地将存储器行保持在缓冲器204中用于随后的读取操作,可以在每个这种情况下缩短读取延迟。

在示例存储器装置中,当从该装置发出当前存储器数据行时,可以发生接下来的连续存储器行的预提取。然而,在一些情况下,当当前命令终止时,可以清除保持任何接下来的存储器数据行的缓冲器204。即使主机可以在后续命令中从这些存储器数据行请求数据,这种清除也可能发生。例如,在来自多个核心的命令被交错的情况下和/或当单个核心从函数调用返回时,这种情况可能频繁发生。然而,在特定实施方式中,高速缓存存储器208,或者缓冲器204中的一个或更多个可以在当前读取命令终止时存储缓冲器204的内容的副本,使得对于这种后续或随后的命令而言,可以从高速缓存存储器获得这种数据。在其它实施方式中,在当前读取命令终止时,这些内容可以按高速缓存相似的方式简单地存储在缓冲器204中的另一个缓冲器中,使得对于这种后续或随后的命令而言,可以从缓冲器204获得该数据。

下面,参照图5,示出了根据本发明的实施方式的存储器装置中的示例缓冲器和高速缓存排布结构的框图500。在这个示例中,缓冲器/高速缓存存储器210可以包括八个缓冲器204(例如,204-0、204-1、…、204-7)。这样,缓冲器204可以被实现为缓冲器204中的一个或更多个,以有效地形成高速缓存存储器结构。另外,地址寄存器可以被包括在缓冲器204中的每一个内,或者以其它方式与缓冲器204中的每一个相关联,以便存储来自存储器阵列202的、对应于指定缓冲器的内容的地址。例如,这样的地址寄存器可以存储存储器阵列202的、被复制到指定缓冲器中的数据的地址,作为读取操作的一部分。而且,有效比特也可以与每个地址寄存器相关联,以便指示存储在其中的特定地址是有效的。高速缓存存储器210还可以包括地址解码器504,地址解码器504可以从地址锁存器306接收信号,并且可以提供3比特解码的值来寻址八个缓冲器204中的一个。读/写控制506可以从控制和保护逻辑302接收信号(例如,读取控制信号、写入控制信号等),并且可以向数据锁存器508提供控制信号。数据锁存器508可以从控制和保护逻辑302接收信号(例如,读取数据选通、数据输出使能、加载数据等),并且可以向/从缓冲器/高速缓存存储器210提供或接收数据。而且,虽然在图5的特定例中仅示出了8个寄存器/缓冲器,但在特定实施方式中可以容纳任何合适数量的寄存器。

在某些实施方式中,可以保持被预提取到缓冲器204中的一个或更多个中的数据以供将来在缓冲器/高速缓存结构210中使用。例如,在由存储器装置接收到的各个读取命令结束(通过中断或者完成)时,下一个存储器行的数据可以传递至这个高速缓存结构,如与它们的地址一起。针对新的读取命令,如果请求地址(例如,经由地址锁存器306)等于存储在该高速缓存中的存储器行中的一个的地址,则高速缓存结构210可以提供数据(例如,经由缓冲器204)。另外,当新一行到达高速缓存结构210时,可以利用替换算法(例如,先入先出[fifo]方案)来决定哪个高速缓存行(例如,哪个缓冲器204)应该被替换,作为“保持”高速缓存结构210中的数据缓冲器的内容的一部分。

下面,参照图6,示出了根据本发明的实施方式的第一示例读取事务的波形图。在示例600中,起始地址“x”可以等于1000,并因此可以是数据行1000的第一字节(例如,最低寻址字节)。来自存储器阵列202的读取被示为对数据行1000的读取602,其可以被提供给缓冲器204-0,随后是对数据行1010的读取604,其可以被提供给缓冲器204-1。因此,缓冲器204可以被填充606,并且延迟608可以表示从缓冲器204经由输出电路206到输出的读取时间。例如,按双倍数据速率通过8个时钟周期输出的数据610可以表示数据行1000的完整数据,并且数据612可以表示数据行1010的顺序/连续寻址和较低有效字节部分,以便填充该读取请求。因此,在这个示例中,8个i/o线可以输出16字节数据的完整数据行,并且可以经由在614开始的ds而进行选通。另外,对存储器阵列202的其它读取可以包括对数据行1020的读取616和对数据行1030的读取618。

根据读取操作何时完成或要不然由主机终止,缓冲器204的内容可以通过被复制到分离的高速缓存存储器中,或者通过简单地保持在缓冲器204中的一个中来保存。例如,如果读取操作在周期21与26之间的周期的结束时完成,则可以将一个或两个数据行(例如,行1000和1010)保存在高速缓存结构210中(例如,保存在缓冲器204中)。作为另一示例,如果读取操作在周期27结束时完成,则可以将三个数据行(例如,行1000、1010及1020)保存在高速缓存结构210中(例如,保存在缓冲器204中)。作为又一示例,如果读取操作在周期28与34之间的周期的结束时完成,则可以将三个数据行(例如,行1010、1020及1030)保存在高速缓存存储器208中。在某些实施方式中,在当前读取操作终止时,可以将预定数量的数据行(如包含在缓冲器204的全部内容中的那些)保持在缓冲器/高速缓存结构210中。如在此使用的,被“保持在”高速缓存存储器或结构210中的内容可以包括缓冲器204的重新分配,如通过基于fifo的高速缓存行管理。

下面,参照图7,示出了根据本发明的实施方式的第二示例读取事务的波形图。虽然上述示例示出了数据行(例如,1000)的最低寻址字节的起始字节地址,但示例650示出了作为指定数据行的次最后字节(例如,最高寻址字节)的起始字节地址。在这个示例中,数据652可以表示对应于包含在数据行1000内的起始地址(例如,x=100e)的数据。而且,数据654可以表示来自下一个顺序/连续寻址的数据行1010的数据,并且数据656可以表示来自后续/顺序寻址的数据行1020的数据。另外,对存储器阵列202的其它读取可以包括对数据行1020的读取616和对数据行1030的读取618。应注意,在614处激活用于时钟输出数据的数据选通。

因此,在这些示例中,针对指定数据行的多种起始地址(包括图6的最低字节地址(x=1000),以及图7的第二高字节地址(x=100e)),发生相同的读取延迟。根据读取操作何时完成,缓冲器204的内容可以通过被复制到分离的高速缓存存储器中,或者通过简单地保持在缓冲器204中的一个中来保存。例如,如果读取操作在周期22与26之间的周期的结束时完成,则可以将一个数据行(例如,行1010)保存在高速缓存结构210中(例如,保存在缓冲器204中)。作为另一示例,如果读取操作在周期27与28之间完成,则可以将两个数据行(例如,行1010和1020)保存在高速缓存结构210中(例如,保存在缓冲器204中)。作为又一示例,如果读取操作在周期29与34之间的周期的结束时完成,则可以将两个数据行(例如,行1020和1030)保存在高速缓存存储器208中。在某些实施方式中,在当前读取操作终止时,可以将预定数量(例如,2、3等)的数据行(如包含在缓冲器204的全部内容中的那些)保持在缓冲器/高速缓存结构210中。

新的读取请求的数据可以从存储器阵列和/或从高速缓存提供。如上所述,数据在从存储器装置输出之前基本上可以穿过缓冲器204。而且,可以减少在高速缓冲存储器中“命中”的命令的虚设的周期的数量。而且,向主机通知数据快得多地准备就绪的一种方法可以是使用ds信号,这也可以充当数据可用性的指示。这样,主机不必计算虚设周期,而相反可以等待ds切换为第一个数据项准备就绪的指示。在任何情况下,ds可以取决于不只是时钟输出数据,而且还依靠确定来自存储器装置的数据准备就绪。因此,作为其状态机功能的一部分,主机还可以利用ds作为流控制信号,以通过确定数据就绪状态来控制拉出(pull)数据。例如,主机中的状态机可以计数虚设周期等,以确定数据是否可用于从缓冲器读出,并且在可用时从存储器装置开始收集数据。因此,在某些实施方式中,ds可以被用于时钟输出数据,并且向主机提供数据就绪指示符。

ds引脚的控制也可以用于支持向主机通知存储器可能需要暂停通过i/o线传送数据。当存储器因“内务处理”功能或任何其它理由而可能需要额外延迟时,可能需要这样做。在某些实施方式中,可以使用ds作为“背压(back-pressure)机制”或“流控制机制”来向主机通知何时需要更多时间,如可以通过虚设周期或其它预定义的等待状态来适应。例如,ds可以在等待从存储器阵列中提取数据时停止切换,可以在地址阶段完成时被驱动至恒定值,并且可以在第一数据准备好从存储器装置输出时开始切换。

在任何情况下,主机都可以利用ds(或sck)切换,以便时钟输出数据以在主机装置中接收。而且,在第一批数据之后可能不保持数据突发的情况下(例如,由于环绕提取(wrap-aroundfetching)),ds可以被冻结,直到存储器装置从环绕操作“恢复”为止,然后可以再次流传送数据。在环绕提取中,“连续寻址”字节的数据可以从指定数据行内的最高寻址字节环绕至最低寻址字节。应注意,在使得针对指定存储器阵列读取而激活的读出放大器的数量与总线吞吐量相匹配的存储器装置上,这种“冻结”可能仅发生一次(例如,在发送第一批数据之后),并且这种冻结的概率在顺序读取情况下相对较低。然而,这种概率在支持环绕功能的读取中可能较高,并且取决于高速缓存行大小。而且,仅作为一个示例,如果在存储器实现中使用dram,则为了处理刷新操作,可能需要暂停。

而且,在特定实施方式中,可变的ds功能/定时可以考虑到存储器装置在读取错误的情况下重新读取数据,这可能潜在地增加最大工作频度。这与以基本上保证没有这种数据错误的频度水平来操作例如闪速存储器装置相反。取而代之,频度可以被允许变得较高,只要来自这种频度增加的增益高于在处理任何重新读取时可能失去的时间即可。为了检测和纠正读取错误或其它错误(如由于有缺陷单元或辐射影响),可以采用重读功能和纠错码(ecc)。用于增加读取速度的另选方案是减小读取电流,如对于不以最大速度运行的装置来说。例如,这可以通过利用较低的读取电流或者通过在较低的时钟速度利用较短的读取脉冲来完成。在这种情况下,可以利用可变ds来减小在这种相对低的速度时的读取的总体功耗。

在一个实施方式中,一种控制具有存储器阵列和高速缓存存储器的存储器装置的方法,该存储器阵列具有被设置为多个数据行的多个存储器单元,并且该高速缓存存储器具有第一缓冲器和第二缓冲器,并且被设置成存储多个数据行,其中,每个数据行都包括预定数量字节的数据,该方法可以包括:(i)通过接口接收第一读取命令,该第一读取命令从起始字节的地址起按连续寻址顺序请求多个字节的数据;(ii)在第一缓冲器中,存储来自高速缓存存储器或存储器阵列的所述多个数据行中的第一数据行,其中,该第一数据行包括所述起始字节;(iii)在第二缓冲器中,存储来自高速缓存存储器或者存储器阵列的所述多个数据行中的第二数据行,其中,第二数据行相对于第一数据行连续寻址;(iv)由输出电路从第一缓冲器读取数据,并且从第一数据行的起始字节到最高寻址字节顺序地输出每一个字节;(v)由输出电路从第二缓冲器读取数据,并且从第二数据行的最低寻址字节起顺序输出每一个字节,直到请求的所述多个字节的数据已经输出为止,以便执行第一读取命令;以及(iv)在高速缓冲存储器中保持第一缓冲器的内容和第二缓冲器的内容。

下面,参照图8,示出了根据本发明的实施方式的从存储器阵列读取多个字节的数据的示例方法的流程图800。在802,可以接收到从存储器阵列(例如,202)读取具有字节x的起始地址的多个字节(例如,等于数据行大小、小于或大于数据行大小)的读取请求。在804,包含字节x的第一数据行可以从高速缓存存储器(例如,210)或存储器阵列(例如,202)读取,并且可以存储在缓冲器(例如,204-0)中。例如,缓冲器204可以被包括在高速缓存存储器结构中。在806,与第一数据行连续(例如,相邻、连续寻址)的第二数据行可以从高速缓存存储器或存储器阵列读取,并存储在另一缓冲器(例如,204-1)中。如上所述,数据是从高速缓冲存储器还是从存储器阵列取出可以基于起始地址与存储在缓冲器/高速缓存结构210中或与缓冲器/高速缓存结构210相关联的地址的比较的匹配或失配。

在808,如果字节x是第一数据行的第一个字节或最低寻址字节,则仅需要利用第一数据缓冲器(例如,204-0)以满足该读取请求。在这种情况下,在810,各个字节可以经由第一缓冲器从该第一数据行顺序地输出,以满足该读取请求。这种情况的一个例子如图6所示。还如图所示,数据选通可以与从存储器装置输出的数据一致地触发,以便向主机通知所请求的数据准备就绪,并提供具有足以在主机中接收/时钟输入(clock)该数据的定时的时钟。

在808,如果字节x不是第一数据行的第一最低寻址字节,则可以跨数据行边界拉出完成该读取请求所需的数据,并因此需要从高速缓存存储器208或存储器阵列202读取两个数据行。在这种情况下,在812,可以经由第一缓冲器从第一数据行按顺序次序输出字节x和剩余字节(例如,参见图7的652)。在814,字节可以经由第二缓冲器(例如,204-1)从第二数据行顺序输出,直到从存储器装置输出了多个字节(例如,数据行大小)为止,以便满足该读取请求(例如,参见图7的654)。另外,在816,第一缓冲器和第二缓冲器的内容可以被保持在高速缓存结构中,诸如被复制到高速缓存存储器中(例如,208),或者存储在一个或更多个缓冲器204中,缓冲器204可以被设置成形成高速缓存结构(例如,210)。这样,对于可以从高速缓存结构210读取所请求的数据的随后读取操作,可以缩短读取延迟。

特定实施方式还可以支持针对其它字节边界(例如,2、4、8等)操作的选项,这某些情况下可以允许接口性能增加。而且,为了适应较高的接口频率,特定实施方式可以支持差分输入(例如,sck)和输出(例如,ds)时钟,如利用外部基准电压。另外或另选的是,同步数据传递可以涉及有关指定多个虚设周期的选项,这可以限定数据可返回至主机的最早时间。然而,如果控制器(例如,主机/cpu102)能够立即处理数据,则该值可以保持在最小设置,并且存储器装置可以尽可能快地输出数据。

在接收数据时,主机控制器可以对传入的ds脉冲进行计数,继续计时,直到它接收到如所希望一样多的ds时钟数为止,并且可能不再依赖于对主机所产生的sck时钟进行计数。例如,可以在寄存器中设置最小数量的等待状态,如用于指定最小虚设周期的模式字节。主机还可以将传出的sck停止多个周期,以便给予自身准备到达的数据的时间。在一种情况下,如果按相对较低频率操作,则最小虚设周期数可以是0。在变量设置中,在某些情况下,读取命令可以具有直到某个频率的0个等待状态以及之后的一个或更多个虚设周期。

具体实施方式还可以支持例如串行psram应用,由此数据行大小等于缓冲器大小(例如,1024字节,或其倍数)。例如,针对存储器阵列202的读取操作可以将1024字节或以上的字节带入缓冲器204中。在这种情况下,典型的单个spi突发可以经由i/o接口206将16或32字节的数据传递至总线,并且存储在指定缓冲器204中的剩余数据可以被有效地高速缓存以供以后使用。由此,指定数据缓冲器204的一部分可以为随后的读取操作提供类似高速缓存的功能。

虽然上述示例包括某些存储器装置的电路、可操作和结构性实现,但本领域技术人员应当认识到,根据实施方式可以使用其它技术和/或排布结构。而且,本领域技术人员应当认识到,根据实施方式还可以使用其它装置电路排布结构、架构、部件等。另外,在某些实施方式中也可以采用其它接口(例如,并行接口)、信号等。

对本发明具体实施方式的前述描述已经出于例示和描述的目的而呈现。它们不是旨在排它或将本发明限制成所公开的精确形式,而是鉴于上述教导,可以显见地进行许多修改和变化。选择并描述这些实施方式,以便最佳地说明本发明的原理及其实践应用,由此使得本领域其它技术人员能够最佳地利用本发明和具有如适于预期特定用途的各种修改例的各种实施方式。本发明的范围旨在通过所附于此的权利要求书及其等同物来限定。

相关申请

本申请要求2016年4月21日提交的美国临时申请no.62/325813的权益,并且其全部内容通过引用并入于此。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1