CN117472796A - 总线模块的数据处理方法、装置、电子设备和存储介质 - Google Patents
总线模块的数据处理方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN117472796A CN117472796A CN202311667267.1A CN202311667267A CN117472796A CN 117472796 A CN117472796 A CN 117472796A CN 202311667267 A CN202311667267 A CN 202311667267A CN 117472796 A CN117472796 A CN 117472796A
- Authority
- CN
- China
- Prior art keywords
- space
- data
- address
- writing
- initial
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 23
- 238000000034 method Methods 0.000 claims abstract description 62
- 230000008859 change Effects 0.000 claims abstract description 49
- 238000012545 processing Methods 0.000 claims abstract description 41
- 230000015654 memory Effects 0.000 claims description 119
- 230000004044 response Effects 0.000 claims description 45
- 238000004590 computer program Methods 0.000 claims description 16
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 11
- 239000013598 vector Substances 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 10
- 238000004321 preservation Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 230000010365 information processing Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 108091023663 let-7 stem-loop Proteins 0.000 description 1
- 108091063478 let-7-1 stem-loop Proteins 0.000 description 1
- 108091049777 let-7-2 stem-loop Proteins 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及一种总线模块的数据处理方法、装置、电子设备和存储介质。所述方法包括:响应于接收到缓存向总线模块返回的任一数据请求对应的数据,获取所述数据请求对应的起始写入空间的地址,以及所述数据请求对应的起始写入空间的变更次数,其中,所述起始写入空间表示用于计算所述数据请求对应的数据的写入地址的起始空间;根据所述数据携带的偏移量、所述起始写入空间的变更次数和所述起始写入空间的地址,确定所述数据的写入地址,其中,所述写入地址表示用于写入所述数据的空间的地址;将所述数据写入所述写入地址。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种总线模块的数据处理方法、装置、电子设备和存储介质。
背景技术
GPU(Graphics Processing Unit,图形处理器)作为一个复杂的图像处理单元,其内部众多的图形计算、渲染处理等相关模块需要对大量图像数据进行计算。这些模块本身并不存有固定数据,工作时需要从外部获取计算所需数据,并将计算结果输出给下级模块使用。GPU内的最后一级缓存通常被称为系统级缓存(System Level Cache,SLC)。总线模块(Bus InterFace,BIF)需要收取众多请求者的请求,通过轮询仲裁的方式,每个时钟周期发送一笔请求给系统级缓存。如何对缓存返回的数据进行保序处理,是亟待解决的技术问题。
发明内容
本公开提供了一种总线模块的数据处理技术方案。
根据本公开的一方面,提供了一种总线模块的数据处理方法,包括:
一种总线模块的数据处理方法,其特征在于,包括:
响应于接收到缓存向总线模块返回的任一数据请求对应的数据,获取所述数据请求对应的起始写入空间的地址,以及所述数据请求对应的起始写入空间的变更次数,其中,所述起始写入空间表示用于计算所述数据请求对应的数据的写入地址的起始空间;
根据所述数据携带的偏移量、所述起始写入空间的变更次数和所述起始写入空间的地址,确定所述数据的写入地址,其中,所述写入地址表示用于写入所述数据的空间的地址;
将所述数据写入所述写入地址。
在一种可能的实现方式中,所述根据所述数据携带的偏移量、所述起始写入空间的变更次数和所述起始写入空间的地址,确定所述数据的写入地址,包括:
根据所述数据携带的偏移量和所述起始写入空间的变更次数,确定所述数据的实际偏移量;
根据所述起始写入空间的地址和所述实际偏移量,确定所述数据的写入地址。
在一种可能的实现方式中,分配给所述数据请求的空间通过链表记录连接关系;
所述根据所述起始写入空间的地址和所述实际偏移量,确定所述数据的写入地址,包括:
根据所述起始写入空间的地址,从所述起始写入空间开始遍历所述链表,向后遍历所述实际偏移量,确定所述数据的写入地址。
在一种可能的实现方式中,在所述确定所述数据的写入地址之后,所述方法还包括:
响应于所述数据携带的偏移量与所述起始写入空间的变更次数相同,确定所述写入地址的下一地址;
将所述起始写入空间的地址变更为所述下一地址;
将所述起始写入空间的变更次数加一。
在一种可能的实现方式中,所述根据所述数据携带的偏移量和所述起始写入空间的变更次数,确定所述数据的实际偏移量,包括:
将所述数据携带的偏移量与所述起始写入空间的变更次数的差值,确定为所述数据的实际偏移量。
在一种可能的实现方式中,所述方法还包括:
响应于任一请求者对应的起始读取空间的数据已返回所述总线模块,向所述请求者返回所述起始读取空间的数据,其中,所述起始读取空间为所述请求者对应的最早的一笔未返回数据给所述请求者的空间。
在一种可能的实现方式中,在所述向所述请求者返回所述起始读取空间的数据之后,所述方法还包括:
释放所述起始读取空间;
更新所述请求者对应的起始读取空间的地址。
在一种可能的实现方式中,所述方法还包括:
响应于接收到来自于任一请求者的数据请求,且所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,更新所述请求者对应的起始读取空间的地址和/或终止空间的地址,其中,所述终止空间表示分配给所述请求者的最后一个空间。
在一种可能的实现方式中,所述响应于接收到来自于任一请求者的数据请求,且所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,更新所述请求者对应的起始读取空间的地址和/或终止空间的地址,包括:
响应于接收到来自于任一请求者的数据请求,所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,且所述请求者对应的起始读取空间的地址为默认值,更新所述请求者对应的起始读取空间的地址和终止空间的地址;
或者,
响应于接收到来自于任一请求者的数据请求,所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,且所述请求者对应的起始读取空间的地址不为默认值,更新所述请求者对应的终止空间的地址。
在一种可能的实现方式中,所述方法还包括:
响应于所述总线模块启动,将各个请求者对应的起始读取空间的地址和终止空间的地址均初始化为所述默认值。
在一种可能的实现方式中,所述起始写入空间的变更次数小于或等于所述数据请求的突发长度。
根据本公开的一方面,提供了一种总线模块的数据处理装置,包括:
获取模块,用于响应于接收到缓存向总线模块返回的任一数据请求对应的数据,获取所述数据请求对应的起始写入空间的地址,以及所述数据请求对应的起始写入空间的变更次数,其中,所述起始写入空间表示用于计算所述数据请求对应的数据的写入地址的起始空间;
第一确定模块,用于根据所述数据携带的偏移量、所述起始写入空间的变更次数和所述起始写入空间的地址,确定所述数据的写入地址,其中,所述写入地址表示用于写入所述数据的空间的地址;
写入模块,用于将所述数据写入所述写入地址。
在一种可能的实现方式中,所述第一确定模块用于:
根据所述数据携带的偏移量和所述起始写入空间的变更次数,确定所述数据的实际偏移量;
根据所述起始写入空间的地址和所述实际偏移量,确定所述数据的写入地址。
在一种可能的实现方式中,分配给所述数据请求的空间通过链表记录连接关系;
所述第一确定模块用于:
根据所述起始写入空间的地址,从所述起始写入空间开始遍历所述链表,向后遍历所述实际偏移量,确定所述数据的写入地址。
在一种可能的实现方式中,所述装置还包括:
第二确定模块,用于响应于所述数据携带的偏移量与所述起始写入空间的变更次数相同,确定所述写入地址的下一地址;
第一更新模块,用于将所述起始写入空间的地址变更为所述下一地址;
第二更新模块,用于将所述起始写入空间的变更次数加一。
在一种可能的实现方式中,所述第一确定模块用于:
将所述数据携带的偏移量与所述起始写入空间的变更次数的差值,确定为所述数据的实际偏移量。
在一种可能的实现方式中,所述装置还包括:
返回模块,用于响应于任一请求者对应的起始读取空间的数据已返回所述总线模块,向所述请求者返回所述起始读取空间的数据,其中,所述起始读取空间为所述请求者对应的最早的一笔未返回数据给所述请求者的空间。
在一种可能的实现方式中,所述装置还包括:
释放模块,用于释放所述起始读取空间;
第三更新模块,用于更新所述请求者对应的起始读取空间的地址。
在一种可能的实现方式中,所述装置还包括:
第四更新模块,用于响应于接收到来自于任一请求者的数据请求,且所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,更新所述请求者对应的起始读取空间的地址和/或终止空间的地址,其中,所述终止空间表示分配给所述请求者的最后一个空间。
在一种可能的实现方式中,所述第四更新模块用于:
响应于接收到来自于任一请求者的数据请求,所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,且所述请求者对应的起始读取空间的地址为默认值,更新所述请求者对应的起始读取空间的地址和终止空间的地址;
或者,
响应于接收到来自于任一请求者的数据请求,所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,且所述请求者对应的起始读取空间的地址不为默认值,更新所述请求者对应的终止空间的地址。
在一种可能的实现方式中,所述装置还包括:
初始化模块,用于响应于所述总线模块启动,将各个请求者对应的起始读取空间的地址和终止空间的地址均初始化为所述默认值。
在一种可能的实现方式中,所述起始写入空间的变更次数小于或等于所述数据请求的突发长度。
根据本公开的一方面,提供了一种电子设备,包括:一个或多个处理器;用于存储可执行指令的存储器;其中,所述一个或多个处理器被配置为调用所述存储器存储的可执行指令,以执行上述方法。
根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
根据本公开的一方面,提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述方法。
在本公开实施例中,通过响应于接收到缓存向总线模块返回的任一数据请求对应的数据,获取所述数据请求对应的起始写入空间的地址,以及所述数据请求对应的起始写入空间的变更次数,其中,所述起始写入空间表示用于计算所述数据请求对应的数据的写入地址的起始空间,根据所述数据携带的偏移量、所述起始写入空间的变更次数和所述起始写入空间的地址,确定所述数据的写入地址,其中,所述写入地址表示用于写入所述数据的空间的地址,并将所述数据写入所述写入地址,由此能够实现总线模块对数据保序的需求。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1示出本公开实施例提供的总线模块的数据处理方法的流程图。
图2示出本公开实施例提供的总线模块的数据处理方法的应用场景中,总线模块将数据请求发送给系统级缓存(SLC)之前的数据处理流程的示意图。
图3示出本公开实施例提供的总线模块的数据处理方法的应用场景中,系统级缓存经总线模块保序返回数据给请求者的处理流程。
图4示出本公开实施例提供的总线模块的数据处理装置的框图。
图5示出本公开实施例提供的电子设备1900的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
GPU(Graphics Processing Unit,图形处理器)作为一个复杂的图像处理单元,其内部众多的图形计算、渲染处理等相关模块需要对大量图像数据进行计算。这些模块本身并不存有固定数据,工作时需要从外部获取计算所需数据,并将计算结果输出给下级模块使用。GPU内部模块通常数据吞吐量巨大,因此需要多级缓存(cache)来缓存每级功能模块所需要使用的数据。当前缓存命中(cache hit)时,模块可以直接取走所需数据;当前缓存缺失(cache miss)时,需要向下级缓存申请新的数据。GPU内的最后一级缓存通常被称为系统级缓存(System Level Cache,SLC)。GPU内模块众多且数据访问量大,且要求从系统级缓存读取的数据依序返回。而系统级缓存的运行带宽和效率受到客观物理条件的限制,每个时钟周期(clock cycle)仅能收取一笔请求、返回一笔位宽固定的数据。其中,固定的位宽可以称为突发大小或者突发尺寸(burst size),表示突发传输中的每笔数据传输的字节数。其中,一笔数据传输中的数据保序、不同笔数据传输中的数据乱序,显然这并不符合请求者(requestor)的要求。其中,请求者可以表示访问系统级缓存的任意模块。
本公开实施例提供了一种总线模块的数据处理方法、装置、电子设备和存储介质,通过响应于接收到缓存向总线模块返回的任一数据请求对应的数据,获取所述数据请求对应的起始写入空间的地址,以及所述数据请求对应的起始写入空间的变更次数,其中,所述起始写入空间表示用于计算所述数据请求对应的数据的写入地址的起始空间,根据所述数据携带的偏移量、所述起始写入空间的变更次数和所述起始写入空间的地址,确定所述数据的写入地址,其中,所述写入地址表示用于写入所述数据的空间的地址,并将所述数据写入所述写入地址,由此能够实现总线模块对数据保序的需求。
下面结合附图对本公开实施例提供的总线模块的数据处理方法进行详细的说明。
图1示出本公开实施例提供的总线模块的数据处理方法的流程图。在一种可能的实现方式中,所述总线模块的数据处理方法的执行主体可以是总线模块的数据处理装置,例如,所述总线模块的数据处理方法可以由终端设备或服务器或其它电子设备执行。其中,终端设备可以是用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备或者可穿戴设备等。在一些可能的实现方式中,所述总线模块的数据处理方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。如图1所示,所述总线模块的数据处理方法包括步骤S11至步骤S13。
在步骤S11中,响应于接收到缓存向总线模块返回的任一数据请求对应的数据,获取所述数据请求对应的起始写入空间的地址,以及所述数据请求对应的起始写入空间的变更次数,其中,所述起始写入空间表示用于计算所述数据请求对应的数据的写入地址的起始空间。
在步骤S12中,根据所述数据携带的偏移量、所述起始写入空间的变更次数和所述起始写入空间的地址,确定所述数据的写入地址,其中,所述写入地址表示用于写入所述数据的空间的地址。
在步骤S13中,将所述数据写入所述写入地址。
本公开实施例提供的总线模块的数据处理方法可以应用于GPU(GraphicsProcessing Unit,图形处理器)、CPU(Central Processing Unit,中央处理器)等,在此不做限定。在下文中,以所述总线模块的数据处理方法应用于GPU为例进行说明。
在本公开实施例中,总线模块(Bus InterFace,BIF)可以接收来自于请求者(requestor)的数据请求。其中,请求者可以为需要访问缓存的任意模块。例如,在GPU中,请求者可以为GPU中进行图形计算、渲染处理等的任意模块。例如,请求者可以为像素数据主控模块(pixel data master)、计算数据主控模块(compute data master)、顶点数据主控模块(vertex data master)、二维数据主控模块(2D data master)、域数据主控模块(domain data master)等等,在此不做限定。
本公开实施例中请求者访问的缓存可以为任意一级缓存。例如,所述缓存可以为系统级缓存(System Level Cache,SLC);又如,所述缓存可以为L3缓存;又如,所述缓存可以为L2缓存;等等。
在本公开实施例中,数据请求可以为需向请求者返回数据的读请求,在此不做限定。数据请求可以携带目标地址和突发长度(burst length)。其中,目标地址可以为虚拟地址或物理地址,在此不做限定。在一种可能的实现方式中,数据请求还可以携带标识信息,其中,数据请求的标识信息可以用于唯一标识数据请求。
在本公开实施例中,总线模块的内存可以采用SRAM(Static Random AccessMemomy,静态随机存储器),也可以采用其他类型的存储器,在此不做限定。
在一种可能的实现方式中,总线模块的内存可以包括n个空间,每个空间的容量可以等于突发大小(burst size)。其中,突发大小还可以称为突发尺寸等,在此不做限定。突发大小可以表示突发传输中的每笔数据传输的字节数。突发大小可以为32字节(即256比特)或者64字节(即512比特)等,在此不做限定。n表示所述内存中的空间数,n可以为256、512、128等等,在此不做限定。
在一种可能的实现方式中,所述方法还包括:响应于所述总线模块启动,将各个请求者对应的起始读取空间的地址和终止空间的地址均初始化为所述默认值。
其中,任一请求者对应的起始读取空间,可以表示所述请求者对应的最早的一笔未返回数据给所述请求者的空间;任一请求者对应的终止空间,可以表示分配给所述请求者的最后一个空间。
在该实现方式中,总线模块在刚开始工作时,尚未向任一请求者分配空间,因此可以初始化所有请求者的起始读取空间的地址和终止空间的地址为默认值。其中,所述默认值可以为所述总线模块的内存的最尾部的空间的地址。其中,所述内存的最尾部的空间不参与内存空间的实际分配。
在该实现方式中,通过响应于所述总线模块启动,将各个请求者对应的起始读取空间的地址和终止空间的地址均初始化为所述默认值,由此能够基于各个请求者对应的起始读取空间的地址和终止空间的地址,准确判断是否存在各个请求者的尚未完成的数据请求。
在另一种可能的实现方式中,可以响应于所述总线模块启动,将各个请求者对应的起始读取空间的地址和终止空间的地址均初始化为空。
在一种可能的实现方式中,总线模块可以响应于接收到来自于任一请求者的数据请求,且所述数据请求所需的空间数小于或等于总线模块的内存的剩余空间数,从所述内存的剩余空间中,确定分配给所述数据请求的b个空间,其中,b表示所述数据请求所需的空间数,且b为大于或等于1的整数;总线模块可以通过链表记录所述b个空间之间的连接关系,并记录所述b个空间中的起始空间的地址。
在该实现方式中,总线模块在接收到来自于任一请求者的数据请求后,可以根据所述数据请求所需的空间数和总线模块的内存的剩余空间数,判断总线模块当前是否能够处理所述数据请求(即,判断当前是否能够给所述数据请求分配总线模块的内存的空间)。其中,若所述数据请求所需的空间数小于或等于总线模块的内存的剩余空间数,则总线模块可以确定当前能够处理所述数据请求;若所述数据请求所需的空间数大于总线模块的内存的剩余空间数,则总线模块可以确定当前无法处理所述数据请求,需要等待总线模块的内存的剩余空间数达到所述数据请求所需的空间数后再处理所述数据请求。
在上述实现方式中,在数据请求所需的空间数b小于或等于总线模块的内存的剩余空间数的情况下,从总线模块的内存中找到b个可用的空间分配给所述数据请求。
作为该实现方式的一个示例,可以根据数据请求的突发长度,确定所述数据请求所需的空间数。其中,所述数据请求所需的空间数可以等于突发长度加1。例如,所述数据请求的突发长度为L,则所述数据请求所需的空间数b=L+1。
总线模块需要收取众多请求者的请求,通过轮询仲裁的方式,每个时钟周期发送一笔请求给系统级缓存。总线模块每个时钟周期收取系统级缓存发来的一笔数据,并对返回同一个请求者的各笔数据进行重排序,最后将排好序的数据逐周期、逐笔返回请求者。相关技术中,对SRAM空间分配时必须要求整块的连续空间,而在空间释放时每个时钟周期仅能释放一个空间。因此在总线模块高负载工作时,SRAM空间有极大概率非常零碎,对突发长度较大的请求的响应时间较长,从而降低了系统的工作效率。而在系统级缓存返回数据后,通过指令序列控制保序的操作分为两种方案:第一种方案是各指令序列模块相互独立,即,各指令序列模块分别采用不同的RAM(Random Access Memomy,随机存储器);第二种方案是各指令序列模块复用同一块RAM搭建的FIFO(First In First Out,先入先出)队列,通过指针控制逻辑来确定各请求者下一笔需要返回的数据。其中,第一种方案的时序表现较好,但面积开销较大。第二种方案的面积开销略小于第一种方案,但由于在指针设计上逻辑复杂,因此逻辑带来的面积开销较大,且时序表现显著下降。因此可以认为,相关技术在SRAM空间分配和数据保序处理上,面积和时序的开销均较大,且容易导致总线模块阻塞,工作效率较低。
而在本公开实施例提供的上述实现方式中,通过响应于接收到来自于任一请求者的数据请求,且所述数据请求所需的空间数b小于或等于总线模块的内存的剩余空间数,从所述内存的剩余空间中,确定分配给所述数据请求的b个空间,通过链表记录所述b个空间之间的连接关系,记录所述b个空间中的起始空间的地址,由此基于链表管理和分配总线模块的内存空间,总线模块的内存空间不再需要整块分配,从而在内存空间分配时不再产生碎片空间,能够降低总线模块因内存空间过度碎片化而被阻塞的概率。并且,上述实现方式中的总线模块在高负载时空间利用率能够达到最大,从而能够提高总线模块的运行效率。在上述实现方式中,配合链表管理总线模块的内存空间,能够以更节约资源的方式实现总线模块对数据保序的需求,且能够降低遍历链表的代价。
在一个例子中,在相关技术中,总线模块在不降低效率时通常最大支持突发长度为0x7的数据请求。当数据请求的突发长度为0x15时,会对总线模块带来较大的冲击。这是因为,相关技术需要由8个连续空间增加至16个连续空间,但当有其他各种突发长度的数据请求参与请求轮询时,则需要16个连续空间的数据请求被阻塞的概率非常大。而本公开实施例提供的上述实现方式通过将空间“化整为零”,不再需要16个连续空间,而仅需要16个可用空间,由此能够大大降低突发长度较大的数据请求被阻塞的概率。
在一种可能的实现方式中,所述方法还包括:通过计数器获取所述内存的剩余空间数。在该实现方式中,可以在总线模块中设置计数器(counter),从而总线模块可以通过计数器统计总线模块的内存的剩余空间数。其中,由于总线模块的内存中的最后一个空间(即最尾部的空间)不用于存放数据,仅作为链表内指针的默认值,因此,计数器的初始值可以为总线模块的内存的空间数减1。例如,总线模块的内存的空间数为n,则计数器的初始值可以为n-1。其中,总线模块的内存的空间数指的是总线模块的内存的总空间数,所述内存的剩余空间数指的是所述内存的可用空间的数量。
相关技术中,总线模块的内存空间分配模块的计算、管理逻辑复杂,对于突发长度有较大限制,不利于高带宽请求者工作。并且,相关技术中的内存空间分配模块的计算量大,需要对总线模块的状态向量逐位异或得到连续为1的空间,因此当突发长度较大时,需要较多的逻辑门以及较深的逻辑级数,因此时序表现较差。
上述实现方式仅采用计数器即可实现是否可以通过仲裁(即当前是否可以处理所述数据请求)的判断,简化了总线模块寻找可用空间的逻辑,即,简化了内存空间分配的逻辑,从而优化了内存空间分配的时序。
作为该实现方式的一个示例,所述方法还包括:响应于分配出所述内存中的m个空间,对所述计数器减m,其中,m为大于或等于1的整数;以及,响应于释放所述内存中的任一空间,对所述计数器加一。在该示例中,总线模块的内存每分配出m个空间,则总线模块可以对计数器减去对应的数目m;总线模块的内存每释放一个空间,则总线模块可以对计数器加一。其中,总线模块的内存每次分配出的空间数根据数据请求的突发长度的不同而不同。
在该示例中,通过响应于分配出所述内存中的m个空间,对所述计数器减m,以及,响应于释放所述内存中的任一空间,对所述计数器加一,由此能够通过计数器准确地统计总线模块的内存的剩余空间数。
在另一种可能的实现方式中,可以响应于接收到来自于任一请求者的数据请求,统计总线模块的内存对应的状态向量中状态元素为第二预设值的空间数,得到总线模块的内存的剩余空间数。
在一种可能的实现方式中,所述方法还包括:通过所述内存对应的状态向量,记录所述内存中的n个空间的可用状态;其中,n表示所述内存中的空间数,所述状态向量包括与所述n个空间一一对应的n个状态元素;所述状态向量中的任一状态元素为第一预设值,表示所述状态元素对应的空间不可用;所述状态向量中的任一状态元素为第二预设值,表示所述状态元素对应的空间可用;所述从所述内存的剩余空间中,确定分配给所述数据请求的b个空间,包括:将状态元素为所述第二预设值的b个空间分配给所述数据请求。
在该实现方式中,所述状态向量的长度可以等于总线模块的内存的空间数。例如,总线模块的内存的空间数为n,则所述状态向量的长度也可以为n。
作为该实现方式的一个示例,第一预设值为0,第二预设值为1。
作为该实现方式的另一个示例,第一预设值为1,第二预设值为0。
在该实现方式,总线模块可以响应于分配出所述内存中的m个空间,将所述m个空间对应的状态元素设置为第一预设值,其中,m为大于或等于1的整数,以及,总线模块可以响应于释放所述内存中的任一空间,将所述空间对应的状态元素设置为第二预设值。
在该实现方式中,总线模块可以通过逐位遍历的方式,得到b个可用的空间分配给所述数据请求,同时将这b个空间对应的状态元素设置为第一预设值。在该实现方式中,仅需遍历得到b个可用的空间,无需遍历得到b个连续的可用空间。
在该实现方式中,通过所述内存对应的状态向量,记录所述内存中的n个空间的可用状态,其中,n表示所述内存中的空间数,所述状态向量包括与所述n个空间一一对应的n个状态元素,所述状态向量中的任一状态元素为第一预设值,表示所述状态元素对应的空间不可用,所述状态向量中的任一状态元素为第二预设值,表示所述状态元素对应的空间可用,并将状态元素为所述第二预设值的b个空间分配给所述数据请求,由此基于总线模块的内存对应的状态向量准确地确定各空间的可用情况。
在另一种可能的实现方式中,可以通过总线模块的内存对应的数组记录所述内存中的n个空间的可用状态。
在一种可能的实现方式中,在确定分配给所述数据请求的b个空间之后,可以通过链表(link list)记录所述b个空间之间的连接关系,并记录所述b个空间中的起始空间的地址。其中,在缓存尚未向总线模块返回所述数据请求对应的数据的情况下,所述数据请求对应的起始写入空间为所述b个空间中的起始空间。随着缓存向总线模块返回所述数据请求对应的数据,所述数据请求对应的起始写入空间可能发生变化。其中,所述数据请求对应的起始写入空间可以表示用于计算所述数据请求对应的数据的写入地址的起始空间。
在一种可能的实现方式中,所述链表包括n个空间节点,且任一空间节点包括指针域和数据域,其中,n表示所述内存中的空间数,所述指针域用于存储下一空间节点的地址,所述数据域用于存储数据。
在该实现方式中,链表中的n个空间节点与总线模块的内存中的n个空间一一对应。任一空间节点的指针域可以为log2n比特。例如,n=256,则各个空间节点的指针域可以分别为8比特。
例如,总线模块向某一数据请求分配总线模块的内存中的4个空间,分别为空间b0、空间b1、空间b2和空间b3。其中,链表中的空间节点b0的指针域存储空间节点b1的地址,即,链表中的空间节点b0指向空间节点b1;链表中的空间节点b1的指针域存储空间节点b2的地址,即,链表中的空间节点b1指向空间节点b2;链表中的空间节点b2的指针域存储空间节点b3的地址,即,链表中的空间节点b2指向空间节点b3;链表中的空间节点b3的指针域存储内存的最尾部的空间的地址,即,链表中空间节点b3指向内存的最尾部的空间。
在该实现方式中,通过所述链表包括n个空间节点,且任一空间节点包括指针域和数据域,其中,n表示所述内存中的空间数,所述指针域用于存储下一空间节点的地址,所述数据域用于存储数据,由此使总线模块的内存中的每一块物理空间可以通过指针连接,总线模块的内存空间不再整块分配,从而在内存空间分配时不再产生碎片空间。并且,来自不同请求者的数据请求可以复用同一链表,从而能够节省面积开销并优化时序。请求者的数目越多,则该方案的优势就越显著。
在一种可能的实现方式中,所述方法还包括:响应于接收到来自于任一请求者的数据请求,且所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,更新所述请求者对应的起始读取空间的地址和/或终止空间的地址,其中,所述终止空间表示分配给所述请求者的最后一个空间。
在该实现方式中,通过响应于接收到来自于任一请求者的数据请求,且所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,更新所述请求者对应的起始读取空间的地址和/或终止空间的地址,由此能够基于所述请求者对应的最新的数据请求,维护所述请求者对应的起始读取空间的地址和终止空间的地址。
作为该实现方式的一个示例,所述响应于接收到来自于任一请求者的数据请求,且所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,更新所述请求者对应的起始读取空间的地址和/或终止空间的地址,包括:响应于接收到来自于任一请求者的数据请求,所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,且所述请求者对应的起始读取空间的地址为默认值,更新所述请求者对应的起始读取空间的地址和终止空间的地址;或者,响应于接收到来自于任一请求者的数据请求,所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,且所述请求者对应的起始读取空间的地址不为默认值,更新所述请求者对应的终止空间的地址。
在该示例中,若接收到来自于任一请求者的数据请求,且所述数据请求所需的空间数b小于或等于所述总线模块的内存的剩余空间数,则可以向所述数据请求分配b个空间。若所述请求者对应的起始读取空间的地址为默认值,则可以确定总线模块中不存在来自同一请求者的其他未处理完成的数据请求,由此可以将分配给当前的数据请求的b个空间中的起始空间的地址,确定为所述请求者对应的起始读取空间的地址,并将分配给当前的数据请求的b个空间中的最后一个空间的地址,确定为所述请求者对应的终止空间的地址。
在该示例中,若接收到来自于任一请求者的数据请求,且所述数据请求所需的空间数b小于或等于所述总线模块的内存的剩余空间数,则可以向所述数据请求分配b个空间。若所述请求者对应的起始读取空间的地址不为默认值,则可以确定总线模块中存在来自同一请求者的其他未处理完成的数据请求,由此可以保持所述请求者对应的起始读取空间的地址不变,并可以将分配给当前的数据请求的b个空间中的最后一个空间的地址,确定为所述请求者对应的终止空间的地址。
在一种可能的实现方式中,可以响应于接收到来自于任一请求者的数据请求,且所述数据请求所需的空间数b小于或等于所述总线模块的内存的剩余空间数,向所述数据请求分配b个空间,并向所述数据请求分配指令编号。
在实现方式中,总线模块每通过一个数据请求,可以为其分配一个指令编号。
在该实现方式中,总线模块可以将所述指令编号连同所述数据请求一并发送给所述缓存,以使所述缓存基于所述指令编号返回所述数据请求对应的数据。缓存在接收到数据请求对应的指令编号之后,可以不对指令编号进行处理,直接将指令编号随着数据返回给总线模块。
作为该实现方式的一个示例,指令编号的范围可以为0~n-1,其中,n表示总线模块的内存的空间数。由于总线模块在同一时段不会向n个以上数据请求分配空间,因此,在同一时段内,能够保证各数据请求对应的指令编号不同。
当然,本领域技术人员可以根据实际应用场景需求和/或个人喜好灵活确定指令编号的设置方式,在此不做限定。
在该实现方式中,通过向所述数据请求分配指令编号,并将所述指令编号连同所述数据请求一并发送给所述缓存,以使所述缓存基于所述指令编号返回所述数据请求对应的数据,由此总线模块能够基于指令编号确定缓存返回的是哪个数据请求对应的数据。
在一种可能的实现方式中,所述方法还包括:记录所述数据请求对应的起始写入空间的地址和起始写入空间的变更次数。其中,在缓存尚未向总线模块返回所述数据请求对应的数据的情况下,所述数据请求对应的起始写入空间为总线模块向所述数据请求分配的b个空间中的起始空间。随着缓存向总线模块返回所述数据请求对应的数据,所述数据请求对应的起始写入空间可能发生变化。其中,所述数据请求对应的起始写入空间可以表示用于计算所述数据请求对应的数据的写入地址的起始空间。所述数据请求对应的起始写入空间的变更次数可以表示所述数据请求对应的起始写入空间发生变化的次数。起始写入空间的变更次数还可以称为翻转次数、更改次数等,在此不做限定。
作为该实现方式的一个示例,可以在查找表中,以指令编号作为索引,记录各个数据请求对应的起始写入空间的地址和起始写入空间的变更次数。例如,查找表中的索引对应的数据可以为起始写入空间的地址拼接起始写入空间的变更次数。其中,起始写入空间的变更次数可以采用log2Lmax比特来表示,其中,Lmax表示预设的最大突发长度。
在一个例子中,所述获取所述数据请求对应的起始写入空间的地址,以及所述数据请求对应的起始写入空间的变更次数,可以包括:基于所述数据请求对应的指令编号,从所述查找表中获取所述数据请求对应的起始写入空间的地址,以及所述数据请求对应的起始写入空间的变更次数。
在另一种可能的实现方式中,所述数据请求可以携带标识信息(ID),总线模块可以将所述标识信息连同所述数据请求一并发送给所述缓存,以使所述缓存基于所述标识信息返回所述数据请求对应的数据。
在本公开实施例中,缓存向总线模块返回的任一数据请求对应的数据,携带偏移量。其中,偏移量的取值范围可以为0~L,其中,L表示所述数据请求的突发长度。
在一种可能的实现方式中,缓存向总线模块返回的任一数据请求对应的数据,还携带所述数据请求对应的指令编号。总线模块可以根据所述指令编号,查找所述数据请求对应的起始写入空间的地址,以及所述数据请求对应的起始写入空间的变更次数。
在本公开实施例中,所述起始写入空间的变更次数可以小于或等于所述数据请求的突发长度。例如,所述数据请求的突发长度为L,所述起始写入空间的变更次数的取值范围可以为0~L。
在一种可能的实现方式中,所述根据所述数据携带的偏移量、所述起始写入空间的变更次数和所述起始写入空间的地址,确定所述数据的写入地址,包括:根据所述数据携带的偏移量和所述起始写入空间的变更次数,确定所述数据的实际偏移量;根据所述起始写入空间的地址和所述实际偏移量,确定所述数据的写入地址。
在该实现方式中,可以根据所述数据携带的偏移量和所述起始写入空间的变更次数,确定所述数据的实际偏移量。其中,所述数据携带的偏移量可以表示所述数据相对于所述数据请求的首笔数据的偏移量,实际偏移量可以表示从起始写入空间开始遍历的次数。
作为该实现方式的一个示例,所述根据所述数据携带的偏移量和所述起始写入空间的变更次数,确定所述数据的实际偏移量,包括:将所述数据携带的偏移量与所述起始写入空间的变更次数的差值,确定为所述数据的实际偏移量。
在该示例中,可以响应于所述数据携带的偏移量与所述起始写入空间的变更次数不同,将所述数据携带的偏移量与所述起始写入空间的变更次数的差值,确定为所述数据的实际偏移量。即,实际偏移量=所述数据携带的偏移量-起始写入空间的变更次数。
在该示例中,通过将所述数据携带的偏移量与所述起始写入空间的变更次数的差值,确定为所述数据的实际偏移量,由此能够准确地确定所述数据的实际偏移量,从而能够准确地确定所述数据的写入地址,以实现保序。
作为该实现方式的另一个示例,所述根据所述数据携带的偏移量和所述起始写入空间的变更次数,确定所述数据的实际偏移量,包括:响应于所述数据携带的偏移量与所述起始写入空间的变更次数相同,确定所述数据的实际偏移量为0。
值得说明的是,在偏移量与所述起始写入空间的变更次数相同的情况下,数据的写入地址为起始写入空间的地址。
在一种可能的实现方式中,分配给所述数据请求的空间通过链表记录连接关系;所述根据所述起始写入空间的地址和所述实际偏移量,确定所述数据的写入地址,包括:根据所述起始写入空间的地址,从所述起始写入空间开始遍历所述链表,向后遍历所述实际偏移量,确定所述数据的写入地址。
其中,从所述起始写入空间开始向后遍历的次数等于所述实际偏移量。
在该实现方式中,基于链表管理和分配总线模块的内存空间,总线模块的内存空间不再整块分配,从而在内存空间分配时不再产生碎片空间,能够降低总线模块因内存空间过度碎片化而被阻塞的概率。并且,该实现方式中的总线模块在高负载时空间利用率能够达到最大,从而能够提高总线模块的运行效率。
在一种可能的实现方式中,来自不同请求者的数据请求复用同一链表。
与相关技术中对多个请求者维护多个指令序列,且多个指令序列分别采用不同RAM(Random Access Memomy,随机存储器)的方案相比,在该实现方式仅需要通过一个链表更新维护各请求者对应的空间节点,从而能够节省面积开销。与相关技术中多个指令序列复用同一RAM搭建FIFO(First In First Out,先入先出)队列的方案,该实现方式优化了流水线结构,简化了总线模块的整体逻辑,能够以更简单的逻辑实现总线模块对数据保序返回的功能。
在该实现方式中,可以维护各请求者对应的起始读取空间的地址和终止空间的地址。例如,总线模块的内存包括n个空间,则任一请求者对应的起始读取空间的地址和终止空间的地址可以分别通过log2n比特记录。例如,n=256,则任一请求者对应的起始读取空间的地址可以通过8比特记录,且任一请求者对应的终止空间的地址可以通过8比特记录。新增更多的请求者带来的空间分配、保序所造成的面积损失几乎可以忽略不计。
在一种可能的实现方式中,在所述确定所述数据的写入地址之后,所述方法还包括:响应于所述数据携带的偏移量与所述起始写入空间的变更次数相同,根据所述链表确定所述写入地址的下一地址;将所述起始写入空间的地址变更为所述下一地址;将所述起始写入空间的变更次数加一。
在该实现方式中,根据所述写入地址的指针域,可以确定所述写入地址的下一地址。
在该实现方式中,通过响应于所述数据携带的偏移量与所述起始写入空间的变更次数相同,根据所述链表确定所述写入地址的下一地址,并将所述起始写入空间的地址变更为所述下一地址;将所述起始写入空间的变更次数加一,由此能够实现对各个数据请求对应的起始写入空间的地址和起始写入空间的变更次数的维护。
作为该实现方式的一个示例,所述方法还包括:响应于所述起始写入空间的地址和所述起始写入空间的变更次数发生更新,更新查找表。
在另一种可能的实现方式中,响应于所述数据携带的偏移量与所述起始写入空间的变更次数不同,保持所述起始写入空间的地址和所述起始写入空间的变更次数不变。
在一种可能的实现方式中,在确定所述数据的实际偏移量之后,可以根据所述起始写入空间的地址和所述实际偏移量,遍历链表,确定所述数据的写入地址,并将所述数据写入所述写入地址。
为了便于理解,下面举一个例子。在这个例子中,缓存为系统级缓存,数据请求中的目标地址为虚拟地址。
在这个例子中,针对指令编号为j的数据请求,系统级缓存需要向总线模块返回A、B、C、D、E、F、G共7笔数据,且7笔数据在总线模块的内存中的存放顺序为A→B→C→D→E→F→G。其中,0≤j≤n-1,其中,n表示总线模块的内存的空间数。总线模块发送给系统级缓存的虚拟地址指向数据A所在地址,突发长度burst length=0x6,相应地,系统级缓存向总线模块返回的7笔数据的偏移量分别为0、1、2、3、4、5、6。假设总线模块为这7笔数据分配的空间的地址分别为a、b、c、d、e、f、g,即,数据A的写入地址为a,数据B的写入地址为b,数据C的写入地址为c,数据D的写入地址为d,数据E的写入地址为e,数据F的写入地址为f,数据G的写入地址为g。其中,link_list[a]=b,link_list[b]=c,link_list[c]=d,link_list[d]=e,link_list[e]=f,link_list[f]=g,link_list[g]指向总线模块的内存的最尾部的空间的地址或者同一请求者的下一数据请求的起始写入空间的地址。其中,link_list[x]表示空间节点x的指针域。
在7笔数据均未返回总线模块时,起始写入空间的地址为a,起始写入空间的变更次数为0。假设7笔数据的返回顺序为A→C→D→E→B→F→G。
总线模块可以响应于接收到系统缓存返回的指令编号为j的数据请求对应的数据A,从查找表中获取指令编号j对应的起始写入空间的地址a,以及指令编号j对应的起始写入空间的变更次数0。总线模块可以计算数据A携带的偏移量0与起始写入空间的变更次数0的差值,得到数据A的实际偏移量为0。总线模块可以从起始写入空间的地址a开始遍历链表,向后遍历0次,确定数据A的写入地址为a。总线模块可以将数据A写入空间a。由于数据A携带的偏移量0与起始空间的变更次数0相同,因此,总线模块可以将查找表中指令编号j对应的起始写入空间的地址变更为数据A的写入地址为a的下一地址,即,将指令编号j对应的起始写入空间的地址变更为link_list[a]。并且,总线模块可以将查找表中指令编号j对应的起始写入空间的变更次数加一。即,查找表中指令编号j对应的起始写入空间变更的地址变更为b,指令编号j对应的起始写入空间的变更次数更新为1。
总线模块可以响应于接收到系统缓存返回的指令编号为j的数据请求对应的数据C,从查找表中获取指令编号j对应的起始写入空间的地址b,以及指令编号j对应的起始写入空间的变更次数1。总线模块可以计算数据C携带的偏移量2与起始写入空间的变更次数1的差值,得到数据C的实际偏移量1。总线模块可以从起始写入空间的地址b开始遍历链表,向后遍历1次,确定数据C的写入地址为c。总线模块可以将数据C写入空间c。由于数据C携带的偏移量2与起始写入空间的变更次数1不同,因此,查找表中指令编号j对应的起始写入空间的地址b不变,且指令编号j对应的起始写入空间的变更次数不变,仍为1。
总线模块可以响应于接收到系统缓存返回的指令编号为j的数据请求对应的数据D,从查找表中获取指令编号j对应的起始写入空间的地址b,以及指令编号j对应的起始写入空间的变更次数1。总线模块可以计算数据D携带的偏移量3与起始写入空间的变更次数1的差值,得到数据D的实际偏移量2。总线模块可以从起始写入空间的地址b开始遍历链表,向后遍历2次,确定数据D的写入地址为d。总线模块可以将数据D写入空间d。由于数据D携带的偏移量3与起始写入空间的变更次数1不同,因此,查找表中指令编号j对应的起始写入空间的地址b不变,且指令编号j对应的起始写入空间的变更次数不变,仍为1。
总线模块可以响应于接收到系统缓存返回的指令编号为j的数据请求对应的数据E,从查找表中获取指令编号j对应的起始写入空间的地址b,以及指令编号j对应的起始写入空间的变更次数1。总线模块可以计算数据E携带的偏移量4与起始写入空间的变更次数1的差值,得到数据E的实际偏移量3。总线模块可以从起始写入空间的地址b开始遍历链表,向后遍历3次,确定数据E的写入地址为e。总线模块可以将数据E写入空间e。由于数据E携带的偏移量4与起始写入空间的变更次数1不同,因此,查找表中指令编号j对应的起始写入空间的地址b不变,且指令编号j对应的起始写入空间的变更次数不变,仍为1。
总线模块可以响应于接收到系统缓存返回的指令编号为j的数据请求对应的数据B,从查找表中获取指令编号j对应的起始写入空间的地址b,以及指令编号j对应的起始写入空间的变更次数1。总线模块可以计算数据B携带的偏移量1与起始写入空间的变更次数1的差值,得到数据B的实际偏移量0。总线模块可以从起始写入空间的地址b开始遍历链表,向后遍历0次,确定数据B的写入地址为b。总线模块可以将数据B写入空间b。由于数据B携带的偏移量1与起始空间的变更次数1相同,因此,总线模块可以将查找表中指令编号j对应的起始写入空间的地址变更为数据B的写入地址为b的下一地址,即,将指令编号j对应的起始写入空间的地址变更为link_list[b]。并且,总线模块可以将查找表中指令编号j对应的起始写入空间的变更次数加一。即,查找表中指令编号j对应的起始写入空间变更的地址变更为c,指令编号j对应的起始写入空间的变更次数更新为2。
总线模块可以响应于接收到系统缓存返回的指令编号为j的数据请求对应的数据F,从查找表中获取指令编号j对应的起始写入空间的地址c,以及指令编号j对应的起始写入空间的变更次数2。总线模块可以计算数据F携带的偏移量5与起始写入空间的变更次数2的差值,得到数据F的实际偏移量3。总线模块可以从起始写入空间的地址c开始遍历链表,向后遍历3次,确定数据F的写入地址为f。总线模块可以将数据F写入空间f。由于数据F携带的偏移量5与起始写入空间的变更次数2不同,因此,查找表中指令编号j对应的起始写入空间的地址c不变,且指令编号j对应的起始写入空间的变更次数不变,仍为2。
总线模块可以响应于接收到系统缓存返回的指令编号为j的数据请求对应的数据G,从查找表中获取指令编号j对应的起始写入空间的地址c,以及指令编号j对应的起始写入空间的变更次数2。总线模块可以计算数据G携带的偏移量6与起始写入空间的变更次数2的差值,得到数据G的实际偏移量4。总线模块可以从起始写入空间的地址c开始遍历链表,向后遍历4次,确定数据G的写入地址为g。总线模块可以将数据G写入空间g。由于数据G携带的偏移量6与起始写入空间的变更次数2不同,因此,查找表中指令编号j对应的起始写入空间的地址c不变,且指令编号j对应的起始写入空间的变更次数不变,仍为2。
至此,7笔数据均已返回总线模块。在总线模块将该数据请求的指令编号分配给新的数据请求之前,该数据请求的起始写入空间的地址和起始写入空间的变更次数将不再被使用。在总线模块将该数据请求的指令编号分配给新的数据请求后,起始写入空间的地址和起始写入空间的变更次数将被覆盖。
在一种可能的实现方式中,所述方法还包括:响应于任一请求者对应的起始读取空间的数据已返回所述总线模块,向所述请求者返回所述起始读取空间的数据,其中,所述起始读取空间为所述请求者对应的最早的一笔未返回数据给所述请求者的空间。
在该实现方式中,在总线模块给请求者分配b个空间的情况下,总线模块按顺序向请求者返回所述b个空间中的数据。例如,b个空间依次包括空间b0、空间b1、空间b2和空间b3,则空间b0、空间b1、空间b2和空间b3的数据按顺序返回所述请求者。即,在空间b0中的数据返回给所述请求者之前,空间b1、空间b2和空间b3中的数据均不返回给所述请求者;在空间b1中的数据返回给所述请求者之前,空间b2和空间b3中的数据均不返回给所述请求者;在空间b2中的数据返回给所述请求者之前,空间b3中的数据不返回给所述请求者。在该实现方式中,总线模块在每个时钟周期可以返回一笔数据(即一个空间的数据)。若空间b0中已有数据(即空间b0对应的数据已写入空间b0),则可以向所述请求者返回空间b0中的数据,并释放空间b0;若空间b1中已有数据(即空间b1对应的数据已写入空间b1),则可以向所述请求者返回空间b1中的数据,并释放空间b1;若空间b2中已有数据(即空间b2对应的数据已写入空间b2),则可以向所述请求者返回空间b2中的数据,并释放空间b2;若空间b3中已有数据(即空间b3对应的数据已写入空间b3),则可以向所述请求者返回空间b3中的数据,并释放空间b3。
作为该实现方式的一个示例,总线模块可以针对每个请求者分别设置读指针,且任一请求者对应的读指针指向所述请求者对应的起始读取空间。
在该实现方式中,总线模块可以在所述请求者对应的起始读取空间的数据有效,返回数据通道畅通,且请求者对这笔数据有接收能力的情况下,向所述请求者返回所述起始读取空间的数据。
在该实现方式中,通过响应于任一请求者对应的起始读取空间的数据已返回所述总线模块,向所述请求者返回所述起始读取空间的数据,其中,所述起始读取空间为所述请求者对应的最早的一笔未返回数据给所述请求者的空间,由此能够实现各请求者的数据保序。
作为该实现方式的一个示例,在所述向所述请求者返回所述起始读取空间的数据之后,所述方法还包括:释放所述起始读取空间;根据所述链表,更新所述请求者对应的起始读取空间的地址。
在该示例中,在向所述请求者返回所述起始读取空间的数据之后,可以立即释放所述起始读取空间。任一被释放的空间可以在下一时钟周期被分配给新的数据请求。
在该示例中,通过在向所述请求者返回所述起始读取空间的数据之后,释放所述起始读取空间,由此能够提高总线模块的内存的空间利用效率。通过根据所述链表,更新所述请求者对应的起始读取空间的地址,由此能够准确地确定更新后的所述请求者对应的起始读取空间的地址。
下面通过一个具体的应用场景说明本公开实施例提供的总线模块的数据处理方法。
图2示出本公开实施例提供的总线模块的数据处理方法的应用场景中,总线模块将数据请求发送给系统级缓存(SLC)之前的数据处理流程的示意图。如图2所示,总线模块可以接收来自于请求者的数据请求,并获取数据请求携带的突发长度L。总线模块可以判定计数器是否大于或等于b,其中,b=L+1。若否,则等待处理;若是,则可以从SRAM中找到b个可用空间分配给所述数据请求,并为所述数据请求分配一个指令编号。总线模块可以通过链表记录b个空间之间的连接关系,记录b个空间中的起始写入空间的地址。总线模块可以更新查找表(参见图2中的步骤2),通过查找表记录指令编号与起始写入空间的地址、起始写入空间的变更次数之间的对应关系。总线模块可以将所述数据请求和所述指令编号发往系统级缓存。
图3示出本公开实施例提供的总线模块的数据处理方法的应用场景中,系统级缓存经总线模块保序返回数据给请求者的处理流程。如图3所示,总线模块在向所述数据请求分配b个空间后,更新所述请求者对应的起始读取空间的地址和终止空间的地址(参见图3中的步骤1)。系统级缓存向总线模块返回的数据可以携带指令编号和偏移量。总线模块可以根据指令编号,访问查找表(参见图3中的步骤3),获取起始写入空间的地址以及起始写入空间的变更次数。总线模块可以判断所述数据携带的偏移量是否等于所述起始写入空间的变更次数。若所述数据携带的偏移量等于所述起始写入空间的变更次数,则可以读取链表信息(参见图3中的步骤5),将所述起始写入空间的地址变更为当前地址的下一地址(参见图3中的步骤6),并将所述起始写入空间的变更次数加一(参见图3中的步骤7)。若所述数据携带的偏移量不等于所述起始写入空间的变更次数,则可以计算所述数据的实际偏移量(参见图3中的步骤8),具体为,将所述数据携带的偏移量与所述起始写入空间的变更次数的差值,确定为所述数据的实际偏移量。可以根据所述起始写入空间的地址和所述实际偏移量,遍历链表,确定所述数据的写入地址(参见图3中的步骤9),并将所述数据写入所述写入地址(参见图3中的步骤10)。总线模块可以通过所述请求者对应的读指针指向所述请求者对应的起始读取空间,并可以判断所述起始读取空间是否有数据,还可以响应于起始读取空间的数据已返回所述总线模块,向所述请求者返回所述起始读取空间的数据(参见图3中的步骤11和步骤12)。在向所述请求者返回所述起始读取空间的数据之后,总线模块可以释放所述起始读取空间,并可以根据所述链表,更新所述请求者对应的起始读取空间的地址(参见图3中的步骤13)。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
此外,本公开还提供了总线模块的数据处理装置、电子设备、计算机可读存储介质、计算机程序产品,上述均可用来实现本公开提供的任一种总线模块的数据处理方法,相应技术方案和技术效果可参见方法部分的相应记载,不再赘述。
图4示出本公开实施例提供的总线模块的数据处理装置的框图。如图4所示,所述总线模块的数据处理装置包括:
获取模块41,用于响应于接收到缓存向总线模块返回的任一数据请求对应的数据,获取所述数据请求对应的起始写入空间的地址,以及所述数据请求对应的起始写入空间的变更次数,其中,所述起始写入空间表示用于计算所述数据请求对应的数据的写入地址的起始空间;
第一确定模块42,用于根据所述数据携带的偏移量、所述起始写入空间的变更次数和所述起始写入空间的地址,确定所述数据的写入地址,其中,所述写入地址表示用于写入所述数据的空间的地址;
写入模块43,用于将所述数据写入所述写入地址。
在一种可能的实现方式中,所述第一确定模块42用于:
根据所述数据携带的偏移量和所述起始写入空间的变更次数,确定所述数据的实际偏移量;
根据所述起始写入空间的地址和所述实际偏移量,确定所述数据的写入地址。
在一种可能的实现方式中,分配给所述数据请求的空间通过链表记录连接关系;
所述第一确定模块42用于:
根据所述起始写入空间的地址,从所述起始写入空间开始遍历所述链表,向后遍历所述实际偏移量,确定所述数据的写入地址。
在一种可能的实现方式中,所述装置还包括:
第二确定模块,用于响应于所述数据携带的偏移量与所述起始写入空间的变更次数相同,确定所述写入地址的下一地址;
第一更新模块,用于将所述起始写入空间的地址变更为所述下一地址;
第二更新模块,用于将所述起始写入空间的变更次数加一。
在一种可能的实现方式中,所述第一确定模块42用于:
将所述数据携带的偏移量与所述起始写入空间的变更次数的差值,确定为所述数据的实际偏移量。
在一种可能的实现方式中,所述装置还包括:
返回模块,用于响应于任一请求者对应的起始读取空间的数据已返回所述总线模块,向所述请求者返回所述起始读取空间的数据,其中,所述起始读取空间为所述请求者对应的最早的一笔未返回数据给所述请求者的空间。
在一种可能的实现方式中,所述装置还包括:
释放模块,用于释放所述起始读取空间;
第三更新模块,用于更新所述请求者对应的起始读取空间的地址。
在一种可能的实现方式中,所述装置还包括:
第四更新模块,用于响应于接收到来自于任一请求者的数据请求,且所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,更新所述请求者对应的起始读取空间的地址和/或终止空间的地址,其中,所述终止空间表示分配给所述请求者的最后一个空间。
在一种可能的实现方式中,所述第四更新模块用于:
响应于接收到来自于任一请求者的数据请求,所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,且所述请求者对应的起始读取空间的地址为默认值,更新所述请求者对应的起始读取空间的地址和终止空间的地址;
或者,
响应于接收到来自于任一请求者的数据请求,所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,且所述请求者对应的起始读取空间的地址不为默认值,更新所述请求者对应的终止空间的地址。
在一种可能的实现方式中,所述装置还包括:
初始化模块,用于响应于所述总线模块启动,将各个请求者对应的起始读取空间的地址和终止空间的地址均初始化为所述默认值。
在一种可能的实现方式中,所述起始写入空间的变更次数小于或等于所述数据请求的突发长度。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现和技术效果可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。其中,所述计算机可读存储介质可以是非易失性计算机可读存储介质,或者可以是易失性计算机可读存储介质。
本公开实施例还提出一种计算机程序,包括计算机可读代码,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述方法。
本公开实施例还提供了一种计算机程序产品,包括计算机可读代码,或者承载有计算机可读代码的非易失性计算机可读存储介质,当所述计算机可读代码在电子设备中运行时,所述电子设备中的处理器执行上述方法。
本公开实施例还提供一种电子设备,包括:一个或多个处理器;用于存储可执行指令的存储器;其中,所述一个或多个处理器被配置为调用所述存储器存储的可执行指令,以执行上述方法。
电子设备可以被提供为终端、服务器或其它形态的设备。
图5示出本公开实施例提供的电子设备1900的框图。例如,电子设备1900可以被提供为一终端或一服务器。参照图5,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入/输出接口1958(I/O接口)。电子设备1900可以操作基于存储在存储器1932的操作系统,例如微软服务器操作系统(Windows ServerTM),苹果公司推出的基于图形用户界面操作系统(MacOS XTM),多用户多进程的计算机操作系统(UnixTM),自由和开放原代码的类Unix操作系统(LinuxTM),开放原代码的类Unix操作系统(FreeBSDTM)或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
若本公开实施例的技术方案涉及个人信息,应用本公开实施例的技术方案的产品在处理个人信息前,已明确告知个人信息处理规则,并取得个人自主同意。若本公开实施例的技术方案涉及敏感个人信息,应用本公开实施例的技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标识告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标识/信息告知个人信息处理规则的情况下,通过弹窗信息或请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式以及处理的个人信息种类等信息。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (14)
1.一种总线模块的数据处理方法,其特征在于,包括:
响应于接收到缓存向总线模块返回的任一数据请求对应的数据,获取所述数据请求对应的起始写入空间的地址,以及所述数据请求对应的起始写入空间的变更次数,其中,所述起始写入空间表示用于计算所述数据请求对应的数据的写入地址的起始空间;
根据所述数据携带的偏移量、所述起始写入空间的变更次数和所述起始写入空间的地址,确定所述数据的写入地址,其中,所述写入地址表示用于写入所述数据的空间的地址;
将所述数据写入所述写入地址。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据携带的偏移量、所述起始写入空间的变更次数和所述起始写入空间的地址,确定所述数据的写入地址,包括:
根据所述数据携带的偏移量和所述起始写入空间的变更次数,确定所述数据的实际偏移量;
根据所述起始写入空间的地址和所述实际偏移量,确定所述数据的写入地址。
3.根据权利要求2所述的方法,其特征在于,分配给所述数据请求的空间通过链表记录连接关系;
所述根据所述起始写入空间的地址和所述实际偏移量,确定所述数据的写入地址,包括:
根据所述起始写入空间的地址,从所述起始写入空间开始遍历所述链表,向后遍历所述实际偏移量,确定所述数据的写入地址。
4.根据权利要求1所述的方法,其特征在于,在所述确定所述数据的写入地址之后,所述方法还包括:
响应于所述数据携带的偏移量与所述起始写入空间的变更次数相同,确定所述写入地址的下一地址;
将所述起始写入空间的地址变更为所述下一地址;
将所述起始写入空间的变更次数加一。
5.根据权利要求2或3所述的方法,其特征在于,所述根据所述数据携带的偏移量和所述起始写入空间的变更次数,确定所述数据的实际偏移量,包括:
将所述数据携带的偏移量与所述起始写入空间的变更次数的差值,确定为所述数据的实际偏移量。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于任一请求者对应的起始读取空间的数据已返回所述总线模块,向所述请求者返回所述起始读取空间的数据,其中,所述起始读取空间为所述请求者对应的最早的一笔未返回数据给所述请求者的空间。
7.根据权利要求6所述的方法,其特征在于,在所述向所述请求者返回所述起始读取空间的数据之后,所述方法还包括:
释放所述起始读取空间;
更新所述请求者对应的起始读取空间的地址。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于接收到来自于任一请求者的数据请求,且所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,更新所述请求者对应的起始读取空间的地址和/或终止空间的地址,其中,所述终止空间表示分配给所述请求者的最后一个空间。
9.根据权利要求8所述的方法,其特征在于,所述响应于接收到来自于任一请求者的数据请求,且所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,更新所述请求者对应的起始读取空间的地址和/或终止空间的地址,包括:
响应于接收到来自于任一请求者的数据请求,所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,且所述请求者对应的起始读取空间的地址为默认值,更新所述请求者对应的起始读取空间的地址和终止空间的地址;
或者,
响应于接收到来自于任一请求者的数据请求,所述数据请求所需的空间数小于或等于所述总线模块的内存的剩余空间数,且所述请求者对应的起始读取空间的地址不为默认值,更新所述请求者对应的终止空间的地址。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
响应于所述总线模块启动,将各个请求者对应的起始读取空间的地址和终止空间的地址均初始化为所述默认值。
11.根据权利要求1所述的方法,其特征在于,所述起始写入空间的变更次数小于或等于所述数据请求的突发长度。
12.一种总线模块的数据处理装置,其特征在于,包括:
获取模块,用于响应于接收到缓存向总线模块返回的任一数据请求对应的数据,获取所述数据请求对应的起始写入空间的地址,以及所述数据请求对应的起始写入空间的变更次数,其中,所述起始写入空间表示用于计算所述数据请求对应的数据的写入地址的起始空间;
第一确定模块,用于根据所述数据携带的偏移量、所述起始写入空间的变更次数和所述起始写入空间的地址,确定所述数据的写入地址,其中,所述写入地址表示用于写入所述数据的空间的地址;
写入模块,用于将所述数据写入所述写入地址。
13.一种电子设备,其特征在于,包括:
一个或多个处理器;
用于存储可执行指令的存储器;
其中,所述一个或多个处理器被配置为调用所述存储器存储的可执行指令,以执行权利要求1至11中任意一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至11中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311667267.1A CN117472796B (zh) | 2023-12-06 | 2023-12-06 | 总线模块的数据处理方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311667267.1A CN117472796B (zh) | 2023-12-06 | 2023-12-06 | 总线模块的数据处理方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117472796A true CN117472796A (zh) | 2024-01-30 |
CN117472796B CN117472796B (zh) | 2024-06-18 |
Family
ID=89634860
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311667267.1A Active CN117472796B (zh) | 2023-12-06 | 2023-12-06 | 总线模块的数据处理方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117472796B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110275841A (zh) * | 2019-06-20 | 2019-09-24 | 上海燧原智能科技有限公司 | 访问请求处理方法、装置、计算机设备和存储介质 |
CN111506269A (zh) * | 2020-04-22 | 2020-08-07 | 腾讯科技(深圳)有限公司 | 一种磁盘存储空间分配方法、装置、设备及存储介质 |
US20200364148A1 (en) * | 2019-05-15 | 2020-11-19 | EMC IP Holding Company LLC | Method, device and computer program product for implementing file system |
CN112040001A (zh) * | 2020-09-07 | 2020-12-04 | 平安科技(深圳)有限公司 | 一种基于分布式存储的请求处理方法及装置 |
CN112802518A (zh) * | 2021-03-25 | 2021-05-14 | 深圳市汇顶科技股份有限公司 | 数据写入方法、片上系统芯片及计算机可读存储介质 |
CN115587054A (zh) * | 2021-07-06 | 2023-01-10 | 武汉中科医疗科技工业技术研究院有限公司 | 数据传输系统和数据传输方法 |
CN116010296A (zh) * | 2021-10-21 | 2023-04-25 | 华为技术有限公司 | 一种处理请求的方法、装置及系统 |
CN116028388A (zh) * | 2023-01-17 | 2023-04-28 | 摩尔线程智能科技(北京)有限责任公司 | 高速缓存方法、装置、电子设备、存储介质和程序产品 |
CN116155828A (zh) * | 2022-12-21 | 2023-05-23 | 北京云豹创芯智能科技有限公司 | 一种多个虚拟队列的报文保序方法及其装置、存储介质、电子设备 |
CN116302491A (zh) * | 2023-01-17 | 2023-06-23 | 阿里云计算有限公司 | 内存管理方法、装置、计算机设备及存储介质 |
-
2023
- 2023-12-06 CN CN202311667267.1A patent/CN117472796B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200364148A1 (en) * | 2019-05-15 | 2020-11-19 | EMC IP Holding Company LLC | Method, device and computer program product for implementing file system |
CN110275841A (zh) * | 2019-06-20 | 2019-09-24 | 上海燧原智能科技有限公司 | 访问请求处理方法、装置、计算机设备和存储介质 |
CN111506269A (zh) * | 2020-04-22 | 2020-08-07 | 腾讯科技(深圳)有限公司 | 一种磁盘存储空间分配方法、装置、设备及存储介质 |
CN112040001A (zh) * | 2020-09-07 | 2020-12-04 | 平安科技(深圳)有限公司 | 一种基于分布式存储的请求处理方法及装置 |
CN112802518A (zh) * | 2021-03-25 | 2021-05-14 | 深圳市汇顶科技股份有限公司 | 数据写入方法、片上系统芯片及计算机可读存储介质 |
CN115587054A (zh) * | 2021-07-06 | 2023-01-10 | 武汉中科医疗科技工业技术研究院有限公司 | 数据传输系统和数据传输方法 |
CN116010296A (zh) * | 2021-10-21 | 2023-04-25 | 华为技术有限公司 | 一种处理请求的方法、装置及系统 |
CN116155828A (zh) * | 2022-12-21 | 2023-05-23 | 北京云豹创芯智能科技有限公司 | 一种多个虚拟队列的报文保序方法及其装置、存储介质、电子设备 |
CN116028388A (zh) * | 2023-01-17 | 2023-04-28 | 摩尔线程智能科技(北京)有限责任公司 | 高速缓存方法、装置、电子设备、存储介质和程序产品 |
CN116302491A (zh) * | 2023-01-17 | 2023-06-23 | 阿里云计算有限公司 | 内存管理方法、装置、计算机设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
STRAKA, M: "Advanced Fault Tolerant Bus for Multicore System Implemented in FPGA", 2011 IEEE 14TH INTERNATIONAL SYMPOSIUM ON DESIGN AND DIAGNOSTICS OF ELECTRONIC CIRCUITS AND SYSTEMS (DDECS), 31 December 2011 (2011-12-31) * |
闫家年;陈文光;郑纬民;: "面向结构体数据布局优化的高效内存管理", 清华大学学报(自然科学版), no. 01, 15 January 2011 (2011-01-15) * |
霍冠廷;刘清源;王良清;金玉丰;: "基于AHB总线的高性能SRAM控制器设计", 集成电路应用, no. 05, 8 May 2020 (2020-05-08) * |
Also Published As
Publication number | Publication date |
---|---|
CN117472796B (zh) | 2024-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109213694B (zh) | 用于缓存管理的方法和设备 | |
KR101008510B1 (ko) | 고성능 본딩 리시퀀싱을 위한 방법, 시스템 및 컴퓨터 제품 | |
CN110058936B (zh) | 用于确定专用处理资源的资源量的方法、设备和计算机程序产品 | |
KR102594657B1 (ko) | 비순차적 리소스 할당을 구현하는 방법 및 장치 | |
CN111124270B (zh) | 缓存管理的方法、设备和计算机程序产品 | |
US9389997B2 (en) | Heap management using dynamic memory allocation | |
CN111506604B (zh) | 访问数据的方法、装置和计算机程序产品 | |
CN110609708B (zh) | 用于数据处理的方法、设备和计算机可读介质 | |
CN116010109B (zh) | 缓存资源分配方法、装置、电子设备和存储介质 | |
CN107748649B (zh) | 一种缓存数据的方法和装置 | |
CN109947667B (zh) | 数据访问预测方法和装置 | |
CN112068765A (zh) | 管理存储系统的方法、设备和计算机程序产品 | |
CN117130663B (zh) | 一种指令读取方法及l2指令缓存、电子设备和存储介质 | |
CN117472796B (zh) | 总线模块的数据处理方法、装置、电子设备和存储介质 | |
CN116303126B (zh) | 缓存、数据的处理方法及电子设备 | |
CN117112215A (zh) | 内存分配方法、设备及存储介质 | |
CN109101438B (zh) | 用于存储数据的方法和装置 | |
CN113742131A (zh) | 用于存储管理的方法、电子设备和计算机程序产品 | |
CN117539636A (zh) | 总线模块的内存管理方法、装置、电子设备和存储介质 | |
US20140337572A1 (en) | Noncontiguous representation of an array | |
CN116166575B (zh) | 访存段长度的配置方法、装置、设备、介质和程序产品 | |
CN116107926B (zh) | 缓存替换策略的管理方法、装置、设备、介质和程序产品 | |
CN116244216B (zh) | 缓存控制方法、装置、缓存行结构、电子设备和存储介质 | |
CN115993942B (zh) | 数据缓存方法、装置、电子设备和计算机可读介质 | |
CN117743220A (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 |