首页 / 一种基于地址翻译单元的地址返回方法及系统

一种基于地址翻译单元的地址返回方法及系统有效专利 发明

技术领域

[0001] 本发明涉及电子设计技术领域,具体涉及一种基于地址翻译单元的地址返回方法及系统。

相关背景技术

[0002] GPU在数据请求时,首先会发送携带虚拟地址的地址转换请求。地址转换请求先查找地址翻译单元中的地址转换后备缓冲器(Translation Look‑aside Buffer,简称TLB)。TLB中保存有虚拟页到物理页的映射条目,地址翻译单元在接收到地址翻译的请求之后,会判断当前请求对应的虚拟地址是否在TLB的映射条目中,若在TLB的映射条目中,则获取相应的物理地址,并将对应的请求放入命中队列(hit FIFO);若不在TLB的映射条目中,则访问后级缓存或者存储器以获取物理地址,同时将对应的请求放入未命中队列(miss FIFO),在一段时间之后,后级缓存或者存储器会将物理地址返回并刷新TLB中的映射条目。如果地址翻译单元先后接收两笔相同的虚拟地址请求,在接收在先请求时,由于TLB不存在对应的映射条目,所以需要访问后级缓存或者存储器,同时请求被放入未命中队列中;一段时间后,后级缓存或者存储器将物理地址返回并刷新TLB中对应的映射条目;之后,地址翻译单元又接收到相同虚拟地址的在后请求。此时因为TLB中已存在映射关系,因此会将在后请求存入命中队列中。由于未命中队列采用的是先进先出的队列,所以在先请求可能被未命中队列中比该请求更早的请求阻塞导致该请求不能从未命中队列中输出,而在后请求进入的命中队列虽然也是先进先出队列,但是由于命中队列中的请求都是在TLB中存在映射条目,所以能够立刻从队列中依次输出。很可能会出现在后请求早于在先请求输出返回,这样会导致同地址的在先和在后请求之间的顺序混乱。如果相同地址请求之间要求输出顺序和输入顺序保持一致的时候就会出现预期和实际不符的情况,例如在先请求是清零命令,在后请求是写数据的命令,期望是先清零后写数据,但是实际上执行的结果是先写数据后清零。

具体实施方式

[0008] 为了更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的一种基于地址翻译单元的地址返回方法及系统,其具体实施方式、结构、特征及其功效,详细说明如下。在下述说明中,不同的“一个实施例”或“另一个实施例”指的不一定是同一实施例。此外,一个或多个实施例中的特定特征、结构、或特点可由任何合适形式组合。
[0009] 除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。
[0010] 下面结合附图具体的说明本发明所提供的一种基于地址翻译单元的地址返回方法及系统的具体方案。
[0011] 请参阅图1,图1示出了本发明实施例提供的一种实施环境图,图中包括处理器10、地址翻译单元20、以及后级缓存或者存储器30。
[0012] 其中,处理器10根据用户指令生成对应的虚拟地址,并将虚拟地址发送给地址翻译单元进行翻译,以获取对应的物理地址。
[0013] 地址翻译单元20(Address Translation Unit,ATU)用于接收虚拟地址,并查阅TLB(Translation Look‑aside Buffer,转译地址转换后备缓冲器,也成为页表缓存)中的映射条目,根据查询结果判断是否命中,将未命中的虚拟地址存入未命中队列,同时访问后级缓存或者存储器以获取对应的物理地址;在命中时,判断在当前队列中是否存在同地址的虚拟地址,若存在,则将当前的虚拟地址存入同地址的虚拟地址所处的队列;若不存在,则将命中的虚拟地址存入命中队列。
[0014] 后级缓存或者存储器30中保存有所有虚拟页与物理页之间的映射关系。
[0015] 请参阅图2,其示出了本发明一个实施例提供的一种基于地址翻译单元的地址返回方法流程图,该方法包括以下步骤:步骤S001,地址翻译单元接收地址翻译请求,所述地址翻译请求对应的虚拟地址为待翻译的虚拟地址;查询TLB中是否存在所述待翻译的虚拟地址对应的映射条目得到查询结果,其中在TLB中保存有若干个虚拟页与物理页之间的映射条目。
[0016] 其中,在地址翻译单元的内部包括TLB,在TLB中缓存的是映射条目,映射条目是虚拟页到物理页的对应记录。如果虚拟页到物理页的匹配关系已经存储在TLB内,地址翻译请求的翻译过程在几个时钟周期内即可完成翻译。但是如果在TLB内并未存储虚拟页与物理页之间的映射关系,那么该虚拟页内的基地址在翻译时,需要多次访问后级缓存或者存储器,访问的时延可达几十甚至几百个时钟周期。由此可知,如果在TLB中能够查询到对应的映射条目,则能够很快的完成虚拟地址到物理地址之间的地址翻译;如果在TLB中没有对应的映射条目,则需要多次访问后级缓存或者存储器,翻译需要的时间比较长。其中,后级缓存是指二级缓存或者多级缓存。
[0017] 步骤S002,根据查询结果判断是否命中,其中,命中是指在TLB中存在待翻译的虚拟地址对应虚拟页的映射条目;若未命中,则将相应的地址翻译请求存入未命中队列,同时多次访问后级缓存或者存储器以获取对应的物理地址;若命中,分别检测命中队列和未命中队列中是否存在同地址的元素;若存在同地址的元素,则将相应的地址翻译请求存入存在同地址的队列中;若不存在同地址的元素,则将相应的地址翻译请求存入命中队列。
[0018] 其中,命中是指待翻译的虚拟地址是在TLB中保存的某一虚拟页中的虚拟地址。未命中的虚拟地址需要多次访问后级缓存或者存储器来获取相应的物理地址,需要较长的时间,将未命中的虚拟地址所对应的地址翻译请求按顺序存入未命中队列(miss FIFO),该未命中队列为先入先出的队列,因此在该未命中队列中只有队首的元素返回相应的物理地址并从队列中出去之后,在后的元素才能出去。即使是在后的元素返回物理地址的时间早于队首的时间,在后的元素也不能出去。
[0019] 其中,同地址是指两个虚拟地址完全相同,其最终翻译完成得到的物理地址也完全相同。
[0020] 为了保证具有依赖关系的物理地址返回的顺序是按照地址翻译请求发出的顺序返回,在命中之后需要再分别检测一下在当前的命中队列和未命中队列中是否存在同地址的地址翻译请求,如果存在同地址,则需要存入相同的队列来保证返回的先后顺序。其中,具有依赖关系是指虚拟地址对应的先后操作之间有先后执行顺序,例如对于同一个地址期望执行操作的顺序是先清零再写数据,则认为清零操作对应的地址请求和写数据对应的地址请求之间存在依赖关系,需要按照请求发出的顺序返回;如果在后的地址翻译请求先返回物理地址,在前的地址翻译请求后返回物理地址,则会出现先写数据再清零的情况,导致数据无法正确的写入。
[0021] 具体的,假设地址翻译单元先后接收两个相同的虚拟地址,且在TLB中没有对应的映射条目。其中,按照接收时间的顺序,将在先接收的虚拟地址称为在先虚拟地址,在后接收的虚拟地址称为在后虚拟地址。则相应的处理过程具体如下:在先虚拟地址在查询TLB的时候并未找到对应的映射条目,也即未命中,将在先虚拟地址对应的地址翻译请求存入未命中队列;同时将该在先虚拟地址对应的地址翻译请求发送给后级缓存或者存储器以获取对应的映射条目;在经过一段时间之后返回在先虚拟地址对应的物理地址,并同时在TLB的映射条目中存入该在先虚拟地址对应的虚拟页与物理页之间的映射条目。假设在未命中队列中由于队首元素的阻塞导致返回物理地址的在先虚拟地址的请求无法出去,此时当在后虚拟地址访问地址翻译单元时,由于在TLB中已经存在对应的条目,因此TLB会迅速响应,在后虚拟地址可以很快得到对应的物理地址,也即命中。然后需要对命中的在后虚拟地址进行同地址检测,分别遍历未命中队列中的所有元素和命中队列中的所有元素,将队列中的元素与在后虚拟地址进行一一比对,由于在未命中队列中存在与在后虚拟地址完全相同的在先虚拟地址,得到在未命中队列中存在同地址请求的判断结果,因此将同地址的在后虚拟地址的地址翻译请求存入到未命中队列的队尾,由于未命中队列遵循先入先出的原则,因此只有在先虚拟地址将物理地址返回之后,在后虚拟地址才能返回,保证物理地址按照请求发出的顺序返回。
[0022] 需要说明的是,在先虚拟地址和在后虚拟地址中的“在先”和“在后”是一个相对的概念,在“在先虚拟地址”进行地址翻译的过程中,如果命中,仍然需要判断未命中队列和命中队列中是否已经存在同地址的请求,根据是否存在同地址的判断结果选择存入相应的队列。
[0023] 具体的,假设地址翻译单元先后在很短的时间内接收两个虚拟地址完全相同的地址翻译请求,并且在TLB中已经存在对应的映射条目,且在队列中不存在同地址请求,则相应的处理过程具体如下:在先虚拟地址在TLB中查到对应的映射条目,并且在分别对未命中队列和命中队列中的所有元素进行同地址检测之后均未查询到同地址请求,因此将在先虚拟地址存入命中队列;然后,在后虚拟地址在访问TLB之后命中,分别对未命中队列和命中队列中的所有元素进行同地址检测,检测到在命中队列中存在同地址的虚拟地址,且未命中队列中不存在同地址请求,因此将在后虚拟地址存入到命中队列的队尾。由于命中队列遵循先入先出的原则,因此在后虚拟地址一定是晚于在先虚拟地址返回物理地址,保证物理地址按照请求发出的顺序返回。
[0024] 在其他实施例中,同地址还可以是指若干个虚拟地址位于同一个虚拟页,其中,一个虚拟页中包括连续的多个虚拟地址,地址空间的大小一般最小为4KB,也有2M或者其它大小的地址空间,虚拟页的地址空间大小决定了虚拟页内能够覆盖的连续虚拟地址的数量。两个虚拟地址属于同一个虚拟页的情况包含了这两个虚拟地址完全相同的情况,检测两个虚拟地址是否位于同一个虚拟页中,同样能够保证完全相同的虚拟地址对应的请求按顺序返回。因此,具体的,分别检测命中队列和未命中队列中是否存在同地址的元素的步骤进一步包括:根据地址翻译请求的虚拟地址得到当前虚拟页的索引号;获取队列中虚拟地址的待匹配虚拟页的索引号;比较当前虚拟页的索引号与待匹配虚拟页的索引号是否相同,若相同,则待匹配虚拟页对应的虚拟地址与地址翻译请求的虚拟地址为同地址。在本发明实施例中,虚拟页的索引号可以通过虚拟地址的高位编码得到,若两个虚拟地址的高位编码相同,那么这两个虚拟地址的索引号相同,也即两者为同地址请求。
[0025] 优选的,由于在TLB中的映射条目即为虚拟页与物理页之间的一一映射关系,一个映射条目对应一个虚拟页,两个虚拟地址位于同一个虚拟页说明这两个虚拟地址可以命中同一个虚拟页对应的映射条目。因此,为了提高同地址检测的效率,为TLB中的每个条目配置两个计数器:命中计数器和未命中计数器,命中计数器计数命中队列中该条目下同地址元素的数量,未命中计数器计数未命中队列中该条目下同地址元素的数量。
[0026] 其中,命中计数器和未命中计数器的更新方法相同,更新方法为:在对应队列中存入相应条目下的地址翻译请求时,计数器加1;在对应队列中输出相应条目下的地址翻译请求时,计数器减1。以未命中计数器更新为例,具体为:每次将某一条目对应的请求存入未命中队列时,该条目对应的未命中计数器加1;在未命中队列输出该条目对应的一个请求时,该条目对应的未命中计数器减1。其中,计数器的位宽视队列的大小而定,保证计数器的大小能够覆盖队列的深度。对于一个新的命中请求仅需要判断命中的条目所对应的两个计数器就知道了同地址检测的结果。
[0027] 其中,对于分别检测命中队列和未命中队列中是否存在同地址的元素的步骤包括:分别检测命中的条目对应的命中计数器和未命中计数器的计数值;在任意一个计数值大于0时,则相应计数器对应的队列中存在与相应的地址翻译请求同地址的元素。进一步,为了方便理解,假设地址翻译单元先后接收两个处于同一个虚拟页的虚拟地址,并且在TLB中不存在对应的映射条目,则同地址检测的过程具体分析如下:在先虚拟地址未命中TLB中的条目,则将在先虚拟地址对应的地址翻译请求存入未命中队列,同时在TLB中新建一个待翻译的虚拟地址的条目,为新建的条目配置命中计数器和未命中计数器,将该新建的条目所对应的两个计数器中未命中计数器的初始计数值设为1、命中计数器的初始计数值设为0,同时将在先虚拟地址的地址翻译请求发送给后级缓存或者存储器;在后虚拟地址再次查询TLB时会命中新建的条目,并且检测到未命中计数器对应的计数值为1,命中计数器对应的计数值为0,说明在未命中的队列中有一个同地址的请求,则将在后虚拟地址对应的地址翻译请求存入对应的未命中队列,同时所属条目对应的未命中计数器对应的计数值再次加
1。同理,假设地址翻译单元先后接收两个处于同一个虚拟页的虚拟地址,并且在TLB中存在对应的映射条目,虚拟地址所属条目的两个计数器的初始计数值均为0,则同地址检测的过程具体分析如下:在先虚拟地址命中TLB中所属的条目,由于当前两个计数器的计数值均为
0,说明此时在命中队列和未命中队列中都不存在同地址的请求,因此将该在先虚拟地址对应的地址翻译请求存入对应的命中队列,命中的条目所对应的命中计数器的计数值加1;在后虚拟地址再次命中该条目时,检测到命中计数器的计数值为1,未命中计数器的计数值为
0,此时说明在命中队列中存在一个同地址的请求,因此将在后虚拟地址对应的请求存入命中队列,同时命中条目对应的命中计数器的计数值再次加1。利用计数器进行同地址检测的方法相比对队列中所有元素都进行一一匹配检测同地址的方法来说更加简单,不需要每次都和队列中的地址进行请求比较来完成搜索,在保证物理地址按照请求发出的顺序返回的情况下,提高了同地址检测的效率,进而提高了地址翻译的响应效率。
[0028] 综上所述,本发明实施例提供了一种基于地址翻译单元的地址返回方法,对于命中的虚拟地址,在该虚拟地址存入命中队列之前,检测当前未命中队列以及命中队列中是否存在同地址的元素,如果存在同地址的元素,则将该虚拟地址存入同地址元素所在的队列的队尾,以解决目前对于具有依赖关系的物理地址返回的顺序错乱的问题,保证了具有依赖关系的物理地址返回的顺序是按照地址翻译请求发出的顺序返回。
[0029] 优选的,由于读请求并不改变地址空间中的内容,假设只是数据的读取,不涉及写数据或者执行相应动作的情况下,不关心数据返回的先后顺序,则为了进一步缩短数据返回的时间,在分别检测命中队列和未命中队列中是否存在同地址的元素之后,还包括:若存在同地址的元素,则判断所述相应的地址翻译请求和同地址的元素是否均为读请求,若是,则将相应的地址翻译请求存入命中队列;若否,则将相应的地址翻译请求存入存在同地址的队列中。因为读请求并不改变地址空间中的内容,如果只是数据的读取,不涉及写数据或者执行相应动作的话,则不关心数据返回的先后顺序。
[0030] 基于同样的发明构思,本发明实施例还提供一种基于地址翻译单元的地址返回系统,该系统包括地址翻译单元、以及后级缓存或者存储器,其中地址翻译单元实现上述任意一个实施例提供的一种基于地址翻译单元的地址返回方法,该基于地址翻译单元的地址返回方法在上述实施例已经进行了详细的介绍,不再赘述。
[0031] 需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0032] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
[0033] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页 第1页 第2页 第3页