CN116107923B - 一种基于bram的多对多高速访存架构和访存系统 - Google Patents
一种基于bram的多对多高速访存架构和访存系统 Download PDFInfo
- Publication number
- CN116107923B CN116107923B CN202211682925.XA CN202211682925A CN116107923B CN 116107923 B CN116107923 B CN 116107923B CN 202211682925 A CN202211682925 A CN 202211682925A CN 116107923 B CN116107923 B CN 116107923B
- Authority
- CN
- China
- Prior art keywords
- target
- read
- data
- data request
- bram
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 43
- 238000004891 communication Methods 0.000 claims abstract description 15
- 239000000872 buffer Substances 0.000 claims description 18
- 238000012546 transfer Methods 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 4
- 238000013461 design Methods 0.000 abstract description 9
- 230000005540 biological transmission Effects 0.000 abstract description 7
- 238000000034 method Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 238000004088 simulation Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 3
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
- G06F12/0692—Multiconfiguration, e.g. local and global addressing
-
- 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/1647—Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开一种基于BRAM的多对多高速访存架构和访存系统,涉及FPGA领域,包括至少两组数据请求端、至少两组交叉开关、以及与交叉开关一一映射的片上存储器BRAM;每个数据请求端分别与所有的交叉开关通信连接,发送读/写数据请求,以及接收反馈数据;交叉开关和BRAM之间通过协议转换器Bridge通信连接,并基于确定的目标读/写数据请求在对应的BRAM上读/写数据;交叉开关内置有仲裁器,用于接收至少两组数据请求端发送的读/写数据请求,并按照设定的仲裁协议确定目标读/写数据请求。该设计可以实现多对多任务和数据访存,有效降低传输时延,且消除了数据突发传输过程中的4K边界问题。
Description
技术领域
本申请实施例涉及FPGA技术领域,特别涉及一种基于BRAM的多对多高速访存架构和访存系统。
背景技术
随机块存储器(BRAM--Block Random Access Memory,BRAM)是FPGA上设置的片上存储器,是FPGA的核心数据缓存,用于缓存哈希表的热数据以及作为KVS通信环节包处理单元的缓存。AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA 3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持Outstanding传输访问和乱序访问,并更加容易进行时序收敛。AXI技术丰富了现有的AMBA标准内容,满足超高性能和复杂的片上系统(SoC)设计的需求。
目前,多数访存大都采用AXI总线协议,若自己设计的模块需要访问FPGA的片上存储资源,则需依据AXI总线协议去改写自己的访存端口。但面向地址映射的AXI总线协议,控制较为复杂。AXI总线协议中不常用的接口,包括cache、lock、prot、resp、qos、region等,较多接口在多数情况下又显得较为冗余。更为关键的是,因为无法实现数据流水(存在请求和应答的访问机制,通过AXI总线读写必须等到写/读反馈回来后才能展开下一次的读/写),对BRAM的读写效率会降低。另外,对于类似HBM、DDR这种大容量的存储而言,若需要对内部数据频繁读取、计算和回写,AXI的读写机制显然会浪费大量时间在多次读写数据操作上。此外,目前Xilinx公司提供的AXI相关的IP,如axi_bram_control,不支持处理AXI突发传输过程中的跨4k边界问题,这样就会导致从BRAM返回的数据出错。
发明内容
本申请实施例提供一种基于BRAM的多对多高速访存架构和访存系统,解决AXI总线接口协议无法实现流水以及时延的问题。
一方面,本申请提供一种基于BRAM的多对多高速访存架构,用于FPGA芯片,包括至少两组数据请求端、至少两组交叉开关、以及与所述交叉开关一一映射的片上存储器BRAM;每个所述数据请求端分别与所有的所述交叉开关通信连接,发送读/写数据请求,以及接收反馈数据;
所述交叉开关和所述BRAM之间通过协议转换器Bridge通信连接,并基于确定的目标读/写数据请求在对应的所述BRAM上读/写数据;
所述交叉开关内置有仲裁器,用于接收至少两组所述数据请求端发送的所述读/写数据请求,并按照设定的仲裁协议确定所述目标读/写数据请求。
具体的,所述数据请求端和对应的所述交叉开关之间还接入有数据分配器DEMux;所述交叉开关分别内置有所述仲裁器、解码器以及id寄存器;
第k交叉开关内置的第k仲裁器与第k id寄存器连接,所述第k id寄存器与所述第k解码器连接;所述第k仲裁器用于接收目标数据分配器发送的所述读/写数据请求,并确定仲裁后目标数据请求端的id信息;所述第k解码器用于将读/写的数据返回到所述目标数据请求端;
第i数据请求端发送的所述读/写数据请求通过第i数据分配器发送至目标交叉开关上的目标仲裁器;其中,i和k是不小于2的正整数。
具体的,所述数据请求端和对应的所述交叉开关之间依次级联有FIFO数据缓存器和数据分配器;所述交叉开关分别内置有所述仲裁器、解码器以及id寄存器;
第k交叉开关内置的第k仲裁器与第k id寄存器连接,所述第k id寄存器与所述第k解码器连接;所述第k仲裁器用于接收目标数据分配器发送的所述读/写数据请求,并确定仲裁后目标数据请求端的id信息;所述第k解码器用于将读/写的数据返回到所述目标数据请求端;
第i数据请求端发送的所述读/写数据请求通过第i数据分配器和第i FIFO数据缓存器发送至目标交叉开关上的目标仲裁器。
具体的,所述第k仲裁器和所述第k解码器分别与映射的第k协议转换器连接,每个所述数据请求端分别与所有的所述解码器连接。
具体的,所述第i数据分配器接收所述第i数据请求端发送的所述读/写数据请求,并根据其中的访问地址确定目标BRAM以及目标仲裁器/所述目标交叉开关;
所述目标仲裁器接收所述读/写数据请求,将所述第i数据请求端id信息缓存到对应的目标id寄存器上;
或,
所述第i数据分配器接收所述第i数据请求端发送的所述读/写数据请求,并将其发送至对应的所述第i FIFO数据缓存器;
所述第i FIFO数据缓存器根据先进先出原则缓存请求,所述目标仲裁器根据仲裁协议读取所述第i FIFO数据缓存器缓存的所述读/写数据请求,将所述第i数据请求端id信息缓存到对应的目标id寄存器上;
将所述读/写数据请求发送到与之映射的目标协议转换器。
具体的,所述基于确定的目标读/写数据请求在对应的所述BRAM上读/写数据,包括:
所述目标协议转换器接收所述读/写数据请求,并对控制信号进行转换输出;
根据访问地址计算地址自增次数;
采用单次读写模式从所述目标BRAM读取/写入数据,
在地址自增完成后,将请求结果返回到所述目标协议转换器。
具体的,所述将请求结果返回到所述目标协议转换器后,还包括:
目标解码器接收所述目标协议转换器返回的请求结果,并读取所述目标id寄存器的请求端id信息;
基于请求端id信息确定对应的所述目标数据请求端,并返回请求结果。
另一方面,本申请还提供一种基于BRAM的多对多高速访存系统,包括至少两组数据请求端、至少两组交叉开关、与所述交叉开关一一映射的BRAM、AXI内部连接器、以及片外存储器;
每个所述数据请求端分别与所有的所述交叉开关通信连接,发送读/写数据请求,以及接收反馈数据;
所述交叉开关和所述BRAM之间通过协议转换器Bridge通信连接,并基于确定的目标读/写数据请求在对应的所述BRAM上读/写数据;
所述交叉开关内置有仲裁器,用于接收至少两组所述数据请求端发送的所述读/写数据请求,并按照设定的仲裁协议确定所述目标读/写数据请求;
至少两组所述BRAM分别通过AXI总线连接所述AXI内部连接器,所述AXI内部连接器连接所述片外存储器。
具体地,所述协议转换器基于数据请求端对所述片外存储器中目标空间的读/写请求频率确定目标数据,并将所述目标数据转存到所述BRAM中,便于后续根据所述目标读/写数据请求在所述BRAM中读/写数据。
本申请实施例提供的技术方案带来的有益效果至少包括:对每个组数据请求端都通过DEMUX来与所有的组交叉开关连接,且每个交叉开关内都设置有仲裁器、寄存器以及解码器,可以按照仲裁协议确定目标数据请求端和id信息,将仲裁选定的请求送入到一一映射的协议转换器上处理;协议转换器采用单次读写模式替代传统的突发模式,这样可以根据具体的读写请求和访问地址计算地址自增次数,在目标片上存储器读写数据。在返回阶段,解码器根据存储的id信息将数据反馈到目标数据请求端。整个过程中,对于所有外部请求,BRAM会有源源不断按照流水形式执行数据输出,且协议转换器的单次读写模式避免了4K问题的产生。对于增加的FIFO数据缓存器可以让组数据请求端连续请求多个任务,且无需持续发送请求信号和监控信号读取情况,改以FIFO进行信号锁存形式执行实现高效传输。
附图说明
图1是vivado中简单搭建的一个测试工程;
图2是vivado中搭建的测试工程的仿真波形图;
图3是举例4K边界问题产生对应的信号波形图;
图4是本申请实施例提供的基于BRAM的多对多高速访存架构的架构图;
图5是本申请实施例提供的Bridge的算法流程图;
图6是本申请实施例提供的对Bridge验证时的验证信号图;
图7是基于Bridge实现多对多流水访存的验证信号图;
图8是另一实施例提供的基于BRAM的多对多高速访存架构的架构图;
图9是本申请实施例提供的基于BRAM的多对多高速访存系统。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
无法实现流水的问题:本申请以Xilinx公司的产品IP为例,通过AXI_bram_control模块去访问BRAM无法实现流水的数据访问。下面采用仿真进行说明。图1为vivado中简单搭建的一个测试工程:单个AXI_bram_control通过总线访问BRAM。图2为仿真的波形结果,图中①处中的为读通道信号(包含读地址控制信号ar和读响应信号r,用于实现对BRAM的读功能),②处的为写通道信号(包含写地址信号aw、写数据信号w和写反馈信号b,用于实现对BRAM的写功能)。读写通道遵循握手协议(valid-ready信号)来控制。即只有当valid和ready同时有效,整组控制信号才有效。③处的则为与BRAM的接口(en信号标记读写操作是否有效,we信号为读写标志位,全为1为写操作,addr为读/写地址信号,wdata为写入BRAM的数据,rddata为从BRAM读出的数据)。
首先,先从地址8开始突发写4*8字节的数据,数据为1111-4444。AXI_bram_control会将该操作转换成与BRAM对应的接口信号,可以看到,③处的BRAM端依次往地址8-32,分别写入1111-4444。接着,开始连续四次的单次读操作,从①处中可以看到,只有地址16对应的读操作才是有效的(ready和valid同时为高电平),最后出来的数据也是刚写入的2222。由此可见,axi_bram_control是不支持连续读操作的。对连续写也进行了仿真验证,在一段时间内,不断进行单词写地址和写数据操作,最后只完成了两次写操作。AXI总线的写操作分两个时钟周期完成,一个周期用于写地址,一个时钟周期用于写数据。所以,AXI也不支持连续写操作。最后也可以看到,此时的BRAM端并没有一直处于有效的工作中(en没有连续有效,④处显示)。
4k边界问题:例如,当前BRAM的数据宽度为8字节,但如果想要拿出从4088开始的32个字节的数据。理想情况下会从BRAM依次返回四段数据结果,但由于存储空间是按page进行划分,每个page为4k(4096字节)大。所以在对这一段空间进行访问时,对该段空间的数据访问会出现跨page的现象。参考图3,第二个page不一定会对突发传输的请求做出响应,从而导致从BRAM返回的数据出错。在实际验证过程中,先进行了一次一样的突发写,不过起始地址改成了4088,信号传递到BRAM端时,突发写的操作,最后在成功往地址4088地址写入1111后,后续的三个写入地址出现了异常跳变。
时延问题:AXI总线协议规定的读写必须等到写/读反馈回来后才能展开下一次的读/写,这会产生一定的延迟。为了增加可访问同一BRAM的设备数量,Xilinx设计了互联模块(axi_interconnecter),通过axi_interconnect接入axi_bram_control来增加访问数量。因为axi_interconnecter内部会引入控制逻辑对多组访问信号进行处理,因而还会产生额外的延迟。
针对以上出现的技术问题,本申请提供一种基于BRAM的多对多高速访存架构,如图4所示,包括至少两组数据请求端Master、至少两组交叉开关、以及与交叉开关一一映射的片上存储器BRAM。每个Master分别与所有的交叉开关通信连接,可用于发送读/写数据请求,以及接收反馈数据等。
各个交叉开关和BRAM(FPGA片上存储)之间通过协议转换器Bridge通信连接,并基于确定的目标读/写数据请求在对应的BRAM上读/写数据。
交叉开关内置有仲裁器,用于接收至少两组数据请求端发送的读/写数据请求,并按照设定的仲裁协议确定目标读/写数据请求。仲裁协议可以事先规定,如按照时间先后顺序进行仲裁。
在数据请求端和对应的交叉开关之间还接入有数据分配器DEMux;交叉开关分别内置有仲裁器、解码器和id寄存器(Reg_id)。第k交叉开关内置的第k仲裁器与第k id寄存器连接,第k id寄存器与第k解码器连接。其中的第k仲裁器用于接收目标数据分配器(经过仲裁后选定的Master端和对应的数据分配器)发送的读/写数据请求,并确定仲裁后目标数据请求端的id信息。而第k解码器用于将读/写的数据返回到目标数据请求端。第i数据请求端发送的读/写数据请求通过第i数据分配器发送至目标交叉开关上的目标仲裁器。
例如,Master1和Master2都分别通过第一数据分配器和第二数据分配器(DEMux1和DEMux2)发送请求到交叉开关1,交叉开关1内的第一仲裁器在收到两个Master的访问请求(即读写控制信号)后,会送入第一仲裁器进行仲裁。仲裁器采用的是握手机制,当同时有多组有效的访问请求,仲裁器会根据内部的策略将某个请求取走,并发送取走的信号ready告知请求发送端。此时,该端可以发送新的请求。
需要说明的是,当读/写数据请求被仲裁器取走前,对应Master需要一直保持该读/写数据请求的发送。假设根据规定的仲裁协议选定Master2作为响应端,则Master1需要继续保持发送。
第k仲裁器和第k解码器分别与映射的第k协议转换器连接,每个数据请求端分别与所有的解码器连接。仲裁器的输出结果中,会将id(用于标记这是哪个Master发送的访问请求)信号送入Reg_id进行缓存(用于对BRAM的读操作,读操作的结果会根据id的值来返回对应的Master端),其余的信号则送入Bridge。也就是第一仲裁确定Master2作为响应端后,获取Master2的id信息,将其存储到与之连接的第一id寄存器上,进而将其余的读写请求发送到第一Bridge上。
目标Bridge在收到读写控制信号后,会将这些信号转换成目标BRAM对应的接口,并将目标BRAM的输出结果稍加处理后返回目标交叉开关上。
目标交叉开关在收到目标Brideg传回的结果(只有读操作会返回结果)后,会送入与之连接的目标解码器上,目标解码器根据目标Reg_id中存储的值将结果返回给对应的目标Master。
在整个过程中都是流水的,这样能保证两个(或n个)BRAM在理想情况下都能保持满载状态。即对于外部的请求,BRAM会有源源不断的数据输出。
在上述设计中,Bridge部分负责解决对BRAM的流水访问问题。为了简化读写控制,本设计中的读写控制信号并不像AXI总线那么复杂。进入Bridge的读写控制信号设计成以下结构:
Struct{
address;//读写操作的地址
word_count;//读写操作的字节大小
is_read;//读还是写操作
data_write;//写操作时的写入数据
valid;
ready;
}
其中,valid用于表示该组读写控制信号是有效的,ready用于表示接收端是否取走了这组控制信号。另外,还有两个信号用于接收并处理BRAM的读数据输出,其中data_out_payload用于接收BRAM的rddata结果,data_out_valid信号用于标记该信号是否有效。(因为无论是否对BRAM进行读操作,BRAM都会有数据输出,但无法知道这个结果是随机值还是因为读操作而产生的输出)。
对于Bridge来说,在接收目标读/写数据请求后,还包括如下步骤:
A,目标协议转换器接收读/写数据请求,并对控制信号进行转换输出;
B,根据访问地址计算地址自增次数;
C,采用单次读写模式从目标BRAM读取/写入数据;
D,在地址自增完成后,将请求结果返回到目标协议转换器。
对应的算法流程图参见图5,每次对控制信号转换输出后,都会计算地址自增次数,并根据总次数循环执行数据流水任务,直至完成。
图6是验证信号图。首先①处是先往BRAM中4088的起始地址开始一次突发写的操作,一共写入32字节的大小,数据同样是1111-4444。但在bridge内部,已经根据写控制信号,将突发写转换成了多次单次写任务,从而避免了4k问题的产生。②处的前半部分为BRAM端的接口信号,显示正在对BRAM进行数据写入。后面又开始对BRAM进行连续四次的单次读操作,如③处中所示,但最后输出的数据只有后三次读操作的结果,如④处所示。究其原因,是因为,第一次的单次读操作时,bridge先处于繁忙状态(正在往BRAM写数据),此时ready位为低,所以未接收该组读控制信号。
最后的测试结果显示,BRAM在某个时间段能一直处于工作状态(en一直为高)。说明能实现对BRAM的流水访问。同时,因为bridge内部会将突发写操作转换成单次读操作,所以也不存在跨4k边界的问题。此外,其读写控制接口相较于AXI总线来说,简易了许多。
关于多对多的访存设计,则是基于通过Bridge能实现对BRAM的流水访问上实现。图7示出了3个设备访问2个BRAM的仿真验证。其中第一个BRAM的空间为0-48字节,第二个BRAM的为48-96字节。仿真图中的①、②、③部分依次代表三个设备的读写控制信号。④和⑤部分则是两对Bridge和BRAM间的接口信号。最后的⑥部分则是三个设备所读出来的数据结果通道。
仿真结果中显示,三个设备在同一时刻分别访问同一个BRAM中(数据已经事先写入),起始地址为0、24以及48开始的24个字节的数据,其中,第一个设备后续还读了一次24地址的数据。三个ready位标记了取走读控制信号的时间周期。在取走读控制信号前,读控制信号不能改变。最后,BRAM分别将对应的结果返回到对应的设备端接口。仿真结果中显示,两个BRAM可以实现同时工作,且BRAM能实现en有效位的持续拉高。由此可见本设计确实有着高效的访存能力。
前述说到,对于多端访存的问题,在仲裁器取走从数据分配器送出的请求之前,Master需要持续不间断发送,这样就导致单个Master无法多任务连续访问,所以本方案在访存框架的对应Master和DEMux之间又加入了FIFO数据缓存器,如图8所示,每个Master后方都级联有对应的FIFO数据缓存器,由FIFO数据缓存器与各自的DEMux连接。这样所有Master就可以不断发送多个任务,在经过数据分配器DEMux的处理后,将请求发送到级联的FIFO数据缓存器中,当存在多个请求任务时会自动按照先入先出的原则缓存,由FIFO数据缓存器选取最顶层的请求送入到DEMux中,然后根据数据选择分配送入目标仲裁器中仲裁。这样Master(上层)就无需检测下层(交叉开关)是否已取走读写控制信号来决定是否要发送新的读写控制信号。而是可以一直发送多个读写控制信号,交由FIFO数据缓存器与下层交叉开关的仲裁器交互(同样是采用握手协议交互,只有当仲裁器取走FIFO最顶端的一组读写控制信号时,下一组读写控制信号才会被到最顶端的位置)。
综上所述,本方案对每个组数据请求端都通过DEMUX来与所有的组交叉开关连接,且每个交叉开关内都设置有仲裁器、寄存器以及解码器,可以按照仲裁协议确定目标数据请求端和id信息,将仲裁选定的请求送入到一一映射的协议转换器上处理;协议转换器采用单次读写模式替代传统的突发模式,这样可以根据具体的读写请求和访问地址计算地址自增次数,在目标片上存储器读写数据。在返回阶段,解码器根据存储的id信息将数据反馈到目标数据请求端。整个过程中,对于所有外部请求,BRAM会有源源不断按照流水形式执行数据输出,且协议转换器的单次读写模式避免了4K问题的产生。对于增加的FIFO数据缓存器可以让组数据请求端连续请求多个任务,且无需持续发送请求信号和监控信号读取情况,改以FIFO进行信号锁存形式执行实现高效传输。
本申请还提供一种基于BRAM的多对多高速访存系统,如图9所示,包括至少两组数据请求端、至少两组交叉开关、与交叉开关一一映射的BRAM、AXI内部连接器、以及片外存储器。每个数据请求端分别与所有的交叉开关通信连接,发送读/写数据请求,以及接收反馈数据。
交叉开关和BRAM之间通过协议转换器Bridge通信连接,并基于确定的目标读/写数据请求在对应的BRAM上读/写数据。交叉开关内置有仲裁器,用于接收至少两组数据请求端发送的读/写数据请求,并按照设定的仲裁协议确定目标读/写数据请求。至少两组BRAM分别通过AXI总线连接AXI内部连接器,AXI内部连接器连接片外存储器。
需要说明的是,本设计架构和系统不对交叉开关和BRAM的数量做限定。且该结构中可以是在每个Master后方设置MUX,然后直接连接到所有仲裁器上,或者是继续在每个MUX后方级联FIFO,由FIFO直连所有仲裁器上。也就是在上述各个实施例中提到的访存架构的基础上,额外增设了AXI内部连接器和片外存储器,且Bridge和BRAM之间是直连结构,而BRAM和AXI内部连接器(AXI_interconnecter)之间则是AXI总线连接。
所述协议转换器基于数据请求端对所述片外存储器中目标空间的读/写请求频率确定目标数据,并将所述目标数据转存到至少两个所述BRAM中,便于后续根据所述目标读/写数据请求在所述BRAM中读/写数据。
该设计系统是利用其读写流水的特性,高速处理HBM、DDR等大存储设备(片外存储器)的数据。直连和AXI接口并用的连接模式,可以通过AXI总线的突发,将HBM、DDR中需要频繁处理的对应空间的数据搬移到多个BRAM中,继而再利用本设计的高速访存能力开展进一步的数据处理。能大幅降低数据读写时延。
在另外一种可能的实施方式中,统计读取片外存储数据的频率和次数,对于数据请求端频繁读取和使用目标空间或目标数据的情况,在达到一定频次后,将数据其主动移动到任一BRAM中,这样在后续有读写请求时,可以直接从BRAM获取,而不再从片外存储中获取,这样又进一步缩短了数据读写时延。
以上对本发明的较佳实施例进行了描述;需要理解的是,本发明并不局限于上述特定实施方式,其中未尽详细描述的设备和结构应该理解为用本领域中的普通方式予以实施;任何熟悉本领域的技术人员,在不脱离本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例,这并不影响本发明的实质内容;因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (8)
1.一种基于BRAM的多对多高速访存架构,用于FPGA芯片,包括至少两组数据请求端、至少两组交叉开关、以及与所述交叉开关一一映射的片上存储器BRAM;每个所述数据请求端分别与所有的所述交叉开关通信连接,发送读/写数据请求,以及接收反馈数据;
所述交叉开关和所述BRAM之间通过协议转换器Bridge通信连接,并基于确定的目标读/写数据请求在对应的所述BRAM上读/写数据;具体目标协议转换器接收所述读/写数据请求,并对控制信号进行转换输出;根据访问地址计算地址自增次数;采用单次读写模式从目标BRAM读取/写入数据;在地址自增完成后,将请求结果返回到所述目标协议转换器;
所述交叉开关内置有仲裁器,用于接收至少两组所述数据请求端发送的所述读/写数据请求,并按照设定的仲裁协议确定所述目标读/写数据请求。
2.根据权利要求1所述的访存架构,其特征在于,所述数据请求端和对应的所述交叉开关之间还接入有数据分配器DEMux;所述交叉开关分别内置有所述仲裁器、解码器以及id寄存器;
第k交叉开关内置的第k仲裁器与第k id寄存器连接,所述第k id寄存器与所述第k解码器连接;所述第k仲裁器用于接收目标数据分配器发送的所述读/写数据请求,并确定仲裁后目标数据请求端的id信息;所述第k解码器用于将读/写的数据返回到所述目标数据请求端;
第i数据请求端发送的所述读/写数据请求通过第i数据分配器发送至目标交叉开关上的目标仲裁器;其中,i和k是不小于2的正整数。
3.根据权利要求1所述的访存架构,其特征在于,所述数据请求端和对应的所述交叉开关之间依次级联有FIFO数据缓存器和数据分配器;所述交叉开关分别内置有所述仲裁器、解码器以及id寄存器;
第k交叉开关内置的第k仲裁器与第k id寄存器连接,所述第k id寄存器与所述第k解码器连接;所述第k仲裁器用于接收目标数据分配器发送的所述读/写数据请求,并确定仲裁后目标数据请求端的id信息;所述第k解码器用于将读/写的数据返回到所述目标数据请求端;
第i数据请求端发送的所述读/写数据请求通过第i数据分配器和第i FIFO数据缓存器发送至目标交叉开关上的目标仲裁器。
4.根据权利要求2或3所述的访存架构,其特征在于,所述第k仲裁器和所述第k解码器分别与映射的第k协议转换器连接,每个所述数据请求端分别与所有的所述解码器连接。
5.根据权利要求4所述的访存架构,其特征在于,所述第i数据分配器接收所述第i数据请求端发送的所述读/写数据请求,并根据其中的访问地址确定目标BRAM以及目标仲裁器/所述目标交叉开关;
所述目标仲裁器接收所述读/写数据请求,将所述第i数据请求端id信息缓存到对应的目标id寄存器上;
或,
所述第i FIFO数据缓存器接收所述第i数据请求端发送的所述读/写数据请求,并将其发送至对应的所述第i数据分配器中;
所述第i FIFO数据缓存器根据先进先出原则缓存请求,并将其发送到所述第i数据分配器中,所述第i数据分配器逐一确定所述读/写数据请求对应的目标仲裁器,所述目标仲裁器根据仲裁协议读取所述第i数据分配器送出的所述读/写数据请求,将所述第i数据请求端id信息缓存到对应的目标id寄存器上;
将所述读/写数据请求发送到与之映射的目标协议转换器。
6.根据权利要求5所述的访存架构,其特征在于,所述将请求结果返回到所述目标协议转换器后,还包括:
目标解码器接收所述目标协议转换器返回的请求结果,并读取所述目标id寄存器的请求端id信息;
基于请求端id信息确定对应的所述目标数据请求端,并返回请求结果。
7.一种基于BRAM的多对多高速访存系统,其特征在于,包括至少两组数据请求端、至少两组交叉开关、与所述交叉开关一一映射的BRAM、AXI内部连接器、以及片外存储器;
每个所述数据请求端分别与所有的所述交叉开关通信连接,发送读/写数据请求,以及接收反馈数据;
所述交叉开关和所述BRAM之间通过协议转换器Bridge通信连接,并基于确定的目标读/写数据请求在对应的所述BRAM上读/写数据;具体目标协议转换器接收所述读/写数据请求,并对控制信号进行转换输出;根据访问地址计算地址自增次数;采用单次读写模式从目标BRAM读取/写入数据;在地址自增完成后,将请求结果返回到所述目标协议转换器;
所述交叉开关内置有仲裁器,用于接收至少两组所述数据请求端发送的所述读/写数据请求,并按照设定的仲裁协议确定所述目标读/写数据请求;
至少两组所述BRAM分别通过AXI总线连接所述AXI内部连接器,所述AXI内部连接器连接所述片外存储器。
8.根据权利要求7所述的高速访存系统,其特征在于,所述协议转换器基于数据请求端对所述片外存储器中目标空间的读/写请求频率确定目标数据,并将所述目标数据转存到所述BRAM中,便于后续根据所述目标读/写数据请求在所述BRAM中读/写数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211682925.XA CN116107923B (zh) | 2022-12-27 | 2022-12-27 | 一种基于bram的多对多高速访存架构和访存系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211682925.XA CN116107923B (zh) | 2022-12-27 | 2022-12-27 | 一种基于bram的多对多高速访存架构和访存系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116107923A CN116107923A (zh) | 2023-05-12 |
CN116107923B true CN116107923B (zh) | 2024-01-23 |
Family
ID=86264912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211682925.XA Active CN116107923B (zh) | 2022-12-27 | 2022-12-27 | 一种基于bram的多对多高速访存架构和访存系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116107923B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116860185B (zh) * | 2023-09-05 | 2024-06-07 | 深圳比特微电子科技有限公司 | Sram阵列的数据访问装置、系统、方法、设备、芯片和介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102185751A (zh) * | 2010-12-13 | 2011-09-14 | 中国人民解放军国防科学技术大学 | 一种基于快速通道技术的单周期片上路由器 |
CN102193887A (zh) * | 2010-03-11 | 2011-09-21 | 炬力集成电路设计有限公司 | 多通道桥接器及总线系统 |
CN102640127A (zh) * | 2009-09-25 | 2012-08-15 | 辉达公司 | 用于多客户端的可配置高速缓存 |
CN111984562A (zh) * | 2020-09-07 | 2020-11-24 | 盛科网络(苏州)有限公司 | 寄存器突发访问控制的方法、电子设备及存储介质 |
CN112965924A (zh) * | 2021-02-26 | 2021-06-15 | 西安微电子技术研究所 | 一种AHB-to-AXI桥接器及激进式处理方法 |
CN113051195A (zh) * | 2021-03-02 | 2021-06-29 | 长沙景嘉微电子股份有限公司 | 存储器、gpu及电子设备 |
CN114253884A (zh) * | 2022-03-01 | 2022-03-29 | 四川鸿创电子科技有限公司 | 基于fpga的多主对多从访问仲裁方法、系统及存储介质 |
CN114415959A (zh) * | 2022-01-20 | 2022-04-29 | 无锡众星微系统技术有限公司 | 一种sata磁盘动态加速访问方法和装置 |
WO2022094941A1 (zh) * | 2020-11-06 | 2022-05-12 | 深圳市大疆创新科技有限公司 | 存储器的访问控制方法、装置和存储介质 |
CN114936171A (zh) * | 2022-06-14 | 2022-08-23 | 深存科技(无锡)有限公司 | 存储访问控制器架构 |
CN115481058A (zh) * | 2022-09-23 | 2022-12-16 | 昆仑芯(北京)科技有限公司 | 内存原子操作指令的执行方法、装置、访问模块及系统 |
-
2022
- 2022-12-27 CN CN202211682925.XA patent/CN116107923B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102640127A (zh) * | 2009-09-25 | 2012-08-15 | 辉达公司 | 用于多客户端的可配置高速缓存 |
CN102193887A (zh) * | 2010-03-11 | 2011-09-21 | 炬力集成电路设计有限公司 | 多通道桥接器及总线系统 |
CN102185751A (zh) * | 2010-12-13 | 2011-09-14 | 中国人民解放军国防科学技术大学 | 一种基于快速通道技术的单周期片上路由器 |
CN111984562A (zh) * | 2020-09-07 | 2020-11-24 | 盛科网络(苏州)有限公司 | 寄存器突发访问控制的方法、电子设备及存储介质 |
WO2022094941A1 (zh) * | 2020-11-06 | 2022-05-12 | 深圳市大疆创新科技有限公司 | 存储器的访问控制方法、装置和存储介质 |
CN112965924A (zh) * | 2021-02-26 | 2021-06-15 | 西安微电子技术研究所 | 一种AHB-to-AXI桥接器及激进式处理方法 |
CN113051195A (zh) * | 2021-03-02 | 2021-06-29 | 长沙景嘉微电子股份有限公司 | 存储器、gpu及电子设备 |
CN114415959A (zh) * | 2022-01-20 | 2022-04-29 | 无锡众星微系统技术有限公司 | 一种sata磁盘动态加速访问方法和装置 |
CN114253884A (zh) * | 2022-03-01 | 2022-03-29 | 四川鸿创电子科技有限公司 | 基于fpga的多主对多从访问仲裁方法、系统及存储介质 |
CN114936171A (zh) * | 2022-06-14 | 2022-08-23 | 深存科技(无锡)有限公司 | 存储访问控制器架构 |
CN115481058A (zh) * | 2022-09-23 | 2022-12-16 | 昆仑芯(北京)科技有限公司 | 内存原子操作指令的执行方法、装置、访问模块及系统 |
Non-Patent Citations (3)
Title |
---|
CAN总线与PC串口双向转换器的设计;程颖;朱炼;韩瑜;;宜春学院学报(03);全文 * |
Complexity effective memory access scheduling for many-core accelerator architectures;George L. Yuan;《 2009 42nd Annual IEEE/ACM International Symposium on Microarchitecture (MICRO)》;全文 * |
多协议仲裁加解密读写CPU内存的IP核设计;罗平;王瑞雪;覃海洋;;计算机工程与设计(05);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116107923A (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1738267B1 (en) | System and method for organizing data transfers with memory hub memory modules | |
US7389364B2 (en) | Apparatus and method for direct memory access in a hub-based memory system | |
KR960012356B1 (ko) | 컴퓨터 시스템 및 데이타 전송 방법 | |
US6745309B2 (en) | Pipelined memory controller | |
US6295592B1 (en) | Method of processing memory requests in a pipelined memory controller | |
US7107415B2 (en) | Posted write buffers and methods of posting write requests in memory modules | |
CN112035389A (zh) | 一种plb-axi总线转换桥及其工作方法 | |
EP4085339B1 (en) | Command replay for non-volatile dual inline memory modules | |
CN112988647B (zh) | 一种TileLink总线到AXI4总线转换系统及方法 | |
CN116107923B (zh) | 一种基于bram的多对多高速访存架构和访存系统 | |
US7484030B2 (en) | Storage controller and methods for using the same | |
EP4085334A1 (en) | Error recovery for non-volatile memory modules | |
US11119924B2 (en) | Interface device including ports and a cache memory, and control method thereof | |
US6425071B1 (en) | Subsystem bridge of AMBA's ASB bus to peripheral component interconnect (PCI) bus | |
US7774513B2 (en) | DMA circuit and computer system | |
CN108897696B (zh) | 一种基于DDRx存储器的大容量FIFO控制器 | |
Du et al. | Research on XDMA high-speed data transmission architecture based on PCIe | |
US6847990B2 (en) | Data transfer unit with support for multiple coherency granules | |
EP1096384A1 (en) | Bridge unit between a system bus and a local bus | |
US20090248919A1 (en) | Method for external fifo acceleration | |
CN117435535A (zh) | 一种存储系统、主控芯片、数据存储方法及数据读取方法 | |
CN116483288A (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 |