CN114840447B - 一种加速器 - Google Patents
一种加速器 Download PDFInfo
- Publication number
- CN114840447B CN114840447B CN202210348808.3A CN202210348808A CN114840447B CN 114840447 B CN114840447 B CN 114840447B CN 202210348808 A CN202210348808 A CN 202210348808A CN 114840447 B CN114840447 B CN 114840447B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- table entry
- cache
- valid data
- 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.)
- Active
Links
- 230000015654 memory Effects 0.000 claims abstract description 341
- 230000004044 response Effects 0.000 claims abstract description 96
- 239000000872 buffer Substances 0.000 claims description 104
- 239000000284 extract Substances 0.000 claims description 12
- 238000004806 packaging method and process Methods 0.000 claims description 12
- 230000003139 buffering effect Effects 0.000 claims description 11
- 238000004458 analytical method Methods 0.000 claims description 5
- 230000008878 coupling Effects 0.000 claims description 5
- 238000010168 coupling process Methods 0.000 claims description 5
- 238000005859 coupling reaction Methods 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000000034 method Methods 0.000 description 47
- 230000008569 process Effects 0.000 description 38
- 238000010586 diagram Methods 0.000 description 28
- 230000005055 memory storage Effects 0.000 description 8
- 239000007787 solid Substances 0.000 description 6
- 238000013507 mapping Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 208000033748 Device issues Diseases 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- CXOXHMZGEKVPMT-UHFFFAOYSA-N clobazam Chemical compound O=C1CC(=O)N(C)C2=CC=C(Cl)C=C2N1C1=CC=CC=C1 CXOXHMZGEKVPMT-UHFFFAOYSA-N 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 1
- 229940044442 onfi Drugs 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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/1009—Address translation using page tables, e.g. page table structures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及加速器,该加速器包括:写通道和读通道,写通道包括逻辑电路和多个缓存;逻辑电路从写命令中获取地址索引和L2P表条目;根据地址索引以及L2P表条目的有效数据位数确定出L2P表条目对应的一个或多个存储器地址、有效数据的第一比特在存储器中的位置;读通道响应于有效数据字节对齐且第一比特不位于存储器中其对应的存储单元的起始位置或非字节对齐,根据一个或多个存储器地址生成一个或多个读命令,并将一个或多个读命令发送给存储器;响应于接收到存储器基于每个读命令所反馈的响应数据,根据第一比特的位置将有效数据与响应数据中的部分数据组合得到第一数据;根据协议信息以及第一数据生成第二数据,将第二数据发送给存储器。
Description
技术领域
本申请一般地涉及存储器领域。更具体地,本申请涉及一种加速器。
背景技术
图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(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表的条目数据写入到存储器中,以分担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表条目的有效数据。
根据本申请的第一方面的第一至第二十七加速器,提供了根据本申请的第二十八加速器,所述协议信息为AXI协议信息。
根据本申请的第二方面,提供了根据本申请的第一控制部件,包括第一方面所述的第一至第二十八所述的加速器。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为现有技术的固态存储设备的框图;
图2A展示了本申请实施例所提供的控制部件的结构示意图;
图2B展示了本申请实施例所提供的加速器的结构示意图;
图2C展示了本申请所提供的主设备所感知的L2P表条目与存储器所存储的L2P表条目之间转换的示意图;
图2D展示了本申请实施例所提供的写命令所指示的L2P表条目的有效数据与存储器所反馈的响应数据的组合示意图;
图2E展示了本申请实施例所提供的另一种加速器的结构示意图;
图2F展示了本申请实施例所提供的另一种加速器的结构示意图;
图3A展示了本申请实施例所提供的一种对多个L2P表条目的有效数据进行拼接的示意图;
图3B展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图;
图3C展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图;
图3D展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图;
图3E展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图;
图3F展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图;
图4A展示了本申请实施例所提供的一种拼接后的数据与响应数据组合得到组合后的数据的示意图;
图4B展示了本申请实施例所提供的另一种拼接后的数据与响应数据组合得到组合后的数据的示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图2A展示了本申请实施例所提供的控制部件的结构示意图。
在图2A中,控制部件包括主设备、加速器以及从设备。作为举例,主设备为CPU、介质接口控制器或处理核;从设备为存储器控制器。主设备和加速器之间和/或加速器与从设备之间例如通过总线耦合。又作为举例,本申请实施例中的加速器可以为L2P加速器,用于加速将主设备所发送的写命令指示的L2P表条目的有效数据存储到存储器的L2P表中。
控制部件还耦合外部的存储器(图2A的DRAM),存储器控制器用于访问外部存储器。作为举例,加速器包括从设备接口与主设备接口。加速器通过从设备接口与主设备接口分别耦合到总线。从而控制部件的一个或多个主设备(例如CPU、介质接口控制器)得以通过从设备接口访问加速器,将加速器作为总线从设备访问。而加速器得以通过主设备接口作为主设备访问控制部件的一个或多个从设备(例如存储器控制器)。
作为举例,位于控制部件外部的存储器用于存储L2P表,主设备可以向存储器的L2P表写入L2P表的条目数据。主设备通过向总线发出指示L2P表的条目数据的写命令。总线将写命令发送给耦合于总线的加速器。加速器根据接收的写命令中指示的地址索引确定该L2P表的条目数据在存储器所存储位置,并通过总线向从设备(如存储器控制器)发送该写命令所指示的L2P表的条目数据,从设备将接收到的L2P表的条目数据发送给存储器,存储器根据该L2P表的条目数据所存储的位置将该L2P表的条目数据存储到L2P表中。
图2B展示了本申请实施例所提供的加速器的结构示意图。
在图2B中,该加速器包括写通道和读通道,其中,读通道是指形成了从存储器中读取数据的数据通路的电路,写通道是指形成了向存储器中写入数据的数据通路的电路。本申请实施例所提供的方案中为了减低L2P表占据的存储器空间大小,并且减少或消除非字节对齐的L2P表条目对CPU或芯片内的其他设备访问L2P表条目的影响,存储器所存储的L2P表为压缩的L2P表,其中,压缩的L2P表的条目大小可以不是字节的整数倍。并且压缩的L2P表条目在存储器中被紧密排列而无需为按字节对齐而在条目之间留有未被使用的存储器空间。
进一步,为了使得存储器能够存储压缩的L2P表,本申请实施例所提供的加速器会对写命令所指示的L2P表条目的数据进行处理,仅将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表条目,例如,例如,L2P表条目的数据在size(L2Pentry)表示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表条目的有效数据发送给存储器,写通道包括逻辑电路和多个缓存。主设备向写通道发送写命令,表示为过程(2.1),在该过程中主设备和加速器之间可通过总线进行数据交互,例如AXI总线;另外,写命令指示了L2P表条目的数据以及地址索引(如,逻辑地址LBA)。写通道中逻辑电路响应于收到主设备所发送的写命令,从写命令中获取地址索引和其指示的L2P表条目的数据,将地址索引以及L2P表条目的数据存储到缓存中;然后根据地址索引计算出存储器中存储L2P表条目的有效数据的一个或多个存储器地址(如一个或多个存储单元地址)。在计算出存储L2P表条目的有效数据的一个或多个存储器地址后,逻辑电路还根据L2P表条目的有效数据位数确定出L2P表条目的有效数据的第一比特在其对应存储单元中的位置,并将一个或多个存储器地址以及有效数据的第一比特在存储器中的位置存储到缓存中,表示为过程(2.2)。
进一步,由于加速器与主设备、加速器与从设备之间均是通过总线进行传输数据的,故加速器与主设备、加速器与从设备之间所传输的数据均需满足总线协议(如AXI协议)所定义的数据传输方式。作为举例,总线协议定义了通过总线所传输的数据需要按照字节对齐的方式传输,例如,所传输的数据位宽为字节整数倍、所传输的数据位宽为8字节的整数倍等,即本申请所提供的加速器将L2P表条目的有效数据提供给从设备需要按照字节对齐的方式传输数据,若L2P表条目的有效数据非字节对齐或者第一比特不位于存储器中其对应的存储单元的起始位置,加速器需要对执行读改写操作,其中,读改写操作包括过程(2.3)~(2.10)。作为举例,读通道响应于有效数据字节对齐且第一比特不位于存储器中其对应的存储单元的起始位置或非字节对齐,根据一个或多个存储器地址生成一个或多个读命令,并将一个或多个读命令发送给存储器。逻辑电路响应于接收到来自存储器基于每个读命令所反馈的响应数据,根据第一比特在存储器中的位置将有效数据与响应数据中的部分数据组合得到第一数据;根据缓存中所存储的协议信息以及第一数据生成第二数据,将第二数据发送给存储器,表示为过程(2.9)和过程(2.10)。另外,在将写命令所指示的L2P表条目的有效数据写入到存储器中之后,写通道还向主设备发送反馈信息,以指示写命令处理完成,表示为过程(2.11)。
又作为举例,若写命令所指示的L2P表条目的有效数据字节对齐,且第一比特位于其对应的存储单元的起始位置,逻辑电路直接根据L2P表条目的有效数据以及协议信息生成第三数据,根据存储器地址将所述第三数据发送给所述存储器,表示为过程(2.9)和过程(2.10)。即本申请实施例所提供的方案中,在L2P表条目的有效数据非字节对齐或者第一比特不位于存储器中其对应的存储单元的起始位置时,才执行读改写操作(过程(2.3)~(2.10))。
图2D展示了本申请实施例所提供的写命令所指示的L2P表条目的有效数据与存储器所反馈的响应数据的组合示意图。
作为举例,在图2D中,加速器所接收到的写命令指示了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比特。
图2E展示了本申请实施例所提供的另一种加速器的结构示意图。
作为举例,在图2E中,写通道中逻辑电路包括解析模块、计算模块以及打包模块;其中,解析模块,响应于接收到写命令,解析写命令得到其所指示地址索引和L2P表条目120的数据,并将地址索引以及将L2P表条目120的数据缓存在多个缓存中;计算模块,与缓存耦合,根据地址索引以及有效数据位数确定出存储器中存储L2P表条目120的有效数据的第一存储单元的地址、有效数据的第一比特在存储器中的位置;将第一存储单元的地址以及有效数据的第一比特在存储器中的位置存储于多个缓存中;打包模块,与缓存耦合,响应于有效数据非字节对齐,接收到来自存储器基于每个读命令所反馈的响应数据,将有效数据与响应数据中的部分数据组合得到数据A;根据缓存中所存储的协议信息以及数据A生成数据B,将数据B发送给存储器。应理解,存储器控制器发送给存储器的数据中携带有协议信息(如AXI协议信息),但是存储器在存储单元中仅存储数据A的数据,不存储协议信息。
作为举例,对于写命令所指示的L2P表条目,加速器可以在接收到一个写命令之后即执行一次写操作,将该写命令所指示的L2P表条目的有效数据写入到存储器中。为了节省带宽资源或减少访问存储器的数据量,加速器也可以等待接收到多个写命令所指示的L2P表条目后,执行一次写操作,将多个L2P表条目的有效数据写入到存储器中。又作为举例,加速器在等待接收到多个写命令所指示的L2P表条目后,可以将多个L2P表条目的有效数据进行拼接得到一份或多份拼接后的数据,通过执行一次写操作将一份或多份拼接后的数据写入到存储器中;也可以不对多个L2P表条目的有效数据进行拼接,直接根据每个L2P表条目所对应的存储器地址以及有效数据的第一比特在存储器中的位置,将多个L2P表条目的有效数据写入到存储器中。
又作为举例,在图2E中,写通道中逻辑电路除了包括解析模块、计算模块以及打包模块之外,还包括合并单元。作为举例,逻辑电路在接收到写命令并对其进行解析得到L2P表条目后,合并单元从L2P表条目中提取有效数据,并将该有效数据存储到缓存中。又作为举例,对于加速器执行一次写操作,将多个L2P表条目的有效数据写入到存储器中,合并单元可以从每个L2P表条目中提取有效数据,并根据每个L2P表条目的有效数据中第一比特在存储器中的位置对多个L2P表条目的有效数据进行拼接得到一份或多份拼接后的数据(具体的拼接过程参见下文),将拼接后的数据存储到缓存中,以使得加速器将一份或多份拼接后的数据写入到存储器中。
图2F展示了本申请实施例所提供的另一种加速器的结构示意图。
作为举例,在图2F中,多个缓存包括第一缓存、第二缓存、第三缓存、第四缓存、第五缓存、第六缓存、第七缓存以及第八缓存;其中,第一缓存用于缓存对写命令进行解析所得到的地址索引;第二缓存用于缓存对写命令进行解析所得到的写命令所要写入的数据(L2P表条目的完整数据);第三缓存用于缓存根据地址索引以及有效数据位数确定出存储器中存储L2P表条目的有效数据的一个或多个存储器地址以及有效数据的第一比特在存储器中的位置;第四缓存用于缓存有效数据字节对齐信息;第五缓存用于缓存协议信息;第六缓存与所述第二缓存耦合,缓存写命令所指示的L2P表条目的有效数据;第七缓存与所述第六缓存耦合,用于缓存所述L2P表条目的有效数据;第八缓存与逻辑电路耦合,用于缓存读通道发送的读命令的响应数据。另外,在本申请实施例所提供的方案中,多个缓存还可以包括第九缓存(图2F中未标注),第九缓存用于缓存每个写命令所指示的L2P表条目的有效数据所存储的位置。另外,多个缓存中的第三缓存、第四缓存或第五缓存还可以存储读通道所生成的一个或多个读命令的标识信息,以使得所述逻辑电路在接收到基于每个读命令所反馈的响应数据时,根据所述标识信息确定出与响应数据组合的L2P表条目的有效数据。
又作为举例,加速器接收一个写命令即执行一次写操作时,第六缓存中存储单独的一个或多个的L2P表条目的有效数据。加速器对接收的多个写命令执行一次写操作时,第六缓存中可以存储单独的多个L2P表条目的有效数据,也可以存储多个的L2P表条目的有效数据拼接后的一份或多份拼接后的数据,此处单独的多个L2P表条目的有效数据是相对于拼接后的数据来说的,“单独”是指并未对多个L2P表条目的有效数据进行拼接。又作为举例,为了在第六缓存中存储一份或多份拼接后的数据,第六缓存包括一个或多个存储单元。
第六缓存中存储单元的大小与存储器中存储单元的大小相同;另外,拼接后的数据在第六缓存的存储单元中所存储的位置与各个L2P表条目的有效数据在存储器中其对应的存储单元中所存储的位置相同,例如,L2P表条目120的有效数据在存储器中的存储位置为某一存储单元的第0比特到29比特,L2P表条目121(也参看图3A)的有效数据存储在该存储单元的第30比特到59比特,则在第六缓存中L2P表条目120的有效数据存储在其第一个存储单元的第0比特到29比特,L2P表条目121的有效数据存储在其第一个存储单元的第30比特到59比特。
又作为举例,在图2F中,多个缓存可以包括第一缓存、第二缓存和第六缓存,其中,第六缓存与第二缓存耦合,缓存写命令所指示的L2P表条目的有效数据。一个或多个存储器地址以及有效数据的第一比特在存储器中的位置、有效数据字节对齐信息、协议信息、读改写操作从存储器中读出的数据等可以另外地存储。而有效数据字节对齐信息、协议信息等是加速器预先知晓的。
依然作为举例,图2F中,第七缓存包括多个存储单元。第七缓存的存储单元的尺寸同第六缓存的存储单元例如相同。对于需要被读改写的L2P表条目的有效数据,将其放置在第七缓存中并等待从存储器读出的数据。不需要被读改写的L2P表条目的有效数据在进入第七缓存后即可继续被写入存储器。
为了便于理解下面对图2F中加速器的工作过程进行简要介绍。
在图2F中,主设备向加速器发送写命令,表示为过程(3.1);加速器接收到该命令,写通道的逻辑电路中解析模块会对该写命令进行解析得到地址索引和L2P表条目的数据,并将地址索引存储到第一缓存中,表示为过程(3.2);以及将L2P表条目的数据存储到第二缓存中,表示为过程(3.3);然后逻辑电路中的计算模块与第一缓存耦合从第一缓存中获取地址索引,表示为过程(3.4),并根据地址索引以及有效数据位数计算出所述存储器中存储所述L2P表条目的有效数据的一个或多个存储器地址、所述有效数据的第一比特在存储器中的位置,并将一个或多个存储器地址以及有效数据的第一比特在存储器中的位置存储到第三缓存,表示为过程(3.5);合并单元从第三缓存中获取一个或多个存储器地址以及有效数据的第一比特在存储器中的位置,表示为过程(3.6),从第二缓存中获取L2P表条目的有效数据,表示为过程(3.7),合并单元将L2P表条目的有效数据存储到第六缓存,表示为过程(3.8),在过程(3.8)还可能对多个L2P表条目的有效数据实施拼接并在第六缓存中得到一份/多份拼接后的数据;合并单元将第六缓存中的有效数据或者拼接后的数据搬移到第七缓存,表示为过程(3.9);在对该写命令处理过程中不需要执行读改写操作时,打包模块从第七缓存中获取有效数据或者拼接后的数据,表示为过程(3.10),以及从第五缓存中获取协议信息,表示为过程(3.11),然后将有效数据或者拼接后的数据与协议信息生成一数据,将该数据发送给存储器控制器,表示为过程(3.12),然后存储器控制器将该数据发送给存储器,表示为过程(3.13)。另外,加速器将该数据发送给存储器控制器后,加速器会向主设备发送一反馈信息,用于指示该写命令处理完成,表示为过程(3.14)。作为举例,打包模块在生成该数据之后,还可以在该数据中添加标记符得到处理后的数据,将所述处理后的数据发送给所述存储器,其中,所述标记符用于标识所述处理后的数据中最后一个比特位在该数据中的位置。
进一步,在对该写命令处理过程中需要执行读改写操作时,根据第四缓存所存储的有效数据字节对齐信息触发读通道中命令生成模块生成一个或多个读命令,表示为过程(3.15),读通道将一个或多个读命令发送给存储器控制器,表示为过程(3.16);存储器控制器将一个或多个读命令发送给存储器,表示为过程(3.17);然后存储器根据每个读命令反馈响应数据,表示为过程(3.18),存储器控制器将该响应数据发送给加速器,写通道将该响应数据存储在第八缓存,表示为过程(3.19)。打包模块在对数据进行打包过程中,除了从第七缓存中获取有效数据或者拼接后的数据以及从第五缓存中获取协议信息之外,还需要从第八缓存获取响应数据,表示为过程(3.20),然后打包模块将获取有效数据或者拼接后的数据与响应数据进行组合得到组合数据,并根据组合数据与协议信息生成所述数据,将所述数据发送给存储器控制器,以及存储器控制器将所述数据发送给存储器,即执行过程(3.12)和过程(3.13)。
图3A展示了本申请实施例所提供的一种对多个L2P表条目的有效数据进行拼接的示意图。
作为举例,在图3A中,第六缓存的大小为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,对于这种情况在此不做赘述。
图3B展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图。
作为举例,在图3B中,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比特。
图3C展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图。
作为举例,在图3C中,L2P表条目120与L2P表条目121所对应的存储器中的存储单元部分相同,例如,L2P表条目120的部分有效数据存储在存储器的一存储单元中,而L2P表条目120的另一部分有效数据与L2P表条目121的有效数据存储在存储器的另一存储单元,例如,L2P表条目120的有效数据中前Q个比特存储在上一存储单元中,M-Q个比特与L2P表条目121的有效数据存储在存储器的同一存储单元中,其中,1≤Q≤M。在此情况下,合并单元在对L2P表条目120的有效数据以及L2P表条目121的有效数据进行拼接时得到两份拼接后的数据,其中,一份拼接后的数据存储在第六缓存的存储单元1中,其为L2P表条目120的有效数据中前Q比特,另一份拼接后的有效数据存储在第六缓存的存储单元2中,其为L2P表条目120的后M-Q个比特有效数据与L2P表条目121的有效数据进行拼接后的数据。
图3D展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图。
作为举例,在图3D中,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的有效数据之后,在第六缓存中需要将L2P表条目120的有效数据放置于L2P表条目121的有效数据之前,而在存储单元1中L2P表条目121的有效数据之前的空闲/无效比特位为M-Q个比特,而L2P表条目120的有效数据大小为M比特,故L2P表条目120的有效数据中前Q个比特无法被存储到第六缓存中,合并单元会将L2P表条目120的有效数据中后M-Q个比特与L2P表条目121的有效数据进行拼接得到一份拼接后的数据,并在第六缓存得到一份拼接后的数据,该拼接后的数据大小为2M-Q个比特,在存储单元1中的位置为第0比特到2M-Q-1比特。
可选地,对于L2P表条目120的有效数据中前Q个比特,在将存储单元1中的拼接后的数据搬移到第七缓存后,清空存储单元1,并用清楚的存储单元1来容纳L2P表条目120的有效数据中前Q个比特。
图3E展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图。
作为举例,在图3E中,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,则合并单元从第二缓存中提取出L2P表条目121的有效数据之后将该数据存储在存储单元1中,合并单元在提取出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的有效数据。
图3F展示了本申请实施例所提供的另一种对多个L2P表条目的有效数据进行拼接的示意图。
作为举例,在图3F中,L2P表条目120与L2P表条目121大小均为64比特,有效数据的大小均为M比特,其中,1≤M≤64。L2P表条目120与L2P表条目121所对应的存储器中的存储单元不相同,L2P表条目120与L2P表条目121在L2P表中不相邻。若加速器先于L2P表条目121收到L2P表条目120,则合并单元从第二缓存中提取出L2P表条目120的有效数据之后将该数据存储在存储单元1,例如,从存储单元中第L比特开始存储L2P表条目120的有效数据,其中,0≤L≤63-M。由于在L2P表中L2P表条目121同L2P表条目120不相邻,合并单元在提取出L2P表条目121的有效数据之后,L2P表条目121的有效数据无法被存储到第六缓存中,合并单元不会将L2P表条目120的有效数据与L2P表条目121的有效数据进行拼接,而是将L2P表条目120的有效数据存储在第六缓存中,并将第六缓存中的L2P表条目120的有效数据传输给第七缓存。接下来合并单元再将L2P表条目121的有效数据存储在第六缓存中,并将第六缓存中的L2P表条目121的有效数据传输给第七缓存。
进一步,加速器中写通道的逻辑电路将L2P表条目的有效数据或者一份/多份拼接后的数据存储到第六缓存之后,还需要将L2P表条目的有效数据或者一份/多份拼接后的数据存储到存储器中。上文已经说过,由于加速器和从设备(如存储器控制器)之间通过总线进行传输数据,所以所传输的数据需要满足总线协议,例如,所传输的L2P表条目的有效数据字节对齐或者8字节对齐等。当所传输的L2P表条目的有效数据非字节对齐或者L2P表条目的有效数据中第一比特不位于其对应的存储单元的起始位置,则需要执行读改写操作。为了便于理解,下面结合上述图3A~图3B的场景对读改写操作过程进行简要介绍。
对于图3A所示的场景,作为举例,若L2P表条目120与L2P表条目121的有效数据大小M不是字节的整数倍,如,M=30,则L2P表条目120与L2P表条目121的有效数据非字节对齐,需要执行读改写操作。此时,写通道中命令生成模块根据L2P表条目120与L2P表条目121所对应的存储器中存储单元的地址生成一个读命令,并将该读命令发送给存储器,存储器根据该读命令将L2P表条目120与L2P表条目121所对应的存储器中存储单元数据(响应数据)发送给逻辑电路,逻辑电路将第六缓存的存储单元1中的拼接后的数据与响应数据组合得到组合后的数据(参见图4A),将组合后的数据发送给从设备(如存储器控制器)。又作为举例,若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中的数据存储到存储器中。对于图3E所示的场景,在第六缓存中也缓存一份拼接后的数据,其具体过程与图3A类似,在此不做赘述。
对于图3B所示的场景,作为举例,在第六缓存中存储两份拼接后的数据,存储单元1中拼接后的数据和存储单元2中拼接后的数据至少一份拼接后的数据非字节对齐或有效数据的第一比特不位于其所对应的存储单元的起始位置,则会对非字节对齐的有效数据或有效数据的第一比特不位于其所对应的存储单元的起始位置的有效数据执行读改写操作,具体读改写操作与上述类似,在此不做赘述。若第六缓存中,存储单元1中拼接后的数据和存储单元2中拼接后的数据均字节对齐,且有效数据的第一比特均位于其所对应的存储单元的起始位置,则不会执行读改写操作。将存储单元1和存储单元2的整体搬移到第七缓存,然后逻辑电路将对应存储单元1和存储单元2的整体数据发送给从设备(存储器控制器),具体参见图4B。对于图3C所示的场景,在第六缓存中也缓存两份拼接后的数据,其具体过程与图3B类似,在此不做赘述。
作为举例,对于图3D所示的场景,将L2P表条目120和L2P表条目121的有效数据存储到第六缓存时,由于L2P表条目121的有效数据中前Q个比特无法与L2P表条目120的有效数据一起存储到第六缓存,合并单元会将L2P表条目120的有效数据中后M-Q个比特与L2P表条目121的有效数据进行拼接得到一份拼接后的数据,并在第六缓存得到一份拼接后的数据,该拼接后的数据大小为2M-Q个比特,在存储单元1中的位置为第0比特到2M-Q-1比特。合并单元还将第六缓存所存储的一份拼接后的数据发送给第七缓存,第七缓存将该拼接后的数据发送给逻辑电路,以使得逻辑电路将该拼接后的数据发送给从设备。
合并单元还将L2P表条目120的有效数据中前Q个比特存储到第六缓存,此时,合并单元可检查第二缓存中是否有新的L2P表条目,以及新的条目能否与第六缓存中的L2P表条目120的有效数据中前Q个比特进行拼接。拼接的方式同前面已经描述的多种情形类似,在此不再赘述。若不能拼接,将第六缓存中L2P表条目120的有效数据中前Q个比特发送给第七缓存。
另外,将该拼接后的数据或者将L2P表条目120的有效数据中前Q个比特写入存储器的过程是否需要执行读改写操作与上述图3A所示的场景类似,在此不做赘述。
作为举例,对于图3F所示的场景,由于合并单元不会将L2P表条目120的有效数据与L2P表条目121的有效数据进行拼接,而是将L2P表条目120的有效数据存储在第六缓存中,并将第六缓存中的L2P表条目120的有效数据传输给第七缓存。合并单元再将L2P表条目121的有效数据存储在第六缓存中,并将第六缓存中的L2P表条目121的有效数据传输给第七缓存。
另外,将L2P表条目120的有效数据或者将L2P表条目121的有效数据写入存储器的过程是否需要执行读改写操作与上述图3A所示的场景类似,在此不做赘述。
进一步,作为举例,从所述第二缓存中获取所述L2P表条目的有效数据,并存储于所述第六缓存中;从所述第二缓存中删除所述L2P表条目的数据。
又作为举例,响应于将第七缓存中的L2P表条目的有效数据或一个或多拼接后的数据与所述第八缓存中的响应数据的部分组合得到第一数据,并根据所述第五缓存中的协议信息与所述第一数据生成第二数据,并将所述第二数据发送给所述存储器,从所述第三缓存将所述一个或多个存储器地址以及所述有效数据的第一比特在存储器中的位置删除、或从所述第六缓存将所述L2P表条目的有效数据删除。
又作为举例,响应于确定出所述存储器中存储所述L2P表条目的有效数据的一个或多个存储器地址以及所述有效数据的第一比特在存储器中的位置,从所述第一缓存删除该写命令的地址索引。
又作为举例,响应于所述读通道根据所述一个或多个存储器地址生成一个或多个读命令,在所述第三缓存、所述第四缓存或所述第五缓存中缓存所述读命令的标识信息,以使得所述逻辑电路在接收到基于每个读命令所反馈的响应数据时,根据所述标识信息确定出与响应数据组合的L2P表条目的有效数据。
需要说明的是,为了简明的目的,本申请将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本申请的方案并不受所描述的动作的顺序限制。因此,依据本申请的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本申请所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本申请某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本申请对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本申请某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本申请的公开和教导,本领域技术人员可以理解本申请所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个***,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种加速器,用于耦合主设备与存储器,并加速将所述主设备所发送的写命令指示的L2P表条目的有效数据存储到所述存储器的L2P表中,其特征在于,包括:写通道和读通道,其中,所述写通道包括逻辑电路和多个缓存;
所述逻辑电路响应于收到主设备所发送的写命令,从所述写命令中获取地址索引和其指示的L2P表条目的数据,将所述地址索引以及所述L2P表条目的数据存储到缓存中;根据所述地址索引以及所述L2P表条目的有效数据位数确定出所述存储器中存储所述L2P表条目的有效数据的一个或多个存储器地址、所述有效数据的第一比特在存储器中的位置;
所述读通道响应于所述有效数据字节对齐且所述第一比特不位于存储器中其对应的存储单元的起始位置或非字节对齐,根据所述一个或多个存储器地址生成一个或多个读命令,并将所述一个或多个读命令发送给所述存储器;
所述逻辑电路响应于接收到来自所述存储器基于每个读命令所反馈的响应数据,根据第一比特在存储器中的位置将所述有效数据与所述响应数据中的部分数据组合得到第一数据;根据缓存中所存储的协议信息以及所述第一数据生成第二数据,将所述第二数据发送给所述存储器;
其中,所述存储器包括多个对齐的存储单元,每个存储单元用于存储L2P表的多个条目的有效数据;所述L2P表的多个条目的有效数据在所述存储器中无需按字节边界对齐方式存储。
2.根据权利要求1所述的加速器,其特征在于,响应于所述有效数据字节对齐,且所述第一比特位于其对应的存储单元的起始位置,所述逻辑电路根据所述L2P表条目的数据以及所述协议信息生成第三数据,根据所述存储器地址将所述第三数据发送给所述存储器。
3.根据权利要求1或2所述的加速器,其特征在于,所述逻辑电路响应于接收到第一写命令所指示的第一L2P表条目的数据,缓存所述第一L2P表条目的数据中提取出第一有效数据,响应于接收到第二写命令所指示的第二L2P表条目的数据,缓存所述第二L2P表条目的数据中提取出第二有效数据;若所述第一L2P表条目与所述第二L2P表条目在所述L2P表中相邻,则将所述第一有效数据和所述第二有效数据拼接得到拼接后的数据;
响应于得到一份拼接后的数据,所述拼接后的数据字节对齐,且所述拼接后的数据中第一比特位于其对应的存储单元的起始位置,根据所述拼接后的数据与所述协议信息生成第四数据,根据所述第一有效数据所对应的存储器地址将所述第四数据发送给所述存储器。
4.根据权利要求3所述的加速器,其特征在于,响应于得到一份拼接后的数据,所述拼接后的数据非字节对齐或所述拼接后的数据中第一比特不位于其对应的存储单元的起始位置,且所述第一有效数据与所述第二有效数据所对应的存储器地址相同,所述读通道根据所述第一有效数据或所述第二有效数据所对应的存储器地址生成第一读命令;
所述逻辑电路响应于接收到来自所述存储器基于第一读命令所反馈的第一响应数据,将所述拼接后的数据与所述第一响应数据中部分数据组合得到第一数据;根据缓存中所存储的协议信息以及所述第一数据生成第二数据,将所述第二数据发送给所述存储器。
5.根据权利要求3所述的加速器,其特征在于,响应于得到第一拼接后的数据和第二拼接后的数据两份拼接后的数据,所述第一拼接后的数据和第二拼接后的数据均非字节对齐,所述读通道根据所述第一有效数据和所述第二有效数据所对应的存储器地址生成第二读命令和第三读命令;
所述逻辑电路响应于接收到来自所述存储器基于第二读命令所反馈的第二响应数据,将所述第一拼接后的数据与所述第二响应数据中部分数据组合得到第七数据;以及响应于接收到来自所述存储器基于第三读命令所反馈的第三响应数据,将所述第二拼接后的数据与所述第三响应数据中部分数据组合得到第八数据;根据所述协议信息以及所述第七数据生成第九数据以及根据所述协议信息以及所述第八数据生成第十数据,将所述第九数据和所述第十数据发送给所述存储器。
6.根据权利要求5所述的加速器,其特征在于,响应于所述第一拼接后的数据和第二拼接后的数据中至少一个数据字节对齐,且其第一比特位于对应的存储单元的起始位置,则所述读通道根据非字节对齐的数据所对应的存储器地址生成第四读命令;所述逻辑电路响应于接收到来自所述存储器基于第四读命令所反馈的第四响应数据,将非字节对齐的数据与所述第四响应数据中部分数据组合得到第十一数据;根据所述协议信息以及所述第十一数据生成第十二数据以及根据所述协议信息和字节对齐的数据生成第十三数据,将所述第十二数据和所述第十三数据发送给所述存储器。
7.根据权利要求1-6任一项所述的加速器,其特征在于,所述逻辑电路,包括:解析模块、计算模块以及打包模块;其中,
所述解析模块,响应于接收到所述写命令,解析所述写命令得到其所指示地址索引和L2P表条目的数据,并将所述地址索引缓存到所述多个缓存的第一缓存中以及将所述L2P表条目的数据缓存在所述多个缓存中的第二缓存中;
所述计算模块,与所述第一缓存耦合,根据所述地址索引以及有效数据位数确定出所述存储器中存储所述L2P表条目的有效数据的一个或多个存储器地址、所述有效数据的第一比特在存储器中的位置;将所述一个或多个存储器地址以及所述有效数据的第一比特在存储器中的位置存储于所述多个缓存中的第三缓存中;
所述打包模块,与所述第二缓存、所述第三缓存以及缓存有效数据字节对齐信息的第四缓存耦合,响应于所述有效数据非字节对齐,接收到来自所述存储器基于每个读命令所反馈的响应数据,将所述有效数据与所述响应数据中的部分数据组合得到第一数据;根据缓存中所存储的协议信息以及所述第一数据生成第二数据,将所述第二数据发送给所述存储器。
8.根据权利要求7所述的加速器,其特征在于,所述逻辑电路还包括合并单元;所述合并单元从所述第一L2P表条目的数据中提取出第一有效数据以及从所述第二L2P表条目的数据中提取出第二有效数据;根据所述有效数据的第一比特在存储器中的位置将所述第一有效数据和所述第二有效数据按照特定大小进行拼接得到一份或多份拼接后的数据。
9.根据权利要求1-8任一项所述的加速器,其特征在于,所述多个缓存,包括:第一缓存、第二缓存、第三缓存、第四缓存、第五缓存、第六缓存、第七缓存以及第八缓存;其中,所述第五缓存用于缓存所述协议信息;所述第六缓存与所述第二缓存耦合,缓存写命令所指示的L2P表条目的有效数据;所述第七缓存与所述第六缓存耦合,用于缓存所述L2P表条目的有效数据;所述第八缓存与所述逻辑电路耦合,用于缓存所述读通道发送的读命令的响应数据。
10.根据权利要求9所述的加速器,其特征在于,其中,所述逻辑电路响应于从写命令中获得地址索引和L2P表条目的数据,将地址索引存储于所述第一缓存中以及将所述L2P表条目的数据缓存于所述第二缓存中;以及根据所述地址索引以及所述有效数据位数确定出所述存储器中存储所述L2P表条目的有效数据的一个或多个存储器地址、所述有效数据的第一比特在存储器中的位置,将所述一个或多个存储器地址以及所述有效数据的第一比特在存储器中的位置存储于所述第三缓存中;
响应于将所述L2P表条目的数据缓存于所述第二缓存中,从所述第二缓存中获取所述L2P表条目的有效数据,并存储于所述第六缓存中;
响应于在所述第六缓存中存储一个所述L2P表条目的有效数据,将所述L2P表条目的有效数据搬移到所述第七缓存;或者响应于在所述第六缓存中存储一份或两份拼接后的数据,将一份或两份拼接后的数据搬移到所述第七缓存;
响应于从存储器中获取所述读通道发送的读命令的响应数据,将所述响应数据存储于所述第八缓存中;
用第七缓存中的L2P表条目的有效数据或一个或多拼接后的数据与所述第八缓存中的响应数据的部分组合得到第一数据,并根据所述第五缓存中的协议信息与所述第一数据生成第二数据,并将所述第二数据发送给所述存储器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210348808.3A CN114840447B (zh) | 2022-04-01 | 2022-04-01 | 一种加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210348808.3A CN114840447B (zh) | 2022-04-01 | 2022-04-01 | 一种加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114840447A CN114840447A (zh) | 2022-08-02 |
CN114840447B true CN114840447B (zh) | 2024-06-04 |
Family
ID=82563688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210348808.3A Active CN114840447B (zh) | 2022-04-01 | 2022-04-01 | 一种加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114840447B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419675A (zh) * | 2021-06-11 | 2021-09-21 | 联芸科技(杭州)有限公司 | 用于存储器的写操作方法及读操作方法 |
CN214376421U (zh) * | 2020-12-30 | 2021-10-08 | 成都忆芯科技有限公司 | Ftl加速器及控制部件 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12019558B2 (en) * | 2020-12-15 | 2024-06-25 | Intel Corporation | Logical to physical address indirection table in a persistent memory in a solid state drive |
US20210223979A1 (en) * | 2021-03-16 | 2021-07-22 | Intel Corporation | On-ssd-copy techniques using copy-on-write |
-
2022
- 2022-04-01 CN CN202210348808.3A patent/CN114840447B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN214376421U (zh) * | 2020-12-30 | 2021-10-08 | 成都忆芯科技有限公司 | Ftl加速器及控制部件 |
CN113419675A (zh) * | 2021-06-11 | 2021-09-21 | 联芸科技(杭州)有限公司 | 用于存储器的写操作方法及读操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114840447A (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9734085B2 (en) | DMA transmission method and system thereof | |
US9395921B2 (en) | Writing data using DMA by specifying a buffer address and a flash memory address | |
US9176673B2 (en) | Memory device | |
US8990462B2 (en) | Storage device, computing system including the same and data transferring method thereof | |
CN110895446A (zh) | 存储设备以及*** | |
US11010056B2 (en) | Data operating method, device, and system | |
JP5836903B2 (ja) | 情報処理装置 | |
KR20140035776A (ko) | 임베디드 멀티미디어 카드, 이를 제어하는 호스트, 및 이들의 동작 방법 | |
CN109164976B (zh) | 利用写缓存优化存储设备性能 | |
KR20200025184A (ko) | 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법 | |
CN113032293A (zh) | 缓存管理器及控制部件 | |
CN110275757A (zh) | 利用***抽象层提供多协议存储设备 | |
CN113485643B (zh) | 用于数据存取的方法及数据写入的控制器 | |
CN113468083B (zh) | 一种双端口NVMe控制器及控制方法 | |
CN115048034A (zh) | 用于sgl的存储空间映射方法及其装置 | |
CN114840447B (zh) | 一种加速器 | |
CN114253461A (zh) | 混合通道存储设备 | |
CN114253462A (zh) | 提供混合通道存储设备的方法 | |
CN214376421U (zh) | Ftl加速器及控制部件 | |
CN112148626A (zh) | 压缩数据的存储方法及其存储设备 | |
CN213338708U (zh) | 一种控制部件及存储设备 | |
CN116955228A (zh) | 一种处理写命令的加速器 | |
CN117009259A (zh) | 一种l2p加速器 | |
CN113031849A (zh) | 直接内存存取单元及控制部件 | |
CN116860664A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |