CN115917501A - 系统启动程序期间的读取预测 - Google Patents
系统启动程序期间的读取预测 Download PDFInfo
- Publication number
- CN115917501A CN115917501A CN202180037545.8A CN202180037545A CN115917501A CN 115917501 A CN115917501 A CN 115917501A CN 202180037545 A CN202180037545 A CN 202180037545A CN 115917501 A CN115917501 A CN 115917501A
- Authority
- CN
- China
- Prior art keywords
- data
- identifying
- cache
- memory device
- command
- 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/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/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
- G06F9/4408—Boot device selection
-
- 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/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
-
- 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/60—Details of cache memory
- G06F2212/603—Details of cache memory of operating mode, e.g. cache mode or local memory mode
-
- 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)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述用于系统启动程序期间的读取预测的方法、系统和装置。存储器装置可标识启动程序的命令且将存储于存储器阵列中的数据传送到所述存储器装置的高速缓存。在一些情况下,存储器装置可预取在所述启动程序期间使用的数据,且由此改善所述启动程序的时延。当所述存储器装置接收请求存储于所述存储器阵列中的数据的命令以作为启动程序的部分时,所述存储器装置可基于在接收到所述命令之前预取所请求的数据而标识高速缓存命中。在此类情况下,所述存储器装置可从所述高速缓存检索预取的所述数据。
Description
交叉参考
本专利申请主张由梁(LIANG)等人于2020年5月29日提交的标题为“系统启动程序期间的读取预测(READ PREDICTION DURING A SYSTEM BOOT PROCEDURE)”的第16/888,198号美国临时专利申请的优先权,所述美国临时专利申请让渡给本受让人且以全文引用的方式明确并入本文中。
背景技术
下文大体上涉及一或多个存储器系统,且更具体地说,涉及系统启动程序期间的读取预测。
存储器装置广泛用于将信息存储在例如计算机、无线通信装置、相机、数字显示器等各种电子装置中。通过将存储器装置内的存储器单元编程到各种状态来存储信息。举例来说,二进制存储器单元可被编程为通常由逻辑1或逻辑0来标示的两个支持状态中的一者。在一些实例中,单个存储器单元可支持多于两个状态,可存储所述状态中的任一者。为了存取所存储信息,装置的组件可读取或感测存储器装置中的至少一个所存储状态。为了存取信息,装置的组件可对存储器装置中的状态进行写入或编程。
存在各种类型的存储器装置,包含磁性硬盘、随机存取存储器(RAM)、只读存储器(ROM)、动态RAM(DRAM)、同步动态RAM(SDRAM)、铁电RAM(FeRAM)、磁性RAM(MRAM)、电阻性RAM(RRAM)、快闪存储器、相变存储器(PCM)等。存储器装置可以是易失性或非易失性的。例如FeRAM的非易失性存储器即使在无外部电源存在的情况下仍可维持其所存储逻辑状态很长的时间段。例如DRAM的易失性存储器装置在与外部电源断开连接时可能会丢失其所存储状态。FeRAM能够实现类似于易失性存储器的密度但可具有非易失性特性,这是因为使用了铁电电容器作为存储装置。
附图说明
图1是根据本文所公开的实例的包含存储器装置的计算系统的实例。
图2是根据本文所公开的实例的支持系统启动程序期间的读取预测的实例方法的流程图。
图3展示根据本文所公开的实例的支持系统启动程序期间的读取预测的存储器装置的框图。
图4展示说明根据本文所公开的实例的支持系统启动程序期间的读取预测的方法或多个方法的流程图。
图5展示说明根据本文所公开的实例的支持系统启动程序期间的读取预测的方法或多个方法的流程图。
具体实施方式
一些系统(例如,电子装置、智能手机等)可能花费特定量的时间来启动。举例来说,主机装置可能在启动程序期间向系统的存储器装置请求数据。在一些情况下,启动程序可能会扩展,使得主机装置在启动程序期间请求增加量的数据,这可能要特定时间量来读取数据。可能需要通过减少整个系统的启动时间来改善用户的体验且提高存储器装置的效率。启动的时间量可能导致存储器装置经历性能损耗、信令开销的增加以及用于执行操作的处理开销的增加。在此类情况下,在启动期间未充分利用时间可能会降低存储器装置的性能、增加功耗等。
描述了供存储器装置在主机装置的启动程序期间预取至少一些信息的系统、装置和技术。存储器装置可按顺序次序记录接收的主机命令,由此生成和存储在启动程序期间使用的启动序列。在此类情况下,存储器装置可基于存储在存储器装置上的启动序列而标识(例如,预测)启动程序的下一命令的候选对象。在存储器装置的随后启动程序处,存储器装置可将与下一命令的候选对象相关联的数据从其存储器阵列加载到高速缓存(例如,共享存储器)。举例来说,存储器装置可在从主机装置接收到对数据的请求之前将来自充当存储装置(例如,“与非”(NAND)型快闪存储器)的存储器装置的数据预加载(例如,预取)到高速缓存。在一些情况下,存储器装置可利用存储器装置的空闲时间来使用记录的启动序列对数据进行预加载。在此类情况下,预取可通过增加在启动程序期间经历的高速缓存命中的量来减少用于实施启动程序的时间。如果从主机装置接收的命令匹配预取的数据,则存储器装置可直接用来自高速缓存的数据进行响应,由此减少命令时延且允许启动程序更高效和更快。因为预取的数据可存储于高速缓存中,所以每当命令被发布时,主机装置可比用于从NAND读取数据的后端程序更快速地存取预取的数据。此类技术可增大存储器装置的性能,实现读取速度提高、功耗降低、处理复杂度降低以及处理时间改善。
首先在参考图1所描述的计算环境的上下文中描述本公开的特征。在参考图2所描述的流程图的上下文中描述本公开的特征。另外通过设备图和流程图说明且参考设备图和流程图描述本公开的这些和其它特征,所述设备图和流程图涉及参考图3到5所描述的在系统启动程序期间的读取预测。
图1是根据本文所公开的实例的包含存储器装置110的计算系统100的实例。存储器装置110可包含例如一或多个易失性存储器装置(例如,存储器阵列140)、一或多个非易失性存储器装置(例如,存储器阵列130)或此类的组合的媒体。
存储器装置110可以是存储装置、存储器模块,或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、安全数字(SD)卡、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器以及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM)以及各种类型的非易失性DIMM(NVDIMM)。
计算系统100可以是计算装置,例如台式计算机、膝上型计算机、服务器、网络服务器、移动装置、载具(例如,飞机、无人机、火车、汽车或其它运输工具)、启用物联网(IoT)的装置、嵌入式计算机(例如,载具、工业设备或联网的商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
计算系统100可包含与一或多个存储器装置110耦合的主机装置105。在一些实例中,主机装置105与不同类型的存储器装置110耦合。图1说明与一个存储器装置110耦合的主机装置105的一个实例。如本文中所使用,“耦合到”或“与...耦合”通常是指组件之间的连接,所述连接可以是间接通信连接或直接通信连接(例如不具有居间组件),无论有线或无线,包含例如电连接、光学连接、磁连接等连接。
主机装置105可包含处理器芯片组和由所述处理器芯片组执行的软件栈。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如,NVDIMM控制器)以及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机装置105使用存储器装置110,以例如将数据写入到存储器装置110和从存储器装置110读取数据。
主机装置105可使用物理主机接口耦合到存储器装置110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、双数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、双列直插式存储器模块(DIMM)接口(例如,支持DDR的DIMM套接接口)等。物理主机接口可用以在主机装置105与存储器装置110之间传输数据。主机装置105可另外利用非易失性存储器高速(NVMe)接口以在存储器装置110通过PCIe接口与主机装置105耦合时存取存储器组件(例如,存储器装置130)。物理主机接口可提供用于在存储器装置110与主机装置105之间传送控制、地址、数据以及其它信号的接口。主机装置105可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器装置。
存储器阵列140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器阵列140)可以是但不限于随机存取存储器(RAM),例如,动态RAM(DRAM)和同步DRAM(SDRAM)。
非易失性存储器装置(例如存储器阵列130)的一些实例包含NAND型快闪存储器和就地写入存储器,例如三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变来执行位存储。另外,相比于许多基于快闪的存储器,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)和三维NAND(3D NAND)。
存储器阵列130中的每一者可包含一或多个类型的存储器单元。一个类型的存储器单元,例如单层级单元(SLC),可每单元存储一个位。其它类型的存储器单元,例如多层级单元(MLC)、三层级单元(TLC)和四层级单元(QLC)可每单元存储多个位。在一些实例中,存储器阵列130中的每一者可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC或此类的任何组合。在一些实例中,特定存储器装置可包含存储器单元的SLC部分以及MLC部分、TLC部分或QLC部分。存储器阵列130中的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,NAND),页可经分组以形成块。
虽然描述了例如非易失性存储器单元的3D交叉点阵列以及NAND型快闪存储器(例如,2D NAND、3D NAND)的非易失性存储器装置,但存储器阵列130可基于任何其它类型的非易失性存储器,例如,只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫族化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电RAM(FeRAM)、磁RAM(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、“或非”(NOR)快闪存储器,以及电可擦除可编程ROM(EEPROM)。
存储器装置控制器115(或简称控制器115)可与存储器阵列130通信以执行操作,例如在存储器阵列130处读取数据、写入数据或擦除数据,以及其它此类操作。存储器装置控制器115可包含硬件,例如一或多个集成电路和/或离散组件、缓冲器存储器或此类的组合。硬件可包含具有执行本文中所描述的操作的专用(即,硬译码)逻辑的数字电路系统。存储器装置控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理器(DSP))或其它合适的处理器。
存储器装置控制器115可包含经配置以执行存储在本地存储器125(例如,高速缓存)中的指令的处理器120(例如,中央处理单元)。本地存储器125可以是磁性RAM(MRAM)的实例。在所说明的实例中,存储器装置控制器115的本地存储器125包含嵌入式存储器,所述嵌入式存储器经配置以存储用于执行控制存储器装置110的操作的各种过程、操作、逻辑流程和例程的指令,包含处置存储器装置110与主机装置105之间的通信。
在一些实例中,本地存储器125可包含存储存储器指针、所提取数据等的存储器寄存器。本地存储器125还可包含用于存储微码的只读存储器(ROM)。在本公开的一些实例中,存储器装置110不包含存储器装置控制器115,且可改为依赖于(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供的)外部控制。
一般来说,存储器装置控制器115可从主机装置105接收命令或操作且可将所述命令或操作转换成指令或适当命令,以实现对存储器阵列130和/或存储器阵列140的所要存取。存储器装置控制器115可负责其它操作,例如耗损均衡操作、无用单元收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作,以及与存储器阵列130相关联的逻辑地址(例如,逻辑块地址(LBA)、名字空间)与物理地址(例如,物理块地址)之间的地址转译。存储器装置控制器115还可包含主机接口电路系统以经由物理主机接口与主机装置105通信。主机接口电路系统可将从主机系统接收的命令转换成命令指令以存取存储器阵列130和/或存储器阵列140以及将与存储器阵列130和/或存储器阵列140相关联的响应转换成用于主机装置105的信息。
存储器装置110还可包含未说明的额外电路系统或组件。在一些实例中,存储器装置110可包含高速缓存或缓冲器(例如,DRAM)以及可从存储器装置控制器115接收地址且对所述地址进行解码以存取存储器阵列130的地址电路系统(例如,行解码器和列解码器)。
在一些实例中,存储器阵列130包含结合存储器装置控制器115操作以对存储器阵列130的一或多个存储器单元执行操作的本地媒体控制器135。外部控制器(例如,存储器装置控制器115)可在外部管理存储器阵列130(例如,对存储器阵列130执行媒体管理操作)。在一些实例中,存储器阵列130是受管理存储器装置,其为与用于同一存储器装置封装内的媒体管理的本地控制器(例如,本地控制器135)组合的原始存储器装置。受管理存储器装置的实例是受管理NAND(MNAND)装置。
存储器阵列130可与错误控制单元145(ECU)通信。ECU可执行例如错误检测操作、错误校正操作、错误校正码操作或其组合等操作。在一些情况下,存储器阵列130的NAND的一部分可存储重放脚本(例如,启动序列)。重放脚本可包含启动程序的命令和地址以在启动程序期间跟踪位置。
存储器装置110可包含可标识启动程序的命令的预取管理器150。预取管理器150可将存储于存储器阵列130中的数据传送到存储器装置110的高速缓存。举例来说,存储器装置110可预取数据且将数据存储于存储器装置110的共享存储器(例如,在一些情况下为本地存储器125)中。存储器装置110可在启动程序期间接收请求存储于存储器阵列中的数据的命令。存储器装置110可标识传送到高速缓存的数据是命令所请求的相同数据。举例来说,存储器装置110可标识高速缓存命中。存储器装置110可从高速缓存检索预取的数据且将所述数据输出到主机装置105。
在一些实例中,存储器装置控制器115包含预取管理器150的至少一部分。举例来说,存储器装置控制器115可包含处理器120(例如,处理装置),所述处理器经配置以执行存储在本地存储器125中的指令以用于执行本文所描述的操作。在一些实例中,预取管理器150是主机装置105、应用程序或操作系统的一部分或与所述主机装置、应用程序或操作系统通信。存储器装置控制器115可包含协议155。协议155可与主机装置105介接。
预取管理器150可检测启动程序。在一些情况下,启动程序可包含一或多个启动阶段。启动程序的启动阶段可包含Uboot阶段(例如,启动分区)、使用重放保护存储器块(RPMB)分区的认证阶段、选择更新哪个操作系统映像(operating system image)的预启动阶段,以及操作系统启动阶段。预取管理器150可改善或减少在启动程序期间用以启动系统的时间。下文描述关于预取管理器150的操作的其它细节。
系统100可包含存储指令(例如,固件)的非暂时性计算机可读媒体(例如,本地存储器125、存储器阵列130和/或存储器阵列140),所述指令用于执行本文所描述的在系统启动程序期间进行读取预测的技术(例如,方法200、400和500)。举例来说,指令在由控制器115(或更具体地说,控制器115的处理器120)执行时可使控制器执行映射本文所描述的描述符的方法。
图2是根据本文所公开的实例的支持系统启动程序期间的读取预测的实例方法的流程图。方法200可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实例中,方法200可由存储器装置或存储器装置的系统执行,如参考图1和3所描述。在一些实例中,存储器装置可执行一组代码来控制存储器装置的功能元件以执行下文描述的功能。另外或替代地,存储器装置可使用专用硬件来执行下文描述的功能的各方面。在一些实例中,方法200由参考图1描述的预取管理器150执行。尽管以特定顺序或次序来展示,但除非另有指定,否则可修改过程的次序。因此,所说明实施例用作实例,且所说明过程可以不同次序执行,且一些过程可并行地执行。另外,在各种实例中可省去一或多个过程。因此,并非每个实例中都使用所有过程。其它过程流也是可能的。
在205处,可标识启动程序的发生。举例来说,存储器装置可标识启动程序的命令。启动程序可在主机装置上电(例如,接通)时或在激活与主机装置相关联的应用程序时发生。举例来说,当激活由主机装置实施的操作系统时可发生启动程序。存储器装置内的定时器、计数器或其它组件可检测在启动程序期间发送到主机装置的数据量。举例来说,存储器装置可对发送到主机装置的数据量进行计数(例如,标识),直到启动程序完成为止。在一些情况下,定时器或计数器可对发送到主机装置的LBA的量进行计数。在启动程序期间,可将数据从存储器装置传送到主机装置。
当主机装置将请求启动程序的信号发送到存储器装置时,也可发生启动程序。在此类情况下,主机装置可将指示开始启动程序和结束启动程序(例如,指示启动程序完成)的时间的信号(例如,旗标)发送到存储器装置。存储器装置可包含命令序列检测器以检测命令序列,所述命令序列表示启动开始时间和启动结束时间。在一些实例中,存储器装置可接收启动程序的下一命令。
可记录系统启动程序。举例来说,存储器装置可记录启动程序的启动序列(例如,重放脚本)且将其存储在存储器阵列中。启动序列可以是标识启动程序的分区、LBA地址和大小的列表。在一些实例中,启动序列可包含顺序命令的列表。在一些情况下,存储器装置可基于检测到启动程序的改变而修改所存储启动序列。
在210处,可确定是否预取数据。在一些情况下,存储器装置可确定执行启动程序是否使用预取的数据。如果存储器装置确定启动程序或启动程序的某方面不使用预取的数据或预取数据,则方法200可进行到240,其中从存储器阵列检索数据。
如果确定启动程序使用预取的数据或包含对数据的预取,则方法200可进行到215。在一些情况下,存储器装置可基于标识启动程序的下一命令的候选对象而确定是否预取数据。在此类情况下,存储器装置可基于存储于存储器装置的存储器阵列中的启动序列而标识下一命令的候选对象。可基于存储启动序列、修改启动序列和/或标识在启动程序期间从存储器装置传送到主机装置的数据量来标识下一命令的候选对象。在一些情况下,可同时将多个候选对象的数据存储于高速缓存中。虽然方法200描述针对单个候选对象执行单次预取,但对数据的预取可以是持续的过程。举例来说,高速缓存可存储多个候选对象的数据,且可在通过一或多个步骤或一或多个预取执行启动程序之前。
在一些情况下,存储器装置可基于确定下一命令的候选对象的地址是否在启动程序的启动序列中而确定是否预取数据。举例来说,存储器装置可将地址标识为由下一命令的候选对象指示的存储于存储器阵列中的数据。
在215处,可确定将预取哪些数据。举例来说,存储器装置可基于数据的大小、基于数据的类型或这两者而确定将预取哪些数据。在一些实例中,可预取大数据块,而可能不预取较小数据块。在一些实例中,可预取静态数据(例如,在每个启动程序期间相同的或存储在相同位置中的数据),但可不预取随机存取数据(例如,频繁改变或改变其位置的数据)。存储器装置可针对数据类型和读取大小重放LBA序列以确定将预取哪些数据。
举例来说,存储器装置可记录大数据块(例如,主机读取数据)且基于大小预取数据(例如,预取大数据块)。在此类情况下,存储器装置可标识与候选对象相关联的数据满足大小阈值。在其它实例中,存储器装置可标识与候选对象相关联的数据超过大小阈值。存储器装置可基于大小而跳过对数据的预取。举例来说,存储器装置可跳过与对相对小量的数据的请求相关联的数据的预取。在此类情况下,存储器装置可标识与候选对象相关联的数据低于大小阈值,且基于标识与所述候选对象相关联的数据低于大小阈值而制止输出存储在高速缓存中的数据。在一些情况下,存储器装置可预取与小的随机读取相关联的数据且将所述数据存储在高速缓存中,但存储器装置可从高速缓存检索(例如,输出)大数据块而非小的随机读取。在此类情况下,小的随机读取(例如,低于大小阈值的数据)可保持在高速缓存中。
存储器装置可基于数据的类型而确定将预取哪些数据。举例来说,存储器装置可基于确定数据为固定数据(例如,顺序数据)而预取数据。存储器装置可确定所请求数据的地址是否顺接(sequential to)存储于高速缓存中的数据的地址。在此类情况下,启动序列可包含固定LBA处的固定启动序列的部分,且存储器装置可基于固定启动序列而确定将预取哪些数据。基于检测到固定启动序列而预取数据可增加预取的数据的量且增加执行高速缓存命中的准确性。
在一些情况下,存储器装置可从主机装置接收标识启动程序的哪部分为静态(例如,顺序)的旗标。举例来说,存储器装置可基于确定所请求数据的地址顺接所存储数据的地址而检测启动程序的顺序存取部分。在此类情况下,输出所述数据可基于确定启动程序的顺序存取部分(例如,确定所请求数据的地址顺接所存储数据的地址)。
在其它实例中,存储器装置可从主机装置接收标识启动程序的哪部分为动态(例如,随机)的旗标。举例来说,存储器装置可基于标识由下一命令请求的数据未存储于高速缓存中而检测启动程序的随机存取部分。在此类情况下,可基于检测启动程序的随机存取部分而输出存储于存储器阵列中的数据。
在220处,可预取数据。举例来说,存储器装置可将由下一命令的候选对象指示的存储在存储器阵列中的数据传送到存储器装置的高速缓存。可基于接收到下一命令而预取所述数据。在一些实例中,存储器装置可预加载(例如,预取)数据而不论启动程序内的位置如何。
可在启动程序的空闲周期的至少一部分期间预取数据。在一些启动程序中,可存在其中存储器装置可能更活跃的周期以及其中存储器装置可能不大活跃的周期(例如,空闲周期)。此类技术可充分利用更多空闲周期来执行预取且由此减小启动程序的时延。在此类情况下,存储器装置可确定用于在启动程序期间预取数据的空闲时间窗口。存储器装置可经由时间戳标识空闲时间窗口,使得当下一启动程序发生时,存储器装置可标识用以预取数据的空闲周期。存储器装置的启动定时器和空闲时间检测单元可检测到启动程序发生且存在用于预取数据的时间窗口,使得可在启动程序的背景中预取所述数据。在存储器装置记录时戳之后,存储器装置可标识用以预取数据的窗口,由此改善空闲时间使用。胜于每当接收到读取请求时使用资源来提取数据,存储器装置可预取启动序列中指示的读取的数据,由此减少处理时间、开销和功耗。
在空闲时间期间预取数据可允许存储器装置预取数据而不延迟或负面地影响其它组件(例如,主机装置、系统的共享存储器等)和存储器装置的操作(例如,启动程序)。存储器装置可从NAND预取数据且存储在高速缓存的部分(例如,共享存储器)中。用于存储预取的数据的高速缓存的部分可不另外用于所述启动程序。在此类情况下,在启动程序期间可能空闲的高速缓存的部分可供用于存储预取的数据,而不会负面地影响存储器装置的其它组件。在此类情况下,当主机装置发布下一启动程序时,数据已存储在共享存储器中,且下一启动序列不由后端处理,由此减少处理时间且增加效率。
在一些情况下,存储器装置可包含在启动程序期间用于静态RAM(SRAM)分配(例如,独立NAND冗余阵列(RAIN)奇偶校验、无用单元收集表ram、写入与读取缓冲器分配)的硬件。在此类情况下,存储器装置可预取数据以存储于高速缓存中而非使用利用读取和写入缓冲器的主机读取数据缓冲器分配。举例来说,SRAM和直接存储器存取(DMA)预取器可填充来自L2P表(例如,逻辑和/或物理地址)的读取缓冲器。
在一些实例中,可解析(例如,切片)启动序列以将启动序列的部分预取达预定大小。在一些实例中,存储器装置可从启动序列解析出下一启动程序的未使用的预取的数据。在此类情况下,在每个启动程序期间,可预取额外量的数据以允许启动序列动态地增长,同时还解析出启动序列的部分,使得每个启动程序添加可产生高速缓存命中的预取的数据。
在225处,可标识是否发生高速缓存命中。举例来说,存储器装置可从主机装置接收请求存储于存储器阵列中的数据的命令以作为启动程序的部分。当存储器装置标识命令所请求的数据是已存储于高速缓存中的数据(例如,预取的数据)时,可发生高速缓存命中。存储器装置可搜索启动序列且将命令所请求的数据的地址与存储于高速缓存中的数据匹配。举例来说,存储器装置可标识存储器阵列的地址用于由命令请求(且由命令指示)的数据且匹配与存储于高速缓存中的数据相关联的存储器阵列的地址。如果存储器装置确定高速缓存命中发生,则方法200可进行到操作235。
如果主机装置将读取拆分成两个段,则启动程序可能无法匹配,因为与读取相关联的地址和大小不匹配每一个别段的大小,而实际上,与读取相关联的地址可匹配组合的个别段的大小。在此类情况下,预取的数据可在高速缓存中,使得可针对第一段发生第一高速缓存命中,且可针对第二段发生第二高速缓存命中。如果存储器装置确定高速缓存命中未发生,则方法200可进行到操作230。
在230处,可标识高速缓存未命中,这意味着启动程序的命令所请求的数据未存储于高速缓存中。举例来说,存储器装置可确定由命令指示的地址不是启动序列中的下一地址。存储器装置可标识下一命令所请求的数据未存储于高速缓存中。在一些情况下,存储器装置可基于标识下一命令所请求的数据未存储于高速缓存中而将存储于存储器阵列中的数据输出到主机装置。存储器装置可舍弃对应于在与下一命令请求的数据相关联的地址之前的数据的所存储数据。举例来说,存储器装置可基于输出存储于存储器阵列中的数据而从高速缓存逐出与候选对象相关联的数据。
在一些情况下,主机装置可修改启动序列。在此类情况下,预取的数据可不与经修改启动序列相关联。基于经修改启动序列,可发生高速缓存未命中,且存储器装置可从高速缓存逐出预取的数据。在其它实例中,存储器装置可标识存储于高速缓存中的数据不与命令所请求的数据相同。在此类情况下,存储器装置可舍弃存储于高速缓存中的数据和命令所请求的数据。在其它实例中,存储器装置可等待舍弃存储于高速缓存中的数据和命令所请求的数据,直到命令所请求的下一数据被标识为存储于高速缓存中的数据为止。
在235处,如果确定预取程序与启动程序未对齐,则可相对于启动程序重新定向预取程序。存储器装置可能无法标识存储器装置在启动程序中的位置(例如,在启动程序中缺失)。在此类情况下,存储器装置随后可标识启动程序内的位置(例如,定位)。存储器装置可通过使用命令、使用定时器(例如,计数器)或这两者来相对于启动程序重新定向。
在一些情况下,操作235可在标识高速缓存未命中之后发生。在此类情况下,存储器装置可在确定预取的数据到期(例如,数据被预取但可能未被请求)之后相对于启动程序重新定向。在一些实例中,如果存储器装置标识高速缓存未命中且接着可能发生高速缓存命中,则存储器装置可在发生高速缓存命中之前相对于启动程序重新定向且从高速缓存逐出数据。随着启动序列继续,存储器装置可舍弃任何主机读取命中或下一LBA地址匹配上的数据。
在一些情况下,操作235可在标识高速缓存命中之后发生。如果发生高速缓存命中,则可将数据发送到主机装置,且可使高速缓存中剩余的其余数据(例如,未使用的数据)失效。
在一些实例中,存储器装置可在启动程序中向前跳转以开始在启动序列中的相应地址处预取数据。举例来说,如果存储器装置在启动序列内缺失(例如,失去当前位置或启动序列内的位置),则存储器装置可重新定向自身且跳转到启动程序中的当前点,且再次尝试预取。存储器装置可经由计数器对命令进行计数且在启动序列中向前移动以进行预取。在其它实例中,存储器装置可搜索启动序列以发现主机装置是否在启动序列中向前跳转。
主机装置可修改启动序列。在此类情况下,存储器装置可使用命令相对于启动程序重新定向。存储器装置可确定来自主机装置的下一命令是否匹配在存储器装置处接收到的最后命令。如果来自主机装置的下一命令不与在存储器装置处接收到的最后命令匹配,则存储器装置可确定向前命令是否可与在存储器装置处接收到的最后命令匹配。在此类情况下,存储器装置能够在启动序列中进行预测且标识问题(例如,预取中的错误)。通过确定启动序列中的当前命令的位置,存储器装置能够标识启动程序内的位置且相对于启动程序重新定向。
存储器装置可包含允许启动序列和主机序列重新同步的缓冲器。在一些情况下,存储器装置可包含LBA搜索匹配以处置高速缓存未命中,且在高速缓存未命中之前或之后搜索地址且在启动序列中向前跳转。如果读取是随机的(例如,未重复),则存储器装置可在高速缓存未命中之前或之后搜索地址。如果存储器装置预取数据,则如果主机装置未命中启动序列(例如,执行高速缓存未命中),则存储器装置可保持预取的数据,直到主机装置从未命中的预取的数据读取为止。如果主机装置不与启动程序重新同步,则存储器装置可在启动序列中停止预取或预测,以相对于启动程序重新定向。
在240处,可从高速缓存检索数据。举例来说,如果在225处,存储器装置发生高速缓存命中,则存储器装置可从共享存储器(例如,高速缓存)检索预取的数据。在此类情况下,存储器装置可基于标识存储于高速缓存中的数据是命令所请求的数据而将存储于高速缓存中的数据输出到主机装置。
在245处,可从存储器阵列检索数据。举例来说,如果在225/230处,存储器装置确定发生高速缓存未命中,则存储器装置可从存储器阵列检索数据。在此类情况下,存储器装置可将来自存储器阵列的数据输出到主机装置。
图3展示根据本文所公开的实例的支持系统启动程序期间的读取预测的存储器装置305的框图300。存储器装置305可以是如参考图1和2所描述的存储器装置的各方面的实例。存储器装置305可包含预取组件310、高速缓存命中标识器315、预测组件320、命令组件325和数据组件330。这些组件中的每一者可直接或间接地(例如,经由一或多个总线)彼此通信。
预取组件310可将存储于存储器阵列中的由下一命令的候选对象指示的第一数据传送到存储器装置的高速缓存。在一些实例中,预取组件310可在启动程序期间标识空闲周期,其中在空闲周期的至少一部分期间将第一数据传送到高速缓存。在一些实例中,预取组件310可标识与候选对象相关联的第一数据满足大小阈值,其中将第一数据传送到高速缓存基于标识与候选对象相关联的第一数据满足大小阈值。
高速缓存命中标识器315可标识存储于高速缓存中的第一数据是命令所请求的第二数据。在一些实例中,高速缓存命中标识器315可标识第一数据的第一地址与第二数据的第二地址之间的匹配,其中标识存储于高速缓存中的第一数据是命令所请求的第二数据基于标识所述匹配。
在一些实例中,高速缓存命中标识器315可确定第二数据的第二地址是否顺接第一数据的第一地址,其中输出第一数据基于确定第二地址顺接第一地址。在一些实例中,高速缓存命中标识器315可基于确定第二地址是否顺接第一地址而检测启动程序的顺序存取部分,其中输出存储于高速缓存中的第一数据基于检测启动程序的顺序存取部分。
对于存储器装置,预测组件320可基于存储于存储器装置的存储器阵列中的启动序列而标识与主机装置相关联的启动程序的下一命令的候选对象。在一些实例中,预测组件320可标识从存储器装置传送到主机装置的数据量,其中标识下一命令的候选对象基于标识传送的数据量。在一些实例中,预测组件320可标识与候选对象相关联的第一数据低于大小阈值。
在一些实例中,预测组件320可标识由下一命令的候选对象指示的存储于存储器阵列中的第一数据的第一地址,其中传送第一数据基于标识所述第一地址。在一些实例中,预测组件320可标识下一命令请求的第二数据未存储于高速缓存中。
在一些实例中,预测组件320可基于标识下一命令所请求的第二数据未存储于高速缓存中而检测启动程序的随机存取部分,其中输出存储于存储器阵列中的第二数据基于检测启动程序的随机存取部分。在一些实例中,预测组件320可接收与主机装置相关联的启动程序的下一命令,其中传送第一数据基于接收下一命令。
在一些实例中,预测组件320可将启动序列存储于存储器阵列中,所述启动序列包含一组顺序命令,其中标识下一命令的候选对象基于存储启动序列。在一些实例中,预测组件320可基于检测到启动序列的改变而修改启动序列。
作为启动程序的部分且基于传送第一数据,命令组件325可从主机装置接收请求存储于存储器阵列中的第二数据的命令。在一些实例中,命令组件325可标识命令所指示的存储于存储器阵列中的第二数据的第二地址。
数据组件330可基于标识存储于高速缓存中的第一数据是命令所请求的第二数据而将存储于高速缓存中的第一数据输出到主机装置。在一些实例中,数据组件330可基于标识与候选对象相关联的第一数据低于大小阈值而制止输出存储于高速缓存中的第一数据。在一些实例中,数据组件330可基于标识下一命令所请求的第二数据未存储于高速缓存中而将存储于存储器阵列中的第二数据输出到主机系统。在一些实例中,数据组件330可基于输出存储于存储器阵列中的第二数据而从高速缓存逐出与候选对象相关联的第一数据。
图4展示说明根据本文所公开的实例的支持系统启动程序期间的读取预测的方法或多个方法400的流程图。方法400的操作可由本文描述的存储器装置或其组件来实施。举例来说,可由参考图1和3所描述的存储器装置执行方法400的操作。在一些实例中,存储器装置可执行一组指令以控制存储器装置的功能元件以执行所描述的功能。另外或替代地,存储器装置可使用专用硬件来执行描述的功能的各方面。
在405处,对于存储器装置,存储器装置可基于存储于存储器装置的存储器阵列中的启动序列而标识与主机装置相关联的启动程序的下一命令的候选对象。可根据本文所描述的方法来执行405的操作。在一些实例中,可由参考图3所描述的预测组件执行405的操作的各方面。
在410处,存储器装置可将存储于存储器阵列中的由下一命令的候选对象指示的第一数据传送到存储器装置的高速缓存。可根据本文所描述的方法来执行410的操作。在一些实例中,可由参考图3所描述的预取组件执行410的操作的各方面。
在415处,作为启动程序的部分且基于传送第一数据,存储器装置可从主机装置接收请求存储于存储器阵列中的第二数据的命令。可根据本文所描述的方法来执行415的操作。在一些实例中,415的操作的各方面可由参考图3所描述的命令组件执行。
在420处,存储器装置可标识存储于高速缓存中的第一数据是命令所请求的第二数据。可根据本文所描述的方法来执行420的操作。在一些实例中,可由参考图3所描述的高速缓存命中标识器来执行420的操作的各方面。
在425处,存储器装置可基于标识存储于高速缓存中的第一数据是命令所请求的第二数据而将存储于高速缓存中的第一数据输出到主机装置。可根据本文所描述的方法来执行425的操作。在一些实例中,425的操作的各方面可由参考图3所描述的数据组件执行。
在一些实例中,如本文所描述的设备可执行例如方法400的方法或多个方法。所述设备可包含特征、构件或指令(例如,存储可由处理器执行的指令的非暂时性计算机可读媒体)以用于:对于存储器装置,基于存储于存储器装置的存储器阵列中的启动序列而标识与主机装置相关联的启动程序的下一命令的候选对象;向存储器装置的高速缓存传送由所述下一命令的候选对象指示的存储于存储器阵列中的第一数据;作为启动程序的部分且基于传送所述第一数据,从主机装置接收请求存储于存储器阵列中的第二数据的命令;标识存储于高速缓存中的第一数据是命令所请求的第二数据;以及基于标识存储于高速缓存中的第一数据是命令所请求的第二数据,向主机装置输出存储于高速缓存中的第一数据。
本文所描述的方法400和设备的一些实例还可包含操作、特征、构件或指令以用于在启动程序期间标识空闲周期,其中可在空闲周期的至少一部分期间将第一数据传送到高速缓存。
本文所描述的方法400和设备的一些实例还可包含操作、特征、构件或指令以用于标识从存储器装置传送到主机装置的数据量,其中标识下一命令的候选对象可基于标识传送的数据量。
本文所描述的方法400和设备的一些实例还可包含操作、特征、构件或指令以用于标识与候选对象相关联的第一数据满足大小阈值,其中将第一数据传送到高速缓存可基于标识与候选对象相关联的第一数据满足大小阈值。
本文所描述的方法400和设备的一些实例还可包含操作、特征、构件或指令以用于标识与候选对象相关联的第一数据可能低于大小阈值以及基于标识与候选对象相关联的第一数据可能低于大小阈值而制止输出存储于高速缓存中的第一数据。
本文所描述的方法400和设备的一些实例还可包含操作、特征、构件或指令以用于标识由下一命令的候选对象指示的存储于存储器阵列中的第一数据的第一地址,其中传送第一数据可基于标识第一地址。
本文所描述的方法400和设备的一些实例还可包含操作、特征、构件或指令以用于标识由命令指示的存储于存储器阵列中的第二数据的第二地址以及标识第一数据的第一地址与第二数据的第二地址之间的匹配,其中标识存储于高速缓存中的第一数据可为命令所请求的第二数据可基于标识所述匹配。
本文所描述的方法400和设备的一些实例还可包含操作、特征、构件或指令以用于确定第二数据的第二地址是否可顺接第一数据的第一地址,其中输出第一数据可基于确定第二地址可顺接第一地址。
本文所描述的方法400和设备的一些实例还可包含操作、特征、构件或指令以用于基于确定第二地址是否可顺接第一地址而检测启动程序的顺序存取部分,其中输出存储于高速缓存中的第一数据可基于检测启动程序的顺序存取部分。
本文所描述的方法400和设备的一些实例还可包含操作、特征、构件或指令以用于标识下一命令所请求的第二数据可能未存储于高速缓存中以及基于标识下一命令所请求的第二数据可能未存储于高速缓存中而向主机系统输出存储于存储器阵列中的第二数据。
本文所描述的方法400和设备的一些实例还可包含操作、特征、构件或指令以用于基于输出存储于存储器阵列中的第二数据而从高速缓存逐出与候选对象相关联的第一数据。
本文所描述的方法400和设备的一些实例还可包含操作、特征、构件或指令以用于基于标识下一命令所请求的第二数据可能未存储于高速缓存中而检测启动程序的随机存取部分,其中输出存储于存储器阵列中的第二数据可基于检测启动程序的随机存取部分。
本文所描述的方法400和设备的一些实例还可包含操作、特征、构件或指令以用于接收与主机装置相关联的启动程序的下一命令,其中传送第一数据可基于接收下一命令。
本文所描述的方法400和设备的一些实例还可包含操作、特征、构件或指令以用于:将启动序列存储在存储器阵列中,所述启动序列包含一组顺序命令,其中标识下一命令的候选对象可基于存储所述启动序列;以及基于检测到启动序列的改变而修改所述启动序列。
图5展示说明根据本文所公开的实例的支持系统启动程序期间的读取预测的方法或多个方法500的流程图。方法500的操作可由本文描述的存储器装置或其组件来实施。举例来说,可由参考图1和3所描述的存储器装置执行方法500的操作。在一些实例中,存储器装置可执行一组指令以控制存储器装置的功能元件以执行所描述的功能。另外或替代地,存储器装置可使用专用硬件来执行描述的功能的各方面。
在505处,对于存储器装置,存储器装置可基于存储于存储器装置的存储器阵列中的启动序列而标识与主机装置相关联的启动程序的下一命令的候选对象。可根据本文所描述的方法来执行505的操作。在一些实例中,可由参考图3所描述的预测组件执行505的操作的各方面。
在510处,存储器装置可在启动程序期间标识空闲周期,其中在空闲周期的至少一部分期间将第一数据传送到高速缓存。可根据本文所描述的方法来执行510的操作。在一些实例中,可由参考图3所描述的预取组件执行510的操作的各方面。
在515处,存储器装置可将存储于存储器阵列中的由下一命令的候选对象指示的第一数据传送到存储器装置的高速缓存。可根据本文所描述的方法来执行515的操作。在一些实例中,可由参考图3所描述的预取组件执行515的操作的各方面。
在520处,作为启动程序的部分且基于传送第一数据,存储器装置可从主机装置接收请求存储于存储器阵列中的第二数据的命令。可根据本文所描述的方法来执行520的操作。在一些实例中,520的操作的各方面可由参考图3所描述的命令组件执行。
在525处,存储器装置可标识存储于高速缓存中的第一数据是命令所请求的第二数据。可根据本文所描述的方法来执行525的操作。在一些实例中,可由参考图3所描述的高速缓存命中标识器来执行525的操作的各方面。
在530处,存储器装置可基于标识存储于高速缓存中的第一数据是命令所请求的第二数据而将存储于高速缓存中的第一数据输出到主机装置。可根据本文所描述的方法来执行530的操作。在一些实例中,530的操作的各方面可由参考图3所描述的数据组件执行。
应注意,本文描述的方法描述了可能的实施方案,且操作和步骤可重新布置或以其它方式加以修改,且其它实施方案是可能的。此外,可组合来自两个或更多个方法的部分。
描述一种设备。所述设备可包含存储器阵列、高速缓存和控制组件,所述控制组件与所述存储器阵列耦合且经配置以使所述设备:对于存储器装置,基于存储于存储器装置的存储器阵列中的启动序列而标识与主机装置相关联的启动程序的下一命令的候选对象;向存储器装置的高速缓存传送由所述下一命令的候选对象指示的存储于存储器阵列中的第一数据;作为启动程序的部分且基于传送所述第一数据,从主机装置接收请求存储于存储器阵列中的第二数据的命令;标识存储于高速缓存中的第一数据是命令所请求的第二数据;以及基于标识存储于高速缓存中的第一数据是命令所请求的第二数据,向主机装置输出存储于高速缓存中的第一数据。
一些实例可包含控制组件,所述控制组件另外经配置以使设备在启动程序期间标识空闲周期,其中可在空闲周期的至少一部分期间将第一数据传送到高速缓存。
一些实例可包含控制组件,所述控制组件另外经配置以使设备标识从存储器装置传送到主机装置的数据量,其中标识下一命令的候选对象可基于标识传送的数据量。
一些实例可包含控制组件,所述控制组件另外经配置以使设备标识与候选对象相关联的第一数据满足大小阈值,其中将第一数据传送到高速缓存可基于标识与候选对象相关联的第一数据满足大小阈值。
一些实例可包含控制组件,所述控制组件另外经配置以使设备标识与候选对象相关联的第一数据可能低于大小阈值以及基于标识与候选对象相关联的第一数据可能低于大小阈值而制止输出存储于高速缓存中的第一数据。
一些实例可包含控制组件,所述控制组件另外经配置以使设备标识由下一命令的候选对象指示的存储于存储器阵列中的第一数据的第一地址,其中传送第一数据可基于标识第一地址。
一些实例可包含控制组件,所述控制组件另外经配置以使设备标识由命令指示的存储于存储器阵列中的第二数据的第二地址以及标识第一数据的第一地址与第二数据的第二地址之间的匹配,其中标识存储于高速缓存中的第一数据可为命令所请求的第二数据可基于标识所述匹配。
一些实例可包含控制组件,所述控制组件另外经配置以使设备确定第二数据的第二地址是否可顺接第一数据的第一地址,其中输出第一数据可基于确定第二地址可顺接第一地址。
一些实例可包含控制组件,所述控制组件另外经配置以使设备基于确定第二地址是否可顺接第一地址而检测启动程序的顺序存取部分,其中输出存储于高速缓存中的第一数据可基于检测启动程序的顺序存取部分。
一些实例可包含控制组件,所述控制组件另外经配置以使设备标识下一命令所请求的第二数据可能未存储于高速缓存中以及基于标识下一命令所请求的第二数据可能未存储于高速缓存中而向主机系统输出存储于存储器阵列中的第二数据。
一些实例可包含控制组件,所述控制组件另外经配置以使设备基于输出存储于存储器阵列中的第二数据而从高速缓存逐出与候选对象相关联的第一数据。
一些实例可包含控制组件,所述控制组件另外经配置以使设备基于标识下一命令所请求的第二数据可能未存储于高速缓存中而检测启动程序的随机存取部分,其中输出存储于存储器阵列中的第二数据可基于检测启动程序的随机存取部分。
一些实例可包含控制组件,所述控制组件另外经配置以使设备接收与主机装置相关联的启动程序的下一命令,其中传送第一数据基于接收下一命令。
一些实例可包含控制组件,所述控制组件另外经配置以使设备将启动序列存储在存储器阵列中,所述启动序列包含一组顺序命令,其中标识下一命令的候选对象可基于存储所述启动序列;以及基于检测到启动序列的改变而修改所述启动序列。
可使用多种不同技术和技艺中的任一者来表示本文所描述的信息和信号。例如,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。一些图可能将信号说明为单个信号;然而,所属领域的一般技术人员应了解,所述信号可表示信号总线,其中总线可具有各种位宽度。
术语“电子连通”、“导电接触”、“连接”和“耦合”可指支持信号在组件之间流动的组件之间的关系。如果组件之间存在可在任何时间支持信号在组件之间流动的任何导电路径,则认为组件彼此电子连通(或彼此导电接触或彼此连接或彼此耦合)。在任何给定时间,基于包含所连接组件的装置的操作,彼此电子连通(或彼此导电接触、或彼此连接、或彼此耦合)的组件之间的导电路径可以是开路或闭路。所连接组件之间的导电路径可以是组件之间的直接导电路径,或所连接组件之间的导电路径可以是间接导电路径,其可包含例如开关、晶体管或其它组件等中间组件。在一些实例中,可例如使用例如开关或晶体管等一或多个中间组件来中断所连接组件之间的信号流一段时间。
本文中论述的包含存储器阵列在内的装置可形成于例如硅、锗、硅-锗合金、砷化镓、氮化镓等半导体衬底上。在一些实例中,所述衬底是半导体晶片。在其它情况下,衬底可以是绝缘体上硅(SOI)衬底,例如玻璃上硅(SOG)或蓝宝石上硅(SOS),或在另一衬底上的半导体材料的外延层。可通过使用包含但不限于磷、硼或砷等各种化学物种的掺杂来控制衬底或衬底的子区的传导性。掺杂可在衬底的初始形成或生长期间通过离子注入或通过任何其它掺杂方式来进行。
本文中所论述的开关组件或晶体管可表示场效应晶体管(FET),且包括包含源极、漏极和栅极的三端装置。各端可通过例如金属的导电材料连接到其它电子元件。源极和漏极可导电,且可包括经重掺杂半导体区,例如简并半导体区。源极和漏极可通过轻掺杂半导体区或沟道分离。如果沟道是n型(即,多数载流子是电子),则FET可称作n型FET。如果沟道是p型(即,多数载流子是空穴),则FET可被称为p型FET。所述沟道可由绝缘栅极氧化物封端。可通过将电压施加到栅极来控制沟道传导性。举例来说,将正电压或负电压分别施加到n型FET或p型FET可使得沟道变为导电的。当大于或等于晶体管的阈值电压的电压施加到晶体管栅极时,晶体管可“接通”或“已激活”。当小于晶体管的阈值电压的电压施加到晶体管栅极时,晶体管可“断开”或“解除激活”。
本文中结合附图阐述的描述内容描述了实例配置,且不表示可实施的或在权利要求书的范围内的所有实例。本文中所使用的术语“示例性”是指“充当实例、例子或说明”,且并非“优选的”或“优于其它实例”。具体实施方式包含提供对所描述的技术的理解的具体细节。然而,可在没有这些具体细节的情况下实践实施例。在一些情况下,以框图形式展示众所周知的结构和装置,以免混淆所描述实例的概念。
在附图中,类似的组件或特征可具有相同的参考标记。此外,可通过在参考标记之后跟着短划线和在类似组件当中进行区分的第二标记来区分相同类型的各种组件。如果在说明书中仅使用第一参考标记,则描述内容适用于具有相同第一参考标记而与第二参考标记无关的类似组件中的任一者。
可使用多种不同技术和技艺中的任一者来表示本文所描述的信息和信号。例如,可通过电压、电流、电磁波、磁场或磁粒子、光场或光粒子或其任何组合来表示在整个上文描述中可能参考的数据、指令、命令、信息、信号、位、符号和码片。
可用通用处理器、DSP、ASIC、FPGA或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其经设计以执行本文所描述的功能的任何组合来实施或执行结合本文中的公开内容而描述的各种说明性块和组件。通用处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合(例如,DSP与微处理器的组合、多个微处理器、一或多个微处理器结合DSP核心,或任何其它此类配置)。
本文中所描述的功能可以硬件、由处理器执行的软件、固件或其任何组合实施。如果在由处理器执行的软件中实施,则可将功能作为一或多个指令或代码存储在计算机可读媒体上或通过计算机可读媒体传输。其它实例和实施方案在本公开和所附权利要求书的范围内。举例来说,归因于软件的本质,上文所描述的功能可使用由处理器执行的软件、硬件、固件、硬连线或这些中的任一者的组合来实施。实施功能的特征也可在物理上位于各种位置处,包含经分布以使得功能的各部分在不同物理位置处实施。另外,如本文(包含权利要求书中)所使用,如在项列表(例如,以例如“中的至少一个”或“中的一或多个”的短语开头的项列表)中所使用的“或”指示包含性列表,使得例如A、B或C中的至少一个的列表意指A或B或C或AB或AC或BC或ABC(即,A和B和C)。另外,如本文所使用,短语“基于”不应理解为参考封闭条件集。例如,在不脱离本公开的范围的情况下,描述为“基于条件A”的示例性步骤可基于条件A和条件B两者。换句话说,如本文所用,短语“基于”应以与短语“至少部分地基于”相同的方式理解。
计算机可读媒体包含非暂时性计算机存储媒体和通信媒体两种,所述通信媒体包含促进将计算机程序从一处传送到另一处的任何媒体。非暂时性存储媒体可以是可由通用或专用计算机存取的任何可用媒体。借助于实例而非限制,非暂时性计算机可读媒体可包括RAM、ROM、电可擦除可编程只读存储器(EEPROM)、光盘(CD)ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于携载或存储呈指令或数据结构形式的所要程序代码构件且可由通用或专用计算机或通用或专用处理器存取的任何其它非暂时性媒体。另外,适当地将任何连接称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输软件,则所述同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术包含于媒体的定义中。如本文中所使用,磁盘和光盘包含CD、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。上述的组合也包含在计算机可读媒体的范围内。
提供本文中的描述以使得所属领域的技术人员能够制出或使用本公开。对本公开的各种修改对于所属领域的技术人员来说将是显而易见的,且本文所定义的一般原理可在不脱离本公开的范围的情况下应用于其它变型。因此,本公开不限于本文中所描述的实例和设计,而应被赋予与本文公开的原理和新颖特征一致的最广范围。
Claims (25)
1.一种设备,其包括:
存储器阵列,
高速缓存;以及
控制组件,其与所述存储器阵列耦合且经配置以使所述设备:
对于存储器装置,至少部分地基于存储于所述存储器装置的所述存储器阵列中的启动序列而标识与主机装置相关联的启动程序的下一命令的候选对象;
向所述存储器装置的所述高速缓存传送由所述下一命令的所述候选对象指示的存储于所述存储器阵列中的第一数据;
作为所述启动程序的部分且至少部分地基于传送所述第一数据,从所述主机装置接收请求存储于所述存储器阵列中的第二数据的命令;
标识存储于所述高速缓存中的所述第一数据是所述命令所请求的所述第二数据;以及
至少部分地基于标识存储于所述高速缓存中的所述第一数据是所述命令所请求的所述第二数据,向所述主机装置输出存储于所述高速缓存中的所述第一数据。
2.根据权利要求1所述的设备,其中所述控制组件另外经配置以使所述设备:
在所述启动程序期间标识空闲周期,其中在所述空闲周期的至少一部分期间将所述第一数据传送到所述高速缓存。
3.根据权利要求1所述的设备,其中所述控制组件另外经配置以使所述设备:
标识从所述存储器装置传送到所述主机装置的数据量,其中标识所述下一命令的所述候选对象至少部分地基于标识传送的所述数据量。
4.根据权利要求1所述的设备,其中所述控制组件另外经配置以使所述设备:
标识与所述候选对象相关联的所述第一数据满足大小阈值,其中将所述第一数据传送到所述高速缓存至少部分地基于标识与所述候选对象相关联的所述第一数据满足所述大小阈值。
5.根据权利要求1所述的设备,其中所述控制组件另外经配置以使所述设备:
标识与所述候选对象相关联的所述第一数据低于大小阈值;以及
至少部分地基于标识与所述候选对象相关联的所述第一数据低于所述大小阈值而制止输出存储于所述高速缓存中的所述第一数据。
6.根据权利要求1所述的设备,其中所述控制组件另外经配置以使所述设备:
标识由所述下一命令的所述候选对象指示的存储于所述存储器阵列中的所述第一数据的第一地址,其中传送所述第一数据至少部分地基于标识所述第一地址。
7.根据权利要求6所述的设备,其中所述控制组件另外经配置以使所述设备:
标识由所述命令指示的存储于所述存储器阵列中的所述第二数据的第二地址;以及
标识所述第一数据的所述第一地址与所述第二数据的所述第二地址之间的匹配,其中标识存储于所述高速缓存中的所述第一数据是所述命令所请求的所述第二数据至少部分地基于标识所述匹配。
8.根据权利要求7所述的设备,其中所述控制组件另外经配置以使所述设备:
确定所述第二数据的所述第二地址是否顺接所述第一数据的所述第一地址,其中输出所述第一数据至少部分地基于确定所述第二地址是否顺接所述第一地址。
9.根据权利要求8所述的设备,其中所述控制组件另外经配置以使所述设备:
至少部分地基于确定所述第二地址是否顺接所述第一地址而检测所述启动程序的顺序存取部分,其中输出存储于所述高速缓存中的所述第一数据至少部分地基于检测所述启动程序的所述顺序存取部分。
10.根据权利要求1所述的设备,其中所述控制组件另外经配置以使所述设备:
标识所述下一命令所请求的所述第二数据未存储于所述高速缓存中;以及
至少部分地基于标识所述下一命令所请求的所述第二数据未存储于所述高速缓存中而将存储于所述存储器阵列中的所述第二数据输出到所述主机装置。
11.根据权利要求10所述的设备,其中所述控制组件另外经配置以使所述设备:
至少部分地基于输出存储于所述存储器阵列中的所述第二数据而从所述高速缓存逐出与所述候选对象相关联的所述第一数据。
12.根据权利要求10所述的设备,其中所述控制组件另外经配置以使所述设备:
至少部分地基于标识所述下一命令所请求的所述第二数据未存储于所述高速缓存中而检测所述启动程序的随机存取部分,其中输出存储于所述存储器阵列中的所述第二数据至少部分地基于检测所述启动程序的所述随机存取部分。
13.根据权利要求1所述的设备,其中所述控制组件另外经配置以使所述设备:
接收与所述主机装置相关联的所述启动程序的所述下一命令,其中传送所述第一数据至少部分地基于接收所述下一命令。
14.根据权利要求1所述的设备,其中所述控制组件另外经配置以使所述设备:
将所述启动序列存储在所述存储器阵列中,所述启动序列包括一组顺序命令,其中标识所述下一命令的所述候选对象至少部分地基于存储所述启动序列;以及
至少部分地基于检测到所述启动序列的改变而修改所述启动序列。
15.一种方法,其包括:
对于存储器装置,至少部分地基于存储于所述存储器装置的存储器阵列中的启动序列而标识与主机装置相关联的启动程序的下一命令的候选对象;
将所述下一命令的所述候选对象指示的存储于所述存储器阵列中的第一数据传送到所述存储器装置的高速缓存;
作为所述启动程序的部分且至少部分地基于传送所述第一数据,从所述主机装置接收请求存储于所述存储器阵列中的第二数据的命令;
标识存储于所述高速缓存中的所述第一数据是所述命令所请求的所述第二数据;以及
至少部分地基于标识存储于所述高速缓存中的所述第一数据是所述命令所请求的所述第二数据,向所述主机装置输出存储于所述高速缓存中的所述第一数据。
16.根据权利要求15所述的方法,其另外包括:
在所述启动程序期间标识空闲周期,其中在所述空闲周期的至少一部分期间将所述第一数据传送到所述高速缓存。
17.根据权利要求16所述的方法,其另外包括:
标识从所述存储器装置传送到所述主机装置的数据量,其中标识所述下一命令的所述候选对象至少部分地基于标识传送的所述数据量。
18.根据权利要求15所述的方法,其另外包括:
标识与所述候选对象相关联的所述第一数据满足大小阈值,其中将所述第一数据传送到所述高速缓存至少部分地基于标识与所述候选对象相关联的所述第一数据满足所述大小阈值。
19.根据权利要求15所述的方法,其另外包括:
标识与所述候选对象相关联的所述第一数据低于大小阈值;以及
至少部分地基于标识与所述候选对象相关联的所述第一数据低于所述大小阈值而制止输出存储于所述高速缓存中的所述第一数据。
20.根据权利要求15所述的方法,其另外包括:
标识由所述下一命令的所述候选对象指示的存储于所述存储器阵列中的所述第一数据的第一地址,其中传送所述第一数据至少部分地基于标识所述第一地址。
21.根据权利要求20所述的方法,其另外包括:
标识由所述命令指示的存储于所述存储器阵列中的所述第二数据的第二地址;以及
标识所述第一数据的所述第一地址与所述第二数据的所述第二地址之间的匹配,其中标识存储于所述高速缓存中的所述第一数据是所述命令所请求的所述第二数据至少部分地基于标识所述匹配。
22.根据权利要求15所述的方法,其另外包括:
标识所述下一命令所请求的所述第二数据未存储于所述高速缓存中;以及
至少部分地基于标识所述下一命令所请求的所述第二数据未存储于所述高速缓存中而将存储于所述存储器阵列中的所述第二数据输出到所述主机装置。
23.根据权利要求22所述的方法,其另外包括:
至少部分地基于输出存储于所述存储器阵列中的所述第二数据而从所述高速缓存逐出与所述候选对象相关联的所述第一数据。
24.一种存储包括指令的代码的非暂时性计算机可读媒体,所述指令在由电子装置的处理器执行时使所述电子装置:
对于存储器装置,至少部分地基于存储于所述存储器装置的存储器阵列中的启动序列而标识与主机装置相关联的启动程序的下一命令的候选对象;
向所述存储器装置的高速缓存传送由所述下一命令的所述候选对象指示的存储于所述存储器阵列中的第一数据;
作为所述启动程序的部分且至少部分地基于传送所述第一数据,从所述主机装置接收请求存储于所述存储器阵列中的第二数据的命令;
标识存储于所述高速缓存中的所述第一数据是所述命令所请求的所述第二数据;以及
至少部分地基于标识存储于所述高速缓存中的所述第一数据是所述命令所请求的所述第二数据,向所述主机装置输出存储于所述高速缓存中的所述第一数据。
25.根据权利要求24所述的非暂时性计算机可读媒体,其中所述指令能够由所述处理器进一步执行以:
在所述启动程序期间标识空闲周期,其中在所述空闲周期的至少一部分期间将所述第一数据传送到所述高速缓存。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/888,198 | 2020-05-29 | ||
US16/888,198 US11782727B2 (en) | 2020-05-29 | 2020-05-29 | Read prediction during a system boot procedure |
PCT/US2021/033173 WO2021242589A1 (en) | 2020-05-29 | 2021-05-19 | Read prediction during a system boot procedure |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115917501A true CN115917501A (zh) | 2023-04-04 |
Family
ID=76444604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180037545.8A Pending CN115917501A (zh) | 2020-05-29 | 2021-05-19 | 系统启动程序期间的读取预测 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11782727B2 (zh) |
CN (1) | CN115917501A (zh) |
WO (1) | WO2021242589A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11768691B2 (en) * | 2020-09-18 | 2023-09-26 | Intel Corporation | Boot process for early display initialization and visualization |
WO2022094032A1 (en) * | 2020-10-29 | 2022-05-05 | Ubiquiti Inc. | Using wireless packets to indicate device boot status |
US11847468B2 (en) * | 2021-12-22 | 2023-12-19 | Micron Technology, Inc. | Data defragmentation for a system boot procedure having random indexes indicating a relationship between sequential logical addresses and random logical addresses |
US11966752B2 (en) * | 2021-12-22 | 2024-04-23 | Micron Technology, Inc. | Data caching for fast system boot-up |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8417880B2 (en) | 2010-11-01 | 2013-04-09 | Hong Kong Applied Science and Technology Research Institute Company Limited | System for NAND flash parameter auto-detection |
US9990296B2 (en) * | 2015-07-31 | 2018-06-05 | Oracle International Corporation | Systems and methods for prefetching data |
US10394706B2 (en) | 2017-11-02 | 2019-08-27 | Western Digital Technologies, Inc. | Non-volatile storage with adaptive command prediction |
AT520793B1 (de) | 2017-12-28 | 2021-02-15 | Avl List Gmbh | Messvorrichtung zur Ermittlung einer Messgröße eines Messgases |
US11487549B2 (en) * | 2019-12-11 | 2022-11-01 | Cohesity, Inc. | Virtual machine boot data prediction |
-
2020
- 2020-05-29 US US16/888,198 patent/US11782727B2/en active Active
-
2021
- 2021-05-19 CN CN202180037545.8A patent/CN115917501A/zh active Pending
- 2021-05-19 WO PCT/US2021/033173 patent/WO2021242589A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20210373907A1 (en) | 2021-12-02 |
US11782727B2 (en) | 2023-10-10 |
WO2021242589A1 (en) | 2021-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11782727B2 (en) | Read prediction during a system boot procedure | |
US20240303087A1 (en) | Data caching for fast system boot-up | |
US12079128B2 (en) | Techniques for pre-fetching information using pattern detection | |
US12014073B2 (en) | Techniques for sequential access operations | |
CN112445719B (zh) | 用于存储器子系统的媒体管理操作的扫描技术 | |
US12019877B2 (en) | Metadata allocation in memory systems | |
US20230342060A1 (en) | Techniques for data transfer operations | |
US11861370B2 (en) | Automotive boot optimization by utilizing multiple phases of boot-up procedures | |
US11847468B2 (en) | Data defragmentation for a system boot procedure having random indexes indicating a relationship between sequential logical addresses and random logical addresses | |
US11704049B2 (en) | Optimized command sequences | |
US20230359538A1 (en) | Performance benchmark for host performance booster | |
US12007897B2 (en) | Split cache for address mapping data | |
US12014077B2 (en) | Rating-based mapping of data to memory | |
WO2023173361A1 (en) | Techniques for efficiently handling misaligned sequential reads | |
US11687291B2 (en) | Techniques for non-consecutive logical addresses | |
US11625323B2 (en) | Generating and using session tables for session-based memory management | |
US11790961B2 (en) | Memory device access techniques | |
US11301372B1 (en) | Host side memory address management | |
US20240289052A1 (en) | Ordering entries of an input command queue | |
US20230376225A1 (en) | Techniques for memory system rebuild | |
US20240281383A1 (en) | Buffer expansion for random write operations | |
US20240281369A1 (en) | Partitioned cache for random read operations | |
US20230359552A1 (en) | Memory write performance techniques | |
US20240281169A1 (en) | Reliable and efficient boot logical unit access | |
US20240264933A1 (en) | Read performance improvement using memory device latches |
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 |