CN106502806B - 一种总线协议命令处理装置及相关方法 - Google Patents
一种总线协议命令处理装置及相关方法 Download PDFInfo
- Publication number
- CN106502806B CN106502806B CN201610934027.7A CN201610934027A CN106502806B CN 106502806 B CN106502806 B CN 106502806B CN 201610934027 A CN201610934027 A CN 201610934027A CN 106502806 B CN106502806 B CN 106502806B
- Authority
- CN
- China
- Prior art keywords
- command
- shared
- sub
- commands
- axi
- 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
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/1663—Access to shared memory
Abstract
本发明实施例公开了一种总线协议命令处理装置及相关方法,所述装置包括:N个总线协议命令处理模块AXI SLAVE,所述AXI SLAVE用于从基于总线协议的总线AXI BUS中分别接收N个原始命令;共享命令缓存器,所述共享命令缓存器与所述AXI SLAVE连接;X个内存库BANK,所述BANK与所述共享命令缓存器连接;N个共享存储器,所述共享存储器与所述BANK连接,所述N个AXI SLAVE中的M个AXI SLAVE共享与所述M个AXI SLAVE对应的M个共享存储器。通过在总线协议命令处理装置中增加cmd buffer以及共享memory,从而使得在读数据时,可以使各BANK的并行处理不受限于AXI SLAVE的串行特征,提高数据处理效率,更进一步地,通过设置共享memory,减少memory的硬件资源。
Description
技术领域
本发明涉及通信领域,具体涉及一种总线协议命令处理装置及相关方法。
背景技术
在最后一层缓存(Last level cache,简称LLC)中,总线协议(AdvancedeXtensible Interface,简称AXI)命令会按照一定的粒度拆分,交织送往不同的高速缓存行cache bank,例如cacheable命令,或者动态存储控制(Dynamic memory control,简称DMC),例如uncacheable命令。由于各cache bank/DMC是独立处理的,而AXI对命令的处理却是串行的,导致无法高效地利用cache bank/DMC对命令进行并行处理。
发明内容
本发明实施例提供了一种总线协议命令处理装置及相关方法,以期可以防止BANK阻塞,节约memory硬件配置资源,提高命令处理效率。
第一方面,本发明实施例提供了一种总线协议命令处理装置,该装置包括:
N个总线协议命令处理模块AXI SLAVE,所述AXI SLAVE用于从基于总线协议的总线AXI BUS中分别接收N个原始命令,并对所述N个原始命令中的每个原始命令拆分成L个子命令,所述L为正整数;
共享命令缓存器,所述共享命令缓存器与所述AXI SLAVE连接,所述共享命令缓存器用于接收所述N个AXI SLAVE发送的所述L个子命令并将所述L个子命令进行缓存;
X个内存库BANK,所述BANK与所述共享命令缓存器连接,用于接收所述共享命令缓存器发送的所述L个子命令并获取与所述L个子命令对应的L个子命令数据;
N个共享存储器,所述共享存储器与所述BANK连接,所述N个AXI SLAVE中的M个AXISLAVE共享与所述M个AXI SLAVE对应的M个共享存储器,所述M小于或等于N,所述共享存储器用于接收所述BANK发送的所述L个子命令数据,并将所述L个子命令数据基于原始命令信息进行恢复以返回至所述AXI BUS。
本发明实施例提供的方案中,通过在总线协议命令处理装置中增加cmd buffer以及共享memory,从而使得在读数据时,可以使各BANK的并行处理不受限于AXI SLAVE的串行特征,提高数据处理效率,更进一步地,通过设置共享memory,减少memory的硬件资源。
在一个可能的设计中,若所述共享命令缓存器的深度为cmd_buffer_depth,所述共享存储器的深度为cmd_buffer_depth/M。
在一个可能的设计中,所述原始命令对应的子命令包括一个首个子命令以及至少一个子命令,所述首个子命令包括原始命令信息;所述共享命令缓存器用于暂存所述首个子命令以及缓存所述至少一个子命令。从而实现资源利用最大化。
在一个可能的设计中,所述装置还包括仲裁器ARB,所述ARB与所述AXI SLAVE以及所述共享命令缓存器连接,用于从所述N个AXI SLAVE中接收子命令并对所述子命令进行仲裁排序以根据所述仲裁排序发送至所述共享命令缓存器。通过增加ARB对基于该总线协议命令处理装置进行cmd buffer入口的仲裁策略,以实现对cmd buffer的入口仲裁。
第二方面,本发明实施例提供了一种数据传输方法,该数据传输方法基于第一方面提供的总线协议命令处理装置进行实现,该方法包括:总线协议命令处理模块获取数据读取命令;所述ARB控制所述总线协议命令处理模块基于所述数据读取命令将所述原始命令拆分成包括首个子命令在内的N个子命令,并在所述N个子命令中添加所述首个子命令的共享缓存标识以更新所述N个子命令,共享存储器基地址以及共享存储器偏移地址,所述共享缓存标识用于标识所述首个子命令在所述共享命令缓存器中的存储位置,所述首个子命令中包括所述原始命令信息,所述共享存储器基地址以及所述共享存储器偏移地址用于指示所述各子命令在所述共享存储器中的存储位置;所述总线协议命令处理模块向所述共享命令缓存器发送所述更新后的N个子命令。从而实现资源利用最大化,使得基于该总线协议命令处理装置能进行高效的数据读取。
第三方面,本发明实施例提供了一种共享命令缓存方法,该共享命令缓存方法基于第一方面提供的总线协议命令处理装置进行实现,该方法包括:共享命令缓存器接收N个AXI SLAVE发送的X个命令缓存命令,所述命令缓存命令用于请求所述共享命令缓存器缓存所述X个命令,所述X为小于或等于N的正整数;若所述共享命令缓存器的剩余存储空间Y小于所述命令缓存命令所请求缓存的命令的个数X,所述共享命令缓存器基于缓存仲裁优先级列表缓存X个命令中的Y个命令,所述Y个命令所对应的AXI SLAVE为所述缓存仲裁优先级列表中需要缓存的前Y个的AXI SLAVE,所述Y为正整数;所述共享命令缓存器将所述Y个命令所对应的AXI SLAVE的优先级后置于所述缓存仲裁优先级列表。从而可实现各AXI SLAVE的自适应仲裁和优先级调整,保证一定的公平性。
第四方面,本发明实施例提供了一种共享命令缓存器释放方法,该共享命令缓存器释放方法基于第一方面提供的总线协议命令处理装置进行实现,所述L个子命令包括一个首个子命令,所述首个子命令用于存储所述原始命令信息;该方法包括:所述共享命令缓存器在除首个子命令以外的所述子命令发送至所述共享命令缓存器后释放所述子命令;或者,所述共享命令缓存器在与所述原始命令对应的所述L个子命令数据全部返回至所述AXIBUS后释放与所述原始命令对应的所述首个子命令。通过此种命令的仲裁和释放方法,可以一个AXI命令只存储一个原始命令信息,cmd buffer可以有更多的空间给其他子命令使用,提高数据处理效率。
第五方面,本发明实施例提供了一种共享存储器资源管理方法,该共享命令缓存器释放方法基于第一方面提供的总线协议命令处理装置进行实现,所述M个共享存储器中第m个共享存储器接收至少二个所述BANK发送的至少二个子命令数据存储命令,所述至少二个子命令数据存储命令包括第m个AXI SLAVE发送的子命令数据存储命令;在所述第m个AXI SLAVE发送的子命令数据存储命令与其它AXI SLAVE发送的子命令数据存储命令发生冲突时,所述第m个共享存储器存储所述第m个AXI SLAVE发送的子命令数据存储命令对应的子命令数据。通过共享memory,极大地节省了存储器面积以及提升性能。
本发明实施例提供的方案中,通过在总线协议命令处理装置中增加cmd buffer以及共享memory,从而使得在读数据时,可以使各BANK的并行处理不受限于AXI SLAVE的串行特征,提高数据处理效率,更进一步地,通过设置共享memory,减少memory的硬件资源。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种总线协议命令处理装置的架构示意图;
图2是本发明实施例提供的一种AXI Slave接口结构图;
图3是本发明实施例提供的一种在AXI Slave接口读数据memory架构图;
图4是本发明实施例提供的另一种总线协议命令处理装置的结构示意图;
图5-a是本发明实施例提供的一种总线协议命令处理装置的架构示意图;
图5-b是本发明实施例提供的共享cmd buffer与独享cmd buffer的性能对比示意图;
图6-a是本发明实施例提供的一种数据传输方法的流程示意图;
图6-b是本发明实施例提供的子命令数据reorder示意图;
图7-a是本发明实施例提供的一种共享命令缓存方法的流程示意图;
图7-b是本发明实施例提供的一种共享命令缓存器仲裁第一示意图;
图7-c是本发明实施例提供的一种共享命令缓存器仲裁第二示意图;
图7-d是本发明实施例提供的一种共享命令缓存器仲裁第三示意图;
图8-a是本发明实施例提供的一种共享命令缓存器释放方法的流程示意图;
图8-b是本发明实施例提供的cmd buffer命令的仲裁和释放示意图;
图9-a是本发明实施例提供的一种共享存储器资源管理方法的流程示意图;
图9-b是本发明实施例提供的一种共享存储器资源分配示意图;
图9-c是本发明实施例提供的一种共享存储器资源分配第一示意图;
图9-d是本发明实施例提供的一种共享存储器资源分配第二示意图;
图9-e是本发明实施例提供的一种共享memory与独享memory性能对比示意图。
具体实施方式
本发明实施例提供了一种总线协议命令处理装置及相关方法,以期可以防止BANK阻塞,节约memory硬件配置资源,提高命令处理效率。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先参见图1,图1是本发明实施例提供的一种总线协议命令处理装置的架构示意图。基于该总线协议命令处理装置的架构,当各个总线协议命令处理模块AXI SLAVE从AXIBUS中读取到原始命令时,AXI SLAVE将各原始命令拆分成多个子命令,然后通过AXI SLAVE接口port将各个子命令依次送往内存库BANK arb中,不同的子命令送往不同的BANK arb,然后BANK arb再将该各个子命令传送至B0中,然后BANK将基于子命令获取子命令数据送入共享存储器memory,最后当共享存储器收集某个原始命令对应的各个子命令数据后,再将各命令送回AXI BUS。
在AXI Slave接口发送数据时,在该总线协议命令处理装置中,由于AXI SLAVE一次只能对一个原始命令进行处理,但是各BANK arb可以并行处理。参见图2,图2是示出了本发明实施例提供的一种AXI Slave接口结构图,可以看出,本发明实施例提供的AXI Slave接口为一种串行处理接口。例如,若AXI SLAVE0拆分后的子命令对应送往各BANK arb,由于AXI SLAVE0每次只能处理一个原始命令,AXI SLAVE0需要将正在处理的某个原始命令的子命令全部送往BANK arb后才能继续处理后一个原始命令,而如果某一个子命令的BANKx拥塞,会造成后一个子命令被堵住,尽管后一个子命令去往BANKy,但由于这两个子命令来自同一接口,从而造成同一接口的不同命令间存在BANK阻塞,导致命令处理效率低。
参见图3,图3示出了本发明实施例提供的一种在AXI Slave接口读数据memory架构图,由图3可知,在AXI Slave接口读数据时,AXI Slave接口需要收集与某个原始命令对应的全部子命令数据后才能将子命令数据发送给AXI BUS,为了与cmd buffer的存储空间同步,所配置的memory空间与cmd buffer的存储空间大小一样,而如果memory与各AXISlave接口独享,此时需要配置较大的硬件空间,使得硬件资源浪费。
参见图4,图4是本发明实施例提供的另一种总线协议命令处理装置的结构示意图,在该架构图中,存在cmd buffer,但cmd buffer为独享的,可能导致cmd buffer资源不够的情况。
参见图5-a,图5-a是本发明实施例提供的一种总线协议命令处理装置的架构示意图,如图5-a所示,本发明实施例所提供的总线协议命令处理装置包括:
N个总线协议命令处理模块AXI SLAVE510,共享命令缓存器520,X个内存库BANK530以及N个共享存储器540。
其中,N个AXI SLAVE510,所述AXI SLAVE510用于从基于总线协议的总线AXI BUS中分别接收N个原始命令,并对所述N个原始命令中的每个原始命令拆分成L个子命令,所述L为正整数。
共享命令缓存器cmd buffer520,所述共享命令缓存器520与所述AXI SLAVE510连接,所述共享命令缓存器520用于接收所述N个AXI SLAVE510发送的所述L个子命令并将所述L个子命令进行缓存。
可选地,在本发明实施例中,N个AXI SLAVE510共享一个cmd buffer520,从而从各个AXI SLAVE的port输出的子命令依顺序存储至该共享的cmd buffer520中,再由该cmdbuffer520将各子命令输出至各个BANK530,使得各BANK对各个子命令的处理不受限于AXISLAVE的串行特征,提高BANK的利用率,并进一步提高处理效率。
其中,cmd buffer的深度可根据AXI SLAVE的port个数决定,例如,当AXI SLAVE的port个数为6时,可设置cmd buffer的深度为40,该深度保证该cmd buffer可同时存够来自各个AXI SLAVE的port输出的子命令。
其中,各个buffer的编号可以用buffer id表示。
可选地,所述原始命令对应的子命令包括一个首个子命令以及至少一个子命令,所述首个子命令包括原始命令信息;
所述共享命令缓存器用于暂存所述首个子命令以及缓存所述至少一个子命令。
在本发明实施例中,子命令在发送至BANK后,cmd buffer即释放子命令的存储空间,待各子命令数据基于原始命令信息恢复格式并返回至AXI BUS后,cmd buffer释放该首个子命令的存储空间。
X个BANK530,所述BANK与所述共享命令缓存器连接,用于接收所述共享命令缓存器发送的所述L个子命令并获取与所述L个子命令对应的L个子命令数据。
在本发明实施例中,由于BANK接收的子命令为cmd buffer520输出的,相对于现有技术中直接从AXI SLAVE的port接收,各个BANK只要在其处理完毕后即可以从cmdbuffer520中继续接收子命令进行处理,从而使得BANK的处理不受限于AXI SLAVE,提高BANK的并行处理效率。
N个共享存储器RAM540,所述共享存储器540与所述BANK530连接,所述N个AXISLAVE510中的M个AXI SLAVE510共享与所述M个AXI SLAVE510对应的M个共享存储器540,所述M小于或等于N,所述共享存储器用于接收所述BANK530发送的所述L个子命令数据,并将所述L个子命令数据基于原始命令信息进行恢复以返回至所述AXI BUS。
在本发明实施例中,该共享存储器RAM540即指用于存储读数据的memory,memoryid可用于表示该RAN的空间基地址,该RAM中的某个存储地址可以用基地址和偏移地址offste id共同进行表示。
可选地,在本发明实施例中,当由M个AXI SLAVE共享M个memory时,该M个memory的存储总量为cmd buffer的存储容量,也即若cmd buffer的深度为cmd_buffer_depth,则共享memory的深度为cmd_buffer_depth/M。
优选地,在本发明实施例中,可以由两两AXI SLAVE共享memory,从而每个AXISLAVE都可以使用这两个memory,也即各个AXI SLAVE的可用memory为两个共享memory的存储空间之和。例如若cmd buffer的深度为40,则各memory的深度为20,但各AXI SLAVE的可用memory为40,相较于现有技术,各个AXI SLAVE只使用自己的memory,若此时要达到40的存储空间,需要较大的硬件资源,造成资源浪费,而本方案使用共享memory,可以节约硬件资源,并同时提高处理效率。
可以看出,本发明实施例提供的技术方案中,通过在总线协议命令处理装置中增加cmd buffer以及共享memory,从而使得在读数据时,可以使各BANK的并行处理不受限于AXI SLAVE的串行特征,提高数据处理效率,更进一步地,通过设置共享memory,减少memory的硬件资源。
参见图5-b,图5-b示出了本发明实施例提供的共享cmd buffer与独享cmd buffer的性能对比示意图。可以看出,共享cmd buffer与独享cmd buffer相比,有性能和面积的优势,例如,对于总线位宽128bit,频率1.2G,3个master口发送只读命令的cmd buffer,当性能相当时,共享cmd buffer的资源节省33%,从而节省面积,当cmd buffer总数量相同时,共享cmd buffer的效率高8%,也即共享cmd buffer比独享cmd buffer具有较大的性能提升。
可选地,在本发明的一个示例中,总线协议命令处理装置500还包括命令仲裁模块(Arbiter,简称ARB)550,所述ARB550与所述AXI SLAVE510以及所述共享命令缓存器520连接,用于从所述N个AXI SLAVE510中接收子命令并对所述子命令进行仲裁排序以根据所述仲裁排序发送至所述共享命令缓存器540。
可以理解,通过ARB模块对送往cmd buffer520的命令顺序进行仲裁,从而能使得各兼顾各AXI SLAVE的命令发送,提高数据处理效率。
基于上述总线协议命令处理装置500举一具体实施例对本发明实施例的工作流程进行说明。
步骤1、N个AXI SLAVE的port的N个原始命令通过命令仲裁模块ARB550进行自适应仲裁送入cmd buffer;
步骤2、某个原始命令的第一个子命令送入cmd buffer时,分配并记录buffer id,并向对应的memory申请存储读数据的memory空间基地址,即memory id;所有子命令均使用这个buffer id和memory id;
步骤3、每个子命令记录自己的编号,作为偏移地址offset id;cmd buffer中的子命令并行向各bank提起仲裁,子命令携带buf id、mem id和offset id;
步骤4、读数据返回时,使用memory id+offset id确定存储位置;
步骤5、各子命令数据使用buffer id找到原始命令信息,然后基于原始命令信息转换数据格式送往AXI BUS。
参见图6-a,图6-a是本发明实施例提供的一种数据传输方法的流程示意图,该数据传输方法基于图5所示的总线协议命令处理装置进行实现,如图6-a所示,该数据传输方法包括:
步骤S601、总线协议命令处理模块获取数据读取命令。
其中,数据读取命令是指当需要从BANK中读取数据中,AXI BUS向AXI SLAVE发送的数据读取命令。
可选地,该数据读取命令中将包含原始命令。
步骤S602、所述ARB控制总线协议命令处理模块基于所述数据读取命令将所述原始命令拆分成包括首个子命令在内的N个子命令,并在所述N个子命令中添加所述首个子命令的共享缓存标识以更新所述N个子命令,共享存储器基地址以及共享存储器偏移地址,所述共享缓存标识用于标识所述首个子命令在所述共享命令缓存器中的存储位置,所述首个子命令中包括所述原始命令信息,所述共享存储器基地址以及所述共享存储器偏移地址用于指示所述各子命令在所述共享存储器中的存储位置。
步骤S603、所述总线协议命令处理模块向所述共享命令缓存器发送所述更新后的N个子命令。
可以看出,本发明实施例中,当在各子命令中添加首个子命令的共享缓存标识buffer id,从而可以使子命令数据基于该buffer id找到原始命令信息进行数据恢复,在各子命令中添加共享memory的memory id和offset id,从而可使子命令数据基于该memoryid和offset id确定子命令所对应返回的子命令数据在共享memory中的存储位置,以实现子命令数据的reorder。从而实现资源利用最大化,使得基于该总线协议命令处理装置能进行高效的数据读取。具体可参见图6-b,图6-b示出了本发明实施例所提供的子命令数据reorder示意图,该图中,以0用于标示该存储空间空闲,1用于标示该存储空间非空闲。
参见图7-a,图7-a是本发明实施例提供的一种共享命令缓存方法的流程示意图,该共享命令缓存方法基于图5所示的总线协议命令处理装置进行实现,如图7-a所示,该共享命令缓存方法包括:
步骤S701、共享命令缓存器接收N个AXI SLAVE发送的X个命令缓存命令,所述命令缓存命令用于请求所述共享命令缓存器缓存所述X个命令,所述X为小于或等于N的正整数。
步骤S702、若所述共享命令缓存器的剩余存储空间Y小于所述命令缓存命令所请求缓存的命令的个数X,所述共享命令缓存器基于缓存仲裁优先级列表缓存X个命令中的Y个命令,所述Y个命令所对应的AXI SLAVE为所述缓存仲裁优先级列表中需要缓存的前Y个的AXI SLAVE,所述Y为正整数。
其中,缓存仲裁优先级列表用于表示各AXI SLAVE在请求cmd buffer缓存命令时,当cmd buffer的空间不够时,所根据该缓存仲裁优先级列表来缓存与各AXI SLAVE所对应的命令的顺序。
可选地,若共享命令缓存器的剩余空间Y大于或等于所述命令缓存命令所请求缓存的命令的个数X,则共享命令缓存器将缓存该X个命令。
步骤S703、所述共享命令缓存器将所述Y个命令所对应的AXI SLAVE的优先级后置于所述缓存仲裁优先级列表。
可以理解,当已经在上个步骤中缓存了该Y个AXI SLAVE的命令,为了均衡各AXISLAVE获得的缓存权限,此时可以在下一个命令缓存命令到达时,优先缓存其它AXI SLAVE的命令,所以可将该Y个命令所对应的AXI SLAVE的优先级后置于所述缓存仲裁优先级列表,将获得仲裁的最高优先级AXI SLAVE循环移位到最低优先级处,提高其余未获得仲裁的AXI SLAVE的优先级,保证一定的公平性。
举例说明,在本发明的一个示例中,以6个AXI SLAVE的port为例,默认仲裁优先级为:port0>port1>port2>port3>port4>port5;当剩余cmd buffer个数大于等于6,6个port都有请求时,仲裁优先级不变;当0口、2口有请求(剩余buffer>=2)时,则0口、2口获得仲裁,此时优先级发生调整变为:port3>port4>port5>port0>port1>port2;然后再当3、4口有请求,但是仅有一个空闲buffer时,则3口获得仲裁,优先级变为:port4>port5>port0>port1>port2>port3。具体可参见图7-b,图7-c以及图7-d,图7-b是本发明实施例提供的一种共享命令缓存器仲裁第一示意图,图7-c是本发明实施例提供的一种共享命令缓存器仲裁第二示意图,图7-d是本发明实施例提供的一种共享命令缓存器仲裁第三示意图。该三幅图中,以0用于标示该存储空间空闲,1用于标示该存储空间非空闲,从而可实现各AXISLAVE的自适应仲裁和优先级调整,保证一定的公平性。
参见图8-a,图8-a是本发明实施例提供的一种共享命令缓存器释放方法的流程示意图,该共享命令缓存器释放方法基于图5所示的总线协议命令处理装置进行实现,如图8-a所示,所述L个子命令包括一个首个子命令,所述首个子命令用于存储所述原始命令信息;该共享命令缓存器释放方法包括:
步骤S801、所述共享命令缓存器在除首个子命令以外的所述子命令发送至所述共享命令缓存器后释放所述子命令。
步骤S802、所述共享命令缓存器在与所述原始命令对应的所述L个子命令数据全部返回至所述AXI BUS后释放与所述原始命令对应的所述首个子命令。
具体地,可参见图8-b,图8-b示出了本发明实施例提供的cmd buffer命令的仲裁和释放示意图,该图中,以0用于标示该存储空间空闲,1用于标示该存储空间非空闲,可以看出,本发明实施例中,通过此种命令的仲裁和释放方法,可以一个AXI命令只存储一个原始命令信息,cmd buffer可以有更多的空间给其他子命令使用,提高数据处理效率。
参见图9-a,图9-a是本发明实施例提供的一种共享存储器资源管理方法的流程示意图,该共享存储器资源管理方法基于图5所示的总线协议命令处理装置进行实现,如图9-a所示,该共享命令缓存方法包括:
步骤S901、所述M个共享存储器中第m个共享存储器接收至少二个所述BANK发送的至少二个子命令数据存储命令,所述至少二个子命令数据存储命令包括第m个AXI SLAVE发送的子命令数据存储命令。
其中,子命令数据存储命令是指当BANK返回子命令数据给memory后,用于请求memory存储该子命令数据的命令。
步骤S902、在所述第m个AXI SLAVE发送的子命令数据存储命令与其它AXI SLAVE发送的子命令数据存储命令发生冲突时,所述第m个共享存储器存储所述第m个AXI SLAVE发送的子命令数据存储命令对应的子命令数据。
举例说明,在本发明的一个示例中,若共享memory为两两共享的,例如,AXISLAVE0的port0与AXI SLAVE1的port1共享与之对应的两个memory,也即port0和port1可以共用这两片memory,从而每个port可获得的容量增为原来的2倍。参见图9-b,图9-b示出了一种共享存储器资源分配示意图,此时memory0和memory1空间足够。该图中,以0用于标示该存储空间空闲,1用于标示该存储空间非空闲。
当port0所对应的子命令数据和port1所对应的子命令数据同时向memory0请求存储子命令数据时,并且memory0的存储空间不够时,memory0优先分配给port0。当port0所对应的子命令数据和port1所对应的子命令数据同时向memory1请求存储子命令数据时,并且memory1的存储空间不够时,memory1优先分配给port1。而在memory1空间不够时,memory0能分配空间供port1使用,在memory0空间不够时,memory1能分配空间供port0使用。参见图9-c和图9-d,图9-c示出了一种共享存储器资源分配第一示意图,图9-d示出了一种共享存储器资源分配第二示意图。该两幅图中,以0用于标示该存储空间空闲,1用于标示该存储空间非空闲。此时memory0和memory1空间不够。通过该种存储方法,可减少总的memory面积,从而减少硬件资源,以及提高memory性能。参见图9-e,图9-e是本发明实施例提供的一种共享memory与独享memory性能对比示意图,由图可以看出,假设总线数据位宽为256bit,burst_len最大16,cmd buffer为40,2个port共享2片memory(256*320)时面积为28585.3um2x 2=57170.6um2,一个命令1片memory(256*16)的存储面积为8632.6475um2x40=345305.9,可以看出,面积节省83.4%。并且性能上,共享memory时,memory的冲突概率减小5%。从而本发明实施例中,通过共享memory,极大地节省了存储器面积以及提升性能。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明的各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (9)
1.一种总线协议命令处理装置,其特征在于,所述装置包括:
N个总线协议命令处理模块AXI SLAVE,所述AXI SLAVE用于从基于总线协议的总线AXIBUS中分别接收N个原始命令,并对所述N个原始命令中的每个原始命令拆分成L个子命令,所述L为正整数;
共享命令缓存器,所述共享命令缓存器与所述AXI SLAVE连接,所述共享命令缓存器用于接收所述N个AXI SLAVE发送的所述L个子命令并将所述L个子命令进行缓存;
X个内存库BANK,所述BANK与所述共享命令缓存器连接,用于接收所述共享命令缓存器发送的所述L个子命令并获取与所述L个子命令对应的L个子命令数据;
N个共享存储器,所述共享存储器与所述BANK连接,所述N个AXI SLAVE中的M个AXISLAVE共享与所述M个AXI SLAVE对应的M个共享存储器,所述M小于或等于N,所述共享存储器用于接收所述BANK发送的所述L个子命令数据,并将所述L个子命令数据基于原始命令信息进行恢复以返回至所述AXI BUS。
2.根据权利要求1所述的装置,其特征在于,若所述共享命令缓存器的深度为cmd_buffer_depth,所述共享存储器的深度为cmd_buffer_depth/M。
3.根据权利要求1所述的装置,其特征在于,所述原始命令对应的子命令包括一个首个子命令以及至少一个子命令,所述首个子命令包括原始命令信息;所述共享命令缓存器用于暂存所述首个子命令以及缓存所述至少一个子命令。
4.根据权利要求2所述的装置,其特征在于,所述原始命令对应的子命令包括一个首个子命令以及至少一个子命令,所述首个子命令包括原始命令信息;所述共享命令缓存器用于暂存所述首个子命令以及缓存所述至少一个子命令。
5.根据权利要求1至4任一项所述的装置,其特征在于,所述装置还包括仲裁器ARB,ARB与所述AXI SLAVE以及所述共享命令缓存器连接,用于从N个AXI SLAVE中接收子命令并对所述子命令进行仲裁排序以根据所述仲裁排序发送至所述共享命令缓存器。
6.一种数据传输方法,其特征在于,所述方法基于总线协议命令处理装置,所述总线协议命令处理装置包括:
N个总线协议命令处理模块AXI SLAVE,所述AXI SLAVE用于从基于总线协议的总线AXIBUS中分别接收N个原始命令,并对所述N个原始命令中的每个原始命令拆分成L个子命令,所述L为正整数;
共享命令缓存器,所述共享命令缓存器与所述AXI SLAVE连接,所述共享命令缓存器用于接收所述N个AXI SLAVE发送的所述L个子命令并将所述L个子命令进行缓存;
X个内存库BANK,所述BANK与所述共享命令缓存器连接,用于接收所述共享命令缓存器发送的所述L个子命令并获取与所述L个子命令对应的L个子命令数据;
N个共享存储器,所述共享存储器与所述BANK连接,所述N个AXI SLAVE中的M个AXISLAVE共享与所述M个AXI SLAVE对应的M个共享存储器,所述M小于或等于N,所述共享存储器用于接收所述BANK发送的所述L个子命令数据,并将所述L个子命令数据基于原始命令信息进行恢复以返回至所述AXI BUS;
所述方法包括:
总线协议命令处理模块获取数据读取命令;
仲裁器ARB控制所述总线协议命令处理模块基于所述数据读取命令将所述原始命令拆分成包括首个子命令在内的L个子命令,并在所述L个子命令中添加所述首个子命令的共享缓存标识,共享存储器基地址以及共享存储器偏移地址以更新所述L个子命令,所述共享缓存标识用于标识所述首个子命令在所述共享命令缓存器中的存储位置,所述首个子命令中包括所述原始命令信息,所述共享存储器基地址以及所述共享存储器偏移地址用于指示各子命令在所述共享存储器中的存储位置;
所述总线协议命令处理模块向所述共享命令缓存器发送所述更新后的L个子命令。
7.一种共享命令缓存方法,其特征在于,所述方法基于总线协议命令处理装置,所述总线协议命令处理装置包括:
N个总线协议命令处理模块AXI SLAVE,所述AXI SLAVE用于从基于总线协议的总线AXIBUS中分别接收N个原始命令,并对所述N个原始命令中的每个原始命令拆分成L个子命令,所述L为正整数;
共享命令缓存器,所述共享命令缓存器与所述AXI SLAVE连接,所述共享命令缓存器用于接收所述N个AXI SLAVE发送的所述L个子命令并将所述L个子命令进行缓存;
X个内存库BANK,所述BANK与所述共享命令缓存器连接,用于接收所述共享命令缓存器发送的所述L个子命令并获取与所述L个子命令对应的L个子命令数据;
N个共享存储器,所述共享存储器与所述BANK连接,所述N个AXI SLAVE中的M个AXISLAVE共享与所述M个AXI SLAVE对应的M个共享存储器,所述M小于或等于N,所述共享存储器用于接收所述BANK发送的所述L个子命令数据,并将所述L个子命令数据基于原始命令信息进行恢复以返回至所述AXI BUS;
所述方法包括:
共享命令缓存器接收N个AXI SLAVE发送的X个命令缓存命令,所述命令缓存命令用于请求所述共享命令缓存器缓存所述X个命令,所述X为小于或等于N的正整数;
若所述共享命令缓存器的剩余存储空间Y小于所述命令缓存命令所请求缓存的命令的个数X,所述共享命令缓存器基于缓存仲裁优先级列表缓存X个命令中的Y个命令,所述Y个命令所对应的AXI SLAVE为所述缓存仲裁优先级列表中需要缓存的前Y个的AXI SLAVE,所述Y为正整数;
所述共享命令缓存器将所述Y个命令所对应的AXI SLAVE的优先级后置于所述缓存仲裁优先级列表。
8.一种共享命令缓存器释放方法,其特征在于,所述方法基于总线协议命令处理装置,所述总线协议命令处理装置包括:
N个总线协议命令处理模块AXI SLAVE,所述AXI SLAVE用于从基于总线协议的总线AXIBUS中分别接收N个原始命令,并对所述N个原始命令中的每个原始命令拆分成L个子命令,所述L为正整数;
共享命令缓存器,所述共享命令缓存器与所述AXI SLAVE连接,所述共享命令缓存器用于接收所述N个AXI SLAVE发送的所述L个子命令并将所述L个子命令进行缓存;
X个内存库BANK,所述BANK与所述共享命令缓存器连接,用于接收所述共享命令缓存器发送的所述L个子命令并获取与所述L个子命令对应的L个子命令数据;
N个共享存储器,所述共享存储器与所述BANK连接,所述N个AXI SLAVE中的M个AXISLAVE共享与所述M个AXI SLAVE对应的M个共享存储器,所述M小于或等于N,所述共享存储器用于接收所述BANK发送的所述L个子命令数据,并将所述L个子命令数据基于原始命令信息进行恢复以返回至所述AXI BUS;
所述L个子命令包括一个首个子命令,所述首个子命令用于存储所述原始命令信息;
所述方法包括:
所述共享命令缓存器在除首个子命令以外的所述子命令发送至所述共享命令缓存器后释放所述子命令;或者,
所述共享命令缓存器在与所述原始命令对应的所述L个子命令数据全部返回至所述AXI BUS后释放与所述原始命令对应的所述首个子命令。
9.一种共享存储器资源管理方法,其特征在于,所述方法基于总线协议命令处理装置,所述总线协议命令处理装置包括:
N个总线协议命令处理模块AXI SLAVE,所述AXI SLAVE用于从基于总线协议的总线AXIBUS中分别接收N个原始命令,并对所述N个原始命令中的每个原始命令拆分成L个子命令,所述L为正整数;
共享命令缓存器,所述共享命令缓存器与所述AXI SLAVE连接,所述共享命令缓存器用于接收所述N个AXI SLAVE发送的所述L个子命令并将所述L个子命令进行缓存;
X个内存库BANK,所述BANK与所述共享命令缓存器连接,用于接收所述共享命令缓存器发送的所述L个子命令并获取与所述L个子命令对应的L个子命令数据;
N个共享存储器,所述共享存储器与所述BANK连接,所述N个AXI SLAVE中的M个AXISLAVE共享与所述M个AXI SLAVE对应的M个共享存储器,所述M小于或等于N,所述共享存储器用于接收所述BANK发送的所述L个子命令数据,并将所述L个子命令数据基于原始命令信息进行恢复以返回至所述AXI BUS;
所述方法包括:
所述M个共享存储器中第m个共享存储器接收至少二个所述BANK发送的至少二个子命令数据存储命令,所述至少二个子命令数据存储命令包括第m个AXI SLAVE发送的子命令数据存储命令;
在所述第m个AXI SLAVE发送的子命令数据存储命令与其它AXI SLAVE发送的子命令数据存储命令发生冲突时,所述第m个共享存储器存储所述第m个AXI SLAVE发送的子命令数据存储命令对应的子命令数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610934027.7A CN106502806B (zh) | 2016-10-31 | 2016-10-31 | 一种总线协议命令处理装置及相关方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610934027.7A CN106502806B (zh) | 2016-10-31 | 2016-10-31 | 一种总线协议命令处理装置及相关方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106502806A CN106502806A (zh) | 2017-03-15 |
CN106502806B true CN106502806B (zh) | 2020-02-14 |
Family
ID=58319857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610934027.7A Active CN106502806B (zh) | 2016-10-31 | 2016-10-31 | 一种总线协议命令处理装置及相关方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106502806B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110413551B (zh) | 2018-04-28 | 2021-12-10 | 上海寒武纪信息科技有限公司 | 信息处理装置、方法及设备 |
CN113468096A (zh) * | 2017-06-26 | 2021-10-01 | 上海寒武纪信息科技有限公司 | 数据共享系统及其数据共享方法 |
CN109426553A (zh) | 2017-08-21 | 2019-03-05 | 上海寒武纪信息科技有限公司 | 任务切分装置及方法、任务处理装置及方法、多核处理器 |
CN109214616B (zh) | 2017-06-29 | 2023-04-07 | 上海寒武纪信息科技有限公司 | 一种信息处理装置、系统和方法 |
EP3637272A4 (en) | 2017-06-26 | 2020-09-02 | Shanghai Cambricon Information Technology Co., Ltd | DATA-SHARING SYSTEM AND RELATED DATA-SHARING PROCESS |
WO2020019173A1 (zh) * | 2018-07-24 | 2020-01-30 | 华为技术有限公司 | 一种用于对象存储的存储器控制电路 |
CN110704351A (zh) * | 2019-09-24 | 2020-01-17 | 山东华芯半导体有限公司 | 基于axi总线的主机设备数据传输扩展方法 |
CN115206255B (zh) * | 2022-06-17 | 2024-04-19 | 中航华东光电有限公司 | 航空显示器控制系统及方法 |
CN117171070B (zh) * | 2023-11-03 | 2024-03-26 | 太初(无锡)电子科技有限公司 | 一种基于axi接口的交叉存取系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0269995B1 (en) * | 1986-11-27 | 1993-06-23 | Nippon Telegraph And Telephone Corporation | Parallel data processing apparatus and method |
WO1995006287A1 (en) * | 1993-08-20 | 1995-03-02 | Advanced Risc Machines Limited | Data bus |
CN1752916A (zh) * | 2005-10-25 | 2006-03-29 | 威盛电子股份有限公司 | 磁盘阵列的控制器及其工作方法 |
CN1908983A (zh) * | 2006-08-16 | 2007-02-07 | 华为技术有限公司 | 访问多区存储器中的多维数据块的方法、装置及系统 |
CN102855195A (zh) * | 2011-06-30 | 2013-01-02 | 重庆重邮信科通信技术有限公司 | 第二代低功耗双倍速率存储控制器及访问命令处理方法 |
CN103927268A (zh) * | 2014-04-08 | 2014-07-16 | 中国科学院微电子研究所 | 一种存储器的访问方法及装置 |
CN104142867A (zh) * | 2013-05-09 | 2014-11-12 | 华为技术有限公司 | 数据处理装置及数据处理方法 |
-
2016
- 2016-10-31 CN CN201610934027.7A patent/CN106502806B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0269995B1 (en) * | 1986-11-27 | 1993-06-23 | Nippon Telegraph And Telephone Corporation | Parallel data processing apparatus and method |
WO1995006287A1 (en) * | 1993-08-20 | 1995-03-02 | Advanced Risc Machines Limited | Data bus |
CN1752916A (zh) * | 2005-10-25 | 2006-03-29 | 威盛电子股份有限公司 | 磁盘阵列的控制器及其工作方法 |
CN1908983A (zh) * | 2006-08-16 | 2007-02-07 | 华为技术有限公司 | 访问多区存储器中的多维数据块的方法、装置及系统 |
CN102855195A (zh) * | 2011-06-30 | 2013-01-02 | 重庆重邮信科通信技术有限公司 | 第二代低功耗双倍速率存储控制器及访问命令处理方法 |
CN104142867A (zh) * | 2013-05-09 | 2014-11-12 | 华为技术有限公司 | 数据处理装置及数据处理方法 |
CN103927268A (zh) * | 2014-04-08 | 2014-07-16 | 中国科学院微电子研究所 | 一种存储器的访问方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106502806A (zh) | 2017-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106502806B (zh) | 一种总线协议命令处理装置及相关方法 | |
US10248350B2 (en) | Queue management method and apparatus | |
US20170083447A1 (en) | Method and apparatus for data storage system | |
EP3470971B1 (en) | Method, apparatus, and system for accessing memory device | |
CN112703489A (zh) | 控制器、存储器件访问系统、电子设备和数据传输方法 | |
US10545898B2 (en) | Shared resource access arbitration method, and shared resource access arbitration device and shared resource access arbitration system for performing same | |
CN103827842A (zh) | 向控制器存储器空间写入消息 | |
CN114450672A (zh) | 存储器的访问控制方法、装置和存储介质 | |
CN107025184B (zh) | 一种数据管理方法及装置 | |
CN112948293A (zh) | 一种多用户接口的ddr仲裁器及ddr控制器芯片 | |
US7865632B2 (en) | Memory allocation and access method and device using the same | |
US9292456B2 (en) | System and method for data synchronization across digital device interfaces | |
JP5470974B2 (ja) | 分散ファイルシステム及び分散ファイル格納方法 | |
CN102122268B (zh) | 一种虚拟机内存分配访问方法、装置和系统 | |
CN117716679A (zh) | 地址转换类型分组的传输 | |
CN117076140B (zh) | 一种分布式计算方法、装置、设备、系统及可读存储介质 | |
US9798492B2 (en) | Semiconductor device including a plurality of function blocks | |
US10031884B2 (en) | Storage apparatus and method for processing plurality of pieces of client data | |
CN105224258B (zh) | 一种数据缓冲区的复用方法与系统 | |
CN106326143B (zh) | 一种缓存分配、数据访问、数据发送方法、处理器及系统 | |
CN115904246A (zh) | 一种基于多路ddr内存的数据读取方法及装置 | |
CN107911317B (zh) | 一种报文调度方法及装置 | |
WO2016090985A1 (zh) | 缓存的读取、读取处理方法及装置 | |
KR102338872B1 (ko) | 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법 | |
JP2009251652A (ja) | マルチコアシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |