CN105335323A - 一种数据突发的缓存装置和方法 - Google Patents
一种数据突发的缓存装置和方法 Download PDFInfo
- Publication number
- CN105335323A CN105335323A CN201510846816.0A CN201510846816A CN105335323A CN 105335323 A CN105335323 A CN 105335323A CN 201510846816 A CN201510846816 A CN 201510846816A CN 105335323 A CN105335323 A CN 105335323A
- Authority
- CN
- China
- Prior art keywords
- virtual fifo
- base address
- data burst
- pcie bus
- fifo
- 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
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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
- G06F13/4072—Drivers or receivers
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
- G06F13/4013—Coupling between buses with data restructuring with data re-ordering, e.g. Endian conversion
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
- G06F13/4018—Coupling between buses with data restructuring with data-width conversion
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种数据突发的缓存装置和方法,该装置包括:FIFO虚拟单元,用于在RAM中虚拟出多个虚拟FIFO;基地址映射单元,用于在接收到数据突发时,确定所述数据突发对应的PCIE总线,并从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO,将所述数据突发缓存到所述虚拟FIFO,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续。通过本发明的技术方案,通过在RAM中虚拟出多个虚拟FIFO,如1个RAM可虚拟出10个以上的虚拟FIFO,并使用多个虚拟FIFO缓存数据突发,从而节省FPGA内部的RAM,提高RAM利用率,有效提高数据接收效率,实现合并突发的目的。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种数据突发的缓存装置和方法。
背景技术
PCIE(PeripheralComponentInterfaceExpress,总线和接口标准)总线是Intel提出的高速点对点串行数据总线,是芯片和芯片之间进行高速数据传输时常用的数据总线。由于PCIE总线的传输速率很高,因此,芯片需要及时的将数据缓存下来,否则,将影响数据接收效率,而DDR(DoubleDataRateSDRAM(SynchronousDynamicRandomAccessMemory),双倍速率同步动态随机存储器)是常用的数据缓存部件。如图1所示,芯片1从DDR中读取数据突发,并通过PCIE总线将该数据突发发送给芯片2,之后,由芯片2将该数据突发缓存到DDR中。其中,数据突发是指一段连续存放的数据。
如图2所示,在多路数据传输过程中,芯片1通过PCIE总线a将数据突发a0、数据突发a1和数据突发a2分别发送给交换芯片(Switch),芯片2通过PCIE总线b将数据突发b0和数据突发b1分别发送给交换芯片,芯片3通过PCIE总线c将数据突发c0和数据突发c1分别发送给交换芯片。进一步的,交换芯片分别将数据突发a0、数据突发a1、数据突发a2、数据突发b0、数据突发b1、数据突发c0和数据突发c1发送给芯片4。进一步的,芯片4将数据突发a0、数据突发a1、数据突发a2缓存到DDR的FIFO1(FirstInFirstOut,先进先出)中,并将数据突发b0、数据突发b1缓存到DDR的FIFO2中,并将数据突发c0和数据突发c1缓存到DDR的FIFO3中。
由于每个FIFO至少消耗FPGA(FieldProgrammableGateArray,现场可编程门阵列)内部的一个RAM(RandomAccessMemory,随机存取存储器),因此上述方式消耗FPGA内部的三个RAM。而且随着数据采集路数的增多,需要使用的FIFO的数量也会增多,从而消耗FPGA内部的大量的RAM。
发明内容
本发明提供一种数据突发的缓存装置,所述装置具体包括:
FIFO虚拟单元,用于在随机存取存储器RAM中虚拟出多个虚拟FIFO;
基地址映射单元,用于在接收到数据突发时,确定所述数据突发对应的总线和接口标准PCIE总线,并从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO,将所述数据突发缓存到所述虚拟FIFO,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续。
所述基地址映射单元,具体用于在从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO的过程中,判断是否在所述RAM中缓存所述PCIE总线的数据突发;如果是,则判断当前是否已经存在所述PCIE总线对应的虚拟FIFO;如果存在,则直接将所述虚拟FIFO作为所述PCIE总线对应的虚拟FIFO;如果不存在,则从所述多个虚拟FIFO中选择一个未被使用的虚拟FIFO,并将当前选择的虚拟FIFO作为所述PCIE总线对应的虚拟FIFO。
所述基地址映射单元,具体用于维护各虚拟FIFO与其对应的基地址之间的映射关系,且在将所述数据突发缓存到所述虚拟FIFO的过程中,如果所述虚拟FIFO中已经存储有数据突发,则利用所述数据突发的缓存地址以及所述虚拟FIFO中存储的数据突发的缓存地址,在所述虚拟FIFO中缓存所述数据突发,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续;如果所述虚拟FIFO中没有存储数据突发,则利用所述基地址映射单元维护的虚拟FIFO与基地址之间的映射关系,获得所述虚拟FIFO对应的基地址,并从所述基地址开始缓存所述数据突发。
所述FIFO虚拟单元,具体用于在所述RAM中为每个PCIE总线虚拟出一个虚拟FIFO,且虚拟FIFO的基地址与对应PCIE总线的缓存基地址对应;
所述基地址映射单元,具体用于维护各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,且在从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO的过程中,判断是否在所述RAM中缓存所述PCIE总线的数据突发;如果是,则从所述数据突发中获得所述PCIE总线的缓存基地址,并利用各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,确定所述PCIE总线的缓存基地址对应的虚拟FIFO的基地址,并将确定的所述虚拟FIFO,作为所述PCIE总线对应的虚拟FIFO。
所述基地址映射单元,具体用于在将所述数据突发缓存到所述虚拟FIFO的过程中,如果所述虚拟FIFO中已经存储有数据突发,则利用所述数据突发的缓存地址以及所述虚拟FIFO中存储的数据突发的缓存地址,在所述虚拟FIFO中缓存所述数据突发,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续;如果所述虚拟FIFO中没有存储数据突发,则利用各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,获得所述虚拟FIFO对应的基地址,并从所述基地址开始缓存所述数据突发。
还包括:读写控制单元,用于针对所述多个虚拟FIFO中的每个虚拟FIFO,确定所述虚拟FIFO对应的写入地址,所述写入地址具体包括写入基地址和写入突发地址;其中,所述读写控制单元,具体用于从所述基地址映射单元维护的各虚拟FIFO与其对应的基地址之间的映射关系,或者各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系中,获得所述虚拟FIFO对应的写入基地址;所述读写控制单元,具体用于在每次将数据突发缓存到所述虚拟FIFO之后,读取所述虚拟FIFO对应的写入突发地址。
还包括:读写控制单元,用于针对所述多个虚拟FIFO中的每个虚拟FIFO,确定所述虚拟FIFO对应的读取地址,所述读取地址具体包括读取基地址;其中,所述读写控制单元,具体用于从所述基地址映射单元维护的各虚拟FIFO与其对应的基地址之间的映射关系,或者各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系中,获得所述虚拟FIFO对应的读取基地址;或者,获得所述虚拟FIFO对应的写入基地址,并将所述虚拟FIFO对应的写入基地址确定为所述虚拟FIFO对应的读取基地址。
本发明提供一种数据突发的缓存方法,所述方法包括以下步骤:
在随机存取存储器RAM中虚拟出多个虚拟先进先出FIFO;
在接收到数据突发时,确定所述数据突发对应的总线和接口标准PCIE总线,并从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO,将所述数据突发缓存到所述虚拟FIFO,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续。
所述从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO,将所述数据突发缓存到所述虚拟FIFO的过程,具体包括:
在从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO的过程中,判断是否在所述RAM中缓存所述PCIE总线的数据突发;如果是,判断当前是否已经存在所述PCIE总线对应的虚拟FIFO;如果存在,则直接将所述虚拟FIFO作为所述PCIE总线对应的虚拟FIFO;如果不存在,从所述多个虚拟FIFO中选择一个未被使用的虚拟FIFO,并将当前选择的虚拟FIFO作为所述PCIE总线对应的虚拟FIFO;在将所述数据突发缓存到所述虚拟FIFO的过程中,维护各虚拟FIFO与其对应的基地址之间的映射关系,如果所述虚拟FIFO中已经存储有数据突发,则利用所述数据突发的缓存地址以及所述虚拟FIFO中存储的数据突发的缓存地址,在所述虚拟FIFO中缓存所述数据突发,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续;如果所述虚拟FIFO中没有存储数据突发,则利用维护的虚拟FIFO与基地址之间的映射关系,获得所述虚拟FIFO对应的基地址,并从所述基地址开始缓存所述数据突发;或者,
在从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO的过程中,当在所述RAM中为每个PCIE总线虚拟出一个虚拟FIFO,且虚拟FIFO的基地址与对应PCIE总线的缓存基地址对应时,则维护各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,判断是否在所述RAM中缓存所述PCIE总线的数据突发;如果是,则从所述数据突发中获得所述PCIE总线的缓存基地址,并利用各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,确定所述PCIE总线的缓存基地址对应的虚拟FIFO的基地址,并将确定的所述虚拟FIFO,作为所述PCIE总线对应的虚拟FIFO;在将所述数据突发缓存到所述虚拟FIFO的过程中,如果所述虚拟FIFO中已经存储有数据突发,则利用所述数据突发的缓存地址以及所述虚拟FIFO中存储的数据突发的缓存地址,在所述虚拟FIFO中缓存所述数据突发,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续;如果所述虚拟FIFO中没有存储数据突发,则利用各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,获得所述虚拟FIFO对应的基地址,并从所述基地址开始缓存所述数据突发。
所述方法还包括:针对所述多个虚拟FIFO中的每个虚拟FIFO,确定所述虚拟FIFO对应的写入地址,所述写入地址具体包括写入基地址和写入突发地址;其中,从预先维护的各虚拟FIFO与其对应的基地址之间的映射关系,或者各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系中,获得所述虚拟FIFO对应的写入基地址;在每次将数据突发缓存到所述虚拟FIFO之后,读取所述虚拟FIFO对应的写入突发地址;和/或,
针对所述多个虚拟FIFO中的每个虚拟FIFO,确定所述虚拟FIFO对应的读取地址,所述读取地址具体包括读取基地址;其中,从预先维护的各虚拟FIFO与其对应的基地址之间的映射关系,或者各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系中,获得所述虚拟FIFO对应的读取基地址;或者,获得所述虚拟FIFO对应的写入基地址,并将所述虚拟FIFO对应的写入基地址确定为所述虚拟FIFO对应的读取基地址。
基于上述技术方案,本发明实施例中,通过在RAM中虚拟出多个虚拟FIFO(即多个虚拟FIFO占用一个RAM),如1个RAM可虚拟出10个以上的虚拟FIFO,并使用多个虚拟FIFO缓存数据突发,从而节省FPGA内部的RAM,提高RAM利用率,有效提高数据接收效率,实现合并突发的目的。针对每个虚拟FIFO,该虚拟FIFO中缓存的PCIE总线对应的多个数据突发的缓存地址连续。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是PCIE总线传输数据突发的示意图;
图2是多路数据传输过程的PCIE总线传输数据突发的示意图;
图3是DDR的读写效率的示意图;
图4是PCIE总线的传输效率的示意图;
图5是通过PCIE总线将数据突发从源DDR搬移到目标DDR的示意图;
图6是通过PCIE总线传输合并后的数据突发的示意图;
图7是增加DDR中缓存的数据突发的突发长度的示意图;
图8是多路数据突发在目标DDR的缓存地址不连续的示意图;
图9是本发明一种实施方式中的数据突发的缓存装置的结构示意图;
图10是本发明实施方式中利用虚拟FIFO进行数据突发合并的示意图;
图11是本发明实施方式中虚拟FIFO的写入地址和读取地址的示意图;
图12是本发明一种实施方式中的数据突发的缓存方法的流程图。
具体实施方式
在本申请使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
PCIE总线是高速点对点串行数据总线,是芯片和芯片之间进行高速数据传输时常用的数据总线。由于PCIE总线的传输速率很高,因此芯片需要及时将数据缓存下来,否则将影响数据接收效率,而DDR是常用的数据缓存部件。当DDR缓存速度小于PCIE总线传输速度时,数据接收就会发生拥堵,PCIE总线的接收效率就会下降,可见,提高DDR的缓存速度十分重要。
在通常情况下,影响DDR的缓存速度的因素有:DDR工作频率、DDR数据总线宽度、DDR效率。对于特定的硬件单板来说,DDR工作频率和DDR数据总线宽度是固定的,但是DDR效率是可变的。DDR效率是指DDR满负荷工作时,单位时间内数据读写占用的时间百分比。例如,DDR满负荷工作1秒钟,其中数据读写占用0.5秒钟,那么,DDR效率为50%。
在通常情况下,DDR读(写)是以数据突发的形式进行的,当DDR进行读(写)操作时,先准备数据的DDR来存放突发地址,并指定连续读(写)数据的个数,即突发长度,然后将指定的连续个数的数据从DDR中取出(存入DDR)。其中,在每次操作DDR时,只能读(写)一段连续存放的数据,这段连续存放的数据就是数据突发,这段数据的个数就是突发长度,这段数据中的第一个数据的地址就是这段数据的突发地址。当这段数据不能连续存放时,则需要分为多次突发操作,每次突发操作的突发地址都不一样。
在DDR的读(写)操作中,准备突发地址、突发长度、发起读(写)请求的时间开销是固定的,不会因为突发长度的变化而变化。另一方面,突发长度越长,则数据突发占用的时间越久,DDR的读写效率也就越高。如图3所示,为DDR的读写效率的示意图。为了提高DDR的读写效率,通常会设法增大数据突发的突发长度,将地址连续的数据合成一个大数据突发。
在通过PCIE总线传输数据突发时,PCIE总线主要是以数据包的形式进行数据传输,数据包的内容可以包括:包头、包尾和数据突发,数据突发在整个数据包中所占的比列就是PCIE总线的传输效率。数据突发的突发长度越长,则有效数据占比越高,PCIE总线的传输效率也就越高。如图4所示,为PCIE总线的传输效率的示意图,对于固定的单板来说,PCIE总线传输的数据突发的突发长度是有限的,因此,PCIE总线的传输效率也是有限的。
在PCIE总线传输数据突发的过程中,需要DDR参与,通过PCIE总线将数据突发从源DDR搬移到目标DDR。如图5所示,为通过PCIE总线将数据突发从源DDR搬移到目标DDR的示意图,假设源DDR中包括8个数据突发,则将8个数据突发封装成8个数据包,并通过PCIE总线依次传输8个数据包,从而将8个数据突发搬移到目标DDR。此外,还可以通过PCIE总线将8个数据突发在源DDR中的突发地址或者突发地址映射信息、突发长度搬移到目标DDR。其中,突发地址、突发长度会封装在数据包的包头中。
为了提高PCIE总线的传输效率,则:方式一、当DDR的缓存能力高于PCIE总线的传输能力时,可以增加PCIE总线传输的数据包中数据突发的突发长度,如图6所示,为PCIE总线传输合并后的数据突发的示意图。当被合并的数据突发在目标DDR的缓存地址连续时,则可以将目标DDR的缓存地址连续的多个数据突发(如数据突发1和数据突发2)合并成一个数据突发,以增加PCIE总线传输的数据包中的数据突发的突发长度,继而提高PCIE总线的传输效率。方式二、当DDR的缓存能力低于PCIE总线的传输能力时,可以增加DDR中缓存的数据突发的突发长度,如图7所示,为增加DDR中缓存的数据突发的突发长度的示意图。当被合并的数据突发在目标DDR的缓存地址连续时,则可以在PCIE总线的接收端设计FIFO(FirstInputFirstOutput,先入先出),并可以将目标DDR的缓存地址连续的多个数据突发合并成一个数据突发缓存到FIFO中,然后将该FIFO中缓存的多个数据突发存储到目标DDR,从而一次存储多个数据突发,提高PCIE总线的传输效率。
如图2所示,芯片1通过PCIE总线a将数据突发a0、数据突发a1和数据突发a2分别发送给交换芯片,芯片2通过PCIE总线b将数据突发b0和数据突发b1分别发送给交换芯片,芯片3通过PCIE总线c将数据突发c0和数据突发c1分别发送给交换芯片。交换芯片通过PCIE总线d分别将数据突发a0、数据突发a1、数据突发a2、数据突发b0、数据突发b1、数据突发c0和数据突发c1发送给芯片4。芯片4将数据突发a0、数据突发a1、数据突发a2缓存到DDR的FIFO1中,将数据突发b0、数据突发b1缓存到DDR的FIFO2中,将数据突发c0和数据突发c1缓存到DDR的FIFO3中。
在多路数据的传输过程中,由于PCIE总线a、PCIE总线b和PCIE总线c均是单独传输数据突发,因此,通过PCIE总线d接收到的数据突发在目标DDR的缓存地址并不连续。如图8所示,为多路数据突发在目标DDR的缓存地址不连续的示意图。数据突发a0、数据突发a1、数据突发a2在目标DDR的缓存地址不连续,数据突发b0、数据突发b1在目标DDR的缓存地址不连续,数据突发c0、数据突发c1在目标DDR的缓存地址不连续。因此,多路数据的传输过程中,无法采用上述方式来提高PCIE总线的传输效率。
为了使数据突发在目标DDR的缓存地址能够连续,则可以增加PCIE总线的接收端的FIFO数量,为每个PCIE总线设计1个FIFO。例如,为PCIE总线a设计FIFO1,并将PCIE总线a对应的数据突发a0、数据突发a1、数据突发a2缓存到FIFO1中。为PCIE总线b设计FIFO2,并将PCIE总线b对应的数据突发b0、数据突发b1缓存到FIFO2中。为PCIE总线c设计FIFO3,并将PCIE总线c对应的数据突发c0、数据突发c1缓存到FIFO3中。
然而,由于每个FIFO至少消耗掉FPGA内部的一个RAM,因此,上述方式会消耗FPGA内部的三个RAM。而且,随着数据采集路数(不同的采集路数对应不同的PCIE总线,如PCIE总线a等)的增多,需要使用的FIFO的数量也会增多,从而会消耗掉FPGA内部的大量的RAM。
针对上述发现,本发明实施例提出一种数据突发的缓存装置,该数据突发的缓存装置可以应用在FPGA上。如图9所示,为数据突发的缓存装置的结构示意图,该装置具体包括:FIFO虚拟单元,用于在RAM中虚拟出多个虚拟FIFO。基地址映射单元,用于在接收到数据突发时,确定该数据突发对应的PCIE总线,并从多个虚拟FIFO中确定该PCIE总线对应的虚拟FIFO,并将该数据突发缓存到该虚拟FIFO,以使该虚拟FIFO中缓存的该PCIE总线对应的多个数据突发的缓存地址连续。
考虑到FIFO中仅需要缓存2~4个数据突发就能够达到合并目的,然而,1个RAM中可以缓存的数据突发的数量多达几十个,因此,本发明实施例中,FIFO虚拟单元在一个RAM中虚拟出多个虚拟FIFO,每个虚拟FIFO与真实FIFO相同,只是其只占用RAM的部分存储空间。在RAM中虚拟出多个虚拟FIFO时,每个虚拟FIFO能够缓存的数据突发的数量可以根据实际经验配置,如每个虚拟FIFO能够缓存的数据突发的数量为4个时,则FIFO虚拟单元在一个RAM中虚拟出能够缓存4个数据突发的多个虚拟FIFO,且在RAM中虚拟出的虚拟FIFO的数量与RAM的大小以及虚拟FIFO的大小有关。
基地址映射单元从多个虚拟FIFO中确定该PCIE总线对应的虚拟FIFO,并将该数据突发缓存到该虚拟FIFO,以使该虚拟FIFO中缓存的该PCIE总线对应的多个数据突发的缓存地址连续的过程,具体可以包括但不限于如下两种方式:
方式一、基地址映射单元,具体用于在从多个虚拟FIFO中确定PCIE总线对应的虚拟FIFO的过程中,判断是否在RAM中缓存PCIE总线的数据突发;如果是,则判断当前是否已经存在该PCIE总线对应的虚拟FIFO;如果存在,则直接将该虚拟FIFO作为PCIE总线对应的虚拟FIFO;如果不存在,则从多个虚拟FIFO中选择一个未被使用的虚拟FIFO,并将当前选择的虚拟FIFO作为PCIE总线对应的虚拟FIFO。基地址映射单元,具体用于维护各虚拟FIFO与其对应的基地址之间的映射关系,且在将数据突发缓存到虚拟FIFO的过程中,如果虚拟FIFO中已经存储有数据突发,则利用数据突发的缓存地址以及虚拟FIFO中存储的数据突发的缓存地址,在该虚拟FIFO中缓存数据突发,以使虚拟FIFO中缓存的PCIE总线对应的多个数据突发的缓存地址连续;如果虚拟FIFO中没有存储数据突发,则利用基地址映射单元维护的虚拟FIFO与基地址之间的映射关系,获得该虚拟FIFO对应的基地址,并从该基地址开始缓存数据突发。
基于上述过程,可以在RAM中虚拟出的多个虚拟FIFO中存储数据突发,从而节省FPGA内部的RAM,提高RAM利用率。
方式二、FIFO虚拟单元,具体用于在RAM中为每个PCIE总线虚拟出一个虚拟FIFO,且虚拟FIFO的基地址与对应PCIE总线的缓存基地址对应,即可以基于PCIE总线的缓存基地址配置与该PCIE总线对应的虚拟FIFO的基地址;基于此,基地址映射单元,具体用于维护各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,且在从多个虚拟FIFO中确定PCIE总线对应的虚拟FIFO的过程中,判断是否在RAM中缓存该PCIE总线的数据突发;如果是,则从该数据突发中获得该PCIE总线的缓存基地址,并利用各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,确定该PCIE总线的缓存基地址对应的虚拟FIFO的基地址,并将确定的该虚拟FIFO,直接作为该PCIE总线对应的虚拟FIFO。进一步的,基地址映射单元,具体用于在将数据突发缓存到虚拟FIFO的过程中,如果虚拟FIFO中已经存储有数据突发,则利用数据突发的缓存地址以及虚拟FIFO中存储的数据突发的缓存地址,在该虚拟FIFO中缓存数据突发,以使该虚拟FIFO中缓存的PCIE总线对应的多个数据突发的缓存地址连续;如果虚拟FIFO中没有存储数据突发,则利用各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,获得该虚拟FIFO对应的基地址,并从该基地址开始缓存数据突发。
基于上述过程,可以在RAM中虚拟出的多个虚拟FIFO中存储数据突发,从而节省FPGA内部的RAM,提高RAM利用率。
在上述方式一和方式二中,基地址映射单元可以利用数据突发中携带的PCIE总线的标识信息,确定该数据突发对应的PCIE总线。
针对上述第一种实现方案,可以在RAM中虚拟出多个虚拟FIFO,这多个虚拟FIFO均可以被任意的PCIE总线的数据突发占用,在从一个PCIE总线接收到数据突发时,可以选择未被使用的虚拟FIFO存储该数据突发,在此应用场景下,不需要事先知道会收到哪些PCIE总线的数据突发,而且可以合理的利用各个虚拟FIFO。针对上述第二种实现方案,可以在RAM中为每个PCIE总线虚拟出一个虚拟FIFO,该虚拟FIFO只能被该PCIE总线的数据突发占用,在从一个PCIE总线接收到数据突发时,直接选择该虚拟FIFO存储该数据突发,在此应用场景下,需要事先知道会收到哪些PCIE总线的数据突发,可以保证每个PCIE总线只能使用自己的虚拟FIFO。
针对图2所示的应用场景,针对上述第一种实现方案,假设FIFO虚拟单元在RAM中虚拟出虚拟FIFO1-虚拟FIFO10,且基地址映射单元维护有虚拟FIFO1-虚拟FIFO10与其对应的基地址1-基地址10之间的映射关系。针对上述第二种实现方案,FIFO虚拟单元在RAM中为PCIE总线a虚拟出虚拟FIFO1,为PCIE总线b虚拟出虚拟FIFO2,为PCIE总线c虚拟出虚拟FIFO3,且基地址映射单元维护有虚拟FIFO1的基地址1与PCIE总线a的缓存基地址1之间的映射关系,虚拟FIFO2的基地址2与PCIE总线b的缓存基地址2之间的映射关系,虚拟FIFO3的基地址3与PCIE总线c的缓存基地址3之间的映射关系,其中,每个虚拟FIFO均有各自的基地址,且基地址的数量与虚拟FIFO的数量相同,且虚拟FIFO的基地址与DDR缓存的基地址(即PCIE总线的缓存基地址)相同。为了方便描述,后续以第一种实现方案的处理过程为例进行说明。
如图10所示,为利用虚拟FIFO进行数据突发合并的示意图。假设交换芯片通过PCIE总线d依次将数据突发a0、数据突发b0、数据突发c0、数据突发a1、数据突发b1、数据突发c1和数据突发a2发送给芯片4。在此基础上,本发明实施例中,在接收到数据突发a0时,基地址映射单元获得数据突发a0中携带的PCIE总线的标识信息(PCIE总线a),确定PCIE总线为PCIE总线a,由于当前不存在PCIE总线a对应的虚拟FIFO,因此从虚拟FIFO1-虚拟FIFO10中选择一个未被使用的虚拟FIFO1,并获得虚拟FIFO1对应的基地址1,并从基地址1开始,将数据突发a0缓存到虚拟FIFO1中。在接收到数据突发b0时,基地址映射单元获得数据突发b0中携带的PCIE总线的标识信息(PCIE总线b),确定PCIE总线为PCIE总线b,由于当前不存在PCIE总线b对应的虚拟FIFO,因此从虚拟FIFO1-虚拟FIFO10中选择一个未被使用的虚拟FIFO2,并获得虚拟FIFO2对应的基地址2,并从基地址2开始,将数据突发b0缓存到虚拟FIFO2中。在接收到数据突发c0时,基地址映射单元获得数据突发c0中携带的PCIE总线的标识信息(PCIE总线c),确定PCIE总线为PCIE总线c,由于当前不存在PCIE总线c对应的虚拟FIFO,因此从虚拟FIFO1-虚拟FIFO10中选择一个未被使用的虚拟FIFO3,并获得虚拟FIFO3对应的基地址3,并从基地址3开始,将数据突发c0缓存到虚拟FIFO3中。在接收到数据突发a1时,基地址映射单元获得数据突发a1中携带的PCIE总线的标识信息(PCIE总线a),确定PCIE总线为PCIE总线a,由于当前存在PCIE总线a对应的虚拟FIFO1,因此从虚拟FIFO1中缓存的数据突发a0之后,开始将数据突发a1缓存到虚拟FIFO1中,且虚拟FIFO1中缓存的数据突发a0和数据突发a1的缓存地址连续。在接收到数据突发b1时,基地址映射单元获得数据突发b1中携带的PCIE总线的标识信息(PCIE总线b),确定PCIE总线为PCIE总线b,由于当前存在PCIE总线b对应的虚拟FIFO2,因此从虚拟FIFO2中缓存的数据突发b0之后,开始将数据突发b1缓存到虚拟FIFO2中,且虚拟FIFO2中缓存的数据突发b0和数据突发b1的缓存地址连续。在接收到数据突发c1时,基地址映射单元获得数据突发c1中携带的PCIE总线的标识信息(PCIE总线c),确定PCIE总线为PCIE总线c,由于当前存在PCIE总线c对应的虚拟FIFO3,因此从虚拟FIFO3中缓存的数据突发c0之后,开始将数据突发c1缓存到虚拟FIFO3中,且虚拟FIFO3中缓存的数据突发c0和数据突发c1的缓存地址连续。在接收到数据突发a2时,基地址映射单元获得数据突发a2中携带的PCIE总线的标识信息(PCIE总线a),确定PCIE总线为PCIE总线a,由于当前存在PCIE总线a对应的虚拟FIFO1,因此从虚拟FIFO1中缓存的数据突发a1之后,开始将数据突发a2缓存到虚拟FIFO1中,且虚拟FIFO1中缓存的数据突发a0、数据突发a1和数据突发a2的缓存地址连续。
本发明实施例中,该数据突发的缓存装置还包括:读写控制单元,用于针对多个虚拟FIFO中的每个虚拟FIFO,确定各虚拟FIFO对应的写入地址,该写入地址具体可以包括但不限于:写入基地址和写入突发地址。基于此,读写控制单元,具体用于从基地址映射单元维护的各虚拟FIFO与其对应的基地址之间的映射关系,或者各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系中,获得各虚拟FIFO对应的写入基地址。读写控制单元,具体用于在每次将数据突发缓存到虚拟FIFO之后,读取该虚拟FIFO对应的写入突发地址。此外,读写控制单元,用于针对多个虚拟FIFO中的每个虚拟FIFO,确定各虚拟FIFO对应的读取地址,该读取地址具体可以包括但不限于读取基地址。基于此,读写控制单元,具体用于从基地址映射单元维护的各虚拟FIFO与其对应的基地址之间的映射关系,或者各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系中,获得各虚拟FIFO对应的读取基地址;或者,获得虚拟FIFO对应的写入基地址,并将该虚拟FIFO对应的写入基地址确定为该虚拟FIFO对应的读取基地址。进一步的,当虚拟FIFO中存储的数据突发达到预设的突发长度(表示虚拟FIFO已经存满)或者接收到读取数据突发的命令时,读写控制单元还可以基于读取基地址从虚拟FIFO中读取相应的读取数据。
基于上述过程,可以实现写入地址的管理和读取地址的管理,继而可以利用写入地址实现数据的写入,并可以利用读取地址实现数据的读取。
如图11所示,为虚拟FIFO的写入地址和读取地址的示意图。
针对虚拟FIFO的写控制过程,写入地址包括RAM块的写入基地址和RAM块的写入突发地址。RAM块的写入基地址可以由基地址映射单元提供。在虚拟FIFO中缓存新的数据突发时,更新RAM块的写入突发地址,且第一个数据突发的写入突发地址与写入基地址相同。其中,如果有新的数据突发缓存到本RAM块的虚拟FIFO中,则RAM块的写入突发地址自动加1,当写入突发地址达到突发合并个数时,则重新开始计数;如果新的数据突发未缓存到本RAM块的虚拟FIFO中,则本RAM块的写入突发地址保持不变。
针对虚拟FIFO的读控制过程,与虚拟FIFO的写控制并不一样,由于读RAM时只需要读取1个数据突发,因此,对于虚拟FIFO的读控制来说,没有RAM块的读取突发地址,只有RAM块的读取基地址,即读取地址只包括RAM块的读取基地址。其中,RAM块的读取基地址的方式为:当RAM块写入突发地址的数量达到突发合并个数时,将当前RAM块的写入基地址作为RAM块的读取基地址,或者由基地址映射单元提供RAM块的读取基地址。
基于上述技术方案,本发明实施例中,通过在RAM中虚拟出多个虚拟FIFO(即多个虚拟FIFO占用一个RAM),如1个RAM可虚拟出10个以上的虚拟FIFO,并使用多个虚拟FIFO缓存数据突发,从而节省FPGA内部的RAM,提高RAM利用率,有效提高数据接收效率,实现合并突发的目的。针对每个虚拟FIFO,该虚拟FIFO中缓存的PCIE总线对应的多个数据突发的缓存地址连续。
基于与上述数据突发的缓存装置相同的技术构思,本发明实施例中还提出一种数据突发的缓存方法,如图12所示,所述方法包括以下步骤:
步骤101,在随机存取存储器RAM中虚拟出多个虚拟先进先出FIFO。
步骤102,在接收到数据突发时,确定所述数据突发对应的PCIE总线,并从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO,将所述数据突发缓存到所述虚拟FIFO,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续。
本发明实施例中,所述从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO,将所述数据突发缓存到所述虚拟FIFO的过程,具体可以包括但不限于如下方式:方式一、在从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO的过程中,判断是否在所述RAM中缓存所述PCIE总线的数据突发;如果是,判断当前是否已经存在所述PCIE总线对应的虚拟FIFO;如果存在,则直接将所述虚拟FIFO作为所述PCIE总线对应的虚拟FIFO;如果不存在,从所述多个虚拟FIFO中选择一个未被使用的虚拟FIFO,并将当前选择的虚拟FIFO作为所述PCIE总线对应的虚拟FIFO;在将所述数据突发缓存到所述虚拟FIFO的过程中,维护各虚拟FIFO与其对应的基地址之间的映射关系,如果所述虚拟FIFO中已经存储有数据突发,则利用所述数据突发的缓存地址以及所述虚拟FIFO中存储的数据突发的缓存地址,在所述虚拟FIFO中缓存所述数据突发,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续;如果所述虚拟FIFO中没有存储数据突发,则利用维护的虚拟FIFO与基地址之间的映射关系,获得所述虚拟FIFO对应的基地址,并从所述基地址开始缓存所述数据突发;或者,方式二、在从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO的过程中,当在所述RAM中为每个PCIE总线虚拟出一个虚拟FIFO,且虚拟FIFO的基地址与对应PCIE总线的缓存基地址对应时,则维护各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,判断是否在所述RAM中缓存所述PCIE总线的数据突发;如果是,则从所述数据突发中获得所述PCIE总线的缓存基地址,并利用各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,确定所述PCIE总线的缓存基地址对应的虚拟FIFO的基地址,并将确定的所述虚拟FIFO,作为所述PCIE总线对应的虚拟FIFO;在将所述数据突发缓存到所述虚拟FIFO的过程中,如果所述虚拟FIFO中已经存储有数据突发,则利用所述数据突发的缓存地址以及所述虚拟FIFO中存储的数据突发的缓存地址,在所述虚拟FIFO中缓存所述数据突发,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续;如果所述虚拟FIFO中没有存储数据突发,则利用各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,获得所述虚拟FIFO对应的基地址,并从所述基地址开始缓存所述数据突发。
本发明实施例中,针对所述多个虚拟FIFO中的每个虚拟FIFO,确定所述虚拟FIFO对应的写入地址,所述写入地址具体包括写入基地址和写入突发地址;其中,从预先维护的各虚拟FIFO与其对应的基地址之间的映射关系,或者各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系中,获得所述虚拟FIFO对应的写入基地址;在每次将数据突发缓存到所述虚拟FIFO之后,读取所述虚拟FIFO对应的写入突发地址;和/或,
针对所述多个虚拟FIFO中的每个虚拟FIFO,确定所述虚拟FIFO对应的读取地址,所述读取地址具体包括读取基地址;其中,从预先维护的各虚拟FIFO与其对应的基地址之间的映射关系,或者各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系中,获得所述虚拟FIFO对应的读取基地址;或者,获得所述虚拟FIFO对应的写入基地址,并将所述虚拟FIFO对应的写入基地址确定为所述虚拟FIFO对应的读取基地址。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (10)
1.一种数据突发的缓存装置,其特征在于,所述装置具体包括:
FIFO虚拟单元,用于在随机存取存储器RAM中虚拟出多个虚拟FIFO;
基地址映射单元,用于在接收到数据突发时,确定所述数据突发对应的总线和接口标准PCIE总线,并从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO,将所述数据突发缓存到所述虚拟FIFO,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续。
2.根据权利要求1所述的装置,其特征在于,
所述基地址映射单元,具体用于在从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO的过程中,判断是否在所述RAM中缓存所述PCIE总线的数据突发;如果是,则判断当前是否已经存在所述PCIE总线对应的虚拟FIFO;如果存在,则直接将所述虚拟FIFO作为所述PCIE总线对应的虚拟FIFO;如果不存在,则从所述多个虚拟FIFO中选择一个未被使用的虚拟FIFO,并将当前选择的虚拟FIFO作为所述PCIE总线对应的虚拟FIFO。
3.根据权利要求2所述的装置,其特征在于,
所述基地址映射单元,具体用于维护各虚拟FIFO与其对应的基地址之间的映射关系,且在将所述数据突发缓存到所述虚拟FIFO的过程中,如果所述虚拟FIFO中已经存储有数据突发,则利用所述数据突发的缓存地址以及所述虚拟FIFO中存储的数据突发的缓存地址,在所述虚拟FIFO中缓存所述数据突发,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续;如果所述虚拟FIFO中没有存储数据突发,则利用所述基地址映射单元维护的虚拟FIFO与基地址之间的映射关系,获得所述虚拟FIFO对应的基地址,并从所述基地址开始缓存所述数据突发。
4.根据权利要求1所述的装置,其特征在于,
所述FIFO虚拟单元,具体用于在所述RAM中为每个PCIE总线虚拟出一个虚拟FIFO,且虚拟FIFO的基地址与对应PCIE总线的缓存基地址对应;
所述基地址映射单元,具体用于维护各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,且在从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO的过程中,判断是否在所述RAM中缓存所述PCIE总线的数据突发;如果是,则从所述数据突发中获得所述PCIE总线的缓存基地址,并利用各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,确定所述PCIE总线的缓存基地址对应的虚拟FIFO的基地址,并将确定的所述虚拟FIFO,作为所述PCIE总线对应的虚拟FIFO。
5.根据权利要求4所述的装置,其特征在于,
所述基地址映射单元,具体用于在将所述数据突发缓存到所述虚拟FIFO的过程中,如果所述虚拟FIFO中已经存储有数据突发,则利用所述数据突发的缓存地址以及所述虚拟FIFO中存储的数据突发的缓存地址,在所述虚拟FIFO中缓存所述数据突发,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续;如果所述虚拟FIFO中没有存储数据突发,则利用各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,获得所述虚拟FIFO对应的基地址,并从所述基地址开始缓存所述数据突发。
6.根据权利要求1-5任一项所述的装置,其特征在于,还包括:
读写控制单元,用于针对所述多个虚拟FIFO中的每个虚拟FIFO,确定所述虚拟FIFO对应的写入地址,所述写入地址具体包括写入基地址和写入突发地址;其中,所述读写控制单元,具体用于从所述基地址映射单元维护的各虚拟FIFO与其对应的基地址之间的映射关系,或者各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系中,获得所述虚拟FIFO对应的写入基地址;所述读写控制单元,具体用于在每次将数据突发缓存到所述虚拟FIFO之后,读取所述虚拟FIFO对应的写入突发地址。
7.根据权利要求1-5任一项所述的装置,其特征在于,还包括:
读写控制单元,用于针对所述多个虚拟FIFO中的每个虚拟FIFO,确定所述虚拟FIFO对应的读取地址,所述读取地址具体包括读取基地址;其中,
所述读写控制单元,具体用于从所述基地址映射单元维护的各虚拟FIFO与其对应的基地址之间的映射关系,或者各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系中,获得所述虚拟FIFO对应的读取基地址;或者,获得所述虚拟FIFO对应的写入基地址,并将所述虚拟FIFO对应的写入基地址确定为所述虚拟FIFO对应的读取基地址。
8.一种数据突发的缓存方法,其特征在于,所述方法包括以下步骤:
在随机存取存储器RAM中虚拟出多个虚拟先进先出FIFO;
在接收到数据突发时,确定所述数据突发对应的总线和接口标准PCIE总线,并从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO,将所述数据突发缓存到所述虚拟FIFO,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续。
9.根据权利要求8所述的方法,其特征在于,
所述从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO,将所述数据突发缓存到所述虚拟FIFO的过程,具体包括:
在从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO的过程中,判断是否在所述RAM中缓存所述PCIE总线的数据突发;如果是,判断当前是否已经存在所述PCIE总线对应的虚拟FIFO;如果存在,则直接将所述虚拟FIFO作为所述PCIE总线对应的虚拟FIFO;如果不存在,从所述多个虚拟FIFO中选择一个未被使用的虚拟FIFO,并将当前选择的虚拟FIFO作为所述PCIE总线对应的虚拟FIFO;在将所述数据突发缓存到所述虚拟FIFO的过程中,维护各虚拟FIFO与其对应的基地址之间的映射关系,如果所述虚拟FIFO中已经存储有数据突发,则利用所述数据突发的缓存地址以及所述虚拟FIFO中存储的数据突发的缓存地址,在所述虚拟FIFO中缓存所述数据突发,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续;如果所述虚拟FIFO中没有存储数据突发,则利用维护的虚拟FIFO与基地址之间的映射关系,获得所述虚拟FIFO对应的基地址,并从所述基地址开始缓存所述数据突发;或者,
在从所述多个虚拟FIFO中确定所述PCIE总线对应的虚拟FIFO的过程中,当在所述RAM中为每个PCIE总线虚拟出一个虚拟FIFO,且虚拟FIFO的基地址与对应PCIE总线的缓存基地址对应时,则维护各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,判断是否在所述RAM中缓存所述PCIE总线的数据突发;如果是,则从所述数据突发中获得所述PCIE总线的缓存基地址,并利用各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,确定所述PCIE总线的缓存基地址对应的虚拟FIFO的基地址,并将确定的所述虚拟FIFO,作为所述PCIE总线对应的虚拟FIFO;在将所述数据突发缓存到所述虚拟FIFO的过程中,如果所述虚拟FIFO中已经存储有数据突发,则利用所述数据突发的缓存地址以及所述虚拟FIFO中存储的数据突发的缓存地址,在所述虚拟FIFO中缓存所述数据突发,以使所述虚拟FIFO中缓存的所述PCIE总线对应的多个数据突发的缓存地址连续;如果所述虚拟FIFO中没有存储数据突发,则利用各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系,获得所述虚拟FIFO对应的基地址,并从所述基地址开始缓存所述数据突发。
10.根据权利要求8或9所述的方法,其特征在于,所述方法还包括:
针对所述多个虚拟FIFO中的每个虚拟FIFO,确定所述虚拟FIFO对应的写入地址,所述写入地址具体包括写入基地址和写入突发地址;其中,从预先维护的各虚拟FIFO与其对应的基地址之间的映射关系,或者各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系中,获得所述虚拟FIFO对应的写入基地址;在每次将数据突发缓存到所述虚拟FIFO之后,读取所述虚拟FIFO对应的写入突发地址;和/或,
针对所述多个虚拟FIFO中的每个虚拟FIFO,确定所述虚拟FIFO对应的读取地址,所述读取地址具体包括读取基地址;其中,从预先维护的各虚拟FIFO与其对应的基地址之间的映射关系,或者各虚拟FIFO的基地址与对应PCIE总线的缓存基地址之间的一一映射关系中,获得所述虚拟FIFO对应的读取基地址;或者,获得所述虚拟FIFO对应的写入基地址,并将所述虚拟FIFO对应的写入基地址确定为所述虚拟FIFO对应的读取基地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510846816.0A CN105335323B (zh) | 2015-11-26 | 2015-11-26 | 一种数据突发的缓存装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510846816.0A CN105335323B (zh) | 2015-11-26 | 2015-11-26 | 一种数据突发的缓存装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105335323A true CN105335323A (zh) | 2016-02-17 |
CN105335323B CN105335323B (zh) | 2019-04-30 |
Family
ID=55285869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510846816.0A Active CN105335323B (zh) | 2015-11-26 | 2015-11-26 | 一种数据突发的缓存装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105335323B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106533872A (zh) * | 2016-11-17 | 2017-03-22 | 天津津航计算技术研究所 | 用于提高fc‑ae‑1553总线传输效率的系统 |
CN109947580A (zh) * | 2019-03-27 | 2019-06-28 | 上海燧原智能科技有限公司 | 中断处理方法、装置、设备和存储介质 |
CN111427811A (zh) * | 2020-03-19 | 2020-07-17 | 上海御渡半导体科技有限公司 | 一种提高pcie控制ddr通信速率的装置及方法 |
CN114036077A (zh) * | 2021-11-17 | 2022-02-11 | 海光信息技术股份有限公司 | 数据处理方法及相关装置 |
CN114968169A (zh) * | 2022-05-17 | 2022-08-30 | 赵浩然 | 一种fgpa控制的ddr映射多个ddr_fifo实现系统及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0752796A2 (en) * | 1995-07-07 | 1997-01-08 | Sun Microsystems, Inc. | Buffering of data for transmission in a computer communications system interface |
CN1680929A (zh) * | 2004-04-08 | 2005-10-12 | 华为技术有限公司 | 一种多通道数据缓冲设计方法与装置 |
CN101059774A (zh) * | 2007-06-19 | 2007-10-24 | 华为技术有限公司 | 动态存储管理装置及方法 |
CN102096648A (zh) * | 2010-12-09 | 2011-06-15 | 深圳中兴力维技术有限公司 | 基于fpga的实现多路突发数据业务缓存的系统及方法 |
CN102520902A (zh) * | 2011-11-01 | 2012-06-27 | 福建富顺电子有限公司 | 基于单片块ram的并行写入多fifo实现方法 |
-
2015
- 2015-11-26 CN CN201510846816.0A patent/CN105335323B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0752796A2 (en) * | 1995-07-07 | 1997-01-08 | Sun Microsystems, Inc. | Buffering of data for transmission in a computer communications system interface |
CN1680929A (zh) * | 2004-04-08 | 2005-10-12 | 华为技术有限公司 | 一种多通道数据缓冲设计方法与装置 |
CN101059774A (zh) * | 2007-06-19 | 2007-10-24 | 华为技术有限公司 | 动态存储管理装置及方法 |
CN102096648A (zh) * | 2010-12-09 | 2011-06-15 | 深圳中兴力维技术有限公司 | 基于fpga的实现多路突发数据业务缓存的系统及方法 |
CN102520902A (zh) * | 2011-11-01 | 2012-06-27 | 福建富顺电子有限公司 | 基于单片块ram的并行写入多fifo实现方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106533872A (zh) * | 2016-11-17 | 2017-03-22 | 天津津航计算技术研究所 | 用于提高fc‑ae‑1553总线传输效率的系统 |
CN106533872B (zh) * | 2016-11-17 | 2019-05-10 | 天津津航计算技术研究所 | 用于提高fc-ae-1553总线传输效率的系统 |
CN109947580A (zh) * | 2019-03-27 | 2019-06-28 | 上海燧原智能科技有限公司 | 中断处理方法、装置、设备和存储介质 |
CN111427811A (zh) * | 2020-03-19 | 2020-07-17 | 上海御渡半导体科技有限公司 | 一种提高pcie控制ddr通信速率的装置及方法 |
WO2021184741A1 (zh) * | 2020-03-19 | 2021-09-23 | 上海御渡半导体科技有限公司 | 一种提高pcie控制ddr通信速率的装置及方法 |
CN114036077A (zh) * | 2021-11-17 | 2022-02-11 | 海光信息技术股份有限公司 | 数据处理方法及相关装置 |
CN114968169A (zh) * | 2022-05-17 | 2022-08-30 | 赵浩然 | 一种fgpa控制的ddr映射多个ddr_fifo实现系统及方法 |
CN114968169B (zh) * | 2022-05-17 | 2023-10-10 | 赵浩然 | 一种fpga控制的ddr映射多个ddr_fifo实现系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105335323B (zh) | 2019-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107204198B (zh) | 高速访问双倍速率同步动态随机存储器的控制方法及装置 | |
US8225026B2 (en) | Data packet access control apparatus and method thereof | |
CN105335323A (zh) | 一种数据突发的缓存装置和方法 | |
CN102096648B (zh) | 基于fpga的实现多路突发数据业务缓存的系统及方法 | |
JP6077125B2 (ja) | データ処理方法及び装置 | |
US7627672B2 (en) | Network packet storage method and network packet transmitting apparatus using the same | |
CN103136120B (zh) | 行缓冲管理策略确定方法和装置、bank划分方法和装置 | |
EP3657744B1 (en) | Message processing | |
CN108462649B (zh) | 降低onu中拥塞状态下高优先级数据传输时延的方法和装置 | |
TWI526927B (zh) | 資料緩衝器記憶體、資料緩衝器記憶體系統及其資料儲存方法 | |
CN107783727A (zh) | 一种内存设备的访问方法、装置和系统 | |
CN103581055A (zh) | 报文的保序方法、流量调度芯片及分布式存储系统 | |
CN103117962B (zh) | 一种星载共享存储交换装置 | |
CN105516023A (zh) | 一种报文转发方法和装置 | |
US20190065103A1 (en) | Transmission device and transmission method | |
CN111259014B (zh) | 一种fpga的单向链表数据存储方法及系统 | |
JP2005084907A (ja) | メモリ帯域制御装置 | |
US10031884B2 (en) | Storage apparatus and method for processing plurality of pieces of client data | |
US9658951B1 (en) | Scalable high bandwidth memory in a network device | |
CN110096456A (zh) | 一种高速率大容量缓存方法与装置 | |
CN107273100B (zh) | 一种数据实时处理及存储装置 | |
CN102571535B (zh) | 一种数据延迟装置、方法及通信系统 | |
CN108984148A (zh) | 一种基于同步fifo存储器的数据存储的方法及存储器 | |
KR102338872B1 (ko) | 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법 | |
CN109992198B (zh) | 神经网络的数据传输方法及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |