CN117215491A - 一种快速数据访问方法、快速数据访问装置及光模块 - Google Patents

一种快速数据访问方法、快速数据访问装置及光模块 Download PDF

Info

Publication number
CN117215491A
CN117215491A CN202311245908.4A CN202311245908A CN117215491A CN 117215491 A CN117215491 A CN 117215491A CN 202311245908 A CN202311245908 A CN 202311245908A CN 117215491 A CN117215491 A CN 117215491A
Authority
CN
China
Prior art keywords
state
shared area
data
control component
sequence
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
Application number
CN202311245908.4A
Other languages
English (en)
Inventor
夏渊
张旭
张皓
肖清明
余春平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Accelink Technologies Co Ltd
Original Assignee
Accelink Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Accelink Technologies Co Ltd filed Critical Accelink Technologies Co Ltd
Priority to CN202311245908.4A priority Critical patent/CN117215491A/zh
Publication of CN117215491A publication Critical patent/CN117215491A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及数据读写技术领域,提供了一种快速数据访问方法、快速数据访问装置及光模块,该方法包括:各控制组件通过多端口存储控制器与存储器相连接,将存储区域划分为多个共享区域,为每个共享区域设置状态标识,第一控制组件对相应共享区域进行数据写入,在数据写入完成后,将该共享区域的状态标识更新为已写入状态;当第二控制组件读取到相应共享区域的状态标识为已写入状态时,读取该共享区域中的数据。本发明无需等待整个存储器的数据计算完成,而是能够在共享区域的数据写入完成后,即可进行数据的读取,且在对后续的共享区域进行数据写入过程中,可对已写入完成的共享区域进行数据读取,实现数据的并行处理,降低数据处理下发的总延时。

Description

一种快速数据访问方法、快速数据访问装置及光模块
技术领域
本发明涉及数据读写技术领域,特别是涉及一种快速数据访问方法、快速数据访问装置及光模块。
背景技术
随着网络的广泛应用和网络用户的不断增加,对整个通信承载网络带来了巨大的带宽压力,为了应对这样的带宽压力,所能够采取的一种解决方法是将整个网络全面光纤化,从而建设全光网络,而在光网络中,光模块作为全光网络的核心器件,随着光网络的带宽压力的增大,光模块也需要处理更大的数据量。
但现有技术中,数据的处理过程包括:由主控芯片的微处理器(Micro ProcessUnit,简写为:MPU)从非易失性存储器中加载数据到内存,如双倍速率同步动态随机存储器(Double Data Rate SDRAM,简写为:DDR)中,在缓存中完成数据处理计算后,再将数据处理计算的结果下发给控制器件,如现场可编程门阵列模块(Field-Programmable GateArray,简写为:FPGA)、数字信号处理器(Digital Signal Processor,简写为:DSP)、图形处理器(Graphics Processing Unit,简写为:GPU)。该过程是串行的,即只有等到主控完成DDR的所有数据处理计算后,才能把结果下发给实时控制器件(比如FPGA)。这种处理方式对于小数据量,或者实时性要求不高的场合,都可以完成任务;但是对于数据量大,且有实时性要求的任务,则不能满足要求,且会有很大的数据处理延时,无法满足实际需求。
鉴于此,克服该现有技术所存在的缺陷是本技术领域亟待解决的问题。
发明内容
本发明要解决的技术问题是现有技术中,只有等到主控完成DDR的所有数据处理计算后,才能把结果下发给实时控制器件,导致处理时延较高,时延较长,无法适用于数据量大且实时性高的任务处理需求。
本发明采用如下技术方案:
第一方面,本发明提供了一种快速数据访问方法,各控制组件均通过多端口存储控制器与存储器相连接,并预先配置存储器的物理地址,使存储器中存在至少一块存储区域能够被各个控制组件共同访问,将所述存储区域划分为多个共享区域,为每个共享区域设置相应的状态标识,所述方法包括:
第一控制组件对相应共享区域进行数据写入,在数据写入完成后,将该共享区域所对应的状态标识更新为已写入状态;
第二控制组件读取各共享区域的状态标识,当读取到相应共享区域的状态标识为已写入状态时,读取该共享区域中的数据。
优选的,所述第一控制组件对相应共享区域进行数据写入,具体包括:
在对相应共享区域进行数据写入前,读取该共享区域的状态标识,若该共享区域的状态标识为初始状态,则将该共享区域的状态标识更新为正在写入状态,对该共享区域进行数据写入。
优选的,所述读取该共享区域中的数据,具体包括:
在所有第二控制组件完成对相应共享区域的数据读取后,将该共享区域的状态标识更新为初始状态,以便于第一控制组件能够对该共享区域再次进行数据写入。
优选的,在相应控制组件中预先存储第一地址映射关系和第二地址映射关系;其中,所述第一地址映射关系为控制组件的虚拟地址与相应共享区域的物理地址的映射关系,所述第二地址映射关系为控制组件的虚拟地址与相应共享区域的状态标识的物理地址之间的地址映射关系;
所述第一控制组件根据所述第二地址映射关系,访问相应共享区域的状态标识,若访问得到该共享区域的状态标识为初始状态,则根据所述第一地址映射关系,访问该共享区域,对该共享区域进行相应的数据写入;
所述第二控制组件根据所述第二地址映射关系,访问相应共享区域的状态标识,若访问得到该共享区域的状态标识为已写入状态,则根据所述第一地址映射关系,访问该共享区域,读取该共享区域中的数据。
优选的,使用两个标志作为状态标识;其中,第一标志用于表现所述状态标识是否为正在写入状态,第二标志用于表现所述状态标识是否为已写入状态或初始状态;
或使用单个标志作为状态标识,该标志使用多个预设值分别代表相应的初始状态、已写入状态和正在写入状态。
优选的,当使用单个标志作为状态标识,且存在多个第二控制组件需读取同一共享区域中的数据时,以0代表初始状态,以大于0的值代表已写入状态,以小于0的值代表正在写入状态;其中,当第一控制组件对相应共享区域进行数据写入完成后,将所述状态标识更新为n,每当一个第二控制组件从相应共享区域中读取数据完成后,将该共享区域的状态标识更新为减1后的值,直至状态标识恢复至0;
或,以0代表初始状态,以小于0的值代表已写入状态,以大于0的值代表正在写入状态;其中,当第一控制组件对相应共享区域进行数据写入完成后,将所述状态标识更新为-n,每当一个第二控制组件从相应共享区域中读取数据完成后,将该共享区域的状态标识更新为增加1后的值,直至状态标识恢复至0;
其中,n为需读取相应共享区域的第二控制组件的数量。
优选的,预先按照各第二控制组件需读取相应共享区域的先后顺序,在各第二控制组件中存储相应共享区域所对应的预设匹配值;其中,当以0代表初始状态,以大于0的值代表已写入状态,以小于0的值代表正在写入状态时,在第k个需读取相应共享区域的第二控制组件中存储与该共享区域对应的预设匹配值为n-k+1;当以0代表初始状态,以小于0的值代表已写入状态,以大于0的值代表正在写入状态,在第k个需读取相应共享区域的第二控制组件中存储与该共享区域对应的预设匹配值为-n+k-1;
相应第二控制组件在读取得到相应共享区域的状态标识为对应的预设匹配值时,读取该共享区域中的数据,以实现多个第二控制组件对共享区域的先后顺序读取。
优选的,所述第一控制组件为MPU,所述第二控制组件为FPGA、DSP或GPU中的一种或多种。
第二方面,本发明提供了一种快速数据访问装置,包括第一控制组件、第二控制组件和存储器;
各控制组件均通过多端口存储控制器与存储器相连接;其中,预先配置存储器的物理地址,使存储器中存在至少一块存储区域能够被各个控制组件共同访问,所述存储区域划分为多个共享区域,每个共享区域设置有相应的状态标识;
第一控制组件用于对相应共享区域进行数据写入,在数据写入完成后,将该共享区域所对应的状态标识更新为已写入状态;
第二控制组件用于读取各共享区域的状态标识,当读取到相应共享区域的状态标识为已写入状态时,读取该共享区域中的数据。
第三方面,本发明提供了一种光模块,包括第二方面所述的快速数据访问装置,并在所述快速数据访问装置中使用第一方面所述的快速数据方法。
本发明通过将存储区域划分为多个共享区域,并通过状态标识进行数据写入和数据读取的协调控制,从而无需等待整个存储器的数据计算完成后,而是能够在共享区域的数据写入完成后,即可进行数据的读取,且在对后续的共享区域进行数据写入过程中,可对已写入完成的共享区域进行数据读取,从而实现数据的并行处理,从而降低第一控制组件对数据处理直至下发给相应第二控制组件之间的延时。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种现有技术中光模块的架构示意图;
图2是本发明实施例提供的一种快速数据访问方法中相应控制组件与存储器的连接示意图;
图3是本发明实施例提供的第一种快速数据访问方法的流程示意图;
图4是本发明实施例提供的第二种快速数据访问方法的流程示意图;
图5是本发明实施例提供的第三种快速数据访问方法的流程示意图;
图6是本发明实施例提供的一种快速数据访问方法的应用场景示意图;
图7是本发明实施例提供的一种快速数据访问方法与现有技术的性能比对示意图;
图8是本发明实施例提供的第四种快速数据访问方法的流程示意图;
图9是本发明实施例提供的一种快速数据访问方法中各控制组件对应相应共享区域的预设匹配值的示意图;
图10是本发明实施例提供的一种快速数据访问方法的示意图;
图11是本发明实施例提供的另一种快速数据访问方法的示意图;
图12是本发明实施例提供的又一种快速数据访问方法的示意图;
图13是本发明实施例提供的再一种快速数据访问方法的示意图;
图14是本发明实施例提供的一种快速数据访问装置中SoC芯片的示意图;
图15是本发明实施例提供的一种快速数据访问装置的架构示意图;
图16是本发明实施例提供的一种光模块的架构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明中术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本申请中,除非另有明确的规定和限定,术语“连接”应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或成一体;可以是直接相连,也可以通过中间媒介间接相连。此外,术语“耦接”可以是实现信号传输的电性连接的方式。
为了使本发明的目的、技术方案及优点更加清楚明白,在此还对现有技术中光模块的数据处理流程进行说明,如图1所示为现有技术中光模块的架构示意图,在该现有的架构下的数据处理流程包括:1)主控芯片的微处理器上电后,执行初始化程序;2)然后从非易失存储器加载数据到存储器;3)主控芯片的微处理器在存储器完成数据处理计算,并把结果下发给各控制器件,如FPGA模块、数字信号处理器或图形处理器等。可以看到这种数据处理流程是流水线串行的,只有等到主控在DDR完成了所有数据的计算后,才能把数据下发给实时控制器件(比如FPGA)。这种处理方式对于小数据量,或者实时性要求不高的场合,都可以完成任务;但是对于数据量大,且有实时性要求的任务,则不能满足要求,且会有很大的数据处理延时,无法满足实际需求。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1:
现有技术中,只有等到主控完成DDR的所有数据处理计算后,才能把结果下发给实时控制器件,导致处理时延较高,时延较长,无法适用于数据量大且实时性高的任务处理需求。为了解决该问题,本发明实施例1提供了一种快速数据访问方法,如图2所示,各控制组件均通过多端口存储控制器与存储器相连接,并预先配置存储器的物理地址,使存储器中存在至少一块存储区域能够被各个控制组件共同访问,将所述存储区域划分为多个共享区域,为每个共享区域设置相应的状态标识,其中,所述控制组件的表述是相对于存储器而言的,即需要对存储器进行访问的组件均被称作控制组件,所述存储器可以是一个或多个,对应设置一个或多个多端口存储控制器,所述多端口存储控制器可以让一个存储器被多个控制组件所访问,如图3所示,所述方法包括:
在步骤201中,第一控制组件对相应共享区域进行数据写入,在数据写入完成后,将该共享区域所对应的状态标识更新为已写入状态;在未对相应共享区域进行数据写入时,该共享区域的状态标识可以是初始状态。
在步骤202中,第二控制组件读取各共享区域的状态标识,当读取到相应共享区域的状态标识为已写入状态时,读取该共享区域中的数据。其中,第一控制组件仅有一个,第二控制组件可以是一个或多个,在实际使用场景下,所述第一控制组件为MPU,所述第二控制组件为FPGA、DSP或GPU中的一种或多种。将所述存储区域划分为多个共享区域可以是设置多个存储器,一个存储器对应一个共享区域,也可以是对一个存储器进行划分,以一个或多个物理地址作为一个共享区域。每个共享区域的状态标识可以是存储在相应共享区域中的,也可以是在相应存储器中开辟一块集中区域按照相应的顺序存储各共享区域的状态标识。
在实际应用场景下,所述多端口存储控制器可以设置在任意控制组件中,如设置在FPGA侧或MPU侧均可,所述存储器的数量也可以是一个或多个,如在FPGA侧设置多端口存储控制器和存储器,在MPU侧设置多端口存储控制器和存储器,使FPGA可访问MPU侧的存储器,MPU也可访问FPGA侧的存储器,其中,FPGA和MPU集成在系统级芯片(System on Chip,简写为:SoC芯片)中,通过SoC芯片之间的总线互联和多端口存储控制器形成FPGA和MPU之间存储器中数据共享的物理通道。
在具体的实施场景下,上述步骤201-步骤202可以是:第一控制组件按照预设顺序访问各共享区域,依次进行数据写入,第二控制组件同样按照预设顺序访问各共享区域,当访问到相应共享区域的状态标识不是已写入状态时,等待预设时间后再访问该共享区域的状态标识,直至访问得到该共享区域的状态标识为已写入状态时,读取该共享区域中的数据。所述预设顺序和预设时间均由本领域技术人员根据经验分析得到。
本实施例通过将存储区域划分为多个共享区域,并通过状态标识进行数据写入和数据读取的协调控制,从而无需等待整个存储器的数据计算完成后,而是能够在共享区域的数据写入完成后,即可进行数据的读取,且在对后续的共享区域进行数据写入过程中,可对已写入完成的共享区域进行数据读取,从而实现数据的并行处理,从而降低第一控制组件对数据处理直至下发给相应第二控制组件之间的延时。
在优选的实施方式中,所述第一控制组件对相应共享区域进行数据写入,具体包括:在对相应共享区域进行数据写入前,读取该共享区域的状态标识,若该共享区域的状态标识为初始状态,则将该共享区域的状态标识更新为正在写入状态,对该共享区域进行数据写入。
所述读取该共享区域中的数据,具体包括:在所有第二控制组件完成对相应共享区域的数据读取后,将该共享区域的状态标识更新为初始状态,以便于第一控制组件能够对该共享区域再次进行数据写入。
即,相应共享区域的状态标识为初始状态、正在写入状态或已写入状态。当共享区域的状态为正在写入状态时,不允许对该共享区域进行数据读取;当共享区域的状态为初始状态时,允许对该共享区域进行数据写入,不允许对该共享区域进行数据读取;当共享区域的状态为已写入状态时,允许对该共享区域进行数据读取,不允许对该共享区域进行数据写入。
本实施例通过在数据读取完成后,将相应共享区域的状态标识再度恢复至初始状态,从而能够对该共享区域再度进行数据写入,提高存储空间的利用率。
在实际的应用场景下,各控制组件访问相应的共享区域,如图4所示,具体包括:
在步骤301中,在相应控制组件中预先存储第一地址映射关系和第二地址映射关系;其中,所述第一地址映射关系为控制组件的虚拟地址与相应共享区域的物理地址的映射关系,所述第二地址映射关系为控制组件的虚拟地址与相应共享区域的状态标识的物理地址之间的地址映射关系。
在步骤302中,所述第一控制组件根据所述第二地址映射关系,访问相应共享区域的状态标识,若访问得到该共享区域的状态标识为初始状态,则根据所述第一地址映射关系,访问该共享区域,对该共享区域进行相应的数据写入。
在步骤303中,所述第二控制组件根据所述第二地址映射关系,访问相应共享区域的状态标识,若访问得到该共享区域的状态标识为已写入状态,则根据所述第一地址映射关系,访问该共享区域,读取该共享区域中的数据。
上述各实施方式中的状态标识存在多种实施方式,在此提供两种可选的实施方式:
第一种实施方式:使用两个标志作为状态标识;其中,第一标志用于表现所述状态标识是否为正在写入状态,第二标志用于表现所述状态标识是否为已写入状态或初始状态;举例而言,第一标志使用0和1分别代表空闲和占用,第二标志使用0和1分别代表未完成和写完成,当第一标志为空闲,第二标志为写完成时,代表状态标识为已写入状态,当第一标志为空闲,第二标志为未完成时,代表状态标识为初始状态;当第一标志为占用,第二标志为未完成时,代表状态标识为正在写入状态,当第一标志为占用,第二标志为写完成时,代表状态标识为正在读取状态。
第二种实施方式:使用单个标志作为状态标识,该标志使用多个预设值分别代表相应的初始状态、已写入状态和正在写入状态。所述多个预设值由本领域技术人员根据经验分析得到,举例而言,使用0代表初始状态,1代表已写入状态,-1代表正在写入状态。其中,一个标志可以是一个比特位或多个比特位。如在第一种实施方式中,第一标志占用1个比特位,第二标志占用1个比特位。
下面将以第一种实施方式,结合具体的应用场景对数据读写的过程进行具体阐述:
如将DDR中的存储区域划分为两个共享区域,分别为S1空间和S2空间,为两个共享区域分配物理地址,如S1空间的物理地址空间,0x20000000-0x20FFFFFF,S2空间的物理地址空间为0x21000000-0x21FFFFFF,在该应用场景下,光模块具有两个控制组件,分别为第一控制组件MPU和第二控制组件FPGA,其中MPU只写数据,FPGA只读数据。
然后MPU和FPGA通过mmap地址映射方法,将外部设备的地址空间映射到MPU和FPGA的内存空间,完成物理地址到虚拟地址的转换,实现FPGA侧DDR访问和MPU侧DDR访问程序无差异,从而方便后续读写访问,此时应用程序保存数据到FPGA侧DDR,或者从FPGA侧DDR读取数据,都和直接读写本地DDR无差异。至此,实现了数据共享的物理通道,下面将实现了数据共享的逻辑通道。
即S1空间和S2空间,均有一个用于表现是否空闲状态的第一标志,和一个用于表现是否写完成的第二标志;无论MPU写,还是FPGA读,都先判读相应共享区域的第一标志是否为空闲状态,若为空闲状态则可以读写;并在读写前设置第一标志为占用状态,开始读写操作。
其中,MPU写操作完成后,则设置第二标志为1,代表写完成,此时FPGA可以去取数据。其中,MPU和FPGA均按照顺序访问各共享区域,当MPU写相应共享区域结束后,在FPGA按照数据读取的顺序访问到已写入的共享区域时,判断得到该共享区域的第一标志为空闲,第二标志为写完成状态,则FPGA取走数据,通过第一标志和第二标志来完成对FPGA读数据的立即通知操作。
当MPU写S1空间时,FPGA读取S2空间的数据,并把读到的数据,实时刷新到外部设备;这一步保证了外部设备始终有数据,不会受到数据更新事件的打断。
如果MPU对S1空间数据写完,数据更新完成,FPGA就会去读取S1空间的数据,并把新读到的数据刷新到外部设备,从而形成如图5所示的流程,保证了数据更新的实时性。以S1空间和S2空间大小均是2MB为例,如果计数的数据量有20MB,则需要9次S1空间和S2空间的循环切换读写,完成数据的更新和刷新。
MPU和FPGA之间共享DDR数据性能分析如图6所示,FPGA读缓存数据的通道的带宽为24bit×150MHZ,MPU写缓存数据的通道带宽为64bit×100MHZ。二者合计需要通道资源为10000Mbit;而DDR控制器和高速总线带宽总量为64bit×200MHZ=12800Mbit满足二者需求。MPU和FPGA读DDR的访问,在DDR的带宽范围内,因此软件处理数据的速度可以尽可能提高。
在该具体的应用场景下,以20MB数据为例,对本实施例所述方法以及现有技术中的数据访问方法分别进行性能测试,可以得到如图7所示的比对结果,可以看到,由于现有技术中需先拷贝数据到DDR,然后FPGA再读走DDR数据,多了1次拷贝读写过程,且是串行操作,而在本实施例所述方法下则可以并行访问DDR,从而直接提高吞吐率,使数据处理性能提升了近35倍,极大降低数据访问的延时,从而满足模块数据量大且有实时响应要求的需求。
在第二种实施方式下,当使用单个标志作为状态标识,且存在多个第二控制组件需读取同一共享区域中的数据时,还存在一种更为优选的实施方式,具体包括:
以0代表初始状态,以大于0的值代表已写入状态,以小于0的值代表正在写入状态;其中,当第一控制组件对相应共享区域进行数据写入完成后,将所述状态标识更新为n,每当一个第二控制组件从相应共享区域中读取数据完成后,将该共享区域的状态标识更新为减1后的值,直至状态标识恢复至0。
或,以0代表初始状态,以小于0的值代表已写入状态,以大于0的值代表正在写入状态;其中,当第一控制组件对相应共享区域进行数据写入完成后,将所述状态标识更新为-n,每当一个第二控制组件从相应共享区域中读取数据完成后,将该共享区域的状态标识更新为增加1后的值,直至状态标识恢复至0。
其中,n为需读取相应共享区域的第二控制组件的数量。需读取相应共享区域的第二控制组件的数量是由本领域技术人员根据光模块的数据处理下发需求分析得到的。
举例而言,当第一控制组件识别得到相应共享区域的状态标识为0时,将该共享区域的状态标识更新为-1,对该共享区域进行数据写入,在数据写入完成后,将该共享区域的状态标识更新为3,代表该共享区域的数据可被3个第二控制组件(如FPGA、DSP和GPU)进行读取,其中,当FPGA、DSP和GPU中的任意一个读取数据结束后,则将该共享区域的状态标识减1,当这3个第二控制组件均读取数据完成后,则共享区域的状态标识被更新为3-3=0,从而恢复初始状态。其中,多个第二控制组件可同时对同一个共享区域进行数据读取。
考虑到实际使用中,还可能存在多个第二控制组件需按照相应顺序进行数据读取的需求,在此还提供了一种优选的实施方式,如图8所示,具体包括:
在步骤401中,预先按照各第二控制组件需读取相应共享区域的先后顺序,在各第二控制组件中预先存储相应共享区域所对应的预设匹配值;其中,当以0代表初始状态,以大于0的值代表已写入状态,以小于0的值代表正在写入状态时,在第k个需读取相应共享区域的第二控制组件中存储与该共享区域对应的预设匹配值为n-k+1;当以0代表初始状态,以小于0的值代表已写入状态,以大于0的值代表正在写入状态,在第k个需读取相应共享区域的第二控制组件中存储与该共享区域对应的预设匹配值为-n+k-1。
在步骤402中,相应第二控制组件在读取得到该共享区域的状态标识为所述预设匹配值时,读取该共享区域中的数据,当读取到相应共享区域的状态标识并非第二控制组件所存储的对应预设匹配值时,不读取该共享区域中的数据,以实现多个第二控制组件对共享区域的先后顺序读取。
各第二控制组件需读取相应共享区域的先后顺序由本领域技术人员根据需求分析得到。如FPGA和DSP需按顺序对相应共享区域进行读取,FPGA需第一个读取,DSP需第二个读取时,则FPGA中存储该共享区域的预设匹配值为2-1+1=2,DSP中存储该共享区域的预设匹配值为2-2+1=1,在第一控制组件对该共享区域进行数据写入完成后,该共享区域的状态标识被更新为n,即2,此时,FPGA则可开始读取数据,在FPGA读取数据完成,并将该共享区域的状态标识更新为1,此时,DSP可开始读取数据。
考虑到在实际使用中,不同第二控制组件所需读取的数据还可能不同,本实施例还提供了一种可选的实施方式,即上述实施例中将所述存储区域划分为多个共享区域是按照各第二控制组件所需读取的数据进行划分的,使每个共享区域具有固定的一个或多个第二控制组件需对其进行数据读取,且各第二控制组件对相应共享区域进行数据读取的顺序保持固定,且每种同类型的共享区域至少有两个,所述同类型的共享区域即需读取的第二控制组件以及读取顺序均一致。在第一控制组件进行数据写入时,将数据写入到对应的共享区域中。
以GPU、DSP和FPGA需按顺序对第一数据进行读取,FPGA和DSP需按顺序地第二数据进行读取,GPU还需读取第三数据举例而言,则按照图9所示进行共享区域、预设匹配值和第二控制组件的分配,其中,共享区域1和共享区域2用于读写第一数据,MPU在向共享区域1或共享区域2写入数据完成后,将对应的状态标识设置为3,FPGA中存储与共享区域1和共享区域2的预设匹配值为3,DSP中存储共享区域1和共享区域2的预设匹配值为2,GPU中存储与共享区域1和共享区域2的预设匹配值为1,使FPGA最先读取第一数据,在FPGA读取第一数据结束后,状态标识被减至2,从而与DSP中的预设匹配值一致,使DSP能够读取第一数据,在DSP读取第一数据结束后,GPU开始读取第一数据,从而实现各第一控制组件的按序读取,而在各第二控制组件读取共享区域1的过程中,若第一控制组件又处理生成了第一数据,则将第一数据写入到共享区域2中,反之,若在各第二控制组件读取共享区域2的过程中,第一控制组件又处理生成了第一数据,则将第一数据写入到共享区域1中。
共享区域3和共享区域4用于读取第二数据,FPGA中存储共享区域3和共享区域4的预设匹配值为2,DSP中存储共享区域3和共享区域4的预设匹配值为1,而GPU中不存储对应共享区域3和共享区域4的预设匹配值(或存储无效值),则实现FPGA和DSP对第二数据的按序读取,共享区域5和共享区域6用于读取第三数据,仅在GPU中存储共享区域5和共享区域6的预设匹配值1,当GPU读取第三数据结束后,状态标识即恢复初始状态0。
本实施例还提供了一种优选的实施方式,即当每一个共享区域对应存储相应的实时数据时,具体包括:
使用状态序列代表所有共享区域的状态,其中,所述状态序列为m个比特位,每一个比特位代表一个共享区域的状态,当相应比特位为0时,代表对应共享区域为初始状态或已读取状态,当相应比特位为1时,代表对应共享区域为已写入状态;其中,m为共享区域的数量。
在第一控制组件的寄存器中设置第一进度队列,在第二控制组件的寄存器中设置第二进度队列,用于存储状态序列;其中,以位于第一进度队列队尾的状态序列作为第一状态序列,以位于第二进度队列队尾的状态序列作为第二状态序列。
第一控制组件根据第一状态序列判断是否能够进行相应共享区域的数据写入,第二控制组件根据靠近第二进度队列队尾的预设数量个状态序列(包括第二状态序列和第二状态序列前的预设数量减一个状态序列)判断是否能够进行相应共享区域的数据读取;所述预设数量由本领域技术人员根据数据读取的实施性需求分析得到。
如图10所示,在第一控制组件对第k个共享区域进行数据写入后,生成标准写序列,将所述标准写序列发送给第二控制组件;其中,所述标准写序列的第k个比特位为1,其他比特位为0;第一控制组件对所述标准写序列和第一状态序列进行或操作,得到新的第一状态序列,将所述新的第一状态序列插入到所述第一进度队列的队尾;第二控制组件对所述标准写序列和第二状态序列进行或操作,得到新的第二状态序列,将所述新的第二状态序列插入到所述第二进度队列的队尾;其中,所述第一状态序列和第二状态序列可以是预先存储在第一进度队列和第二进度队列以外的位置并直接使用的,第一进度队列和第二进度队列中仍然保留有第一状态序列和第二状态序列。
如图11所示,在第二控制组件对第k个共享区域进行数据读取后,生成标准读序列,将所述标准读序列发送给第一控制组件;其中,所述标准读序列的第k个比特位为0,其他比特位为1;第二控制组件对所述标准读序列和第二状态序列进行与操作,得到新的第二状态序列,将所述新的第二状态序列插入到所述第二进度队列的队尾;第一控制组件对所述标准读序列和第一状态序列进行与操作,得到新的第一状态序列,将所述新的第一状态序列插入到所述第一进度队列的队尾。
其中,所述第二控制组件根据靠近第二进度队列队尾的预设数量个状态序列判断是否能够进行相应共享区域的数据读取,具体包括:对靠近第二进度队列队尾的预设数量个状态序列进行与操作,得到目标序列,当所述目标序列中的第k个比特位为0,且第二状态序列的第k个比特位为1时,则判断得到能够对第k个共享区域进行数据读取。
第一控制组件在需要对相应共享区域进行数据写入时,判断第一状态序列中该共享区域的比特位是否为0,若为0,则能够对该共享区域进行写入。
通过上述第一控制组件与第二控制组件相互发送标准写序列和标准读序列,并根据标准写序列和标准读序列更新第一进度队列和第二进度队列,使第一进度队列和第二进度队列随着共享区域的读写实时更新,从而使第一控制组件能够通过第一进度队列清晰得知读写的过程信息,同样的,第二控制组件能够通过第一进度队列清晰得知读写的过程信息。
第二控制组件通过第二进度队列,进行数据实时性的监控与读取,具体包括:
当第二控制组件需要对相应共享区域进行数据读取时,判断第二进度队列的队尾的状态序列中对应该共享区域的比特位是否为1,若队尾的状态序列中对应该共享区域的比特位为1,则选取靠近第二进度队列的队尾的M个状态序列,M即为上述预设数量,对这M个状态序列进行与操作,得到目标序列,判断目标序列中对应该共享区域的比特位是否为0,若目标序列中对应该共享区域的比特位为0,则认为该共享区域的数据为实时值,第二控制组件对该共享区域进行数据读取;若目标序列中对应该共享区域的比特位为1,则认为该共享区域的数据未被第一控制组件实时更新,该共享区域的数据为旧数据,不读取该共享区域的数据,但依旧生成标准读序列(即该共享区域对应的比特位为0,其他比特位为1),并使用标准读序列更新第一进度队列和第二进度队列,以便于第一控制组件对该共享区域进行数据写入。
同时,第一控制组件根据第一进度队列中的各状态序列,判断数据读取过程是否正常,第二控制组件根据第二进度队列的各状态序列,判断数据写入是否正常,如判断各区域的数据读取顺序或数据写入顺序是否符合预设顺序,若符合,则正常,否则异常。所述预设顺序由本领域技术人员根据读取需求分析得到。其中,如图12所示,将第二进度队列中相邻两个状态序列的前一个状态序列作为第三状态序列,后一个状态序列作为第四状态序列,对第三状态序列与第四状态序列进行异或操作,得到第一中间序列,将第一中间序列与第四状态序列进行与操作,得到第一最终序列,第一最终序列中为1的比特位所对应共享区域即为形成第四状态序列时对应写入的共享区域,通过依次对第二进度队列中的相邻状态序列进行分析即可得到各共享区域的数据写入顺序;
如图13所示,将第一进度队列中相邻两个状态序列的前一个状态序列作为第五状态序列,后一个状态序列作为第六状态序列,对第五状态序列与第六状态序列进行异或操作,得到第二中间序列,将第二中间序列与第五状态序列进行与操作,得到最终序列,最终序列中为1的比特位所对应共享区域即为形成第六状态序列时对应读取的共享区域,通过依次对第一进度队列中的相邻状态序列进行分析即可得到各共享区域的数据读取顺序。所述前一个状态序列为相对靠近队列队头的状态序列,后一个状态序列为相对靠近队列队尾的状态序列,通过依次对第一进度队列中的相邻状态序列进行分析即可得到各共享区域的数据读取顺序。
实施例2:
在提供了实施例1所述的快速数据访问方法的基础上,本实施例还提供了一种快速数据访问装置,为的是对实施例1中相应方法的装置角度侧做相关阐述,并进一步就其设计原理做相关的深入分析。需要说明的是,实施例1中的方法在本实施例2中均适用,在本实施例中将不再对其方法进行赘述。
本实施例所提供的快速数据访问装置,如图2所示,包括第一控制组件、第二控制组件和存储器;各控制组件均通过多端口存储控制器与存储器相连接;其中,预先配置存储器的物理地址,使存储器中存在至少一块存储区域能够被各个控制组件共同访问,所述存储区域划分为多个共享区域,每个共享区域设置有相应的状态标识。
第一控制组件用于对相应共享区域进行数据写入,在数据写入完成后,将该共享区域所对应的状态标识更新为已写入状态,第二控制组件用于读取各共享区域的状态标识,当读取到相应共享区域的状态标识为已写入状态时,读取该共享区域中的数据。
在实际使用中,以光模块中的控制组件为MPU和FPGA举例而言,直接使用集成了MPU和FPGA的SoC芯片作为主控板卡,以使用DDR作为存储器为例,如图14所示,在SoC芯片内部提供MPU和FPGA互联的高速总线和Multi-port DDR SDARM控制器,Multi-port DDRSDARM控制器即为多端口存储控制器,形成如图15所示的架构示意图,该高速总线和多端口存储控制器共同提供了MPU和FPGA之间进行数据共享的物理通道,为存储器DDR共享提供了硬件总线互通的基础,多端口存储控制器连接至少一个DDR,使该DDR能够被MPU和FPGA共同访问,该DDR可在FPGA侧或MPU侧。在一种可选的实施方式中,还可使所述多端口存储控制器连接两个DDR,即分别在MPU和FPGA侧设置DDR,FPGA可通过多端口存储控制器访问MPU侧的DDR,MPU也可通过多端口存储控制器访问FPGA侧的DDR。
本实施例通过设置多端口存储器,从而将DDR放在了MPU和FPGA侧,实现MPU直接读写FPGA侧DDR;同时,FPGA也可以并行的访问DDR,从而为数据的并行处理提供硬件基础。
本实施例还提供一种光模块,包括实施例2所述的快速数据访问装置,并在所述快速数据访问装置中使用实施例1所述的快速数据方法。
如图16所示,是本发明实施例的光模块的架构示意图。本实施例的光模块包括一个或多个处理器21以及存储器22。其中,图16中以一个处理器21为例。
处理器21和存储器22可以通过总线或者其他方式连接,图16中以通过总线连接为例。
存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序和非易失性计算机可执行程序,如实施例1中的光模块。处理器21通过运行存储在存储器22中的非易失性软件程序和指令,从而执行快速数据访问方法。
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的快速数据访问方法。
值得说明的是,上述装置和系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种快速数据访问方法,其特征在于,各控制组件均通过多端口存储控制器与存储器相连接,并预先配置存储器的物理地址,使存储器中存在至少一块存储区域能够被各个控制组件共同访问,将所述存储区域划分为多个共享区域,为每个共享区域设置相应的状态标识,所述方法包括:
第一控制组件对相应共享区域进行数据写入,在数据写入完成后,将该共享区域所对应的状态标识更新为已写入状态;
第二控制组件读取各共享区域的状态标识,当读取到相应共享区域的状态标识为已写入状态时,读取该共享区域中的数据。
2.根据权利要求1所述的快速数据访问方法,其特征在于,所述第一控制组件对相应共享区域进行数据写入,具体包括:
在对相应共享区域进行数据写入前,读取该共享区域的状态标识,若该共享区域的状态标识为初始状态,则将该共享区域的状态标识更新为正在写入状态,对该共享区域进行数据写入。
3.根据权利要求1所述的快速数据访问方法,其特征在于,所述读取该共享区域中的数据,具体包括:
在所有第二控制组件完成对相应共享区域的数据读取后,将该共享区域的状态标识更新为初始状态,以便于第一控制组件能够对该共享区域再次进行数据写入。
4.根据权利要求1所述的快速数据访问方法,其特征在于,在相应控制组件中预先存储第一地址映射关系和第二地址映射关系;其中,所述第一地址映射关系为控制组件的虚拟地址与相应共享区域的物理地址的映射关系,所述第二地址映射关系为控制组件的虚拟地址与相应共享区域的状态标识的物理地址之间的地址映射关系;
所述第一控制组件根据所述第二地址映射关系,访问相应共享区域的状态标识,若访问得到该共享区域的状态标识为初始状态,则根据所述第一地址映射关系,访问该共享区域,对该共享区域进行相应的数据写入;
所述第二控制组件根据所述第二地址映射关系,访问相应共享区域的状态标识,若访问得到该共享区域的状态标识为已写入状态,则根据所述第一地址映射关系,访问该共享区域,读取该共享区域中的数据。
5.根据权利要求1所述的快速数据访问方法,其特征在于,使用两个标志作为状态标识;其中,第一标志用于表现所述状态标识是否为正在写入状态,第二标志用于表现所述状态标识是否为已写入状态或初始状态;
或,使用单个标志作为状态标识,该标志使用多个预设值分别代表相应的初始状态、已写入状态和正在写入状态。
6.根据权利要求5所述的快速数据访问方法,其特征在于,当使用单个标志作为状态标识,且存在多个第二控制组件需读取同一共享区域中的数据时;
以0代表初始状态,以大于0的值代表已写入状态,以小于0的值代表正在写入状态;其中,当第一控制组件对相应共享区域进行数据写入完成后,将所述状态标识更新为n,每当一个第二控制组件从相应共享区域中读取数据完成后,将该共享区域的状态标识更新为减1后的值,直至状态标识恢复至0;
或,以0代表初始状态,以小于0的值代表已写入状态,以大于0的值代表正在写入状态;其中,当第一控制组件对相应共享区域进行数据写入完成后,将所述状态标识更新为-n,每当一个第二控制组件从相应共享区域中读取数据完成后,将该共享区域的状态标识更新为增加1后的值,直至状态标识恢复至0;
其中,n为需读取相应共享区域的第二控制组件的数量。
7.根据权利要求6所述的快速数据访问方法,其特征在于,预先按照各第二控制组件需读取相应共享区域的先后顺序,在各第二控制组件中存储相应共享区域所对应的预设匹配值;其中,当以0代表初始状态,以大于0的值代表已写入状态,以小于0的值代表正在写入状态时,在第k个需读取相应共享区域的第二控制组件中存储与该共享区域对应的预设匹配值为n-k+1;当以0代表初始状态,以小于0的值代表已写入状态,以大于0的值代表正在写入状态,在第k个需读取相应共享区域的第二控制组件中存储与该共享区域对应的预设匹配值为-n+k-1;
相应第二控制组件在读取得到相应共享区域的状态标识为对应的预设匹配值时,读取该共享区域中的数据,以实现多个第二控制组件对共享区域的先后顺序读取。
8.根据权利要求1所述的快速数据访问方法,当每一个共享区域对应存储相应的实时数据时,其特征在于,使用状态序列代表所有共享区域的状态,其中,所述状态序列为m个比特位,每一个比特位代表一个共享区域的状态,当相应比特位为0时,代表对应共享区域为初始状态或已读取状态,当相应比特位为1时,代表对应共享区域为已写入状态;
在第一控制组件的寄存器中设置第一进度队列,在第二控制组件的寄存器中设置第二进度队列;其中,以位于第一进度队列队尾的状态序列作为第一状态序列,以位于第二进度队列队尾的状态序列作为第二状态序列;
第一控制组件根据第一状态序列判断是否能够进行相应共享区域的数据写入,第二控制组件根据靠近第二进度队列队尾的预设数量个状态序列判断是否能够进行相应共享区域的数据读取;
在第一控制组件对第k个共享区域进行数据写入后,生成标准写序列,将所述标准写序列发送给第二控制组件;其中,所述标准写序列的第k个比特位为1,其他比特位为0;第一控制组件对所述标准写序列和第一状态序列进行或操作,得到新的第一状态序列,将所述新的第一状态序列插入到所述第一进度队列的队尾;第二控制组件对所述标准写序列和第二状态序列进行或操作,得到新的第二状态序列,将所述新的第二状态序列插入到所述第二进度队列的队尾;
在第二控制组件对第k个共享区域进行数据读取后,生成标准读序列,将所述标准读序列发送给第一控制组件;其中,所述标准读序列的第k个比特位为0,其他比特位为1;第二控制组件对所述标准读序列和第二状态序列进行与操作,得到新的第二状态序列,将所述新的第二状态序列插入到所述第二进度队列的队尾;第一控制组件对所述标准读序列和第一状态序列进行与操作,得到新的第一状态序列,将所述新的第一状态序列插入到所述第一进度队列的队尾;
其中,所述第二控制组件根据靠近第二进度队列队尾的预设数量个状态序列判断是否能够进行相应共享区域的数据读取,具体包括:对靠近第二进度队列队尾的预设数量个状态序列进行与操作,得到目标序列,当所述目标序列中的第k个比特位为0,且第二状态序列的第k个比特位为1时,则判断得到能够对第k个共享区域进行数据读取。
9.一种快速数据访问装置,其特征在于,包括第一控制组件、第二控制组件和存储器;
各控制组件均通过多端口存储控制器与存储器相连接;其中,预先配置存储器的物理地址,使存储器中存在至少一块存储区域能够被各个控制组件共同访问,所述存储区域划分为多个共享区域,每个共享区域设置有相应的状态标识;
第一控制组件用于对相应共享区域进行数据写入,在数据写入完成后,将该共享区域所对应的状态标识更新为已写入状态;
第二控制组件用于读取各共享区域的状态标识,当读取到相应共享区域的状态标识为已写入状态时,读取该共享区域中的数据。
10.一种光模块,其特征在于,包括权利要求9所述的快速数据访问装置,并在所述快速数据访问装置中使用权利要求1-8任一所述的快速数据方法。
CN202311245908.4A 2023-09-25 2023-09-25 一种快速数据访问方法、快速数据访问装置及光模块 Pending CN117215491A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311245908.4A CN117215491A (zh) 2023-09-25 2023-09-25 一种快速数据访问方法、快速数据访问装置及光模块

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311245908.4A CN117215491A (zh) 2023-09-25 2023-09-25 一种快速数据访问方法、快速数据访问装置及光模块

Publications (1)

Publication Number Publication Date
CN117215491A true CN117215491A (zh) 2023-12-12

Family

ID=89049294

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311245908.4A Pending CN117215491A (zh) 2023-09-25 2023-09-25 一种快速数据访问方法、快速数据访问装置及光模块

Country Status (1)

Country Link
CN (1) CN117215491A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435143A (zh) * 2023-12-14 2024-01-23 芯瞳半导体技术(山东)有限公司 一种数据处理方法、装置及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117435143A (zh) * 2023-12-14 2024-01-23 芯瞳半导体技术(山东)有限公司 一种数据处理方法、装置及电子设备
CN117435143B (zh) * 2023-12-14 2024-04-02 芯瞳半导体技术(山东)有限公司 一种数据处理方法、装置及电子设备

Similar Documents

Publication Publication Date Title
CN110059020B (zh) 扩展内存的访问方法、设备以及系统
US10795837B2 (en) Allocation of memory buffers in computing system with multiple memory channels
US9032162B1 (en) Systems and methods for providing memory controllers with memory access request merging capabilities
US7716396B1 (en) Multi-reader multi-writer circular buffer memory
CN111160545A (zh) 人工神经网络处理系统及其数据处理方法
US20040054864A1 (en) Memory controller
DE102013205886A1 (de) Dynamische Bankmodus-Adressierung für Speicherzugriff
US20130151795A1 (en) Apparatus and method for controlling memory
CN110223216B (zh) 一种基于并行plb的数据处理方法、装置及计算机存储介质
CN108139994B (zh) 内存访问方法及内存控制器
CN117215491A (zh) 一种快速数据访问方法、快速数据访问装置及光模块
CN114356223A (zh) 存储器的访问方法及装置、芯片、电子设备
CN104183267A (zh) 数据处理设备和存储器设备
CN112506823A (zh) 一种fpga数据读写方法、装置、设备及可读存储介质
CN109739784A (zh) 一种数据处理方法、装置、系统及fpga加速卡
CN117707991B (zh) 一种数据读写方法、系统、设备及存储介质
CN114442908B (zh) 一种用于数据处理的硬件加速系统及芯片
CN108897701B (zh) cache存储装置
CN108959149A (zh) 一种基于共享内存的多核处理器交互总线设计方法
CN108427584A (zh) 快速启动的具有并行计算核的芯片及该芯片的配置方法
CN110825326A (zh) 提升ssd随机读性能的方法、装置、计算机设备及存储介质
CN112346879B (zh) 进程管理方法、装置、计算机设备及存储介质
CN109491785A (zh) 内存访问调度方法、装置及设备
CN109472355A (zh) 卷积处理引擎及控制方法和相应的卷积神经网络加速器
CN111797497B (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