CN117270771A - 加速单元、存储控制芯片、固态硬盘和数据读取方法 - Google Patents
加速单元、存储控制芯片、固态硬盘和数据读取方法 Download PDFInfo
- Publication number
- CN117270771A CN117270771A CN202311212312.4A CN202311212312A CN117270771A CN 117270771 A CN117270771 A CN 117270771A CN 202311212312 A CN202311212312 A CN 202311212312A CN 117270771 A CN117270771 A CN 117270771A
- Authority
- CN
- China
- Prior art keywords
- read command
- flash memory
- nand flash
- data
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000001133 acceleration Effects 0.000 title claims abstract description 86
- 238000000034 method Methods 0.000 title claims abstract description 56
- 239000007787 solid Substances 0.000 title claims abstract description 50
- 230000015654 memory Effects 0.000 claims abstract description 236
- 238000012545 processing Methods 0.000 claims abstract description 101
- 238000004458 analytical method Methods 0.000 claims abstract description 9
- 230000008569 process Effects 0.000 description 41
- 230000003993 interaction Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 238000005192 partition Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 7
- 238000013507 mapping Methods 0.000 description 6
- 230000005856 abnormality Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000005641 tunneling Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请实施例提供了一种加速单元、存储控制芯片、固态硬盘和数据读取方法,该加速单元包括:解析子单元,用于接收主机下发的读命令,将对读命令进行解析获得的第一读命令信息发送给存储控制芯片包括的处理单元,以使处理单元通过程序向NAND闪存发送数据读取命令;读取子单元,用于在接收到处理单元通过程序发送的第二读命令信息后,根据NAND闪存的状态从NAND闪存读取目标数据;解码子单元,用于将目标数据发送给硬件解码单元,由硬件解码单元对目标数据进行解码;输出子单元,用于在硬件解码单元对目标数据解码成功后,将解码后的目标数据发送给主机。本方案能够降低从NAND闪存中读取数据的延时。
Description
技术领域
本申请实施例涉及芯片技术领域,尤其涉及一种加速单元、存储控制芯片、固态硬盘和数据读取方法。
背景技术
NAND闪存是一种非易失性随机访问存储介质,通过晶体管来锁存电荷,使得信息在无电源供应的情况下仍然可以保持。分区命名空间(zoned namespace,ZNS)固态硬盘是一种新形态的固态硬盘(Solid State Disk或Solid State Drive,SSD),ZNS固态硬盘包括存储控制器和多个NAND闪存,主机可以通过存储控制器从NAND闪存中读取数据。
目前,在从NAND闪存中读取数据时,存储控制器接收读命令后,对读命令进行解析,根据命令解析结果向NAND闪存发送读取指令,从NAND闪存读取到数据后发送给解码单元进行解码,然后将解码后的数据发送给主机。
然而,存储控制器通过软件执行读命令解析、存储地址映射、发送读取指令、接收解析后数据等,其中涉及软硬件交互中的多个异步过程,而异步过程对存储控制器的计算资源消耗较大,在进行高带宽读取时会导致数据读取的延时较高。
发明内容
有鉴于此,本申请实施例提供一种加速单元、存储控制芯片、固态硬盘和数据读取方法,以至少解决或缓解上述问题。
根据本申请实施例的第一方面,提供了一种加速单元,应用于固态硬盘中的存储控制芯片,所述加速单元包括:解析子单元,用于接收主机下发的读命令,对所述读命令进行解析获得第一读命令信息,并将所述第一读命令信息发送给所述存储控制芯片包括的处理单元,以使所述处理单元通过程序向NAND闪存发送与所述第一读命令信息相对应的数据读取命令;读取子单元,用于在接收到所述处理单元通过程序发送的第二读命令信息后,根据所述NAND闪存的状态从所述NAND闪存读取目标数据,所述第二读命令信息由所述处理单元在向所述NAND闪存发送所述数据读取命令后发送;解码子单元,用于将所述目标数据发送给硬件解码单元,由所述硬件解码单元对所述目标数据进行解码;输出子单元,用于在所述硬件解码单元对所述目标数据解码成功后,将解码后的所述目标数据发送给所述主机。
根据本申请实施例的第二方面,提供了一种储控制芯片,包括:上述第一方面所述的加速单元、处理单元和硬件解码单元;所述处理单元,用于通过程序接收所述加速单元发送的第一读命令信息,根据所述第一读命令信息向NAND闪存发送相对应的数据读取命令,并在发送所述数据读取命令后向所述加速单元发送第二读命令信息,其中,所述第一读命令信息由所述加速单元对主机下发的读命令进行解析获得,所述第二读命令信息用于指示所述加速单元根据NAND闪存的状态,从所述NAND闪存中读取与所述读命令相对应的目标数据;所述硬件解码单元,用于对所述加速单元发送的目标数据进行解码,并在解码成功后将解码后的所述目标数据发送给所述加速单元。
根据本申请实施例的第三方面,提供了一种固态硬盘,包括:上述第二方面所述的存储控制芯片和至少一个NAND闪存。
根据本申请实施例的第四方面,提供了一种数据读取方法,应用于存储控制芯片中的加速单元,所述方法包括:接收主机下发的读命令,对所述读命令进行解析获得第一读命令信息,并将所述第一读命令信息发送给所述存储控制芯片包括的处理单元,以使所述处理单元通过程序向NAND闪存发送与所述第一读命令信息相对应的数据读取命令;在接收到所述处理单元通过程序发送的第二读命令信息后,根据所述NAND闪存的状态从所述NAND闪存读取目标数据,所述第二读命令信息由所述处理单元在向所述NAND闪存发送所述数据读取命令后发送;将所述目标数据发送给硬件解码单元,由所述硬件解码单元对所述目标数据进行解码;在所述硬件解码单元对所述目标数据解码成功后,将解码后的所述目标数据发送给所述主机。
根据本申请实施例提供的NAND闪存读取方案,从NAND闪存读取数据的过程中,加速单元负责对主机下发的读命令进行解析、向NAND闪存发送第一读命令信息、从NAND闪存读取目标数据、将目标数据发送给硬件解码单元、及将解码成功后的目标数据发送给主机,处理单元负责通过软件生成第一读命令信息,并将第一读命令信息发送给NAND闪存,硬件解码单元负责对目标数据进行解码,并将解码成功后的目标数据发送给硬件单元。在从NAND闪存读取数据的过程中,软硬件交互过程包括加速单元将第一读命令信息发送给处理单元、及处理单元将数据读取命令发送给NAND闪存,其余步骤为硬件之间的交互,减少了软件之间、及软硬件之间的交互次数,从而减少软件之间及软硬件之间交互过程中的一步流程,进而减少由于异步流程导致的延时和带宽损失。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例的固态硬盘的示意性框图;
图2是本申请一个实施例的存储控制芯片的示意性框图;
图3是本申请一个实施例的NAND闪存读取过程的示意图;
图4是本申请一个实施例的加速单元的示意性框图;
图5是本申请一个实施例的数据读取方法的流程图。
具体实施方式
以下基于实施例对本申请进行描述,但是本申请并不仅仅限于这些实施例。在下文对本申请的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本申请。为了避免混淆本申请的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
首先,对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释。
与非型闪存:与非型闪存(NAND flash memory)又被称为NAND闪存,是一种非易失闪存。NAND闪存利用穿隧注入写入及穿隧释放擦除,地址线和数据线复用。
固态硬盘:固态硬盘(Solid State Disk或Solid State Drive,SSD)又被称为固态驱动器,是用固态电子存储芯片阵列制成的硬盘。本申请实施例中的固态硬盘是指由NAND闪存芯片组成的固态硬盘。
分区命名空间固态硬盘:分区命名空间(zoned namespace,ZNS)固态硬盘是一种新形态的固态硬盘,其内部存储区域被划分为多个分区(zone),分区包括一个或多个存储单元。在向分区中写入数据时,写入的数据在分区内部是顺序摆放的,即分区需要按顺序写入,但分区可以随机读取。
存储控制芯片:存储控制芯片即为SDD控制器,也被称为主控芯片或主控,是固态硬盘的关键组件之一,由执行代码的嵌入式处理器与若干硬件加速模块组成。
加速单元:针对传统处理器在一些专门用途的领域(例如数据读取等)效率不高的情况,为了提高在这些专门用途领域中的数据处理速度而设计的处理单元,在本申请实施例中主要是为了提高从NAND闪存读取数据的速度而设计的专门处理单元。
本申请的应用环境
本申请实施例提出了一种提高NAND闪存读性能的数据读取方案。整个数据读取方案相对较为通用,可以用于包括ZNS固态硬盘的各种硬件设备,比如,用于数据中心、服务器、个人计算机、物联网(Internet of Things,IoT)设备、嵌入式设备等。数据读取方案与执行该方案的计算装置部署的硬件无关。
固态硬盘
图1示出一个固态硬盘100的示意性框图。固态硬盘(Solid State Disk或SolidState Drive,SSD)又称为固态驱动器,是用固态电子存储芯片阵列制成的硬盘。根据存储介质的不同,固态硬盘可以分为基于闪存(flash)的固态硬盘和基于动态随机存取存储器(Dynamic Random Access Memory,DRAM)的固态硬盘。本申请实施例中的固态硬盘100是指基于NAND闪存的固态硬盘。
固态硬盘相对于传统的机械硬盘有诸多优势,比如对于存储数据具有更强的安全性。例如,在使用过程中晃动固态硬盘也无需担心损坏存储的数据,在使用过程中突然断电也不会造成固态硬盘中的数据丢失。基于此,固态硬盘广泛应用于各种复杂的工作环境,比如高可用的服务器,同时固态硬盘也是个人用户理想的存储设备。
本申请实施例中的固态硬盘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接口传输数据。
存储控制芯片10在接收到主机200发送的读命令后,存储控制芯片10解析读命令开始的逻辑区块地址(Logical Block Address,LBA)和读取长度,通过LBA索引与NAND闪存20物理位置的全局映射表,获得所需读取数据在NAND闪存20中的物理地址,然后申请读命令所需资源(用于缓存读取过程中的相关信息,比如读取地址、读取内容、读取数据后缓存数据的地址、读命令来源等),并基于所需读取数据在NAND闪存20中的物理地址发起读物理地址命令,读取所需数据后对读取到的数据进行解码,解码成功后将解码后的数据发送给主机200,并释放读命令申请的资源。
为了使固态硬盘在较高IOPS(每秒进行读写操作的次数)下具有较低的读取延时,存储控制芯片10通过硬件加速单元对读命令进行解析,通过软件向NAND闪存20发送读物理地址命令后,通过硬件加速单元从NAND闪存20中读取数据,并通过硬件加速单元请求硬件解码模块对读取到的数据进行解码,在解码成功后通过硬件加速单元将解码后的数据发送给主机200。通过配置硬件加速单元,可以减小存储控制芯片10处理读命令过程中软件之间、及软硬件之间的交互次数,从而减少软件之间及软硬件之间交互过程中异步流程,进而减小由于异步流程导致的延时和带宽损失。
本申请实施例主要着眼于存储控制芯片10处理读命令的过程,在后文中会对存储控制芯片10的结构和进行读命令处理的过程进行详细描述。
存储控制芯片
图2是本申请一个实施例的存储控制芯片的示意性框图。如图2所示,存储控制芯片10包括加速单元110、处理单元120和硬件解码单元130;
加速单元110在接收到主机200发送的读命令后,通过对读命令进行解析获得第一读命令信息,并将第一读命令信息发送给处理单元120。处理单元120通过程序接收到第一读命令信息后,根据第一读命令信息向NAND闪存20发送相对应的数据读取命令,并在向NAND闪存20发送数据读取命令后,向加速单元110发送第二读命令信息。加速单元110在接收到第二读命令信息后,根据NAND闪存20的状态从NAND闪存20读取目标数据,并在读取到目标数据后,将目标数据发送给硬件解码单元130。硬件解码单元130在接收到目标数据后,对目标数据进行解码,并在解码成功后将解码后的目标数据发送给加速单元110。加速单元110在接收到解码后的目标数据后,将解码后的目标数据发送给主机200。
加速单元110通过对读命令进行解析可以获得第一读命令信息,处理单元120可以根据第一读命令信息生成适配于NAND闪存20的数据读取命令,处理单元120将数据读取命令发送给NAND闪存20后,NAND闪存20可以根据数据读取命令准备主机200所要读取的目标数据。处理单元120在向NAND闪存20发送数据读取命令后,还会向加速单元110发送第二读命令信息,加速单元110在接收到第二读命令信息后,根据第二读命令信息检测NAND闪存20的状态,以在NAND闪存20准备好准备后,从NAND闪存20读取目标数据。
由于NAND闪存20通过晶体管锁存电荷来存储数据,从NAND闪存20中读取到的数据可能会存在错误,为此在向NAND闪存20中存储数据时,会通过对待存储数据进行抑或运算、稀疏矩阵运算等,将运算结果作为冗余信息与待存储数据一起存储。从NAND闪存20中读取数据后,会将所需读取数据的冗余信息一起读取,硬件解码单元130可以对冗余信息进行解码,通过解码结果对所需读取数据进行纠码,以保证解码后数据的正确性。
在本申请实施例中,从NAND闪存20读取数据的过程中,加速单元110负责对主机200下发的读命令进行解析、向NAND闪存20发送第一读命令信息、从NAND闪存20读取目标数据、将目标数据发送给硬件解码单元130、及将解码成功后的目标数据发送给主机200,处理单元120负责通过软件生成第一读命令信息,并将第一读命令信息发送给NAND闪存20,硬件解码单元130负责对目标数据进行解码,并将解码成功后的目标数据发送给加速单元110。在从NAND闪存20读取数据的过程中,软硬件交互过程包括加速单元110将第一读命令信息发送给处理单元120、及处理单元120将数据读取命令发送给NAND闪存20,其余步骤为硬件之间的交互,减少了软件之间、及软硬件之间的交互次数,从而减少软件之间及软硬件之间交互过程中的一步流程,进而减少由于异步流程导致的延时和带宽损失。
图3是本申请一个实施例的NAND闪存读取过程的示意图。如图3所示,处理单元120包括读命令处理子单元121和读命令发送子单元122。读命令处理子单元121可以通过程序接收加速单元110发送的第一读命令信息,并根据第一读命令信息将读命令所要读取的逻辑地址映射为NAND闪存20的物理地址。读命令发送子单元122可以根据读命令处理子单元121映射出的物理地址,通过程序生成与NAND闪存20相匹配的数据读取命令,并将数据读取命令发送给NAND闪存20后,向加速单元110发送第二读命令信息。
读命令处理子单元121可以是处理单元120构建的闪存转换层(FlashTranslation Layer,FTL),FTL是一种软件中间层或者软硬件结合层,FTL是存储介质(NAND闪存)与存储控制芯片10之间的连接关系,FTL可以将主机200的逻辑地址转换为NAND闪存20的物理地址。FTL在进行地址转换的同时,可以控制NAND闪存20上各闪存块(block)的擦写次数进行管理,还可以对NAND闪存20上的无用数据进行管理。
加速单元110对读命令进行解析获得第一读命令信息,第一读命令信息包括主机200所要读取的逻辑地址。加速单元110将第一读命令信息发送给读命令处理子单元121后,读命令处理子单元121可以访问LBA索引与NAND闪存20物理位置的全局映射表,将第一读命令信息包括的逻辑地址映射为NAND闪存20的物理地址,并将映射出的物理地址发送给读命令发送子单元122。
读命令发送子单元122可以是处理单元120构建的用于命令下发的软件功能模块,比如读命令发送子单元122可以是后端模块(Back End,BE)。读命令发送子单元122在接收到读命令处理子单元121发送的物理地址后,根据NAND闪存20的类型组织读命令格式,生成包括所接收到物理地址的数据读取命令,并将所生成的数据读取命令发送给NAND闪存20,以使NAND闪存20根据数据读取命令准备主机200所要读取的目标数据。由于读命令发送子单元122不负责从NAND闪存20中读取数据,所以在将数据读取命令发送给NAND闪存20后,读命令发送子单元122需要向加速单元110发送第二读命令信息,以通知加速单元110去NAND闪存20中读取目标数据。
下面结合图3,对NAND闪存读取过程进行说明。NAND闪存读取过程可以包括如下步骤:
Step1、加速单元110接收主机下发的读命令,对读命令进行解析获得第一读命令信息,并申请一定的资源。
Step2、加速单元110将第一读命令信息发送给读命令处理子单元121。
Step3、读命令处理子单元121根据第一读命令信息,将主机200要读取的逻辑地址映射为NAND闪存20的物理地址,申请必要的资源,并将映射出的物理地址发送给读命令发送子单元122。
Step4、读命令发送子单元122根据接收到物理地址组织读命令格式,生成数据读取命令,并将数据读取命令发送给NAND闪存20。
Step5、读命令发送子单元122将第二读命令信息发送给加速单元110。
Step6、加速单元110接收到第二读命令信息后,根据NAND闪存20的状态,从NAND闪存20读取目标数据。
Step7、加速单元110向硬件解码单元130发送解码请求,以请求硬件解码单元130对目标数据进行解码。
Step8、加速单元110接收硬件解码单元130返回的解码后的目标数据。
Step9、如果硬件解码单元130对目标数据解码成功,即读命令执行成功,则将解码成功后的目标数据发送给主机200。
Step10、如果硬件解码单元130对目标数据解码失败,即读命令执行失败,则将失败的读命令返回给读命令处理子单元121,以进行重试。
在本申请实施例中,读命令处理子单元121用于将逻辑地址映射为物理地址,读命令发送子单元122用于向NAND闪存20发送数据读取命令,由于逻辑地址与物理地址的映射关系、及数据读取命令的下发路径具有高可变性,通过软件实现读命令处理子单元121和读命令发送子单元122,可以方便地对地址映射和下发路径进行配置,以适用不同类型的NAND闪存,使得存储控制芯片10能够在降低数据读取延迟的前提下,具有较强的适用性。
在一种可能的实现方式中,硬件解码单元130对目标数据解码失败后,即读命令执行失败时,加速单元110会向读命令处理子单元121发送读取失败信息。读命令处理子单元121在接收到读取失败信息后,可以向读命令发送子单元122发送调整指令,读命令发送子单元122可以根据调整指令调整数据读取命令包括的读取条件,并将调整后的数据读取命令发送给NAND闪存20,以重新从NAND闪存20中读取目标数据。
读命令发送子单元122向NAND闪存20发送调整后的数据读取命令后,会重新向加速单元110发送第二读命令信息,以通知加速单元110在NAND闪存20准备好数据后,从NAND闪存20中读取目标数据。如果再次从NAND闪存20中读取数据仍没有成功,则可以由处理单元120通过软件对读命令进行解析,并将解析结果发送给读命令处理子单元121,读命令处理子单元121根据该解析结果将主机200所要读取的逻辑地址映射为物理地址,并将映射出的物理地址发送给读命令发送子单元122,读命令发送子单元122根据接收到的物理地址生成数据读取命令发送给NAND闪存20。
NAND闪存20通过晶体管锁存电荷来存储数据,在对NAND闪存20进行读取时,读电压等读取条件会影响读取结果,即在不同的读取条件下读取出的数据可能不同,因此在解码目标数据失败后,可以调整数据读取命令包括的读取条件,以重新尝试读取正确的目标数据。
在本申请实施例中,对目标数据解码失败等原因导致读命令执行失败后,加速单元110向读命令处理子单元121发送读取失败信息,读命令处理子单元121基于读取失败信息向读命令发送子单元122发送调整指令,读命令发送子单元122可以根据调整指令对数据读取命令包括的读取条件进行调整,以尝试重新从NAND闪存20中读取正确的目标数据,提高了成功从NAND闪存20中读取数据的概率,保证了存储控制芯片10的健壮性。
本申请提供的存储控制芯片使用软硬件结合的方式,减少了软硬件交互的异步过程,将读命令的解析、状态数据返回等流程都固化到加速单元中,以满足对NAND闪存读取数据高带宽低延时的要求。下面对加速单元的内部结构和工作过程进行说明。
加速单元
图4是本申请一个实施例的加速单元的示意性框图。如图4所示,加速单元110包括解析子单元111、读取子单元112、解码子单元113和输出子单元114。
解析子单元111可以接收主机200下发的读命令,并对读命令进行解析获得第一读命令信息。在解析获得第一读命令信息后,解析子单元111可以将第一读命令信息发送给处理单元120,以使处理单元120通过软件程序向NAND闪存20发送数据读取命令。
读取子单元112可以接收处理单元120通过软件程序发送的第二读命令信息,在接收到第二读命令信息后,可以根据NAND闪存20的状态从NAND闪存20中读取目标数据。其中,第二读命令信息由处理单元120在向NAND闪存20发送数据读取命令后发送。
在读取子单元112从NAND闪存20读取到目标数据后,解码子单元113可以将目标数据发送给硬件解码单元130,由硬件解码单元130对目标数据进行解码。硬件解码单元130成功对目标数据进行解码后,会将解码后的目标数据返回给加速单元110。
输出子单元114可以接收硬件解码单元130返回的解码后目标数据,并将解码后的目标数据发送给主机200。
解析子单元111接收到主机200下发的读命令后,通过对读命令进行解析获得第一读命令信息,第一读命令信息可以包括主机200所要读取的逻辑地址,具体可以是开始读取的LBA和读取长度,根据开始读取的LBA和读取长度,可以唯一确定主机200所要读取的逻辑地址。解析子单元111将第一读命令信息发送给处理单元120后,处理单元120通过软件程序向NAND闪存20发送数据读取命令,并向加速单元110返回第二读命令信息,以通知加速单元110可以根据NAND闪存20的状态去读取目标数据了,读取子单元112可以接收处理单元120返回的第二读命令信息。
读取子单元112接收到第二读命令信息后,说明处理单元120已经将数据读取命令发送给NAND闪存20,NAND闪存20已经开始根据数据读取命令准备数据,读取子单元112检测NAND闪存20的状态,将检测到NAND闪存20的状态指示已经准备好主机200所要读取的目标数据后,读取子单元112从NAND闪存20读取目标数据。
读取子单元112读取到目标数据后,解码子单元113发送解码请求给硬件解码单元130,解码请求包括目标数据。硬件解码单元130接收到解码请求后,对目标数据进行解码,并将解码后的目标数据返回给解码子单元113。
在本申请实施例中,加速单元110为硬件模块,解析子单元111用于对读命令进行解析,读取子单元112用于从NAND闪存20读取目标数据,解码子单元113用于向硬件解码单元130发送解码请求,输出子单元114用于将解码后的目标数据发送给主机200,将读命令解析、数据传输、读状态返回等流程固化到加速单元110中,减少了读命令解析、数据传输、读状态处理等软件流程,从而减少了软硬件异步流程引入的延时和带宽损失,从可以满足读取NAND闪存时高带宽低延时的要求。
在一种可能的实现方式中,当硬件解码单元130对目标数据解码失败后,输出子单元114可以向处理单元120发送读取失败信息,以使处理单元根据读取失败信息调整数据读取命令包括的读取条件,并将调整的数据读取命令发送给NAND闪存20,以重试从NAND闪存20读取目标数据。
对NAND闪存20存储的数据进行读取时,读取条件的改变会影响读取结果,即通过不同的读取条件对NAND闪存20的相同物理地址进行读取,可能会读取到不同的数据。为此,在出现诸如硬件解码单元130未能成功对目标数据进行解码的情况时,输出子单元114可以向处理单元120发送读取失败信息,以使处理单元120对数据读取命令包括的读取条件进行调整,并将调整后的数据读取命令发送给NAND闪存20,尝试重新从NAND闪存20中读取正确的目标数据。
在本申请实施例中,对目标数据解码失败等原因导致读命令执行失败后,输出子单元114向处理单元120发送读取失败信息,使处理单元120基于读取失败信息对数据读取命令包括的读取条件进行调整,并将调整的数据读取命令发送给NAND闪存20,以尝试重新从NAND闪存20中读取正确的目标数据,提高了成功从NAND闪存20中读取数据的概率,保证了存储控制芯片10的健壮性。
在一种可能的实现方式中,输出子单元114发送给处理单元120的读取失败信息,可以指示处理单元120对数据读取命令包括的读取电压进行调整,即读取条件可以是对NAND闪存20进行读取时的读电压。
需要说明的是,读取条件可以包括读电压、读取协议、读取数据量上限、闪存块容量等,处理单元120基于读取失败信息对读取条件进行调整,可以对一个或多个读取条件进行调整,对此本申请实施例不作限定。
在本申请实施例中,在对NAND闪存20进行读取时,读电压会影响读取结果,即通过不同读电压对NAND闪存20的相同物理地址进行读取,可能会读取到不同的数据,NAND闪存20中晶体管存储的电量发生改变导致采用默认读电压读取到的数据出现偏差,输出子单元114向处理单元120发送读取失败信息,使处理单元120基于读取失败信息调整数据读取命令包括的读电压,以尝试重新从NAND闪存20中读取正确的目标数据,可以提高从NAND闪存20中读取到正确的目标数据的概率。
在一种可能的实现方式中,读取子单元112可以根据第二读命令信息确定NAND闪存20针对数据读取命令的状态反馈形式,进而可以根据该状态反馈形式检测NAND闪存20的状态,在检测到NAND闪存20数据准备完成后,从NAND闪存20读取对应于数据读取命令的目标数据。
第二读命令信息可以指示NAND闪存20针对数据读取命令的状态反馈形式,即根据第二读命令信息可以确定NAND闪存20将以何种方式指示已准备好主机200所要读取的目标数据,或者根据第二读命令信息可以确定NAND闪存20将以何种状态指示已准备好主机200所要读取的目标数据。根据NAND闪存20的状态反馈形式,读取子单元112可以采取相对应的方式检测NAND闪存20的状态,以在检测到NAND闪存20准备好主机200所要读取的目标数据后,从NAND闪存20读取目标数据。
比如,根据第二读命令信息可以确定NAND闪存20将通过某一管脚指示数据准备状态,读取子单元112接收到第二读命令信息后,检测NAND闪存20上的该管脚的电平,当该管脚由低电平转换为高电平时,说明NAND闪存20已经准备好主机200所要读取的目标数据,进而读取子单元112从NAND闪存20读取目标数据。
在本申请实施例中,读取子单元112可以根据第二读命令信息确定NAND闪存20的状态反馈形式,从而根据NAND闪存20的状态反馈形式对NAND闪存20的状态进行检测,当检测到NAND闪存20的状态指示NAND闪存20已经准备好主机200所要读取的目标数据后,从NAND闪存20读取目标数据,保证能够及时、准确地从NAND闪存20中读取主机200所需的目标数据。
在一种可能的实现方式中,在硬件解码单元130成功对目标数据进行解码后,输出子单元114可以将解码后的目标数据存储到主机200指定的目标缓存地址,并向主机200发送读取成功信息,以使主机200在接收到读取成功信息后,从目标缓存地址读取解码后的目标数据。
硬件解码单元130成功对目标数据进行解码,说明读命令执行成功,输出子单元114将解码后的目标数据存储到目标缓存地址,并将读取成功信息(及至少读取结果的状态)反馈给主机200,以使主机200可以根据读取成功信息,从目标缓存地址读取解码后的目标数据。
如果硬件解码单元130对目标数据解码失败,说明读命令执行失败,输出子单元114不将解码失败的目标数据发送给主机200,而是将失败状态反馈给主机200,通知主机200读命令未能成功执行,以使主机200采取后续处理。
主机200指定的目标缓存地址可以从读命令中解析获得。
在本申请实施例中,输出子单元114根据对目标数据进行解码的结果,在成功对目标数据进行解码时,将解码后的目标数据存储到目标缓存地址,并向主机200发送读取成功信息,在对目标数据解码失败时,不将解码失败的目标数据发送给主机200,而是向主机200发送失败状态。输出子单元114为硬件,将数据和状态返回流程固化到输出子单元114中,可以减少数据传输和读状态处理过程的软件流程,减少软硬件异步流程引入的延时的带宽损失,从而提高从NAND闪存20读取数据的效率。
数据读取方法
图5是本申请一个实施例的数据读取方法的流程图,该数据读取方法可由上述任一实施例中的加速单元110执行。如图5所示,该数据读取方法可以包括如下步骤:
步骤501、接收主机下发的读命令,对读命令进行解析获得第一读命令信息,并将第一读命令信息发送给存储控制芯片包括的处理单元,以使处理单元通过程序向NAND闪存发送与第一读命令信息相对应的数据读取命令;
步骤502、在接收到处理单元通过程序发送的第二读命令信息后,根据NAND闪存的状态从NAND闪存读取目标数据,第二读命令信息由处理单元在向NAND闪存发送数据读取命令后发送;
步骤503、将目标数据发送给硬件解码单元,由硬件解码单元对目标数据进行解码;
步骤504、在硬件解码单元对目标数据解码成功后,将解码后的目标数据发送给主机。
在本申请实施例中,加速单元为硬件模块,加速单元用于对读命令进行解析、从NAND闪存读取目标数据、向硬件解码单元发送解码请求、及将解码后的目标数据发送给主机,将读命令解析、数据传输、读状态返回等流程固化到加速单元中,减少了读命令解析、数据传输、读状态处理等软件流程,从而减少了软硬件异步流程引入的延时和带宽损失,从可以满足读取NAND闪存时高带宽低延时的要求。
由于从NAND闪存中读取数据的过程,已经在上述存储控制芯片实施例和加速单元实施例中结合结构示意图进行了详细说明,具体过程可参见前述存储控制芯片实施例和加速单元实施例中的描述,在此不再进行赘述。
本申请实施例的商业价值
在本申请实施例中,通过将硬件加速单元引入存储控制芯片,将读命令解析、状态数据返回、数据传输等流程固化到加速单元中,减少了读命令解析、数据传输、读状态处理等软件流程,减少了软硬件交互的异步过程,从而减少软硬件异步流程引入的延时的带宽损失。对与地址映射和下发路径上可变性较高的处理节点,预留了软件处理的接口,使得存储控制芯片具有较强的适用性。对于返回状态异常等能够返回给处理单元软件程序进行异常处理,保证了存储控制芯片的健壮性,提高存储控制芯片产品、固态硬盘产品的竞争力。
需要说明的是,本申请实施例所涉及到的与用户有关的信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于对模型进行训练的样本数据、用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述的比较简单,相关之处参见其他实施例的部分说明即可。
应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。
Claims (10)
1.一种加速单元,应用于固态硬盘中的存储控制芯片,所述加速单元包括:
解析子单元,用于接收主机下发的读命令,对所述读命令进行解析获得第一读命令信息,并将所述第一读命令信息发送给所述存储控制芯片包括的处理单元,以使所述处理单元通过程序向NAND闪存发送与所述第一读命令信息相对应的数据读取命令;
读取子单元,用于在接收到所述处理单元通过程序发送的第二读命令信息后,根据所述NAND闪存的状态从所述NAND闪存读取目标数据,所述第二读命令信息由所述处理单元在向所述NAND闪存发送所述数据读取命令后发送;
解码子单元,用于将所述目标数据发送给硬件解码单元,由所述硬件解码单元对所述目标数据进行解码;
输出子单元,用于在所述硬件解码单元对所述目标数据解码成功后,将解码后的所述目标数据发送给所述主机。
2.根据权利要求1所述的加速单元,其中,
所述输出子单元,用于在所述硬件解码单元对所述目标数据解码失败后,向所述处理单元发送读取失败信息,以使所述处理单元根据所述读取失败信息调整所述数据读取命令包括的读取条件,并将调整后的所述数据读取命令发送给所述NAND闪存。
3.根据权利要求2所述的加速单元,其中,所述读取条件包括对所述NAND闪存进行读取时的读电压。
4.根据权利要求1所述的加速单元,其中,
所述读取子单元,用于根据所述第二读命令信息确定所述NAND闪存针对所述数据读取命令的状态反馈形式,并根据所述状态反馈形式检测所述NAND闪存的状态,在检测到所述NAND闪存数据准备完成后,从所述NAND闪存读取对应于所述数据读取命令的目标数据。
5.根据权利要求1-4中任一所述的加速单元,其中,
所述输出子单元,用于在所述硬件解码单元对所述目标数据解码成功后,将解码后的所述目标数据存储到所述主机指定的目标缓存地址,并向所述主机发送读取成功信息,以使所述主机在接收到所述读取成功信息后从所述目标缓存地址读取解码后的目标数据。
6.一种存储控制芯片,包括:权利要求1-5中任一所述的加速单元、处理单元和硬件解码单元;
所述处理单元,用于通过程序接收所述加速单元发送的第一读命令信息,根据所述第一读命令信息向NAND闪存发送相对应的数据读取命令,并在发送所述数据读取命令后向所述加速单元发送第二读命令信息,其中,所述第一读命令信息由所述加速单元对主机下发的读命令进行解析获得,所述第二读命令信息用于指示所述加速单元根据NAND闪存的状态,从所述NAND闪存中读取与所述读命令相对应的目标数据;
所述硬件解码单元,用于对所述加速单元发送的目标数据进行解码,并在解码成功后将解码后的所述目标数据发送给所述加速单元。
7.根据权利要求6所述的存储控制芯片,其中,所述处理单元包括:
读命令处理子单元,用于通过程序接收所述加速单元发送的所述第一读命令信号,根据所述第一读命令信号将所述读命令所要读取的逻辑地址映射为所述NAND闪存的物理地址;
读命令发送子单元,用于根据所述物理地址,通过程序生成与所述NAND闪存相匹配的数据读取命令,并将所述数据读取命令发送给所述NAND闪存,及在向所述NAND闪存发送所述数据读取命令后,向所述加速单元发送所述第二读命令信息。
8.根据权利要求7所述的存储控制芯片,其中,
所述读命令处理子单元,用于通过程序接收所述加速单元发送的读取失败信息,并根据所述读取失败信息向所述读命令发送子单元发送调整指令,所述读取失败信息用于指示加速单元对所述目标数据解码失败;
所述读命令发送子单元,用于根据所述调整指令调整所述数据读取命令包括的读取条件,将调整后的所述数据读取命令发送给所述NAND闪存。
9.一种固态硬盘,包括:权利要求6-8中任一所述的存储控制芯片和至少一个NAND闪存。
10.一种数据读取方法,应用于存储控制芯片中的加速单元,所述方法包括:
接收主机下发的读命令,对所述读命令进行解析获得第一读命令信息,并将所述第一读命令信息发送给所述存储控制芯片包括的处理单元,以使所述处理单元通过程序向NAND闪存发送与所述第一读命令信息相对应的数据读取命令;
在接收到所述处理单元通过程序发送的第二读命令信息后,根据所述NAND闪存的状态从所述NAND闪存读取目标数据,所述第二读命令信息由所述处理单元在向所述NAND闪存发送所述数据读取命令后发送;
将所述目标数据发送给硬件解码单元,由所述硬件解码单元对所述目标数据进行解码;
在所述硬件解码单元对所述目标数据解码成功后,将解码后的所述目标数据发送给所述主机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311212312.4A CN117270771A (zh) | 2023-09-19 | 2023-09-19 | 加速单元、存储控制芯片、固态硬盘和数据读取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311212312.4A CN117270771A (zh) | 2023-09-19 | 2023-09-19 | 加速单元、存储控制芯片、固态硬盘和数据读取方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117270771A true CN117270771A (zh) | 2023-12-22 |
Family
ID=89213673
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311212312.4A Pending CN117270771A (zh) | 2023-09-19 | 2023-09-19 | 加速单元、存储控制芯片、固态硬盘和数据读取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117270771A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117707436A (zh) * | 2024-02-05 | 2024-03-15 | 苏州元脑智能科技有限公司 | 固件模式切换方法、装置、电子设备和存储介质 |
CN117714711A (zh) * | 2024-02-05 | 2024-03-15 | 北京象帝先计算技术有限公司 | 解码方法、解码系统、电子设备及可读存储介质 |
-
2023
- 2023-09-19 CN CN202311212312.4A patent/CN117270771A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117707436A (zh) * | 2024-02-05 | 2024-03-15 | 苏州元脑智能科技有限公司 | 固件模式切换方法、装置、电子设备和存储介质 |
CN117714711A (zh) * | 2024-02-05 | 2024-03-15 | 北京象帝先计算技术有限公司 | 解码方法、解码系统、电子设备及可读存储介质 |
CN117714711B (zh) * | 2024-02-05 | 2024-04-30 | 北京象帝先计算技术有限公司 | 解码方法、解码系统、电子设备及可读存储介质 |
CN117707436B (zh) * | 2024-02-05 | 2024-05-03 | 苏州元脑智能科技有限公司 | 固件模式切换方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117270771A (zh) | 加速单元、存储控制芯片、固态硬盘和数据读取方法 | |
US10114743B2 (en) | Memory erase management | |
KR102645982B1 (ko) | 호스트 메모리 버퍼를 사용하는 커맨드 배출 | |
KR102592803B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US11269765B2 (en) | Operating method of controller and memory system | |
KR20100091379A (ko) | 반도체 디스크 장치 및 그것의 프로그램 페일 처리 방법 | |
CN108572798B (zh) | 针对快速数据传输执行监听操作的存储装置及其方法 | |
US11861217B2 (en) | DRAM-less SSD with command draining | |
KR20200025184A (ko) | 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그 동작 방법 | |
KR20210098717A (ko) | 컨트롤러, 컨트롤러의 동작 방법 및 이를 포함하는 저장 장치 | |
KR20200114052A (ko) | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 | |
KR20200114212A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US10684953B2 (en) | Data storage apparatus capable of varying map cache buffer size | |
KR20190006677A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR102620727B1 (ko) | 전자 장치 | |
US11782638B2 (en) | Storage device with improved read latency and operating method thereof | |
KR20200114086A (ko) | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 | |
US20190278704A1 (en) | Memory system, operating method thereof and electronic apparatus | |
US20210191626A1 (en) | Data processing system | |
KR102475688B1 (ko) | 불휘발성 메모리 장치, 이를 포함하는 데이터 저장 장치 및 그것의 동작 방법 | |
KR102469098B1 (ko) | 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 이를 포함하는 데이터 저장 장치 | |
KR20210011198A (ko) | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 | |
KR102653852B1 (ko) | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 | |
US11379362B2 (en) | Memory system and operating method thereof | |
US11216384B2 (en) | Controller, memory system and operating method of the controller |
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 |