CN113254363A - 具有部分逻辑到物理地址转换表的非易失性存储控制器 - Google Patents
具有部分逻辑到物理地址转换表的非易失性存储控制器 Download PDFInfo
- Publication number
- CN113254363A CN113254363A CN202110564695.6A CN202110564695A CN113254363A CN 113254363 A CN113254363 A CN 113254363A CN 202110564695 A CN202110564695 A CN 202110564695A CN 113254363 A CN113254363 A CN 113254363A
- Authority
- CN
- China
- Prior art keywords
- tdu
- lookup directory
- directory entry
- request
- lookup
- 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
- 238000013519 translation Methods 0.000 title claims abstract description 75
- 239000000872 buffer Substances 0.000 claims abstract description 70
- 238000000034 method Methods 0.000 claims abstract description 28
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 230000014616 translation Effects 0.000 description 63
- 101150015860 MC1R gene Proteins 0.000 description 4
- 102100034216 Melanocyte-stimulating hormone receptor Human genes 0.000 description 4
- 230000000717 retained effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- VLCQZHSMCYCDJL-UHFFFAOYSA-N tribenuron methyl Chemical compound COC(=O)C1=CC=CC=C1S(=O)(=O)NC(=O)N(C)C1=NC(C)=NC(OC)=N1 VLCQZHSMCYCDJL-UHFFFAOYSA-N 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004599 local-density approximation Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- 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/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
-
- 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/1009—Address translation using page tables, e.g. page table structures
-
- 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
-
- 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/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- 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/68—Details of translation look-aside buffer [TLB]
-
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
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)
Abstract
提供了用于逻辑到物理(L2P)地址转换的***、装置和方法。一种方法可以包括:接收对第一逻辑数据地址(LDA)的请求,计算相应第一转换数据单元(TDU)的第一TDU索引。第一TDU可以包含相应第一LDA的L2P条目。该方法可以进一步包括:使用第一TDU索引来搜索最近访问的TDU的查找目录条目的高速缓存,确定存在未命中高速缓存,在未命中缓冲器中生成并存储相应第一TDU的查找目录条目的未决请求,从内存内查找目录中获取相应第一TDU的查找目录条目,确定相应第一TDU的所述查找目录条目无效,在内存中保留相应第一TDU的TDU空间并生成相应第一TDU的加载请求。
Description
技术领域
本申请涉及非易失性存储***,尤其涉及非易失性存储控制器中的逻辑到物理地址转换。
背景技术
计算机***传统上使用各种各样的非易失性存储设备来维护和存储数据和指令,例如,软盘、硬盘驱动器、磁带、光盘。最近,非易失性存储设备已经在内存卡、USB闪存驱动器和固态驱动器(SSD)中得到广泛使用。数据根据物理数据地址存储在非易失性存储设备中。但是主机通常使用逻辑数据地址访问数据,因此存储控制器需要逻辑到物理转换表。
大多数存储控制器在其存储空间中存储完整的逻辑到物理(L2P)地址转换表,以供控制器加快数据访问速度。随着非易失性存储设备的密度增加,该方法将需要控制器具有大的存储空间,这将增加非易失性存储***(例如,SSD)的成本。对于具有较小尺寸(例如M.2格式)的非易失性存储***,在PCB上放置足够的内存也变得非常具有挑战性。因此,本领域中需要最小化用于非易失性存储控制器中的逻辑到物理地址转换的存储空间。
发明内容
本公开的主题涉及在存储控制器中提供逻辑到物理(L2P)地址转换的***、方法和装置。本文描述的在存储控制器中使用部分L2P地址转换表的技术可以减少存储控制器中用于L2P地址转换的存储空间。完整L2P地址转换表的条目子集可以加载到存储控制器的内存中。具有与完整L2P地址转换表的转换数据单元(TDU)的条目数匹配的条目数的查找目录可以保存在存储控制器的内存中。查找目录可以跟踪哪些TDU已加载到存储控制器的存储空间中。
每当将TDU从非易失性存储设备加载到存储控制器的内存中或从存储控制器的内存刷新到非易失性存储设备时,相应的查找目录条目都可以更新。TDU可以加载到存储控制器内存中任何可用的TDU空间中,查找目录可以跟踪TDU加载到内存中的哪个位置。如果相应TDU的查找目录条目无效,则意味着该TDU尚未加载到存储控制器的内存中,并且该TDU的加载请求可能会发送到非易失性存储设备。
在一些实施例中,可以在高速缓存中保持最近访问的查找目录条目,并且可以首先检查该高速缓存以确定TDU是否已经在内存中。可以在未命中缓冲器(例如,未命中状态保持寄存器(MSHR))中跟踪高速缓存未命中。未命中缓冲器可以处理针对同一TDU的查找目录条目或不同TDU的查找目录条目的请求的多个高速缓存未命中,并减少由使用部分L2P地址表引起的TDU加载开销。
在示例性实施例中,提供了一种方法,该方法可以包括:接收对第一逻辑数据地址(LDA)的请求;计算相应第一转换数据单元(TDU)的第一TDU索引,所述第一TDU包含相应所述第一LDA的逻辑到物理(L2P)条目;使用所述第一TDU索引搜索最近访问的TDU的查找目录条目的高速缓存;确定所述高速缓存不具有相应所述第一TDU的查找目录条目;在未命中缓冲器中生成并存储相应所述第一TDU的查找目录条目的未决请求;从内存中的内存内查找目录中获取相应所述第一TDU的查找目录条目;确定相应所述第一TDU的所述查找目录条目无效;在所述内存中保留用于所述第一TDU的TDU空间;和生成相应所述第一TDU的加载请求。
在另一个示例性实施例中,提供了一种装置,该装置可以包括:处理器和逻辑到物理(L2P)转换引擎。L2P转换引擎可以包括最近访问的转换数据单元(TDU)的查找目录条目的高速缓存和未命中缓冲器。并且,L2P转换引擎可以被配置为:从所述处理器接收对第一逻辑数据地址(LDA)的请求;计算第一转换数据单元(TDU)的第一TDU索引,所述第一TDU包含相应所述第一LDA的逻辑到物理(L2P)条目;使用所述第一TDU索引搜索最近访问的TDU的查找目录条目的高速缓存;确定所述高速缓存不具有相应所述第一TDU的查找目录条目;在所述未命中缓冲器中生成并存储相应所述第一TDU的查找目录条目的未决请求;从与所述装置耦合的内存中的内存内查找目录中获取相应所述第一TDU的查找目录条目;确定相应所述第一TDU的所述查找目录条目无效;在所述内存中保留用于所述第一TDU的TDU空间和生成相应所述第一TDU的加载请求。
在又一示例性实施例中,本文公开的还可以包括具有可执行指令的非暂时性机器可读介质,该可执行指令在由存储控制器执行时可以使存储控制器执行以下操作:接收对第一逻辑数据地址(LDA)的请求;计算第一转换数据单元(TDU)的第一TDU索引,所述第一TDU包含相应所述第一LDA的逻辑到物理(L2P)条目;使用所述第一TDU索引搜索最近访问的TDU的查找目录条目的高速缓存;确定所述高速缓存不具有相应所述第一TDU的查找目录条目;在未命中缓冲器中生成并存储相应所述第一TDU的查找目录条目的未决请求;从与所述存储控制器耦合的内存中的内存内查找目录中获取相应所述第一TDU的查找目录条目;确定相应所述第一TDU的所述查找目录条目无效;在所述内存中保留用于所述第一TDU的TDU空间和生成第一TDU的加载请求。
附图简要说明
图1示意性地示出了根据本公开一实施例的非易失性存储控制器。
图2示意性地示出了根据本公开一实施例的使用部分逻辑到物理地址转换表来执行L2P转换。
图3A示意性地示出了根据本公开一实施例的查找目录的多个条目。
图3B示意性地示出了根据本公开一实施例的查找目录条目的条目标签。
图4示意性地示出了根据本公开一实施例的未命中状态保持寄存器的条目。
图5示意性地示出了根据本公开一实施例的L2P引擎。
图6是根据本公开一实施例的使用部分L2P地址转换表的过程的流程图。
具体实施方式
现在将参考附图详细描述根据本申请的具体实施例。为了一致性,各个图中的相同元件由相同的附图标记表示。
本公开提供了支持各种高速非易失性存储器(NVM)设备以及各种NVM设备的任何组合的装置、***和方法。如这里所使用的,非易失性存储器设备可以是计算机存储设备,其可以在断电之后保留存储的信息,并且可以在重新通电(关闭和重新打开)之后获取到所存储的信息。非易失性存储设备可以包括软盘、硬盘驱动器、磁带、光盘、NAND闪存、NOR闪存、磁阻随机存取存储器(MRAM)、电阻随机存取存储器(RRAM)、相变随机存取存储器(PCRAM)、Nano-RAM。在说明书中,可以使用NAND闪存作为所提出的技术的示例。然而,根据本说明书公开的各种实施例可以利用其他种类的非易失性存储设备来实现这些技术。
图1示意性地示出了根据一个实施例的示例性非易失性存储控制器100。非易失性存储控制器100可以包括第一接口110、第二接口112、第三接口108、微控制器单元(MCU)102、片上内存106和逻辑到物理(L2P)引擎104。第一接口110可以是任何现有的或尚待开发的接口,其被配置为将非易失性存储控制器100耦合到主机计算机***的***总线,并从主机计算机***接收数据并将数据发送到主机计算机***。在一个实施例中,例如,第一接口110可以是***部件互连快速(PCIE)接口。第二接口112可以是被配置为将存储控制器100耦合到一个或多个非易失性存储器(NVM)设备的任何现有的或尚待开发的接口。在一个实施例中,第二接口112可以是多通道接口,其可以被配置为并行地在多个通道上传输编码数据(例如,ECC码字)。例如,第二接口112可以是开放NAND闪存接口(ONFI),其可以支持不同的协议(例如,非易失性双倍数据速率(NVDDR)、NVDDR类型2(NVDDR2)、NVDDR类型3(NVDDR3)),或者可能是Toggle协议,并且以不同的传输速度运行。第三接口108可以是被配置为将存储控制器100耦合至片外内存(例如动态随机存取存储器(DRAM))的任何现有接口或尚待开发的接口(例如,双倍数据速率(DDR),DDR类型2(DDR2)或DDR类型3(DDR3))。
MCU 102可以是被配置为执行可执行指令(例如,软件或固件)的计算机处理器。在各种实施例中,MCU 102可以是微处理器、微控制器、现场可编程门阵列(FPGA)或专用IC(ASIC)。非易失性存储控制器100可以经由第一接口110从主机接收命令,例如,以将数据存储到非易失性存储***(例如,写入命令)或读取存储在非易失性存储***中的数据(例如,读取命令)。来自主机的命令可以使用逻辑块地址(LBA),而非易失性存储设备可以使用物理块地址(PBA),LBA需要在存储控制器100处转换为物理块地址(PBA)。可以通过使用L2P地址转换表来处理此L2P地址转换,该表的每个条目可以是用于存储数据的PBA。在一个实施例中,非易失性存储控制器100可以按照数据单元(DU)来处理数据。用于数据单元的LBA可以是逻辑数据单元地址(LDA),并且用于数据单元的PBA可以是物理数据单元地址(PDA)。
L2P地址转换表可以存储在耦合到第二接口112的非易失性存储设备中。当非易失性存储***上电时,可以将L2P地址转换表的条目子集加载到非易失性存储控制器100的存储空间中(例如,片上内存106或耦合到控制器100的片外内存),而不是加载整个L2P地址转换表。L2P地址转换表的条目子集也可以称为部分L2P地址转换表。在一些实施例中,查找目录可以用于跟踪哪个转换数据单元(TDU)已经被加载到控制器100的存储空间中。可以将TDU加载到存储空间中任何可用的TDU空间中,并且查找目录中的相应条目可以包含TDU的存储位置。
L2P引擎104可以被配置为管理部分L2P地址转换表,例如,维护最近访问的查找目录条目的高速缓存,生成并管理高速缓存未命中,确定是否可能需要从存储在非易失性存储设备中的L2P地址转换表中加载TDU并为该TDU保留存储空间,是否任何已加载的TDU已更新,以及是否需要将更新后的TDU刷新到非易失性储存设备的L2P地址转换表中。
图2示意性地示出了根据本公开一实施例的使用部分逻辑到物理地址转换表来执行L2P转换。完整L2P地址转换表204可以存储在(例如,经由第二接口112)耦合到非易失性存储控制器100的非易失性存储设备202中。L2P地址转换表204可以存储在多个NVM页面中。用于存储L2P表204的条目的每个NVM页面可以被称为转换页面(TP)。如图2所示,L2P表204可以包括多个TP 206。可以将用于存储L2P表的条目的数据单元(DU)称为转换DU(TDU)。每个TP 206可以包括多个TDU。在图2中标记了一个代表性的TDU 208。
在一个实施例中,如果PDA为4字节,则16-KibiByte(KiB)TP可以存储4096个L2P条目。如果16-KiB TP包含4个TDU,则每个TDU可以具有1024个L2P条目。TP索引可以用作识别TP的标识符,并且可以通过将LDA除以TP中的L2P条目的数量来计算。例如,假设在一个实施例中,LDA可以是32位,对于具有4096个L2P条目的16-KiB TP,可以将TP索引设置为等于LDA的最高有效的20位,其可以表示为LDA[31:12]。类似地,对于具有1024个L2P条目的4-KiBTDU,TDU索引用作标识TDU的标识符,并且可以设置为等于LDA的最高有效的22位,其可以表示为LDA[31:10]。
如图2所示,可以在耦合到非易失性存储控制器100的动态随机存取存储器(DRAM)210中保留查找目录212。假设存储在非易失性存储设备202中的完整L2P表204可能总共具有N个TDU,则DRAM 210可能需要提供用于M个TDU的空间,其中N和M都可以是正整数,并且N可以比M大得多(例如,DRAM 210中的M个TDU是L2P表204的N个TDU的子集)。查找目录212可以具有N个条目(例如,216.1至216.N),其可以匹配完整L2P表204的所有TDU的数量。在一个实施例中,查找目录212可以被实现为全局转换目录(GTD),并且查找目录212的每个条目可以被称为查找目录条目或GTD条目。查找目录212可以跟踪哪个TDU已经被加载到DRAM 210中以及加载的TDU在DRAM 210中的存储位置。每次将TDU从非易失性存储设备202加载到DRAM 210或从DRAM 210刷新到非易失性存储设备202时,相应的GTD条目都可以被更新。通过使用查找目录212,可以将一个TDU加载到DRAM 210中的任何可用TDU空间中。
图3A示意性地示出了根据本公开一实施例的查找目录的多个条目302.1至302.N。在一个实施例中,查找目录可以被实现为全局转换目录(GTD)。查找目录条目302.1至302.N中的每个可以由TDU索引TDU(i)标识,其中“i”是0至N-1中的任何一个,并且查找目录条目302.1至302.N中的每个可以包括三个字段。第一个字段可以是条目标签。第二个字段可以是数据标签,其可以是指向用于存储TDU的DRAM 210中的DRAM位置的存储地址。第三个部分可以是TDU的PDA(例如,TDU存储在非易失性存储设备202中的位置)
图3B示意性地示出了根据本公开一实施例的查找目录条目的条目标签。条目标签可以包括多个比特。条目标签至少可以包括有效位和脏位(dirty bit)。有效位可以用于指示TDU是否已经被加载到DRAM中。例如,如果TDU已经被加载到DRAM 210中,则其对应的查找目录条目是有效的,并且有效位可以是1;并且如果TDU不在DRAM 210中,则其对应的查找目录条目无效,有效位可以是0。脏位可用于指示DRAM 210中的TDU是否脏(例如,包含一个或多个修改的L2P条目并且不同于非易失性存储设备202中的TDU)。例如,如果DRAM 210中的TDU脏了,则可能需要刷新到非易失性存储设备202以更新完整L2P地址转换表204。在一些实施例中,除了有效位和脏位之外,条目标签还可以包括一个或多个其他比特。
再次参考图2,L2P引擎104可以包括GTD高速缓存218和未命中缓冲器220。GTD高速缓存218可以用于存储最近访问的GTD条目,并且未命中缓冲器220可以用于跟踪相应GTD条目的高速缓存未命中。在一个实施例中,可以将高速缓存未命中存储为相应GTD条目的未决请求(例如,加载请求和更新请求)。当存储控制器100从主机接收到具有LDA i的命令(例如,读取或写入)并且i是LDA的有效数字(例如,用于32位地址的32位数字)时,一个对于LDAi物理地址转换条目的搜索请求可以从处理器102发送到L2P引擎104。可以计算该LDA i的TDU索引(例如,获得LDA i[31:10])。可以针对该TDU(i)检查GTD高速缓存218。如果在GTD高速缓存218中找到了相应TDU(i)的GTD条目,则可以使用所缓存的GTD条目中的数据标签来定位相应LDA i的L2P条目,并且相应LDA i的物理地址可以从L2P条目获得并且可以相应地执行命令。
如果在GTD高速缓存中未找到相应TDU(i)的GTD条目,则可以生成相应TDU(i)的GTD条目的未决请求,并将其保留在未命中缓冲器220中。相应TDU(i)的GTD条目的未决请求可以包括LDA(i)(例如,仅最低有效的10位,因为TDU索引具有最高有效的22位)和执行用于LDA i的操作(例如,搜索或更新)。然后,L2P引擎104可以向DRAM 210发送具有TDU(i)的GTD条目获取请求,并从DRAM 210中获取TDU(i)的GTD条目。如果获取到的GTD条目是有效的(例如,条目标签中的有效位为1),则获取到的GTD条目可以被***到GTD高速缓存218中,并且未命中缓冲器220中的未决请求可以被服务并清除。对于GTD 212中的有效GTD条目,相应的TDU已被加载到DRAM 210中。例如,TDU 214.1、214.2、214.3和214.4已被加载到DRAM 210中。如果获取到的GTD条目无效(例如,条目标签中的有效位为0),则该TDU(i)不在DRAM210中。可以在DRAM 210中保留用于TDU(i)的TDU空间,并且可以将相应TDU(i)的加载请求发送到非易失性存储设备202。为了减少加载TDU(i)的开销,可以在服务于加载请求的同时将用于TDU(i)的GTD条目的未决请求保留在未命中缓冲器220中。
在一实施例中,未命中缓冲器220可包含一个或一个以上未命中状态保持寄存器(MSHR)。未命中缓冲器220可以处理对于相同TDU的GTD条目或对于不同TDU的GTD条目的多个加载请求,并减少由使用部分L2P地址转换表引起的TDU加载开销。在一个实施例中,未命中缓冲器220可以用于跟踪对于多个TDU的GTD条目的所有未决请求,包括为从DRAM 210获取GTD条目而生成的未决请求,以及在从DRAM 21提取GTD条目或将TDU从非易失性存储设备202加载到DRAM 210的同时对GTD条目的任何后续请求。
图4示意性地示出了根据本公开一实施例的MSHR 400。示例性MSHR 400可以包括头部402和列表部分404。头部402可以包含有效位、MSHR的标签(例如,标识高速缓存未命中的TDU的TDU索引TDU(k))、指向列表部分404中的第一个条目的起始指针和指向列表部分404中的最后一个条目的结束指针。有效位可以指示MSHR是否仍然有效。当有效位指示该MSHR有效时(例如,当相应TDU索引TDU(k)发生一个或多个高速缓存未命中时设置为1),列表部分404可在链接列表中包括一个或多个列表条目(例如,406.1至406.3)。无效MSHR没有列表部分404。每个列表条目可以包括LDA偏移(LDA offset)、操作类型(OP TYPE)和指向链接列表中的下一个条目的指针(NEXT POINTER)。在一个实施例中,LDA偏移可以是LDA的最低有效10位(而32位LDA的最高有效22位用作头部402中的TDU索引)。链接列表中的最后一个条目可以具有用于下一个条目的“空(NULL)”指针,因为在最后一个条目之后没有任何条目。在一实施例中,未命中缓冲器220可包括多个MSHR 400。这些MSHR可以通过将有效位设置为无效,将标签设置为0,将起始指针和结束指针设置为NULL来初始化。
通常,对于一个TDU的GTD条目,可以有一个未决请求,或者对于同一TDU的GTD条目,可以有多个未决请求。例如,LDA m(例如,m是32位地址)可以在特定的TDU中具有L2P转换条目,因此,具有LDA m地址的一个数据访问命令可以导致相应TDU的GTD条目的第一个未决请求被生成并保留在未命中缓冲器中。特定的TDU可以具有多个转换条目(例如,用于1024个LDA的1024个条目),并且对于特定的TDU中的相同的L2P条目或另一个L2P条目的任何附加访问请求可以导致相应TDU的GTD条目的第二个或附加的未决请求被生成并存储在特定TDU的GTD条目的链接列表中。LDA偏移可以指示需要转换的LDA(例如,在TDU覆盖的范围内的1024个条目中),并且操作类型可以指示对L2P条目进行哪种类型的操作(例如,搜索或更新)。
图5示意性地示出了根据本公开一实施例的L2P引擎500。L2P引擎500可以是图1中的L2P引擎104的实施例。L2P引擎500可以包括L2P请求处理器502、GTD高速缓存控制块504、GTD高速缓存506、未命中控制块508、未命中缓冲器510、DRAM控制接口512以及用于与处理器102通信的多个队列。多个队列可以包括L2P搜索请求队列514、L2P更新请求队列516、TDU加载请求队列518、TDU加载完成队列520、L2P搜索结果队列522、L2P更新结果队列524、TDU刷新请求队列526和TDU刷新完成队列528。GTD高速缓存506可以是图2中的GTD高速缓存218的实施例,并且未命中缓冲器510可以是图2中的未命中缓冲器220的实施例。
L2P引擎500可以从处理器102接收L2P请求。L2P请求可以包括搜索请求和更新请求。搜索请求可以是搜索相应LDA(例如,LDA m)的L2P转换的请求,在一个实施例中,其中m可以是32位地址。更新请求可以是更新相应LDA的L2P转换的请求。L2P搜索请求队列514和L2P更新请求队列516可以是缓冲器,以在请求可以被L2P请求处理器102处理之前临时存储所接收的搜索请求和更新请求。在一个实施例中,一旦接收到具有LDA的L2P请求(例如,LDAm),并且可以计算出相应LDA的TDU索引(例如,LDA m的最高有效22位)。可以搜索GTD高速缓存506以确定由TDU索引标识的GTD条目是否已经在GTD高速缓存506中。如果有命中,则GTD条目已经在GTD高速缓存中,并且GTD条目的数据标签可以包含TDU的存储位置。TDU可以包括多个L2P条目(例如,1024个条目),该多个L2P条目包括相应LDA的L2P条目。如果L2P请求是L2P搜索请求,则可以从内存中获取L2P条目并返回给处理器102。如果L2P请求是L2P更新请求,则可以更新DRAM 210中的TDU中的L2P条目。在一个实施例中,L2P引擎500可以将搜索请求结果发送到L2P搜索结果队列522,并且将更新请求结果发送到L2P更新结果队列524,并且处理器102可以从L2P搜索结果队列522接收搜索请求结果和从L2P更新结果队列524接收更新请求结果。
L2P引擎500可以向处理器102发送TDU刷新请求,并且可以从处理器102接收TDU刷新完成通知。例如,如果DRAM 210中的TDU是脏的(例如,设置了脏位),则可以需要将其刷新到非易失性存储设备202以更新完整L2P地址转换表204。在一个实施例中,可以生成TDU刷新请求并将其推送到TDU刷新请求队列526中。一旦完成了TDU刷新,则处理器102可以将刷新完成消息发送到TDU刷新完成队列528。
如果对GTD高速缓存506的搜索没有命中,则可以搜索未命中缓冲器510以确定是否存在由相应TDU索引标识的GTD条目的任何未决请求(例如,通过在未命中缓冲器510中的MSHR的头部402中搜索TDU索引)。如果相应TDU的GTD条目存在任何未决请求,则已经存在具有相应TDU的GTD条目的链接列表的MSHR,可以创建LDA的列表条目(例如,新的未决请求)并且***到已经存在的MSHR中,并且MSHR头部中的结束指针可以更新,以指向新的未决请求。如果没有相应TDU的GTD条目的未决请求,则可以将具有TDU索引的GTD条目获取请求(例如,经由DRAM控制接口512)发送到DRAM(例如,DRAM 210),以及可以将MSHR分配给GTD条目,并将TDU索引***到MSHR的头部。可以创建对LDA的新的未决请求,并且可以将新的未决请求作为第一个条目来创建链接列表。在可以创建链接列表的第一个条目之后,MSHR的开始指针和结束指针都可以指向刚刚创建的列表条目。
应当注意,当未命中缓冲器510刚刚初始化时,未命中缓冲器的所有MSHR可以将它们各自的TDU索引设置为0,但是这些MSHR的有效位可以被设置为无效(例如,零)以指示MSHR没有高速缓存未命中。
在将具有TDU索引的GTD获取请求发送到DRAM 210之后,可以从DRAM 210(例如,从DRAM 210中的GTD 212)接收GTD条目。当L2P引擎500接收到由TDU索引标识的相应TDU的GTD条目时,可以检查GTD条目的有效位以确定该GTD条目是否有效。在一个实施例中,在查找目录212在DRAM 210中被初始化之后,所有条目可以是无效的(例如,有效位被设置为0),并且GTD条目可以仅在相应的TDU已经从L2P表204被加载之后才变为有效。在L2P引擎500中,如果所接收的GTD条目无效,则L2P引擎500可以确定尚未从L2P表204加载TDU,并且可以在将要加载的TDU的TDU空间保留在存储控制器的内存(例如,DRAM 210)中之后,将用于TDU的加载请求(例如,由TDU索引标识)发送到NAND接口控制器。在一些实施例中,L2P引擎可以向处理器102发送TDU加载请求。在一个实施例中,TDU加载请求可以被推入TDU加载请求队列518中,并由处理器102获取和处理。
如果由L2P引擎500接收到的GTD条目是有效的,则可以通过遍历此MSHR的列表部分的请求链接列表中所有条目来处理与该TDU索引所标识的GTD条目相对应的未命中缓冲器510中的MSHR(例如,在其头部中具有该TDU索引)。例如,使用刚接收到的GTD条目中的数据标签来获取TDU的存储位置,并对链表条目中LDA偏移相应的每个L2P条目执行链表条目中操作类型字段中指定的操作(例如,对L2P条目执行操作,例如搜索或更新L2P条目)。一旦处理了链接列表的所有条目,就可以删除链接列表,并且可以清理MSHR的头部。例如,可以从MSHR的头部移除TDU索引,可以将有效位设置为无效(例如,0),并且可以将开始指针和结束指针设置为NULL。此外,GTD条目可以***到GTD高速缓存506中。在一个实施例中,GTD高速缓存控制504可以被配置为将GTD条目***到GTD高速缓存506中,并且未命中控制508可以被配置为处理相应GTD条目的未命中缓冲器中的MSHR。
当所请求的TDU已经被成功地加载到DRAM 210中时,TDU加载完成消息可以被发送到L2P引擎500。在一个实施例中,可以在TDU加载完成队列520中接收到加载完成消息。TDU加载完成消息可以包括TDU索引和TDU的存储位置(例如,GTD条目中的数据标签)。L2P引擎500可以处理TDU加载完成消息,类似于处理从查找目录212中获取到的有效GTD条目。例如,可以通过遍历该MSHR的列表部分中的请求链接列表中的所有条目来处理与该TDU加载完成相对应的未命中缓冲器510中的MSHR(例如,在其头部具有该TDU索引)。一旦处理了链接列表的所有条目,就可以删除链接列表,并且可以清理MSHR的头部。L2P引擎500可以(例如,经由DRAM控制接口512)更新查找目录212中的相应该TDU的GTD条目,并且更新GTD高速缓存506(例如,通过GTD高速缓存控制504***该GTD条目)。
图6是根据本公开一实施例的使用部分L2P转换表的过程600的流程图。在框602中,可以接收对于第一逻辑数据地址(LDA)的请求。例如,L2P引擎104可以接收对于LDA的搜索请求或更新请求。在框604中,可以计算用于第一转换数据单元(TDU)的第一TDU索引。第一TDU可以包含用于第一LDA的L2P条目。在一个实施例中,TDU可以包含1024个用于第一LDA的L2P条目。在框606中,可以使用第一TDU索引来搜索查找目录条目的高速缓存。高速缓存(例如,GTD高速缓存506)可以包含最近访问的TDU的存储位置。例如,高速缓存506中的GTD条目可以在各个条目的数据标签中具有TDU的存储位置。
在框608中,可以确定高速缓存不具有相应第一TDU的查找目录条目(例如,GTD条目),并且在框610中,可以在未命中缓冲器中生成并且存储相应第一TDU的查找目录条目的未决请求。例如,在高速缓存中搜索TDU索引可能不会命中。因此,针对高速缓存未命中可以生成并存储未决请求。在框612中,可以从内存中的内存内查找目录中获取相应第一TDU的查找目录条目。例如,DRAM 210中的查找目录212可以是内存内查找目录,其可以包含L2P转换表中所有TDU的条目,并且相应TDU的查找目录条目的第一次高速缓存未命中可能导致从DRAM 210获取用于TDU的查找目录条目。在框614中,可以确定相应第一TDU的查找目录条目是无效的。在框616中,可以在内存中保留相应用于第一TDU的TDU空间,并且在框618中,可以生成相应第一TDU的加载请求。例如,在查找目录212初始化之后,所有条目可能无效,并且可能需要从存储在非易失性存储设备202中的L2P表中加载相应的TDU。可能需要在内存(例如DRAM 210)中为要加载的TDU保留一个TDU空间,并且可以将TDU加载请求推送到TDU加载请求队列518中。
在各种实施例中,过程600和L2P引擎104(或L2P引擎500)可以具有一个或多个部分或者全部使用硬件(例如,现场可编程门阵列(FPGA)或专用IC(ASIC))、固件、执行软件指令的计算机处理器或任何合适的组合。如果L2P引擎104(或L2P引擎500)以软件实现,则存储单元(例如队列,高速缓存和未命中缓冲器)可以在片上内存106或片外内存(例如DRAM210)中实现。此外,在至少一个实施例中,查找目录212可以存储在片上内存106中。
在一些实施例中非易失性存储***的高吞吐量不是关键,内存(例如SRAM或DRAM)中使用部分L2P转换表可以在非易失性存储***的成本、面积和吞吐量之间取得良好的平衡。
本公开的实施例可以使用存储控制器中的部分逻辑到物理地址转换表,以减少存储控制器中用于存储逻辑到物理地址转换的存储空间。完整L2P地址转换表的子集可以加载到存储控制器的内存中。具有与完整L2P地址转换表的TDU的条目数匹配的条目数的查找目录可以被保留在存储控制器的内存中。查找目录可以跟踪哪个TDU可能已被加载到存储控制器的存储空间中。
每当将TDU从非易失性存储设备加载到存储控制器的内存中或从存储控制器的内存刷新到非易失性存储设备时,相应的查找目录条目都可以更新。可以将一个TDU加载到存储控制器内存中任何可用的TDU空间中,查找目录可以跟踪TDU加载到内存中的哪个位置。如果相应TDU的查找目录条目无效,则意味着该TDU不在存储控制器的内存中,并且可以将该TDU的加载请求发送到非易失性存储设备。
在一些实施例中,可以在高速缓存中保留最近访问的查找目录条目,并且可以首先检查高速缓存以确定与TDU相对应的查找目录条目在高速缓存中是否可用。可以在未命中缓冲器(例如,未命中状态保持寄存器(MSHR))中跟踪高速缓存未命中。未命中缓冲器可以处理针对同一TDU的查找目录条目或不同TDU的查找目录条目的请求的多个高速缓存未命中并减少由使用部分L2P地址表引起的TDU加载开销。
在示例性实施例中,提供了一种方法,该方法可以包括:接收对第一逻辑数据地址(LDA)的请求;计算相应第一转换数据单元(TDU)的第一TDU索引,所述第一TDU包含相应所述第一LDA的逻辑到物理(L2P)条目;使用所述第一TDU索引搜索最近访问的TDU的查找目录条目的高速缓存;确定所述高速缓存不具有相应所述第一TDU的查找目录条目;在未命中缓冲器中生成并存储相应所述第一TDU的查找目录条目的未决请求;从内存中的内存内查找目录中获取相应所述第一TDU的查找目录条目;确定相应所述第一TDU的所述查找目录条目无效;在所述内存中保留用于所述第一TDU的TDU空间;和生成相应所述第一TDU的加载请求。
在一个实施例中,在所述未命中缓冲器中生成并存储相应所述第一TDU的所述查找目录条目的所述未决请求还可以包括:确定这是相应所述第一TDU的所述查找目录条目的第一次高速缓存末命中,将所述第一TDU索引添加到未命中状态保持寄存器(MSHR),并为所述MSHR创建一个请求链接列表,其中相应所述第一TDU的所述查找目录条目的未决请求作为所述请求链接列表的第一个列表条目。
在一个实施例中,在未命中缓冲器中生成并存储相应所述第一TDU的查找目录条目的未决请求还可以包括:确定在未命中状态保持寄存器(MSHR)中存在相应所述第一TDU的查找目录条目的请求链接列表,将所述未决请求***到所述请求链接列表中,并更新所述MSHR中的结束指针。
在一个实施例中,可以通过将所述第一LDA除以所述第一TDU中的L2P条目的总数来计算所述第一TDU索引。
在一个实施例中,该方法可以进一步包括:从所述内存内查找目录中获取相应第二TDU的查找目录条目;确定所述第二TDU的查找目录条目有效;在所述未命中缓冲器中处理相应所述第二TDU的所述查找目录条目的所有未决请求;和使用相应所述第二TDU的所述查找目录条目更新查找目录条目的高速缓存。
在一个实施例中,在所述未命中缓冲器中处理相应所述第二TDU的所述查找目录条目的所有未决请求可以包括:在未命中状态保持寄存器(MSHR)处理请求链接列表中相应所述第二TDU的所述查找目录条目的所有未决请求,释放所述请求链接列表并清理所述MSHR。
在一个实施例中,该方法可以进一步包括:接收相应第一TDU的TDU加载完成消息;在所述未命中缓冲器中处理相应所述第一TDU的所述查找目录条目的未决请求;使用所述第一TDU的存储位置来更新内存内查找目录中的所述第一TDU的查找目录条目;和使用所述第一TDU的存储位置更新查找目录条目的高速缓存中所述第一TDU的查找目录条目。
在另一个示例性实施例中,提供了一种装置,该装置可以包括:处理器和逻辑到物理(L2P)转换引擎。L2P转换引擎可以包括最近访问的转换数据单元(TDU)的查找目录条目的高速缓存和未命中缓冲器。并且,L2P转换引擎可以被配置为:从所述处理器接收对第一逻辑数据地址(LDA)的请求;计算第一转换数据单元(TDU)的第一TDU索引,所述第一TDU包含相应所述第一LDA的逻辑到物理(L2P)条目;使用所述第一TDU索引搜索最近访问的TDU的查找目录条目的高速缓存;确定所述高速缓存不具有相应所述第一TDU的查找目录条目;在所述未命中缓冲器中生成并存储相应所述第一TDU的查找目录条目的未决请求;从与所述装置耦合的内存中的内存内查找目录中获取相应所述第一TDU的查找目录条目;确定相应所述第一TDU的所述查找目录条目无效;在所述内存中保留用于所述第一TDU的TDU空间和生成相应所述第一TDU的加载请求。
在一个实施例中,在所述未命中缓冲器中生成并存储相应所述第一TDU的所述查找目录条目的所述未决请求,所述L2P转换引擎还可以被配置为:确定这是相应所述第一TDU的所述查找目录条目的第一次高速缓存未命中,将所述第一TDU索引添加到未命中状态保持寄存器(MSHR),并为所述MSHR创建一个请求链接列表,其中相应所述第一TDU的所述查找目录条目的未决请求作为所述请求链接列表的第一个列表条目。
在一个实施例中,在未命中缓冲器中生成并存储相应所述第一TDU的查找目录条目的未决请求,所述L2P转换引擎还可以被配置为:在未命中状态保持寄存器(MSHR)中存在相应述第一TDU的查找目录条目的请求链接列表,将所述未决请求***到所述请求链接列表中,并更新所述MSHR中的结束指针。
在一个实施例中,可以通过将所述第一LDA除以所述第一TDU中的L2P条目的总数来计算所述第一TDU索引。
在一个实施例中,L2P转换引擎可以进一步被配置为:从所述内存内查找目录中获取相应第二TDU的查找目录条目;确定所述第二TDU的查找目录条目有效;在所述未命中缓冲器中处理相应所述第二TDU的所述查找目录条目的所有未决请求;和使用相应所述第二TDU的所述查找目录条目更新查找目录条目的高速缓存。
在一个实施例中,在所述未命中缓冲器中处理相应所述第二TDU的所述查找目录条目的所有未决请求,所述L2P转换引擎还可以被配置为:在未命中状态保持寄存器(MSHR)处理请求链接列表中相应所述第二TDU的所述查找目录条目的所有未决请求,释放所述请求链接列表并清理所述MSHR。
在一个实施例中,L2P转换引擎可以被配置为:接收相应第一TDU的TDU加载完成消息;在未命中缓冲器中处理相应所述第一TDU的所述查找目录条目的未决请求;使用所述第一TDU的存储位置来更新内存内查找目录中的所述第一TDU的查找目录条目;和使用所述第一TDU的存储位置更新查找目录条目的高速缓存中所述第一TDU的查找目录条目。
在又一示例性实施例中,本公开还可以包括具有可执行指令的非暂时性机器可读介质,该可执行指令在由存储控制器执行时可以使存储控制器执行以下操作:接收对第一逻辑数据地址(LDA)的请求;计算第一转换数据单元(TDU)的第一TDU索引,所述第一TDU包含相应所述第一LDA的逻辑到物理(L2P)条目;使用所述第一TDU索引搜索最近访问的TDU的查找目录条目的高速缓存;确定所述高速缓存不具有相应所述第一TDU的查找目录条目;在未命中缓冲器中生成并存储相应所述第一TDU的查找目录条目的未决请求;从与所述存储控制器耦合的内存中的内存内查找目录中获取相应所述第一TDU的查找目录条目;确定相应所述第一TDU的所述查找目录条目无效;在所述内存中保留用于所述第一TDU的TDU空间和生成第一TDU的加载请求。
在一个实施例中,在所述未命中缓冲器中生成并存储相应所述第一TDU的所述查找目录条目的所述未决请求,所述可执行指令在由存储控制器执行时可以使所述存储控制器执行以下操作:确定这是相应所述第一TDU的所述查找目录条目的第一次高速缓存未命中,将所述第一TDU索引添加到未命中状态保持寄存器(MSHR),并为所述MSHR创建一个请求链接列表,其中相应所述第一TDU的所述查找目录条目的未决请求作为所述请求链接列表的第一个列表条目。
在一个实施例中,在未命中缓冲器中生成并存储相应所述第一TDU的查找目录条目的未决请求,所述可执行指令在由存储控制器执行时可以使所述存储控制器执行以下操作:在未命中状态保持寄存器(MSHR)中存在相应所述第一TDU的查找目录条目的请求链接列表,将所述未决请求***到所述请求链接列表中,并更新所述MSHR中的结束指针。
在一个实施例中,可以通过将所述第一LDA除以所述第一TDU中的L2P条目的总数来计算所述第一TDU索引。
在一个实施例中,所述可执行指令在由存储控制器执行时可以使所述存储控制器执行以下操作:从所述内存内查找目录中获取相应第二TDU的查找目录条目;确定所述第二TDU的查找目录条目有效;在所述未命中缓冲器中处理相应所述第二TDU的所述查找目录条目的所有未决请求;和使用相应所述第二TDU的所述查找目录条目更新查找目录条目的高速缓存。
在一个实施例中,在所述未命中缓冲器中处理相应所述第二TDU的所述查找目录条目的所有未决请求,所述可执行指令在由存储控制器执行时可以使所述存储控制器执行以下操作:在未命中状态保持寄存器(MSHR)处理请求链接列表中相应所述第二TDU的所述查找目录条目的所有未决请求,释放所述请求链接列表并清理所述MSHR。
在一个实施例中,所述可执行指令在由存储控制器执行时使所述存储控制器执行以下操作:接收第一TDU的TDU加载完成消息;在未命中缓冲器中处理相应第一TDU的查找目录条目的未决请求;使用所述第一TDU的存储位置来更新所述内存内查找目录中的所述第一TDU的查找目录条目;并使用所述第一TDU的存储位置更新查找目录条目的高速缓存中所述第一TDU的查找目录条目。
任何公开的方法和操作可以被实现为存储在一个或多个计算机可读存储介质(例如,非暂时性计算机可读介质,例如,一个或多个光盘介质、易失性存储组件(例如DRAM或SRAM)或非易失性存储组件(例如SSD硬盘))上的计算机可执行指令(例如,本文描述的操作的软件代码),并在设备控制器上执行(例如,ASIC执行的固件)。可以将用于实现所公开的技术的任何计算机可执行指令以及在所公开的实施例的实现期间创建和使用的任何数据可以存储在一个或多个计算机可读介质(例如,非暂时性计算机可读介质)上。
尽管本文已经公开了各个方面和实施例,但是其他方面和实施例对于本领域技术人员将是显而易见的。本文所公开的各个方面和实施例是出于说明的目的,而不是旨在进行限制,真实的范围和精神由所附权利要求书指示。
Claims (21)
1.一种方法,其特征在于,包括:
接收对第一逻辑数据地址(LDA)的请求;
计算相应第一转换数据单元(TDU)的第一TDU索引,所述第一TDU包含相应所述第一LDA的逻辑到物理(L2P)条目;
使用所述第一TDU索引搜索最近访问的TDU的查找目录条目的高速缓存;
确定所述高速缓存不具有相应所述第一TDU的查找目录条目;
在未命中缓冲器中生成并存储相应所述第一TDU的查找目录条目的未决请求;
从内存中的内存内查找目录中获取相应所述第一TDU的查找目录条目;
确定相应所述第一TDU的所述查找目录条目无效;
在所述内存中保留用于所述第一TDU的TDU空间;和
生成相应所述第一TDU的加载请求。
2.根据权利要求1所述的方法,其特征在于,在所述未命中缓冲器中生成并存储相应所述第一TDU的所述查找目录条目的所述未决请求还包括:确定这是相应所述第一TDU的所述查找目录条目的第一次高速缓存末命中,将所述第一TDU索引添加到未命中状态保持寄存器(MSHR),并为所述MSHR创建一个请求链接列表,其中相应所述第一TDU的所述查找目录条目的未决请求作为所述请求链接列表的第一个列表条目。
3.根据权利要求1所述的方法,其特征在于,在未命中缓冲器中生成并存储相应所述第一TDU的查找目录条目的未决请求还包括:确定在未命中状态保持寄存器(MSHR)中存在相应所述第一TDU的查找目录条目的请求链接列表,将所述未决请求***到所述请求链接列表中,并更新所述MSHR中的结束指针。
4.根据权利要求1所述的方法,其特征在于,通过将所述第一LDA除以所述第一TDU中的L2P条目的总数来计算所述第一TDU索引。
5.根据权利要求1所述的方法,其特征在于,还包括:
从所述内存内查找目录中获取相应第二TDU的查找目录条目;
确定所述第二TDU的查找目录条目有效;
在所述未命中缓冲器中处理相应所述第二TDU的所述查找目录条目的所有未决请求;和
使用相应所述第二TDU的所述查找目录条目更新查找目录条目的高速缓存。
6.根据权利要求5所述的方法,其特征在于,在所述未命中缓冲器中处理相应所述第二TDU的所述查找目录条目的所有未决请求包括:在未命中状态保持寄存器(MSHR)处理请求链接列表中相应所述第二TDU的所述查找目录条目的所有未决请求,释放所述请求链接列表并清理所述MSHR。
7.根据权利要求1所述的方法,其特征在于,还包括:
接收相应所述第一TDU的TDU加载完成消息;
在所述未命中缓冲器中处理相应所述第一TDU的所述查找目录条目的未决请求;
使用所述第一TDU的存储位置来更新所述内存内查找目录中的所述第一TDU的查找目录条目;和
使用所述第一TDU的存储位置更新查找目录条目的高速缓存中所述第一TDU的查找目录条目。
8.一种装置,其特征在于,包括:
处理器,和
逻辑到物理(L2P)转换引擎,包括最近访问的转换数据单元(TDU)的查找目录条目的高速缓存和未命中缓冲器,所述L2P转换引擎被配置为;
从所述处理器接收对第一逻辑数据地址(LDA)的请求;
计算第一转换数据单元(TDU)的第一TDU索引,所述第一TDU包含相应所述第一LDA的逻辑到物理(L2P)条目;
使用所述第一TDU索引搜索最近访问的TDU的查找目录条目的高速缓存;
确定所述高速缓存不具有相应所述第一TDU的查找目录条目;
在所述未命中缓冲器中生成并存储相应所述第一TDU的查找目录条目的未决请求;
从与所述装置耦合的内存中的内存内查找目录中获取相应所述第一TDU的查找目录条目;
确定相应所述第一TDU的所述查找目录条目无效;
在所述内存中保留用于所述第一TDU的TDU空间;和
生成相应所述第一TDU的加载请求。
9.根据权利要求8所述的装置,其特征在于,为了在所述未命中缓冲器中生成并存储相应所述第一TDU的所述查找目录条目的所述未决请求,所述L2P转换引擎还被配置为:确定这是相应所述第一TDU的所述查找目录条目的第一次高速缓存未命中,将所述第一TDU索引添加到到未命中状态保持寄存器(MSHR),并为所述MSHR创建一个请求链接列表,其中相应所述第一TDU的所述查找目录条目的未决请求作为所述请求链接列表的第一个列表条目。
10.根据权利要求8所述的装置,其特征在于,为了在所述未命中缓冲器中生成并存储相应所述第一TDU的查找目录条目的未决请求,所述L2P转换引擎还被配置为:在未命中状态保持寄存器(MSHR)中存在相应所述第一TDU的查找目录条目的请求链接列表,将所述未决请求***到所述请求链接列表中,并更新所述MSHR中的结束指针。
11.根据权利要求8所述的装置,其特征在于,通过将所述第一LDA除以所述第一TDU中的L2P条目的总数来计算所述第一TDU索引。
12.根据权利要求8所述的装置,其特征在于,所述L2P转换引擎还被配置为:
从所述内存内查找目录中获取相应第二TDU的查找目录条目;
确定所述第二TDU的查找目录条目有效;
在所述未命中缓冲器中处理相应所述第二TDU的所述查找目录条目的所有未决请求;和
使用相应所述第二TDU的所述查找目录条目更新查找目录条目的高速缓存。
13.根据权利要求12所述的装置,其特征在于,为了在所述未命中缓冲器中处理相应所述第二TDU的所述查找目录条目的所有未决请求,所述L2P转换引擎还被配置为:在未命中状态保持寄存器(MSHR)处理请求链接列表中相应所述第二TDU的所述查找目录条目的所有未决请求,释放所述请求链接列表并清理所述MSHR。
14.根据权利要求8所述的装置,其特征在于,所述L2P转换引擎还被配置为:
接收相应所述第一TDU的TDU加载完成消息;
在所述未命中缓冲器中处理相应所述第一TDU的所述查找目录条目的未决请求;
使用所述第一TDU的存储位置来更新所述内存内查找目录中的所述第一TDU的查找目录条目;和
使用所述第一TDU的存储位置更新查找目录条目的高速缓存中所述第一TDU的查找目录条目。
15.一种具有可执行指令的非暂时性机器可读介质,其特征在于,所述可执行指令在由存储控制器执行时使所述存储控制器执行以下操作:
接收对第一逻辑数据地址(LDA)的请求;
计算第一转换数据单元(TDU)的第一TDU索引,所述第一TDU包含相应所述第一LDA的逻辑到物理(L2P)条目;
使用所述第一TDU索引搜索最近访问的TDU的查找目录条目的高速缓存;
确定所述高速缓存不具有相应所述第一TDU的查找目录条目;
在未命中缓冲器中生成并存储相应所述第一TDU的查找目录条目的未决请求;
从与所述存储控制器耦合的内存中的内存内查找目录中获取相应所述第一TDU的查找目录条目;
确定相应所述第一TDU的所述查找目录条目无效;
在所述内存中保留用于所述第一TDU的TDU空间;和
生成第一TDU的加载请求。
16.根据权利要求15所述的非易失性机器可读介质,其特征在于,为了在所述未命中缓冲器中生成并存储相应所述第一TDU的所述查找目录条目的所述未决请求,所述可执行指令在由存储控制器执行时使所述存储控制器执行以下操作:确定这是相应所述第一TDU的所述查找目录条目的第一次高速缓存未命中,将所述第一TDU索引添加到未命中状态保持寄存器(MSHR),并为所述MSHR创建一个请求链接列表,其中相应所述第一TDU的所述查找目录条目的未决请求作为所述请求链接列表的第一个列表条目。
17.根据权利要求15所述的非易失性机器可读介质,其特征在于,为了在未命中缓冲器中生成并存储相应所述第一TDU的查找目录条目的未决请求,所述可执行指令在由存储控制器执行时使所述存储控制器执行以下操作:在未命中状态保持寄存器(MSHR)中存在相应所述第一TDU的查找目录条目的请求链接列表,将所述未决请求***到所述请求链接列表中,并更新所述MSHR中的结束指针。
18.根据权利要求15所述的非易失性机器可读介质,其特征在于,通过将所述第一LDA除以所述第一TDU中的L2P条目的总数来计算所述第一TDU索引。
19.根据权利要求15所述的非暂时性机器可读介质,其特征在于,所述可执行指令在由存储控制器执行时还使所述存储控制器执行以下操作:
从所述内存内查找目录中获取相应第二TDU的查找目录条目;
确定所述第二TDU的查找目录条目有效;
在所述未命中缓冲器中处理相应所述第二TDU的所述查找目录条目的所有未决请求;和
使用相应所述第二TDU的所述查找目录条目更新查找目录条目的高速缓存。
20.根据权利要求19所述的非易失性机器可读介质,其特征在于,为了在所述未命中缓冲器中处理相应所述第二TDU的所述查找目录条目的所有未决请求,所述可执行指令在由存储控制器执行时还使所述存储控制器执行以下操作:在未命中状态保持寄存器(MSHR)处理请求链接列表中相应所述第二TDU的所述查找目录条目的所有未决请求,释放所述请求链接列表并清理所述MSHR。
21.根据权利要求15所述的非暂时性机器可读介质,其特征在于,所述可执行指令在由存储控制器执行时还使所述存储控制器执行以下操作:
接收相应所述第一TDU的TDU加载完成消息;
在所述未命中缓冲器中处理相应所述第一TDU的所述查找目录条目的未决请求;
使用所述第一TDU的存储位置来更新所述内存内查找目录中的所述第一TDU的查找目录条目;和
使用所述第一TDU的存储位置更新查找目录条目的高速缓存中所述第一TDU的查找目录条目。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/315,585 US11537530B2 (en) | 2021-05-10 | 2021-05-10 | Non-volatile storage controller with partial logical-to-physical (L2P) address translation table |
US17/315,585 | 2021-05-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113254363A true CN113254363A (zh) | 2021-08-13 |
Family
ID=77183900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110564695.6A Pending CN113254363A (zh) | 2021-05-10 | 2021-05-24 | 具有部分逻辑到物理地址转换表的非易失性存储控制器 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11537530B2 (zh) |
CN (1) | CN113254363A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114238170A (zh) * | 2021-12-21 | 2022-03-25 | 海光信息技术股份有限公司 | 数据处理方法、数据处理装置和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10846235B2 (en) * | 2018-04-28 | 2020-11-24 | International Business Machines Corporation | Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator |
US11327757B2 (en) * | 2020-05-04 | 2022-05-10 | International Business Machines Corporation | Processor providing intelligent management of values buffered in overlaid architected and non-architected register files |
-
2021
- 2021-05-10 US US17/315,585 patent/US11537530B2/en active Active
- 2021-05-24 CN CN202110564695.6A patent/CN113254363A/zh active Pending
-
2022
- 2022-11-21 US US18/057,726 patent/US11836092B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114238170A (zh) * | 2021-12-21 | 2022-03-25 | 海光信息技术股份有限公司 | 数据处理方法、数据处理装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20230080105A1 (en) | 2023-03-16 |
US20220358051A1 (en) | 2022-11-10 |
US11836092B2 (en) | 2023-12-05 |
US11537530B2 (en) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11055230B2 (en) | Logical to physical mapping | |
JP6832187B2 (ja) | データストレージサブシステムにおけるキャッシングのための方法およびシステム | |
US9785545B2 (en) | Method and apparatus for providing dual memory access to non-volatile memory | |
KR101480659B1 (ko) | 2-레벨 시스템 메인 메모리 | |
US9639481B2 (en) | Systems and methods to manage cache data storage in working memory of computing system | |
US20120317365A1 (en) | System and method to buffer data | |
US8966155B1 (en) | System and method for implementing a high performance data storage system | |
CN107797759B (zh) | 访问缓存信息的方法、装置与驱动器 | |
US10552045B2 (en) | Storage operation queue | |
CN107797760B (zh) | 一种访问缓存信息的方法、装置与固态驱动器 | |
CN110825669A (zh) | 修改NVMe PRP列表指针和数据指针以利于路由PCIe存储器请求 | |
CN108228483B (zh) | 处理原子写命令的方法和设备 | |
CN113711193A (zh) | 用以存取存储器子***中的高速缓存数据的队列中的优先级调度 | |
CN115993930A (zh) | 用于有序访问块修改存储器中的数据的***、方法和装置 | |
CN108228088B (zh) | 用于管理存储***的方法和设备 | |
US11836092B2 (en) | Non-volatile storage controller with partial logical-to-physical (L2P) address translation table | |
US9778858B1 (en) | Apparatus and method for scatter gather list handling for an out of order system | |
CN111625482A (zh) | 顺序流检测方法与装置 | |
KR20220062399A (ko) | 하이브리드 dimm에서 비순차적 처리를 위한 데이터 의존도 관리 | |
KR20220065817A (ko) | 하이브리드 dimm의 전송 파이프라인에서의 데이터 의존도 관리 | |
US9323671B1 (en) | Managing enhanced write caching | |
CN111290975A (zh) | 使用统一缓存处理读命令与预读命令的方法及其存储设备 | |
CN111290974A (zh) | 用于存储设备的缓存淘汰方法与存储设备 | |
US11436150B2 (en) | Method for processing page fault by processor | |
US9454488B2 (en) | Systems and methods to manage cache data storage |
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 | ||
CB02 | Change of applicant information |
Address after: Room 601-606, No. 40, Lane 565, Shengxia Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 201210 (nominal floor 6, actual floor 5) Applicant after: Yingren Technology Co.,Ltd. Address before: 2 / F, No.1, Lane 500, shengxia Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai 201210 Applicant before: Yingren Technology (Shanghai) Co.,Ltd. |
|
CB02 | Change of applicant information |