CN110083571B - 一种分布式实时存储装置及其数据传输方法 - Google Patents
一种分布式实时存储装置及其数据传输方法 Download PDFInfo
- Publication number
- CN110083571B CN110083571B CN201910240022.8A CN201910240022A CN110083571B CN 110083571 B CN110083571 B CN 110083571B CN 201910240022 A CN201910240022 A CN 201910240022A CN 110083571 B CN110083571 B CN 110083571B
- Authority
- CN
- China
- Prior art keywords
- dma
- data
- real
- buffer
- semaphore
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- 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)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种分布式实时存储装置,其组成部分包括一颗桥接片上系统(SOC)芯片和一块或者多块固态硬盘,可以作为一个实时存储设备单独使用,也可以采用多个分布式实时存储装置连接一个中心存储控制系统,构成一个分布式并行存储装置。其传输方法为:外部数据流在可编程逻辑经过三级缓存,并通过AXI接口以DMA的方式与ARM多核处理器进行通信;ARM多核处理器采用实时Linux操作系统,DMA驱动位于实时Linux操作系统的内核态,固态硬盘接口驱动位于实时Linux操作系统用户态;ARM多核处理器上的实时Linux操作系统运行了三个线程实现数据传输。本发明通过上层协议完成实时大容量高带宽数据的分布式并行存储,无需开发底层的硬盘控制程序,降低了开发难度,提高了灵活性和可扩展性。
Description
技术领域
本发明涉及运用到通信和雷达设备以及相关测试设备的高性能存储的技术领域,具体为一种分布式实时存储装置及其数据传输方法。
背景技术
随着半导体技术和信号处理技术的发展,通信、雷达设备以及相关测试设备所采用的信号的带宽、采样率和精度越来越高,当需要记录原始的信号的时候时,需要实时存储TB级别的数据,存取带宽高达数GB/s。采用商用的服务器存储设备虽然容量和带宽能够满足要求,但是往往满足不了实时性、定制化和灵活性的要求。目前采用的方法主要包括改造商用的服务器存储设备和采用FPGA开发底层的SATA接口用于挂载多块固态硬盘。
现有的方案存在以下不足:
1)采用改造商用的服务器存储设备的方法,实时性和灵活性往往不能满足要求;
2)采用FPGA开发底层的SATA接口用于挂载多块固态硬盘的方法开发周期长、灵活性、可扩展性差。
鉴于现有方案的以上不足和限制,有必要发明一种易于实现、灵活性好、扩展性强的实时存储装置,以满足通信、雷达设备以及相关测试设备的大带宽大容量数据的分布式实时存储的需求。
发明内容
本发明所要解决的技术问题是提高大带宽大容量数据的分布式实时存储设备的可设计性、灵活性和扩展性,本发明提供了一种分布式实时存储装置及其数据传输方法。为此,本发明采用如下技术方案:
一方面,本发明提供了一种分布式实时存储装置,包括以下两个组成部分:
1-a)一颗桥接片上系统(SOC)芯片,用作外部主机和固态硬盘之间的存储数据桥接;
所述外部主机,可以是上位机,所述上位机直接将实时存储装置作为独立的存储设备使用;也可以是一个分布式并行存储系统的一个中心控制设备,通过中心控制设备管理多个实时存储装置,构成一个大型的分布式实时存储系统;
所述桥接片上系统芯片,内部包括ARM多核处理器和可编程逻辑电路;所述可编程逻辑电路被配置成的部分包括:连接主控片上系统内的可编程逻辑的高速数据接口和芯片内ARM处理器的内部接口;
1-b)一块或者多块固态硬盘,分别连接到所述桥接片上系统,用作数据存储载体;
所述一块或者多块固态硬件,在桥接片上系统的存储器控制器的控制下存储数据;当存在多块固态硬盘时相互之间可以工作在负荷分担、主备用、多模表决模式。
可选的,所述分布式实时存储装置可以作为一个实时存储设备单独使用,也可以采用多个分布式实时存储装置连接一个中心存储控制系统,构成一个分布式并行存储装置。
另一方面,本发明提供了一种分布式实时存储装置的数据传输方法,外部数据流在可编程逻辑经过三级缓存,并通过AXI接口以DMA的方式与ARM多核处理器进行通信;ARM多核处理器采用实时Linux操作系统,DMA驱动位于实时Linux操作系统的内核态,固态硬盘接口驱动位于实时Linux操作系统用户态;包括多级缓存、DMA传输、内核态DMA驱动设计均是为了保证实时传输大带宽的数据;
所述的三级缓存包括外部串行高速接口缓冲区、大容量大带宽DDR缓冲区和AXI接口的DMA传输缓冲区。
可选的,ARM多核处理器上的实时Linux操作系统运行了三个线程,分别是运行于内核态的实时DMA传输线程和数据块缓冲线程,以及运行于用户态的固态硬盘读写线程。
可选的,所述三个线程,在外部主机向固态硬盘存入数据的时候,其工作流程为:
5-a)实时DMA传输线程开启后,控制可编程逻辑将数据以DMA方式传输至ARM多核处理器上实时Linux操作系统内核态的DMA乒乓缓冲区;DMA启动之后,线程处于阻塞状态,直到DMA传输完成中断到达;然后进一步阻塞直到DDR写缓冲区准备好信号量到达;最后完成DMA乒乓缓冲区的乒乓切换,向数据块缓冲线程发送DMA读缓冲区数据准备好信号量,并启动下一次DMA传输;
5-b)数据块缓冲线程开启后,首先向实时DMA传输线程给出DDR写缓冲区准备好的信号量;然后处于阻塞状态,等待DMA读缓冲区准备好的信号量到达;DMA读缓冲区准备好的信号量到达后,开始读取位于内核态的DMA缓冲区的数据到位于用户态的DDR乒乓缓冲区,并且循环多次读取DMA缓冲区直到把DDR写缓冲区写满;写满后,线程进入阻塞,直到固态硬盘准备好信号量到达,进而完成DDR乒乓缓冲区的乒乓切换后向固态硬盘读写线程发出DDR读缓冲区数据准备好信号量;
5-c)固态硬盘读写线程开启后,向数据块缓冲线程发送固态硬盘准备好信号量,并阻塞以等待DDR读缓冲区数据准备好信号量;信号量到达后,开始读取DDR缓冲区数据并写入固态硬盘;完成后,循环执行以完成数据存储。
5-d)线程间使用信号量通信,线程间的缓冲区切换通过阻塞方式完成。用户态的DDR缓冲区远大于内核态的DMA缓冲区,以达到降低对于用户态的实时性需求的目的。
可选的,所述三个线程,在外部主机从固态硬盘读取数据的时候,其工作流程为:
6-a)固态硬盘读写线程启动后,ARM多核处理器将数据从固态硬盘读取至实时Linux操作系统用户态的DDR乒乓缓冲区;直到其中一个缓冲区写满后,线程阻塞以等待DDR读缓冲区读空的信号量;该信号量到达后,完成DDR乒乓缓冲区的乒乓切换,向数据块缓冲线程发送DDR读缓冲区数据准备好信号量,并启动另一个DDR缓冲区数据的读取;
6-b)数据块缓冲线程启动后,首先向固态硬盘读写线程发送DDR读缓冲区读空的信号量;然后阻塞以等待DDR读缓冲区准备好的信号量;该信号量到达后,将位于实时Linux操作系统用户态的DMA乒乓缓冲区数据搬移到位于内核态的DMA乒乓缓冲区;写满DMA乒乓缓冲区中的一个的时候,线程阻塞,直到DMA传输可用信号量到达,然后完成DMA乒乓缓冲区的乒乓切换,进而向实时DMA传输线程发送DMA读缓冲区数据准备好信号量;多次完成DMA缓冲区写入直到一个DDR缓冲区的数据读取完成,然后循环读取另一个DDR缓冲区数据;
6-c)实时DMA传输线程开启后,线程阻塞以等待DMA读缓冲区数据准备好信号量;信号量到达后,启动DMA传输将DMA缓冲区数据写入可编程逻辑;DMA传输启动后,线程阻塞直到DMA传输完成中断到达,然后又再一次阻塞直到DMA读缓冲区准备好信号量到达后开启新的一次DMA传输。
6-d)线程间使用信号量通信,线程间的缓冲区切换通过阻塞方式完成。用户态的DDR缓冲区远大于内核态的DMA缓冲区,以达到降低对于用户态的实时性需求的目的。
本发明的有益效果是:本发明利用桥接片上系统(SOC)的硬盘控制器接口,通过上层协议完成实时大容量高带宽数据的并行存储,无需开发底层的硬盘控制程序,降低了开发难度,提高了灵活性和可扩展性;本发明利用片上系统将传输数据进行拆分,数据拆分的方法可以是负荷分担、主备用和多模表决,以满足不同的需求;本发明包括多级缓存、DMA传输、内核态DMA驱动设计保证了实时传输大带宽的数据。
附图说明
图1为本发明所述分布式实时存储装置的组成框图。
图2为本发明所述分布式实时存储装置用作独立的实时存储设备。
图3为本发明所述分布式实时存储装置用作分布式并行实时存储设备。
图4为本发明所述分布式实时存储装置的数据存入线程管理。
图5为本发明所述分布式实时存储装置的数据读取线程管理。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为所发明的分布式实时存储装置的一个实例的组成框图,其硬件组成包括一颗桥接片上系统(SOC)芯片11和多块固态硬盘14~15。桥接片上系统11可以采用ZynqUltraScale+ MPSOC等具有可编程逻辑111和包含外部固态硬盘(SATA SSD)接口的多核ARM处理器112的SOC。固态硬盘选用市面上的商用SATA接口固态硬盘。桥接片上系统用作外部主机和固态硬盘之间的存储数据桥接;而所述外部主机,即可以是最终的上位机,该上位机直接将实时存储装置作为独立的存储设备使用;也可以是一个分布式并行存储系统的一个中心控制设备,通过中心控制设备管理多个实时存储装置,构成一个大型的分布式实时存储系统。
桥接片上系统芯片11,内部包括ARM多核处理器112和可编程逻辑电路111;可编程逻辑电路被配置成的部分包括:连接主控片上系统内的可编程逻辑的高速数据接口和芯片内ARM处理器的内部接口;
一块或者多块固态硬盘14~15,分别连接到所述桥接片上系统,用作数据存储载体;这些固态硬盘在桥接片上系统的固态硬盘控制器的控制下存储数据;当存在多块固态硬盘时相互之间可以工作在负荷分担、主备用、多模表决等模式。
如图2所示,图1所示分布式实时存储装置212在一个外部主机211控制下工作,整体构成一个实时存储设备21单独使用;也可以如图3所示采用多个分布式实时存储装置312~314连接一个中心存储控制设备311,整体构成一个分布式并行实时存储装置31。
图1所述分布式实时存储装置的外部数据流在可编程逻辑经过三级缓存,即外部串行高速接口缓冲区1111、大容量大带宽DDR缓冲区12和AXI接口的DMA传输缓冲区1113,进而通过AXI接口以DMA的方式1114与ARM多核处理器进行通信。ARM多核处理器112运行实时Linux操作系统,DMA驱动1121位于实时Linux操作系统的内核态,固态硬盘接口驱动1122位于实时Linux操作系统用户态。包括多级缓存、DMA传输、内核态DMA驱动等设计均是为了保证实时传输大带宽的数据。
为了完成数据读写功能,所述分布式实时存储装置在ARM多核处理器112上的实时Linux操作系统运行了三个线程,分别是运行于内核态的实时DMA传输线程和数据块缓冲线程,以及运行于用户态的固态硬盘读写线程。
如图4所示,所述三个线程,在外部主机向固态硬盘存入数据的时候,其工作流程为:
1-a)实时DMA传输线程开启后,控制可编程逻辑111将数据以DMA方式传输至ARM多核处理器上实时Linux操作系统内核态的DMA乒乓缓冲区(位于13);DMA启动之后,线程处于阻塞状态,直到DMA传输完成中断到达;然后进一步阻塞直到DDR写缓冲区准备好信号量到达;最后完成DMA乒乓缓冲区的乒乓切换,向数据块缓冲线程发送DMA读缓冲区数据准备好信号量,并启动下一次DMA传输;
1-b)数据块缓冲线程开启后,首先向实时DMA传输线程给出DDR写缓冲区准备好的信号量;然后处于阻塞状态,等待DMA读缓冲区准备好的信号量到达;DMA读缓冲区准备好的信号量到达后,开始读取位于内核态的DMA缓冲区的数据到位于用户态的DDR乒乓缓冲区(位于13),并且循环多次读取DMA缓冲区直到把DDR写缓冲区写满;写满后,线程进入阻塞,直到固态硬盘准备好信号量到达,进而完成DDR乒乓缓冲区的乒乓切换后向固态硬盘读写线程发出DDR读缓冲区数据准备好信号量;
1-c)固态硬盘读写线程开启后,向数据块缓冲线程发送固态硬盘准备好信号量,并阻塞以等待DDR读缓冲区数据准备好信号量;信号量到达后,开始读取DDR缓冲区数据并写入固态硬盘14~15;完成后,循环执行以完成数据存储。
如图5所示,所述三个线程,在外部主机从固态硬盘读取数据的时候,其工作流程为:
2-a)固态硬盘读写线程启动后,ARM多核处理器11将数据从固态硬盘14~15读取至实时Linux操作系统用户态的DDR乒乓缓冲区(位于13);直到其中一个缓冲区写满后,线程阻塞以等待DDR读缓冲区读空的信号量;该信号量到达后,完成DDR乒乓缓冲区的乒乓切换,向数据块缓冲线程发送DDR读缓冲区数据准备好信号量,并启动另一个DDR缓冲区数据的读取;
2-b)数据块缓冲线程启动后,首先向固态硬盘读写线程发送DDR读缓冲区读空的信号量;然后阻塞以等待DDR读缓冲区准备好的信号量;该信号量到达后,将位于实时Linux操作系统用户态的DMA乒乓缓冲区(位于13)数据搬移到位于内核态的DMA乒乓缓冲区(位于13);写满DMA乒乓缓冲区中的一个的时候,线程阻塞,直到DMA传输可用信号量到达,然后完成DMA乒乓缓冲区的乒乓切换,进而向实时DMA传输线程发送DMA读缓冲区数据准备好信号量;多次完成DMA缓冲区写入直到一个DDR缓冲区的数据读取完成,然后循环读取另一个DDR缓冲区数据;
2-c)实时DMA传输线程开启后,线程阻塞以等待DMA读缓冲区数据准备好信号量;信号量到达后,启动DMA传输将DMA缓冲区数据写入可编程逻辑1111;DMA传输启动后,线程阻塞直到DMA传输完成中断到达,然后又再一次阻塞直到DMA读缓冲区准备好信号量到达后开启新的一次DMA传输。
在上述从固态硬盘读、写数据的多线程工作中,线程间使用信号量通信,线程间的缓冲区切换通过阻塞方式完成。用户态的DDR缓冲区远大于内核态的DMA缓冲区,以达到降低对于用户态的实时性需求的目的。
应当理解的是,以上所述从具体实施例的角度对本发明的技术内容进一步地披露,其目的在于让大家更容易了解本发明的内容,但不代表本发明的实施方式和权利保护局限于此。本发明保护范围阐明于所附权利要求书中,凡是在本发明的宗旨之内的显而易见的修改,亦应归于本发明的保护之内。
Claims (3)
1.一种分布式实时存储装置,其特征在于,包括以下两个组成部分:
1-a)一颗桥接片上系统(SOC)芯片,用作外部主机和固态硬盘之间的存储数据桥接;
所述外部主机,可以是上位机,所述上位机直接将实时存储装置作为独立的存储设备使用;也可以是一个分布式并行存储系统的一个中心控制设备,通过中心控制设备管理多个实时存储装置,构成一个大型的分布式实时存储系统;
所述桥接片上系统芯片,内部包括ARM多核处理器和可编程逻辑电路;
1-b)一块或者多块固态硬盘,分别连接到所述桥接片上系统,用作数据存储载体;
所述一块或者多块固态硬件,在桥接片上系统的存储器控制器的控制下存储数据;当存在多块固态硬盘时相互之间可以工作在负荷分担、主备用、多模表决模式;
ARM多核处理器上的实时Linux操作系统运行了三个线程,分别是运行于内核态的实时DMA传输线程和数据块缓冲线程,以及运行于用户态的固态硬盘读写线程;
所述三个线程,在外部主机向固态硬盘存入数据的时候,其工作流程为:
5-a)实时DMA传输线程开启后,控制可编程逻辑将数据以DMA方式传输至ARM多核处理器上实时Linux操作系统内核态的DMA乒乓缓冲区;DMA启动之后,线程处于阻塞状态,直到DMA传输完成中断到达;然后进一步阻塞直到DDR写缓冲区准备好信号量到达;最后完成DMA乒乓缓冲区的乒乓切换,向数据块缓冲线程发送DMA读缓冲区数据准备好信号量,并启动下一次DMA传输;
5-b)数据块缓冲线程开启后,首先向实时DMA传输线程给出DDR写缓冲区准备好的信号量;然后处于阻塞状态,等待DMA读缓冲区准备好的信号量到达;DMA读缓冲区准备好的信号量到达后,开始读取位于内核态的DMA缓冲区的数据到位于用户态的DDR乒乓缓冲区,并且循环多次读取DMA缓冲区直到把DDR写缓冲区写满;写满后,线程进入阻塞,直到固态硬盘准备好信号量到达,进而完成DDR乒乓缓冲区的乒乓切换后向固态硬盘读写线程发出DDR读缓冲区数据准备好信号量;
5-c)固态硬盘读写线程开启后,向数据块缓冲线程发送固态硬盘准备好信号量,并阻塞以等待DDR读缓冲区数据准备好信号量;信号量到达后,开始读取DDR缓冲区数据并写入固态硬盘;完成后,循环执行以完成数据存储;
5-d)线程间使用信号量通信,线程间的缓冲区切换通过阻塞方式完成;用户态的DDR缓冲区远大于内核态的DMA缓冲区,以达到降低对于用户态的实时性需求的目的;
所述三个线程,在外部主机从固态硬盘读取数据的时候,其工作流程为:
6-a)固态硬盘读写线程启动后,ARM多核处理器将数据从固态硬盘读取至实时Linux操作系统用户态的DDR乒乓缓冲区;直到其中一个缓冲区写满后,线程阻塞以等待DDR读缓冲区读空的信号量;该信号量到达后,完成DDR乒乓缓冲区的乒乓切换,向数据块缓冲线程发送DDR读缓冲区数据准备好信号量,并启动另一个DDR缓冲区数据的读取;
6-b)数据块缓冲线程启动后,首先向固态硬盘读写线程发送DDR读缓冲区读空的信号量;然后阻塞以等待DDR读缓冲区准备好的信号量;该信号量到达后,将位于实时Linux操作系统用户态的DMA乒乓缓冲区数据搬移到位于内核态的DMA乒乓缓冲区;写满DMA乒乓缓冲区中的一个的时候,线程阻塞,直到DMA传输可用信号量到达,然后完成DMA乒乓缓冲区的乒乓切换,进而向实时DMA传输线程发送DMA读缓冲区数据准备好信号量;多次完成DMA缓冲区写入直到一个DDR缓冲区的数据读取完成,然后循环读取另一个DDR缓冲区数据;
6-c)实时DMA传输线程开启后,线程阻塞以等待DMA读缓冲区数据准备好信号量;信号量到达后,启动DMA传输将DMA缓冲区数据写入可编程逻辑;DMA传输启动后,线程阻塞直到DMA传输完成中断到达,然后又再一次阻塞直到DMA读缓冲区准备好信号量到达后开启新的一次DMA传输;
6-d)线程间使用信号量通信,线程间的缓冲区切换通过阻塞方式完成;用户态的DDR缓冲区远大于内核态的DMA缓冲区,以达到降低对于用户态的实时性需求的目的。
2.根据权利要求1所述的分布式实时存储装置,其特征在于,所述分布式实时存储装置可以作为一个实时存储设备单独使用,也可以采用多个分布式实时存储装置连接一个中心存储控制系统,构成一个分布式并行存储装置。
3.一种分布式实时存储装置的数据传输方法,其特征在于,外部数据流在可编程逻辑经过三级缓存,并通过AXI接口以DMA的方式与ARM多核处理器进行通信;ARM多核处理器采用实时Linux操作系统,DMA驱动位于实时Linux操作系统的内核态,固态硬盘接口驱动位于实时Linux操作系统用户态;包括多级缓存、DMA传输、内核态DMA驱动设计均是为了保证实时传输大带宽的数据;
所述的三级缓存包括外部串行高速接口缓冲区、大容量大带宽DDR缓冲区和AXI接口的DMA传输缓冲区;
ARM多核处理器上的实时Linux操作系统运行了三个线程,分别是运行于内核态的实时DMA传输线程和数据块缓冲线程,以及运行于用户态的固态硬盘读写线程;
所述三个线程,在外部主机向固态硬盘存入数据的时候,其工作流程为:
5-a)实时DMA传输线程开启后,控制可编程逻辑将数据以DMA方式传输至ARM多核处理器上实时Linux操作系统内核态的DMA乒乓缓冲区;DMA启动之后,线程处于阻塞状态,直到DMA传输完成中断到达;然后进一步阻塞直到DDR写缓冲区准备好信号量到达;最后完成DMA乒乓缓冲区的乒乓切换,向数据块缓冲线程发送DMA读缓冲区数据准备好信号量,并启动下一次DMA传输;
5-b)数据块缓冲线程开启后,首先向实时DMA传输线程给出DDR写缓冲区准备好的信号量;然后处于阻塞状态,等待DMA读缓冲区准备好的信号量到达;DMA读缓冲区准备好的信号量到达后,开始读取位于内核态的DMA缓冲区的数据到位于用户态的DDR乒乓缓冲区,并且循环多次读取DMA缓冲区直到把DDR写缓冲区写满;写满后,线程进入阻塞,直到固态硬盘准备好信号量到达,进而完成DDR乒乓缓冲区的乒乓切换后向固态硬盘读写线程发出DDR读缓冲区数据准备好信号量;
5-c)固态硬盘读写线程开启后,向数据块缓冲线程发送固态硬盘准备好信号量,并阻塞以等待DDR读缓冲区数据准备好信号量;信号量到达后,开始读取DDR缓冲区数据并写入固态硬盘;完成后,循环执行以完成数据存储;
5-d)线程间使用信号量通信,线程间的缓冲区切换通过阻塞方式完成;用户态的DDR缓冲区远大于内核态的DMA缓冲区,以达到降低对于用户态的实时性需求的目的;
所述三个线程,在外部主机从固态硬盘读取数据的时候,其工作流程为:
6-a)固态硬盘读写线程启动后,ARM多核处理器将数据从固态硬盘读取至实时Linux操作系统用户态的DDR乒乓缓冲区;直到其中一个缓冲区写满后,线程阻塞以等待DDR读缓冲区读空的信号量;该信号量到达后,完成DDR乒乓缓冲区的乒乓切换,向数据块缓冲线程发送DDR读缓冲区数据准备好信号量,并启动另一个DDR缓冲区数据的读取;
6-b)数据块缓冲线程启动后,首先向固态硬盘读写线程发送DDR读缓冲区读空的信号量;然后阻塞以等待DDR读缓冲区准备好的信号量;该信号量到达后,将位于实时Linux操作系统用户态的DMA乒乓缓冲区数据搬移到位于内核态的DMA乒乓缓冲区;写满DMA乒乓缓冲区中的一个的时候,线程阻塞,直到DMA传输可用信号量到达,然后完成DMA乒乓缓冲区的乒乓切换,进而向实时DMA传输线程发送DMA读缓冲区数据准备好信号量;多次完成DMA缓冲区写入直到一个DDR缓冲区的数据读取完成,然后循环读取另一个DDR缓冲区数据;
6-c)实时DMA传输线程开启后,线程阻塞以等待DMA读缓冲区数据准备好信号量;信号量到达后,启动DMA传输将DMA缓冲区数据写入可编程逻辑;DMA传输启动后,线程阻塞直到DMA传输完成中断到达,然后又再一次阻塞直到DMA读缓冲区准备好信号量到达后开启新的一次DMA传输;
6-d)线程间使用信号量通信,线程间的缓冲区切换通过阻塞方式完成;用户态的DDR缓冲区远大于内核态的DMA缓冲区,以达到降低对于用户态的实时性需求的目的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910240022.8A CN110083571B (zh) | 2019-03-27 | 2019-03-27 | 一种分布式实时存储装置及其数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910240022.8A CN110083571B (zh) | 2019-03-27 | 2019-03-27 | 一种分布式实时存储装置及其数据传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110083571A CN110083571A (zh) | 2019-08-02 |
CN110083571B true CN110083571B (zh) | 2023-02-03 |
Family
ID=67413751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910240022.8A Active CN110083571B (zh) | 2019-03-27 | 2019-03-27 | 一种分布式实时存储装置及其数据传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110083571B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110497410A (zh) * | 2019-08-22 | 2019-11-26 | 苏州浪潮智能科技有限公司 | 一种机器人控制系统及方法 |
CN110502190B (zh) * | 2019-08-28 | 2023-03-17 | 上海航天电子通讯设备研究所 | 文件读写方法 |
CN112131152B (zh) * | 2020-09-15 | 2023-10-03 | 北京神州飞航科技有限责任公司 | 一种串行交互式传输扩展接口设计方法 |
CN111966525B (zh) * | 2020-10-23 | 2021-03-26 | 中国人民解放军国防科技大学 | 星载导航设备的dsp程序运行方法及其dsp系统 |
CN112685335B (zh) * | 2020-12-28 | 2022-07-15 | 湖南博匠信息科技有限公司 | 数据存储系统 |
CN114860640B (zh) * | 2022-04-07 | 2023-06-06 | 湖南艾科诺维科技有限公司 | 用于FPGA与ARM通信的FlexSPI接口驱动方法及系统 |
CN117312202B (zh) * | 2023-11-30 | 2024-03-01 | 浙江国利信安科技有限公司 | 片上系统和用于片上系统的数据传输方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778138A (zh) * | 2015-04-20 | 2015-07-15 | 中国科学院光电技术研究所 | 一种内核多线程直接存储驱动实现方法 |
CN108536615A (zh) * | 2018-04-02 | 2018-09-14 | 郑州云海信息技术有限公司 | 一种乒乓缓存控制器及其设计方法 |
CN109300081A (zh) * | 2018-09-19 | 2019-02-01 | 中国船舶重工集团公司第七0九研究所 | 一种基于fpga的图形并发传输系统及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6874039B2 (en) * | 2000-09-08 | 2005-03-29 | Intel Corporation | Method and apparatus for distributed direct memory access for systems on chip |
US7873785B2 (en) * | 2003-08-19 | 2011-01-18 | Oracle America, Inc. | Multi-core multi-thread processor |
-
2019
- 2019-03-27 CN CN201910240022.8A patent/CN110083571B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778138A (zh) * | 2015-04-20 | 2015-07-15 | 中国科学院光电技术研究所 | 一种内核多线程直接存储驱动实现方法 |
CN108536615A (zh) * | 2018-04-02 | 2018-09-14 | 郑州云海信息技术有限公司 | 一种乒乓缓存控制器及其设计方法 |
CN109300081A (zh) * | 2018-09-19 | 2019-02-01 | 中国船舶重工集团公司第七0九研究所 | 一种基于fpga的图形并发传输系统及方法 |
Non-Patent Citations (1)
Title |
---|
基于Zedboard平台AXI DMA数据传输与显示的设计;谭景甲等;《电视技术》;20180605(第06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110083571A (zh) | 2019-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083571B (zh) | 一种分布式实时存储装置及其数据传输方法 | |
US9535831B2 (en) | Page migration in a 3D stacked hybrid memory | |
CN109564556B (zh) | 具有条纹和读取/写入事务管理的存储器控制器仲裁器 | |
US9747039B1 (en) | Reservations over multiple paths on NVMe over fabrics | |
US9201777B2 (en) | Quality of service support using stacked memory device with logic die | |
US20160259568A1 (en) | Method and apparatus for storing data | |
CN107704344A (zh) | 一种基于NVMe的双控全闪存系统 | |
CN105988970B (zh) | 共享存储数据的处理器和芯片 | |
US8296487B1 (en) | SATA pass through port | |
CN103927277A (zh) | Cpu和gpu共享片上高速缓存的方法及装置 | |
US9122802B2 (en) | Interconnect, bus system with interconnect and bus system operating method | |
KR20120029366A (ko) | 트래픽 클래스들과 관련된 포트들을 갖는 다중 포트 메모리 제어기 | |
US20060023574A1 (en) | Interface system | |
KR102478527B1 (ko) | 이기종 메모리 시스템용 시그널링 | |
CN103810124A (zh) | 用于数据传输的系统及方法 | |
KR20220116033A (ko) | 비휘발성 메모리 모듈에 대한 오류 복구 | |
CN115826872A (zh) | 完全硬件卸载的NVMe存储加速系统 | |
JP2013025794A (ja) | フラッシュインタフェースの有効利用 | |
US20140082249A1 (en) | Request sent to storage device based on moving average | |
CN103729165A (zh) | 应用于高速运动控制系统的pci从设备核心控制模块 | |
JP2023530642A (ja) | Dramコマンドストリーク管理 | |
US9229895B2 (en) | Multi-core integrated circuit configurable to provide multiple logical domains | |
CN204515761U (zh) | 片上系统 | |
CN109840241B (zh) | 一种异构双核处理器核间通讯电路 | |
CN101356515A (zh) | 连接到多端口存储器的微处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |