CN115910162A - Spi闪存存储器装置中的延迟减少 - Google Patents
Spi闪存存储器装置中的延迟减少 Download PDFInfo
- Publication number
- CN115910162A CN115910162A CN202111183208.8A CN202111183208A CN115910162A CN 115910162 A CN115910162 A CN 115910162A CN 202111183208 A CN202111183208 A CN 202111183208A CN 115910162 A CN115910162 A CN 115910162A
- Authority
- CN
- China
- Prior art keywords
- address
- aligned
- read
- memory device
- read request
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- 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/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- 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/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Read Only Memory (AREA)
Abstract
本发明涉及SPI闪存存储器装置中的延迟减少。一种方法可以包括以下步骤:在存储器装置中从主机装置接收读请求,该主机装置通过接口联接至存储器装置;对从接口接收到的读请求的地址进行解码;对读请求的命令进行解码,以确定读请求是否针对对齐地址操作;当读请求被确定为针对对齐地址操作时,不管所解码的地址的实际对齐如何,保持所解码的地址而不进行修改;以及通过使用所解码的地址,在存储器装置上按照对齐地址操作执行读请求。
Description
技术领域
本发明总体上涉及半导体器件领域。更具体地,本发明的实施方式涉及存储器装置,包括易失性存储器装置和非易失性存储器装置(诸如闪存存储器装置)两者。
背景技术
非易失性存储器(NVM)越来越多地出现在诸如固态硬盘驱动器、可移除数字图片卡、汽车电子设备、家用电器等的应用中。闪存存储器是当今使用的主要NVM技术。然而,闪存存储器具有限制,诸如相对高的功率以及相对低的操作速度。微处理器性能对存储器延迟非常敏感。许多非易失性存储器装置具有与微处理器相比相对慢的访问时间(accesstime)或延迟。另外,微处理器/主机与存储器之间的各种通信协议的许多实现方式(诸如串行外围接口(SPI))可以增加比存储器阵列本身所需的甚至更多的延迟。
发明内容
本发明的一个方面提供了一种方法,所述方法包括以下步骤:a)在存储器装置中从主机装置接收读请求,所述主机装置通过接口联接至所述存储器装置;b)对从所述接口接收到的所述读请求的地址进行解码;c)对所述读请求的命令进行解码,以确定所述读请求是否针对对齐地址操作;d)当所述读请求被确定为针对所述对齐地址操作时,不管所解码的地址的实际对齐如何,保持所解码的地址而不进行修改;以及e)通过使用所解码的地址,在所述存储器装置上按照所述对齐地址操作执行所述读请求。
本发明的另一方面提供了一种存储器装置,所述存储器装置被配置为:a)通过接口从主机装置接收读请求;b)对所述读请求的地址进行解码;c)对所述读请求的命令进行解码,以确定所述读请求是否针对对齐地址操作;d)当所述读请求被确定为针对所述对齐地址操作时,不管所解码的地址的实际对齐如何,保持所解码的地址而不进行修改;以及e)通过使用所解码的地址,在所述存储器装置上按照所述对齐地址操作执行所述读请求。
附图说明
图1是根据本发明实施方式的示例主机和存储器装置布置的示意性框图。
图2是根据本发明实施方式的示例存储器控制器系统的示意性框图。
图3是根据本发明实施方式的示例存储器装置的示意性框图。
图4是根据本发明实施方式的具有读请求修改控制的示例存储器装置的示意性框图。
图5是根据本发明实施方式的示例读访问的时序图。
图6是根据本发明实施方式的示例对齐地址读访问的时序图。
图7是根据本发明实施方式的示例未对齐地址读访问的时序图。
图8是根据本发明实施方式的示例DWA读访问的时序图。
图9是根据本发明实施方式的另一示例DWA读访问的时序图。
图10是根据本发明实施方式的用于字访问的示例DWA读访问的时序图。
图11是根据本发明实施方式的用于字节访问的示例DWA读访问的时序图。
图12是根据本发明实施方式的用于字访问的示例经修改的DWA读访问的时序图。
图13是根据本发明实施方式的用于字节访问的示例经修改的DWA读访问的时序图。
图14是根据本发明实施方式的用于双字访问的示例经修改的DWA读访问的时序图。
图15是根据本发明实施方式的对读请求进行控制的示例方法的流程图。
具体实施方式
现在将详细参考本发明的特定实施方式,其示例在附图中例示。虽然将结合优选实施方式描述本发明,但是将理解,所述优选实施方式并不旨在将本发明限制于这些实施方式。相反,本发明旨在覆盖可以包括在由所附权利要求限定的本发明的精神和范围内的另选例、修改例和等同例。此外,在本发明的以下详细描述中,阐述了许多具体细节,以便提供对本发明的透彻理解。然而,对于本领域技术人员显而易见的是,本发明可以在不具有这些具体细节的情况下实施。在其它情况下,没有详细描述公知的方法、过程、处理、部件、结构和电路,以免不必要地模糊本发明的各方面。
下面的详细描述的一些部分是从针对计算机、处理器、控制器、装置和/或存储器内的数据流、信号或波形的操作的处理、过程、逻辑块、功能块、进程、示意性符号和/或其它符号表示的方面呈现的。这些描述和表示通常被数据处理领域的技术人员用来有效地将其工作的实质传达给本领域的其他技术人员。通常,尽管不是必须的,但被操纵的量采取能够在计算机或数据处理系统中存储、传输、组合、比较和以其它方式操纵的电、磁、光或量子信号的形式。主要出于通用的原因,将这些信号称为比特、波、波形、流、值、元件、符号、字符、项、数字等有时被证明是方便的。
特定实施方式可以涉及存储器装置,该存储器装置包括易失性存储器,诸如SRAM和DRAM,并且包括非易失性存储器(NVM),诸如闪存存储器装置,和/或电阻性切换存储器(例如,导电桥接随机存取存储器[CBRAM]、电阻性RAM[ReRAM]等)。特定实施方式可以包括对可以在一个或更多个电阻和/或电容性状态之间写(编程/擦除)的闪存存储器和/或电阻性切换存储器进行操作的结构和方法。在一个特定示例中,CBRAM存储元件可以被配置为使得当跨CBRAM存储元件的电极施加大于阈值电压的正向或反向偏压时,CBRAM存储元件的电特性(例如,电阻)可以改变。在任何情况下,某些实施方式适合于任何类型的存储器装置,具体是NVM装置,诸如闪存存储器装置,并且在一些情况下可以包括电阻性切换存储器装置。
现在参考图1,图1示出了根据本发明实施方式的示例存储器装置和主机布置100。在该示例中,主机102可以经由串行接口与存储器装置104接口连接。例如,主机102可以是任何合适的控制器(例如,CPU、MCU、通用处理器、GPU、DSP等),并且存储器装置104可以是任何类型的存储器装置(例如,SRAM、DRAM、EEPROM、闪存、CBRAM、磁RAM、ReRAM等)。因此,存储器装置104可以按照各种存储器技术实现,诸如非易失性类型。在一些情况下,存储器装置104可以是串行闪存存储器,其可以按照更传统的非易失性存储器实现,或按照CBRAM/ReRAM电阻性切换存储器实现。
可以包括诸如串行外围接口(SPI)中的各种接口信号,以用于主机102与存储器装置104之间的通信。例如,串行时钟(SCK)可以向装置104提供时钟,并且可以用于控制到装置的数据流。存储器装置104可以在SCK的上升沿时锁存命令、地址和输入数据(例如,经由I/O引脚),而输出数据(例如,经由I/O引脚)可以通过SCK或数据选通脉冲(data strobe)(DS)从存储器装置104时钟输出。芯片选择(CS)(其可以是低电平有效的)可以用于诸如从共享共用总线或电路板的多个这样的存储器装置中选择存储器装置104,或以其它方式作为访问所述装置的方式。当芯片选择信号被解除断言(de-asserted)(例如,处于高电平)时,存储器装置104可以被解除选择,并且被置于待机模式。激活芯片选择信号(例如,经由CS上的高电平到低电平的转变)可以用于开始操作,并且将芯片选择信号返回至高电平状态可以用于终止操作。针对内部自定时操作(例如,编程或擦除周期),如果在操作期间解除断言芯片选择,那么存储器装置104可以不进入待机模式,直到特定进行操作完成为止。
在示例接口中,可以经由I/O信号将数据提供至存储器装置104(例如,针对写操作、其它命令等)以及从存储器装置104提供数据(例如,针对读操作、验证操作等)。例如,存储器装置104可以在串行时钟SCK的沿时锁存I/O上的输入数据,并且如果装置被解除选择(例如,当芯片选择信号被解除断言时),那么可以忽略这种输入数据。数据也可以经由I/O信号从存储器装置104输出。例如,可以在DS或SCK的沿时对从存储器装置104输出的数据进行时钟输出,以用于定时一致性,并且当装置被解除选择时(例如,当芯片选择信号被解除断言时),输出信号可以处于高阻抗状态。例如,输入数据可以在用于命令、地址或数据的SCK的一个沿(SDR/STR)或两个沿(DDR/DTR)或两者的组合时被记时。类似地,输出数据可以在用于数据的SCK或DS的一个沿(SDR/STR)或两个沿(DDR/DTR)时被计时。此外,输出数据可以但不要求使用与输入数据相同的时钟模式。此外,在一些装置/布置中,DS可以是可选信号。此外,虽然在图1的特定示例中示出了4个或8个I/O线路,但是在某些实施方式中,可以支持任何数量的I/O线路(例如,1个、2个、4个、8个、16个等)。
串行闪存装置通常可以包括两种类型的读命令:一种不具有寻址限制(例如,EBhSPI命令);另一种具有双字边界上对齐(DWA)的地址(例如,E7h SPI命令)。由于闪存存储器阵列的内部结构,所以DWA命令的读延迟可以短于不具有寻址限制的读命令的延迟。在特定实施方式中,对齐不必按照4字节或双字设置,而是基于特定存储器阵列配置可以是任何合适的可寻址数据部分(例如,2字节、4字节、8字节、16字节等)。影响CPU吞吐量和功耗的其它参数(诸如SPI命令之间的最小所需时间或命令之间的“间隙”)也可以取决于各个特定命令的类型和长度。
现在参考图2,图2示出了根据本发明实施方式的示例存储器控制器系统的示意性框图。在示例200中,微控制器单元(MCU)202可以包括主机装置102、CPU 204、缓存部206和总线主控器208。例如,MCU 202可以是片上系统(SoC),缓存部206可以包括SRAM,并且各个总线主控器208可以是能够控制SPI总线的任何装置或控制器IP。可以在主机102、缓存部206与总线主控器208之间接口连接的内部总线可以包括地址、数据和控制信令。例如,主机102与存储器装置104之间的接口可以是SPI接口。
特定实施方式通常可以应用于以就地执行(XiP)模式工作的系统。在该系统中,CPU(例如,通过可选的缓冲部存储器)和其它总线主控器可以生成针对SPI主机102的读请求,SPI主机然后可以将这些请求转译(translate)为发送至外部闪存存储器装置104的SPI命令。因为这些读操作可以用于处理指令缓存未命中,所以这种系统中的CPU吞吐量及功耗可能对来自闪存装置的读延迟及两个连续命令之间的最小可允许间隙特别敏感。因此,具有对齐地址(例如,DWA)的读命令可以获得改进的系统性能(例如,改进的CPU吞吐量)以及减少的功耗。
许多SoC中的SPI主机控制器可以被编程为响应于来自总线主控器208中的一者的读请求而生成特定SPI命令。在大多数这样的系统中,所使用的命令是EBh命令或不具有地址对齐限制的类似命令。这是由于主机102中的可以从各种SoC总线主控器208和CPU 204或相关联的缓存部206到达的对齐请求和未对齐请求的混合造成的。指令缓存未命中通常与双字边界对齐,并因此适用于DWA读操作和/或其间需要最小间隙的命令。然而,用户的软件可以将未对齐读注入到闪存存储器命令流中。此外,CPU可能无法向闪存存储器发送取决于所请求的地址的对齐的不同类型的读命令,或无法对用于各个所请求的读操作的SPI命令进行其它优化。另外,作为一种总线主控器208的直接存储器访问(DMA)引擎也可以生成去往闪存存储器装置的未对齐事务。
地址对齐是E7h DWA命令的特定属性,并且通常在闪存存储器装置上执行该命令期间将此考虑在内。沿着这些线路,不管在SPI总线上的命令内正发送的地址如何,闪存装置都可以清除地址的最低有效位(LSB)(例如,2个LSB),以确保返回的数据通过其地址而对齐。因此,即使对闪存装置的大多数读访问固有地是对齐的,也可以迫使该系统针对所有读访问使用较低效的读命令(例如,EBh命令),以适应未对齐的那些读访问。在特定实施方式中,E7h DWA命令的新操作模式可以使得能够使用该命令代替作为系统中的主读命令。该操作模式的实现可能仅需要添加到闪存存储器装置的少量额外门(gate)。另外,可以包括配置位(例如,来自状态寄存器),以确保向后兼容性,诸如通过在设置该配置位(例如,逻辑“1”)时启用新功能。在某些实施方式中,新操作模式可以与任何指定的读命令(例如,EBh命令)一起使用,以便充当基于配置位(例如,状态寄存器中的ALN状态位)的对齐读操作。
现在参考图3,图3示出了根据本发明实施方式的示例存储器装置的示意性框图。存储器装置104可以包括接口控制和逻辑318,其可以管理所述接口(例如,SPI接口)并从其解码命令及地址信息。控制和保护逻辑302可以包括用于对存储器阵列进行读和写的控制电路,包括用于字节访问和组寻址/排序的地址映射和控制。例如,控制和保护逻辑302可以包括命令解码器、用于命令执行参数(例如,读参数、编程/擦除参数等)的寄存器以及用于命令执行的控制器。
I/O缓冲部和锁存器304可以对来自接口控制和逻辑318的数据的输入以及到接口控制和逻辑318的数据的输出进行控制。例如,从存储器阵列316读的数据的基于芯片选择的控制和基于时钟的控制可以经由I/O缓冲部和锁存器304来适应。即,I/O缓冲部和锁存器304中的寄存器/锁存器可以通过在突发读和顺序读取(fetch)操作期间触发串行时钟SCK来控制,如本文所述。SRAM数据缓冲部314可以在存储器阵列316与I/O缓冲部和锁存器304之间缓冲/存储数据。地址锁存块306可以经由接口控制和逻辑318接收地址信息,并且可以向针对行地址的X-解码器308提供锁存地址,向针对列地址的Y-解码器310提供锁存地址。可以经由地址锁存块306和/或控制和保护逻辑302来执行地址的递增。Y-解码器310可以向Y-选通312提供列地址,Y-选通312可以包括传输门(pass gate)等,以复用去往/来自存储器阵列316的I/O线路。如上文所讨论的,存储器阵列316可以包括易失性存储器单元或非易失性存储器单元(例如,CBRAM、ReRAM、闪存等)的阵列。
在一些布置中,可以提供超过一个的缓冲部314(例如,SRAM或其它快速存取存储器),诸如用于输入路径的缓冲部和用于输出路径的另一缓冲部。另选地或另外地,可以提供多个缓冲部用于多层缓冲。例如,存储器装置104可以被配置为数据闪存装置和/或串行闪存装置。存储器阵列316可以被组织为任何合适数量的数据页面。例如,各个页面可以包括256或264字节的数据。类似地,缓冲部314可以存储至少一数据页面。I/O接口318可以提供存储器阵列316、缓冲部314与串行数据输入(SI)和输出(SO)之间的接口连接。例如,I/O接口318可以是SPI或其它串行类型的接口的一部分,并且还可以支持多种SPI接口模式(例如,单SPI、QPI、八进制、x16模式等)。
现在参考图4,图4示出了根据本发明实施方式的具有读请求修改控制的示例存储器装置的示意性框图。在示例400中,存储器装置104可以包括存储器阵列316、数据路径402(例如,图3的缓冲部314和I/O接口318)、控制器404、地址锁存器306和状态寄存器406。在一个特定示例中,可以通过使用来自状态寄存器406的配置位在经修改的DWA读命令内支持向后兼容性。例如,如果遇到DWA命令或其它指定的读命令(例如,EBh)并且配置位被清除(例如,逻辑“0”),那么与非门408和反相器410可以确保在访问存储器阵列316之前清除来自地址锁存器306的LSB。在该布置中,如果未遇到DWA或其它指定的读命令或如果设置了配置位(例如,逻辑“1”),那么到与非门408的选通输入可以是高电平,以便允许从SPI总线接收到的经锁存或经解码的地址在不针对存储器阵列316的读访问被修改的情况下通过。
如本文所使用的,如果原始地址与所述地址的修改之间的关系不同并且导致从不同存储器地址位置访问数据,那么地址被“修改”。例如,如果地址被简单地重新映射或重新编码,同时仍然保持原始地址与经重新映射/经重新编码的地址之间的相同的一对一关系(例如,在从虚拟地址到物理地址的转变中),则这将被认为是“没有修改”。这样,对地址位中的各个地址位执行“非”操作(例如,地址0b0101000变为0b1010111)也将被认为是“无修改”,而清除LSB或其它预定地址位被认为是地址修改。以此方式,当由CPU发送的地址被“修改”时,呈现给存储器阵列的地址不同于所述地址。
特定实施方式可以适合于任何类型的读操作,诸如任何SPI协议模式(例如,1-x-x、4-x-x、8-x-x、0-x-x、0-4-4等)。在该符号中,例如,第一数字位置、第二数字位置和第三数字位置可以分别表示供发送命令、地址和数据的数据线路的数量。在0-x-x或0-4-4模式下,可以暗含操作码,并因此可以不与每一SPI读事务一起明确地发送。由于操作码在该命令中是丢失的,因此在这种情况下,显式地包括操作码的EBh命令和E7h命令的交织可能变得耗时且低效。
以此方式,可以通过设计对齐的所有XiP读请求可以利用与其它标准读命令选项相比具有减少数量的虚设(dummy)周期的合适的读命令(例如,DWA读命令)或其它经修改的读命令(例如,EBh读命令)。结果,可以减少读延迟,以便改进CPU吞吐量。这可以改进整体系统性能,因为CPU可能必须等待较少的时间来服务于指令缓存未命中。这还可以有效地改进功耗,因为CPU可以在等待指令缓存未命中服务的次最佳状态下花费较少时间。
现在参考图5,图5示出了根据本发明实施方式的示例读访问的时序图。示例500示出了高性能SPI读命令,其是XiP模式(有时称为连续模式)下的事务,其中,读命令是隐式的并且其格式是0-4-4。各个字节在四个IO线路上占用两个SCK周期。在周期0和周期1中,可以接收最高有效地址字节A23-A16,在周期2和周期3中,可以接收地址字节A15-A8,并且在周期4和周期5中,可以接收地址字节A7-A0。因此,可以使用6个周期来经由4个引脚接收地址。在周期6和周期7中,可以接收模式字节M7-M0。因此,可以使用两个周期来经由4个引脚接收模式字节,以便指示装置应保持在XiP模式下。针对该示例读命令,虚设周期可以是周期8至周期11。因此,在该示例中,示出了四个周期用于在时钟11的下降沿处开始从闪存存储器输出数据之前的虚设周期,并且可以使用附加的16个周期来输出8字节缓存线路数据。
现在参考图6,图6示出了根据本发明实施方式的示例对齐地址读访问的时序图。示例600以更示意性的方式示出了类似的命令,并且增加了关于内部NVM阵列(例如,316)访问的信息。这里,所请求的地址是100h并且占用6个CLK周期,模式字节占用2个周期,并且在该示例中,存在在时钟13的上升沿处开始发出所请求的数据之前的另外4个虚设周期。示例600还示出了相对于读请求命令和在SPI总线上输出的数据的内部NVM存储器阵列读访问。第一读访问在4个周期中带来字节100至107h(总共64位),并且第二读访问也在4个周期中带来字节108至10Fh。在该示例中,8字节的数据可以经由八进制(x8 I/O)或双数据速率(DDR)四倍(x4 I/O)配置的SPI总线输出。在任何情况下,应注意,在开始在SPI总线上发送第一读数据之前,闪存装置等待直到第二读的数据几乎可用为止。这样做是为了确保即使在未对齐地址请求中,NVM也可以支持按照SPI协议的规范在各个时钟周期流出的流传输数据。还应注意,内部NVM阵列被设计成在每次访问中读固定数量的位,由此通常该位数量等于阵列内的针对读操作而激活的读出放大器的数量。所示的示例主要具有在存储器阵列的每次访问中读64位(8字节)的阵列。
现在参考图7,图7示出了根据本发明实施方式的示例未对齐地址读访问的时序图。示例700示出了当所请求的地址不是对齐地址时可能发生的情况。在该示例中,SPI命令请求字节107h。字节107h来自该序列中的第一内部读,但是随后的字节108h需要取自第二内部读。因为等待第二读几乎完成的NVM装置确保字节108h可以在字节107h之后立即发出(如SPI总线协议所要求的),由此不允许“打嗝式间断(hiccup)”。
现在参考图8,图8示出了根据本发明实施方式的示例DWA读访问的时序图。示例800示出了DWA命令(例如,E7h命令),其需要对齐地址(例如,2个LSB必须为0)。结果,在开始流传输出数据之前只需要执行第一读,因为可能不会遇到过早需要来自第二读的数据的情况。因此,可以减少主机需要等待数据(例如,经由虚设周期)的周期数量。在该示例中,虚设周期的数量可以从4个周期减少到仅1个周期。
注意,虽然E7h命令的规范要求地址被对齐,但是NVM可以通过调零或清除从接口接收到的地址的2个LSB来确保对齐,如上文所讨论的。图9、图10和图11分别示出了双字访问、字访问和字节访问,其中,在SPI总线上发送的地址是未对齐的,但是从NVM返回的数据是针对对齐地址的,其中,2个LSB由于该内部LSB清除功能而被清除。
现在参考图9,图9示出了根据本发明实施方式的另一示例DWA读访问的时序图。在示例900中,请求来自地址105h的数据。然而,因为地址的2个LSB被清除,所以来自地址104h的数据最初被提供为地址104h-107h上的双字的一部分。
现在参考图10,图10示出了根据本发明实施方式的用于字访问的示例DWA读访问的时序图。在示例1000中,请求由106h寻址的字数据。然而,因为地址的2个LSB被清除,所以代替地错误地提供了来自地址104h和105h的字数据。
现在参考图11,图11示出了根据本发明实施方式的用于字节访问的示例DWA读访问的时序图。在示例1100中,请求由103h寻址的字节数据。然而,因为地址的2个LSB被清除,所以代替地错误地提供了来自地址100h的字节数据。
在特定实施方式中,将一模式添加至DWA(E7h)和/或另一指定读命令(例如,EBh),其中,地址的LSB不被闪存存储器装置清除,并且在开始将数据发送回主机装置之前执行单个内部存储器阵列读访问。此外,该模式可以由状态寄存器(例如,406)中的配置位控制。当配置位被清除(例如,默认地)时,E7h或其它指定命令可以表现为支持向后兼容性,并且可以因此在内部操作的开始时清除LSB地址位0和1,如图9至图11所示。然而,当设置了配置位(例如,1)时,如图12和图13所示,装置可以使地址原样使用而无需修改,即使该地址是未对齐的。
现在参考图12,图12示出了根据本发明实施方式的用于字访问的示例经修改的DWA读访问的时序图。在示例1200中,由106h寻址的字数据被请求用于读操作。这里,因为地址的2个LSB未被清除并且允许完整的地址通过而不进行修改,所以提供来自地址106h和107h的字数据,其中仅一个虚设周期被包括在读延迟中。
现在参考图13,图13示出了根据本发明实施方式的用于字节访问的示例经修改的DWA读访问的时序图。在示例1300中,由103h寻址的字节数据被请求用于读操作。这里,因为地址的2个LSB没有被清除并且允许完整的地址通过而没有修改,所以提供来自地址103h的字节数据,其中仅一个虚设周期被包括在读延迟中。
现在参考图14,图14示出了根据本发明实施方式的用于双字访问的示例经修改的DWA读访问的时序图。在示例1400中,由107h寻址的双字数据被请求用于读操作。这里,因为地址的2个LSB没有被清除并且允许完整的地址通过而没有修改,所以提供来自地址107h的双字数据的第一字节,其中仅一个虚设周期被包括在读延迟中。然而,在该特定情况下,对应于地址108h、109h和10Ah的后续3个字节可能导致不正确地读数据,因为对应于这些地址的数据在时间上未就绪。因此,这表示如本文所讨论的经修改的DWA读命令的有限功能的情况。
现在参考图15,图15示出了根据本发明实施方式的对读请求进行控制的示例方法的流程图。在示例1500中,在1502,可以在存储器装置中从主机装置(例如,经由SPI接口)接收DWA读请求(或其它指定读命令)。在一些情况下,流程可以前进至1512,在存储器装置上按照经修改的DWA读命令或其它经修改的读命令执行读请求,从而在开始将数据发送回主机装置之前执行单个内部存储器阵列读访问,并且不在闪存存储器装置中清除LSB。在其它情况下,可以经由1504支持向后兼容性。在1506,可以从状态寄存器(例如,406)读配置位。如果配置位被清除(1508),则可以在1510清除地址的2个LSB(例如,使其为“0”),以便保持向后兼容性。否则,如果设置了配置位(1508),则可以在1512在存储器装置上按照经修改的读命令(例如,DWA读命令、EBh命令等)执行读请求,而不清除LSB或以其它方式修改所接收的地址。
在特定实施方式中,针对当地址的LSB等于0时发生的单个对齐字读(例如,参见图12)、单个字节读(例如,参见图13)和任何数量的对齐双字(当地址的两个LSB等于0时),找到了经修改的读命令(例如,DWA命令)的正确操作。在上述前两种情况下,可能不需要第二阵列读,诸如只要从阵列并行地读的位的数量是16或2的更高次幂。另外,在上述第三种情况下,对对齐双字的访问固有地满足未经修改的DWA命令的条件,由此两个LSB等于0,并因此可以正确地操作,即使经修改的命令不会在闪存存储器装置中清除这些LSB。
在任何情况下,在某些实施方式中对DWA命令的修改可以有效地与大多数SoC一起起作用。在这样的系统中,针对来自NVM的读命令,通常有3种类型的源:缓存部填充、数据读和DMA读操作。在大多数系统中,可以利用16字节或更长的突发来执行缓存部填充操作,所述16字节或更长的突发在它们的自然地址边界上对齐。大多数RISC CPU上的数据读操作针对单个数据项(例如,字节、字、双字),并且如果所请求的数据不是地址对齐的,那么可以将其分成两个访问。例如,在ARM架构中,对地址103h的双字读可以被CPU分成两个读访问,使得不跨越地址103h与104h之间的边界。在一些情况下,DMA访问可能需要可能在未对齐地址上开始并跨越对齐边界的长突发。为了克服这些限制,可以修改DMA编程,使得较长突发的开始地址是对齐的。在许多系统中,该要求是可行的,并因此可以利用经修改的DWA读(E7h)命令或经修改的EBh命令来代替用于读请求的标准读(EBh)命令。
即使闪存装置将使用快得多的阵列并因此具有较少数量的虚设周期,如果传统的四重读命令(EBh)占用X个周期,那么以仅对齐的地址为目标的E7h命令也可以占用Y个周期,其中Y小于X。这是因为在开始从存储器装置流传输出数据之前对齐指令不需要第二阵列读。此外,可以通过对主机装置进行编程以仅适应对齐地址读请求来避免图14所示的不良数据的可能错误条件。另外,DMA驱动器可以确保双字访问在大多数情况下是对齐的,并且传统EBh命令仍可以由存储器装置支持,以用于任何闪存读操作,从而地址对齐是不可行的。
这样,通过在每一个NVM读操作中节省2个或甚至3个周期的延迟,可以在速度和功耗方面改进系统性能。例如,在大量NVM访问用于指令缓存部填充操作的系统中,用于带来8字节缓存线路的经修改的DWA命令可能占用17个周期,而标准EBh命令可能占用20个周期。因此,受缓存线路未命中限制的程序可以运行得更快(例如,快约18%)。功率的节省可以取决于在等待额外的3个周期时CPU可能浪费多少功率。在大多数系统中,即使在等待指令时,管线仍可以保持活动(诸如通过处理先前的指令),因此,CPU可以保持消耗大约与CPU不等待待提供数据时所消耗的功率一样多的功率。如果是这种情况,则功率节省可以等于性能改进(例如,18%)。然而,如果CPU的管线在等待数据时在这3个额外周期之前完全耗尽(drain),那么可以相应地减少这些周期期间的功率。在这种情况下,功率节省将更小并且可以对应于当管线被耗尽时所消耗的功率。例如,这可以导致约18%的性能改进,并且功率改进可以在约5%至约18%的范围内。
虽然上述示例包括某些存储器布置和装置的电路、操作和结构实现,但是本领域技术人员将认识到,根据实施方式,可以使用其它技术和/或架构以及其它操作模式。此外,本领域技术人员将认识到,根据实施方式,也可以使用其它装置电路布置、架构、元件等。出于例示和描述的目的,已经呈现了本发明的特定实施方式的上述描述。所述描述并不旨在穷举或将本发明限制为所公开的精确形式,并且根据上述教导,许多修改和变型显然是可能的。选择和描述这些实施方式是为了最好地解释本发明的原理及其实际应用,从而使本领域的其他技术人员能够最好地利用本发明和具有适合于预期的特定用途的各种修改的各种实施方式。本发明的范围旨在由所附权利要求及其等同物限定。
Claims (20)
1.一种方法,所述方法包括以下步骤:
a)在存储器装置中从主机装置接收读请求,所述主机装置通过接口联接至所述存储器装置;
b)对从所述接口接收到的所述读请求的地址进行解码;
c)对所述读请求的命令进行解码,以确定所述读请求是否针对对齐地址操作;
d)当所述读请求被确定为针对所述对齐地址操作时,不管所解码的地址的实际对齐如何,保持所解码的地址而不进行修改;以及
e)通过使用所解码的地址,在所述存储器装置上按照所述对齐地址操作执行所述读请求。
2.根据权利要求1所述的方法,其中,所述对齐地址操作是双字对齐DWA读操作。
3.根据权利要求1所述的方法,所述方法还包括以下步骤:
a)访问所述存储器装置上的配置位;以及
b)仅当所述配置位处于第一状态并且所述读请求被确定为针对所述对齐地址操作时,才执行所述保持步骤和所述执行步骤。
4.根据权利要求3所述的方法,所述方法还包括以下步骤:
a)当所述配置位处于第二状态并且所述读请求针对所述对齐地址操作时,从所解码的地址清除预定数量的最低有效位LSB,以形成经修改的地址;以及
b)当所述配置位处于所述第二状态时,通过使用所述经修改的地址,在所述存储器装置上按照所述对齐地址操作执行所述读请求。
5.根据权利要求1所述的方法,其中:
a)所述存储器装置包括非易失性存储器;并且
b)所述接口包括串行接口。
6.根据权利要求1所述的方法,其中,对所述读请求的所述命令进行解码以确定所述读请求是否针对所述对齐地址操作的步骤包括:将操作码与预定操作码进行匹配。
7.根据权利要求1所述的方法,其中,所述对齐地址操作的读延迟小于不具有地址限制的操作的读延迟。
8.根据权利要求1所述的方法,其中,所述对齐地址操作是单字节读操作。
9.根据权利要求1所述的方法,其中,所述对齐地址操作是单对齐字读操作。
10.根据权利要求1所述的方法,其中,所述主机装置被配置为确保针对包括所述对齐地址操作的直接存储器访问DMA对齐了起始地址。
11.一种存储器装置,所述存储器装置被配置为:
a)通过接口从主机装置接收读请求;
b)对所述读请求的地址进行解码;
c)对所述读请求的命令进行解码,以确定所述读请求是否针对对齐地址操作;
d)当所述读请求被确定为针对所述对齐地址操作时,不管所解码的地址的实际对齐如何,保持所解码的地址而不进行修改;以及
e)通过使用所解码的地址,在所述存储器装置上按照所述对齐地址操作执行所述读请求。
12.根据权利要求11所述的存储器装置,其中,所述对齐地址操作是双字对齐DWA读操作。
13.根据权利要求11所述的存储器装置,所述存储器装置还包括:
a)包括配置位的状态寄存器;并且
b)其中,仅当所述配置位处于第一状态并且所述读请求被确定为针对所述对齐地址操作时,才保持所解码的地址并且使用所解码的地址执行所述读请求。
14.根据权利要求13所述的存储器装置,其中:
a)当所述配置位处于第二状态并且所述读请求针对所述对齐地址操作时,从所解码的地址清除预定数量的最低有效位LSB,以形成经修改的地址;以及
b)当所述配置位处于所述第二状态时,通过使用所述经修改的地址,在所述存储器装置上按照所述对齐地址操作执行所述读请求。
15.根据权利要求11所述的存储器装置,所述存储器装置包括非易失性存储器,并且其中,所述接口包括串行接口。
16.根据权利要求11所述的存储器装置,其中,对所述读请求的所述命令进行解码以通过将操作码与预定操作码进行匹配来确定所述读请求是否针对所述对齐地址操作。
17.根据权利要求11所述的存储器装置,其中,所述对齐地址操作的读延迟小于不具有地址限制的操作的读延迟。
18.根据权利要求11所述的存储器装置,其中,所述对齐地址操作是单字节读操作。
19.根据权利要求11所述的存储器装置,其中,所述对齐地址操作是单对齐字读操作。
20.根据权利要求11所述的存储器装置,其中,所述主机装置被配置为确保针对包括所述对齐地址操作的直接存储器访问DMA对齐了起始地址。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/399,263 | 2021-08-11 | ||
US17/399,263 US11704258B2 (en) | 2021-08-11 | 2021-08-11 | Latency reduction in SPI flash memory devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115910162A true CN115910162A (zh) | 2023-04-04 |
Family
ID=85176475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111183208.8A Pending CN115910162A (zh) | 2021-08-11 | 2021-10-11 | Spi闪存存储器装置中的延迟减少 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11704258B2 (zh) |
CN (1) | CN115910162A (zh) |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6321315B1 (en) | 1999-09-30 | 2001-11-20 | Micron Technology, Inc. | Method and apparatus to reduce memory read latency |
US6920539B2 (en) * | 2002-06-26 | 2005-07-19 | Intel Corporation | Method and system to retrieve information |
US7562180B2 (en) | 2006-03-28 | 2009-07-14 | Nokia Corporation | Method and device for reduced read latency of non-volatile memory |
US7593263B2 (en) | 2006-12-17 | 2009-09-22 | Anobit Technologies Ltd. | Memory device with reduced reading latency |
US7765380B2 (en) * | 2007-01-19 | 2010-07-27 | Unity Semiconductor Corporation | Fast data access through page manipulation |
US8271700B1 (en) * | 2007-11-23 | 2012-09-18 | Pmc-Sierra Us, Inc. | Logical address direct memory access with multiple concurrent physical ports and internal switching |
US7912997B1 (en) * | 2008-03-27 | 2011-03-22 | Xilinx, Inc. | Direct memory access engine |
KR20100055105A (ko) | 2008-11-17 | 2010-05-26 | 삼성전자주식회사 | 상 변화 메모리 장치 |
US8806071B2 (en) | 2012-01-25 | 2014-08-12 | Spansion Llc | Continuous read burst support at high clock rates |
US8966151B2 (en) | 2012-03-30 | 2015-02-24 | Spansion Llc | Apparatus and method for a reduced pin count (RPC) memory bus interface including a read data strobe signal |
US9454421B2 (en) | 2013-10-15 | 2016-09-27 | Cypress Semiconductor Corporation | Method for providing read data flow control or error reporting using a read data strobe |
US9286959B2 (en) | 2013-11-18 | 2016-03-15 | International Business Machines Corporation | Low latency memory access control for non-volatile memories |
US11275590B2 (en) * | 2015-08-26 | 2022-03-15 | Huawei Technologies Co., Ltd. | Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory |
US9812183B2 (en) | 2016-03-04 | 2017-11-07 | Adesto Technologies Corporation | Read latency reduction in a memory device |
US11036506B1 (en) * | 2019-12-11 | 2021-06-15 | Motorola Solutions, Inc. | Memory systems and methods for handling vector data |
-
2021
- 2021-08-11 US US17/399,263 patent/US11704258B2/en active Active
- 2021-10-11 CN CN202111183208.8A patent/CN115910162A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230050986A1 (en) | 2023-02-16 |
US11704258B2 (en) | 2023-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10613763B2 (en) | Memory device having multiple read buffers for read latency reduction | |
US20200126601A1 (en) | Asynchronous/synchronous interface | |
US10509589B2 (en) | Support for improved throughput in a memory device | |
CN114974374B (zh) | 具有芯片内执行能力的串行与非门快闪存储器 | |
JP2008524748A (ja) | メモリシステムにおけるデータ再配置 | |
JP4643729B2 (ja) | インタリーブ制御装置、インタリーブ制御方法及びメモリシステム | |
US11107535B2 (en) | Memory device with adaptive noise and voltage suppression during read-while-write operations | |
CN112863560B (zh) | 存储器设备、控制存储器设备的方法和主机设备 | |
CN101354906A (zh) | 应用于固态硬盘的闪存控制器 | |
US6622244B1 (en) | Booting from a reprogrammable memory on an unconfigured bus by modifying boot device address | |
US11704258B2 (en) | Latency reduction in SPI flash memory devices | |
CN114253464B (zh) | 控制读取请求的方法和具有主机装置的存储器控制器 | |
JPWO2006003693A1 (ja) | データプロセッサ | |
US5901293A (en) | Bus interface controller for serially-accessed variable-access-time memory device | |
US11983411B2 (en) | Methods, devices and systems for including alternate memory access operations over memory interface | |
KR20030000017A (ko) | 플래시 메모리 제어 장치 및 플래시 메모리 제어 방법 | |
CN118276764A (zh) | 操作nvm芯片执行相关操作的方法及介质接口控制器 | |
CN118276934A (zh) | 介质接口控制器 | |
CN118277303A (zh) | 一种介质接口控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |