CN117009259A - 一种l2p加速器 - Google Patents

一种l2p加速器 Download PDF

Info

Publication number
CN117009259A
CN117009259A CN202210457604.3A CN202210457604A CN117009259A CN 117009259 A CN117009259 A CN 117009259A CN 202210457604 A CN202210457604 A CN 202210457604A CN 117009259 A CN117009259 A CN 117009259A
Authority
CN
China
Prior art keywords
data
table entry
memory
read
cache
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
Application number
CN202210457604.3A
Other languages
English (en)
Inventor
王玉巧
王祎磊
谷兴杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Starblaze Technology Co ltd
Original Assignee
Chengdu Starblaze Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Starblaze Technology Co ltd filed Critical Chengdu Starblaze Technology Co ltd
Priority to CN202210457604.3A priority Critical patent/CN117009259A/zh
Publication of CN117009259A publication Critical patent/CN117009259A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures

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加速器,该加速器包括:写通道和读通道,读通道响应于接到一个或多个第一读命令,根据每个第一读命令生成一个或多个第二读命令;根据每个第一读命令所对应的全部第一响应数据确定出每个第一读命令所指示的L2P表条目,将每个第一读命令所对应的L2P表条目发送给主设备;写通道响应于接收到一个或多个写命令,根据每个写命令获取其对应的地址索引和L2P表条目;以及根据地址索引以及L2P表条目的有效数据位数确定出每个写命令所对应的一个或多个存储器地址和其L2P表条目的有效数据第一比特在存储器中的位置;根据每个写命令所对应的一个或多个存储器地址以及第一比特的位置将L2P表条目的有效数据写入到存储器中。

Description

一种L2P加速器
技术领域
本申请一般地涉及存储器领域。更具体地,本申请涉及一种L2P加速器。
背景技术
图1展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如 SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102(下文中,将固态存储设备简称为存储设备)包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM (Dynamic RandomAccess Memory,动态随机访问存储器)110。
上述NVM芯片105包括NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(Magnetic Random Access Memory,磁阻存储器)、RRAM(Resistive RandomAccess Memory,阻变存储器)等是常见的存储介质。
上述接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
上述控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以包括存储控制器,该存储控制器用于耦合到DRAM110,并可访问DRAM 110的数据。
控制部件104包括闪存接口控制器(或称为介质接口、介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片 105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的 NVM芯片接口协议包括“Toggle”、“ONFI”等。
NVM存储介质上通常按页来存储和读取数据。而按块来擦除数据。NVM存储介质上的块(也称物理块)包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。可选地,访问存储设备的主机提供FTL。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表(也称为L2P表)。通常 FTL表的数据项记录了存储设备中以指定大小的存储单元为单位(例如,512字节、2KB、4KB 等)的地址映射关系。
随着存储设备的容量增加,为了记录更多的存储单元,L2P表的尺寸随之增加,进而需要占用更大的存储器来容纳L2P表。为了寻址更新的存储单元,L2P表的每个条目的尺寸也需要增加。例如,32比特大小的L2P表条目能寻址2^32(4G)个数据单元。若每个数据单元大小为4KB, 2^32个数据单元对应16TB存储容量,相应地L2P表自身的大小为16GB(4Bx4G=16GB,一个条目4个B,共4G个条目,16GB),需要占据至少16GB存储器空间。而存储设备具有多种容量,例如,提供给用户的存储设备的容量是例如4TB,那么L2P表自身的大小可以为4GB。然而,为了提供4TB存储空间,若每个数据单元为4KB,那么就是1G个单元,2的30次方就够了,那么L2P表需要管理的数据单元数量为2^30个,对应的L2P表的每个条目仅需30比特大小,进而 L2P表的大小为30*2^30比特(和3.75GB,小于4GB)。但是,受到存储器芯片与CPU寻址方式的限制,CPU寻址通道以32比特或字节的整数倍为一次寻址的数据宽度,存储器芯片也通常以字节的整数倍为数据宽度。从而若L2P表的条目大小为例如30比特,虽然减少了L2P表的整体大小,但其中跨字节边界的条目却需要例如2次或更多次总线访问或存储器访问才能加载到 CPU,从而显著增加了加载L2P表条目的时间,限制了存储设备的性能。
为了在提供多种容量的存储设备时,减低L2P表占据的存储器空间大小,并且减少或消除非字节对齐的L2P表条目对CPU或芯片内的其他设备访问L2P表条目的影响,通常提供了压缩的 L2P表。所提供的压缩的L2P表的条目大小可以不是字节的整数倍。并且压缩的L2P表条目在存储器中被紧密排列而无需为按字节对齐而在条目之间留有未被使用的存储器空间。但是为了消除因使用压缩的L2P表对CPU或其他设备造成的影响,通常CPU或其他设备还以其既有方式按字节对齐或按字节整数倍对齐的方式访问L2P表。
发明内容
随着存储设备的容量增加,为了记录更多的存储单元,L2P表的尺寸随之增加,进而需要占用更大的存储器来容纳L2P表。为了寻址更新的存储单元,L2P表的每个条目的尺寸也需要增加。例如,32比特大小的L2P表条目能寻址2^32(4G)个数据单元。若每个数据单元大小为4KB, 2^32个数据单元对应16TB存储容量,相应地L2P表自身的大小为16GB(4KBx4G=16GB,一个条目4KB,共4G个条目,16GB),需要占据至少16GB存储器空间。而存储设备具有多种容量,例如,提供给用户的存储设备的容量是例如4TB,那么L2P表自身的大小可以为4GB。然而,为了提供4TB存储空间,若每个数据单元为4KB,那么就是1G个单元,2的30次方就够了,那么 L2P表需要管理的数据单元数量为2^30个,对应的L2P表的每个条目仅需30比特大小,进而 L2P表的大小为30*2^30比特(和3.75GB,小于4GB)。但是,受到存储器芯片与CPU寻址方式的限制,CPU寻址通道以32比特或字节的整数倍为一次寻址的数据宽度,存储器芯片也通常以字节的整数倍为数据宽度。从而若L2P表的条目大小为例如30比特,虽然减少了L2P表的整体大小,但其中跨字节边界的条目却需要例如2次或更多次总线访问或存储器访问才能加载到 CPU,从而显著增加了加载L2P表条目的时间,限制了存储设备的性能。
为了在提供多种容量的存储设备时,减低L2P表占据的存储器空间大小,并且减少或消除非字节对齐的L2P表条目对CPU或芯片内的其他设备访问L2P表条目的影响,通常提供了压缩的 L2P表。所提供的压缩的L2P表的条目大小可以不是字节的整数倍。并且压缩的L2P表条目在存储器中被紧密排列而无需为按字节对齐而在条目之间留有未被使用的存储器空间。但是为了消除因使用压缩的L2P表对CPU或其他设备造成的影响,通常CPU或其他设备还以其既有方式按字节对齐或按字节整数倍对齐的方式访问L2P表。对于存储器中的L2P表,主设备通过向读命令访问L2P表,通过写命令将L2P表条目写入到存储器的L2P表中。本申请实施例希望以硬件加速器来加速对主设备所发送的访问L2P表的读命令以及指示向L2P表写入L2P表条目的写命令的处理,以分担CPU的负担并提升存储设备的性能。
根据本申请的第一方面,提供了根据本申请的第一L2P加速器,用于耦合主设备与存储器,并加速对所述主设备发出的对所述存储器中的L2P表的读命令与写命令的处理,该加速器包括:写通道和读通道,其中,
所述读通道响应于从主设备接到一个或多个第一读命令,根据每个第一读命令生成一个或多个第二读命令;响应于从存储器接收到每个第二读命令的第一响应数据,根据每个第一读命令所对应的全部第一响应数据确定出每个第一读命令所指示要读取的L2P表条目,将每个第一读命令所对应的L2P表条目以及第一协议信息作为对该第一读命令的响应发送给所述主设备;
所述写通道响应于从主设备接收到一个或多个写命令,根据每个写命令获取其对应的地址索引和L2P表条目;以及根据每个写命令所对应的地址索引以及L2P表条目的有效数据位数确定出每个写命令所对应的一个或多个存储器地址和其L2P表条目的有效数据第一比特在存储器中的位置;根据每个写命令所对应的一个或多个存储器地址以及其第一比特在存储器中的位置将其对应的L2P表条目的有效数据写入到存储器中。
根据本申请的第一方面所提供的第一L2P加速器,提供了根据本申请的第二L2P加速器,所述读通道还响应于所述一个或多个写命令中存在第一写命令,其中,第一写命令所指示的第一 L2P表条目的有效数据非字节对齐和/或第一L2P表条目的有效数据中第一比特不位于存储器中其对应的存储单元的起始位置,根据第一写命令所对应的存储器地址生成一个或多个第三读命令,并将一个或多个第三写命令发送给存储器;
所述写通道响应于接收到所述存储器所反馈的所有第三读命令的第二响应数据,根据第一 L2P表条目的有效数据中第一比特在存储器中的位置将所述有效数据与所述第二响应数据中的部分数据组合得到第一数据;根据缓存中所存储的第二协议信息以及所述第一数据生成第二数据,将所述第二数据发送给所述存储器。
根据本申请的第一方面所提供的第一或第二L2P加速器,提供了根据本申请的第三L2P加速器,所述一个或多个写命令存在第二写命令和第三写命令,其中,所述第二命令指示第二L2P表条目,第三写命令指示第三L2P表条目,所述第二L2P表条目与第三L2P表条目为L2P表中不同的条目;
所述写通道响应于所述第二L2P表条目与所述第三L2P表条目能拼接,将第二L2P表条目的有效数据与第三L2P表条目的有效数据进行拼接得到一份或多份拼接后的数据,将拼接后的数据写入到存储器中。
根据本申请的第一方面所提供的第三L2P加速器,提供了根据本申请的第四L2P加速器,所述读通道根据第二写命令所对应的一个或多个存储器地址生成一个或多个第四读命令;所述写通道响应于接收到存储器所反馈的所有第四读命令的第三响应数据;将所述第三响应数据与所述拼接后的数据进行组合得到第三数据,将所述第三数据以及第二协议信息发送给存储器;或
所述读通道根据第三写命令所对应的一个或多个存储器地址生成一个或多个第五读命令;所述写通道响应于接收到存储器所反馈的所有第五读命令的第四响应数据;将所述第四响应数据与所述拼接后的数据进行组合得到第四数据,将所述第四数据以及第二协议信息发送给存储器。
根据本申请的第一方面所提供的第四L2P加速器,提供了根据本申请的第五L2P加速器,响应于第二写命令有对应的一个或多个第四读命令,第三写命令有对应的一个或多个第五读命令,所述写通道响应于接收到所述第三响应数据和所述第四响应数据,将所述拼接后的数据与所述第三响应数据和所述第四响应数据进行组合得到第五数据,将所述第五数据以及第二协议信息发送给存储器。
根据本申请的第一方面所提供的第三至第五L2P加速器,提供了根据本申请的第六L2P加速器,,所述写通道响应于所述第二L2P表条目与所述第三L2P表条目不能拼接,且一个或多个第四读命令与一个或多个第五读命令所指示的存储器地址不冲突,将所述第二L2P表条目的有效数据与所述第三L2P表条目的有效数据并行写入到存储器中。
根据本申请的第一方面所提供的第六L2P加速器,提供了根据本申请的第七L2P加速器,所述写通道响应于一个或多个第四读命令与一个或多个第五读命令所指示的存储器地址存在冲突,将所述第二L2P表条目的有效数据写入到所述存储器中之后,再向所述存储器发出一个或多个第五读命令;或者将所述第三L2P表条目的有效数据写入到所述存储器中之后,再所述存储器发出一个或多个第四读命令。
根据本申请的第一方面所提供的第七L2P加速器,提供了根据本申请的第八L2P加速器,所述写通道响应于一个或多个第四读命令与一个或多个第五读命令所指示的存储器地址存在冲突,将第二写命令所对应的一个或多个存储器地址发送给所述读通道;
所述读通道响应于接收到第二写命令所对应的一个或多个存储器地址,根据该存储器地址生成一个或多个第四读命令;
所述写通道响应于接收到存储器所反馈的所有第四读命令的第三响应数据,将所述第三响应数据与所述第二L2P表条目的有效数据进行组合得到第六数据,将第六数据与第二协议信息发送给存储器;
所述写通道响应于接收到存储器所反馈的所有第四读命令的第三响应数据,将第三写命令所对应的一个或多个存储器地址发送给所述读通道;
所述读通道响应于接收到第三写命令所对应的一个或多个存储器地址,根据该存储器地址生成一个或多个第五读命令;
所述写通道响应于接收到存储器所反馈的所有第五读命令的第四响应数据,将所述第四响应数据与所述第三L2P表条目的有效数据进行组合得到第七数据,将第七数据与第二协议信息发送给存储器。
根据本申请的第一方面所提供的第三至第八L2P加速器,提供了根据本申请的第九L2P加速器,,所述写通道响应于所述第二L2P表条目与所述第三L2P表条目能拼接,将第二L2P表条目的全部有效数据与第三L2P表条目的全部有效数据进行拼接得到一份或多份拼接后的数据,将拼接后的数据写入到存储器中。
根据本申请的第一方面所提供的第一至第九L2P加速器,提供了根据本申请的第十L2P加速器,,所述读通道包括第一逻辑电路和第一多个缓存;
所述第一逻辑电路响应于从主设备接收到第一读命令,根据接收的第一读命令生成一个或多个第二读命令,并将标识每个第一读命令的第一标识信息与标识其对应的一个或多个第二读命令的第二标识信息之间的关系存储在所述第一多个缓存中;以及响应于接收到所述存储器所反馈的每个第二读命令的第一响应数据,对每个第二读命令所对应的第一响应数据进行处理得到第八数据以及第三协议信息,根据第三协议信息以及所述关系确定出每个第一读命令所对应的所有第八数据以及生成所述第一协议信息,将所述每个第一读命令所对应的所有第八数据进行处理得到每个第一读命令所指示访问L2P表的条目;以及将所述第一协议信息以及其所指示的访问L2P表的条目作为对每个第一读命令的响应发送给主设备。
根据本申请的第一方面所提供的第十L2P加速器,提供了根据本申请的第十一L2P加速器,,所述第一逻辑电路包括:第一解析模块、第一计算模块以及命令生成模块;其中,
所述第一解析模块,响应于接收到一个或多个第一读命令,解析每个第一读命令得到其对应的L2P表条目的地址索引,并将所述地址索引存储在多个缓存中的第一缓存;
所述第一计算模块与所述第一缓存耦合,根据每个第一读命令所对应的地址索引计算得到其对应的一个或多个第二读命令所访问的存储器地址;并为每个第二读命令设置其对应的第二标识信息,将所述第一标识信息与其对应一个或多个第二标识信息之间的关系存储到第二缓存中;
所述命令生成模块与所述计算模块耦合,根据所述存储器地址生成至少一个第二读命令,并将所述至少一个第二读命令发送给所述存储器。
根据本申请的第一方面所提供的第十一L2P加速器,提供了根据本申请的第十二L2P加速器,所述第一解析模块响应于接收到存储器基于每个第二读命令所反馈的第一响应数据,对所述第一响应数据进行解析得到第八数据和第三协议信息或者第八数据、第三协议信息以及标记符,其中,所述标记符用于标识L2P表条目的有效数据中最后一个比特位在对应的第八数据中的位置;
根据所述标记符从每个第一读命令所对应的所有第八数据中解析出其对应的L2P表条目的有效数据,将L2P表条目的有效数据以及所述第一协议信息作为对该第一读命令响应的数据。
根据本申请的第一方面所提供的第十一或第十二L2P加速器,提供了根据本申请的第十三 L2P加速器,所述第一逻辑电路还包括第一合并单元;所述第一合并单元根据每个第一读命令所对应的L2P表条目的长度将其对应的L2P表条目的有效数据与空比特数据进行合并得到其所指示的访问L2P表条目,其中,所述L2P表条目的有效数据位于L2P表条目的前N个连续的比特位,N为有效数据的长度。
将每个第一读命令所对应的L2P表条目和所述第一协议信息合并得到作为对该第一读命令的响应的数据。
根据本申请的第一方面所提供的第十三L2P加速器,提供了根据本申请的第十四L2P加速器,所述第一合并单元响应于得到每个第一读命令所对应的L2P表条目,更新该L2P表条目中标记符,以使得更新的标记符指示该L2P表条目或该L2P表条目的有效数据的最后一个比特位的位置。
根据本申请的第一方面所提供的第十至第十四L2P加速器,提供了根据本申请的第十五L2P 加速器,所述第一多个缓存包括:第一缓存、第二缓存、第三缓存、第四缓存、第五缓存、第六缓存以及第七缓存;其中,所述第一缓存用于缓存第一读命令所指示的地址索引;所述第二缓存用于缓存每个第一读命令的第一标识信息与其对应的一个或多个第二读命令的第二标识信息之间的映射关系;所述第三缓存用于缓存每个第二读命令所对应的第一响应数据;所述第四缓存与所述第三缓存耦合,用于缓存第三协议信息;所述第五缓存与所述第三缓存耦合,用于缓存每个第一读命令所对应的所有第八数据和标记符;所述第六缓存与所述第五缓存耦合,用于缓存每个第一读命令所对应的L2P表条目以及更新的标记符;所述第七缓存与所述第六缓存耦合,用于缓存每个第一读命令的响应。
根据本申请的第一方面所提供的第十五L2P加速器,提供了根据本申请的第十六L2P加速器,所述第一逻辑电路响应于收到每个第二读命令的第一响应数据,将每个第二读命令的第一响应数据存储到所述第三缓存中;
响应于将每个第二读命令的第一响应数据存储到所述第三缓存中,从所述第三缓存中的第一响应数据中获得第三协议信息并存储于所述第四缓存中以及获得第八数据存储于所述第五缓存中;
其中,根据第二缓存中所存储的第一标识信息和第二标识信息之间的关系,响应于收到每个第一读命令所对应的所有第一响应数据,所述第一合并单元从所述第五缓存中每个第一读命令所对应的所有第八数据获取该第一读命令所指示的访问L2P表条目的有效数据,以及根据L2P表条目长度将该L2P表条目的有效数据与空比特数据进行合并得到该L2P表条目,将该L2P表条目存储于所述第六缓存;以及更新标记符,将更新的标记符也存储于所述第六缓存;
从第六缓存中获取L2P表条目以及更新的标记符,从第二缓存中获取该第一读命令的第一标识信息,根据该第一标识信息生成第一协议信息,将该L2P表条目以及第一协议信息作为对第一读命令的响应,并该响应存储于所述第七缓存。
根据本申请的第一方面所提供的第一至第十六L2P加速器,提供了根据本申请的第十七L2P 加速器,所述写通道包括第二逻辑电路和第二多个缓存;其中,
所述第二逻辑电路响应于收到主设备所发送的一个或多个写命令,从每个写命令中获取地址索引和其指示的L2P表条目的数据,将所述地址索引以及所述L2P表条目的数据存储到所述第二多个缓存中;根据所述地址索引以及所述L2P表条目的有效数据位数确定出所述存储器中存储所述L2P表条目的有效数据的一个或多个存储器地址、所述有效数据的第一比特在存储器中的位置;根据每个写命令所对应的一个或多个存储器地址以及其第一比特在存储器中的位置将其对应的L2P表条目的有效数据写入到存储器中。
根据本申请的第一方面所提供的第十七L2P加速器,提供了根据本申请的第十八L2P加速器,所述第二逻辑电路响应于收到主设备所发送的所述一个或多个写命令的第二写命令,从第二写命令中获取第二地址索引和第二L2P表条目,将第二地址索引以及所述第二L2P表条目的数据存储到所述第二多个缓存中;根据第二地址索引以及所述第二L2P表条目的有效数据位数确定出一个或多个第二存储器地址以及第二L2P表条目的有效数据中第一比特在存储器中的第一位置,并将所述第二写命令的标识信息与第二存储器地址和第一位置之间的映射关系存储到所述第二多个缓存中;将第二L2P表条目的有效数据存储到所述第二多个缓存中;
所述第二逻辑电路响应于接收到所述一个或多个写命令的第三写命令,无论所述第二L2P表条目的有效数据写入到存储器的操作是否完成,都从所述第三写命令中获取第三地址索引和第三 L2P表条目,根据所述第三索引地址以及所述第三L2P表条目的有效数据的位数确定出一个或多个第三存储地址以及第三L2P表条目的有效数据中第一比特在存储器中的第二位置;并将所述第三写命令的标识信息与第三存储器地址和第二位置之间的映射关系存储到所述第二多个缓存中;将第三L2P表条目的有效数据存储到所述第二多个缓存中;
从缓存中将所述第二L2P表条目的有效数据和/或所述第三L2P表条目的有效数据写入到存储器中,其中所述第二L2P表条目的有效数据在所述存储器中的地址对应所述第二存储器地址以及所述第一位置,所述第三L2P表条目的有效数据在所述存储器中的地址对应所述第三存储器地址以及所述第二位置。
根据本申请的第一方面所提供的第十八L2P加速器,提供了根据本申请的第十九L2P加速器,响应于第二L2P表条目的有效数据非字节对齐或者第二L2P表条目的有效数据中第一比特不位于存储器中其对应的存储单元的起始位置,所述读通道中命令生成模块根据所述第二写命令所对应的一个或多个第二存储器地址生成一个或多个第四读命令,并将所述一个或多个第四读命令发送给所述存储器;
所述第二逻辑电路响应于接收到来自所述存储器基于每个第四读命令所反馈的第三响应数据,根据第一L2P表条目的有效数据中第一比特在存储器中的位置将第一L2P表条目的有效数据与所述第三响应数据中的部分数据组合得到第三数据;根据缓存中所存储的第二协议信息以及所述第三数据发送给所述存储器。
根据本申请的第一方面所提供的第十九L2P加速器,提供了根据本申请的第二十L2P加速器,所述第二逻辑电路响应于第二写命令有对应的第四读命令或没有对应的第四读命令,将第二写命令的标识信息与其对应的第四读命令的标识信息或者第二写命令的标识信息与未生成第四读命令的信息之间的第一映射关系存储在第二多个缓存中;和/或
响应于第三写命令有对应的第五读命令或没有对应的第五读命令,将第三写命令的标识信息与其对应的第五读命令的标识信息或者第三写命令的标识信息与未生成第五读命令的信息之间的第二映射关系存储在第二多个缓存中。
根据本申请的第一方面所提供的第二十L2P加速器,提供了根据本申请的第二十一L2P加速器,所述第二逻辑电路响应于将第二L2P表条目完成写入到存储器之前,第二L2P表条目和第三L2P表条目能拼接,将所述第二L2P表条目的有效数据与所述第三L2P表条目的有效数据进行拼接得到一份或多份拼接后的数据,并更新所述第一映射关系和所述第二映射关系,其中,
响应于得到一份或多份拼接后的数据,根据拼接后的数据的存储器地址使所述读通道的命令生成模块生成一个或多个第六读命令以替代所述一个或多个第四读命令和/或第五读命令;更新后的第一映射关系与第二映射关系的组合中包括所有第六读命令的标识,以及第一映射关系与第二映射关系给包括第六读命令的标识可以相同或不同。
根据本申请的第一方面所提供的第二十一L2P加速器,提供了根据本申请的第二十二L2P 加速器,所述第二逻辑电路响应于在发出了所述一个或多个第四读命令后在根据所述第三存储器地址生成一个或多个第五读命令之前,识别出所述一个或多个第五读命令与一个或多个第四读命令所指示的存储器地址存在冲突,暂停对第三写命令的处理。
根据本申请的第一方面所提供的第二十二L2P加速器,提供了根据本申请的第二十三L2P 加速器,响应于暂停对第三写命令的处理,还暂停对后续的其他写命令的处理。
根据本申请的第一方面所提供的第二十三L2P加速器,提供了根据本申请的第二十四L2P 加速器,所述第二逻辑电路响应于接收到所述第二L2P表条目的有效数据写入存储器完成的信息,恢复对被暂停的第三写命令的处理。
根据本申请的第一方面所提供的第十七至第二十四L2P加速器,提供了根据本申请的第二十五L2P加速器,所述第二逻辑电路,包括:第二解析模块、第二计算模块以及打包模块;其中,
所述第二解析模块,响应于接收到所述第二写命令,解析所述第二写命令得到第二地址索引和第二L2P表条目,并将所述第二地址索引缓存到所述第二多个缓存的第八缓存中以及将所述第二L2P表条目缓存在所述第二多个缓存中的第九缓存中;
所述第二计算模块,与所述第八缓存耦合,根据所述第二地址索引以及有效数据位数计算出所述一个或多个第二存储器地址、所述第一位置;将所述第二存储器地址以及所述第一位置存储于所述第二多个缓存中的第十缓存中以及将所述第二写命令的标识信息与所述第二存储器地址和第一位置之间的映射关系存储在第十一缓存中;以及将所述第二L2P表条目的有效数据缓存到所述第二多个缓存的第十三缓存中;
所述第二解析模块又接收到第三写命令,无论所述第二L2P表条目的有效数据写入到存储器的操作是否完成,都从所述第三写命令中获取第三地址索引和第三L2P表条目,并将第三地址索引存在所述第八缓存中以及将所述第三L2P表条目存储在所述第九缓存中;
所述第二计算模块,还与所述第十一缓存耦合,根据所述第三索引地址以及所述第三L2P表条目的有效数据的位数确定出一个或多个第三存储地址以及第三L2P表条目的有效数据中第一比特在存储器中的第二位置;并将所述第三存储器地址以及所述第二位置存储于所述第二多个缓存中的第十缓存中以及将所述第三写命令的标识信息与所述第三存储器地址和第二位置之间的映射关系存储在第十一缓存中;以及将所述第三L2P表条目的有效数据缓存到第十三缓存中;
所述打包模块,与所述第九缓存、所述第十缓存、所述第十三缓存以及缓存有效数据字节对齐信息的第十二缓存耦合,从所述第十三缓存中将所述第二L2P表条目的有效数据和/或所述第三L2P表条目的有效数据写入到存储器中,其中所述第二L2P表条目的有效数据在所述存储器中的地址对应所述第二存储器地址以及所述第一位置,所述第三L2P表条目的有效数据在所述存储器中的地址对应所述第三存储器地址以及所述第二位置。
根据本申请的第一方面所提供的第二十五L2P加速器,提供了根据本申请的第二十六L2P 加速器,所述第二逻辑电路还包括第二合并单元;所述第二合并单元从所述第二L2P表条目中提取出第二L2P表条目的有效数据并将所述第二L2P表条目的有效数据存储于所述第六缓存以及从所述第三L2P表条目中提取出第三L2P表条目的有效数据,并将所述第三L2P表条目的有效数据存储于所述第十三缓存。
根据本申请的第一方面所提供的第二十六L2P加速器,提供了根据本申请的第二十七L2P 加速器,所述第二合并单元响应于第二L2P表条目与所述第三L2P表条目能拼接,根据所述第一位置和所述第二位置将所述第二L2P表条目的有效数据与所述第三L2P表条目的有效数据进行拼接得到拼接后的一份或多份拼接后的数据。
根据本申请的第一方面所提供的第二十七L2P加速器,提供了根据本申请的第二十八L2P 加速器,响应于得到一份或多份拼接后的数据,且第二写命令有对应的一个或多个第四读命令和 /或第三写命令有对应的一个或多个第五读命令,所述第二合并单元还将所述第二写命令的标识信息与一个或多个第四读命令的标识信息存储在第十四缓存中;和/或将所述第三写命令的标识信息与一个或多个第五读命令的标识信息存储在第十四缓存中。
根据本申请的第一方面所提供的第二十七或第二十八L2P加速器,提供了根据本申请的第二十九L2P加速器,响应于得到一份或多份拼接后的数据,且第二写命令和第三写命令均没有对应的一个或多个读命令,所述打包模块根据所述拼接后的数据与所述第二协议信息生成第九数据,将所述第九数据发送给所述存储器。
根据本申请的第一方面所提供的第二十九L2P加速器,提供了根据本申请的第三十L2P加速器,响应于得到一份或多份拼接后的数据,且所述读通道根据所述第一存储器地址生成一个或多个第四读命令和/或根据第二存储器地址生成一个或多个第五读命令,其中所述一个或多个第四读命令同所述一个或多个第五读命令不访问相同的存储器地址;所述打包模块响应于接收到来自所述存储器所反馈的所有第四读命令的第三响应数据和/或所有第五读命令的第四响应数据,将所述拼接后的数据与所述第三响应数据和/或第四响应数据中部分数据组合得到第十数据;根据缓存中所存储的协议信息以及所述第十数据生成第十一数据,将所述第十一数据发送给所述存储器。
根据本申请的第一方面所提供的第十七至第三十L2P加速器,提供了根据本申请的第三十一 L2P加速器,所述第二多个缓存,包括:第八缓存、第九缓存、第十缓存、第十一缓存、第十二缓存、第十三缓存、第十四缓存、第十五缓存、第十六缓存以及第十七缓存;其中,所述第八缓存用于缓存索引地址;所述第九缓存用于缓存写命令所指示的L2P表条目;所述第十缓存用于缓存L2P表条目所对应的存储器地址和L2P表条目的有效数据第一比特在存储器中的位置;所述第十一缓存用于缓存写命令的标识信息与存储器地址和L2P表条目的有效数据第一比特在存储器中的位置之间的映射关系;所述第十二缓存用户缓存有效数据字节对齐信息;第十三缓存与所述第九缓存耦合,缓存写命令所指示的L2P表条目的有效数据;第十四缓存用于缓存写命令的标识信息与其对应的一个或多个读命令的标识信息;所述第十五缓存用于缓存协议信息;所述第十六缓存与所述第十三缓存耦合,用于缓存所述L2P表条目的有效数据;所述第十七缓存与所述逻辑电路耦合,用于缓存所述读通道发送的读命令的响应数据。
根据本申请的第一方面所提供的第三十一L2P加速器,提供了根据本申请的第三十二L2P 加速器,其中,所述第二逻辑电路响应于从第二写命令中获得第二地址索引和第二L2P表条目,将第二地址索引存储于所述第八缓存中以及将所述第二L2P表条目缓存于所述第九缓存中;以及根据所述第二地址索引以及所述有效数据位数确定出一个或多个第二存储器地址以及所述第一位置,将所述一个或多个第二存储器地址以及所述第一位置存储于所述第十缓存中;以及将所述第二写命令的标识信息与所述第二存储器地址和第一位置之间的映射关系存储在第十一缓存中;
响应于将第二L2P表条目缓存于所述第九缓存中,从所述第九缓存中获取第二L2P表条目的有效数据并存储于第十三缓存;
响应于第九缓存中的第三L2P表条目与所述第十三缓存中所存储的第二L2P表条目不能拼接,将所述第二L2P表条目的有效数据搬移到所述第十六缓存;响应于第九缓存中的第三L2P 表条目同所述第十三缓存中所存储的所述第二L2P表条目能拼接,将第三L2P表条目的有效数据写入所述第十三缓存,再从所述第十三缓存将拼接后的所述第二L2P表条目的有效数据与所述第三L2P表条目的有效数据搬移到所述第十六缓存;
响应于将所述第二L2P表条目的有效数据与所述第三L2P表条目的有效数据搬移到所述第十六缓存,以及响应于第二写命令和第三写命令没有对应的读命令,从第十六缓存将所述第二 L2P表条目的有效数据与所述第三L2P表条目的有效数据写入到存储器中。
根据本申请的第一方面所提供的第三十二L2P加速器,提供了根据本申请的第三十三L2P 加速器,响应于第二写命令有对应的一个或多个第四读命令和/或第三写命令有对应的一个或多个第五读命令,则响应于在所述第十缓存中存储所有第四读命令所对应的第三响应数据和/或响应于在所述第十缓存中存储所有第五读命令所对应的第四响应数据,将所述第二L2P表条目的有效数据与所述第三响应数据组合得到第十二数据和/或将所述第三L2P表条目的有效数据与第四响应数据组合得到第十三数据;根据第六缓存中所存储的协议信息以及所述第十二数据或所述第十三数据生成第十四数据,将所述第十四数据发送给所述存储器。
根据本申请的第一方面所提供的第三十三L2P加速器,提供了根据本申请的第三十四L2P 加速器,其中,所述第十三缓存中包括第一存储单元和第二存储单元,所述第一存储单元与所述第二存储单元的大小与所述存储器中存储单元大小相同;
响应于第九缓存中的第三L2P表条目同所述第十三缓存中所存储的所述第二L2P表条目能拼接,且在L2P表中第二L2P表条目与第三L2P表条目相邻且位于其之前,第二写命令与第三写命令所对应的存储器地址相同,所述第二合并单元根据第二L2P表条目的有效数据中第一比特在其对应的存储器存储单元中的位置将所述第二L2P表条目的有效数据存储到所述第六缓存中第一存储单元,其中,所述第二L2P表条目的有效数据中第一比特在第一存储单元中的位置与其在对应的存储器存储单元中的位置相同;
所述第二合并单元在所述第一存储单元中将所述第三L2P表条目的有效数据与所述第二 L2P表条目的有效数据依次首尾相连接得到一份拼接后的数据,其中,所述第三L2P表条目的有效数据中第一比特在第一存储单元中的位置与其在对应的存储器存储单元中的位置相同。
根据本申请的第一方面所提供的第三十四L2P加速器,提供了根据本申请的第三十五L2P 加速器,其中,响应于第二写命令与第三写命令所对应的存储器地址不相同,所述第二合并单元根据第二L2P表条目的有效数据中第一比特在其对应的存储器存储单元中的位置将所述第二 L2P表条目的有效数据存储于所述第一存储单元中得到第一拼接后的数据,根据第三L2P表条目的有效数据中第一比特在其对应的存储器存储单元中的位置将所述第二L2P表条目的有效数据存储于第二存储单元中得到第二拼接后的数据。
根据本申请的第一方面所提供的第三十五L2P加速器,提供了根据本申请的第三十六L2P 加速器,响应于第二写命令与第三写命令所对应的存储器地址部分相同,将所述第三L2P表条目的有效数据部分存储于第一存储单元中,并与所述第二L2P表条目的有效数据依次首尾相连接得到第一拼接后的数据,将所述第二L2P表条目的有效数据的另一部分存储于所述第二存储单元中得到第二拼接后的数据。
根据本申请的第一方面所提供的第三十六L2P加速器,提供了根据本申请的第三十七L2P 加速器,响应于在L2P表中所述第三L2P表条目与所述第二L2P表条目相邻且位于其之前,所述第二合并单元将所述第二L2P表条目的有效数据存储于所述第一存储单元后,所述第一存储单元中起始位置到所述第二L2P表条目的有效数据的第一比特之间的位数小于所述第三L2P表条目的有效数据的位数,则所述第二合并单元将所述第三L2P表条目的有效数据的部分数据存储于所述第一存储单元中起始位置到所述第二L2P表条目的有效数据的第一比特之间得到一份拼接后的数据,将所得到的一份拼接后的数据搬移到第十六缓存,以及将所述第三L2P表条目的有效数据的其余部分存储于所述第十三缓存中。
根据本申请的第一方面所提供的第三十一至第三十七L2P加速器,提供了根据本申请的第三十八L2P加速器,响应于将第三L2P表条目的数据缓存于所述第九缓存中,且所述第三L2P表条目与所述第二L2P表条目不能拼接,将所述第二L2P表条目的有效数据搬移到所述第十六缓存中,以及将所述第三L2P表条目的有效数据搬移到所述第十三缓存。
根据本申请的第一方面所提供的第三十一至第三十八L2P加速器,提供了根据本申请的第三十九L2P加速器,响应于所述第二L2P表条目的有效数据与所述第三L2P表条目的有效数据所对应的存储器地址以及第一比特在存储器中的位置均相同,所述第二合并单元用所述第三L2P表条目的有效数据覆盖所述第一存储单元中所述第二L2P表条目的有效数据得到一份拼接后的数据。
根据本申请的第一方面所提供的第三十九L2P加速器,提供了根据本申请的第四十L2P加速器,响应于得到一份或者两份拼接后的数据,所述第二合并单元还将所述第一存储单元和/或所述第二存储单元中的数据整体搬移到所述第十六缓存中。
根据本申请的第一方面所提供的第四十L2P加速器,提供了根据本申请的第四十一L2P加速器,其中,所述第十三缓存中包括第一存储单元和第二存储单元,所述第一存储单元与所述第二存储单元的大小与所述存储器中存储单元大小相同;
所述第二合并单元根据第二L2P表条目的有效数据的第一比特在其对应的存储器存储单元中的位置将所述第二L2P表条目的有效数据存储到所述第十三缓存中第一存储单元,;
所述第二合并单元响应于将第二L2P表条目的数据缓存于所述第九缓存中,从所述第九缓存中获取所述第二L2P表条目的第二L2P表条目的有效数据,根据第二L2P表条目的有效数据的第一比特在其对应的存储器存储单元中的位置将所述第二L2P表条目的有效数据存储到所述第十三缓存中的第一存储单元,其中,所述第二L2P表条目的有效数据的第一比特在第一存储单元中的位置与其在对应的存储器存储单元中的位置相同;响应于将第三L2P表条目的数据缓存于所述第九缓存中,且所述第二L2P表条目与所述第三L2P表条目在L2P表中相邻,根据第三L2P 表条目的有效数据的第一比特在其对应的存储器存储单元中的位置将所述第三L2P表条目的有效数据存储到所述第十三缓存中的第一存储单元和/或第二存储单元,其中,所述第三L2P表条目的有效数据的第一比特在第一存储单元和/或第二存储单元中的位置与其在对应的存储器存储单元中的位置相同,且所述第二L2P表条目的有效数据与所述第三L2P表条目的有效数据在所述第十三缓存中相邻且不重叠。
根据本申请的第一方面所提供的第三十一至第四十一L2P加速器,提供了根据本申请的第四十二L2P加速器,在读通道中命令生成模块发出所述一个或多个第四读命令后,所述逻辑电路响应于一个或多个第五读命令与一个或多个第四读命令所指示的存储器地址存在冲突,不将所述第三写命令的标识信息与其对应的一个或多个第五读命令的标识信息存储在第十四缓存中以及不将第三L2P表条目的有效数据存储到第十三缓存中,以暂停对第三写命令的处理,以及还暂停对后续写命令的处理。
根据本申请的第一方面所提供的第四十二L2P加速器,提供了根据本申请的第四十三L2P 加速器,所述第二逻辑电路响应于接收到所述第二L2P表条目的有效数据写入存储器完成的信息,恢复对所述第三写命令的处理,将所述第三写命令的标识信息与其对应的一个或多个第五读命令的标识信息存储在第十四缓存中以及将第三L2P表条目的有效数据存储到第十三缓存中;以及将第三L2P表条目的有效数据搬移到第十六缓存,以将第三L2P表条目的有效数据写入到存储器中。
根据本申请的第一方面所提供的第三十一至第四十三L2P加速器,提供了根据本申请的第四十四L2P加速器,所述第二逻辑电路响应于第十一缓存收到所述第二L2P表条目的有效数据写入存储器完成的信息,将第二写命令的标识信息与所述第二存储器地址和第一位置之间的映射关系删除。
根据本申请的第二方面,提供了根据本申请的第一控制部件,包括第一方面所述的第一至第四十四所述的加速器。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为现有技术的固态存储设备的框图;
图2A展示了本申请实施例所提供的控制部件的结构示意图;
图2B展示了本申请实施例所提供的L2P加速器的结构示意图;
图2C展示了本申请所提供的主设备所感知的L2P表条目与存储器所存储的L2P表条目之间转换的示意图;
图3A展示了本申请实施例所提供的加速器处理写命令的示意图;
图3B展示了本申请实施例所提供的加速器并行处理多个写命令的示意图;
图3C展示了本申请实施例所提供的写命令所指示的L2P表条目的有效数据与存储器所反馈的响应数据的组合示意图;
图4展示了本申请实施例所提供的另一种加速器的结构示意图;
图5A展示了本申请实施例所提供的一种对多个L2P表条目的有效数据进行拼接的示意图;
图5B展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图;
图5C展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图;
图5D展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图;
图5E展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图;
图5F展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图;
图6A展示了本申请实施例所提供的一种拼接后的数据与响应数据组合得到组合后的数据的示意图;
图6B展示了本申请实施例所提供的另一种拼接后的数据与响应数据组合得到组合后的数据的示意图;
图7展示了本申请实施例所提供的在多个缓存下对多个写命令进行处理的示意图;
图8A展示了本申请实施例所提供的加速器处理读命令的示意图;
图8B展示了本申请实施例所提供的读通道的结构示意图;
图8C展示了加速器并行处理多个读命令A的处理机制;
图8D展示了本申请实施例所提供的另一种读通道的结构示意图;
图8E展示了本申请实施例逻辑电路中各缓存存储数据的过程示意图;
图8F展示了本申请实施例逻辑电路中多个缓存的结构示意图;
图9展示了本申请实施例加速器执行读改写操作的示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2A展示了本申请实施例所提供的控制部件的结构示意图。
在图2A中,控制部件包括主设备、加速器以及从设备。作为举例,主设备为CPU、介质接口控制器或处理核;从设备为存储器控制器。主设备和加速器之间和/或加速器与从设备之间例如通过总线耦合。又作为举例,本申请实施例中的加速器可以为L2P加速器,用于加速将主设备所发送的写命令指示的L2P表条目的有效数据存储到存储器的L2P表中。
控制部件还耦合外部的存储器(图2A的DRAM),存储器控制器用于访问外部存储器。作为举例,加速器包括从设备接口与主设备接口。加速器通过从设备接口与主设备接口分别耦合到总线。从而控制部件的一个或多个主设备(例如CPU、介质接口控制器)得以通过从设备接口访问加速器,将加速器作为总线从设备访问。而加速器得以通过主设备接口作为主设备访问控制部件的一个或多个从设备(例如存储器控制器)。
作为举例,位于控制部件外部的存储器用于存储L2P表,主设备可以向存储器的L2P表写入 L2P表的条目数据。主设备通过向总线发出指示L2P表的条目数据的写命令。总线将写命令发送给耦合于总线的加速器。加速器根据接收的写命令中指示的地址索引确定该L2P表的条目数据在存储器所存储位置,并通过总线向从设备(如存储器控制器)发送该写命令所指示的L2P表的条目数据,从设备将接收到的L2P表的条目数据发送给存储器,存储器根据该L2P表的条目数据所存储的位置将该L2P表的条目数据存储到L2P表中。
图2B展示了本申请实施例所提供的L2P加速器的结构示意图。
在图2B中,该L2P加速器包括写通道和读通道,其中,读通道是指形成了从存储器中读取数据的数据通路的电路,写通道是指形成了向存储器中写入数据的数据通路的电路。本申请实施例所提供的方案中为了减低L2P表占据的存储器空间大小,并且减少或消除非字节对齐的L2P 表条目对CPU或芯片内的其他设备访问L2P表条目的影响,存储器所存储的L2P表为压缩的L2P 表,其中,压缩的L2P表的条目大小可以不是字节的整数倍。并且压缩的L2P表条目在存储器中被紧密排列而无需为按字节对齐而在条目之间留有未被使用的存储器空间。
进一步,为了使得存储器能够存储压缩的L2P表,本申请实施例所提供的加速器会对写命令所指示的L2P表条目的数据进行处理,仅将L2P表条目的有效数据提取出来发送给存储器进行存储,而L2P表条目的无效数据不提供给存储器。另外,存储器包括多个对齐的存储单元,每个存储单元用于存储L2P表的多个条目的有效数据,L2P表的多个条目的有效数据在存储器中无需按字节边界对齐方式存储。
进一步,本申请实施例所提供的方案中,加速器根据主设备所发送的读命令,从存储器中读取L2P表条目,例如,存储器所存储的是压缩的L2P表,加速器从存储器中读取的L2P表条目为L2P表条目的有效数据。主设备和加速器之间通过总线传输数据,所传输的数据需满足总线协议,例如,加速器与主设备之间所传输的L2P表条目需满足字节对齐或8字节对齐。若存储器所存储的L2P表条目不满足总线协议时,加速器根据主设备所发送的读命令从存储器中读取L2P 表条目,并传输给主设备的过程中,需要将从存储器所读取的L2P表条目转换为主设备所感知的 L2P表条目。
图2C展示了本申请所提供的主设备所感知的L2P表条目与存储器所存储的L2P表条目之间转换的示意图。
在存储器(SRAM或DRAM)中所存储的L2P表包括多个条目,由逻辑地址(记为LBA)寻址L2P表的条目。在图2C中,主设备所感知的L2P表条目与存储器所存储的L2P表条目一一对应,因此主设备所感知的L2P表条目与存储器所存储的L2P表条目具有相同数量的条目,如 L2P表包括8个条目,分别为条目0、条目1、条目2、条目3、条目4、条目5、条目6以及条目7。主设备所感知的L2P表条目大小为M比特,存储器所存储的L2P表条目大小为N比特,其中M与N均为正整数。应理解,主设备所感知的L2P表条目可以为主设备通过写命令要写入的L2P表条目,也可以是通过读命令所读取的L2P表条目。也将主设备所感知的L2P表称为逻辑L2P表。
为了便于例如CPU访问逻辑L2P表,M的大小是例如字节整数倍(如8字节),从而逻辑 L2P表的条目按8字节或字节对齐。在图2C,从访问逻辑L2P表的CPU看来,主设备所感知的 L2P表中每个条目大小为M比特(图2A的例子中,M=64),而主设备所感知的L2P表的各个条目在存储空间中首尾相接依次排列,用逻辑地址(LBA)索引主设备所感知的L2P表的存储空间得到对应的L2P表条目,例如,例如, size(L2P entry)表示L2P表条目的尺寸,例如64比特;/>表示向下取整。L2P表的条目中记录的是用于NVM芯片的地址(称为物理地址,记为PBA)。由于主设备所感知的L2P表是按8字节或字节对齐的,从而其每个条目在存储空间中的起始地址均位于字节或8字节整数倍的起始位置,条目的结尾位于字节或8字节整数倍的结束位置。在图2C的例子中,根据逻辑地址(LBA)为索引,CPU访问L2P表的对应条目时,以例如LBA*8得到L2P表的对应条目的地址(64比特对应8字节)。
由于主设备所感知的L2P表中每个条目中部分或全部为有效数据。当主设备所感知的L2P 表中每个条目中全部均为有效数据,N等于M;当主设备所感知的L2P表中每个条目中部分为有效数据,部分为空比特数据时,存储器所存储的L2P表条目大小N等于主设备所感知的L2P表条目中有效数据,而主设备所感知的L2P表条目中有效数据是根据寻址NVM芯片提供的数据单元(例如,页)数量来确定的。例如,为了寻址2^30个数据单元,那么N为30。一般地,若存储器所存储的L2P表的条目能寻址2^n个数据单元之一,那么N=n。作为举例,图2C中,N=30。存储器所存储的L2P表中,均存储各个条目中的有效数据,且各条目的有效数据按照首尾相接地存储在存储器提供的存储空间中,相邻条目之间没有未被使用的存储空间。从而一些条目的起始位置和/或结束位置不位于字节的边界。
回到图2B,作为举例,主设备会向加速器发送一个或多个写命令,加速器可以一个写命令一个写命令的处理,也可以对多个写命令并行处理,以将写命令所指示的L2P表条目存储到存储器中。
图3A展示了本申请实施例所提供的加速器处理写命令的示意图。
作为举例,在本申请实施例所提供的方案中,加速器主要通过写通道来对写命令进行处理,在图3A所示的加速器结构中,写通道包括逻辑电路Q1和多个缓存N1。逻辑电路Q1包括解析模块11、计算模块12以及打包模块13;其中,解析模块11,响应于接收到写命令,解析写命令得到其所指示地址索引和L2P表条目的数据,并将地址索引以及将L2P表条目的数据缓存在多个缓存N1中;计算模块12,与多个缓存N1耦合,根据地址索引以及有效数据位数确定出存储器中存储L2P表条目的有效数据的存储单元的地址、有效数据的第一比特在存储器中的位置;将存储单元的地址以及有效数据的第一比特在存储器中的位置存储于多个缓存N1中;打包模块13,与多个缓存N1耦合,响应于有效数据非字节对齐,接收到来自存储器基于每个读命令所反馈的响应数据,将有效数据与响应数据中的部分数据组合;根据多个缓存N1中所存储的第一协议信息以及组合后的数据生成数据1,将数据1发送给存储器。应理解,存储器控制器发送给存储器的数据1中携带有协议信息(如AXI协议信息),但是存储器在存储单元中仅存储L2P表条目的有效数据,不存储协议信息。
主设备向写通道发送写命令,写通道的逻辑电路Q1中解析模块11接收该写命令,表示为过程(2.1),在该过程中主设备和加速器之间可通过总线进行数据交互,例如AXI总线;另外,写命令指示了L2P表条目的数据以及地址索引(如,逻辑地址LBA)。解析模块11响应于收到主设备所发送的写命令,从写命令中获取地址索引和其指示的L2P表条目的数据,将地址索引以及L2P表条目的数据存储到缓存N1中,表示为过程(2.2);然后计算模块11根据地址索引计算出存储器中存储L2P表条目的有效数据的一个或多个存储器地址(如一个或多个存储单元地址)。在计算出存储L2P表条目的有效数据的一个或多个存储器地址后,还根据L2P表条目的有效数据位数确定出L2P表条目的有效数据的第一比特在其对应存储单元中的位置,并将一个或多个存储器地址以及有效数据的第一比特在存储器中的位置存储到多个缓存N1中,表示为过程 (2.3)。另外,作为举例,在图3A所示的加速器中逻辑电路Q1除了包括解析模块11、计算模块12以及打包模块13,还包括合并单元14;合并单元14从多个缓存N1中获取写命令的所指示的L2P表条目的有效数据,并将其存储在多个缓存N1中,表示为过程(2.4)。
进一步,由于加速器与主设备、加速器与从设备之间均是通过总线进行传输数据的,故加速器与主设备、加速器与从设备之间所传输的数据均需满足总线协议(如AXI协议)所定义的数据传输方式。作为举例,总线协议定义了通过总线所传输的数据需要按照字节对齐的方式传输,例如,所传输的数据位宽为字节整数倍、所传输的数据位宽为8字节的整数倍等,即本申请所提供的加速器将L2P表条目的有效数据提供给从设备需要按照字节对齐的方式传输数据,若L2P 表条目的有效数据非字节对齐或者第一比特不位于存储器中其对应的存储单元的起始位置,加速器还需要通过读通道配合来执行读改写操作,其中,读改写操作包括过程(2.5)~(2.12)。作为举例,读通道响应于有效数据字节对齐且第一比特不位于存储器中其对应的存储单元的起始位置或非字节对齐,根据一个或多个存储器地址生成一个或多个读命令,表示为过程(2.5);读通道将一个或多个读命令发送给存储器,表示为过程(2.6)~(2.7)。打包模块13响应于接收到来自存储器基于每个读命令所反馈的响应数据,根据第一比特在存储器中的位置将L2P表条目的有效数据与响应数据中的部分数据组合;根据缓存中所存储的第一协议信息以及组合后的数据生成数据1,其中,第一协议信息为AXI协议信息,数据1包含协议信息和L2P表条目的有效数据,并将数据1发送给存储器,以使得存储器存储数据1中的L2P表条目的有效数据,表示为过程(2.8) ~(2.12),例如,L2P表条目的长度为64bit,L2P表条目的有效数据为30bit,数据1中前30 比特为L2P表条目的有效数据,后34比特为响应数据中的部分数据。另外,在将写命令所指示的L2P表条目的有效数据写入到存储器中之后,写通道还向主设备发送反馈信息,以指示写命令处理完成,表示为过程(2.13)。
又作为举例,若写命令所指示的L2P表条目的有效数据字节对齐,且第一比特位于其对应的存储单元的起始位置,打包模块13直接获取L2P表条目的有效数据,将L2P表条目的有效数据与第一协议信息生成数据1,根据存储器地址将该数据1发送给所述存储器,表示为过程(2.10) ~(2.12)。即本申请实施例所提供的方案中,在L2P表条目的有效数据非字节对齐或者第一比特不位于存储器中其对应的存储单元的起始位置时,才执行读改写操作(过程(2.5)~(2.12))。
进一步,在本申请实施例所提供的方案中,在对写命令进行处理过程中,加速器可以在接收到一个写命令之后即执行一次写操作,将该写命令所指示的L2P表条目的有效数据写入到存储器中。为了节省带宽资源或减少访问存储器的数据量,加速器也可以等待接收到多个写命令所指示的L2P表条目后,执行一次写操作,将多个L2P表条目的有效数据写入到存储器中。又作为举例,加速器在等待接收到多个写命令所指示的L2P表条目后,合并单元14可以将多个L2P表条目的有效数据进行拼接得到一份或多份拼接后的数据,然后加速器再通过执行一次写操作将一份或多份拼接后的数据写入到存储器中(具体拼接过程下文进行描述);也可以不对多个L2P表条目的有效数据进行拼接,加速器直接根据每个L2P表条目所对应的存储器地址以及有效数据的第一比特在存储器中的位置,将多个L2P表条目的有效数据写入到存储器中。
进一步,作为举例,要写入到存储器的L2P表条目可能不止一条,主设备通过发送多个写命令将多条L2P表条目写入到存储器中。对于多条写命令,加速器可以一条一条的处理,也可以并行处理多条写命令。以加速器接收主设备发送的两个写命令,分别为写命令A1和写命令A2,其中,写命令A1指示将L2P表条目120写入到存储器,写命令A2指示将L2P表条目121写入到存储器为例,对加速器的并行处理机制进行说明。
图3B展示了本申请实施例所提供的加速器并行处理多个写命令的示意图。
作为举例,在图3B中,主设备向写通道发送写命令A1,表示为过程(3.1)。写通道中逻辑电路Q1响应于收到主设备所发送的写命令A1,从写命令A1中获取地址索引1和其指示的L2P 表条目120的数据,将地址索引1以及L2P表条目120的数据存储到缓存N1中;然后根据地址索引1计算出存储器中存储L2P表条目120的有效数据的一个或多个存储器地址(如一个或多个存储单元地址)。在计算出存储L2P表条目120的有效数据的一个或多个存储器地址后,还根据 L2P表条目120的有效数据位数确定出L2P表条目120的有效数据的第一比特在其对应存储单元中的位置,并将一个或多个存储器地址以及有效数据的第一比特在存储器中的位置,以及L2P表条目120存储到缓存N1中,表示为过程(3.2)。
在将写命令A1所对应的一个或多个存储器地址、L2P表条目120的有效数据的第一比特在其对应的存储单元中的位置,以及L2P表条目120存储到缓存后,写通道又接收到主设备发送的写命令A2,表示为过程(3.3)。写通道在接收到写命令A2之后,不管写通道是否将L2P表条目120的有效数据写入到存储器的操作是否完成,写通道中逻辑电路Q1都从所述写命令A2中获取地址索引2和L2P表条目121,根据所述索引地址2以及所述L2P表条目121的有效数据的位数确定出一个或多个存储地址以及L2P表条目121的有效数据中第一比特在存储器中的位置;并将所述写命令A2的标识信息与存储器地址2和其位置之间的映射关系存储到缓存N1中;将 L2P表条目121的有效数据存储到缓存N1中,表示为过程(3.4)。
根据本申请的实施例,加速器在接收到写命令A2后,无论L2P表条目120的有效数据写入到存储器的操作是否完成,但加速器依然可以处理又收到的写命令A2进行解析获取地址索引2 和L2P表条目121,根据所述索引地址2以及所述L2P表条目121的有效数据的位数确定出一个或多个存储地址以及L2P表条目121的有效数据中第一比特在存储器中的位置等操作。从而加速器具有并行处理主设备发出的多个写命令的能力。虽然图3B中以主设备发出的2个写命令A1 与A2为例做了说明,可以理解地,加速器可以并行处理更多数量的来自主机的写命令。
进一步,在本申请实施例所提供的方案中,在对多个写命令进行处理过程中,加速器可以在接收到一个写命令之后即执行一次写操作,将该写命令所指示的L2P表条目的有效数据写入到存储器中。为了节省带宽资源或减少访问存储器的数据量,加速器也可以等待接收到多个写命令所指示的L2P表条目后,执行一次写操作,将多个L2P表条目的有效数据写入到存储器中。又作为举例,加速器在等待接收到多个写命令所指示的L2P表条目后,可以将多个L2P表条目的有效数据进行拼接得到一份或多份拼接后的数据,通过执行一次写操作将一份或多份拼接后的数据写入到存储器中(具体拼接过程下文进行描述);也可以不对多个L2P表条目的有效数据进行拼接,直接根据每个L2P表条目所对应的存储器地址以及有效数据的第一比特在存储器中的位置,将多个L2P表条目的有效数据写入到存储器中。
又进一步,在前述图3A部分已经讲述过,加速器在将写命令所指示的L2P表条目的有效数据写入到存储器的过程中,对于L2P表条目的有效数据非字节对齐,或者字节对齐但其第一比特不位于存储器中其对应的存储单元的起始位置,加速器在将L2P表条目的有效数据写入到存储器的过程中需要进行读改写操作。当加速器对多个写命令进行并行处理时,可以会涉及对多个写命令的读改写操作,也可能会涉及所指示的L2P表条目可拼接的多个写命令的读改写操作。为了便于理解下面还以加速器对写命令A1和写命令A2为例对所指示的L2P表条目可拼接的多个写命令的读改写操作过程进行简要介绍,其中,写命令A1所指示的L2P表条目120和写命令A2所指示的L2P表条目121可拼接。
作为举例,在图3B中,逻辑电路Q1在根据写命令A1所对应的索引地址1以及所述L2P表条目120的有效数据的位数确定出一个或多个存储地址以及L2P表条目120的有效数据中第一比特在存储器中的位置后,若L2P表条目120的有效数据非字节对齐或者字节对齐但其有效数据的第一比特不位于其对应的存储单元的起始位置,则读通道根据逻辑电路Q1所确定出的一个或多个存储器地址生成读命令B11和读命令B12,其中,写命令A1的标识信息为ID1,读命令B11 的标识信息为ID1_1,读命令B12的标识信息为ID1_2。在读通道生成读命令B11和读命令B12 后,加速器将写命令A1的标识信息与读命令B11和读命令B12的标识信息之间的映射关系存储在缓存N1中,例如,<ID1→ID1_1,ID1_2>,表示为过程(3.5)。进一步,逻辑电路Q1在根据写命令A2所对应的索引地址2以及所述L2P表条目122的有效数据的位数确定出一个或多个存储地址以及L2P表条目122的有效数据中第一比特在存储器中的位置后,若L2P表条目122的有效数据非字节对齐或者字节对齐但其有效数据的第一比特不位于其对应的存储单元的起始位置,则读通道根据写通道所确定出的一个或多个存储器地址生成读命令B21和读命令B22,其中,写命令A2的标识信息为ID2,读命令B21的标识信息为ID2_1,读命令B22的标识信息为ID2_2。在读通道生成读命令B21和读命令B22后,加速器将写命令A2的标识信息与读命令B21和读命令B22的标识信息之间的映射关系存储在缓存N1中,例如,<ID2→ID2_1,ID2_2>,表示为过程(3.6)。此时,在缓存N1中存储了写命令A1的标识信息与读命令B11和读命令B12的标识信息之间的映射关系,以及写命令A2的标识信息与读命令B21和读命令B22的标识信息之间的映射关系。
进一步,逻辑电路Q1从缓存中所存储的L2P表条目120中提取L2P表条目120的有效数据,以及从L2P表条目121中提取L2P表条目121的有效数据,将L2P表条目120的有效数据与L2P 表条目121的有效数据进行拼接得到拼接后的L2P表条目120与L2P表条目121的有效数据,并将拼接后的L2P表条目120与L2P表条目121的有效数据存储到缓存N1中。读通道可以根据拼接后的L2P表条目120与L2P表条目121的有效数据所对应的存储器地址生成新的一个或多个读命令,例如,拼接后的L2P表条目120与L2P表条目121的有效数据所对应的存储器地址包括两个不同的存储器地址,读通道根据这两个不同的存储地址生成读命令C1和读命令C2,其中,读命令C1的标识信息为ID3_1,读命令C2的标识信息为ID3_2,根据读命令C1和读命令C2的标识信息更新缓存中存储了写命令A1的标识信息与读命令B11和读命令B12的标识信息之间的映射关系,以及写命令A2的标识信息与读命令B21和读命令B22的标识信息之间的映射关系,应理解,更新后的映射关系中写命令A1所对应的读命令的标识信息与写命令A2所对应的读命令的标识信息相同或者不同。例如,更新后的映射关系为:<ID1→ID3_1>;<ID2→ID3_2>。为了用读命令C1与C2替换读命令B11、B12、B21与B22,需要在生成读命令B11与B12之后,等待一段时间(记为阈值Tw)以识别是否又收到可同写命令A1合并的其他写命令A2。读通道将读命令C1和读命令C2发送给存储器,逻辑电路Q1响应于存储器反馈读命令C1和读命令C2 的响应数据,将拼接后的L2P表条目120与L2P表条目121的有效数据与读命令C1和读命令C2 的响应数据的部分进行组合,并将组合后的数据与第一协议信息发送给存储器,存储器接收该组合后的数据,并将其存储在存储器中,其中,L2P表条目120的有效数据存储在存储器中存储器地址1以及其对应的位置;L2P表条目121的有效数据存储在存储器中存储器地址2以及其对应的位置,表示为过程(3.7)~(3.14),其中,过程(3.7)~(3.14)即为对所指示的L2P表条目可拼接的多个写命令的读改写操作过程。另外,将写命令A1所指示的L2P表条目120的有效数据以及写命令A2所指示的L2P表条目121的有效数据写入到存储器中之后,写通道还向主设备发送反馈信息,以指示写命令处理完成,表示为过程(3.15)。
又作为举例,不用读命令C1与C2替换读命令B11、B12、B21与B22,而是在生成读命令 B21与B22后,依据读命令B21与B22所要读取的数据是否可被读命令B11和/或B12读出,如果读命令B11/B12所读取的数据已包含读命令B21/B22所要读取的数据,则读命令B21/B22无需向存储器发出,而仅向存储器发出读命令B11/B12,从而减少了对总线带宽的占用和对存储器的访问负载。可以理解地,读命令B21/B22之一所要读取的数据被包含于读命令B11/B12所读取的数据中,则仅向存储器发出其读取数据未被在前读命令(B11/B12)包含的读命令。相应地,在缓存记录的映射关系可无需更新,写命令A1的标识信息→读命令B11、读命令B12的标识信息,以及写命令A2的标识信息→读命令B21、读命令B22的标识信息。
又作为举例,若写命令A1所指示的L2P表条目120的有效数据字节对齐,且其有效数据的第一比特位于存储器中其对应的存储单元的起始位置,则读通道不需要根据写命令A1生成一个或多个读命令,在存储器中仍需存储写命令A1的标识信息和未生成一个或多个读命令的信息,例如,<写命令A1的标识,未生成读命令>。同理,若写命令A2所指示的L2P表条目121的有效数据字节对齐,且其有效数据的第一比特位于存储器中其对应的存储单元的起始位置,则不需要根据写命令A2生成一个或多个读命令,在缓存中仍需存储写命令A2的标识信息和未生成一个或多个读命令的信息,例如,<写命令A2的标识,未生成读命令>。
又作为举例,加速器在对写命令A1和写命令A2并行处理过程中,在向存储器发出读命令B11 和读命令B12之后,当超出了合并写命令的等待时间(阈值Tw),或者已经向存储器发出了对应于写命令A1的读改写操作的写命令,响应于根据存储器地址2生成读命令B21和读命令B22,加速器识别出读命令B11和读命令B12所对应的存储器地址与读命令B21和读命令B22所指示的存储器地址存在冲突,即读命令B11和读命令B12所对应的存储器地址与写命令A2所对应的一个或多个存储器地址2之间存在冲突,例如,读命令B11所指示的存储器地址与一存储地址2 相同,则加速器暂停对写命令A2的处理。以避免对写命令A1与A2相互影响,导致数据错误。另外,加速器响应于暂停对写命令A2的处理,还暂停对写命令A2之后所接收到的其他写命令的处理。又作为举例,加速器响应于接收到写命令A1处理完成的信息,例如,L2P表条目120 的有效数据写入存储器完成的信息,则恢复对被暂停的写命令A2的处理。
又作为举例,加速器响应于接收到写命令A1处理完成的信息,恢复对被暂停的写命令A2 的处理。例如,写通道接收到L2P表条目120的有效数据写入存储器完成的信息后,再控制读通道向存储器发送写命令A2所对应的读命令B21和读命令B22。或者写通道接收到存储器所反馈的读命令B21和读命令B22的所有响应数据,再将写命令A2所对应的一个或多个存储器地址发送给读通道生成读命令B21和读命令B22,读通道将读命令B21和读命令B22发送给存储器。
图3C展示了本申请实施例所提供的写命令所指示的L2P表条目的有效数据与存储器所反馈的响应数据的组合示意图。
作为举例,在图3C中,加速器所接收到的写命令A1指示了L2P表条目120,其中,L2P表条目120的大小为64比特,有效数据的大小为30比特,存储器中存储L2P表条目的有效数据的存储单元大小也为64比特(0~63);L2P表条目120的有效数据存储在存储器中第一个存储单元的第31比特到第60比特,即L2P表条目120的有效数据非字节对齐,且有效数据的第一比特位于存储器中第一个存储单元的第31比特,不位于存储器中其对应的存储单元的起始位置。故加速器将L2P表条目120的有效数据写入到存储器中时,需要执行读改写操作。读通道根据存储器中第一存储单元的地址生成读命令,并将该读命令发送给存储器控制器,存储器控制器从存储器中读取第一存储单元的64比特数据,并将其发送给加速器,加速器将L2P表条目120的有效数据与第一存储单元中第0比特到第30比特的数据,以及第一存储单元中第61比特到第63比特的数据组合得到数据A,其中,L2P表条目120的有效数据位于数据A中第31比特到第60比特。
图4展示了本申请实施例所提供的另一种加速器的结构示意图。
作为举例,在图4中,写通道中多个缓存N1包括缓存1、缓存2、缓存3、缓存4、缓存5、缓存6、缓存7以及缓存8;其中,缓存1用于缓存对写命令进行解析所得到的地址索引;缓存2用于缓存对写命令进行解析所得到的写命令所要写入的数据(L2P表条目的完整数据);缓存3 用于缓存根据地址索引以及有效数据位数确定出存储器中存储L2P表条目的有效数据的一个或多个存储器地址以及有效数据的第一比特在存储器中的位置;缓存4用于缓存有效数据字节对齐信息;缓存5用于缓存协议信息;缓存6与所述缓存2耦合,缓存写命令所指示的L2P表条目的有效数据;缓存7与缓存6耦合,用于缓存所述L2P表条目的有效数据;缓存8与逻辑电路Q1 耦合,用于缓存读通道发送的读命令的响应数据。另外,多个缓存N1中的缓存3、缓存4或缓存5还可以存储读通道所生成的一个或多个读命令的标识信息,以使得所述逻辑电路在接收到基于每个读命令所反馈的响应数据时,根据所述标识信息确定出与响应数据组合的L2P表条目的有效数据。
进一步,参见图4,写通道中多个缓存N1还包括缓存9和缓存10,其中,加速器在并行处理多个写命令时,缓存9用于缓存写命令的标识信息与存储器地址和L2P表条目的有效数据第一比特在存储器中的位置之间的映射关系;缓存10用于缓存写命令的标识信息与其对应的一个或多个读命令的标识信息。作为举例,图4中缓存9可以为缓存3、缓存4或缓存5中任一缓存;也可以为不同于缓存1、缓存2、缓存3、缓存4、缓存5、缓存6、缓存7或者缓存8的任一缓存;同理,缓存10也可以为缓存3、缓存4或缓存5中任一缓存;也可以为不同于缓存1、缓存2、缓存3、缓存4、缓存5、缓存6、缓存7或者缓存8的任一缓存。
又作为举例,加速器接收一个写命令即执行一次写操作时,缓存6中存储单独的一个或多个的L2P表条目的有效数据。加速器对接收的多个写命令执行一次写操作时,缓存6中可以存储单独的L2P表条目的有效数据,也可以存储多个的L2P表条目的有效数据拼接后的一份或多份拼接后的数据,此处单独的L2P表条目的有效数据是相对于拼接后的数据来说的,“单独”是指并未对多个L2P表条目的有效数据进行拼接(而是各个L2P表条目的有效数据分时地占用缓存6,任意时刻,缓存6中仅容纳单独一个L2P表条目的有效数据;在两个写命令的L2P表的有效数据无法拼接时,缓存6存储单独的L2P表条目的有效数据)。又作为举例,为了在缓存6中存储一份或多份拼接后的数据,缓存6包括一个或多个存储单元。
缓存6中存储单元的大小与存储器中存储单元的大小相同;另外,拼接后的数据在缓存6的存储单元中所存储的位置与各个L2P表条目的有效数据在存储器中其对应的存储单元中所存储的位置相同,例如,L2P表条目120的有效数据在存储器中的存储位置为某一存储单元的第0比特到29比特,L2P表条目121(也参看图3C)的有效数据存储在该存储单元的第30比特到59 比特,则在缓存6中L2P表条目120的有效数据存储在其第一个存储单元的第0比特到29比特, L2P表条目121的有效数据存储在其第一个存储单元的第30比特到59比特。
又作为举例,在图4中,多个缓存N1可以包括缓存1、缓存2、缓存6以及缓存7,其中,缓存6与缓存2耦合,缓存写命令所指示的L2P表条目的有效数据。一个或多个存储器地址以及有效数据的第一比特在存储器中的位置、有效数据字节对齐信息、协议信息、读改写操作从存储器中读出的数据等可以另外地存储。而有效数据字节对齐信息、协议信息等是加速器预先知晓的。
依然作为举例,图4中,缓存7包括多个存储单元。缓存7的存储单元的尺寸同缓存6的存储单元例如相同。对于需要被读改写的L2P表条目的有效数据,将其放置在缓存7中并等待从存储器读出的数据。不需要被读改写的L2P表条目的有效数据在进入缓存7后即可继续被写入存储器。
为了便于理解下面对图4中加速器的工作过程进行简要介绍。
在图4中,主设备向加速器发送写命令A1;加速器接收到写命令A1,逻辑电路Q1中解析模块11会对写命令A1进行解析得到地址索引1和L2P表条目120的数据,并将地址索引1存储到缓存1中;以及将L2P表条目120的数据存储到缓存2中;然后逻辑电路Q1中的计算模块12 与缓存1耦合,从缓存1中获取地址索引1,并根据地址索引1以及有效数据位数计算出所述存储器中存储所述L2P表条目120的有效数据的一个或多个存储器地址1、所述有效数据的第一比特在存储器中的位置1,并将一个或多个存储器地址1以及有效数据的第一比特在存储器中的位置1存储到缓存3;以及将写命令A1的标识信息与存储器地址1和位置1之间的映射关系存储在缓存9中。合并单元14将从缓存2中获取L2P表条目120的有效数据并存储于缓存6,在此过程中,合并单元还可能对多个L2P表条目的有效数据实施拼接并在缓存6中得到一份/多份拼接后的数据;然后合并单元将缓存6中的有效数据或者拼接后的数据搬移到缓存7。
又作为举例,加速器在对写命令A1进行处理过程中,主设备又向加速器发送写命令A2;不管写命令A1是否处理完成,解析模块11都会对写命令A2进行解析得到地址索引2和L2P表条目121的数据,并将地址索引2存储到缓存1中;以及将L2P表条目121的数据存储到缓存2中;然后计算模块12从缓存1中获取地址索引2,并根据地址索引2以及有效数据位数计算出所述存储器中存储所述L2P表条目121的有效数据的一个或多个存储器地址2、所述有效数据的第一比特在存储器中的位置2,并将一个或多个存储器地址2以及有效数据的第一比特在存储器中的位置2存储到缓存3;以及将写命令A2的标识信息与存储器地址2和位置2之间的映射关系存储在缓存9中。
进一步,合并单元14响应于缓存2中的L2P表条目121与缓存6中所存储的L2P表条目120 不能拼接,将所述L2P表条目120的有效数据搬移到缓存7;响应于缓存2中的L2P表条目121 同缓存6中所存储的所述L2P表条目120能拼接,将L2P表条目121的有效数据写入缓存6,再从缓存6将拼接后的所述L2P表条目120的有效数据与L2P表条目121的有效数据搬移到缓存7;或者,合并单元14响应于将L2P表条目120的有效数据与L2P表条目121的有效数据搬移到缓存7,以及响应于写命令A1和写命令A2没有对应的读命令,从缓存7将L2P表条目120的有效数据与L2P表条目121的有效数据写入到存储器中。
在对写命令A1和/或写命令A2处理过程中不需要执行读改写操作时,打包模块13从缓存7 中获取有效数据或者拼接后的数据,以及从缓存5中获取协议信息,然后将有效数据或者拼接后的数据与协议信息生成一数据,将该数据发送给存储器控制器,然后存储器控制器将该数据发送给存储器。另外,加速器将该数据发送给存储器控制器后,加速器会向主设备发送一反馈信息,用于指示该写命令处理完成。作为举例,打包模块13在生成该数据之后,还可以在该数据中添加标记符得到处理后的数据,将所述处理后的数据发送给所述存储器,其中,所述标记符用于标识所述处理后的数据中最后一个比特位在该数据中的位置。另外,计算模块12将写命令A1的标识信息与未生成一个或多个读命令的信息存储在缓存10;和/或计算模块12将写命令A2的标识信息与未生成一个或多个读命令的信息存储在缓存10。
进一步,在对写命令A1和/或写命令A2处理过程中需要执行读改写操作时,对于读改写的操作需要读通道与写通道结合来完成,具体的读通道中各模块配合写通道各模块完成读改写的操作的详细过程参见下文,在此不做叙述。
图5A展示了本申请实施例所提供的一种对多个L2P表条目的有效数据进行拼接的示意图。
作为举例,在图5A中,缓存6的大小为128比特,包括两个存储单元分别为存储单元1和存储单元2,存储单元1和存储单元2大小均为64比特,其中,存储单元1的范围为0~63比特,存储单元2的范围为64~127比特。加速器在等待接收到L2P表条目120以及L2P表条目121的数据后,执行一次写操作,将L2P表条目120以及L2P表条目121的有效数据写入到存储器中,其中,L2P表条目120与L2P表条目121在L2P表中相邻,且位于其之前,且大小均为64比特,有效数据的大小均为M比特,其中,1≤M≤64。若L2P表条目120以及L2P表条目121所对应的存储单元为存储器中同一存储单元,L2P表条目120的有效数据的第一比特在该存储单元的第0比特,L2P表条目121的有效数据的第一比特在该存储单元的第M比特。若加速器先于L2P表条目121收到L2P表条目120,则合并单元从第二缓存中提取出L2P表条目120的有效数据之后将该数据存储在存储单元1中第0比特到第M-1比特,在提取出L2P 表条目121的有效数据之后将该数据存储在存储单元1的第M比特到第2M-1比特得到一份拼接后的数据,该拼接后的数据大小为2M比特,其在存储单元1中的位置为第0比特到2M-1 比特。应理解,L2P表条目120以及L2P表条目121所对应的存储单元为存储器中同一存储单元时,L2P表条目120的有效数据的第一比特也可以不位于该存储单元的第0比特,可以为该存储单元的任意比特L,1≤L≤63-2M,对于这种情况在此不做赘述。
图5B展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图。
作为举例,在图5B中,L2P表条目120与L2P表条目121在L2P表中相邻,且位于其之前,且大小均为64比特,有效数据的大小均为M比特,其中,1≤M≤64。若L2P表条目120以及L2P表条目121所对应的存储单元为存储器中不同存储单元,L2P表条目120的有效数据的第一比特位于存储器中一存储单元的第63-M比特,L2P表条目121的有效数据的第一比特在存储器中另一存储单元的第0比特,其中,存储器中存储L2P表条目120的有效数据的存储单元与存储L2P表条目121的有效数据的存储单元相邻。若加速器先于L2P表条目121收到L2P 表条目120,则合并单元从第二缓存中提取出L2P表条目120的有效数据之后将该数据存储在存储单元1中第63-M比特到第63比特,在提取出L2P表条目121的有效数据之后将该数据存储在存储单元2的第0比特到第M-1比特得到两份拼接后的数据,其中,存储单元1中所存储的一份拼接数据的大小为M,其在存储单元1中的位置为第63-M比特到第63比特;存储单元2中所存储的一份拼接数据的大小为M,其在存储单元2中的位置为第0比特到第M-1 比特。
图5C展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图。
作为举例,在图5C中,L2P表条目120与L2P表条目121所对应的存储器中的存储单元部分相同,例如,L2P表条目120的部分有效数据存储在存储器的一存储单元中,而L2P表条目 120的另一部分有效数据与L2P表条目121的有效数据存储在存储器的另一存储单元,例如, L2P表条目120的有效数据中前Q个比特存储在上一存储单元中,M-Q个比特与L2P表条目 121的有效数据存储在存储器的同一存储单元中,其中,1≤Q≤M。在此情况下,合并单元在对L2P表条目120的有效数据以及L2P表条目121的有效数据进行拼接时得到两份拼接后的数据,其中,一份拼接后的数据存储在缓存6的存储单元1中,其为L2P表条目120的有效数据中前Q比特,另一份拼接后的有效数据存储在缓存6的存储单元2中,其为L2P表条目120的后M-Q个比特有效数据与L2P表条目121的有效数据进行拼接后的数据。
图5D展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图。
作为举例,在图5D中,L2P表条目120与L2P表条目121在L2P表中相邻,且位于其之前,且大小均为64比特,有效数据的大小均为M比特,其中,1≤M≤64。若L2P表条目120以及L2P表条目121所对应的存储器中的存储单元部分相同,如,L2P表条目120的有效数据一部分与L2P表条目121的有效数据存储在同一存储单元,L2P表条目120的有效数据的另一部分存储在该存储单元的上一存储单元(具体参见图3C),例如,L2P表条目120的有效数据中Q个比特存储在上一存储单元中,M-Q个比特与L2P表条目121的有效数据存储在存储器的同一存储单元中,其中,1≤Q≤M。若加速器先于L2P表条目120收到L2P表条目121,则合并单元从第二缓存中提取出L2P表条目121的有效数据之后将该数据存储在存储单元1中第M-Q-1比特到第2M-Q-1比特,由于在L2P表中L2P表条目120位于L2P表条目121之前,合并单元在提取出L2P表条目120的有效数据之后,在缓存6中需要将L2P表条目120的有效数据放置于L2P表条目121的有效数据之前,而在存储单元1中L2P表条目121的有效数据之前的空闲/无效比特位为M-Q个比特,而L2P表条目120的有效数据大小为M比特,故 L2P表条目120的有效数据中前Q个比特无法被存储到缓存6中,合并单元会将L2P表条目 120的有效数据中后M-Q个比特与L2P表条目121的有效数据进行拼接得到一份拼接后的数据,并在缓存6得到一份拼接后的数据,该拼接后的数据大小为2M-Q个比特,在存储单元1 中的位置为第0比特到2M-Q-1比特。
可选地,对于L2P表条目120的有效数据中前Q个比特,在将存储单元1中的拼接后的数据搬移到缓存7后,清空存储单元1,并用清楚的存储单元1来容纳L2P表条目120的有效数据中前Q个比特。
图5E展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图。
作为举例,在图5E中,L2P表条目120与L2P表条目121大小均为64比特,有效数据的大小均为M比特,其中,1≤M≤64。L2P表条目120与L2P表条目121所对应的存储器中的存储单元相同,且L2P表条目120的有效数据中第一比特与L2P表条目121的有效数据中第一比特在该存储单元中的位置相同,如位于该存储单元中第L比特,其中,0≤L≤63-M,即L2P 表条目120与L2P表条目121为L2P表中同一L2P表条目。若加速器先于L2P表条目120收到L2P表条目121,则合并单元14从缓存2中提取出L2P表条目121的有效数据之后将该数据存储在存储单元1中,合并单元14在提取出L2P表条目120的有效数据之后,在存储单元 1中存储L2P表条目121的有效数据的位置处用L2P表条目120的有效数据覆盖L2P表条目 121的有效数据得到一份拼接后的数据,该拼接后的数据位于存储单元1中,其大小与L2P表条目120的有效数据或L2P表条目121的有效数据大小相同。同理,若加速器先于L2P表条目121收到L2P表条目120,在存储单元1中用L2P表条目121的有效数据覆盖L2P表条目 120的有效数据得到拼接后的数据。即该拼接后的数据为L2P表条目120的有效数据或L2P表条目121的有效数据。
图5F展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图。
作为举例,在图5F中,L2P表条目120与L2P表条目121大小均为64比特,有效数据的大小均为M比特,其中,1≤M≤64。L2P表条目120与L2P表条目121所对应的存储器中的存储单元不相同,L2P表条目120与L2P表条目121在L2P表中不相邻。若加速器先于L2P表条目121收到L2P表条目120,则合并单元14从缓存2中提取出L2P表条目120的有效数据之后将该数据存储在存储单元1,例如,从存储单元中第L比特开始存储L2P表条目120的有效数据,其中,0≤L≤63-M。由于在L2P表中L2P表条目121同L2P表条目120不相邻,合并单元14在提取出L2P表条目121的有效数据之后,L2P表条目121的有效数据无法被存储到缓存6中,合并单元不会将L2P表条目120的有效数据与L2P表条目121的有效数据进行拼接,而是将L2P表条目120的有效数据存储在缓存6中,并将缓存6中的L2P表条目120 的有效数据传输给缓存7。接下来合并单元再将L2P表条目121的有效数据存储在缓存6中,
并将缓存6中的L2P表条目121的有效数据传输给缓存7。
进一步,加速器中写通道的逻辑电路将L2P表条目的有效数据或者一份/多份拼接后的数据存储到缓存6之后,还需要将L2P表条目的有效数据或者一份/多份拼接后的数据存储到存储器中。上文已经说过,由于加速器和从设备(如存储器控制器)之间通过总线进行传输数据,所以所传输的数据需要满足总线协议,例如,所传输的L2P表条目的有效数据字节对齐或者8字节对齐等。当所传输的L2P表条目的有效数据非字节对齐或者L2P表条目的有效数据中第一比特不位于其对应的存储单元的起始位置,则需要执行读改写操作。为了便于理解,下面结合上述图5A~图5F的场景对读改写操作过程进行简要介绍。
对于图5A所示的场景,作为举例,若L2P表条目120与L2P表条目121的有效数据大小M 不是字节的整数倍,如,M=30,则L2P表条目120与L2P表条目121的有效数据非字节对齐,需要执行读改写操作。此时,读通道中命令生成模块根据L2P表条目120与L2P表条目121所对应的存储器中存储单元的地址生成一个读命令,并将该读命令发送给存储器,存储器根据该读命令将L2P表条目120与L2P表条目121所对应的存储器中存储单元数据(响应数据)发送给逻辑电路Q1,逻辑电路Q1将缓存6的存储单元1中的拼接后的数据与响应数据组合得到组合后的数据(参见图6A),将组合后的数据发送给从设备(如存储器控制器)。又作为举例,若L2P表条目120与L2P表条目121的有效数据大小M是字节的整数倍,如,M=24,但是L2P表条目120 的有效数据的第一比特不位于该存储单元的第0比特,如,L2P表条目120的有效数据的第一比特位于存储单元的第2比特,则L2P表条目120的有效数据的第一比特不位于其所对应的存储单元的起始位置,在此情况下,也需要执行读改写操作,具体读改写操作与上述类似,在此不做赘述。又作为举例,若L2P表条目120与L2P表条目121的有效数据大小M是字节的整数倍,且 L2P表条目120的有效数据的第一比特位于该存储单元的第0比特,则不需要执行读改写操作,直接将第七缓存中将该存储单元1所对应的数据发送给从设备,以使得将存储单元1中的数据存储到存储器中。对于图5E所示的场景,在缓存6中也缓存一份拼接后的数据,其具体过程与图 5A类似,在此不做赘述。
对于图5B所示的场景,作为举例,在缓存6中存储两份拼接后的数据,存储单元1中拼接后的数据和存储单元2中拼接后的数据至少一份拼接后的数据非字节对齐或有效数据的第一比特不位于其所对应的存储单元的起始位置,则会对非字节对齐的有效数据或有效数据的第一比特不位于其所对应的存储单元的起始位置的有效数据执行读改写操作,具体读改写操作与上述类似,在此不做赘述。若缓存6中,存储单元1中拼接后的数据和存储单元2中拼接后的数据均字节对齐,且有效数据的第一比特均位于其所对应的存储单元的起始位置,则不会执行读改写操作。将存储单元1和存储单元2的整体搬移到缓存7,然后逻辑电路将对应存储单元1和存储单元2的整体数据发送给从设备(存储器控制器),具体参见图6B。对于图5C所示的场景,在缓存6中也缓存两份拼接后的数据,其具体过程与图5B类似,在此不做赘述。
作为举例,对于图5D所示的场景,将L2P表条目120和L2P表条目121的有效数据存储到缓存6时,由于L2P表条目121的有效数据中前Q个比特无法与L2P表条目120的有效数据一起存储到缓存6,合并单元会将L2P表条目120的有效数据中后M-Q个比特与L2P表条目121的有效数据进行拼接得到一份拼接后的数据,并在缓存6得到一份拼接后的数据,该拼接后的数据大小为2M-Q个比特,在存储单元1中的位置为第0比特到2M-Q-1比特。合并单元还将缓存 6所存储的一份拼接后的数据发送给缓存7,缓存7将该拼接后的数据发送给逻辑电路,以使得逻辑电路将该拼接后的数据发送给从设备。
合并单元还将L2P表条目120的有效数据中前Q个比特存储到缓存6,此时,合并单元可检查第二缓存中是否有新的L2P表条目,以及新的条目能否与缓存6中的L2P表条目120的有效数据中前Q个比特进行拼接。拼接的方式同前面已经描述的多种情形类似,在此不再赘述。若不能拼接,将缓存6中L2P表条目120的有效数据中前Q个比特发送给缓存7。
另外,将该拼接后的数据或者将L2P表条目120的有效数据中前Q个比特写入存储器的过程是否需要执行读改写操作与上述图5A所示的场景类似,在此不做赘述。
作为举例,对于图5F所示的场景,由于合并单元不会将L2P表条目120的有效数据与L2P 表条目121的有效数据进行拼接,而是将L2P表条目120的有效数据存储在缓存6中,并将缓存 6中的L2P表条目120的有效数据传输给缓存7。合并单元再将L2P表条目121的有效数据存储在缓存6中,并将缓存6中的L2P表条目121的有效数据传输给缓存7。
另外,将L2P表条目120的有效数据或者将L2P表条目121的有效数据写入存储器的过程是否需要执行读改写操作与上述图5A所示的场景类似,在此不做赘述。
进一步,作为举例,在图4中,合并单元14从所缓存2中获取所述L2P表条目的有效数据,并存储于所述缓存6中;从缓存2中删除所述L2P表条目的数据。
又作为举例,响应于将缓存7中的L2P表条目的有效数据或一个或多拼接后的数据与缓存8 中的响应数据的部分组合,并根据缓存5中的协议信息与该数据生成新的数据,并将新的数据发送给所述存储器,从缓存3将所述一个或多个存储器地址以及所述有效数据的第一比特在存储器中的位置删除、或从缓存6将所述L2P表条目的有效数据删除。
又作为举例,响应于确定出所述存储器中存储所述L2P表条目的有效数据的一个或多个存储器地址以及所述有效数据的第一比特在存储器中的位置,从缓存1删除该写命令的地址索引。
图7展示了本申请实施例所提供的在多个缓存下对多个写命令进行处理的示意图。
在图7中,T0-T10表示时间上连续的多个时间段,每个时间段下方的内容表示在该时间段内加速器中写通道所执行的操作。在图7中展示上述多个缓存N1中缓存2、缓存3、缓存6、缓存7、缓存8以及缓存10;其中,缓存2与缓存6耦合,用于缓存一个写命令所指示的有效数据。作为举例,存2包含单个存储单元,用于缓存一个写命令所指示的数据,缓存3、缓存6、缓存7、缓存8以及缓存10可以包括多个存储单元,不同存储单元用于存储不同写命令所对应的数据。
在T0时间段内,逻辑电路接收到写命令A1(LBA1,data1,id1),其中,写命令A1指示了地址索引LBA1、 L2P表条目数据data1以及标识信息id1,将写命令A1进行解析得到地址索引LBA1、data1以及id1。收到的写命令A1的数据data1被存储在缓存2中。
在T1时间段内(T1时间段是在T0时间段之后的时间段),逻辑电路从缓存2中提取data1中的有效数据,将有效数据存储于缓存6中,并根据写命令A1所指示的地址索引LBA1以及有效数据的位数确定出一个或多个存储器地址1以及data1的有效数据第一比特存储在存储器中的位置,将地址索引LBA1与其对应的存储器地址 1之间的映射关系存储到缓存3中,例如,<LBA1,存储器地址1>。另外,在确定出写命令A1所对应的存储器地址以及data1的有效数据存储在存储器中的位置后,识别出data1的有效数据非字节对齐或者字节对齐但是其有效数据第一比特不位于存储器中存储单元的起始位置,则读通道根据写命令A1所对应的存储器地址1生成读命令B11和读命令B12,其中,读命令B11的标识信息为id1_1,读命令B12的标识信息为id1_2;逻辑电路将写命令A1的标识信息与其对应的读命令B11和B12的标识信息之间的映射关系存储于缓存10,例如,<id1→ id1_1,id1_2>。另外,T1时间段内,逻辑电路还接收到写命令A2(LBA2,data2,id2),其中,写命令A2指示了地址索引LBA2、L2P表条目数据data2以及标识信息id2,将写命令A2进行解析得到地址索引LBA2、data2 以及id2,并将data2存储在缓存2中。
可以理解地,图7是示意性的,将data1的有效数据从缓存2搬移到缓存6可以紧随data1被添加到缓存2 而发生,而不必等待接收到写命令A2后再发生,也不必与接收写命令A2同时发生。将data1的有效数据尽早从缓存2搬移到缓存6,以使得缓存2更早变为空闲来接收写命令A2。缓存6还用于处理多个写命令的有效数据合并。在没有待合并的有效数据的场合,缓存6的数据被尽早搬移到缓存7。在有待合并的有效数据的场合,在缓存6中完成数据合并后再搬移到缓存7。
继续参看图7,在T2时间段内(T2时间段是在T1时间段之后的时间段),由于写命令A1和写命令A2所指示的地址索引相邻,故写命令A1和写命令A2所指示的数据在L2P表中也相邻可以拼接/合并,逻辑电路获取数据data2后,将data2的有效数据与缓存6中的data1的有效数据进行拼接得到拼接后的有效数据(利用缓存6 完成合并);以及更新缓存10中的映射关系,例如,更新后的映射关系为<id1→id1_1,id1_2>,<id2→id2_1, id2_2>。
以及,逻辑电路根据写命令A2所指示的地址索引LBA2以及有效数据的位数确定出一个或多个存储器地址 2以及data2的有效数据第一比特存储在存储器中的位置,将地址索引LBA2与其对应的存储器地址2之间的映射关系存储到缓存3中。此时缓存3中记录了对应两个写命令A1与A2的“<LBA1,存储器地址1>与<LBA2, 存储器地址2>”。
利用缓存6完成data1的有效数据与data2的有效数据的合并后,接下来缓存6中的有效数据被搬移到缓存 7。缓存7包括多个存储单元,能够容纳来自缓存6的多份数据。在有读改写的场合,有效数据在缓存7中等待从存储器中读出的数据。
虽然在图7中在T2时间段展示了缓存6中的合并的有效数据,并且T2时间段接收了写命令A3,但有效数据的合并同接收写命令A3无关,二者的发生在时间上也没有依赖关系。将未合并或者合并后的有效数据搬移到缓存7的操作也同接收写命令A3无关。
另外,在确定出写命令A2所对应的存储器地址以及data2的有效数据存储在存储器中的位置后,识别出data2 的有效数据不字节对齐或者字节对齐但是其有效数据第一比特不位于存储器中存储单元的起始位置,则读通道根据写命令A2所对应的存储器地址2生成读命令B21和读命令B22,其中,读命令B21的标识信息为id2_1,读命令B12的标识信息为id2_2;逻辑电路将写命令A2的标识信息与其对应的读命令B21和B22的标识信息之间的映射关系存储于缓存10。此时缓存10中记录了对应两个写命令A1与A2各自的标识信息与对应的读命令的标识信息的映射关系。另外,T2时间段内,逻辑电路还接收到写命令A3(LBA4,data4,id4),其中,写命令A3指示了地址索引LBA4、L2P表条目数据data4以及标识信息id4,将写命令A3进行解析得到地址索引LBA4、 data4以及id4,并将data4存储在缓存2中。
继续参看图7,在T3时间段内(T3时间段是在T2时间段之后的时间段),此时,读命令B11与B12的处理尚未完成,还检查出读命令B21与B22存在冲突,即读命令B21与B22分别访问了同读命令B11与B12相同的地址。由于读命令B11与B12读回的数据中将包括读命令B21与B22所需的数据,因而终止对读命令B21 与B22的处理,以及将缓存10中记录的id2的映射关系修改为<id2,id1_1,id1_2>。
另外,将缓存6中的合并的data1与data2的有效数据被搬移到缓存7(此操作可在T3时间段之前完成),其后6缓存变为可用,逻辑电路从缓存2中读取data4的有效数据并搬移到6缓存。另外,逻辑电路还根据写命令A3所指示的地址索引LBA4以及有效数据的位数确定出一个或多个存储器地址3以及data4的有效数据第一比特存储在存储器中的位置,将地址索引LBA4与其对应的存储器地址3之间的映射关系存储到缓存3中。此时缓存3中记录了三个个写命令A1、A2与A3的“<LBA1,存储器地址1>、<LBA2,存储器地址2>与<LBA4,存储器地址3>”。另外,在确定出写命令A3所对应的存储器地址以及data4的有效数据存储在存储器中的位置后,识别出data4的有效数据字节对齐且其有效数据第一比特位于存储器中存储单元的起始位置,则加速器对于写命令A3的处理不会触发读改写操作,即不会触发读通道根据写命令A3所对应的存储器地址3生成一个或多个读命令。此时缓存10中记录了对应两个写命令A1与A2各自的标识信息与对应的读命令的标识信息的映射关系,以及写命令A3的标识信息与未生成读命令的信息之间的关系,<id1→id1_1,id1_2>,<id2→id1_1,id1_2>以及<id4→无>。
在T4时间段内(T4时间段是在T3时间段之后的时间段),未接收到新的写命令,此时可以继续等待下一命令,若下一命令所指示的数据可以与缓存6中data4的有效数据能拼接,在缓存6中对数据进行拼接,并将拼接后的数据搬移到缓存7;也可以不等待下一命令,逻辑电路将缓存6中data4的有效数据并搬移到缓存7,此时在缓存7的不同存储单元中存储着合并的data1与data2的有效数据和data4的有效数据。
在T5时间段内(T5时间段是在T4时间段之后的时间段),由于在对写命令A3的处理不会触发读改写操作,故将data4的有效数据搬移到缓存7后,逻辑电路可直接根据缓存7中data4的有效数据与协议信息(例如, AXI协议信息)生成一数据,将该数据发送给存储器,以使得将该数据中data4的有效数据存储到存储器中。
另外,逻辑电路响应于将data4的有效数据发送给存储器,可将缓存3中所存储的写命令A3所指示的地址索引与存储器地址3之间的映射关系删除,此时,缓存3中记录了对应两个写命令A1与A2的“<LBA1,存储器地址1>与<LBA2,存储器地址2>”;以及将缓存10中写命令A3的标识信息与未生成读命令的信息之间的关系删除,此时缓存10记录了对应两个写命令A1与A2各自的标识信息与对应的读命令的标识信息的映射关系<id1 →id1_1,id1_2>,<id2→id1_1,id1_2>;以及将缓存7中所存储的data4的有效数据删除。
另外,在T5时间段内,逻辑电路还接收到写命令A4(LBA10,data10,id10),其中,写命令A4指示了地址索引LBA10、L2P表条目数据data10以及标识信息id10。逻辑电路将写命令A4进行解析得到地址索引 LBA10、data10以及id10,并将data10存储在缓存2中,并根据写命令A4所指示的地址索引LBA10以及有效数据的位数确定出一个或多个存储器地址4以及data10的有效数据第一比特存储在存储器中的位置。确定出写命令A4所对应的存储器地址4以及data10的有效数据存储在存储器中的位置后,识别出data10的有效数据不字节对齐或者字节对齐但是其有效数据第一比特不位于存储器中存储单元的起始位置,则在对写命令A4处理的过程中需要执行读改写操作。此时,读命令B11与B12的处理尚未完成,还检查出写命令A4与读命令B11和/ 或B12存在冲突,即写命令A4处理过程中执行读改写操作所对应的一个或多个读命令与读命令B11和/或B12 相同的地址,因而暂停对写命令A4的处理,一方面不触发读通道根据存储器地址4生成一个或多个读命令,或生成一个或多个读命令后不将该一个或多个读命令发送给存储器;另一方面在缓存3中不存储地址索引LBA10 与其对应的存储器地址4之间的映射关系。和/或在缓存10中不存储写命令A4的标识信息与其对应的读命令的信息之间的映射关系。此时,在缓存3中仅记录了两个写命令A1与A2的“<LBA1,存储器地址1>与<LBA2, 存储器地址2>”;以及将缓存10中仅记录了两个写命令A1与A2各自的标识信息与对应的读命令的标识信息的映射关系<id1→id1_1,id1_2>,<id2→id1_1,id1_2>。
继续参看图7,在T6时间段内(T6时间段是在T5时间段之后的时间段),逻辑电路并未接收到读命令B11 与B12读回的数据,也并未接收到新的写命令,所以逻辑电路需要等待接收读命令B11与B12读回的数据。另外,应理解,T6时间段内等待接收读命令B11与B12读回的数据与接收新的写命令之间没有时间和逻辑上的关系,等待接收读命令B11与B12读回的数据与接收新的写命令无关。
进一步,在T7时间段内(T7时间段是在T6时间段之后的时间段),逻辑电路接收到读命令B11与B12 读回的数据,并将读命令B11与B12读回的数据存储到缓存8。响应于将读命令B11(id1_1)与B12(id1_2) 的响应数据存储到缓存8,从缓存10记录的映射关系<id1→id1_1,id1_2>与<id2→id1_1,id1_2>识别出读命令 B11(id1_1)与B12(id1_2)的响应数据同时适用于写命令A1与写命令A2的有效数据,从而从缓存8获取所有响应数据以及从缓存7获取合并的data1与data2的有效数据,将合并的data1与data2的有效数据与所有响应数据的部分组合,并将组合后的数据与协议信息生成一包含协议信息以及合并的data1与data2的有效数据的数据,将该数据发送给存储器,以使得将合并的data1与data2的有效数据存储到存储器中,其中,在存储器中data1 的有效数据存储在存储器地址1以及其对应的位置,data2的有效数据存储在存储器地址2以及其对应的位置。
继续参看图7,在T8时间段内(T8时间段是在T7时间段之后的时间段),逻辑电路响应于将合并的data1 与data2的有效数据存储到存储器中,可将缓存3中所存储的写命令A1与A2所指示的地址索引与存储器地址之间的映射关系删除;以及将缓存10中写命令A1与A2各自的标识信息与其对应的读命令的信息之间的关系删除;以及将缓存7中合并的data1与data2的有效数据删除。
此时,加速器对于写命令A1与A2处理完成,将恢复对写命令A4进行处理,从缓存2中获取data10中的有效数据,将data10的有效数据存储于缓存6中;读通道根据写命令A4所对应的存储器地址4生成读命令B41,并将读命令B41发送给存储器,其中,读命令B41的标识信息为id4_1,逻辑电路将写命令A4的标识信息与其对应的读命令B41的标识信息之间的映射关系存储于缓存10。此时缓存10中记录了对应写命令A4的标识信息与对应的读命令的标识信息的映射关系<id4→id4_1>;以及在缓存3中存储地址索引LBA10与其对应的存储器地址4之间的映射关系<LAB10→存储器地址4>。
在T8时间段展示了对写命令A1与A2处理完成以及重新对写命令A4处理,写命令A1与A2处理完成与重新对写命令A4处理存在着时间上的联系,重新对写命令A4处理需在写命令A1与A2处理完成之后。
在T9时间段内(T9时间段是在T8时间段之后的时间段),逻辑电路将缓存6中data10中的有效数据搬移到缓存7,以及接收到存储器所反馈的标识为id10_1的读命令响应,将标识为id10_1的读命令响应存储在缓存 8中,此时,逻辑电路接收到了写命令A4所对应的所有响应数据,将data10中的有效数据与响应数据的部分进行组合得到组合后的数据,并将组合后的数据发送给存储器进行存储,完成对写命令A4的处理。
回到图2B,作为举例,为了从存储器中读取L2P表条目,主设备会向加速器发送一个或多个读命令,加速器可以一个读命令一个读命令的处理,也可以对多个读命令并行处理,进而从存储器中读取L2P表条目。
图8A展示了本申请实施例所提供的加速器处理读命令的示意图。
作为举例,在图8A中,主设备向逻辑电路Q2发送读命令D1,表示为过程(8.1),在该过程中主设备和逻辑电路Q2之间可通过总线进行数据交互,例如AXI总线。另外,读命令D1包括主设备所感知的L2P表条目地址(由逻辑地址映射得到,例如,主设备所感知的L2P表条目地址=基地址+LBA*size(L2P entry))、第三标识信息(用于标识读命令D1本身,如ID)等,其中size(L2P entry)表示L2P表条目的大小。逻辑电路Q2接收到读命令D1之后,将读命令D1 进行解析得到主设备所感知的L2P表条目地址以及第三标识信息等,然后再将该L2P表条目地址或第三标识信息分别存储在多个缓存中的同一或者不同缓存(如存储到下文多个缓存中的缓存 1_1,表示为过程(8.2)。进一步,逻辑电路Q2在解析出该L2P表条目地址后,会根据该L2P 表条目地址计算存储器所存储的L2P表条目地址,表示为过程(8.3)。
由于当主设备所感知的L2P表中每个条目中部分为有效数据,部分为空比特数据时,存储器中仅存储L2P表条目的有效数据,使得存储器中每个存储单元存储一个或多个主设备所感知的 L2P表条目的有效数据,或者存储主设备所感知的L2P表条目有效数据的部分,且存储器中L2P 表各条目依次首尾相接方式存储在存储器中。因此,主设备所发送的读命令D1所要访问的L2P 表条目的有效数据在存储器中可以存储在一个存储单元中,也可以存储在多个存储单元中。即主设备要访问的L2P表条目不同时,其存储在存储器的所占用的存储单元数目也不同。当主设备要访问的L2P表条目在存储器中占用多个存储单元(主设备要访问存储器中的多个存储单元)时,逻辑电路Q2会为读命令D1所要访问每个存储单元生成一个读命令,如读命令E11或读命令E12,该读命令E11用于读取一个存储单元的数据。例如,若读命令D1所要访问的L2P表条目在存储器中占用两个存储单元,则逻辑电路Q2会生成两个读命令,如读命令E11和E12;若读命令D1 所要访问的L2P表条目在存储器中占用一个存储单元,则逻辑电路Q2会生成一个读命令。接着逻辑电路Q2将生成的一个或多个读命令发送给存储器控制器,表示为过程(8.4),然后存储器控制器根据一个或多个读命令从存储器中读取数据,表示为过程(8.5)和过程(8.6),例如,若存储器中多个存储单元按8字节对齐,其对应的字节地址为0、8、16、24……,则每个读命令用于将前述任一字节地址作为起始地址读取8字节的数据,然后存储器控制器将读取的数据以及协议信息作为对读命令E11或E12的响应发送L2P加速器,表示为过程(8.7),例如,该协议信息为AXI协议信息,其包括读命令E11或E12的标识信息;逻辑电路Q2通过控制对一个或多个读命令的响应进行处理得到读命令D1所要访问的L2P表条目,将读命令D1的部分和读命令D1所要访问的L2P表条目作为对读命令D1的响应反馈给主设备,表示为过程(8.8)。
又作为举例,主设备所要访问L2P表条目可能不止一条,主设备通过向加速器发送多个读命令来读取多个L2P表条目,加速器对于多个读命令可以一个一个的处理,也可以并行处理。以加速器对主设备所发送的读命令D1和读命令D2并行处理为例,对加速器对多个读命令的并行处理机制进行说明。
读通道中逻辑电路Q2并行对读命令D1和读命令D2进行处理时,会根据每个读命令生成一个或多个新的读命令,其中,每个新的读命令用于读取一个存储单元的数据。例如,若读命令 D1所要访问的L2P表条目在存储器中占用两个存储单元,则逻辑电路Q2会为读命令D1生成两个读命令,分别为读命令E11和读命令E12;若读命令D2所要访问的L2P表条目在存储器中也占用两个存储单元,则逻辑电路Q2会为读命令D2生成两个读命令,分别为读命令E21和读命令E22。读通道在对读命令D1和读命令D2进行处理时,根据读命令D1或读命令D2所对应的所有新的读命令所反馈的响应数据来生成读命令D1或读命令D2的响应,因此,为了确定从存储器所接收到的响应数据是基于那个新的读命令所反馈的以及该新的读命令与读命令D1对应,还是与读命令D2对应。在图8A中,逻辑电路Q2在对读命令D1或读命令D2进行处理时,对于每个读命令除了需要执行图8A所示(8.1)~(8.8)的过程,还需执行过程(8.9),即读通道在对多个读命令进行并行处理时,对于每个读命令的处理均包括过程(8.1)~(8.9)。例如,对于读命令D1,过程(8.9)包括:为读命令D1生成读命令E11和读命令E12之后,还为读命令 E11和读命令E12设置标识其自身的标识信息,并构建每个读命令D1的标识信息与其对应的读命令E11和读命令E12的标识信息之间的关系,并保存到多个缓存N2中,例如,读命令D1的标识信息为ID_D1,读命令E11和读命令E12的标识信息分别为ID_E11,ID_E12,将标识信息以<ID_D1→ID_E11,ID_E12>的形式存储在缓存中。作为举例,过程(8.2)中将L2P表条目地址和标识信息,与过程(8.9)中将每个读命令D1的标识信息与其对应的读命令E11和读命令 E12的标识信息之间的关系存储在同一缓存中,也可以存储在不同的缓存中。对于读命令D2的处理与读命令D1过程类似,在此不做赘述。
图8B展示了本申请实施例所提供的读通道的结构示意图。
作为举例,在图8B中,读通道也包括逻辑电路Q2和多个缓存N2。逻辑电路Q2包括:解析模块21、计算模块22以及命令生成模块23;其中,解析模块21响应于接收到来自主设备的一个或多个第一读命令,解析每个第一读命令得到其对应的L2P表条目的地址索引,并将所述地址索引存储在多个缓存N2中;计算模块22与多个缓存N2耦合,根据每个第一读命令所对应的地址索引计算得到其对应的一个或多个第二读命令所访问的存储器地址;并为每个第二读命令设置其对应的第二标识信息,将所述第一标识信息与其对应一个或多个第二标识信息之间的关系存储到多个缓存N2耦合,根据每个第一读命令所对应的地址索引计算得到其对应的一个或多个第二读命中;命令生成模块23与计算模块22耦合,根据所述存储器地址生成至少一个第二读命令,并将所述至少一个第二读命令发送给所述存储器。
在图8B中,主设备向加速器发送一个或多个读命令D,解析模块21接收一个或多个读命令 D,表示为过程(9.1),在该过程中主设备和加速器之间可通过总线进行数据交互,例如AXI 总线。加速器中的逻辑电路从总线接收一个或多个读命令D。另外,每个读命令D指示了主设备所感知的L2P表条目的地址索引,例如,地址索引为逻辑地址LBA;还指示了用于标识读命令D 本身的标识信息,例如ID。逻辑电路Q2接收到每个读命令D之后,解析模块21将每个读命令 D进行解析得到地址索引以及标识信息等。计算模块22在解析出每个读命令D所指示的地址索引后,会根据每个读命令D指示的地址索引计算出主设备所感知的L2P表条目在存储器所存储的地址,,然后再将该L2P表条目地址和标识信息存储在缓存中,表示为过程(9.2);例如,主设备所感知的L2P表条目在存储器所存储的地址=基地址+LBA*size(L2P entry),size(L2P entry) 表示主设备所感知的每个L2P表条目的尺寸,例如64比特。
当主设备所感知的L2P表中每个条目中部分为有效数据,部分为空比特数据时,存储器中仅存储L2P表条目的有效数据,使得存储器中每个存储单元存储一个或多个主设备所感知的L2P 表条目的有效数据,或者存储主设备所感知的L2P表条目有效数据的部分,且存储器中L2P表各条目依次首尾相接方式存储在存储器中。因此,主设备所发送的每个读命令D所要访问的L2P 表条目的有效数据在存储器中可以存储在一个存储单元中,也可以存储在多个存储单元中。即主设备要访问的L2P表条目不同时,其存储在存储器的所占用的存储单元数目也不同。当主设备要访问的L2P表条目在存储器中占用多个存储单元(主设备要访问存储器中的多个存储单元)时,命令生成模块23会为每个读命令D生成多个读命令E,其中,每个读命令E用于读取一个存储单元的数据,表示为过程(9.3)。例如,若每个读命令D所要访问的L2P表条目在存储器中占用两个存储单元,则逻辑电路会生成两个读命令E;若每个读命令D所要访问的L2P表条目在存储器中占用一个存储单元,则逻辑电路会为每个读命令D生成一个读命令E。
又作为举例,逻辑电路Q2还包括合并单元24;合并单元24根据每个读命令D所指示的访问L2P表的条目长度将每个读命令D所对应的条目的有效数据与空比特数据进行合并得到其所指示的访问L2P表的条目,其中,有效数据位于第一条目的前N个连续的比特位,N为有效数据的长度;根据每个读命令D所对应的一个或多个读命令E的第一协议信息生成第二协议信息,将条目和第二协议信息合并得到作为对读命令D的响应的数据。例如,读命令D所读取的L2P表条目的长度是64比特,而有效数据长度是30比特,那么合并单元将得到的30比特有效数据同34 比特空数据合并,得到读命令D所要读取的64比特长度的L2P表条目。
又作为举例,为了提高对读命令的处理效率,逻辑电路Q2还可以并行对多个读命令D进行处理,根据每个读命令D又生成一个或多个读命令E,故命令生成模块23在为每个读命令D生成一个或多个读命令E之后,还为每个读命令E设置标识其自身的标识信息,并构建每个读命令 D的标识信息与其对应的一个或多个读命令E的标识信息之间的关系,并保存到多个缓存N2中,该过程表示为过程(9.4)。作为举例,过程(9.2)中将L2P表条目地址和标识信息,与过程(9.4) 中将每个读命令D的标识信息与其对应的一个或多个读命令E的标识信息之间的关系存储在同一缓存中,也可以存储在不同的缓存中。接着命令生成模块23将每个读命令D所对应的一个或多个读命令E发送给存储器控制器,表示为过程(9.5),然后存储器控制器根据每个读命令E从存储器中读取每个读命令E的响应数据,表示为过程(9.6)和过程(9.7),例如,若存储器中多个存储单元按8字节对齐,其对应的字节地址为0、8、16、24……,则每个读命令E用于将前述任一字节地址作为起始地址读取8字节的第一数据,然后存储器控制器将根据每个读命令E 所读取的第一数据以及其所对应的第一协议信息作为对每个读命令E的响应发送加速器(也称为 L2P加速器),表示为过程(9.8),其中,响应数据是指根据每个读命令E所读取的一个存储单元的数据,第一协议信息包含每个读命令E的标识信息;然后,逻辑电路Q2对每个读命令E所对应的响应数据进行处理得到一数据以及第一协议信息,根据第一协议信息以及关系确定出每个读命令D所对应的一个或多个该数据以及生成第二协议信息,将每个读命令A所对应的一个或多个该数据进行处理得到每个读命令E所指示访问L2P表的条目;以及将协议信息P以及其所指示的访问L2P表的条目作为对每个读命令A的响应发送给主设备,表示为过程(9.9),其中,对响应数据进行处理得到一数据是指每个读命令E所对应的第一数据中所包含的读命令D要访问的L2P表条目的部分数据,第二协议信息包含读命令D的标识信息。
图8C展示了加速器并行处理多个读命令A的处理机制。
作为举例,在图8C中,加速器接收主设备发送的两个读命令,分别为读命令D1和读命令 D2,其中,加速器根据读命令D1生成两个访问存储器的命令,分别为读命令E11和读命令E12,加速器根据读命令D2生成两个访问存储器的命令,分别为读命令E21和读命令E22。下面以加速器对读命令D1和读命令D2的处理过程为例对加速器的并行处理机制进行说明。
在图8C中,T0-T4表示时间上连续的多个时间段,每个时间段下方的内容表示在该时间段内加速器各个模块所执行的操作。
在T0时间段内,解析模块21接收到读命令D1,将读命令D1进行解析得到地址索引以及标识信息。在得到读命令D1地址索引以及标识信息之后,计算模块22根据读命令D1的地址索引和标识信息计算存储器地址;然后,在计算出存储器地址之后,根据存储器地址生成读命令D1 所对应的读命令E11和读命令E12。接着,命令生成模块23生成读命令D1所对应的读命令E11 和读命令E12之后,将读命令D1的标识信息与读命令E11和读命令E12的标识信息之间的关系存储在多个缓存中。
在T1时间段内(T1时间段是在T0时间段之后的时间段),加速器接收到读命令E11所对应的数据,并将读命令E11所对应的数据存储在多个缓存N2中。
在T2时间段内(T2时间段是在T1时间段之后的时间段),解析模块21接收到读命令D2,将读命令D2进行解析得到地址索引以及标识信息。在得到读命令D2地址索引以及标识信息之后,计算模块22根据读命令D2的地址索引和标识信息计算存储器地址;然后,在计算出存储器地址之后,命令生成模块23根据存储器地址生成读命令D2所对应的读命令E21和读命令E22。接着,生成读命令D2所对应的读命令E21和读命令E22之后,将读命令D2的标识信息与读命令E21和读命令E22的标识信息之间的关系存储在多个缓存N2中。此时,由于读命令D1未处理完成,所以在第二缓存中除了存储有读命令D2的标识信息与读命令E21和读命令E22的标识信息之间的关系,还存储有读命令D1的标识信息与读命令E11和读命令E12的标识信息之间的关系。根据本申请的实施例,在T2时间段,虽然读命令D1尚未处理完成,但L2P加速器依然可以处理又收到的读命令D2。从而L2P加速器具有并行处理主设备发出的多个读命令的能力。虽然图8C中以主设备发出的2个读命令D1与D2为例做了说明,可以理解地,L2P加速器可以并行处理更多数量的来自主机的读命令。
在T3时间段内(T3时间段是在T2时间段之后的时间段),加速器接收到读命令E12所对应的数据,并将读命令E12所对应的数据存储在多个缓存N2中。此时,多个缓存N2存储了读命令E11和读命令E12所对应的数据。进一步,当加速器接收到读命令B11和读命令E12所对应的数据之后,读命令D1所对应的所有数据均被接收,加速器对接收到的读命令E11和读命令 E12所对应的数据进行处理以及拼接得到读命令D1所要访问的L2P表的条目,并根据读命令D1 的标识信息生成对应的协议信息,将该协议信息和读命令D1所要访问的L2P表的条目作为对读命令D1的响应存储在第七缓存中。此时,由于已经得到了读命令D1的响应,所以可以将多个缓存N2中读命令D1的标识信息与读命令E11和读命令E12的标识信息之间的关系删除,剩余未处理完成的读命令D2的标识信息与命令E21和读命令E22的标识信息之间的关系。
在T4时间段内(T4时间段是在T3时间段之后的时间段),加速器接收到读命令E21和读命令E22所对应的数据,并将读命令E21和读命令E22所对应的数据存储在多个缓存N2中。此时,多个缓存N2存储了读命令E21和读命令E22所对应的数据,即读命令D2所对应的所有数据均被接收,加速器对接收到的读命令E21和读命令E22所对应的数据进行处理以及拼接得到读命令D2所要访问的L2P表的条目,并根据读命令D2的标识信息生成对应的协议信息,将该协议信息和读命令D2所要访问的L2P表的条目作为对读命令D2的响应存储在多个缓存N2中。此时,由于已经得到了读命令D2的响应,所以可以将多个缓存N2中读命令D2的标识信息与读命令B21和读命令E22的标识信息之间的关系删除。由于此时,读命令D1和读命令D2均处理完成,所以多个缓存N2中不存在待处理的读命令的标识信息。
由上述内容可知,在接收读命令E11和读命令E12的数据时,接收读命令E11的数据和接收读命令E12的数据可以在时间上不连续,即在接收读命令B11的数据和接收读命令E12的数据之间,加速器可以穿插对其他读命令(读命令D2)进行处理,因此,在对读命令D1和读命令D2 的处理过程中,加速器可以对读命令D1和读命令D2进行并行处理。
图8D展示了本申请实施例所提供的另一种读通道的结构示意图。
作为举例,在图8D中,多个缓存N2包括缓存1_1、缓存1_2、缓存1_3、缓存1_4、缓存1_5、缓存1_6以及缓存1_7。其中,解析模块21,响应于接收到主设备发送的一个或多个第一读命令,解析每个第一读命令得到其对应的L2P表条目的地址索引,并将所述地址索引存储在缓存1_1;计算模块22与缓存1_1耦合,根据每个第一读命令所对应的地址索引计算得到其对应的一个或多个第二读命令所访问的存储器地址;并为每个第二读命令设置其对应的第二标识信息,将所述第一标识信息与其对应一个或多个第二标识信息之间的关系存储到缓存1_2中;命令生成模块23与计算模块22耦合,根据所述存储器地址生成至少一个第二读命令,并将所述至少一个第二读命令发送给所述存储器。
进一步,逻辑电路Q2响应于收到存储器控制器提供的对第二读命令的响应,将第二读命令的响应整体存储到缓存1_3中;合并单元24响应于将对第二读命令的响应存储到缓存1_3中,从缓存1_3中的对第二读命B的响应中获取的第一协议信息并存储于缓存1_4中;合并单元24 响应于将对第二读命令的响应存储到缓存1_3中,从缓存1_3中的对第二读命令的响应中获取第二数据和标识符并存储于缓存1_5;其中,根据缓存1_2中所存储的第一标识信息和第二标识信息之间的关系,响应于收到了对根据任意第一读命令生成的所有第二读命令的响应,合并单元24从缓存1_5中的一个或多个第二数据中获取该第一读命令所指示的访问L2P表的条目的有效数据,以及根据条目长度将条目的有效数据与空比特数据进行合并得到该条目,将该条目存储于缓存1_6;以及更新标记符,指示所获取的该条目或该条目的有效数据的最后一个比特位在缓存1_6中的位置;更新的标记符也存储于缓存1_6;从缓存1_6中获取条目,以及更新的标记符,从缓存1_2中获取同第一协议信息对应的第二协议信息,根据该条目以及第二协议信息生成对该第一读命令的响应,并存储于缓存1_7。以及接下来,从缓存1_7获取对第一读命令的响应,并通过总线提供给主设备。
图8E展示了本申请实施例逻辑电路中各缓存存储数据的过程示意图。
以逻辑电路接收来自主设备的读命令D1,读命令D1要访问L2P表中条目122所对应的数据,且条目122的长度为64比特,有效数据为30比特,条目122的有效数据存储在存储器中连续两个存储单元,其中,条目122的有效数据中前4比特存储在前一存储单元中,剩余的26比特存储在后一存储单元中为例。由于条目122的有效数据位于连续的两个存储单元中,故逻辑电路在收到读命令D1之后,会根据读命令D1生成两个读命令,分别为读命令E11和读命令E12,其中,读命令E11用于读取条目122的有效数据中前4比特所对应的存储单元中的64比特(8字节)数据,读命令E12用于读取条目122的有效数据中剩余的26比特所对应的存储单元中的64比特(8 字节)数据。在图8E中,逻辑电路将读命令D1的标识信息与读命令E11和读命令E12的标识信息相关联地保存在第二缓存中,例如以<读命令D1的标识信息,读命令E11的标识信息、读命令E12的标识信息>的形式,表示为过程(10.1)。存储器控制器将根据读命令E11读取的数据 M11发送给L2P加速器,L2P加速器控制将数据M11存储到缓存1_3中,表示为过程(10.2),然后L2P加速器对数据M11进行解析得到协议信息11和数据Q11,并控制将协议信息11存储到缓存1_4,表示为过程(10.3),以及控制将数据Q11存储到缓存1_5,表示为过程(10.4),其中,数据Q11表示根据读命令E11从存储器的存储单元中所读取的64比特数据。响应于存储器控制器将根据读命令E12所读取的数据M12发送给L2P加速器,L2P加速器控制将数据E12 存储到缓存1_3中,表示为过程(10.5),然后L2P加速器对数据M12进行解析得到协议信息 12和数据Q12,并控制将协议信息12存储到缓存1_4,表示为过程(10.6),以及控制将数据 Q12存储到缓存1_5,表示为过程(10.7),其中,数据Q12表示根据读命令E12从存储器的存储单元中所读取的64比特数据。虽然分别表示为过程(10.2)与过程(10.5),但根据本申请的实施例,并不限制存储器控制器将数据M11与M12提供给L2P加速器的先后顺序。并且,在L2P 加速器接收数据M11与M12之间,可能还接收存储器控制器提供的对其他读命令的响应数据。
根据缓存1_4中所存储的协议信息11和协议信息12以及缓存1_2中所存储的读命令D1的标识信息与读命令E11和读命令E12的标识信息之间的关系,确定出读命令E11和读命令E12 所对应的数据是否均存储到缓存1_5,表示为过程(10.8)。当读命令E11和读命令E12所对应的数据均存储到缓存1_5之后,L2P加速器从第五缓存中获取条目122的有效数据,以及根据条目122长度将条目122的有效数据与空比特数据进行合并得到条目122,将条目122存储于缓存 1_6;以及生成新的标记符Q用来指示所获取的条目122或条目122的有效数据的最后一个比特位在缓存1_6中的位置,表示为过程(10.9)。然后,L2P加速器根据缓存1_2记录的读命令D1 的标识信息与读命令E11和读命令E12的标识信息之间的对应关系,从缓存中获取读命令D1的标识信息,并根据该标识信息生成对应的协议信息2(包含读命令D1的标识信息),表示为过程(10.10);根据所生成的协议信息2以及从缓存1_6中获取条目122生成对读命令D1的响应,并存储于缓存1_7中,表示为过程(10.11)。
根据本申请的实施例,通过设置多个缓存来记录L2P加速器对来自存储器控制器的对读命令的响应,来协助L2P加速器能同时处理来自存储器控制器的对多个读命令的响应,并且这些响应无需对应于来自主设备的同一读命令,而是可以对应来自主设备的多个读命令。例如,从存储器控制器接收的每个响应,都被记录在缓存1_3,从而即使该响应还尚不能提供对来自主设备的读命令所需的完整条目,该响应依然可以被缓存,并且不影响接收其他响应。并且,在将缓存1_3 中的某响应数据分别搬移到缓存1_4与缓存1_5后,又可删除缓存1_3中的这部分数据,以减少对缓存1_3的占用。又例如,缓存1_5中记录了主设备要访问的条目的有效数据,在主设备要获取的一个条目的所有有效数据尚未都收到时,L2P加速器的已接收的部分有效数据被记录在第五缓存,而即使主设备同时发出了多个读命令,L2P加速器所接收的每个读命令的部分都被记录在缓存1_5,从而支持对主设备发出的多个读命令的并行处理。而当L2P加速器接收到主设备要获取的某个条目的所有有效数据,又及时将这些有效数据从缓存1_5搬移到缓存1_6以构建主设备要访问的条目,并清空这些有效数据在缓存1_5中占据的空间。从而,缓存1_5起到了缓存主设备发出的读命令所对应的多个读命令的多个响应的作用。而缓存1_6则起到了拼接主设备所要访问的整个条目的作用。
下文以逻辑电路接收来自主设备的读命令D1,并根据读命令D1生成读命令E1和读命令E12 为例,对各缓存中其他操作进行说明。
作为举例,在图8E中,响应于从缓存1_3中的对读命令E11的响应中获取其所对应的协议信息11并存储于缓存1_4,以及从缓存1_3中的对读命令E11的响应中获取其所对应的数据Q11 与标记符Q并存储于缓存1_5;从缓存1_3中删除对读命令E11的响应。
又作为举例,响应于将读命令E11所对应的协议信息11存储在缓存1_4中,还根据协议信息11访问缓存1_2,以确定用于读命令D1所对应的所有读命令E11和读命令E12是否都已收到。
又作为举例,若读命令D1所对应的读命令E12并未收到,标记已收到或尚未收到的读命令的数量。
又作为举例,若读命令E11和读命令E12都已收到,从缓存1_5中的读命令E11所对应的数据Q11和读命令E12所对应的数据Q12中获取该读命令D1所指示的访问L2P表的条目的有效数据,以及将条目的有效数据与空比特数据进行合并得到该条目,将该条目存储于缓存1_6;以及从缓存1_5中删除读命令E11和读命令E12所对应的数据以及与标记符Q。
又作为举例,若读命令E11和读命令E12都已收到,从第四缓存中删除读命令E11所对应的协议11和读命令B12所对应的协议信息12。
又作为举例,响应于将读命令D1所指示的访问L2P表的条目存储于缓存1_6,根据读命令 D1所对应的协议信息2以及从缓存1_6中获取的条目生成对读命令D1的响应,并存储于缓存 1_7;以及从缓存1_2中删除读命令D1所对应的协议信息2及读命令E11对应的协议信息11和读命令E12对应的协议信息12,以及从缓存1_6删除该条目。
又作为举例,响应于将读命令D1的响应存储于缓存1_7,从缓存1_7获取对读命令D1的响应并发送给主设备,以及从缓存1_7删除对读命令D1的响应。
又作为举例,响应于根据读命令D1生成读命令E11和读命令E12,从缓存1_1删除读命令 D1的地址索引。
通过及时地删除缓存中的数据,提高了缓存的利用率,使得缓存的容量无需很大,并可支持对并发的多个读命令的处理。作为举例,若L2P加速器支持最大同时处理N个来自主机的读命令,则缓存1_6的容量需要最多同时缓存6个L2P表条目及其Q,缓存1_3的容量需要最多同时缓存 2N个来自存储器控制器的响应,缓存1_4与缓存1_5的容量需要最多同时缓存2N份数据。而缓存1_7的容量只需要容纳对1个主设备读命令的响应。缓存1_1与缓存1_2的容量需要最多同时缓存N份数据。可选地,各缓存的容量比上述值更小,以降低成本,并且不显著降低L2P加速器读主设备读命令的并发处理能力。
作为举例,缓存1_2、缓存1_4、缓存1_5和缓存1_6为缓存阵列,缓存阵列包括包含多个缓存单元,每个缓存单元分别用于存储一个读命令D的标识信息与其对应一个或多个读命令E 的标识信息之间的关系,每个读命令D对应的一个或多个读命令E的协议信息,每个读命令E 所对应的响应数据或每个读命令D对应的条目和更新的标记符。
图8F展示了本申请实施例逻辑电路中多个缓存的结构示意图。
以逻辑电路接收到来自主设备的两个读命令D1和D2,并根据读命令D1生成读命令E11和读命令E12,根据读命令D2生成读命令E21和读命令E22为例,在图8F中,缓存1_2所对应的缓存阵列包括两个缓存单元,分别用于缓存读命令D1的标识信息与读命令E11和读命令E12的标识之间的关系,以及缓存读命令D2的标识信息与读命令E21和读命令E22的标识之间的关系,例如,<D1,E11,E12的标识>,<D2,E21,E22的标识>。缓存1_4所对应的缓存阵列包括四个缓存单元,分别用于缓存读命令E11的协议信息,缓存读命令E12的协议信息,缓存读命令E21的协议信息,以及缓存读命令E22的协议信息,其中,读命令E11的协议信息中包含E11标识,读命令E12的协议信息中包含E12的标识,读命令E21的协议信息中包含E21标识,以及读命令 E22的协议信息包含E22标识。缓存1_5所对应缓存阵列包括四个缓存单元,分别用于缓存读命令E11的响应数据、读命令E12的响应数据、读命令E21的响应数据以及读命令E22的响应数据。缓存1_6所对应缓存阵列包括两个缓存单元,分别用于缓存读命令D1所要访问的L2P表条目和更新的标记符,以及缓存读命令D2所要访问的L2P表条目和更新的标记符。
另外,应理解,在图8F中,当缓存1_6中缓存了读命令D1所要访问的L2P表条目后,缓存1_4中所缓存的E11标识和E12标识、缓存1_2中读命令D1的标识信息与读命令E11和读命令E12的标识之间的关系以及缓存1_5中E11数据和E12数据可以删除。同理,当缓存1_6中缓存了读命令D2所要访问的L2P表条目后,缓存1_4中所缓存的E21标识和E22标识、缓存1_2中读命令D2的标识信息与读命令E21和读命令E22的标识之间的关系以及缓存1_5中E21数据和E22数据可以删除。
进一步,上述图4部分已经介绍过,加速器在对写命令进行处理过程中需要执行读改写操作时,则对于该写命令的处理不仅需要写通道的参与,还需要读通道的参与,为了便于理解以主设备向加速器发送写命令A1,且加速器在对写命令A1进行处理过程中需执行读改写操作为例,对写通道与读通道中参与的各模块处理过程进行简要介绍。
图9展示了本申请实施例加速器执行读改写操作的示意图。
作为举例,在图9中,在执行读改写操作的过程中,读通道的命令生成模块23从写通道的缓存4中获取写命令A1所指示的L2P表条目的有效数据的字节对齐信息以及从缓存3中获取写命令A1所对应的一个或多个存储器地址,命令生成模块23根据每个存储器地址生成一个对应的读命令,并在读通道的缓存1-1中,添加所生成的每个读命令对应的内容,每个读命令在读通道的缓存1-1中生成一条记录,记录<读地址,标识>,其中“标识”具有特定值,含义是它是来自写通道的读命令,通过它来读取的结果要发给写通道,而不发给主设备。读通道在生成写命令A1 所对应的一个或多个读命令之后,后续对于该一个或多个读命令处理操作,同读通道的处理主设备所发送的读命令处理操作相同,如填充缓存1-2,在缓存1-2里,也通过“标识”来记录这是来自写通道的读命令,并通过AXI总线向存储器发送该一个或多个读命令。又作为举例,命令生成模块23根据每个存储器地址生成一个对应的读命令之后,也可直接在读通道的缓存1-2中,添加所生成的每个读命令对应的内容,每个读命令在读通道的缓存1-2中生成一条记录,记录<读地址,标识>。
进一步,存储器在接收到写命令A1所对应的一个或多个读命令之后,会根据每个读命令读取数据,并将读取的数据作为响应数据反馈给读通道,读通道接收每个读命令所对应的响应数据,并将响应数据存储到缓存1-5。读通道响应于在缓存1-5存储响应数据,在缓存1-4中记录了前面的特定“标识”,通过查询缓存1-2,知道该特定标识代表来自写通道的读命令,从而将缓存1-5 中的数据搬移到写通道的缓存8。响应于将响应数据搬移到缓存8,写通道的打包模块13在对数据进行打包过程中,除了缓存7中获取有效数据或者拼接后的数据以及从缓存5中获取协议信息之外,还需要从缓存8获取响应数据,然后打包模块13将获取有效数据或者拼接后的数据与响应数据进行组合得到组合数据,并根据组合数据与协议信息生成所述数据,将所述数据发送给存储器控制器,以及存储器控制器将所述数据发送给存储器。
需要说明的是,为了简明的目的,本申请将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本申请的方案并不受所描述的动作的顺序限制。因此,依据本申请的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本申请所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本申请某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本申请对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本申请某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本申请的公开和教导,本领域技术人员可以理解本申请所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种L2P加速器,用于耦合主设备与存储器,并加速对所述主设备发出的对所述存储器中的L2P表的读命令与写命令的处理,其特征在于,包括:写通道和读通道,其中,
所述读通道响应于从主设备接到一个或多个第一读命令,根据每个第一读命令生成一个或多个第二读命令;响应于从存储器接收到每个第二读命令的第一响应数据,根据每个第一读命令所对应的全部第一响应数据确定出每个第一读命令所指示要读取的L2P表条目,将每个第一读命令所对应的L2P表条目以及第一协议信息作为对该第一读命令的响应发送给所述主设备;
所述写通道响应于从主设备接收到一个或多个写命令,根据每个写命令获取其对应的地址索引和L2P表条目;以及根据每个写命令所对应的地址索引以及L2P表条目的有效数据位数确定出每个写命令所对应的一个或多个存储器地址和其L2P表条目的有效数据第一比特在存储器中的位置;根据每个写命令所对应的一个或多个存储器地址以及其第一比特在存储器中的位置将其对应的L2P表条目的有效数据写入到存储器中。
2.根据权利要求1所述的加速器,其特征在于,所述读通道还响应于所述一个或多个写命令中存在第一写命令,其中,第一写命令所指示的第一L2P表条目的有效数据非字节对齐和/或第一L2P表条目的有效数据中第一比特不位于存储器中其对应的存储单元的起始位置,根据第一写命令所对应的存储器地址生成一个或多个第三读命令,并将一个或多个第三写命令发送给存储器;
所述写通道响应于接收到所述存储器所反馈的所有第三读命令的第二响应数据,根据第一L2P表条目的有效数据中第一比特在存储器中的位置将所述有效数据与所述第二响应数据中的部分数据组合得到第一数据;根据缓存中所存储的第二协议信息以及所述第一数据生成第二数据,将所述第二数据发送给所述存储器。
3.根据权利要求1或2所述的加速器,其特征在于,所述一个或多个写命令存在第二写命令和第三写命令,其中,所述第二命令指示第二L2P表条目,第三写命令指示第三L2P表条目,所述第二L2P表条目与第三L2P表条目为L2P表中不同的条目;
所述写通道响应于所述第二L2P表条目与所述第三L2P表条目能拼接,将第二L2P表条目的有效数据与第三L2P表条目的有效数据进行拼接得到一份或多份拼接后的数据,将拼接后的数据写入到存储器中。
4.根据权利要求3所述的加速器,其特征在于,所述读通道根据第二写命令所对应的一个或多个存储器地址生成一个或多个第四读命令;所述写通道响应于接收到存储器所反馈的所有第四读命令的第三响应数据;将所述第三响应数据与所述拼接后的数据进行组合得到第三数据,将所述第三数据以及第二协议信息发送给存储器;或
所述读通道根据第三写命令所对应的一个或多个存储器地址生成一个或多个第五读命令;所述写通道响应于接收到存储器所反馈的所有第五读命令的第四响应数据;将所述第四响应数据与所述拼接后的数据进行组合得到第四数据,将所述第四数据以及第二协议信息发送给存储器。
5.根据权利要求4所述的加速器,其特征在于,响应于第二写命令有对应的一个或多个第四读命令,第三写命令有对应的一个或多个第五读命令,所述写通道响应于接收到所述第三响应数据和所述第四响应数据,将所述拼接后的数据与所述第三响应数据和所述第四响应数据进行组合得到第五数据,将所述第五数据以及第二协议信息发送给存储器。
6.根据权利要求3-5任一项所述的加速器,其特征在于,所述写通道响应于所述第二L2P表条目与所述第三L2P表条目不能拼接,且一个或多个第四读命令与一个或多个第五读命令所指示的存储器地址不冲突,将所述第二L2P表条目的有效数据与所述第三L2P表条目的有效数据并行写入到存储器中。
7.根据权利要求6所述的加速器,其特征在于,所述写通道响应于一个或多个第四读命令与一个或多个第五读命令所指示的存储器地址存在冲突,将所述第二L2P表条目的有效数据写入到所述存储器中之后,再向所述存储器发出一个或多个第五读命令;或者将所述第三L2P表条目的有效数据写入到所述存储器中之后,再所述存储器发出一个或多个第四读命令。
8.根据权利要求7所述的加速器,其特征在于,所述写通道响应于一个或多个第四读命令与一个或多个第五读命令所指示的存储器地址存在冲突,将第二写命令所对应的一个或多个存储器地址发送给所述读通道;
所述读通道响应于接收到第二写命令所对应的一个或多个存储器地址,根据该存储器地址生成一个或多个第四读命令;
所述写通道响应于接收到存储器所反馈的所有第四读命令的第三响应数据,将所述第三响应数据与所述第二L2P表条目的有效数据进行组合得到第六数据,将第六数据与第二协议信息发送给存储器;
所述写通道响应于接收到存储器所反馈的所有第四读命令的第三响应数据,将第三写命令所对应的一个或多个存储器地址发送给所述读通道;
所述读通道响应于接收到第三写命令所对应的一个或多个存储器地址,根据该存储器地址生成一个或多个第五读命令;
所述写通道响应于接收到存储器所反馈的所有第五读命令的第四响应数据,将所述第四响应数据与所述第三L2P表条目的有效数据进行组合得到第七数据,将第七数据与第二协议信息发送给存储器。
9.根据权利要求1-8任一项所述的加速器,其特征在于,所述读通道包括第一逻辑电路和第一多个缓存;其中,所述第一多个缓存包括:第一缓存、第二缓存、第三缓存、第四缓存、第五缓存、第六缓存以及第七缓存;
所述第一逻辑电路响应于从主设备接收到第一读命令,对第一读命令进行解析得到第一读命令所指示的地址索引,并存储到第一缓存中;以及根据接收的第一读命令生成一个或多个第二读命令,并将标识每个第一读命令的第一标识信息与标识其对应的一个或多个第二读命令的第二标识信息之间的关系存储在第二缓存中
所述第一逻辑电路响应于收到每个第二读命令的第一响应数据,将每个第二读命令的第一响应数据存储到所述第三缓存中;
所述第一逻辑电路响应于将每个第二读命令的第一响应数据存储到所述第三缓存中,从所述第三缓存中的第一响应数据中获得第三协议信息并存储于所述第四缓存中以及获得第八数据存储于所述第五缓存中;
其中,根据第二缓存中所存储的第一标识信息和第二标识信息之间的关系,响应于收到每个第一读命令所对应的所有第一响应数据,所述第一合并单元从所述第五缓存中每个第一读命令所对应的所有第八数据获取该第一读命令所指示的访问L2P表条目的有效数据,以及根据L2P表条目长度将该L2P表条目的有效数据与空比特数据进行合并得到该L2P表条目,将该L2P表条目存储于所述第六缓存;以及更新标记符,将更新的标记符也存储于所述第六缓存;
从第六缓存中获取L2P表条目以及更新的标记符,从第二缓存中获取该第一读命令的第一标识信息,根据该第一标识信息生成第一协议信息,将该L2P表条目以及第一协议信息作为对第一读命令的响应,并该响应存储于所述第七缓存。
10.根据权利要求9所述的加速器,其特征在于,所述写通道包括第二逻辑电路和第二多个缓存;其中,所述第二多个缓存,包括:第八缓存、第九缓存、第十缓存、第十一缓存、第十二缓存、第十三缓存、第十四缓存、第十五缓存、第十六缓存以及第十七缓存;
所述第二逻辑电路响应于从写命令中获得地址索引和L2P表条目,将该地址索引存储于所述第八缓存中以及将所述L2P表条目缓存于所述第九缓存中;以及根据该地址索引以及所述有效数据位数确定出一个或多个存储器地址以及所述第一位置,将所述一个或多个第二存储器地址以及所述第一位置存储于所述第十缓存中;以及将所述写命令的标识信息与所述存储器地址和第一位置之间的映射关系存储在第十一缓存中;
响应于将L2P表条目缓存于所述第九缓存中,从所述第九缓存中获取L2P表条目的有效数据并存储于第十三缓存;
响应于第九缓存中的L2P表条目与所述第十三缓存中所存储的L2P表条目不能拼接,将所述L2P表条目的有效数据搬移到所述第十六缓存;响应于第九缓存中的L2P表条目同所述第十三缓存中所存储的所述L2P表条目能拼接,将L2P表条目的有效数据写入所述第十三缓存,再从所述第十三缓存将拼接后的所述L2P表条目的有效数据与所述L2P表条目的有效数据搬移到所述第十六缓存;
响应于将所述L2P表条目的有效数据与所述L2P表条目的有效数据搬移到所述第十六缓存,以及响应于第二写命令和第三写命令没有对应的读命令,从第十六缓存将所述第二L2P表条目的有效数据与所述第三L2P表条目的有效数据写入到存储器中。
CN202210457604.3A 2022-04-27 2022-04-27 一种l2p加速器 Pending CN117009259A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210457604.3A CN117009259A (zh) 2022-04-27 2022-04-27 一种l2p加速器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210457604.3A CN117009259A (zh) 2022-04-27 2022-04-27 一种l2p加速器

Publications (1)

Publication Number Publication Date
CN117009259A true CN117009259A (zh) 2023-11-07

Family

ID=88571355

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210457604.3A Pending CN117009259A (zh) 2022-04-27 2022-04-27 一种l2p加速器

Country Status (1)

Country Link
CN (1) CN117009259A (zh)

Similar Documents

Publication Publication Date Title
US9395921B2 (en) Writing data using DMA by specifying a buffer address and a flash memory address
EP2849076B1 (en) Dma transmission method and system
US9176673B2 (en) Memory device
CN109164976B (zh) 利用写缓存优化存储设备性能
CN113032293A (zh) 缓存管理器及控制部件
WO2015176664A1 (zh) 一种数据操作的方法、设备和系统
CN105260332A (zh) 一种对cpld数据包进行有序存储的方法及系统
US10853255B2 (en) Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover
CN110275757A (zh) 利用系统抽象层提供多协议存储设备
CN113485643B (zh) 用于数据存取的方法及数据写入的控制器
CN112825024A (zh) 命令融合、拆分方法与NVMe控制器
CN115048034A (zh) 用于sgl的存储空间映射方法及其装置
CN112513822B (zh) 信息处理方法及装置、设备、系统
CN113448487A (zh) 写入闪存管理表的计算机可读取存储介质、方法及装置
CN214376421U (zh) Ftl加速器及控制部件
CN111290975A (zh) 使用统一缓存处理读命令与预读命令的方法及其存储设备
CN117009259A (zh) 一种l2p加速器
CN114840447B (zh) 一种加速器
CN111290974A (zh) 用于存储设备的缓存淘汰方法与存储设备
CN112732176B (zh) 基于fpga的ssd访问方法及装置、存储系统及存储介质
CN116955228A (zh) 一种处理写命令的加速器
CN113031849A (zh) 直接内存存取单元及控制部件
CN116860664A (zh) 一种处理读命令的加速器
KR20200143922A (ko) 메모리 카드 및 이를 이용한 데이터 처리 방법
CN117806570B (zh) 在线内存扩展方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination