CN113900966B - 一种基于Cache的访存方法及装置 - Google Patents

一种基于Cache的访存方法及装置 Download PDF

Info

Publication number
CN113900966B
CN113900966B CN202111351099.6A CN202111351099A CN113900966B CN 113900966 B CN113900966 B CN 113900966B CN 202111351099 A CN202111351099 A CN 202111351099A CN 113900966 B CN113900966 B CN 113900966B
Authority
CN
China
Prior art keywords
index
tag
cache
memory access
address
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
Application number
CN202111351099.6A
Other languages
English (en)
Other versions
CN113900966A (zh
Inventor
李祖松
郇丹丹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Micro Core Technology Co ltd
Original Assignee
Beijing Micro Core Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Micro Core Technology Co ltd filed Critical Beijing Micro Core Technology Co ltd
Priority to CN202111351099.6A priority Critical patent/CN113900966B/zh
Publication of CN113900966A publication Critical patent/CN113900966A/zh
Application granted granted Critical
Publication of CN113900966B publication Critical patent/CN113900966B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing 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

本发明实施例提供了一种基于Cache的访存方法及装置。方法包括:接收访存指令,访存指令用于指示初始访问地址;获取初始访问地址的第一索引Index和标签Tag;根据Tag和第一索引Index,得到第二索引Index;根据第二索引Index、Tag和初始访问地址的块内偏移Block Offset生成目标地址;对目标地址所指示的位置执行访存指令。本发明提供的方案能够降低冲突产生的概率,提高处理效率。

Description

一种基于Cache的访存方法及装置
技术领域
本发明涉及电子技术领域,尤其涉及一种基于Cache的访存方法及装置。
背景技术
在电子技术领域中,计算机设备可以通过访存指令确定访问存储器的地址,进而从该地址所指示的物理地址中读取或写入数据。
当计算机处理一个任务时,可能涉及多个数据的访存。此时,会出现每个数据在Cache中存储的位置将集中于一个区域,使得存储冲突发生的概率较高,在存储冲突发生时,需要替换当前的一个数据进行存储。比如多个数组的操作,这些数组的高位地址不同,低位地址相同,由于Cache的Index取的是访存地址的低位,没有体现高位地址的信息,就会出现这些数组映射到相同的Cache行,互相替换的情况。
然而,当被替换的数据再次被访存时,需要到下级存储器中执行相应的访存处理,导致处理任务的时延增加,影响处理效率。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种基于Cache的访存方法。技术方案如下:
根据本发明的一方面,提供了一种基于Cache的访存方法,所述方法包括:
接收访存指令,所述访存指令用于指示初始访问地址;
获取所述初始访问地址的第一索引Index和标签Tag;
根据所述Tag和所述第一索引Index,得到第二索引Index;
根据所述第二索引Index、所述Tag和所述初始访问地址的块内偏移Block Offset生成目标地址;
对所述目标地址所指示的位置执行所述访存指令。
可选的,所述根据所述Tag和所述第一索引Index,得到第二索引Index包括:
确定所述Tag和所述第一索引Index的结合数组;
对所述结合数组进行第一组合处理,得到所述第二索引Index。
可选的,所述第一组合处理为异或处理或相加处理。
可选的,所述确定所述Tag和所述第一索引Index的结合数组包括:
确定所述Tag与所述第一索引Index位数相同的部分;
将所述相同的部分与所述第一索引Index作为所述结合数组。
可选的,所述确定所述Tag和所述第一索引Index的结合数组包括:
将所述Tag进行折叠,直至所述Tag与所述第一索引Index的位数相同;
对折叠后的所述Tag进行第二组合处理;
将折叠后且进行过所述第二组合处理后的所述Tag与所述第一索引Index作为所述结合数组。
可选的,所述第二组合处理为异或处理或相加处理。
可选的,所述对所述目标地址所指示的位置执行所述访存指令包括:
根据所述目标地址的所述Tag,在基于所述第二索引Index获取的多个缓存行Cache Line中获取对应的目标Cache Line;
对所述目标Cache Line中所述Block Offset所指示的位置执行所述访存指令对应的访存操作。
根据本发明的另一方面,提供了一种基于Cache的访存装置,所述装置包括:
接收模块,用于接收访存指令,所述访存指令用于指示初始访问地址;
获取模块,用于获取所述初始访问地址的第一索引Index和标签Tag;
确定模块,用于根据所述标签Tag和所述索引Index,得到第二索引Index;
生成模块,用于根据所述第二索引Index、所述标签Tag和所述初始访问地址的块内偏移Block Offset生成目标地址;
执行模块,用于对所述目标地址所指示的位置执行所述访存指令。
可选的,所述确定模块用于:
确定所述Tag和所述第一索引Index的结合数组;
对所述结合数组进行第一组合处理,得到所述第二索引Index。
可选的,所述第一组合处理为异或处理或相加处理。
可选的,所述确定模块用于:
确定所述Tag与所述第一索引Index位数相同的部分;
将所述相同的部分与所述第一索引Index作为所述结合数组。
可选的,所述确定模块用于:
将所述Tag进行折叠,直至所述Tag与所述第一索引Index的位数相同;
将对折叠后的所述Tag进行第二组合处理;
将折叠后且进行过所述第二组合处理后的所述Tag与所述第一索引Index作为所述结合数组。
可选的,所述第二组合处理为异或处理或相加处理。
可选的,所述执行模块用于:
根据所述目标地址的所述Tag,在基于所述第二索引Index获取的多个缓存行Cache Line中获取对应的目标Cache Line;
对所述目标Cache Line中所述Block Offset所指示的位置执行所述访存指令对应的访存操作。
根据本发明的另一方面,提供了一种电子设备,包括:
处理器;以及
存储程序的存储器,
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行上述基于Cache的访存方法。
根据本发明的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行上述基于Cache的访存方法。
本发明实施例中,当接收到访存指令时,获取访存指令中初始访问地址的第一索引Index和标签Tag,通过Tag和Index得到第二索引Index,并将第二索引Index与Tag和块内偏移Block Offset相结合来得到目标地址,对目标地址指示的位置执行访存指令。由于改变了Index,在Index中体现了高位地址的信息,因此能使数据存储的区域分散,产生冲突的概率较低,从而提高处理效率。
附图说明
在下面结合附图对于示例性实施例的描述中,本发明的更多细节、特征和优点被公开,在附图中:
图1示出了根据本发明示例性实施例提供的Cache结构示意图;
图2示出了根据本发明示例性实施例提供的组相连的Cache结构示意图;
图3-图13示出了根据本发明示例性实施例提供的指令格式示意图;
图14示出了根据本发明示例性实施例提供的基于Cache的访存方法流程图;
图15示出了根据本发明示例性实施例提供的目标地址示意图;
图16示出了根据本发明示例性实施例提供的基于Cache的访存装置的示意性框图;
图17示出了能够用于实现本发明的实施例的示例性电子设备的结构框图。
具体实施方式
下面将参照附图更详细地描述本发明的实施例。虽然附图中显示了本发明的某些实施例,然而应当理解的是,本发明可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本发明。应当理解的是,本发明的附图及实施例仅用于示例性作用,并非用于限制本发明的保护范围。
应当理解,本发明的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本发明的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。需要注意,本发明中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本发明中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本发明实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
为了清楚描述本发明实施例提供的方法,下面对所使用的技术进行介绍。
1、Cache
高速缓冲存储器,位于CPU(Central Processing Unit,中央处理单元)和主存储器DRAM(Dynamic Random Access Memory,动态随机存取存储器)之间,通常由SRAM(StaticRandom-Access Memory,静态随机存取存储器)组成。CPU的速度远高于内存,当CPU直接从内存中存取数据时要等待一定的时钟周期,而Cache则访问速度快,可以保存CPU刚用过或循环使用的一部分数据,如果CPU需要再次使用该部分数据时可从Cache中直接调用,这样就避免了从延迟长的内存存取数据,减少了CPU的等待时间,因而提高了系统的效率。
如图1所示的Cache结构示意图,Cache主要由两部分组成,标签(Tag)部分和数据(Data)部分。Data部分用于保存一片连续地址的数据,Tag部分用于存储这片连续数据的公共地址。一个Tag和它对应的所有数据组成一行称为一个Cache Line,而Cache Line中的数据部分称为数据块(Data Block)。如果一个数据可以存储在Cache中的多个地方,这些被同一个地址找到的多个Cache Line称为Cache Set。
2、Cache的组成方式
Cache的组成方式分为直接相连、组相连和全相连,本发明主要涉及组相连的组成方式。直接相连和和全相连可以分别看作路数为1以及路数为Cache行数的特殊的组相连组成方式。组相连的Cache结构示意图如图2所示。
处理器访问存储器的地址会被分为三部分,标签(Tag)、索引(Index)和块内偏移(Block Offset)。其中,使用Index来从Cache中找到一组Cache Line,也即是一个CacheSet;使用Index索引读出的Tag部分来和访问地址中的Tag进行比较,只有它们是相等的,才表明这个Cache Line就是想要的那个;在一个Cache Line中对应有很多个访存数据,通过存储器地址中的Block Offset部分和访存指令的访问宽度可以找到真正想要的数据,它可以定位到每个字节。在Cache Line中还有一个有效位(valid),用来标记Cache Line是否保存着有效的数据,只有在之前被访问过的存储器地址,它的数据才会存在对应的CacheLine中,相应的有效位也会被置为1。
3、访存指令
访存指令分为取数指令和存数指令,都需要访问高速缓存。
不同指令集的访存指令的格式不完全一样,通常的指令集取数指令都包括取字节(lb)、取半字(lh)、取字(lw)、取双字(ld)四种,存数指令都包括存字节(sb)、存半字(sh)、存字(sw)、存双字(sd)四种。下面以RISC-V(第五代精简指令集)为例,分别对取数指令和存数指令进行说明,但不限于下述指令。
(1)取数指令
lb rd, offset(rs1),x[rd] = sext(M[x[rs1] + sext(offset)][7:0]),指令格式如图3所示。其中,rd、rs1为基地址寄存器的标识,offset为偏移量。该指令是指字节加载(Load Byte),即从地址x[rs1] + sign-extend(offset)读取一个字节,经符号位扩展后写入x[rd]。
lbu rd, offset(rs1),x[rd] = M[x[rs1] + sext(offset)][7:0],指令格式如图4所示。该指令是指无符号字节加载 (Load Byte, Unsigned),即从地址x[rs1] + sign-extend(offset)读取一个字节,经零扩展后写入x[rd]。
ld rd, offset(rs1),x[rd] = M[x[rs1] + sext(offset)][63:0],指令格式如图5所示。该指令是指双字加载 (Load Doubleword),即从地址x[rs1] + sign-extend(offset)读取八个字节,写入x[rd]。
lh rd, offset(rs1),x[rd] = sext(M[x[rs1] + sext(offset)][15:0]),指令格式如图6所示。该指令是指半字加载 (Load Halfword),即从地址x[rs1] + sign-extend(offset)读取两个字节,经符号位扩展后写入x[rd]。
lhu rd, offset(rs1),x[rd] = M[x[rs1] + sext(offset)][15:0],指令格式如图7所示。该指令是指无符号半字加载(Load Halfword, Unsigned),即从地址x[rs1] +sign-extend(offset)读取两个字节,经零扩展后写入x[rd]。
lw rd, offset(rs1),x[rd] = sext(M[x[rs1] + sext(offset)][31:0]),指令格式如图8所示。该指令是指字加载(Load Word),即从地址x[rs1] + sign-extend(offset)读取四个字节,写入x[rd]。
lwu rd, offset(rs1),x[rd] = M[x[rs1] + sext(offset)][31:0],指令格式如图9所示。该指令是指无符号字加载(Load Word, Unsigned),即从地址x[rs1] + sign-extend(offset)读取四个字节,零扩展后写入x[rd]。
(2)存数指令
sb rs2, offset(rs1),M[x[rs1]+sext(offset)=x[rs2][7:0],指令格式如图10所示。该指令是指存字节 (Store Byte),即将地址x[rs2]中的1个字节存入内存地址x[rs1]+sign-extend(offset)。
sd rs2, offset(rs1), M[x[rs1]+sext(offset)=x[rs2][63:0],指令格式如图11所示。该指令是指存双字 (Store Doubleword),即将地址x[rs2]中的8字节存入内存地址x[rs1]+sign-extend(offset)。
sh rs2, offset(rs1),M[x[rs1]+sext(offset)=x[rs2][15:0],指令格式如图12所示。该指令是指存半字(Store Halfword),即将地址x[rs2]的低位2个字节存入内存地址x[rs1]+sign-extend(offset)。
sw rs2, offset(rs1),M[x[rs1]+sext(offset)=x[rs2][31:0],指令格式如图13所示。该指令是指存字(Store Word),即将地址x[rs2]的低位4个字节存入内存地址x[rs1]+sign-extend(offset)。
本发明实施例提供了一种基于Cache的访存方法,该方法可以应用于终端、服务器和/或其他具备处理能力的电子设备,本发明对此不作限定。
下面将参照图14所示的基于Cache的访存方法流程图,对该方法进行介绍。
步骤1,接收访存指令,访存指令用于指示初始访问地址。
在一种可能的实施方式中,设备在运行过程中,设备中的访存部件可以接收到访存指令。例如,当设备执行某个计算任务时,可以触发相应的取数指令,获取计算所需的数据。本实施例对触发访存指令的具体任务不作限定。
该访存指令可以是上述任一类型的指令,该设备可以根据访存指令中携带的基地址和偏移量,计算得到初始访问地址。
步骤2,获取初始访问地址的第一索引Index和标签Tag。
在一种可能的实施方式中,使用Index来从Cache中找到一组Cache Line,也即是一个Cache Set;使用Index索引读出的Tag部分来和访问地址中的Tag进行比较,只有它们是相等的,才表明这个Cache Line就是想要的那个。初始访问地址可以包括Tag、Index和Block Offset。设备可以根据处理器访问Cache的地址格式来获取初始访问地址的第一索引Index和标签Tag。
步骤3,根据Tag和第一索引Index,得到第二索引Index。
当计算机处理一个任务时,可能涉及多个数据的访存。此时,由于属于同一任务,每个数据在Cache中存储的位置将集中于一个区域,使得存储冲突发生的概率较高。存储冲突发生时,需要替换当前的一个数据进行存储,当被替换的数据再次被访存时,需要到下级存储器中执行相应的访存处理,导致处理任务的时延增加,影响处理效率。因此,需要对第一索引Index进行处理,改变访存的区域的位置,使得数据在Cache中存储的位置更加分散,减小存储冲突发生的概率。
具体的,上述步骤3的处理可以为:确定Tag和第一索引Index的结合数组;对结合数组进行第一组合处理,得到第二索引Index。
在一实施例中,确定Tag和第一索引Index的结合数组可以通过以下步骤完成:
将Tag进行折叠,直至Tag与第一索引Index的位数相同;
对折叠后的Tag进行第二组合处理;
将折叠后且进行过第二组合处理后的Tag与第一索引Index作为结合数组。
具体的,折叠Tag直至与第一索引Index的位数相同,再将折叠后的Tag和第一索引Index进行组合处理,得到结合数组。
在一实施例中,对Tag的折叠可以通过以下方式进行:从Tag中选取两组与第一索引Index相同位数的数字,举例来说,Tag为01010110,第一索引Index为0011,由于Index为4位,因此从Tag中选取两组4位数,可以是前4位0101和后四位0110,即0101和0110,对0101和0110进行第二组合处理,得到的结果与第一索引Index0011作为结合数组。若Tag的位数不足以拆分为两组,则两组数可以存在重合,比如当Tag为0101011且Index为4位数时,此时无法将Tag分割为两部分,此时可以选择前4位数0101和后四位数1011进行第二组合处理,第二组合处理的结果与第一索引Index0011作为结合数组。本实施例对具体的折叠方式不作限定,例如,还可以折叠为三组等。
结合实际来说,访问地址通常为40位,Block offset对应最低6位的地址,Index对应中间的6位地址,Tag对应高的28位地址。举例来说,即与索引Tag对应的高28位,为28’h0080009;和低位地址,即与索引Index和块内偏移Block offset对应的低12位,为12h000。因此在折叠Tag时,需要将28位的Tag折叠至6位,比如可以折叠成4组6位数,两两进行第二组合处理,最终得到的6位数与第一索引Index作为结合数组。
在一实施例中,确定Tag和第一索引Index的结合数组可以通过以下步骤完成:
确定Tag与第一索引Index位数相同的部分;
将相同部分与第一索引Index作为结合数组。
具体的,选取Tag和第一索引Index位数相同的部分,比如Tag为01010110,第一索引Index为四位数0011,因此将Tag的前四位0101和第一索引Index0011作为结合数组。
在一实施例中,第一组合处理为异或处理或相加处理。
在一实施例中,第二组合处理为异或处理或相加处理。
举例来说,当结合数组为:0101、0011时,通过异或处理得到的第二索引Index为0110。当另一个访存指令的Tag为00010110,第一索引Index同样为0110时,将Index的前四位和第一索引Index作为结合数组,即当结合数组为0001、0011时,通过异或处理得到的第二索引Index为0010。这样就把两个第一索引Index相同的地址,通过结合数组的方式映射为两个不同的第二索引Index,从而避免映射到同一个Cache行,互相替换。采用异或处理的时延较小,能够快速完成处理。
需要说明的是,第一组合处理和/或第二组合处理不限于异或处理,也可以是将两组数相加,以第一组合处理为例,当结合数组为0101、0011时,通过相加计算得到的第二索引Index为1000。第一组合处理和/或第二组合处理也可以是其他形式的哈希处理,本发明对此不作限定。
步骤4,根据第二索引Index、Tag和初始访问地址的块内偏移Block Offset生成目标地址。
具体地,在得到第二索引Index后,可以用第二索引Index替换初始访问地址中的第一索引Index,得到目标地址,如图15所示,目标地址的格式为原Tag+新Index+原BlockOffset。
在一实施例中,本实施例以对Tag的折叠方式得到新的Index进行说明:
以两组Index相同的目标地址为例:两组目标地址分别为:第一组Tag01010110+Index0011+Block Offset和第二组Tag00010110+ Index0011+Block Offset。
从第一组Tag中选取两组与第一索引Index相同位数的数字,举例来说,Tag为01010110,第一索引Index为0011,由于Index为4位,因此从Tag中选取两组4位数,可以是前4位0101和后四位0110,即0101和0110,对0101和0110进行加法处理,得到的结果为1011,再与第一索引Index0011作为结合数组后进行异或处理,得到第二索引Index为1000,处理后的目标地址为Tag01010110+ Index1000+Block Offset。
从第二组Tag中选取两组与第一索引Index相同位数的数字,举例来说,Tag为00010110,第一索引Index为0011,由于Index为4位,因此从Tag中选取两组4位数,可以是前4位0001和后四位0110,即0001和0110,对0001和0110进行异或处理,得到的结果为0111,再与第一索引Index0011作为结合数组后进行异或处理,得到第二索引Index为0100,处理后的目标地址为Tag00010110+ Index0100+Block Offset。
由于高位必然不同,本发明在Index中体现了高位地址的信息,改变了Index,因此能使数据存储的区域分散,产生冲突的概率较低,从而提高处理效率。
步骤5,对目标地址所指示的位置执行访存指令。
在本发明一实施例中,上述步骤5的处理可以为:根据目标地址的Tag,在基于第二索引Index获取的多个缓存行Cache Line中获取对应的目标Cache Line;
对目标Cache Line中Block Offset所指示的位置执行访存指令对应的访存操作。
具体的,目标地址包括Tag、第二索引Index和Block Offset。使用Index来从Cache中找到一组Cache Line,也即是一个Cache Set;使用Index索引读出的Tag部分来和访问地址中的Tag进行比较,只有它们是相等的,才表明这个Cache Line就是想要的那个。最后通过Block Offset确定要输出的数据。在第一索引Index替换为第二索引Index后,得到新的目标地址,之后通过新目标地址执行上述访存操作。
本发明实施例中,当接收到访存指令时,获取访存指令中初始访问地址的第一索引Index和标签Tag,通过Tag和Index得到第二索引Index,并将第二索引Index与Tag和块内偏移Block Offset相结合来得到目标地址,对目标地址指示的位置执行访存指令。由于改变了Index,在Index中体现了高位地址的信息,因此能使数据存储的区域分散,产生冲突的概率较低,从而提高处理效率。
本发明实施例提供了一种基于Cache的访存装置,该装置用于实现上述基于Cache的访存方法。如图16所示的基于Cache的访存装置的示意性框图,基于Cache的访存装置1600包括:接收模块1601,获取模块1602,确定模块1603,生成模块1604,执行模块1605。
接收模块1601,用于接收访存指令,访存指令用于指示初始访问地址。
获取模块1602,用于获取初始访问地址的第一索引Index和标签Tag;
确定模块1603,用于根据标签Tag和索引Index,得到第二索引Index;
生成模块1604,用于根据第二索引Index、标签Tag和初始访问地址的块内偏移Block Offset生成目标地址;
执行模块1605,用于对目标地址所指示的位置执行访存指令。
可选的,确定模块1603用于:
确定Tag和第一索引Index的结合数组;
对结合数组进行第一组合处理,得到第二索引Index。
可选的,第一组合处理为异或处理或相加处理。
可选的,确定模块1603用于:
确定Tag与第一索引Index位数相同的部分;
将相同部分与第一索引Index作为结合数组。
可选的,确定模块1603用于:
将Tag进行折叠,直至Tag与第一索引Index的位数相同;
对折叠后的Tag进行第二组合处理;
将折叠后且进行过第二组合处理后的Tag与第一索引Index作为结合数组。
可选的,第二组合处理为异或处理或相加处理。
可选的,执行模块1605用于:
根据目标地址的Tag,在基于第二索引Index获取的多个缓存行Cache Line中获取对应的目标Cache Line;
对目标Cache Line中Block Offset所指示的位置执行访存指令对应的访存操作。
本发明实施例中,当接收到访存指令时,获取访存指令中初始访问地址的第一索引Index和标签Tag,通过Tag和Index得到第二索引Index,并将第二索引Index与Tag和块内偏移Block Offset相结合来得到目标地址,对目标地址指示的位置执行访存指令。由于改变了Index,在Index中体现了高位地址的信息,因此能使数据存储的区域分散,产生冲突的概率较低,从而提高处理效率。
本发明示例性实施例还提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器。存储器存储有能够被至少一个处理器执行的计算机程序,计算机程序在被至少一个处理器执行时用于使电子设备执行根据本发明实施例的方法。
本发明示例性实施例还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,计算机程序在被计算机的处理器执行时用于使计算机执行根据本发明实施例的方法。
本发明示例性实施例还提供一种计算机程序产品,包括计算机程序,其中,计算机程序在被计算机的处理器执行时用于使计算机执行根据本发明实施例的方法。
参考图17,现将描述可以作为本发明的服务器或客户端的电子设备1700的结构框图,其是可以应用于本发明的各方面的硬件设备的示例。电子设备旨在表示各种形式的数字电子的计算机设备,诸如,数据中心服务器、笔记本电脑、瘦客户机、膝上型计算机、台式计算机、工作站、个人数字助理、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图17所示,电子设备1700包括计算单元1701,其可以根据存储在只读存储器(ROM)1702中的计算机程序或者从存储单元1708加载到随机访问存储器(RAM)1703中的计算机程序,来执行各种适当的动作和处理。在RAM 1703中,还可存储设备1700操作所需的各种程序和数据。计算单元1701、ROM 1702以及RAM 1703通过总线1704彼此相连。输入/输出(I/O)接口1705也连接至总线1704。
电子设备1700中的多个部件连接至I/O接口1705,包括:输入单元1706、输出单元1707、存储单元1708以及通信单元1709。输入单元1706可以是能向电子设备1700输入信息的任何类型的设备,输入单元1706可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入。输出单元1707可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。存储单元1708可以包括但不限于磁盘、光盘。通信单元1709允许电子设备1700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
计算单元1701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1701的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1701执行上文所描述的各个方法和处理。例如,在一些实施例中,基于Cache的访存方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1702和/或通信单元1709而被载入和/或安装到电子设备1700上。在一些实施例中,计算单元1701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行基于Cache的访存方法。
用于实施本发明的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
如本发明使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

Claims (12)

1.一种基于Cache的访存方法,其特征在于,所述方法包括:
接收访存指令,所述访存指令用于指示初始访问地址;
获取所述初始访问地址的第一索引Index和标签Tag;
确定所述Tag和所述第一索引Index的结合数组,包括:将所述Tag进行折叠,直至所述Tag与所述第一索引Index的位数相同;对折叠后的所述Tag进行第二组合处理;将折叠后且进行过所述第二组合处理后的所述Tag与所述第一索引Index作为所述结合数组;
对所述结合数组进行第一组合处理,得到所述第二索引Index;
根据所述第二索引Index、所述Tag和所述初始访问地址的块内偏移Block Offset生成目标地址;
对所述目标地址所指示的位置执行所述访存指令。
2.根据权利要求1所述的基于Cache的访存方法,其特征在于,
所述第一组合处理为异或处理或相加处理。
3.根据权利要求1所述的基于Cache的访存方法,其特征在于,
所述确定所述Tag和所述第一索引Index的结合数组包括:
确定所述Tag与所述第一索引Index位数相同的部分;
将所述相同的部分与所述第一索引Index作为所述结合数组。
4.根据权利要求1所述的基于Cache的访存方法,其特征在于,
所述第二组合处理为异或处理或相加处理。
5.根据权利要求1所述的基于Cache的访存方法,其特征在于,
所述对所述目标地址所指示的位置执行所述访存指令包括:
根据所述目标地址的所述Tag,在基于所述第二索引Index获取的多个缓存行CacheLine中获取对应的目标Cache Line;
对所述目标Cache Line中所述Block Offset所指示的位置执行所述访存指令对应的访存操作。
6.一种基于Cache的访存装置,其特征在于,所述装置包括:
接收模块,用于接收访存指令,所述访存指令用于指示初始访问地址;
获取模块,用于获取所述初始访问地址的第一索引Index和标签Tag;
确定模块,用于将所述Tag进行折叠,直至所述Tag与所述第一索引Index的位数相同;对折叠后的所述Tag进行第二组合处理;将折叠后且进行过所述第二组合处理后的所述Tag与所述第一索引Index作为结合数组;对所述结合数组进行第一组合处理,得到所述第二索引Index;
生成模块,用于根据所述第二索引Index、所述标签Tag和所述初始访问地址的块内偏移Block Offset生成目标地址;
执行模块,用于对所述目标地址所指示的位置执行所述访存指令。
7.根据权利要求6所述的基于Cache的访存装置,其特征在于,
所述第一组合处理为异或处理或相加处理。
8.根据权利要求6所述的基于Cache的访存装置,其特征在于,所述确定模块用于:
确定所述Tag与所述第一索引Index位数相同的部分;
将所述相同的部分与所述第一索引Index作为所述结合数组。
9.根据权利要求6所述的基于Cache的访存装置,其特征在于,
所述第二组合处理为异或处理或相加处理。
10.根据权利要求6所述的基于Cache的访存装置,其特征在于,所述执行模块用于:
根据所述目标地址的所述Tag,在基于所述第二索引Index获取的多个缓存行CacheLine中获取对应的目标Cache Line;
对所述目标Cache Line中所述Block Offset所指示的位置执行所述访存指令对应的访存操作。
11.一种电子设备,包括:
处理器;以及
存储程序的存储器,
其中,所述程序包括指令,所述指令在由所述处理器执行时使所述处理器执行根据权利要求1-5中任一项所述的方法。
12.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使计算机执行根据权利要求1-5中任一项所述的方法。
CN202111351099.6A 2021-11-16 2021-11-16 一种基于Cache的访存方法及装置 Active CN113900966B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111351099.6A CN113900966B (zh) 2021-11-16 2021-11-16 一种基于Cache的访存方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111351099.6A CN113900966B (zh) 2021-11-16 2021-11-16 一种基于Cache的访存方法及装置

Publications (2)

Publication Number Publication Date
CN113900966A CN113900966A (zh) 2022-01-07
CN113900966B true CN113900966B (zh) 2022-03-25

Family

ID=79194320

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111351099.6A Active CN113900966B (zh) 2021-11-16 2021-11-16 一种基于Cache的访存方法及装置

Country Status (1)

Country Link
CN (1) CN113900966B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115964084A (zh) * 2021-10-12 2023-04-14 深圳市中兴微电子技术有限公司 数据交互方法、电子设备、存储介质
CN114860785B (zh) * 2022-07-08 2022-09-06 深圳云豹智能有限公司 缓存数据处理系统、方法、计算机设备和存储介质
CN114924794B (zh) * 2022-07-20 2022-09-23 北京微核芯科技有限公司 一种存储部件的发射队列的地址存储、调度方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5509135A (en) * 1992-09-25 1996-04-16 Digital Equipment Corporation Multi-index multi-way set-associative cache
CN104516829A (zh) * 2013-09-26 2015-04-15 晶心科技股份有限公司 微处理器及使用指令循环高速缓存的方法
CN109582214A (zh) * 2017-09-29 2019-04-05 华为技术有限公司 数据访问方法以及计算机系统
US11126556B1 (en) * 2019-07-19 2021-09-21 Marvell Asia Pte, Ltd. History table management for a correlated prefetcher

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4027620B2 (ja) * 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
CN1269043C (zh) * 2003-01-16 2006-08-09 矽统科技股份有限公司 内存地址的重新映射方法
CN101354682B (zh) * 2008-09-12 2010-12-15 中国科学院计算技术研究所 一种用于解决多处理器访问目录冲突的装置和方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5509135A (en) * 1992-09-25 1996-04-16 Digital Equipment Corporation Multi-index multi-way set-associative cache
CN104516829A (zh) * 2013-09-26 2015-04-15 晶心科技股份有限公司 微处理器及使用指令循环高速缓存的方法
CN109582214A (zh) * 2017-09-29 2019-04-05 华为技术有限公司 数据访问方法以及计算机系统
US11126556B1 (en) * 2019-07-19 2021-09-21 Marvell Asia Pte, Ltd. History table management for a correlated prefetcher

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《HMTT: a platform independent full-system memory trace monitoring system》;Yungang Bao等;《SIGMETRICS "08: Proceedings of the 2008 ACM SIGMETRICS international conference on Measurement and modeling of computer systems》;ACM;20080602;第229-240页 *
CPU-GPU异构架构下共享内存管理策略的研究;汪梦萱;《中国优秀硕士学位论文全文数据库(电子期刊)》;20210615(第6期);第I137-15页 *

Also Published As

Publication number Publication date
CN113900966A (zh) 2022-01-07

Similar Documents

Publication Publication Date Title
CN113900966B (zh) 一种基于Cache的访存方法及装置
US8862831B2 (en) Method and apparatus to facilitate shared pointers in a heterogeneous platform
JP5128122B2 (ja) アドレススペースエミュレーション
US11010056B2 (en) Data operating method, device, and system
CN113656330B (zh) 确定访问地址的方法和装置
US9063860B2 (en) Method and system for optimizing prefetching of cache memory lines
CN113934655B (zh) 解决高速缓冲存储器地址二义性问题的方法和装置
JP2018503924A (ja) 中央処理ユニット(cpu)ベースのシステム内の圧縮メモリコントローラ(cmc)による連続読取り動作を使用するメモリ帯域幅圧縮の提供
CN115470156A (zh) 基于rdma的内存使用方法、系统、电子设备和存储介质
US20120054435A1 (en) Storing the most significant and the least significant bytes of characters at non-contiguous addresses
CN114924794B (zh) 一种存储部件的发射队列的地址存储、调度方法和装置
CN113656331A (zh) 基于高低位的确定访问地址的方法和装置
CN115878510A (zh) 一种页表的修改方法、验证方法、装置及电子设备
US20210089459A1 (en) Storage control apparatus, processing apparatus, computer system, and storage control method
WO2016206421A1 (zh) 内存访问处理方法、装置和存储介质
CN113778526B (zh) 一种基于Cache的流水线的执行方法及装置
CN113722244B (zh) 一种高速缓存结构、访问方法和电子设备
CN115858432B (zh) 一种访问方法、装置、电子设备及可读存储介质
JP5752331B2 (ja) 物理タグ付けされたデータキャッシュへのトラフィックをフィルタリングするための方法
US20230244613A1 (en) Scalable storage using nvme communication
CN114707478A (zh) 映射表生成方法、装置、设备及存储介质
CN107861890A (zh) 访存处理方法、装置及电子设备
JP2018505490A (ja) メモリ素子の分岐メモリ管理
CN117312232A (zh) 数据处理单元、装置、方法、电子设备和存储介质
CN117785724A (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