CN117075824B - 存储设备的控制方法、装置以及存储设备和硬盘阵列卡 - Google Patents

存储设备的控制方法、装置以及存储设备和硬盘阵列卡 Download PDF

Info

Publication number
CN117075824B
CN117075824B CN202311344019.3A CN202311344019A CN117075824B CN 117075824 B CN117075824 B CN 117075824B CN 202311344019 A CN202311344019 A CN 202311344019A CN 117075824 B CN117075824 B CN 117075824B
Authority
CN
China
Prior art keywords
flash memory
storage array
writing
storage
bad block
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
Application number
CN202311344019.3A
Other languages
English (en)
Other versions
CN117075824A (zh
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.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent 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 Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202311344019.3A priority Critical patent/CN117075824B/zh
Publication of CN117075824A publication Critical patent/CN117075824A/zh
Application granted granted Critical
Publication of CN117075824B publication Critical patent/CN117075824B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请实施例提供了一种存储设备的控制方法、装置以及存储设备和硬盘阵列卡,其中,该方法应用于存储设备上部署的处理器芯片,包括:对于每个闪存芯片作为目标闪存芯片,依次连续将目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将第1个存储阵列的数据写入缓存中第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将第N个存储阵列的数据写入缓存中第N个存储阵列对应的缓存位置;执行寄存器存储的写指令和地址,使用缓存中加载的数据对N个存储阵列进行页编程。通过本申请,解决了存储设备的存储效率较低的问题,进而达到了提高存储设备的存储效率的效果。

Description

存储设备的控制方法、装置以及存储设备和硬盘阵列卡
技术领域
本申请实施例涉及计算机领域,具体而言,涉及一种存储设备的控制方法、装置以及存储设备和硬盘阵列卡。
背景技术
目前随着存储系统规模的日益增大,数据以几何级数的方式增长,小型企业的存储规模从原来的TB(Terabyte,太字节)级上升到PB(Petabytes,拍字节)级,大型企业的存储规模从原来的PB级增长到现在的EB(Exabytes,艾字节)级,为了管理和存储海量数据,传统的软存储系统为了提高存储速度,一般在系统中增加存储芯片的使用数量,虽然操作简便,但是增加了设计成本,同时由于半导体芯片存在无效块等存储特性,影响了系统的可靠性。
针对相关技术中,存储设备的存储效率较低等问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种存储设备的控制方法、装置以及存储设备和硬盘阵列卡,以至少解决相关技术中存储设备的存储效率较低的问题。
根据本申请的一个实施例,提供了一种存储设备的控制方法,应用于所述存储设备上部署的处理器芯片,所述存储设备上还部署了一个或者多个闪存芯片,每个所述闪存芯片上划分了N个存储阵列,N为正整数,所述方法包括:
对于每个所述闪存芯片作为目标闪存芯片,依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置;
执行所述寄存器存储的写指令和地址,使用缓存中加载的数据对所述N个存储阵列进行页编程。
在一个示例性实施例中,所述依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置,包括:所述目标闪存芯片被划分为双存储阵列,将第1个存储阵列的写指令和地址写入寄存器,并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置;将第2个存储阵列的写指令和地址写入寄存器,并将所述第2个存储阵列的数据写入缓存中所述第2个存储阵列对应的缓存位置,得到所述加载的数据。
在一个示例性实施例中,所述方法还包括:在所述存储设备上部署了多个闪存芯片的情况下,将所述多个闪存芯片划分为N组闪存芯片,其中,N满足,T1用于指示加载时间,T2用于指示编程时间,以使所述存储设备达到最大编程速度,所述N组闪存芯片中每组闪存芯片并行操作且读写操作相同。
在一个示例性实施例中,所述将所述多个闪存芯片划分为N组闪存芯片,包括:将所述存储设备上部署的12个闪存芯片分成2组,每组6个闪存芯片采用流水线式并行操作,每个闪存芯片含有4个目标,流水级数为8级。
在一个示例性实施例中,在所述依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置之前,所述方法还包括:构建所述存储阵列对应的目标坏块列表,其中,所述目标坏块列表用于记录所述一个或者多个闪存芯片上存在的坏块的位置;将所述目标坏块列表存储至所述处理器芯片上的随机存取存储器中,并将所述目标坏块列表存储至所述存储设备上部署的非易失内存芯片上。
在一个示例性实施例中,在所述将所述目标坏块列表存储至所述存储设备上部署的非易失内存芯片上之后,所述方法还包括:在检测到所述存储设备掉电并重新上电后,从所述非易失内存芯片上读取所述目标坏块列表;将所述目标坏块列表写入所述随机存取存储器。
在一个示例性实施例中,在所述存储设备上部署了多个闪存芯片的情况下,所述构建所述存储阵列对应的目标坏块列表,包括:获取多个闪存芯片中每个闪存芯片的坏块列表,得到多个坏块列表;将所述多个坏块列表合并,得到所述存储设备对应的目标坏块列表。
在一个示例性实施例中,所述将所述多个坏块列表合并,得到所述存储设备对应的目标坏块列表,包括以下之一:将所述多个坏块列表求并集,得到所述目标坏块列表;按照所述多个闪存芯片的分组对所述多个坏块列表进行分组,得到多组坏块列表集合;对每组坏块列表集合中的坏块列表求并集,得到多个所述目标坏块列表。
在一个示例性实施例中,所述获取多个闪存芯片中每个闪存芯片的坏块列表,包括:获取每个闪存芯片中每块第一页的第8192个字节;检测当前字节是否为00H;在当前字节为00H的情况下,将当前块在坏块列表中对应的地址写0;在当前字节不为00H的情况下,检测当前闪存芯片中下一块第一页的第8192个字节,直至到达当前闪存芯片最后一块;确定当前闪存芯片是否为最后一个闪存芯片;在当前闪存芯片不为最后一个闪存芯片的情况下,开始检测下一个闪存芯片中每块第一页的第8192个字节。
在一个示例性实施例中,在所述使用缓存中加载的数据对所述N个存储阵列进行页编程之后,所述方法还包括:检测所述一个或者多个闪存芯片上的新增坏块;将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表,以及所述非易失内存芯片上存储的所述目标坏块列表。
在一个示例性实施例中,所述检测所述一个或者多个闪存芯片上的新增坏块,包括:对每个加载的数据执行写入操作后,检测所述每个加载的数据在闪存芯片上所在的存储块的读状态寄存器;在所述读状态寄存器的最低位为1的情况下,确定所述存储块为新增坏块。
在一个示例性实施例中,所述将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表,以及所述非易失内存芯片上存储的所述目标坏块列表,包括:在所述确定所述存储块为新增坏块之后,将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表;在对全部加载的数据执行写入操作后,获取检测出的全部新增坏块,得到新增坏块集合;将所述新增坏块集合更新至所述非易失内存芯片上存储的所述目标坏块列表。
在一个示例性实施例中,所述检测所述一个或者多个闪存芯片上的新增坏块,包括:遍历所述目标坏块列表中的每个块地址;检测当前块地址是否为1;在当前块地址为1的情况下,对当前块地址执行编程操作;在当前块地址不为1的情况下,继续检测下一个块地址是否为1;在所述编程操作后检测当前块地址的读状态寄存器的最低位是否为1;在读状态寄存器的最低位为1的情况下,将当前块地址作为新增坏块在所述目标坏块列表中当前块地址上写0;在当前块地址上写0之后,或者,读状态寄存器的最低位不为1的情况下,检测下一个块地址,直至完成检测。
根据本申请的另一个实施例,还提供了一种存储设备,包括:处理器芯片以及一个或者多个闪存芯片,每个所述闪存芯片上划分了N个存储阵列,N为正整数,其中,所述处理器芯片分别与所述一个或者多个闪存芯片连接,目标闪存芯片是所述一个或者多个闪存芯片中的每个闪存芯片;所述处理器芯片,用于依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置;执行所述寄存器存储的写指令和地址,使用缓存中加载的数据对所述N个存储阵列进行页编程。
在一个示例性实施例中,在所述存储设备上部署了多个闪存芯片的情况下,将所述多个闪存芯片划分为N组闪存芯片,其中,N满足,以使所述存储设备达到最大编程速度;所述N组闪存芯片中每组闪存芯片并行操作且读写操作相同。
在一个示例性实施例中,所述处理器芯片上部署了随机存取存储器,所述存储设备上部署了非易失内存芯片,其中,所述处理器芯片,用于在所述依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置之前,构建所述存储阵列对应的目标坏块列表,其中,所述目标坏块列表用于记录所述一个或者多个闪存芯片上存在的坏块的位置;将所述目标坏块列表存储至所述随机存取存储器中,并将所述目标坏块列表存储至所述非易失内存芯片上。
根据本申请的又一个实施例,还提供了一种硬盘阵列卡,包括:片上系统以及多个固态硬盘,其中,所述片上系统分别与所述多个固态硬盘连接,目标闪存芯片是每个所述固态硬盘中的闪存芯片,所述目标闪存芯片上划分了多个存储阵列;所述片上系统,用于执行时实现上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种存储设备的控制装置,应用于所述存储设备上部署的处理器芯片,所述存储设备上还部署了一个或者多个闪存芯片,每个所述闪存芯片上划分了N个存储阵列,N为正整数,所述装置包括:
第一写入模块,用于对于每个所述闪存芯片作为目标闪存芯片,依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置;
执行模块,用于执行所述寄存器存储的写指令和地址,使用缓存中加载的数据对所述N个存储阵列进行页编程。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本申请,存储设备上部署了一个或者多个闪存芯片,目标闪存芯片是一个或者多个闪存芯片中的每个闪存芯片,依次对目标闪存芯片上划分的多个存储阵列中每个存储阵列进行数据加载,多个存储阵列均完成数据加载的情况下,将加载的数据写入多个存储阵列,由于对目标闪存芯片上划分的多个存储阵列中的每个存储阵列都进行了数据加载,使得存储设备上部署的一个或者多个闪存芯片能够同时将加载的数据写入多个存储阵列。因此,可以解决存储设备的存储效率较低问题,达到提高存储设备的存储效率效果。
附图说明
图1是本申请实施例的一种存储设备的控制方法的服务器设备的硬件结构框图;
图2是根据本申请实施例的存储设备的控制方法的流程图;
图3是根据本申请实施例的一种数据加载的过程的示意图;
图4是根据本申请实施例的一种目标坏块列表的构建过程的流程图;
图5是根据本申请实施例的一种目标坏块列表的更新过程的流程图;
图6是根据本申请实施例的存储设备的结构框图;
图7是根据本申请实施例的硬盘阵列卡的结构框图;
图8是根据本申请实施例的存储设备的控制装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在服务器设备或者类似的运算装置中执行。以运行在服务器设备上为例,图1是本申请实施例的一种存储设备的控制方法的服务器设备的硬件结构框图。如图1所示,服务器设备可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述服务器设备还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述服务器设备的结构造成限定。例如,服务器设备还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的存储设备的控制方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至服务器设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器设备的通信供应方提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种存储设备的控制方法,应用于所述存储设备上部署的处理器芯片,所述存储设备上还部署了一个或者多个闪存芯片,每个所述闪存芯片上划分了N个存储阵列,N为正整数,图2是根据本申请实施例的存储设备的控制方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,对于每个所述闪存芯片作为目标闪存芯片,依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置;
步骤S204,执行所述寄存器存储的写指令和地址,使用缓存中加载的数据对所述N个存储阵列进行页编程。
通过上述步骤,存储设备上部署了一个或者多个闪存芯片,目标闪存芯片是一个或者多个闪存芯片中的每个闪存芯片,依次对目标闪存芯片上划分的多个存储阵列中每个存储阵列进行数据加载,多个存储阵列均完成数据加载的情况下,将加载的数据写入多个存储阵列,由于对目标闪存芯片上划分的多个存储阵列中的每个存储阵列都进行了数据加载,使得存储设备上部署的一个或者多个闪存芯片能够同时将加载的数据写入多个存储阵列。因此,可以解决存储设备的存储效率较低问题,达到提高存储设备的存储效率效果。
可选的,在本实施例中,上述存储设备的控制方法应用于存储设备上,进一步,存储设备上可以但不限于部署了一个或者多个处理器芯片,可以但不限于将上述存储设备的控制方法应用于存储设备上部署的一个或者多个处理器芯片中,存储设备可以但不限于包括:RAID(Redundant Arrays of Independent Disks,磁盘阵列)等。处理器芯片可以但不限于包括:多核处理器、SoC(System on Chip,系统级芯片)等。
可选的,在本实施例中,存储设备可以但不限于用于将多个闪存芯片组合成一个逻辑卷,闪存芯片可以但不限于为固态存储设备,将多个闪存芯片部署在存储设备中对存储设备提供了更快的读写速度和更低的能耗,从而增强了整个存储系统的性能。并且,存储设备可以但不限于通过数据分布和亢余备份提高了存储性能和数据可靠性,此外,存储设备还可以但不限于用于数据效验、磁盘故障检测和热插拔等。
在上述步骤S202提供的技术方案中,存储设备为允许部署一个或者多个闪存芯片的设备,比如:RAID卡、闪存阵列等。闪存芯片可以但不限于包括:IIC EEPROM(Inter-Integrated Circuit Electrically Erasable Programmable Read-Only Memory,集成电路互联电子可擦除可编程只读存储器)、SPI NorFlash(Serial Peripheral InterfaceNOR Flash,串行外围接口 NOR 闪存)、SPI NandFlash(Serial Peripheral InterfaceNAND Flash,串行外围接口 NAND 闪存)、eMMC Flash(Embedded MultiMediaCard Flas,嵌入式多媒体卡闪存)、SD(Secure Digital,安全数码存储卡)卡等。存储设备上部署了一个或者多个闪存芯片,可以但不限于依次将存储设备上部署的每一个闪存芯片确定为目标闪存芯片从而对目标闪存芯片上划分的多个存储阵列中的每个存储阵列进行数据加载。
可选的,在本实施例中,可以但不限于通过以下方式为存储设备上部署的闪存芯片划分N个存储阵列:将存储阵列划分为固定大小的块,并将每个块映射到特定的闪存芯片上。每个芯片负责管理和存储对应的块数据,具有独立的读写操作。
或者,将存储阵列划分为固定大小的块,并将每个块映射到不同的闪存芯片上。每个芯片负责管理和存储一部分块数据,具有独立的读写操作。或者,将存储阵列划分为固定大小的页面,并将每个页面映射到不同的闪存芯片上。每个芯片负责管理和存储一部分页面数据,具有独立的读写操作。或者,将存储阵列中的数据进行复制,并将每个副本映射到不同的闪存芯片上。每个芯片负责管理和存储一部分副本数据,具有独立的读写操作。
可选的,在本实施例中,可以但不限于依次将每个闪存芯片确定为目标闪存芯片,对于目标闪存芯片,可以但不限于执行以下操作:将目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将第1个存储阵列的数据写入缓存中第1个存储阵列对应的缓存位置。由于闪存芯片的读写速度相对较慢,而缓存的读写速度相对较快,因此通过将数据从闪存芯片读取到缓存中,可以加快对该数据的访问速度,而将写指令和地址写入寄存器,可以更加高效地管理和控制数据的读写操作,进一步,通过将数据存储在缓存中,可以减少从闪存芯片中读取数据的次数,从而提高系统的响应速度和整体性能,同时,缓存还可以根据数据的访问模式进行预取和预存,进一步提高数据的访问效率。
在将目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将第1个存储阵列的数据写入缓存中第1个存储阵列对应的缓存位置的情况下,将目标闪存芯片中第2个存储阵列的数据的写指令和地址写入寄存器并将第2个存储阵列的数据写入缓存中第2个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将第N个存储阵列的数据写入缓存中第N个存储阵列对应的缓存位置。因此,将闪存芯片中的数据写入缓存不仅加快了数据的访问速度,还提高了系统的性能和响应能力。
可选的,在本实施例中,目标闪存芯片上划分的多个存储阵列中的每个存储阵列可以但不限于与其对应的写指令和地址,并且写指令、地址以及存储阵列可以但不限于是一一对应的关系,或者多个存储阵列使用同一规格的写指令,通过地址的不同区分写指令所对应的存储阵列等。存储阵列的写指令可以但不限于是预先构建的,比如:在需要将写指令写入寄存器的情况下,调用预先构建的写指令写入寄存器。或者,写指令可以但不限于是实时生成的,即在需要将写指令写入寄存器的情况下,实时生成对应的写指令等。
类似的,存储阵列的地址可以但不限于是预先确定的,即每个存储阵列有其对应的地址,比如:在需要将地址写入寄存器的情况下,获取当前存储阵列的地址写入寄存器。或者,存储阵列的地址可以但不限于是实时分配的,比如:在需要将地址写入寄存器的情况下,实时为当前存储整列分配其地址并写入寄存器等。
在一个示例性实施例中,可以但不限于采用以下方式依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置:所述目标闪存芯片被划分为双存储阵列,将第1个存储阵列的写指令和地址写入寄存器,并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置;将第2个存储阵列的写指令和地址写入寄存器,并将所述第2个存储阵列的数据写入缓存中所述第2个存储阵列对应的缓存位置,得到所述加载的数据。
可选的,在本实施例中,可以但不限于将存储阵列的数据写入缓存中,实现对存储阵列的数据加载,由于目标闪存芯片上可以但不限于划分了多个存储阵列,可以但不限于依次将每个存储阵列的数据写入缓存中;或者,可以但不限于采用分组处理的方式,按照先后顺序处理每一组中的多个存储阵列的数据写入缓存中得到加载的数据等。
可选的,在本实施例中,可以但不限于使用多种方式将目标闪存芯片划分为双存储阵列:将整个闪存芯片划分为两个存储阵列,每个存储阵列包含一半的存储单元。其中一个存储阵列用于存储数据,另一个存储阵列用于存储元数据(例如地址信息、错误校验码等),这样可以实现数据和元数据的分离存储,提高了系统的可靠性和数据的读取速度。或者,将闪存芯片划分为两个存储阵列,一个用于存储数据页(Data Page Array),另一个用于存储映射表(Mapping Block Array),数据页存储实际的用户数据,映射表存储逻辑块地址和物理块地址之间的映射关系,实现逻辑地址到物理地址的转换,提高数据的读取和写入效率等。
可选的,在本实施例中,以目标闪存芯片为双存储阵列为例,加载的数据可以但不限于包括第1个存储阵列的写指令和地址写入寄存器,并将第1个存储阵列的数据写入缓存中第1个存储阵列对应的缓存位置以及将第2个存储阵列的写指令和地址写入寄存器,并将第2个存储阵列的数据写入缓存中第2个存储阵列对应的缓存位置。在将存储阵列的写指令与地址写入寄存器的过程中,可以但不限于将存储阵列的数据写入对应的缓存位置。
可选的,在本实施例中,可以但不限于依次对第1个存储阵列的写指令和地址写入寄存器,并将第1个存储阵列的数据写入缓存中第1个存储阵列对应的缓存位置,再对下一个存储阵列的写指令和地址写入寄存器,并将该存储阵列的数据写入缓存中该存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器,并将第N个存储阵列的数据写入缓存中第N个存储阵列对应的缓存位置,得到加载的数据。或者,在对第1个存储阵列的写指令和地址写入寄存器的过程中,将其他存储阵列的数据写入缓存中该存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器,并将第N个存储阵列的数据写入缓存中第N个存储阵列对应的缓存位置,得到加载的数据等。
可选的,在本实施例中,寄存器中存储的写指令和地址可以但不限于用于指示对存储阵列进行页编程,并且可以但不限于使用缓存中加载的数据对存储阵列进行页编程,比如:响应寄存器中存储的写指令和地址,使用缓存中加载的数据对存储阵列进行页编程。或者,使用缓存中加载的数据执行寄存器中存储的写指令和地址,实现对存储阵列的页编程等。
可选的,在本实施例中,目标闪存芯片是双存储阵列的,比如:执行寄存器存储的写指令和地址,使用缓存中加载的数据对多个存储阵列进行页编程。因此可以但不限于在将第1个存储阵列的写指令和地址写入寄存器的过程中,将其他存储阵列的数据写入缓存中该存储阵列对应的缓存位置,实现对不同存储阵列的并行操作。
在一个示例性实施例中,在所述存储设备上部署了多个闪存芯片的情况下,可以但不限于将所述多个闪存芯片划分为N组闪存芯片,其中,N满足,T1用于指示加载时间,T2用于指示编程时间,以使所述存储设备达到最大编程速度,所述N组闪存芯片中每组闪存芯片并行操作且读写操作相同。
可选的,在本实施例中,存储设备包括N组闪存芯片,闪存芯片的加载时间为T1,编程时间为T2,在的情况下,存储设备达到最大编程速度。
在一个示例性实施例中,可以但不限于采用以下方式将所述多个闪存芯片划分为N组闪存芯片:将所述存储设备上部署的12个闪存芯片分成2组,每组6个闪存芯片采用流水线式并行操作,每个闪存芯片含有4个目标,流水级数为8级。
可选的,在本实施例中,在存储设备上部署了12个闪存芯片的情况下,将闪存芯片分成2组,每组6个闪存芯片,6个闪存芯片采用流水线式并行操作,每个闪存芯片含有4个目标,流水级数为8级。
在一个示例性实施例中,提供了一种数据加载的过程的示例。图3是根据本申请实施例的一种数据加载的过程的示意图,如图3所示,以存储设备为RAID卡,处理器芯片为多核SoC芯片为例,在RAID卡中部署多核SoC芯片,RAID卡上部署了N组闪存芯片,闪存芯片的一个编程周期包括数据加载阶段和编程阶段,闪存芯片单个逻辑单元单页编程时间为2500us,一页数据的加载时间为43μs,最大编程时间为2600μs为例,设N组闪存芯片的加载时间为T1,编程时间为T2,当满足时,达到最大编程速度。
进一步,以使用12片闪存芯片,闪存芯片分成2组,每组6片并行操作,即将第1组存储阵列的写指令和地址写入寄存器的过程中(加载阶段),将第2组至第N组存储阵列的数据写入缓存中对应的缓存位置(编程阶段),实现了加载时间约为86μs,采用30级流水操作的情况下,速度达到3GB/s,由于每片闪存芯片含有4个Target,流水级数可达到8级,编程速度为:(并联个数*流水级数*页大小*页个数)/(加载时间+编程时间)=(12*8*8192*2)Byte/(86+2600)μs=585.6 MB/s。
因此,采用12片NAND型闪存芯片,总存储容量为768GB,最高写入速度达到585.6MB/s,节约了一半的芯片数量,大大提高了编程速度。
在一个示例性实施例中,在所述依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置之前,可以但不限于采用以下方式将所述目标坏块列表存储至所述存储设备上部署的非易失内存芯片上:构建所述存储阵列对应的目标坏块列表,其中,所述目标坏块列表用于记录所述一个或者多个闪存芯片上存在的坏块的位置;将所述目标坏块列表存储至所述处理器芯片上的随机存取存储器中,并将所述目标坏块列表存储至所述存储设备上部署的非易失内存芯片上。
在一个示例性实施例中,在所述将所述目标坏块列表存储至所述存储设备上部署的非易失内存芯片上之后,可以但不限于采用以下方式将所述目标坏块列表写入所述随机存取存储器:在检测到所述存储设备掉电并重新上电后,从所述非易失内存芯片上读取所述目标坏块列表;将所述目标坏块列表写入所述随机存取存储器。
可选的,在本实施例中,上述目标坏块列表可以但不限于用于记录闪存芯片上存在的坏块的位置,目标坏块列表和存储阵列可以但不限于是一一对应的关系,比如:每个存储阵列都有其对应的目标坏块列表。或者,多个存储阵列使用一个目标坏块列表等。
可选的,在本实施例中,可以但不限于先将目标坏块列表存储至处理器芯片上的随机存取存储器中再将目标坏块列表存储至存储设备上部署的非易失内存芯片上。或者,先将目标坏块列表存储至存储设备上部署的非易失内存芯片再上将目标坏块列表存储至处理器芯片上的随机存取存储器中等。
可选的,在本实施例中,可以但不限于将目标坏块列表存储至存储设备上部署的非易失内存芯片上,使得在存储设备重新上电的情况下,能够从非易失内存芯片上读取目标坏块列表,对目标坏块列表中存储的坏块进行相应处理。
可选的,在本实施例中,存储设备掉电并重新上电可以但不限于包括多种情况,比如:存储设备断电、电源故障、电源管理策略等。从非易失内存芯片上读取目标坏块列表再将目标坏块列表写入随机存取存储器。
在一个示例性实施例中,可以但不限于采用以下方式在所述存储设备上部署了多个闪存芯片的情况下,构建所述存储阵列对应的目标坏块列表:获取多个闪存芯片中每个闪存芯片的坏块列表,得到多个坏块列表;将所述多个坏块列表合并,得到所述存储设备对应的目标坏块列表。
可选的,在本实施例中,每个闪存芯片中的坏块可以但不限于是在闪存芯片出厂时就存在的,或者也可以是在闪存芯片使用的过程中发生损坏产生的坏块。对于出厂时存在的坏块,可以但不限于在出厂时就将其存储在其所在的闪存芯片对应的坏块列表中,对于在使用的过程中,新增加的坏块,可以但不限于在其发生损坏的情况下,将其加入坏块列表中得到每个闪存芯片的坏块列表。
可选的,在本实施例中,存储设备上可以但不限于部署了一个或者多个闪存芯片,可以但不限于将存储设备上部署的每个闪存芯片的坏块列表进行整合,得到存储设备对应的目标坏块列表。
在一个示例性实施例中,可以但不限于采用以下方式将所述多个坏块列表合并,得到所述存储设备对应的目标坏块列表:将所述多个坏块列表求并集,得到所述目标坏块列表;按照所述多个闪存芯片的分组对所述多个坏块列表进行分组,得到多组坏块列表集合;对每组坏块列表集合中的坏块列表求并集,得到多个所述目标坏块列表。
可选的,在本实施例中,在将存储设备上部署的每个闪存芯片的坏块列表进行整合的过程中,可以但不限于将每个闪存芯片的坏块列表中重复的坏块进行剔除,再整合得到存储设备对应的目标坏块列表。
可选的,在本实施例中,存储设备上可以但不限于部署了一个或者多个闪存芯片,在存储设备上部署了多个闪存芯片的情况下,可以但不限于将存储芯片进行分组,并按照存储芯片所属的组别将每个存储芯片对应的坏块列表进行重组,得到每个组别对应的坏块列表集合。
可选的,在本实施例中,可以但不限于通过检测闪存芯片中新增的坏块实现对目标坏块列表的更新,比如:实时检测闪存芯片中是否存在新增的坏块。或者,按照检测周期,定期检测闪存芯片中是否存在新增的坏块等。在检测得到闪存芯片中否存在新增的坏块的情况下,可以但不限于将新增坏块更新至随机存取存储器上存储的目标坏块列表,以及非易失内存芯片上存储的目标坏块列表。
在一个示例性实施例中,可以但不限于采用以下方式获取多个闪存芯片中每个闪存芯片的坏块列表:获取每个闪存芯片中每块第一页的第8192个字节;检测当前字节是否为00H;在当前字节为00H的情况下,将当前块在坏块列表中对应的地址写0;在当前字节不为00H的情况下,检测当前闪存芯片中下一块第一页的第8192个字节,直至到达当前闪存芯片最后一块;确定当前闪存芯片是否为最后一个闪存芯片;在当前闪存芯片不为最后一个闪存芯片的情况下,开始检测下一个闪存芯片中每块第一页的第8192个字节。
可选的,在本实施例中,闪存芯片中可以但不限于包括多个块,对于每个块可以但不限于通过检测其目标页的目标字节从而确定闪存芯片当前块是否为坏块,进一步,可以但不限于通过检测每个块的目标页的目标字节是否等于预设的字节从而确定当前块是否为坏块,目标页以及目标字节可以但不限于是预先设定的固定值或者根据闪存芯片的不同而发生变化的参数值。
在一个示例性实施例中,提供了一种目标坏块列表的构建过程的示例。图4是根据本申请实施例的一种目标坏块列表的构建过程的流程图,如图4所示,以闪存芯片为NAND型闪存芯片,闪存芯片中每块第一页的第8192个字节是该块的出厂坏块标志,即该字节为00H的情况下,表示此块为坏块为例,可以但不限于通过以下步骤构建闪存芯片的目标坏块列表:
步骤S402:获取NAND型闪存芯片中每块第一页的第8192个字节;
步骤S404:检测第8192个字节是否为00H;
步骤S406:在第8192个字节为00H的情况下,将当前块在坏块列表中对应的地址写0;
或者,在当前字节不为00H的情况下,检测NAND型闪存芯片中下一块第一页的第8192个字节,直至到达NAND型闪存芯片的最后一块;
步骤S408:确定当前NAND型闪存芯片是否为最后一个闪存芯片;
步骤S410:在当前NAND型闪存芯片不为最后一个闪存芯片的情况下,重复上述步骤检测下一个闪存芯片中每块第一页的第8192个字节。
由于NAND型闪存芯片的坏块是随机分布的,所以每片闪存的坏块列表都不相同,以12片闪存芯片为例,可以但不限于将12片闪存芯片分成2组,每组6个闪存芯片并行操作,这6片闪存芯片的操作相同,因此可以但不限于将每组内的6片闪存芯片的坏块列表合并,由此建立新的坏块列表。
在采用并行操作技术的情况下,每组6片闪存芯片的读写操作相同,但每片闪存芯片的坏块地址不可能完全相同,因此只要组内的某片闪存芯片的某一块是坏块,就将组内其他闪存芯片的该块都认为是坏块,由于NAND型闪存芯片的坏块率最大不超过100/4096,若按照最大的坏块率计算,组内每片闪存都有800个坏块,且位置各不相同,则每组闪存被视为存在28800个坏块,每块容量为2MB,将闪存芯片分成两组,每片闪存的实际坏块数量不会超过50个,所以整个系统的容量损失小于或者等于7.04 GB。
在一个示例性实施例中,在所述使用缓存中加载的数据对所述N个存储阵列进行页编程之后,可以但不限于采用以下方式处理新增坏块:检测所述一个或者多个闪存芯片上的新增坏块;将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表,以及所述非易失内存芯片上存储的所述目标坏块列表。
可选的,在本实施例中,可以但不限于通过多种方式检测一个或者多个闪存芯片上的新增坏块:根据闪存芯片中的每个块的坏块标记位检测是否有新增的坏块,坏块标记位用于标识块的状态(正常或坏块)。或者,通过全盘扫描闪存芯片的所有块,对每个块进行读取测试来检测坏块,如果某个块无法正常读取或读取结果出现错误,就可以判定该块为坏块。或者,维护一个坏块管理表,记录已知的坏块信息,在每次操作闪存芯片之前,可以先读取坏块管理表,然后针对新增的块进行读取测试,如果出现读取错误,则将该块添加到坏块管理表。或者,通过执行自检命令或读取自检寄存器来检测新增的坏块,使用自检功能对闪存芯片中的块进行读取测试,并标记出坏块的位置等。
在一个示例性实施例中,可以但不限于采用以下方式检测所述一个或者多个闪存芯片上的新增坏块:对每个加载的数据执行写入操作后,检测所述每个加载的数据在闪存芯片上所在的存储块的读状态寄存器;在所述读状态寄存器的最低位为1的情况下,确定所述存储块为新增坏块。
可选的,在本实施例中,可以但不限于根据执行写入操作的结果从而检测是否存在新增坏块,在对每个加载的数据执行写入操作的情况下,每个加载的数据在闪存芯片上所在的存储块的读状态寄存器的最低位可以但不限于用于指示是否存在新增坏块,每个加载的数据在闪存芯片上所在的存储块的读状态寄存器的最低位可以但不限于包括:0、1等。并且,可以但不限于设定存储块的读状态寄存器的最低位为特定数值的情况下,确定存储块为新增坏块。
在一个示例性实施例中,可以但不限于采用以下方式所述将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表,以及所述非易失内存芯片上存储的所述目标坏块列表:在所述确定所述存储块为新增坏块之后,将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表;在对全部加载的数据执行写入操作后,获取检测出的全部新增坏块,得到新增坏块集合;将所述新增坏块集合更新至所述非易失内存芯片上存储的所述目标坏块列表。
可选的,在本实施例中,可以但不限于在存储块为新增坏块的情况下,立即将新增坏块更新至目标坏块列表。或者,可以但不限于在获取检测出的全部新增坏块的情况下,再将新增坏块更新至目标坏块列表。由于目标坏块列表存储在随机存取存储器以及非易失内存芯片上,因此,可以但不限于在存储块为新增坏块的情况下,立即将新增坏块更新至随机存取存储器上存储的目标坏块列表,在获取检测出的全部新增坏块的情况下,再将全部新增坏块更新至非易失内存芯片上存储的目标坏块列表。
在一个示例性实施例中,可以但不限于采用以下方式检测所述一个或者多个闪存芯片上的新增坏块:遍历所述目标坏块列表中的每个块地址;检测当前块地址是否为1;在当前块地址为1的情况下,对当前块地址执行编程操作;在当前块地址不为1的情况下,继续检测下一个块地址是否为1;在所述编程操作后检测当前块地址的读状态寄存器的最低位是否为1;在读状态寄存器的最低位为1的情况下,将当前块地址作为新增坏块在所述目标坏块列表中当前块地址上写0;在当前块地址上写0之后,或者,读状态寄存器的最低位不为1的情况下,检测下一个块地址,直至完成检测。
在一个示例性实施例中,提供了一种目标坏块列表的更新过程的示例。图5是根据本申请实施例的一种目标坏块列表的更新过程的流程图,如图5所示,可以但不限于通过以下步骤更新目标坏块列表:
步骤S502:读取坏块列表;
步骤S504:检测当前块地址是否为1;
步骤S506:在当前块地址为1的情况下,对当前块地址执行编程操作;
或者,在当前块地址不为1的情况下,对下一个块地址执行步骤S502;
步骤S508:在编程操作后检测当前块地址的读状态寄存器的最低位;
步骤S510:检测当前块地址的读状态寄存器的最低位是否为1;
步骤S512:在当前块地址的读状态寄存器的最低位为1的情况下,更新坏块信息列表(即目标坏块列表);
或者,在当前块地址的读状态寄存器的最低位不为1的情况下,检测下一个块地址,直至完成检测;
步骤S514:在得到更新后的目标坏块列表的情况下,将目标坏块列表存储至存储设备上部署的非易失内存芯片上。
在上述步骤S204提供的技术方案中,闪存芯片的编程周期可以但不限于包括数据加载和编程,可以但不限于在闪存芯片中的每个存储阵列均完成数据加载的情况下,再将加载的数据写入多个存储阵列。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在本实施例中还提供了一种存储设备,图6是根据本申请实施例的存储设备的结构框图,如图6所示,该存储设备包括:处理器芯片602以及一个或者多个闪存芯片(604-1至604-n),每个所述闪存芯片上划分了N个存储阵列,N为正整数,其中,所述处理器芯片分别与所述一个或者多个闪存芯片连接,目标闪存芯片是所述一个或者多个闪存芯片中的每个闪存芯片;所述处理器芯片,用于依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置;执行所述寄存器存储的写指令和地址,使用缓存中加载的数据对所述N个存储阵列进行页编程。
通过上述存储设备,存储设备上部署了一个或者多个闪存芯片,目标闪存芯片是一个或者多个闪存芯片中的每个闪存芯片,依次对目标闪存芯片上划分的多个存储阵列中每个存储阵列进行数据加载,多个存储阵列均完成数据加载的情况下,将加载的数据写入多个存储阵列,由于对目标闪存芯片上划分的多个存储阵列中的每个存储阵列都进行了数据加载,使得存储设备上部署的一个或者多个闪存芯片能够同时将加载的数据写入多个存储阵列。因此,可以解决存储设备的存储效率较低问题,达到提高存储设备的存储效率效果。
在一个示例性实施例中,所述存储设备还用于执行:所述目标闪存芯片被划分为双存储阵列,将第1个存储阵列的写指令和地址写入寄存器,并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置;将第2个存储阵列的写指令和地址写入寄存器,并将所述第2个存储阵列的数据写入缓存中所述第2个存储阵列对应的缓存位置,得到所述加载的数据。从而实现依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置。
在一个示例性实施例中,在所述存储设备上部署了多个闪存芯片的情况下,将所述多个闪存芯片划分为N组闪存芯片,其中,N满足,T1用于指示加载时间,T2用于指示编程时间,以使所述存储设备达到最大编程速度;所述N组闪存芯片中每组闪存芯片并行操作且读写操作相同。
在一个示例性实施例中,所述存储设备还用于执行:将所述存储设备上部署的12个闪存芯片分成2组,每组6个闪存芯片采用流水线式并行操作,每个闪存芯片含有4个目标,流水级数为8级。从而实现将所述多个闪存芯片划分为N组闪存芯片。
在一个示例性实施例中,所述处理器芯片上部署了随机存取存储器,所述存储设备上部署了非易失内存芯片,其中,所述处理器芯片,用于在所述依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置之前,构建所述存储阵列对应的目标坏块列表,其中,所述目标坏块列表用于记录所述一个或者多个闪存芯片上存在的坏块的位置;将所述目标坏块列表存储至所述随机存取存储器中,并将所述目标坏块列表存储至所述非易失内存芯片上。
在一个示例性实施例中,所述存储设备还用于执行:在检测到所述存储设备掉电并重新上电后,从所述非易失内存芯片上读取所述目标坏块列表;将所述目标坏块列表写入所述随机存取存储器。
在一个示例性实施例中,所述存储设备还用于执行:获取多个闪存芯片中每个闪存芯片的坏块列表,得到多个坏块列表;将所述多个坏块列表合并,得到所述存储设备对应的目标坏块列表。从而实现了在所述存储设备上部署了多个闪存芯片的情况下,所述构建所述存储阵列对应的目标坏块列表。
在一个示例性实施例中,所述存储设备还用于执行:将所述多个坏块列表求并集,得到所述目标坏块列表;按照所述多个闪存芯片的分组对所述多个坏块列表进行分组,得到多组坏块列表集合;对每组坏块列表集合中的坏块列表求并集,得到多个所述目标坏块列表。从而实现了将所述多个坏块列表合并,得到所述存储设备对应的目标坏块列表。
在一个示例性实施例中,所述存储设备还用于执行:获取每个闪存芯片中每块第一页的第8192个字节;检测当前字节是否为00H;在当前字节为00H的情况下,将当前块在坏块列表中对应的地址写0;在当前字节不为00H的情况下,检测当前闪存芯片中下一块第一页的第8192个字节,直至到达当前闪存芯片最后一块;确定当前闪存芯片是否为最后一个闪存芯片;在当前闪存芯片不为最后一个闪存芯片的情况下,开始检测下一个闪存芯片中每块第一页的第8192个字节。从而实现了获取多个闪存芯片中每个闪存芯片的坏块列表。
在一个示例性实施例中,所述存储设备还用于执行:检测所述一个或者多个闪存芯片上的新增坏块;将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表,以及所述非易失内存芯片上存储的所述目标坏块列表。
在一个示例性实施例中,所述存储设备还用于执行:对每个加载的数据执行写入操作后,检测所述每个加载的数据在闪存芯片上所在的存储块的读状态寄存器;在所述读状态寄存器的最低位为1的情况下,确定所述存储块为新增坏块。从而实现了检测所述一个或者多个闪存芯片上的新增坏块。
在一个示例性实施例中,所述存储设备还用于执行:在所述确定所述存储块为新增坏块之后,将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表;在对全部加载的数据执行写入操作后,获取检测出的全部新增坏块,得到新增坏块集合;将所述新增坏块集合更新至所述非易失内存芯片上存储的所述目标坏块列表。从而实现了将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表,以及所述非易失内存芯片上存储的所述目标坏块列表。
在一个示例性实施例中,所述存储设备还用于执行:遍历所述目标坏块列表中的每个块地址;检测当前块地址是否为1;在当前块地址为1的情况下,对当前块地址执行编程操作;在当前块地址不为1的情况下,继续检测下一个块地址是否为1;在所述编程操作后检测当前块地址的读状态寄存器的最低位是否为1;在读状态寄存器的最低位为1的情况下,将当前块地址作为新增坏块在所述目标坏块列表中当前块地址上写0;在当前块地址上写0之后,或者,读状态寄存器的最低位不为1的情况下,检测下一个块地址,直至完成检测。从而实现了检测所述一个或者多个闪存芯片上的新增坏块。
在本实施例中还提供了一种硬盘阵列卡,图7是根据本申请实施例的硬盘阵列卡的结构框图,如图7所示,该硬盘阵列卡包括:片上系统702以及多个固态硬盘(704-1至704-n),其中,所述片上系统70分别与所述多个固态硬盘(704-1至704-n)连接,目标闪存芯片是每个所述固态硬盘中的闪存芯片,所述目标闪存芯片上划分了多个存储阵列;所述片上系统,用于执行时实现上述任一项方法实施例中的步骤。
通过上述硬盘阵列片,存储设备上部署了一个或者多个闪存芯片,目标闪存芯片是一个或者多个闪存芯片中的每个闪存芯片,依次对目标闪存芯片上划分的多个存储阵列中每个存储阵列进行数据加载,多个存储阵列均完成数据加载的情况下,将加载的数据写入多个存储阵列,由于对目标闪存芯片上划分的多个存储阵列中的每个存储阵列都进行了数据加载,使得存储设备上部署的一个或者多个闪存芯片能够同时将加载的数据写入多个存储阵列。因此,可以解决存储设备的存储效率较低问题,达到提高存储设备的存储效率效果。
在一个示例性实施例中,上述硬盘阵列卡还用于:所述目标闪存芯片被划分为双存储阵列,将第1个存储阵列的写指令和地址写入寄存器,并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置;将第2个存储阵列的写指令和地址写入寄存器,并将所述第2个存储阵列的数据写入缓存中所述第2个存储阵列对应的缓存位置,得到所述加载的数据。
在一个示例性实施例中,上述硬盘阵列卡还用于:在所述存储设备上部署了多个闪存芯片的情况下,将所述多个闪存芯片划分为N组闪存芯片,其中,N满足,T1用于指示加载时间,T2用于指示编程时间,以使所述存储设备达到最大编程速度,所述N组闪存芯片中每组闪存芯片并行操作且读写操作相同。
在一个示例性实施例中,上述硬盘阵列卡还用于:将所述存储设备上部署的12个闪存芯片分成2组,每组6个闪存芯片采用流水线式并行操作,每个闪存芯片含有4个目标,流水级数为8级。
在一个示例性实施例中,上述硬盘阵列卡还用于:构建所述存储阵列对应的目标坏块列表,其中,所述目标坏块列表用于记录所述一个或者多个闪存芯片上存在的坏块的位置;将所述目标坏块列表存储至所述处理器芯片上的随机存取存储器中,并将所述目标坏块列表存储至所述存储设备上部署的非易失内存芯片上。
在一个示例性实施例中,上述硬盘阵列卡还用于:在检测到所述存储设备掉电并重新上电后,从所述非易失内存芯片上读取所述目标坏块列表;将所述目标坏块列表写入所述随机存取存储器。
在一个示例性实施例中,上述硬盘阵列卡还用于:获取多个闪存芯片中每个闪存芯片的坏块列表,得到多个坏块列表;将所述多个坏块列表合并,得到所述存储设备对应的目标坏块列表。
在一个示例性实施例中,上述硬盘阵列卡还用于:将所述多个坏块列表求并集,得到所述目标坏块列表;按照所述多个闪存芯片的分组对所述多个坏块列表进行分组,得到多组坏块列表集合;对每组坏块列表集合中的坏块列表求并集,得到多个所述目标坏块列表。
在一个示例性实施例中,上述硬盘阵列卡还用于:获取每个闪存芯片中每块第一页的第8192个字节;检测当前字节是否为00H;在当前字节为00H的情况下,将当前块在坏块列表中对应的地址写0;在当前字节不为00H的情况下,检测当前闪存芯片中下一块第一页的第8192个字节,直至到达当前闪存芯片最后一块;确定当前闪存芯片是否为最后一个闪存芯片;在当前闪存芯片不为最后一个闪存芯片的情况下,开始检测下一个闪存芯片中每块第一页的第8192个字节。
在一个示例性实施例中,上述硬盘阵列卡还用于:检测所述一个或者多个闪存芯片上的新增坏块;将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表,以及所述非易失内存芯片上存储的所述目标坏块列表。
在一个示例性实施例中,上述硬盘阵列卡还用于:对每个加载的数据执行写入操作后,检测所述每个加载的数据在闪存芯片上所在的存储块的读状态寄存器;在所述读状态寄存器的最低位为1的情况下,确定所述存储块为新增坏块。
在一个示例性实施例中,上述硬盘阵列卡还用于:在所述确定所述存储块为新增坏块之后,将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表;在对全部加载的数据执行写入操作后,获取检测出的全部新增坏块,得到新增坏块集合;将所述新增坏块集合更新至所述非易失内存芯片上存储的所述目标坏块列表。
在一个示例性实施例中,上述硬盘阵列卡还用于:遍历所述目标坏块列表中的每个块地址;检测当前块地址是否为1;在当前块地址为1的情况下,对当前块地址执行编程操作;在当前块地址不为1的情况下,继续检测下一个块地址是否为1;在所述编程操作后检测当前块地址的读状态寄存器的最低位是否为1;在读状态寄存器的最低位为1的情况下,将当前块地址作为新增坏块在所述目标坏块列表中当前块地址上写0;在当前块地址上写0之后,或者,读状态寄存器的最低位不为1的情况下,检测下一个块地址,直至完成检测。
在本实施例中还提供了一种存储设备的控制装置,应用于所述存储设备上部署的处理器芯片,所述存储设备上还部署了一个或者多个闪存芯片,每个所述闪存芯片上划分了N个存储阵列,N为正整数,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图8是根据本申请实施例的存储设备的控制装置的结构框图,如图8所示,该装置包括:
第一写入模块82,用于对于每个所述闪存芯片作为目标闪存芯片,依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置;
执行模块84,用于执行所述寄存器存储的写指令和地址,使用缓存中加载的数据对所述N个存储阵列进行页编程。
通过上述装置,存储设备上部署了一个或者多个闪存芯片,目标闪存芯片是一个或者多个闪存芯片中的每个闪存芯片,依次对目标闪存芯片上划分的多个存储阵列中每个存储阵列进行数据加载,多个存储阵列均完成数据加载的情况下,将加载的数据写入多个存储阵列,由于对目标闪存芯片上划分的多个存储阵列中的每个存储阵列都进行了数据加载,使得存储设备上部署的一个或者多个闪存芯片能够同时将加载的数据写入多个存储阵列。因此,可以解决存储设备的存储效率较低问题,达到提高存储设备的存储效率效果。
在一个示例性实施例中,所述第一写入模块,包括:
第一写入单元,用于所述目标闪存芯片被划分为双存储阵列,将第1个存储阵列的写指令和地址写入寄存器,并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置;
第二写入单元,用于将第2个存储阵列的写指令和地址写入寄存器,并将所述第2个存储阵列的数据写入缓存中所述第2个存储阵列对应的缓存位置,得到所述加载的数据。
在一个示例性实施例中,所述装置,还包括:
划分模块,用于在所述存储设备上部署了多个闪存芯片的情况下,将所述多个闪存芯片划分为N组闪存芯片,其中,N满足,T1用于指示加载时间,T2用于指示编程时间,以使所述存储设备达到最大编程速度,所述N组闪存芯片中每组闪存芯片并行操作且读写操作相同。
在一个示例性实施例中,所述划分模块,用于:将所述存储设备上部署的12个闪存芯片分成2组,每组6个闪存芯片采用流水线式并行操作,每个闪存芯片含有4个目标,流水级数为8级。
在一个示例性实施例中,所述装置,还包括:
构建模块,用于构建所述存储阵列对应的目标坏块列表,其中,所述目标坏块列表用于记录所述一个或者多个闪存芯片上存在的坏块的位置;
存储模块,用于将所述目标坏块列表存储至所述处理器芯片上的随机存取存储器中,并将所述目标坏块列表存储至所述存储设备上部署的非易失内存芯片上。
在一个示例性实施例中,所述装置,还包括:
第一检测模块,用于在检测到所述存储设备掉电并重新上电后,从所述非易失内存芯片上读取所述目标坏块列表;
第二写入模块,用于将所述目标坏块列表写入所述随机存取存储器。
在一个示例性实施例中,所述构建模块,包括:
获取单元,用于获取多个闪存芯片中每个闪存芯片的坏块列表,得到多个坏块列表;
合并单元,用于将所述多个坏块列表合并,得到所述存储设备对应的目标坏块列表。
在一个示例性实施例中,所述合并单元,还用于以下之一:将所述多个坏块列表求并集,得到所述目标坏块列表;按照所述多个闪存芯片的分组对所述多个坏块列表进行分组,得到多组坏块列表集合;对每组坏块列表集合中的坏块列表求并集,得到多个所述目标坏块列表。
在一个示例性实施例中,所述获取单元,还用于:获取每个闪存芯片中每块第一页的第8192个字节;检测当前字节是否为00H;在当前字节为00H的情况下,将当前块在坏块列表中对应的地址写0;在当前字节不为00H的情况下,检测当前闪存芯片中下一块第一页的第8192个字节,直至到达当前闪存芯片最后一块;确定当前闪存芯片是否为最后一个闪存芯片;在当前闪存芯片不为最后一个闪存芯片的情况下,开始检测下一个闪存芯片中每块第一页的第8192个字节。
在一个示例性实施例中,所述装置,还包括:
第二检测模块,用于检测所述一个或者多个闪存芯片上的新增坏块;
更新模块,用于将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表,以及所述非易失内存芯片上存储的所述目标坏块列表。
在一个示例性实施例中,所述第二检测模块,包括:
检测单元,用于对每个加载的数据执行写入操作后,检测所述每个加载的数据在闪存芯片上所在的存储块的读状态寄存器;
确定单元,用于在所述读状态寄存器的最低位为1的情况下,确定所述存储块为新增坏块。
在一个示例性实施例中,所述更新模块,还用于:在所述确定所述存储块为新增坏块之后,将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表;在对全部加载的数据执行写入操作后,获取检测出的全部新增坏块,得到新增坏块集合;将所述新增坏块集合更新至所述非易失内存芯片上存储的所述目标坏块列表。
在一个示例性实施例中,所述第二检测模块,还用于:遍历所述目标坏块列表中的每个块地址;检测当前块地址是否为1;在当前块地址为1的情况下,对当前块地址执行编程操作;在当前块地址不为1的情况下,继续检测下一个块地址是否为1;在所述编程操作后检测当前块地址的读状态寄存器的最低位是否为1;在读状态寄存器的最低位为1的情况下,将当前块地址作为新增坏块在所述目标坏块列表中当前块地址上写0;在当前块地址上写0之后,或者,读状态寄存器的最低位不为1的情况下,检测下一个块地址,直至完成检测。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (19)

1.一种存储设备的控制方法,应用于所述存储设备上部署的处理器芯片,其特征在于,
所述存储设备上还部署了一个或者多个闪存芯片,每个所述闪存芯片上划分了N个存储阵列,N为正整数,所述方法包括:
对于每个所述闪存芯片作为目标闪存芯片,依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置;
执行所述寄存器存储的写指令和地址,使用缓存中加载的数据对所述N个存储阵列进行页编程;
其中,所述依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置,包括:所述目标闪存芯片被划分为双存储阵列,将第1个存储阵列的写指令和地址写入寄存器,并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置;将第2个存储阵列的写指令和地址写入寄存器,并将所述第2个存储阵列的数据写入缓存中所述第2个存储阵列对应的缓存位置,得到所述加载的数据。
2.根据权利要求1所述的方法,其特征在于,
所述方法还包括:
在所述存储设备上部署了多个闪存芯片的情况下,将所述多个闪存芯片划分为N组闪存芯片,其中,N满足,T1用于指示加载时间,T2用于指示编程时间,以使所述存储设备达到最大编程速度,所述N组闪存芯片中每组闪存芯片并行操作且读写操作相同。
3.根据权利要求2所述的方法,其特征在于,
所述将所述多个闪存芯片划分为N组闪存芯片,包括:
将所述存储设备上部署的12个闪存芯片分成2组,每组6个闪存芯片采用流水线式并行操作,每个闪存芯片含有4个目标,流水级数为8级。
4.根据权利要求1所述的方法,其特征在于,
在所述依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置之前,所述方法还包括:
构建所述存储阵列对应的目标坏块列表,其中,所述目标坏块列表用于记录所述一个或者多个闪存芯片上存在的坏块的位置;
将所述目标坏块列表存储至所述处理器芯片上的随机存取存储器中,并将所述目标坏块列表存储至所述存储设备上部署的非易失内存芯片上。
5.根据权利要求4所述的方法,其特征在于,
在所述将所述目标坏块列表存储至所述存储设备上部署的非易失内存芯片上之后,所述方法还包括:
在检测到所述存储设备掉电并重新上电后,从所述非易失内存芯片上读取所述目标坏块列表;
将所述目标坏块列表写入所述随机存取存储器。
6.根据权利要求4所述的方法,其特征在于,
在所述存储设备上部署了多个闪存芯片的情况下,所述构建所述存储阵列对应的目标坏块列表,包括:
获取多个闪存芯片中每个闪存芯片的坏块列表,得到多个坏块列表;
将所述多个坏块列表合并,得到所述存储设备对应的目标坏块列表。
7.根据权利要求6所述的方法,其特征在于,
所述将所述多个坏块列表合并,得到所述存储设备对应的目标坏块列表,包括以下之一:
将所述多个坏块列表求并集,得到所述目标坏块列表;
按照所述多个闪存芯片的分组对所述多个坏块列表进行分组,得到多组坏块列表集合;对每组坏块列表集合中的坏块列表求并集,得到多个所述目标坏块列表。
8.根据权利要求6所述的方法,其特征在于,
所述获取多个闪存芯片中每个闪存芯片的坏块列表,包括:
获取每个闪存芯片中每块第一页的第8192个字节;
检测当前字节是否为00H;
在当前字节为00H的情况下,将当前块在坏块列表中对应的地址写0;在当前字节不为00H的情况下,检测当前闪存芯片中下一块第一页的第8192个字节,直至到达当前闪存芯片最后一块;
确定当前闪存芯片是否为最后一个闪存芯片;
在当前闪存芯片不为最后一个闪存芯片的情况下,开始检测下一个闪存芯片中每块第一页的第8192个字节。
9.根据权利要求4所述的方法,其特征在于,
在所述使用缓存中加载的数据对所述N个存储阵列进行页编程之后,所述方法还包括:
检测所述一个或者多个闪存芯片上的新增坏块;
将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表,以及所述非易失内存芯片上存储的所述目标坏块列表。
10.根据权利要求9所述的方法,其特征在于,
所述检测所述一个或者多个闪存芯片上的新增坏块,包括:
对每个加载的数据执行写入操作后,检测所述每个加载的数据在闪存芯片上所在的存储块的读状态寄存器;
在所述读状态寄存器的最低位为1的情况下,确定所述存储块为新增坏块。
11.根据权利要求10所述的方法,其特征在于,
所述将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表,以及所述非易失内存芯片上存储的所述目标坏块列表,包括:
在所述确定所述存储块为新增坏块之后,将所述新增坏块更新至所述随机存取存储器上存储的所述目标坏块列表;
在对全部加载的数据执行写入操作后,获取检测出的全部新增坏块,得到新增坏块集合;
将所述新增坏块集合更新至所述非易失内存芯片上存储的所述目标坏块列表。
12.根据权利要求9所述的方法,其特征在于,
所述检测所述一个或者多个闪存芯片上的新增坏块,包括:
遍历所述目标坏块列表中的每个块地址;
检测当前块地址是否为1;
在当前块地址为1的情况下,对当前块地址执行编程操作;在当前块地址不为1的情况下,继续检测下一个块地址是否为1;
在所述编程操作后检测当前块地址的读状态寄存器的最低位是否为1;
在读状态寄存器的最低位为1的情况下,将当前块地址作为新增坏块在所述目标坏块列表中当前块地址上写0;
在当前块地址上写0之后,或者,读状态寄存器的最低位不为1的情况下,检测下一个块地址,直至完成检测。
13.一种存储设备,其特征在于,
包括:处理器芯片以及一个或者多个闪存芯片,每个所述闪存芯片上划分了N个存储阵列,N为正整数,其中,
所述处理器芯片分别与所述一个或者多个闪存芯片连接,目标闪存芯片是所述一个或者多个闪存芯片中的每个闪存芯片;
所述处理器芯片,用于依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置;执行所述寄存器存储的写指令和地址,使用缓存中加载的数据对所述N个存储阵列进行页编程;
其中,所述存储设备还用于执行:所述目标闪存芯片被划分为双存储阵列,将第1个存储阵列的写指令和地址写入寄存器,并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置;将第2个存储阵列的写指令和地址写入寄存器,并将所述第2个存储阵列的数据写入缓存中所述第2个存储阵列对应的缓存位置,得到所述加载的数据。
14.根据权利要求13所述的存储设备,其特征在于,
在所述存储设备上部署了多个闪存芯片的情况下,将所述多个闪存芯片划分为N组闪存芯片,其中,N满足,以使所述存储设备达到最大编程速度;
所述N组闪存芯片中每组闪存芯片并行操作且读写操作相同。
15.根据权利要求13所述的存储设备,其特征在于,
所述处理器芯片上部署了随机存取存储器,所述存储设备上部署了非易失内存芯片,其中,
所述处理器芯片,用于在所述依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置之前,构建所述存储阵列对应的目标坏块列表,其中,所述目标坏块列表用于记录所述一个或者多个闪存芯片上存在的坏块的位置;将所述目标坏块列表存储至所述随机存取存储器中,并将所述目标坏块列表存储至所述非易失内存芯片上。
16.一种硬盘阵列卡,其特征在于,
包括:片上系统以及多个固态硬盘,其中,
所述片上系统分别与所述多个固态硬盘连接,目标闪存芯片是每个所述固态硬盘中的闪存芯片,所述目标闪存芯片上划分了多个存储阵列;
所述片上系统,用于执行时实现所述权利要求1至12任一项中所述的方法的步骤。
17.一种存储设备的控制装置,应用于所述存储设备上部署的处理器芯片,其特征在于,
所述存储设备上还部署了一个或者多个闪存芯片,每个所述闪存芯片上划分了N个存储阵列,N为正整数,所述装置包括:
第一写入模块,用于对于每个所述闪存芯片作为目标闪存芯片,依次连续将所述目标闪存芯片中第1个存储阵列的数据的写指令和地址写入寄存器并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置,直至将第N个存储阵列的写指令和地址写入寄存器并将所述第N个存储阵列的数据写入缓存中所述第N个存储阵列对应的缓存位置;
执行模块,用于执行所述寄存器存储的写指令和地址,使用缓存中加载的数据对所述N个存储阵列进行页编程;
其中,所述第一写入模块,包括:第一写入单元,用于所述目标闪存芯片被划分为双存储阵列,将第1个存储阵列的写指令和地址写入寄存器,并将所述第1个存储阵列的数据写入缓存中所述第1个存储阵列对应的缓存位置;第二写入单元,用于将第2个存储阵列的写指令和地址写入寄存器,并将所述第2个存储阵列的数据写入缓存中所述第2个存储阵列对应的缓存位置,得到所述加载的数据。
18.一种计算机可读存储介质,其特征在于,
所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至12任一项中所述的方法的步骤。
19.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,
所述处理器执行所述计算机程序时实现所述权利要求1至12任一项中所述的方法的步骤。
CN202311344019.3A 2023-10-17 2023-10-17 存储设备的控制方法、装置以及存储设备和硬盘阵列卡 Active CN117075824B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311344019.3A CN117075824B (zh) 2023-10-17 2023-10-17 存储设备的控制方法、装置以及存储设备和硬盘阵列卡

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311344019.3A CN117075824B (zh) 2023-10-17 2023-10-17 存储设备的控制方法、装置以及存储设备和硬盘阵列卡

Publications (2)

Publication Number Publication Date
CN117075824A CN117075824A (zh) 2023-11-17
CN117075824B true CN117075824B (zh) 2024-02-02

Family

ID=88708433

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311344019.3A Active CN117075824B (zh) 2023-10-17 2023-10-17 存储设备的控制方法、装置以及存储设备和硬盘阵列卡

Country Status (1)

Country Link
CN (1) CN117075824B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104794070A (zh) * 2015-04-23 2015-07-22 南京道熵信息技术有限公司 基于动态非覆盖raid技术的固态闪存写缓存系统及方法
CN108121672A (zh) * 2017-08-08 2018-06-05 鸿秦(北京)科技有限公司 一种基于NandFlash存储器多通道的存储阵列控制方法与装置
CN111158604A (zh) * 2019-12-31 2020-05-15 西南科技大学 一种闪存颗粒阵列的物联网时间序列数据存储与检索方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104794070A (zh) * 2015-04-23 2015-07-22 南京道熵信息技术有限公司 基于动态非覆盖raid技术的固态闪存写缓存系统及方法
CN108121672A (zh) * 2017-08-08 2018-06-05 鸿秦(北京)科技有限公司 一种基于NandFlash存储器多通道的存储阵列控制方法与装置
CN111158604A (zh) * 2019-12-31 2020-05-15 西南科技大学 一种闪存颗粒阵列的物联网时间序列数据存储与检索方法

Also Published As

Publication number Publication date
CN117075824A (zh) 2023-11-17

Similar Documents

Publication Publication Date Title
CN106681654B (zh) 映射表载入方法与存储器存储装置
CN111164574A (zh) 基于存储设备内部地址的冗余编码条带
US11237742B2 (en) Apparatus and method for controlling data stored in memory system
US11550678B2 (en) Memory management
CN110825659B (zh) 用于检查存储器系统中的块中的有效数据的设备和方法
US11966329B2 (en) Address map caching for a memory system
CN111625188B (zh) 一种存储器及其数据写入方法与存储系统
CN109710177B (zh) 用于嵌入式系统的事件管理
CN103635968A (zh) 包含存储器系统控制器的设备和相关方法
US11520696B2 (en) Segregating map data among different die sets in a non-volatile memory
US10733094B2 (en) Memory system, controller, method of operating a controller, and method of operating a memory system for processing big data by using compression and decompression
US10949110B2 (en) Configurable mapping system in a non-volatile memory
US20220129206A1 (en) Resource allocation in memory systems based on operation modes
CN105573666A (zh) 盘阵列设备、盘控制设备、固态驱动器、盘控制方法和记录介质
US11822426B2 (en) Memory system, data processing system and operation method of the same
CN111435334B (zh) 在存储器系统中检查有效数据的设备和方法
CN103218308B (zh) 缓冲存储器管理方法、存储器控制器与存储器储存装置
CN111625187A (zh) 一种存储器及其控制方法与存储系统
CN117075824B (zh) 存储设备的控制方法、装置以及存储设备和硬盘阵列卡
US20220164144A1 (en) Method of writing data in nonvolatile memory device and nonvolatile memory device performing the same
US11709781B2 (en) Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same
US11093382B2 (en) System data compression and reconstruction methods and systems
US20230236964A1 (en) Storage controller deallocating memory block, method of operating the same, and method of operating storage device including the same
CN115048051A (zh) 数据读取方法、存储器控制器及存储器存储装置
CN112015339A (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