CN108228493B - 闪存接口控制器及操作命令处理方法 - Google Patents
闪存接口控制器及操作命令处理方法 Download PDFInfo
- Publication number
- CN108228493B CN108228493B CN201611193064.3A CN201611193064A CN108228493B CN 108228493 B CN108228493 B CN 108228493B CN 201611193064 A CN201611193064 A CN 201611193064A CN 108228493 B CN108228493 B CN 108228493B
- Authority
- CN
- China
- Prior art keywords
- module
- operational order
- order
- flash
- microcode
- 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
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
- 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/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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
- 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
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
- G06F9/223—Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供了一种Flash接口控制器及操作命令处理方法,涉及数据存储领域。Flash接口控制器中引入了可编程的第一类微码和第二类微码,可以通过编程修改第一类微码以适应新的协议对操作命令的解析流程,可以通过编程修改第二类微码以适应Flash接口的新标准所要求的Flash总线操作,Flash接口控制器中的各个物理模块仅需要固化好逻辑,并读取与操作命令相关的第一类微码和第二类微码,即可实现对操作命令的解析,因此可以适应各种协议以及Flash接口标准,灵活性较好。
Description
技术领域
本发明涉及数据存储领域,特别涉及一种闪存(英文:Flash)接口控制器及操作命令处理方法。
背景技术
随着Flash工艺的演进,Flash的协议标准以及Flash总线接口的频率、接口模式、时序(英文:Timing)要求等一直在持续变化,为了使得Flash接口控制器能够适应各种Flash,Flash技术演进当前的现状对Flash接口控制器的设计的灵活性和可扩展性带来了极大的挑战。
Flash接口控制器一般包括通道管理模块和通道(英文:Channel),通道管理模块会将操作命令分发至对应的通道,通道会对操作命令进行解析,将解析最终得到的总线操作发送给与通道相连的一条Flash总线。其中,每物理Flash总线用于连接多个Flash的晶片(英文:Die),Die是Flash中最小的存储单元。
相关技术中,Flash接口控制器在处理操作命令时采用全逻辑实现方式或软件实现方式。
在全逻辑实现方式中,Flash接口控制器中的各个物理模块(包括通道管理模块和通道中的各个模块)均被固化好处理逻辑,每个物理模块均利用固化好的处理逻辑对上层的物理模块下发的命令进行处理。由于这种方式中各个物理模块均预先固化好处理逻辑,当操作命令的协议发生变化时,对操作命令的解析流程也会发生变化,固化好处理逻辑的物理模块无法适应最新协议的操作命令,因此灵活性比较差。
在软件实现方式中,Flash接口控制器在通道管理模块中增加了一个微型的中央处理器(英文:Central Processing Unit,简称:CPU),当操作命令的协议发生变化时,可以修改CPU中的软件逻辑,利用修改后的适应最新协议的软件逻辑对操作命令进行解析,将解析后的指令下发给通道中的各个物理模块,通道中的各个物理模块仍旧按照预先固化好的处理逻辑进行处理。由于每个操作命令的解析均需要CPU参与,在多通道、多Die并发的应用场景中,对CPU性能的要求非常高,可能需要多个CPU并行处理,而多个CPU带来的功耗和面积代价均比较大。此外,由于通道中最终解析出的总线操作必须符合Flash总线接口的标准,因此当Flash总线接口的标准发生变化时,通道中固化好的处理逻辑无法适应Flash总线接口的标准,灵活性仍旧比较差。
发明内容
为了解决相关技术中Flash接口控制器中的物理模块被固化处理逻辑后,无法满足新的协议以及Flash总线接口标准的要求的问题,本发明实施例提供了一种Flash接口控制器及操作命令处理方法。所述技术方案如下:
第一方面,提供了一种Flash接口控制器,Flash接口控制器包括:通道管理模块(英文:Channel Manager)、通道、命令缓存管理(英文:Command Buffer Manager)模块、数据缓存管理(英文:Data Buffer Manager)模块、Nand适配存储(英文:Nand ConfigStorage,简称:NCS)记忆存储模块和可编程时序发生器(英文:Programmable TimingGenerator,简称:PTG)记忆存储模块,每个通道包括Die并行调度(英文:Die ConcurrentSchedule,简称:DCS)模块、Flash访问代理(英文:Flash Access Agent,简称:FAA)模块、PTG模块和物理层接口(英文:physical layer interface,简称:PHY)模块,其中:
通道管理模块用于根据接收到的操作命令中的通道号,将操作命令分配至该通道号对应的通道;
通道中的DCS模块用于将接收到的操作命令存储至命令缓存管理模块中,将调度的操作命令发送至FAA模块;
FAA模块用于在接收到操作命令后,从命令缓存管理模块中获取该操作命令的命令参数,根据命令参数指向的Nand适配存储NCS记忆位置,读取NCS记忆存储模块中从该NCS记忆位置起的第一类微码进行执行,将执行该第一类微码后得到的索引命令发送至PTG模块;
PTG模块用于从PTG记忆存储模块中该索引命令对应的位置读取第二类微码进行执行,将执行第二类微码后得到的Flash总线操作发送给物理层接口模块;
物理层接口模块用于将Flash总线操作发送至Flash总线。
由于Flash接口控制器中引入了可编程的第一类微码和第二类微码,可以通过编程修改第一类微码以适应新的协议对操作命令的解析流程,可以通过编程修改第二类微码以适应Flash接口的新标准所要求的Flash总线操作,Flash接口控制器中的各个物理模块仅需要固化好逻辑,并读取与操作命令相关的第一类微码和第二类微码,即可实现对操作命令的解析,且解析出的Flash总线操作符合Flash接口标准,因此可以适应各种协议以及Flash接口标准,灵活性较好。
在第一方面的第一种可能的实现中,通道管理模块包括通道管理单元和低功耗的处理单元,通道管理单元用于根据接收到的操作命令中的通道号,将该操作命令分配至该通道号对应的通道;处理单元用于将自定义命令下发给对应通道中的DCS模块。
由于在通道管理模块中设置有一个低功耗的处理单元,可以在特殊情况下,向通道下发自定义的特殊命令,满足一些特殊需求,且低功耗的处理单元占用面积较小,避免了对Flash接口控制器占用面试的不必要扩大。
结合第一方面或者第一方面的第一种可能的实现,在第二种可能的实现中,处理单元还用于在判定自定义命令与其他操作命令所对应的Die无关时,直接将自定义命令下发给对应通道中的DCS模块;而在判定自定义命令与其他操作命令所对应的Die有关时,则在与自定义命令有关的操作命令执行完毕后,将自定义命令下发给对应通道的DCS模块。
由于处理单元在判定自定义命令与其他操作命令的Die有关时,等待这些操作命令全部执行完毕,才将自定义命令下发给对应通道中的DCS模块,从而保证了利用自定义命令对Die操作的准确性。
结合第一方面、第一方面的第一种可能的实现或者第一方面的第二种可能的实现,在第三种可能的实现中,DCS模块包括至少一组命令分发队列组,每组命令分发队列组包括高优先级的命令分发队列和低优先级的命令分发队列,同组命令分发队列组中高优先级的命令分发队列中存储的命令被优先调度;通道管理模块还用于根据操作命令的优先级以及DCS模块反馈的各个操作命令的执行结果,确定出DCS模块中与该操作命令的优先级匹配且具备存储位置的目标命令分发队列,将操作命令分配至该目标命令分发队列中。
由于DCS模块中设置有不同优先级的命令分发队列,通道管理模块可以将高优先级的操作命令分配至DCS模块的高优先级的命令分发队列中,保证了高优先级的操作命令可以被优先调度。
结合第一方面、第一方面的第一种可能的实现至第一方面的第三种可能的实现中任一种,在第四种可能的实现中,DCS模块包括一组结果返回队列,结果返回队列包括高优先级的结果返回队列和低优先级的结果返回队列,高优先级的结果返回队列中存储的命令的执行结果被优先上报给通道管理模块。
通过将优先级高的操作命令的执行结果存入至高优先级的结果返回队列,可以上层能尽快地得知优先级较高的操作命令的执行结果。
结合第一方面、第一方面的第一种可能的实现至第一方面的第四种可能的实现中任一种,在第五种可能的实现中,当操作命令为写命令时,FAA模块还用于向数据访问控制器发送与该操作命令对应的读请求,读请求用于触发数据访问控制器从数据存储介质中读取与该操作命令对应的数据,将读取的数据返回给FAA模块,FAA模块还用于将数据访问控制器获取的数据存储至数据缓存管理模块中。
结合第一方面、第一方面的第一种可能的实现至第一方面的第五种可能的实现中任一种,在第六种可能的实现中,当操作命令为读命令时,FAA模块还用于将PTG模块从Flash中读取的与操作命令对应的数据存储至数据缓存管理模块中,从数据缓存管理模块中读取操作命令对应的数据,向数据访问控制器发送携带有数据的写请求,写请求用于触发数据访问控制器将数据写入至数据存储介质中。
结合第一方面、第一方面的第一种可能的实现至第一方面的第六种可能的实现中任一种,在第七种可能的实现中,FAA模块还用于在执行到操作命令的操作潜伏期时,将该操作命令的中间状态以及当前读取到的第一类微码的NCS记忆位置作为该操作命令的命令参数存储至命令缓存管理模块中;FAA模块还用于在该操作命令被再次调度时,从命令缓存管理模块中获取上次记录的该操作命令的NCS记忆位置,继续读取NCS记忆存储模块中从该NCS记忆位置起的第一类微码进行执行,在该操作命令所对应的所有第一类微码执行完毕后,获取该操作命令的命令结果返回给DCS模块。
由于FAA模块可以在操作命令位于操作潜伏期时,将当前读取的微码的NCS记忆位置作为该操作命令的命令参数存储至命令缓存管理模块中,使得该操作命令被再次调度时,能够从命令缓存管理模块中读取到上次记录的该操作命令所对应的NCS记忆位置,以继续读取剩余的微码进行执行,从而避免了对已经执行过的部分微码的重复执行,保证了对操作命令的微码执行的速度。
结合第一方面、第一方面的第一种可能的实现至第一方面的第七种可能的实现中任一种,在第八种可能的实现中,物理层接口模块还用于判定接收到的Flash总线操作是否为非双倍时钟速率(英文:Double Data Rate,简称:DDR)接口的Bus操作,在接收到的Flash总线操作为非DDR接口的总线操作时,将Flash总线操作发送到Flash总线,在接收到的Flash总线操作为DDR接口的总线操作时,将Flash总线操作转换为双沿数据发送到Flash总线。
结合第一方面、第一方面的第一种可能的实现至第一方面的第八种可能的实现中任一种,在第九种可能的实现中,NCS记忆存储模块中存储的第一类微码以及PTG记忆存储模块中存储的第二类微码在上电时被配置,第一类微码与操作命令的命令参数匹配,第二类微码与Flash总线接口所要求的参数匹配。
由于第一类微码可以与操作命令的命令参数匹配,当操作命令的协议发生变化时,仅需要针对协议变化后的操作命令的命令参数对第一类微码进行修改即可,实现了对协议的灵活适用;此外,第二类微码可以与Flash总线接口所要求的参数匹配,当Flash总线接口的标准发生变化了,仅需要针对Flash总线接口所要求的参数修改第二类微码即可,实现对Flash总线接口的标准的灵活适用。
第二方面,提供了一种操作命令处理方法,应用于Flash接口控制器中,该Flash接口控制器包括:通道管理模块、通道、命令缓存管理模块、数据缓存管理模块、Die并行调度DCS记忆存储模块和可编程时序发生器PTG记忆存储模块,该通道包括DCS模块、Flash访问代理FAA模块、PTG模块和物理层接口模块,该方法包括:该通道管理模块根据接收到的操作命令中的通道号,将该操作命令分配至该通道号对应的通道;该通道中的DCS模块将接收到的操作命令存储至该命令缓存管理模块中,将调度的操作命令发送至该FAA模块;该FAA模块在接收到该操作命令后,从该命令缓存管理模块中获取该操作命令的命令参数,根据该命令参数指向的Nand适配存储NCS记忆位置,读取该NCS记忆存储模块中从该NCS记忆位置起的第一类微码进行执行,将执行该第一类微码后得到的索引命令发送至该PTG模块;该PTG模块从该PTG记忆存储模块中该索引命令对应的位置读取第二类微码进行执行,将执行该第二类微码后得到的Flash总线操作发送给该物理层接口模块;该物理层接口模块将该Flash总线操作发送至Flash总线。
在第二方面的第一种可能的实现中,该通道管理模块包括通道管理单元和低功耗的处理单元,该通道管理模块根据接收到的操作命令中的通道号,将该操作命令分配至该通道号对应的通道,包括:该通道管理单元根据接收到的操作命令中的通道号,将该操作命令分配至该通道号对应的通道;该方法还包括:
该处理单元将自定义命令下发给对应通道中的DCS模块。
结合第二方面或者第二方面的第一种可能的实现,在第二种可能的实现中,该方法还包括:该处理单元还用于在判定该自定义命令与其他操作命令所对应的Die无关时,则直接将该自定义命令下发给对应通道中的DCS模块;该处理单元还用于在判定该自定义命令与其他操作命令所对应的Die有关时,则在与该自定义命令有关的操作命令执行完毕后,将该自定义命令下发给对应通道的DCS模块。
结合第二方面、第二方面的第一种可能的实现或者第二方面的第二种可能的实现,在第三种可能的实现中,该DCS模块包括至少一组命令分发队列组,每组命令分发队列组包括高优先级的命令分发队列和低优先级的命令分发队列,同组命令分发队列组中高优先级的命令分发队列中存储的命令被优先调度;该方法还包括:该通道管理模块根据操作命令的优先级以及该DCS模块反馈的各个操作命令的执行结果,确定出该DCS模块中与该操作命令的优先级匹配且具备存储位置的目标命令分发队列,将该操作命令分配至该目标命令分发队列中。
结合第二方面、第二方面的第一种可能的实现至第二方面的第三种可能的实现中任一种,在第四种可能的实现中,该DCS模块包括一组结果返回队列,该结果返回队列包括高优先级的结果返回队列和低优先级的结果返回队列,高优先级的结果返回队列中存储的命令的执行结果被优先上报给该通道管理模块。
结合第二方面、第二方面的第一种可能的实现至第二方面的第四种可能的实现中任一种,在第五种可能的实现中,该方法还包括:当该操作命令为写命令时,该FAA模块向数据访问控制器发送与该操作命令对应的读请求,该读请求用于触发该数据访问控制器从数据存储介质中读取与该操作命令对应的数据,将读取的该数据返回给该FAA模块,该FAA模块将该数据访问控制器获取的该数据存储至该数据缓存管理模块中。
结合第二方面、第二方面的第一种可能的实现至第二方面的第五种可能的实现中任一种,在第六种可能的实现中,该方法还包括:当该操作命令为读命令时,该FAA模块将该PTG模块从Flash中读取的与该操作命令对应的数据存储至该数据缓存管理模块中,从该数据缓存管理模块中读取该操作命令对应的数据,向该数据访问控制器发送携带有该数据的写请求,该写请求用于触发该数据访问控制器将该数据写入至该数据存储介质中。
结合第二方面、第二方面的第一种可能的实现至第二方面的第六种可能的实现中任一种,在第七种可能的实现中,该FAA模块在执行到该操作命令的操作潜伏期时,将该操作命令的中间状态以及当前读取到的第一类微码的NCS记忆位置作为该操作命令的命令参数存储至该命令缓存管理模块中;该FAA模块在该操作命令被再次调度时,从该命令缓存管理模块中获取上次记录的该操作命令的NCS记忆位置,继续读取该NCS记忆存储模块中从该NCS记忆位置起的第一类微码进行执行,在该操作命令所对应的所有第一类微码执行完毕后,获取该操作命令的命令结果返回给该DCS模块。
结合第二方面、第二方面的第一种可能的实现至第二方面的第七种可能的实现中任一种,在第八种可能的实现中,该方法还包括:该物理层接口模块判定接收到的该Flash总线操作是否为双倍时钟速率DDR接口的Bus操作,在接收到的该Flash总线操作为非DDR接口的总线操作时,将该Flash总线操作发送到Flash总线,在接收到的该Flash总线操作为DDR接口的总线操作时,将该Flash总线操作转换为双沿时钟数据发送到该Flash总线。
结合第二方面、第二方面的第一种可能的实现至第二方面的第八种可能的实现中任一种,在第九种可能的实现中,该方法还包括:该NCS记忆存储模块中存储的第一类微码以及PTG记忆存储模块中存储的第二类微码在上电时被配置,该第一类微码与该操作命令的命令参数匹配,该第二类微码与Flash总线接口所要求的参数匹配。
附图说明
图1是本发明部分实施例中提供的Flash接口控制器的结构示意图;
图2是本发明一个实施例中提供的DCS模块的结构示意图;
图3是本发明一个实施例中提供的FAA模块的结构示意图;
图4是本发明一个实施例中提供的PTG模块的结构示意图;
图5是本发明一个实施例中提供的操作命令处理方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在实际应用中,设备的命令管理模块(比如CPU等)可以对Flash执行相应的操作(比如读操作、写操作以及擦除操作等),此时命令管理模块需要将操作命令发送给Flash接口控制器,由Flash接口控制器对操作命令进行解析,最终得到与Flash接口的标准对应的Flash总线操作,将Flash总线操作发送给Flash总线,以便Flash执行相关的操作。
由于不同协议下的操作命令的解析流程不同,因此为了能够对命令管理模块下发的操作命令进行解析,Flash接口控制器中的物理模块上需要预先固化好与当前协议对应的操作逻辑,利用这些操作逻辑对当前协议的操作命令进行解析。而在实际应用中,不同的厂商可能会采用不同的协议,因此Flash接口控制器中针对某一协议固化好的操作逻辑无法解析其他协议的操作命令。
另外,由于Flash接口控制器对操作命令解析后,需要将解析得到的Flash总线操作发送给Flash总线,而Flash总线的接口也可能会有不同的标准,因此,Flash接口控制器中固化好的操作逻辑对操作命令所解析出的Flash总线操作也可能不符合Flash总线的接口的要求。
为了能够使得Flash接口控制器能够适应不同解析协议以及不同Flash总线接口标准,本发明实施例中提供了一种具备两级微码实现的Flash接口控制器。Flash接口控制器中的每个Flash Channel内嵌一个处理单元(也即微码控制器),满足未来介质特性变化所要求的接口灵活性,同时兼顾了性能、面积、功耗的要求。Flash接口控制器内部的每个通道内部包括两级可编码的微码模块(NCS记忆存储模块以及PTG记忆存储模块),在方案上进行命令流水处理,支持多个Flash Die的并发处理,每级微码由逻辑实现,延迟和功耗低,并且能满足Flash不断演进的特性和性能的要求。
以下结合图1至图4对Flash接口控制器进行说明。
图1是本发明部分实施例中提供的Flash接口控制器的结构示意图,该Flash接口控制器包括通道管理模块110、至少一个通道120、命令缓存管理模块130、数据缓存管理模块140、NCS记忆存储模块150和PTG记忆存储模块160。
每个通道120中包括DCS模块121、FAA模块122、PTG模块123和物理层接口(PHY)模块124。
其中,通道管理模块110用于根据操作命令中的通道号,将该操作命令分配至该通道号对应的通道120。操作命令是上层下发的,比如图1中的命令管理模块170,这里所讲的命令管理模块170可以是设备的中央处理器。可选的,操作命令除了包含有通道号之后,还可以包括Die地址,一般来讲,该Die地址即该通道号对应的通道所连接的Flash中的一个Die的地址。
这里所讲的操作命令可以为读命令、写命令和擦除命令。
可选的,通道管理模块110中包括通道分配单元111和处理单元112,处理单元112可以为微型的处理器,比如低功耗的CPU等。
对于需要特殊处理的命令,比如:读操作失败、写操作失败、擦除操作失败等,需要处理单元112进行异常介入的命令,此时通道管理模块110也支持通过处理单元112发送少量的自定义命令到对应的通道进行执行。
通道120中的DCS模块121在接收到通道管理模块110分配的操作命令之后,将该操作命令命令存储至命令缓存管理模块130。
DCS模块121在将操作命令存储至命令缓存管理模块130之后,可以对当前存储的多个操作命令进行调度,选择其中一个操作命令发送到FAA模块122。
FAA模块122在接收到操作命令之后,从命令缓存管理模块130中获取该操作命令的命令参数,这里所讲的命令参数除了可以包括通常的地址、数据相关的参数外,还可以包括当前操作命令对应的NCS记忆位置以及自定义参数。FAA模块122根据这些命令参数指向的NCS记忆位置,读取NCS记忆存储模块150中存储的第一类微码进行执行,将第一类微码执行得到的索引命令发送至PTG模块123。
一般来讲,不同的操作命令所指向的NCS记忆位置不同,但同一类的操作命令所指向的NCS记忆位置相同。
以下针对不同的操作命令,对FAA模块122执行的操作进行说明。
以擦除命令为例,FAA模块122根据擦除命令指向的NCS记忆位置,从NCS记忆存储模块150中该NCS记忆位置开始读取第一类微码,并执行读取的第一类微码。将当前的擦除命令解析为PTG模块123对应的索引(比如命令索引、地址索引等)发送到PTG模块123。如果执行到擦除Flash Block潜伏期,则需要将当前执行的擦除命令中间状态和下次起始擦除命令的NCS记忆位置存储到命令缓存管理模块130中,以等待下一次被DCS模块121调度。如果当前操作命令再一次被调度,FAA模块122从上次记录的该操作命令对应的NCS记忆位置开始执行后续的第一类微码,直到擦除命令所有的第一类微码执行完成,FAA模块122获取擦除命令执行的结果返回到DCS模块121,由DCS模块121将该结果上报给命令管理模块170,告知擦除命令执行完毕。
再以读命令为例,FAA模块122根据读命令指向的NCS记忆位置,从NCS记忆存储模块150中该NCS记忆位置开始读取第一类微码,并执行读取的第一类微码。将当前的读命令解析为PTG模块123对应的索引(比如命令索引、地址索引、读Flash数据索引等)发送到PTG模块123,以及发送携带有数据的写请求到数据访问控制器。如果执行到读Flash Page潜伏期,则需要将当前执行的读命令中间状态和下次起始读命令的NCS记忆位置存储到命令缓存管理模块130中,以等待下一次被DCS模块121调度。如果当前操作命令再一次被调度,FAA模块122从上次记录的该操作命令对应的NCS记忆位置开始执行后续的第一类微码,直到读命令所有的第一类微码执行完成,FAA模块122获取读命令执行的结果返回到DCS模块121,由DCS模块121将该结果上报给命令管理模块170,告知读命令执行完毕。
再以写命令为例,FAA模块122根据写命令指向的NCS记忆位置,从NCS记忆存储模块150中该NCS记忆位置开始读取第一类微码,并执行读取的第一类微码。将当前的写命令解析为PTG模块123对应的索引(比如命令索引、地址索引、写Flash数据索引等)发送到PTG模块123,以及发送对应的读请求到数据访问控制器。如果执行到编程Flash Page潜伏期,则需要将当前执行的写命令中间状态和下次起始写命令的NCS记忆位置存储到命令缓存管理模块130中,以等待下一次被DCS模块121调度。如果当前操作命令再一次被调度,FAA模块122从上次记录的该操作命令对应的NCS记忆位置开始执行后续的第一类微码,直到写命令所有的第一类微码执行完成,FAA模块122获取写命令执行的结果返回到DCS模块121,由DCS模块121将该结果上报给命令管理模块170,告知写命令执行完毕。
再以自定义命令为例,FAA模块122根据处理单元112下发的自定义命令中的NCS记忆位置,从NCS记忆存储模块150中该NCS记忆位置开始读取第一类微码,并执行读取的第一类微码。利用读取的第一类微码对自定义命令中携带的参数进行解析,将自定义命令解析为PTG对应的索引(比如命令索引、地址索引、写Flash数据索引、读Flash数据索引等)发送到PTG模块123,以及发送对应的读Flash数据DMA命令、写Flash数据DMA命令到DMA。如果执行到Flash潜伏期,则需要将当前执行的自定义命令中间状态和下次起始的NCS记忆位置存储到命令缓存管理模块130中,以等待下一次被DCS模块121调度。如果当前Die再一次被调度,FAA模块122从上次记录的NCS记忆位置开始执行后续的第一类微码,直到自定义命令所有的第一类微码执行完成,FAA模块122获取自定义命令执行的结果返回到DCS模块121,由DCS模块121将该结果上报给命令管理模块170,告知自定义命令执行完毕。
PTG模块123接收FAA模块122下发的索引,根据索引对应的PTG记忆位置读取对应的第二类微码,执行读取的第二类微码。根据读取的第二类微码中存储的对Flash总线操作的指令,将每个PTG索引中的内容转换为Flash总线操作并发送到Flash PHY模块124。
Flash PHY模块124判定接收的Flash总线操作是否为双倍速率同步动态随机存储器(英文:Double Data Rate,简称DDR)接口操作,将非DDR接口操作的Flash总线操作直接发送到Flash总线,将DDR接口操作转换为双沿Data发送到Flash总线。
NCS记忆存储模块150存放的第一类微码和PTG记忆存储模块160中存放的第二类微码,只在上电过程中配置一次。每个通道对第一类微码和第二类微码仅有读的接口,根据性能的需求可以多个通道共享一个NCS记忆存储模块150以及共享一个PTG记忆存储模块160。
综上所述,本发明实施例中提供的Flash接口控制器,通过DCS模块对操作命令进行调度,FAA模块可以读取NCS记忆存储模块中与被调度的操作命令对应的第一类微码,通过第一类微码对操作命令进行解析;当操作命令随着协议的更改而发生变化时,仅需要修改NCS记忆存储模块中与该操作命令对应的第一类微码即可,不需要修改DCS模块以及FAA模块的逻辑,从而使得Flash接口控制器可以适应各种协议的操作命令。
另外,由于PTG模块可以根据从PTG记忆存储模块读取的与FAA模块输出的索引对应第二类微码,通过第二类微码对索引进行解析,得到Flash Bus操作并发送给Flash PHY模块,由Flash PHY模块将非DDR接口的Flash Bus操作直接发送到Flash总线,将DDR接口操作转换为双沿Data发送到Flash总线;当Flash的物理层接口发生改变后,只需要修改PTG记忆存储模块中的第二类微码即可,不需要修改Flash PHY模块的逻辑,从而使得Flash接口控制器可以适应物理层接口发生改变的Flash。
为了更进一步的了解通道对操作命令的解析流程,以下结合图2、图3和图4分别对通道内的DCS模块121、PAA模块122以及PTG模块123进行解释说明。
图2是本发明一个实施例中提供的DCS模块的结构示意图。
DCS模块121由软硬件配合实现,由低功耗的处理单元和硬件加速逻辑控制多个Flash通道、多个操作命令调度,实现命令优先级排序、命令上下文管理、命令间互锁、Flash模式切换等功能。复杂调度算法由软件接管,高性能输入输出调度由物理模块中固化的加速逻辑实现,兼顾了软件灵活性和逻辑实现性能高的特点。
在图2中,DCS模块121具备至少一组命令分发队列组和一组结果返回队列组121b。
每组命令分发队列组包括高优先级的命令分发队列和低优先级的命令分发队列,命令分发队列中用于存储上层下发的操作命令。也就是说,每组命令分发队列组中高优先级的分发队列中的命令被优先调度,也即同组命令分发队列组中,高优先级的命令分发队列中的命令被调度完之后,低优先级的命令分发队列中的命令才会被调度。而各组命令分发队列组被并行调度,不存在先后顺序。
在进行命令分发时,通道管理模块110根据操作命令的优先级以及DCS模块121反馈的各个操作命令的执行结果,确定出DCS模块121中与该操作命令的优先级匹配且具备存储位置的目标命令分发队列,将该操作命令分配至目标命令分发队列中。
在实际应用中,针对NAND Flash,Flash接口控制器中会对应有多个通道,比如图2中的通道0至通道15,每个通道对应Flash的若干个Die。Flash接口控制器中的通道管理模块110会根据操作命令的通道号将操作命令分发至通道号对应的通道中,比如,当操作命令的通道号为0时,则将操作命令发送至通道0中。
由于通道管理模块110会将操作命令分发至DCS模块121对应的命令分发队列中,且可以获知DCS模块121上报的操作命令的执行结果,因此,通道管理模块110根据历史存入的操作命令以及返回的执行结果,判定出DCS模块121中每个命令分发队列中是否空闲,或是否为空。其中,空闲的命令分发队列表明还存储有空闲的空间可供存储操作命令,而空的命分发队列表明未存储有操作命令。
这样,通道管理模块110在确定出需要下发的操作命令的优先级较高时,则首先确定出能够继续存入操作命令的高优先级的命令分发队列,在确定的高优先级的命令分发队列为一个时,则将该命令分发队列作为目标命令分发队列,将该操作命令推送至该目标命令分发队列中。
在确定的高优先级的命令分发队列为至少两个时,则随机将其中一个命令分发队列作为目标命令分发队列,将该操作命令推送至该目标命令分发队列中。或者,在确定的高优先级的命令分发队列为至少两个时,将空的命令分发队列中的一个作为目标命令分发队列,将该命令分发队列作为目标命令分发队列,将该操作命令推送至该目标命令分发队列中。
在通道管理模块110中包括软件接管和硬件加速。对于普通的操作命令可以将分发的权限交给通道管理单元111中固化的加速逻辑完成满足高性能要求,对于需要特殊处理的部分,比如:命令间的互锁、Flash模型切换、Flash私有指令等特殊的自定义命令,则需要处理单元112的介入。
为了能够保证能较快的调度处理单元112下发的命令,DCS模块121中可以将每个命令分发队列的深度设置的小一些,比如将每个命令分发队列的深度设置为2,也即每个命令分发队列仅可以存储两个命令。这样,处理单元112可以很快地在命令分发队列中的操作命令执行完后,暂停其他需要分配的操作命令,将自定义的特殊命令分配至DCS模块121的命令分发队列中。而进入到DCS模块121内部的命令需要固化好的逻辑按照最高性能的要求,对操作命令进行并发、调度和上下文管理。
在实际应用中,为了避免自定义命令对其他操作命令的影响,处理单元在分配自定义命令时,首先判定自定义命令是否与其他操作命令所对应的Die无关,在判定自定义命令与其他操作命令所对应的Die无关时,则直接将自定义命令下发给对应通道中的DCS模块;在判定自定义命令与其他操作命令所对应的Die有关时,则在与该自定义命令有关的操作命令执行完毕后,将该自定义命令下发给对应通道的DCS模块。
结果返回队列组中包括高优先级的结果返回队列和低优先级的结果返回队列,结果返回队列中用于存储下层上报的操作命令的响应结果。也就是说,高优先级的结果返回队列中存储的命令的执行结果被优先上报给通道管理模块110,由通道管理模块110将执行结果上报给上层的命令管理模块。
DCS模块121在进行命令响应结果返回时,在操作命令执行完毕后,对于返回的执行结果需要根据命令对延迟(英文:Latency)的要求,分别进入不同优先级的结果返回队列,返回到处理单元122,并由处理单元122上报给上层的命令管理模块。
请参见图2所示,DCS模块121还可以包括轮询调度(英文:Round Robin Schedule,简称:RR)单元、进度(英文:Schedule)有限状态机(英文:Finite State Machine,简称:FSM)单元以及命令缓存接口,每个命令分发队列组中还包括一个优先级判定单元p。
优先级判定单元p按照命令分发队列组中命令分发队列的优先级,从命令分发队列中按序读取操作命令,将读取的操作命令发送给RR单元。
RR单元用于调度各个命令分发队列中的命令,并将调度的命令发送给ScheduleFSM单元。
Schedule FSM单元将RR单元调度的命令通过命令缓存接口缓存至命令缓存管理模块130中。
Schedule FSM单元还用于接收FAA模块122返回的命令的执行结果,按照执行结果的优先级将执行结果存储至结果返回队列组中的结果返回队列中。
综上所述,由于DCS模块可以将命令按照优先级进行排序,且可以对多个命令分发队列进行并行调度,因此提高了命令调度的性能。
此外,DCS模块还可以与处理单元结合,将命令分发队列的深度设置的较小,使得处理单元介入的自定义的特殊命令可以较快速的被存储至命令分发队列中,从而使得自定义的特殊命令能够被较为及时的调度。
图3是本发明一个实施例中提供的FAA模块的结构示意图。FAA模块122通过NCS记忆存储模块150中的第一类微码实现对Flash操作命令的操作步骤的可编程化。
DCS模块121将调度的操作命令发送给FAA模块122,FAA模块122对该操作命令进行解析,从DCS模块121获取该操作命令的命令参数,比如NCS记忆位置等。可选的,DCS模块121通过FCmd_Rep接口将操作命令发送给FAA模块122。FAA模块122通过DCS模块121的Inst_Ptr接口或者Link_Ptr接口获取操作命令所指示的NCS记忆位置。
FAA模块122对DCS模块121调度的各种操作命令的操作步骤进行抽象分解,分解后的细粒度操作行为能以最小的集合覆盖所有不同Flash介质的命令行为;然后对分解后的细粒度操作再进行索引(英文:Index)编码,使得每个细粒度操作分别对应PTG记忆缓存模块中的第二类微码,以此编码为基础对各种操作命令进行微码编程。同时,NCS记忆存储模块150中微码的取值和执行是确定的行为,微码程序流水执行,能确保操作命令下发的性能要求。
NCS记忆存储模块150中存储的数据分为两部分:可编程的第一类微码和参数(英文:Parameter)。
可编程的第一类微码可以适应各种Flash的操作命令的解析流程,在Flash的解析流程不同时,可以修改NCS记忆存储模块150中的第一类微码的逻辑或者参数,从而使得在Flash接口控制器对接的Flash具备不同的处理流程时,也可以在不改变硬件逻辑的情况下,适应Flash处理流程的目的。
NCS记忆存储模块150可以根据当前Flash接口控制器对接的Flash特性的不同配置参数参数,对不同的Flash单元进行一些特殊的参数化配置,从而使得在Flash接口控制器对接的Flash不同时,通过对NCS记忆存储模块150中参数的更改,达到适应Flash的目的。
FAA模块122的处理逻辑可以包括对第一类微码的指令解析、数据访问控制器控制和PTG命令下发三部分,这里所讲的数据访问控制器可以为直接内存存取(英文:DirectMemory Access,简称:DMA)控制器。
FAA模块122在利用第一类微码进行指令解析时,FAA模块122从DCS模块121下发操作命令所指示的NCS记忆位置中获取NCS记忆存储模块150的入口地址(也即DCS模块121下发的操作命令在NCS记忆存储模块150中所对应第一类微码的起始地址),根据入口地址,执行对应的第一类微码。可选的,FAA模块122的取指单元从DCS模块121的接口Inst_Ptr或者Link_Ptr获取操作命令所指示的NCS记忆位置。取指单元在获取到NCS记忆位置之后,从NCS记忆存储模块150读取该NCS记忆位置所对应的第一类微码,将读取的第一类微码给解码单元,由解码单元对第一类微码进行解码。解码单元将解码后的第一类微码发送给执行单元,执行单元从NCS记忆存储模块150读取对应的参数,利用读取的参数执行解码单元解码后的第一类微码。
可选的,NCS记忆存储模块150提供有Instruction Read接口和Parameter Read接口,取指单元可以通过Instruction Read接口从NCS记忆存储模块150读取第一类微码;执行单元可以通过Parameter Read接口从NCS记忆存储模块150读取参数。
对于需要操作外部接口的指令,第一类微码被执行完毕后转换为外部接口数据管理控制器或者PTG模块123所需的数据结构,操作外部接口模块。对于需要外部接口模块响应的指令,需要等待外部接口模块处理完毕后,返回到第一类微码内核,此时第一类微码只能串行执行;对于不需要外部接口响应的指令,不需要等待指令的执行情况,满足高性能的要求。
FAA模块122在对数据管理控制器进行控制时,FAA模块122根据当前的命令类型判断是否需要操作数据访问控制器。
当需要执行写操作时,也即操作命令为写命令时,FAA模块122还用于向数据访问控制器发送与该操作命令对应的读请求,读请求用于触发数据访问控制器从数据存储介质中读取与该操作命令对应的数据,将读取的数据返回给FAA模块122,FAA模块122还用于将数据访问控制器获取的数据存储至数据缓存管理模块140中。可选的,Flash写控制单元在确定操作命令为写命令时,控制FAA模块122中的序列控制单元通过数据管理控制器的CmdCpl接口向数据管理控制器发送读请求,对应的,数据管理控制器通过Cmd Rep向FAA模块122发送读请求的应答消息。可选的,序列控制单元将应答消息中的数据发送给Flash读控制单元,Flash读控制单元将获取到的数据通过数据缓存管理模块140的Flash Rdata接口写入数据缓存管理模块140中。
而当需要执行读操作时,也即操作命令为读命令时,FAA模块122还用于将PTG模块123从Flash中读取的与操作命令对应的数据存储至数据缓存管理模块140中,从数据缓存管理模块140中读取该操作命令对应的数据,向数据访问控制器发送携带有该数据的写请求,写请求用于触发数据访问控制器将该数据写入至数据存储介质中。可选的,FAA模块122可以通过数据管理控制器的FDat Cpl接口向数据管理控制器发送写请求,对应的,数据管理控制器通过FDat Rep向FAA模块122发送写请求的应答消息。可选的,FAA模块122中的Flash写控制单元通过数据缓存管理模块140的Flash Wdata接口读取数据,将读取的数据发送给序列控制单元,由序列控制单元将携带有读取的数据的写请求通过数据管理控制器的FDat Cpl接口发送给数据管理控制器,对应的,数据管理控制器通过FDat Rep接口向序列控制单元发送该写请求的应答消息。
FAA模块122在向PTG模块123下发操作命令的索引命令时,FAA模块122经过第一类微码指令解析后,对于需要操作Flash的指令,则发送对应的索引命令到PTG模块123。这里的索引命令是索引存储于PTG记忆存储模块160中对应第二类微码。同样对于不需要PTG模块123返回状态的指令,可以流水执行,提升指令执行的效率。可选的,FAA模块122中的Flash指令控制单元可以将解析出的索引命令通过PTG模块123的Phy Rdata接口发送给PTG模块123。
图4是本发明一个实施例中提供的PTG模块的结构示意图。
PTG模块123利用PTG记忆存储模块160中的第二类微码实现精确到每个Flash IO接口时序(英文:Timing)的可编程化。PTG记忆存储模块160中定义了各个索引命令对应的时序,并以第二类微码的形式对时序进行了编码。这类的时序也可称为Flash总线操作。
当PTG模块123接收到FAA模块122输出的索引命令之后,利用该索引命令寻址PTG记忆存储模块160中对应时序的第二类微码,第二类微码解析完毕后,产生Flash接口所需的各种Flash时序。PTG记忆存储模块160中的微码使得用户可以根据Flash演进后对时序的微小变化要求,调整微码中对应的时序参数来满足,不会因为某个时序参数未事先定义,从而出现不能很好支持的情况。
PTG模块123接收到FAA模块122下发的索引命令,根据索引命令映射到PTG记忆存储模块160中的第二类微码,流水执行其中的Flash总线的第二类微码,按时钟周期控制Flash PHY模块124的芯片使能(英文:chip enable,简称:CE)、地址锁存使能(英文:address latch enable,简称:ALE)、命令锁存使能(英文:command latch enable,简称:CLE)、写使能(英文:write enable,简称:WE)、读使能(英文:read enable,简称:RE)、数据控制(英文:data strobe,简称:DQS)、数据总线(英文:data bus,简称:DQ)信号的行为,实现Flash IO可编程操作的同时,满足Flash接口高性能的要求。对于需要进行发送数据的命令,则启动内部的数据读路径(英文:Wdata Path)和数据写路径(英文:Rdata Path),完成数据缓存管理模块140与Flash PHY模块124的数据传输。比如,PTG模块123启动数据读路径从数据缓存管理模块140中读取数据,利用从PTG记忆存储模块160中的第二类微码将读取的数据转换成时序。其中,数据写路径与数据缓存管理模块140的写缓存接口(如图3中的Flash Wdata)对接,数据读路径与数据缓存管理模块140的读缓存接口(如图3中的FlashRdata)对接。
综上所述,本发明实施例中提供的Flash接口控制器,引用了处理单元,由于处理单元可以根据Die的情况设置特殊的自定义命令,因此可以实现Die之间互锁等特殊操作;且由于处理单元为低功耗的处理单元,并不需要占用较大的面积,因此不需要过大地扩大Flash接口控制器的面积。
另外,Flash接口控制器还具备第一类微码的NCS记忆存储模块以及具备第二类微码的PTG记忆存储模块,使对于具备任一种协议的操作命令均能够被解析成可被Flash总线识别的Flash总线操作,很好地解决了Flash接口控制器在灵活性、性能上的平衡问题,可以全面适应Flash颗粒特性演进不断变化的要求,对支持IT产品线未来所有Flash策略的全面成功奠定坚实的技术基础。
图5是本发明一个实施例中提供的操作命令处理方法的流程图,该操作命令处理方法应用于图1所示的Flash接口控制器中,该操作命令处理方法包括:
步骤501,通道管理模块根据接收到的操作命令中的通道号,将操作命令分配至该通道号对应的通道。
一般来讲,通道管理模块中包含通道管理单元和低功耗的处理单元,这里所讲的低功耗的处理单元可以为低功耗的CPU。
通道管理单元根据接收到的操作命令中的通道号,将所述操作命令分配至所述通道号对应的通道。在一些特殊情况下,处理单元可以将将自定义命令下发给对应通道中的DCS模块。
处理单元的其他功能可以参见图1和图2中对处理单元的描述,这里就不再赘述。
步骤502,DCS模块将接收到的操作命令存储至命令缓存管理模块中,将调度的操作命令发送至FAA模块。
DCS模块包括的单元和队列组可以参见对图2中的描述,步骤502中DCS模块执行的动作也可以参见图2对DCS模块各个单元操作的描述,这里就不再赘述。
步骤503,FAA模块在接收到操作命令后,从命令缓存管理模块中获取该操作命令的命令参数。
步骤504,FAA模块根据该命令参数指向的Nand适配存储NCS记忆位置,读取NCS记忆存储模块中从该NCS记忆位置起的第一类微码进行执行。
步骤505,FAA模块将执行该第一类微码后得到的索引命令发送至PTG模块。
FAA模块中的结构单元可以参见图3所示,步骤503至步骤505中FAA模块所执行的动作也可以参见图3对FAA模块各个单元操作的描述,这类就不再赘述。
步骤506,PTG模块从PTG记忆存储模块中索引命令对应的位置读取第二类微码进行执行。
步骤507,PTG模块将执行该第二类微码后得到的Flash总线操作发送给PHY模块。
PTG模块中的结构单元可以参见图4所示,步骤506和步骤507中PTG模块所执行的动作也可以参见图4对PTG模块各个单元操作的描述,这类就不再赘述。
PHY模块将Flash总线操作发送至Flash总线。
这里所讲的物理层接口模块即为上述的Flash PHY模块124,具体的实现可以参见对PHY模块124的描述。
综上所述,本发明实施例提供的操作命令处理方法,由于Flash接口控制器中引入了可编程的第一类微码和第二类微码,可以通过编程修改第一类微码以适应新的协议对操作命令的解析流程,可以通过编程修改第二类微码以适应Flash接口的新标准所要求的Flash总线操作,Flash接口控制器中的各个物理模块仅需要固化好逻辑,并读取与操作命令相关的第一类微码和第二类微码,即可实现对操作命令的解析,因此可以适应各种协议以及Flash接口标准,灵活性较好。
另外,由于在通道管理模块中设置有一个低功耗的处理单元,可以在特殊情况下,向通道下发自定义的特殊命令,满足一些特殊需求,且低功耗的处理单元占用面积较小,避免了对Flash接口控制器占用面试的不必要扩大。
由于处理单元在判定自定义命令与其他操作命令的Die有关时,等待这些操作命令全部执行完毕,才将自定义命令下发给对应通道中的DCS模块,从而保证了利用自定义命令对Die操作的准确性。
由于DCS模块中设置有不同优先级的命令分发队列,通道管理模块可以将高优先级的操作命令分配至DCS模块的高优先级的命令分发队列中,保证了高优先级的操作命令可以被优先调度。通过将优先级高的操作命令的执行结果存入至高优先级的结果返回队列,可以上层能尽快地得知优先级较高的操作命令的执行结果。
由于FAA模块可以在操作命令位于操作潜伏期时,将当前读取的微码的NCS记忆位置作为该操作命令的命令参数存储至命令缓存管理模块中,使得该操作命令被再次调度时,能够从命令缓存管理模块中读取到上次记录的该操作命令所对应的NCS记忆位置,以继续读取剩余的微码进行执行,从而避免了对已经执行过的部分微码的重复执行,保证了对操作命令的微码执行的速度。
由于第一类微码可以与操作命令的命令参数匹配,当操作命令的协议发生变化时,仅需要针对协议变化后的操作命令的命令参数对第一类微码进行修改即可,实现了对协议的灵活适用;此外,第二类微码可以与Flash总线接口所要求的参数匹配,当Flash总线接口的标准发生变化了,仅需要针对Flash总线接口所要求的参数修改第二类微码即可,实现对Flash总线接口的标准的灵活适用。
除非另作定义,此处使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本发明专利申请说明书以及权利要求书中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”或者“一”等类似词语也不表示数量限制,而是表示存在至少一个。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的示意性实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (18)
1.一种闪存Flash接口控制器,其特征在于,所述闪存Flash接口控制器包括:通道管理模块、通道、命令缓存管理模块、数据缓存管理模块、非线性Nand适配存储NCS记忆存储模块和可编程时序发生器PTG记忆存储模块,所述通道包括晶片Die并行调度DCS模块、Flash访问代理FAA模块、PTG模块和物理层接口模块,其中:
所述通道管理模块用于根据接收到的操作命令中的通道号,将所述操作命令分配至所述通道号对应的通道;
所述通道中的DCS模块用于将接收到的操作命令存储至所述命令缓存管理模块中,将从接收到的各个操作命令中调度的操作命令发送至所述FAA模块;
所述FAA模块用于在接收到所述操作命令后,从所述命令缓存管理模块中获取所述操作命令的命令参数,根据所述命令参数指向的Nand适配存储NCS记忆位置,读取所述NCS记忆存储模块中从所述NCS记忆位置起的第一类微码进行执行,将执行所述第一类微码后得到的索引命令发送至所述PTG模块;
所述PTG模块用于从所述PTG记忆存储模块中所述索引命令对应的位置读取第二类微码进行执行,将执行所述第二类微码后得到的Flash总线操作发送给所述物理层接口模块;
所述物理层接口模块用于将所述Flash总线操作发送至Flash总线。
2.根据权利要求1所述的Flash接口控制器,其特征在于,所述通道管理模块包括通道管理单元和处理单元,其中:
所述通道管理单元用于根据接收到的操作命令中的通道号,将所述操作命令分配至所述通道号对应的通道;
所述处理单元用于将自定义命令下发给对应通道中的DCS模块,所述自定义命令为需要对Die进行特殊处理时生成的命令,所述特殊处理不包含写操作、读操作、擦除操作。
3.根据权利要求2所述的Flash接口控制器,其特征在于,所述处理单元还用于在判定所述自定义命令与其他操作命令所对应的Die无关时,则直接将所述自定义命令下发给对应通道中的DCS模块;
所述处理单元还用于在判定所述自定义命令与其他操作命令所对应的Die有关时,则在与所述自定义命令有关的操作命令执行完毕后,将所述自定义命令下发给对应通道的DCS模块。
4.根据权利要求1至3中任一所述的Flash接口控制器,其特征在于,所述DCS模块包括至少一组命令分发队列组,每组命令分发队列组包括高优先级的命令分发队列和低优先级的命令分发队列,同组命令分发队列组中高优先级的命令分发队列中存储的命令被优先调度;
所述通道管理模块还用于根据操作命令的优先级以及所述DCS模块反馈的各个操作命令的执行结果,确定出所述DCS模块中与所述操作命令的优先级匹配且具备空闲存储位置的目标命令分发队列,将所述操作命令分配至所述目标命令分发队列中。
5.根据权利要求1至3中任一所述的Flash接口控制器,其特征在于,所述DCS模块包括一组结果返回队列,所述结果返回队列包括高优先级的结果返回队列和低优先级的结果返回队列,高优先级的结果返回队列中存储的命令的执行结果被优先上报给所述通道管理模块。
6.根据权利要求1至3中任一所述的Flash接口控制器,其特征在于,
当所述操作命令为写命令时,所述FAA模块还用于向数据访问控制器发送与所述操作命令对应的读请求,所述读请求用于触发所述数据访问控制器从数据存储介质中读取与所述操作命令对应的数据,将读取的所述数据返回给所述FAA模块,所述FAA模块还用于将所述数据访问控制器获取的所述数据存储至所述数据缓存管理模块中;
当所述操作命令为读命令时,所述FAA模块还用于将所述PTG模块从Flash中读取的与所述操作命令对应的数据存储至所述数据缓存管理模块中,从所述数据缓存管理模块中读取所述操作命令对应的数据,向所述数据访问控制器发送携带有所述数据的写请求,所述写请求用于触发所述数据访问控制器将所述数据写入至所述数据存储介质中。
7.根据权利要求1至3中任一所述的Flash接口控制器,其特征在于,所述FAA模块还用于在执行到所述操作命令的操作潜伏期时,将所述操作命令的中间状态以及当前读取到的第一类微码的NCS记忆位置作为所述操作命令的命令参数存储至所述命令缓存管理模块中;
所述FAA模块还用于在所述操作命令被DCS模块再次调度时,从所述命令缓存管理模块中获取上次记录的所述操作命令的NCS记忆位置,继续读取所述NCS记忆存储模块中从所述NCS记忆位置起的第一类微码进行执行,在所述操作命令所对应的所有第一类微码执行完毕后,获取所述操作命令的命令结果返回给所述DCS模块。
8.根据权利要求1至3中任一所述的Flash接口控制器,其特征在于,所述物理层接口模块还用于判定接收到的所述Flash总线操作是否为双倍时钟速率DDR接口的Bus操作,在接收到的所述Flash总线操作为非DDR接口的总线操作时,将所述Flash总线操作发送到Flash总线;在接收到的所述Flash总线操作为DDR接口的总线操作时,将所述Flash总线操作转换为双沿时钟数据发送到所述Flash总线。
9.根据权利要求1至3中任一所述的Flash接口控制器,其特征在于,所述NCS记忆存储模块中存储的第一类微码以及PTG记忆存储模块中存储的第二类微码在上电时被配置,所述第一类微码与所述操作命令的命令参数匹配,所述第二类微码与Flash总线接口所要求的参数匹配。
10.一种操作命令处理方法,其特征在于,应用于闪存Flash接口控制器中,所述Flash接口控制器包括:通道管理模块、通道、命令缓存管理模块、数据缓存管理模块、非线性Nand适配存储NCS记忆存储模块和可编程时序发生器PTG记忆存储模块,所述通道包括晶片Die并行调度DCS模块、Flash访问代理FAA模块、PTG模块和物理层接口模块,所述方法包括:
所述通道管理模块根据接收到的操作命令中的通道号,将所述操作命令分配至所述通道号对应的通道;
所述通道中的DCS模块将接收到的操作命令存储至所述命令缓存管理模块中,将从接收到的各个操作命令中调度的操作命令发送至所述FAA模块;
所述FAA模块在接收到所述操作命令后,从所述命令缓存管理模块中获取所述操作命令的命令参数,根据所述命令参数指向的Nand适配存储NCS记忆位置,读取所述NCS记忆存储模块中从所述NCS记忆位置起的第一类微码进行执行,将执行所述第一类微码后得到的索引命令发送至所述PTG模块;
所述PTG模块从所述PTG记忆存储模块中所述索引命令对应的位置读取第二类微码进行执行,将执行所述第二类微码后得到的Flash总线操作发送给所述物理层接口模块;
所述物理层接口模块将所述Flash总线操作发送至Flash总线。
11.根据权利要求10所述的操作命令处理方法,其特征在于,所述通道管理模块包括通道管理单元和处理单元,所述通道管理模块根据接收到的操作命令中的通道号,将所述操作命令分配至所述通道号对应的通道,包括:
所述通道管理单元根据接收到的操作命令中的通道号,将所述操作命令分配至所述通道号对应的通道;
所述方法还包括:
所述处理单元将自定义命令下发给对应通道中的DCS模块,所述自定义命令为需要对Die进行特殊处理时生成的命令,所述特殊处理不包含写操作、读操作、擦除操作。
12.根据权利要求11所述的操作命令处理方法,其特征在于,所述方法还包括:
所述处理单元还用于在判定所述自定义命令与其他操作命令所对应的Die无关时,则直接将所述自定义命令下发给对应通道中的DCS模块;
所述处理单元还用于在判定所述自定义命令与其他操作命令所对应的Die有关时,则在与所述自定义命令有关的操作命令执行完毕后,将所述自定义命令下发给对应通道的DCS模块。
13.根据权利要求10至12中任一所述的操作命令处理方法,其特征在于,所述DCS模块包括至少一组命令分发队列组,每组命令分发队列组包括高优先级的命令分发队列和低优先级的命令分发队列,同组命令分发队列组中高优先级的命令分发队列中存储的命令被优先调度;
所述方法还包括:
所述通道管理模块根据操作命令的优先级以及所述DCS模块反馈的各个操作命令的执行结果,确定出所述DCS模块中与所述操作命令的优先级匹配且具备空闲存储位置的目标命令分发队列,将所述操作命令分配至所述目标命令分发队列中。
14.根据权利要求10至12中任一所述的操作命令处理方法,其特征在于,所述DCS模块包括一组结果返回队列,所述结果返回队列包括高优先级的结果返回队列和低优先级的结果返回队列,高优先级的结果返回队列中存储的命令的执行结果被优先上报给所述通道管理模块。
15.根据权利要求10至12中任一所述的操作命令处理方法,其特征在于,所述方法还包括:
当所述操作命令为写命令时,所述FAA模块向数据访问控制器发送与所述操作命令对应的读请求,所述读请求用于触发所述数据访问控制器从数据存储介质中读取与所述操作命令对应的数据,将读取的所述数据返回给所述FAA模块,所述FAA模块将所述数据访问控制器获取的所述数据存储至所述数据缓存管理模块中;
当所述操作命令为读命令时,所述FAA模块将所述PTG模块从Flash中读取的与所述操作命令对应的数据存储至所述数据缓存管理模块中,从所述数据缓存管理模块中读取所述操作命令对应的数据,向所述数据访问控制器发送携带有所述数据的写请求,所述写请求用于触发所述数据访问控制器将所述数据写入至所述数据存储介质中。
16.根据权利要求10至12中任一所述的操作命令处理方法,其特征在于,所述方法还包括:
所述FAA模块在执行到所述操作命令的操作潜伏期时,将所述操作命令的中间状态以及当前读取到的第一类微码的NCS记忆位置作为所述操作命令的命令参数存储至所述命令缓存管理模块中;
所述FAA模块在所述操作命令被DCS模块再次调度时,从所述命令缓存管理模块中获取上次记录的所述操作命令的NCS记忆位置,继续读取所述NCS记忆存储模块中从所述NCS记忆位置起的第一类微码进行执行,在所述操作命令所对应的所有第一类微码执行完毕后,获取所述操作命令的命令结果返回给所述DCS模块。
17.根据权利要求10至12中任一所述的操作命令处理方法,其特征在于,所述方法还包括:
所述物理层接口模块判定接收到的所述Flash总线操作是否为双倍时钟速率DDR接口的Bus操作,在接收到的所述Flash总线操作为非DDR接口的总线操作时,将所述Flash总线操作发送到Flash总线;在接收到的所述Flash总线操作为DDR接口的总线操作时,将所述Flash总线操作转换为双沿时钟数据发送到所述Flash总线。
18.根据权利要求10至12中任一所述的操作命令处理方法,其特征在于,所述NCS记忆存储模块中存储的第一类微码以及PTG记忆存储模块中存储的第二类微码在上电时被配置,所述第一类微码与所述操作命令的命令参数匹配,所述第二类微码与Flash总线接口所要求的参数匹配。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611193064.3A CN108228493B (zh) | 2016-12-21 | 2016-12-21 | 闪存接口控制器及操作命令处理方法 |
PCT/CN2017/103128 WO2018113364A1 (zh) | 2016-12-21 | 2017-09-25 | 闪存接口控制器及操作命令处理方法 |
US16/447,627 US10705986B2 (en) | 2016-12-21 | 2019-06-20 | Flash interface controller and operation command processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611193064.3A CN108228493B (zh) | 2016-12-21 | 2016-12-21 | 闪存接口控制器及操作命令处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108228493A CN108228493A (zh) | 2018-06-29 |
CN108228493B true CN108228493B (zh) | 2019-11-26 |
Family
ID=62624411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611193064.3A Active CN108228493B (zh) | 2016-12-21 | 2016-12-21 | 闪存接口控制器及操作命令处理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10705986B2 (zh) |
CN (1) | CN108228493B (zh) |
WO (1) | WO2018113364A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463365B (zh) * | 2020-11-13 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 提升对Flash通道控制器消息处理效率的方法及装置 |
CN112328509B (zh) * | 2020-11-26 | 2024-07-16 | 北京泽石科技有限公司 | 一种基于硬件实现的用于闪存控制器的快速控制方法 |
CN112634821B (zh) | 2020-12-25 | 2022-05-13 | 京东方科技集团股份有限公司 | 数据显示方法及装置、可读存储介质 |
CN113849433B (zh) * | 2021-09-14 | 2023-05-23 | 深圳市昂科技术有限公司 | 一种总线控制器的执行方法、装置、总线控制器、计算机设备和存储介质 |
CN114036096B (zh) * | 2021-11-04 | 2024-05-03 | 珠海一微半导体股份有限公司 | 一种基于总线接口的读控制器 |
CN114296639B (zh) * | 2021-12-10 | 2024-02-20 | 深圳大普微电子科技有限公司 | 命令处理方法及闪存设备 |
TWI823519B (zh) * | 2022-08-15 | 2023-11-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103226530A (zh) * | 2012-01-31 | 2013-07-31 | 上海华虹集成电路有限责任公司 | 与非型闪存Nandflash控制器 |
CN103226528A (zh) * | 2012-01-31 | 2013-07-31 | 上海华虹集成电路有限责任公司 | 多通道与非型闪存控制器 |
US9201825B1 (en) * | 2011-11-02 | 2015-12-01 | Marvell International Ltd. | Data storage methods and apparatus |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4261461B2 (ja) * | 2004-11-05 | 2009-04-30 | 株式会社東芝 | 半導体集積回路装置、及びそれを用いた不揮発性メモリシステム |
US7941587B2 (en) * | 2007-09-17 | 2011-05-10 | Cadence Design Systems, Inc | Programmable sequence generator for a flash memory controller |
CN101162449B (zh) * | 2007-10-08 | 2010-06-02 | 福州瑞芯微电子有限公司 | Nand flash控制器及其与nand flash芯片的数据交互方法 |
WO2009097681A1 (en) * | 2008-02-04 | 2009-08-13 | Mosaid Technologies Incorporated | Flexible memory operations in nand flash devices |
JP2011197819A (ja) * | 2010-03-17 | 2011-10-06 | Toshiba Corp | 半導体装置 |
US8645618B2 (en) | 2011-07-14 | 2014-02-04 | Lsi Corporation | Flexible flash commands |
US9275706B2 (en) * | 2013-02-28 | 2016-03-01 | Sandisk Technologies Inc. | Auto-calibration for high speed input/output |
US9576665B2 (en) * | 2015-03-12 | 2017-02-21 | Kabushiki Kaisha Toshiba | Semiconductor memory device and memory system |
US9659664B1 (en) * | 2015-12-15 | 2017-05-23 | International Business Machines Corporation | Dynamically adjusting read voltage in a NAND flash memory |
-
2016
- 2016-12-21 CN CN201611193064.3A patent/CN108228493B/zh active Active
-
2017
- 2017-09-25 WO PCT/CN2017/103128 patent/WO2018113364A1/zh active Application Filing
-
2019
- 2019-06-20 US US16/447,627 patent/US10705986B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9201825B1 (en) * | 2011-11-02 | 2015-12-01 | Marvell International Ltd. | Data storage methods and apparatus |
CN103226530A (zh) * | 2012-01-31 | 2013-07-31 | 上海华虹集成电路有限责任公司 | 与非型闪存Nandflash控制器 |
CN103226528A (zh) * | 2012-01-31 | 2013-07-31 | 上海华虹集成电路有限责任公司 | 多通道与非型闪存控制器 |
Also Published As
Publication number | Publication date |
---|---|
WO2018113364A1 (zh) | 2018-06-28 |
US10705986B2 (en) | 2020-07-07 |
CN108228493A (zh) | 2018-06-29 |
US20190303314A1 (en) | 2019-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108228493B (zh) | 闪存接口控制器及操作命令处理方法 | |
CN103778013B (zh) | 一种多通道Nand Flash控制器及其控制方法 | |
CN108369562B (zh) | 具有增强型访问调度器的智能编码存储器架构 | |
KR101653011B1 (ko) | 복수의 저장 장치를 관리하기 위한 저장 시스템과 방법 | |
CN100495374C (zh) | 可支持多个内部通道软件请求的直接存储器存取控制器 | |
CN109426455A (zh) | 用于将i/o密集操作卸载至数据存储滑板的技术 | |
CN109992407B (zh) | 一种yarn集群gpu资源调度方法、装置和介质 | |
CN101615067A (zh) | 经协调的链路功率管理 | |
CN103809917A (zh) | 用于存储器的工作调度方法及其存储系统 | |
US20130205141A1 (en) | Quality of Service Targets in Multicore Processors | |
US20200409874A1 (en) | Data storage system data access arbitration | |
CN111684430A (zh) | 支持同一信道上对不统一等待时间的存储器类型的响应 | |
CN109614049B (zh) | 闪存控制方法、闪存控制器及闪存系统 | |
US11422849B2 (en) | Technology for dynamically grouping threads for energy efficiency | |
US8166316B2 (en) | Single interface access to multiple bandwidth and power memory zones | |
CN105677582A (zh) | 基于可重构系统配置多模式传输的可控缓存实现系统 | |
Narantuya et al. | Multi-Agent Deep Reinforcement Learning-Based Resource Allocation in HPC/AI Converged Cluster. | |
US20200409846A1 (en) | Dual controller cache optimization in a deterministic data storage system | |
Burchardt et al. | A real-time streaming memory controller | |
Kim et al. | QoS-aware flash memory controller | |
CN115373828A (zh) | 一种资源调度方法、装置、设备以及计算机存储介质 | |
CN113608845A (zh) | 数据处理方法及装置 | |
CN103197964A (zh) | 在电子装置的多个操作系统间进行信息交换的方法 | |
CN115563038B (zh) | 基于dma控制器的数据处理系统、方法和数据处理设备 | |
CN108241770B (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 |