CN117234423A - 加速单元、存储控制芯片、固态硬盘和读写请求处理方法 - Google Patents

加速单元、存储控制芯片、固态硬盘和读写请求处理方法 Download PDF

Info

Publication number
CN117234423A
CN117234423A CN202311224903.3A CN202311224903A CN117234423A CN 117234423 A CN117234423 A CN 117234423A CN 202311224903 A CN202311224903 A CN 202311224903A CN 117234423 A CN117234423 A CN 117234423A
Authority
CN
China
Prior art keywords
read
write request
write
request
address
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
CN202311224903.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.)
Pingtouge Shanghai Semiconductor Co Ltd
Original Assignee
Pingtouge Shanghai Semiconductor 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 Pingtouge Shanghai Semiconductor Co Ltd filed Critical Pingtouge Shanghai Semiconductor Co Ltd
Priority to CN202311224903.3A priority Critical patent/CN117234423A/zh
Publication of CN117234423A publication Critical patent/CN117234423A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请实施例提供了一种加速单元、存储控制芯片、固态硬盘和读写请求处理方法,该加速单元包括:接收子单元,用于接收主机下发的第一读写请求;检测子单元,用于检测第一读写请求与第二读写请求和第三读写请求的读写地址是否存在重叠,第二读写请求为在第一读写请求之前接收且未被软件处理的读写请求,第三读写请求为在第一读写请求之前接收且被软件处理中的读写请求;输出子单元,用于在第一读写请求与第二读写请求和第三读写请求的读写地址均不存在重叠时,将第一读写请求发送给软件进行处理,由软件根据第一读写请求对NAND闪存进行读操作或写操作。本方案能够使不存在地址重叠的读写请求得到及时处理。

Description

加速单元、存储控制芯片、固态硬盘和读写请求处理方法
技术领域
本申请实施例涉及芯片技术领域,尤其涉及一种加速单元、存储控制芯片、固态硬盘和读写请求处理方法。
背景技术
NAND闪存是一种非易失性随机访问存储介质,通过晶体管来锁存电荷,使得信息在无电源供应的情况下仍然可以保持。固态硬盘(Solid State Disk或Solid StateDrive,SSD)包括存储控制器和多个NAND闪存,主机可以向存储控制器读写请求,以通过存储控制器对NAND闪存进行读写操作。
目前,由于主机会随机下发读写不同位置的读写请求,会出现读请求的读取地址与写请求的写入地址相同的情况,为了保证数据一致性,需要保序的执行主机下发的读写请求,即按照主机下发读写请求的顺序,SSD依次执行读写请求。
然而,虽然依次执行主机下发的读请请求可以解决数据一致性的问题,但与其他读写请求的读写地址不同的读写请求不能得到及时处理。
发明内容
有鉴于此,本申请实施例提供一种加速单元、存储控制芯片、固态硬盘和读写请求处理方法,以至少解决或缓解上述问题。
根据本申请实施例的第一方面,提供了一种加速单元,应用于固态硬盘中的存储控制芯片,所述加速单元包括:接收子单元,用于接收主机下发的第一读写请求;检测子单元,用于检测所述第一读写请求与第二读写请求和第三读写请求的读写地址是否存在重叠,所述第二读写请求为在所述第一读写请求之前接收且未被软件处理的读写请求,所述第三读写请求为在所述第一读写请求之前接收且被软件处理中的读写请求;输出子单元,用于在所述第一读写请求与所述第二读写请求和所述第三读写请求的读写地址均不存在重叠时,将所述第一读写请求发送给软件进行处理,由软件根据所述第一读写请求对NAND闪存进行读操作或写操作。
根据本申请实施例的第二方面,提供了一种存储控制芯片,包括:处理单元和上述第一方面所述的加速单元;所述处理单元,用于通过软件接收所述加速单元发送的读写请求,并根据所述读写请求对NAND闪存进行读操作或写操作。
根据本申请实施例的第三方面,提供了一种固态硬盘,包括:上述第二方面所述的存储控制芯片和至少一个NAND闪存。
根据本申请实施例的第四方面,提供了一种读写请求处理方法,应用于存储控制芯片中的加速单元,所述方法包括:接收主机下发的第一读写请求;检测所述第一读写请求与第二读写请求和第三读写请求的读写地址是否存在重叠,所述第二读写请求为在所述第一读写请求之前接收且未被软件处理的读写请求,所述第三读写请求为在所述第一读写请求之前接收且被软件处理中的读写请求;在所述第一读写请求与所述第二读写请求和所述第三读写请求的读写地址均不存在重叠时,将所述第一读写请求发送给软件进行处理,由软件根据所述第一读写请求对NAND闪存进行读操作或写操作。
根据本申请实施例提供的读写请求处理方案,接收子单元接收到第一读写请求后,检测子单元检测是否存在与第一读写请求存在地址重叠的第二读写请求和第三读写请求,如果第一读写请求与第二读写请求和第三读写请求均不存在地址重叠,输出子单元将第一读写请求发送给软件进行处理,如果存在与第一读写请求存在地址重叠的第二读写请求或第三读写请求,则等待与第一读写请求存在地址重叠的第二读写请求和第三读写请求执行完成后,再将第一读写请求发送给软件进行处理,从而可以在保证数据一致性的前提下,提前处理不存在地址重叠的读写请求,减少由于地址重叠对SSD性能的影响。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例的固态硬盘的示意性框图;
图2是本申请一个实施例的主机读写固态硬盘的示意图;
图3是本申请另一个实施例的主机读写固态硬盘的示意图;
图4是本申请一个实施例的读写请求执行顺序的示意图;
图5是本申请一个实施例的存储控制芯片的示意性框图;
图6是本申请另一个实施例的存储控制芯片的示意性框图;
图7是本申请一个实施例的加速单元的示意性框图;
图8是本申请一个实施例的第一列表和第二列表的示意图;
图9是本申请另一个实施例的加速单元的示意性框图;
图10是本申请一个实施例的读写请求处理方法的流程图。
具体实施方式
以下基于实施例对本申请进行描述,但是本申请并不仅仅限于这些实施例。在下文对本申请的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本申请。为了避免混淆本申请的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
首先,对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释。
与非型闪存:与非型闪存(NAND flash memory)又被称为NAND闪存,是一种非易失闪存。NAND闪存利用穿隧注入写入及穿隧释放擦除,地址线和数据线复用。
固态硬盘:固态硬盘(Solid State Disk或Solid State Drive,SSD)又被称为固态驱动器,是用固态电子存储芯片阵列制成的硬盘。本申请实施例中的固态硬盘是指由NAND闪存芯片组成的固态硬盘。
存储控制芯片:存储控制芯片即为SDD控制器,也被称为主控芯片或主控,是固态硬盘的关键组件之一,由执行代码的嵌入式处理器与若干硬件加速模块组成。
加速单元:针对传统处理器在一些专门用途的领域(例如数据读取等)效率不高的情况,为了提高在这些专门用途领域中的数据处理速度而设计的处理单元,在本申请实施例中主要是为了提高从NAND闪存读取数据的速度而设计的专门处理单元。
读写请求:读写请求是指主机发送给固态硬盘的读请求或写请求,读请求用于读取固态硬盘中存储的数据,写请求用于存储到数据到固态硬盘。
读写地址:读写地址与读写请求相对应,当读写请求为读请求时读写地址为读地址,当读写请求为写请求时读写地址为写地址。读地址为读取固态硬盘时所要读取的逻辑地址,写地址为向固态硬盘中存储数据时存储数据的逻辑地址。
地址重叠:地址重叠(overlap)是指读请求所要读取的逻辑地址,与写请求所要写入的逻辑地址存在至少部分区域重叠。
本申请的应用环境
本申请实施例提出了一种提高NAND闪存读写性能的读写请求处理方案。真个读写请求处理方案相对较为通用,可以用于包括固态硬盘的各种硬件设备,比如,用于数据中心、服务器、个人计算机、物联网(Internet of Things,IoT)设备、嵌入式设备等。数据读取方案与执行该方案的计算装置部署的硬件无关。
固态硬盘
图1示出一个固态硬盘100的示意性框图。固态硬盘(Solid State Disk或SolidState Drive,SSD)又称为固态驱动器,是用固态电子存储芯片阵列制成的硬盘。根据存储介质的不同,固态硬盘可以分为基于闪存(flash)的固态硬盘和基于动态随机存取存储器(Dynamic Random Access Memory,DRAM)的固态硬盘。本申请实施例中的固态硬盘100是指基于NAND闪存的固态硬盘。本申请实施例中的固态硬盘100可以是分区命名空间(zonednamespace,ZNS)固态硬盘。
固态硬盘相对于传统的机械硬盘有诸多优势,比如对于存储数据具有更强的安全性。例如,在使用过程中晃动固态硬盘也无需担心损坏存储的数据,在使用过程中突然断电也不会造成固态硬盘中的数据丢失。基于此,固态硬盘广泛应用于各种复杂的工作环境,比如高可用的服务器,同时固态硬盘也是个人用户理想的存储设备。
本申请实施例中的固态硬盘100是指ZNS固态硬盘。如图1所示,固态硬盘100包括存储控制芯片10和多个NAND闪存20。作为一种示例,如图1所示,固态硬盘100包括3个NAND闪存20,但应当理解,NAND闪存20的数量不应以此为限。NAND闪存20的数据以比特(bit)的形式存储在存储单元(memory cell)中,一个存储单元可以存储一个bit,多个存储单元构成比特行(bit line),比特行即为NAND闪存的位宽。多个比特行可以组成闪存页(page),多个闪存页组成闪存块(block)。NAND闪存20以闪存页为单位进行数据读写,而以闪存块为单位进行数据擦除。
存储控制芯片10用于控制固态硬盘100的读写操作。存储控制芯片10在向NAND闪存20中存储数据时,从NAND闪存20中确定用于存储数据的一个或多个闪存页,然后按顺序将数据写入闪存页包括的存储单元。存储控制芯片10从NAND闪存20中读取数据时,从NAND闪存20中确定所需读取数据所在的闪存页,然后从所确定出的闪存页中读取所需数据。
主机200上部署有一个或多个应用程序201,作为一种示例,如图1所示,主机200上部署有应用程序1、应用程序2和应用程序3,但应当理解,应用程序201的数量不应以此为限。应用程序201可以向存储控制芯片10发送写命令或读命令,写命令携带了用于存储数据的闪存页的地址信息,读命令携带了存储有待读取数据的闪存页的地址信息。存储控制芯片10在接收到写命令后,根据写命令携带的地址信息,将待存储数据写入相应的一个或多个闪存页中,并向应用程序201发送用于指示数据存储成功的指示信息。存储控制芯片10在接收到读命令后,根据读命令携带的地址信息,从相应的一个或多个闪存页中读取所需数据,并将读取到的数据发送给相应的应用程序201。
主机200可以是个人计算机(PC)或服务器等具有读写操作功能的设备,本申请对主机200的类型不作限定。固态硬盘100可以通过外围组件快速互联(PeripheralComponent Interconnect Express,PCIE)接口与主机200连接,主机200与存储控制芯片10通过PCIE接口传输数据。
固态硬盘100内部将存储空间按照逻辑区块地址(Logical Block Address,LBA)划分,主机200下发的读写请求通过LBA来寻找固态硬盘100的存储空间。图2示出了一种主机200读写固态硬盘100的示意图。如图2所示,主机200下发写请求LBA=0对固态硬盘100的逻辑地址LBA=0进行写操作,主机200下发读请求LBA=1对固态硬盘100的逻辑地址LBA=1进行读操作,主机200下发写请求LBA=n+3对固态硬盘100的逻辑地址LBA=n+3进行写操作。主机200通过LBA读写不同的数据,不同的读写请求对应不同的LBA时,不同的读写请求之间就不会存在影响,此时对处理读写请求的顺序没有强制要求。
实际情况下主机200会随机下发读写不同位置的读写请求,这样就可能出现读请求所要读取的地址与写请求所要写入的地址相同,为了保证数据一致性,固态硬盘100需要保序执行接收到的读请求和写请求,即固态硬盘100按照接收读写请求的顺序,依次处理接收到的读请求和写请求。图3示出了另一种主机200读写固态硬盘100的示意图。如图3所示,写请求LBA=0和读请求LBA=0读写同一地址,这时候就需要按照主机200下发写请求LBA=0和读请求LBA=0的顺序,处理写请求LBA=0和读请求LBA=0。一个写请求可以向多个LBA写入数据,比如写请求LBA=2&3对LBA=2和LBA=3两个逻辑地址进行写入,读请求LBA=3对逻辑地址LBA=3进行读取,此时写请求LBA=2&3和读请求LBA=3存在部分读写地址重叠。一个读请求也可以对多个LBA进行读取,写请求对一个LBA进行写入,此时也会出现读请求和写请求存在部分读写地址重叠的情况。
由于不同读写请求存在地址重叠(overlap)的情况,为了保证数据一致性,相关技术为读写命令保序执行。图4示出了一种读写请求执行顺序的示意图。如图4所示,固态硬盘100依次接收到主机200下发的写请求LBA=0、读请求LBA=0、读请求LBA=3、写请求LBA=2&3和读请求LBA=1,根据接收读写请求的顺序将接收到的读写请求放入队列,然后按序从队列中取出读写请求进行处理。
SSD保序执行接收到的读写请求可以解决数据一致性问题,但不存在地址重叠的读写请求不能得到及时处理。如图4所示,读请求LBA=1所要读取的地址,与LBA=0、读请求LBA=0、读请求LBA=3和写请求LBA=2&3的读写地址均不相同,但要排到最后一个处理,显然这不是较优的处理方法。
为了解决SSD数据一致性的问题,同时解决不存在地址重叠的读写请求的排队处理问题,存储控制芯片10在接收到主机200下发的读写请求后,检测该读写请求与前序接收到的未处理读写请求和处理中读写请求是否存在地址重叠,如果该读写请求与前序接收到的未处理读写请求和处理中读写请求均不存在地址重叠,则将该读写请求发送给软件进行处理,如果该读写请求与前序接收到的未处理读写请求或处理中读写请求存在地址重叠,则等待与该读写请求存在地址重叠的前序读写请求处理完毕后,再将该读写请求发送给软件进行处理。从而在保证数据一致性的前提下,对于不存在地址重叠的读写请求可以优先处理,提高SSD处理读写请求的合理性。
本申请实施例主要着眼于存储控制芯片10处理读写命令的过程,在后文中会对存储控制芯片10的结构及进行读写命令处理的过程进行详细描述。
存储控制芯片
图5是本申请一个实施例的存储控制芯片的示意性框图。如图5所示,存储控制芯片10包括加速单元110和处理单元120。
加速单元110在接收到主机200下发的读写请求后,检测该读写请求的读写地址,是否与前序接收到的未处理读写请求和处理中读写请求的读写地址存在重叠,如果该读写请求与前序接收到的未处理读写请求和处理中读写请求均不存在地址重叠,则将该读写请求发送给处理单元120,如果该读写请求与前序接收到的未处理读写请求或处理中读写请求存在地址重叠,则等待与该读写请求存在地址重叠的前序读写请求处理完毕后,再将该读写请求发送给处理单元120。
处理单元120可以通过软件接收加速单元110发送的读写请求,并根据读写请求对NAND闪存进行读写操作。如果接收到加速单元110发送的读请求,处理单元120根据该读请求对NAND闪存进行读操作,如果接收到加速单元110发送的写请求,处理单元120根据该写请求对NAND闪存进行写操作。
加速单元110与处理单元120可以通过片上总线进行通信。处理单元120在接收到加速单元110发送的读写请求后,通过软件或软硬件结合的方式,对接收到的读写请求进行处理。读写请求携带主机200所要读写的逻辑地址(LBA),因此处理单元120可以根据读写请求对NAND闪存中与逻辑地址相映射的物理地址进行读写。
在确定出多个与前序接收到的未处理读写请求、及处理中读写请求均不存在地址重叠的读写请求后,加速单元110按照主机200下发读写请求的顺序,按序将这些与前序接收到的未处理读写请求、及处理中读写请求均不存在地址重叠的读写请求发送给处理单元120。
在本申请实施例中,加速单元110接收主机200下发的读写请求,并检测接收到的读写请求与前序接收到的未处理读写请求和处理中读写请求是否存在地址重叠,如果接收到的读写请求与前序接收到的未处理读写请求和处理中读写请求均不存在地址重叠,则将该读写请求发送给处理单元120进行处理,无需等待前序存在地址重叠的读写请求执行完毕后再发送给处理单元120进行处理,使得不存在地址重叠的读写请求能够及时被处理。如果接收到的读写请求与前序接收到的未处理读写请求或读写中读写请求存在地址重叠,则等待与该读写请求存在地址重叠的前序读写请求执行完毕后,加速单元110再将该读写请求发送给处理单元120进行处理,保证数据一致性。因此,可以在保证SSD读写一致性的前提下,使得不存在地址重叠的读写请求能够被及时执行。
在一种可能的实现方式中,加速单元110在将读写请求发送给处理单元120后,可以将该读写请求的读写地址存储到第二列表中。处理单元120通过软件对接收到的读写请求进行处理,在处理完成后向加速单元110发送释放指令。加速单元110在接收到针对某一读写请求的释放指令后,将第二列表中该读写指令的读写地址清空。
在本申请实施例中,加速单元110将发送给处理单元120的读写请求的读写地址存储到第二列表,处理单元120通过软件完成读写请求的处理后,向加速单元110发送释放指令,加速单元110根据释放指令将第二列表中相应读写请求的读写地址清空,即第二列表记录了处理中读写请求的读写地址,加速单元110根据第二列表,可以确定还未发送给处理单元120的读写请求是否与处理中读写请求存在地址重叠,保证处理单元120保序处理存在地址重叠的读写请求,进而保证SSD的数据一致性。
图6是本申请另一个存储控制芯片的示意性框图。如图6所示,处理单元120包括解析子单元121、映射子单元122和发送子单元123。
解析子单元121可以通过软件接收加速单元110发送的读写请求,并对接收到的读写请求进行解析,获得读写请求所要读写的逻辑地址,进而将获得的逻辑地址发送给映射子单元122。映射子单元122可以通过软件将接收到的逻辑地址映射为物理地址,并将映射出的物理地址发送给发送子单元123。发送子单元123可以根据接收到的物理地址,通过软件生成与NAND闪存20相匹配的读写命令,并将生成的读写命令发送给NAND闪存20,以对NAND闪存20进行读操作或写操作。
读写命令携带所要读写的逻辑地址,即写命令携带用于存储数据的逻辑地址,读命令携带所要读取数据的逻辑地址。解析子单元121通过软件接收到加速单元110发送的读写请求后,可以对读写请求进行解析,获得读写请求携带的逻辑地址。比如,如图4所示,解析子单元121通过对读请求LBA=1进行解析,可以获得逻辑地址LBA=1,即读请求LBA=1要对逻辑地址LBA=1内存储的数据进行读取,解析子单元121通过对写请求LBA=2&3进行解析,可以获得逻辑地址LBA=2&3,即写请求LBA=2&3要向逻辑地址LBA=2和逻辑地址LBA=2内存储数据。
解析子单元121可以是处理单元120构建的前端模块(Front End,FE),FE可以基于非易失性内存扩展(Non-Volatile Memory Express,NVME)协议对读写请求进行解析,并进行数据传输。
映射子单元122在接收到解析子单元121发送的逻辑地址后,可以访问LBA索引与NAND闪存20物理位置的全局映射表,将接收到的逻辑地址映射为NAND闪存20的物理地址,并将映射出的物理地址发送给发送子单元123。
映射子单元122可以是处理单元120构建的闪存转换层(Flash TranslationLayer,FTL),FTL是一种软件中间层或者软硬件结合层,FTL是存储介质(NAND闪存)与存储控制芯片10之间的连接关系,FTL可以将主机200的逻辑地址转换为NAND闪存20的物理地址。FTL在进行地址转换的同时,可以控制NAND闪存20上各闪存块(block)的擦写次数进行管理,还可以对NAND闪存20上的无用数据进行管理。
发送子单元123在接收到映射子单元122发送的物理地址后,根据NAND闪存20的类型组织命令格式,生成包括所接收到的物理地址的读写命令,并将所生成的读写命令发送给NAND闪存20,以对NAND闪存20进行读写操作。应理解,如果解析子单元121接收到的是写请求,则发送子单元123生成相应的写命令,如果解析子单元121接收到的是读请求,则发送子单元123生成相应的读命令。
发送子单元123可以是处理单元120构建的用于命令下发的软件给你模块,比如发送子单元123可以是后端模块(Back End,BE)。
在本申请实施例中,解析子单元121从读写请求中解析出逻辑地址后,映射子单元122将逻辑地址映射为物理地址,发送子单元123向NAND闪存20发送读写命令,由于逻辑地址与物理地址的映射关系、及读写命令的下发路径具有高可变性,通过软件或软硬件结合的方式实现解析子单元121、映射子单元122和发送子单元123,可以方便地对地址映射和下发路径进行配置,以适用不同类型的NAND闪存,保证存储控制芯片10具有较强的适用性。
本申请实施例提供的存储控制芯片,通过加速单元110检测读写请求是否存在地址重叠,不存在地址重叠的读写请求无需等待前序存在地址重叠的读写请求执行完毕后再执行,使得不存在地址重叠的读写请求可以提前处理,减少地址重叠带来的影响,从而可以提升SSD的性能。下面对加速蒂娜元的内部结构和工作过程进行说明。
加速单元
图7是本申请一个实施例的加速单元的示意性框图。如图7所示,加速单元110包括接收子单元111、检测子单元112和输出子单元113。
接收子单元111可以接收主机200下发的第一读写请求,第一读请求可以是读请求或写请求。
接收子单元111接收到第一读写请求后,检测子单元112可以检测是否存在与第一读写请求存在地址重叠的前序读写请求。与第一读写请求存在地址重叠的前序读写请求,可以是主机200在第一读写请求之前下发且还未被处理的读写请求,也可以是正在被软件处理中的读写请求,将在第一读写请求之前接收到且未被软件处理的读写请求定义为第二读写请求,并将在第一读写请求之前接收且正在被软件处理中的读写请求定义为第三读写请求。第二读写请求和第三读写请求的数量并不确定,第二读写请求的数量可以是一个或多个,第三读写请求的数量也可以是一个或多个,第二读写请求和第三读写请求还可以不存在。
检测子单元112在接收到第一读写请求后,可以对第一读写请求和读写地址和第二读写请求的读写地址进行比较,以确定第一读写请求和第二读写请求是否存在地址重叠,还可以对第一读写请求的读写地址和第三读写请求的读写地址进行比较,以确定第一读写请求和第三读写请求是否存在地址重叠。如果第一读写请求与某一前序读写请求存在地址重叠,可以是第一读写请求与该前序读写请求的读写地址相同,比如图3中的写请求LBA=0和读请求LBA=0,还可以是第一读写请求的读写地址与该前序读写请求的读写地址部分重叠,比如图3中的写请求LBA=2&3和地请求LBA=3。
检测子单元112获得检测结果后,输出子单元113根据检测结果执行相应处理。如果第一读写请求与第二读写请求和第三读写请求均不存在地址重叠,输出子单元113将第一读写请求发送给软件进行处理,由软件根据第一读写请求对NAND闪存20进行读操作或写操作。如果第一读写请求与第二读写请求或第三读写请求存在地址重叠,输出子单元113不将第一读写请求发送给软件,等待与第一读写请求存在地址重叠的第二读写请求和第三读写请求执行完毕后,再将第一读写请求发送给软件进行处理。
在本申请实施例中,接收子单元111接收到第一读写请求后,检测子单元112检测是否存在与第一读写请求存在地址重叠的第二读写请求和第三读写请求,如果第一读写请求与第二读写请求和第三读写请求均不存在地址重叠,输出子单元113将第一读写请求发送给软件进行处理,如果存在与第一读写请求存在地址重叠的第二读写请求或第三读写请求,则等待与第一读写请求存在地址重叠的第二读写请求和第三读写请求执行完成后,再将第一读写请求发送给软件进行处理,从而可以在保证数据一致性的前提下,提前处理不存在地址重叠的读写请求,减少由于地址重叠对SSD性能的影响。
在一种可能的实现方式中,接收子单元111在接收到第一读写请求后,可以将第一读写请求存储到预先创建的第一列表中,第一列表中的读写请求按照接收顺序存储。检测子单元112在检测是否存在与第一读写请求地址重叠的第二读写请求时,可以检测第一列表中位于第一读写请求之前的第二读写请求,与第一读写请求的读写地址是否存在重叠。
接收子单元111按照接收读写请求的数据,将接收到的读写请求存储到第一列表中,即第一列表中读写请求按接收顺序排列。图8是本申请一个实施例的第一列表和第二列表的示意图。如图8所示,第一列表中依次存储有写请求LBA=0、读请求LBA=0、读请求LBA=3、写请求LBA=2&3和读请求LBA=1,即写请求LBA=0在读请求LBA=0之前接收,读请求LBA=0在读请求LBA=3之前接收,读请求LBA=3在写请求LBA=2&3之前接收,写请求LBA=2&3在读请求LBA=1之前接收。
接收子单元111将第一读写请求存储到第一列表中后,第一列表中位于第一读写请求之前的读写请求,即为针对该第一读写请求的第二读写请求,从而检测子单元112可以检测第一列表中位于第一读写请求之前的读写请求,与第一读写请求的读写地址是否存在重叠,从而确定是否存在与第一读写请求地址重叠的第二读写请求。比如,如图8所示,在将写请求LBA=2&3存储到第一列表后,检测子单元112分别检测写请求LBA=0、读请求LBA=0和读请求LBA=3的读写地址是否与写请求LBA=2&3的读写地址存在重叠,由于读请求LBA=3和写请求LBA=2&3的读写地址均包括LBA=3,所以读请求LBA=3和写请求LBA=2&3存在地址重叠,即与写请求LBA=2&3存在地址重叠的第二读写请求存在。
在本申请实施例中,接收子单元111按照读写请求的接收顺序,将读写请求存储到第一列表中,所以第一列表中位于第一读写请求之前的读写请求,即为针对该第一读写请求的第二读写请求,检测子单元112检测第一列表中位于该第一读写请求之前的读写请求,是否与该第一读写请求存在地址重叠,以确定是否存在与第一读写请求地址重叠的第二请求,保证能够准确检测出与第一读写请求存在地址重叠的第二读写请求,从而保证数据一致性。
在一种可能的实现方式中,输出子单元113将读写请求发送给软件进行处理后,会将该读写请求的读写地址存储到第二列表中,即第二列表记录了正在被软件处理中的读写请求。检测子单元112可以将第一读写请求的读写地址,与第二列表中记录的读写地址进行比较,以确定是否存在与第一读写请求地址重叠的第三读写请求。
如图8所示,第二列表包括4个字段,字段Valid表示相应行数据是否有效,字段SLBA表示起始读写地址,字段ELBA表示终止读写地址,字段OLID表示读写请求的标识。字段Valid为0表示第二列表中该行数据无效,字段Valid为1表示第二列表中该行数有效。字段SLBA用于记录读写请求的起始读写地址,字段ELBA用于记录读写请求的终止读写地址。不同的读写请求对应不同的OLID。
比如,在将写请求LBA=0发送给软件进行处理后,在第二列表的第一行记录写请求LBA=0的读写地址,将第二列表第一行的字段Valid设置为1,在第二列表第一行的字段SLBA记录写请求LBA=0的起始写地址0,在第二列表第一行的字段ELBA记录写请求LBA=0的终止写地址0,并在第二列表第一行的字段OLID记录写请求LBA=0的标识0。在将写请求LBA=2&3发送给软件进行处理后,在第二列表的第三行记录写请求LBA=2&3的读写地址,将第二列表第三行的字段Valid设置为1,在第二列表第三行的字段SLBA记录写请求LBA=2&3的起始写地址2,在第二列表第三行的字段ELBA记录写请求LBA=2&3的终止写地址3,并在第二列表第三行的字段OLID记录写请求LBA=2&3的标识2。
在本申请实施例中,第二列表用于存储处于被软件处理中的读写请求的读写地址,即第二列表中存储着第三读写请求的读写地址,检测子单元112将第一读写请求与的读写地址与第二列表中记录的读写地址进行比较,以确定是否存在与第一读写请求地址重叠的第三读写请求,保证能够准备检测出与第一读写请求存在地址重叠的第三读写请求,从而保证数据一致性。
图9是本申请另一个实施例的加速单元的示意性框图。如图9所示,加速单元110除了包括接收子单元111、检测子单元112和输出子单元113外,还包括维护子单元114。
输出子单元113在检测到第一读写请求与第二读写请求和第三读写请求的读写地址均不存在重叠,且第二列表中存在空位时,将第一读写请求发送给软件进行处理,并将第一读写请求的读写地址存储到第二列表中的空位。软件处理完第一读写请求后,会向维护子单元114发送释放指令,维护子单元114在接收到释放指令后,会将第二列表中第一读写请求的读写地址清空。
由于第二列表的存储空间有限,当软件处理读写请求的速度较慢时,可能会导致第二列表被填满,为了避免还未处理完的读写请求的读写地址被覆盖,而导致数据一致性被破坏的情况出现,输出子单元113需要检测第二列表是否存在空位,在第二列表存在空位时再向软件发送读写请求,并将发送给软件的读写请求的读写地址记录在第二列表的空位。
如图8所示,字段Valid可以指示第二列表中相应行是否被占用,字段Valid为1表示该行被占用,字段Valid为0表示该行未被占用。如果第二列表存在对应字段Valid为0的行,则输出子单元113可以向软件发送读写请求,并将发送给软件的读写请求的读写地址记录到对应字段Valid为0的行。如果第二列表不存在对应字段Valid为0的行,则输出子单元113暂不会像软件发送读写请求,等待第二列表存在对应字段Valid为0的行后再向软件发送读写请求。
软件对读写请求处理完成后,会向维护子单元114发送释放指令,释放指令包括处理完成的读写请求的标识。维护子单元114在接收到释放指令后,可以根据释放指令将相对应读写请求的读写地址从第二列表中情况。比如,如图8所示,软件处理完成写请求LBA=2&3后,软件向维护子单元114发送包括请求标识OLID=2的释放指令,维护子单元114在接收到该释放指令后,根据该释放指令包括的请求标识OLID=2,将第二列表中对应字段OLID为2的一行数据清除,即将第二列表中的第3行数据清除,使得第二列表中第3行的各字段均为0,即使第二列表中第3行成为空位,可用于存储新的读写地址。
在本申请实施例中,软件处理完读写请求后会向维护子单元114发送释放指令,维护子单元114根据释放指令将第二列表中相对应读写请求的读写地址清空,输出子单元113在第二列表中存在空位时,才会向软件发送读写请求,并将发送给软件的读写请求的读写地址存储到第二列表的空位中,保证处于处理中的读写请求的读写地址被记录在第二列表中,从而保证检测子单元112根据第二列表,可以准确地检测到与第一读写请求存在地址重叠的第三读写请求,进而保证对SSD进行读写操作的数据一致性。
在一种可能的实现方式中,在维护子单元114将第二列表中第一读写请求的读写地址清空后,检测子单元112可以检测第一列表中是否存在与第一读写请求存在地址重叠的第四读写请求。如果第一列表中存在第四读写请求,检测子单元112检测第一列表中位于该第四读写请求之前的读写请求,与该第四读写请求的读写地址是否存在重叠。如果检测子单元112确定第一列表中位于第四读写请求之前的读写请求,均与该第四读写请求不存在地址重叠,输出子单元113将该第四读写请求发送给软件处理,由软件根据该第四读写请求对NAND闪存20进行读操作或写操作。如果检测子单元112确定第一列表中位于第四读写请求之前的至少一个读写请求,与该第四读写请求存在地址重叠,输出子单元113暂不会将该第四读写请求发送给软件。
维护子单元114会将一个读写请求的读写地址从第二列表中清除后,说明该读写请求已被软件处理完成,此时如果第一列表中有与该读写请求存在地址重叠的其他读写请求,则第一列表中与该读写请求存在地址重叠的其他读写请求的数据一致性,将不再受该读写请求的影响。所以在将一个读写请求的读写地址从第二列表中清除后,从第一列表中确定与该读写请求存在地址重叠的第四读写请求,如果第四读写请求存在,第四读写请求的数据一致性将不再受该读写请求的影响。应理解,针对某一读写请求,该读写请求对应的第四读写请求可以是一个或多个。
在确定出第四读写请求后,虽然第四读写请求的数据一致性不再受软件处理中的读写请求的影响,但未被软件处理的前序读写请求仍可能与第四读写请求存在地址重叠,所以还需要检测第一列表中位于第四读写请求之前的读写请求,是否与第四读写请求存在地址重叠。如果第一列表中位于第四读写请求之前的读写请求,与该第四读写请求均不存在地址重叠,则可以将该第四读写请求发送给软件进行处理。如果第一列表中位于第四读写请求之前的至少一个读写请求,与该第四读写请求存在地址重叠,则需要等在与该第四读写请求存在地址重叠的前序读写请求均处理完成后,再将该第四读写请求发送给软件进行处理。
在本申请实施例中,维护子单元114将一个读写请求的读写地址从第二列表中删除后,检测子单元112从第一列表中确定与该读写请求存在地址重叠的第四读写请求,如果第四读写请求存在,则进一步检测第一列表中该第四读写请求之前的读写请求,与该第四读写请求是否存在地址重叠,如果不存在则将该第四读写请求发送给软件进行处理,如果存在则暂不将该第四读写请求发送给软件进行处理,从而可以在保证读写SSD过程中数据一致性的前提下,使读写请求能够尽快被处理,提高SSD的读写效率。
在一种可能的实现方式中,检测子单元112可以根据读写请求是否存在地址重叠,为第一列表中存储的读写请求设置标识,以便输出子单元113根据读写请求的标识,确定需要将哪些读写请求发送给软件进行处理。如果第一列表中某一读写请求与被软件处理中的读写请求的读写地址不存在重叠,且该读写请求与第一列表中该读写请求之前的读写请求的读写地址也不存在重叠,则为该读写请求设置第一标识。如果第一列表中某一读写请求与被软件处理中的读写请求的读写地址存在重叠,或者该读写请求与第一列表中该读写请求之前的读写请求的读写地址存在重叠,则为该读写请求设置第二标识。
检测子单元112可以根据第二列表记录的读写地址,确定第一列表中的读写请求是否与被软件处理中的读写请求存在地址重叠。
如图8所示,写请求LBA=0与被软件处理中的读写请求不存在地址重叠,且在写请求LBA=0之前没有与其存在地址重叠的读请求,检测子单元112在第一列表中为写请求LBA=0设置第一标识0。读请求LBA=0与被软件处理中的读写请求不存在地址重叠,但在读请求LBA=0之前的写请求LBA=0与读请求LBA=0存在地址重叠,检测子单元112在第一列表中为读请求LBA=0设置第二标识1。
需要说明的是,为了说明第二列表记录的内容,在图8中,第二列表记录的是将写请求LBA=0、读请求LBA=3、写请求LBA=2&3和读请求LBA=1的读写地址,这与实际情况并不相符,实际在将读写请求发送给软件后,会将该读写请求从第一列表中移除。另外,读请求LBA=3和写请求LBA=2&3存在地址重叠,实际处理过程中不会将存在地址重叠的多个读写请求发给软件,即被软件处理过程中的多个读写请求之间不存在地址重叠。
第一标识为0且第二标识为1仅是本申请实施例的一个示例,本申请不对第一标识和第二标识的具体内容进行限定,仅需保证第一标识与第二标识不同即可。
输出子单元113可以根据第一列表中读写请求的标识,将被设置第一标识的读写请求发送给软件进行处理。第一列表中被设置第一标识的读写请求可以是一个或多个,如果第一列表中被设置第一标识的读写请求有多个,输出子单元113可以按照接收子单元111接收读写请求的顺序,依次将被设置第一标识的读写请求发送给软件,先被发送给软件的读写请求先被接收子单元111接收到。
维护子单元114从第二列表删除已处理完成的读写请求的读写地址后,检测子单元112可以对第一列表中读写请求的标识进行更新。对于第一列表中与已处理完成读写请求存在地址重叠的读写请求(即第四读写请求),检测子单元112会检测第一列表中该读写请求之前的读写请求,是否与该读写请求存在地址重叠,如果不存在则将该读写请求的第二标识更新为第一标识,如果存在则不对该读写请求的标识进行更新,使该读写请求的标识仍为第二标识。
在本申请实施例中,检测子单元112根据第一列表中读写请求是否存在地址重叠,为不存在地址重叠的读写请求设置第一标识,并为不存在地址重叠读写请求设置第二标识,输出子单元113将第一列表中被设置第一标识的读写请求发送给软件进行处理,保证输出子单元113能够快速、准确地确定不存在地址重叠读写请求,以将及时将不存在地址重叠的读写请求发送给软件进行处理,在保证读写SSD过程中数据一致性的前提下,提高对SSD进行读写的效率。
在一种可能的实现方式中,输出子单元113在将被设置第一标识的读写请求发送给软件处理时,从被设置第一标识的读写请求中确定读请求和写请求,并根据接收读写请求的顺序,分别向软件发送被设置第一标识的读请求和写请求。
在一个例子中,检测子单元112为第一列表中的读请求1、读请求2、读请求3、写请求1和写请求2设置第一标识,其中,读请求1在读请求2之前被接收子单元111接收,读请求2在读请求3之前被接收子单元111接收,写请求1在写请求2之前被接收子单元111接收。输出子单元113按照读请求1、读请求2和读请求3的顺序依次将3个读请求发送给软件,在向软件发送读请求的同时,输出子单元113按照写请求1、写请求2的顺序依次将2个写请求发送给软件。
在本申请实施例中,相对于对SSD写入速度的需求,主机200对从SSD读取数据的速度有更高的要求,输出子单元113将读请求和写请求分开发送给软件,在保证数据一致性的前提下,使读请求能够及时地被处理,从而可以降低读请求处理的时延。
读写请求处理方法
图10是本申请一个实施例的读写请求处理方法的流程图,该读写请求处理方法可由上述任一实施例中的加速单元110执行。如图10所示,该读写请求处理方法可以包括如下步骤:
步骤1001、接收主机下发的第一读写请求;
步骤1002、检测第一读写请求与第二读写请求和第三读写请求的读写地址是否存在重叠,第二读写请求为在第一读写请求之前接收且未被软件处理的读写请求,第三读写请求为在第一读写请求之前接收且被软件处理中的读写请求;
步骤1003、在第一读写请求与第二读写请求和第三读写请求的读写地址均不存在重叠时,将第一读写请求发送给软件进行处理,由软件根据第一读写请求对NAND闪存进行读操作或写操作。
在本申请实施例中,接收到第一读写请求后,检测是否存在与第一读写请求存在地址重叠的第二读写请求和第三读写请求,如果第一读写请求与第二读写请求和第三读写请求均不存在地址重叠,将第一读写请求发送给软件进行处理,如果存在与第一读写请求存在地址重叠的第二读写请求或第三读写请求,则等待与第一读写请求存在地址重叠的第二读写请求和第三读写请求执行完成后,再将第一读写请求发送给软件进行处理,从而可以在保证数据一致性的前提下,提前处理不存在地址重叠的读写请求,减少由于地址重叠对SSD性能的影响。
由于对读写请求的处理过程,已经在上述存储控制芯片实施例和加速单元实施例中结合结构示意图进行了详细说明,具体过程可参见前述存储控制芯片实施例和加速单元实施例中的描述,在此不再进行赘述。
本申请实施例的商业价值
在本申请实施例中,接收到读写请求后,如果读写请求与前序未处理读写请求和被软件处理中的读写请求均不存在地址重叠,则可以将该读写请求发送给软件进行处理,而无需等待前序存在地址重叠的读写请求执行完毕后再发送给软件进行处理,使得不存在地址重叠的读写请求能够及时被处理,减少地址重叠带来的影响。将读请求和写请求分开输出,可以降低读请求的处理时延。上述过程通过硬件加速单元实现,不需要软件处理,减少SSD中处理单元的消耗。综上,减少了地址重叠带来的影响,降低了读请求的处理时延,并减少对SSD中处理单元的消耗,提高了存储控制芯片、固态硬盘产品的竞争力。
需要说明的是,本申请实施例所涉及到的与用户有关的信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于对模型进行训练的样本数据、用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述的比较简单,相关之处参见其他实施例的部分说明即可。
应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。

Claims (12)

1.一种加速单元,应用于固态硬盘中的存储控制芯片,所述加速单元包括:
接收子单元,用于接收主机下发的第一读写请求;
检测子单元,用于检测所述第一读写请求与第二读写请求和第三读写请求的读写地址是否存在重叠,所述第二读写请求为在所述第一读写请求之前接收且未被软件处理的读写请求,所述第三读写请求为在所述第一读写请求之前接收且被软件处理中的读写请求;
输出子单元,用于在所述第一读写请求与所述第二读写请求和所述第三读写请求的读写地址均不存在重叠时,将所述第一读写请求发送给软件进行处理,由软件根据所述第一读写请求对NAND闪存进行读操作或写操作。
2.根据权利要求1所述的加速单元,其中,
所述接收子单元,用于在接收到所述第一读写请求后,将所述第一读写请求存储到第一列表中,所述第一列表中的读写请求按接收顺序存储;
所述检测子单元,用于检测所述第一列表中位于所述第一读写请求之前的第二读写请求,与所述第一读写请求的读写地址是否存在重叠。
3.根据权利要求2所述的加速单元,其中,
所述检测子单元,用于将所述第一读写请求的读写地址与第二列表中记录的读写地址进行比较,以确定所述第一读写请求与所述第三读写请求的读写地址是否存在重叠,所述第二列表用于存储所述第三读写请求的读写地址。
4.根据权利要求3所述的加速单元,还包括:维护子单元;
所述输出子单元,用于在所述第一读写请求与所述第二读写请求和所述第三读写请求的读写地址均不存在重叠,且所述第二列表中存在空位时,将所述第一读写请求发送给软件进行处理,并将所述第一读写请求的读写地址存储到所述第二列表中的空位;
所述维护子单元,用于接收软件处理所述第一读写请求完成后发送的释放指令,根据所述释放指令将所述第二列表中所述第一读写请求的读写地址清空。
5.根据权利要求4所述的加速单元,其中,
所述检测子单元,用于在所述维护子单元将所述第二列表中所述第一读写请求的读写地址清空后,从所述第一列表中确定第四读写请求,所述第四读写请求与所述第一读写请求的读写地址存在重叠,并检测所述第一列表中位于所述第四读写请求之前的读写请求,与所述第四读写请求的读写地址是否存在重叠;
所述输出子单元,用于在所述检测子单元确定所述第一列表中位于所述第四读写请求之前的读写请求,与所述第四读写请求的读写地址是不存在重叠时,将所述第四读写请求发送给软件进行处理,由软件根据所述第四读写请求对NAND闪存进行读操作或写操作。
6.根据权利要求2所述的加速单元,其中,
所述检测子单元,用于为所述第一列表中读写请求设置第一标识或第二标识,被设置所述第一标识的读写请求与被软件处理中的读写请求的读写地址不存在重叠,且与所述第一列表中位于该读写请求之前的读写请求的读写地址不存在重叠,被设置所述第二标识的读写请求与被软件处理中的读写请求的读写地址存在重叠,和/或与所述第一列表中位于该读写请求之前的读写请求的读写地址存在重叠;
所述输出子单元,用于将被设置所述第一标识的读写请求发送给软件进行处理。
7.根据权利要求6所述的加速单元,其中,
所述输出子单元,用于从被设置所述第一标识的读写请求中确定读请求和写请求,并根据接收读写请求的顺序,分别向软件发送被设置所述第一标识的读请求和写请求。
8.一种存储控制芯片,包括:处理单元和权利要求1-7中任一所述的加速单元;
所述处理单元,用于通过软件接收所述加速单元发送的读写请求,并根据所述读写请求对NAND闪存进行读操作或写操作。
9.根据权利要求8所述的存储控制芯片,其中,
所述处理单元,用于在通过软件完成读写请求的处理后,向所述加速单元发送释放指令,以使所述加速单元根据所述释放指令将第二列表中相应读写请求的读写地址清空,所述第二列表用于存储被所述处理单元处理中的读写请求的读写地址。
10.根据权利要求8或9所述的存储控制芯片,其中,所述处理单元包括:
解析子单元,用于通过软件接收所述加速单元发送的读写请求,并对所述读写请求进行解析,获得所述读写请求所要读写的逻辑地址;
映射子单元,用于通过软件将所述读写请求所要读写的逻辑地址映射为NAND闪存的物理地址;
发送子单元,用于根据所述物理地址,通过软件生成与所述NAND闪存相匹配的读写命令,并将所述读写命令发送给所述NAND闪存,以对所述NAND闪存进行读操作或写操作。
11.一种固态硬盘,包括:权利要求8-10中任一所述的存储控制芯片和至少一个NAND闪存。
12.一种读写请求处理方法,应用于存储控制芯片中的加速单元,所述方法包括:
接收主机下发的第一读写请求;
检测所述第一读写请求与第二读写请求和第三读写请求的读写地址是否存在重叠,所述第二读写请求为在所述第一读写请求之前接收且未被软件处理的读写请求,所述第三读写请求为在所述第一读写请求之前接收且被软件处理中的读写请求;
在所述第一读写请求与所述第二读写请求和所述第三读写请求的读写地址均不存在重叠时,将所述第一读写请求发送给软件进行处理,由软件根据所述第一读写请求对NAND闪存进行读操作或写操作。
CN202311224903.3A 2023-09-20 2023-09-20 加速单元、存储控制芯片、固态硬盘和读写请求处理方法 Pending CN117234423A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311224903.3A CN117234423A (zh) 2023-09-20 2023-09-20 加速单元、存储控制芯片、固态硬盘和读写请求处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311224903.3A CN117234423A (zh) 2023-09-20 2023-09-20 加速单元、存储控制芯片、固态硬盘和读写请求处理方法

Publications (1)

Publication Number Publication Date
CN117234423A true CN117234423A (zh) 2023-12-15

Family

ID=89089163

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311224903.3A Pending CN117234423A (zh) 2023-09-20 2023-09-20 加速单元、存储控制芯片、固态硬盘和读写请求处理方法

Country Status (1)

Country Link
CN (1) CN117234423A (zh)

Similar Documents

Publication Publication Date Title
US8144515B2 (en) Interleaved flash storage system and method
TWI692690B (zh) 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
US11630766B2 (en) Memory system and operating method thereof
US11249897B2 (en) Data storage device and operating method thereof
CN108572798B (zh) 针对快速数据传输执行监听操作的存储装置及其方法
CN105808163A (zh) 一种访问叠瓦式磁记录smr硬盘的方法及服务器
US20240143219A1 (en) Software-hardware combination method for internal mapping address query of zoned namespace
US12008270B2 (en) System, device, and method for memory interface including reconfigurable channel
CN117270771A (zh) 加速单元、存储控制芯片、固态硬盘和数据读取方法
KR102620727B1 (ko) 전자 장치
CN108628761B (zh) 原子命令执行方法与装置
US11461238B2 (en) Storage device, memory controller, and method for fetching write commands from submission queues to perform full page writes
KR20190091035A (ko) 메모리 시스템 및 그것의 동작 방법
US10180788B2 (en) Data storage device having internal tagging capabilities
TWI749279B (zh) 資料儲存裝置與資料處理方法
KR20210060867A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN117234423A (zh) 加速单元、存储控制芯片、固态硬盘和读写请求处理方法
TWI697778B (zh) 資料儲存裝置與資料處理方法
US10698786B2 (en) Memory system using SRAM with flag information to identify unmapped addresses
CN114579484A (zh) 数据存储装置及其操作方法
CN109213424B (zh) 并发io命令的无锁处理方法
KR20210018570A (ko) 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치
US20240012564A1 (en) Memory controller and storage device including the same
US20240111422A1 (en) Method of optimizing quality of service (qos) in solid-state drives (ssds) and an ssd thereof
US11112976B2 (en) Data storage device that stores multiple values corresponding to multiple keys in a page

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