CN115269455B - 基于fpga的磁盘数据读写控制方法、装置和存储终端 - Google Patents
基于fpga的磁盘数据读写控制方法、装置和存储终端 Download PDFInfo
- Publication number
- CN115269455B CN115269455B CN202211205432.7A CN202211205432A CN115269455B CN 115269455 B CN115269455 B CN 115269455B CN 202211205432 A CN202211205432 A CN 202211205432A CN 115269455 B CN115269455 B CN 115269455B
- Authority
- CN
- China
- Prior art keywords
- disk
- data
- instruction
- ddr
- fpga
- 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
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000012544 monitoring process Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 11
- 239000000872 buffer Substances 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 230000005971 DNA damage repair Effects 0.000 description 1
- 102000002706 Discoidin Domain Receptors Human genes 0.000 description 1
- 108010043648 Discoidin Domain Receptors Proteins 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/26—Using a specific storage system architecture
- G06F2212/261—Storage comprising a plurality of storage devices
- G06F2212/262—Storage comprising a plurality of storage devices configured as RAID
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请属于存储技术领域,公开一种基于FPGA的磁盘数据读写控制方法、装置和存储终端,该方法包括:在向多路磁盘中存储数据的情况下,通过第一高速总线接收上位机发送的磁盘存储指令和待存储磁盘数据,按照分配的缓存地址将数据缓存于DDR中及将指令缓存于FPGA的FIFO中,其中,每路磁盘在FIFO中分配有一指令缓存空间且在DDR中分配有一数据缓存空间;对缓存的每路指令分别进行指令合并处理,得到合并后的指令;根据每路合并后的指令将DDR中缓存的各路数据通过第二高速总线并行传输到对应路磁盘中。在对多路磁盘的读/写操作时,通过进行数据和指令的缓存及指令的合并、并发等一系列处理,以实现对多路磁盘的高效操作。
Description
技术领域
本申请涉及数据存储技术领域,尤其涉及一种基于FPGA的磁盘数据读写控制方法、装置和存储终端。
背景技术
针对目前市面上的国产磁盘阵列,对于多个磁盘的数据读写操作有一个比较慢的处理速度,通常地,多路磁盘中命令只能对某一路磁盘进行读写处理完成后再对下一路磁盘进行操作,导致直接降低了链路的执行效率。而考虑到同时对多路磁盘的操作需求越来越多,因此,如何提高对如磁盘阵列这种大容量的磁盘的操作效率是非常有必要的。
发明内容
有鉴于此,本申请实施例提供一种基于FPGA的磁盘数据读写控制方法、装置、存储终端和可读存储介质。
第一方面,本申请实施例提供一种基于FPGA的磁盘数据读写控制方法,包括:
在上位机向多路磁盘存储数据的情况下,通过第一高速总线接收上位机发送的磁盘存储指令和待存储磁盘数据,所述磁盘存储指令中包括相应磁盘数据对应分配的DDR缓存地址;
将所述磁盘存储指令对应缓存于FPGA的FIFO模块中,并将所述待存储磁盘数据按照所述DDR缓存地址对应缓存于与FPGA连接的DDR中;其中,每路磁盘在所述FIFO模块中预分配有一指令缓存空间且在所述DDR中预分配有一数据缓存空间;
对缓存的各路磁盘存储指令分别进行指令合并处理,然后根据各路合并后的存储指令,按照所述DDR缓存地址将缓存于所述DDR中的磁盘数据通过第二高速总线并行传输到对应磁盘中进行存储。
在一些实施例中,该磁盘数据读写控制方法还包括:
在上位机从多路磁盘中读取数据的情况下,接收所述上位机下发的至少一个磁盘读取指令配置,所述磁盘读取指令配置中包括为目标磁盘数据对应分配的DDR缓存地址;
将所述至少一个磁盘读取指令配置对应缓存于所述FIFO模块的所述指令缓存空间中;
对缓存的各路磁盘读取指令分别进行指令合并处理,并根据各路所述合并后的读取指令,将对应磁盘中的所述目标磁盘数据通过所述第二高速总线并行缓存于所述DDR中的所述数据缓存空间中,然后将所述DDR中的缓存数据以队列方式通过所述第一高速总线串行传输到所述上位机。
在一些实施例中,该磁盘数据读写控制方法还包括:
每次执行完所述向多路磁盘存储数据或从多路磁盘中读取数据的操作后,通过中断方式通知所述上位机当前任务完成。
在一些实施例中,该磁盘数据读写控制方法还包括:
实时对所述多路磁盘进行状态监控并将得到的监控信息通过所述第一高速总线上传到所述上位机;其中,所述状态监控包括监控每路磁盘的上电状态、拔插状态和读写出错后的复位重新连接中的一种或多种。
在一些实施例中,所述上位机与所述FPGA之间通过PCIE总线连接及通讯;所述FPGA与所述多路磁盘之间通过SATA串行总线连接及通讯。
在一些实施例中,所述FIFO模块中的每个指令缓存空间能够缓存128组指令数据,每组指令数据为72位,其中包括48位的扇区起始地址、16位扇区数量和8位CMD读写指令。
在一些实施例中,当所述指令缓存空间缓存有多条磁盘存储指令或磁盘读取指令时,对缓存的各路指令分别进行指令合并处理,包括:
若前一指令的扇区结束地址等于后一指令的扇区起始地址,则将地址相邻的当前两个指令合并为一条指令。
在一些实施例中,每路磁盘在所述DDR中的所述数据缓存空间包括一读缓存空间和一写缓存空间;
所述写缓存空间用于在数据写操作时,对待写入到相应磁盘的磁盘数据进行缓存;所述读缓存空间用于在数据读操作时,对从相应磁盘中向外读取的磁盘数据进行缓存。
第二方面,本申请实施例还提供一种基于FPGA的磁盘数据读写控制装置,包括:
接收模块,用于在上位机向多路磁盘存储数据的情况下,通过第一高速总线接收上位机发送的磁盘存储指令和待存储磁盘数据,所述磁盘存储指令中包括相应磁盘数据对应分配的DDR缓存地址;
缓存模块,用于将所述磁盘存储指令对应缓存于FPGA的FIFO模块中,并将所述待存储磁盘数据按照所述DDR缓存地址对应缓存于与FPGA连接的DDR中;其中,每路磁盘在所述FIFO模块中预分配有一指令缓存空间且在所述DDR中预分配有一数据缓存空间;
处理模块,用于对缓存的各路磁盘存储指令分别进行指令合并处理,然后根据各路合并后的存储指令,按照所述DDR缓存地址将缓存于所述DDR中的磁盘数据通过第二高速总线并行传输到对应磁盘中进行存储。
第三方面,本申请实施例还提供一种存储终端,所述存储终端包括处理单元和存储单元,所述存储单元存储有计算机程序,所述处理单元用于执行所述计算机程序以实施所述的基于FPGA的磁盘数据读写控制方法。
第四方面,本申请实施例还提供一种可读存储介质,其存储有计算机程序,所述计算机程序在处理器上执行时,实施所述的基于FPGA的磁盘数据读写控制方法。
本申请的实施例具有如下有益效果:
本申请提出的基于FPGA(现场可编程逻辑门阵列)的磁盘数据读写控制方法通过预先设置对应于多路磁盘的数据缓存空间和指令缓存空间,其中,数据缓存空间设于与FPGA连接的DDR(双倍速率同步动态随机存储器)中,指令缓存空间设于FPGA内部的FIFO(先进先出)中,然后利用如PCIE等高速总线连接上位机,以及利用如SATA等高速总线分别连接每路磁盘,以形成磁盘读写的构架;基于该构架,在进多路磁盘的读写操作时,通过进行数据和指令的缓存及指令的合并、并发等一系列处理,以实现对多路磁盘的高效操作。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了现在的CPU读取多路磁盘的方式;
图2示出了本申请实施例基于FPGA的磁盘数据读写控制方法的应用架构;
图3示出了本申请实施例基于FPGA的磁盘数据读写控制方法的FPGA的内部框图;
图4示出了本申请实施例基于FPGA的磁盘数据读写控制方法的第一流程图;
图5示出了本申请实施例基于FPGA的磁盘数据读写控制方法的第二流程图;
图6示出了本申请实施例基于FPGA的磁盘数据读写控制装置的结构示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在下文中,可在本申请的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则这里使用的所有术语(包括技术术语和科学术语)具有与本申请的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本申请的各种实施例中被清楚地限定。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互结合。
图1所示为中央处理器CPU对大容量的磁盘(如机械硬盘HDD、固态硬盘SSD等)进行读写操作的一种架构示例。如图1所示,在进行多路磁盘读写操作时,主要是基于SATA协议来对磁盘进行单路指令控制,也就是图1中的1~6路磁盘将按照当前路磁盘的单条指令执行完毕才能进行下一轮任务,导致速度受限于SATA 总线(如SATA3.0等)的最高传输速度。为此,本申请实施例提出一种基于FPGA平台的磁盘数据读写控制方法,可以最大限度的提升了SATA的传输能力,进而提高大容量磁盘的读写效率等。
图2所示为本申请实施例提出的基于FPGA的磁盘数据读写控制方法的应用架构。通过增加FPGA来实现CPU与多路磁盘之间的数据高效传输,这样不仅可以隔绝上位机系统驱动对磁盘的控制管理,还可以提高磁盘的读写利用率,让多个磁盘可同时工作(即实现并发模式),以进一步减少了读写时间等。
示范性地,利用FPGA的磁盘阵列(RAID)控制功能来实现对磁盘的状态监控,以及读写操作优化等。例如,该状态监控可包括但不限于,监控磁盘的上电或下电状态、拔插状态、及读写出错后的复位重新连接等状态信息中的一种或多种。其中,对数据的读写控制方式,主要是指按照CPU的指令读或者写入某些磁盘固定的数据位置。具体地,该应用架构中包括FPGA模块和DDR模块,其中,FPGA通过第一高速总线连接至上位机,并通过第二高速总线连接大容量磁盘(通常包括多路磁盘),此外,为实现多路磁盘的多指令的并发模式,这里还将利用上位机系统中的DDR模块或额外增加的DDR模块等实现数据的高速缓存预处理,例如,该DDR模块可以为DDR3或DDR4内存结构等,这里不作限定。
例如,在一种实施方式中,上述的第一高速总线为PCI-Express(简写为PCIE)总线;而第二高速总线为SATA串行总线等。可以理解,由于目前的SATA 3.0接口只能满足600MB/s数据传输,满足不了大容量的多个磁盘读写的要求,而PCIE x16 3.0接口理论上可以达到16GB/s的速度,于是,这里将通过PCIE总线到多路SATA总线来提升SATA数据交换的带宽,如图2所示,从而提升磁盘的读写速度。
本实施例中,基于FPGA平台来实现对磁盘数据的高效读写操作,其中,利用FPGA中的内部FIFO来实现指令的合并,并使用与FPGA连接的多个DDR来实现多个指令的并发目的。示范性地,在进行数据读写操作之前,需对FPGA和DDR进行相应预设置,具体地,设置FPGA模块中的XDMA单元通过高速总线来实现与上位机之间的数据交换,如图2所示,以写数据为例,当接收到上位机发送的磁盘存储指令和待存储磁盘数据(通常以数据流形式发送)时,可由FPGA中的RAID控制模块将待存储磁盘数据按照顺序缓存于DDR中,同时将磁盘存储指令对应缓存于FPGA内部的FIFO单元中。同样,在进行读数据时,由RAID控制模块按照顺序将对应的磁盘数据读到DDR中进行缓存等。
值得注意的是,为实现对多路磁盘的多指令并发操作,本实施例还预先设置对应于每路磁盘的数据缓存空间和指令缓存空间。其中,并发模式是指可以对至少两路磁盘同时进行读写操作(即并行操作),利用并发模式可以明显提高磁盘的使用效率。此外,每次读写任务完成后,还可通过中断的方式通知上位机,以减少与上位机交互的次数等。
其中,上述的指令缓存空间设于FPGA内部的FIFO单元中。具体地,一路磁盘设有一个指令缓存空间,如图3所示,当有12路磁盘时,则设有12个指令缓存空间,每个指令缓存空间用于存储该路磁盘的一个或多个指令。在一种实施方式中,这里将设置每个指令缓存空间的大小设为能够缓存128组指令,其中,每组指令包括72位(BIT)数据,其主要由存储扇区起始地址(占48位)、扇区数量(占16位)和CMD读写指令(占8位)构成。每个空间缓存128组指令数据,进而可对这128组指令进行一个合并的处理。当然,上述的具体缓存空间大小及每组指令的位数及其构成等仅为一种可行示例,在实际运用中,可根据实际需求进行适应性调整。
可以理解,通过设置可缓存多达128条指令到FIFO,是因为等量的数据读写时候之前的单次读写会增加与上位机的交互次数,而缓存读写可以将中断的次数减少,从而使单次数据包读写变成多个数据包同时对磁盘进行写或者多个数据包同时读。此外,对于单路磁盘的访问,由于指令进行了FIFO的缓存,可以一次性存上千条指令,进而通过指令合并等可以减少中断次数;另一方面,对于多路磁盘的访问,由于进行了指令并发处理,可以同时触发多路磁盘的读写操作,并根据触发顺序将数据通过高速总线相应传递到上位机。
其中,上述的数据缓存空间则设于DDR模块中,同样,一路磁盘设有一个数据缓存空间,如图3所示,当有12路磁盘时,则可设有12个数据缓存空间,每个数据缓存空间用于存储该路磁盘的数据。在一种实施方式中,每个数据缓存空间包括该路磁盘的读缓存空间和写缓存空间。这样在数据写操作时,由FPGA将待写入至相应磁盘的数据缓存至该写缓存空间中;而在数据读操作时,将从相应路磁盘向外读取的数据缓存至读缓存空间中。
基于上述的数据缓存空间及指令缓存空间的预设置,下面分别以对基于FPGA平台的磁盘的读数据、写数据及状态监控等控制进行说明。
请参照图4,示范性地,该磁盘数据读写控制方法包括以下步骤:
S110,在上位机向多路磁盘存储数据的情况下,通过第一高速总线接收上位机发送的磁盘存储指令和待存储磁盘数据;其中,该磁盘存储指令中包括相应磁盘数据对应分配的DDR缓存地址。
S120,将磁盘存储指令对应缓存于FPGA的FIFO模块中,并将待存储磁盘数据按照所述DDR缓存地址对应缓存于DDR中;其中,每路磁盘在FIFO模块中预分配有一指令缓存空间且在DDR中预分配有一数据缓存空间。
可以理解,每个数据缓存空间具有各自的DDR缓存地址,也就是说,当FPGA得知对应的DDR缓存地址或具体的目标磁盘,便根据预先配置的对应关系,确定对应路数的磁盘或DDR缓存地址。
S130,对缓存的各路磁盘存储指令分别进行指令合并处理,然后根据各路合并后的存储指令,按照所述DDR缓存地址将缓存于DDR中的磁盘数据通过第二高速总线并行传输到对应磁盘中进行存储。
以PCIE总线和SATA总线为例,对于图3所示的12路磁盘,则在DDR中会有对应的12个数据缓存空间与12路磁盘的读与写一一对应,当需要存储数据时,由FPGA的XDMA模块将上位机下发的数据流和存储指令接收进来,进而按照顺序将待存储数据依次缓存到DDR中的相应缓存空间中,而将对应的指令数据(通常为CMD命令)缓存到FPGA的FIFO中的指令缓存空间中,这样最大限度保障了避免每路磁盘数据间的相互干扰。
接着,由FPGA的RAID控制模块将各路磁盘的多个CMD指令进行一轮合并操作,假设当前每路磁盘缓存有4条指令,则判定该4条指令中只要有符合合并规则的就进行合并,得到如图3所示的合并结果。其中,可根据FIFO的深度来相应调整各磁盘缓存的指令数量,上述的4条仅为一种示例,并不作为唯一限定。例如,该合并规则可为,若上一条指令(记为指令1)的扇区结束地址是下一条指令(记为指令2)的扇区起始地址,则将指令1和2进行合并,合并后指令数量将进一步减少,相应地,指令数量的减少会优化FPGA到磁盘的读写次数,进而优化了读写时间,提高读写速度。在指令合并处理之后,则可进一步基于分配的DDR地址进行多路磁盘写指令的触发(图3中的实线表示写数据的方向,虚线表示读数据的方向),从而实现多指令的并行操作。最后,通过中断信号的完成表示可以进行下一轮的写操作。可以理解,进行多个CMD命令的缓存合并和多路磁盘通道同时写入,可以大大提高磁盘的使用效率等。
请参照图5,进一步地,该磁盘数据读写控制方法还包括:
S210,在上位机从多路磁盘中读取数据的情况下,接收上位机下发的至少一个磁盘读取指令配置,该磁盘读取指令配置中包括为目标磁盘数据对应分配的DDR缓存地址。
S220,将该至少一个磁盘读取指令配置对应缓存于FIFO模块的指令缓存空间中。
S230,对缓存的各路磁盘读取指令分别进行指令合并处理,并根据各路合并后的读取指令,将对应磁盘中的目标磁盘数据通过第二高速总线并行缓存于DDR中的所述数据缓存空间中,然后将DDR中的缓存数据以队列方式通过第一高速总线串行传输到上位机。
示范性地,上位机通过PCIE总线进行多个CMD命令配置,然后可通过对缓存的多个指令进行合并处理,并进一步并行触发,以进行多个磁盘的同时触发对应的磁盘进行数据的读操作,通过将每路磁盘的数据按照区分缓存到DDR中,保证了数据的互不干扰,再通过通道数据的处理按照相应地址顺序将DDR数据通过队列的方式通过PCIE总线串行传送到上位机中。
本实施例提出的基于FPGA平台的磁盘数据读写控制方法通过预先设置对应于多路磁盘的数据缓存空间和指令缓存空间,其中,数据缓存空间设于DDR中,指令缓存空间设于FPGA的FIFO中,然后利用如PCIE等高速总线连接上位机,以及利用如SATA等高速总线连接多路磁盘,以形成磁盘读写的构架;基于该构架,在进多路磁盘的读写操作时,通过进行数据和指令的缓存及指令的合并、并发等一系列处理,以实现对多路磁盘的高效操作,加强了FPGA与磁盘的交互深度。
请参照图6,基于上述实施例的方法,本实施例提出一种基于FPGA的磁盘数据读写控制装置100,示范性地,基于FPGA的磁盘数据读写控制装置100包括:
接收模块110,用于在上位机向多路磁盘存储数据的情况下,通过第一高速总线接收上位机发送的磁盘存储指令和待存储磁盘数据,所述磁盘存储指令中包括相应磁盘数据对应分配的DDR缓存地址。
缓存模块120,用于将所述磁盘存储指令对应缓存于FPGA的FIFO模块中,并将所述待存储磁盘数据按照所述DDR缓存地址对应缓存于DDR中;其中,每路磁盘在所述FIFO模块中预分配有一指令缓存空间且在所述DDR中预分配有一数据缓存空间。
处理模块130,用于对缓存的各路磁盘存储指令分别进行指令合并处理,然后根据各路合并后的存储指令,按照所述DDR缓存地址将缓存于所述DDR中的磁盘数据通过第二高速总线并行传输到对应磁盘中进行存储。
进一步地,接收模块110还用于在上位机从多路磁盘中读取数据的情况下,接收所述上位机下发的至少一个磁盘读取指令配置,所述磁盘读取指令配置中包括为目标磁盘数据对应分配的DDR缓存地址;缓存模块120还用于将所述至少一个磁盘读取指令配置对应缓存于所述FIFO模块的所述指令缓存空间中;处理模块130还用于对缓存的各路磁盘读取指令分别进行指令合并处理,并根据各路所述合并后的读取指令,将对应磁盘中的所述目标磁盘数据通过所述第二高速总线并行缓存于所述DDR中的所述数据缓存空间中,然后将所述DDR中的缓存数据以队列方式通过所述第一高速总线串行传输到所述上位机。
可以理解,本实施例的装置对应于上述实施例的方法,上述实施例中的可选项同样适用于本实施例,故在此不再重复描述。
本申请还提供了一种存储终端,如硬盘等,示范性地,该存储终端包括处理器和存储器,其中,存储器存储有计算机程序,处理器通过运行所述计算机程序,从而使计算机执行上述的磁盘数据读写控制方法或者上述磁盘数据读写控制装置中的各个模块的功能。
本申请还提供了一种可读存储介质,用于储存上述计算机中使用的所述计算机程序。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (8)
1.一种基于FPGA的磁盘数据读写控制方法,其特征在于,包括:
在上位机向多路磁盘存储数据的情况下,通过第一高速总线接收上位机发送的磁盘存储指令和待存储磁盘数据,所述磁盘存储指令中包括相应磁盘数据对应分配的DDR缓存地址;
将所述磁盘存储指令对应缓存于FPGA的FIFO模块中,并将所述待存储磁盘数据按照所述DDR缓存地址对应缓存于与FPGA连接的DDR中;其中,每路磁盘在所述FIFO模块中预分配有一指令缓存空间且在所述DDR中预分配有一数据缓存空间;所述数据缓存空间包括一读缓存空间和一写缓存空间;所述写缓存空间用于在数据写操作时,对待写入到相应磁盘的磁盘数据进行缓存;所述读缓存空间用于在数据读操作时,对从相应磁盘中向外读取的磁盘数据进行缓存;
对缓存的各路磁盘存储指令分别进行指令合并处理,然后根据各路合并后的存储指令,按照所述DDR缓存地址将缓存于所述DDR中的磁盘数据通过第二高速总线并行传输到对应磁盘中进行存储;其中,所述第一高速总线为PCIE总线;所述第二高速总线为SATA串行总线。
2.根据权利要求1所述的基于FPGA的磁盘数据读写控制方法,其特征在于,还包括:
在上位机从多路磁盘中读取数据的情况下,接收所述上位机下发的至少一个磁盘读取指令配置,所述磁盘读取指令配置中包括为目标磁盘数据对应分配的DDR缓存地址;
将所述至少一个磁盘读取指令配置对应缓存于所述FIFO模块的所述指令缓存空间中;
对缓存的各路磁盘读取指令分别进行指令合并处理,并根据各路所述合并后的读取指令,将对应磁盘中的所述目标磁盘数据通过所述第二高速总线并行缓存于所述DDR中的所述数据缓存空间中,然后将所述DDR中的缓存数据以队列方式通过所述第一高速总线串行传输到所述上位机。
3.根据权利要求2所述的基于FPGA的磁盘数据读写控制方法,其特征在于,还包括:
每次执行完所述向多路磁盘存储数据或从多路磁盘中读取数据的操作后,通过中断方式通知所述上位机当前任务完成;
和/或,实时对所述多路磁盘进行状态监控并将得到的监控信息通过所述第一高速总线上传到所述上位机;其中,所述状态监控包括监控每路磁盘的上电状态、拔插状态和读写出错后的复位重新连接中的一种或多种。
4.根据权利要求2所述的基于FPGA的磁盘数据读写控制方法,其特征在于,所述FIFO模块中的每个指令缓存空间能够缓存128组指令,每组指令为72位,其中包括48位的扇区起始地址、16位扇区数量和8位CMD读写指令。
5.根据权利要求4所述的基于FPGA的磁盘数据读写控制方法,其特征在于,当所述指令缓存空间缓存有多条磁盘存储指令或磁盘读取指令时,对缓存的各路指令分别进行指令合并处理,包括:
若前一指令的扇区结束地址等于后一指令的扇区起始地址,则将地址相邻的当前两个指令合并为一条指令。
6.一种基于FPGA的磁盘数据读写控制装置,其特征在于,包括:
接收模块,用于在上位机向多路磁盘存储数据的情况下,通过第一高速总线接收上位机发送的磁盘存储指令和待存储磁盘数据,所述磁盘存储指令中包括相应磁盘数据对应分配的DDR缓存地址;
缓存模块,用于将所述磁盘存储指令对应缓存于FPGA的FIFO模块中,并将所述待存储磁盘数据按照所述DDR缓存地址对应缓存于与FPGA连接的DDR中;其中,每路磁盘在所述FIFO模块中预分配有一指令缓存空间且在所述DDR中预分配有一数据缓存空间;所述数据缓存空间包括一读缓存空间和一写缓存空间;所述写缓存空间用于在数据写操作时,对待写入到相应磁盘的磁盘数据进行缓存;所述读缓存空间用于在数据读操作时,对从相应磁盘中向外读取的磁盘数据进行缓存;
处理模块,用于对缓存的各路磁盘存储指令分别进行指令合并处理,然后根据各路合并后的存储指令,按照所述DDR缓存地址将缓存于所述DDR中的磁盘数据通过第二高速总线并行传输到对应磁盘中进行存储;其中,所述第一高速总线为PCIE总线;所述第二高速总线为SATA串行总线。
7.一种存储终端,其特征在于,所述存储终端包括处理单元和存储单元,所述存储单元存储有计算机程序,所述处理单元用于执行所述计算机程序以实施权利要求1-5中任一项所述的基于FPGA的磁盘数据读写控制方法。
8.一种可读存储介质,其特征在于,其存储有计算机程序,所述计算机程序在处理器上执行时,实施根据权利要求1-5中任一项所述的基于FPGA的磁盘数据读写控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211205432.7A CN115269455B (zh) | 2022-09-30 | 2022-09-30 | 基于fpga的磁盘数据读写控制方法、装置和存储终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211205432.7A CN115269455B (zh) | 2022-09-30 | 2022-09-30 | 基于fpga的磁盘数据读写控制方法、装置和存储终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115269455A CN115269455A (zh) | 2022-11-01 |
CN115269455B true CN115269455B (zh) | 2022-12-23 |
Family
ID=83758097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211205432.7A Active CN115269455B (zh) | 2022-09-30 | 2022-09-30 | 基于fpga的磁盘数据读写控制方法、装置和存储终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115269455B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719755B (zh) * | 2023-08-10 | 2023-11-07 | 浪潮电子信息产业股份有限公司 | 一种多应用内存访问的方法、装置、设备 |
CN117742793A (zh) * | 2023-11-01 | 2024-03-22 | 上海合芯数字科技有限公司 | 数据缓存指令的指令合并电路、方法及芯片 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1038367A (zh) * | 1988-03-31 | 1989-12-27 | 横河电机株式会社 | 图形显示系统 |
US5826057A (en) * | 1992-01-16 | 1998-10-20 | Kabushiki Kaisha Toshiba | Method for managing virtual address space at improved space utilization efficiency |
US6415355B1 (en) * | 1998-05-11 | 2002-07-02 | Kabushiki Kaisha Toshiba | Combined disk array controller and cache control method for parity generation mode and data restoration mode |
CN1434936A (zh) * | 1999-12-22 | 2003-08-06 | 西加特技术有限责任公司 | 用于管理将数据转移入和转移出磁盘驱动器中缓冲器的缓冲器管理系统 |
JP2011129202A (ja) * | 2009-12-17 | 2011-06-30 | Sony Corp | 記録再生装置及び書込制御方法 |
CN103150136A (zh) * | 2013-03-25 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 基于ssd的大容量缓存中的lru策略实现方法 |
CN105893319A (zh) * | 2014-12-12 | 2016-08-24 | 上海芯豪微电子有限公司 | 一种多车道/多核系统和方法 |
CN106844249A (zh) * | 2016-12-06 | 2017-06-13 | 中国电子科技集团公司第三十二研究所 | 基于RapidIO总线的RAID存储系统及方法 |
CN106933542A (zh) * | 2017-03-31 | 2017-07-07 | 中国核动力研究设计院 | 一种用于核电厂dcs系统的基于fpga的dma协处理器及方法 |
CN108255420A (zh) * | 2017-12-22 | 2018-07-06 | 深圳忆联信息系统有限公司 | 一种固态硬盘缓存管理方法及固态硬盘 |
CN108733312A (zh) * | 2017-04-17 | 2018-11-02 | 伊姆西Ip控股有限责任公司 | 存储管理方法和设备 |
CN113791994A (zh) * | 2021-11-17 | 2021-12-14 | 南京芯驰半导体科技有限公司 | 一种基于AXI协议wrap访问的DDR控制器及处理方法 |
CN113867801A (zh) * | 2021-09-30 | 2021-12-31 | 上海壁仞智能科技有限公司 | 指令缓存、指令缓存组及其请求合并方法 |
CN114721590A (zh) * | 2022-03-11 | 2022-07-08 | 成都储迅科技有限责任公司 | 一种基于硬件的固态硬盘读命令自动整合的方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8352633B2 (en) * | 2009-06-22 | 2013-01-08 | Citrix Systems, Inc. | Systems and methods of state migration in a multi-core system |
US10083035B2 (en) * | 2013-07-15 | 2018-09-25 | Texas Instruments Incorporated | Dual data streams sharing dual level two cache access ports to maximize bandwidth utilization |
US10567285B2 (en) * | 2017-03-17 | 2020-02-18 | Citrix Systems, Inc. | Increasing QoS throughput and efficiency through lazy byte batching |
US10387162B2 (en) * | 2017-09-20 | 2019-08-20 | International Business Machines Corporation | Effective address table with multiple taken branch handling for out-of-order processors |
-
2022
- 2022-09-30 CN CN202211205432.7A patent/CN115269455B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1038367A (zh) * | 1988-03-31 | 1989-12-27 | 横河电机株式会社 | 图形显示系统 |
US5826057A (en) * | 1992-01-16 | 1998-10-20 | Kabushiki Kaisha Toshiba | Method for managing virtual address space at improved space utilization efficiency |
US6415355B1 (en) * | 1998-05-11 | 2002-07-02 | Kabushiki Kaisha Toshiba | Combined disk array controller and cache control method for parity generation mode and data restoration mode |
CN1434936A (zh) * | 1999-12-22 | 2003-08-06 | 西加特技术有限责任公司 | 用于管理将数据转移入和转移出磁盘驱动器中缓冲器的缓冲器管理系统 |
JP2011129202A (ja) * | 2009-12-17 | 2011-06-30 | Sony Corp | 記録再生装置及び書込制御方法 |
CN103150136A (zh) * | 2013-03-25 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 基于ssd的大容量缓存中的lru策略实现方法 |
CN105893319A (zh) * | 2014-12-12 | 2016-08-24 | 上海芯豪微电子有限公司 | 一种多车道/多核系统和方法 |
CN106844249A (zh) * | 2016-12-06 | 2017-06-13 | 中国电子科技集团公司第三十二研究所 | 基于RapidIO总线的RAID存储系统及方法 |
CN106933542A (zh) * | 2017-03-31 | 2017-07-07 | 中国核动力研究设计院 | 一种用于核电厂dcs系统的基于fpga的dma协处理器及方法 |
CN108733312A (zh) * | 2017-04-17 | 2018-11-02 | 伊姆西Ip控股有限责任公司 | 存储管理方法和设备 |
CN108255420A (zh) * | 2017-12-22 | 2018-07-06 | 深圳忆联信息系统有限公司 | 一种固态硬盘缓存管理方法及固态硬盘 |
CN113867801A (zh) * | 2021-09-30 | 2021-12-31 | 上海壁仞智能科技有限公司 | 指令缓存、指令缓存组及其请求合并方法 |
CN113791994A (zh) * | 2021-11-17 | 2021-12-14 | 南京芯驰半导体科技有限公司 | 一种基于AXI协议wrap访问的DDR控制器及处理方法 |
CN114721590A (zh) * | 2022-03-11 | 2022-07-08 | 成都储迅科技有限责任公司 | 一种基于硬件的固态硬盘读命令自动整合的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115269455A (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115269455B (zh) | 基于fpga的磁盘数据读写控制方法、装置和存储终端 | |
CN100580639C (zh) | 用于控制对具有存储器集线器体系结构的存储模块的存储器存取的方法和系统 | |
US7412571B2 (en) | Memory arbitration system and method having an arbitration packet protocol | |
CN110309088B (zh) | Zynq fpga芯片及其数据处理方法、存储介质 | |
US11169743B2 (en) | Energy management method and apparatus for processing a request at a solid state drive cluster | |
US20060047891A1 (en) | System and method for transmitting data packets in a computer system having a memory hub architecture | |
CN110781120B (zh) | 一种axi总线主机设备跨4kb传输的实现方法 | |
JPH11203201A (ja) | キャッシュメモリの配置方法およびデータ記憶システム | |
CN112199309B (zh) | 基于dma引擎的数据读取方法、装置和数据传输系统 | |
CN113590528A (zh) | 基于hp接口的多通道数据采集存储回放卡、系统及方法 | |
CN114546913A (zh) | 一种基于pcie接口的多主机之间数据高速交互的方法和装置 | |
US20050076162A1 (en) | Information processing device and method | |
CN108132760A (zh) | 一种提升ssd读性能的方法及系统 | |
CN101645058B (zh) | 命令处理方法、命令发送方法、装置及系统 | |
US20110202716A1 (en) | Storage system and data writing method | |
CN115481048A (zh) | 一种内存系统及芯片 | |
CN114706531A (zh) | 数据处理方法、装置、芯片、设备及介质 | |
CN114286989B (zh) | 一种固态硬盘混合读写的实现方法以及装置 | |
US20070083708A1 (en) | Controller of redundant arrays of independent disks and operation method thereof | |
CN103809920A (zh) | 一种超大容量固态硬盘的实现方法 | |
US6718402B1 (en) | Method and system for persistent unit attention in a fibre channel storage router | |
WO2014077821A1 (en) | A multi-channel storage system supporting a multi-command protocol | |
US20060277326A1 (en) | Data transfer system and method | |
CN116627880B (zh) | 一种支持RAID加速的PCIe Switch及其RAID加速方法 | |
JP2786175B2 (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 |