CN116225318A - Command scheduling method, flash memory controller, flash memory device and storage medium - Google Patents
Command scheduling method, flash memory controller, flash memory device and storage medium Download PDFInfo
- Publication number
- CN116225318A CN116225318A CN202211697265.2A CN202211697265A CN116225318A CN 116225318 A CN116225318 A CN 116225318A CN 202211697265 A CN202211697265 A CN 202211697265A CN 116225318 A CN116225318 A CN 116225318A
- Authority
- CN
- China
- Prior art keywords
- priority
- flash memory
- instruction
- command
- out 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.)
- Pending
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/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/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/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
Description
技术领域technical field
本申请涉及存储设备应用领域,特别是涉及一种命令调度方法、闪存控制器、闪存设备及存储介质。The present application relates to the application field of storage devices, in particular to a command scheduling method, a flash memory controller, a flash memory device and a storage medium.
背景技术Background technique
闪存设备,例如:固态硬盘(Solid State Drives,SSD),是一种以半导体闪存(NAND Flash)作为介质的存储设备,其主要组成部分包括闪存介质、闪存控制器、动态随机存储器(DRAM)等。闪存控制器的一个重要功能就是作为闪存芯片的驱动器进行存储操作,其主要操作包括擦除、写入和读取。Flash memory device, such as: Solid State Drives (SSD), is a storage device with semiconductor flash memory (NAND Flash) as the medium, and its main components include flash memory media, flash memory controller, dynamic random access memory (DRAM), etc. . An important function of the flash memory controller is to perform storage operations as a driver of the flash memory chip, and its main operations include erasing, writing and reading.
随着闪存的功能越来越复杂,固化的闪存控制器越来越难以满足闪存的灵活控制需求,部分闪存控制器开始增加协处理器(Coprocessing Center Process Unit,S-CPU),通过软硬件结合的方式优化闪存操作的灵活性。As the functions of flash memory become more and more complex, it becomes more and more difficult for solidified flash memory controllers to meet the flexible control requirements of flash memory. way to optimize the flexibility of flash memory operations.
然而在考虑成本和功耗的情况下,闪存控制器使用的协处理器会尽量少,所以协处理器的算力通常较为紧张,协处理器会尽量去填满硬件先入先出队列(FIFO),然而当有新的读命令过来时,需要硬件先入先出队列中的已下发指令完成后才能开始处理新的读指令,这样就会导致读命令的延迟较大。However, considering the cost and power consumption, the coprocessor used by the flash memory controller will be as few as possible, so the computing power of the coprocessor is usually relatively tight, and the coprocessor will try to fill the hardware first-in-first-out queue (FIFO) as much as possible. , however, when a new read command comes, it is necessary to complete the issued command in the hardware first-in-first-out queue before starting to process the new read command, which will cause a large delay in the read command.
发明内容Contents of the invention
本申请实施例提供一种命令调度方法、闪存控制器、闪存设备及存储介质,能够在维持总带宽的情况下,使得后下发的读指令优先于早下发的写指令执行,从而减小读命令的延迟。The embodiment of the present application provides a command scheduling method, a flash memory controller, a flash memory device, and a storage medium, which can make the read commands issued later be executed prior to the write commands issued earlier while maintaining the total bandwidth, thereby reducing the Read command latency.
本申请实施例提供以下技术方案:The embodiment of the present application provides the following technical solutions:
第一方面,本申请实施例提供一种命令调度方法,应用于闪存控制器,闪存控制器包括高优先级先入先出队列和低优先级先入先出队列,其中,低优先级先入先出队列用于存放写命令;In the first aspect, the embodiment of the present application provides a command scheduling method, which is applied to a flash memory controller. The flash memory controller includes a high-priority first-in-first-out queue and a low-priority first-in-first-out queue, wherein the low-priority first-in-first-out queue Used to store write commands;
命令调度方法包括:Command dispatch methods include:
获取读命令,并将读命令下发至高优先级先入先出队列,其中,读命令包括至少一个指令;Acquiring a read command, and issuing the read command to a high-priority first-in-first-out queue, wherein the read command includes at least one instruction;
执行高优先级先入先出队列中的每一指令。Executes each instruction in the high-priority FIFO queue.
在一些实施例中,在获取读命令之前,方法包括:In some embodiments, prior to obtaining the read command, the method includes:
确定高优先级先入先出队列与低优先级先入先出队列。Determine the high-priority FIFO queue and the low-priority FIFO queue.
在一些实施例中,方法还包括:In some embodiments, the method also includes:
获取写命令,并将写命令下发至低优先级先入先出队列,其中,写命令包括至少一个指令。Acquiring a write command and sending the write command to a low-priority first-in-first-out queue, wherein the write command includes at least one instruction.
在一些实施例中,闪存控制器还包括仲裁模块,仲裁模块用于决策执行先入先出队列中的指令;In some embodiments, the flash memory controller also includes an arbitration module, which is used to decide and execute the instructions in the first-in-first-out queue;
方法还包括:Methods also include:
控制仲裁模块在高优先级先入先出队列与低优先级先入先出队列中选择一个先入先出队列,并执行所选择的先入先出队列中的指令。The control arbitration module selects a FIFO queue from the high-priority FIFO queue and the low-priority FIFO queue, and executes the instructions in the selected FIFO queue.
在一些实施例中,控制仲裁模块在高优先级先入先出队列与低优先级先入先出队列中选择一个先入先出队列,并执行所选择的先入先出队列中的指令,包括:In some embodiments, the control arbitration module selects a FIFO queue from the high-priority FIFO queue and the low-priority FIFO queue, and executes the instructions in the selected FIFO queue, including:
优先执行高优先级先入先出队列中的指令;Prioritize the execution of instructions in the high-priority first-in-first-out queue;
若在预设时间内未执行低优先级先入先出队列中的指令,则执行低优先级先入先出队列中的一个指令;If the instruction in the low-priority FIFO queue is not executed within the preset time, execute an instruction in the low-priority FIFO queue;
继续执行高优先级先入先出队列中的指令。Continue to execute instructions in the high-priority FIFO queue.
在一些实施例中,方法还包括:In some embodiments, the method also includes:
在高优先级先入先出队列中的所有指令均执行完毕时,执行低优先级先入先出队列中的指令;When all the instructions in the high-priority FIFO queue have been executed, execute the instructions in the low-priority FIFO queue;
若高优先级先入先出队列中有新的指令,则继续执行高优先级先入先出队列中的指令。If there are new instructions in the high-priority FIFO queue, continue to execute the instructions in the high-priority FIFO queue.
在一些实施例中,每一指令均为原子性指令,每一原子性指令在执行过程中连续执行。In some embodiments, each instruction is an atomic instruction, and each atomic instruction is executed consecutively during execution.
在一些实施例中,闪存控制器包括至少一个通道,每一通道均包括一个高优先级先入先出队列与一个低优先级先入先出队列。In some embodiments, the flash memory controller includes at least one channel, and each channel includes a high-priority FIFO queue and a low-priority FIFO queue.
第二方面,本申请实施例提供一种闪存控制器,应用第一方面的命令调度方法,该闪存控制器包括:In the second aspect, the embodiment of the present application provides a flash memory controller, which applies the command scheduling method of the first aspect, and the flash memory controller includes:
高优先级先入先出队列,用于存放读命令,其中,读命令包括至少一个指令;A high-priority first-in-first-out queue is used to store read commands, wherein the read commands include at least one instruction;
低优先级先入先出队列,用于存放写命令,其中,写命令包括至少一个指令;A low-priority first-in-first-out queue for storing write commands, wherein the write commands include at least one instruction;
仲裁模块,用于决策执行先入先出队列中的指令。The arbitration module is used to decide and execute the instructions in the first-in-first-out queue.
第三方面,本申请实施例提供一种闪存设备,包括:In a third aspect, the embodiment of the present application provides a flash memory device, including:
如第二方面的闪存控制器;Such as the flash memory controller of the second aspect;
至少一个闪存介质,与闪存控制器通信连接。At least one flash medium communicates with the flash controller.
第四方面,本申请实施例还提供了一种非易失性计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,当计算机可执行指令被处理器所执行时,使处理器执行如第一方面的命令调度方法。In the fourth aspect, the embodiment of the present application also provides a non-volatile computer-readable storage medium, the computer-readable storage medium stores computer-executable instructions, and when the computer-executable instructions are executed by the processor, the processor Execute the command scheduling method as in the first aspect.
本申请实施例的有益效果是:区别于现有技术的情况下,本申请实施例提供的一种命令调度方法,应用于闪存控制器,闪存控制器包括高优先级先入先出队列和低优先级先入先出队列,其中,低优先级先入先出队列用于存放写命令,该命令调度方法包括:获取读命令,并将读命令下发至高优先级先入先出队列,其中,读命令包括至少一个指令;执行高优先级先入先出队列中的每一指令。通过低优先级先入先出队列存放写命令,将获取的读命令下发至高优先级先入先出队列,并执行高优先级先入先出队列中的每一指令,本申请能够在维持总带宽的情况下,使得后下发的读命令优先于早下发的写命令执行,从而减小读命令的延迟。The beneficial effects of the embodiment of the present application are: different from the prior art, the command scheduling method provided by the embodiment of the present application is applied to a flash memory controller, and the flash memory controller includes a high-priority first-in-first-out queue and a low-priority First-in-first-out queues, wherein the low-priority first-in-first-out queues are used to store write commands. The command scheduling method includes: obtaining read commands, and sending the read commands to high-priority first-in-first-out queues, wherein the read commands include At least one instruction; each instruction in the high-priority FIFO queue is executed. The write command is stored in the low-priority FIFO queue, the acquired read command is issued to the high-priority FIFO queue, and each instruction in the high-priority FIFO queue is executed. This application can maintain the total bandwidth. In some cases, the read command issued later is executed prior to the write command issued earlier, thereby reducing the delay of the read command.
附图说明Description of drawings
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。One or more embodiments are exemplified by the pictures in the corresponding drawings, and these exemplifications do not constitute a limitation to the embodiments. Elements with the same reference numerals in the drawings represent similar elements. Unless otherwise stated, the drawings in the drawings are not limited to scale.
图1是本申请实施例提供的一种闪存设备的结构示意图;FIG. 1 is a schematic structural diagram of a flash memory device provided by an embodiment of the present application;
图2是本申请实施例提供的一种闪存控制器的结构示意图;FIG. 2 is a schematic structural diagram of a flash memory controller provided by an embodiment of the present application;
图3是本申请实施例提供的一种命令调度的示意图;FIG. 3 is a schematic diagram of a command scheduling provided by an embodiment of the present application;
图4是本申请实施例提供的一种命令调度方法的流程示意图;FIG. 4 is a schematic flowchart of a command scheduling method provided in an embodiment of the present application;
图5是本申请实施例提供的另一种闪存控制器的结构示意图;FIG. 5 is a schematic structural diagram of another flash memory controller provided by an embodiment of the present application;
图6是本申请实施例提供的一种仲裁模块的示意图;FIG. 6 is a schematic diagram of an arbitration module provided by an embodiment of the present application;
图7是本申请实施例提供的一种决策执行先入先出队列中的指令的流程示意图;FIG. 7 is a schematic flow diagram of a decision-executing instruction in a first-in-first-out queue provided by an embodiment of the present application;
图8是步骤S701的细化流程示意图;FIG. 8 is a schematic diagram of a refinement process of step S701;
图9是本申请实施例提供的另一种决策执行先入先出队列中的指令的流程示意图;FIG. 9 is a schematic flow diagram of another decision-making execution of instructions in the first-in-first-out queue provided by the embodiment of the present application;
图10是本申请实施例提供的另一种命令调度的示意图;Fig. 10 is a schematic diagram of another command scheduling provided by the embodiment of the present application;
图11是本申请实施例提供的又一种闪存控制器的结构示意图。FIG. 11 is a schematic structural diagram of another flash memory controller provided by an embodiment of the present application.
具体实施方式Detailed ways
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。In order to make the purpose, technical solution and advantages of the present application clearer, the present application will be further described in detail below in conjunction with the accompanying drawings and embodiments. It should be understood that the specific embodiments described here are only used to explain the present application, not to limit the present application. Based on the embodiments in this application, all other embodiments obtained by persons of ordinary skill in the art without creative efforts fall within the protection scope of this application.
需要说明的是,如果不冲突,本申请实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。再者,本申请所采用的“第一”、“第二”、“第三”等字样并不对数据和执行次序进行限定,仅是对功能和作用基本相同的相同项或相似项进行区分。It should be noted that, if there is no conflict, various features in the embodiments of the present application may be combined with each other, and all of them are within the protection scope of the present application. In addition, although the functional modules are divided in the schematic diagram of the device, and the logical order is shown in the flowchart, in some cases, the division of modules in the device or the sequence shown in the flowchart can be performed in different ways. or the steps described. Furthermore, words such as "first", "second", and "third" used in this application do not limit the data and execution order, but only distinguish the same or similar items with basically the same function and effect.
下面结合说明书附图具体说明本申请的技术方案:The technical scheme of the present application is specifically described below in conjunction with the accompanying drawings of the description:
请参阅图1,图1是本申请实施例提供的一种闪存设备的结构示意图;Please refer to FIG. 1. FIG. 1 is a schematic structural diagram of a flash memory device provided in an embodiment of the present application;
如图1所示,闪存设备100包括闪存介质110以及与闪存介质110连接的控制器120。其中,闪存设备100通过有线或无线的方式与主机200通信连接,用以实现数据交互。As shown in FIG. 1 , the flash memory device 100 includes a
闪存介质110,作为闪存设备100的存储介质,也称作闪存、NAND Flash、Flash存储器或Flash颗粒,属于存储器件的一种,是一种非易失性存储器,在没有电流供应的条件下也能够长久地保存数据,其存储特性相当于硬盘,使得闪存介质110得以成为各类便携型数字设备的存储介质的基础。The
控制器120,包括处理器121、缓存器122、闪存控制器123以及接口124。The controller 120 includes a processor 121 , a cache 122 , a flash memory controller 123 and an
处理器121,分别与缓存器122、闪存控制器123以及接口124连接,其中,处理器121与缓存器122、闪存控制器123以及接口124可以通过总线或者其他方式连接,处理器用于运行存储在缓存器122中的非易失性软件程序、指令以及模块,从而实现本申请任一方法实施例。在此基础上,通过固件开发,还用于负责闪存转换层(Flash translation layer,FTL)的核心处理。The processor 121 is respectively connected to the cache memory 122, the flash memory controller 123 and the
缓存器122,主要用于缓存主机200发送的读/写指令以及根据主机200发送的读/写指令从闪存介质110获取的读数据或者写数据。The cache memory 122 is mainly used for caching the read/write command sent by the host 200 and the read data or write data obtained from the
闪存控制器123,与闪存介质110、处理器121以及缓存器122连接,用于访问后端的闪存介质110,管理闪存介质110的各种参数和数据I/O。The flash memory controller 123 is connected with the
接口124,连接主机200以及处理器121以及缓存器122,用于接收主机200发送的数据,或者,接收处理器121发送的数据,实现主机200与处理器121之间的数据传输,接口124可以为SATA-2接口、SATA-3接口、SAS接口、MSATA接口、PCI-E接口、NGFF接口、CFast接口、SFF-8639接口和M.2NVME/SATA协议。The
请参阅图2,图2是本申请实施例提供的一种闪存控制器的结构示意图;Please refer to FIG. 2. FIG. 2 is a schematic structural diagram of a flash memory controller provided by an embodiment of the present application;
如图2所示,闪存控制器包括多个通道(channel,简称CH),例如:通道0(CH 0)、通道1(CH 1)、……、通道15(CH 15),每一通道(CH)均包括一个先入先出队列(First InputFirst Output,FIFO),每一通道(CH)下至少挂载一个闪存芯片(简称Die),例如:通道0(CH0)下挂载闪存芯片0(Die 0)、闪存芯片1(Die 1)、闪存芯片2(Die 2)和闪存芯片3(Die3),通道1(CH 1)下挂载闪存芯片4(Die 4)、闪存芯片5(Die 5)、闪存芯片6(Die 6)和闪存芯片7(Die 7),……,通道15(CH 15)下挂载闪存芯片60(Die 60)、闪存芯片61(Die 61)、闪存芯片62(Die 62)和闪存芯片63(Die 63),其中,同一个通道下的多个闪存芯片(Die)共用一组控制总线(bus)。As shown in Figure 2, the flash memory controller includes multiple channels (CH for short), for example: channel 0 (CH 0), channel 1 (CH 1), ..., channel 15 (CH 15), each channel ( CH) includes a first-in-first-out queue (First InputFirst Output, FIFO), and at least one flash memory chip (Die for short) is mounted under each channel (CH), for example: flash memory chip 0 (Die for short) is mounted under channel 0 (CH0) 0), flash memory chip 1 (Die 1), flash memory chip 2 (Die 2) and flash memory chip 3 (Die3), flash memory chip 4 (Die 4) and flash memory chip 5 (Die 5) are mounted under channel 1 (CH 1) , flash memory chip 6 (Die 6) and flash memory chip 7 (Die 7), ..., flash memory chip 60 (Die 60), flash memory chip 61 (Die 61), flash memory chip 62 (Die 62) are mounted under channel 15 (CH 15) 62) and a flash memory chip 63 (Die 63), wherein a plurality of flash memory chips (Die) under the same channel share a group of control buses (bus).
其中,先入先出队列(FIFO)用于缓存读命令和/或写命令,并遵循先进先出的规则即第一个被写入队列的命令也是第一个从队列中被取出的命令。一个闪存颗粒中封装有多个闪存芯片(Die),闪存芯片(Die)是接收和执行闪存命令的基本单元,一个闪存芯片(Die)一次只能独立执行一个命令。Wherein, the first-in-first-out queue (FIFO) is used for buffering read commands and/or write commands, and follows the first-in-first-out rule, that is, the first command written into the queue is also the first command taken out of the queue. There are multiple flash memory chips (Die) packaged in a flash memory particle, and the flash memory chip (Die) is the basic unit for receiving and executing flash memory commands, and a flash memory chip (Die) can only independently execute one command at a time.
可以理解的是,闪存控制器的一个重要功能就是作为闪存芯片(Die)的驱动器进行存储操作,其主要操作包括擦除、写入和读取。闪存介质的擦除操作是以块(Block)为单位,写入和读取操作是以页(Page)为单位,一个块通常包含数百、数千个页。It can be understood that an important function of the flash memory controller is to perform storage operations as a driver of a flash memory chip (Die), and its main operations include erasing, writing and reading. The erasing operation of the flash media is based on a block (Block), and the writing and reading operations are based on a page (Page). A block usually includes hundreds or thousands of pages.
具体的,在闪存控制器下发擦除命令和地址后,闪存介质开始执行擦除操作,通常需要消耗数毫秒的时间,在这段时间内闪存控制器不能再对闪存介质进行其他擦除或者读写操作,需要等待擦除完成。Specifically, after the flash memory controller issues the erase command and address, the flash media starts to perform the erase operation, which usually takes several milliseconds, during which the flash memory controller cannot perform other erasing or erasing of the flash media. Read and write operations need to wait for the erase to complete.
具体的,在闪存控制器下发写命令、地址并传输写数据后,闪存介质开始执行写入操作,通常需要消耗数百微秒至数毫秒的时间,在这段时间内闪存控制器不能再对闪存介质进行其他擦除或者读写操作,需要等待写入完成。Specifically, after the flash memory controller sends the write command, address and transmits the write data, the flash medium starts to perform the write operation, which usually takes hundreds of microseconds to several milliseconds, during which the flash memory controller can no longer For other erasing or reading and writing operations on the flash media, you need to wait for the writing to complete.
具体的,在闪存控制器下发读命令和地址后,闪存介质开始执行读取操作,通常需要消耗数十微秒的时间,在这段时间内闪存控制器不能再对闪存介质进行其他擦除或者读写操作,需要等待读取完成。读取完成后,数据暂存在闪存介质的缓存空间内,随后闪存控制器可以开始传输读取数据,传输完成后读命令结束。Specifically, after the flash memory controller sends the read command and address, the flash memory medium starts to perform the read operation, which usually takes tens of microseconds, during which time the flash memory controller cannot perform other erasures on the flash memory medium Or read and write operations, you need to wait for the read to complete. After the reading is completed, the data is temporarily stored in the cache space of the flash memory medium, and then the flash memory controller can start to transmit the read data, and the read command ends after the transmission is completed.
进一步地,闪存介质在执行擦除、写入、读取操作时,闪存介质处于忙碌(Busy)状态,此时闪存控制器可以发送查询状态(Read Status)命令确认闪存介质是否完成对应命令,进而确认是否可以发送后续操作指令。具体的,闪存控制器向一个闪存芯片(Die)下发完命令和数据后,该闪存芯片(Die)执行命令并处于忙碌(Busy)状态,闪存控制器可以通过控制总线(bus)向其他闪存芯片(Die)下发命令和数据,在向其他闪存芯片(Die)下发完命令和数据后,闪存控制器可以通过发送查询状态(Read Status)命令查询之前处于忙碌(Busy)状态的闪存芯片(Die)是否完成对应命令,如完成则可以向此闪存芯片(Die)下发后续命令,如此可以充分利用总线带宽,提高整体性能。Further, when the flash medium is performing erasing, writing, and reading operations, the flash medium is in a busy (Busy) state, and at this time the flash controller can send a query status (Read Status) command to confirm whether the flash medium has completed the corresponding command, and then Confirm whether follow-up operation instructions can be sent. Specifically, after the flash memory controller sends commands and data to a flash memory chip (Die), the flash memory chip (Die) executes the command and is in a busy (Busy) state, and the flash memory controller can communicate to other flash memory chips through the control bus (bus). The chip (Die) issues commands and data. After sending commands and data to other flash memory chips (Die), the flash memory controller can query the flash memory chips that were in the busy (Busy) state by sending a query status (Read Status) command. (Die) Whether to complete the corresponding command, if completed, a follow-up command can be issued to this flash memory chip (Die), so that the bus bandwidth can be fully utilized and the overall performance can be improved.
然而随着闪存的性能越来越高,功能也越来越强大和复杂,固化的闪存控制器越来越难以满足闪存的灵活控制需求,部分闪存控制器开始增加协处理器(CoprocessingCenter Process Unit,S-CPU),通过软硬件结合的方式优化闪存操作的灵活性。闪存控制器通常增加数个协处理器(S-CPU),每个协处理器(S-CPU)负责一个或多个通道(CH)的命令处理,其中,协处理器(S-CPU)是一种用于协助中央处理器完成其无法执行或执行效率、效果低下的处理工作而开发和应用的处理器。However, as the performance of flash memory becomes higher and higher, and its functions become more powerful and complex, it becomes more and more difficult for solidified flash memory controllers to meet the flexible control requirements of flash memory. Some flash memory controllers begin to add coprocessors (Coprocessing Center Process Unit, S-CPU), optimize the flexibility of flash memory operation through the combination of software and hardware. The flash memory controller usually adds several coprocessors (S-CPU), and each coprocessor (S-CPU) is responsible for command processing of one or more channels (CH), wherein the coprocessor (S-CPU) is A processor developed and applied to assist the central processing unit in completing processing tasks that it cannot perform or perform inefficiently and ineffectively.
请参阅图3,图3是本申请实施例提供的一种命令调度的示意图;Please refer to FIG. 3. FIG. 3 is a schematic diagram of command scheduling provided by an embodiment of the present application;
在本申请实施例中,闪存控制器包括协处理器(S-CPU),闪存控制器的每一通道(CH)均包括一个先入先出队列(FIFO),在闪存设备接收到主机依次下发的上层命令后,由闪存控制器内的协处理器(S-CPU)将每一上层命令拆分为至少一个指令下发到硬件先入先出队列(FIFO)中,然后通过通道的控制总线(bus)向该通道挂载的各闪存芯片下发指令和数据,每一闪存芯片(Die)执行对应的命令并处于忙碌(Busy)状态。In the embodiment of the present application, the flash memory controller includes a coprocessor (S-CPU), and each channel (CH) of the flash memory controller includes a first-in-first-out queue (FIFO). After the upper layer command, the coprocessor (S-CPU) in the flash memory controller splits each upper layer command into at least one instruction and sends it to the hardware first-in-first-out queue (FIFO), and then through the control bus of the channel ( bus) sends instructions and data to each flash memory chip mounted on the channel, and each flash memory chip (Die) executes the corresponding command and is in a busy (Busy) state.
如图3所示,主机依次下发了四个命令:上层命令A、上层命令B、上层命令C和上层命令D,协处理器(S-CPU)将上层命令拆分并通过通道的控制总线(bus)依次向闪存芯片0(Die 0)、闪存芯片1(Die 1)、闪存芯片2(Die 2)和闪存芯片3(Die 3)下发对应的指令和数据,每一闪存芯片(Die)执行对应的命令并处于忙碌(Busy)状态。As shown in Figure 3, the host issues four commands in sequence: upper-layer command A, upper-layer command B, upper-layer command C, and upper-layer command D. The coprocessor (S-CPU) splits the upper-layer commands and passes them through the control bus of the channel. (bus) sends corresponding instructions and data to flash memory chip 0 (Die 0), flash memory chip 1 (Die 1), flash memory chip 2 (Die 2) and flash memory chip 3 (Die 3), and each flash memory chip (Die 3) ) executes the corresponding command and is in a busy (Busy) state.
具体的,协处理器(S-CPU)获取到上层命令A后,将上层命令A拆分得到指令A0,并下发指令A0到先入先出队列(FIFO)中,随后协处理器(S-CPU)依次获取到上层命令B、上层命令C和上层命令D,并将上层命令B拆分得到指令B0,将上层命令C拆分得到指令C0和指令C2,将上层命令D拆分得到指令D0和指令D2,然后依次下发指令B0、指令C0、指令D0至先入先出队列(FIFO)中。Specifically, after the coprocessor (S-CPU) obtains the upper-layer command A, it splits the upper-layer command A to obtain instruction A0, and sends the instruction A0 to the first-in-first-out queue (FIFO), and then the coprocessor (S-CPU) The CPU) obtains the upper-level command B, the upper-level command C, and the upper-level command D in sequence, and splits the upper-level command B to obtain instruction B0, splits the upper-level command C to obtain instruction C0 and instruction C2, and splits the upper-level command D to obtain instruction D0 and instruction D2, and then sequentially issue instruction B0, instruction C0, and instruction D0 to the first-in-first-out queue (FIFO).
进一步地,协处理器(S-CPU)通过通道的控制总线(bus)向该通道挂载的各闪存芯片下发对应的指令和数据,例如:上层命令A是闪存芯片0(Die 0)的写命令,指令A0是上层命令A的写指令与数据传输指令,先入先出队列(FIFO)中的第一条指令是指令A0,因此,向闪存芯片0(Die 0)发送指令A0,其中,指令A0中包括的数据传输指令会占用较长时间,随后闪存芯片0(Die 0)开始执行写操作并处于忙碌(Busy)状态。Further, the coprocessor (S-CPU) sends corresponding instructions and data to each flash memory chip mounted on the channel through the control bus (bus) of the channel, for example: the upper layer command A is the flash memory chip 0 (Die 0) Write command, instruction A0 is the write instruction and data transmission instruction of upper layer command A, the first instruction in the first-in first-out queue (FIFO) is instruction A0, therefore, send instruction A0 to flash memory chip 0 (Die 0), among them, The data transmission instruction included in the instruction A0 will take a long time, and then the flash memory chip 0 (Die 0 ) starts to perform the write operation and is in a busy (Busy) state.
进一步地,协处理器(S-CPU)继续向闪存芯片1(Die1)发送先入先出队列(FIFO)中的下一条指令B0,然后依次向闪存芯片2(Die 2)发送先入先出队列(FIFO)中的指令C0,向闪存芯片3(Die3)发送先入先出队列(FIFO)中的指令D0。在各闪存芯片完成读操作或写操作退出忙碌(Busy)状态时,协处理器(S-CPU)继续依次下发指令C1、指令D1、指令A1至先入先出队列(FIFO),以查询指令C0、指令D0、指令A0是否执行完成,并分别向闪存芯片2(Die2)、闪存芯片3(Die3)、闪存芯片0(Die0)发送先入先出队列(FIFO)中的指令C1、指令D1、指令A1。Further, the coprocessor (S-CPU) continues to send the next instruction B0 in the first-in-first-out queue (FIFO) to the flash memory chip 1 (Die1), and then sends the first-in-first-out queue ( The command C0 in the FIFO) sends the command D0 in the first-in-first-out queue (FIFO) to the flash memory chip 3 (Die3). When each flash memory chip completes the read operation or write operation and exits the busy (Busy) state, the coprocessor (S-CPU) continues to issue instructions C1, instruction D1, and instruction A1 to the first-in-first-out queue (FIFO) in order to query instructions Whether C0, instruction D0, and instruction A0 have been executed, and respectively send the instruction C1, instruction D1, and Instruction A1.
进一步地,在获取到指令C0、指令D0处于执行完成状态后,协处理器(S-CPU)继续下发指令C2、指令D2至先入先出队列(FIFO),并分别向闪存芯片2(Die2)、闪存芯片3(Die3)下发先入先出队列(FIFO)中的指令C2、指令D2,以分别进行上层命令C、上层命令D的数据传输,随后上层命令C、上层命令D执行完成,在协处理器(S-CPU)分别向闪存芯片0(Die0)、闪存芯片1(Die1)下发先入先出队列(FIFO)中的指令A1和指令B1后,上层命令A、上层命令B随之执行完成。Further, after the instruction C0 and instruction D0 are in the execution completion state, the coprocessor (S-CPU) continues to issue the instruction C2 and instruction D2 to the first-in-first-out queue (FIFO), and send them to the flash memory chip 2 (Die2 ), the flash memory chip 3 (Die3) issues the instruction C2 and the instruction D2 in the first-in-first-out queue (FIFO) to carry out the data transmission of the upper-layer command C and the upper-layer command D respectively, and then the execution of the upper-layer command C and the upper-layer command D is completed. After the coprocessor (S-CPU) sends instruction A1 and instruction B1 in the first-in-first-out queue (FIFO) to flash memory chip 0 (Die0) and flash memory chip 1 (Die1) respectively, upper-layer command A and upper-layer command B follow The execution is completed.
其中,上层命令A是闪存芯片0(Die 0)的写命令,上层命令B是闪存芯片1(Die 1)的写命令,上层命令C是闪存芯片2(Die 2)的读命令,上层命令D是闪存芯片3(Die 3)的读命令,指令A0是上层命令A的写指令与数据传输指令,指令B0是上层命令B的写指令与数据传输指令,指令C0是上层命令C的读指令,指令D0是上层命令D的读指令,指令A1是上层命令A的查询状态指令,指令B1是上层命令B的查询状态指令,指令C1是上层命令C的查询状态指令,指令D1是上层命令D的查询状态指令,指令C2是上层命令C的读数据传输指令,指令D2是上层命令D的读数据传输指令。Among them, the upper layer command A is the write command of the flash memory chip 0 (Die 0), the upper layer command B is the write command of the flash memory chip 1 (Die 1), the upper layer command C is the read command of the flash memory chip 2 (Die 2), and the upper layer command D is the read command of the flash memory chip 3 (Die 3), the command A0 is the write command and data transmission command of the upper command A, the command B0 is the write command and data transmission command of the upper command B, and the command C0 is the read command of the upper command C, Instruction D0 is the read instruction of upper-layer command D, instruction A1 is the query status instruction of upper-layer command A, instruction B1 is the query status instruction of upper-layer command B, instruction C1 is the query status instruction of upper-layer command C, and instruction D1 is the query status instruction of upper-layer command D. Query status instruction, instruction C2 is the read data transmission instruction of the upper layer command C, and instruction D2 is the read data transfer instruction of the upper layer command D.
可以理解的是,闪存设备,例如固态硬盘对于读写命令的响应延迟是判断产品优劣的一项重要指标,主机端要求读写命令的响应越快越好。由于写命令的数据从主机端传输到固态硬盘内部后,固态硬盘就返回完成信号至主机端,所以后续将数据写入到闪存介质的延迟对主机端不可见;而读命令必须等待数据从闪存介质读出后进一步传输到主机端才算完成,所以读命令在闪存端的延迟是整个读命令延迟的一个重要部分。It is understandable that the response delay of flash memory devices, such as solid-state drives, to read and write commands is an important indicator for judging the quality of a product. The faster the host side requires the response of read and write commands, the better. Since the data of the write command is transmitted from the host to the SSD, the SSD returns a completion signal to the host, so the subsequent delay in writing data to the flash media is invisible to the host; while the read command must wait for the data to be transferred from the flash to the host. After the media is read, further transmission to the host is considered complete, so the delay of the read command on the flash memory side is an important part of the delay of the entire read command.
然而,在考虑成本和功耗的情况下,闪存控制器使用的协处理器(S-CPU)会尽量少,所以协处理器(S-CPU)的算力通常较为紧张。因此协处理器(S-CPU)会尽量去填满硬件先入先出队列(FIFO),以尽量减小因协处理器(S-CPU)调度不及时导致的总线浪费,从而提高带宽。但是,当有新的读命令过来时,就需要先入先出队列(FIFO)中的已下发指令完成后才能开始处理新的读指令,这样就会导致读命令的延迟较大,例如:图3中协处理器(S-CPU)先下发指令A0和指令B0,当收到读命令C时,虽然指令B0还未开始执行,但读指令C0在先入先出队列(FIFO)中的位置处于指令B0后,只能等待指令B0执行后才能执行指令C0,导致读延迟较大。However, considering the cost and power consumption, the coprocessor (S-CPU) used by the flash controller will be as few as possible, so the computing power of the coprocessor (S-CPU) is usually relatively tight. Therefore, the coprocessor (S-CPU) will try to fill up the hardware first-in-first-out queue (FIFO) to minimize the bus waste caused by the untimely scheduling of the coprocessor (S-CPU), thereby increasing the bandwidth. However, when a new read command comes, it is necessary to complete the issued command in the first-in-first-out queue (FIFO) before starting to process the new read command, which will cause a large delay in the read command, for example: 3. The central coprocessor (S-CPU) first issues instruction A0 and instruction B0. When the read command C is received, although the instruction B0 has not yet started to be executed, the position of the read instruction C0 in the first-in-first-out queue (FIFO) After the instruction B0, the instruction C0 can only be executed after the instruction B0 is executed, resulting in a large read delay.
基于此,本申请实施例提供一种命令调度方法,以在维持总带宽的情况下,使得后下发的读命令优先于早下发的写命令执行,从而减小读命令的延迟。Based on this, an embodiment of the present application provides a command scheduling method, so that the read command issued later is executed prior to the write command issued earlier, so as to reduce the delay of the read command while maintaining the total bandwidth.
请参阅图4,图4是本申请实施例提供的一种命令调度方法的流程示意图;Please refer to FIG. 4. FIG. 4 is a schematic flowchart of a command scheduling method provided in an embodiment of the present application;
其中,该命令调度方法,应用于闪存控制器,闪存控制器包括高优先级先入先出队列(FIFO-H)和低优先级先入先出队列(FIFO-L),其中,低优先级先入先出队列用于存放写命令。Wherein, the command scheduling method is applied to a flash memory controller, and the flash memory controller includes a high-priority first-in-first-out queue (FIFO-H) and a low-priority first-in-first-out queue (FIFO-L), wherein the low priority first-in-first-out queue (FIFO-L) The dequeue is used to store write commands.
具体的,请参阅图5,图5是本申请实施例提供的另一种闪存控制器的结构示意图;Specifically, please refer to FIG. 5, which is a schematic structural diagram of another flash memory controller provided by an embodiment of the present application;
如图5所示,该闪存控制器包括至少一个通道(CH),例如:通道0(CH 0)、通道1(CH1)、……、通道15(CH 15),每一通道(CH)均包括一个高优先级先入先出队列(FIFO-H)和低优先级先入先出队列(FIFO-L),每一通道(CH)下至少挂载一个闪存芯片(简称Die),例如:通道0(CH 0)下挂载闪存芯片0(Die 0)、闪存芯片1(Die 1)、闪存芯片2(Die 2)和闪存芯片3(Die 3),通道1(CH 1)下挂载闪存芯片4(Die 4)、闪存芯片5(Die 5)、闪存芯片6(Die 6)和闪存芯片7(Die7),……,通道15(CH 15)下挂载闪存芯片60(Die 60)、闪存芯片61(Die61)、闪存芯片62(Die 62)和闪存芯片63(Die 63),其中,同一个通道下的多个闪存芯片(Die)共用一组控制总线(bus)。As shown in Figure 5, the flash memory controller includes at least one channel (CH), for example: channel 0 (CH 0), channel 1 (CH1), ..., channel 15 (CH 15), each channel (CH) It includes a high-priority first-in-first-out queue (FIFO-H) and a low-priority first-in-first-out queue (FIFO-L). At least one flash memory chip (Die for short) is mounted under each channel (CH), for example:
在本申请实施例中,闪存控制器还包括至少一个协处理器(S-CPU),协处理器(S-CPU)用于将主机发送的上层命令拆分为至少一个指令,并通过控制总线(bus)将指令下发到对应的高优先级先入先出队列(FIFO-H)和/或低优先级先入先出队列(FIFO-L)。In the embodiment of the present application, the flash memory controller also includes at least one coprocessor (S-CPU), and the coprocessor (S-CPU) is used to split the upper layer command sent by the host into at least one instruction, and pass the control bus (bus) sends commands to the corresponding high priority first-in first-out queue (FIFO-H) and/or low priority first-in first-out queue (FIFO-L).
如图4所示,该命令调度方法,包括:As shown in Figure 4, the command scheduling method includes:
步骤S401:获取读命令,并将读命令下发至高优先级先入先出队列;Step S401: Obtain a read command, and issue the read command to a high-priority first-in-first-out queue;
具体的,读命令包括至少一个指令,闪存控制器接收主机发送的读命令,并控制协处理器(S-CPU)将该读命令拆分得到读指令和读数据传输指令,然后通过控制总线(bus)将该读指令下发至高优先级先入先出队列(FIFO-H)。Specifically, the read command includes at least one instruction, and the flash memory controller receives the read command sent by the host, and controls the coprocessor (S-CPU) to split the read command to obtain a read instruction and a read data transfer instruction, and then through the control bus ( bus) sends the read command to a high-priority first-in-first-out queue (FIFO-H).
在本申请实施例中,在获取读命令之前,方法包括:In the embodiment of this application, before obtaining the read command, the method includes:
确定高优先级先入先出队列与低优先级先入先出队列。Determine the high-priority FIFO queue and the low-priority FIFO queue.
具体的,闪存控制器在获取读命令和/或写命令之前,确定高优先级先入先出队列(FIFO-H)和优先级先入先出队列(FIFO-L),其中,高优先级先入先出队列(FIFO-H)和优先级先入先出队列(FIFO-L)的位宽与深度相同。Specifically, the flash memory controller determines a high-priority first-in-first-out queue (FIFO-H) and a priority first-in-first-out queue (FIFO-L) before obtaining the read command and/or write command, wherein the high priority first-in-first-out queue The output queue (FIFO-H) and the priority first-in-first-out queue (FIFO-L) have the same bit width and depth.
在本申请实施例中,方法还包括:In the embodiment of the present application, the method also includes:
获取写命令,并将写命令下发至低优先级先入先出队列。Obtain the write command and issue the write command to the low-priority first-in-first-out queue.
具体的,写命令包括至少一个指令,闪存控制器接收主机发送的写命令,并控制协处理器(S-CPU)将该写命令拆分得到写指令与数据传输指令,然后通过控制总线(bus)将该写指令与数据传输指令下发至低优先级先入先出队列(FIFO-L)。Specifically, the write command includes at least one instruction, and the flash memory controller receives the write command sent by the host, and controls the coprocessor (S-CPU) to split the write command to obtain a write instruction and a data transmission instruction, and then transmits the instruction through the control bus (bus ) sends the write command and the data transmission command to a low-priority first-in-first-out queue (FIFO-L).
在本申请实施例中,闪存控制器还包括仲裁模块,仲裁模块用于决策执行先入先出队列中的指令,其中,仲裁模块包括但不限于轮询仲裁器(Round-Robin)、固定优先级仲裁器(Fixed-Priority)等仲裁器。优选地,本申请实施例中采用固定优先级仲裁器(Fixed-Priority)。In the embodiment of the present application, the flash memory controller also includes an arbitration module, which is used to decide and execute the instructions in the first-in-first-out queue, wherein the arbitration module includes but is not limited to a round-robin arbitrator (Round-Robin), a fixed priority Arbitrator (Fixed-Priority) and other arbitrators. Preferably, a fixed-priority arbiter (Fixed-Priority) is used in this embodiment of the application.
请参阅图6,图6是本申请实施例提供的一种仲裁模块的示意图;Please refer to FIG. 6. FIG. 6 is a schematic diagram of an arbitration module provided by an embodiment of the present application;
如图6所示,仲裁模块分别与高优先级先入先出队列(FIFO-H)、优先级先入先出队列(FIFO-L)、控制总线(bus)连接。As shown in FIG. 6 , the arbitration module is respectively connected to a high-priority first-in-first-out queue (FIFO-H), a priority first-in-first-out queue (FIFO-L), and a control bus (bus).
具体的,仲裁模块有2个不同的接口分别对接高优先级先入先出队列和优先级先入先出队列,以此可以识别每一指令的来源。Specifically, the arbitration module has two different interfaces to connect to the high-priority FIFO queue and the priority FIFO queue respectively, so as to identify the source of each instruction.
步骤S402:执行高优先级先入先出队列中的每一指令。Step S402: Execute each instruction in the high-priority FIFO queue.
具体的,闪存控制器控制仲裁模块决策执行高优先级先入先出队列(FIFO-H)中的每一指令。Specifically, the flash memory controller controls the arbitration module to decide to execute each instruction in the high-priority first-in-first-out queue (FIFO-H).
请参阅图7,图7是本申请实施例提供的一种决策执行先入先出队列中的指令的流程示意图;Please refer to FIG. 7. FIG. 7 is a schematic flowchart of a decision-making and executing instruction in the first-in-first-out queue provided by the embodiment of the present application;
如图7所示,决策执行先入先出队列中的指令的流程,包括:As shown in Figure 7, the process of deciding to execute the instructions in the first-in-first-out queue includes:
步骤S701:控制仲裁模块在高优先级先入先出队列(FIFO-H)与低优先级先入先出队列(FIFO-L)中选择一个先入先出队列,并执行所选择的先入先出队列中的指令。Step S701: the control arbitration module selects a first-in-first-out queue in a high-priority first-in-first-out queue (FIFO-H) and a low-priority first-in-first-out queue (FIFO-L), and executes the selected first-in-first-out queue instructions.
具体的,请参阅图8,图8是步骤S701的细化流程示意图;Specifically, please refer to FIG. 8, which is a schematic diagram of a detailed flow of step S701;
如图8所示,步骤S701:控制仲裁模块在高优先级先入先出队列与低优先级先入先出队列中选择一个先入先出队列,并执行所选择的先入先出队列中的指令,包括:As shown in Figure 8, step S701: the control arbitration module selects a FIFO queue from the high-priority FIFO queue and the low-priority FIFO queue, and executes the instructions in the selected FIFO queue, including :
步骤S7011:优先执行高优先级先入先出队列中的指令;Step S7011: Prioritize the execution of instructions in the high-priority FIFO queue;
具体的,仲裁模块优先执行高优先级先入先出队列(FIFO-H)中的指令,将指令通过控制总线(bus)下发给对应的闪存芯片(Die),由闪存芯片(Die)执行该指令。Specifically, the arbitration module preferentially executes the instructions in the high-priority first-in-first-out queue (FIFO-H), sends the instructions to the corresponding flash memory chip (Die) through the control bus (bus), and the flash memory chip (Die) executes the instruction. instruction.
步骤S7012:判断是否在预设时间内执行过低优先级先入先出队列中的指令;Step S7012: judging whether to execute the instructions in the low-priority FIFO queue within the preset time;
具体的,预设时间由寄存器配置,根据硬件驱动时钟的周期数量决定,例如时钟为600MHz,配置为600*1024,则预设时间为1ms。Specifically, the preset time is configured by a register and determined according to the cycle number of the hardware-driven clock. For example, if the clock is 600MHz and the configuration is 600*1024, the preset time is 1ms.
进一步地,若在预设时间内未执行过低优先级先入先出队列(FIFO-L)中的指令,则进入步骤S7013:执行低优先级先入先出队列中的一个指令;若在预设时间内执行过低优先级先入先出队列(FIFO-L)中的指令,则返回步骤S7011:优先执行高优先级先入先出队列中的指令。Further, if the instruction in the low-priority first-in-first-out queue (FIFO-L) is not executed within the preset time, then enter step S7013: execute an instruction in the low-priority first-in-first-out queue; Execute the instructions in the low-priority FIFO-L queue within the time, then return to step S7011: preferentially execute the instructions in the high-priority FIFO-L queue.
步骤S7013:执行低优先级先入先出队列中的一个指令;Step S7013: Execute an instruction in the low-priority FIFO queue;
具体的,若在预设时间内未执行过低优先级先入先出队列(FIFO-L)中的指令,则仲裁模块将低优先级先入先出队列(FIFO-L)中的一个指令通过控制总线(bus)下发给对应的闪存芯片(Die),由闪存芯片(Die)执行该指令。Specifically, if the instruction in the low-priority first-in-first-out queue (FIFO-L) is not executed within the preset time, the arbitration module passes an instruction in the low-priority first-in-first-out queue (FIFO-L) through the control The bus (bus) issues to the corresponding flash memory chip (Die), and the flash memory chip (Die) executes the instruction.
步骤S7014:继续执行高优先级先入先出队列中的指令。Step S7014: Continue to execute the instructions in the high-priority FIFO queue.
具体的,在仲裁模块执行过低优先级先入先出队列(FIFO-L)中的一个指令后,如果高优先级先入先出队列(FIFO-H)中仍有指令,则仲裁模块继续将高优先级先入先出队列(FIFO-H)中的每一指令通过控制总线(bus)下发给对应的闪存芯片(Die),由闪存芯片(Die)执行该指令。Specifically, after the arbitration module executes an instruction in the low-priority first-in-first-out queue (FIFO-L), if there are still instructions in the high-priority first-in-first-out queue (FIFO-H), the arbitration module will continue to send the high-priority Each instruction in the priority first-in-first-out queue (FIFO-H) is sent to the corresponding flash memory chip (Die) through the control bus (bus), and the flash memory chip (Die) executes the instruction.
在本申请实施例中,通过判断是否在预设时间内执行过低优先级先入先出队列中的指令,本申请能够在减小读命令延迟的同时保证写命令及时执行。In the embodiment of the present application, by judging whether to execute the instructions in the low-priority FIFO queue within the preset time, the present application can reduce the delay of the read command and ensure the timely execution of the write command.
在本申请实施例中,高优先级先入先出队列(FIFO-H)与低优先级先入先出队列(FIFO-L)中的每一指令均为原子性指令,每一原子性指令在执行过程中连续执行,例如:写指令A0包含了写命令A0-Cmd、写地址A0-Addr、写数据A0-Data,其为原子性操作,不能被打断,需要连续执行,其下发序列为:Start→A0-Cmd→A0-Addr→A0-Data→End,或者,读命令的原子性指令的下发序列为:Start→0x00→address→0x30→End,Start-End之间的指令需要连续执行,不能被打断。In the embodiment of the present application, each instruction in the high-priority first-in-first-out queue (FIFO-H) and the low-priority first-in-first-out queue (FIFO-L) is an atomic instruction, and each atomic instruction is executed Continuous execution during the process, for example: write command A0 includes write command A0-Cmd, write address A0-Addr, and write data A0-Data, which is an atomic operation that cannot be interrupted and needs to be executed continuously. The issuing sequence is : Start→A0-Cmd→A0-Addr→A0-Data→End, or, the issuing sequence of the atomic instruction of the read command is: Start→0x00→address→0x30→End, the instructions between Start-End need to be continuous Executes and cannot be interrupted.
可以理解的是,由于闪存操作需要遵循一定的规则,不能随意乱序,所以所有原子性指令都以Start指令为头,End指令为尾,Start-End之间的指令需要连续执行,不能被打断。It is understandable that because flash memory operations need to follow certain rules and cannot be randomly ordered, all atomic instructions start with the Start instruction and end with the End instruction. The instructions between Start-End need to be executed continuously and cannot be blocked. broken.
在本申请实施例中,通过每一原子性指令在执行过程中连续执行,本申请能够保证原子指令不被打断,适用于闪存类型操作原子性的规则。In the embodiment of the present application, through the continuous execution of each atomic instruction during the execution process, the present application can ensure that the atomic instructions are not interrupted, which is applicable to the atomicity rules of flash memory type operations.
请参阅图9,图9是本申请实施例提供的另一种决策执行先入先出队列中的指令的流程示意图;Please refer to FIG. 9. FIG. 9 is a schematic flow diagram of another decision-making instruction in the first-in-first-out queue provided by the embodiment of the present application;
如图9所示,决策执行先入先出队列中的指令的流程,包括:As shown in Figure 9, the process of deciding to execute the instructions in the first-in-first-out queue includes:
步骤S901:在高优先级先入先出队列中的所有指令均执行完毕时,执行低优先级先入先出队列中的指令;Step S901: Execute the instructions in the low-priority FIFO queue when all the instructions in the high-priority FIFO queue have been executed;
具体的,在高优先级先入先出队列(FIFO-H)中的所有指令均执行完毕时,仲裁模块将低优先级先入先出队列(FIFO-L)中的指令通过控制总线(bus)下发给对应的闪存芯片(Die),由闪存芯片(Die)执行该指令。Specifically, when all the instructions in the high-priority first-in-first-out queue (FIFO-H) have been executed, the arbitration module sends the instructions in the low-priority first-in-first-out queue (FIFO-L) through the control bus (bus) Send it to the corresponding flash memory chip (Die), and the flash memory chip (Die) executes the instruction.
步骤S902:判断高优先级先入先出队列中是否有新的指令;Step S902: judging whether there is a new instruction in the high-priority FIFO queue;
具体的,若高优先级先入先出队列(FIFO-H)中有新的指令,则进入步骤S903:继续执行高优先级先入先出队列中的指令;若高优先级先入先出队列(FIFO-H)中没有新的指令,则返回步骤S901,继续执行低优先级先入先出队列中的指令。Specifically, if there is a new instruction in the high-priority FIFO-H, then enter step S903: continue to execute the instruction in the high-priority FIFO-H; if the high-priority FIFO-H If there is no new instruction in -H), then return to step S901, and continue to execute the instructions in the low-priority FIFO queue.
步骤S903:继续执行高优先级先入先出队列中的指令。Step S903: Continue to execute the instructions in the high-priority FIFO queue.
具体的,若高优先级先入先出队列(FIFO-H)中有新的指令,则仲裁模块将高优先级先入先出队列中的每一指令通过控制总线(bus)下发给对应的闪存芯片(Die),由闪存芯片(Die)执行该指令,直到下一次到达预设时间时未执行过低优先级先入先出队列(FIFO-L)中的指令或者高优先级先入先出队列中的指令执行完毕时,执行低优先级先入先出队列(FIFO-L)中的指令。Specifically, if there are new instructions in the high-priority first-in-first-out queue (FIFO-H), the arbitration module sends each instruction in the high-priority first-in-first-out queue to the corresponding flash memory through the control bus (bus) Chip (Die), the instruction is executed by the flash memory chip (Die), until the next time the preset time is reached, the instruction in the low-priority first-in-first-out queue (FIFO-L) or the high-priority first-in-first-out queue is not executed When the execution of the instruction is completed, the instruction in the low-priority first-in-first-out queue (FIFO-L) is executed.
请参阅图10,图10是本申请实施例提供的另一种命令调度的流程示意图;Please refer to FIG. 10. FIG. 10 is a schematic flowchart of another command scheduling provided by the embodiment of the present application;
在本申请实施例中,在闪存设备接收到主机依次下发的上层命令后,由闪存控制器内的协处理器(S-CPU)将每一上层命令拆分为至少一个指令,并将写命令的相应指令下发到低优先级先入先出队列(FIFO-L)中、将读命令的相应指令下发到高优先级先入先出队列(FIFO-H)中,然后由闪存控制器内的仲裁模块通过通道的控制总线(bus)向该通道挂载的各闪存芯片下发指令和数据,每一闪存芯片(Die)执行对应的命令并处于忙碌(Busy)状态。In the embodiment of the present application, after the flash memory device receives the upper layer commands sequentially issued by the host, the coprocessor (S-CPU) in the flash memory controller splits each upper layer command into at least one instruction, and writes The corresponding instruction of the command is issued to the low priority first-in-first-out queue (FIFO-L), and the corresponding instruction of the read command is issued to the high-priority first-in-first-out queue (FIFO-H). The arbitration module of the channel sends instructions and data to each flash memory chip mounted on the channel through the control bus (bus) of the channel, and each flash memory chip (Die) executes the corresponding command and is in a busy (Busy) state.
如图10所示,主机依次下发了四个命令:上层命令A、上层命令B、上层命令C和上层命令D,协处理器(S-CPU)将上层命令拆分为至少一个指令,下发到对应的高优先级先入先出队列(FIFO-H)或低优先级先入先出队列(FIFO-L)中,然后仲裁模块决策执行哪一先入先出队列中的指令并通过通道的控制总线(bus)依次向闪存芯片0(Die 0)、闪存芯片1(Die1)、闪存芯片2(Die 2)和闪存芯片3(Die 3)下发对应的指令和数据,每一闪存芯片(Die)执行对应的命令并处于忙碌(Busy)状态。As shown in Figure 10, the host sends four commands in sequence: upper-layer command A, upper-layer command B, upper-layer command C, and upper-layer command D. The coprocessor (S-CPU) splits the upper-layer command into at least one instruction, and the next sent to the corresponding high-priority first-in-first-out queue (FIFO-H) or low-priority first-in-first-out queue (FIFO-L), and then the arbitration module decides to execute the instruction in which first-in-first-out queue and passes the control of the channel The bus (bus) sequentially sends corresponding instructions and data to flash memory chip 0 (Die 0), flash memory chip 1 (Die1), flash memory chip 2 (Die 2) and flash memory chip 3 (Die 3), and each flash memory chip (Die 3) ) executes the corresponding command and is in a busy (Busy) state.
具体的,协处理器(S-CPU)获取到上层命令A后,将上层命令A拆分得到指令A0,并下发指令A0到低优先级先入先出队列(FIFO-L)中,随后协处理器(S-CPU)依次获取到上层命令B、上层命令C和上层命令D,并将上层命令B拆分得到指令B0,将上层命令C拆分得到指令C0和指令C2,将上层命令D拆分得到指令D0和指令D2,然后依次下发指令B0到低优先级先入先出队列(FIFO-L)中、指令C0、指令D0到高优先级先入先出队列(FIFO-H)中。Specifically, after the coprocessor (S-CPU) obtains the upper-layer command A, it splits the upper-layer command A to obtain instruction A0, and sends the instruction A0 to the low-priority first-in-first-out queue (FIFO-L), and then the coprocessor (S-CPU) The processor (S-CPU) sequentially obtains the upper-layer command B, upper-layer command C, and upper-layer command D, and splits the upper-layer command B to obtain instruction B0, splits the upper-layer command C to obtain instruction C0 and instruction C2, and splits the upper-layer command D Split to obtain instruction D0 and instruction D2, and then issue instruction B0 to the low-priority first-in-first-out queue (FIFO-L), instruction C0, and instruction D0 to the high-priority first-in-first-out queue (FIFO-H) in sequence.
可以理解的是,上层命令下发都需要时间,所以指令A0、指令B0、指令C0、指令D0下发的时间是依次递增的,并不是一瞬间并行下发。由于指令A0先下发了,高优先级先入先出队列(FIFO-H)中没有指令,低优先级先入先出队列(FIFO-L)中仅有指令A0,所以仲裁模块会先向闪存芯片0(Die 0)发送指令A0,闪存芯片0(Die 0)开始执行写操作并处于忙碌(Busy)状态。It is understandable that it takes time to issue upper-level commands, so the time for issuing instructions A0, B0, C0, and D0 is sequentially increased, not in parallel at an instant. Since the command A0 is issued first, there is no command in the high priority FIFO-H, and there is only command A0 in the low priority FIFO-L, so the arbitration module will send the flash chip first 0 (Die 0) sends command A0, and flash memory chip 0 (Die 0) starts to execute the write operation and is in a busy (Busy) state.
由于指令A0执行也需要一段时间,而这个时间往往比软件下发单个指令的时间长的多,所以当指令A0执行完后,指令C0、指令D0已经处于高优先级先入先出队列(FIFO-H)中,所以接下来指令C0、指令D0可以优先执行。指令C0、指令D0执行完成后,高优先级先入先出队列(FIFO-H)中暂时没有指令,所以仲裁模块可以接着向闪存芯片1(Die1)发送低优先级先入先出队列(FIFO-L)中的指令B0,闪存芯片1(Die1)执行指令B0的这段时间,协处理器(S-CPU)会继续下发指令C1、指令D1到高优先级先入先出队列(FIFO-H)中,仲裁模块分别向闪存芯片3(Die3)、闪存芯片0(Die0)发送指令C1、指令D1,以查询指令C0、指令D0是否执行完成。Since the execution of instruction A0 also takes a period of time, and this time is often much longer than the time for the software to issue a single instruction, so after instruction A0 is executed, instruction C0 and instruction D0 are already in the high-priority first-in-first-out queue (FIFO- H), so the next instruction C0 and instruction D0 can be executed first. After the execution of instruction C0 and instruction D0 is completed, there is no instruction temporarily in the high-priority FIFO-H, so the arbitration module can then send the low-priority FIFO-L to the flash memory chip 1 (Die1). ), the coprocessor (S-CPU) will continue to issue instructions C1 and D1 to the high-priority first-in-first-out queue (FIFO-H) during the period during which flash memory chip 1 (Die1) executes instruction B0 , the arbitration module sends command C1 and command D1 to flash memory chip 3 (Die3) and flash memory chip 0 (Die0) respectively, to query whether the execution of command C0 and command D0 is completed.
进一步地,在获取到指令C0、指令D0处于执行完成状态后,指令C2、指令D2已经处于高优先级先入先出队列(FIFO-H)中,仲裁模块继续分别向闪存芯片2(Die2)、闪存芯片3(Die3)下发指令C2、指令D2,以分别进行上层命令C、上层命令D的数据传输,随后上层命令C、上层命令D执行完成,在仲裁模块分别向闪存芯片0(Die0)、闪存芯片1(Die1)下发低优先级先入先出队列(FIFO-L)中的指令A1和指令B1后,上层命令A、上层命令B随之执行完成。Further, after the instruction C0 and instruction D0 are in the execution completion state, the instruction C2 and instruction D2 are already in the high-priority first-in-first-out queue (FIFO-H), and the arbitration module continues to send flash memory chips 2 (Die2), Flash memory chip 3 (Die3) issues command C2 and command D2 to perform data transmission of upper layer command C and upper layer command D respectively. 1. After the flash memory chip 1 (Die1) issues the instruction A1 and the instruction B1 in the low-priority first-in-first-out queue (FIFO-L), the upper-layer command A and the upper-layer command B are executed accordingly.
其中,上层命令A是闪存芯片0(Die 0)的写命令,上层命令B是闪存芯片1(Die 1)的写命令,上层命令C是闪存芯片2(Die 2)的读命令,上层命令D是闪存芯片3(Die 3)的读命令,指令A0是上层命令A的写指令与数据传输指令,指令B0是上层命令B的写指令与数据传输指令,指令C0是上层命令C的读指令,指令D0是上层命令D的读指令,指令A1是上层命令A的查询状态指令,指令B1是上层命令B的查询状态指令,指令C1是上层命令C的查询状态指令,指令D1是上层命令D的查询状态指令,指令C2是上层命令C的读数据传输指令,指令D2是上层命令D的读数据传输指令。Among them, the upper layer command A is the write command of the flash memory chip 0 (Die 0), the upper layer command B is the write command of the flash memory chip 1 (Die 1), the upper layer command C is the read command of the flash memory chip 2 (Die 2), and the upper layer command D is the read command of the flash memory chip 3 (Die 3), the command A0 is the write command and data transmission command of the upper command A, the command B0 is the write command and data transmission command of the upper command B, and the command C0 is the read command of the upper command C, Instruction D0 is the read instruction of upper-layer command D, instruction A1 is the query status instruction of upper-layer command A, instruction B1 is the query status instruction of upper-layer command B, instruction C1 is the query status instruction of upper-layer command C, and instruction D1 is the query status instruction of upper-layer command D. Query status instruction, instruction C2 is the read data transmission instruction of the upper layer command C, and instruction D2 is the read data transfer instruction of the upper layer command D.
在本申请实施例中,通过提供一种命令调度方法,应用于闪存控制器,闪存控制器包括高优先级先入先出队列和低优先级先入先出队列,其中,低优先级先入先出队列用于存放写命令,该命令调度方法包括:获取读命令,并将读命令下发至高优先级先入先出队列,其中,读命令包括至少一个指令;执行高优先级先入先出队列中的每一指令。通过低优先级先入先出队列存放写命令,将获取的读命令下发至高优先级先入先出队列,并执行高优先级先入先出队列中的每一指令,本申请能够在维持总带宽的情况下,使得后下发的读命令优先于早下发的写命令执行,从而减小读命令的延迟。In the embodiment of the present application, by providing a command scheduling method, it is applied to the flash controller, and the flash controller includes a high priority first-in-first-out queue and a low-priority first-in-first-out queue, wherein the low-priority first-in-first-out queue For storing write commands, the command scheduling method includes: obtaining a read command, and sending the read command to a high-priority first-in-first-out queue, wherein the read command includes at least one instruction; executing each command in the high-priority first-in-first-out queue an instruction. The write command is stored in the low-priority FIFO queue, the acquired read command is issued to the high-priority FIFO queue, and each instruction in the high-priority FIFO queue is executed. This application can maintain the total bandwidth. In some cases, the read command issued later is executed prior to the write command issued earlier, thereby reducing the delay of the read command.
请再参阅图11,图11是本申请实施例提供的又一种闪存控制器的结构示意图;Please refer to FIG. 11 again. FIG. 11 is a schematic structural diagram of another flash memory controller provided by an embodiment of the present application;
如图11所示,该闪存控制器111包括至少一个高优先级先入先出队列1111、至少一个低优先级先入先出队列1112以及至少一个仲裁模块1113。其中,图11中以一个高优先级先入先出队列1111、一个低优先级先入先出队列1112和一个仲裁模块1113为例。As shown in FIG. 11 , the
具体的,该闪存控制器111包括至少一个通道(CH),每一通道(CH)均包括一个高优先级先入先出队列1111、一个低优先级先入先出队列1112以及一个仲裁模块1113,其中,仲裁模块1113通过2个端口分别与高优先级先入先出队列1111、低优先级先入先出队列1112通信连接。Specifically, the
闪存控制器111,用于执行上述任一实施例中的命令调度方法,例如:获取读命令,并将读命令下发至高优先级先入先出队列,其中,读命令包括至少一个指令;执行高优先级先入先出队列中的每一指令。The
高优先级先入先出队列1111,用于存放读命令,其中,读命令包括至少一个指令。The high-priority first-in-first-
低优先级先入先出队列1112,用于存放写命令,其中,写命令包括至少一个指令。The low-priority FIFO queue 1112 is used to store write commands, wherein the write commands include at least one instruction.
仲裁模块1113,用于决策执行先入先出队列中的指令,例如:优先执行高优先级先入先出队列111中的指令;若在预设时间内未执行低优先级先入先出队列1112中的指令,则执行低优先级先入先出队列1112中的一个指令;继续执行高优先级先入先出队列1111中的指令。或者,用于在高优先级先入先出队列1111中的所有指令均执行完毕时,执行低优先级先入先出队列1112中的指令;若高优先级先入先出队列1111中有新的指令,则继续执行高优先级先入先出队列1111中的指令。The
本申请实施例还提供了一种非易失性计算机存储介质,计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如执行上述任意方法实施例中的命令调度方法,例如,执行以上描述的各个步骤。The embodiment of the present application also provides a non-volatile computer storage medium, the computer storage medium stores computer-executable instructions, and the computer-executable instructions are executed by one or more processors, for example, performing any of the above-mentioned method embodiments. The command scheduling method, for example, executes the steps described above.
以上所描述的装置或设备实施例仅仅是示意性的,其中作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。The above-described device or device embodiments are only illustrative, wherein the unit modules described as separate components may or may not be physically separated, and the components displayed as modular units may or may not be physical units, that is It can be located in one place, or it can be distributed to multiple network module units. Part or all of the modules can be selected according to actual needs to achieve the purpose of the solution of this embodiment.
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用直至得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。Through the above description of the embodiments, those skilled in the art can clearly understand that each embodiment can be implemented by means of software plus a general hardware platform, and of course also by hardware. Based on this understanding, the essence of the above technical solutions or the part that contributes to related technologies can be embodied in the form of software products, and the computer software products can be stored in computer-readable storage media, such as ROM/RAM, disk , optical disk, etc., including several instructions until a computer device (which may be a personal computer, server, or network device, etc.) executes the methods of each embodiment or some parts of the embodiment.
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。Finally, it should be noted that: the above embodiments are only used to illustrate the technical solutions of the present application, but not to limit them; under the thinking of the present application, the above embodiments or technical features in different embodiments can also be combined, The steps can be performed in any order, and there are many other variations of the different aspects of the application as above, which are not presented in detail for the sake of brevity; although the application has been described in detail with reference to the preceding examples, those of ordinary skill in the art It should be understood that it is still possible to modify the technical solutions described in the foregoing embodiments, or perform equivalent replacements for some of the technical features; and these modifications or replacements do not make the essence of the corresponding technical solutions deviate from the technology of each embodiment of the application. scope of the program.
Claims (10)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211697265.2A CN116225318A (en) | 2022-12-28 | 2022-12-28 | Command scheduling method, flash memory controller, flash memory device and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211697265.2A CN116225318A (en) | 2022-12-28 | 2022-12-28 | Command scheduling method, flash memory controller, flash memory device and storage medium |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116225318A true CN116225318A (en) | 2023-06-06 |
Family
ID=86570628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211697265.2A Pending CN116225318A (en) | 2022-12-28 | 2022-12-28 | Command scheduling method, flash memory controller, flash memory device and storage medium |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225318A (en) |
-
2022
- 2022-12-28 CN CN202211697265.2A patent/CN116225318A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11112998B2 (en) | Operation instruction scheduling method and apparatus for nand flash memory device | |
CN112765059A (en) | DMA (direct memory access) equipment based on FPGA (field programmable Gate array) and DMA data transfer method | |
CN109558344B (en) | A DMA transmission method suitable for network transmission and DMA controller | |
US8730248B2 (en) | Multi-graphics processor system, graphics processor and data transfer method | |
JP4805351B2 (en) | System and method for improving parallel processing of DRAM | |
US20090300324A1 (en) | Array type processor and data processing system | |
EP2686774B1 (en) | Memory interface | |
US8954644B2 (en) | Apparatus and method for controlling memory | |
JP2004171209A (en) | Shared memory data transfer device | |
US8694705B2 (en) | Information processing device | |
US11652761B2 (en) | Switch for transmitting packet, network on chip having the same, and operating method thereof | |
CN113051195A (en) | Memory, GPU and electronic equipment | |
CN116225990A (en) | Multichannel DDR read-write arbitration device based on FPGA | |
CN115470163A (en) | DMA transmission control method, control device, control equipment and storage medium | |
CN115586974A (en) | Memory controller, system, device and electronic equipment | |
CN114328350B (en) | AXI bus-based communication method, device and medium | |
US8909823B2 (en) | Data processing device, chain and method, and corresponding recording medium for dividing a main buffer memory into used space and free space | |
JP5911548B1 (en) | Apparatus, method, and computer program for scheduling access request to shared memory | |
US20090119429A1 (en) | Semiconductor integrated circuit | |
US20120311236A1 (en) | Memory system, data control method, and data controller | |
CN1132876A (en) | Bus arbitration between I/O devices and processing devices | |
CN116225318A (en) | Command scheduling method, flash memory controller, flash memory device and storage medium | |
CN118193144A (en) | Storage medium, method and device for executing host write command | |
JP2003015968A (en) | Bus simulator | |
US9110856B2 (en) | Interface control apparatus, data storage apparatus and method for interface control |
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 |
Country or region after: China Address after: 518000 3501, venture capital building, No. 9, Tengfei Road, huanggekeng community, Longcheng street, Longgang District, Shenzhen, Guangdong Province Applicant after: Shenzhen Dapu Microelectronics Co.,Ltd. Address before: 518000 room 3501, venture capital building, No. 9, Tengfei Road, Longgang District, Shenzhen, Guangdong Province Applicant before: SHENZHEN DAPU MICROELECTRONICS Co.,Ltd. Country or region before: China |