专注于延时的读取操作和专注于带宽的读取操作之间的动态改变

文档序号:828778 发布日期:2021-03-30 浏览:5次 >En<

阅读说明:本技术 专注于延时的读取操作和专注于带宽的读取操作之间的动态改变 (Dynamic change between read operations devoted to latency and read operations devoted to bandwidth ) 是由 S·哈利利 Z·格林菲尔德 S·贾亚钱德兰 R·J·小罗耶 D·帕特尔 于 2020-06-24 设计创作,主要内容包括:多级存储器子系统包括持久性存储器设备,该持久性存储器设备可以顺序地或随机地访问数据块以改善读取延时,或者可以预取数据区块以改善读取带宽。介质控制器在顺序地或随机地访问数据块的第一读取模式与预取数据区块的第二读取模式之间动态切换。介质控制器基于命令队列中未决的读取命令的数量来在第一读取模式和第二读取模式之间切换。(The multi-level memory subsystem includes a persistent memory device that can sequentially or randomly access data blocks to improve read latency or can prefetch data blocks to improve read bandwidth. The media controller dynamically switches between a first read mode in which the data blocks are accessed sequentially or randomly and a second read mode in which the data blocks are pre-fetched. The media controller switches between the first read mode and the second read mode based on a number of read commands pending in the command queue.)

具体实施方式

如本文所述,多级存储器子系统包括持久性存储器设备,其可以顺序地访问数据块以改善读取延时,或者可以预取数据块以改善读取带宽。通常,系统可以优化存储器的介质访问,以改善读取延时或改善带宽利用率。如本文所使用的,“优化”不一定指绝对最优,而是指配置操作以改善期望的结果。因此,优化读取延时是指配置系统以尝试提供系统中可能的最佳读取延时。类似地,优化带宽可以是指配置操作以尝试实现系统可能的最佳带宽利用率。

代替针对读取延时或带宽进行优化,介质控制器可以在针对读取延时进行优化的延时模式与针对带宽进行优化的带宽模式之间切换。可以按切片或区块,或者按扇区或数据块来执行对介质的访问。当读取数据块时,读取可能是随机的,从而导致介质访问冲突的可能性,从而导致随机访问之间的延迟。在读取区块中的所有块时不会发生访问冲突,因此可以以提高带宽利用率的方式执行整个切片的读取。因此,针对特定工作负载类型进行优化可以改善整体带宽和读取延迟。

介质控制器基于未决命令的数量进行切换。因此,介质控制器在顺序访问数据块的第一读取模式和预取数据区块的第二读取模式之间动态切换。顺序访问数据块不包括数据的预取,并且因此,由于系统可以简单地为传入命令提供服务,因此读取延时将被减少。使用具有多个连续数据块的预取数据区块访问数据允许介质控制器缓存数据,以减少通过通信信号线发送数据的延迟,从而改善了带宽利用率。在数据块访问的情况下,数据块被顺序访问和发送,从而使带宽利用率变差。在预取的情况下,传入命令的处理可能被延迟以等待其他数据的预取,从而使读取延时变差。

介质控制器基于命令队列中未决的读取命令数量在第一读取模式和第二读取模式之间切换。在一个示例中,在第一读取模式和第二读取模式之间的触发是当命令队列中存在至少一个未决命令时。其他实施方式可以是通过2、3或某个其他排队的命令数量来触发读取模式之间的更改。

图1是可以访问存储介质的系统示例的框图,该系统取决于未决读取请求的数量而专注于延时或专注于带宽。系统100表示其中主机110访问存储在存储器设备120中的数据的系统。存储器设备120包括用于存储数据的介质124,以及用于在专注于读取延时的读取模式和专注于带宽利用率的读取模式之间动态交换的介质控制器130。

主机110表示主机硬件平台,其包括处理器114以执行操作系统(OS)、应用或生成对存储在存储器设备120上的数据的请求的过程。处理器114可以是或包括任何类型的微处理器、微控制器、中央处理单元、图形处理单元或执行可以引起对存储器设备120的数据访问请求的命令序列的其他设备。在一个示例中,处理器114包括多个核心(即,多核处理器)。在单个处理器或单个核心上执行的不同线程可以生成不同的存储器访问请求。

I/O(输入/输出)112包括用于将主机110互连到存储器设备120的硬件元件。存储器设备120包括对应的I/O 122。I/O包括一条或多条信号线,以使主机110能够发送命令到存储器设备120。I/O包括一条或多条信号线,以使存储器设备120能够将数据返回到主机110。在一个示例中,I/O 112和I/O 122包括单独的命令和地址(CA)信号线和数据(DQ)信号线。数据总线的宽度可以取决于架构而变化。I/O 112和I/O 114包括用于分别驱动和接收信号线上的信号的发送器和接收器,或用于控制信号线上的发送和接收的收发器。可以通过软件和固件操作来控制接口硬件,以控制接口的时序和操作参数。

主机110包括控制器116,该控制器表示控制逻辑,该控制逻辑用于基于由处理器114执行的操作来生成命令并调度命令的发送并处理返回的数据。在一个示例中,控制器116与处理器114集成到共同管芯上(即,集成控制器)。在一个示例中,控制器116是与处理器114分开的分立组件。控制器116可以实现协议规则以引起经由I/O的信号传输。在一个示例中,控制器116配置I/O的发送和接收组件的操作。在一个示例中,控制器116是或包括用于调度信令的调度器。控制器116可以将所示的请求生成到存储器设备120,该存储器设备将响应于该请求而提供所示的答复。

存储器设备120包括表示存储器设备上的存储空间的介质124。在一个示例中,介质124表示非易失性存储介质。介质124可以是或包括基于NAND(非AND)的非易失性存储、基于NOR(非OR)的非易失性存储或基于位单元的电阻状态或其他基于电阻的非易失性存储来存储数据的3DXP(三维交叉点)非易失性存储装置。介质124包括多个可寻址的存储位置。在一个示例中,存储位置是可按块寻址的。在一个示例中,存储位置是字节可寻址的(例如,3DXP存储器)。块或字节包括用于存储一个或多个数据位的个体位单元(例如,多级单元设备每单元存储多个的位)。

在一个示例中,存储器设备120包括根据介质124的多个介质单元。例如,介质124可以表示单个芯片或管芯或存储空间平面。存储器设备120可以包括多个芯片或其他存储单元。在一个示例中,介质控制器130与所有介质单元接合。在一个示例中,根据所描述的任何示例,存储器设备120包括不同的介质控制器,其可以单独地控制对存储介质的访问。

介质控制器130表示存储器设备120上的用于控制对介质124的访问的控制器或控制逻辑。在一个示例中,可以将介质124的存储位置作为个体的扇区(例如,扇区[0:7],标识为SECT 0、SECT 1、……、SECT 7)来访问。在一个示例中,存储装置的切片包括多个扇区。如系统100所示,切片0包括扇区[0:3],而切片1包括扇区[4:7]。切片与扇区的对应关系可能不同于所示的1:4。

介质控制器130从主机110接收用于执行的命令,在系统100中被标识为“请求”。每个请求具有相关联的命令延时,这是对命令完成的最小期望。带宽和延时之间的关系可以描述如下。在控制器变得空闲之后收到的第一个命令具有确定性的延时,而一系列命令或命令突发中的后续命令是较低确定性的,因为并不总是知道完成命令将花费多长时间。突发的最后一个命令必须等到所有先前的命令都已经完成之后才能发出完成。将理解,带宽越高,等待后续命令的时间越短。

在对读取延时敏感的系统中,介质访问限制可能具有明显的性能影响,这暗示针对读取延时优化命令处理。然而,带宽不足可能导致在命令(cmd)缓冲器132(也可以称为命令队列)中存在多个未完成或未决读取时发生延时。介质读取可能具有针对一定数据量的最佳读取粒度,并且许多读取可能针对少于最佳量的数据。为了本文的讨论目的,“切片”是指本机读取带宽,或介质能够在一个单位周期或时钟周期中读取的数据量。数据“块”是指小于切片的数据量;因此,切片由多个数据块组成。

在一个示例中,介质124在读取之后需要大量的空闲时间,以避免地址冲突。地址冲突是指当后续命令与先前命令寻址介质的相同部分时的情况。当针对一个命令正在访问介质的一部分时,假设控制逻辑不能同时寻址该部分内的不同位置,则对于另一个命令不能同时访问该部分。在相同地址或其中包含该地址的介质的部分之前,需要有空闲时间(例如,对于一些3DXP实施方式,介质的多达1GB的部分)。对于空闲时间的增加的延迟减少带宽,这导致命令队列深度大于1的情况下的增加的延时。

为了改善带宽,可以以顺序读取整个介质切片将不导致介质地址冲突的方式来组织介质124的布局。将理解的是,主机地址或主机110提供的地址不必与介质地址相同。介质控制器130控制介质地址,该介质地址对主机110可以是透明的。在一个示例中,介质124具有大约2K字节的顺序模式。在这样的配置中,切片可以包括2K字节,其中,每个切片包括多个512字节的扇区。在一个示例中,布局被优化用于访问切片而不是访问扇区。

在用于这种配置的介质级别,将针对延时对仅读取一个扇区进行优化。存储器设备120将与介质控制器130可以读取所请求的扇区一样快地将所请求的扇区返回到主机110。然而,如果所有主机读取都转换为介质扇区读取,则由于介质地址冲突而将导致处理延迟。介质地址冲突将转换为减少的带宽,进而转换为对于队列深度大于一的增加的延时。增加的延时将减慢处理器114的速度并使用户体验低于最佳。

在一个示例中,存储器设备120包括可以耦合到传统系统存储器总线的字节可寻址的非易失性存储介质。因此,例如,存储器设备120可以与诸如DRAM(动态随机存取存储器)之类的传统易失性存储器共享总线。客户端系统上的存储器流量可以包括具有易失性存储器的64字节随机访问读取工作负载,以及更大的顺序访问工作负载,其可以比64字节随机访问读取大32倍。在一个示例中,针对读取延时或带宽进行优化的能力可以允许针对两种类型的工作负载(64字节访问或2K字节访问)进行优化。

随机读取延时对于许多应用而言至关重要,特别是如果要将存储设备用作N级存储器系统中的第n级存储器。例如,两级存储器系统包括近存储器和远存储器,其中,近存储器具有较快的访问时间,并且远存储器具有较慢的访问时间。因为设备架构(例如,具有不同访问延时的不同类型的设备)、与主机的不同电气距离或电气距离和设备架构的组合,访问时间可能不同。

介质控制器130可以为介质124提供针对延时和带宽二者的优化。在一个示例中,系统100将主机读取转换为介质读取,以消除或减少介质地址冲突对顺序读取和随机读取二者的主机读取带宽的影响。在一个示例中,介质控制器130在请求压力低的同时或在有几个未决请求时优先进行延时优化。随着一个或多个命令队列填满并且延时变得更长,介质控制器130动态切换以优先进行带宽优化。在介质控制器130的这种操作的情况下,当命令队列更满时,优化带宽的次要好处是延时也得到了优化。

参考其中可以将介质124上的数据视为组织为扇区和切片的配置,可以将不同的读取模式视为扇区读取模式和切片读取模式。扇区读取模式可以指这样的模式,其中,介质控制器130响应于对特定扇区的请求而一次一个扇区地访问数据。切片读取模式可以指这样的模式,其中,介质控制器130响应于对特定扇区的请求而预取数据切片。

在这样的示例中,当第一次读取仅针对一个扇区时,可以通过仅读取所请求的扇区而不是整个切片来优化延时。通常,当有多个未完成的读取时,可以通过增加带宽利用率来优化延时。反过来,可以通过读取整个数据切片来优化带宽利用率,这可以减少地址冲突延迟。

介质控制器130可以动态地识别何时从扇区读取模式切换到切片读取模式。基于对介质124的访问的控制,由介质控制器130确定读取整个切片,而不管主机是仅请求扇区还是整个切片。因此,响应于对扇区的请求,介质控制器可以仅访问扇区或访问整个切片,将所请求的数据发送回主机,并且缓存或缓冲其余数据。如果主机在介质控制器预取数据之后不久又发送了针对切片的扇区的另一个请求,则来自主机的工作负载将受益于延时改善。

在一个示例中,当没有未完成的读取时,介质控制器130将处于扇区读取模式以针对延时进行优化。从扇区读取模式到切片读取模式或预取模式的切换将取决于触发模式之间切换的未决读取请求的数量。一旦未完成的读取的数量已达到可编程阈值,则介质控制器130切换为切片读取并预取数据。在一个示例中,阈值是可编程值。例如,可编程值可以存储在寄存器设备中。在一个示例中,阈值是固定值或硬编码值。硬编码值可以是控制器固件的一部分,例如或者被设置为保险丝中的值。

在一个示例中,存储器设备120包括寄存器134,以存储与由介质控制器130对介质124的访问有关的配置信息。在一个示例中,寄存器134表示用于存储配置信息的多个寄存器或存储位置。在一个示例中,寄存器134是介质控制器130的一部分。在一个示例中,寄存器134存储可编程值以设置阈值数量,该阈值数量触发介质控制器130从一种读取模式切换到另一种读取模式。例如,寄存器134可以包括在存储器设备120的配置或初始化中设置的值,以从预设读取访问模式切换到不同的读取访问模式。更具体地,寄存器134可以在命令缓冲器132中存储用于指示未决命令数量的值,该值将触发介质控制器130从预设读取延时优化切换到带宽优化。在一个示例中,当队列被清空时,介质控制器130切换回预设读取访问模式。在一个示例中,存储器设备120包括寄存器134,以存储用于指示将触发介质控制器130从带宽优化读取访问模式切换回预设读取延时优化读取访问模式的未决命令数量的值。在一个示例中,扇区读取模式或不具有预取的读取模式是预设读取模式,而具有预取的读取模式是响应于队列深度而切换到的另一种模式。

上面的描述涉及由介质控制器130进行的控制以实现从一种读取模式到另一种读取模式的动态切换。在替代示例中,控制器116可以实现所描述的动态切换。动态切换可以根据上述内容发生,其中,控制器116在一种读取模式下时针对扇区(或介质124的子部分)发出命令,并且针对切片(或包括多个子部分的介质124的一部分)发出命令。子部分和部分的区别可以分别基于对存储器设备120的单元访问和对介质124的单元预取。

当控制器116实现读取模式的改变时,控制器将向存储器设备120发送不同的读取命令。控制器116可以包括可用于确定何时切换读取模式的命令缓冲器或命令队列(未明确示出)。作为示例,控制器116可以响应于所有未完成请求的数据的接收而切换回去。

在一个示例中,介质控制器130(或控制器116)配置系统100,该配置包括设置队列深度的配置,该队列深度将参考命令缓冲器132(或控制器116的类似命令缓冲器)中的未决命令的数量来触发从一种读取模式到另一种读取模式的改变。在一个示例中,配置可以包括队列深度,该队列深度用于触发从读取数据块到利用预取来读取数据区块的切换,并且当清空队列时,控制器自动切换回读取数据块。在一个示例中,该配置可以包括队列深度,该队列深度用于触发从读取块到读取区块的切换,并且另一队列深度指示可以触发切换回到读取数据块,其中,队列在切换回来之前没有被完全清空。

如所示出的,存储器设备120包括I/O(输入/输出)缓冲器126作为用于通过I/O122将数据从介质124发送到主机110的缓冲器。I/O缓冲器126表示用于排队数据以发送给主机110的缓冲器。在模式1和模式2二者中都使用了I/O缓冲器。在一个示例中,I/O缓冲器126是I/O 122的一部分。为了讨论目的,分别关于两种读取模式指定了I/O缓冲器。

如图所示,在模式1中,来自介质124的数据被访问并直接提供给I/O缓冲器126,以发送给主机110。对于模式2,数据首先被访问并放置在预取高速缓存128中(也可以是称为预取缓冲器),并且然后响应于来自主机110的请求而将其提供给I/O缓冲器126。将理解的是,并非将存储在预取高速缓存128中的所有数据都发送到主机110。在一个示例中,响应于在预取访问模式(模式2)下操作的同时的请求,介质控制器130将首先在预取高速缓存128中寻找所请求的数据。如果存在高速缓存命中,则可以将数据移动到I/O缓冲器126。如果存在高速缓存未命中,则介质控制器130将预取与请求的数据相关联的数据,并将预取的数据存储在预取高速缓存128中。所请求的数据将被发送到主机110,而其他数据将保持被缓存,直到被请求为止,或者直到根据介质控制器130实现的高速缓存逐出操作而被逐出为止。

在一个示例中,对于预取高速缓存128中的高速缓存命中,其他命令可能已经在用于将数据发送回主机110的命令之前。例如,I/O缓冲器126可以使多个数据块排队以响应于先前的命令而发送。当命令引起高速缓存命中时,可以使命令排队以便用于I/O输出,并且介质控制器130不需要在介质124上执行附加访问操作,因为数据已经被缓存在预取高速缓存128中。

在一个示例中,存储器设备120包括电路140,其表示使得能够基于队列深度在读取模式之间进行切换的电路。在一个示例中,电路140是集成到存储器设备120的组件上的电路。在一个示例中,电路140被实现为专用集成电路(ASIC)。这样的电路可以集成到组件上,或者单独封装。因此,电路140可以被提供为要被集成到存储器120中的独立芯片或电路设备,被提供为要集成在片上系统中的芯片,或要集成到存储器设备120的另一组件的硅中。

图2A是命令序列的示例的时序图,其专注于1读取的队列深度的延时。图210表示从主机发送并从存储器设备响应的命令。图210表示仅基于读取延时优化的来自主机的命令以及在介质控制器和介质处的操作。

CMD(命令)212表示主机发送的命令或读取请求。所示的每个元素表示用于单独的数据块的单独的命令。这些命令用阴影指示,以指示块与数据的什么部分相关联。图例指示带阴影(a)的块的切片0、带阴影(b)的块的切片1、带阴影(c)的块的切片2和带阴影(d)的块的切片3。图210表示其中存在针对彼此交错的不同部分或切片的块发送命令的情况。

例如,CMD 212表示对来自切片0的数据块的请求,接着是对来自切片1的数据的请求。一段时间之后,主机再发送对来自切片0的数据块的三个连续的请求。一段时间之后,主机再发送对来自切片1的数据块的三个连续的请求,接着是对来自切片2的数据的请求。然后,主机发送对切片2的块的命令,接着是对切片3的块的命令。

CMD 214表示从控制器到存储介质的命令编码。主机生成CMD 212中所示的命令,以请求特定的数据块。CMD 214表示由介质控制器生成的用于访问介质的命令。当控制器仅针对读取延时进行优化时,响应于来自主机的每个命令,控制器为每个数据块生成单独的命令。

数据216表示在介质处的用于提供给缓冲器的操作。在纯读取延时优化的情况下,缓冲器可以是要发送到主机的输出缓冲器。数据218表示在存储器设备和主机之间的输出驱动器(output driver)处的操作。将会看到,数据216和数据218之间的差异是短暂的延迟,以使数据从缓冲器到达输出驱动器。缓冲器中的数据和到主机的数据二者都作为单个数据块出现,从而在CMD 212中镜像了来自主机的请求。

图2B是针对大于队列深度1的读取的专注于带宽的命令序列的示例的时序图。图220表示从主机发送并从存储器设备响应的命令。图220表示仅基于带宽优化的来自主机的命令以及介质控制器和介质处的操作。更具体地,响应于对扇区的主机读取,介质控制器预取或读取整个切片。这种方法针对带宽进行优化,并牺牲针对队列深度为1(QD1)读取的读取延时。

CMD 222表示主机发送的命令或读取请求。所示的每个元素表示用于单独的数据块的单独的命令。这些命令用阴影指示,以指示块与数据的什么部分相关联。图例指示带阴影(a)的块的切片0、带阴影(b)的块的切片1、带阴影(c)的块的切片2和带阴影(d)的块的切片3。图220表示其中存在针对彼此交错的不同部分或切片的个体块或扇区发送命令的情况。

例如,CMD 222表示对来自切片0的数据块的请求,接着是对来自切片1的数据的请求。一段时间之后,主机再发送对来自切片0的数据块的三个连续的请求。一段时间之后,主机再发送对来自切片1的数据块的三个连续的请求,接着是对来自切片2的数据的请求。然后,主机发送对切片2的块的命令,接着是对切片3的块的命令。

CMD 224表示从控制器到存储介质的命令编码。主机生成命令CMD222中所示的命令,以请求特定的数据块。CMD 224表示由介质控制器生成的用于访问介质的命令。当控制器仅针对带宽优化时,响应于来自主机的每个命令,控制器针对整个数据切片生成命令。将理解的是,因为整个切片被预取,所以CMD 224仅示出了对介质的单个命令以读取整个数据切片。

数据226表示在介质处的用于提供给缓冲器的操作。在带宽优化的情况下,缓冲器可以是预取高速缓存,其将保留数据,直到将其传输到输出缓冲器以发送到主机为止。将会看到,从CMD 224到数据226中所示的切片预取之间存在延迟。该延迟导致所请求的切片1的第一个块的额外的读取延迟,因为系统必须在访问切片1中的任何内容之前等待直到所有切片0都被预取。

数据228表示在存储器设备和主机之间的输出驱动器处的操作。数据226示出用于读取数据切片的一个统一操作,而数据228示出被发送回主机的每个数据块。数据228示出了这样的配置,其中,所有数据都按切片发送回主机。因此,即使在切片0中的其余数据之前请求了切片1的第一个数据块,也要在返回切片1的所有数据之前将切片0的所有的返回到主机。直到已经接收到对切片的所有数据的请求后才返回数据,因此以延时为代价最大化带宽。如果在将切片0的所有发送到主机(数据228)之前已准备好切片1(数据226),则将在切片0之前发送切片1的响应。

图2C是命令序列的示例的时序图,其专注于在为特定读取提供服务之后利用预取对1读取的队列深度的延时,这可以在一定程度上针对较大队列深度改善带宽。图230表示从主机发送并从存储器设备响应的命令。图230表示来自主机的命令以及在介质控制器和介质处的基于介质处的带宽优化的操作,但是允许在存储器设备和主机之间的连接处的一些读取延时优化。

更具体地,介质控制器读取由主机请求的数据块,接着是用于读取与该数据块相关联的切片的其余部分的预取操作。这种预取方法具有减少地址冲突和改善带宽的类似效果。根据图230,一旦读取了扇区,介质控制器就可以对主机做出响应,而不必等待直到读取整个切片(QD1延时优化)。

CMD 232表示主机发送的命令或读取请求。所示的每个元素表示用于单独的数据块的单独的命令。这些命令用阴影指示,以指示块与数据的什么部分相关联。图例指示带阴影(a)的块的切片0、带阴影(b)的块的切片1、带阴影(c)的块的切片2和带阴影(d)的块的切片3。图230表示其中存在针对彼此交错的不同部分或切片的个体块或扇区发送的命令的场景。

例如,CMD 232表示对来自切片0的数据块的请求,接着是对来自切片1的数据的请求。一段时间之后,主机再发送对来自切片0的数据块的三个连续的请求。一段时间之后,主机再发送对来自切片1的数据块的三个连续的请求,接着是对来自切片2的数据的请求。然后,主机发送针对切片2的块的命令,接着是针对切片3的块的命令。

CMD 234表示从控制器到存储介质的命令编码。主机生成命令CMD232中所示的命令,以请求特定的数据块。CMD 234表示由介质控制器生成的用于访问介质的命令。在一个示例中,介质控制器响应于对该数据块的主机请求而生成针对该数据块的命令。然后,介质控制器发出预取命令(标记为“P”),以使介质读取数据切片的其余部分。

数据236表示在介质处提供给缓冲器的操作。根据图230,可以将读取的数据提供给用于所请求的数据的输出缓冲器,并将预取的数据放置在预取高速缓存中。

数据238表示在存储器设备和主机之间的输出驱动器处的操作。数据238示出了第一请求的数据块可以在读取后立即返回,这改善了读取延时。当接收到针对同一切片的其他命令时,可以从预取高速缓存返回数据。

图2D是基于未决命令的数量在延时模式和带宽模式之间切换的命令序列的示例的时序图。图240表示从主机发送并从存储器设备响应的命令。图240表示来自主机的命令以及在介质控制器和介质处的基于一种用于延时优化的读取模式和一种用于带宽优化的读取模式的操作。介质控制器动态确定如何在两种读取模式之间切换。图240表示根据图1的系统100的系统可能发生的命令交换。

CMD 242表示主机发送的命令或读取请求。所示的每个元素表示用于单独的数据块的单独的命令。这些命令用阴影指示,以指示块与数据的什么部分相关联。图例指示带阴影(a)的块的切片0、带阴影(b)的块的切片1、带阴影(c)的块的切片2和带阴影(d)的块的切片3。图230表示其中存在针对彼此交错的不同部分或切片的个体块或扇区发送的命令的场景。

例如,CMD 242表示对来自切片0的数据块的请求,接着是对来自切片1的数据的请求。一段时间之后,主机再发送对来自切片0的数据块的三个连续的请求。一段时间之后,主机再发送对来自切片1的数据块的三个连续的请求,接着是对来自切片2的数据的请求。然后,主机发送针对切片2的块的命令,接着是针对切片3的块的命令。

CMD 244表示从控制器到存储介质的命令编码。主机生成CMD 242中所示的命令,以请求特定的数据块。CMD 244表示由介质控制器生成的用于访问介质的命令。在一个示例中,介质控制器响应于对该数据块的主机请求而生成针对该数据块的命令。主机可以继续生成针对不同切片的其他数据块的命令,直到接收针对同一切片的第二个数据块的命令。尽管出于图240中的示例的目的第二个块被用作触发器,但是其可以是第三个块、第四个块或某个其他第n个请求。在一个示例中,图240示出了其中队列深度为2的配置,其触发从延时模式到带宽模式的切换。在一个示例中,队列深度可以指的是对同一数据切片的未决读取的数量。

设置为阈值以在读取模式下触发切换的命令数量将取决于系统配置、相对于彼此的块和切片大小或其他因素。当数据块为总切片大小的1/4时,响应于第二个命令的预取可能很意义。如果数据块是切片大小的1/8或1/16或某个其他大小,则可以通过使大于1的队列深度作为触发来使系统受益。

如图所示,响应于对切片0的第一个块的请求,介质控制器发出命令以读取所请求的块。对于切片1的第一个块同样如此。响应于对切片0的第二个块的请求,将观察到介质控制器响应于扇区读取命令而切换到发出切片读取命令。因此,当控制器处于带宽模式时,即使是针对单个块的命令也将引起读取切片,除非该切片已被预取。切片读取命令指示从专注于延时的读取模式切换到专注于带宽的读取模式。因此,响应于分别对切片2和3的第一个块的请求,介质控制器发出命令以预取整个切片。

数据246表示在介质处的用于提供给缓冲器的操作。在读取延时模式下,缓冲器可以直接连接到输出缓冲器。在带宽模式下,缓冲器可以是预取缓冲器,该缓冲器将被发送到输出缓冲器以发送到主机。将会看到,前两个命令用于前两个块,并且其余命令利用预取读取执行。

数据248表示在存储器设备和主机之间的输出驱动器处的操作。数据248示出了在延时模式下访问的数据可以在读取后立即返回,这改善了读取延时。在切换到带宽模式后,存储器设备可以基于预取的数据,响应于对数据的请求而将数据发送到主机。

根据图240,将理解,系统可以从主机请求期望小的低延时读取或高带宽顺序读取的模式,并且动态地修改对介质的存储器访问模式以针对特定工作负载改善性能。在一个示例中,优化以两个部分发生:第一部分检测传入的工作负载,并且第二部分利用预取器实现读取高速缓存,从而针对顺序带宽优化了对介质的数据访问模式,而不因不必要的读取而浪费带宽。

动态改变读取模式允许系统针对不同的读取队列深度和访问模式动态地优化介质访问。通过消除介质地址冲突,优化的切换可以提高从介质顺序读取的效率和速度,同时仍保留针对小队列深度随机读取(其中,用户最可能注意到延时影响)的延时优化。

在带宽模式下,任何主机读取甚至对切片的一部分的读取引起整个切片在内部被读取和缓存。内部缓存可以指代控制器上或由控制器控制的高速缓存,或控制器可访问的高速缓存。将来主机对预取切片的读取可以从内部缓存的数据完成,而不生成另一介质读取。在一个示例中,一旦处理了所有读取并且控制器进入空闲,作为空闲过程的一部分,或者作为从空闲状态唤醒的过程的一部分,控制器就可以自动从带宽模式切换回延时模式。响应于命令队列中未决的读取命令的阈值数量,控制器将再次切换回带宽模式。在一个示例中,对于具有缓冲读取和写入命令二者的队列的系统,仅读取命令计入阈值,并且针对考虑是否切换读取模式可以忽略队列中的写入命令。类似地,控制器进入空闲可以指代读取过程进入空闲,并且可以不指代是否还有未决写入命令。

图3是在延时模式和带宽模式之间切换的示例的泳道流程图。该图分为三个部分:图3-1、图3-2和图3-3,以容适页面大小。流程300示出了图2D的图240的序列图示的示例。

开始于图3-1,在初始化点302处,控制器对介质的访问是基于延时模式的。在事件304处,主机生成命令读取a0,这是对切片0的扇区0的请求。控制器接收该命令并为介质生成读取a0命令。在事件306处,主机生成命令读取b0,这是对切片1的扇区0的请求。控制器接收该命令,并为介质生成读取b0命令。

在一个示例中,响应于第二个读取命令,控制器在点308处触发带宽模式或带宽读取模式。在事件310处,主机为切片0的扇区1生成命令读取a1。例如,主机可以在控制器进入带宽模式之前实际生成此命令。然而,为了说明将在带宽模式下处理该命令,在流程300中的点308之后示出了该命令。应该理解,该命令实际上可以在切换读取模式之前发送,但是由于这是在阈值数量的读取之后进行,它将在带宽模式下被处理。

一旦处于带宽模式,则响应于对切片或切片的一部分的读取,只要该切片的数据尚未被预取,控制器就触发整个切片的预取。可以将对同一切片的多个读取排队,并且等待直到切片读取完成。在一个示例中,一旦执行了切片读取并且内部预取缓冲器中的数据可用,就可以针对该切片的所有排队的读取将数据返回给主机。在一个示例中,对预取切片的所有后续读取将从内部预取缓冲器完成,并且将不发起从介质读取。

如图所示,响应于读取a1,控制器为介质读取a1、a2、a3生成命令以完成对切片0的预取。在事件312处和事件314处,主机分别生成读取a2和读取a3。在流程300中在控制器处箭头的停止指示控制器在不将另一命令发送到介质的情况下使命令排队。一旦介质已经完成对a0的读取,在事件316处,介质就将数据a0返回给控制器,该控制器将数据返回给主机以触发读取a0完成。

由于系统已经处于带宽模式,因此当主机在事件320处生成命令读取b1时,控制器将向介质生成一个或多个用于读取b1、b2、b3的命令,以完成切片1的预取。在事件322处,介质完成对数据b0的读取,并将其发送到控制器。控制器转而将数据提供给主机,以触发读取b0完成。

在一个示例中,主机随后分别在事件324和事件326处生成命令读取b2和读取b3。响应于这些命令,由于已经请求数据切片以进行预取,因此控制器再次使命令排队而不访问介质。

继续图3-2处的流程300,介质在事件328处完成切片0其余部分的预取,返回数据a1、a2、a3。由于已经接收到针对所有这些扇区的命令,因此控制器可以缓存数据并按顺序将其发送到主机,以触发读取a1完成、读取a2完成和读取a3完成。对于尚未被请求的任何数据扇区,控制器可以继续缓存数据,直到可以接收到对其的请求的这样的时刻为止。

在事件330处,主机生成命令读取c0。由于仍然有切片1的未决读取,因此控制器可能仍处于带宽模式。因此,响应于读取c0,控制器可以生成用于读取c0、c1、c2、c3的一个或多个命令,以响应于针对c0的命令来读取切片2的整体。流程300示出了在事件332处的后续命令读取c1、在事件334处的读取c2以及在事件336处的读取c3。响应于这些命令,控制器可以使命令排队而不访问介质。

在事件338处,介质完成了对切片1数据的预取,将其作为数据b0、b1、b2发送到控制器。然后,控制器可以通过发送数据来响应来自主机的请求,以触发读取b1完成、读取b2完成和读取b3完成。

在事件340处,主机为来自切片3的数据扇区生成命令读取d0。系统仍处于带宽模式,并且因此控制器可以为读取d0、d1、d2、d3生成一个或多个命令到介质。在事件342处,介质将切片2的数据c0、c1、c2、c3返回给控制器。由于已请求所有数据,因此控制器可以将数据发送到主机以触发读取c0完成、读取c1完成、读取c2完成和读取c3完成。

继续图3-3处的流程300,主机在事件344处生成命令读取d1,并在事件346处生成读取d2。响应于这些请求,由于已经从介质请求了切片3的数据,因此控制器可以简单地使命令排队。在事件348处,介质响应于预取请求而返回数据d0、d1、d2、d3。在一个示例中,针对切片3的数据的返回完成了所有未决读取命令,并且控制器可以在350处切换到延时模式。

在事件348的情况下,控制器具有针对切片3的所有数据预取。考虑在将数据d0发送到主机以触发读取d0完成之后,主机在事件352处生成命令读取d3。控制器可以继续发送数据d1和数据d2以分别触发主机处的读取d1完成和读取d2完成。同样,由于已经预取了数据d3,因此控制器可以在事件354处简单地返回数据以触发读取d3完成。

将理解的是,由于控制器被切换回延时模式,因此控制器为随后的读取突发做好了准备,并且初始延时模式可以提供良好的初始读取延时。一旦突发已经在处理中,随后切换到带宽模式就可以通过预取数据来改善延时。

在一个示例中,当接收到对对应介质地址的写入时,控制器将预取缓冲器中的数据标记为无效。在一个示例中,当预取缓冲器已满时,控制器将根据高速缓存逐出过程来逐出预取的数据。简单的高速缓存逐出例程是FIFO(先进先出)方法,其中,最旧的条目将被删除以预取数据以处理新的读取。

图4是具有存储器子系统的系统的示例的框图,该存储器子系统具有近存储器和远存储器,并具有集成的近存储器控制器和集成的远存储器控制器。系统400提供了根据图1的系统100的系统的一个示例,其中,处理器410表示主机,并且远存储器450表示存储器设备。

系统400表示多级存储器系统的组件。系统400具体示出了集成存储器控制器和集成远存储器控制器。集成控制器被集成到处理器管芯上或处理器SOC封装中,或二者。

处理器410表示处理器管芯或处理器SOC封装的示例。处理器410包括处理单元412,其可以包括一个或多个核心420以执行指令的执行。在一个示例中,核心420包括处理器侧高速缓存422,其将包括高速缓存控制电路和高速缓存数据存储装置。高速缓存422可以表示任何类型的处理器侧高速缓存。在一个示例中,个体核心420包括未与其他核心共享的本地高速缓存资源422。在一个示例中,多个核心420共享高速缓存资源422。在一个示例中,个体核心420包括未被共享的本地高速缓存资源422,并且多个核心420包括共享的高速缓存资源。应该理解,在所示的系统中,处理器侧高速缓存422可以在管芯上存储数据和元数据二者。

在一个示例中,处理器410包括系统结构430以互连处理器系统的组件。系统结构430可以是或包括处理组件412、外围控件436、一个或多个存储器控制器(例如,集成存储器控制器(iMC)432和远存储器控制器434)、I/O控件(未具体示出)、图形子系统(未具体显示)或其他组件之间的互连。系统结构430使得能够在组件之间交换数据信号。尽管通常将系统结构430示为连接组件,但应理解,系统400不一定说明所有组件互连。系统结构430可以表示一个或多个网格连接、中央交换机制、环形连接、结构的层级或其他拓扑。

在一个示例中,处理器410包括一个或多个外围控制器436以将资源断开连接到外围组件或设备。在一个示例中,外围控件436表示到平台控制器460的硬件接口,该平台控制器包括一个或多个组件或电路,以控制系统400的硬件平台或主板中的互连以将外围设备互连至处理器410。组件462表示经由平台控制器460耦合到处理器410的任何类型的芯片或接口或硬件元件。

在一个示例中,处理器410包括iMC 432,该iMC具体表示连接到近存储器440的控制逻辑。在一个示例中,近存储器440传统上被认为是系统400的主存储器。主存储器是指当在高速缓存422的最后一级上发生高速缓存未命中时访问的存储器资源。iMC 432可以包括硬件电路和软件/固件控制逻辑。在一个示例中,近存储器440表示易失性存储器资源。

在一个示例中,处理器410包括远存储器控制器434,其表示用于控制对远存储器450的访问的控制逻辑。远存储器450表示具有比对近存储器440的访问时间更长的访问时间的存储器资源。在一个示例中,远存储器450包括非易失性存储器资源。远存储器控制器434可以包括硬件电路和软件/固件控制逻辑。iMC 432和远端存储器控制器434二者都可以包括调度逻辑,以管理对它们各自存储器资源的访问。

远存储器450包括介质454,该介质表示其中远存储器450存储系统400的数据的存储介质。在一个示例中,远存储器450包括控制器452,该控制器表示远存储器450中的控制器,该控制器可以动态地确定是要用第一还是第二读取访问模式来访问介质454。读取访问模式之一可以是专注于延时的模式,其中,控制器452响应于来自处理器410的具有最短读取延时的命令而访问介质454以读取数据。在专注于延时的模式下,控制器452基于来自处理器410的命令中所请求的内容来针对较小存储器段访问介质454。另一种访问模式可以是专注于带宽的模式,其中,控制器452访问介质454以读取较大段中的数据,即使当处理器410发出请求较小段的命令时,也是如此。在专注于带宽的模式下,处理器452响应于来自处理器410的读取命令来预取数据。

在一个示例中,近存储器440包括一个或多个DRAM存储器模块作为主存储器。在一个示例中,远存储器450包括3DXP存储器。因此,介质454可以是或包括3DXP存储器,其被理解为与DRAM相比具有更慢但是类似的读取时间,并且与DRAM相比具有显著更慢的写入时间。然而,3DXP是非易失性的,并且因此不需要像DRAM一样进行刷新,从而允许更低的待机功耗。根据系统400的存储器子系统可以包括3DXP远存储器450和基于DRAM的近存储器440。总的功率使用将得到改善,并且访问性能应该是类似的。

代替3DXP,可以使用其他存储器技术,例如相变存储器(PCM)或其他非易失性存储器技术。非易失性存储器的非限制性示例可以包括以下各项中的任何一项或组合:固态存储器(例如,平面或3D NAND闪存或NOR闪存)、使用硫族化物相变材料(例如,硫族化物玻璃)的存储设备、字节可寻址的非易失性存储器设备、铁电存储器、硅氧氮氧硅(SONOS)存储器、聚合物存储器(例如,铁电聚合物存储器)、铁电晶体管随机存取存储器(Fe-TRAM)、双向存储器、纳米线存储器、电可擦可编程只读存储器(EEPROM)、其他各种类型的非易失性随机存取存储器(RAM)和磁存储存储器。在一些示例中,3D交叉点存储器可以包括无晶体管的可堆叠交叉点架构,其中,存储器单元位于字线和位线的交点处并且是可个别寻址的,并且其中,位存储基于体电阻的变化。

图5是非易失性存储系统的示例的框图,该非易失性存储系统具有访问模式控制以基于排队的读取请求的数量来改变控制。系统500提供了根据图1的系统100的系统的一个示例,其中,主机510表示主机,而NVM设备520表示存储器设备。

系统500包括与主机510耦合的NVM(非易失性存储器)设备520。在一个示例中,NVM设备520表示耦合到主存储器总线的第n级存储器或字节可寻址的非易失性存储设备。在一个示例中,NVM设备520是固态驱动器(SSD)。主机510表示连接到NVM设备520的主机硬件平台。主机510包括CPU(中央处理单元)或其他处理器作为用于执行主机OS 512的主机处理器。主机510可以包括母板或硬件板、芯片组或其他硬件组件以将主机510互连到NVM设备520。

系统500示出了主机和NVM设备的逻辑层。主机OS 512表示用于主机的主机操作系统或软件平台。主机OS 542可以包括在其上应用、服务、代理和/或其他软件执行并且由处理器执行的平台。文件系统514表示用于控制对NVM设备520的访问的控制逻辑。文件系统514可以管理使用什么地址或存储器位置来存储什么数据。有许多已知的文件系统,并且文件系统514可以实现已知的文件系统或其他专有系统。在一个示例中,文件系统514是主机OS 542的一部分。

存储驱动器516表示控制主机510的硬件的一个或多个系统级模块。在一个示例中,驱动器516包括软件应用,以控制到NVM设备520的接口,并因此控制NVM设备520的硬件。存储驱动器516可以提供主机和NVM设备之间的通信接口。

NVM设备520表示包括主非易失性(NV)介质(由NV介质524表示)以存储数据的存储驱动器。易失性介质522表示更小更快的介质,以充当NV介质524的缓冲器或高速缓存。NVM设备520包括控制器530,以控制对缓冲器522和NV介质524的访问。控制器530表示NVM设备520内的硬件和控制逻辑,以对介质执行控制。

控制器530包括固件534,其表示用于控制器的控制软件/固件。在一个示例中,控制器530包括主机接口532,该主机接口表示到主机510的接口。在一个示例中,控制器530包括NV接口536,该NV接口表示到易失性介质522和NV介质524的接口。将理解的是,NV接口536可以与易失性存储器设备接合,作为用于NV介质的缓冲器。

接口532和536包括在控制器530的硬件上执行的控制。将理解,控制器530包括用于与主机510进行接合的硬件,可以将其视为由主机接口软件/固件532控制。同样,应当理解,控制器530包括用于与易失性介质522和NV介质534接合的硬件。在一个示例中,用于主机接口532的代码可以是固件534的一部分。在一个示例中,用于NV接口536的代码可以是固件534的一部分。

在一个示例中,控制器530包括错误控件538以处理所访问的数据中的数据错误以及在遵守信令和通信接合方面的特殊情况(corner case)。在一个示例中,错误控制538在硬件中实现。在一个示例中,错误控制538在固件534内实现。在一个示例中,错误控制538被实现为硬件和固件的组合。

根据本文所述的任何示例,访问模式控件540表示控制器530内的逻辑,以在专注于读取延时的读取模式和专注于带宽的读取模式之间动态改变。在专注于延时的情况下,控制器530在数据可以被访问和返回时尽可能快地仅访问从主机510请求的数据。在专注于带宽的情况下,除非所请求的数据已经被预取,否则控制器访问的数据要多于请求的数据,并且缓存或缓冲数据以改善返回主机510的输出带宽。在一个示例中,控制器530包括用于确定何时触发从专注于延时到专注于带宽的切换的参数。

在一个示例中,NV介质524包括交叉点存储器介质。在一个示例中,NV介质524包括具有多层存储单元的堆叠存储器设备。在一个示例中,NVM设备520包括PCB(印刷电路板)或模块,在其上安装了设备的组件。在一个示例中,控制器530表示PCB模块上的介质控制器,其包括多个单独的持久性介质管芯。一个或多个持久性介质管芯可以包括多层堆栈或3D存储器堆栈。

对存储器设备的引用是指在设备断电时其状态(以及因此存储在其上的数据)不确定的存储器。非易失性存储器是指即使设备断电其状态也是确定的存储器。动态易失性存储器需要刷新存储在设备中的数据以保持状态。本文中引用的易失性存储器可以包括DRAM(动态随机存取存储器)设备,或诸如同步DRAM(SDRAM)之类的一些变型。存储器子系统可以与多个存储器技术兼容,例如DDR4(双倍数据速率(DDR)版本4、JESD79、初始规范由JEDEC在2012年9月发布)、LPDDR4(低功耗DDR版本4,JESD209-4,最初由JEDEC在2014年8月发布)、WIO2(宽I/O 2(WideIO2)、JESD229-2,最初由JEDEC在2014年8月发布)、HBM(高带宽存储器DRAM,JESD235A,最初由JEDEC在2015年11月发布)、DDR5(DDR版本5,目前由JEDEC讨论中)、LPDDR5(LPDDR版本5,JESD209-5,最初由JEDEC在2019年2月发布)、HBM2((HBM版本2),目前由JEDEC讨论中)或其他存储器技术或存储器技术的组合,以及基于此类规范派生或扩展的技术。

对非易失性存储器设备或持久性存储器的引用可以包括是块可寻址存储器设备的非易失性存储器设备,例如NAND或NOR技术。此外,非易失性存储器可以指字节可寻址存储器,例如三维交叉点存储器设备、其他字节可寻址非易失性存储器设备或使用硫族化物相变材料(例如,硫族化物玻璃)的存储器设备或基于存储介质的电阻状态存储数据的存储器设备。在一个示例中,存储器设备可以是或包括多阈值级NAND闪存、NOR闪存、单或多级相变存储器(PCM)或具有开关的相变存储器(PCMS)、电阻存储器、纳米线存储器、铁电晶体管随机访问存储器(FeTRAM)、结合了忆阻器技术的磁阻随机访问存储器(MRAM)存储器或自旋传递扭矩(STT)-MRAM或以上任何一种的组合,或其他存储器。

图6是计算系统的示例的框图,其中,可以实现基于队列深度的读取模式之间的切换。系统600表示根据本文任何示例的计算设备,并且可以是膝上型计算机、台式计算机、平板计算机、服务器、游戏或娱乐控制系统、嵌入式计算设备或其他电子设备。系统600提供根据系统100的系统的示例。

更具体地说,处理器610和由处理器执行的主机OS可以表示主机,其中,存储器子系统620中的存储器资源或存储子系统680中的存储器资源作为存储器设备。在一个示例中,根据本文的任何示例,系统600包括访问模式控件690,该访问模式控件表示使存储器介质的不同读取模式之间能够动态切换的组件。在一个示例中,访问模式控件690可以是存储子系统680的控制器682的一部分。在一个示例中,访问模式控件690可以是存储器630的存储器设备上的控制器的一部分,其中,未具体示出该控制器。控制器将被理解为介质控制器,其可以与存储器控制器622不同。在一个示例中,存储器控制器可以包括介质控制器。

系统600包括处理器610,该处理器可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核心或其他处理硬件或组合,以为系统600提供指令处理或执行。处理器610控制系统600的整体操作,并且可以是或包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑设备(PLD)或这些设备的组合。

在一个示例中,系统600包括耦合到处理器610的接口612,该接口可以表示需要更高带宽连接的系统组件(例如,内存子系统620或图形接口组件640)的更高速度的接口或高吞吐量的接口。接口612表示接口电路,其可以是独立组件或集成到处理器管芯上。接口612可以作为电路集成到处理器管芯上,或者作为组件集成在片上系统上。图形接口640在存在的情况下与图形组件接合,以向系统600的用户提供视觉显示。图形接口640可以是独立组件或集成到处理器管芯或片上系统上。在一个示例中,图形接口640可以驱动向用户提供输出的高清(HD)显示。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口640基于存储在存储器630中的数据或基于由处理器610执行的操作或二者来生成显示。

存储器子系统620表示系统600的主存储器,并为将由处理器610执行的代码或将在执行例程中使用的数据值提供存储。存储器子系统620可以包括一个或多个存储器设备630,例如只读存储器(ROM)、闪存、一种或多种变型的随机访问存储器(RAM),例如DRAM,或其他存储器设备,或这些设备的组合。存储器630存储和托管操作系统(OS)632等等,以提供用于执行系统600中的指令的软件平台。另外,应用634可以在OS 632的软件平台上从存储器630执行。应用634表示让它们自己的操作逻辑执行一个或多个功能的程序。过程636表示向OS 632或一个或多个应用634或组合提供辅助功能的代理或例程。OS 632、应用634和过程636提供软件逻辑以为系统600提供功能。在一个示例中,存储器子系统620包括存储器控制器622,该存储器控制器是用于生成命令并将其发布给存储器630的存储器控制器。将理解的是,存储器控制器622可以是处理器610的物理部分或接口612的物理部分。例如,存储器控制器622可以是集成的存储器控制器,其与处理器610一起集成到电路上,例如集成到处理器管芯或片上系统上。

尽管没有具体示出,但是将理解,系统600可以包括设备之间的一个或多个总线或总线系统,例如存储器总线、图形总线、接口总线或其他。总线或其他信号线可以将组件通信或电气地耦合在一起,或将组件通信且电气地耦合。总线可以包括物理通信线路、点对点连接、桥、适配器、控制器或其他电路或组合。总线可以包括例如系统总线、外围组件互连(PCI)总线、HyperTransport或行业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)、其他总线或它们的组合中的一个或多个。

在一个示例中,系统600包括可以耦合到接口612的接口614。接口614可以是比接口612低速的接口。在一个示例中,接口614表示接口电路,其可以包括独立的组件和集成电路。在一个示例中,多个用户接口组件或外围组件或二者耦合到接口614。网络接口650向系统600通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口650可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)或其他基于有线或无线标准的或专有的接口。网络接口650可以与远程设备交换数据,该远程设备可以包括发送存储在存储器中的数据或接收要存储在存储器中的数据。

在一个示例中,系统600包括一个或多个输入/输出(I/O)接口660。I/O接口660可以包括一个或多个接口组件,用户通过该接口组件与系统600进行交互(例如,音频、字母数字、触觉/触摸或其他接合)。外围接口670可以包括以上未具体提及的任何硬件接口。外围设备通常是指独立地连接到系统600的设备。从属连接是这样的连接,其中,系统600提供在其上执行操作以及与用户进行交互的软件平台或硬件平台或二者。

在一个示例中,系统600包括用于以非易失性方式存储数据的存储子系统680。在一个示例中,在某些系统实施方式中,存储装置680的至少某些组件可以与存储器子系统620的组件重叠。存储子系统680包括存储装置684,其可以是或包括用于以非易失性方式存储大量数据的任何常规介质,例如一个或多个基于磁性、固态或光学的磁盘或组合。存储装置684以持久状态保存代码或指令以及数据686(即,尽管系统600断电,值仍被保留)。尽管存储器630通常是向处理器610提供指令的执行或操作存储器,但是存储装置684通常可以被认为是“存储器”。尽管存储装置684是非易失性的,但是存储器630可以包括易失性存储器(即,如果系统600断电,则数据的值或状态是不确定的)。在一个示例中,存储子系统680包括用于与存储装置684接合的控制器682。在一个示例中,控制器682是接口614或处理器610的物理部分,或者可以在处理器610和接口614二者中包括电路或逻辑。

电源602向系统600的组件提供电力。更具体地,电源602通常与系统600中的一个或多个供电装置604接合,以向系统600的组件提供电力。在一个示例中,供电装置604包括AC到DC(交流电到直流电)适配器,以插入壁装插座。这样的AC电源可以是可再生能源(例如,太阳能)电源602。在一个示例中,电源602包括DC电源,例如外部AC至DC转换器。在一个示例中,电源602或供电装置604包括无线充电硬件,以经由与充电场的接近来充电。在一个示例中,电源602可以包括内部电池或燃料电池源。

图7是其中可以实现基于队列深度的读取模式之间的切换的移动设备的示例的框图。系统700表示移动计算设备,例如计算平板、移动电话或智能电话、可穿戴计算设备或其他移动设备或嵌入式计算设备。将理解,总体上示出了某些组件,并且在系统700中未示出这种设备的所有组件。系统700提供了根据系统100的系统的示例。

更具体地,处理器710和由处理器执行的主机OS可以表示主机,其中,将存储器子系统760中的存储器资源作为存储器设备。在一个示例中,根据本文中的任何示例,系统700在存储器子系统760中包括访问模式控件790,该访问模式控件表示用于使存储介质的不同读取模式之间能够动态切换的组件。在一个示例中,访问模式控件790可以是NV存储器766的控制器的一部分。在一个示例中,存储器子系统760包括NV存储器766,其表示具有可以持久存储数据的非易失性介质的存储器。在一个示例中,用于NV存储器766的介质控制器包括访问模式控件790。用于访问介质并实现访问模式控件的控制器被理解为介质控制器,其可以不同于存储器控制器762。在一个示例中,存储器控制器可以包括介质控制器。

系统700包括执行系统700的主要处理操作的处理器710。处理器710可以包括一个或多个物理设备,例如微处理器、应用处理器、微控制器、可编程逻辑设备或其他处理单元。由处理器710执行的处理操作包括在其上执行应用和设备功能的操作平台或操作系统的执行。处理操作包括与人类用户或其他设备的I/O(输入/输出)有关的操作、与功率管理有关的操作、与将系统700连接到另一个设备有关的操作或组合。处理操作还可以包括与音频I/O、显示I/O或其他接合或组合有关的操作。处理器710可以执行存储在存储器中的数据。处理器710可以写入或编辑存储在存储器中的数据。

在一个示例中,系统700包括一个或多个传感器712。传感器712表示嵌入式传感器或到外部传感器的接口或组合。传感器712使系统700能够监视或检测其中实现了系统700的环境或设备的一个或多个条件。传感器712可以包括环境传感器(例如,温度传感器、运动检测器、光检测器、相机、化学传感器(例如,一氧化碳、二氧化碳或其他化学传感器)、压力传感器、加速计、陀螺仪、医学或生理学传感器(例如,生物传感器、心率监测器或其他用于检测生理属性的传感器)或其他传感器,或组合。传感器712还可以包括用于生物识别系统的传感器,例如指纹识别系统、面部检测或识别系统,或检测或识别用户特征的其他系统。应当广义地理解传感器712,而不是限于可以用系统700实现的许多不同类型的传感器。在一个示例中,一个或多个传感器712经由与处理器710集成的前端电路耦合到处理器710。在一个示例中,一个或多个传感器712经由系统700的另一组件耦合到处理器710。

在一个示例中,系统700包括音频子系统720,其表示与向计算设备提供音频功能相关联的硬件(例如,音频硬件和音频电路)和软件(例如,驱动程序、编解码器)组件。音频功能可以包括扬声器或耳机输出,以及麦克风输入。可以将用于这种功能的设备集成到系统700中,或连接到系统700。在一个示例中,用户通过提供由处理器710接收和处理的音频命令来与系统700进行交互。

显示子系统730表示提供视觉显示以呈现给用户的硬件(例如,显示设备)和软件(例如,驱动程序)组件。在一个示例中,显示器包括用于用户与计算设备进行交互的触觉组件或触摸屏元件。显示子系统730包括显示界面732,该显示界面包括用于向用户提供显示的特定屏幕或硬件设备。在一个示例中,显示接口732包括与处理器710(例如,图形处理器)分开的逻辑,以执行与显示器有关的至少一些处理。在一个示例中,显示子系统730包括向用户提供输出和输入二者的触摸屏设备。在一个示例中,显示子系统730包括向用户提供输出的高清晰度(HD)或超高清晰度(UHD)显示器。在一个示例中,显示子系统包括或驱动触摸屏显示器。在一个示例中,显示子系统730基于存储在存储器中的数据或基于处理器710执行的操作或二者来生成显示信息。

I/O控制器740表示关于与用户的交互的硬件设备和软件组件。I/O控制器740可以操作以管理是音频子系统720或显示子系统730或二者的一部分的硬件。另外,I/O控制器740示出了用于连接到系统700的附加设备的连接点,用户可以通过该连接点与系统交互。例如,可以附接到系统700的设备可能包括麦克风设备、扬声器或立体声系统、视频系统或其他显示设备、键盘或小键盘设备或其他与特定应用一起使用的I/O设备(例如,读卡器或其他设备)。

如上所述,I/O控制器740可以与音频子系统720或显示子系统730或二者交互。例如,通过麦克风或其他音频设备的输入可以为系统700的一个或多个应用或功能提供输入或命令。另外,可以提供音频输出来代替或附加于显示输出。在另一个示例中,如果显示子系统包括触摸屏,则显示设备还充当输入设备,其可以至少部分地由I/O控制器740管理。系统700上还可以有附加按钮或开关来提供由I/O控制器740管理的I/O功能。

在一个示例中,I/O控制器740管理诸如加速度计、相机、光传感器或其他环境传感器、陀螺仪、全球定位系统(GPS)或可以被包括在系统700中的其他硬件或传感器712之类的设备。输入可以是直接用户交互的一部分,也可以向系统提供环境输入以影响其操作(例如,过滤噪声、调整显示以进行亮度检测、为相机应用闪光灯或其他特征)。

在一个示例中,系统700包括功率管理750,该功率管理750管理电池功率使用、电池充电以及与省电操作有关的功能。功率管理750管理来自电源752的功率,该电源向系统700的组件提供功率。在一个示例中,电源752包括AC至DC(交流电至直流电)适配器,以插入壁装插座。这样的AC功率可以是可再生能源(例如,太阳能、基于运动的电力)。在一个示例中,电源752仅包括DC功率,其可以由诸如外部AC-DC移位器之类的DC电源来提供。在一个示例中,电源752包括无线充电硬件,以经由与充电场的邻近来充电。在一个示例中,电源752可以包括内部电池或燃料电池源。

存储器子系统760包括用于在系统700中存储信息的存储器设备762。存储器子系统760可以包括非易失性(如果存储器设备断电,则状态不改变)或易失性(如果存储器设备断电,则状态不确定)存储器设备或组合。存储器760可以存储应用数据、用户数据、音乐、照片、文档或其他数据,以及与系统700的应用和功能的执行有关的系统数据(无论是长期的还是临时的)。在一个示例中,存储器子系统760包括存储器控制器764(其也可以被认为是系统700的控制的一部分,并且可能潜在地被认为是处理器710的一部分)。存储器控制器764包括调度器,该调度器用于生成并发出命令以控制对存储器设备762的访问。

连接性770包括硬件设备(例如,无线或有线连接器和通信硬件,或有线和无线硬件的组合)和软件组件(例如,驱动程序、协议栈),以使系统700能够与外部设备进行通信。外部设备可以是单独的设备(例如,其他计算设备、无线访问点或基站)以及外围设备(例如,耳机、打印机或其他设备)。在一个示例中,系统700与外部设备交换数据以存储在存储器中或在显示设备上显示。交换的数据可以包括要存储在存储器中的数据,或者已经存储在存储器中的数据,以读取、写入或编辑数据。

连接性770可以包括多种不同类型的连接性。概括地说,系统700被示出为具有蜂窝连接性772和无线连接性774。蜂窝连接性772通常是指由无线运营商提供的蜂窝网络连接性,例如经由GSM(全球移动通信系统)或变型或派生、CDMA(码分多址)或变型或派生、TDM(时分复用)或变型或派生、LTE(长期演进-也称为“4G”)或其他蜂窝服务标准提供的。无线连接性774是指不是蜂窝的无线连接性,并且可以包括个域网(例如,蓝牙)、局域网(例如,WiFi)或广域网(例如,WiMax)或其他无线通信,或者组合。无线通信是指通过非固体介质通过使用调制电磁辐射来进行数据传输。有线通信通过固体的通信介质进行。

外围设备连接780包括硬件接口和连接器,以及进行外围设备连接的软件组件(例如,驱动程序、协议栈)。将理解的是,系统700既可以是其他计算设备的外围设备(“去往”782),也可以具有与其连接的外围设备(来自“784”)。系统700通常具有“对接”连接器以连接至其他计算设备,以用于诸如管理(例如,下载、上载、更改、同步)系统700上的内容的目的。另外,对接连接器可以允许系统700连接至允许系统700控制内容输出到例如视听或其他系统的某些外围设备。

除了专有对接连接器或其他专有连接硬件之外,系统700还可经由通用或基于标准的连接器进行外围设备连接780。常见类型可以包括通用串行总线(USB)连接器(其可以包括多个不同的硬件接口中的任何一个),包括MiniDisplayPort(MDP)的DisplayPort、高清晰度多媒体接口(HDMI)或其他类型。

一般而言,关于本文的描述,在一个示例中,一种存储器设备,包括:持久性存储介质,其能够作为数据块访问,所述数据块的大小至少等于易失性介质高速缓存的访问大小;以及介质控制器,其用于控制对所述持久性存储介质的访问,所述介质控制器用于基于命令队列中未决的读取命令的数量来在第一读取模式和第二读取模式之间动态切换,所述第一读取模式用于仅访问在未决命令中寻址的数据块,并且所述第二读取模式用于访问在未决命令中寻址的数据块并且预取数据区块的连续数据块。

在一个示例中,所述持久性存储介质包括具有多层存储单元的交叉点存储器介质。在一个示例中,介质控制器包括具有多个持久性介质管芯的印刷电路板(PCB)模块上的控制器。在一个示例中,所述介质控制器用于预设为所述第一读取模式,并且响应于所述命令队列中未决的读取命令的阈值数量而切换为所述第二读取模式。在一个示例中,所述存储设备还包括:寄存器,其用于存储可编程值,以设置用于触发从所述第一读取模式到所述第二读取模式的切换的所述阈值数量。在一个示例中,所述介质控制器用于响应于所述命令队列不具有未决读取命令而从所述第二读取模式切换到所述第一读取模式。在一个示例中,所述存储器设备还包括预取缓冲器,所述预取缓冲器用于存储所预取的数据区块。在一个示例中,在所述第二读取模式下,响应于寻址到已被预取的所述数据区块内的数据块的读取命令,所述介质控制器用于从所述预取缓冲器返回所述数据块。在一个示例中,在所述第二读取模式下,响应于寻址到所述数据区块内的数据块的读取命令,所述介质控制器用于使所述读取命令排队以等待对所述数据区块的预取。

通常,关于本文的描述,在一个示例中,一种系统包括:易失性存储器设备,其包括作为处理器的近存储器的易失性介质;以及持久性存储器设备,其包括作为所述处理器的远存储器的持久性存储介质,所述持久性存储器设备包括:作为所述处理器的远存储器的持久性存储介质,所述持久性存储介质能够作为数据块访问,所述数据块的大小至少等于所述易失性介质的访问大小;以及介质控制器,其用于控制对所述持久性存储介质的访问,所述介质控制器用于基于命令队列中未决的读取命令的数量而在第一读取模式和第二读取模式之间动态切换,所述第一读取模式用于仅访问在未决命令中寻址的数据块,并且所述第二读取模式用于访问在未决命令中寻址的数据块并且预取数据区块的连续数据块。

在一个示例中,所述介质控制器用于预设为所述第一读取模式并且响应于所述命令队列中未决的读取命令的阈值数量而切换到所述第二读取模式。在一个示例中,所述持久性存储器还包括:寄存器,其用于存储可编程值,以设置用于触发从所述第一读取模式到所述第二读取模式的切换的所述阈值数量,其中,所述介质控制器用于响应于所述命令队列不具有未决读取命令而从所述第二读取模式切换到所述第一读取模式。在一个示例中,所述持久性存储器包括硬编码值,以设置用于触发从所述第一读取模式到所述第二读取模式的切换的所述阈值数量,其中,所述介质控制器用于响应于所述命令队列不具有未决读取命令而从所述第二读取模式切换到所述第一读取模式。在一个示例中,持久性存储器还包括:预取缓冲器,其用于存储所预取的数据区块。在一个示例中,在所述第二读取模式下,响应于寻址到已被预取的所述数据区块内的数据块的读取命令,所述介质控制器用于从所述预取缓冲器返回所述数据块;并且,其中,在所述第二读取模式下,响应于寻址到所述数据区块内的数据块的读取命令,所述介质控制器用于使所述读取命令排队以等待对所述数据区块的预取。在一个示例中,所述系统还包括以下各项中的一项或多项:主机处理器设备,其耦合到所述易失性存储器设备和所述持久性存储器设备;显示器,其通信地耦合到主机处理器;网络接口,其通信耦合到主机处理器;或者电池,其用于为所述系统供电。

一般而言,关于本文的描述,在一个示例中,一种用于存储数据的方法包括:从主机控制器接收读取命令;确定命令队列中未决的读取命令的数量是否满足或超过所述命令队列中的读取命令的阈值数量;以及响应于确定读取命令的所述数量满足或超过所述阈值数量,动态地从第一读取模式切换到第二读取模式,所述第一读取模式用于仅访问在未决命令中寻址的数据块,并且所述第二读取模式用于访问在未决命令中寻址的数据块并且预取数据区块的连续数据块。

在一个示例中,从所述第一读取模式动态切换到所述第二读取模式包括:预设为所述第一读取模式;以及响应于所述命令队列中未决的读取命令的阈值数量,切换到所述第二读取模式。在一个示例中,所述方法还包括:将可编程值存储在寄存器中,以设置用于触发从所述第一读取模式到所述第二读取模式的切换的所述阈值数量,其中,从所述第二读取模式到所述第一读取模式的切换包括响应于所述命令队列不具有未决读取命令而切换。在一个示例中,所述方法还包括将所预取的数据区块存储在预取缓冲器中。在一个示例中,在所述第二读取模式下,响应于寻址到已被预取的所述数据区块内的数据块的读取命令,从所述预取缓冲器返回所述数据块;并且,响应于寻址到所述数据区块内的数据块的读取命令,使所述读取命令排队以等待对所述数据区块的预取。

如本文所示的流程图提供了各种过程动作的序列的示例。流程图可以指示将由软件或固件例程执行的操作以及物理操作。流程图可以示出可以以硬件和/或软件来实现的有限状态机(FSM)的状态的实施方式的示例。尽管以特定的顺序或次序示出,但除非另有说明,否则可以修改操作的顺序。因此,所示的图应该仅被理解为示例,并且可以以不同的顺序执行该过程,并且可以并行执行一些动作。此外,可以省略一个或多个动作;因此,并非所有实施方式都将执行所有操作。

在本文中描述各种操作或功能的程度上,它们可以被描述或定义为软件代码、指令、配置和/或数据。内容可以直接是可执行文件(“目标”或“可执行”形式)、源代码或差异代码(“增量”或“补丁”代码)。可以经由在其上存储了内容的制品或通过操作通信接口以经由通信接口发送数据的方法来提供本文描述的软件内容。机器可读存储介质可以使机器执行所描述的功能或操作,并且包括以机器可访问的形式(例如,计算设备、电子系统等)存储信息的任何机制,例如可记录介质/不可记录介质(例如,只读存储器(ROM)、随机访问存储器(RAM)、磁盘存储介质、光学存储介质、闪存设备等)。通信接口包括与硬连线、无线、光学等介质中的任何一种接口以与另一设备通信的任何机制,例如存储器总线接口、处理器总线接口、因特网连接、磁盘控制器等。可以通过提供配置参数和/或发送信号以准备通信接口以提供描述软件内容的数据信号来配置通信接口。可以通过一个或多个发送到通信接口的命令或信号来访问通信接口。

本文所述的各种组件可以是用于执行所描述的操作或功能的单元。本文所述的每个组件都包括软件、硬件或它们的组合。这些组件可以实现为软件模块、硬件模块、特殊用途硬件(例如,专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等。

除了在此描述的内容之外,在不脱离本发明的范围的情况下,还可以对所公开的内容和本发明的实施方式进行各种修改。因此,本文中的图示和示例应以说明性而非限制性的意义来解释。本发明的范围应仅通过参考所附权利要求书来衡量。

37页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据集覆盖保护

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类