CN110659072A - 基于Queue结构的可插队命令下发加速方法和装置 - Google Patents
基于Queue结构的可插队命令下发加速方法和装置 Download PDFInfo
- Publication number
- CN110659072A CN110659072A CN201910918489.3A CN201910918489A CN110659072A CN 110659072 A CN110659072 A CN 110659072A CN 201910918489 A CN201910918489 A CN 201910918489A CN 110659072 A CN110659072 A CN 110659072A
- Authority
- CN
- China
- Prior art keywords
- command
- queue
- receiving end
- address
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 230000001133 acceleration Effects 0.000 title claims abstract description 78
- 230000008569 process Effects 0.000 claims abstract description 39
- 238000003780 insertion Methods 0.000 claims abstract description 35
- 230000037431 insertion Effects 0.000 claims abstract description 32
- 238000004590 computer program Methods 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 9
- 238000005111 flow chemistry technique Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Advance Control (AREA)
Abstract
本申请涉及一种基于Queue结构的可插队命令下发加速方法、装置、计算机设备和存储介质,其中该方法包括:CPU配置每个命令通道对应的地址空间,并打开Queue加速模块使能;将需要发送的命令地址写入所述对应的地址空间中,并更新写指针;硬件装置判断是否需要执行命令插队流程;若不需要执行命令插队流程,则所述硬件装置查询接收端是否能够接收数据;若所述接收端能够接收数据,则通过仲裁从相应地址空间中自动读取命令地址;待所述命令地址读取完成后传递给接收模块并更新读指针,再次查询接收端进行命令地址读取操作直至所有地址取完或所述硬件装置关闭。本发明实现了提高CPU命令的下发效率。
Description
技术领域
本发明涉及固态存储技术领域,特别是涉及一种基于Queue结构的可插队命令下发加速方法、装置、计算机设备和存储介质。
背景技术
目前,CPU通常采用单命令的下发方式,其工作流程如图1所示。CPU首先查看接收端每个命令通道是否能够接收命令地址,若不能接收,则不下发,若能接收,则进一步查看接收端能够接收多少命令地址,再通过总线向硬件电路下发,发送完成后继续上述步骤。
在上述过程中,由于CPU一次仅能发送一个命令地址,多通道直接无法并行发送,且发送命令地址的每一步都需要CPU的干预,CPU与硬件电路需要直接保持紧密的同步,CPU做的事情过于琐碎,很难与高速的硬件电路NFC保持绝对的同步,这大大影响了CPU的工作效率。此外,接收端Memory的深度也会影响CPU的效率,命令通道数很多时,相同性能的芯片,面积会增大。
发明内容
基于此,有必要针对上述技术问题,提供一种可以实现提高CPU命令下发效率的基于Queue结构的可插队命令下发加速方法、装置、计算机设备和存储介质。
一种基于Queue结构的可插队命令下发加速方法,所述方法包括:
CPU配置每个命令通道对应的地址空间,并打开Queue加速模块使能;
将需要发送的命令地址写入所述对应的地址空间中,并更新写指针;
硬件装置判断是否需要执行命令插队流程;
若不需要执行命令插队流程,则所述硬件装置查询接收端是否能够接收数据;
若所述接收端能够接收数据,则通过仲裁从相应地址空间中自动读取命令地址;
待所述命令地址读取完成后传递给接收模块并更新读指针,再次查询接收端进行命令地址读取操作直至所有地址取完或所述硬件装置关闭。
在其中一个实施例中,在所述硬件装置判断是否需要执行命令插队流程的步骤之后还包括:
若需要执行命令插队流程,则关闭需要插队的命令通道对应的Queue加速模块使能;
当所述Queue加速模块停止后,将所述接收端待执行数据全部丢弃并返回flag标志;
直接由CPU通过总线向所述接收端发送需要插队的命令地址。
在其中一个实施例中,所述直接由CPU通过总线向所述接收端发送需要插队的命令地址的步骤还包括:
CPU查询所述接收端Memory空间大小;
若所述接收端能够接收全部命令地址,则由CPU通过总线向接收端Memory直接写入插队命令;
若所述接收端不能够接收全部命令地址,则等待接收端Memory空余再执行写入插队命令的步骤;
清空命令flag标志,打开Queue加速模块使能以使所述Queue加速模块重新开始工作。
在其中一个实施例中,在所述若不需要执行命令插队流程的步骤之后还包括:
若不需要执行命令插队流程,则继续判断地址空间中是否存在命令地址;
若所述地址空间中存在命令地址,则硬件装置查询接收端是否能够接收数据;
若所述地址空间中不存在命令地址,则进入等待期不取命令地址。
一种基于Queue结构的可插队命令下发加速装置,所述装置包括:
配置模块,所述配置模块用于通过CPU配置每个命令通道对应的地址空间,并打开Queue加速模块使能;
命令存储模块,所述命令存储模块用于将需要发送的命令地址写入所述对应的地址空间中,并更新写指针;
第一判断模块,所述第一判断模块用于通过硬件装置判断是否需要执行命令插队流程;
第一查询模块,所述第一查询模块用于若不需要执行命令插队流程,则所述硬件装置查询接收端是否能够接收数据;
命令读取模块,所述命令读取模块用于若所述接收端能够接收数据,则通过仲裁从相应地址空间中自动读取命令地址;
命令写入模块,所述命令写入模块用于待所述命令地址读取完成后传递给接收模块并更新读指针,再次查询接收端进行命令地址读取操作直至所有地址取完或所述硬件装置关闭。
在其中一个实施例中,所述装置还包括命令插队模块,所述命令插队模块用于:
若需要执行命令插队流程,则关闭需要插队的命令通道对应的Queue加速模块使能;
当所述Queue加速模块停止后,将所述接收端待执行数据全部丢弃并返回flag标志;
直接由CPU通过总线向所述接收端发送需要插队的命令地址。
在其中一个实施例中,所述装置还包括第二查询模块,所述第二查询模块用于:
通过CPU查询所述接收端Memory空间大小;
若所述接收端能够接收全部命令地址,则由CPU通过总线向接收端Memory直接写入插队命令;
若所述接收端不能够接收全部命令地址,则等待接收端Memory空余再执行写入插队命令的步骤;
清空命令flag标志,打开Queue加速模块使能以使所述Queue加速模块重新开始工作。
在其中一个实施例中,所述装置还包括第二判断模块,所述第二判断模块用于:
若不需要执行命令插队流程,则继续判断地址空间中是否存在命令地址;
若所述地址空间中存在命令地址,则硬件装置查询接收端是否能够接收数据;
若所述地址空间中不存在命令地址,则进入等待期不取命令地址。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
上述基于Queue结构的可插队命令下发加速方法、装置、计算机设备和存储介质,其加速方法采用FIFO(First Input First Output)机制实现。工作过程中,CPU在TCM(Tightly Coupled Memory)中为每个命令通道开辟一段Queue空间,采用FIFO机制存放命令地址,当CPU检测到对应通道的FIFO未满时,即可写入命令地址到FIFO中,同时调整FIFO写指针wptr到相应位置。硬件装置则检测命令接收端Memory是否能够接收数据,若不能接收则不取命令地址,若能够接收则申请总线控制权,经由不同命令通道进行仲裁后读取FIFO中命令地址写入接收端,由接收端通过地址读取命令并执行。本发明中CPU可同时向不同命令通道下发多个命令地址,交由硬件电路自动读取,减小了CPU与硬件电路的交互,大大提高了命令下发效率。此外,由于命令空间的大小可自由配置,接收端无需使用深度较大的Memory,节约了Memory资源。
附图说明
图1为现有技术中CPU采用的命令下发方法的流程示意图;
图2为一个实施例中基于Queue结构的可插队命令下发加速方法的流程示意图;
图3为一个实施例中基于Queue结构的可插队命令下发加速系统构架图;
图4为一个实施例中Queue空间的结构示意图;
图5为另一个实施例中基于Queue结构的可插队命令下发加速方法的流程示意图;
图6为再一个实施例中基于Queue结构的可插队命令下发加速方法的流程示意图;
图7为又一个实施例中基于Queue结构的可插队命令下发加速方法的流程示意图;
图8为一个实施例中基于Queue结构的可插队命令下发加速的具体流程图;
图9为一个实施例中执行命令插队流程的具体流程图;
图10为一个实施例中基于Queue结构的可插队命令下发加速装置的结构框图;
图11为另一个实施例中基于Queue结构的可插队命令下发加速装置的结构框图;
图12为再一个实施例中基于Queue结构的可插队命令下发加速装置的结构框图;
图13为又一个实施例中基于Queue结构的可插队命令下发加速装置的结构框图;
图14为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
目前,CPU采用单命令的下发方式,其工作流程如图1所示。CPU首先查看接收端每个命令通道是否能够接收命令地址,若不能接收,则不下发,若能接收,则进一步查看接收端能够接收多少命令地址,再通过总线向硬件电路下发,发送完成后继续上述步骤。
在上述过程中,CPU一次仅能发送一个命令地址,多通道直接无法并行发送,且发送命令地址的每一步都需要CPU的干预,CPU与硬件电路需要直接保持紧密的同步,CPU做的事情过于琐碎,很难与高速的硬件电路NFC保持绝对的同步,这大大影响了CPU的工作效率。此外,接收端Memory的深度也会影响CPU的效率,命令通道数很多时,相同性能的芯片,面积会增大。
鉴于上述传统技术中存在的问题,本发明旨在提供一个基于Queue结构的可插队命令下发加速方法,可以实现减轻CPU的工作负担,提高CPU下发命令的工作效率。
在一个实施例中,如图2所示,提供了一种基于Queue结构的可插队命令下发加速方法,该方法包括:
步骤202,CPU配置每个命令通道对应的地址空间,并打开Queue加速模块使能;
步骤204,将需要发送的命令地址写入对应的地址空间中,并更新写指针;
步骤206,硬件装置判断是否需要执行命令插队流程;
步骤208,若不需要执行命令插队流程,则硬件装置查询接收端是否能够接收数据;
步骤210,若接收端能够接收数据,则通过仲裁从相应地址空间中自动读取命令地址;
步骤212,待命令地址读取完成后传递给接收模块并更新读指针,再次查询接收端进行命令地址读取操作直至所有地址取完或硬件装置关闭。
在本实施例中,该可插队命令下发加速方法可以应用于如图3所示的系统构架中。该系统构架为基于Queue结构的可插队命令下发加速系统,具体可以通过FPGA实现,也可以通过ASIC实现,可以灵活地运用在目前主流的SSD系统中NAND Flash Controller上,内含CDMA(Command Direct Memory Access),主要负责从CPU开辟的Queue空间里读取命令地址,由不同命令通道进行仲裁后得到总线控制权,从Queue空间里读取命令地址写入接收端。需要进行数据插队时,则切换下发通路至CPU通路下发命令地址。在一个具体的实施例中,CPU在TCM中开辟的Queue空间结构如图4所示。可以理解的是,在本实施例中所涉及的总线类型可以是主流的AHB(Advanced High-performance Bus),AXI(Advanced eXtensibleInterface),APB(Advanced peripheral Bus)或其它;其所有FIFO、SRAM,子模块数据位宽与深度是任意可变的。此外,CPU开辟的Queue空间深度与Queue的数量是任意可变的,CPU开辟的Queue空间的存储介质是任意可变的。并且,命令通道间申请总线的仲裁策略是任意可变的,接收端只需给出能够接收的命令数量,其Memory存储类型与大小是任意可变的。
具体地,首先,CPU分配每个命令通道的地址空间,打开Queue加速模块使能。接着,CPU将需要发送的命令地址写入相应得地址空间中,并更新写指针wptr。然后,硬件装置查询接收端是否能够接收数据,若能够接收则通过仲裁从相应地址空间中自动读取命令地址,若否则进入等待期,不取命令地址。命令地址读取完成后传递给接收模块,并更新读指针rptr。之后再次查询接收端进行命令地址读取操作直至地址取完或硬件装置关闭再推出上述循环操作。
在本实施例中,CPU可同时向不同命令通道下发多个命令地址,交由硬件电路自动读取,减小了CPU与硬件电路的交互,大大提高了命令下发效率。此外,由于命令空间的大小可自由配置,接收端无需使用深度较大的Memory,节约了Memory资源。
在一个实施例中,如图5所示,提供了一种基于Queue结构的可插队命令下发加速方法,该方法在若不需要执行命令插队流程的步骤之后还包括:
步骤502,若不需要执行命令插队流程,则继续判断地址空间中是否存在命令地址;
步骤504,若地址空间中存在命令地址,则硬件装置查询接收端是否能够接收数据;
步骤506,若地址空间中不存在命令地址,则进入等待期不取命令地址。
在本实施例中,提供了一个完整的基于Queue结构的可插队命令下发加速方法,如图8所示,具体包括如下步骤:
1、CPU打开Queue加速装置使能,并分配每个Queue的地址空间。
2、CPU将需要发送的命令地址写入相应得地址空间中,并更新写指针wptr。
3、CPU查询是否需要命令插队。
4、若需要插队,则进入命令插队流程处理,完成后返回步骤3。
5、若否,则硬件查询Queue空间中是否存在命令地址。
6、若Queue空间存在数据,则继续查询接收端是否能够命令地址,跳转至步骤8。
7、若否则进入等待期,不取命令地址,返回步骤3。
8、若能够接收则通过仲裁从相应地址空间中自动读取命令地址,跳转至步骤10。
9、若否则进入等待期,不取命令地址,返回步骤3。
10、命令地址读取完成后传递给接收模块,并更新读指针rptr,完成后返回步骤3。
在本实施例中,通过该方法可到达的效果包括:本方案可以灵活地嵌入到现有的SSD系统中,减轻CPU的工作负担,提高CPU下发命令的工作效率。本方案可以灵活地配置命令存储空间,节约Memory资源。此外,本方案的实现无需作硬件上的改动,只需CPU配置相关的控制寄存器。本方案可以适应任意类型的SoC架构,CPU类型,总线类型,接口类型。
在一个实施例中,如图6所示,提供了一种基于Queue结构的可插队命令下发加速方法,该方法在硬件装置判断是否需要执行命令插队流程的步骤之后还包括:
步骤602,若需要执行命令插队流程,则关闭需要插队的命令通道对应的Queue加速模块使能;
步骤604,当Queue加速模块停止后,将接收端待执行数据全部丢弃并返回flag标志;
步骤606,直接由CPU通过总线向接收端发送需要插队的命令地址。
在本实施例中,若需要执行命令插队流程,则关闭加速模块开启CPU通路。然后,等待Queue加速模块停止后,将接收端待执行数据全部丢弃,并返回flag标志。接着,直接由CPU通过总线向接收端发送需要插队的命令地址。最后,当插队完成后直接重新打开Queue加速模块使能,调节读指针rptr继续下发命令地址。
本实施例通过开启CPU通路,直接由CPU通过总线向接收端发送命令地址实现了可插队命令的加速下发,进一步提高了命令的下发效率。
在一个实施例中,如图7所示,提供了一种基于Queue结构的可插队命令下发加速方法,该方法中直接由CPU通过总线向接收端发送需要插队的命令地址的步骤还包括:
步骤702,CPU查询接收端Memory空间大小;
步骤704,若接收端能够接收全部命令地址,则由CPU通过总线向接收端Memory直接写入插队命令;
步骤706,若接收端不能够接收全部命令地址,则等待接收端Memory空余再执行写入插队命令的步骤;
步骤708,清空命令flag标志,打开Queue加速模块使能以使Queue加速模块重新开始工作。
在本实施例中,提供了一个完整的执行命令插队流程的方法,如图9所示,具体包括如下步骤:
1、CPU关闭需要插队的命令通道对应的Queue加速模块使能。
2、等待硬件装置返回ack信号,表示Queue加速模块已停止工作。
3、接收到ack信号后将接收端Memory中待读取的命令地址全部pop丢弃。
4、将丢弃的所有待执行命令标上flag标志返回给CPU,表示该命令未执行。
5、CPU查询接收端Memory空间大小。
6、CPU通过总线向接收端Memory直接写入插队命令。
7、若插队命令较多,接收端无法接收全部,则返回步骤5。
8、CPU清空命令flag标志,打开Queue加速模块继续。
9、CPU调节Queue空间读指针rptr位置继续进行命令下发。
应该理解的是,虽然图2-9的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-9中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图10所示,提供了一种基于Queue结构的可插队命令下发加速装置1000,该装置包括:
配置模块1001,用于通过CPU配置每个命令通道对应的地址空间,并打开Queue加速模块使能;
命令存储模块1002,用于将需要发送的命令地址写入对应的地址空间中,并更新写指针;
第一判断模块1003,用于通过硬件装置判断是否需要执行命令插队流程;
第一查询模块1004,用于若不需要执行命令插队流程,则硬件装置查询接收端是否能够接收数据;
命令读取模块1005,用于若接收端能够接收数据,则通过仲裁从相应地址空间中自动读取命令地址;
命令写入模块1006,用于待命令地址读取完成后传递给接收模块并更新读指针,再次查询接收端进行命令地址读取操作直至所有地址取完或硬件装置关闭。
在一个实施例中,如图11所示,提供了一种基于Queue结构的可插队命令下发加速装置1000,该装置还包括命令插队模块1007,用于:
若需要执行命令插队流程,则关闭需要插队的命令通道对应的Queue加速模块使能;当Queue加速模块停止后,将接收端待执行数据全部丢弃并返回flag标志;直接由CPU通过总线向接收端发送需要插队的命令地址。
在一个实施例中,如图12所示,提供了一种基于Queue结构的可插队命令下发加速装置1000,该装置还包括第二查询模块1008,用于:
通过CPU查询接收端Memory空间大小;若接收端能够接收全部命令地址,则由CPU通过总线向接收端Memory直接写入插队命令;若接收端不能够接收全部命令地址,则等待接收端Memory空余再执行写入插队命令的步骤;清空命令flag标志,打开Queue加速模块使能以使Queue加速模块重新开始工作。
在一个实施例中,如图13所示,提供了一种基于Queue结构的可插队命令下发加速装置1000,该装置还包括第二判断模块1009,用于:
若不需要执行命令插队流程,则继续判断地址空间中是否存在命令地址;若地址空间中存在命令地址,则硬件装置查询接收端是否能够接收数据;若地址空间中不存在命令地址,则进入等待期不取命令地址。
关于基于Queue结构的可插队命令下发加速装置的具体限定可以参见上文中对于基于Queue结构的可插队命令下发加速方法的限定,在此不再赘述。
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图14所示。该计算机设备包括通过装置总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作装置、计算机程序和数据库。该内存储器为非易失性存储介质中的操作装置和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于Queue结构的可插队命令下发加速方法。
本领域技术人员可以理解,图14中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于Queue结构的可插队命令下发加速方法,其特征在于,所述方法包括:
CPU配置每个命令通道对应的地址空间,并打开Queue加速模块使能;
将需要发送的命令地址写入所述对应的地址空间中,并更新写指针;
硬件装置判断是否需要执行命令插队流程;
若不需要执行命令插队流程,则所述硬件装置查询接收端是否能够接收数据;
若所述接收端能够接收数据,则通过仲裁从相应地址空间中自动读取命令地址;
待所述命令地址读取完成后传递给接收模块并更新读指针,再次查询接收端进行命令地址读取操作直至所有地址取完或所述硬件装置关闭。
2.根据权利要求1所述的基于Queue结构的可插队命令下发加速方法,其特征在于,在所述硬件装置判断是否需要执行命令插队流程的步骤之后还包括:
若需要执行命令插队流程,则关闭需要插队的命令通道对应的Queue加速模块使能;
当所述Queue加速模块停止后,将所述接收端待执行数据全部丢弃并返回flag标志;
直接由CPU通过总线向所述接收端发送需要插队的命令地址。
3.根据权利要求2所述的基于Queue结构的可插队命令下发加速方法,其特征在于,所述直接由CPU通过总线向所述接收端发送需要插队的命令地址的步骤还包括:
CPU查询所述接收端Memory空间大小;
若所述接收端能够接收全部命令地址,则由CPU通过总线向接收端Memory直接写入插队命令;
若所述接收端不能够接收全部命令地址,则等待接收端Memory空余再执行写入插队命令的步骤;
清空命令flag标志,打开Queue加速模块使能以使所述Queue加速模块重新开始工作。
4.根据权利要求1-3任一项所述的基于Queue结构的可插队命令下发加速方法,其特征在于,在所述若不需要执行命令插队流程的步骤之后还包括:
若不需要执行命令插队流程,则继续判断地址空间中是否存在命令地址;
若所述地址空间中存在命令地址,则硬件装置查询接收端是否能够接收数据;
若所述地址空间中不存在命令地址,则进入等待期不取命令地址。
5.一种基于Queue结构的可插队命令下发加速装置,其特征在于,所述装置包括:
配置模块,所述配置模块用于通过CPU配置每个命令通道对应的地址空间,并打开Queue加速模块使能;
命令存储模块,所述命令存储模块用于将需要发送的命令地址写入所述对应的地址空间中,并更新写指针;
第一判断模块,所述第一判断模块用于通过硬件装置判断是否需要执行命令插队流程;
第一查询模块,所述第一查询模块用于若不需要执行命令插队流程,则所述硬件装置查询接收端是否能够接收数据;
命令读取模块,所述命令读取模块用于若所述接收端能够接收数据,则通过仲裁从相应地址空间中自动读取命令地址;
命令写入模块,所述命令写入模块用于待所述命令地址读取完成后传递给接收模块并更新读指针,再次查询接收端进行命令地址读取操作直至所有地址取完或所述硬件装置关闭。
6.根据权利要求5所述的基于Queue结构的可插队命令下发加速装置,其特征在于,所述装置还包括命令插队模块,所述命令插队模块用于:
若需要执行命令插队流程,则关闭需要插队的命令通道对应的Queue加速模块使能;
当所述Queue加速模块停止后,将所述接收端待执行数据全部丢弃并返回flag标志;
直接由CPU通过总线向所述接收端发送需要插队的命令地址。
7.根据权利要求6所述的基于Queue结构的可插队命令下发加速装置,其特征在于,所述装置还包括第二查询模块,所述第二查询模块用于:
通过CPU查询所述接收端Memory空间大小;
若所述接收端能够接收全部命令地址,则由CPU通过总线向接收端Memory直接写入插队命令;
若所述接收端不能够接收全部命令地址,则等待接收端Memory空余再执行写入插队命令的步骤;
清空命令flag标志,打开Queue加速模块使能以使所述Queue加速模块重新开始工作。
8.根据权利要求5-7任一项所述的基于Queue结构的可插队命令下发加速装置,其特征在于,所述装置还包括第二判断模块,所述第二判断模块用于:
若不需要执行命令插队流程,则继续判断地址空间中是否存在命令地址;
若所述地址空间中存在命令地址,则硬件装置查询接收端是否能够接收数据;
若所述地址空间中不存在命令地址,则进入等待期不取命令地址。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910918489.3A CN110659072B (zh) | 2019-09-26 | 2019-09-26 | 基于Queue结构的可插队命令下发加速方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910918489.3A CN110659072B (zh) | 2019-09-26 | 2019-09-26 | 基于Queue结构的可插队命令下发加速方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110659072A true CN110659072A (zh) | 2020-01-07 |
CN110659072B CN110659072B (zh) | 2021-09-14 |
Family
ID=69039315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910918489.3A Active CN110659072B (zh) | 2019-09-26 | 2019-09-26 | 基于Queue结构的可插队命令下发加速方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110659072B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116302620A (zh) * | 2023-05-18 | 2023-06-23 | 珠海星云智联科技有限公司 | 一种支持乱序回写和并行化的命令通道 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101394315A (zh) * | 2008-10-20 | 2009-03-25 | 中兴通讯股份有限公司 | 一种串口多用户操作的方法及其装置 |
US20160117277A1 (en) * | 2014-10-23 | 2016-04-28 | Mellanox Technologies Ltd. | Collaborative hardware interaction by multiple entities using a shared queue |
CN105760306A (zh) * | 2016-03-10 | 2016-07-13 | 上海斐讯数据通信技术有限公司 | 一种命令下发方法、调试方法及系统 |
CN107391400A (zh) * | 2017-06-30 | 2017-11-24 | 中国科学院计算技术研究所 | 一种支持复杂访存指令的内存扩展方法和系统 |
CN108279927A (zh) * | 2017-12-26 | 2018-07-13 | 芯原微电子(上海)有限公司 | 可调整指令优先级的多通道指令控制方法及系统、控制器 |
CN109471824A (zh) * | 2018-11-22 | 2019-03-15 | 青岛方寸微电子科技有限公司 | 基于axi总线的数据传输系统及方法 |
-
2019
- 2019-09-26 CN CN201910918489.3A patent/CN110659072B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101394315A (zh) * | 2008-10-20 | 2009-03-25 | 中兴通讯股份有限公司 | 一种串口多用户操作的方法及其装置 |
US20160117277A1 (en) * | 2014-10-23 | 2016-04-28 | Mellanox Technologies Ltd. | Collaborative hardware interaction by multiple entities using a shared queue |
CN105760306A (zh) * | 2016-03-10 | 2016-07-13 | 上海斐讯数据通信技术有限公司 | 一种命令下发方法、调试方法及系统 |
CN107391400A (zh) * | 2017-06-30 | 2017-11-24 | 中国科学院计算技术研究所 | 一种支持复杂访存指令的内存扩展方法和系统 |
CN108279927A (zh) * | 2017-12-26 | 2018-07-13 | 芯原微电子(上海)有限公司 | 可调整指令优先级的多通道指令控制方法及系统、控制器 |
CN109471824A (zh) * | 2018-11-22 | 2019-03-15 | 青岛方寸微电子科技有限公司 | 基于axi总线的数据传输系统及方法 |
Non-Patent Citations (2)
Title |
---|
SIAVASH REZAEI 等: "Scalable Multi-Queue Data Transfer Scheme for FPGA-Based Multi-Accelerators", 《2018 IEEE 36TH INTERNATIONAL CONFERENCE ON COMPUTER DESIGN (ICCD)》 * |
李训铭 等: "基于FIFO共享RAM的数据采集系统", 《河海大学学报(自然科学版)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116302620A (zh) * | 2023-05-18 | 2023-06-23 | 珠海星云智联科技有限公司 | 一种支持乱序回写和并行化的命令通道 |
CN116302620B (zh) * | 2023-05-18 | 2023-08-18 | 珠海星云智联科技有限公司 | 一种支持乱序回写和并行化的命令通道 |
Also Published As
Publication number | Publication date |
---|---|
CN110659072B (zh) | 2021-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109947362B (zh) | 管理闪存存储器读取操作 | |
US9026744B2 (en) | Enforcing strongly-ordered requests in a weakly-ordered processing | |
KR100913279B1 (ko) | 버스를 통해 메모리 프리패치 명령들을 전송하기 위한 방법 및 장치 | |
US8516163B2 (en) | Hardware-based concurrent direct memory access (DMA) engines on serial rapid input/output SRIO interface | |
US20100005208A1 (en) | Efficient Execution of Memory Barrier Bus Commands | |
EP3335124B1 (en) | Register files for i/o packet compression | |
KR20170121661A (ko) | 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법 | |
WO2013176912A1 (en) | Flash memory controller | |
US20170194039A1 (en) | Semiconductor memory device | |
JP5951844B2 (ja) | 複数のメモリ領域にわたる強順序付けされたデバイス、および排他的トランザクションの自動順序付け | |
US20140304441A1 (en) | Protocol conversion involving multiple virtual channels | |
EP4004753B1 (en) | Programmable network interface device comprising a host computing device and a network interface device | |
CN110659072B (zh) | 基于Queue结构的可插队命令下发加速方法和装置 | |
JP3850375B2 (ja) | Armプロセッサのためのメモリアクセラレータ | |
CN101504567B (zh) | 一种cpu、cpu指令系统及降低cpu功耗的方法 | |
US20070130386A1 (en) | DMA chain | |
US20080126600A1 (en) | Direct memory access device and methods | |
CN106919531B (zh) | 基于非易失性存储总线协议的交互方法及设备 | |
US11385862B2 (en) | Data flow control for multi-chip select | |
KR20130075694A (ko) | 고성능 ahci 인터페이스 | |
US20140149692A1 (en) | Memory controller and operating method of memory controller | |
US9110856B2 (en) | Interface control apparatus, data storage apparatus and method for interface control | |
US8462561B2 (en) | System and method for interfacing burst mode devices and page mode devices | |
US11954367B2 (en) | Active time-based command prioritization in data storage devices | |
JP2012164209A (ja) | キャッシュ制御方法、キャッシュ制御装置およびキャッシュ制御用プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |