带有根据页面大小指示符而进行散列的局部标记的翻译后援缓冲器.pdf

上传人:a*** 文档编号:6237214 上传时间:2019-05-24 格式:PDF 页数:24 大小:1.04MB
返回 下载 相关 举报
摘要
申请专利号:

CN03821569.1

申请日:

2003.09.12

公开号:

CN1682200A

公开日:

2005.10.12

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):G06F 12/10申请日:20030912授权公告日:20091028终止日期:20130912|||专利权的转移IPC(主分类):G06F 12/10变更事项:专利权人变更前权利人:NXP股份有限公司变更后权利人:倪泰软件有限公司变更事项:地址变更前权利人:荷兰艾恩德霍芬变更后权利人:美国特拉华州登记生效日:20120321|||授权|||专利申请权、专利权的转移(专利申请权的转移)变更项目:申请人变更前权利人:皇家飞利浦电子股份有限公司 申请人地址:荷兰艾恩德霍芬变更后权利人:NXP股份有限公司 申请人地址:荷兰艾恩德霍芬登记生效日:2007.8.3|||实质审查的生效|||公开

IPC分类号:

G06F12/10

主分类号:

G06F12/10

申请人:

皇家飞利浦电子股份有限公司;

发明人:

P·斯特拉维斯; J·-W·范德瓦尔德特

地址:

荷兰艾恩德霍芬

优先权:

2002.09.13 US 10/242,785

专利代理机构:

中国专利代理(香港)有限公司

代理人:

程天正;王勇

PDF下载: PDF下载
内容摘要

公开了一种利用RAM和可合成逻辑电路形成的翻译后援缓冲器(TLB)。所述TLB在可合成逻辑内部提供用于把若干存储单元组合成对的逻辑,对这些单元必须进行搜索以找到从收到的虚拟地址到物理地址的译本。所述逻辑提供了用于把接收到的虚拟地址散列的散列电路,并且利用散列后的虚拟地址来对RAM变址以便对提供所述译本的RAM内的行进行定位。

权利要求书

1: 一种翻译后援缓冲器(TLB),包括:至少一个输入端口(450), 用于接收虚拟地址的一部分;随机存取存储器(410);一组寄存器 (491);和可合成逻辑(499),用于根据所接收到的部分虚拟地址确 定散列值以及用于将该散列值与寄存器组(491)内的已存储的一个 散列值进行比较以确定这样的可能性,即在随机存取存储器(410) 内的某一行(410a)内存储着与虚拟地址相关联的物理地址并且与来 自寄存器组(491)中的一个寄存器(409)相关联,在所述寄存器内 部存储有所述散列值。
2: 根据权利要求1所述的翻译后援缓冲器,其中所述可合成逻 辑(499)包括编码器电路(408),用于接收至少一个可表示页面大 小的页面大小信号,并且用于根据该至少一个页面大小信号来确定供 确定散列值之用的至少一个屏蔽位。
3: 根据权利要求2所述的翻译后援缓冲器,其中所述可合成逻 辑包括:第一散列电路(406),它包括输出端口(406c)并且用于接 收所接收到的部分虚拟地址和至少一个屏蔽位,该第一散列电路 (406)用于根据所接收到的部分虚拟地址和该至少一个屏蔽位来确 定性地生成第一散列值,并且用于向它的输出端口(406c)提供该第 一散列值。
4: 根据权利要求3所述的翻译后援缓冲器,其中所述可合成逻 辑包括:至少一个寄存器(409),用于存储至少一个屏蔽位。
5: 根据权利要求4所述的翻译后援缓冲器,其中所述可合成逻 辑包括:第二散列电路(406),用于从至少一个寄存器(409)中接 收该部分虚拟地址和至少一个已存储的屏蔽位,所述第二散列电路 (406)用于确定该散列值。
6: 根据权利要求5所述的翻译后援缓冲器,包括比较器(403), 并且其中所述随机存取存储器(410)包括:一个存储在其中的翻译 表,其中在所述翻译表内存储所述行(410a)并且其中在比较器(403) 内比较所述散列值以确定虚拟地址是否存在于翻译表内的相关的行 中;一个肯定的指示,表明对于相关行内的虚拟地址可能有匹配;和 一个否定的指示,表明相关行内的虚拟地址没有可能匹配。
7: 根据权利要求5所述的翻译后援缓冲器,包括第三散列电路 (406),所述第三散列电路用于从至少一个寄存器(409)中接收该 部分虚拟地址和至少一个已存储的屏蔽位,所述第三散列电路(406) 用于与第二散列电路(406)平行地确定一个散列向量,该散列向量 中已存储着对于随机存取存储器(410)中至少两行的确定性地生成 的散列值。
8: 根据权利要求7所述的翻译后援缓冲器,其中所述第一散列 电路(406)预先将该虚拟地址和至少一个检索出的屏蔽位散列,以 便提供用于供给第二和第三散列电路的预先散列值。
9: 根据权利要求8所述的翻译后援缓冲器,包括至少一个第二 寄存器(404),所述至少一个第二寄存器(404)用于存储散列值和 在存储器内的一个相关行(410a)之间的比较结果,所述比较结果提 供表明相关行内的虚拟地址可能匹配的一个肯定指示和表明没有可能 匹配的一个否定指示。
10: 根据权利要求9所述的翻译后援缓冲器,其中该至少一个第 二寄存器(404)中的多个包括一些寄存器(493),其数量等于或多 于翻译后援缓冲器的存储器(410)中的行数量。
11: 根据权利要求1所述的翻译后援缓冲器,其中所述可合成逻 辑包括多个比较器(403),用于将多个散列值与多个期望的散列值进 行比较以确定在存储器中的每个相关的行内存储着用于虚拟地址的译 本的可能性,其中每一个所述期望的散列值都与存储器(410a)中的 一行相关联,所述比较器在组合时用于提供一个包含着与存储器 (410)中的每一行相关联的值的向量。
12: 根据权利要求11所述的翻译后援缓冲器,其中所述可合成 逻辑包括一个分解电路,用于在表明含有译本的存储器中一行的可能 译本的多个值之间进行分解。
13: 根据权利要求1所述的翻译后援缓冲器,包括散列电路 (406),用于对除其译本目前已被存储的虚拟地址之外的虚拟地址进 行散列以确定一个散列值,并且用于将该散列值存储在与存储器中的 可用的行(410a)相关联的寄存器(404)中,所述散列电路用于在 存储器(410)中的可用的行中存储虚拟地址和对应于它的译本。
14: 一种翻译后援缓冲器,包括:随机存取存储器(410);与存 储器(410)中一行(410a)相关联的第一寄存器(404);和散列电 路(406),用于接收与一个其译本目前被存储在该随机存取存储器 (410)中的虚拟地址不同的虚拟地址,用于确定散列值和用于在第 一寄存器(404)中存储该散列值;并且该散列电路用于在存储器的 所述行中存储虚拟地址及其译本。
15: 一种翻译后援缓冲器,包括:RAM;和可合成逻辑(499), 用于根据虚拟地址来确定RAM(410)内的至少一个可能的地址,以固 定的关系对所述RAM(410)进行搜索以查找与虚拟地址相关联的物理 地址,该至少一个可能的地址是RAM(410)内的一个仅有的已知地址 以外的地址,它以固定的关系在所述RAM(410)中存储与虚拟地址相 关联的物理地址。
16: 根据权利要求15所述的翻译后援缓冲器,其中所述可合成 逻辑包括一个散列电路(406),用于将虚拟地址散列以确定一个表明 RAM(410)中的一行(410a)的值,在所述行(410a)处开始搜索该 虚拟地址的译本。
17: 根据权利要求16所述的翻译后援缓冲器,其中所述可合成 逻辑包括查找分解电路,用于反复地将RAM(410)中的多个行内所存 储的虚拟地址数据与虚拟地址进行比较以确定用于虚拟地址的译本的 存在,所述查找分解电路用于在它的输出端口(453)上提供分解后 的译本。
18: 根据权利要求17所述的翻译后援缓冲器,其中所述查找分 解电路包括递增电路(401),用于在连续比较操作之间按行递增存储 器内的行的地址。
19: 根据权利要求17所述的翻译后援缓冲器,其中查找分解电 路包括一个散列电路,用于在连续比较操作之间按行来改变存储器内 的行的地址。
20: 一种为包含RAM和可合成逻辑的翻译后援缓冲器实现虚拟地 址查找功能的方法,包括以下步骤:向可合成逻辑提供虚拟地址(490) (499);将所提供的虚拟地址散列以提供散列结果(481);根据散列 结果确定RAM(410)内部的存储位置,相对于该位置来存储虚拟地址 标识符和与之相关的物理地址(482);将虚拟地址与虚拟地址标识符 进行比较以确定物理地址是否对应于所提供的虚拟地址(483);并且 当物理地址与所提供的虚拟地址相对应时(484),提供物理地址以作 为输出值(485)。
21: 根据权利要求20所述的方法,其中确定存储位置的步骤包 括以下步骤:相对于与RAM(410)中的一个行(410a)相关联的已知 的散列结果来比较该散列结果以确定一个比较结果;形成一个包含着 多个值的命中向量(492),与RAM(410)中的该行(410a)相关联的 每一个值与该已知的散列结果相关联,并且同与该值相关联的RAM中 的该行包含一个该虚拟地址的译本的或然率有关。
22: 根据权利要求21所述的方法,其中该确定的步骤是对RAM (410)内的每一行执行的。
23: 根据权利要求22所述的方法,其中该比较的步骤是顺序地 对RAM(410)中不同的行而实施的,这些行与一个表明该虚拟地址的 可能译本的值相关联,直到确定了包含译本的行的位置为止。
24: 根据权利要求20所述的方法,其中确定的步骤是对RAM(410) 内的每一行执行的。
25: 根据权利要求24所述的方法,其中存储器中的一个行包括 从单个虚拟地址到单个对应的物理地址的单个地址译本。
26: 根据权利要求20所述的方法,其中该散列的步骤包括如下 步骤:把虚拟地址和与存储器中的每一行相关联的已存的值散列以便 独立地确定与存储器中的每一行相关联的散列值。
27: 根据权利要求26所述的方法,其中存储器中的一个行包含 从单个虚拟地址到单个对应的物理地址的单个地址译本。
28: 根据权利要求20所述的方法,其中该散列的步骤包括以下 步骤:将虚拟地址预先散列;将预先散列的虚拟地址独立地与多个已 存储的值中的每一个相组合以便独立地确定与RAM(410)中的每一行 相关联的散列值,所述每一个已存储的值都与存储器(410)中的一 个行相关联。
29: 根据权利要求28所述的方法,其中该比较的步骤是顺序地 对RAM(410)中不同的行而实施的,这些行与一个表明该虚拟地址可 能的译本的值相关联,直到确定了包含所述译本的行(410a)的位置 为止。
30: 根据权利要求28所述的方法,其中存储器中的一个行包括 从单个虚拟地址到单个对应的物理地址的单个地址译本。
31: 根据权利要求20所述的方法,其中该散列的步骤包括如下 步骤:把虚拟地址散列以确定表明RAM(410)中可能存储着虚拟地址 的译本的一个行的值。
32: 根据权利要求31所述的方法,其中该比较的步骤包括如下 步骤:以已知的顺序从与该已确定的值相关的RAM中的该行开始,反 复比较RAM中的多个行,直到确定了对应虚拟地址的译本位置为止。
33: 根据权利要求32所述的方法,其中在连续比较之间按行来 递增该已知的顺序。
34: 根据权利要求32所述的方法,其中通过根据该已确定的值 求解一个函数来确定该已知的顺序。

说明书


带有根据页面大小指示符而进行散列的

    局部标记的翻译后援缓冲器

    本发明涉及翻译后援缓冲器的领域,更具体而言,涉及用于快速设计周期的翻译后援缓冲器体系结构。

    现代的微处理器系统典型地运用虚拟寻址。虚拟寻址使系统能有效地创建比实际的物理存储空间更大的虚拟存储空间。把实际的物理存储空间分解成虚拟存储空间这一过程称为分页(paging)。分页将物理存储空间的线性地址空间分解为称作页面的固定块。页面允许利用较小的物理的主存储器加上低廉地后台存储器来实施大容量的线性地址空间。这种配置称为″虚拟存储″。分页允许通过与后台存储器来回进行交换的按页面管理存储器来实施虚拟存储。分页带来了另外的优点,包括减少了主存储器碎片、对不同页面有可选择的存储器写入策略,和为不同的页面所用的可变化的存储器保护方案。典型情况下,分页机制的出现对应用程序而言是透明的。

    页面的大小是灵活性和性能之间的折衷。小的页面大小允许在虚存系统上进行更精确控制,不过会因分页操作而增加了开销。因此,许多CPU都支持页面大小的混合,例如,一个特定的MIPS实施方案支持4kB、16kB、64kB、256kB、1MB、4MB和16MB页面的任意混合。

    处理器继而能够有利地使用虚拟地址在虚拟地址空间中操作。然而,常常必须将这些虚拟地址翻译成物理地址——实际的存储位置。实现将虚拟地址翻译成物理地址的一种方式就是:使用在主存储器中经常访问的和存储的翻译表。翻译表是存储在主存储器中的,因为它们在大小方面通常很大。令人遗憾的是,对存储在主存储器中的翻译表的经常访问势必会减慢总体的系统性能。

    为了避免需要经常访问主存储器中的翻译表以实现地址翻译,现代的微处理器系统往往利用翻译后援缓冲器(TLB)来存储或高速缓存最近生成的虚拟地址到物理地址的译本。TLB是一种特殊类型的高速缓冲存储器。正如其它类型的高速缓冲存储器的情况一样,TLB典型地是由专门设计成可被快速访问的相对少量的存储器组成的。TLB典型地包括标记阵列和数据阵列两者,正如在高速缓冲存储器中提供的那样。在标记阵列内部,每个标记行都存储一个虚拟地址。然后,使这个标记行与数据阵列中对应的数据行相关联,在所述数据阵列中存储有对应虚拟地址的物理地址译本。因此,在从主存储器中的翻译表中寻找虚拟地址的译本之前,处理器首先查询TLB以确定虚拟地址的物理地址译本目前是否存储在该TLB中。如果虚拟地址和对应的物理地址都存储了在TLB中,那么所述TLB就在其输出端口处提供对应的物理地址,并且避免了消耗时间与资源的对主存储器的访问。因此为了简化TLB的操作并且减少变址需求,在TLB内通常提供一个内容可寻址存储器(CAM)。CAM是并行的模式匹配电路。在一个匹配操作模式中,所述CAM允许并行地搜索所有它的数据以查找匹配。

    令人遗憾的是,常规的TLB需要定制的电路设计技术以实现CAM。利用定制的电路设计不是有利的,因为每个TLB及相关的CAM都需要大量的设计工作以便在处理器系统设计中实现相同的目的。当然,当处理器缺少CAM电路时,来自于处理器的信号将离开芯片而向CAM传送,从而导致时延。

    因此,本发明的一个目的是,提供一种由传统可合成电路块构成的CAM体系结构。

    依照本发明,提供一种翻译后援缓冲器(TLB),它包括:至少一个输入端口,用于接收虚拟地址的一部分;

    随机存取存储器;一组寄存器;和可合成逻辑,用于根据所接收到的部分虚拟地址确定散列值以及用于将该散列值与寄存器组内已存储的一个散列值进行比较以确定这样的可能性,即在随机存取存储器内的某一行内存储着与虚拟地址相关联的物理地址并且与来自寄存器组中的一个寄存器相关联,在所述寄存器内部存储有所述散列值。

    依照本发明的一个方面,提供了一种翻译后援缓冲器,包括:随机存取存储器;与存储器中一行相关联的第一寄存器;和散列电路,用于接收与一个其译本目前被存储在该存储器中的虚拟地址不同的虚拟地址,用于确定散列值和用于在第一寄存器中存储散列值;并且该散列电路用于在存储器的所述行中存储虚拟地址及其译本。

    依照本发明的又一个方面,提供了一种翻译后援缓冲器,包括:RAM;和可合成逻辑,用于根据虚拟地址来确定RAM内部的至少一个可能的地址,以固定的关系对所述RAM进行搜索以查找与虚拟地址相关联的物理地址,该至少一个可能的地址是RAM内的一个仅有的已知地址以外的地址,它以固定的关系在所述RAM中存储与虚拟地址相关联的物理地址。

    依照本发明的又一个方面,提供了一种为包含RAM和可合成逻辑的翻译后援缓冲器实现虚拟地址查找功能的方法,包括以下步骤:向可合成逻辑提供虚拟地址;将所提供的虚拟地址散列以提供散列结果;

    根据散列结果确定在RAM内部的存储位置,相对于该位置来存储虚拟地址标识符和与之相关的物理地址;

    将虚拟地址与虚拟地址标识符进行比较以确定物理地址是否对应于所提供的虚拟地址;并且当物理地址与所提供的虚拟地址相对应时,提供物理地址以作为输出值。

    现在将参照附图来描述本发明,在附图中:

    图1说明了现有技术中的SRAM电路的半导体管实施方案;

    图1b说明了现有技术中的CAM电路的半导体管实施方案;

    图2说明了现有技术中的从虚拟地址(VA)到物理地址(PA)的翻译过程;

    图3说明了结合直接映射的高速缓冲存储器所实现的现有技术从VA到PA的翻译过程;

    图4a总体上说明了利用可合成逻辑元件和随机存取存储器形成的翻译后援缓冲器;

    图4b更详细地说明了由可合成逻辑元件形成的翻译后援缓冲器;

    图4c概述了TLB的操作所采取的步骤;

    图5更详细地说明了散列电路;和

    图6说明了图5中所示的散列电路的变形。

    CAM电路包括结构上类似于SRAM电路的存储电路。然而,CAM电路还包括搜索电路,它提供了并行检索操作模式的增添的益处,因此能够实现利用硬件并行地搜索CAM的内容。当为特定的数据值而搜索CAM时,所述CAM在CAM内找到那个数据值的匹配时提供匹配信号。CAM与SRAM之间的主要区别就在于:在CAM中,将数据提交给表示虚拟地址的CAM并且返回与所述数据有关的地址,而在SRAM中,向SRAM提供地址并且返回在那个地址上所存储的数据。

    CAM的信元是这样排列的,使得每排信元都保存一个存储地址,并且那排信元通过匹配行而连接到数据阵列的对应字行上以便当在那个匹配行上发生匹配时能够实现那个字行中的数据阵列的存取。在完全关联的高速缓冲存储器中,CAM的每一排都保存对应的主存储位置的全地址,并且输入到CAM需要输入所述全地址。

    Steven A Guccione等人的名为″A Reconfigurable ContentAddressable Memory(可重新配置的内容可寻址的存储器)″的现有技术出版物中,论述了FPGA内部实施CAM的方式。正如在现有技术的图1中看到的那样,在半导体管级别上,CAM电路101的实施方式非常类似于标准SRAM 100的实施方式。CAM和SRAM电路两者差不多是相同的,除增加了三个匹配半导体管103外,每一个都具有6个半导体管102,所述这三个匹配半导体管提供了CAM 101的并行检索能力。令人遗憾的是,使用标准的可编程逻辑装置并不方便于实现这类半导体管层电路。

    在该现有技术的出版物中,论述了以FPGA实现的CAM。利用门级别的逻辑来实现CAM往往会导致不合理的CAM大小。在CAM内部触发器被用作为数据存储元件,其结果是利用FPGA实现的可达到的CAM电路的大小要取决于FPGA内可用的触发器的数量。以FPGA实现CAM会迅速地耗尽许多FPGA资源,因而不是一个可行的解决方案。令人遗憾的是,这已经导致早先的设计者推断只能在半导体管级别上高效地实现所述CAM。

    该现有技术的出版物还提出在FPGA中使用查找表(LUT)来实现CAM。不是在FPGA内使用触发器来存储需要匹配的数据,这种实施方式提出了使用LUT来存储需要匹配的数据。通过使用LUT而不是使用触发器,可以得到更小的CAM结构。

    令人遗憾的是,利用可合成元件来形成CAM不容易被实现,所以提供CAM的现有技术的处理器在其内具备CAM核心。在处理器内提供CAM核心不适当地使制造出的电路很昂贵,因为增加了设计复杂性。这类额外的设计复杂性不适合于小批量定制设计的处理器。

    图2说明了从虚拟地址(VA)201到物理地址(PA)202的翻译过程。所述VA 201是32位地址,VA[31:0],而所述PA 202也是32位地址PA[31:0]。所述VA具有两个部分:虚拟页面号(VPN)203和页面偏移量(PO)204。所述VPN 203通常位于VA 201的较高部分,而所述PA 202通常位于较低部分,不过这不是必须的。典型地讲,对于32位的寻址方案而言,所述VPN是20位,而所述PA是12位。所述PA或较低的12位直接翻译成PA。所述VPN 203用于对TLB 205变址以便从中检索物理页面号(PPN)206。换句话说,所述VPN 203经历到PPN 206的翻译。将PA 202的较高部分中的PPN 206和PO组合成PA的较低部分提供了从VA到PA的译本。

    图3说明了结合直接映射的高速缓冲存储器301所实现的从VA 201到PA 202的翻译过程。在翻译周期的开始,利用VA来访问高速缓冲存储器301和TLB 205两者。利用VA的页面偏移量部分来访问高速缓冲存储器301-该页面偏移量是翻译过程中未被修改的地址的部分。使用页面偏移量来对高速缓冲存储器301中所找到的标记阵列302和数据阵列303进行变址,其中使用所述页面偏移量来对高速缓冲存储器301内部的超高速缓冲存储器行302a进行变址。对TLB的访问是利用VA 201的VPN部分203执行的。所述TLB 205典型地包括TLB标记阵列304和TLB数据阵列305。TLB标记阵列304和TLB数据阵列305两者都包含来自于VPN 203的那些位,以便当向这些阵列中的每一个提供VPN时,构成VPN的那些位与那些存储在阵列304、305内部的位进行比较以定位TLB 205内的项。

    一旦访问TLB数据阵列305并且在VPN和TLB数据阵列305a内的项之间发现匹配,就检索PPN 206并将所述PPN 206提供给高速缓冲存储器301并且使用所述PPN 206与从标记阵列302中检索出的标记302a进行比较。匹配表示高速缓存″命中″306。如果在VPN 203与TLB标记阵列304a内的项之间发现匹配,那么就生成TLB命中信号307。照此,访问高速缓存仅仅利用了PPN 206的各个位。上述示例说明了直接映射式高速缓冲存储器的使用;然而,同样的VA到PA的翻译本也适用于按组相关的高速缓存。当使用按组相关的高速缓存时,本领域技术人员认识到的是,高速缓存路线的大小小于或等于虚拟页的大小。

    令人遗憾的是,当在SRAM中实现TLB时,要求对存储器作穷举搜索以支持CAM功能。因此,当TLB具有1024个虚拟地址及其对应的物理地址的存储器时,每一次地址翻译都需要多达1024次的存储器存取和比较操作。这类CAM实施方式是不切实际的,因为性能随CAM的大小而线性下降。

    图4a总体上说明了利用可合成逻辑元件499和随机存取存储器(RAM)410所形成的TLB 400。经由VPN_IN输入端口450提供用于翻译的VPN,其中位VPN_IN[31:12]是从VA[31:0]提供到这个输入端口450的。经由CP0_PAGE_MASK输入端口451提供页面屏蔽信号。经由CP0_TRANSLATION输入端口452提供CP0_TRANSLATION输入信号。取决于使用TLB 400从VA到PA的译本,经由TLB_TRANSLATION输出端口453提供TLB_TRANSLATION输出信号。

    图4b更详细地说明了由可合成逻辑元件形成的TLB 400,并且在图4c中,概括示出了TLB 400的操作步骤。在TLB操作的更详细说明中,经由VPN_IN输入端口450提供用于翻译的VPN(480),其中位VPN_IN[31:12]是作为VPN从VA[31:0]到这个输入端口450提供的。经由CP0_PAGE_MASK输入端口451提供页面屏蔽。向页面屏蔽编码器408提供这个页面屏蔽,用于根据表1来对页面屏蔽进行编码。    页面大小  屏蔽[2:0]    4KB    000    16KB    001    64KB    010    256KB    011    1M    100    4M    101    16M    110

    表1:页面屏蔽编码

    所述页面屏蔽编码器408用于接收其输入端口上的CP0_PAGE_MASK输入信号,并且用于使这个输入信号与3位向量MASK[2:0]进行相关。进一步向散列电路406提供所述3位向量MASK[2:0]。所述散列电路406经由第一输入端口406a来接收VPN_IN[31:12],并且经由第二输入端口406b来接收MASK[2:0]。散列向量H_VPN[5:0]是通过散列电路406的散列操作481而从其输出端口406c那里提供的。进一步向48个寄存器409中的每一个寄存器提供散列向量H_VPN[5:0]和MASK[2:0],其中每个寄存器包括多个触发器,共同称为491。每个寄存器409都具有两个输出端口。向比较电路403提供来自于其第一输出端口的第一输出信号。向48个散列电路406的其中一个的第二输入端口406b提供来自于第二输出端口的第二输出信号。这个散列电路上的第一输入端口接收VPN_IN[31:12]。所述散列电路406输出端口耦合到用于对寄存器输出和散列电路输出信号之间进行比较的48个比较电路403的其中一个。取决于两个输入信号的比较,如果所述信号是相同的则每个比较器都提供‘1’,如果它们是不同的则提供‘0’。来自48个比较器的每一个的输出信号hiti提供给48个单位的二输入多路复用器411中的一个。来自于每个多路复用器的输出端口耦合到触发器404。每个触发器404都生成在标记为tryi的输出端口提供的输出信号,其中对于0<i<47的情况下,这些输出信号try[0…47]一起被提供给优先级编码器电路401。所述优先级编码器电路进一步耦合到二进制解码器电路402,其中所述优先级编码器电路向二进制解码器电路402和RAM 410确立TLB_ENTRY[5:0]信号。在TLB 400内提供三个输出端口,ENTRY_FOUND输出端口454、ENTRY_NOT_FOUND输出端口455和TLB_TRANSLATION输出端口453,以分别提供ENTRY_FOUND、ENTRY_NOT_FOUND和TLB_TRANSLATION输出信号。

    将对于从VA到PA的译本的地址存储在随机存取存储器(RAM)410中,其中所述RAM 410最好按行的形式具有48项。在使用中,每当执行新的翻译时,分别通过输入端口450、451和452向TLB电路400提供输入信号VPN_IN、CP0_PAGE_MASK和CP0_TRANSLATION。对于给定的索引i由TLB所执行的译本存储在RAM 410中。所述给定的索引对保存PPN的译本的RAM内的其中一行410a进行索引。所述散列电路406计算散列函数H(VPN_IN,MASK)并且在相应的6位寄存器hi中存储结果(490)。在3位寄存器mi中存储页面屏蔽(491)。

    当利用TLB请求翻译时,经由输入端口提供VPN并且为所有的i计算散列函数H(VPN_IN,mi)并与hi相比(450)。这产生48位的向量hit0…hit47(492),所述48个位向量随后被加载到48位的寄存器try0…try47中(493)。为了确定所请求的VPN_IN是否存在于RAM中所存储的翻译表当中(482),只检查RAM中那些tryi已经确立的项或行。如果它产生‘1′(483),则确立48位的tryi向量中的一项。当然,可能在tryi向量中有不止一位被确立,但是优先级编码器401选择具有最低索引值的项以便对RAM内的项寻址。所述解码器402将这个索引转换成48位的一次命中的向量clr0…clr47(494)。当时钟脉冲从时钟电路(未示出)来临时,除与刚才用来寻到RAM的索引相对应的已清除的位之外,所述tryi向量被重新加载。每次一项地重复这个过程(483)。一旦如ENTRY_FOUND输出端口454上的ENTRY_FOUND信号所指示的那样查找到了所请求的项时,或当tryi中的所有位都为0时,所述过程就立即停止(484)。当tryi中的所有位都是‘0’时,那么就经由ENTRY_NOT_FOUND输出端口455来提供ENTRY_NOT_FOUND信号。在第一种情况下,翻译是成功的并且利用TLB_TRANSLATION输出端口453上的TLB_TRANSLATION信号从RAM 410那里提供用于翻译的信息(485)。在第二种情况下,翻译不成功,并且TLB报告TLB再填充异常。

    图5更详细地说明了散列电路506。利用MASK[2:0]和VPN[31:12]向散列电路506输入信号,7对1多路复用器501依据提供给第二输入端口506b的MASK[2:0]信号从散列电路506那里提供H_VPN[5:0]输出信号。这个散列电路从VPN中选择6个最低位。所述选择受页面屏蔽的控制,因为″最低的″的定义随页面大小而变化。例如,对于4kB的页面大小来说,VPN的6个最低位(LSB)是位22:17,而对于16kB的页面大小来说,6个LSB是位19:14。由于TLB 400的每个TLB项都存储两个相邻的虚拟页,称作奇/偶对,因而对于4kB页面的6个LSB来说,奇/偶对是位18:13。因此,第12位确定是返回偶数(0)还是返回奇数(1)译本,而对于16kB的奇/偶对来说,所述位是20:15。然而,这个散列函数是冗余的,因为位H_VPN[5:0]的排序是不相干的。图6展示出了位的排序是不相干的。

    图6说明了图5中所示的散列电路的变形。向第一输入端口606a提供VPN[31:12]信号,而向第二输入端口606b提供MASK[2:0]信号。所述屏蔽信号MASK[2:0]由位m0、m1和m2组成。在这个散列电路606内部有三个3对1多路复用器601至603。第一多路复用器601在其选择输入端口上接收下列位{m2, m2(m1+m2)},其中向多路复用器数据输入端口0至2分别提供来自VPN的位VPN[13:14]、VPN[19:20]、VPN[25:26]。由此,多路复用器601给H_VPN[5:0]输出信号提供第5位和第4位。第二多路复用器602在其选择输入端口上接收下列位{m2(m1+m0), m2m1+m2m2m0)},其中向标记为0至2的多路复用器数据输入端口分别提供来自于VPN的位VPN[15:16]、VPN[21:22]、VPN[27:28]。由此,多路复用器602给H_VPN[5:0]输出信号提供第3位和弟2位。所述第三多路复用器603在其选择输入端口上接收下列位:{m2m1, m2m1m0+m2m1)},其中向标记为0至2的多路复用器数据输入端口分别提供来自于VPN的位VPN[17:18]、VPN[23:24]、VPN[29:30]。由此,多路复用器603给H_VPN[5:0]输出信号提供第1位和第0位。

    优选地,散列函数H_VPN[5:0]对于MASK[2:0]和对于VPN_IN[31:12]输入信号而言是均匀分布的。在TLB错失的情况下,查找RAM内起初为之确立tryi的所有项。循环数Nmiss可以用下式表示:

    Nmiss=Σj=04848jpj(1-p)48-j(1+j)]]>

    ,其中p是比较器输出信号hiti被确立的概率。下列项:

    48jpj(1-p)48-j]]>

    ,给出在try向量tryi中正好有j个位最初被确立的概率。当均匀散列函数H在它的输出信号上具有n个位的情况下,p=2-n,其中在图4b的情况下,n=6。

    在TLB命中的情况下,需要对RAM 410进行至少一次访问,这与不访问RAM的情况下进行检测的TLB错失的状况相反,因为在TLB错失状况中,try向量tryi包含的全部是0。

    为命中翻译在TLB中需要执行的平均循环数是由下列公式给出的:

    Nhit=Σk=04747kpk(1-p)47-k(1+k2)]]>

    对于TLB命中而言,在try向量tryi中一定存在至少一个‘1’。唯一的不定性就是向量内带有其余元素造成的。变量k用来表示对于k处于0…47的范围内、try向量tryi内被设置为‘1’的其余项的数量。如果k=0,那么在RAM内仅仅查出一项。因此,由于对于i=0时要使用一个时钟周期来查找第一位置中的译本,因此就要利用总共两个时钟周期来执行所述翻译。平均起来,需要花费2+k/2循环以从RAM410中返回所请求的译本。

    就执行翻译和中断等待而言,要检查长的查找序列所需的时钟周期数,例如k高达25或25以上。下列关系式:

    P{N25}=Σ254848jpj(1-p)48-j]]>

    ,给出了TLB将使用25个或25个以上的循环来完成翻译的概率。表2列出了在散列函数宽度(n)的范围内为了找到翻译Nhit,检测错失Nmiss需要花费的平均循环数和TLB操作占用25个周期数或更多周期数的概率。N Nhit HhitqNmiss P{N25}3 4.94 3.94 7.00 4.3 10-114 3.46 2.46 4.00 5.9 10-185 2.73 1.73 2.50 3.6 10-256 2.37 1.37 1.75 1.5 10-327 2.18 1.18 1.38 5.4 10-40

    表2:作为散列位‘n’的数量的函数的TLB等待时间

    从表2来看,很明显P{N25}是如此之小,以致即使具有4位散列函数,它也需要超过6000年的连续操作才能碰上TLB翻译需要25到48个之间的时钟周期的情况。

    Nhitq(″命中快速″)列适用于连续地向TLB电路400施加VPN_IN的情况。从这个表来看,很明显当重点在于最重要的数即Nhit时,n=5或n=6就足够了。超过6位不会得到更大收获,因为当n=>20时Nhit趋近2.0。在TLB电路400中使用n=6的数值,因为散列函数可能不是很均匀。因此,TLB内使用的6位散列函数接近于5位真正均匀的散列函数的性能。

    有利的是,当向TLB提供VA时,它被传送到对每一行的合成逻辑中,并且提供这样的结果,它由tryi向量内各个位中至少一个确立的位来表明。然后,为了提供PPN只要在物理上访问那些其结果表现出匹配已发生的那些行。因此,对于翻译过程只要访问TLB行的一小部分,由此导致实质的性能改善。

    在不背离本发明的精神或范围的情况下,可以设想出许多其它的实施例。

带有根据页面大小指示符而进行散列的局部标记的翻译后援缓冲器.pdf_第1页
第1页 / 共24页
带有根据页面大小指示符而进行散列的局部标记的翻译后援缓冲器.pdf_第2页
第2页 / 共24页
带有根据页面大小指示符而进行散列的局部标记的翻译后援缓冲器.pdf_第3页
第3页 / 共24页
点击查看更多>>
资源描述

《带有根据页面大小指示符而进行散列的局部标记的翻译后援缓冲器.pdf》由会员分享,可在线阅读,更多相关《带有根据页面大小指示符而进行散列的局部标记的翻译后援缓冲器.pdf(24页珍藏版)》请在专利查询网上搜索。

公开了一种利用RAM和可合成逻辑电路形成的翻译后援缓冲器(TLB)。所述TLB在可合成逻辑内部提供用于把若干存储单元组合成对的逻辑,对这些单元必须进行搜索以找到从收到的虚拟地址到物理地址的译本。所述逻辑提供了用于把接收到的虚拟地址散列的散列电路,并且利用散列后的虚拟地址来对RAM变址以便对提供所述译本的RAM内的行进行定位。。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1