CN108156823B - 一种闪存介质的访问方法及控制器 - Google Patents
一种闪存介质的访问方法及控制器 Download PDFInfo
- Publication number
- CN108156823B CN108156823B CN201680004002.5A CN201680004002A CN108156823B CN 108156823 B CN108156823 B CN 108156823B CN 201680004002 A CN201680004002 A CN 201680004002A CN 108156823 B CN108156823 B CN 108156823B
- Authority
- CN
- China
- Prior art keywords
- controller
- queue
- function
- flash memory
- die
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- 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
-
- 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
- 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
- G06F13/1689—Synchronisation and timing concerns
-
- 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
- G06F13/1694—Configuration of memory controller to different memory types
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Advance Control (AREA)
- Memory System (AREA)
Abstract
本申请公开了一种闪存介质的访问方法,包括:控制器从N个功能队列中按照预定义规则选择一个目标功能队列;其中,目标功能队列为非空队列,且与目标功能队列关联的Die所在的闪存介质为空闲状态,N为大于1的整数;从目标功能队列中取出一个基础指令;根据预设的队列映射信息确定与目标功能队列关联的Die;其中,控制器连接至少一个闪存介质,至少一个闪存介质包括N个Die,队列映射信息表示N个功能队列与N个Die呈一一映射关系;根据预设的信号生成规则生成与基础指令对应的时序信号,以及向关联的Die所在的闪存介质发送时序信号。采用本发明,能提高闪存介质指令执行的效率以及控制器对不同闪存介质的兼容性。
Description
技术领域
本发明涉及存储领域,尤其涉及一种闪存介质的访问方法及控制器。
背景技术
固态硬盘(Solid State Drive,SSD)因其具有存取速度快和抗震性能好等优点,使其应用越来越广泛。固态硬盘的主要存储介质为闪存介质,例如NAND Flash,一个NANDFlash为一个设备(device),一个设备可以由1个或多个晶片(Die)构成,一个晶片可以分成多个闪存片(Plane),一个闪存片可以分成若干个块(Block),一个块又被分成很多个页(Page)。NAND Flash的数据读写操作的基本单位为页,以块为单位进行数据擦除。
不同的NAND Flash厂家生产的NAND Flash拥有不同的模式、速度、命令和协议,甚至相同的生产厂家的不同工艺和批次的NAND Flash对应的模式、速度、命令和协议也可能不相同,现有的NAND Flash控制器采用固件的形式来控制闪存介质,无法兼容不同类型的闪存介质。同时,NAND Flash控制器的操作方法是:在接收到操作指令后,先将操作指令拆分为多个基础指令,再将多个基础指令依次发送给闪存介质,NAND Flash控制器在等待闪存介质执行完一个基础指令后,再将下一个基础指令发送给闪存介质。由于不同的基础指令执行时间的差异,控制器将会浪费很多的等待时间去等待当前指令被闪存介质执行完之后再发送新的指令,造成操作指令执行效率低。
发明内容
本申请公开了一种闪存介质的访问方法及控制器,能够提高操作指令的执行效率和兼容不同类型的存储介质。
本申请第一方面提供了一种闪存介质的访问方法,存储介质可以为NAND Flash,控制器可以为NAND Flash控制器,控制器可位于个人计算机、服务器、磁盘阵列或固态硬盘中。N个功能队列可以设置于控制器内部的存储器中,例如:控制器内部的寄存器或缓存中,功能队列用于存放基础指令。基础指令由控制器的上层设备发出的操作指令拆分而成,上层设备可以为SSD(Solid State Drive,固态硬盘,简称SSD)控制器。控制器连接有至少一个闪存介质,至少一个闪存介质中每个闪存介质包括至少一个Die。控制器中功能队列的数量等于控制器连接的的Die的数量,即Die的数量也为N个,N个功能队列和N个Die呈一一映射关系,即一个功能队列唯一对应的一个Die。操作指令表示SSD控制器发出的针对NANDFlash的逻辑操作,例如:读页操作或擦除块操作等,操作指令需要由NAND Flash控制器具体来执行,NAND Flash控制器在执行SSD控制器发出的操作指令时需要执行的一组微操作,该微操作即为基础指令,基础指令可由控制器可直接执行例如:基础指令为:块擦除操作、写数据操作、写等待操作和状态查询操作等。
下面对控制器的工作原理进行说明:控制器从N个功能队列中根据预定义规则选择一个目标功能队列,其中,选择的目标功能队列满足非空队列和目标功能队列对应的Die所在的闪存介质为空闲状态的条件,非空队列表示功能队列中至少存放一个基础指令。控制器检测Die所在的闪存介质的状态的方法可以是:控制器向Die所在的闪存介质发送专有的状态检测指令,状态检测指令能优先被闪存介质响应,在极短的时间内返回Die的状态,由此控制器可检测Die所在的闪存介质的状态;需要说明的是,在闪存介质包括多个Die的情况下,多个Die中至少有1个Die所在的闪存介质为空闲状态时表明对应的闪存介质空闲状态。其中,控制器获取功能队列中的基础指令的数量的方法可以是:控制器可以维护一个记录表,记录表中存放表示N个功能队列中每个功能队列中当前的基础指令数量的表项,当某个功能队列中队列头的基础指令发生入队操作或出队操作时,控制器更新记录表中存储该功能队列的表项。控制器从目标功能队列中取出一个基础指令。控制器根据预设的队列映射信息确定与目标功能队列关联的Die,同时根据预设的闪存介质与Die的对应关系,确定关联的Die所在的闪存介质,控制器根据预设的信号生成规则生成与基础指令对应的时序信号,信号生成规则表示基础指令的时序信号生成规则,例如:输出的时钟周期数量、输出的引脚的序号、每个时钟周期内引脚上的电平状态等,控制器向关联的Die所在的闪存介质发送时序信号。其中,控制器与闪存介质之间的通信协议可遵循Toggle(切换)或ONFI(Open NAND Flash Interface,开放NAND闪存接口)协议。
上述实施例,控制器在根据预定义规则选择目标功能队列时,满足目标功能队列为非空队列且目标功能队列关联的Die所在的闪存介质为空闲状态,这样能实现不同的Die并行的执行控制器发送的基础指令,提高操作指令的执行效率。同时,基础指令对应的时序信号由预设的信号生成规则生成,这样可以通过配置与不同类型的闪存介质对应的信号生成规则,以达到匹配不同类型的闪存介质的作用,提高了控制器对闪存介质的兼容性。
在一种可能的实施方式中,所述方法还包括:
控制器接收操作指令,操作指令的类型可以是读操作指令或写操作指令,操作指令携带访问地址。操作指令可以由不同类型的基础指令通过不同的组合方式构成,控制器可以根据预设的拆分规则将操作指令拆分为至少两个基础指令,拆分规则可以为:根据预先定义的操作指令与基础指令的映射关系进行拆分。例如拆分规则可以是:当读操作指令为读页命令时,读命令中可携带自身的标识,控制器可根据预存的操作命令的标识与基础指令的标识的对应关系,得到关联的3个基础命令的标识,根据3个基础命令的标识将将读页命令拆分为三个基础指令:发送读命令、检查状态寄存器和读数据传输,每个基础命令中携带自身的标识;又例如拆分规则可以是:写操作指令为写页命令时,根据预存的写页命令的标识与基础指令的标识的映射关系可以将操作指令拆分成3个基础指令:1、擦除块,2、检查状态寄存器,3、传输数据,每个基础指令可携带自身的标识。本实施例中操作指令的拆分规则并不限于上述举例,可以根据需要采用现有的任意一种方法进行拆分。控制器连接有至少一个闪存介质,至少一个闪存介质中每个闪存介质包括至少一个Die,控制器连接的Die的数量等于功能队列的数量N,N个Die中每个Die具有不同的地址区间,由于N个功能队列和N个Die是一一映射关系,每个功能队列对应一个地址区间,控制器根据操作指令中携带的访问地址所在的地址区间来从N个功能队列中确定关联的功能队列。控制器将拆分后的至少两个基础指令放入关联的功能队列。需要说明的是,控制器将拆分后的基础指令放入功能队列时,发送基础指令的顺序可按照先进先出的规则。
值得说明的是,不同厂商的闪存介质对操作指令拆分的方法可不相同,例如对于同一操作指令,不同厂商拆分操作指令得到的基础指令的类型和数量可以各不相同,具体的拆分规则本发明不作限制。
上述实施例,将操作指令拆分为多个基础指令,将拆分后的基础指令根据访问地址放入对应的功能队列,以便不同操作指令对应的基础指令并发的被执行,提高闪存介质的Die的并发性,减少执行时间。
在本发明的一种可能的实施方式中,控制器接收到上层设备发送的一个操作指令时,控制器可将接收到的操作指令缓存在命令队列中,命令队列可以为先进先出队列,命令队列起到缓冲作用,控制器每次从命令队列中取出一个操作指令。其中,命令队列可以设置在控制器内部的存储器或控制器外部的存储器,本实施例不作限制。
在一种可能的实施方式中,不同类型的基础指令预先分配有不同的标识,基础指令的标识用于表示基础指令的身份,控制器对操作指令进行拆分后,可以根据预先分配给基础指令的标识,将标识增加到基础指令中,例如:基础指令的标识可以用基础指令中指定的字段来表示,控制器可以读取基础指令中指定字段来确定该基础指令的标识,控制器查询与基础指令的标识关联的至少一种引脚电平状态信息和输出顺序信息,引脚电平状态信息表示一个时钟周期内指定引脚上的电平状态,电平状态包括高电平或低电平;指定引脚为传输控制信号的控制引脚,不包括用于传输数据信息的数据引脚和用于传输地址信息的地址引脚,不同的引脚电平状态信息表示的指定引脚上的电平状态不同。输出顺序信息表示引脚电平状态信息的输出顺序,一种引脚电平状态信息可以重复出现,输出顺序信息可通过在引脚电平状态信息后面添加字段来表示重复条件。控制器根据至少一种引脚电平状态信息和输出顺序信息生成时序信号,控制器通过指定引脚向关联的Die所在的闪存介质发送时序信号。
上述实施例,通过多个不同种类的引脚电平状态信息和输出顺序信息来表示时序信号的生成规则,不需要存储所有时钟周期对应的引脚电平状态信息避免冗余,减少存储空间的占用。
在一种可能的实施方式中,不同类型的闪存介质的信号时序不相同,如果要控制器兼容某种类型的闪存介质,配置设备需要根据闪存介质的信号时序的特点对控制器进行相关的配置,配置设备可以是计算机、测试平台或其他设备,配置过程可以是:配置设备获取基础指令对应的时序信号,获取每个时钟周期内指定引脚上的电平状态,如果两个引脚电平状态信息表示的一个时钟周期内指定引脚上电平状态相同,则两个引脚电平状态信息为相同的类型,统计时序信号中不同类型的引脚电平状态信息的数量,确定不同类型的引脚电平状态信息的输出顺序,生成输出顺序信息。设置基础指令的标识,将基础指令的标识与划分的至少一种引脚电平状态信息和输出顺序信息进行绑定后生成信号生成规则,信号生成规则可预先存储在控制器内部的存储器中,例如:存储器包括WCS(Writable ControlStorage,可写控制存储器,简称WCS)、寄存器或缓存。
上述实施例,通过多个不同种类的引脚电平状态信息和输出顺序信息来表示时序信号的信号生成规则,不需要存储所有时钟周期对应的引脚电平状态信息避免冗余,减少存储空间的占用。
在一种可能的实施方式中,控制器根据预设的信号生成规则生成与基础指令对应的时序信号,以及向关联的Die所在的闪存介质发送时序信号包括:控制器获取基础指令的标识,控制器根据预设的信号生成规则查询与基础指令的标识关联的时钟周期数量信息和电平状态信息;其中,时钟周期数量信息表示待输出的时钟周期的数量,电平状态信息表示待输出的时钟周期中每个时钟周期在指定引脚上的电平状态;控制器根据时钟周期数量信息和电平状态信息生成时序信号;控制器通过指定引脚向关联的Die所在的闪存介质发送时序信号。
上述实施例,由于每个时钟周期都预先对应有电平状态信息,控制器能快捷的通过查表的方式查询到当前时钟周期内指定引脚上的电平状态,避免复杂的计算过程,减少时序信号生成的时延。
在一种可能的实施方式中,控制器接收操作指令之前,配置设备需要根据闪存介质的时序信号的特点对控制器进行相关的配置,配置方法包括:配置设备设置基础指令的标识,配置设备将基础指令的标识与时钟周期数量信息和电平状态信息进行绑定后存储至信号生成规则中。
上述实施例,控制器能根据预先设置的时钟周期数量信息和电平状态信息快速的生成时序信号,电平状态信息表示每个时钟周期内指定引脚上的电平状态,这样在查表时能快速的查询电平状态,减少生成时序信号的时间。
在一种可能的实施方式中,控制器确定N个功能队列中与访问地址关联的功能队列包括:控制器连接有至少一个闪存介质,至少一个闪存介质中每个闪存介质包括至少一个Die,控制器连接的Die的数量等于功能队列的数量,控制器可预先存储有N个Die中每个Die的地址区间,控制器可以在存储器中获取预存的N个Die各自对应的地址区间,控制器根据操作指令中携带的访问地址所在地址区间确定目标Die,目标Die为N个Die中的一个,控制器根据预设的队列映射信息确定与所述目标Die关联的功能队列。
上述实施例,控制器根据操作指令中携带的访问地址所在的地址区间确定目标Die,再根据Die与功能队列的映射关系确定目标Die关联的功能队列,便于操作指令拆分后得到的基础指令准确的进入指定的功能队列,提高基础指令入队的效率。
在一种可能的实施方式中,控制器每次从N个功能队列中根据预定义规则选择出一个目标功能队列包括:N个功能队列预先设置有不同的优先级,控制器从N个功能队列中选择目标功能队列的方法为:控制器根据优先级降序的方式每次从N个功能队列中选择一个非空且关联的Die为空闲状态的功能队列作为目标功能队列。或者控制器从N个功能队列中选择目标功能队列的方法为:控制器随机方式每次从N个功能队列中选择一个非空且关联的Die为空闲状态的功能队列作为目标功能队列。或者N个功能队列预先设置有不同的队列ID,队列ID表示功能队列的身份,不同的功能队列具有不同的队列ID,控制器从N个控制器根据队列ID升序或队列ID降序的方式每次从N个功能队列中选择一个非空的且关联的Die为空闲状态功能队列作为目标功能队列。
上述实施例,通过上述的目标功能队列的选择方法,能并行地将各个功能队列中的操作指令发送给闪存介质去执行,避免控制器持续在一个功能队列中取指令,从而能减少控制器的等待时间,提高多个Die的并发性和基础指令执行的效率。
本申请第二方面提供了一种控制器,包括:选队列模块、取指令模块、第一确定模块、生成模块和发送模块。
选队列模块用于从N个功能队列中选择一个目标功能队列;其中,目标功能队列为非空队列、目标功能队列关联的Die所在的闪存介质为空闲状态,N为大于1的整数,N个功能队列中每个功能队列用来存放操作指令拆分得到的基础指令,非空队列表示功能队列中至少存放1个基础指令;取指令模块用于从所述目标功能队列中取出一个基础指令。第一确定模块用于根据预设的队列映射信息确定与所述目标功能队列关联的Die;其中,所述控制器连接至少一个闪存介质,所述至少一个闪存介质中每个闪存介质包括至少一个Die,控制器连接的Die的数量等于功能队列的数量N,所述队列映射信息表示所述N个功能队列与所述N个Die呈一一映射关系;生成模块用于根据预设的信号生成规则生成与所述基础指令对应的时序信号,发送模块用于向所述关联的Die所在的闪存介质发送所述时序信号,信号生成规则用于表示基础指令与指定引脚上输出的波形的对应关系。
上述实施例,控制器在根据预定义规则选择目标功能队列时,满足目标功能队列为非空队列和目标功能队列关联的Die所在的闪存介质为空闲状态,这样能实现不同的Die并行的执行控制器发送的基础指令,减少操作指令的执行时间;同时,基础指令对应的时序信号由预设的信号生成规则生成,这样可以通过配置与不同类型的闪存介质对应的信号生成规则,以达到匹配不同类型的闪存介质的作用,提高了控制器对闪存介质的兼容性。
在一种可能的实施方式中,所述生成模块具体用于获取所述基础指令的标识;查询与所述基础指令的标识关联的至少一种引脚电平状态信息和输出顺序信息;其中,引脚电平状态信息表示一个时钟周期内指定引脚上的电平状态,电平状态包括高电平或低电平,所述输出顺序信息表示所述至少一种引脚电平状态信息的输出顺序;根据所述至少一种引脚电平状态信息和所述输出顺序信息生成所述时序信号;发送模块通过所述指定引脚向所述关联的Die所在的闪存介质发送所述时序信号,指定引脚可以是控制器的用于传输控制信号的控制引脚,不包括用于传输数据的数据引脚和用于传输地址信息的地址引脚。
上述实施例,将操作指令拆分为多个基础指令,将拆分后的基础指令根据访问地址放入对应的功能队列,以便不同操作指令对应的基础指令交替执行,提高闪存介质的Die的并发性,减少执行时间。
在一种可能的实施方式中,所述生成模块具体用于:
获取所述基础指令的标识;不同类型的基础指令具有不同的标识,该标识可以携带在基础指令中的指定字段中;根据预设的信号生成规则查询与所述基础指令的标识关联的时钟周期数量信息和电平状态信息;其中,所述时钟周期数量信息表示待输出的时钟周期的数量,电平状态信息表示待输出的时钟周期中每个时钟周期在指定引脚上的电平状态;根据所述时钟周期数量信息和所述电平状态信息生成所述时序信号;发送模块通过所述指定引脚向所述关联的Die所在的闪存介质发送所述时序信号。
上述实施例,通过多个不同种类的引脚电平状态信息和输出顺序信息来表示时序信号的生成规则,不需要存储所有时钟周期对应的引脚电平状态信息避免冗余,减少存储空间的占用。
在一种可能的实施方式中,控制器还包括:接收模块、拆分模块、第二确定模块和存指令模块。
接收模块用于接收操作指令,所述操作指令携带访问地址;
拆分模块用于将所述操作指令拆分为至少两个基础指令;
第二确定模块用于从所述N个功能队列中确定与所述访问地址关联的功能队列;
存指令模块用于将所述至少两个基础指令放入所述关联的功能队列。
上述实施例,将操作指令拆分为多个基础指令,将拆分后的基础指令根据访问地址放入对应的功能队列,以便不同操作指令对应的基础指令交替执行,提高闪存介质的Die的并发性,减少执行时间。
在一种可能的实施方式中,所述第二确定模块具体用于:获取所述N个Die各自对应的地址区间;
根据所述访问地址所在的地址区间确定目标Die,以及根据所述队列映射信息确定与所述目标Die关联的功能队列,目标Die为N个Die中的一个。
上述实施例,控制器根据操作指令中携带的访问地址所在的地址区间确定目标Die,再根据Die与功能队列的映射关系确定目标Die关联的功能队列,便于操作指令拆分后得到的基础指令准确的进入指定的功能队列,提高基础指令入队的效率。
在一种可能的实施方式中,所述选队列模块用于:
根据优先级降序的方式每次从所述N个功能队列中选择一个非空且关联的Die为空闲状态的功能队列作为所述目标功能队列;或
随机方式每次从所述N个功能队列中选择一个非空且关联的Die为空闲状态的功能队列作为所述目标功能队列;或
根据队列ID升序或队列ID降序的方式每次从所述N个功能队列中选择一个非空且关联的Die为空闲状态的功能队列作为所述目标功能队列。
上述实施例,通过上述的目标功能队列的选择方法,能有效的避免相邻两次选择的目标功能队列相同造成控制器持续在一个功能队列中取指令,从而能减少控制器的等待时间,提供Die的并发性,提高基础指令执行的效率。
本申请第三方面提供了一种控制器,其特征在于,包括:
一个或多个处理器、存储器、总线系统以及一个或多个程序,处理器、存储器通过总线系统相连;
其中一个或多个程序被存储在存储器中,一个或多个程序包括指令,指令当被终端执行时使控制器执行如第一方面至第一方面的第五种可能的实施方式中任意一项所述的方法。
本申请第四方面提供了一种存储一个或多个程序的计算机可读存储介质,一个或多个程序包括指令,指令当控制器执行时使所述控制器执行如第一方面至第一方面的第五种可能的实施方式中任意一项所述的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种闪存介质的访问方法的流程示意图;
图2是本发明实施例提供的又一种闪存介质的访问方法的流程示意图;
图3是本发明实施例提供的操作指令的拆分方法的原理示意图;
图4是本发明实施例提供的时序信号生成方法的原理示意图;
图5是本发明实施例提供的又一种时序信号生成方法的原理示意图;
图6a是本发明实施例提供的一种控制器的结构示意图;
图6b是本发明实施例提供的又一种控制器的结构示意图;
图7是本发明实施例提供的一种系统的结构示意图;
图8是本发明实施例提供的又一种控制器的结构示意图。
具体实施方式
需要说明的是,在本发明实施例中使用的术语是出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。另外,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参见图1,图1是本发明实施例提供的一种闪存介质的方法方法的流程示意图,该方法包括但不限于如下步骤。
S101、控制器从N个功能队列中选择一个目标功能队列。
具体的,N个功能队列可预先存放在控制器的内部的存储器中,例如:控制器内存的寄存器或缓存中,控制器连接有至少一个闪存介质,至少一个闪存介质中每个闪存介质包括至少一个Die,控制器连接的Die的数量等于功能队列的数量N个,N个队列中每个队列唯一关联一个Die,其中可以预先存储表示N个队列和N个Die的一一映射关系的队列映射信息。在一种可能的实施方式中,控制器在选择目标功能队列时,可以首先从N个队列中筛选出非空功能队列,接下来控制器获取剩下的功能队列中每个功能队列关联的Die所在的闪存介质的状态,移除Die所在的闪存介质的状态为忙碌状态的功能队列,即最后剩下的功能队列满足两个条件:非空队列以及关联的Die所在的闪存介质的状态为空闲状态,控制器从满足上述两个条件的功能队列中根据预定义规则选取一个功能队列作为当前的目标功能队列。其中,N个功能队列中每个功能队列可以为先进先出队列。
举例说明,控制器连接有4个闪存介质,每个闪存介质包括2个Die,则4个闪存介质包括8个Die。8个Die分别为Die0、Die1、Die2、Die3、Die4、Die5、Die6和Die7。控制器中预先设置有8个功能队列,8个功能队列分别为功能队列0、功能队列1、功能队列2、功能队列3、功能队列4、功能队列5、功能队列6和功能队列7。8个功能队列和8个Die呈一一映射关系,每个功能队列对应唯一的1个Die。功能队列0关联Die0、功能队列1关联Die1、…、功能队列7关联Die7。控制器选取目标功能队列的过程可以是:控制器从8个功能队列中筛选出非空队列,假设筛选出的非空队列为功能队列1、功能队列2、功能队列3、功能队列5、功能队列6,控制器接下来获取上述5个队列各自关联的Die所在的闪存介质的状态,假设Die1的闪存介质的状态为空闲状态、Die2所在的闪存介质的状态为空闲状态,Die3所在的闪存介质的状态为忙碌状态、Die4所在的闪存介质的状态为忙碌状态、Die5所在的闪存介质的状态为忙碌状态,则控制器最后筛选出的功能队列为功能队列1和功能队列2,控制器从上述两个队列中根据预定义规则选取1个功能队列作为目标功能队列。
在本发明的一种可能的实现方式中,控制器可维护一个记录表,记录表的存储位置可以是控制器的内部的寄存器或缓存中,记录表可以位于控制器的外部且独立与控制器的存储器中,控制器和存储器位于存储设备的内部。记录表包括多个用于记录功能队列当前存放的基础指令的数量的表项,当某个功能队列中基础指令的数量发生更新(例如:出队操作或入队操作),控制器更新记录表中该功能队列对应的表项。这样控制器在选择目标功能队列之前,可根据记录表排除空的功能队列,选择一个非空的功能队列作为目标功能队列。
S102、所述控制器从所述目标功能队列中取出一个基础指令。
具体的,目标功能队列可以为先进先出队列,控制器可从目标功能队列的队首取出一个基础指令。控制器检测到目标功能队列中的基础指令发生出队操作后,更新记录表中目标功能队列的表项,将表项存储的表示目标功能队列中基础指令的数值减1。
S103、控制器根据预设的队列映射信息确定与所述目标功能队列关联的Die。
S104、控制器根据预设的信号生成规则生成与基础指令对应的时序信号,以及向关联的Die所在的闪存介质发送时序信号。
具体的,信号生成规则表示基础指令与时序信号生成规则之间的映射关系,时序信号生成规则表示控制器的指定引脚上输出的波形的规则,控制器根据预设的信号生成规则生成与基础指令对应的时序信号,控制器根据闪存介质与Die之间的对应关系,确定关联的的Die所在的闪存介质,控制器向闪存介质发送时序信号,如果基础指令的类型为读操作,闪存介质根据地址引脚上的电平信号获取待读取的存储单元的位置,闪存介质在控制引脚上的电平信号的控制下,将存储单元中的数据通过数据引脚发送给NAND Flash控制器;如果基础指令的类型为写操作,闪存介质根据地址引脚上的电平状态获取待写入的存储单元的位置,介质控制在控制引脚上输入的电平信号的控制下,将数据引脚上待写入的数据写入到该存储单元中。
下面就一个具体的实施例对存储介质的方法进行说明:控制器连接有一个闪存介质,该闪存介质包括三个Die,分别为Die0、Die1和Die2。控制器内部设置有两个功能队列,分别为功能队列0、功能队列1和功能队列2,功能队列0与Die0映射,功能队列1与Die1映射,功能队列2与Die2映射。
功能队列0中当前存放有3个基础指令:基础指令00、基础指令01和基础指令02,上述3个基础指令由控制器对接收到的第一操作指令拆分得到的;功能队列1中当前存放有3个基础指令:基础指令10、基础指令11和基础指令12,上述3个基础指令由控制器对接收到的第二操作指令拆分得到的;功能队列2中当前存放有3个基础指令:基础指令20、基础指令21和基础指令22,上述3个基础指令由控制器对接收到的第三操作指令拆分得到的。控制器首次发送基础指令时,所有的Die所在的闪存介质都为空闲状态,控制器选取任意1个功能队列作为目标功能队列,假设首先选取功能队列0为目标功能队列,从功能队列0中取出基础指令00,将基础指令00发送给关联的Die0,此处Die0为忙碌状态;然后,控制器再次选取目标功能队列,目标功能队列满足非空队列和关联的Die所在的闪存介质为空闲状态,此时满足条件的功能队列为功能队列1和功能队列2,控制器从上述两个功能队列中选取任意1个作为目标功能队列,假设选取功能队列1作为目标功能队列,控制器从功能队列1中选取队首的基础指令发送给关联的Die1;接下来,控制器再次选取目标功能队列,由于Die0可能此时已经执行完基础指令00,处于空闲状态,那么此时满足条件的功能队列可能为功能队列0和功能队列2,控制器从上述两个队列中任意选取一个作为目标功能队列,假设为功能队列2,控制器将功能队列2中队首的基础指令发送给关联的Die2。这样控制器在一个Die执行指令的过程中可以将下一条指令发送给另一个Die,不需要等到一个Die上的指令执行完毕后再发送下一个指令,多个Die之间可以并行的执行指令,提高操作指令的执行效率。
上述实施例,控制器在根据预定义规则选择目标功能队列满足非空队列且关联的Die所在的闪存介质为空闲状态,由于每个功能队列对应不同的Die,这样能实现不同的Die并行的执行控制器发送的基础指令,提高操作指令的执行效率。同时,基础指令对应的时序信号的波形由预设的信号生成规则生成,这样可以通过配置与不同类型的闪存介质对应的信号生成规则,以达到匹配不同类型的闪存介质的作用,提高了控制器对闪存介质的兼容性。
请参见图2,图2是本发明实施例提供的一种闪存介质的方法方法的流程示意图,该方法包括但不限于如下步骤:
S201、配置设备进行预先配置。
具体的,配置设备预先为控制器进行相关的配置,使控制器兼容连接的闪存介质,其中配置设备可以是计算机、测试主机、工作站或服务器等,配置设备根据存储介质的类型完成配置后可生成配置文件,配置设备可以通过烧录器将配置文件烧录到高速存储器中,高速存储器可以是闪存芯片中的可读存储器。配置设备确定控制器需要连接的闪存介质的数量M,M个闪存介质中每个闪存介质包括至少一个Die,配置设备确定M个闪存介质包括的Die的数量为N,M和N为大于0的整数,例如:M个闪存介质可以为相同类型的闪存介质,相同类型表示闪存介质具有相同的引脚和时序信号格式。配置设备需要预先配置的信息包括但不限于:
1、配置设备根据M个闪存介质包括的Die的数量N配置功能队列的数量为N;
2、配置设备获取M个闪存介质与N个Die的映射关系,生成闪存映射信息;
3、配置设备配置N个功能队列和N个Die的一一映射关系,生成队列映射信息;
4、配置设备为所有的操作指令中每个操作指令配置拆分规则,拆分规则可以表示为操作指令的标识和基础指令的标识之间的对应关系,配置设备为预先为每种类型的基础指令分配一个标识,且为每种类型的操作指令分配一个标识;
5、配置设备配置每种类型的基础指令对应的时序信号的信号生成规则。其中,配置信号生成规则包括:配置设备,设置基础指令的标识配置设备将基础指令的标识与时钟周期数量信息和电平状态信息存储为信号生成规则;或配置设备设置基础指令的标识,将基础指令的标识与划分的至少一种引脚电平状态信息和输出顺序信息进行绑定后生成信号生成规则。
配置设备将包括1-5配置信息的配置文件写入到存储器中,存储器可以为控制器内部的寄存器或缓存,存储器可以独立于控制器,控制器和存储器位于存储设备的内部。
举例说明:控制器连接有2个闪存介质,每个闪存介质包括2个Die,控制器连接的Die的总数量为4,配置设备配置的闪存介质与Die的映射关系如下:
表1
配置设备根据Die的数量配置功能队列的数量为4,外部设备配置的队列映射信息如表2所示:
功能队列0 | Die0 |
功能队列1 | Die1 |
功能队列2 | Die2 |
功能队列3 | Die3 |
表2
需要说明的是,上述举例仅为示例性的说明,控制器连接的闪存介质的数量、闪存介质包括的Die的数量、闪存介质与Die的映射关系以及功能队列与Die的映射关系并不限于此,可以根据需要进行配置。
S202、控制器接收操作指令。
具体的,操作指令可以由上层设备发出,上层设备可以是SSD控制器,操作指令携带访问地址。读操作和写操作均以页为单位,读操作可以随机读取任意位置的页,写操作只能按照页顺序写入。
S203、控制器将操作指令拆分为至少两个基础指令。
具体的,控制器可预先存储的操作指令的标识与基础指令的标识之间的映射关系,控制器在接收到一个操作指令后,可以根据映射关系查询与操作指令的标识关联的多个基础指令各自对应的标识,将接收到的操作指令拆分为多个基础指令,操作指令中携带基础指令的格式可以为消息,控制器将操作指令拆分为多个基础指令,且在基础指令中增加根据映射关系查询到的标识。
例如,参见图3,读操作指令为读页指令,控制器根据预设的映射关系将读页指令拆分为3个基础指令,基础指令1:发送读命令、基础指令2:检查状态寄存器、基础指令3:传输数据。
S204、控制器从N个功能队列中确定与访问地址关联的功能队列。
具体的,控制器连接的N个Die分别分配有一个地址区间,由于N个功能队列和N个Die为一一映射关系,因此每个功能队列对应一个地址区间,控制器确定操作指令中携带的访问地址位于N个地址区间中的哪个地址区间,由此控制器可以从N个功能队列中确定与访问地址关联的功能队列。
举例说明,Die0的地址区间为[a,b],Die0关联功能队列0;Die1的地址区间为[c,d],Die1关联功能队列1;Die2的地址区间为[e,f],Die2关联功能队列2;Die3的地址区间为[g,h],Die3关联功能队列3。假设操作指令中携带的访问地址位于地址区间[a,b],则控制器确定关联的功能队列为功能队列0。
S205、控制器将至少两个基础指令放入关联的功能队列。
具体的,控制器将S203拆分后的至少两个基础指令可以根据先进先出的顺序依次放入关联的功能队列的队列尾。
在一种可能的实施方式中,控制器可维护一个记录表,记录表中存储表示各个功能队列中当前存放的基础指令的数量的表项,控制器检测到N个功能队列中某个功能队列中的基础指令的数量发生更新时,控制器在记录表中更新该功能队列的表项。
S206、控制器根据优先级降序的方式每次从N个功能队列中选择一个非空的功能队列作为目标功能队列。
具体的,N个功能队列预先配置有优先级,控制器每次从N个队列中选择一个非空的功能队列作为目标功能队列。
举例说明:控制器根据优先级从高到低的顺序从N个功能队列中选择目标功能队列。假设功能队列0的优先级为4,功能队列1的优先级为2,功能队列2的优先级为1,功能队列3的优先级为3,4个功能队列关联的Die均为空闲状态,根据预设的选择规则,控制器第1次选择功能队列0作为目标功能队列,第2次选择功能队列3作为目标功能队列,第3次选择功能队列1作为目标功能队列,第4次选择功能队列2作为目标功能队列。
可选的,在本发明的一种可能的实施方式中,控制器选择目标功能队列的方法为:控制器随机方式每次从N个功能队列中选择一个非空且关联的Die为空闲状态的功能队列作为所述目标功能队列。
可选的,在本发明的一种可能的实施方式中,控制器选择目标功能队列的方法为:控制器根据队列ID升序或队列ID降序的方式每次从所述N个功能队列中选择一个非空且关联的Die为空闲状态的功能队列作为所述目标功能队列。
S207、控制器从目标功能队列中取出一个基础指令。
具体的,控制器从目标功能队列的队列头取出一个基础指令,该基础指令后面基础指令成为新的队列头。目标功能队列中存放的基础指令的数量发生变动,控制器更新记录表中该目标功能队列的表项。
S208、控制器根据预设的队列映射信息确定与目标功能队列关联的Die。
S209、控制器获取基础指令的标识。
具体的,根据S203中得到的基础指令的标识,控制器可以在指定字段中获取指令的标识,不同类型的基础指令对应不同的标识。
S210、控制器根据预设的信号生成规则查询与基础指令的标识关联的时钟周期数量信息和电平状态信息。
具体的,时钟周期数量信息表示待输出的时钟周期的数量,不同类型的基础指令对应的时钟周期的数量可以相等,也可以不相等。电平状态信息表示每个待输出的时钟周期内指定引脚上的电平状态,电平状态的数量与待输出的时钟周期的数量相等。
S211、控制器根据时钟周期数量信息和电平状态信息生成时序信号。
具体的,每到来一个时钟周期时,控制器根据电平状态信息在指定引脚上输出与该时钟周期对应的电平状态,直到在所有的时钟周期内在指定引脚上输出电平状态。
举例说明,参见图4,图4为某个基础指令对应的时序信号的波形图,该基础指令的时钟周期数量信息和电平状态信息如表3所示,C0-C15表示时钟周期的序号,该基础指令的时序信号持续16个时钟周期,I0-I15表示每个时钟周期对应的指定引脚上的电平状态,指定引脚为:CE#引脚、CLE引脚、ALE引脚和WE#引脚,每个引脚上的电平状态可以为高电平或低电平,也可以为上升沿或下降沿。在一种可能的实施方式中,闪存介质的引脚及其功能如下:
1.CLK:时钟引脚,用于输出时钟周期;
2.CLE(Command Latch Enable,命令锁存使能),在输入命令之前,要先在模式寄存器中,设置CLE使能;
3.ALE(Address Latch Enable,地址锁存使能),在输入地址之前,要先在模式寄存器中,设置ALE使能;
4.CE#(Chip Enable,芯片使能),在操作NAND Flash之前,要先选中此芯片,才能操作;
5.RE#(Read Enable,读使能),在读取数据之前,要先使RE#有效;
6.WE#(Write Enable,写使能),在写取数据之前,要先使WE#有效;
7.WP#(Write Protection,写保护);
8.R/B#(Ready/Busy Output,就绪/忙),主要用于在发送完编程/擦除命令后,检测这些操作是否完成,忙,表示编程/擦除操作仍在进行中,就绪表示操作完成;
9.Vcc(Power,电源);
10.Vss(Ground,接地);
11.NC(Non-Connection,未连接)。
图4中,控制器根据基础指令查询到的时钟周期数量信息为16,控制器执行基础指令需要输出16个时钟周期C0-C15,电平状态信息为I0-I15,控制器在输出时钟周期C0时,查询到I0表示的指定引脚上的电平状态为:CE#引脚输出低电平,CLE引脚输出低电平,ALE引脚输出低电平,WE#引脚输出高电平,DQ引脚输出高电平;控制器在输出时钟周期C1时,查询到I1表示的指定引脚上的电平状态为:CE#引脚输出低电平,CLE引脚输出高电平,ALE引脚输出低电平,WE#引脚输出低电平。控制器根据上述方式在指定引脚上输出时序信号,直到全部的时钟周期结束。
表3
控制器在每到来一个时钟周期时,根据时钟周期的序号查询关联的电平状态,根据电平状态在指定引脚上输出对应的高电平或低电平。
S212、控制器通过指定引脚向关联的Die所在的闪存介质发送时序信号。
具体的,控制器可以根据预先存储的闪存映射信息查询关联的Die所在的闪存介质,控制器通过指定引脚向闪存介质发送时序信号。
在本发明的一种可能的实施方式中,控制器根据预设的信号生成规则生成与基础指令对应的时序信号,以及向关联的Die所在的闪存介质发送时序信号包括:控制器获取基础指令的标识;控制器查询与基础指令的标识关联的至少一种引脚电平状态信息和输出顺序信息;其中,引脚电平状态信息表示一个时钟周期内指定引脚上的电平状态,输出顺序信息表示至少一个引脚电平状态信息的排列顺序;控制器根据至少一种引脚电平状态信息和输出顺序信息生成时序信号;控制器通过指定引脚向关联的Die所在的闪存介质发送时序信号。
具体的,引脚电平状态信息表示一个时钟周期内指定引脚上输出的电平状态,输出顺序信息表示至少一种引脚电平状态信息的排列顺序。
举例说明,参见图5所示,控制器查询到基础指令关联的引脚电平状态信息为I0-I7,共8个引脚电平状态信息,根据查询到的输出顺序信息得到I0-I7的排列顺序为I0、I1、I2、I3、I4、I3、I4、I3、I4、I3、I4、、I5、I6、I7,其中,I3、I4在I2后重复4次,控制器在输出时钟周期C0时,查询到I0表示的指定引脚上的电平状态为:CE#引脚输出低电平,CLE引脚输出低电平,ALE引脚输出低电平,WE#引脚输出高电平,DQ引脚输出高电平,后续时序信号的输出方法不再赘述。在本实施例中,对于多次重复的引脚电平状态信息可通过输出顺序来表示,不需要存储多组相同的引脚电平状态信息,减少信息的冗余,节省存储空间。
上述实施例,控制器在选择目标功能队列时,满足目标功能队列为非空队列且目标功能队列关联的Die所在的闪存介质为空闲状态,这样能实现不同的Die并行的执行控制器发送的基础指令,减少操作指令的执行时间;同时,基础指令对应的时序信号由预设的信号生成规则生成,这样可以通过配置与不同类型的闪存介质对应的信号生成规则,以达到匹配不同类型的闪存介质的作用,提高了控制器对闪存介质的兼容性。
上述详细阐述了本发明实施例的方法,为了便于更好地实施本发明实施例的上述方案,相应地,下面提供了本发明实施例的装置。
请参见图6a,图6a是本发明实施例提供的一种控制器的结构示意图,该控制器6可以包括选队列模块601、取指令模块602、第一确定模块603、生成模块604和发送模块605,其中,各个模块的详细描述如下。
选队列模块601,用于从N个功能队列中选择一个目标功能队列;其中,所述目标功能队列为非空队列,且与所述目标功能队列关联的Die所在的闪存介质为空闲状态,N为大于1的整数。
取指令模块602,用于从所述目标功能队列中取出一个基础指令。
第一确定模块603,用于根据预设的队列映射信息确定与所述目标功能队列关联的Die;其中,所述控制器连接至少一个闪存介质,所述至少一个闪存介质中每个闪存介质包括至少一个Die,所述控制器连接的Die的数量等于N,所述队列映射信息表示所述N个功能队列与N个Die之间的映射关系。
生成模块604,用于根据预设的信号生成规则生成与所述基础指令对应的时序信号;
发送模块605,用于向所述关联的Die所在的闪存介质发送所述时序信号。
上述实施例,控制器在选择目标功能队列时,满足目标功能队列为非空队列且目标功能队列关联的Die所在的闪存介质为空闲状态,这样能实现不同的Die并行的执行控制器发送的基础指令,减少操作指令的执行时间;同时,基础指令对应的时序信号由预设的信号生成规则生成,这样可以通过配置与不同类型的闪存介质对应的信号生成规则,以达到匹配不同类型的闪存介质的作用,提高了控制器对闪存介质的兼容性。
需要说明的是,在本发明实施例中,各个模块的具体实现还可以对应参照图1所示的方法实施例的相应描述。
请参见图6b,图6b是本发明实施例提供的又一种控制器的结构示意图,该控制器除包括选队列模块601、取指令模块602、第一确定模块603、生成模块604和发送模块605,还可以包括接收模块606、拆分模块607、第二确定模块608和存指令模块609,其中,各个模块的详细描述如下。
接收模块606,用于接收操作指令;其中,所述操作指令携带访问地址。
拆分模块607,用于将所述操作指令拆分为至少两个基础指令。
第二确定模块608,用于从所述N个功能队列中确定与所述访问地址关联的功能队列。
存指令模块609,用于将所述至少两个基础指令放入所述关联的功能队列。
可选的,生成模块605具体用于:
获取所述基础指令的标识;
查询与所述基础指令的标识关联的至少一种引脚电平状态信息和输出顺序信息;其中,引脚电平状态信息表示一个时钟周期内指定引脚上的电平状态,所述输出顺序信息表示所述至少一种引脚电平状态信息的输出顺序;
根据所述至少一种引脚电平状态信息和所述输出顺序信息生成所述时序信号。
可选的,生成模块605具体用于:
获取所述基础指令的标识;
根据预设的信号生成规则查询与所述基础指令的标识关联的时钟周期数量信息和电平状态信息;其中,所述时钟周期数量信息表示待输出的时钟周期的数量,电平状态信息表示待输出的时钟周期中每个时钟周期在指定引脚上的电平状态;
根据所述时钟周期数量信息和所述电平状态信息生成所述时序信号。
可选的,第二确定模块608具体用于:
根据所述访问地址所在的地址区间确定目标Die,以及根据所述队列映射信息确定与所述目标Die关联的功能队列,所述目标Die为所述控制连接的N个Die中的1个,所述N个Die中每个Die对应一个地址区间。
可选的,选队列模块601具体用于:
根据优先级降序的方式每次从所述N个功能队列中选择一个非空的功能队列作为所述目标功能队列;或
随机方式每次从所述N个功能队列中选择一个非空的功能队列作为所述目标功能队列;或
根据队列ID升序或队列ID降序的方式每次从所述N个功能队列中选择一个非空的功能队列作为所述目标功能队列。
需要说明的是,在本发明实施例中,各个单元的具体实现还可以对应参照图2所示的方法实施例的相应描述。
其中,控制器6可以通过专用集成电路(英文:Application-Specific IntegratedCircuit,缩写:ASIC)实现,或可编程逻辑器件(英文:Programmable Logic Device,缩写:PLD)实现。上述PLD可以是复杂可编程逻辑器件(英文:Complex Programmable LogicalDevice,缩写:CPLD),FPGA,通用阵列逻辑(英文:Generic Array Logic,缩写:GAL)或其任意组合。该控制器6用于实现图1所示的闪存介质的访问方法。通过软件实现图1所示的闪存介质的访问方法时,控制器6及其各个模块也可以为软件模块,例如实现NAND Flash控制器的软件模块。
上述实施例,控制器在根据预定义规则选择目标功能队列时,满足目标功能队列为非空队列且目标功能队列关联的Die所在的闪存介质为空闲状态且,这样能实现不同的Die并行的执行控制器发送的基础指令,减少操作指令的执行时间;同时,基础指令对应的时序信号由预设的信号生成规则生成,这样可以通过配置与不同类型的闪存介质对应的信号生成规则,以达到匹配不同类型的闪存介质的作用,提高了控制器对闪存介质的兼容性。
上述详细阐述了本发明实施例的方法和装置,为了便于更好地实施本发明实施例的上述方案,相应地,下面提供了本发明实施例的系统。
该系统包括配置设备8和存储设备7,存储设备7包括控制器700和k个闪存介质701~70k,k为大于0的整数,k个闪存介质中每个闪存介质包括至少一个Die。
在上述的系统中,配置设备8用于配置队列映射信息和信号生成规则,以及将队列映射信息和信号生成规则发送给控制器700,其中,上述配置信息可以存储在控制器700的寄存器组或缓存中。控制器700用于每次从N个功能队列中选择一个目标功能队列;其中,目标功能队列为非空队列且目标功能队列对应的Die所在的闪存介质为空闲状态,N为大于1的整数;控制器700从所述目标功能队列中取出一个基础指令;控制器700根据预设的队列映射信息确定与所述目标功能队列关联的Die,所述队列映射信息表示所述N个功能队列与所述N个Die呈一一映射关系;控制器700根据预设的信号生成规则生成与所述基础指令对应的时序信号,以及向所述关联的Die所在的闪存介质发送所述时序信号;所述关联的Die所在的闪存介质为k闪存介质中的一个闪存介质;所述关联的Die所在的闪存介质用于接收所述时序信号,执行相应的操作。
上述实施例,控制器在选择目标功能队列时,满足目标功能队列为非空队列且目标功能队列关联的Die所在的闪存介质为空闲状态,这样能实现不同的Die并行的执行控制器发送的基础指令,减少操作指令的执行时间;同时,基础指令对应的时序信号由预设的信号生成规则生成,这样可以通过配置与不同类型的闪存介质对应的信号生成规则,以达到匹配不同类型的闪存介质的作用,提高了控制器对闪存介质的兼容性。
参见图8,为本发明实施例提供的一种控制器的结构示意图,在本发明实施例中,控制器800包括处理器801、存储器802和通信接口803。通信接口803用于与至少一个闪存介质连接,每个闪存介质包括至少一个Die;当闪存介质的数量超过1个时,控制器800可利用通信接口803以并联方式与多个闪存介质进行连接;其中,通信接口可以是ONFI或toggle接口。例如:图8中以控制器800连接两个闪存介质:闪存介质804和805,具体实施例控制器800连接的闪存介质的数量以及闪存介质包括的Die的数量并不限于此。控制器800中的处理器801的数量可以是一个或多个。本发明的一些实施例中,处理器801、存储器802和通信接口803可通过总线系统或其他方式连接,处理器801、存储器802和通信接口803之间可通过有线方式连接,也可以通过无线传输等其他手段实现通信。控制器800可以用于执行图1所示的方法。关于本实施例涉及的术语的含义以及举例,可以参考图1对应的实施例,此处不再赘述。
其中,存储器802中存储程序代码。处理器801用于调用存储器802中存储的程序代码,用于执行以下操作:
从N个功能队列中选择一个目标功能队列;其中,所述目标功能队列为非空队列,且与所述目标功能队列关联的Die所在的闪存介质为空闲状态,N为大于1的整数;
从所述目标功能队列中取出一个基础指令;
根据预设的队列映射信息确定与所述目标功能队列关联的Die;其中,所述控制器连接至少一个闪存介质,所述至少一个闪存介质中每个闪存介质包括至少一个Die,所述控制器连接的Die的数量等于N,所述队列映射信息表示所述N个功能队列与N个Die之间的映射关系;
根据预设的信号生成规则生成与所述基础指令对应的时序信号;
向所述关联的Die所在的闪存介质发送所述时序信号。
可选的,处理器801执行所述根据预设的信号生成规则生成与所述基础指令对应的时序信号包括:
获取所述基础指令的标识;
查询与所述基础指令的标识关联的至少一种引脚电平状态信息和输出顺序信息;其中,引脚电平状态信息表示一个时钟周期内指定引脚上的电平状态,所述输出顺序信息表示所述至少一种引脚电平状态信息的输出顺序;
根据所述至少一种引脚电平状态信息和所述输出顺序信息生成所述时序信号。
可选的,处理器801执行所述根据预设的信号生成规则生成与所述基础指令对应的时序信号包括:
获取所述基础指令的标识;
根据预设的信号生成规则查询与所述基础指令的标识关联的时钟周期数量信息和电平状态信息;其中,所述时钟周期数量信息表示待输出的时钟周期的数量,电平状态信息表示待输出的时钟周期中每个时钟周期在指定引脚上的电平状态;
根据所述时钟周期数量信息和所述电平状态信息生成所述时序信号。
可选的,处理器701还用于执行;
接收操作指令;其中,所述操作指令携带访问地址;
将所述操作指令拆分为至少两个基础指令;
从所述N个功能队列中确定与所述访问地址关联的功能队列;
将所述至少两个基础指令放入所述关联的功能队列。
可选的,处理器701执行所述确定所述N个功能队列中与所述访问地址关联的功能队列包括:
根据所述访问地址所在的地址区间确定目标Die,以及根据所述队列映射信息确定与所述目标Die关联的功能队列,所述目标die为所述控制连接的N个Die中的一个,所述N个Die中每个Die对应一个地址区间。
可选的,处理器701执行所述每次从N个功能队列中按照预定义规则选择一个目标功能队列包括:
根据优先级降序的方式每次从所述N个功能队列中选择一个非空的功能队列作为所述目标功能队列;或
随机方式每次从所述N个功能队列中选择一个非空的功能队列作为所述目标功能队列;或
根据队列ID升序或队列ID降序的方式每次从所述N个功能队列中选择一个非空的功能队列作为所述目标功能队列。
综上所述,通过实施本发明实施例,控制器在选择目标功能队列时满足非空队列和目标功能队列关联的Die所在的闪存介质为空闲状态,能实现不同的Die并行的执行控制器发送的基础指令,提高操作指令的执行效率。同时,基础指令对应的时序信号的波形由预设的信号生成规则生成,这样可以通过配置与不同类型的闪存介质对应的信号生成规则,以达到匹配不同类型的闪存介质的作用,提高了控制器对闪存介质的兼容性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上实施例仅揭露了本发明中较佳实施例,不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (11)
1.一种闪存介质的访问方法,其特征在于,包括:
控制器从N个功能队列中选择一个目标功能队列;其中,所述目标功能队列为非空队列,且与所述目标功能队列关联的Die所在的闪存介质为空闲状态,N为大于1的整数;
所述控制器从所述目标功能队列中取出一个基础指令;
所述控制器根据预设的队列映射信息确定与所述目标功能队列关联的Die;其中,所述控制器连接至少一个闪存介质,所述至少一个闪存介质中每个闪存介质包括至少一个Die,所述控制器连接的Die的数量等于N,所述队列映射信息表示所述N个功能队列与N个Die之间的映射关系;
所述控制器根据预设的信号生成规则生成与所述基础指令对应的时序信号;
所述控制器向所述关联的Die所在的闪存介质发送所述时序信号;
其中,所述控制器根据预设的信号生成规则生成与所述基础指令对应的时序信号包括:
所述控制器获取所述基础指令的标识;
所述控制器查询与所述基础指令的标识关联的至少一种引脚电平状态信息和输出顺序信息;其中,引脚电平状态信息表示一个时钟周期内指定引脚上的电平状态,所述输出顺序信息表示所述至少一种引脚电平状态信息的输出顺序,所述指定引脚为所述控制器上的控制引脚;
所述控制器根据所述至少一种引脚电平状态信息和所述输出顺序信息生成所述时序信号。
2.如权利要求1所述的方法,其特征在于,还包括;
所述控制器接收SSD固态硬盘控制器发送的操作指令;其中,所述操作指令携带访问地址;
所述控制器将所述操作指令拆分为至少两个基础指令;
所述控制器从所述N个功能队列中确定与所述访问地址关联的功能队列;
所述控制器将所述至少两个基础指令放入所述关联的功能队列。
3.如权利要求2所述的方法,其特征在于,所述控制器确定所述N个功能队列中与所述访问地址关联的功能队列包括:
根据所述访问地址所在的地址区间确定目标Die;其中,所述N个Die中每个Die对应一个地址区间;
根据所述队列映射信息确定与所述目标Die关联的功能队列,其中,所述目标Die为所述控制器连接的N个Die中的一个。
4.如权利要求1所述的方法,其特征在于,所述控制器从N个功能队列中选择一个目标功能队列包括:
所述控制器根据优先级降序的方式每次从所述N个功能队列中选择一个非空的功能队列作为所述目标功能队列;或
所述控制器随机方式每次从所述N个功能队列中选择一个非空的功能队列作为所述目标功能队列;或
所述控制器根据队列ID升序或队列ID降序的方式每次从所述N个功能队列中选择一个非空的功能队列作为所述目标功能队列。
5.一种控制器,其特征在于,包括:
选队列模块,用于从N个功能队列中选择一个目标功能队列;其中,所述目标功能队列为非空队列,且与所述目标功能队列关联的Die所在的闪存介质为空闲状态,N为大于1的整数;
取指令模块,用于从所述目标功能队列中取出一个基础指令;
第一确定模块,用于根据预设的队列映射信息确定与所述目标功能队列关联的Die;其中,所述控制器连接至少一个闪存介质,所述至少一个闪存介质包括N个Die,所述队列映射信息表示所述N个功能队列与所述N个Die之间的映射关系;
生成模块,用于根据预设的信号生成规则生成与所述基础指令对应的时序信号;
发送模块,用于向所述关联的Die所在的闪存介质发送所述时序信号;
所述生成模块,还用于获取所述基础指令的标识;查询与所述基础指令的标识关联的至少一种引脚电平状态信息和输出顺序信息;其中,引脚电平状态信息表示一个时钟周期内指定引脚上的电平状态,所述输出顺序信息表示所述至少一种引脚电平状态信息的输出顺序,所述指定引脚为所述控制器上的控制引脚;根据所述至少一种引脚电平状态信息和所述输出顺序信息生成所述时序信号。
6.如权利要求5所述的控制器,其特征在于,所述生成模块还用于:
获取所述基础指令的标识;
根据预设的信号生成规则查询与所述基础指令的标识关联的时钟周期数量信息和电平状态信息;其中,所述时钟周期数量信息表示待输出的时钟周期的数量,电平状态信息表示待输出的时钟周期中每个时钟周期在指定引脚上的电平状态;
根据所述时钟周期数量信息和所述电平状态信息生成所述时序信号。
7.如权利要求5或6所述的控制器,其特征在于,所述的控制器还包括:
接收模块,用于接收操作指令;其中,所述操作指令携带访问地址;
拆分模块,用于将所述操作指令拆分为至少两个基础指令;
第二确定模块,用于从所述N个功能队列中确定与所述访问地址关联的功能队列;
存指令模块,用于将所述至少两个基础指令放入所述关联的功能队列。
8.如权利要求7所述的控制器,其特征在于,所述第二确定模块具体用于:
根据所述访问地址所在的地址区间确定目标Die,以及根据所述队列映射信息确定与所述目标Die关联的功能队列;其中,所述目标Die为所述控制器连接的N个Die中的一个,所述N个Die中每个Die对应一个地址区间。
9.如权利要求5所述的控制器,其特征在于,所述选队列模块用于:
根据优先级降序的方式从所述N个功能队列中选择一个非空的功能队列作为所述目标功能队列;或
随机方式从所述N个功能队列中选择一个非空的功能队列作为所述目标功能队列;或
根据队列ID升序或队列ID降序的方式从所述N个功能队列中选择一个非空的功能队列作为所述目标功能队列。
10.一种闪存介质的访问方法,其特征在于,包括:
控制器从N个功能队列中选择一个目标功能队列;其中,所述目标功能队列为非空队列,且与所述目标功能队列关联的Die所在的闪存介质为空闲状态,N为大于1的整数;
所述控制器从所述目标功能队列中取出一个基础指令;
所述控制器根据预设的队列映射信息确定与所述目标功能队列关联的Die;其中,所述控制器连接至少一个闪存介质,所述至少一个闪存介质中每个闪存介质包括至少一个Die,所述控制器连接的Die的数量等于N,所述队列映射信息表示所述N个功能队列与N个Die之间的映射关系;
所述控制器根据预设的信号生成规则生成与所述基础指令对应的时序信号:
所述控制器向所述关联的Die所在的闪存介质发送所述时序信号;
其中,所述控制器根据预设的信号生成规则生成与所述基础指令对应的时序信号,包括:
所述控制器获取所述基础指令的标识;
所述控制器根据预设的信号生成规则查询与所述基础指令的标识关联的时钟周期数量信息和电平状态信息;其中,所述时钟周期数量信息表示待输出的时钟周期的数量,电平状态信息表示待输出的时钟周期中每个时钟周期在指定引脚上的电平状态;
所述控制器根据所述时钟周期数量信息和所述电平状态信息生成所述时序信号。
11.一种控制器,其特征在于,包括:
一个或多个处理器、存储器、总线系统以及一个或多个程序,处理器、存储器通过总线系统相连;
其中一个或多个程序被存储在存储器中,一个或多个程序包括指令,指令当被终端执行时使控制器执行如权利要求1至4或10任意一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/097718 WO2018040038A1 (zh) | 2016-08-31 | 2016-08-31 | 一种闪存介质的访问方法及控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108156823A CN108156823A (zh) | 2018-06-12 |
CN108156823B true CN108156823B (zh) | 2020-04-14 |
Family
ID=61299663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680004002.5A Active CN108156823B (zh) | 2016-08-31 | 2016-08-31 | 一种闪存介质的访问方法及控制器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10802960B2 (zh) |
EP (1) | EP3495958B1 (zh) |
CN (1) | CN108156823B (zh) |
WO (1) | WO2018040038A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109445698B (zh) * | 2018-10-22 | 2022-04-05 | 深圳市硅格半导体有限公司 | 查询多片flash状态的方法、装置及计算机可读存储介质 |
CN109683823B (zh) * | 2018-12-20 | 2022-02-11 | 湖南国科微电子股份有限公司 | 一种管理存储器多并发请求的方法及装置 |
CN109857342B (zh) * | 2019-01-16 | 2021-07-13 | 盛科网络(苏州)有限公司 | 一种数据读写方法及装置、交换芯片及存储介质 |
CN112395237B (zh) * | 2019-08-19 | 2023-08-08 | 广州汽车集团股份有限公司 | 一种至少两个控制器之间通信的方法及其系统 |
CN114830615B (zh) * | 2020-11-18 | 2024-05-10 | 京东方科技集团股份有限公司 | 数据分发系统及数据分发方法 |
CN112817542A (zh) * | 2021-02-24 | 2021-05-18 | 成都佰维存储科技有限公司 | Nand指令调度方法、装置、可读存储介质及电子设备 |
US11915780B2 (en) * | 2021-08-27 | 2024-02-27 | Pixart Imaging Inc. | Device ID setting method and electronic device applying the device ID setting method |
CN116244225A (zh) * | 2021-12-08 | 2023-06-09 | 华为技术有限公司 | 存储介质、存储元件、存储介质配置方法及数据传输方法 |
CN114579499B (zh) * | 2022-01-20 | 2023-10-24 | 飞腾信息技术有限公司 | 处理器通信接口的控制方法、装置、设备及存储介质 |
CN116661684B (zh) * | 2023-05-10 | 2024-02-23 | 珠海妙存科技有限公司 | 一种闪存数据的读取方法、系统、设备及介质 |
CN117668318B (zh) * | 2023-12-29 | 2024-07-02 | 深圳市安信达存储技术有限公司 | 基于芯片闪存晶圆的叠加电路检索方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1553327A (zh) * | 2003-05-30 | 2004-12-08 | 上海华园微电子技术有限公司 | 测试eeprom的电路及其测试方法 |
CN101082891A (zh) * | 2007-05-10 | 2007-12-05 | 忆正存储技术(深圳)有限公司 | 并行闪存控制器 |
CN104407997A (zh) * | 2014-12-18 | 2015-03-11 | 中国人民解放军国防科学技术大学 | 带有指令动态调度功能的与非型闪存单通道同步控制器 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8533562B2 (en) * | 2007-09-12 | 2013-09-10 | Sandisk Technologies Inc. | Data protection after possible write abort or erase abort |
CN101498994B (zh) * | 2009-02-16 | 2011-04-20 | 华中科技大学 | 一种固态硬盘控制器 |
TWI428918B (zh) * | 2009-09-29 | 2014-03-01 | Silicon Motion Inc | 記憶裝置以及記憶裝置之資料存取方法 |
CN102236625A (zh) * | 2010-04-20 | 2011-11-09 | 上海华虹集成电路有限责任公司 | 一种可同时进行读写操作的多通道NANDflash控制器 |
US20130019053A1 (en) * | 2011-07-14 | 2013-01-17 | Vinay Ashok Somanache | Flash controller hardware architecture for flash devices |
CN102567257B (zh) * | 2011-12-26 | 2014-08-27 | 华中科技大学 | 一种控制多通道固态盘数据读写的方法 |
-
2016
- 2016-08-31 WO PCT/CN2016/097718 patent/WO2018040038A1/zh unknown
- 2016-08-31 CN CN201680004002.5A patent/CN108156823B/zh active Active
- 2016-08-31 EP EP16914604.0A patent/EP3495958B1/en active Active
-
2019
- 2019-02-28 US US16/289,139 patent/US10802960B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1553327A (zh) * | 2003-05-30 | 2004-12-08 | 上海华园微电子技术有限公司 | 测试eeprom的电路及其测试方法 |
CN101082891A (zh) * | 2007-05-10 | 2007-12-05 | 忆正存储技术(深圳)有限公司 | 并行闪存控制器 |
CN104407997A (zh) * | 2014-12-18 | 2015-03-11 | 中国人民解放军国防科学技术大学 | 带有指令动态调度功能的与非型闪存单通道同步控制器 |
Also Published As
Publication number | Publication date |
---|---|
US10802960B2 (en) | 2020-10-13 |
EP3495958A1 (en) | 2019-06-12 |
CN108156823A (zh) | 2018-06-12 |
WO2018040038A1 (zh) | 2018-03-08 |
EP3495958B1 (en) | 2020-07-08 |
US20190196961A1 (en) | 2019-06-27 |
EP3495958A4 (en) | 2019-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108156823B (zh) | 一种闪存介质的访问方法及控制器 | |
JP5729774B2 (ja) | いくつかのコマンドを処理するためのメモリコントローラ、メモリシステム、ソリッドステートドライブ、および方法 | |
CN101908379B (zh) | 基于访问时间调整对非易失性半导体存储器的访问 | |
US9563367B2 (en) | Latency command processing for solid state drive interface protocol | |
CN107305504B (zh) | 数据储存装置、其控制单元及其任务排序方法 | |
US20150253992A1 (en) | Memory system and control method | |
US20130339638A1 (en) | Status polling of memory devices using an independent status bus | |
CN109614049B (zh) | 闪存控制方法、闪存控制器及闪存系统 | |
CN108572932B (zh) | 多平面nvm命令融合方法与装置 | |
CN111488304A (zh) | 接口转接电路 | |
CN106681660A (zh) | Io调度方法及io调度装置 | |
CN112181887A (zh) | 数据传输方法及装置 | |
US20150255147A1 (en) | Writing method for solid state disk | |
US20140229688A1 (en) | Storage control device, storage system, and storage control method | |
CN116360853B (zh) | 寄存器映射方法、装置、设备及介质 | |
CN110851073B (zh) | 储存装置及巨集指令的执行方法 | |
TWI651646B (zh) | 資料儲存裝置及其任務排序方法 | |
TWI629638B (zh) | 儲存裝置及其任務執行方法、對應於儲存裝置的主機及其任務執行方法、以及應用於儲存裝置的控制單元 | |
CN106919487B (zh) | NVMe门铃处理方法及其装置 | |
CN112732176A (zh) | 基于fpga的ssd访问方法及装置、存储系统及存储介质 | |
CN114153764B (zh) | 进行动态资源管理的方法、记忆装置及记忆装置的控制器 | |
CN116719479B (zh) | 存储器访问电路及存储器访问方法、集成电路和电子设备 | |
CN109857331B (zh) | 指令处理方法及使用所述方法的储存控制器 | |
CN102446071B (zh) | 取得一存储器状态资讯的接取方法、电子装置及程序产品 | |
CN114610661B (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 |