CN106776366B - 地址访问方法及装置 - Google Patents
地址访问方法及装置 Download PDFInfo
- Publication number
- CN106776366B CN106776366B CN201611041620.5A CN201611041620A CN106776366B CN 106776366 B CN106776366 B CN 106776366B CN 201611041620 A CN201611041620 A CN 201611041620A CN 106776366 B CN106776366 B CN 106776366B
- Authority
- CN
- China
- Prior art keywords
- block
- label
- request
- storage address
- mode
- 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
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/0817—Cache consistency protocols using directory methods
-
- 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/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
Abstract
本发明公开了一种地址访问方法及装置,属于数据存储技术领域。所述方法包括:接收第一请求,第一请求包括需要访问第一数据的第一存储地址,第一存储地址包括第一组索引、标签以及第一关联;从第一组索引对应的block中查找符合模式转换条件的第一block;将第一block的指示位修改为用于指示第一block为非关联模式;依次将第一block中指示位后面的字段替换为第一目录字段和第二目录字段,得到非关联模式的第一block。本发明解决了相关技术中当一个block中存储的是关联地址的目录,且仅有一条目录信息是非无效状态,其余目录信息均为无效状态时,导致这个block的利用率较低的技术问题,达到了提高目录cache的利用率的效果。
Description
技术领域
本发明涉及数据存储技术领域,特别涉及一种地址访问方法及装置。
背景技术
当多个处理器访问同一个主存储器中的数据时,为了保证多个处理器之间的数据共享,在处理器与主存储器之间可以设置有目录高速缓冲存储器(英文:cache)。目录cache用于存储主存储器中所存储的数据当前被访问的目录信息。
一般的,目录cache中包含若干个存储块(英文:block),每个block中可以存储主存储器中存储的至少一个数据所对应的存储地址的目录。为了降低block冲突的概率,目录cache设计成组相连结构,当存储地址访问目录cache时,先索引到目录cache中的一行block,再索引到这一行block中的一个block,最后索引到block中存储目录信息的位置。
数据是存储在主存储器中的,每个数据在主存储器中均对应有一个存储地址。与组相连结构对应的,一个存储地址可以被划分为组索引(英文:index)、标签(英文:tag)和关联(英文:associate)三部分,这三部分分别对应存储地址的不同域段中的内容。当两个存储地址的index部分和tag部分对应的内容相同,associate部分对应的内容不同时,将这两个存储地址称为关联地址。通过存储地址的index索引到目录cache中的一行block,通过将存储地址的tag与这一行block中存储的tag进行比较,若tag相同,则存储地址索引到一个block,最后通过associate索引到block中存储的目录信息所在的位置。
当一个block中存储的是至少两个关联地址的目录时,该block通常存储有关联地址中包含的相同的tag和各个关联地址的目录信息,每条目录信息包括目录状态(英文简称:ste)和向量(英文简称:vect)。其中存储地址所对应的目录信息的目录状态表示主存储器中该存储地址所存储的数据当前被访问的状态,包括共享状态、读状态、空状态(即当前未被访问)以及无效状态,向量表示访问主存储器中该存储地址所存储的数据的处理器的标识,其中共享状态、读状态、空状态可以统称为有效状态。
在实际应用中,当主存储器中的数据变成无效数据时,对应的block中的目录状态会被修改为无效状态,在接收到访问请求时,只有目录状态为有效状态的目录信息才可能会被命中到,而目录状态为无效状态的目录信息不会被命中到。因此当一个block中存储的是至少两个关联地址的目录,且仅有一条目录的目录状态是有效状态时,导致这个block的利用率较低。
发明内容
为了解决相关技术中当一个block中存储的是关联地址的目录,且仅有一条目录信息是非无效状态,其余目录信息均为无效状态时,导致这个block的利用率较低的技术问题,本发明实施例提供了一种地址访问方法及装置。所述技术方案如下:
第一方面,提供了一种地址访问方法,应用于目录cache中,当需要访问的第一数据的第一存储地址访问目录cache时,目录cache接收到第一请求,根据第一请求在组相连目录cache中查找符合模式转换条件的第一block,修改查找到的第一block中用于指示第一block为关联模式的指示位,使得该指示位用于指示第一block为非关联模式,然后用第一目录字段与第二目录字段替换第一block中指示位后面的字段。这里的第一请求包括需要访问第一数据的第一存储地址,第一存储地址包括第一组索引、标签和第一关联。这里的符合模式转换条件的第一block的指示位用于指示第一block为关联模式,第一block中仅包含一条有效的第一目录信息,另外,还要求第一block中的第一标签与第一存储地址中的标签对应的域段相同,但第一block的标签中需要至少包含与第一存储地址中的标签不匹配的内容。这里的第一目录字段依次包括第一标签、第一指示项、第一目录信息,这里的第一指示项用来指示第一目录信息在第一block为关联模式时所对应的位置。这里的第二目录字段依次包括第二标签、第二指示项和第二目录信息,这里的第二标签限定的是第一存储地址中的标签与第一标签不匹配的内容,这里的第二指示项是第一存储地址中的第一关联的值,这里的第二目录信息,是在目录cache接收到第一请求时,系统根据第一请求所请求的状态以及发送第一请求的处理器的标识生成的目录信息。
由于将第一block由关联模式转换为非关联模式时,第一block仅保留了关联地址中有效的一条存储地址的目录信息,删除了关联地址中其他无效的存储地址的目录信息,使得第一block的剩余空间还能够存储被请求的其他非关联地址的目录信息,也即第一block可以存储至少两个非关联地址的目录信息;因此解决了相关技术中当一个block中存储的是关联地址的目录,且仅有一条目录信息是非无效状态,其余目录信息均为无效状态时,导致这个block的利用率较低的技术问题,达到了提高目录cache的利用率的效果。
另外,通过在block中增加指示位,可以快速确定出block是关联模式还是非关联模式。
在第一方面的第一种可能的实施方式中,在目录cache接收到包含第一存储地址的第一请求之后,根据第一存储地址中的第一组索引查找到目录cache中的一行,对于这一行中的所有block,将第一存储地址中的标签与这一行中每个block中存储的标签进行比较,当第一存储地址中的标签与查找到的这一行中的每个block中的标签都不同,并且这一行block均被占用时,就从这一行所有block中找出符合模式转换条件的block,确定为第一block,用于后续的转换。
由于是在根据第一存储地址中的第一组索引查找到的一行block都被占用,且这一行block中的标签与第一存储地址中的标签均不同时,选取符合模式转换条件的block作为第一block,相当于从原本已经存储关联地址的目录信息的block中删除无效状态的目录信息,以使得该block多出额外的空间来存储其他存储地址的目录信息,从而使得目录cache的利用率提高。
结合第一方面或者第一方面的第一种可能的实施方式,在第二种可能的实施方式中,当第一block已经存储了两个非关联地址的目录字段时,第一block的剩余位宽还允许存储至少一个非关联地址的目录字段,则检测访问目录cache的第二请求是否符合在第一block中添加非关联地址的添加条件,若符合,则将第二请求对应的目录字段添加进已经存储的数据后面。这里的添加条件是指第二请求包括需要访问的第二数据的第二存储地址中的组索引与第一存储地址中的第一组索引相同,另外,第二存储地址中的标签与第一block中存储的所有标签均不同,也就是第二请求没有命中第一block,第二存储地址中的标签与第一block的第一标签的域段要相同,并且第二存储地址中的标签至少包含与第一标签不匹配的内容。
由于第一block的位宽可能允许存储超过两个非关联地址的目录字段,因此只要符合添加条件,就可以继续往第一block中存储非关联地址的目录字段,从而将block充分利用起来,提高目录cache的利用率。
结合第一方面、第一方面的第一种可能的实施方式或者第一方面的第二种可能的实施方式,在第三种可能的实施方式中,第二请求对应的目录字段依次包括:第三标签、第三指示项和第三目录信息。这里的第三标签限定的是第二存储地址中的标签中与第一标签不匹配的内容,这里的第三指示项的值为第二存储地址中的关联,这里的第三目录信息是在第二请求访问目录cache时,系统根据第二请求所请求的状态以及发送第二请求的处理器生成的目录信息。
由于第一block中存储的是非关联地址的目录字段,因此需要存储标签、指示项和目录信息,从而区分不同的存储地址,并通过指示项可以确定出目录信息在关联模式的block中的存储位置。
结合第一方面、第一方面的第一种可能的实施方式、第一方面的第二种可能的实施方式或者第一方面的第三种可能的实施方式,在第四种可能的实施方式中,当有第三存储地址访问目录cache时,即目录cache接收到第三请求,当第三请求能够命中目录cache中的一个非关联模式的block,并且与第三存储地址中的标签相同的第四标签后的指示项与第三存储地址中的关联的值不等,称该block为第二block,对第二block进行非关联模式至关联模式的转换,具体是先调整第二block中指示第二block为非关联模式的指示位,使得指示位用于指示第二block为关联模式,将第三请求定义的标签添加到指示位的后面,然后在第二block中获取第四标签对应的目录字段,根据目录字段中的指示项,将目录字段中的目录信息移至该指示项所指示的关联模式的第二block中的对应位置,最后将第三请求的目录信息添加至关联模式的第二block中。这里的第三请求包括需要访问的第三数据的第三存储地址,第三存储地址包括第二组索引、标签和第二关联。这里的被命中的非关联模式的第二block,是指第二block中的第四标签与第三请求定义的标签相同,第二block中的第四标签后的指示项的值与第三存储地址中的第二关联的值不等。
由于在命中一个非关联模式的第二block,且第二block中对应的指示项的值与第三存储地址中的第二关联的值不等时,表明第二block中存储有一个目录信息所对应的存储地址与第三请求中的第三存储地址是关联地址,而关联模式的block中只需要存储一个标签,另外不需要存储指示项,因此将第二block由非关联模式转换为关联模式,可以空出部分字段存储更多的关联地址。
第二方面,提供了一种地址访问装置,该地址访问装置包括至少一个单元,该地址访问装置的各个单元分别用于实现上述第一方面的地址访问方法中对应的步骤。
第三方面,提供了一种硬件设备,该硬件设备包括:处理器、与处理器相连接的主存储器和高速缓冲存储器,该高速缓冲存储器用于实现上述第一方面的地址访问方法中对应的步骤。
第四方面,提供了一种计算机可读介质,该计算机可读介质存储用于实现第一方面所提供的地址访问方法的指令。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的硬件设备的结构示意图;
图2是本发明一个实施例提供的存储地址访问目录cache的示意图;
图3是本发明一个实施例提供的一种关联模式的blcok和对应的非关联模式的block的数据结构图;
图4A是本发明一个实施例提供的一种地址访问方法的方法流程图;
图4B是本发明一个实施例提供的将关联模式的block转换成非关联模式的block的示意图;
图4C是本发明另一个实施例提供的一种地址访问方法的方法流程图;
图4D是本发明另一个实施例提供的将关联模式的block转换成非关联模式的block的示意图;
图4E是本发明再一个实施例提供的一种地址访问方法的方法流程图;
图4F是本发明一个实施例提供的将非关联模式的block转换成关联模式的block的示意图;
图4G是本发明另一个实施例提供的将非关联模式的block转换成关联模式的block的示意图;
图5是本发明一个实施例提供的一种地址访问装置的结构方框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
为了便于对本发明各实施例的理解,首先结合图1对本发明各实施例所涉及的硬件设备的结构进行说明。
图1是本发明一个实施例提供的硬件设备的结构示意图。如图1所示,硬件设备100包括处理器110、主存储器120和目录cache 130。
主存储器120用于存储数据,不同的数据对应不同的存储地址,处理器110可以根据存储地址访问主存储器120中对应的数据。
处理器110包括多个不同的处理器,各个处理器均可以对主存储器120中的数据进行读或写操作。示例性的,处理器110包括第一处理器111、第二处理器112和第三处理器113。
由于处理器110中的多个处理器均可以访问主存储器120中的数据,为了防止一个处理器在对某一数据进行修改时,另一个访问该数据的处理器获取到不正确的数据的情况,在处理器110和主存储器120之间设置有目录cache 130。
目录cache 130是靠近主存储器120的一个存储空间,可以根据处理器110中各个处理器请求访问主存储器120中的数据时的访问记录建立目录。处理器110在根据存储地址访问主存储器120中存储的数据之前,通过存储地址到目录cache 130中查询该数据被访问的情况,可以确定出处理器110能不能访问该数据。
结合参考图2,其示出了存储地址访问目录cache的示意图。如图2所示,目录cache130中包含m行乘以n列个block,其中,m、n为大于0的整数,每一行称之为一个set,每一列称之为一个way。
当处理器110需要访问主存储器120中存储的数据时,处理器110会向目录cache130发送一个包含所要访问的数据的存储地址的访问请求,存储地址被划分为三部分:index、tag和associate。目录cache 130通过index引索引到一个set,该set中包括n个block,通过将存储地址的tag与这n个block中的tag进行比较,若存储地址的tag与其中一个block中的tag相同,则该存储地址命中其中一个block,那么该存储地址对应的数据被访问的目录信息记录在该block存储的四组目录ste和vect中,这四组目录ste和vect分别是ste0+vect0、ste1+vect1、ste2+vect2和ste3+vect3。这四组目录ste和vect分别记录了四个关联地址对应的数据被访问的目录信息,通过存储地址中的associate[1:0]索引到其中一组ste和vect。比如,存储地址的associate[1:0]=2’b00(即存储地址的第0位和第1位分别是二进制数0和0),则该存储地址的目录信息记录在ste0+vect0的位置;存储地址的associate[1:0]=2’b01(即存储地址的第0位和第1位分别是二进制数1和0),则该存储地址的目录信息记录在ste1+vect1的位置;存储地址的associate[1:0]=2’b10(即存储地址的第0位和第1位分别是二进制数0和1),则该存储地址的目录信息记录在ste2+vect2的位置;存储地址的associate[1:0]=2’b11(即存储地址的第0位和第1位分别是二进制数1和1),则该存储地址的目录信息记录在ste3+vect3的位置。通过存储地址的associate[1:0]索引到的ste和vect中存储了该数据被访问的目录信息,ste表示处理器所请求的数据的状态,包括共享状态、读状态、空状态以及无效状态,vect表示访问的处理器的标识。
在实际应用中,当处理器请求的数据的状态为共享状态或空状态时,下一个请求该数据的处理器可以向主存储器120请求访问该数据,当处理器请求的数据的状态为读状态时,下一个请求该数据的处理器需要等到读状态被修改为空状态或共享状态后,才能到主存储器120中请求该数据,当处理器请求的数据的状态为无效状态时,则该数据为无效数据。
结合图1举例说明,当第一处理器111通过第一存储地址请求访问主存储器120中的第一数据,且请求的状态为共享状态时,目录cache 130根据第一存储地址的associate将对应位置的ste记为共享状态,将对应位置的vect记为第一处理器111的标识;然后,当第二处理器112通过第一存储地址请求访问主存储器120中的第一数据,且请求的状态为读状态时,目录cache 130将上述ste中记录的共享状态改为读状态,将上述vect中记录的第一处理器111的标识改为第二处理器112的标识;然后,当第三处理器113通过第一存储地址请求访问主存储器120中的第一数据,且请求的状态为共享状态时,由于第二处理器112访问第一数据为读状态,因此第三处理器113需要等待第二处理器112在使用完第一数据之后,将读状态改为空状态或共享状态,第三处理器113才能使用第一数据,将共享状态和第三处理器113的标识记录到对应的ste和vect的位置。
在目录cache中,一个block中可以存储有多个关联地址的目录信息,如图2所示,一个block中存储有4个关联地址对应的数据被访问的目录,一个目录包括标签和一组目录信息,由于关联地址只有associate部分的内容不同,因此在存储关联地址的目录的block中只需要记录一个标签,该标签是关联地址的标签。
具体的,若第一存储地址和第二存储地址只有associate部分的内容不同,则第一存储地址对应的第一数据与第二存储地址对应的第二数据可能是有关联的,将第一存储地址和第二存储地址称为关联地址,在block中记录关联地址的目录信息时,由于第一存储地址和第二存储地址的标签相同,在block中只需要记录一个标签,将处理器通过第一存储地址请求第一数据的记录存储在与第一存储地址的associate对应的ste和vect中,将处理器110通过第二存储地址请求第二数据的记录存储在与第二存储地址的associate对应的ste和vect中。
结合图1举例说明,第一存储地址与第二存储地址是关联地址,第一处理器111通过第一存储地址请求访问主存储器120中的第一数据,且请求的状态为共享状态,第一存储地址的associate[1:0]=2’b00(即存储地址的第0位和第1位分别是二进制数0和0),则在ste0和vect0中分别记录共享状态和第一处理器111的标识。第二处理器112通过第二存储地址请求访问主存储器120中的第二数据,且请求的状态为读状态,第二存储地址的associate[1:0]=2’b01(即存储地址的第0位和第1位分别是二进制数1和0),则在ste1和vect1中分别记录读状态和第二处理器112的标识。
在实际应用中,处理器110不限定只包括第一处理器111、第二处理器112和第三处理器113,本方案不对处理器110包含的多个处理器的数量进行限定。
在实际应用中,目录cache中的一个block可能会存储多个关联地址的目录信息,而这些目录信息中可能仅有一个是有效的,因此为了减少其他无效的目录信息对该block的存储空间的占用,本发明各个实施例中提出删除该block中的这些无效的目录信息,并在删除这些目录信息之后,在该block剩余的存储空间存储其他存储地址的目录信息,从而使得该block从原本的关联模式转换成了非关联模式,并利用非关联模式的block替换关联模式的block进行存储,以提高该block的利用率。其中关联模式的block以及转换后的非关联模式的block的数据结构如图3所示。
图3是本发明一个实施例提供的一种关联模式的blcok和对应的非关联模式的block的数据结构图。如图3所示,关联模式的block中只存储了一个标签,对应图3中的tag[w:z],该标签是block中存储的各个目录信息对应的关联地址定义的相同的标签,block中存储的标签后面依次存储了各个关联地址对应的目录信息,如图3所示的ste0和vect0、ste1和vect1、ste2和vect2、ste3和vect3,各个关联地址与目录信息的存储位置是对应的。
图3中提供的非关联模式的block的数据结构,由于非关联地址的标签不同,因此非关联模式的block中需要分别存储各个非关联地址的标签,比如图3中存储了标签tag[w:z]和tag1[x:y],tag[w:z]对应的是第一个存储地址的第w位到第z位的数据,也就是说第一个存储地址的第w位到第z位的数据被划分为第一个存储地址的标签,而与第一个存储地址非关联的第二个存储地址的标签对应的是第二个存储地址的第w位到第z位的内容,即第一个存储地址与第二个存储地址的标签对应的域段相同,都为域段[w:z],其中,第二个存储地址的第x位到第y位的内容与第一个存储地址的第x位到第y位的内容不同,将第二个存储地址的第x位到第y位的内容记为标签tag1,表示为tag1[x:y],域段[x:y]是域段[w:z]的其中一部分,也就是说,第一个存储地址与第二个存储地址的标签限定的内容中,有一部分的内容不同,不同的内容为存储地址的第x位到第y位。非关联模式的block中各目录信息前面还增加了指示项,指示项的作用是指示紧跟在指示项后面的目录信息在关联模式的block中的存储位置,比如图3中的指示项ass[1:0]用于指示ste0和vect0存储的目录信息在关联模式的block中的存储位置,ass1[1:0]用于指示ste1和vect1存储的目录信息在关联模式的block中的存储位置。通过指示项可以确定出block中存储的紧跟在指示项后面的目录信息在关联模式的block中的存储位置,而处理器通过存储地址访问目录cache时,需要知道目录信息在关联模式的block中的存储位置,然后才能获取数据在主存储器中的存储情况。
关联模式的block只需要存储一个标签,并且由于各个关联地址与目录信息的存储位置是对应的,因此关联模式的block中不需要存储指示项,从而可以使block能够空出部分字段用于存储更多的关联地址的目录信息。非关联模式的block由于存储的是非关联地址的目录信息,因此非关联模式的block中需要存储至少两个标签,当一个存储地址访问目录cache时,需要将存储地址的标签与非关联模式的block中存储的至少两个标签进行比较,才能确定出该存储地址是否命中该block。由于关联模式与非关联模式的block在实际应用中都各有优势,因此在利用block存储存储地址的目录信息时,可以根据实际情况选择使用关联模式还是非关联模式,并且在满足相应的条件时,可以将block在关联模式和非关联模式之间进行相互转换,比如一个能够存储4个关联地址的目录信息的block可以通过转换变为用来存储2个非关联地址的目录信息。在实际应用中,目录cache中可能部分block是关联模式的,部分block是非关联模式的,关联模式与非关联模式的block是可以并存的。
另外,在block中增加一位指示位,用no_ass表示。在实际应用中,可以定义当指示位no_ass为0时,表示该block中存储的四组目录信息对应的存储地址是关联的,即该block为关联模式;当指示位no_ass为1时,表示该block中存储的目录信息对应的存储地址是非关联的,即该block为非关联模式。通过增加指示位可以快速确定出block是关联模式还是非关联模式的。
由图3可以看出,关联模式的block转换成非关联模式的block之后,该block可以存储非关联的存储地址的目录信息,且在根据不同请求的存储地址索引目录信息时,非关联模式的block中的目录信息均可能会被索引到。
下面提到的关联模式的block和非关联模式的block都基于本实施例提供的数据结构来进行转换的。
当只利用一个存储地址请求访问目录cache时,为了提高目录cache的利用率,可以将符合条件的关联模式的block转换为非关联模式的block,以用来存储至少两个非关联地址的目录信息,具体请参见如图4A所示出的步骤。
图4A是本发明一个实施例提供的一种地址访问方法的方法流程图。该地址访问方法应用在图1所示的目录cache 130中,该地址访问方法包括如下步骤:
401,接收第一请求,该第一请求包括需要访问的第一数据的第一存储地址,第一存储地址包括第一组索引、标签以及第一关联。
处理器通过第一存储地址请求存储在主存储器中的第一数据,先利用第一存储地址索引目录cache中存储的第一数据在主存储器中的访问情况,具体是指第一数据有没有被其他的处理器请求和请求的状态是什么,状态包括读状态、共享状态、空状态以及无效状态。
举例说明,如图4B所示,目录cache接收到第一请求,该第一请求中包含一个存储地址,第一请求中的存储地址被划分为index、tag[w:z]和associate[1:0],分别对应第一组索引、标签和第一关联,tag[w:z]表示第一请求中的物理地址的第w位到第z位的数据为标签,associate[1:0]表示第一请求中的物理地址的第0位到第1位的数据是关联,即第一请求中的物理地址的最低两位是关联。
402,从第一组索引对应的block中查找符合模式转换条件的第一block。
目录cache通过第一组索引可以索引到目录cache中的一个set,该set中包含一行block,这一行block均为与第一组索引对应的block。
这里所讲的符合模式转换条件是指block中存储的指示位用于指示该block为关联模式,且该block中的标签对应的域段与第一请求中的标签对应的域段相同,该block的标签至少包含与第一请求中的标签不匹配的内容,且该block中仅包含一条有效的目录信息。当通过index索引到的一行block中查找到其中一个block满足上述条件,则该block为符合模式转换条件的第一block。
有效的目录信息是指目录状态不是无效状态的目录信息。
举例说明,如图4B所示,第一请求中存储地址的标签对应的域段为[w:z](也即该存储地址的第w位到第z位的内容为该存储地址的标签),查找到的符合模式转换条件的第一block的特征为:第一block的指示位为0、第一block中的第一标签tag对应的域段也为[w:z]、第一标签中的域段[x:y]的内容与第一请求的标签tag[w:z]中的域段[x:y]的内容不同、第一block中只有一组目录信息有效(比如图4B中的目录信息ste2和vect2)。
其中,第一block的指示位为0,则表明第一block是关联模式的;第一block中的第一标签tag对应的域段为[w:z],即第一block中存储的目录信息对应的存储地址的第w位到第z位的内容为第一标签tag;域段[x:y]是域段[w:z]中的一部分,第一标签中的域段[x:y]的内容与第一请求的标签tag[w:z]中的域段[x:y]的内容不同,表明第一标签与第一请求的标签对应的域段[w:z]的内容中除了域段[x:y]的内容不同,其他内容均相同。
可选的,第一请求中的存储地址的标签限定的内容与关联模式的第一block中的标签限定的内容中不同的内容对应的域段可以是连续的,也可以是间隔的,只要求第一请求中的存储地址的标签与关联模式的第一block中的标签存在部分内容不同,然后将不同的这部分内容命名为标签tag1。
可选的,目录cache在执行从第一组索引对应的block中查找符合模式转换条件的第一block的步骤之前,可以先判定是否满足查找到的block中的标签均与第一请求中的标签不同,且查找到的block均被占用的条件。
这里所讲的查找到的block是通过第一请求中包含的存储地址的index索引到的目录cache的一个set对应的一行block,在索引到这一行block之后,将第一请求中存储地址的标签与这一行各个block中存储的标签进行比较。这里所讲的查找到的block均被占用,是指通过index索引到的一行block中,没有空的存储空间用来存储第一请求中的存储地址的目录信息。
可选的,在实际应用中,目录cache执行从第一组索引对应的block中查找符合模式转换条件的第一block的步骤之前,不一定必须要在查找到的block中的标签均与第一请求中的标签不同,且查找到的block均被占用的条件下,目录cache可以根据需求直接执行从第一组索引对应的block中查找符合模式转换条件的第一block的步骤。
403,将第一block的指示位修改为用于指示第一block为非关联模式。
为了区分关联模式的block和非关联模式的block,可以在block之前添加一个指示位,如图3所示,在block之前添加一个指示位no_ass。
在一种实现中,指示位no_ass为0时,可以表示block为关联模式,no_ass为1时,可以表示block为非关联模式,如图4B所示,因此这里可以将指示位no_ass由0修改为1。
在实际应用中,并不局限于将上述指示位的取值与关联模式或非关联模式进行对应,还比如,当指示位为1时,也可以表示block为关联模式,对应的,当指示位为0时,可以表示block为非关联模式。本发明各个实施例中仅以指示位为0表示block为关联模式、指示位为1表示block为非关联模式为例进行说明。
404,依次将第一block中指示位后面的字段替换为第一目录字段和第二目录字段,得到非关联模式的第一block。
这里所讲的第一目录字段依次包括第一标签、第一指示项、第一目录信息,第二目录字段依次包括第二标签、第二指示项以及第二目录信息,第二标签限定了第一请求中的标签中与第一标签不匹配的内容,第一指示项用于指示第一目录信息在关联模式的第一block中的位置,第二指示项为第一关联的值,第二目录信息是在接收第一请求时,系统根据第一请求所请求的状态以及发送第一请求的处理器生成的目录信息。
比如,对应图1,当第一处理器111通过第一存储地址请求访问主存储器120中的第一数据,且请求的状态为共享状态时,目录cache 130根据第一存储地址的第一关联将对应位置的ste记为共享状态,将对应位置的vect记为第一处理器111的标识。
如图4B所示,以关联模式的第一block存储4个关联地址的目录信息为例,对该第一block进行模式转换。将第一block中存储的所有数据定义为旧目录,将第一block中的第一标签tag[w:z]保持不变,即第一标签限定的内容保持不变,将一组有效的第一目录信息ste2和vect2存储到ste0和vect0的位置,在标签tag[w:z]后面存入第一指示项ass0[1:0],记录ass0[1:0]=2’b10,即ass0[1:0]的值为两位二进制数10,二进制数10等于十进制数2,因此ass0[1:0]=2’b10用于指示紧跟指示项后面ste0和vect0中的目录信息存储在旧目录的ste2和vect2的位置。将第一请求中的存储地址的标签tag[w:z]的内容中域段[x:y]的内容命名为标签tag1,记录到tag1的位置,tag[x:y]表示第一请求中的存储地址的第x位到第y位的内容,将第一请求中的associate[1:0]的值记录到ass1[1:0]的位置,将系统根据第一请求所请求的状态以及发送第一请求的处理器生成的新目录信息记录到ste1和vect1的位置。通过以上转换,将旧目录转换成了新目录,新目录即为得到的非关联模式的第一block。在实际应用中,利用旧目录生成新目录之后,旧目录中的数据均被新目录中的数据替换,因此对应于旧目录的关联模式的第一block被新目录的非关联模式的第一block替换存储。
一般的,associate对应的是存储地址中的最低两位的内容,而本发明实施例提供的地址访问方法,associate可以选取不止两位,也可以不限定在最低位,比如可以选取存储地址中第5至8位的内容作为associate。这使得associate可以有更多可选的方案。
上述步骤可以由图1中的目录cache 130来执行。
综上所述,本发明实施例提供的地址访问方法,
由于将第一block由关联模式转换为非关联模式时,第一block仅保留了关联地址中有效的一条存储地址的目录信息,删除了关联地址中其他无效的存储地址的目录信息,使得第一block的剩余空间还能够存储被请求的其他非关联地址的目录信息,也即第一block可以存储至少两个非关联地址的目录信息;因此解决了相关技术中当一个block中存储的是关联地址的目录,且仅有一条目录信息是非无效状态,其余目录信息均为无效状态时,导致这个block的利用率较低的技术问题,达到了提高目录cache的利用率的效果。
另外,通过在block中增加指示位,可以快速确定出block是关联模式还是非关联模式。
另外,由于是在根据第一存储地址中的第一组索引查找到的一行block都被占用,且这一行block中的标签与第一存储地址中的标签均不同时,选取符合模式转换条件的block作为第一block,相当于从原本已经存储关联地址的目录信息的block中删除无效状态的目录信息,以使得该block多出额外的空间来存储其他存储地址的目录信息,从而使得目录cache的利用率提高。
图4A中的步骤提供了转换得到用于存储两个非关联地址的目录字段的非关联模式的block的方法,在实际应用中,当block中已经存储了两个非关联地址的目录字段后,block中的剩余位宽还允许存储至少一个非关联地址的目录字段(标签+指示项+目录信息)时,对于符合条件的非关联地址,可以按照与图4A中类似的方式将符合条件的非关联地址的目录信息添加进该block中,具体实现可以参见图4C中所示的各个步骤。
图4C是本发明另一个实施例提供的一种地址访问方法的方法流程图。该地址访问方法应用在图1所示的目录cache 130中,该地址访问方法包括如下步骤:
405,在得到非关联模式的第一block之后,当第一block的剩余位宽允许存储至少一个非关联的存储地址的目录字段时,检测接收到的第二请求是否符合与第一block对应的添加条件。
第二请求包括需要访问的第二数据的第二存储地址。
这里所讲的目录字段包括:标签tag、指示项ass和目录信息ste+vect,也就是说,当第一block中存储有两个非关联地址的目录字段后,第一block的剩余位宽还能存储另一个非关联地址的标签tag、指示项ass和目录信息ste+vect。这种情况下,可以将符合第一block的添加条件的存储地址的目录字段存入第一block中。
举例说明,如图4D所示,关联模式的第一block能够存储6个关联地址的目录信息,将第一block转换为非关联模式后,通过图4A所示的方法,第一block中已经存储有两个非关联地址的目录字段,第一个存储地址的目录字段为tag[u:z]、ass0[2:0]和ste0+vect0,tag[u:z]表示第一个存储地址的第u位到第z位的内容为标签tag,由于目录信息ste0+vect0原来在关联模式中的存储位置是ste2+vect2,因此记录ass0[2:0]=3’b010,即ass0[2:0]的值为三位二进制数010,二进制数010等于十进制数2;第二个存储地址的目录字段为tag1[x:y]、ass1[2:0]和ste1+vect1,其中,第一个存储地址与第二个存储地址的标签对应的域段均为[u:z],也就是说,第二个存储地址也是第u位到第z位的内容为标签,域段[x:y]是第二个存储地址的标签中与第一个存储地址的标签中不匹配的内容对应的域段,tag1[x:y]表示第二个存储地址的第x位到第y位的内容被命名为tag1。
406,在第二请求符合与第一block对应的添加条件时,在第一block中已存储的数据后面添加第二请求所对应的目录字段。
这里所讲的与第一block对应的添加条件为:第二请求包含的第二存储地址的组索引与第一组索引相同,且第二请求包含的第二存储地址的标签与第一block中的标签均不同,第二存储地址的标签与第一标签的域段相同,且第二存储地址的标签至少包含与第一标签不匹配的内容。
这里所讲的第二请求所对应的目录字段依次包括:第三标签、第三指示项和第三目录信息,第三标签限定了第二存储地址的标签中与第一标签不匹配的内容对应的域段,第三指示项为第二存储地址的关联的值,第三目录信息是根据第二请求所请求的状态以及发送第二请求的处理器生成的目录信息。
请参见图4D,目录cache接收到第二请求,该第二请求中的存储地址被划分为index、tag[u:z]和associate[2:0]三部分。通过index可以索引到第一block所在的set,也就是说,第二请求中的存储地址的index部分的内容与第一block中已经存储的两个非关联的存储地址的index部分的内容相同。
第二请求中的存储地址的标签tag[u:z]的域段[u:z]与关联模式的第一block中的标签对应的域段相同,也就是说,符合条件的存储地址的标签限定的内容的域段与关联模式的block中的标签限定的内容的域段要相同,由于关联模式的block中的标签对应的域段为第u位到第z位,即域段[u:z],而第二请求中的存储地址的标签对应的域段也是[u:z],因此第二请求中的存储地址符合域段相同的要求。另外,第二请求中的存储地址的标签对应的域段[u:z]中的内容与关联模式的第一block的标签对应的域段[u:z]中的内容,除了域段[v:w]中的内容不同,标签限定的其他内容均相同,也就是说,第二请求中的存储地址的标签与关联模式的第一block中的标签限定的内容有一部分不同,不同的这部分内容对应的域段是第v位到第w位。
将第二请求中的标签tag[u:z]的内容中域段[v:w]的内容命名为标签tag2,记录到tag2的位置,将第二请求中的associate[2:0]的值记录到ass2[2:0]的位置,将系统根据第二请求所请求的状态以及发送第二请求的处理器生成的目录信息记录到ste2和vect2的位置。通过上述过程,可以将符合条件的其他的存储地址的目录字段添加到第一block中。
可选的,第二请求中的存储地址的标签限定的内容与关联模式的第一block中的标签限定的内容中不同的内容对应的域段可以是连续的,也可以是间隔的,只要求存储地址的标签与关联模式的第一block中的标签中的部分内容不同,然后将不同的这部分内容命名为标签tag2。
在实际应用中,如果非关联模式的block的剩余位宽允许存储更多的非关联地址的目录字段,可以参照本实施例中各个步骤,将符合条件的其他非关联地址的目录字段添加到该非关联模式的block中。
上述步骤可以由图1中的目录cache 130来执行。
综上所述,本发明实施例提供的地址访问方法,由于第一block的位宽可能允许存储超过两个非关联地址的目录字段,因此只要符合添加条件,就可以继续往第一block中存储非关联地址的目录字段,从而将block充分利用起来,提高目录cache的利用率。
另外,由于第一block中存储的是非关联地址的目录字段,因此需要存储标签、指示项和目录信息,从而区分不同的存储地址,并通过指示项可以确定出目录信息在关联模式的block中的存储位置。
在实际应用中,访问请求有可能命中目录cache中的一个非关联模式的block,并且访问请求包含的存储地址可能与该block中存储的其中一个目录信息对应的存储地址是关联地址,这时可以将非关联模式的block转换为关联模式,以存储更多的关联地址。具体实现可以参见图4E中所示的各个步骤。
图4E是本发明再一个实施例提供的一种地址访问方法的方法流程图。该地址访问方法应用在图1所示的目录cache 130中,该地址访问方法包括如下步骤:
407,接收第三请求,第三请求包括需要访问的第三数据的第三存储地址,第三存储地址包括第二组索引、标签以及第二关联。
这里的第三请求也是一个地址访问请求,其中包含一个需要访问的第三存储地址,这个第三存储地址被划分为index、tag[w:z]和associate[1:0]三部分,分别对应于第二组索引、标签和第二关联。具体可以参见图4F或者图4G,图4F和图4G分别示出了将非关联模式的block转换为关联模式的具体实现方式。其中,图4F是在第三请求命中非关联模式的block中存储的第一个存储地址的目录字段的情况,图4G是在第三请求命中非关联模式的block中存储的第二个存储地址的目录字段的情况。
408,查找目录cache中与第二组索引对应的block。
通过index可以索引到目录cache中的set,该set中对应一行block,这一行block均为与index对应的block。
409,从查找到的block中确定出命中的非关联模式的第二block。
这里所讲的查找到的block是指通过第三请求中的存储地址的index索引到的set对应的一行block。
这里所讲的第二block中存在与第三请求中的标签相同的第四标签,由于第三请求中的标签与第二block中存储的其中一个标签相同,因此第三请求中的存储地址命中该第二block。另外,第二block中第四标签后的指示项与第二关联不同,由于指示项指示的是紧跟在指示项后面的目录信息在关联模式的block中的存储位置,而关联模式的block中目录信息的存储位置与存储地址的associate限定的内容之间的关系是对应的,因此当指示项与存储地址的关联的值不同时,表明包括该指示项的目录字段对应的存储地址与访问请求中的存储地址除了associate部分的内容不同,index和tag部分的内容均相同,因此包括该指示项的目录字段对应的存储地址与访问请求中的存储地址是关联地址。这种情况下需要将非关联模式的block转换为关联模式用来存储这两个关联地址的目录信息。
410,将第二block的指示位调整为用于指示第二block为关联模式。
411,将第四标签作为关联模式的第二block的标签,将标签添加至指示位的后面。
这里所讲的第四标签与第三请求中的标签相同,也就是将第三请求中的标签作为关联模式的第二block中存储的标签,将标签添加至指示位0后面。由于关联模式的block中存储的关联地址的目录信息,而关联地址的标签是相同的,因此关联模式的block中只需要存储一个标签。
412,获取第二block中具备第四标签的目录字段,根据目标字段中的指示项确定目标字段中目录信息在关联模式的第二block中的位置,将目录字段中的目录信息移动至关联模式的第二block的位置。
将第二block转换为关联模式,由于关联模式的block中目录信息的存储位置是与存储地址的associate部分的内容是对应的,因此关联模式的block中不需要存储指示项来指示目录信息的存储位置,因此在将非关联模式的block转换为关联模式之后,需要将非关联模式的block中存储的紧跟指示项后面的目录信息根据指示项的值移至关联模式的block中对应的存储位置。
413,在关联模式的第二block中添加与第三请求对应的目录信息。
由于第三请求包含的存储地址与具备第四标签的目录字段对应的存储地址是关联地址,经过步骤411和步骤412的转换,关联模式的block中已经存储有标签,该标签即为第三请求中存储地址的标签,因此,还需要将第三请求中存储地址的目录信息存入与第三请求中存储地址的associate部分内容对应的ste和vect的位置。
经过上述转换,得到的关联模式的block中只用到了存储关联地址的标签和两组ste和vect的存储空间,由于不需要存储多个标签以及指示项,因此关联模式的block中一般还有空出的存储空间,可以用来存储其他关联地址的目录信息。
对于往关联模式的block中存储关联地址的目录信息的过程,可以由本领域技术人员所知的方式来实现,这里就不再赘述。
如图4F所示,目录cache接收到一个包含存储地址的第三请求请求,命中{index,tag[w:z]},即通过第三请求中存储地址的index命中该block所在的set,通过tag[w:z]命中该set中的一个block,被命中的block的指示位为1,是非关联模式。由于第三请求中存储地址的标签tag[w:z]限定的内容与非关联模式的block中存储的第一个存储地址对应的标签tag[w:z]限定的内容相同,因此第三请求中存储地址命中该block中存储的第一个存储地址的目录字段,并且由于associate[1:0]的值与ass0[1:0]的值不相等,因此第三请求中存储地址与该block中存储的包括ass0[1:0]的目录字段对应的存储地址是关联地址。
利用{index,tag[w:x+1],tag1[x:y],tag[y-1:z],ass1[1:0]}替换出未被命中的第二个存储地址。这里的tag[w:x+1],tag1[x:y],tag[y-1:z]的意思是用tag1对应的域段[x:y]的内容替换第一个存储地址的标签tag[w:z]的内容中域段[x:y]的内容,将替换后的域段[w:z]中的内容作为被替换出的存储地址的标签,即标签对应的域段是[w:z],其中,域段[w:x+1]和域段[y-1:z]中的内容分别与第一个存储地址对应的标签中域段[w:x+1]和域段[y-1:z]中的内容相同,域段[x:y]中的内容与第二个存储地址对应的标签中域段[x:y]中的内容相同。由于在得到非关联模式的block时,tag1[x:y]记录的是第二个存储地址的标签与第一个存储地址的标签中不同的内容,因此,这里通过利用tag1[x:y]限定的内容替换第一个存储地址的标签中域段[x:y]的内容,可以得到第二个存储地址的标签限定的内容,结合index限定的内容和指示项ass1[1:0]限定的内容,可以恢复出第二个存储地址。该存储地址被替换出去后,系统会对其做其他处理。
然后将被命中的第一个存储地址的标签tag[w:z]移至关联模式的block中的标签位置。根据旧目录中的指示项的值,ass0[1:0]=2’b10,由于ass0[1:0]的值是两位二进制数10,二进制数10等于十进制数2,因此将ste0和vect0存储的目录信息移至ste2和vect2的位置。
系统根据第三请求所请求的状态以及发送第三请求的处理器生成新目录信息,由于associate[1:0]的值是2’b00,即associate[1:0]的值是两位二进制数00,二进制数00等于十进制数0,因此将新目录信息记录到ste0和vect0的位置。
如图4G所示,目录cache接收到一个包含第三存储地址的第三请求,命中{index,tag[w:x+1],tag1[x:y],tag[y-1:z]},即通过第三请求中第三存储地址的index命中该block所在的set,通过tag[w:x+1],tag1[x:y],tag[y-1:z]命中该set中的一个block,被命中的block的指示位为1,是非关联模式。这里的tag[w:x+1],tag1[x:y],tag[y-1:z]的意思是第三存储地址中的标签限定的内容中域段[x:y]的内容与tag1[x:y]限定的内容相同,除了域段[x:y]的内容之外,标签限定的其他域段的内容与第一个存储地址的标签tag[w:z]限定的对应域段的内容相同。而非关联模式的block中存储的第二个存储地址对应的标签限定的内容与第一个存储地址对应的标签限定的内容除了域段[x:y]的内容不同,并且不同的内容记录在tag1[x:y]中,标签限定的其他部分的内容均相同,因此第三存储地址的标签与非关联模式的block中存储的第二个存储地址对应的标签相同,因此第三存储地址命中该block中存储的第二个存储地址的目录字段,并且由于associate[1:0]的值与ass1[1:0]的值不相等,因此第三存储地址与该block中存储的包括ass1[1:0]的目录字段对应的存储地址是关联地址。
利用{index,tag[w:z],ass0[1:0]}替换出未被命中的第一个存储地址。由于存储地址被划分为index、tag和associate三部分,每个部分限定存储地址中的一部分内容,这里通过index限定的内容,结合tag[w:z]限定的内容和指示项ass0[1:0]限定的内容,可以恢复出第一个存储地址。该存储地址被替换出去后,系统会对其做其他处理。
然后将命中的第二个存储地址的标签tag[w:x+1],tag1[x:y],tag[y-1:z]移至关联模式的block中的标签位置,第三存储地址的标签与新目录中的标签tag[w:z]均记录的是tag[w:x+1],tag1[x:y],tag[y-1:z]的内容,即标签对应的域段是[w:z],其中,域段[w:x+1]和域段[y-1:z]中的内容与第一个存储地址对应的标签中域段[w:x+1]和域段[y-1:z]中的内容相同,域段[x:y]中的内容与第二个存储地址对应的标签中域段[x:y]中的内容相同。根据旧目录中的指示项的值,ass1[1:0]=2’b10,由于ass1[1:0]的值是两位二进制数10,二进制数10等于十进制数2,因此将ste1和vect1存储的目录信息移至ste2和vect2的位置。
系统根据第三请求所请求的状态以及发送第三请求的处理器生成新目录信息,由于associate[1:0]的值是2’b00,即associate[1:0]的值是两位二进制数00,二进制数00等于十进制数0,因此将新目录信息记录到ste0和vect0的位置。
上述步骤可以由图2中的目录cache 130来执行。
综上所述,本发明实施例提供的地址访问方法,由于在命中一个非关联模式的第二block,且第二block中对应的指示项的值与第三存储地址中的第二关联的值不等时,表明第二block中存储有一个目录信息所对应的存储地址与第三请求中的第三存储地址是关联地址,而关联模式的block中只需要存储一个标签,另外不需要存储指示项,因此将第二block由非关联模式转换为关联模式,可以空出部分字段存储更多的关联地址。
图5是本发明一个实施例提供的一种地址访问装置的结构方框图。该地址访问装置可以通过软件、硬件或者两者的结合实现成上述图2所示硬件设备200的全部或者一部分。该地址访问装置可以包括:接收单元510、查找单元520、修改单元530和替换单元540。
接收单元510,用于实现上述步骤401的功能。
查找单元520,用于实现上述步骤402的功能。
修改单元530,用于实现上述步骤403的功能。
替换单元540,用于实现上述步骤404的功能。
可选的,本发明另一个实施例提供的地址访问装置的框图。该地址访问装置可以包括:接收单元510、查找单元520、修改单元530和替换单元540。
接收单元510,用于实现上述步骤405、步骤407和步骤408的功能。
查找单元520,用于实现上述步骤409的功能。
修改单元530,用于实现上述步骤410的功能。
替换单元540,用于实现上述步骤406、步骤411、步骤412和步骤413的功能。
接收单元510,还用于实现上述查找目录中与第一组索引对应的block的功能。
查找单元520,还用于实现上述在查找到的block中的标签均与第一请求中的标签不同,且查找到的block均被占用时,从第一组索引对应的block中查找符合模式转换条件的第一block的功能。
相关细节可结合参考上述方法实施例。
需要说明的是:上述实施例提供的地址访问装置在访问存储地址的数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的地址访问装置与地址访问方法的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”(“a”、“an”、“the”)旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种地址访问方法,其特征在于,所述方法包括:
接收第一请求,所述第一请求包括需要访问的第一数据的第一存储地址,所述第一存储地址包括第一组索引、标签以及第一关联;
从所述第一组索引对应的block中查找符合模式转换条件的第一block,所述符合模式转换条件的第一block的指示位用于指示所述第一block为关联模式,且所述第一block中的第一标签与所述第一存储地址中的标签对应的域段相同,所述第一block的标签至少包含与所述第一存储地址中的标签不匹配的内容,且所述第一block中仅包含一条有效的第一目录信息,所述关联模式的block中存储有多个关联地址的目录信息,所述多个关联地址中只有关联的值不同;
将所述第一block的指示位修改为用于指示所述第一block为非关联模式,所述非关联模式的block中存储有至少两个非关联地址的目录信息,所述至少两个非关联地址中只有组索引的值相同;
依次将所述第一block中所述指示位后面的字段中数据长度为第一目录字段和第二目录字段的数据长度之和的字段替换为所述第一目录字段和所述第二目录字段,且删除所述第一block中所述指示位后面的字段中除所述第一目录 字段和所述第二目录字段之外的其它目录信息,得到非关联模式的第一block,
其中,所述第一目录字段依次包括所述第一标签、第一指示项、所述第一目录信息,所述第二目录字段依次包括第二标签、第二指示项以及第二目录信息,所述第二标签限定了所述第一存储地址中的标签中与所述第一标签不匹配的内容,所述第一指示项用于指示所述第一目录信息在关联模式的所述第一block中的位置,所述第二指示项为所述第一关联的值,所述第二目录信息是根据所述第一请求所请求的状态以及发送所述第一请求的处理器生成的目录信息。
2.根据权利要求1所述的方法,其特征在于,在得到所述非关联模式的第一block之后,所述方法还包括:
当所述第一block的剩余位宽允许存储至少一个非关联的存储地址的目录字段时,检测接收到的第二请求是否符合与所述第一block对应的添加条件;
在所述第二请求符合与所述第一block对应的添加条件时,在所述第一block中已存储的数据后面添加所述第二请求所对应的目录字段,
其中,所述与所述第一block对应的添加条件为:所述第二请求包括需要访问的第二数据的第二存储地址中的组索引与所述第一组索引相同,且所述第二存储地址中的标签与所述第一block中的标签均不同,所述第二存储地址中的标签与所述第一标签的域段相同,且所述第二存储地址中的标签至少包含与所述第一标签不匹配的内容。
3.根据权利要求2所述的方法,其特征在于,所述第二请求所对应的目录字段依次包括:第三标签、第三指示项和第三目录信息,
所述第三标签限定了所述第二存储地址中的标签中与所述第一标签不匹配的内容,所述第三指示项为所述第二存储地址中的关联的值,所述第三目录信息是根据所述第二请求所请求的状态以及发送所述第二请求的处理器生成的目录信息。
4.根据权利要求1所述的方法,其特征在于,在接收所述第一请求之后,所述方法还包括:
查找目录cache中与所述第一组索引对应的block;
在查找到的block中的标签均与所述第一请求中的标签不同,且查找到的block均被占用时,执行所述从所述第一组索引对应的block中查找符合模式转换条件的第一block的步骤。
5.根据权利要求1至4中任一所述的方法,其特征在于,在所述得到非关联模式的第一block之后,所述方法还包括:
接收第三请求,所述第三请求包括需要访问的第三数据的第三存储地址,所述第三存储地址包括第二组索引、标签以及第二关联;
查找目录cache中与所述第二组索引对应的block;
从查找到的block中确定出命中的非关联模式的第二block,所述第二block中存在与所述第三请求中的标签相同的第四标签,所述第二block中所述第四标签后的指示项与所述第二关联不同;
将所述第二block的指示位调整为用于指示所述第二block为关联模式;
将所述第四标签作为关联模式的第二block的标签,将所述标签添加至所述指示位的后面;
获取所述第二block中具备所述第四标签的目录字段,根据所述目录字段中的指示项确定所述目录字段中目录信息在关联模式的第二block中的位置,将所述目录字段中的目录信息移动至所述关联模式的第二block的所述位置;
在所述关联模式的第二block中添加与所述第三请求对应的目录信息。
6.一种地址访问装置,其特征在于,所述装置包括:
接收单元,用于接收第一请求,所述第一请求包括需要访问的第一数据的第一存储地址,所述第一存储地址包括第一组索引、标签以及第一关联;
查找单元,用于从所述第一组索引对应的block中查找符合模式转换条件的第一block,所述符合模式转换条件的第一block的指示位用于指示所述第一block为关联模式,且所述第一block中的第一标签与所述第一请求中的标签对应的域段相同,所述第一block的标签至少包含与所述第一存储地址中的标签不匹配的内容,且所述第一block中仅包含一条有效的第一目录信息,所述关联模式的block中存储有多个关联地址的目录信息,所述多个关联地址中只有关联的值不同;
修改单元,用于将所述第一block的指示位修改为用于指示所述第一block为非关联模式,所述非关联模式的block中存储有至少两个非关联地址的目录信息,所述至少两个非关联地址中只有组索引的值相同;
替换单元,用于依次将所述第一block中所述指示位后面的字段中数据长度为第一目录字段和第二目录字段的数据长度之和的字段替换为所述第一目录字段和所述第二目录字段,且删除所述第一block中所述指示位后面的字段中除所述第一目录 字段和所述第二目录字段之外的其它目录信息,得到非关联模式的第一block,
其中,所述第一目录字段依次包括所述第一标签、第一指示项、所述第一目录信息,所述第二目录字段依次包括第二标签、第二指示项以及第二目录信息,所述第二标签限定了所述第一存储地址中的标签中与所述第一标签不匹配的内容,所述第一指示项用于指示所述第一目录信息在关联模式的所述第一block中的位置,所述第二指示项为所述第一关联的值,所述第二目录信息是根据所述第一请求所请求的状态以及发送所述第一请求的处理器生成的目录信息。
7.根据权利要求6所述的装置,其特征在于,
所述接收单元,还用于当所述第一block的剩余位宽允许存储至少一个非关联的存储地址的目录字段时,检测接收到的第二请求是否符合与所述第一block对应的添加条件;
所述替换单元,还用于在所述第二请求符合与所述第一block对应的添加条件时,在所述第一block中已存储的数据后面添加所述第二请求所对应的目录字段,
其中,所述与所述第一block对应的添加条件为:所述第二请求包括需要访问的第二数据的第二存储地址中的组索引与所述第一组索引相同,且所述第二存储地址中的标签与所述第一block中的标签均不同,所述第二存储地址中的标签与所述第一标签的域段相同,且所述第二存储地址中的标签至少包含与所述第一标签不匹配的内容。
8.根据权利要求7所述的装置,其特征在于,
所述第二请求所对应的目录字段依次包括:第三标签、第三指示项和第三目录信息,所述第三标签限定了所述第二存储地址中的标签中与所述第一标签不匹配的内容,所述第三指示项为所述第二存储地址中的关联的值,所述第三目录信息是根据所述第二请求所请求的状态以及发送所述第二请求的处理器生成的目录信息。
9.根据权利要求6所述的装置,其特征在于,
所述接收单元,还用于查找目录cache中与所述第一组索引对应的block;
所述查找单元,还用于在查找到的block中的标签均与所述第一请求中的标签不同,且查找到的block均被占用时,执行所述从所述第一组索引对应的block中查找符合模式转换条件的第一block的步骤。
10.根据权利要求6至9中任一所述的装置,其特征在于,
所述接收单元,还用于接收第三请求,所述第三请求包括需要访问的第三数据的第三存储地址,所述第三存储地址包括第二组索引、标签以及第二关联;
所述接收单元,还用于查找目录cache中与所述第二组索引对应的block;
所述查找单元,还用于从查找到的block中确定出命中的非关联模式的第二block,所述第二block中存在与所述第三请求中的标签相同的第四标签,所述第二block中所述第四标签后的指示项与所述第二关联不同;
所述修改单元,还用于将所述第二block的指示位调整为用于指示所述第二block为关联模式;
所述替换单元,还用于将所述第四标签作为关联模式的第二block的标签,将所述标签添加至所述指示位的后面;
所述替换单元,还用于获取所述第二block中具备所述第四标签的目录字段,根据所述目录字段中的指示项确定所述目录字段中目录信息在关联模式的第二block中的位置,将所述目录字段中的目录信息移动至所述关联模式的第二block的所述位置;
所述替换单元,还用于在所述关联模式的第二block中添加与所述第三请求对应的目录信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611041620.5A CN106776366B (zh) | 2016-11-18 | 2016-11-18 | 地址访问方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611041620.5A CN106776366B (zh) | 2016-11-18 | 2016-11-18 | 地址访问方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106776366A CN106776366A (zh) | 2017-05-31 |
CN106776366B true CN106776366B (zh) | 2019-11-22 |
Family
ID=58973917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611041620.5A Active CN106776366B (zh) | 2016-11-18 | 2016-11-18 | 地址访问方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106776366B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109963171B (zh) * | 2017-12-14 | 2021-01-05 | 腾讯科技(深圳)有限公司 | 多媒体信息传输方法、传输设备及存储介质 |
CN110059026B (zh) | 2018-01-19 | 2021-06-29 | 华为技术有限公司 | 一种目录处理方法、装置及存储系统 |
CN113377689B (zh) * | 2021-08-12 | 2021-11-05 | 新华三技术有限公司 | 一种路由表项查找、存储方法及网络芯片 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530958A (en) * | 1992-08-07 | 1996-06-25 | Massachusetts Institute Of Technology | Cache memory system and method with multiple hashing functions and hash control storage |
CN1391167A (zh) * | 2002-01-14 | 2003-01-15 | 智慧第一公司 | 将置换路信息整合于目录的关联高速缓存 |
CN1685319A (zh) * | 2002-09-27 | 2005-10-19 | 先进微装置公司 | 具有集成目录与处理器高速缓存的计算机系统 |
CN102662868A (zh) * | 2012-05-02 | 2012-09-12 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
CN104583974A (zh) * | 2012-08-17 | 2015-04-29 | 华为技术有限公司 | 减少的可扩展缓存目录 |
CN104995609A (zh) * | 2013-02-11 | 2015-10-21 | 英派尔科技开发有限公司 | 对发向目录的缓存回收通知的聚合 |
CN105095116A (zh) * | 2014-05-19 | 2015-11-25 | 华为技术有限公司 | 缓存替换的方法、缓存控制器和处理器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8364900B2 (en) * | 2008-02-12 | 2013-01-29 | Oracle America, Inc. | Pseudo-LRU cache line replacement for a high-speed cache |
JP2013097671A (ja) * | 2011-11-02 | 2013-05-20 | Fujitsu Ltd | アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置 |
-
2016
- 2016-11-18 CN CN201611041620.5A patent/CN106776366B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530958A (en) * | 1992-08-07 | 1996-06-25 | Massachusetts Institute Of Technology | Cache memory system and method with multiple hashing functions and hash control storage |
CN1391167A (zh) * | 2002-01-14 | 2003-01-15 | 智慧第一公司 | 将置换路信息整合于目录的关联高速缓存 |
CN1685319A (zh) * | 2002-09-27 | 2005-10-19 | 先进微装置公司 | 具有集成目录与处理器高速缓存的计算机系统 |
CN102662868A (zh) * | 2012-05-02 | 2012-09-12 | 中国科学院计算技术研究所 | 用于处理器的动态组相联高速缓存装置及其访问方法 |
CN104583974A (zh) * | 2012-08-17 | 2015-04-29 | 华为技术有限公司 | 减少的可扩展缓存目录 |
CN104995609A (zh) * | 2013-02-11 | 2015-10-21 | 英派尔科技开发有限公司 | 对发向目录的缓存回收通知的聚合 |
CN105095116A (zh) * | 2014-05-19 | 2015-11-25 | 华为技术有限公司 | 缓存替换的方法、缓存控制器和处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN106776366A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109167811B (zh) | 一种基于区块链的跨链数据访问方法和装置 | |
CN103577440B (zh) | 一种非关系型数据库中的数据处理方法和装置 | |
CN103019953B (zh) | 一种元数据的构建系统及其方法 | |
CN104809179B (zh) | 访问哈希表的装置和方法 | |
CN110347684B (zh) | 基于区块链的分级存储方法及装置、电子设备 | |
CN102243660B (zh) | 一种数据访问方法及设备 | |
JP6764359B2 (ja) | 重複除去dramメモリモジュール及びそのメモリ重複除去方法 | |
EP3777025A1 (en) | Blockchain-based cross-chain data operation method and apparatus | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
CN106776366B (zh) | 地址访问方法及装置 | |
US8135688B2 (en) | Partition/table allocation on demand | |
JP5499825B2 (ja) | データベース管理方法、データベースシステム、プログラム及びデータベースのデータ構造 | |
CN104809183B (zh) | 一种数据读取及写入的方法和装置 | |
CN110109873B (zh) | 一种用于消息队列的文件管理方法 | |
CN104850572A (zh) | HBase非主键索引构建与查询方法及其系统 | |
CN103001878B (zh) | Mac地址哈希冲突的确定方法及装置 | |
CN107153707A (zh) | 一种针对非易失内存的哈希表构建方法及系统 | |
CN105677904B (zh) | 基于分布式文件系统的小文件存储方法及装置 | |
CN108268216B (zh) | 数据处理方法、装置及服务器 | |
CN114817341B (zh) | 访问数据库的方法和装置 | |
CN109521962A (zh) | 一种元数据查询方法、装置、设备及计算机可读存储介质 | |
CN109783023A (zh) | 一种数据下刷的方法和相关装置 | |
CN108595652A (zh) | 加载dom节点数据的方法、装置、计算机设备及存储介质 | |
CN111475105A (zh) | 监控数据存储方法、设备、服务器及存储介质 | |
CN104598652B (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 |