CN108345428B - 控制密集型控制系统及其方法 - Google Patents
控制密集型控制系统及其方法 Download PDFInfo
- Publication number
- CN108345428B CN108345428B CN201710204980.0A CN201710204980A CN108345428B CN 108345428 B CN108345428 B CN 108345428B CN 201710204980 A CN201710204980 A CN 201710204980A CN 108345428 B CN108345428 B CN 108345428B
- Authority
- CN
- China
- Prior art keywords
- command
- memory access
- processor
- thread
- queue
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Advance Control (AREA)
Abstract
公开了控制密集型控制系统及其方法。所公开的方法包括第一处理器生成第一命令并发送给第二处理器;在第二处理器中由第一线程处理第一命令;第一线程生成第一存储器访问命令;响应于所生成的第一存储器访问命令被填充至提交队列,所述第一线程让步(yield);第一存储器访问命令处理完成后,恢复生成所述第一存储器访问命令的所述第一线程;以及第一线程使用所述第一存储器访问命令的处理结果。
Description
技术领域
本申请涉及固态存储设备(Solid Storage Device,SSD),更具体地,本申请涉及改进存储器控制器的大并发IO处理能力。
背景技术
参看图1,展示了存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial AttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Comp onent InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)110。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件104用于控制在接口103、NVM芯片105以及DRAM 110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(App lication SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令。控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据。在DRAM可存储FTL表和/或缓存的IO命令的数据。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
在控制部件104中运行的软件和/或固件(下面统称为“固件”)可被存储在NVM芯片105或另外的固件存储器中。在固态存储设备102上电时,从固件存储器将固件加载到DRAM110和/或控制部件104内部的存储器中。可选地,通过接口103或调试接口接收并加载固件。控制部件104通过闪存接口控制器向NVM芯片105发送的命令包括,例如,读出、编程和/或擦除等。命令还包括暂停(suspend)命令,用于临时暂停已发送给NVM芯片105的命令的执行。
由于编程、擦除等命令的执行时间同读出命令相比相对较长。若读出命令跟在编程或擦除命令之后向NVM芯片105发出,则读出命令需要等待编程或擦除命令的执行完成后才能得到执行,继而导致读出操作的响应时间较长,并导致存储设备102的读出延迟增大。类似地,若编程命令跟在擦除命令之后向NVM芯片105发出,编程命令需要等待擦除命令的执行完成后才能执行,继而导致编程命令的响应时间较长。
通过向NVM芯片105发出暂停(suspend)命令,可以临时暂停编程或擦除命令在NVM芯片105上的执行,继而NVM芯片105能够响应读出命令,并在读出命令执行完成后,通过向NVM芯片105发出恢复(resume)命令,来恢复对被暂停的编程或擦除命令的执行。在NVM芯片105执行编程或擦除命令期间,可多次接收暂停命令,以及恢复命令,并使同一编程或擦除命令被暂停以及恢复多次。
在公开号为US2013/0198451A1的美国专利申请中,提供了暂停命令的有条件执行。在接收到读/写命令时,基于暂停策略而计算暂停阈值,并判断在前的擦除操作是否满足暂停阈值。若满足暂停阈值,则暂停在前的擦除操作,若不满足暂停阈值,则完成在前的擦除操作。
在公开号为CN1414468A的中国专利申请中,提供了通过执行微指令序列来处理CPU(Central Processing Unit,中央处理单元)命令的方案。当CPU要处理特定命令时,转换逻辑电路将特定命令转换成与之对应的微指令序列,通过执行微指令序列来实现特定命令的功能。微指令序列或者微指令序列的模板存储在ROM(Read Only Memory,只读存储器)中。在将特定命令转换成微指令序列过程中,可对微指令序列模板进行填充,使之与特定命令相对应。
由于用于NVM存储器中的NVM控制器通常耦合到多个NVM芯片,NVM芯片包括多个LUN(逻辑单元)或管芯,多个LUN和管芯可以并行响应及访问NVM命令,又由于每个LUN或管芯上可以有多个待处理的NVM命令,因此NVM控制器需要对多个NVM命令或多段微指令序列进行调度,以维护多个在处理中或待处理的NVM命令,或者维护多段用于生成NVM命令的微指令序列。
发明内容
虽然现有技术中提供了通过检查暂停阈值来确定是否发出暂停命令的方案,但依然希望提供更多的灵活性,来控制暂停命令的发出时机。并且被期待的是,存储设备的用户能够参与对闪存暂停命令的发出的时机的灵活控制,而不是依赖于存储控制器对访问NVM芯片的多个命令实施调度。
为实现上述目的,本发明通过微指令序列的执行来响应来自主机或用户的命令。通过微指令处理器对微指令序列的执行,向NVM芯片发出操作命令和/或接收从NVM芯片读出的数据或其他信息。存储设备的用户通过对微指令序列的编程、更新和/或修改,能够参与对闪存暂停命令的发出的时机的灵活控制。
根据本申请的第一方面,提供了根据本申请第一方面的第一存储器访问处理方法,包括:第一处理器生成第一命令并发送给第二处理器;在第二处理器中由第一线程处理第一命令;第一线程生成第一存储器访问命令;响应于所生成的第一存储器访问命令被填充至提交队列,所述第一线程让步(yield);第一存储器访问命令处理完成后,恢复生成所述第一存储器访问命令的所述第一线程;以及第一线程使用所述第一存储器访问命令的处理结果。
根据根据本申请第一方面的第一存储器访问处理方法,提供了根据本申请第一方面的第二存储器访问处理方法,还包括:响应于所述第一线程让步,所述第二处理器调度第二线程处理第一处理器发送给第二处理器的第二命令;以及第二线程生成第二存储器访问命令;响应于所生成的第二存储器访问命令被填充至提交队列,所述第二线程让步。
根据根据本申请第一方面的第一或第二存储器访问处理方法,提供了根据本申请第一方面的第三存储器访问处理方法,其中所述第一处理器将第一命令填充至命令队列,以将所述第一命令发送给所述第二处理器。
根据根据本申请第一方面的第一至第三存储器访问处理方法之一,提供了根据本申请第一方面的第四存储器访问处理方法,其中所述第一线程执行让步微指令使所述第一线程让步。
根据根据本申请第一方面的第一至第四存储器访问处理方法之一,提供了根据本申请第一方面的第五存储器访问处理方法,还包括:总线控制器处理第一存储器访问命令,将所述第一存储器访问命令的处理结果存储到所述第一线程的上下文存储器,以及将指示所述第一存储器访问命令处理完成的完成队列条目填充到所述完成队列。
根据根据本申请第一方面的第一至第四存储器访问处理方法之一,提供了根据本申请第一方面的第六存储器访问处理方法,还包括:总线控制器处理第一存储器访问命令,将所述第一存储器访问命令的处理结果存储到指示所述第一存储器访问命令处理完成的完成队列条目,以及将所述完成队列条目填充到所述完成队列。
根据根据本申请第一方面的第一至第六存储器访问处理方法之一,提供了根据本申请第一方面的第七存储器访问处理方法,其中响应于完成队列中出现指示所述第一存储器访问命令处理完成的完成队列条目,恢复所述第一线程。
根据根据本申请第一方面的第一至第七存储器访问处理方法之一,提供了根据本申请第一方面的第八存储器访问处理方法,其中响应于完成队列中出现指示所述第一存储器访问命令处理完成的完成队列条目,将所述第一线程设置为就绪状态;以及响应于线程让步,恢复处于就绪状态的线程之一。
根据根据本申请第一方面的第一至第八存储器访问处理方法之一,提供了根据本申请第一方面的第九存储器访问处理方法,其中所述第二处理器选择线程之一处理第一处理器发送给第二处理器的命令。
根据本申请的第二方面,提供了根据本申请第二方面的第一异构处理系统,包括第一处理器与第二处理器;所述第一处理器通过命令队列向第二处理器发送命令;所述第一处理器与第二处理器分别耦合到总线;所述第二处理器包括可运行多个线程的处理单元以及总线控制器;所述处理单元通过提交队列与完成队列耦合到总线控制器;所述处理单元运行的线程向所述提交队列填充存储器访问命令;所述总线控制器处理存储器访问命令,并根据存储器访问命令的处理结果,向所述完成队列填充完成队列条目。
根据本申请第二方面的第一异构处理系统,提供了根据本申请第二方面的第二异构处理系统,其中所述处理单元运行的线程向所述提交队列填充存储器访问命令后,让步。
根据本申请第二方面的第二异构处理系统,提供了根据本申请第二方面的第三异构处理系统,其中所述第二处理器保存让步的线程的执行状态。
根据本申请第二方面的第一至第三异构处理系统之一,提供了根据本申请第二方面的第四异构处理系统,其中响应于线程让步,所述第二处理器调度其他线程。
根据本申请第二方面的第一至第四异构处理系统之一,提供了根据本申请第二方面的第五异构处理系统,其中所述命令队列可存储所述第一处理器发送的多条命令。
根据本申请第二方面的第一至第五异构处理系统之一,提供了根据本申请第二方面的第六异构处理系统,其中所述提交队列可存储所述第二处理器运行的线程填充的多条存储器访问命令;以及所述完成队列可存储所述总线控制器填充的多条完成队列条目。
根据本申请第二方面的第一至第六异构处理系统之一,提供了根据本申请第二方面的第七异构处理系统,其中所述第二处理器通过所述总线控制器耦合到总线,所述总线处理器依据存储器访问命令,访问总线上的设备并获取存储器访问命令的处理结果。
根据本申请第二方面的第一至第七异构处理系统之一,提供了根据本申请第二方面的第八异构处理系统,其中所述总线控制器依据存储器访问命令的处理结果,设置生成存储器访问命令的线程的上下文存储器。
根据本申请第二方面的第八异构处理系统,提供了根据本申请第二方面的第九异构处理系统,其中还将生成存储器访问命令的线程设置为就绪状态。
根据本申请第二方面的第九异构处理系统,提供了根据本申请第二方面的第十异构处理系统,其中响应于线程让步,所述第二处理器调度处于就绪状态的线程。
根据本申请第二方面的第一至第十异构处理系统之一,提供了根据本申请第二方面的第十一异构处理系统,其中响应于完成队列中出现指示第一存储器访问命令处理完成的完成队列条目,恢复生成所述第一存储器访问命令的线程。
根据本申请的第三方面,提供了一种存储器访问处理设备,包括:生成模块,用于使第一处理器生成第一命令并发送给第二处理器;处理模块,用于使在第二处理器中的第一线程处理第一命令;存储器访问命令生成模块,用于使第一线程生成第一存储器访问命令;让步模块,用于响应于所生成的第一存储器访问命令被填充至提交队列,所述第一线程让步(yield);恢复模块,用于第一存储器访问命令处理完成后,恢复生成所述第一存储器访问命令的所述第一线程;以及使用模块,用于使第一线程使用所述第一存储器访问命令的处理结果。
附图说明
当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:
图1是现有技术的存储设备的框图;
图2是根据本发明实施例的介质接口控制器的结构框图;
图3是根据本发明实施例的调度微指令序列的方法的流程图;
图4是根据本发明另一实施例的介质接口控制器的结构框图;
图5展示了根据本发明另一实施例的介质接口控制器进行处理的时序图;
图6是根据本发明另一实施例的介质接口控制器的结构框图;
图7是根据本发明实施例的微指令序列的执行方法的流程图;
图8是根据本发明又一实施例的微指令序列的执行方法的流程图;
图9是根据本发明依然又一实施例的微指令序列的执行方法的流程图;
图10是根据本申请实施例的异构处理系统的结构框图;
图11展示了根据申请实施例的队列条目;以及
图12是根据本申请实施例的异构处理系统的处理的流程图。
具体实施方式
参看图2,图2是根据本发明实施例的介质接口控制器的结构框图。为实现对微指令的处理,介质接口控制器包括微指令处理器210、命令队列220、介质接口230和/或微指令存储器240。
微指令存储器240用于存储微指令。微指令处理器210从微指令存储器240中读取并执行微指令。微指令使得微指令处理器通过介质接口230向NVM芯片发出访问NVM芯片的命令,包括,例如,读出、编程、擦除、暂停、读取NVM芯片特征(feature)和/或读设置存颗粒特征等命令。微指令也使得微指令处理器210通过介质接口230获得从NVM芯片读出的数据。一条微指令或多条微指令可对应于读出、编程、擦除和/或暂停等访问NVM芯片的命令之一。微指令还可以包括分支、跳转微指令,其使得微指令处理器改变执行微指令的顺序。
微指令存储器240中可存储一段或多段微指令序列。作为举例,在图2的微指令存储器240中,存储了n段微指令序列,包括微指令序列1、微指令序列2……以及微指令序列n。微指令序列1、微指令序列2……以及微指令序列n的每段包括多条微指令。
在微指令序列中的多条微指令可由微指令处理器210执行。每段微指令序列拥有自己的执行状态,从而每段微指令的执行可被暂停(suspend)和恢复(resume)。微指令处理器能够暂停正在执行的微执行序列,并选择执行其他微指令序列。也可以在微指令序列中提供让步(yield)微指令,当执行到让步微指令时,微指令处理器可调度并执行其他微指令序列。微指令处理器210暂停正在执行的微指令序列,或者执行让步微指时,正在执行的微指令序列的执行状态被保存;当微指令处理器恢复微指令序列的执行时,读出被保存的执行状态,从而继续被恢复的微指令序列的执行。
介质接口230同NVM芯片相耦合,用于向NVM芯片发出访问NVM芯片的命令,包括,例如,读出、编程、擦除、暂停和/或恢复等;也用于获得从NVM芯片读出的数据。
将执行的微指令序列称作线程。同一微指令序列在每次执行时拥有自己的执行状态,从而可基于同一微指令序列创建多个线程。
命令队列220用于缓存来自用户或上层系统的命令。来自用户或上层系统的命令可包括读出、写入、删除、标记为无效等命令,还可以包括读取存储设备状态、读取/设置NVM芯片特征(feature)等命令,以及也可以包括用户自定义命令。命令队列220可由存储器、先进先出存储器寄存器堆等实现。
在处理命令队列220中的命令时,获取与该命令对应的微指令序列,并由微指令处理器210执行该微指令序列,以完成对命令队列220中的命令的处理。可由转换电路(未示出)实现从处理命令队列220中的命令到微指令序列的转换。也可以由微指令处理器210实现从处理命令队列220中的命令到微指令序列的转换。在获取微指令序列的过程中,可以基于命令队列220中的命令对微指令序列进行填充或适配,以使微指令序列同命令队列220中的命令相适应。
例如,在微指令处理器210执行微指令序列1时,命令队列220中被写入来自用户或上层系统的新命令。可提供调度逻辑(未示出)来协助微指令处理器210对微指令序列的调度。响应于该新命令,调度逻辑可暂停微指令序列1的执行,并调度对应于新命令的微指令序列(例如,微指令序列2)由微指令处理器210执行。被暂停的微指令序列1的执行状态被保存,使得在微指令序列1的执行被恢复时,可获取被暂停时的执行状态。在一个实施例中,该新命令是读取命令。读取命令可具有较高的优先级,调度逻辑基于读取命令具有较高的优先级而响应于该新命令而暂停微指令序列1的执行。
在一个实施例中,微指令序列1用于执行对NVM芯片的擦除操作。当调度逻辑暂停微指令序列1的执行时,调度逻辑还向NVM芯片发出暂停NVM芯片擦除操作的命令。当微指令序列2执行完成后,调度逻辑还向NVM芯片发出恢复NVM芯片擦除操作的命令。继而获取微指令序列1被暂停时的执行状态,并恢复微指令序列1的执行。
在另一个实施例中,微指令序列1用于执行对NVM芯片的编程操作。当调度逻辑暂停微指令序列1的执行时,调度逻辑还向NVM芯片发出暂停NVM芯片编程操作的命令。当微指令序列2执行完成后,调度逻辑还向NVM芯片发出恢复NVM芯片编程操作的命令。继而获取微指令序列1被暂停时的执行状态,并恢复微指令序列1的执行。
调度逻辑可实现为软件、硬件电路和/或固件,可独立于微指令处理器210,也可集成于微指令处理器210。
在一个实施例中,微指令序列1包括让步(Yield)微指令。微指令处理器210执行让步微指令时,保存微指令序列1的执行状态,并选择执行或恢复微指令序列之一。此时,若命令队列220中存在来自用户或上层系统的新命令,该新命令对应于微指令序列2,调度逻辑可响应于该新命令而执行微指令序列2。调度逻辑也可以基于存在已让步或被暂停的微指令序列3,而恢复微指令序列3。在进一步的实施例中,微指令处理器210执行微指令序列1的让步微指令后,比较微指令序列1、微指令序列2和/或微指令序列3的优先级,并决定接下来执行哪一微指令。在依然进一步的实施例中,对应于读操作的微指令序列的优先级高于对应于擦除操作的微指令序列的优先级。对应于读操作的微指令序列的优先级高于对应于编程操作的微指令序列的优先级。
在一个实施例中,微指令序列1与微指令序列2均包括让步微指令。例如,在微指令序列1、微指令序列2的开始位置包括让步微指令。当响应于命令队列220中的命令而执行微指令序列1时,随着让步微指令的执行,微指令序列1让步。此时调度逻辑决定接下来执行哪一微指令序列。若命令队列220中存在对应于微指令序列2的新命令,调度逻辑可调度执行微指令序列2。由于微指令序列2的开始位置包括让步微指令,微指令序列2同样让步。此时,微指令序列1与微指令序列2均已让步。调度逻辑可选择微指令序列1或微指令序列2之一恢复执行;若命令队列220中存储对应于其他微指令序列(例如,微指令序列n)的新命令,调度逻辑也可以选择执行微指令序列n。在进一步的实施例中,调度逻辑基于微指令序列1、微指令序列2和/或微指令序列n的优先级来确定执行那个微指令序列。
在又一个的实施例中,微指令序列1与微指令序列2均包括让步微指令。例如,在微指令序列1、微指令序列2的开始位置包括让步微指令。当响应于命令队列220中的命令而执行微指令序列1时,随着让步微指令的执行,微指令序列1让步。此时调度逻辑决定接下来执行哪一微指令序列。若命令队列220中存在对应于微指令序列2的新命令,调度逻辑可调度执行微指令序列2。由于微指令序列2的开始位置包括让步微指令,微指令序列2同样让步。此时调度逻辑决定接下来执行哪一微指令序列。调度逻辑发现微指令序列1与微指令序列2均已让步。调度逻辑可基于先来先服务的原则,恢复微指令序列1的执行。接下来,微指令序列1的执行过程中,使得介质接口230向NVM芯片发出擦除操作。微指令序列1中可包括进一步的让步指令。随着让步指令的执行,微指令序列1再次让步。调度逻辑再次决定接下来执行哪一微指令序列。由于微指令序列1对应擦除操作,而微指令序列2对应读取操作,而读取操作的优先级高于擦除操作,调度逻辑决定恢复微指令序列2的执行。此时,调度逻辑还使得介质接口230向NVM芯片发出擦除暂停命令,以暂停由于微指令序列1发出的擦除命令,从而使得NVM芯片可以响应后续的读取命令。接下来在执行微指令序列2的过程中,微指令处理器210使得介质接口向NVM芯片发出读取命令。在进一步的实施例中,当接收到NVM芯片返回的数据,微指令序列2执行完成。调度逻辑再次决定接下来执行哪一微指令序列。注意到微指令序列1已让步,调度逻辑决定恢复微指令序列1的执行。为恢复微指令序列1,调度逻辑还使得介质接口230向NVM芯片发出恢复擦除操作的命令,继而恢复微指令序列1的执行。以同执行对应于擦除操作的微指令序列1相似的方式,调度逻辑可调度对应于编程操作的微指令序列。在一个实施例中,命令队列220中的来自用户或上层系统的命令,提供命令的优先级信息。
在另一个实施例中,微指令序列1的执行过程中,使得介质接口230向NVM芯片发出擦除操作。微指令序列1中可包括进一步的让步指令。随着让步指令的执行,微指令序列1再次让步。调度逻辑为微指令序列1的擦除操作启动定时器,以记录向NVM芯片发出擦除操作后经历的时间。接下来,当响应于命令队列220中的命令,而希望执行微指令序列2时,调度逻辑再次决定接下来执行哪一微指令序列。在该实施例中,微指令序列1对应擦除操作,而微指令序列2对应读取操作,而读取操作的优先级高于擦除操作。调度逻辑进一步检查定时器。如果定时器的值大于阈值,表示距在前的NVM芯片擦除命令的发出已经历了较长时间,可以期待擦除操作将很快完成。此时若向NVM芯片发出擦除暂停命令来暂停在前的擦除操作,并发出读取命令,对读取操作延迟的改善效果并不明显,又增加了在前的擦除操作的执行延迟。在此情况下,调度逻辑不会调度执行微指令序列2,也不会使介质接口230向NVM芯片发出擦除暂停命令。而如果定时器的值不大于或小于阈值,表示在前的擦除命令还需要执行较长时间。在此情况下,若等待擦除命令完成再执行读取命令,将显著增加用户体验到的读取操作的执行延迟。因而调度逻辑选择调度执行微指令序列2。并使介质接口230向NVM芯片发出擦除暂停命令,以及暂停定时器。调度逻辑还可以调整微指令序列1和/或微指令序列2的优先级。继而在微指令序列2的执行过程中,微指令序列2将使介质接口230向NVM芯片发出读取命令。当微指令序列2执行完成后,或从NVM芯片读出该读取命令指定的数据后,调度逻辑使得介质接口230向NVM芯片发出恢复擦除操作的命令,并恢复定时器,使定时器继续计时。在进一步的实施例中,响应于希望执行其他微指令序列,调度逻辑再次使介质接口230向NVM芯片发出擦除暂停命令,并再次停止定时器。在依然又一个实施例中,微指令序列1对应于编程操作,而微指令序列2对应于读取操作。
参看图3,图3展示了根据本发明实施例的调度微指令序列的方法的流程图。图3的处理流程可由调度逻辑实现。调度逻辑可以实现为软件、硬件电路和/或固件,可独立于微指令处理器210(参见图2),也可集成于微指令处理器210。
当通过例如命令队列220而接收到来自用户或上层系统的第一命令(310),调度逻辑调度执行与第一命令相对应的第一微指令序列(320)。在一个实施例中,转换电路根据第一命令的内容,将第一命令转换为第一微指令序列。参看图2,微指令序列可存储于微指令存储器240中,以由转换电路根据第一命令的内容来选择。微指令存储器中存储的也可以是微指令序列的模板,并由转换电路根据第一命令的内容来填充微指令序列模板,以得到可由微指令处理器210执行的微指令序列。
在第一微指令序列执行过程中,通过例如命令队列220而接收到来自用户或上层系统的第二命令(330)。调度逻辑检查第一微指令序列和/或其他微指令序列的执行状态(340)。在一个实施例中,第一微指令序列正在执行,并且可被暂停。在又一个实施例中,第一微指令序列正在执行,并且可被暂停,而第二命令对应的优先级高于第一命令的优先级。在又一个实施例中,第一微指令序列已经例如通过执行让步微指令而让步。调度逻辑暂停第一微指令序列(350)。为暂停并恢复第一微指令序,调度逻辑还保存第一微指令序列的执行状态。在一个实施例中,第一微指令序列发出了NVM芯片擦除命令。调度逻辑还向NVM芯片发出擦除暂停命令。接下来,调度逻辑调度执行第二微指令序列(360)。
图4是根据本发明另一实施例的介质接口控制器的结构框图。图4中提供的介质接口控制器与图2中提供的介质接口控制器相似,包括微指令处理器410、命令队列420、介质接口430和/或微指令存储器440。在微指令存储器440中存储了微指令序列1、微指令序列2……微指令序列n。在图4的实施例中,还示出了状态寄存器450、寄存器池460以及调度器470。
状态寄存器450耦合到微指令处理器410,用于保存和提供微指令序列的执行状态。微指令序列的执行状态包括程序计数器(PC)、通用寄存器(GR)、物理地址寄存器和/或定时器等。程序计数器用于指示微指令序列中当前执行的微指令地址。物理地址寄存器用于指示微指令序列访问的NVM芯片的地址。
寄存器池460用于保存微指令序列的执行状态(或称为线程的执行状态)。寄存器池460保存的微指令序列的执行状态可包括状态寄存器450的内容。在寄存器池460中,可保存一条或多条微指令序列460的执行状态。在寄存器池460中保存了状态信息的微指令序列460,可由调度器470恢复执行。通过将寄存器池460中保存的对应于一条微指令序列的状态信息恢复到状态寄存器450中,微指令处理器410可恢复该微指令序列的执行。
调度器470耦合到微指令处理器410、命令队列420。调度器470可指示微指令处理器410暂停正在执行的微指令序列。调度器470可以指示微指令处理器410恢复微指令序列的执行。调度器470还可以指示微指令处理器410开始对微指令序列的新的执行。通过将微指令序列对应的状态信息(例如,程序计数器值、通用计数器值、物理地址寄存器值和/或定时器值等)保存在状态寄存器450中,调度器470实现对微指令序列的调度。
调度器470也可以实现为微指令序列。在一个实施例中,通过在周期性地调用同调度器470对应的微指令序列,来检查微指令序列的执行状态,在微指令处理器410上调度执行微指令序列。
可选地,在介质接口控制器中创建或使用一个或多个线程。例如,为要访问的NVM芯片的每个逻辑单元(Logic NNit)创建一个线程,使用一个线程来访问与该线程对应的逻辑单元。调度器470通过对微指令序列的调度实现对线程的调度。在寄存器460中容纳多个线程的执行状态。
图5展示了根据本发明另一实施例的介质接口控制器进行处理的时序图。在图5中,时间轴的箭头方向展示了时间的流逝方向。由调度器470执行的处理列在调度器470下方,而由微指令处理器410执行的处理列在微指令处理器410下方。
在图5的实施例中,首先,调度器470发现或响应于第一命令的接收(520)。调度器调度第一微指令序列(522)。作为调度第一微指令序列的结果,微处理器410开始执行第一微指令序列(532)。在第一微指令序列执行(532)期间,调度器发现或响应于第二命令的接收(524)。经过对执行条件和/或调度条件的判断,调度器470暂停指示微指令处理器410第一微指令序列(526)。作为响应,微指令处理器410停止对第一微指令序列的执行。被暂停的第一微指令序列的状态信息被保存。调度器调度第二微指令序列(528)。作为调度二微指令序列的结果,微处理器410开始执行第二微指令序列(534)。随着处理的进行,第二微指令序列的执行完成。经过对执行条件和/或调度条件的进一步判断,调度器470决定调度第一微指令序列(530)。通过恢复之前保存大的第一微指令序列的状态信息,微指令处理器410恢复执行第一微指令序列(536)。
图6是根据本发明另一实施例的介质接口控制器的结构框图。图6中提供的介质接口控制器与图2中提供的介质接口控制器相似,包括微指令处理器610、命令队列620、介质接口630和/或微指令存储器640。在微指令存储器640中存储了微指令序列。
在图6的实施例中,介质接口控制器还包括状态寄存器650。
状态寄存器650耦合到微指令处理器610,用于保存和提供微指令序列的执行状态。微指令序列的执行状态包括程序计数器(PC)、通用寄存器(GR)、物理地址寄存器和/或定时器等。程序计数器用于指示微指令序列中当前执行的微指令地址。物理地址寄存器用于指示微指令序列访问的NVM芯片的地址。状态寄存器650中,可保存一条或多条微指令序列的执行状态(或称为线程的执行状态)。
可选地,运行中的微指令序列使用状态寄存器650所保存的一份执行状态(称为有效执行状态),状态寄存器650中的其他份执行状态被称为备用执行状态。
执行中的微指令序列被暂停时,其在状态寄存器650中保存的执行状态从有效执行状态变为备用执行状态,而微指令执行序列的执行被恢复时,其在状态寄存器650中保存的执行状态从备用执行状态变为有效执行状态。从而微指令处理器610迅速地实现在多条微指令序列之间的切换。
在图6的实施例中,微指令存储器640中存储的微指令序列中包括了用于指示介质接口630向NVM芯片发出一种或多种命令的微指令。例如,微指令存储器640中存储的微指令序列中包括擦除微指令、擦除暂停微指令、读取微指令、擦除恢复微指令。一条或多条擦除微指令用于单独或组合地指示介质接口630向NVM芯片发出擦除命令。一条或多条擦除暂停微指令用于单独或组合地指示介质接口630向NVM芯片发出擦除暂停命令。一条或多条读取微指令用于单独或组合地指示介质接口630向NVM芯片发出读取命令。一条或多条擦除恢复微指令用于单独或组合地指示介质接口控制器630向NVM芯片发出擦除恢复命令。在另一个实施例中,微指令存储器640中存储的微指令序列中还包括编程暂停微指令,和/或编程恢复微指令。一条或多条编程暂停微指令用于单独或组合地指示介质接口630向NVM芯片发出编程暂停命令,一条或多条编程恢复微指令用于单独或组合地指示介质接口630向NVM芯片发出编程恢复命令。
图7是根据本发明实施例的微指令序列710的执行方法的流程图。在图7中,时间轴箭头的方向展示了时间的流逝方向。在一个实施例中,第一命令指示NVM芯片擦除操作。通过执行微指令序列710,处理第一命令720。可从命令队列620(参见图6)中获取第一命令。所属领域技术人员将意识到也有其他获取第一命令的方式。通过执行微指令序列710中的微指令,向NVM芯片发出擦除命令730。通过执行微指令序列710中的微指令,获取并处理第二命令740。例如,通过执行微指令序列710中的微指令,微指令序列710检查命令队列620(参见图6)是否接收到第二命令,在接收到第二命令后,对第二命令进行处理。接下来,通过执行微指令序列710中的微指令,微指令序列710确定要暂停在前发出的擦除命令,于是向NVM芯片发出擦除暂停命令750。例如,通过执行微指令序列710中的微指令,微指令序列710通过比较第一命令与第二命令的优先级来确定是否要暂停在前发出的擦除命令。在另一个例子中,基于第一命令对应擦除、编程或写入操作,而第二命令对应读取操作,而确定要暂停在前向NVM芯片发出的擦除命令或写入命令。接下来,通过执行微指令序列710中的微指令,向NVM芯片发出读取命令760。
图8是根据本发明又一实施例的第一微指令序列810的执行方法的流程图。在图8中,时间轴箭头方向展示了时间的流逝方向。
在一个实施例中,第一命令指示NVM芯片擦除操作。通过执行第一微指令序列810,处理第一命令820。可从命令队列620(参见图6)中获取第一命令。所属领域技术人员将意识到也有其他获取第一命令的方式。通过执行第一微指令序列810中的微指令,向NVM芯片发出擦除命令830。随后,执行第一微指令序列810中的让步微指令来使第一微指令序列810让步835。第一微指令序列810让步后,微指令处理器610(参见图6)可执行其他微指令序列815中的微指令837。在一个例子中,由调度器或调度逻辑来选择微指令处理器610接下来执行的微指令序列。在另一个例子中,由于不存在等待执行的其他微指令序列或者第一微指令序列810的优先级较高,调度器或调度逻辑选择恢复第一微指令序列810的执行。在其他微指令序列815中也包括让步微指令。通过执行其他微指令序列815中的让步微指令,该其他微指令序列815让步839。由于该其他微指令序列815让步,微处理器610可执行另一微指令序列。在一个例子中,调度器或调度逻辑选择恢复第一微指令序列810的执行。通过恢复第一微指令序列810让步时的执行状态(例如,程序计数器值、通用计数器值、物理地址寄存器值和/或定时器值等),微指令处理器610继续执行第一微指令序列810。
接下来,通过执行第一微指令序列810中的微指令,获取并处理第二命令840。例如,通过执行第一微指令序列810中的微指令,微指令序列810检查命令队列620(参见图6)是否接收到第二命令,在接收到第二命令后,对第二命令进行处理。接下来,通过执行微指令序列810中的微指令,第一微指令序列810确定要暂停在前发出的擦除命令,于是向NVM芯片发出擦除暂停命令850。例如,通过执行第一微指令序列810中的微指令,微指令序列810通过比较第一命令与第二命令的优先级来确定上是否要暂停在前发出的擦除命令。在另一个例子中,基于第一命令对应擦除、编程或写入操作,而第二命令对应读取操作,而确定要暂停在前向NVM芯片发出的擦除命令或编程命令。接下来,通过执行第一微指令序列810中的微指令,向NVM芯片发出读取命令860。
图9是根据本发明依然又一实施例的微指令序列的执行方法的流程图。在图8中,时间轴箭头方向展示了时间的流逝方向。
在一个实施例中,第一命令指示NVM芯片擦除操作。通过执行第一微指令序列910,处理第一命令920。可从命令队列620(参见图6)中获取第一命令。所属领域技术人员将意识到也有其他获取第一命令的方式。通过执行第一微指令序列910中的微指令,向NVM芯片发出擦除命令930。随后,执行第一微指令序列910中的让步微指令来使第一微指令序列910让步935。在进一步的实施例中,第一微指令序列910让步时,其执行状态(例如,程序计数器值、通用计数器值、物理地址寄存器值和/或定时器值等)被保存。第一微指令序列910让步后,微指令处理器610(参见图6)可执行其他微指令序列915中的微指令937。在一个例子中,由调度器或调度逻辑来选择微指令处理器610接下来执行的微指令序列。在另一个例子中,由于不存在等待执行的其他微指令序列或者第一微指令序列910的优先级较高,调度器或调度逻辑选择恢复第一微指令序列910的执行。
在其他微指令序列915中也包括让步微指令。通过执行其他微指令序列915中的让步微指令,该其他微指令序列915让步939。由于该其他微指令序列915让步,微处理器610可执行另一微指令序列。在一个例子中,调度器或调度逻辑选择恢复第一微指令序列910的执行。通过恢复第一微指令序列910让步时的执行状态(例如,程序计数器值、通用计数器值、物理地址寄存器值和/或定时器值等),微指令处理器610继续执行第一微指令序列910。
接下来,通过执行第一微指令序列910中的微指令,获取并处理第二命令940。例如,通过执行第一微指令序列910中的微指令,微指令序列910检查命令队列620(参见图6)是否接收到第二命令,在接收到第二命令后,对第二命令进行处理。接下来,通过执行微指令序列910中的微指令,第一微指令序列910确定要暂停在前发出的擦除命令,于是向NVM芯片发出擦除暂停命令950。例如,通过执行第一微指令序列910中的微指令,微指令序列910通过比较第一命令与第二命令的优先级来确定上是否要暂停在前发出的擦除命令。在另一个例子中,基于第一命令对应擦除、编程或写入操作,而第二命令对应读取操作,而确定要暂停在前向NVM芯片发出的擦除命令或编程命令。在依然另一个例子中,通过第一微指令序列910,在执行发出擦除命令的步骤930之前或之后,启动定时器。而在第一微指令序列910确定是否要暂停在前发出的擦除命令时,还参考定时器的值。如果定时器的值大于阈值,表示距在前的NVM芯片擦除命令的发出已经历了较长时间,可以期待擦除操作将很快完成。此时若向NVM芯片发出擦除暂停命令来暂停在前的擦除操作,并发出读取命令,对读取操作延迟的改善效果并不明显,又增加了在前的擦除操作的执行延迟。在此情况下,微指令序列910不会向NVM芯片发出擦除暂停命令。而如果定时器的值不大于或小于阈值,表示在前的擦除命令还需要执行较长时间。在此情况下,若等待擦除命令完成再执行读取命令,将显著增加用户体验到的读取操作的执行延迟。因而通过微指令序列910中的微指令,向NVM芯片发出擦除暂停命令950。之后第一微指令序列910还使定时器暂停。
接下来,通过执行第一微指令序列910中的微指令,向NVM芯片发出读取命令960。通过执行第一微指令序列910中的微指令,检查读取命令是否完成970。例如,响应于从NVM芯片获得读取命令对应的数据,确定读取命令执行完成。若读取命令执行完成,向NVM芯片发出擦除恢复命令980。在进一步的实施例中,恢复定时器使之继续计时。若读取命令尚未执行完成,第一微指令序列910让步972。在进一步的实施例中,第一微指令序列910让步时,其执行状态(例如,程序计数器值、通用计数器值、物理地址寄存器值和/或定时器值等)被保存。第一微指令序列910让步后,微指令处理器610(参见图6)可执行其他微指令序列915中的微指令974。在一个例子中,由调度器或调度逻辑来选择微指令处理器610接下来执行的微指令序列(例如,其他微指令序列915)。在另一个例子中,由于不存在等待执行的其他微指令序列或者第一微指令序列910的优先级较高,调度器或调度逻辑选择恢复第一微指令序列910的执行。
在其他微指令序列915中,也可包括让步微指令。通过在其他微指令序列915中执行让步微指令,其他微指令序列915让步976。其他微指令序列915让步时,其执行状态(例如,程序计数器值、通用计数器值、物理地址寄存器值和/或定时器值等)被保存。其他微指令序列915让步后,微指令处理器610(参见图6)可选择执行第一微指令序列910或其他微指令序列915中的微指令。在一个例子中,由调度器或调度逻辑来选择微指令处理器610接下来执行的微指令序列。在另一个例子中,由于第一微指令序列910在等待执行和/或第一微指令序列910的优先级较高,调度器或调度逻辑选择恢复第一微指令序列910的执行。
接下来,通过执行第一微指令序列910中的微指令,检查擦除命令是否完成990。该擦除命令是在步骤930中向NVM芯片发出的擦除命令。若擦除命令执行完成,则第一微指令序列910的执行完成998。若擦除命令尚未执行完成,第一微指令序列910让步992。第一微指令序列910让步后,微指令处理器610(参见图6)可执行其他微指令序列915中的微指令994。在其他微指令序列中,也可包括让步微指令。通过在其他微指令序列915中执行让步微指令,其他微指令序列915让步996。其他微指令序列915让步后,微指令处理器610(参见图6)可选择执行第一微指令序列910或其他微指令序列915中的微指令。
接下来,当第一微指令序列910被再次恢复执行时,检查命令队列620是否接收到新的命令。在接收到新的命令后,通过执行微指令序列910中的微指令,第一微指令序列910再次确定是否要暂停在前发出的擦除命令。在进一步的实施例中,微指令序列910再次检查定时器,若定时器不大于或小于阈值,以及第二命令对应NVM芯片读取操作,则确定要再次暂停在前发出的擦除命令。在另一个实施例中,微指令序列910比较第一命令与新的命令的优先级。若新的命令的优先级高于第一命令的优先级,则确定要再次暂停在前发出的擦除命令。在依然另一个例子中,随着时间的流逝或依据定时器的值,调整第一命令、第二命令和/或该新的命令的优先级。在依然另一个例子中,在用户或上层系统下发第一命令、第二命令和/或新的命令时,提供命令的优先级。在依然另一个例子中,用户或上层系统可调整命令的优先级。
可利用处理第二命令的步骤940以及后续步骤对新的命令进行处理。以及还可以再次向NVM芯片发出擦除暂停和/或擦除恢复命令。
通过提供微指令序列执行机制,以及让步、擦除暂停、擦除恢复等微指令序列,为存储设备的用户提供了控制暂停命令的发出时机的能力。使得存储设备的用户能够参与对闪存暂停命令的发出的时机的灵活控制,而不是依赖于存储控制器对访问NVM芯片的多个命令实施调度。存储设备的用户通过对微指令序列的编程、更新和/或修改,能够参与对闪存暂停命令的发出的时机的灵活控制。
固态存储设备的控制部件104(参看图1)可同时处理大量(数百个或更多)的IO命令。要为每个IO命令维护处理状态,并访问多种资源,因而带来对DRAM 110或总线上的设备(未示出)的密集访问需求。处理器将对DRAM 110以及总线设备的访问都通过存储器访问模型实现。当存储器访问模型是同步访问模型时,每发出一次存储器访问请求,处理器都要等待存储器访问请求的响应,才能继续执行后续指令。若存储器访问请求发生于具有较大延迟的存储器(DRAM)或设备,这种访问方式将导致处理器频繁等待存储器访问请求的响应,严重影响处理性能。现有技术的处理器通过使用Cache、多发射等技术能解决部分问题,但也极大增加了处理器的复杂度。而本申请的实施例则提供了轻量级的异构处理系统来满足控制密集型系统的需求。
在本申请的实施例中,将同步的存储器访问请求变为异步请求,并通过队列并发处理大量的存储器访问请求,来降低处理器的等待时间,提升系统性能与效率。
图10是根据本申请实施例的异构处理系统的结构框图。图10的异构处理系统可应用于固态存储设备,来优化多大量IO命令的并发处理。异构处理系统包括介质接口控制器1000、CPU 1080、总线1090以及通过总线1090可访问的设备1092、设备1094、SRAM 1096与DRAM 1098。介质接口控制器1000与CPU 1080均可通过总线1090以存储器访问模型访问耦合到总线的设备1092、设备1094、SRAM 1096与DRAM 1098。
图10提供的介质接口控制器1000是多线程处理器。作为举例,介质接口控制器1000与图2中提供的介质接口控制器相似,包括微指令处理器1010、命令队列1020、介质接口1030和/或微指令存储器1040。在微指令存储器640中存储微指令序列。在图10的实施例中,介质接口控制器1000还包括状态寄存器1050、耦合到微指令处理器1010的提交队列1060与完成队列1065,以及用于访问总线的总线控制器1070。
CPU 1080根据来自用户或上层系统的IO命令生成CPU命令填充到命令队列1020以请求介质接口控制器访问NVM芯片105(也参看图1)。CPU 1080可同时将多条CPU命令填充到命令队列1020,并由介质接口控制器1080处理。介质接口控制器1080通过调度多个线程执行微指令序列,每个线程处理多个CPU命令之一。
可以理解地,CPU 1080与微指令处理器1010可以是不同架构的处理器。CPU 1080具有较强的计算能力,而微指令处理器1010是轻量级的多线程处理器,或能够执行多个微指令序列构成的线程。微指令处理器1010也可以是轻量级的多核处理器,每个处理器核用于执行微指令序列。
线程要访问总线1090上的设备(1092或1094)、SRAM 1096或DRAM 1098时,生成存储器访问命令,并填充到提交队列1060。接下来,微指令处理器调度其他线程。其他线程生成的存储器访问命令也填充到提交队列1060,在线程将存储器访问命令填充到提交队列1060后,微指令处理器再次调度其他线程。其他线程要访问总线1090上的设备时,也生成存储器访问命令,并填充到提交队列1060,以及在线程填充了提交队列1060后,被暂停执行。从而等待存储器访问命令的线程被暂停执行,而其他线程被调度执行,使得微指令处理器1010不会长时间等待存储器访问命令的结果。在提交队列1060中可被多个线程填充多条存储器访问命令,使得多个线程对总线设备的访问可并发处理,提高了效率。
CPU 1080也耦合到总线1090,并可访问总线上的设备。
总线控制器1070从提交队列1060获取存储器访问命令,通过总线1090访问耦合到总线的设备(设备1092、设备1094、SRAM 1096或DRAM 1098),以及根据总线设备的响应,填充完成队列,并将存储器访问命令的处理结果提供给微指令处理器1010。作为举例,存储器访问命令指示要访问的总线地址、数据、和/或接收数据的地址(例如寄存器编号或缓存地址),以及访问的类型(读或写)。存储器访问命令的处理结果可以是读出的数据或写入数据成功与否的指示。总线控制器1070可将读出的数据通过完成队列1065提供给微指令处理器1010。或者总线控制器1070将读出数据直接填充到存储器访问命令中指示的接收数据的地址,并通过完成队列1065向微处理器1010指示存储器访问命令处理完成。微指令处理器1010响应于从完成队列1065获取对存储器访问命令处理完成的指示,恢复发出该存储器访问命令的线程。从而恢复执行的该线程可立即获得存储器访问命令的处理结果,并继续执行。
作为举例,线程向提交队列填充存储器访问命令后,通过执行让步微指令来指示微指令处理器1010暂停对该线程的处理,保存该线程的执行状态,以及调度其他线程或处于就绪状态的线程。作为另一个例子,响应于线程向提交队列填充存储器访问命令,微指令处理器1010暂停对该线程的处理,而无须线程执行让步微指令。作为另一个例子,线程在向提交队列填充存储器访问命令的微指令中设置让步标志位。若让步标志位有效,微指令处理器1010暂停对该线程的处理,若让步标志位无效,微指令处理器1010可以不暂停对该线程的处理。
状态寄存器1050耦合到微指令处理器1010,用于保存和提供线程的执行状态。状态寄存器1050中,还保存一条或多条线程的执行状态。
可选地,运行中的线程使用状态寄存器1050所保存的一份执行状态(称为有效执行状态),状态寄存器1050中的其他份执行状态被称为备用执行状态。
执行中的线程被暂停时,其在状态寄存器1050中保存的执行状态从有效执行状态变为备用执行状态,而线程的执行被恢复时,其在状态寄存器1050中保存的执行状态从备用执行状态变为有效执行状态。从而微指令处理器1010迅速地实现在多个线程之间的切换。
在图10的实施例中,微指令存储器1040中存储微指令序列。微指令处理器1010从微指令存储器1040获取并执行微指令序列。
图11展示了根据申请实施例的队列条目。提交队列条目1120是提交队列1060(参看图10)的条目,每个提交队列条目指示线程发出的存储器访问命令。提交队列条目1120可包括,例如,用于唯一识别存储器访问命令的命令ID字段,用于指示在介质接口控制器1100中的地址的控制器地址字段,用于指示在耦合到总线上的设备(参看图10,设备1092、设备1094、SRAM 1096或DRAM 1098)中的地址的设备地址字段,以及用于指示命令类型(例如,读或写)的命令代码字段。提交队列条目1120的字段不限于图11中展示的这些。例如,提交队列条目中还包括线程ID字段,用于唯一识别生成该提交队列条目的线程。根据从提交队列1060中获取的提交队列条目1120,总线控制器1070处理提交队列条目1120所指示的存储器访问命令。例如,从指定的设备地址读出数据,并将数据提供给指定的控制器地址。或者从指定的控制器获取数据,并将数据写入指定的设备地址。
完成队列条目1140是完成队列1065(参看图10)的条目。每个完成队列条目指示处理完成的存储器访问命令。完成队列条目1140可包括用于识别存储器访问命令的命令ID字段,以及用于指示存储器访问命令的执行结果的状态字段。存储器访问命令的执行结果可以是成功、失败、不确定或指示失败的原因。完成队列条目1140的字段不限于图11中展示的这些。例如,完成队列条目中还包括线程ID字段,用于唯一识别生成该同完成队列条目所对应的存储器访问命令的线程。完成队列条目中还可包括用于指示在介质接口控制器1100中的地址的控制器地址字段,或者用于携带存储器访问命令的执行结果的字段。
作为举例,提交队列条目1120与完成队列条目1140一一对应。提交队列条目1120与同其对应的完成队列条目1140具有相同的命令ID字段。总线控制器1070从提交队列条目1120获取存储器访问命令后,记录其命令ID字段,并在该存储器访问命令处理完成后,用所记录的该命令ID字段的内容填充完成队列条目1140的命令ID字段。以及微指令处理器1010依据完成队列条目1140中的命令ID字段,识别哪条存储器访问命令执行完成。进一步地,还依据完成队列条目1140中的命令ID字段识别是哪个线程发出了该存储器访问命令,并唤醒所识别的线程。
在根据本申请的实施例中,线程被唤醒,意味着该线程所发出的存储器访问命令已执行完成。所唤醒的线程从被暂停的位置继续执行。例如,线程T所执行的存储器访问命令用于向寄存器R加载地址A的数据,随机线程被暂停。当地址A的数据被从地址A取得并写入用于线程T的寄存器R后,总线控制器1070向完成队列1065填充完成队列条目E,指示存储器访问操作完成。微指令处理器1010根据从完成队列1065中取出的完成队列条目E,唤醒线程T,此时线程T的寄存器R中已经被填充了线程T所请求的数据。线程T继续执行其微指令序列,并可随时使用寄存器R以获取所请求的数据。作为另一个例子,总线控制器1070将从地址A取得的数据填充在完成队列条目E中。微指令处理器根据完成队列条目E唤醒线程T,线程T访问完成队列条目E并得到所请求的数据。作为依然另一个例子,状态寄存器1050(参看图10)提供访存结果寄存器,作为读类型存储器访问命令的默认的目的地址。总线控制器1070将从地址A取得的数据写入线程T的访存结果寄存器,线程T可从访存结果寄存器中获取所需的数据。作为又一个例子,在完成队列条目E中指示地址,线程T从该地址可获取存储器访问命令所请求的数据;以及由总线控制器1070指定该地址。
在根据本申请的实施例中,可以有多个线程,其中线程之一在执行,而其他线程被暂停。多个线程可将多个存储器访问命令填充到提交队列1060。而完成队列1065中可以有多个完成队列条目。若线程之一正在执行而未让步,总线控制器1070可将存储器访问命令执行的结果(例如,读出数据)填充到状态寄存器1050(或上下文存储器)中属于被暂停线程的寄存器,而不影响正在执行的线程。总线控制器1070可依据多个存储器访问命令的执行结果,更新属于被暂停线程的寄存器。作为另一个例子,总线控制器1070可将存储器访问命令执行的结果(例如,读出数据)填充到完成队列条目中,而微处理器处理器1010获取完成队列条目,依据完成队列条目中的存储器访问命令执行的结果更新属于被暂停线程的寄存器,并将被暂停线程设置为“就绪”状态,处于“就绪”状态的线程可在正在执行的线程让步后,被调度执行。
依然可以理解的,根据本申请的实施例中,微指令处理器1010可通过多个提交队列和/或多个完成队列耦合总线控制器1070。作为依然另一个例子,总线控制器1070依据存储器访问命令的执行完成,将发出该存储器访问命令的线程设置为“就绪”状态;或者微处理处理器1010依据完成队列中的完成队列条目,将完成队列条目所对应的线程处于“就绪”状态。以及响应于正在执行的线程让步,微指令处理器1010从“就绪”状态的线程中选择线程之一并调度执行。
图12是根据本申请实施例的异构处理系统的处理的流程图。异构处理系统的CPU1080与在微指令处理器1010上运行的多个线程1210(和/或线程1215)协同处理任务。
CPU 1080根据来自用户或上层系统的需求或IO命令生成CPU命令填充到命令队列1020,以向微指令处理器1010发出CPU命令(1220),由微指令处理器1010上运行的多个线程处理CPU命令。
响应于命令队列1020中出现待处理的CPU命令,由多个线程之一(1210)处理CPU命令(1220)。作为举例,依照CPU命令所访问的逻辑单元创建或唤醒线程来处理CPU命令。线程1210执行微指令序列来处理CPU命令。所执行的微指令序列可能需要访问总线上的设备(例如设备1092或设备1094)或存储器(例如,SRAM 1096或DRAM 1098),为访问总线上的设备或存储器,通过执行微指令,线程1210向提交队列1060填充提交队列条目1120,以向总线控制器1070发送存储器访问命令
(1230)。随机线程1210让步(1240)。线程1210可通过执行让步微指令来让步,或者在线程1210向提交队列1060填充了存储器访问命令后,微指令处理器1010使线程让步。让步的线程的执行状态被保存。微指令处理器1010调度其他线程1215继续执行。被调度执行的线程1215得到其执行状态,并继续执行其微指令序列的微指令(1250)。响应于向提交队列1060填充存储器访问命令、执行了让步微指令或微指令序列执行完成,线程1215可能让步(1260)。接下来微指令处理器1010调度其他线程继续执行。
执行的线程可向命令队列1060填充其他的存储器访问命令,并继而让步。从而根据本申请实施例的异构处理系统中,同一时刻可存在由多个线程发出的多个存储器访问命令,且微指令处理器1010不会因总线控制器1070处理存储器访问命令而被迫等待存储器访问命令处理完成。
当总线控制器1070完成了对存储器访问命令的处理,在完成队列1065中填充完成队列条目1140以指示处理完成的存储器访问命令。响应于完成队列1965中出现完成队列条目(1270),微指令处理器识别发出完成队列条目所对应的存储器访问命令的线程(例如,线程1210),并唤醒线程1210,恢复线程1210的执行状态。线程1210依据恢复的执行状态继续执行微指令,并获取由存储器访问命令所得到的设备或存储器的访问结果(1280)。
在一个例子中,总线控制器将处理存储器访问命令所得到的设备或存储器的访问结果存储在存储线程的状态的存储空间中,从而恢复执行的线程可直接使用设备或存储器的访问结果。作为另一个例子,总线控制器将处理存储器访问命令所得到的设备或存储器的访问结果通过完成队列条目提供给线程,线程通过执行微指令序列访问完成队列条目以获取处理存储器访问命令所得到的结果。
在本申请实施例的异构处理系统中,利用多个线程的每个向提交队列发送存储器访问命令,使得来自多个线程的多个存储器访问被并发处理。每个存储器访问命令使发出该存储器访问命令的线程让步,但微指令处理器通过调度执行其他线程来降低或消除微指令处理器的等待时间,从而有效提升了系统处理效率以及IO处理能力。
即使要处理大量的并发存储器访问命令,通过由每个线程来发出存储器访问命令并让步,以及等待存储器访问命令处理完成后恢复线程,也不会因等待存储器访问命令处理而降低系统吞吐量。而且,本申请实施例的异构处理系统的微指令处理器可以是轻量级多线程处理器,能够高效地在线程之间切换、保存线程的执行状态、唤醒或恢复线程的执行。
上面以NVM芯片作为例子而公开了本发明的多种实施例。所属领域技术人员将意识到本发明的实施例也可应用于其他类型的支持擦除暂停和/或擦除恢复命令的存储介质,例如相变存储器、电阻存储器、铁电存储器等。
已经为了示出和描述的目的而展现了对本发明的描述,并且不旨在以所公开的形式穷尽或限制本发明。对所属领域技术人员,许多调整和变化是显而易见的。
Claims (10)
1.一种存储器访问处理方法,包括:
第一处理器生成第一命令并发送给第二处理器;
在第二处理器中由第一线程处理第一命令;
第一线程生成第一存储器访问命令;
响应于所生成的第一存储器访问命令被填充至提交队列,所述第一线程让步(yield);提交队列可被多个线程填充多条存储器访问命令,使得多个线程对存储器的访问并发处理;
响应于第一存储器访问命令处理完成被填充至完成队列后,恢复生成所述第一存储器访问命令的所述第一线程;以及
第一线程使用所述第一存储器访问命令的处理结果;
提交队列条目与完成队列条目一一对应。
2.根据权利要求1所述的方法,还包括:
响应于所述第一线程让步,所述第二处理器调度第二线程处理第一处理器发送给第二处理器的第二命令;以及
第二线程生成第二存储器访问命令;
响应于所生成的第二存储器访问命令被填充至提交队列,所述第二线程让步。
3.根据权利要求1所述的方法,其中
所述第一处理器将第一命令填充至命令队列,以将所述第一命令发送给所述第二处理器。
4.根据权利要求1所述的方法,还包括:
总线控制器处理第一存储器访问命令,将所述第一存储器访问命令的处理结果存储到所述第一线程的上下文存储器,以及将指示所述第一存储器访问命令处理完成的完成队列条目填充到所述完成队列。
5.根据权利要求1所述的方法,还包括:
总线控制器处理第一存储器访问命令,将所述第一存储器访问命令的处理结果存储到指示所述第一存储器访问命令处理完成的完成队列条目,以及将所述完成队列条目填充到所述完成队列。
6.根据权利要求1所述的方法,其中
响应于完成队列中出现指示所述第一存储器访问命令处理完成的完成队列条目,恢复所述第一线程。
7.根据权利要求1所述的方法,其中
响应于完成队列中出现指示所述第一存储器访问命令处理完成的完成队列条目,将所述第一线程设置为就绪状态;以及
响应于线程让步,恢复处于就绪状态的线程之一。
8.根据权利要求1所述的方法,其中
所述第二处理器选择线程之一处理第一处理器发送给第二处理器的命令。
9.一种异构处理系统,包括第一处理器与第二处理器;
所述第一处理器通过命令队列向第二处理器发送命令;
所述第一处理器与第二处理器分别耦合到总线;
所述第二处理器包括可运行多个线程的处理单元以及总线控制器;
所述处理单元通过提交队列与完成队列耦合到总线控制器;提交队列可被多个线程填充多条存储器访问命令,使得多个线程对存储器的访问并发处理;提交队列条目与完成队列条目一一对应;
所述处理单元运行的线程向所述提交队列填充存储器访问命令;
所述总线控制器处理存储器访问命令,并根据存储器访问命令的处理结果,向所述完成队列填充完成队列条目。
10.一种存储器访问处理设备,包括:
生成模块,用于使第一处理器生成第一命令并发送给第二处理器;
处理模块,用于使在第二处理器中的第一线程处理第一命令;
存储器访问命令生成模块,用于使第一线程生成第一存储器访问命令;
让步模块,用于响应于所生成的第一存储器访问命令被填充至提交队列,所述第一线程让步(yield);提交队列可被多个线程填充多条存储器访问命令,使得多个线程对存储器的访问并发处理;
恢复模块,用于响应于第一存储器访问命令处理完成被填充至完成队列后,恢复生成所述第一存储器访问命令的所述第一线程;以及
使用模块,用于使第一线程使用所述第一存储器访问命令的处理结果
提交队列条目与完成队列条目一一对应。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710053302 | 2017-01-22 | ||
CN2017100533029 | 2017-01-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108345428A CN108345428A (zh) | 2018-07-31 |
CN108345428B true CN108345428B (zh) | 2021-08-31 |
Family
ID=62963016
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710204980.0A Active CN108345428B (zh) | 2017-01-22 | 2017-03-31 | 控制密集型控制系统及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108345428B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109407991B (zh) * | 2018-10-22 | 2022-06-07 | 湖南国科微电子股份有限公司 | 一种非易失性闪存执行命令的暂停及恢复方法、非易失性闪存及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101025721A (zh) * | 2006-02-22 | 2007-08-29 | 三星电子株式会社 | 根据优先级次序操作闪存的设备和方法 |
CN101944067A (zh) * | 2009-04-30 | 2011-01-12 | 国际商业机器公司 | 存储数据的方法和存储器系统 |
CN102981773A (zh) * | 2011-09-02 | 2013-03-20 | 深圳市快播科技有限公司 | 存储设备访问方法、访问系统及存储设备访问管理器 |
CN104598387A (zh) * | 2013-10-31 | 2015-05-06 | Lsi公司 | 用于内部磁盘驱动数据压缩的系统和方法 |
CN106293623A (zh) * | 2015-05-18 | 2017-01-04 | 北京忆芯科技有限公司 | 微指令序列执行方法及其装置 |
-
2017
- 2017-03-31 CN CN201710204980.0A patent/CN108345428B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101025721A (zh) * | 2006-02-22 | 2007-08-29 | 三星电子株式会社 | 根据优先级次序操作闪存的设备和方法 |
CN101944067A (zh) * | 2009-04-30 | 2011-01-12 | 国际商业机器公司 | 存储数据的方法和存储器系统 |
CN102981773A (zh) * | 2011-09-02 | 2013-03-20 | 深圳市快播科技有限公司 | 存储设备访问方法、访问系统及存储设备访问管理器 |
CN104598387A (zh) * | 2013-10-31 | 2015-05-06 | Lsi公司 | 用于内部磁盘驱动数据压缩的系统和方法 |
CN106293623A (zh) * | 2015-05-18 | 2017-01-04 | 北京忆芯科技有限公司 | 微指令序列执行方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108345428A (zh) | 2018-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11520496B2 (en) | Electronic device, computer system, and control method | |
WO2018103685A1 (zh) | 一种nand闪存设备的操作指令调度方法及装置 | |
CN106293623B (zh) | 微指令序列执行方法及其装置 | |
US8341374B2 (en) | Solid state drive and related method of scheduling operations | |
US11397675B2 (en) | Storage device, computer system, and operation method of storage device configured to arbitrarily stop garbage collection | |
US20190196972A1 (en) | Managing flash memory read operations | |
WO2023103296A1 (zh) | 一种写数据高速缓存的方法、系统、设备和存储介质 | |
US10901624B1 (en) | Dummy host command generation for supporting higher maximum data transfer sizes (MDTS) | |
KR20130009926A (ko) | 유연한 플래시 명령어 | |
CN106951374B (zh) | 用于检查块页地址的方法及其装置 | |
WO2019062202A1 (zh) | 硬盘操作命令的执行方法、硬盘及存储介质 | |
CN107870866B (zh) | Io命令调度方法与nvm接口控制器 | |
KR20100031132A (ko) | 플래시 메모리 시스템에서 페이징된 가비지 수집과 하우스 키핑 동작 | |
US11392407B2 (en) | Semiconductor device | |
US11132308B2 (en) | Semiconductor device and semiconductor system | |
US11640305B2 (en) | Wake-up and timer for scheduling of functions with context hints | |
US10922013B2 (en) | Suspending and resuming a read operation for a non-volatile memory | |
JP6193189B2 (ja) | Nandバックグラウンド処理制御装置 | |
CN108345428B (zh) | 控制密集型控制系统及其方法 | |
CN107870779B (zh) | 调度方法与装置 | |
US11366770B2 (en) | Storage controller managing completion timing, and operating method thereof | |
US12013796B2 (en) | Storage controller managing completion timing, and operating method thereof | |
CN109542336B (zh) | 存储设备及其操作方法 | |
CN110968418A (zh) | 基于信号-槽的大规模有约束并发任务的调度方法与装置 | |
CN113076138B (zh) | 一种NVMe命令处理方法、设备及介质 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 361000 China (Fujian) free trade pilot area Xiamen area (bonded port area) two South Sea Road 45 Road 4 Building 03 unit F0100 Applicant after: Xiamen Jingcun Semiconductor Technology Co., Ltd Address before: 361000 China (Fujian) free trade pilot area Xiamen area (bonded port area) two South Sea Road 45 Road 4 Building 03 unit F0100 Applicant before: XIAMEN KINGBLAZE TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |