CN112765055A - 存储设备的控制部件 - Google Patents
存储设备的控制部件 Download PDFInfo
- Publication number
- CN112765055A CN112765055A CN201911060098.9A CN201911060098A CN112765055A CN 112765055 A CN112765055 A CN 112765055A CN 201911060098 A CN201911060098 A CN 201911060098A CN 112765055 A CN112765055 A CN 112765055A
- Authority
- CN
- China
- Prior art keywords
- data
- command
- read
- information
- hardware accelerator
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了控制部件,包括NVMe控制器、CPU组、介质接口控制器和硬件加速器,硬件加速器与NVMe控制器、CPU组以及介质接口控制器耦合,CPU组与介质接口控制器耦合;硬件加速器从NVMe控制器中获取读命令或写命令,并向CPU组发送符合主机与存储设备之间的协议的第一命令,第一命令为读命令或写命令;CPU组从第一命令中获取第一信息,并向硬件加速器指示第一信息,第一信息包括数据索引或用于获取数据索引的信息,数据索引用于获取第一数据或第二数据;介质接口控制器根据硬件加速器的指示,从NVM芯片中读取出第一数据或将第二数据写入NVM芯片,硬件加速器的指示为硬件加速器根据第一信息做出的。减少读写操作过程中占用的CPU资源,从而实现对读写操作的加速。
Description
技术领域
本申请涉及存储技术,特别地,涉及存储设备的控制部件。
背景技术
图1A展示了固态存储设备的框图。固态存储设备100同主机相耦合,用于为主机提供存储能力。主机同固态存储设备100之间可通过多种方式相耦合,耦合方式包括但不限于通过例如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,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备100。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备100包括接口120、控制部件140、一个或多个NVM芯片130以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)、XPoint存储器等是常见的NVM。
接口120可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件140用于控制在接口120、NVM芯片130以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件140可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件140可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件140也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件140的硬件来处理IO(Input/Output)命令。控制部件140还可以耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件140包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片130,并以遵循NVM芯片130的接口协议的方式向NVM芯片130发出命令,以操作NVM芯片130,并接收从NVM芯片130输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
在中国专利申请CN201610009789.6与CN201510053428.1中提供了用于闪存接口控制器的微指令执行方法与装置,中国专利申请CN201610861793.5提供了微指令序列的调度方法与装置,中国专利申请CN201611213754.0提供了IO命令处理方法与固态存储设备,中国专利申请CN201611213755.5提供了大容量NVM接口控制器,将其全文合并于此。
在公开号为CN107783917A的中国专利申请中,提供了通过执行微指令在NVM芯片的控制管脚上产生控制信号,生成操作NVM芯片的命令,使单一闪存控制器兼容不同厂商、不同规模的NVM芯片。将其全文合并于此。
在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。这些情况下,存储设备所接收的读/写命令指示逻辑地址。
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的条目记录了存储设备中以数据页为单位的地址映射关系。
一些存储设备的FTL由存储设备所耦合的主机提供,由主机的存储器存储FTL表,主机的CPU执行软件提供FTL。还有一些被设置在主机与存储设备之间的存储管理装置提供FTL。这些情况下,存储设备所接收的读/写命令指示物理地址。
主机提供给存储设备的命令可能访问FTL表的一个或多个条目所对应的逻辑地址空间。以及控制部件可能将从接口120接收的命令改变形态(例如,根据FTL条目所对应的逻辑地址空间大小切分命令),并处理改变形态的命令。为了清楚的目的,在本文中,以存储设备接收的读/写命令访问单一FTL条目为例来描述。
诸如NAND闪存的NVM芯片是不可靠存储介质,其中存储的数据会存在错误比特。为识别与校正错误比特,对向NVM芯片写入的数据实施ECC(错误校验码,ErrorCorrectionCode)编码,并将编码得到的校验数据同数据一同写入NVM芯片。在从NVM芯片读出数据时,对读出的数据(连同校验数据)实施ECC解码以得到正确的数据。当数据中的错误比特较多,实施ECC解码无法得到正确的数据。可选地,存储设备的控制部件还采取其他一些数据校正的措施(例如,重读(Read-Retry),RAID数据重建等)以尝试恢复正确的数据。依然存在一些情况,采用了多种或所有数据校验措施依然无法得到正确的数据,将这种情况称为发生了UECC(不可纠正错误,uncorrectable error correction code)。
发明内容
根据本申请的第一方面,提供了根据本申请的第一方面的第一控制部件,包括:NVMe控制器、CPU组、介质接口控制器和硬件加速器,所述硬件加速器与所述NVMe控制器、所述CPU组以及所述介质接口控制器耦合,所述CPU组与所述介质接口控制器耦合;其中,所述硬件加速器从所述NVMe控制器中获取读命令或写命令,所述硬件加速器向所述CPU组发送符合主机与存储设备之间的协议的第一命令,所述第一命令为读命令或写命令;所述CPU组从所述第一命令中获取第一信息,并向所述硬件加速器指示所述第一信息,所述第一信息包括数据索引或用于获取所述数据索引的信息,所述数据索引用于获取第一数据或第二数据;所述介质接口控制器根据所述硬件加速器的指示,从NVM芯片中读取出所述第一数据或将所述第二数据写入所述NVM芯片,所述硬件加速器的指示为所述硬件加速器根据所述第一信息做出的。
根据本申请第一方面的第一控制部件,提供了根据本申请的第一方面的第二控制部件,所述NVMe控制器接收主机发送的读命令或写命令,并向所述硬件加速器发送从主机接收到的命令或者发送指示信息,所述指示信息用于指示所述硬件加速器从所述NVMe控制器中抓取读命令或写命令。
根据本申请第一方面的第一或第二控制部件,提供了根据本申请的第一方面的第三控制部件,在所述第一命令为读命令时,所述介质接口控制器根据所述硬件加速器的指示,从所述NVM芯片中读取出所述第一数据,并将所述第一数据存储至与所述控制部件耦合的DRAM。
根据本申请第一方面的第一或第二控制部件,提供了根据本申请的第一方面的第四控制部件,在所述第一命令为写命令时,所述介质接口控制器根据所述硬件加速器的指示,从与所述控制部件耦合的DRAM中读取出所述第二数据,并将所述第二数据写入所述NVM芯片。
根据本申请第一方面的第三控制部件,提供了根据本申请的第一方面的第五控制部件,所述硬件加速器根据所述介质接口控制器反馈的标签信息,指示所述NVMe控制器将所述第一数据从所述DRAM中搬移到主机。
根据本申请第一方面的第四控制部件,提供了根据本申请的第一方面的第六控制部件,所述硬件加速器还根据所述第一信息,指示所述NVMe控制器将所述第二数据从所述主机搬运至所述DRAM。
根据本申请第一方面的第六控制部件,提供了根据本申请的第一方面的第七控制部件,所述硬件加速器为所述第二数据分配所述DRAM中的存储空间,并向所述NVMe控制器和所述介质接口控制器指示所述存储空间。
根据本申请第一方面的第一至第七控制部件之一,提供了根据本申请的第一方面的第八控制部件,所述CPU组接收到读命令之后,获取所述第一数据所在逻辑地址,并根据所述逻辑地址访问闪存转换层,以获取与所述逻辑地址对应的物理地址;所述CPU组向所述介质接口控制器指示所述物理地址,以使所述介质接口控制器根据所述物理地址从所述NVM芯片中读取出所述第一数据。
根据本申请第一方面的第一至第八控制部件之一,提供了根据本申请的第一方面的第九控制部件,所述介质接口控制器接收所述CPU组提供的第二信息,第二信息指示从所述NVM芯片的物理地址读出所述第一数据;以及所述介质接口控制器响应于将从所述NVM芯片中读取的所述第一数据已存储到所述DRAM,而向所述硬件加速器提供所述标签信息。
根据本申请第一方面的第九控制部件,提供了根据本申请的第一方面的第十控制部件,所述第二信息还携带所述DRAM中用于存储所述第一数据的存储空间的指示信息。
根据本申请第一方面的第一至第八控制部件之一,提供了根据本申请的第一方面的第十一控制部件,所述介质接口控制器向CPU组发送第二标签信息,所述第二标签信息用于表征所述介质接口控制器接收所述第二数据已完成,所述第二标签信息包括与写命令对应的标识信息;所述介质接口控制器接收所述CPU组提供的第三信息,所述第三信息指示将所述第二数据写入所述NVM芯片的物理地址;以及所述介质接口控制器向所述CPU组提供第四信息,所述第四信息指示所述第二数据已被写入所述NVM芯片。
根据本申请第一方面的第十一控制部件,提供了根据本申请的第一方面的第十二控制部件,若所述第一命令为写命令,所述CPU组记录所述第一命令要写入的数据长度;所述CPU组响应于收到所述介质接口控制器提供的所述第四信息,根据所述第四信息记录为所述第一命令已写入所述NVM芯片的数据的长度;所述CPU响应于所述第一命令要写入的数据的长度等于为所述第一命令已写入所述NVM芯片的长度,而获知所述第一命令已处理完成。
根据本申请第一方面的第一至第十二控制部件之一,提供了根据本申请的第一方面的第十三控制部件,在传输所述第一数据或所述第二数据时,所述硬件加速器对所述第一数据解密或者对所述第二数据加密。
根据本申请第一方面的第一至第十三控制部件之一,提供了根据本申请的第一方面的第十四控制部件,所述硬件加速器记录所述第一数据的数据长度,其中,所述第一数据的数据长度为所述硬件加速器根据所述第一信息获取的;响应于所述标签信息,所述硬件加速器根据所述标签信息记录为所述第一命令已向所述主机发送的数据的长度;所述硬件加速器响应于所述第一命令要读取的数据的长度等于为所述第一命令已向所述主机发送的数据的长度,而向所述主机发送用于表征读命令处理完成的状态信息。
根据本申请第一方面的第一至第十四控制部件之一,提供了根据本申请的第一方面的第十五控制部件,若所述第一命令为读命令,所述硬件加速器记录所述第一命令要读取的数据长度;所述硬件加速器响应于收到所述标签信息,根据所述标签信息记录为所述第一命令已存储到所述DRAM的数据的长度。
根据本申请第一方面的第十五控制部件,提供了根据本申请的第一方面的第十六控制部件,所述硬件加速器响应于所述第一命令要读取的数据的长度等于为所述第一命令已存储到所述DRAM的数据的长度,而指示所述NVMe控制器根据所述标识信息从所述DRAM中获取为所述第一命令已读取的数据。
根据本申请第一方面的第十五控制部件,提供了根据本申请的第一方面的第十七控制部件,所述硬件加速器响应于所述第一命令要读取的数据的部分或全部已存储到所述DRAM,而指示所述NVMe控制器根据所述标识信息从所述DRAM中获取为所述第一命令已读取的数据。
根据本申请第一方面的第十六或第十七控制部件,提供了根据本申请的第一方面的第十八控制部件,响应于所述第一命令要读取的数据已全部发送给主机,指示所述NVMe控制器向主机发送用于表征读命令处理完成的状态信息。
根据本申请第一方面的第一至第十八控制部件之一,提供了根据本申请的第二方面的第十九控制部件,其中所述硬件加速器是根据本申请第二方面的第一至第十三硬件加速器之一。
根据本申请的第二方面,提供了根据本申请的第二方面的第一硬件加速器,包括:命令管理器、读写处理器、缓冲存储器,其中,所述命令管理器判断从主机获取的读命令或写命令是否符合主机与存储设备之间的协议,以及向CPU组发送符合所述协议的第一命令,所述第一命令为读命令或写命令,所述CPU组包括至少一个CPU;所述读写处理器根据第一信息获取数据索引,以及,指示数据搬移单元获取与所述第一命令对应的读/写数据,其中,所述第一信息为所述CPU组从所述第一命令中获取的,所述第一信息包括所述数据索引或用于获取所述数据索引的信息,若所述第一命令为读命令,所述读/写数据包括所述数据搬移单元从动态随机存取存储器DRAM中获取的第一数据;所述缓冲存储器缓存所述数据索引。
根据本申请的第二方面的第一硬件加速器,提供了根据本申请的第二方面的第二硬件加速器,若所述第一命令为写命令,所述读/写数据包括所述数据搬移单元按照所述数据索引从主机中获取的第二数据。
根据本申请的第二方面的第一或第二硬件加速器,提供了根据本申请的第二方面的第三硬件加速器,所述读写处理器接收介质接口控制器发送的标签信息,所述标签信息用于表征所述介质接口控制器将所述第一数据从NVM中读取到所述DRAM已完成,所述标签信息包括与所述第一命令对应的标识信息;所述读写处理器指示所述数据搬移单元根据所述标识信息从所述DRAM中获取所述第一数据、并根据所述数据索引向主机发送所述第一数据。
根据本申请的第二方面的第三硬件加速器,提供了根据本申请的第二方面的第四硬件加速器,所述标签信息为所述介质接口控制器在所述第一数据存储到所述DRAM之后,向所述读写处理器反馈的。
根据本申请的第二方面的第三硬件加速器,提供了根据本申请的第二方面的第五硬件加速器,若所述第一命令为读命令,所述读写处理器记录所述第一数据的数据长度,其中,所述第一数据的数据长度为所述读写处理器根据所述第一信息获取的;响应于所述标签信息,所述读写处理器根据所述标签信息记录为所述第一命令已向所述主机发送的数据的长度;所述读写处理器响应于所述第一命令要读取的数据的长度等于为所述第一命令已向所述主机发送的数据的长度,而向所述主机发送用于表征读命令处理完成的状态信息。
根据本申请的第二方面的第三硬件加速器,提供了根据本申请的第二方面的第六硬件加速器,若所述第一命令为读命令,所述读写处理器记录所述第一命令要读取的数据长度;所述读写处理器响应于收到所述标签信息,根据所述标签信息记录为所述第一命令已读取到所述DRAM的数据的长度;所述读写处理器响应于所述第一命令要读取的数据的长度等于为所述第一命令已读取到所述DRAM的数据的长度,而指示所述数据搬移单元根据所述标识信息从所述DRAM中获取为所述第一命令已读取的数据,并向主机发送用于表征读命令处理完成的状态信息。
根据本申请的第二方面的第二硬件加速器,提供了根据本申请的第二方面的第七硬件加速器,若所述第一命令为写命令,所述读写处理器在所述缓冲存储器获取到所述数据索引之后,指示所述数据搬移单元从与所述数据索引对应的主机地址中获取所述第二数据,并向介质接口控制器发送所述第二数据。
根据本申请的第二方面的第五硬件加速器,提供了根据本申请的第二方面的第八硬件加速器,所述读写处理器为所述第二数据分配所述DRAM的存储空间,并向所述介质接口控制器指示所分配的存储空间,以控制所述NVM存储所述第二数据。
根据本申请的第二方面的第二至第八硬件加速器之一,提供了根据本申请的第二方面的第九硬件加速器,所述硬件加速器还包括至少两个缓存单元,在所述数据搬移单元从主机获取第二数据或向主机发送第一数据时的过程中,所述至少两个缓存单元采用乒乓方式缓存第一数据或第二数据。
根据本申请的第二方面的第二至第九硬件加速器之一,提供了根据本申请的第二方面的第十硬件加速器,所述读写处理器响应于所述第二数据传输到所述介质接口控制器,向所述主机发送用于表征写命令处理完成的状态信息。
根据本申请的第二方面的第一至第十硬件加速器之一,提供了根据本申请的第二方面的第十一硬件加速器,所述硬件加速器还包括安全单元,所述安全单元对缓存单元中的第一数据解密或者对缓存单元中的第二数据加密。
根据本申请的第二方面的第一至第十一硬件加速器之一,提供了根据本申请的第二方面的第十二硬件加速器,在判断从主机获取的读命令或写命令是否符合所述协议之前,所述命令管理器获取所述主机发送的第二命令,所述第二命令为读命令、写命令或除读命令和写命令之外的其它命令;判断所述第二命令是否为读命令或写命令。
根据本申请的第二方面的第一至第十二硬件加速器之一,提供了根据本申请的第二方面的第十三硬件加速器,若判断所述第二命令不是读命令或写命令,所述命令管理器向所述主机发送指示命令错误的响应信息。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1A为现有技术中的存储设备的框图;
图1B为现有技术中的控制部件的结构示意图;
图2为本申请实施例提供的控制部件的一种结构示意图;
图3为本申请实施例提供的硬件加速器的一种结构示意图;
图4为本申请实施例提供的控制部件的有一种结构示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
重复地使用短语“在各种实施例中”、“在一些实施例中”等。这些短语通常不指代相同的实施例;然而,这些短语可能指代相同的实施例。除非上下文另有规定,否则术语“包含”、“具有”和“包括”是同义的。短语“A和/或B”表示(A)、(B)或(A和B)。短语“A/B”和“A或B”表示(A)或(B)。短语“A和B中的至少一个”表示(A)、(B)或(A和B)。
图1B示例性的给出了现有技术中的控制部件140的一种可能的结构。如图1B所示,控制部件140包括NVMe控制器141、CPU组142和介质接口控制器143。NVMe控制器141分别与CPU组142和图1A中的接口120耦合。例如,NVMe控制器141从接口120接收主机发送第一读命令。NVMe控制器141与CPU组142耦合。例如,NVMe控制器141将接收到第一写命令,转换为适用于CPU处理的数据格式的第二写命令,并向CPU组142发送第二写命令。CPU组142与介质接口控制器143耦合。例如,CPU组142接收到第二写命令,根据第二写命令操作介质接口控制器143向闪存芯片写入数据。
继续参见图1A和图1B,主机向存储设备100发送读命令或写命令后,由CPU组142访问FTL以得到适当的用于闪存芯片的物理地址,并由CPU组操作介质接口控制器144进行读操作或者写操作,但CPU组142操作介质接口控制器143需要较多的操作,并增加了CPU组142的负荷,影响处理速度。
图2中给出了本申请实施例中的一种控制部件200。参见图2,本申请实施例一中的控制部件200,包括NVMe控制器210、硬件加速器220、CPU组230和介质接口控制器240。如图2所示,NVMe控制器210与硬件加速器220耦合,硬件加速器220分别与CPU组230和介质接口控制器240耦合,CPU组230与介质接口控制器240耦合。CPU组230包括一个或多个CPU核。
下面以控制部件200处理读命令为例。
NVMe控制器210接收到读命令之后,NVMe控制器210向硬件加速器220发送该读命令或者向硬件加速器220发送用于提示NVMe控制器210中有待处理的命令的提示信息。硬件加速器220接收到该提示信息,则主动从NVMe控制器210中获取该读命令。
可选地,硬件加速器220在获取到该读命令之后,判断该读命令是否符合主机和存储设备的之间的协议的规定。例如,硬件加速器220获取到读命令之后,判断该读命令的数据格式是否符合NVMe协议的规定。又如,判断该读命令的数据格式是否符合AHCI协议的规定。
在读命令不符合协议的规定时,硬件加速器220生成错误响应,并通过NVMe控制器210向主机反馈错误响应,以通知主机该读命令出现错误。
在读命令符合协议的规定时,硬件加速器220将该读命令发送给CPU组230。CPU组230接收到读命令之后,根据读命令中携带的有效信息访问FTL以获取同读命令的逻辑地址对应的物理地址,并且CPU组230还根据有效信息指示硬件加速器220记录主机地址或根据指向该主机地址的第二索引信息从主机获取主机地址。本实施例中,有效信息包括待读取的数据的逻辑地址、用于存储读取出的数据的主机地址、指向该逻辑地址的第一索引信息和指向该主机地址的第二索引信息中的至少二者。
在又一实施例中,在读命令符合协议的规定时,硬件加速器220将从读命令中提取出有效信息,该有效信息携带CPU组230处理该读命令所需的数据。可选地,有效信息的长度小于读命令。例如,硬件加速器220获取到的读命令的长度为80比特,有效信息的长度为64比特。该有效信息包括:待读取的数据的逻辑地址、用于存储读取出的数据的主机地址、指向该逻辑地址的第一索引信息和指向该主机地址的第二索引信息中的至少二者。例如,在待读取的数据长度很短或逻辑地址连续时,有效信息包括待读取的数据的逻辑地址和用于存储读取出的数据的主机地址。又如,在待读取的数据长度很长或离散存储时,有效信息包括指向该逻辑地址的第一索引信息和指向该主机地址的第二索引信息。
CPU组230接收到有效信息之后,根据有效信息访问FTL以获取同读命令的逻辑地址对应的物理地址,并且CPU组230还根据有效信息指示硬件加速器220记录主机地址或根据指向该主机地址的第二索引信息从主机获取主机地址。
硬件加速器220接收到该主机地址后,通过总线将该主机地址存储到DRAM(图2中未示出)。或者,硬件加速器220接收到第二索引信息后,通过与硬件加速器220耦合的接口,从主机中获取该主机地址,并通过总线向DRAM发送主机地址。
在完成逻辑地址到物理地址的转换之后,CPU组230向介质接口控制器240发送同读命令的逻辑地址对应的物理地址。介质接口控制器240根据物理地址,从闪存芯片中读取出物理地址中存储的数据,并将该数据存放至DRAM中。介质接口控制器240在将待读取的数据均存放至DRAM之后,向硬件加速器220反馈读数据完成信息,用于通知硬件加速器220可以将数据传输至主机。该读数据完成信息包括命令标识,命令标识用于区别不同命令对应的数据。
可选地,在完成逻辑地址到物理地址的转换之后,CPU组230向介质接口控制器240发送第二信息,第二信息指示介质接口控制器240从NVM的物理地址中读取出第一数据,从而介质接口控制器240开始从NVM中读取第一数据,并将读取出的第一数据存储到DRAM中。例如,第一数据的大小是20KB,介质接口控制器240每次读取4KB,则共需要进行5次读取,以及将第一数据分成5次存入DRAM。
可选地,CPU组230向介质接口控制器240发送第二消息前,还从DRAM分配缓存单元,并在第二消息中指示所分配的缓存单元。从而介质接口控制器将响应于第二消息而从NVM芯片读出的数据存储到第二消息所指示的缓存单元。介质接口控制器将还将读数据完成信息提供给硬件加速器。
依然可选地,CPU组230不负责缓存单元的分配,而是介质接口控制器从DRAM分配缓存单元,并将响应于第二消息而从NVM芯片读出的数据存储到所分配的缓存单元。
依然可选地,硬件加速器还包括缓存单元管理器。介质接口控制器将响应于第二消息而从NVM芯片读出的数据发送给缓存单元管理器,而无须事先分配缓存单元的过程。缓存单元管理器管理缓存单元,并用可用的缓存单元承载从介质接口控制器接收的响应于第二消息而从NVM芯片读出的数据,以及缓存单元管理器还将读数据完成信息提供给硬件加速器。读数据完成信息指示承载了读出数据的缓存单元的索引。
硬件加速器220响应于收到读数据完成信息并且读命令的主机地址已存储在DRAM中,硬件加速器220向NVMe控制器210发送命令标识以指示NVMe控制器210将DRAM中与命令标识对应的数据搬运到同主机地址对应的存储空间中。例如,在第一数据完整的存储至DRAM之后,介质接口控制器240向硬件加速器220发送标签信息,该标签信息与包括与读命令对应的标识信息,从而硬件加速器220根据该标识信息指示NVMe控制器210从DRAM中获取第一数据,以及将第一数据搬移到主机。
在一些实施例中,第二信息携带DRAM中存储第一数据的存储空间的指示信息,从而介质接口控制器240能够直接将从NVM读取出的第一数据存储到该存储空间中。
可选地,硬件加速器220还缓存在介质接口控制器240至主机之间的AES(高级加密标准,Advanced EncryptionStandard)处理过程产生的数据。例如,若存储设备设置读取数据时要进行AES处理,则由硬件加速器220提供存储空间来缓存AES处理过程中产生的数据。
下面描述控制部件200处理写命令的方式。
NVMe控制器210接收到写命令之后,NVMe控制器210向硬件加速器220发送该写命令或者向硬件加速器220发送用于提示NVMe控制器210中有待处理的命令的提示信息。硬件加速器220接收到该提示信息,则主动从NVMe控制器210中抓取该写命令。
可选地,硬件加速器220在获取到该写命令之后,判断该写命令是否符合主机和存储设备的之间的协议的规定。例如,硬件加速器220获取到写命令之后,判断该写命令的数据格式是否符合NVMe协议的规定。主机和存储设备之间的协议包括NVMe协议、AHCI协议等。
在写命令不符合协议的规定时,硬件加速器220生成错误响应,并通过NVMe控制器210向主机反馈错误响应,以通知主机该写命令出现错误。
在写命令符合协议的规定时,硬件加速器220向CPU组发送该写命令。
CPU组230接收到写命令之后,根据写命令携带的有效信息指示硬件加速器220待写入数据的主机地址或指向该主机地址的第三索引信息、以及命令标识。本实施例中的有效信息包括:待写入的数据的主机地址或指向该主机地址的第三索引信息、以及命令标识。
在另一实施例中,在写命令符合协议的规定时,硬件加速器220将从写命令中提取出有效信息,该有效信息携带CPU组230处理该写命令所需的数据。可选地,有效信息的长度小于写命令。例如,硬件减速器220获取到的写命令的长度为64比特,有效信息的长度为32比特。该有效信息包括:待写入的数据的主机地址或指向该主机地址的第三索引信息、以及命令标识。例如,待写入的数据长度很长或主机地址数量太多,则有效命令包括第三索引信息和命令标识。本实施例中的命令标识与该写命令对应的待写入数据对应,例如,NVMe控制器210中同时处理3个写命令,每个写命令对应于一个命令标识,从而能够区分3个写命令对应的待写入数据。
CPU组230接收到有效信息之后,向硬件加速器220指示存储待写入数据的主机地址或指向该主机地址的第三索引信息、以及命令标识。
硬件加速器220接收到该主机地址和命令标识后,通过NVMe控制器210从主机地址中获取对应数据,并将该数据搬运至DRAM。或者,硬件加速器220接收到第三索引信息后,通过与硬件加速器220耦合的接口,从主机中获取该主机地址,并通过NVMe控制器210根据主机地址获取对应数据,并将该数据搬运至DRAM。硬件加速器220在将与命令标识对应的数据全部搬运至DRAM之后,向主机反馈表征写命令完成的完成信息。主机接收到该完成信息后,对于主机该写命令的处理就已经完成。硬件加速器220也向CPU组230反馈表征写命令完成的完成信息。
可选地,CPU组230向硬件加速器220发送主机地址前,还从DRAM分配缓存单元,并连同主机地址将所分配的缓存单元提供给硬件加速器220。从而硬件加速器220将从主机地址获取的数据存储到所分配的缓存单元。
依然可选地,CPU组230不负责缓存单元的分配,而是硬件加速器220从DRAM分配缓存单元,并将从主机地址获取的数据存储到所分配的缓存单元。
依然可选地,硬件加速器还包括缓存单元管理器。硬件加速器220将从主机地址获取的数据发送给缓存单元管理器,而无须事先分配缓存单元的过程。缓存单元管理器管理缓存单元,并用可用的缓存单元承载从硬件加速器220接收的从主机地址获取的数据。缓存管理单元将从主机地址获取的数据存储到缓存单元后,还将数据传输完成信息提供给硬件加速器。数据传输完成信息指示承载了从主机地址获取的数据的缓存单元的索引。
CPU组230接收到有效信息后,还为写命令待写入的数据分配物理地址,并访问FTL以记录有效信息指示的逻辑地址和分配的物理地址之间的对应关系。CPU组230接收到硬件加速器220发送的表征数据传输完成的信息之后,将写命令待写入的数据在DRAM中的位置和分配的物理地址发送给介质接口控制器240。
介质接口控制器240接收到该物理地址和数据在DRAM中的位置之后,从DRAM读取出待写入的数据,并将待写入的数据写到闪存芯片中物理地址对应的存储空间内。
可选地,硬件加速器220接收到该主机地址和命令标识后,通过NVMe控制器210从主机地址中读取与命令标识对应数据,并将该数据发送给介质接口控制器240,由介质接口控制器240将数据搬运至DRAM。或者,硬件加速器220接收到第三索引信息后,通过与硬件加速器220耦合的接口,从主机中获取该主机地址,并通过NVMe控制器210从主机地址中读取与命令标识对应数据,并将该数据发送给介质接口控制器240,由介质接口控制器240将数据搬运至DRAM。硬件加速器220在将与命令标识对应的数据全部发送给介质接口控制器240之后,向主机反馈表征写命令完成的完成信息。硬件加速器220将数据搬运至介质接口控制器240之后,向介质接口控制器240发送启动写操作的指示信息,以及通知CPU组230数据传输完成。
介质接口控制器240在接收到待写入的数据之后,为待写入的数据分配物理地址,并将分配的物理地址发送给CPU组。CPU组接收到该物理地址之后,访问FTL以记录写命令的逻辑地址和物理地址之间的对应关系。
介质接口控制器240获取到该物理地址和数据在DRAM中的位置之后,从DRAM读取出待写入的数据,并将待写入的数据写到闪存芯片中物理地址对应的存储空间内。
可选地,硬件加速器220缓存介质接口控制器240至主机之间的加密处理过程产生的数据。加密处理包括AES、TCGOPAL等。例如,存储设备设置写数据时要进行AES处理,则由硬件加速器220提供存储空间来缓存AES处理过程中产生的数据。
图3给出了本申请实施例二的硬件加速器的一种可能的结构。本申请中的控制部件除了采用上述实施例中描述的硬件加速器,还可以采用本申请实施例二中的硬件加速器。如图3所示,本申请实施例二提供了硬件加速器300,包括:命令处理器310、读写处理器320和缓冲存储器330。命令处理器310与读写处理器320耦合,读写处理器320和缓冲存储器330耦合。
其中,命令管理器310判断从主机获取的读命令或写命令是否符合主机与存储设备之间的协议,以及向CPU组430发送符合该协议的第一命令,第一命令为读命令或写命令。图4中给出了控制部件400的一种可能的结构。下面以图4中的控制部件400的结构为例,对硬件加速器300进行介绍。CPU组430包括至少一个CPU,例如,图4中CPU组430包括2个CPU,分别是CPU核1和CPU核2。CPU组430还可以包括两个以上的CPU,可根据实际需求选择CPU的数量,在此并不做限定。
在第一命令是读命令时,CPU组430从读命令中获取第一信息,该第一信息包括数据索引或者用于获取该数据索引的信息。例如,数据索引为物理区域页(PhysicalRegionPage,PRP)列表、分散收集列表(ScatterGatherList,SGL)、数据在主机中的主机地址、数据在DRAM中的地址等。用于获取该数据索引的信息包括指向数据索引的指针,例如,第一信息包括指向数据索引的指针,读写处理器320通过该指针访问到数据索引所在的存储空间,从而获取到该数据索引。读写处理器320还会将数据索引存放至缓冲存储器330中。
CPU组430还从第一消息获取读命令要访问的逻辑地址,并根据逻辑地址访问FTL以获取同读命令要访问的逻辑地址对应的物理地址。可选地,CPU组430还根据读命令要访问的逻辑地址范围分割为多个逻辑地址,并从FTL获得多个对应的物理地址。
CPU组430还为读命令分配命令标识,用以区分存储设备同时处理的多个命令。从同一读命令获得的多个物理地址关联于相同的命令标识。
CPU组430将关联于同一读命令的一个或多个物理地址发送给介质接口控制器440,以指示介质接口控制器440根据接收的物理地址从NVM芯片读出数据。将物理地址发送给介质接口控制器440以及介质接口控制器440从NVM芯片读出数据的过程,同读写处理器320获取数据索引的操作被并发处理。
可选地,CPU组430向介质接口控制器440发送物理地址前,还从DRAM50分配缓存单元,并向介质接口控制器440指示所分配的缓存单元。从而介质接口控制器440将响应于物理地址而从NVM芯片读出的数据存储到所分配的缓存单元。介质接口控制器440将还将读数据完成信息提供给读写管理器320,而不是提供给CPU组430。读数据完成信息指示承载了读出数据的缓存单元的索引。
依然可选地,CPU组430不负责缓存单元的分配,而是介质接口控制器440从DRAM50分配缓存单元,并将从NVM芯片读出的数据存储到所分配的缓存单元。
依然可选地,硬件加速器300还包括缓存单元管理器(未示出)。介质接口控制器440将响应于一个或多个物理地址而从NVM芯片读出的数据发送给缓存单元管理器,而无须事先分配缓存单元的过程。缓存单元管理器管理缓存单元,并用可用的缓存单元承载从介质接口控制器440接收的从NVM芯片读出的数据,以及缓存单元管理器还将读数据完成信息提供给读写管理器320,而不是提供给CPU组430。
读写管理器320根据收到的读数据完成消息,识别读命令要读取的数据是否被全部从NVM芯片读出并存储到DRAM 50。作为举例,读写管理器320记录读命令要读取的数据长度,并根据接收到的一个或多个读数据完成消息识别为该读命令已经从NVM芯片读出并搬移到DRAM 50的数据长度,从而通过识别读命令要读取的数据长度同已经从NVM芯片读出并搬移到DRAM 50的数据长度来确定读命令要读取的数据已被全部从NVM芯片读出并存储到DRAM 50。
在一种实施方式中,响应于读命令要读取的数据已被全部从NVM芯片读出并存储到DRAM 50,并且该读命令的数据索引已被存放至缓冲存储器330中,读写处理器320将读命令要读取的数据(也称为“读数据”)搬移到由数据索引所指示的主机地址。
读写处理器320指示数据搬移单元获取与读命令对应的读数据。本实施例中,数据搬移单元在NVMe控制器410内,从而读写处理器320指示NVMe控制器410获取读数据,如数据搬移单元是NVMe控制器410内的DMA引擎(直接存储器存取,DirectMemoryAccess)。数据搬移单元除了嵌入在NVMe控制器410内,还可以采用独立于NVMe控制器410的数据搬移单元,在此不做限定。由于第一命令是读命令,读数据是数据搬移单元根据读数据完成信息指示的承载了读出数据的缓存单元的索引从DRAM中获取的数据,并将获取的数据搬移到数据索引所指示的主机索引。
读写管理器320还识别是否已经将读数据完整搬移到主机。作为举例,读写管理器320记录了读命令要读取的数据长度,还统计通过数据搬移单元发送给主机的数据的长度。从而通过识别读命令要读取的数据长度同已经从DRAM 50读出并搬移到主机的数据长度来确定读命令要读取的数据已被全部搬移到主机。继而,读写管理器320通过NVMe控制器410向主机指示读命令处理完成。
可选地,介质接口控制器440将读数据完成消息发送给CPU组430,从而CPU组430识别读命令要读取的数据是否被全部从NVM芯片读出并存储到DRAM 50。继而,CPU组430指示读写管理器320将读数据搬移到主机。
在又一种实施方式中,读写处理器320接收介质接口控制器440发送的标签信息,标签信息用于表征介质接口控制器将数据从NVM中读取到DRAM已完成,标签信息包括与第一命令对应的标识信息;读写处理器320指示数据搬移单元根据标识信息从DRAM中获取第一数据、并根据数据索引向主机发送第一数据。
作为举例,第一数据的数据量可能大于介质接口控制器440一次从闪存芯片读取到DRAM的过程中读取的数据量。为了表征第一数据中的一部分已经传输到DRAM中,介质接口控制器440会向读写处理器320反馈标签信息。例如,第一数据长度为10K,介质接口控制器440每次传输4K,则共需要3次才能完成将第一数据传输到DRAM中的操作。在每次传输4K的数据到DRAM之后,介质接口控制器440都会向读写处理器320发送一个标签信息,以告知读写处理器320当前已经传输的数据的长度。从而读写处理器320接收到标签信息,就知晓第一数据已经从闪存芯片中读取到了DRAM中,从而读写处理器320继续将第一数据从DRAM中搬移到主机中。例如,读写处理器320将标识信息和主机地址指示给数据搬移单元,并指示数据搬移单元开始数据搬运,从而数据搬移单元根据该标识信息从DRAM存储的所有数据中获取到第一数据,通过主机地址访问主机,并将第一数据存放到该主机地址对应的存储空间内。
可选地,读写处理器320记录第一数据的数据长度,其中,第一数据的数据长度为读写处理器320根据第一信息获取的;,读写处理器320还记录根据第一命令已向主机发送的数据的长度;读写处理器320响应于第一命令要读取的数据的长度等于为第一命令已向主机发送的数据的长度,而向主机发送用于表征读命令处理完成的状态信息。
本实施例中,读写处理器320在向主机发送第一数据的过程中,实时记录第一数据中已经发送给主机的数据的长度,并和第一数据的数据长度(也就是第一数据的总长度)比较,来判断第一数据是否完成发送,从而能够简单而快速的判断出第一数据的发送状态。例如,第一数据的数据长度为4KB,在T1时刻,记录的已发送的数据长度为3KB,则T1时刻没有完成数据发送,而在T2时刻,记录的已发送的数据长度变更为4KB,则判断出T2时刻完后数据发送,并向主机发送用于表征读命令处理完成的状态信息。
在第一命令是写命令时,CPU组430从写命令中获取第一信息,该第一信息包括数据索引或者用于获取该数据索引的信息。例如,数据索引在主机中的主机地址。CPU组430向读写处理器320发送该第一信息,读写处理器320将数据索引存放至缓冲存储器330中。
读写处理器320还根据数据索引指示数据搬移单元获取与第一命令对应的写数据,该写数据是数据搬移单元根据数据索引从主机中获取的第二数据。本实施例中的第二数据是待写入闪存芯片的数据。
可选地,CPU组430向读写处理器320发送主机地址前,还从DRAM 50分配缓存单元,并连同数据索引将所分配的缓存单元提供给读写处理器320。从而读写处理器320将从主机地址获取的数据存储到所分配的缓存单元。
依然可选地,CPU组430不负责缓存单元的分配,而是读写处理器320从DRAM50分配缓存单元,并将从主机地址获取的数据存储到所分配的缓存单元。由读写处理器320代替CPU组430分配缓存单元,减少了占用的CPU资源,加快了处理速度。
依然可选地,硬件加速器300还包括缓存单元管理器。读写处理器320将从主机地址获取的数据发送给缓存单元管理器,而无须事先分配缓存单元的过程。缓存单元管理器管理缓存单元,并用可用的缓存单元承载从读写处理器320接收的从主机地址获取的数据。缓存管理单元将从主机地址获取的数据存储到缓存单元后,还将数据传输完成信息提供给读写处理器320。数据传输完成信息指示承载了从主机地址获取的数据的缓存单元的索引。
依然可选地,CPU组430与读写处理器320都不负责缓存单元的分配,而是介质接口控制器440从DRAM50分配缓存单元。读写处理器320将从主机地址获取的数据发送给介质接口控制器440,而无须事先分配缓存单元的过程。介质接口控制器440将从主机地址获取的数据存储到缓存单元后,还将数据传输完成信息提供给读写处理器320。
读写管理器320还识别是否已经从主机获取了完整的写数据。作为举例,读写管理器320记录了写命令要写入存储设备的数据长度,还统计通过数据搬移单元从主机搬移的数据的长度。从而通过识别写命令要写入的数据长度同已经从主机搬移的数据长度来确定写命令要写入的数据已被全部从主机搬移到存储设备。继而,读写管理器320通过NVMe控制器410向主机指示写命令处理完成。读写管理器320还将表征写命令的数据传输完成的信息提供给CPU组430。
对于主机而言,将写命令要写入的数据传输到存储设备中,写命令就已经完成。主机得以释放为该写命令所分配的主机资源。
CPU组430还为写命令分配命令标识,用以区分存储设备同时处理的多个命令。为同一写命令分配的一个或多个物理地址关联于相同的命令标识。命令标识还关联于根据写命令获取的数据索引,也关联于表征写命令的数据传输完成的信息。
CPU组430接收到写命令后,还为写命令待写入的数据分配物理地址,并访问FTL以记录有效信息指示的逻辑地址和分配的物理地址之间的对应关系。CPU组230接收到读写管理器320发送的表征数据传输完成的信息之后,将写命令待写入的数据在DRAM 50中的位置和分配的物理地址发送给介质接口控制器440。
可选地,CPU组430为写命令分配物理地址过程,同读写处理器320获取数据索引的操作被并发处理。
介质接口控制器440根据接收的数据在DRAM 50中的位置从DRAM 50获取数据并根据物理地址将获取的数据写入NVM芯片。介质接口控制器440响应于数据被写入NVM芯片,而向读写处理器320发送标签消息,标签消息作为表征写命令的数据传输完成的信息。
读写管理器320根据收到的标签消息,识别写命令要写入的数据是否被全部写入NVM芯片。作为举例,读写管理器320记录写命令要写入取的数据长度,并根据接收到的一个或多个标签消息识别为该写命令已经写入NVM芯片的数据长度,从而通过识别写命令要读取的数据长度同已经写入NVM芯片0的数据长度来确定写命令要写入的数据已被全部写入NVM芯片。
响应于写命令要读取的数据已被全部写入NVM芯片,读写处理器320释放为该写命令分配的资源(例如,命令标识)。
可选地,介质接口控制器440将标签消息发送给CPU组430,从而CPU组430识别写命令要写入的数据是否被全部写入NVM芯片。继而,CPU组430释放为该写命令分配的资源。
在一些实施例中,硬件加速器320还包括至少两个缓存单元。在数据搬移单元从主机获取写数据或向主机发送读数据时的过程中,至少两个缓存单元采用乒乓方式缓存写数据或读数据。本申请中,硬件加速器可以设置一个及以上的缓存单元,在设置至少两个缓存单元时,采用乒乓方式来缓存写数据或读数据可以有效地加快数据传输速度。
可选地,在主机和存储设备传输数据的过程中,存在数据加密的需求,从而本实施例中的硬件加速器还包括安全单元,该安全单元对缓存单元中的第一数据进行解密或第二数据进行加密。例如,安全单元对第一数据进行AES解密处理。
可选地,在判断从主机获取的读命令或写命令是否符合协议之前,命令管理器获取主机发送的第二命令,第二命令为读命令、写命令、擦除命令或其它命令;判断第二命令是否为读命令或写命令。
在一些实施例中,若判断第二命令不是读命令、写命令或擦除命令,命令管理器310向主机发送指示命令错误的响应信息。
虽然当前申请参考的示例被描述,其只是为了解释的目的而不是对本申请的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本申请的范围。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种控制部件,其特征在于,包括:NVMe控制器、CPU组、介质接口控制器和硬件加速器,所述硬件加速器与所述NVMe控制器、所述CPU组以及所述介质接口控制器耦合,所述CPU组与所述介质接口控制器耦合;
其中,所述硬件加速器从所述NVMe控制器中获取读命令或写命令,所述硬件加速器向所述CPU组发送符合主机与存储设备之间的协议的第一命令,所述第一命令为读命令或写命令;
所述CPU组从所述第一命令中获取第一信息,并向所述硬件加速器指示所述第一信息,所述第一信息包括数据索引或用于获取所述数据索引的信息,所述数据索引用于获取第一数据或第二数据;
所述介质接口控制器根据所述硬件加速器的指示,从NVM芯片中读取出所述第一数据或将所述第二数据写入所述NVM芯片,所述硬件加速器的指示为所述硬件加速器根据所述第一信息做出的。
2.如权利要求1所述的控制部件,其特征在于,在所述第一命令为读命令时,所述介质接口控制器根据所述硬件加速器的指示,从所述NVM芯片中读取出所述第一数据,并将所述第一数据存储至与所述控制部件耦合的DRAM。
3.如权利要求1所述的控制部件,其特征在于,在所述第一命令为写命令时,所述介质接口控制器根据所述硬件加速器的指示,从与所述控制部件耦合的DRAM中读取出所述第二数据,并将所述第二数据写入所述NVM芯片。
4.如权利要求2所述的控制部件,其特征在于,所述硬件加速器根据所述介质接口控制器反馈的标签信息,指示所述NVMe控制器将所述第一数据从所述DRAM中搬移到主机。
5.如权利要求3所述的控制部件,其特征在于,所述硬件加速器还根据所述第一信息,指示所述NVMe控制器将所述第二数据从所述主机搬运至所述DRAM。
6.如权利要求5所述的控制部件,其特征在于,所述硬件加速器为所述第二数据分配所述DRAM中的存储空间,并向所述NVMe控制器和所述介质接口控制器指示所述存储空间。
7.如权利要求1-6中任一项所述的控制部件,其特征在于,所述介质接口控制器接收所述CPU组提供的第二信息,第二信息指示从所述NVM芯片的物理地址读出所述第一数据;以及
所述介质接口控制器响应于将从所述NVM芯片中读取的所述第一数据已存储到所述DRAM,而向所述硬件加速器提供所述标签信息。
8.如权利要求1-6中任一项所述的控制部件,其特征在于,所述介质接口控制器向CPU组发送第二标签信息,所述第二标签信息用于表征所述介质接口控制器接收所述第二数据已完成,所述第二标签信息包括与写命令对应的标识信息;
所述介质接口控制器接收所述CPU组提供的第三信息,所述第三信息指示将所述第二数据写入所述NVM芯片的物理地址;以及
所述介质接口控制器向所述CPU组提供第四信息,所述第四信息指示所述第二数据已被写入所述NVM芯片。
9.如权利要求8所述的控制部件,其特征在于,若所述第一命令为写命令,所述CPU组记录所述第一命令要写入的数据长度;
所述CPU组响应于收到所述介质接口控制器提供的所述第四信息,根据所述第四信息记录为所述第一命令已写入所述NVM芯片的数据的长度;
所述CPU响应于所述第一命令要写入的数据的长度等于为所述第一命令已写入所述NVM芯片的长度,而获知所述第一命令已处理完成。
10.如权利要求1-9中任一项所述的控制部件,其特征在于,所述硬件加速器记录所述第一数据的数据长度,其中,所述第一数据的数据长度为所述硬件加速器根据所述第一信息获取的;
响应于所述标签信息,所述硬件加速器根据所述标签信息记录为所述第一命令已向所述主机发送的数据的长度;
所述硬件加速器响应于所述第一命令要读取的数据的长度等于为所述第一命令已向所述主机发送的数据的长度,而向所述主机发送用于表征读命令处理完成的状态信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911060098.9A CN112765055B (zh) | 2019-11-01 | 2019-11-01 | 存储设备的控制部件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911060098.9A CN112765055B (zh) | 2019-11-01 | 2019-11-01 | 存储设备的控制部件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112765055A true CN112765055A (zh) | 2021-05-07 |
CN112765055B CN112765055B (zh) | 2021-12-21 |
Family
ID=75692240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911060098.9A Active CN112765055B (zh) | 2019-11-01 | 2019-11-01 | 存储设备的控制部件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112765055B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113220608A (zh) * | 2021-06-09 | 2021-08-06 | 湖南国科微电子股份有限公司 | 一种NVMe命令处理器及其处理方法 |
CN113721838A (zh) * | 2021-07-22 | 2021-11-30 | 成都忆芯科技有限公司 | 用于存储设备的写、读数据方法、存储控制器以及dma引擎 |
CN115033186A (zh) * | 2022-08-09 | 2022-09-09 | 北京得瑞领新科技有限公司 | 双端口NVMe控制器及读写命令处理方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015172391A1 (zh) * | 2014-05-16 | 2015-11-19 | 华为技术有限公司 | 快速数据读写方法和装置 |
CN106663178A (zh) * | 2014-09-26 | 2017-05-10 | 英特尔公司 | 用于使用固态驱动器来加速计算密集型操作的技术 |
CA3021969A1 (en) * | 2017-11-30 | 2019-05-30 | Eidetic Communications Inc. | System and method for tcp offload for nvme over tcp-ip |
CN109918319A (zh) * | 2019-03-22 | 2019-06-21 | 深圳忆联信息系统有限公司 | 一种固态硬盘控制器加速方法及其系统 |
CN110324380A (zh) * | 2018-03-30 | 2019-10-11 | 北京忆芯科技有限公司 | 利用kv存储设备的云计算与雾计算系统 |
CN110321057A (zh) * | 2018-03-28 | 2019-10-11 | 北京忆恒创源科技有限公司 | 具有增强io性能确定性的缓存的存储设备 |
-
2019
- 2019-11-01 CN CN201911060098.9A patent/CN112765055B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015172391A1 (zh) * | 2014-05-16 | 2015-11-19 | 华为技术有限公司 | 快速数据读写方法和装置 |
CN106663178A (zh) * | 2014-09-26 | 2017-05-10 | 英特尔公司 | 用于使用固态驱动器来加速计算密集型操作的技术 |
CA3021969A1 (en) * | 2017-11-30 | 2019-05-30 | Eidetic Communications Inc. | System and method for tcp offload for nvme over tcp-ip |
CN110321057A (zh) * | 2018-03-28 | 2019-10-11 | 北京忆恒创源科技有限公司 | 具有增强io性能确定性的缓存的存储设备 |
CN110324380A (zh) * | 2018-03-30 | 2019-10-11 | 北京忆芯科技有限公司 | 利用kv存储设备的云计算与雾计算系统 |
CN109918319A (zh) * | 2019-03-22 | 2019-06-21 | 深圳忆联信息系统有限公司 | 一种固态硬盘控制器加速方法及其系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113220608A (zh) * | 2021-06-09 | 2021-08-06 | 湖南国科微电子股份有限公司 | 一种NVMe命令处理器及其处理方法 |
CN113220608B (zh) * | 2021-06-09 | 2022-06-28 | 湖南国科微电子股份有限公司 | 一种NVMe命令处理器及其处理方法 |
CN113721838A (zh) * | 2021-07-22 | 2021-11-30 | 成都忆芯科技有限公司 | 用于存储设备的写、读数据方法、存储控制器以及dma引擎 |
CN113721838B (zh) * | 2021-07-22 | 2023-12-19 | 成都忆芯科技有限公司 | 用于存储设备的写、读数据方法、存储控制器以及dma引擎 |
CN115033186A (zh) * | 2022-08-09 | 2022-09-09 | 北京得瑞领新科技有限公司 | 双端口NVMe控制器及读写命令处理方法 |
CN115033186B (zh) * | 2022-08-09 | 2022-11-01 | 北京得瑞领新科技有限公司 | 双端口NVMe控制器及读写命令处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112765055B (zh) | 2021-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2849076B1 (en) | Dma transmission method and system | |
US8990462B2 (en) | Storage device, computing system including the same and data transferring method thereof | |
CN112765055B (zh) | 存储设备的控制部件 | |
CN112764669B (zh) | 一种硬件加速器 | |
KR101654807B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
TW201337554A (zh) | 程式化記憶胞與資料讀取方法、記憶體控制器與儲存裝置 | |
CN108153482B (zh) | Io命令处理方法与介质接口控制器 | |
WO2013170731A1 (zh) | 将数据写入存储设备的方法与存储设备 | |
CN108228470B (zh) | 一种处理向nvm写入数据的写命令的方法和设备 | |
KR102595233B1 (ko) | 데이터 처리 시스템 및 그것의 동작 방법 | |
WO2008093961A1 (en) | System and method for processing read request | |
KR20160105625A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR20180126656A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US20130275652A1 (en) | Methods and structure for transferring additional parameters through a communication interface with limited parameter passing features | |
CN108153582B (zh) | Io命令处理方法与介质接口控制器 | |
TWI521345B (zh) | 回應讀取方法及資料傳輸系統 | |
CN113485643A (zh) | 用于数据存取的方法及数据写入的控制器 | |
CN110865945B (zh) | 存储设备的扩展地址空间 | |
CN114968849B (zh) | 提高编程缓存利用率的方法及其设备 | |
CN113721838B (zh) | 用于存储设备的写、读数据方法、存储控制器以及dma引擎 | |
US8656059B2 (en) | Methods for exchanging administrative information through a communication interface with limited administrative information exchange features | |
CN112578993B (zh) | 多平面nvm处理编程出错的方法与存储设备 | |
US20240078322A1 (en) | Memory system, memory controller and operation method thereof | |
CN111258491B (zh) | 降低读命令处理延迟的方法与装置 | |
US20240168876A1 (en) | Solving submission queue entry overflow using metadata or data pointers |
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 |