CN117707994B - 请求缓冲器、***、组件、设备及传输方法 - Google Patents
请求缓冲器、***、组件、设备及传输方法 Download PDFInfo
- Publication number
- CN117707994B CN117707994B CN202410147573.0A CN202410147573A CN117707994B CN 117707994 B CN117707994 B CN 117707994B CN 202410147573 A CN202410147573 A CN 202410147573A CN 117707994 B CN117707994 B CN 117707994B
- Authority
- CN
- China
- Prior art keywords
- request
- access
- access request
- cache
- buffer
- 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
- 239000000872 buffer Substances 0.000 title claims abstract description 216
- 238000000034 method Methods 0.000 title claims abstract description 15
- 230000005540 biological transmission Effects 0.000 title claims abstract description 11
- -1 system Substances 0.000 title abstract description 3
- 230000004044 response Effects 0.000 claims description 7
- 230000003139 buffering effect Effects 0.000 claims description 6
- 238000004891 communication Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 239000008187 granular material Substances 0.000 description 1
- 230000007334 memory performance Effects 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
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
本公开提供一种请求缓冲器、***、组件、设备及传输方法。该请求缓冲器包括第一缓存模块和控制模块;第一缓存模块包括多个第一缓存单元;控制模块,被配置为在接收主设备的访问请求时,根据该访问请求中的访存地址和请求标识,将该访问请求写入对应的第一缓存单元中的对应位置处,第一缓存单元中写入位置相邻的两个访问请求具有相同的请求标识以及连续的访存地址;在第一缓存模块中一个第一缓存单元的ready状态为有效时,将该第一缓存单元中的所有访问请求按照在该第一缓存单元中的写入位置顺序发送至内存控制器,并将该第一缓存单元切换为空闲状态。减少了内存频繁关闭旧页面又打开新页面的操作,从而提升了访存性能。
Description
技术领域
本公开涉及访存请求处理技术领域,尤其涉及一种请求缓冲器、***、组件、设备及传输方法。
背景技术
以通用计算机为例,内存在物理上由多个内存芯片颗粒组成。多个内存颗粒组成64bit宽的rank,并以此数据宽度在内存总线上进行数据的读写操作。每个内存颗粒包含多组bank,每个bank类似一个二维数据表,由行地址和列地址定位数据。访存时,先通过行地址打开一个行,再通过列地址从该行中选取目标数据。每个bank在同一时间只能打开一行数据,也被称为打开一个页面。
在实际的计算机***中,多主设备(Master)的***是常见的场景。在这种***中,由于多个主设备同时进行访存操作,会导致访存请求混杂在一起。即使从各个Master发出时,访存请求是地址按顺序的,但多个Master的访存请求到达内存侧时也已经是乱序混杂的排列顺序了,访存顺序变得随机而不再是按照原先的顺序进行。多Master***的访存随机化会导致内存频繁的关闭旧页面又打开新页面的操作,而这些操作是要付出很大的额外性能成本,从而造成访存性能的降低。
发明内容
本公开的目的是提供一种请求缓冲器、***、组件、设备及传输方法,解决了现有技术中多Master***的访存随机化会导致访存性能降低的技术问题。
根据本公开的一个方面,提供一种请求缓冲器,连接内存控制器与至少一个主设备,包括第一缓存模块和控制模块;第一缓存模块包括多个第一缓存单元;
控制模块,被配置为在接收主设备的访问请求时,根据该访问请求中的访存地址和请求标识,将该访问请求写入对应的第一缓存单元中的对应位置处,第一缓存单元中写入位置相邻的两个访问请求具有相同的请求标识以及连续的访存地址;请求标识至少包括主设备标识;
在第一缓存模块中一个第一缓存单元的ready状态为有效时,将该第一缓存单元中的所有访问请求按照在该第一缓存单元中的写入位置顺序发送至内存控制器,并将该第一缓存单元切换为空闲状态。
在一些实施例中,上述请求缓冲器中,还包括每个第一缓存单元对应的第一计数器,被配置为对对应的第一缓存单元中写入的访问请求的数量进行记录;每个第一缓存单元最多缓存N个访问请求;
控制模块,还被配置为在一第一缓存单元对应的第一计数器记录的数量达到N时,将该第一缓存单元的ready状态置为有效。
在一些实施例中,上述请求缓冲器中,还包括每个第一缓存单元对应的第二计数器,被配置为对对应的第一缓存单元维持非空闲状态的时间进行记录;
控制模块,还被配置为在一第一缓存单元对应的第二计数器记录的时间达到预设时间时,将该第一缓存单元的ready状态置为有效。
在一些实施例中,上述请求缓冲器中,访问请求的最小访存粒度为P字节,每个第一缓存单元最多缓存N个访问请求,访问请求的访存地址包括从低到高的第0至第(D-1)个比特位;
当访问请求的访存地址包括最小访存粒度对应的地址位时,访问请求的第一寻址标识为访问请求的访存地址的第(log2P+ log2N)个比特位至第(D-1)个比特位指示的信息,第二寻址标识为访问请求的访存地址的第log2P个比特位至第(log2P+ log2N-1)个比特位指示的信息;
当访问请求的访存地址不包括最小访存粒度对应的地址位时,访问请求的第一寻址标识为访问请求的访存地址的第log2N个比特位至第(D-1)个比特位指示的信息,第二寻址标识为访问请求的访存地址的第0个比特位至第(log2N-1)个比特位指示的信息;
请求标识还包括对应的第一寻址标识;
控制模块,被配置为在接收主设备的访问请求时,根据该访问请求中的访存地址和请求标识,将该访问请求写入对应的第一缓存单元中的对应位置处,包括:
控制模块,被配置为在接收主设备的访问请求时,根据该访问请求中的访存地址确定对应的第一寻址标识和第二寻址标识,并判断第一缓存模块中是否存在请求标识与该访问请求相同的访问请求,若是,则将该访问请求写入第一缓存模块中与该访问请求具有相同请求标识的访问请求所在的第一缓存单元,写入位置为该访问请求的第二寻址标识指示的位置;
否则,将该访问请求写入一空闲状态的第一缓存单元中。
在一些实施例中,上述请求缓冲器中,控制模块,被配置为将该访问请求写入一空闲状态的第一缓存单元中,包括:
控制模块,被配置为:
在第一缓存模块中当前存在空闲状态的第一缓存单元时,将该访问请求写入一空闲状态的第一缓存单元中;
在第一缓存模块中当前不存在空闲状态的第一缓存单元但存在ready状态为有效的第一缓存单元时,在该第一缓存单元切换为空闲状态后,将该访问请求写入该第一缓存单元中;
在第一缓存模块中当前不存在空闲状态的第一缓存单元且不存在ready状态为有效的第一缓存单元时,将当前第一缓存模块中维持非空闲状态的时间最长的第一缓存单元的ready状态切换为有效,在该第一缓存单元切换为空闲状态后,将该访问请求写入恢复空闲状态的该第一缓存单元中。
在一些实施例中,上述请求缓冲器中,一非空闲状态的第一缓存单元的信息域包括该第一缓存单元中缓存的访问请求的请求标识;
控制模块,被配置为在接收主设备的访问请求时,根据该访问请求中的访存地址确定对应的第一寻址标识和第二寻址标识,并判断第一缓存模块中是否存在请求标识与该访问请求相同的访问请求,若是,则将该访问请求写入第一缓存模块中与该访问请求具有相同请求标识的访问请求所在的第一缓存单元,包括:
控制模块,还被配置为在接收主设备的访问请求时,根据该访问请求中的访存地址确定对应的第一寻址标识和第二寻址标识,并判断第一缓存模块中是否存在信息域中的请求标识与该访问请求的请求标识相同的第一缓存单元,若是则将该访问请求写入该第一缓存单元中。
在一些实施例中,上述请求缓冲器中,第一缓存模块包括读请求缓存区和写请求缓存区,分别用于缓存读访问请求和写访问请求,写请求缓存区和读请求缓存区分别包括多个第一缓存单元。
在一些实施例中,上述请求缓冲器中,请求标识还包括访问类型。
在一些实施例中,上述请求缓冲器中,还包括:第二缓存模块;
控制模块,被配置为在接收主设备的访问请求时,根据该访问请求中的访存地址和请求标识,将该访问请求写入对应的第一缓存单元中的对应位置处,包括:
控制模块,被配置为在接收主设备的写访问请求以及该写访问请求对应的写数据时,将该写访问请求对应的写数据写入第二缓存模块中的对应位置处并记录对应的数据写入位置信息,根据该写访问请求中的访存地址和请求标识,将该写访问请求以及对应的数据写入位置信息写入对应的第一缓存单元中的对应位置处;
控制模块,还被配置为在将一第一缓存单元中的一写访问请求发送至内存控制器时,根据该第一缓存单元中缓存的该写访问请求对应的数据写入位置信息,从第二缓存模块中读取该写访问请求对应的写数据发送至内存控制器。
在一些实施例中,上述请求缓冲器中,控制模块,还被配置为在将一写访问请求对应的写数据写入第二缓存模块中的对应位置处时,向发出该写访问请求的主设备返回对应的响应信息。
在一些实施例中,上述请求缓冲器中,控制模块,还被配置为在接收主设备的读访问请求时,根据该读访问请求的访存地址,判断第一缓存模块中是否存在访问地址相匹配的写访问请求,若是,则根据第一缓存模块中该访问地址相匹配的写访问请求对应的数据写入位置信息,从第二缓存模块中读取对应的写数据发送至发出该读访问请求的主设备,并向该主设备返回对应的响应信息。
在一些实施例中,上述请求缓冲器中,第一缓存模块包括至少一个第一缓存区,不同的第一缓存区分别用于缓存不同的主设备发出的访问请求,每个第一缓存区分别包括多个第一缓存单元。
在一些实施例中,上述请求缓冲器中,还包括:输出缓冲模块,连接控制模块的输出端;
控制模块,被配置为在第一缓存模块中一个第一缓存单元的ready状态为有效时,将该第一缓存单元中的所有访问请求按照在该第一缓存单元中的写入位置顺序发送至内存控制器,包括:
控制模块,被配置为在第一缓存模块中一个第一缓存单元的ready状态为有效时,将该第一缓存单元中的所有访问请求按照在该第一缓存单元中的写入位置顺序发送至输出缓冲模块进行缓存;输出缓冲模块为先进先出的缓冲模块。
在一些实施例中,上述请求缓冲器中,还包括:输入缓冲模块,连接控制模块的输入端;
输入缓冲模块,被配置为:
对主设备发出的访问请求进行缓存;
将输入缓冲模块中缓存的访问请求逐个发送至控制模块。
在一些实施例中,上述请求缓冲器中,第一缓存单元的信息域包括状态位,状态位包括ready状态位和空闲状态位。
根据本公开的另一方面,提供一种片上***,包括主设备、内存控制器、待访问内存和上述任一实施例的请求缓冲器。
根据本公开的另一方面,提供一种电子组件,包括上述任一实施例的片上***。
根据本公开的另一方面,提供一种电子设备,包括上述任一实施例的电子组件。
根据本公开的另一个方面,提供一种请求传输方法,包括:
在接收主设备的访问请求时,根据该访问请求中的访存地址和请求标识,将该访问请求写入第一缓存模块中对应的第一缓存单元中的对应位置处,第一缓存单元中写入位置相邻的两个访问请求具有相同的请求标识以及连续的访存地址;请求标识至少包括主设备标识;
在第一缓存模块中一个第一缓存单元的ready状态为有效时,将该第一缓存单元中的所有访问请求按照在该第一缓存单元中的写入位置顺序发送至内存控制器,并将该第一缓存单元切换为空闲状态。
附图说明
图1为本公开一个实施例提供的请求缓冲器的连接结构示意图;
图2为本公开一个实施例提供的另一种请求缓冲器的连接结构示意图;
图3为本公开一个实施例提供的请求传输方法的流程示意图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
本公开的目的是提供一种请求缓冲器、***、组件、设备及传输方法,该请求缓冲器连接内存控制器与至少一个主设备,该请求缓冲器包括第一缓存模块和控制模块;第一缓存模块包括多个第一缓存单元;控制模块,被配置为在接收主设备的访问请求时,根据该访问请求中的访存地址和请求标识,将该访问请求写入对应的第一缓存单元中的对应位置处,第一缓存单元中写入位置相邻的两个访问请求具有相同的请求标识以及连续的访存地址;请求标识至少包括主设备标识;在第一缓存模块中一个第一缓存单元的ready状态为有效时,将该第一缓存单元中的所有访问请求按照在该第一缓存单元中的写入位置顺序发送至内存控制器,并将该第一缓存单元切换为空闲状态。
这种重排序方案中,在第一缓存模块中,对每个主设备发出的访问请求按照访存地址进行了重排序,在很大程度上可以恢复原始的请求顺序(主设备发出时的顺序),向内存控制器发送请求时,在一定程度上可以实现顺序访问,减少了内存频繁关闭旧页面又打开新页面的操作,从而提升了访存性能。
本公开的一个实施例提供一种请求缓冲器,如图1所示,连接内存控制器与至少一个主设备,该请求缓冲器包括第一缓存模块和控制模块;第一缓存模块包括多个第一缓存单元;控制模块,被配置为在接收主设备的访问请求时,根据该访问请求中的访存地址和请求标识,将该访问请求写入对应的第一缓存单元中的对应位置处,第一缓存单元中写入位置相邻的两个访问请求具有相同的请求标识以及连续的访存地址;请求标识至少包括主设备标识;在第一缓存模块中一个第一缓存单元的ready状态为有效时,将该第一缓存单元中的所有访问请求按照在该第一缓存单元中的写入位置顺序发送至内存控制器,并将该第一缓存单元切换为空闲状态。
其中,第一缓存单元中缓存位置相邻的两个访问请求具有相同的请求标识以及连续的访存地址,也指示了写入同一第一缓存单元内的访问请求具有相同的请求标识和连续的访存地址,且同一第一缓存单元内的各个访问请求的排列顺序(写入位置顺序),也是各个访问请求的访存地址顺序。
其中,第一缓存单元可以理解为是第一缓存模块的条目或表项(entry)。每个缓存单元(entry)包括信息域和数据域,数据域用于缓存写入的数据(如上述访问请求),信息域用于记录数据域相关的索引信息。
信息域可以包括状态位,包括ready状态位和空闲状态位,ready状态位为有效时,指示对应的第一缓存单元中的访问请求可以被读取或输出了,空闲状态位为有效时,指示对应的第一缓存单元为空闲状态(即空状态),即其中缓存的访问请求的数量为0,空闲状态位为无效时,指示对应的第一缓存单元为非空闲状态(即非空状态),即其中缓存的访问请求的数量大于等于1。在一些实施例中,控制模块,被配置为在将一访问请求写入一空闲状态的第一缓存单元时,将该第一缓存单元的空闲状态位,置为无效(即由空闲状态切换为非空闲状态)。
在一些实施例中,第一缓存单元的ready状态为有效是指当前第一缓存单元满足以下情况中的至少一种:
a)当前第一缓存单元为满状态;
b)当前第一缓存单元已维持非空闲状态达预设时间;
c)在控制模块接收的访问请求需要写入一空闲状态的第一缓存单元且第一缓存模块当前不存在空闲状态的第一缓存单元时,当前第一缓存单元为第一缓存模块中维持非空闲状态的时间最长的第一缓存单元。
上述情况a)可以为理解为是,当一第一缓存单元为满状态时,说明该第一缓存单元不能继续再写入新的访问请求了,此时,为了避免数据被覆盖或溢出,需要将该第一缓存单元中的访问请求发往内存控制器去执行访存操作。
上述情况b)可以为理解为是,当一第一缓存单元已维持非空闲状态达预设时间,说明此时距离该第一缓存单元对应的主设备发出这一组地址连续的访问请求(该第一缓存单元中的访问请求)已经达一定时间了,短时间内,该第一缓存单元中不会再写入地址关联的其它访问请求了,此时,为了避免造成资源占用以及等待延时,需要将该第一缓存单元中的访问请求发往内存控制器去执行访存操作。
上述情况c)可以为理解为是,在控制模块接收的访问请求需要写入一空闲状态的第一缓存单元且第一缓存模块当前不存在空闲状态的第一缓存单元时,如果此时不将该访问请求写入第一缓存模块,很有可能造成输入阻塞,所以需要从第一缓存模块中选取一第一缓存单元,将其中的访问请求发往内存控制器去执行访存操作,及时将该第一缓存单元置空(即置为空闲状态),以便于写入上述访问请求。而上述从第一缓存模块中选取一第一缓存单元的过程中,采用的原则为:选择第一缓存模块中维持非空闲状态的时间最长的第一缓存单元,理由可参考上述情况b),此处不再赘述。
在一些实施例中,对应上述情况a),请求缓冲器还包括每个第一缓存单元对应的第一计数器,被配置为对对应的第一缓存单元中写入的访问请求的数量进行记录;每个第一缓存单元最多缓存N个访问请求;
控制模块,还被配置为在一第一缓存单元对应的第一计数器记录的数量达到N时,将该第一缓存单元的ready状态置为有效。
具体的,第一缓存单元切换为空闲状态时,该第一缓存单元对应的第一计数器重置为初始值,第一计数器有两种计时方式,第一种是:第一计数器的初始值为0,第一缓存单元中每写入一个访问请求,第一计数器的计数值加1,当计数值达N时,控制模块将对应的第一缓存单元的ready状态置为有效;第二种是:第一计数器的初始值为N,第一缓存单元中每写入一个访问请求,第一计数器的计数值减1,当计数值达0时,控制模块将对应的第一缓存单元的ready状态置为有效。
在一些实施例中,对应上述情况b),请求缓冲器还包括每个第一缓存单元对应的第二计数器,被配置为对对应的第一缓存单元维持非空闲状态的时间进行记录;
控制模块,还被配置为在一第一缓存单元对应的第二计数器记录的时间达到预设时间时,将该第一缓存单元的ready状态置为有效。
具体的,控制模块在将一访问请求写入一空闲状态的第一缓存单元时,将该第一缓存单元的空闲状态位,置为无效(即由空闲状态切换为非空闲状态)时,第二计数器开始计时。第二计数器有两种计时方式,第一种是:第二计数器的初始值为0,每过一个时钟周期,第二计数器的计数值加1,当计数值达预设时钟周期数(预设时间除以单个周期时间得到),控制模块将对应的第一缓存单元的ready状态置为有效;第二种是:第二计数器的初始值为上述预设时钟周期数,每过一个时钟周期,第二计数器的计数值减1,当计数值达0时,控制模块将对应的第一缓存单元的ready状态置为有效。
其中,上述预设时间的设置需要考虑不同种类芯片或应用的延迟容忍度。例如,图形处理器(Graphics Processing Unit,GPU)就属于对延迟不太敏感的设备,重带宽轻延迟,所以可以设置较大的预设时间。对于延迟敏感的设备在预设时间的设置上会受限,需要设置较小的预设时间。
在一些实施例中,访问请求的最小访存粒度为P字节,每个第一缓存单元最多缓存N个访问请求,访问请求的访存地址包括从低到高的第0至第(D-1)个比特位;
当访问请求的访存地址包括最小访存粒度对应的地址位时,访问请求的第一寻址标识为访问请求的访存地址的第(log2P+ log2N)个比特位至第(D-1)个比特位指示的信息,第二寻址标识为访问请求的访存地址的第log2P个比特位至第(log2P+ log2N-1)个比特位指示的信息;
当访问请求的访存地址不包括最小访存粒度对应的地址位时,访问请求的第一寻址标识为访问请求的访存地址的第log2N个比特位至第(D-1)个比特位指示的信息,第二寻址标识为访问请求的访存地址的第0个比特位至第(log2N-1)个比特位指示的信息;
请求标识还包括对应的第一寻址标识;
控制模块,被配置为在接收主设备的访问请求时,根据该访问请求中的访存地址和请求标识,将该访问请求写入对应的第一缓存单元中的对应位置处,包括:
控制模块,被配置为在接收主设备的访问请求时,根据该访问请求中的访存地址确定对应的第一寻址标识和第二寻址标识,并判断第一缓存模块中是否存在请求标识与该访问请求相同的访问请求,若是,则将该访问请求写入第一缓存模块中与该访问请求具有相同请求标识的访问请求所在的第一缓存单元,写入位置为该访问请求的第二寻址标识指示的位置;
否则,将该访问请求写入一空闲状态的第一缓存单元中。
其中,访问请求的最小访存粒度为P字节,是指访问请求的访存位宽为P字节的整数倍。
可以理解为,由于访问请求的最小访存粒度为P字节,当访问请求的访存地址包括最小访存粒度对应的地址位时,访问请求的访存地址如果要表示最小访存粒度内的地址信息,那么需要log2P个比特位(即最低的第0个比特位至第(log2P-1)个比特位,共log2P个比特位)来表示,那么连续的访问请求的访存地址的第log2P个比特位及以上的比特位指示的信息是连续的,例如,一主设备发出的第1个访问请求(即请求0)的访存地址为16’b0000_0000_0000_0000(起始地址是第0个字节),若log2P为6,第2个访问请求(即请求1)的访存地址为16’b0000_0000_0100_0000(起始地址是第64个字节),第3个访问请求(即请求2)的访存地址为16’b0000_0000_1000_0000(起始地址是第128个字节),……,第7个访问请求(即请求6)的访存地址为16’b0000_0001_1000_0000(起始地址是第384个字节),第8个访问请求(即请求7)的访存地址为16’b0000_0001_1100_0000(起始地址是第448个字节),第9个访问请求(即请求8)的访存地址为16’b0000_0010_0000_0000(起始地址是第512个字节),第10个访问请求(即请求9)的访存地址为16’b0000_0010_0100_0000(起始地址是第576字节)。
第1个访问请求(即请求0)的访存地址的第log2P个比特位(即第6个比特位)及以上的比特位指示的信息为10’b00_0000_0000,第2个访问请求(即请求1)的访存地址第log2P个比特位(即第6个比特位)及以上的比特位指示的信息为10’b00_0000_0001,第3个访问请求(即请求2)的访存地址的第log2P个比特位(即第6个比特位)及以上的比特位指示的信息为10’b00_0000_0010,……,第7个访问请求(即请求6)的访存地址的第log2P个比特位(即第6个比特位)及以上的比特位指示的信息为10’b00_0000_0110,第8个访问请求(即请求7)的访存地址的第log2P个比特位(即第6个比特位)及以上的比特位指示的信息为10’b00_0000_0111,第9个访问请求(即请求8)的访存地址的第log2P个比特位(即第6个比特位)及以上的比特位指示的信息为10’b00_0000_1000,第10个访问请求(即请求9)的访存地址的第log2P个比特位(即第6个比特位)及以上的比特位指示的信息为10’b00_0000_1001。即这10个连续的访问请求(请求0至请求9)的第log2P个比特位(即第6个比特位)及以上的比特位指示的信息是连续的。
在每个第一缓存单元最多缓存N个访问请求(即请求0至请求N-1)时,说明每个第一缓存单元中的访问请求的写入位置信息可以用log2N个比特位表示,而连续的访问请求的访存地址的第log2P个比特位及以上的比特位指示的信息是连续的,那么通过访问请求的访存地址的第log2P个比特位至第(log2P+ log2N-1)个比特位指示的信息就可以得到访问请求在对应的一个第一缓存单元中的写入位置。可以理解为,第一缓存单元有第0至第(N-1)个写入位置(共N个写入位置),访问请求的访存地址的第log2P个比特位至第(log2P+log2N-1)个比特位对应的数值对应了写入位置的序号(序号从0开始)。所以,可以将访问请求的访存地址的第log2P个比特位至第(log2P+ log2N-1)个比特位对应的信息作为访问请求在对应的第一缓存单元中的寻址标识(第二寻址标识),根据该第二寻址标识,就可以知道访问请求在对应的第一缓存单元中的写入位置(entry index)。
例如,当log2N为3时,即每个第一缓存单元最多缓存8个访问请求时,说明上述第1个至第8个访问请求(即请求0至请求7)可以缓存在一个第一缓存单元中,对应的,上述第1个访问请求(即请求0)的访存地址的第log2P个比特位至第(log2P+ log2N-1)个比特位(即第6个比特位至第8个比特位)指示的信息为3’b000(即写入位置为第0个写入位置),第2个访问请求(即请求1)的访存地址的第log2P个比特位至第(log2P+ log2N-1)个比特位(即第6个比特位至第8个比特位)指示的信息为3’b001(即写入位置为第1个写入位置),第3个访问请求(即请求2)的第log2P个比特位至第(log2P+ log2N-1)个比特位(即第6个比特位至第8个比特位)指示的信息为3’b010(即写入位置为第2个写入位置),……,第7个访问请求(即请求6)的第log2P个比特位至第(log2P+ log2N-1)个比特位(即第6个比特位至第8个比特位)指示的信息为3’b110(即写入位置为第6个写入位置),第8个访问请求(即请求7)的访存地址的第log2P个比特位至第(log2P+ log2N-1)个比特位(即第6个比特位至第8个比特位)指示的信息为3’b111(即写入位置为第7写入位置)。
而同一主设备发出的访存地址连续的多个访问请求中,可能存在第二寻址标识相同的访问请求,例如上述第9个访问请求(即请求8)的第二寻址标识为3’b000,与第1个访问请求(即请求0)的第二寻址标识相同,上述第10个访问请求(即请求9)的第二寻址标识为3’b001,与第2个访问请求(即请求1)的第二寻址标识相同。但是同一主设备发出的访存地址连续的多个访问请求中,第二寻址标识相同的访问请求具有不同的高位地址,即第(log2P+log2N)个比特位及以上指示的信息是不同的,例如,上述第1个访问请求(即请求0)的访存地址的第(log2P+ log2N)个比特位至第(D-1)个比特位(即第9个比特位至第15个比特位)指示的信息为7’b000_0000,上述第9个访问请求(即请求8)的访存地址的第(log2P+ log2N)个比特位至第(D-1)个比特位(即第9个比特位至第15个比特位)指示的信息为7’b000_0001,上述第2个访问请求(即请求1)的访存地址的第(log2P+ log2N)个比特位至第(D-1)个比特位(即第9个比特位至第15个比特位)指示的信息为7’b000_0000,上述第10个访问请求(即请求9)的访存地址的第(log2P+ log2N)个比特位至第(D-1)个比特位(即第9个比特位至第15个比特位)指示的信息为7’b000_0001,所以,将访问请求的访存地址的第(log2P+ log2N)个比特位至第(D-1)个比特位指示的信息作为第一寻址标识符,和主设备标识一起作为请求标识,用于确定访问请求对应的第一缓存单元。
但是在一些现有协议中,最小访存粒度对应的地址位是不需要传输的,也即,控制模块接收到的访问请求的访存地址不包括最小访存粒度对应的地址位,在该场景下,访问请求的第一寻址标识为访问请求的访存地址的第log2N个比特位至第(D-1)个比特位指示的信息,第二寻址标识为访问请求的访存地址的第0个比特位至第(log2N-1)个比特位指示的信息。
在一些实施例中,控制模块,判断第一缓存模块中是否存在请求标识与该访问请求相同的访问请求的具体方式可以为,对第一缓存模块中当前缓存的各个访问请求进行轮询。优先的,因为写入同一第一缓存单元内的访问请求具有相同的请求标识,所以在轮询时,可以只对每个非空闲状态的第一缓存单元中的一个访问请求进行询问,以缩短在第一缓存模块中寻址(确定写入的第一缓存单元)所需要的延时。
在一些实施例中,为了进一步缩短在第一缓存模块中寻址(确定写入的第一缓存单元)所需要的延时,一非空闲状态的第一缓存单元的信息域包括该第一缓存单元中缓存的访问请求的请求标识;
控制模块,被配置为在接收主设备的访问请求时,根据该访问请求中的访存地址确定对应的第一寻址标识和第二寻址标识,并判断第一缓存模块中是否存在请求标识与该访问请求相同的访问请求,若是,则将该访问请求写入第一缓存模块中与该访问请求具有相同请求标识的访问请求所在的第一缓存单元,包括:
控制模块,还被配置为在接收主设备的访问请求时,根据该访问请求中的访存地址确定对应的第一寻址标识和第二寻址标识,并判断第一缓存模块中是否存在信息域中的请求标识与该访问请求的请求标识相同的第一缓存单元,若是则将该访问请求写入该第一缓存单元中。
可以理解为,由于写入同一第一缓存单元内的访问请求具有相同的请求标识,所以可以在第一缓存单元中写入第一个访问请求时,就将访问请求的请求标识写入该第一缓存单元的信息域中,之后在判断第一缓存模块中是否存在请求标识均与该访问请求相同的访问请求时,就可以不用对第一缓存模块中的访问请求进行轮询,而是可以只对非空闲状态的缓存单元的信息域进行轮询。
在一些实施例中,控制模块,被配置为将该访问请求写入一空闲状态的第一缓存单元中,包括:
控制模块,被配置为:
在第一缓存模块中当前存在空闲状态的第一缓存单元时,将该访问请求写入一空闲状态的第一缓存单元中;
在第一缓存模块中当前不存在空闲状态的第一缓存单元但存在ready状态为有效的第一缓存单元时,在该第一缓存单元切换为空闲状态后,将该访问请求写入该第一缓存单元中;
在第一缓存模块中当前不存在空闲状态的第一缓存单元且不存在ready状态为有效的第一缓存单元时,将当前第一缓存模块中维持非空闲状态的时间最长的第一缓存单元的ready状态切换为有效,在该第一缓存单元切换为空闲状态后,将该访问请求写入恢复空闲状态的该第一缓存单元中。
具体的,在控制模块接收的访问请求需要写入一空闲状态的第一缓存单元(即第一缓存模块中不存在请求标识与该访问请求相同的访问请求)时,控制模块会先判断第一缓存模块中当前是否存在空闲状态的第一缓存单元,判断方式为对各个第一缓存单元的信息域中的空闲状态位进行轮询,在询问到空闲状态位为有效的第一个第一缓存单元时,就可以停止轮询操作,并将待写入的访问请求按照其第二寻址标识指示的信息写入该第一缓存单元的对应位置上。而对各个第一缓存单元的信息域中的空闲状态位进行轮询方向可以为从头到尾(从低位置到高位置)的顺序,例如,如图1所示的结构中,可以按照从第1个第一缓存单元(Entry0)至第M个第一缓存单元(EntryM-1)的顺序,对各个第一缓存单元的信息域中的空闲状态位进行轮询。
当轮询完所有第一缓存单元之后,都没有发现空闲状态的第一缓存单元,那么此时控制模块会判断此时是否存在ready状态为有效的第一缓存单元,若是,说明第一缓存模块中马上会出现空闲状态的第一缓存单元,此时无需做过多处理,在该第一缓存单元切换为空闲状态后,将该访问请求写入恢复空闲状态的该第一缓存单元中即可,否则,则需要将当前第一缓存模块中维持非空闲状态的时间最长的第一缓存单元的ready状态切换为有效,在该第一缓存单元切换为空闲状态后,将该访问请求写入恢复空闲状态的该第一缓存单元中,具体原理如前述情况c)中所述,此处不再赘述。
在一些实施例中,如图2所示,第一缓存模块包括读请求缓存区和写请求缓存区,分别用于缓存读访问请求和写访问请求,写请求缓存区和读请求缓存区分别包括多个第一缓存单元。
也即,为了实现读访问请求和写访问请求的分别管理,在第一缓存模块中划分读请求缓存区和写请求缓存区。对应的,控制模块,被配置为在接收主设备的访问请求时,根据该访问请求中的访存地址和请求标识,将该访问请求写入对应的第一缓存单元中的对应位置处,包括:
控制模块,被配置为在接收主设备的读访问请求时,根据该读访问请求中的访存地址和请求标识,将该读访问请求写入读请求缓存区中对应的第一缓存单元中的对应位置处;
在接收主设备的写访问请求时,根据该写访问请求中的访存地址和请求标识,将该写访问请求写入写请求缓存区中对应的第一缓存单元中的对应位置处。
可以理解为,在控制模块在接收到主设备的读访问请求时,只在读请求缓存区中进行寻址操作,在控制模块在接收到主设备的写访问请求时,只在写请求缓存区中进行寻址操作。
在另一些实施例中,可以无需划分读请求缓存区和写请求缓存区,而是通过在请求标识中加入访问类型的方式,即请求标识还包括访问类型,实现读访问请求和写访问请求的分别管理。也即,写入同一第一缓存单元内的访问请求具有相同的主设备标识、访问类型和连续的访存地址。
在一些实施例中,在第一缓存模块可以缓存写访问请求的场景下,上述请求缓冲器还包括:第二缓存模块;
控制模块,被配置为在接收主设备的访问请求时,根据该访问请求中的访存地址和请求标识,将该访问请求写入对应的第一缓存单元中的对应位置处,包括:
控制模块,被配置为在接收主设备的写访问请求以及该写访问请求对应的写数据时,将该写访问请求对应的写数据写入第二缓存模块中的对应位置处并记录对应的数据写入位置信息,根据该写访问请求中的访存地址和请求标识,将该写访问请求以及对应的数据写入位置信息写入对应的第一缓存单元中的对应位置处;
控制模块,还被配置为在将一第一缓存单元中的一写访问请求发送至内存控制器时,根据该第一缓存单元中缓存的该写访问请求对应的数据写入位置信息,从第二缓存模块中读取该写访问请求对应的写数据发送至内存控制器。
也就是说,在第一缓存模块可以缓存写访问请求的场景下,还可以通过第二缓存模块对写访问请求对应的写数据进行缓存,当写访问请求按照写入位置顺序发送给内存控制器时,内存控制器可以同步接收到对应的写数据,可以便于内存控制器执行对应的写访问操作。
在一些实施例中,控制模块,还被配置为在将一写访问请求对应的写数据写入第二缓存模块中的对应位置处时,向发出该写访问请求的主设备返回对应的响应信息,以实现提前响应,提升写访问效率。
在一些实施例中,控制模块,还被配置为在接收主设备的读访问请求时,根据该读访问请求的访存地址,判断第一缓存模块中是否存在访问地址相匹配的写访问请求,若是,则根据第一缓存模块中该访问地址相匹配的写访问请求对应的数据写入位置信息,从第二缓存模块中读取对应的写数据发送至发出该读访问请求的主设备,并向该主设备返回对应的响应信息。
其中,一读访问请求的访存地址与第一缓存模块中一写访问请求的访问地址相匹配,是指该读访问请求想要从内存中读取的数据是该写访问请求要写入内存中的数据,即命中(hit)。具体的,根据该读访问请求的访存地址,判断第一缓存模块中是否存在访问地址相匹配的写访问请求的具体方式可以为:判断该读访问请求的访存地址是否与第一缓存模块中的任一写访问请求的访存地址相同,若是,则确定第一缓存模块中存在访问地址相匹配的写访问请求。
结合访问请求的请求标识包括主设备标识和第一寻标识符,访问请求的第二寻址标识指示访问请求在对应的第一缓存单元中的写入位置(entry index),以及一非空闲状态的第一缓存单元的信息域包括该第一缓存单元中缓存的访问请求的请求标识中的场景下,根据该读访问请求的访存地址,判断第一缓存模块中是否存在访问地址相匹配的写访问请求的具体方式可以为:根据该读访问请求的第一寻标识符,判断第一缓存模块中是否存在信息域中的第一寻标识符与该读访问请求的第一寻标识符相同的第一缓存单元,若是,则进一步确定该第一缓存单元中该读访问请求的第二寻址标识符指示的写入位置上是否存在对应的写访问请求,若是,则确定第一缓存模块中存在访问地址相匹配的写访问请求。
其中,在第一缓存模块包括读请求缓存区和写请求缓存区的场景下,根据该读访问请求的访存地址,判断第一缓存模块中是否存在访问地址相匹配的写访问请求的具体方式可以为:根据该读访问请求的第一寻标识符,判断写请求缓存区中是否存在信息域中的第一寻标识符与该读访问请求的第一寻标识符相同的第一缓存单元,若是,则进一步确定该第一缓存单元中该读访问请求的第二寻址标识符指示的写入位置上是否存在对应的写访问请求,若是,则确定第一缓存模块中存在访问地址相匹配的写访问请求。
而在请求标识还包括访问类型的场景下,根据该读访问请求的访存地址,判断第一缓存模块中是否存在访问地址相匹配的写访问请求的具体方式可以为:根据该读访问请求的第一寻标识符,判断第一缓存模块中是否存在信息域中的访问类型为写访问且第一寻标识符与该读访问请求的第一寻标识符相同的第一缓存单元,若是,则进一步确定该第一缓存单元中该读访问请求的第二寻址标识符指示的写入位置上是否存在对应的写访问请求,若是,则确定第一缓存模块中存在访问地址相匹配的写访问请求。
在一些实施例中,各个第一缓存单元与各个主设备没有绑定关系,也即在控制模块接收的访问请求需要写入一空闲状态的第一缓存单元时,选取的空闲状态的第一缓存单元是随机的,即各个主设备相当于动态共享第一缓存模块的缓存空间。
由于各个第一缓存单元与各个主设备没有绑定关系,控制模块在接收一主设备的访问请求时,需要根据该访问请求中的访存地址确定对应的第一寻址标识和第二寻址标识,并对整个第一缓存模块中非空闲状态的第一缓存单元进行询问,判断是否存在信息域中的请求标识(包括主设备标识Master ID和第一寻址标识)与该访问请求的请求标识(包括主设备标识Master ID和第一寻址标识)相同的第一缓存单元,若是,则将该访问请求写入该第一缓存单元中,否则,将该访问请求随机写入一空闲状态的第一缓存单元中(同时将该访问请求的请求标识写入该第一缓存单元的信息域中)。
在另一些实施例中,各个主设备也可以静态共享第一缓存模块的缓存空间,对应的,第一缓存模块包括至少一个第一缓存区,不同的第一缓存区分别用于缓存不同的主设备发出的访问请求,每个第一缓存区分别包括多个第一缓存单元。
可以理解为,各个第一缓存单元与各个主设备具有预设的绑定关系(一个第一缓存区对应一个主设备),也即哪些第一缓存单元用于缓存哪个主设备的访问请求是预先设置好的,在控制模块接收的访问请求需要写入一空闲状态的第一缓存单元时,根据预先的设置好的分配方案,从发出该访问请求的主设备对应的第一缓存区中选取一空闲状态的第一缓存单元,并将待写入的访问请求按照其第二寻址标识指示的信息写入该第一缓存单元的对应位置上。
由于各个第一缓存单元与各个主设备具有预设的绑定关系(一个第一缓存区对应一个主设备),控制模块在接收一主设备的访问请求时,需要根据该访问请求中的访存地址确定对应的第一寻址标识和第二寻址标识,并根据该主设备的主设备标识(Master ID),对该主设备标识对应的第一缓存区中的非空闲状态的第一缓存单元进行询问,判断是否存在信息域中的第一寻址标识与该访问请求的第一寻址标识相同的第一缓存单元,若是,则将该访问请求写入该第一缓存单元中,否则,将该访问请求写入该第一缓存区中的一空闲状态的第一缓存单元中(同时将该访问请求的第一寻址标识写入该第一缓存单元的信息域中)。
示例性的,可以将一主设备的主设备标识(Master ID)预先写入与该主设备具有预设的绑定关系的第一缓存单元(即该主设备对应的第一缓存区中的第一缓存单元)的信息域中,在控制模块接收的访问请求需要写入一空闲状态的第一缓存单元时,根据发出该访问请求的主设备的主设备标识,从信息域中写有该主设备标识的第一缓存单元中选取一空闲状态的第一缓存单元,并将待写入的访问请求按照其第二寻址标识指示的信息写入该第一缓存单元的对应位置上。
在一些实施例中,每个第一缓存区可以为一个独立的缓存模块(buffer),这些缓存模块整体称为上述第一缓存模块。
在第一缓存模块包括至少一个第一缓存区以及需要划分读请求缓存区和写请求缓存区的场景下,可以将第一缓存模块划分为至少一个第一缓存区,以分别对应不同的主设备,再在每个第一缓存区中划分读请求缓存区和写请求缓存区,还可以先将第一缓存模块划分为读请求缓存区和写请求缓存区,再将读请求缓存区划分为至少一个第一缓存区,以分别对应不同的主设备,以及将写请求缓存区划分为至少一个第一缓存区,以分别对应不同的主设备。
在一些实施例中,第一缓存模块中第一缓存单元的数量主要考虑主设备的数量X,以及每个主设备中可以独立访存stream的数量Y(即可以主设备中可以独立发出访存请求的模块的数量),第一缓存单元的数量越接近两者乘积(XY)越好。需要说明的是,第一缓存单元的数量不一定能够覆盖所有主设备中可以独立发出访存请求的模块的数量,这只是个理论期望,可以根据实际需求来设计。
假设有5个主设备,第一个主设备的独立访存stream数量是5,第二个主设备的独立访存stream数量是6,第三个主设备的独立访存stream数量是4,第四个主设备的独立访存stream数量是5,第五个主设备的独立访存stream数量是7,则第一缓存模块中第一缓存单元的数量的最大需求是27个,实际上可以小于这个数量。本示例中,假设第一缓存模块中第一缓存单元的数量有20个,那么,可以将这20个第一缓存单元分为5组(5个第一缓存区),既可以均分为5组,也可以按照各个主设备的独立访存stream数量比例分为5组,分别对应上述5个主设备。
而第一缓存单元中能够缓存的访问请求的数量,与各个主设备的应用特征有关,以及与延迟容忍度也有关。
在一些实施例中,上述请求缓冲器,还包括:输出缓冲模块,连接控制模块的输出端;
控制模块,被配置为在第一缓存模块中一个第一缓存单元的ready状态为有效时,将该第一缓存单元中的所有访问请求按照在该第一缓存单元中的写入位置顺序发送至内存控制器,包括:
控制模块,被配置为在第一缓存模块中一个第一缓存单元的ready状态为有效时,将该第一缓存单元中的所有访问请求按照在该第一缓存单元中的写入位置顺序发送至输出缓冲模块进行缓存;输出缓冲模块为先进先出的缓冲模块。
其中,控制模块将一第一缓存单元中的所有访问请求按照在该第一缓存单元中的写入位置顺序发送至输出缓冲模块进行缓存后,输出缓冲模块每周期可以按照先进先出的原则,拿出一访问请求(输出缓冲模块中排在最前面的访问请求)向内存控制器发送,在保证按照第一缓存模块中的排列顺序发送给内存控制器的基础上,还可以实现减小输出阻塞。
在一些实施例中,为了减小控制模块输入端的输入阻塞,上述请求缓冲器,还包括:输入缓冲模块,连接控制模块的输入端;
输入缓冲模块,被配置为:
对主设备发出的访问请求进行缓存;
将输入缓冲模块中缓存的访问请求逐个发送至控制模块。
其中,输入缓冲模块可以为先进先出的缓冲模块。
需要说明的是,上述控制模块可以是:通过对硬件描述语言HDL编写的代码依次经过综合和布局布线后产生的电路,具体地,可以按照本公开中控制模块所需实现的功能,基于硬件描述语言(例如Verilog语言)编写出能实现相应功能的代码,然后对编写出的代码依次经过综合和布局布线,从而得到本公开中的控制模块。
基于相同的发明构思,本公开实施例还提供一种片上***(System on Chip,SOC),包括主设备、内存控制器、待访问内存和上述任一实施例的请求缓冲器。
基于相同的发明构思,本公开实施例还提供一种电子组件,该电子组件包括上述任一实施例中的片上***。
在一些使用场景下,该电子组件的产品形式体现为显卡;在另一些使用场景下,该电子组件的产品形式体现为CPU主板。
基于相同的发明构思,本公开实施例还提供一种电子设备,该电子设备包括上述的电子组件。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、VR设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
基于相同的发明构思,本公开实施例还提供一种片上***的请求传输方法,如图3所示,包括:
步骤S110:在接收主设备的访问请求时,根据该访问请求中的访存地址和请求标识,将该访问请求写入第一缓存模块中对应的第一缓存单元中的对应位置处,第一缓存单元中写入位置相邻的两个访问请求具有相同的请求标识以及连续的访存地址;请求标识至少包括主设备标识;
步骤S120:在第一缓存模块中一个第一缓存单元的ready状态为有效时,将该第一缓存单元中的所有访问请求按照在该第一缓存单元中的写入位置顺序发送至内存控制器,并将该第一缓存单元切换为空闲状态。
上述片上***的请求传输方法的具体实施过程可参见上述任一实施例的请求缓冲器,此处不再赘述。
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。
Claims (18)
1.一种请求缓冲器,连接内存控制器与至少一个主设备,包括第一缓存模块、第二缓存模块和控制模块;所述第一缓存模块包括多个第一缓存单元;
所述控制模块,被配置为在接收所述主设备的访问请求时,根据该访问请求中的访存地址和请求标识,将该访问请求写入对应的第一缓存单元中的对应位置处,所述第一缓存单元中写入位置相邻的两个访问请求具有相同的请求标识以及连续的访存地址;所述请求标识至少包括主设备标识;其中,在接收所述主设备的写访问请求以及该写访问请求对应的写数据时,将该写访问请求对应的写数据写入所述第二缓存模块中的对应位置处并记录对应的数据写入位置信息,根据该写访问请求中的访存地址和请求标识,将该写访问请求以及对应的所述数据写入位置信息写入对应的第一缓存单元中的对应位置处;
在所述第一缓存模块中一个第一缓存单元的ready状态为有效时,将该第一缓存单元中的所有访问请求按照在该第一缓存单元中的写入位置顺序发送至所述内存控制器,并将该第一缓存单元切换为空闲状态;其中,在将一第一缓存单元中的一写访问请求发送至所述内存控制器时,根据该第一缓存单元中缓存的该写访问请求对应的所述数据写入位置信息,从所述第二缓存模块中读取该写访问请求对应的写数据发送至所述内存控制器。
2.根据权利要求1所述的请求缓冲器,还包括每个第一缓存单元对应的第一计数器,被配置为对对应的所述第一缓存单元中写入的访问请求的数量进行记录;每个第一缓存单元最多缓存N个访问请求;
所述控制模块,还被配置为在一第一缓存单元对应的所述第一计数器记录的数量达到N时,将该第一缓存单元的ready状态置为有效。
3.根据权利要求1所述的请求缓冲器,还包括每个第一缓存单元对应的第二计数器,被配置为对对应的所述第一缓存单元维持非空闲状态的时间进行记录;
所述控制模块,还被配置为在一第一缓存单元对应的所述第二计数器记录的时间达到预设时间时,将该第一缓存单元的ready状态置为有效。
4.根据权利要求1所述的请求缓冲器,所述访问请求的最小访存粒度为P字节,每个第一缓存单元最多缓存N个访问请求,所述访问请求的访存地址包括从低到高的第0至第(D-1)个比特位;
当所述访问请求的访存地址包括所述最小访存粒度对应的地址位时,所述访问请求的第一寻址标识为所述访问请求的访存地址的第(log2P+ log2N)个比特位至第(D-1)个比特位指示的信息,第二寻址标识为所述访问请求的访存地址的第log2P个比特位至第(log2P+log2N-1)个比特位指示的信息;
当所述访问请求的访存地址不包括所述最小访存粒度对应的地址位时,所述访问请求的第一寻址标识为所述访问请求的访存地址的第log2N个比特位至第(D-1)个比特位指示的信息,第二寻址标识为所述访问请求的访存地址的第0个比特位至第(log2N-1)个比特位指示的信息;
所述请求标识还包括对应的所述第一寻址标识;
所述控制模块,被配置为在接收所述主设备的访问请求时,根据该访问请求中的访存地址和请求标识,将该访问请求写入对应的第一缓存单元中的对应位置处,包括:
所述控制模块,被配置为在接收所述主设备的访问请求时,根据该访问请求中的访存地址确定对应的所述第一寻址标识和所述第二寻址标识,并判断所述第一缓存模块中是否存在请求标识与该访问请求相同的访问请求,若是,则将该访问请求写入所述第一缓存模块中与该访问请求具有相同请求标识的访问请求所在的所述第一缓存单元,写入位置为该访问请求的所述第二寻址标识指示的位置;
否则,将该访问请求写入一空闲状态的第一缓存单元中。
5.根据权利要求4所述的请求缓冲器,所述控制模块,被配置为将该访问请求写入一空闲状态的第一缓存单元中,包括:
所述控制模块,被配置为:
在所述第一缓存模块中当前存在空闲状态的第一缓存单元时,将该访问请求写入一空闲状态的第一缓存单元中;
在所述第一缓存模块中当前不存在空闲状态的第一缓存单元但存在ready状态为有效的第一缓存单元时,在该第一缓存单元切换为空闲状态后,将该访问请求写入该第一缓存单元中;
在所述第一缓存模块中当前不存在空闲状态的第一缓存单元且不存在ready状态为有效的第一缓存单元时,将当前所述第一缓存模块中维持非空闲状态的时间最长的第一缓存单元的ready状态切换为有效,在该第一缓存单元切换为空闲状态后,将该访问请求写入恢复空闲状态的该第一缓存单元中。
6.根据权利要求4所述的请求缓冲器,一非空闲状态的第一缓存单元的信息域包括该第一缓存单元中缓存的访问请求的请求标识;
所述控制模块,被配置为在接收所述主设备的访问请求时,根据该访问请求中的访存地址确定对应的所述第一寻址标识和所述第二寻址标识,并判断所述第一缓存模块中是否存在请求标识与该访问请求相同的访问请求,若是,则将该访问请求写入所述第一缓存模块中与该访问请求具有相同请求标识的访问请求所在的所述第一缓存单元,包括:
所述控制模块,还被配置为在接收所述主设备的访问请求时,根据该访问请求中的访存地址确定对应的所述第一寻址标识和所述第二寻址标识,并判断所述第一缓存模块中是否存在信息域中的请求标识与该访问请求的请求标识相同的第一缓存单元,若是则将该访问请求写入该第一缓存单元中。
7.根据权利要求1所述的请求缓冲器,所述第一缓存模块包括读请求缓存区和写请求缓存区,分别用于缓存读访问请求和写访问请求,所述写请求缓存区和所述读请求缓存区分别包括多个所述第一缓存单元。
8.根据权利要求1所述的请求缓冲器,所述请求标识还包括访问类型。
9.根据权利要求1所述的请求缓冲器,所述控制模块,还被配置为在将一写访问请求对应的写数据写入所述第二缓存模块中的对应位置处时,向发出该写访问请求的所述主设备返回对应的响应信息。
10.根据权利要求1所述的请求缓冲器,所述控制模块,还被配置为在接收所述主设备的读访问请求时,根据该读访问请求的访存地址,判断所述第一缓存模块中是否存在访问地址相匹配的写访问请求,若是,则根据所述第一缓存模块中该访问地址相匹配的写访问请求对应的所述数据写入位置信息,从所述第二缓存模块中读取对应的写数据发送至发出该读访问请求的所述主设备,并向该主设备返回对应的响应信息。
11.根据权利要求1所述的请求缓冲器,所述第一缓存模块包括至少一个第一缓存区,不同的所述第一缓存区分别用于缓存不同的所述主设备发出的访问请求,每个第一缓存区分别包括多个所述第一缓存单元。
12.根据权利要求1所述的请求缓冲器,还包括:输出缓冲模块,连接所述控制模块的输出端;
所述控制模块,被配置为在所述第一缓存模块中一个第一缓存单元的ready状态为有效时,将该第一缓存单元中的所有访问请求按照在该第一缓存单元中的写入位置顺序发送至所述内存控制器,包括:
所述控制模块,被配置为在所述第一缓存模块中一个第一缓存单元的ready状态为有效时,将该第一缓存单元中的所有访问请求按照在该第一缓存单元中的写入位置顺序发送至所述输出缓冲模块进行缓存;所述输出缓冲模块为先进先出的缓冲模块。
13.根据权利要求1所述的请求缓冲器,还包括:输入缓冲模块,连接所述控制模块的输入端;
所述输入缓冲模块,被配置为:
对所述主设备发出的访问请求进行缓存;
将所述输入缓冲模块中缓存的访问请求逐个发送至所述控制模块。
14.根据权利要求1所述的请求缓冲器,所述第一缓存单元的信息域包括状态位,所述状态位包括ready状态位和空闲状态位。
15.一种片上***,包括主设备、内存控制器、待访问内存和权利要求1至14中任一项所述的请求缓冲器。
16.一种电子组件,包括权利要求15所述的片上***。
17.一种电子设备,包括权利要求16所述的电子组件。
18.一种请求传输方法,该方法包括:
在接收主设备的访问请求时,根据该访问请求中的访存地址和请求标识,将该访问请求写入第一缓存模块中对应的第一缓存单元中的对应位置处,所述第一缓存单元中写入位置相邻的两个访问请求具有相同的请求标识以及连续的访存地址;所述请求标识至少包括主设备标识;其中,在接收所述主设备的写访问请求以及该写访问请求对应的写数据时,将该写访问请求对应的写数据写入第二缓存模块中的对应位置处并记录对应的数据写入位置信息,根据该写访问请求中的访存地址和请求标识,将该写访问请求以及对应的所述数据写入位置信息写入对应的第一缓存单元中的对应位置处;
在所述第一缓存模块中一个第一缓存单元的ready状态为有效时,将该第一缓存单元中的所有访问请求按照在该第一缓存单元中的写入位置顺序发送至内存控制器,并将该第一缓存单元切换为空闲状态;其中,在将一第一缓存单元中的一写访问请求发送至所述内存控制器时,根据该第一缓存单元中缓存的该写访问请求对应的所述数据写入位置信息,从所述第二缓存模块中读取该写访问请求对应的写数据发送至所述内存控制器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410147573.0A CN117707994B (zh) | 2024-02-02 | 2024-02-02 | 请求缓冲器、***、组件、设备及传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410147573.0A CN117707994B (zh) | 2024-02-02 | 2024-02-02 | 请求缓冲器、***、组件、设备及传输方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117707994A CN117707994A (zh) | 2024-03-15 |
CN117707994B true CN117707994B (zh) | 2024-06-21 |
Family
ID=90153781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410147573.0A Active CN117707994B (zh) | 2024-02-02 | 2024-02-02 | 请求缓冲器、***、组件、设备及传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117707994B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118069373A (zh) * | 2024-04-12 | 2024-05-24 | 北京象帝先计算技术有限公司 | 电子组件、电子设备及内存管理方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445628A (zh) * | 2015-08-11 | 2017-02-22 | 华为技术有限公司 | 一种虚拟化方法、装置和*** |
CN114450672A (zh) * | 2020-11-06 | 2022-05-06 | 深圳市大疆创新科技有限公司 | 存储器的访问控制方法、装置和存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5860158A (en) * | 1996-11-15 | 1999-01-12 | Samsung Electronics Company, Ltd. | Cache control unit with a cache request transaction-oriented protocol |
JP2005011029A (ja) * | 2003-06-18 | 2005-01-13 | Matsushita Electric Ind Co Ltd | メモリアクセス制御装置 |
CN101246460A (zh) * | 2008-03-10 | 2008-08-20 | 华为技术有限公司 | 缓存数据写入***及方法和缓存数据读取***及方法 |
CN101354682B (zh) * | 2008-09-12 | 2010-12-15 | 中国科学院计算技术研究所 | 一种用于解决多处理器访问目录冲突的装置和方法 |
CN104346285B (zh) * | 2013-08-06 | 2018-05-11 | 华为技术有限公司 | 内存访问处理方法、装置及*** |
CN112559389A (zh) * | 2019-09-25 | 2021-03-26 | 阿里巴巴集团控股有限公司 | 存储控制装置、处理装置、计算机***和存储控制方法 |
CN114416397A (zh) * | 2021-12-30 | 2022-04-29 | 上海阵量智能科技有限公司 | 一种芯片、访问内存的方法及计算机设备 |
CN116932424B (zh) * | 2023-09-14 | 2023-12-15 | 上海芯联芯智能科技有限公司 | 一种基于ecc检测的缓存访问方法、装置、介质和设备 |
-
2024
- 2024-02-02 CN CN202410147573.0A patent/CN117707994B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445628A (zh) * | 2015-08-11 | 2017-02-22 | 华为技术有限公司 | 一种虚拟化方法、装置和*** |
CN114450672A (zh) * | 2020-11-06 | 2022-05-06 | 深圳市大疆创新科技有限公司 | 存储器的访问控制方法、装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117707994A (zh) | 2024-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117707994B (zh) | 请求缓冲器、***、组件、设备及传输方法 | |
US6470415B1 (en) | Queue system involving SRAM head, SRAM tail and DRAM body | |
US7584335B2 (en) | Methods and arrangements for hybrid data storage | |
US7171526B2 (en) | Memory controller useable in a data processing system | |
CA2245106C (en) | Method and system for input/output control in a multiprocessor system utilizing simultaneous variable-width bus access | |
US6115761A (en) | First-In-First-Out (FIFO) memories having dual descriptors and credit passing for efficient access in a multi-processor system environment | |
US7337281B2 (en) | Storage system and data caching method in the system | |
US6330630B1 (en) | Computer system having improved data transfer across a bus bridge | |
US8255593B2 (en) | Direct memory access with striding across memory | |
CN112262365B (zh) | 存储器***或子***中的等待时间指示 | |
US20140104967A1 (en) | Inter-memory data transfer control unit | |
US9697111B2 (en) | Method of managing dynamic memory reallocation and device performing the method | |
CA2245037A1 (en) | Method and system for bus arbitration in a multiprocessor system utilizing simultaneous variable-width bus access | |
JP2008544424A (ja) | Dramの並列処理を向上するシステム及び方法 | |
US6970978B1 (en) | System and method for providing a pre-fetch memory controller | |
CN110888592A (zh) | 基于延迟ssd***智能并行资源利用的请求调度方法及*** | |
US6735643B2 (en) | Electronic card with dynamic memory allocation management | |
CN117389914B (zh) | 缓存***、缓存写回方法、片上***及电子设备 | |
CN116257479B (zh) | 重排序缓冲器、***、装置、设备及传输方法 | |
CN107783909B (zh) | 一种内存地址总线扩展方法及装置 | |
CN115658625B (zh) | 数据解压***、图形处理***、装置、设备及解压方法 | |
US5895496A (en) | System for an method of efficiently controlling memory accesses in a multiprocessor computer system | |
CN101599049B (zh) | 控制dma访问不连续物理地址的方法及dma控制器 | |
US6026032A (en) | High speed data buffer using a virtual first-in-first-out register | |
EP1449087A1 (en) | Bandwidth enhancement for uncached devices |
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 |