CN100485638C - 在处理器中用于减少功耗的微变换检测缓冲器及微标记符 - Google Patents

在处理器中用于减少功耗的微变换检测缓冲器及微标记符 Download PDF

Info

Publication number
CN100485638C
CN100485638C CNB2004800252914A CN200480025291A CN100485638C CN 100485638 C CN100485638 C CN 100485638C CN B2004800252914 A CNB2004800252914 A CN B2004800252914A CN 200480025291 A CN200480025291 A CN 200480025291A CN 100485638 C CN100485638 C CN 100485638C
Authority
CN
China
Prior art keywords
marker character
virtual address
circuit
cache
page
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.)
Expired - Fee Related
Application number
CNB2004800252914A
Other languages
English (en)
Other versions
CN1846200A (zh
Inventor
G·W·沈
S·C·尼尔森
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.)
GlobalFoundries Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN1846200A publication Critical patent/CN1846200A/zh
Application granted granted Critical
Publication of CN100485638C publication Critical patent/CN100485638C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • G06F2212/6082Way prediction in set-associative cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种处理器(10)包括高速缓存存储器(cache)(16)、第一变换检测缓冲器(Translation Look-aside Buffer;TLB)(30)以及标记符电路(tag circuit)(36)。该高速缓存存储器包括用于存储多条高速缓存线的数据存储器(20),以及用于存储多个标记符的标记符存储器(22)。这些标记符中的每一个标记符分别对应这些高速缓存线中的一条高速缓存线。该第一TLB(30)存储虚拟地址的多个页面部分,该页面部分用于识别多个虚拟页面,这些虚拟页面的物理地址存储在该第一TLB(30)中。该标记符电路(36)被设定为用于识别一条或一条以上的多条高速缓存线,这些高速缓存线存储在该高速缓存存储器(16)中以及在该多个虚拟页面内。为响应该第一TLB(30)中第一虚拟地址的击中及该标记符电路(36)中该第一虚拟地址的击中,该标记符电路(36)被设定为用于阻止在该高速缓存存储器中(16)的标记符存储器(22)作读取。

Description

在处理器中用于减少功耗的微变换检测缓冲器及微标记符
技术领域
本发明涉及处理器的领域,特别是处理器中的高速缓存结构。
背景技术
处理器通常实施虚拟寻址,也实施高速缓存存储器用于存储最近所存取的数据和/或指令。该处理器通常产生待存取(即待读取或待写入)位置的虚拟地址,将该虚拟地址转换成物理地址,以便判别在该高速缓存存储器中该存取是否击中(hit)。更确切的说,执行该高速缓存存储器的存取与转换同时并行进行,而该转换用来检测该高速缓存存储器的存取是否击中。
在该处理器中该高速缓存存储器的存取通常是关键时径(criticaltiming path)中的一个,而高速缓存潜伏时间(cache latency高速缓存迟滞)也是处理器能达到的性能水平的关键。因此,处理器设计者常常企图将他们的高速缓存/转换设计最佳化,以减少高速缓存潜伏时间并满足时间上的需求。然而,许多最佳化的技术可能增加该高速缓存/转换电路的功耗。在许多的处理器中,对处理器的整个功耗来说,该高速缓存/转换电路可能是最大贡献者之一。
当处理器的功耗随着时间而增加时,则控制处理器的功耗(及设计用于降低功耗的处理器)的重要性也随之增加。由于该高速缓存/转换电路常常是处理器的功耗的最大主因,所以更加期望用于降低该高速缓存/转换电路中的功耗的技术。
为了改良性能,集关联式高速缓存存储器(set associative cache)通常都在处理器中实施。而在集关联式高速缓存存储器中,索引至高速缓存存储器之内的特定地址选择包含两个或两个以上的高速缓存线存储位置的集合,并可用来存储由该特定地址指定的高速缓存线。在该集合中的高速缓存线存储位置被称为集合的路(ways of the set),具有W路的高速缓存被称为W路集关联式(W-way set associative)高速缓存(其中W为大于1的整数)。对相同大小的高速缓存存储器而言,集关联式高速缓存存储器通常比直接映射式高速缓存存储器(direct-mapped cache)有较高击中率,进而可提供比直接映射式高速缓存存储器更佳的性能。然而,传统的集关联式高速缓存存储器通常也比直接映射式高速缓存存储器要消耗更多电力。一般而言,高速缓存存储器包含用于存储高速缓存数据(cached data)的数据存储器和用于存储标记符的标记符存储器,而该标记符用于识别该高速缓存数据的地址。
在传统的集关联式高速缓存存储器中,响应输入的地址,该数据存储器中的每一路及该标记符存储器都会被存取。可比较对应于集合中每一路的标记符以决定该输入的地址所击中的路(若有任何),该高速缓存存储器将输出所选择对应路的数据。因此,该数据存储器的每一路及该标记符存储器都可被存取并消耗电力。此外,由于该高速缓存存储器的存取常常是关键时径,所以为了计时及潜伏时间,将该标记符存储器及该数据存储器的存取最佳化,而此将进一步增加电力的消耗。更进一步,该高速缓存存储器通常标记有物理地址,所以在关键路径中有转换电路,并且为了计时及潜伏时间而被最佳化,因而增加该转换电路的功耗。
发明内容
在一个实施例中,提供一种处理器,包括高速缓存存储器(16),包括数据存储器(20)及标记符存储器(22),其中该数据存储器被设定为用于存储多条高速缓存线,而该标记符存储器被设定为用于存储多个标记符,多个标记符中的每一个标记符分别对应于多条高速缓存线中的一条;标记符电路(36)被设定为用于检测高速缓存存储器(16)中第一虚拟地址对多条高速缓存线的子集的击中,其中该子集包含多个该多个标记符,以及其中该标记符电路被设定为用于存储至少该标记符的一部分,以响应多个在该子集中的该多个标记符的每个,其中该标记符电路被设定为用于检测第一虚拟地址的击中,对应比较该第一虚拟地址的至少一部分与在该标记符电路中所存储的该标记符的至少一部分;以及将该标记符电路(36)设定为用于避免针对第一虚拟地址的该标记符存储器(22)的读取,以响应该标记符电路(36)中该第一虚拟地址的击中,其中该数据存储器(20)被设定为用于输出对应该第一虚拟地址的第一高速缓存线的至少一部分,而没有对应该第一虚拟地址与在该标记符存储器(22)中存储的一个或多个标记符的标记符比较。
在另一个实施例中,考虑了一种方法。在具有高速缓存存储器(16)的处理器(10)中,该高速缓存存储器包括数据存储器(20)及标记符存储器(22),其中该数据存储器被设定为用于存储多条高速缓存线,而该标记符存储器被设定为用于存储多个标记符,多个标记符中的每一个标记符分别对应于多条高速缓存线中的一条,一种方法,包括:通过该标记符电路(36),检测高速缓存存储器(16)中第一虚拟地址对该多条高速缓存线的子集的击中,其中该子集包含多个该多个标记符,以及其中该标记符电路被设定为用于存储至少该标记的一部分,以响应多个在该子集中的该多个标记符的每个,其中检测第一虚拟地址的击中,对应比较该第一虚拟地址的至少一部分与在该标记符电路中所存储的该标记符的至少一部分;以及通过标记符电路(36),避免针对该第一虚拟地址的该标记符存储器(22)的读取,并输出数据存储器(20)至少一部分的响应第一虚拟地址的第一高速缓存线,而没有对应该第一虚拟地址与在该标记符存储器(22)中存储的一个或多个标记符的标记符比较,以响应该标记符电路(36)中该第一虚拟地址的击中。
在另一个实施例中,处理器包括高速缓存存储器及标记符电路。高速缓存存储器包括数据存储器及标记符存储器,数据存储器被设定为用于存储多条高速缓存线而标记符存储器被设定为用于存储多个标记符。多个标记符中的每一个标记符分别对应多条高速缓存线的一条高速缓存线。标记符电路被设定用于检测在高速缓存存储器中多条高速缓存线的子集中的第一虚拟地址的击中。响应标记符电路中第一虚拟地址的击中,而将标记符电路设定为用于阻止对标记符存储器的读取,其中数据存储器被设定为用于输出对应于第一虚拟地址的第一高速缓存线的至少一部分。
附图说明
下面参照附图进行详细说明,现在简要地说明附图。
图1为处理器的一个实施例一部分的方块图;
图2为图1所示的转换及滤波方块图的一个实施例的方块图;
图3为可通过该处理器的一个实施例而执行流水线的一个实施例的时序图;
图4为微TLB标记符电路的一个实施例的方块图;
图5为对应于图4所示的控制电路的真值表的一个实施例的方块图;
图6为微TLB数据电路的一个实施例的方块图;
图7为微标记符电路的一个实施例的方块图;
图8为图2所示方块的一个实施例的操作流程图;
图9为图1所示的路线预测器的一个实施例的方块图;
图10为说明当高速缓存存储器错过而选择替代路线(replacementway)的一个实施例的流程图;
图11为图1所示的数据高速缓存器数据存储器一部分的一个实施例的方块图;
图12为图1所示的数据高速缓存器数据存储器一部分的第二实施例的方块图;
图13为图1所示的该数据高速缓存器数据存储器一部分的第三实施例的方块图;
图14为产生路线预测的一个实施例的流程图;
图15为图1所示的包含该处理器的计算机系统的一个实施例的方块图;
图16为图1所示的包含该处理器的计算机系统的第二实施例的方块图。
尽管本发明易受不同的修改及变更形式所影响,但是仍以附图为例显示了本发明的具体实施例,并将在下面进行详细说明。但是,应当理解,本发明的附图和详细说明并非用于将本发明限制在所述的特定形式,相反,本发明将涵盖落于权利要求书中所定义的本发明实质和范围内的所有修改、等价物以及替换。
具体实施方式
请参阅图1所示的处理器10的部分实施例的方块图。在此说明的实施例中,处理器10包含地址产生单元12(Address Generation Unit;AGU)、路线预测器14、数据高速缓存器16以及转换/滤波电路18。其中数据高速缓存器16包括数据高速缓存器数据存储器20以及数据高速缓存器标记符存储器22。连接AGU 12与路线预测器14以接收地址操作数。将AGU 12设定为用于产生虚拟地址(Virtual Address;VA),连接并提供VA至路线预测器14、数据高速缓存器16(尤指数据高速缓存器数据存储器20与数据高速缓存器标记符存储器22)、以及转换/滤波电路18。连接路线预测器14以将路线预测提供给数据高速缓存器数据存储器20,并将数据高速缓存器数据存储器20设定成用于传送数据,以响应路线预测及虚拟地址。还连接路线预测器14以提供早期错过指示(early miss indication)。转换/滤波电路18连接至该数据高速缓存器16,且被连接以提供变换检测缓冲器(TLB)错过指示。数据高速缓存器16被设定为用于产生高速缓存错过指示(cache missindication)。
连接AGU 12以接收存储器操作的地址操作数,且针对地址操作数将AGU 12设定为用于产生虚拟地址。例如,AGU 12可包括加法电路,加法电路被设定为将地址操作数加起来以便产生虚拟地址。本发明所使用的存储器操作可包含用于读取存储器位置的加载操作,以及用于写入存储器位置的存储操作。存储器操作可以是用于指定存储器操作数的指令的隐含部分;在一些实施例中,或可以是响应加载或存储的指令(有时也称为移动指令)而执行的明确的操作。地址操作数可以是对应于存储器操作的指令的操作数,该指令被定义用来产生存储器操作数的地址。地址操作数可包含一种或一种以上的:来自由处理器10实施的寄存器的寄存器值(register value)、编入指令中的替代数据、以及在某些实施例中来自由处理器10实施的分段机制(segmentation mechanism)的分段基址(segment base address)。虚拟地址可包括从指令的地址操作数所产生的地址,该指令还未通过页面转换机制(paging translation mechanism)转换为物理地址,该物理地址用于寻址具有处理器10的计算机系统中的存储器。例如,在一个实施例中处理器10可执行x86指令集架构(instruction set architecture)(也称为IA-32)。而此实施例中,线性地址(linear address)可以是虚拟地址的示例。若页面转换没有激活,则虚拟地址可等于该物理地址。
处理器10依页面规模大小(page granularity)执行页面机制(pagingmachenism)将虚拟地址转换为物理地址。换言之,具有用于页面中每一个虚拟地址的一个转换条目用来辨识对应的物理地址。页面可以是不同大小。例如,4KB为一般的大小。在有些模式中,该x86指令集架构还指定2MB页面大小以及4MB页面大小。虚拟地址的最低有效位定义了在该页面内的偏移量(offset),且未被该页面机制转换。如以4KB页面大小为例,虚拟地址的最低有效12位将构成页面偏移量。而未包含页面偏移量的虚拟地址的剩余位,可形成为虚拟地址的页面部分。页面部分可用于页面机制中,以便为虚拟地址选择物理地址转换。由另一观点来看,虚拟地址的页面部分可定义出虚拟页面,虚拟页面通过物理地址转换而转换为物理页面。
处理器10可采用一种或一种以上的技术来减少功耗。例如,转换/滤波电路18可含有相当小的TLB(在本文中称为微TLB),以及标记符电路(本文中称为微标记符电路)。微标记符电路可设定为用于存储高速缓存线的相当少量的标记符,该高速缓存线(i)在虚拟页面内,微TLB为虚拟页面存储转换,(ii)存储在数据高速缓存器16内。
可存取微TLB以响应虚拟地址,如果在该微TLB中检测到击中,则可避免针对转换/滤波电路18中较大的主TLB(或多个TLB)的存取,而存取主TLB所消耗的电力则因此可节省下来。此外,若检测到微TLB击中,则可存取该微标记符。若检测到该微标记符中的击中,则可避免读取用来决定高速缓存存储器是否击中/错过的数据高速缓存器标记符存储器22,因此存取数据高速缓存器标记符存储器22所消耗的电力也可减少。而在微标记符中的击中或在数据高速缓存器标记符存储器中的击中的任一情况下,来自该击中的高速缓存线的数据可由该数据高速缓存器数据存储器20转送。因此,微TLB可当作存取该主TLB的滤波器,微TLB与微标记符可当作存取数据高速缓存器标记符存储器22的滤波器。
可在处理器10中执行的另一种节省功耗的技术将路线预测器14用在其中数据高速缓存器16为集关联式的实施例。路线预测器14则针对存取数据高速缓存器16的存储器操作产生对数据高速缓存器数据存储器20的路线预测。响应路线预测及虚拟地址,数据高速缓存器数据存储器20可将数据传送(在图1的数据传送)至各种可能使用该数据的处理器电路(未显示在图1中)。由数据高速缓存器数据存储器20读取且传送的数据可包括高速缓存线或一部分高速缓存线。由于响应路线预测而传送数据,所以在处理器10中转换电路及高速缓存标记符电路不再是关键要径的一部分。在有些实施例中,即使在电路内花费一些潜伏时间(latency迟滞时间),可利用具有较低功耗的电路实施该转换电路及高速缓存标记符电路。可允许例如微TLB及微标记符的滤波结构,并可以将转换电路及高速缓存标记符比较的潜伏时间延长(并可通过减少对较大的TLB结构以及数据高速缓存器标记符存储器22的存取来进一步地减少电力的总消耗量)。此外,通过允许降低数据高速缓存器数据存储器20中的功耗,进而可使用路线预测器14减少处理器10的功耗。数据高速缓存器数据存储器20的各种设计将参阅图9并在下文中详细说明。
可通过利用转换/滤波电路18的微TLB/微标记符,和/或与标记符或来自该数据高速缓存器标记符存储器22的标记符进行的标记符比较,而使路线预测生效。若该路线预测正确,则响应该路线预测通过以数据高速缓存器数据存储器20转送的数据继续进行操作。另一方面,若该路线预测并不正确,则存储器操作程序可能重头来过。或者在有些实施例中,数据高速缓存器16可以控制取代,如果路线预测不正确,则数据高速缓存器16中地址错过。在有些实施例中,可在路线预测的确认期间内判别正确的路线预测,并且可在重试期间内存取正确的路。而在另一个实施例中,在重试期间可搜寻其它未预测的路线是否击中(例如,可执行在数据高速缓存器16中传统的集关联式查询)。而此重试可由各种方式来完成。例如在有些实施例中,缓冲器可存储已发出的执行指令等(例如,程序机或保留站)。该存储器操作可由缓冲器重新发出。在另一个实施例中,可以重新撷取(例如,可从指令高速缓存存储器或存储器)对应于存储器操作的指令以及后继的指令。
在有些实施例中,路线预测14的使用可减少在该数据高速缓存器标记符存储器22中的功耗。为了确认路线预测,只需存取并比较在已预测方向中的标记符。一些实施例仅在数据高速缓存器标记符存储器22中存取已预测方向(若该微标记符中检测到错过,则在数据高速缓存器标记符存储器中执行存取,以检测高速缓存错过是否发生)。若在已预测方向中检测到错过,则将如上文所述可重试存储器操作。在此实施例中,数据高速缓存器标记符存储器22可以收到路线预测,如图1中的虚线箭头所显示。
当无法针对指定的存储器操作产生路线预测,则路线预测器14也可提供早期错过指示。路线预测器可含有存储器,用于存储在高速缓存存储器的每一方向中存储的地址的指示,且可将该指示与存储器操作的虚拟地址的对应的指示进行比较,以便产生以存储器操作的路线预测。若对应的指示并不与路线预测器中的任一指示相符,则将不产生路线预测(即并且可以检测到错过)。早期错过表示可用来暗示L2高速缓存存储器(以数据高速缓存器16当作L1高速缓存存储器)数据高速缓存器16中发生错过,因而允许L2高速缓存存储器及时提早开始存取,而不是等待来自由转换/滤波电路18的高速缓存存储器错过指示。
数据高速缓存器16可指示高速缓存错过,转换/滤波电路18可指示TLB错过,以供给在处理器10中其它回路做校正动作,(即表格漫游(table walking)以找出待存入该TLB中的转换、高速缓存填充(cachefill),以将错过的高速缓存线填入数据高速缓存器16等等)。用于表格搜寻以及存取存储器以撷取错过的高速缓存线的电路并未显示在图1中。
在说明的实施例中,数据高速缓存器16可设定为集关联式。而其它实施例可为全关联式,以及路线预测器14可用于预测在数据高速缓存器16中任一条目(entry)的击中。若实施例并未实行路线预测器14,则可能有其它的配置(例如直接映射式)。而本发明所使用的高速缓存线可以是一些连续的字节,字节是高速缓存存储器(例如数据高速缓存器或指令高速缓存存储器)中配置/解除配置的单位。例如,虽然任何大小的高速缓存线均可执行,但是一条高速缓存线可为32个连续字节或64个连续的字节。数据高速缓存器数据存储器20可包括多个条目,每一条目被设定为用于存储一高速缓存线。以集关联式实施例,条目可安排成W条高速缓存线的集合。数据高速缓存器标记符存储器22还包括多个条目,每一条目被设定为用于存储一标记符,这些标记符对应于数据高速缓存器数据存储器20中的条目。数据高速缓存器标记符存储器22的这些条目可安排成W集合,以对应于数据高速缓存器数据存储器20的安排。
在有些实施例中,数据高速缓存器16可被物理地标记(即,在数据高速缓存器标记符存储器22中的这些标记符可为物理地址)。一般而言,若对应于特定的物理地址的数据存储在数据高速缓存器16内,则在数据高速缓存器16可检测到击中。若对应特定物理地址的数据没有存放在数据高速缓存器16内,则将检测到错过。但是,在一些情况中即使数据高速缓存器16被物理地标记,也可较为方便地讨论数据高速缓存器16击中的虚拟地址。若对应的物理地址(虚拟地址转换成的)为击中,则虚拟地址在数据高速缓存器16中可为击中。在有些情况下,虚拟地址在没有实际使用对应的物理地址的情况下,仍可检测为击中(例如在微标记符中,此将在下文详细说明)。
一般而言,依据所需的设计该处理器10可包含任何其它电路。在各种不同的实施例中,处理器10可为超标量或标量,这些处理器可依照顺序的指令执行或不依照顺序的指令执行等,且可包含电路以执行上述的特征。而在有些实施例中,例如将设置一个以上的AGU12并可并行地产生虚拟地址。针对此等实施例,路线预测器14、数据高速缓存器16以及转换/滤波电路18可包含电路,用于并行处理多个虚拟地址,或者对其它的实施例也可包含电路来处理该多个虚拟地址。
请注意虽然说明了一起使用路线预测器14及转换/滤波电路18的微TLB/微标记符以减少功耗,但是在不执行微TLB/微标记符而实施路线预测器14的实施例也是可以考虑采用的。此外,在没有路线预测器14的情况下实施微TLB/微标记符的实施例等是可以考虑采用的(例如,通过延后来自数据高速缓存器16的数据转送直到决定好路的选择为止)。例如,在有些实施例中,当在微标记符中检测到击中时,该微标记符可以输出路的选择。
请注意,虽已说明微TLB/微标记符电路及路线预测器14与数据高速缓存器一起使用,但是需要时,微TLB、微标记符和/或路线预测器14的任一个都可与处理器中的指令高速缓存存储器一起使用。
请参阅图2所示的转换/滤波电路18的一个实施例的方块图。在所示的实施例中,转换/滤波电路18包含微TLB30(含有微TLB标记符电路32以及微TLB数据电路34)、微标记符电路36、主TLB38(含有主TLB标记符电路40以及主TLB数据电路42)、多任务器44以及反向器46与48。在该图2中还显示了部分的数据高速缓存器16,其含有数据高速缓存器标记符存储器22、高速缓存击中/错过电路50以及比较器52。连接微TLB30(尤指微TLB标记符电路32)、微标记符电路36、数据高速缓存器标记符存储器22以及主TLB38(尤指主TLB标记符电路40)用于接收来自AGU12的虚拟地址。微TLB标记符电路32被设定为将击中信号输出至微TLB数据电路34、微标记符电路36、多任务器44及反向器46(其中反向器46进一步连接至主TLB标记符电路40)。微TLB标记符电路32进一步被设定为将一条目指示输出至微TLB数据电路34及微标记符电路36。微TLB数据电路34被设定为将物理地址(PA)输出至多任务器44,如同主TLB数据电路42的配置。多任务器44的输出被连接至比较器52。主TLB标记符电路40连接至主TLB数据电路42,以便提供TLB错过表示。微标记符电路36被设定为将击中信号输出至反向器48以及高速缓存击中/错过电路50,其中反向器48进一步连接至数据高速缓存器标记符存储器22。而高速缓存存储器击中/错过电路50进一步连接至比较器42,以便提供高速缓存存储器错过指示。
微TLB30接收来自AGU12的虚拟地址,并将虚拟地址的页面部分与存储在微TLB30中对应至转换的虚拟地址的页面部分作比较。详而言之,微TLB标记符电路32可包括用于存储虚拟地址的这些页面部分的多个条目。对应的物理地址及其它来自页面表并提供转换的信息可存储在微TLB数据电路34。微TLB标记符电路32执行比较,并输出击中信号以便指示出在微TLB中虚拟地址是否击中;若该指示为击中,则条目指示将指示出哪一个条目为击中。微TLB数据电路34可能会收到该条目指示并可将对应的物理地址输出至多任务器44。击中信号可使多任务器44选择来自微TLB30的物理地址当作输出,并输出至比较器52。虽然在本文中详细说明了全关联式实施例,但其它实施例可能采用其它的配置。在各种不同的实施例中,微TLB30可包括例如全关联式配置、集关联式配置或者直接映射式配置。
此外,来自微TLB30的击中信号可作为微标记符电路36的使能(enable)。微标记符电路36存储在虚拟页面中多条高速缓存线的标记符,而微TLB30则存储虚拟页面的转换内。因此,在微TLB中若有错过,微标记符电路36也错过。若在微TLB30中若有击中,则微标记符电路30将击中。此外,微标记符电路36将接收条目指示。微标记符电路36决定虚拟地址是否在微标记符电路36中有击中,并产生击中信号。在微标记符电路36中若有击中,则虚拟地址在数据高速缓存器16中击中,且避免对数据高速缓存器标记符存储器22中的标记符进行存取。因此,来自微标记符电路36的击中信号可作为数据高速缓存器标记符存储器22的禁止(disable),以阻止数据高速缓存器标记符存储器22为响应虚拟地址而读取任何标记符。反向器48因而可反转来自微标记符电路36的击中信号并作为使能输出至数据高速缓存器标记符存储器22。高速缓存击中/错过电路50还收到来自微标记符电路36的击中信号,且若击中信号指示出在微标记符电路36中为击中,则不表示虚拟地址为高速缓存错过。在此情况下,由比较器52发出的击中/错过可以不予理会。
假设微标记符电路36中有错过(或者由于在微TLB电路30中有错过,则微标记符电路36并未使能),数据高速缓存器标记符存储器22则被使能并将一标记符或多个标记符输出至比较器52。而在实施路线预测器14的一些实施例中,只可以输出来自预测路的标记符。对此实施例而言,数据高速缓存器标记符存储器22可连接成接收该路线预测(WP)。而其它实施例则可输出在索引集合内用于比较的每一标记符。在此种实施例中,高速缓存错过指示可以指示错过或在预测的路内错过,但在未预测的路内击中,若在未预测的路内出现击中,则不会发生高速缓存填充。而在有些实施例中,当高速缓存错过出现时,可控制替代路的选择,因此不会发生在未预测的路内击中的情况。有关于此替代的范例将参阅图9及图10并在下文中讨论。比较器52将比较的结果提供给高速缓存击中/错过电路50,以产生高速缓存错过指示。若在数据高速缓存器标记符存储器22中有击中,且在微TLB30中曾有击中,则可从数据高速缓存器标记符存储器22加载标记符于微标记符电路36。
由于微标记符电路36存储同样位于数据高速缓存器标记符存储器22内的标记符,因此可维持微标记符电路36与数据高速缓存器标记符存储器22一致。由于经由错过高速缓存线的高速缓存填充的替代,在数据高速缓存器16的高速缓存线可能无效,或者可能由其它处理器或代理器的存取而产生的侦伺击中(snoop hit)而无效,其它的处理器或代理器在与处理器10连接的互连上。在一个实施例中,微标记符电路36的全部内容,响应数据高速缓存器标记符存储器22中的更新,可以是无效的。在替代实施例中,仅将在微标记符电路36中与当发生更新时的索引有相同的高速缓存索引的条目无效。而在另一替代实施例中,将仅有(i)与发生更新时的索引有相同的高速缓存索引;(ii)与数据高速缓存器16中无效的高速缓存线有相同的虚拟地址(在对应微TLB条目中)的微标记符电路36中的条目无效。
微标记符电路36存储虚拟页面内的标记符,标记符通过微TLB 30中的条目而转换。因此,当更新微TLB 30时微标记符也可更新。在一个实施例中,若更新微TLB 30则微标记符电路36的整体内容可能被无效化。在替代实施例中,可将微标记符电路36中对应于被改变的微TLB的条目的标记符选择性无效化。
微TLB 30还可当作主TLB 38的滤波器。换言之,若在微TLB 30中有击中则避免对主TLB 38存取。因此,通过微TLB 30输出的击中信号可能由反向器46反转并输入至主TLB标记符电路40上的使能输入。若使能输入并未确立,则主TLB标记符电路40可阻止对主TLB标记符进行存取。
若在微TLB 30中有错过,则主TLB标记符电路40可决定主TLB38中虚拟地址是否为击中。若有击中,则可存取主TLB数据电路42并将对应的物理地址输出至多任务器44。此外,可将来自主TLB38的转换加载至微TLB 30。由于微TLB 30中有错过,则多任务器44选择由主TLB数据电路42所输出的物理地址并输出至比较器52。若将主TLB 38使能并在主TLB 38中检测到有错过,则主TLB 38产生TLB错过的指示,以引起页面表的表格搜寻(table walk)以找到所需转换。在表格搜寻期间,在有些实施例中,处理器10可能暂停运作以便减少功耗。在一个实施例中,当主TLB 38加载时微TLB 30并不会加载。在可加载该微TLB 30时,可以检测到微TLB 30中页面的后续错过及主TLB 38的击中。在替代实施例中,当加载主TLB 38时,可同时加载微TLB 30。
由于微TLB 30存储转换,而转换也存储在主TLB 38中,所以可维持微TLB 30与主TLB 38一致。当主TLB 38中一条目被覆写(overwritten)时(为响应主TLB 38的错过及成功的表格搜寻),将微TLB 30中的对应的条目(若有任一)无效化。在一个实施例中,当主TLB 38被加载一新条目时,微TLB 30的整体内容可能被无效化。
在一个实施例中,主TLB 38可包括两种TLB:一种用于存储4KB页面大小的转换,另一种用于存储2MB或4MB页面大小的转换。4KB的TLB可包括任何一种配置,但在一个实施方式中可以是4路512条目的TLB。2MB/4MB TLB可包括任何一种配置,但在一个示例中可有8条目,全关联式TLB。在施行x86指令集架构的一个实施例中,CR3配置缓存器存储存储器中页面表的基底地址。主TLB 38的条目可标记符有CR3地址,转换是从该地址读取,因此主TLB 38不须被无效化以响应CR3地址的变化。在有些实施例中,微TLB30中的条目可作相同的标记符或不标记符,并且被无效化以响应CR3地址的变化。
请注意虽已描述通过微TLB 30及微标记符电路36提供击中信号,但是通常可提供击中指示,击中指示包括任何数量的信号,用于指示是否检测到击中。还有,虽然微TLB 30显示为输出击中指示以及识别击中条目的条目指示时,可提供任何击中及条目的指示。例如,在一个实施例中,击中及条目指示可合并为对应于微TLB 30中的条目的单一热编码法(one-hot encoding)。单一热编码法可(以任一确立的位)指示有击中,且可经由哪个位是确立的而指示出该击中条目。
请注意,在有些实施例中转换/滤波电路18可以操作在多个流水线阶段间。流水线存储装置(例如正反器、缓存器等)将不在图2中说明。可以使用任何流水线阶段的分割。例如图3说明流水线的一个示范例,将通过处理器10的一个实施例施行。图3中的垂直虚线分界出时钟周期。该时钟周期标明为地址产生(address generation;AG)、数据高速缓存器1(data cache 1;DC1)、数据高速缓存器2(data cache 2;DC2)以及数据高速缓存器3(data cache 3;DC3)。
在该AG阶段期间,该AGU 12从地址操作产生虚拟地址(参考数字60)。此外,在此实施例中路线预测器14产生路线预测(参考数字62)。路线预测器14可收到地址操作数,并可计算地址索引的总和(将在下文详细说明),以寻址存储路线预测值的存储器。在替代实施例中,来自AGU 12的虚拟地址可用来索引路线预测存储器。而在其它实施例中,路线预测器14可在DC1阶段中运作。
在DC1阶段期间,将存取微TLB标记符电路32并决定是否在微TLB 30中有击中/错过(参考数字64)。若微TLB 30中有击中,在DC2阶段存取微标记符电路36(参考数字66)以及在DC3阶段存取微TLB数据电路34(参考数字68)。若微标记符电路36中有击中,可避免存取数据高速缓存器标记符,并经由微标记符电路36中的击中而检测到在数据高速缓存器16中的击中。若微标记符电路36中有错过,则在DC3阶段(参考数字70)存取数据高速缓存器标记符存储器22且与微TLB数据电路34的输出作比较。
若微TLB 30中有错过,则在DC2阶段期间存取主TLB标记符电路40(参考数字72),以及若主TLB标记符电路40中有击中,则在DC3阶段存取主TLB数据电路42(参考数字74)。而在DC3阶段中,TLB数据电路42的输出将与数据高速缓存器标记符存储器22的输出作比较。
此外在DC1阶段期间,存取数据高速缓存器数据存储器20,并输出来自已预测线路的数据(参考数字76)。在DC2阶段传送数据(参考数字78)。
请参阅图4所示的微TLB标记符电路32的一个实施例的方块图。在图4的一个实施例中,微TLB标记符电路32包含具有条目80A及80B的条目组,条目80A及80B分别连接至对应的比较电路82A及82B,而这些条目80A及80B以及这些比较电路82A及82B与控制电路84连接。这些比较电路80A及80B连接为用于接收来自该AGU 12的虚拟地址。控制电路84包含最近最少使用(Least Recently Used;LRU)的存储器86,并且控制电路84被设定为产生微TLB标记符电路32的击中信号及条目指示输出。
微TLB标记符电路32可含有任何数量的条目80A及80B。例如,在一个实施例中可实施4个条目。其它的实施例可实施更多或更少条目。每一条目80A及80B可包含有效位(V);用于存储虚拟地址的页面部分的虚拟地址栏(VA[N-1:12]),此虚拟地址栏由条目(以及在微TLB数据电路34的对应条目,一起形成微TLB 30的条目)转换而来;以及2M位用于指示转换是否是来自于2MB页面转换。因此,在本实施例中使用N-位的虚拟地址,其中N为整数。例如,在有些实施例中N可以是整数32。在其它的实施例中,N可以是整数48。在其它实施例中N可以是整数32至64间的任一数字(包括32及64)。这些条目一般可包括任何一种型式的存储器。例如,可在实施例中使用缓存器、正反器、或其它类型的时控存储装置等。
比较电路82A及82B至少接收来自AGU 12的虚拟地址的页面部分,并将虚拟地址的页面部分与存储在对应的条目80A及80B中的页面部分作比较。实施例实施最小的4KB页面大小(因而在虚拟地址的页面部分中并不含有位11:0)也实施与x86指令集架构兼容的2MB页面大小。可实施其它的页面大小。在该实施例中,比较电路82A及82B产生2个匹配信号(match signal):匹配_低和匹配_高。如果在条目内设立(set)有效位以及包含在2M页面范围内的虚拟地址的页面部分匹配(换言之,VA[N-1:21])时,则可确立匹配_高。若剩余的虚拟地址匹配(换言之,VA[20:12])时,即可判定匹配_低。
控址电路84连接为用于接收这些比较电路82A及82B的输出,且此电路84被设定为产生击中信号以及为响应该信号的条目指示。若在一条目中指示出击中,则控制电路84可确立击中信号并提出条目指示。若未指示出一击中,则控制电路84可能不确立击中信号。
图5为可通过控制电路84实施的真值表90的一个实施例,用于判别虚拟地址是否击中一条目。在真值表90上所示的是来自条目的2M位(在此实施例中是设定用来代表2M转换)、match_upper与match_lower信号(在此表格90中,数字1代表确立而数字0代表未确立)以及结果字段用于说明2M位、match_upper信号、match_lower信号中的每一组合代表着什么。
若match_upper信号无确立,则控制电路84检测到微TLB中虚拟地址为错过。微TLB的错过是与2M位的设定以及match_lower信号状态不相关。因此,微标记符电路36也错过。
当2M位设定为1时,对应的转换则是针对2MB页面。因此,VA[20:12]通常并不包含在比较程序内。然而,为给微标记符电路36提供位,可界定为由处理器10在2MB页面中存取的最后4KB页面。若match_upper信号为确立,且该2M位设定为1,则该微TLB击中。然而,若match_lower信号为不确立,则微标记符电路36对此页面错过。若match_lower信号为确立,则可能击中微标记符电路36且实施微标记符查询。
当2M位清除为0(clear)时,对应的转换则是针对4KB页面。因此,match_upper及match_lower均为确立以代表微TLB击中(且有微标记符击中的可能,因而实施微标记符查询)。若match_lower为不确立,则检测到微TLB及微标记符错过。
对实施图5的实施例的控制电路84而言,提供给微标记符电路36的击中指示与提供给主TLB 38的可能有所不同。即使微标记符电路36错过,只要是转换为击中(在表格90中陈述微TLB击中),则提供至主TLB 38的击中指示可代表微TLB 30中的击中。当指示微标记符查询(在表格90中陈述微标记符查询的条目)时,传送至微标记符电路36的击中指示可以指示击中。
图4及图5的实施例支持两种不同页面大小。其它的实施例可支持单一页面大小,因而可提供来自每一比较电路82A及82B的单一匹配信号,以及2M位可由条目80A及80B去除。其它实施例依据支持的页面大小进一步分割出虚拟地址的页面部分,以支持两种以上的页面大小。请注意,x86指令集架构也支持4MB页面大小。图4及图5的实施例利用微TLB 30中的两个2MB条目,可支持4MB页面大小。其它实施例可直接支持4MB页面大小(例如,在每一条目中使用与该2M位相似的4MB位)。
显然上述的实施例利用2MB页面的条目支持2MB页面大小,且利用VA[20:12]以识别最近在2MB页面内存取的4KB页面,其它实施例可允许特定的2MB页面的多个微TLB条目。每一条目对于已存取的不同4KB页面可在VA[20:12]中有不同的编码方式。另一替代实施例中,对于2MB页面,VA[20:12]可包含在微标记符电路36中,而在2MB页面上的击中可用来存取微标记符,以便检测2MB页面内的高速缓存线的击中。
微TLB 30中错过以及主TLB 38中击中的情况下,控制电路84可选择来自主TLB 38的击中转换用来替代一条目80A或80B。在图解实施例中,控制电路84可维持条目80A及80B的LRU,并可选择最近最少使用的条目来替换。可执行任何其它替代算法(例如,伪-LRU、随机等等)。条目80A及80B可连接成接收虚拟地址(VA[N-1:12])的输入页面部分,以及将在控制电路84的控制的下存在条目中的一个内的2M位(输入地址以及2M位并未显示在图4中)。在各种不同的实施例中,输入的虚拟地址及2M位的来源可能为主TLB 38或者为表格搜寻电路。
图6为微TLB数据电路34的一个实施例的方块图。在图6的实施例中,微TLB数据电路34包含具有条目92A及92B的一组条目。92A及92B的每一条目分别对应于图4中的80A及80B的每一条目。此外,显示了多任务器94,连接至92A及92B并接收来自微TLB标记符电路32的条目指示。多任务器94可选择由条目指示所指定的条目内容当输出。在一个执行中,若没有条目被指定(即,错过),则多任务器94不选取条目92A及92B(可因而减少功耗)。与图4中的条目80A及80B类似,条目92A及92B可在任何类型的存储器中实施(例如,在一个实施例中的各种不同的时控存储装置)。
在图解实施例中,92A及92B的每一条目的内容包含坏位(Dirtybit;D)、使用者/监督者(U/S)位、读取/写入(R/W)位、存储器类型字段(MemType[4:0])以及物理地址字段(PA[M-1:12])。在一个实施例中这些位可与在x86指令集架构中定义的页面机制兼容。坏位可指示出物理页面是否已被修改(例如,处理器是否对这些页面执行了存储指令)。使用者/监督者位可指示使用者(无特权)页面对监督者(有特权)页面。读取/写入位可指示页面是否为只读或读取/写入。存储器类型字段可辨识页面使用的存储器类型。
在图解的实施例中,可支持M位物理地址,其中M为任一整数。尤指M可能与N的整数不同。在一个实施中,M可为整数32及64间的任一整数(包含32及64)。在另一个实施中,M可为整数32及52间的任一整数(包含32及52)。例如,M在一特定的实施中为整数40。
请参阅图7所示的微标记符电路36的一个实施例的方块图。在所示的实施例中,微标记符电路36中的多个条目被分割成条目群组。每一条目群组分派给微TLB的不同条目。例如在所示的实施例中,群组100A至100D对应于在微TLB30的4个条目。其它实施例可包含任意数量的群组,以对应于任一数量的条目。群组100A至100D连接至控制电路102,而电路102连接成接收使能输入(En)(来自微TLB标记符电路32的击中信号),来自微TLB标记符电路32的条目指示以及来自AGU12的虚拟地址。控制电路102被设定为产生通过微标记符电路36而输出的击中指示。
选择的群组100A至100D中的条目被分派给微TLB标记符电路32条目中的一个,且辨识出条目所指示的虚拟页面中的高速缓存线,而高速缓存线也存储在数据高速缓存器16中。在一群组中可包含任一数量的条目。例如在一个实施例中,每一群组中可包含4个条目。由于当检测微TLB为击中而存取微标记符电路时,已知路VA[N-1:12]与来自该AGU12的虚拟地址以及所选择的群组100A至100D代表的高速缓存线的虚拟地址相符合。因此,为完成虚拟标记符的比较,在选择的群组100A至100D中的条目可存储虚拟地址的页面偏置值部分(未包含形成高速缓存线偏置值的地址位)。在所示的实施例中,可假设64字节的高速缓存线大小,则由此未包含地址位5:0。在其它实施例中可选择其它高速缓存线大小。在此实施例中,为了完成该虚拟标记符比较,剩余的虚拟地址位为VA[11:6],以及如图7显示每一微标记符条目存储该VA[11:6]。
若使能输入为确立,控制电路102将来自每一条目的地址位VA[11:6]与来自该AGU 12的虚拟地址的对应的位作比较。因此,该控制电路102可连接成接收来自AGU 12的虚拟地址的至少页面偏置值部分(未包含该高速缓存线偏置位)。若在该选择的群组100A至100D中的一条目内检测到相符合以及设定在该条目内的有效位为1,则该虚拟地址在该微标记符电路36中为击中,且该数据高速缓存器16中有击中。并不须存取该数据高速缓存器标记符存储器22来决定为击中或错过。另一方面,若在该选择的群组100A至100D中的一条目内并未检测到相符合,则可存取该数据高速缓存器标记符存储器22以决定该地址在该数据高速缓存器16中是否击中或错过。该控制电路102依据该比较的结果产生击中信号。
请注意,若该数据高速缓存器16被物理地标记(即该数据高速缓存器标记符存储器22存储物理标记符而不是虚拟标记符),以及针对数据高速缓存器16的索引中至少使用一转换地址位(例如,在4KB页面的实施例至少使用位12),则对于相同的物理地址的多个虚拟地址的别名可能影响微标记符电路36的操作(由于该索引可能与在比较中使用的虚拟地址位并不相同)。在此一个实施例中,该数据高速缓存器16可被物理地标记,但该处理器10可确定在任何时间内最多一个与物理地址化名成相同的物理地址的虚拟地址存在该数据高速缓存器16中。换言之,若第二别名加载该数据高速缓存器16而该第一别名仍存在于该高速缓存存储器,则在该数据高速缓存器16的该第一别名被无效。
请注意,在高速缓存索引包含至少一个转换地址位的实施例中,微标记符电路36可存储包含在该高速缓存索引中的每一地址位,而该转换地址位可为物理位。若全条目的无效并不是所期待的,则存储此位可允许将微标记符电路36条目有目标地无效化(例如,为响应该数据高速缓存器16内容或该微TLB30内容的改变)。
在该微TLB30中的击中、该微标记符电路36中的错过以及该数据高速缓存器标记符存储器22中的击中的情况下,而对应的群组100A至100D的条目中的一个可由该击中标记符替代。该控制电路102可在每一群组100A至100D内维持LRU信息(在每一条目中显示为LRU字段),用来在每一群组100A至100D中选择替换用的该LRU条目。其它实施例采用其它置换表(例如,随机、伪-LRU等等)。在有些实施例中(未在图7中显示),该群组100A至100D可连接成接收来自数据高速缓存器16的VA[11:6],以便存储该微标记符电路36中的错过索引。
请注意,虽然在图示的实施例中当微标记符电路36的条目静态地分派给微TLB条目,而在其它实施例中依照需要该条目可动态地分派给每一微TLB条目。在此实施例中,微TLB条目字段可包含在每一微标记符条目中,用于存储该微标记符条目现今被分派的该微TLB条目的指示。存取时,该控制电路102可将该条目指示与由微TLB 30所接收的指示做比较,并且当该条目指示及该VA[11:6]字段符合来自AGU12的虚拟地址的对应的部分,可检测击中。
请注意,当在此实施例中当该微标记符电路36是与该微TLB一起使用时,其它实施例可在没有微TLB的情况下实施该微标记符电路36。此种实施例可在微标记符电路36的每一条目中的实施全部标记符,且可通过比较全部标记符,检测高速缓存存储器的击中以及防止该数据高速缓存器标记符存储器22中读取。不论是在该微标记符电路36或该数据高速缓存器标记符存储器22中检测到击中,该数据将可由该数据高速缓存器数据存储器20转送。
在一个替代实施例中,该微标记符电路36可针对每一个微TLB条目包括单一条目。该微标记符条目可在该页面内针对每一高速缓存线存储一位,该页面由该微TLB条目而辨识,以便指示出该高速缓存线在该数据高速缓存器16中是否为击中。因此,例如若高速缓存线为64字节及使用4KB页面,该微标记符条目可包含64位。若对应至特定高速缓存线的位设定为1(set)则指示击中;若该位清除为0(clear)则可指示错过(或可使用相反的编码)。控制电路可使用该未包含该高速缓存线偏置部分的VA页面部分(例如,在64字节高速缓存线实施例中的位11:6),以便选择适合的位来决定高速缓存存储器击中/错过。在此实施例中,微标记符电路可并入微TLB电路。“标记符电路”或“微标记符电路”的用语意在其中该微标记符电路并入该微TLB的实施例。
请参阅图8,为图2所示的方块的一个实施例方块的示例操作流程图,以响应来自AGU 12的虚拟地址。虽然图8的方块为方便了解而以特定顺序来排列,任何顺序都可行的。依照需求,这些方块经由组合逻辑电路可并行执行,或可以流水线方式在两个或以上的时钟周期中执行。
为响应该虚拟地址而存取微TLB标记符电路32(方块110)。若检测到微TLB击中(决策方块112,“是”的接脚),则存取微标记符电路36(方块114)。若该微标记符中检测到击中(决策方块116,“是”的接脚),则高速缓存击中/错过电路50可指示出高速缓存击中(例如,高速缓存错过表示可能并不指示出错过),且并不存取数据高速缓存器标记符存储器22以响应虚拟地址(方块118)。若该微标记符中并未检测到击中(决策方块116,“否”的接脚),则可存取微TLB数据电路34(方块120)。在有些实施例中,为响应微TLB标记符击中可存取该微TLB数据电路34,与该微标记符是否为击中不相关。也可存取该数据高速缓存器标记符存储器22(方块122)。若来自该数据高速缓存器标记符存储器22的标记符及来自该微TLB数据电路34的物理地址间检测到击中(决策方块124,“是”的接脚),该高速缓存击中/错过电路50可指示高速缓存击中(方块126)。此外,由于在此情况下检测到微标记符错过,可加载击中标记符至微标记符。若在来自该数据高速缓存器标记符存储器22的标记符以及来自该微TLB数据电路34的物理地址间检测错过(决策方块124,“否”的接脚),则该高速缓存击中/错过电路50可指示高速缓存错过(方块128),且可将该错过的高速缓存线加载该数据高速缓存器16(以及也可选择性的将该微标记符电路36以错过的高速缓存线的标记符更新)。
若检测到微TLB错过(决策方块112,“否”的接脚),则可存取该主TLB标记符电路40(方块130)。若该主TLB中检测到击中(决策方块132,“是”的接脚),则由该主TLB(方块134)加载该微TLB,且加载对应于该微TLB条目的该微标记符条目可无效化。此外,方块122,124,126及128将重复执行,与来自该主TLB的物理地址作标记符比较。然而,在方块126的步骤中,假使需要,该微标记符可选择不作加载。另一方面来说,若该主TLB中检测到错过(决策方块132,“否”的接脚),该主TLB38可产生TLB错过,以及可加载具有错过的转换至主TLB(或者若没有找到转换则可能出现例外)(方块136)。在主TLB错过的状况中,也可选择性加载该微TLB且可更新该微标记符以使对应于加载的该微TLB条目的微标记符条目无效化。
请注意,虽然前述的说明提及比较来自该微TLB 30或该主TLB 38的物理地址与该来自该数据高速缓存器标记符存储器22的标记符,这些TLB一般可输出该物理地址的页面部分。而作为比较的高速缓存标记符剩余的部分可通过将该物理地址的页面部分与该虚拟地址的页面偏置部分而序连(concatenate)形成。
请参阅图9所示的路线预测器14的一个实施例的方块图。在图解的实施例中,该路线预测器14包含总和地址(SA)译码器140连接成接收待进行路线预测的对应于虚拟地址的一个或一个以上的地址操作数,且进一步连接至存储器142。该总和地址译码器140可实施总和地址编入索引并将在下文中详细说明。该存储器142可为W路集关联式(如同数据高速缓存器16),因此可有多个条目排列成路0至路W-1。存储器142中每一条目存储具有P位(WP[P-1:0])的路线预测值。含有比较器146A及146B的多个比较器连接至该存储器142。该路线预测器14的每一方向将包含比较器146A及146B。该比较器146A及146B连接成接收来自AGU 12的部分虚拟地址(VA)或一选择性的路线预测产生电路148的输出(或者另一种选择如部分地址操作数)。该比较器146A及146B的输出可形成路线预测器14的路线预测输出。此外,若没有一个比较器146A及146B有检测到匹配,路线预测器14可输出早期错过信号(如图9中所示用来接收该比较器146A及146B的输出的或非门150)。
该译码器140被设定为将地址操作数译码(在此实施例中利用总和地址来译码)以便选择一存储器142的集合144,且该存储器142被设定成将该集合144内容输出至该比较器146A及146B。每一个比较器146A及146B将来自存储器142的个别方向的路线预测值与对应于输入虚拟地址的路线预测值作比较。若检测到匹配,则该路线预测器14将预测该对应的方向在该数据高速缓存器16中为击中。在所示的实施例中,该路线预测将包括这些方向的单一热编码(one-hotencoding),以一个确立的位为预测方向。若没有一个路线预测位符合该输的路线预测位,则不会产生任何路线预测(且将确立为早期错过信号)。其它实施例可将以其它方式编码该路线预测,该路线预测器14可包含电路,该电路连接成接收比较器146A及146B的输出及被设定用于产生路线预测编码。
该路线预测值可依所需由任何方式产生,可包含任何数量的位(例如,P可为大于1的整数)。依据在数据高速缓存器16中对应的高速缓存线将产生存储在该路线预测器14中的路线预测值。例如在一个实施例中,该路线预测值可为虚拟地址的一部分标记符,而该标记符是对应于在数据高速缓存器16中的路以及存在同一索引内的高速缓存线。换言之,该路线预测值包含所选择的虚拟地址位的序连(未包含为高速缓存标记符的一部分的至少一地址位)。在此实施例中,将期望选择变化最为频繁的虚拟地址位(或如由另一观点来看,将显示连续存取间最为随机性的存取)。例如,可选择仍是高速缓存标记符的一部分的最低有效地址位(非为高速缓存线偏置的一部分)。此种实施例将不使用路线预测产生电路148,且来自该输入虚拟地址的所选择的虚拟地址位可连接当作输入至该比较器146A及146B。在其它的实施例中,可产生一个或一个以上的路线预测值位以当作两个或两个以上的虚拟地址位的逻辑组合。在此实施例中,例如变化频繁的虚拟地址位可与变化较少的虚拟地址字节合。在一个实施例中,该逻辑组合可包括异或(exclusive OR)。此实施例中借着该路线预测产生电路148可对虚拟地址位执行该逻辑组合,而该组合的输出可连接至该比较器146A及146B。在另一个实施例中,在加入以产生另一虚拟地址前可在地址操作数中选取位。该位可利用路线预测产生电路148并以符合逻辑的方式组合,或者可如同上述的虚拟地址的示例般序连在一起。
为了避免两个或两个以上的条目含有相同的路线预测值(以及因此在路线预测器14中有一个以上的方向相符合的情况出现),可控制在数据高速缓存器16中的高速缓存线的替代以确定在该路线预测器14的一特定集合中的路线预测值为唯一的。此种步骤程序显示在图10的流程图中。希望上述的替代策略的路线预测值含有足够的位,而不会经常造成为了维持该路线预测值的唯一性而过早替代高速缓存线。例如,若利用序连的虚拟地址位来产生路线预测值,则可选取约7位的路线预测值。
在有些实施例中,由于与数据高速缓存器标记符存储器22作比较路线预测器14相当地小,该路线预测器14可包含在该AGU12的数据路径中(可缩短由虚拟地址移至所需的电路的距离)。
如上述,该译码器140可使用总和地址译码以便将地址操作数译码,并选取一对应于该虚拟地址的集合144。其它实施例可使用传统的译码器,该译码器连接成接收虚拟地址。因此,一般而言,该译码器140可接收地址指示以便存取高速缓存存储器。在有些实施例中,该指示可包含用来形成虚拟地址的地址操作数,或在其它实施例中,包含虚拟地址本身。
总和地址译码接收用于产生地址的地址操作数,并当正确的选择与若将地址本身译码所选择的存储器集合相同的存储器集合。一般而言,总和地址译码依赖基本原理:针对A+B=K的测验,若以常数K评估,要比将A加上B所得的总合与K作比较要来的快。以译码来说,该常数K为A+B的值,会选取一特定的集合。该电路假设常数K的该集合而产生该集合的字线。总和地址译码的概要将在下文说明。
若A代表一位向量an-1an-2...a0,而B代表一位向量bn-1bn-2...b0以及K代表一位向量kn-1kn-2...k0,将可显示若A+B=K,则该加法A+B(Couti-1)的特定的位位置i-1的进位输出(carry out)以及至后续的位位置i(Cini)的进位输入(carry in)可由下述的方程式1及2所表示(而“!”代表反向,“XOR”代表异或,“&”代表与(AND)以及“|”代表或(OR)):
Couti-1=((ai-1XOR bi-1)&!ki-1)|(ai-1& bj-1)   (1)
Cini=ki XOR ai XOR b-i                        (2)
若A+B=K则对于所有i值(范围0至n-1),Couti-1等于Cini。换言之,若A+B=K则对于所有i值,下列提出ei的等式(3)为1。
ei=Cini XOR!Couti-1                            (3)
为了产生用于译码器140的ei等式,希望产生不依赖K的项(每一表达式1及2以及3为相依)。确切地说,等式3依赖ki(经由Cini)以及ki-1(经由Couti-1)。因此,对于每一位位置i可产生4个ei的项。每一个ei项可假设一组ki及ki-1的值。这些项将注译为ei kiki-1,而将假设的每一位值代入ki及ki-1的标记符中(例如,ei 01对应于假设ki=0及ki-1=1)。等式4至7说明对在每一位位置的该4个ei项。每一等式4至7由将等式1及2代入等式3而形成的,提供ki及ki-1的假设值并利用布尔代数(Boolean Algebra)减少项数。
ei 00=ai XOR bi XOR!(ai-1|bi-1)               (4)
ei 01=ai XOR bi XOR!(ai-1 & bi-1)             (5)
ei 10=!(ai XOR bi)XOR!(ai-1|bi-1)            (6)
ei 00=!(ai XOR bi)XOR!(ai-1 & bi-1)          (7)
此外,对于索引的位位置0,该进位输入项(c-1)替代i-1项以形成等式8及9:
e0 0c=ai XOR bi XOR!c-1                   (8)
e0 1c=!(ai XOR bi)XOR!c-1                (9)
对于索引的每一位位置,上述等式可以逻辑实施于路线预测存储器142,当该进位输入c-1等于来自该高速缓存线偏置值的进位输入加法。可例如通过该AGU 12自该虚拟地址提供该进位输入。例如,该进位输入可能将迟达且可在其中具有奇数及偶数的索引的排(banks)间选取。
为了产生特定的集合的字线,自ei 00,ei 01,ei 10,及ei 11中的一个选取每一位位置(基于对应于产生的字线的索引值),以及选取的值将以AND指令来处理而产生字线。例如,索引0的字线可为ei 00(每个位位置)与e0 0c的逻辑与。索引1的字线(k0=1,所有其它的ki=0)可为ei 00(位于2与n-1之间的每个i)、e1 01与e0 1c的逻辑与。索引2的字线(k1=1,所有其它的ki=0)可为ei 00(位于3与n-1之间的每个i)、e2 01、e1 10与e0 0c的逻辑与。索引3的字线(k1和k0=1,所有其它的ki=0)可为ei 00(位于3与n-1之间的每个i)、e2 01、e1 11与e0 1c的逻辑与。同样地可选择其它索引的额外字线。
将可在由William L.Lynch,Gary Lauterbach以及Joseph I.Chamdani于名称为“通过总和地址存储器的低负载潜浮(Low LoadLatency through Sum-Addressed Memory(SAM))”的文章(1998年,第25届国际计算机架构座谈会,第369-379页)中,找到有关总和地址译码的实施例的其它细节。通过参照在此并入该文章全体。
路线预测器14通过允许降低在数据高速缓存器数据存储器20的功耗,可用来减少处理器10的功耗。例如在有些实施例中,该数据高速缓存器数据存储器20可包括一随机存取存储器(RAM)。通过激活字线以使该RAM中的地址予以使能运作。使能的位置将特定接至该位置的位线释放,以便提供一对有差动(differential)的位线,该位线代表该位置中的每一位。该对位线可输入至感测放大器,可转换差动给输出位。在有些实施中,该数据高速缓存器数据存储器20的RAM将个别提供字线信号给该数据高速缓存器20中的每一方向。该虚拟地址可译码以提供一集合选择,且该集合选择具备路线预测的条件以产生每一方向的字线。因此,可将预测方向使能而其它方向不使能,以便减少在位线上所释放的功耗,不然将出现在其它未致能的方向内。位线的功耗通常是在这种存储器功耗中最大耗电因素之一(且可能是最大的因素)。图11显示数据高速缓存器数据存储器20实施例的一部分,其中由译码器而接收虚拟地址(VA)可产生一集合选择(例如,图11中的集合0而其它并未显示在图11中的集合等)。与门(AND gate)收到方向0为预测的方向(WP0)或方向1为预测的方向(WP1)的指示,且产生方向0及方向1的对应的方向字线。图11显示每一方向的位0,接收该对应的方向字线。每一方向的位0可由多任务器多任务列置(column-muxed)路线预测控制该多任务器(以由预测方向选择位0),以及感测放大器(SA0)感测到来自预测的方向的位0,并将位0驱赶出数据高速缓存器数据存储器20。其它的位可同等对待,可提供额外的与门以及路线预测而提供额外的方向。
在其它的实施例中,该路线预测器未能极早有效地足以提供字线的选择性的产生。对于此实施例,每一方向的字线可基于地址译码而驱动,位线的释放将出现在每一方向中。在有些实施中,来自每一方向的位可物理地交叉且多任务行置至感测放大器。换言之,每一方向的位0将可物理地邻置,且该多任务器可选取来自该选择的方向的位0到该感测放大器的输入,用于输出位0。其它输出位可以相同方式选取。可使用该路线预测来将选取控制提供给列多任务器(column mux),因而感测放大器的数量可以是由一方向输出的位数量(而不是由路的数量乘以由一路所输出的位数量)。与每一方向有独立分置的感测放大器比较时,可减少感测放大器及由感测放大器驱出数据所消耗的电力。在此种存储器的功耗中,感测放大器驱出使用的电力可为最大耗电因素的一个(且可能是除了位线电力的消耗外最大的因素)。图12显示此种实施例一部分的示例。该译码器(如同图11的译码器)译码输入的虚拟地址(VA)以便产生字线(例如,图12的字线0以及未显示在图12的其它集合的其它字线)。显示来自方向0及1的位0,并将每一位释放本身的位线以响应该字线的确立。图12中的多任务器由路线预测而控制,以便选取来自预测的方向的位0,置入感测放大器的位0(图12的SA0)。其它由已预测方向读取的位可用相同方式来处理,且额外的方向也以相同方式处理。
在其它实施中,不同的感测放大器可提供至每一个别的方向,但该感测放大器可有一使能输入以使能运作。在此种实施中,可用该路线预测用于仅赋予预测方向中的感测放大器,该感测放大器以及由该放大器驱出数据的功耗可以利用如同该多任务列置(column-muxing)技术方法减少的。图13为该数据高速缓存器数据存储器20的此种实施例的示例。同样的该译码器可译码该输入的虚拟地址(VA)及产生字线,并提供给方向0及方向1的存储器。每一方向将一些位线输出至该方向的一组感测放大器。每组感测放大器接收一使能,该使能由该方向的路线预测(个别为方向0及1的WP0及WP1)所控制。在此实施例中的数据高速缓存器数据存储器20也可包含一多任务器,以便选取来自该感测放大器的输出的预测方向。
在其它实施例中,可能仅驱使该输入的虚拟地址至预测的方向,以便由不驱使未预测方向的地址而减少电力。
请参阅图10所示的流程图说明替代机制,可通过数据高速缓存器16采用该替代机制以响应高速缓存错过。为便于了解,当图10中的方块以特定顺序排列,但可用任何排列顺序。方块可依照需求经由组合逻辑电路可同时执行,或可以流水线方式在两个或以上的时钟周期中执行。
若该路线预测器14产生虚拟地址的路线预测,且结果为高速缓存错过(决策方块160),则该已预测方向被选择为进行置换(方块162)。不然,则依据高速缓存存储器执行的置换表选择进行置换方向(方块164)。可使用任何替代算法(例如,LRU、伪--LRU、随机等等)。
上述的算法强迫在高速缓存存储器中错过,但却与在该路线预测器14中现有的路线预测值符合的高速缓存区块,代替对应于路线预测值的高速缓存线。因此,相同的路线预测值将不会存储在一集合中的一个以上的位置。
图14为流程图说明依据该路线预测器14的一个实施例路线预测的形成。虽然在图14所示的方块图以容易了解的特定顺序排列,但可使用任何排列顺序。方块经由组合逻辑电路可同时执行,或可以流水线方式在两个或以上的时钟周期中执行。
该路线预测器14可译码地址指示(例如,地址操作数,或在有些实施例中的地址本身)(方块170)。该路线预测器14可输出由该译码所指示的来自集合的多个路线预测值(方块172)。可将该输出路线预测值与对应于在方块170中译码的该输入地址值作比较(方块174)。若比较的结果产生一条路(决策方块176,“是”的接脚),将产生该路线预测,等于已检测到一匹配的该方向(方块178)。不然(决策方块176,“否”的接脚),将不会产生路线预测且该路线预测器14可产生早期错过表示(方块170)。整体来说,方块176,178及180可包括产生一路线预测的一个实施例。
计算机系统
请参阅图15为具有处理器10的计算机系统200的个实施例的方块图,该处理器10经由一总线桥接器202连接至各种不同的系统构件。在叙述的系统中,主存储器204经由存储器总线206连接至总线桥接器202,以及图形控制器208经由AGP总线210连接至总线桥接器202。最后,多个PCI装置212A及212B经由PCI总线214连接至总线桥接器202。可进一步配置,次要总线桥接器216经由EISA/ISA总线220提供电性接口至一种或一种以上的EISA或ISA装置218。处理器10经由CPU总线224连接至总线桥接器202,以及连接至一选择性的L2高速缓存存储器228。CPU总线224及至L2高速缓存存储器228的接口可一起包括一外部接口,该外部接口可连接至外部接口单元18。而该处理器10可能是图1所示处理器10,且可包含在图2至图14中该处理器10架构上及操作上的细节。
总线桥接器202在处理器10、主存储器204、图形控制器208以及接合在PCI总线214的间提供一接口。当由连接至总线桥接器202的装置接收到操作程序,总线桥接器202辨别该操作程序的目标(例如,一特定的装置,或在PCI总线214的情况下,位在PCI总线214上的目标)。总线桥接器202将操作程序路由至目标装置。总线桥接器202通常将由源装置(source device)或总线使用的操作协议转换为由目标装置或总线使用的操作协议。
除了提供用于PCI总线214至ISA/EISA总线的接口外,次要总线桥接器216可进一步将所需的额外功能并入。输入输出控制器(未显示),无论来自外部或整合于次要总线桥接器216,也可包含在计算机系统200内,以依所需提供键盘及鼠标222以及各种不同的串联与并联的连接埠的操作支持。在其它实施例中,外部高速缓存存储器单元(未显示)可进一步在处理器10及总线桥接器202间连接至CPU总线224。在替代实施例中,该外部高速缓存存储器可连接至总线桥接器202,而外部高速缓存存储器的高速缓存控制逻辑可整合于总线桥接器202。L2高速缓存存储器228进一步显示相对于处理器10的后视配置。请注意,L2高速缓存存储器228可与处理器10分开并整合入一具有处理器10的匣(cartridge)内(例如,夹槽1或夹槽A),或甚至整合在具有处理器10的半导体衬底上。
主存储器204为内有存储应用程序的存储器,且该应用程序为处理器10主要的执行的程序。适当的主存储器204包括动态随机存取存储器(Dynamic Random Access Memory;DRAM)。例如,同步DRAM的多个排(banks)(Synchronous DRAM;SDRAM)、双倍数据速率(Double Data Rate;DDR)SDRAM、或Rambus DRAM(RDRAM)可为适当的存储器。主存储器204可包含图1所示的系统存储器42。
PCI装置212A及212B为各种外围装置的例子。该外围装置可包括与另一个计算机系统连接通信的装置(例如网络接口卡、调制解调器等等)。此外,外围装置可包含其它装置,例如视频加速器、声频卡、硬盘或软盘驱动器或者驱动控制器、小计算机系统接口(SmallComputer Systems Interface;SCSI)适配器以及电话卡。相同的,ISA装置218为各种不同类型的外围装置的示范例,例如调制解调器、声卡以及数据采集卡如GPIB或领域总线接口卡。
设置图形控制器208以控制在显示器226上的图文的显示(rendering)。图形控制器208可并入一般传统的图形加速器,以显示可有效地移入或由主存储器204移出的3维数据结构。图形控制器208可因而成为AGP总线210的主控制器,可以要求及存取总线桥接器202内的目标接口,因而获得主存储器204的存取。专属图形总线容许由主存储器204快速取回数据。针对特定的操作,图形控制器208可进一步设定为在AGP总线210上产生PCI协议异动。总线桥接器202的该AGP总线接口因而可含有支持AGP协议异动及PCI协议目标与激活器的异动的功能。显示器226为任何可显现影像或文字的电子显示器。适当的显示器226包含阴极射线管(“CRT”)、液晶显示器(“LCD”)等等。
请注意,虽然使用AGP、PCI及ISA或EISA总线上述说明的范例,任何总线架构可因需求而替代。请进一步注意,计算机系统200可为具有多重处理的计算机系统,包含额外的处理器(例如,处理器10a显示计算机系统200的选择性构件)。处理器10a可以与处理器10相似。更详细的说,处理器10a可能是处理器10一致的复制品。处理器10a经由独立总线(如图15所示)可连接至总线桥接器202,或可与处理器10分享CPU总线224。此外,处理器10a可连接至与L2高速缓存存储器228类似的一选择性的L2高速缓存存储器228a。
请参阅图16所示的计算机系统300的另一个实施例。在图16的实施例中,计算机系统含有多个处理节点312A、312B、312C及312D。每一处理节点经由存储器控制器316A至316D而连接至个别的存储器314A至314D,而这些存储器控制器316A至316D包含在每一个别的处理节点312A至312D内。此外,处理节点312A至312D含有接口逻辑,用于在处理节点312A至312D间的通信。例如,处理节点312A包含用于与处理节点312B通信的接口逻辑318A、用于与处理节点312C通信的接口逻辑318B以及用于与另一处理节点(未显示)通信的第三接口逻辑318C。相同地,处理节点312B含有接口逻辑318D、318E及318F;处理节点312C含有接口逻辑318G、318H及318I;以及处理节点312D含有接口逻辑318J、318K及318L。处理节点312D经由接口逻辑318L可与多个输入输出装置连接作通信(例如,以菊链配置的装置320A及321B)。以相同的方式,其它处理节点可与其它输入输出装置通信。
处理节点312A至312D实施用于节点间的通信的包型链接(packet-based link)。在本发明的实施例中,该链接以单向线路组实施(例如,使用线路324A传送由处理节点312A至处理节点312B的包,以及使用线路324B传送由处理节点312B至处理节点312A的包)。使用其它线路组324C至324H如图16所示用来传送其它处理节点间的包。一般而言,每一组线路324可包含一条或一条以上的数据线、对应于该数据线的时钟线(clock line)以及用于指示出运送的包类型的一条或一条以上的控制线。该链接以高速缓存一致方式处理节点间通信,或者以不一致的方式处理节点及输入输出装置间通信(或者总线桥接器至传统结构的输入输出总线,例如该PCI总线或ISA总线)。此外,该链接可利用所示的输入输出装置间的菊链结构以不一致的方式来运作。请注意从一处理节点传送至另一节点的包可经过一个或一个以上的中间节点。例如,在图16中显示包从处理节点312A传送至312D可经过处理节点312B或处理节点312C。可使用任何适当的路径算法。其它实施例的计算机系统300可包含比图16所示的实施例要更多或更少的处理节点。
一般而言,该包可在节点间的线路324上以一或以上的位时间(bittime)传送。位时间可以是在对应的时钟线上的时钟信号边缘的上升或下降。该包可包含用于激活异动的指令包、用于维持高速缓存存储器的一致性的探测包(probe packet),并响应探测及指令的响应包。
除了存储器控制器及接口逻辑外,处理节点312A至312D可包含一个或一个以上的处理器。广泛的说,处理节点包括至少一个处理器及依所需选择性的包含用于与存储器及其它逻辑接口通信的存储器控制器。更详而言的,每一处理节点312A至312D可包括一个或一个以上的在图1所示的处理器10的复制品(例如,含有图2至图14所示的各种不同结构上及操作上的细节)。外部接口单元18可包含在该节点及存储器控制器316内的接口逻辑318。
存储器314A至314D可包括任何适用的存储器装置。例如,存储器314A至314D可包括一个或一个以上的RDRAM、同步DRAM、DDRSDRAM、静态RAM等等。计算机系统300的地址空间在存储器314A至314D间分割存在。每一处理节点312A至312D可包含存储器映射,以决定哪一地址映射于哪一个存储器314A至314D,以及该将特定地址的存储器要求路由至哪一个处理节点312A至314D。在一个实施例中,计算机系统300内地址的一致点(coherency point)为存储器控制器316A至316D,连接至存储对应于该地址的字节的存储器。换句话说,该存储器控制器316A至316D有责任确认至对应的存储器314A至314D的每一个存储器存取以高速缓存一致的方式发生。存储器控制器316A至316D可包括控制用于接合存储器314A至314D的电路。此外,存储器控制器316A至316D可包含用于排列存储器的等候要求的请求队列(request queue)。
接口逻辑318A至318L一般可包括各种缓冲器,用于接收来自链接的包及用于缓冲传送至连接上的包。计算机系统300可采用任何用于传送包的适当的流程控制机制。例如在一个实施例中,每一个接口逻辑318存储在所连接的链接另一端上的接收器内的各种缓冲器的数量。接口逻辑并没有传送包,除非接收的接口逻辑有空的缓冲器来存储包。当接收的缓冲器通过传送出包而放出空间,接收的接口逻辑将信息传送至发送接口逻辑,以便指示出该缓冲器已放出空间。此种机制可称为“配券型”(coupon-based)系统。
输入输出装置320A及320B可以是任何适当的输入输出装置。例如,输入输出装置320A至320B可包含用于与所连接的其它计算机系统通信(例如网络接口卡、调制解调器等等)。此外,输入输出装置320A及320B可包含视频加速器、声频卡、硬盘或软盘驱动器或者驱动控制器、SCSI适配器以及电话卡、声卡以及不同的数据采集卡如GPIB或领域总线接口卡。请注意,在本发明中的用语“输入输出装置”及“外围装置”意指同义字。
对于充分理解上述公开的本领域技术人员来说,各种修饰与变化将是显而易见的。下面的权利要求倾向于包含所有这样的修改与变化。
工业应用性
本发明通常可用于处理器领域。

Claims (8)

1.一种处理器(10),包括:
高速缓存存储器(16),包括数据存储器(20)及标记符存储器(22),其中该数据存储器被设定为用于存储多条高速缓存线,而该标记符存储器被设定为用于存储多个标记符,多个标记符中的每一个标记符分别对应于多条高速缓存线中的一条;
第一变换检测缓冲器(30),被设定为用于存储虚拟地址的多个页面部分,以辨识多个虚拟页面,这些虚拟页面的物理地址转换存储在该第一变换检测缓冲器(30)中;和
标记符电路(36),与该第一变换检测缓冲器(30)连接,以及被设定为用于检测高速缓存存储器(16)中第一虚拟地址对多条高速缓存线的子集的击中,其中该子集是在该多个页面部分中并且包含多个该多个标记符,以及其中该标记符电路被设定为用于存储一个或多个虚拟地址的页面偏置值部分,该一个或多个虚拟地址的该页面偏置值部分对应于被该标记符电路辨识出的该多条高速缓存线的该子集,并且该标记符电路被设定为用于比较该一个或多个虚拟地址的该页面偏置值部分与该第一虚拟地址的对应的页面偏置值部分以检测击中;以及
将该标记符电路(36)设定为用于避免针对第一虚拟地址的该标记符存储器(22)的读取,以响应该标记符电路(36)中该第一虚拟地址的击中,以及进一步响应该第一变换检测缓冲器(30)中该第一虚拟地址的击中,其中该数据存储器(20)被设定为用于输出对应该第一虚拟地址的第一高速缓存线的至少一部分,而没有对应该第一虚拟地址与在该标记符存储器(22)中存储的一个或多个标记符的标记符比较。
2.如权利要求1所述的处理器,其中,该高速缓存存储器(16)被设定为用于读取存储在该标记符存储器(22)中的一个或一个以上的标记符,且用于检测该第一虚拟地址是否在该高速缓存存储器(16)中击中,以响应该第一变换检测缓冲器(30)中第一虚拟地址的该击中以及该标记符电路(36)中该第一虚拟地址的错过。
3.如权利要求2所述的处理器,进一步包括第二变换检测缓冲器(38),其中为响应该第一变换检测缓冲器(30)中的错过而存取该第二变换检测缓冲器(38),其中该第二变换检测缓冲器(38)被设定为用于提供对应于该第一虚拟地址的第一物理地址的页面部分,以响应该第二变换检测缓冲器(38)中的击中,以及其中该高速缓存存储器(16)被连接为用于接收该第一物理地址的标记符部分,且被设定为用于将该第一物理地址的该标记符部分与来自标记符存储器(22)中的至少一第一标记符比较,以便检测该高速缓存存储器(16)中的击中。
4.如权利要求1所述的处理器,其中该第一变换检测缓冲器(30)包括第一多个条目(80A-80B),该第一多个条目的每一个被设定为用于存储虚拟地址的多个页面部分中的个别的页面部分;其中该第一变换检测缓冲器(30)被设定为用于输出该第一多个条目的第一条目的指示,该第一虚拟地址击中该第一条目,以及其中该标记符电路(36)被连接为用于接收该第一条目的该指示;其中该标记符电路(36)包括第二多个条目(100A-100D),其中该第二多个条目(100A-100D)的子集对应该第一变换检测缓冲器(30)中该第一多个条目(80A-80B)的一个,该子集识别出存储在该高速缓存存储器(16)中并存在于页面内的高速缓存线,该页面由存储在该第一多个条目(80A-80B)的一个中的该页面部分而指出,以及其中该标记符电路(36)被设定为用于检查该子集是否击中,以响应该第一条目的指示。
5.如权利要求4所述的处理器,其中该第二多个条目(100A-100D)的每一个被设定为用于存储虚拟地址位,而该虚拟地址位并未包含在该虚拟地址的页面部分内,以及并未包含在该虚拟地址的高速缓存线偏置部分内。
6.在具有高速缓存存储器(16)的处理器(10)中,该高速缓存存储器包括数据存储器(20)及标记符存储器(22),其中该数据存储器被设定为用于存储多条高速缓存线,而该标记符存储器被设定为用于存储多个标记符,多个标记符中的每一个标记符分别对应于多条高速缓存线中的一条,以及第一变换检测缓冲器(30),被设定为用于存储虚拟地址的多个页面部分,以辨识多个虚拟页面,这些虚拟页面的物理地址转换存储在该第一变换检测缓冲器(30)中,一种方法,包括:
通过与该第一变换检测缓冲器(30)连接的该标记符电路(36),检测高速缓存存储器(16)中第一虚拟地址对该多条高速缓存线的子集的击中,其中该子集是在该多个页面部分中并且包含多个该多个标记符,以及其中该标记符电路被设定为用于存储一个或多个虚拟地址的页面偏置值部分,该一个或多个虚拟地址的该页面偏置值部分对应于被该标记符电路辨识出的该多条高速缓存线的该子集,其中检测击中包括通过该标记符电路(36)比较该一个或多个虚拟地址的该页面偏置值部分与该第一虚拟地址的对应的页面偏置值部分;以及
通过标记符电路(36),避免针对该第一虚拟地址的该标记符存储器(22)的读取,并输出数据存储器(20)至少一部分的响应第一虚拟地址的第一高速缓存线,而没有对应该第一虚拟地址与在该标记符存储器(22)中存储的一个或多个标记符的标记符比较,以响应该标记符电路(36)中该第一虚拟地址的击中,以及进一步响应该第一变换检测缓冲器(30)中该第一虚拟地址的击中。
7.如权利要求6所述的方法,其中该处理器(10)进一步包括第一变换检测缓冲器(30),该第一变换检测缓冲器(30)被设定为用于存储虚拟地址的多个分页部分,以辨识多个虚拟分页,虚拟分页的物理地址转换存储在该第一变换检测缓冲器(30)中,以及其中该标记符电路(36)与该第一变换检测缓冲器(30)连接,其中该多条高速缓存线的子集在该多个虚拟页面中,该方法还包括通过标记符电路(36)避免在该高速缓存存储器(16)中的标记存储器(22)的读取,以进一步对应在该第一变换检测中的击中。
8.如权利要求7所述的方法,进一步包括读取存储在该标记符存储器(22)中的一个或一个以上的标记符并检测该第一虚拟地址是否在该高速缓存存储器(16)中击中,以响应由该第一变换检测缓冲器中(30)该第一虚拟地址的击中及在该标记符电路(36)中该第一虚拟地址的错过。
CNB2004800252914A 2003-09-03 2004-06-04 在处理器中用于减少功耗的微变换检测缓冲器及微标记符 Expired - Fee Related CN100485638C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/653,749 2003-09-03
US10/653,749 US7117290B2 (en) 2003-09-03 2003-09-03 MicroTLB and micro tag for reducing power in a processor

Publications (2)

Publication Number Publication Date
CN1846200A CN1846200A (zh) 2006-10-11
CN100485638C true CN100485638C (zh) 2009-05-06

Family

ID=34217964

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004800252914A Expired - Fee Related CN100485638C (zh) 2003-09-03 2004-06-04 在处理器中用于减少功耗的微变换检测缓冲器及微标记符

Country Status (8)

Country Link
US (1) US7117290B2 (zh)
JP (1) JP2007504552A (zh)
KR (1) KR101014395B1 (zh)
CN (1) CN100485638C (zh)
DE (1) DE112004001608B4 (zh)
GB (1) GB2421826B (zh)
TW (1) TW200519590A (zh)
WO (1) WO2005024635A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102483697A (zh) * 2009-07-21 2012-05-30 中村维男 无存储器瓶颈的低能耗高速计算机

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2836407B1 (fr) * 2002-02-28 2004-05-14 Thermagen Procede de fabrication d'emballage metallique
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US20070156992A1 (en) * 2005-12-30 2007-07-05 Intel Corporation Method and system for optimizing latency of dynamic memory sizing
US20060224857A1 (en) 2005-03-29 2006-10-05 O'connor Dennis M Locking entries into translation lookaside buffers
KR100692976B1 (ko) * 2006-02-08 2007-03-12 삼성전자주식회사 프로세서간 데이터 전송 방법 및 시스템
JP2007233615A (ja) * 2006-02-28 2007-09-13 Fujitsu Ltd アドレス変換装置
US8035650B2 (en) 2006-07-25 2011-10-11 Qualcomm Incorporated Tiled cache for multiple software programs
US7650465B2 (en) * 2006-08-18 2010-01-19 Mips Technologies, Inc. Micro tag array having way selection bits for reducing data cache access power
US7657708B2 (en) * 2006-08-18 2010-02-02 Mips Technologies, Inc. Methods for reducing data cache access power in a processor using way selection bits
US7594079B2 (en) * 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
US9946547B2 (en) * 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US20080082793A1 (en) * 2006-09-29 2008-04-03 Mips Technologies, Inc. Detection and prevention of write-after-write hazards, and applications thereof
US8688890B2 (en) * 2006-12-05 2014-04-01 Hewlett-Packard Development Company, L.P. Bit ordering for communicating an address on a serial fabric
CN101681308B (zh) 2007-06-20 2014-08-13 富士通株式会社 计算机及tlb控制方法
US8145876B2 (en) * 2007-08-06 2012-03-27 Advanced Micro Devices, Inc. Address translation with multiple translation look aside buffers
US8156309B2 (en) * 2007-10-18 2012-04-10 Cisco Technology, Inc. Translation look-aside buffer with variable page sizes
GB2458295B (en) * 2008-03-12 2012-01-11 Advanced Risc Mach Ltd Cache accessing using a micro tag
US8589629B2 (en) * 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
US8255629B2 (en) * 2009-06-22 2012-08-28 Arm Limited Method and apparatus with data storage protocols for maintaining consistencies in parallel translation lookaside buffers
JP5526626B2 (ja) * 2009-06-30 2014-06-18 富士通株式会社 演算処理装置およびアドレス変換方法
US8429378B2 (en) * 2010-07-06 2013-04-23 Qualcomm Incorporated System and method to manage a translation lookaside buffer
US9753858B2 (en) 2011-11-30 2017-09-05 Advanced Micro Devices, Inc. DRAM cache with tags and data jointly stored in physical rows
US8612690B2 (en) * 2012-01-17 2013-12-17 Qualcomm Incorporated Method for filtering traffic to a physically-tagged data cache
US9524248B2 (en) * 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US8984368B2 (en) 2012-10-11 2015-03-17 Advanced Micro Devices, Inc. High reliability memory controller
US9367468B2 (en) * 2013-01-15 2016-06-14 Qualcomm Incorporated Data cache way prediction
US9330026B2 (en) 2013-03-05 2016-05-03 Qualcomm Incorporated Method and apparatus for preventing unauthorized access to contents of a register under certain conditions when performing a hardware table walk (HWTW)
US9015400B2 (en) * 2013-03-05 2015-04-21 Qualcomm Incorporated Methods and systems for reducing the amount of time and computing resources that are required to perform a hardware table walk (HWTW)
WO2014142867A1 (en) * 2013-03-14 2014-09-18 Intel Corporation Power efficient level one data cache access with pre-validated tags
US9208261B2 (en) * 2014-01-24 2015-12-08 Oracle International Corporation Power reduction for fully associated translation lookaside buffer (TLB) and content addressable memory (CAM)
GB2547189A (en) * 2016-02-03 2017-08-16 Swarm64 As Cache and method
US10552338B2 (en) * 2017-02-21 2020-02-04 Arm Limited Technique for efficient utilisation of an address translation cache
US10402340B2 (en) * 2017-02-21 2019-09-03 Micron Technology, Inc. Memory array page table walk
DE112018003358T5 (de) * 2017-06-28 2020-03-12 Nvidia Corporation Speichertyp, der cache-fähig und dennoch durch spekulative anweisungen unzugänglich ist
GB2570665B (en) 2018-01-31 2020-08-26 Advanced Risc Mach Ltd Address translation in a data processing apparatus
JP2023056289A (ja) 2021-10-07 2023-04-19 富士通株式会社 演算処理装置および演算処理方法
US12105629B2 (en) 2022-07-25 2024-10-01 Samsung Electronics Co., Ltd. Adaptive cache indexing for a storage device

Family Cites Families (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AT354159B (de) * 1975-02-10 1979-12-27 Siemens Ag Assoziativspeicher mit getrennt assoziierbaren bereichen
US4453212A (en) * 1981-07-13 1984-06-05 Burroughs Corporation Extended address generating apparatus and method
US4928223A (en) * 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
US4764861A (en) * 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
DE3752100T2 (de) * 1986-01-07 1997-12-11 Nippon Electric Co Befehlsvorabrufgerät mit einer Schaltung zum Prüfen der Vorhersage eines Verzweigungsbefehls vor seiner Ausführung
DE3751503T2 (de) * 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
US4914582A (en) * 1986-06-27 1990-04-03 Hewlett-Packard Company Cache tag lookaside
EP0259095A3 (en) 1986-08-27 1990-02-28 Amdahl Corporation Cache storage queue
IT1202687B (it) * 1987-03-25 1989-02-09 Honeywell Inf Systems Memoria tampone a predizione di hit
JPS6413649A (en) * 1987-07-07 1989-01-18 Nec Corp Information processor
JPH071484B2 (ja) * 1987-07-14 1995-01-11 日本電気株式会社 情報処理装置
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5067069A (en) 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5129067A (en) * 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
JPH0654477B2 (ja) * 1989-06-12 1994-07-20 松下電器産業株式会社 記憶装置
US5091851A (en) * 1989-07-19 1992-02-25 Hewlett-Packard Company Fast multiple-word accesses from a multi-way set-associative cache memory
US5148538A (en) * 1989-10-20 1992-09-15 International Business Machines Corporation Translation look ahead based cache access
US5226133A (en) * 1989-12-01 1993-07-06 Silicon Graphics, Inc. Two-level translation look-aside buffer using partial addresses for enhanced speed
US5251306A (en) 1990-01-16 1993-10-05 Advanced Micro Devices, Inc. Apparatus for controlling execution of a program in a computing device
US5185868A (en) * 1990-01-16 1993-02-09 Advanced Micro Devices, Inc. Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
JPH03232034A (ja) * 1990-02-08 1991-10-16 Oki Electric Ind Co Ltd キャッシュ制御装置
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
EP0449369B1 (en) * 1990-03-27 1998-07-29 Koninklijke Philips Electronics N.V. A data processing system provided with a performance enhancing instruction cache
US5053631A (en) * 1990-04-02 1991-10-01 Advanced Micro Devices, Inc. Pipelined floating point processing unit
US5058048A (en) * 1990-04-02 1991-10-15 Advanced Micro Devices, Inc. Normalizing pipelined floating point processing unit
DE69130588T2 (de) 1990-05-29 1999-05-27 National Semiconductor Corp., Santa Clara, Calif. Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür
US5235697A (en) * 1990-06-29 1993-08-10 Digital Equipment Set prediction cache memory system using bits of the main memory address
US5283873A (en) * 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
JP2834289B2 (ja) 1990-07-20 1998-12-09 株式会社日立製作所 マイクロプロセッサ
US5412787A (en) * 1990-11-21 1995-05-02 Hewlett-Packard Company Two-level TLB having the second level TLB implemented in cache tag RAMs
US5210845A (en) * 1990-11-28 1993-05-11 Intel Corporation Controller for two-way set associative cache
JP2636088B2 (ja) 1991-03-15 1997-07-30 甲府日本電気株式会社 情報処理装置
JPH0535591A (ja) * 1991-07-29 1993-02-12 Toshiba Corp キヤツシユメモリ装置
JPH0535592A (ja) * 1991-07-29 1993-02-12 Toshiba Corp キヤツシユメモリ装置
US5345569A (en) * 1991-09-20 1994-09-06 Advanced Micro Devices, Inc. Apparatus and method for resolving dependencies among a plurality of instructions within a storage device
SG45269A1 (en) 1992-02-06 1998-01-16 Intel Corp End bit markers for instruction decode
GB2263985B (en) 1992-02-06 1995-06-14 Intel Corp Two stage window multiplexors for deriving variable length instructions from a stream of instructions
JP2761688B2 (ja) * 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
AU3776793A (en) * 1992-02-27 1993-09-13 Intel Corporation Dynamic flow instruction cache memory
US5418922A (en) * 1992-04-30 1995-05-23 International Business Machines Corporation History table for set prediction for accessing a set associative cache
US5423011A (en) * 1992-06-11 1995-06-06 International Business Machines Corporation Apparatus for initializing branch prediction information
WO1994003856A1 (en) * 1992-08-07 1994-02-17 Massachusetts Institute Of Technology Column-associative cache
JPH06314241A (ja) * 1993-03-04 1994-11-08 Sharp Corp 高速半導体記憶装置及び高速連想記憶装置
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
IE80854B1 (en) 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution
DE4333547A1 (de) * 1993-10-01 1995-04-06 Hoechst Ag Verfahren zur Verwertung von Reststoffen enthaltend cellulosische Fasern und aus synthetischen Polymeren
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices, Inc. Superskalarmikroprozessoren
US5606683A (en) * 1994-01-28 1997-02-25 Quantum Effect Design, Inc. Structure and method for virtual-to-physical address translation in a translation lookaside buffer
US5671444A (en) * 1994-02-28 1997-09-23 Intel Corporaiton Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers
EP0675443A1 (en) 1994-03-30 1995-10-04 Digital Equipment Corporation Apparatus and method for accessing direct mapped cache
US5521306A (en) * 1994-04-26 1996-05-28 Xerox Corporation Processes for the preparation of hydroxygallium phthalocyanine
US5559975A (en) * 1994-06-01 1996-09-24 Advanced Micro Devices, Inc. Program counter update mechanism
US5813031A (en) * 1994-09-21 1998-09-22 Industrial Technology Research Institute Caching tag for a large scale cache computer memory system
US5509119A (en) * 1994-09-23 1996-04-16 Hewlett-Packard Company Fast comparison method and apparatus for error corrected cache tags
JP3456768B2 (ja) * 1994-09-28 2003-10-14 株式会社東芝 アドレス変換装置
US5640532A (en) * 1994-10-14 1997-06-17 Compaq Computer Corporation Microprocessor cache memory way prediction based on the way of previous memory read
US5835951A (en) * 1994-10-18 1998-11-10 National Semiconductor Branch processing unit with target cache read prioritization protocol for handling multiple hits
US5732242A (en) * 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5893146A (en) * 1995-08-31 1999-04-06 Advanced Micro Design, Inc. Cache structure having a reduced tag comparison to enable data transfer from said cache
US5845323A (en) * 1995-08-31 1998-12-01 Advanced Micro Devices, Inc. Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US5752069A (en) * 1995-08-31 1998-05-12 Advanced Micro Devices, Inc. Superscalar microprocessor employing away prediction structure
US5802594A (en) * 1995-09-06 1998-09-01 Intel Corporation Single phase pseudo-static instruction translation look-aside buffer
US5918245A (en) * 1996-03-13 1999-06-29 Sun Microsystems, Inc. Microprocessor having a cache memory system using multi-level cache set prediction
AU7720096A (en) 1996-11-04 1998-05-29 Advanced Micro Devices Inc. A way prediction structure
US6065091A (en) * 1997-05-30 2000-05-16 Via-Cyrix, Inc. Translation look-aside buffer slice circuit and method of operation
US5956746A (en) * 1997-08-13 1999-09-21 Intel Corporation Computer system having tag information in a processor and cache memory
US6016533A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Way prediction logic for cache array
US6016545A (en) * 1997-12-16 2000-01-18 Advanced Micro Devices, Inc. Reduced size storage apparatus for storing cache-line-related data in a high frequency microprocessor
US6212602B1 (en) * 1997-12-17 2001-04-03 Sun Microsystems, Inc. Cache tag caching
US6138225A (en) * 1997-12-24 2000-10-24 Intel Corporation Address translation system having first and second translation look aside buffers
JP3439350B2 (ja) * 1998-10-02 2003-08-25 Necエレクトロニクス株式会社 キャッシュ・メモリ制御方法及びキャッシュ・メモリ制御装置
US6418521B1 (en) * 1998-12-23 2002-07-09 Intel Corporation Hierarchical fully-associative-translation lookaside buffer structure
US6425055B1 (en) * 1999-02-24 2002-07-23 Intel Corporation Way-predicting cache memory
US6687789B1 (en) * 2000-01-03 2004-02-03 Advanced Micro Devices, Inc. Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
KR100351504B1 (ko) * 2000-06-05 2002-09-05 삼성전자 주식회사 캐쉬 메모리, 그의 전력 소비 절감 방법 그리고 캐쉬메모리를 구비하는 데이터 처리 시스템
JP3732397B2 (ja) * 2000-10-05 2006-01-05 株式会社日立製作所 キャッシュシステム
US6553477B1 (en) * 2000-11-06 2003-04-22 Fujitsu Limited Microprocessor and address translation method for microprocessor
JP2003196157A (ja) * 2001-12-25 2003-07-11 Mitsubishi Electric Corp プロセッサ装置及びメモリ管理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A Low Power TLB Structure for Embedded Systems. JIN-HYUCK CHOI ET AL.COMPUTER ARCHITECTURE LETTERS,Vol.1 . 2002
A Low Power TLB Structure for Embedded Systems. JIN-HYUCK CHOI ET AL.COMPUTER ARCHITECTURE LETTERS,Vol.1. 2002 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102483697A (zh) * 2009-07-21 2012-05-30 中村维男 无存储器瓶颈的低能耗高速计算机
CN102483697B (zh) * 2009-07-21 2015-06-10 中村维男 无存储器瓶颈的低能耗高速计算机

Also Published As

Publication number Publication date
WO2005024635A2 (en) 2005-03-17
GB0605621D0 (en) 2006-04-26
KR20060067964A (ko) 2006-06-20
CN1846200A (zh) 2006-10-11
GB2421826A (en) 2006-07-05
JP2007504552A (ja) 2007-03-01
US7117290B2 (en) 2006-10-03
DE112004001608T5 (de) 2006-08-10
DE112004001608B4 (de) 2018-09-06
US20050050277A1 (en) 2005-03-03
GB2421826B (en) 2007-04-11
WO2005024635A3 (en) 2005-05-26
KR101014395B1 (ko) 2011-02-15
TW200519590A (en) 2005-06-16

Similar Documents

Publication Publication Date Title
CN100485638C (zh) 在处理器中用于减少功耗的微变换检测缓冲器及微标记符
JP4699666B2 (ja) インデックスおよび任意選択的ウェイ一致に基づいてデータをフォワードするストアバッファ
CN102498477B (zh) Tlb预取
KR100747127B1 (ko) 경로 예측 실패시 조회를 지시하도록 비예측 경로들로부터부분적인 태그들을 제공하는 캐쉬
KR100884351B1 (ko) 타입 비트들을 이용한, 레벨 2 캐시에서의 ecc 및프리디코드 비트들의 저장 추적
JP3618385B2 (ja) データをバッファリングする方法およびそのシステム
US7089398B2 (en) Address translation using a page size tag
CN101770429B (zh) 用于在硬件中保存有损失的元数据的元物理地址空间
US6349365B1 (en) User-prioritized cache replacement
US20050050278A1 (en) Low power way-predicted cache
JP2003514299A5 (zh)
CN1509436A (zh) 以推测方式使高速缓存中的缓存行失效的方法及系统
EP0652521A1 (en) Rapid data retrieval from a physically addressed data storage structure using memory page crossing predictive annotations
US6453387B1 (en) Fully associative translation lookaside buffer (TLB) including a least recently used (LRU) stack and implementing an LRU replacement strategy
CN112527395A (zh) 数据预取方法和数据处理装置
US5951671A (en) Sharing instruction predecode information in a multiprocessor system
CN101930344B (zh) 确定链接数据储存器中存储和重写的项目的数据存储协议
CN100432925C (zh) 使用索引查找的存储至加载前传缓冲器
US6704820B1 (en) Unified cache port consolidation
JP2001522082A (ja) より小さな数の分岐予測および代替ターゲットを用いて近似的により大きな数の分岐予測をすること
JP2700147B2 (ja) 命令キャッシュ・フラッシュ・オン・rei制御
JPH06139147A (ja) キャッシュメモリシステム
WO1998002806A1 (en) A data address prediction structure utilizing a stride prediction method
JP2001505327A (ja) 1クロックサイクル内でデータをストアするよう構成されたデータメモリユニット、およびその動作方法
JPH11296431A (ja) 情報処理装置及びキャッシュメモリのマッピング方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: GLOBALFOUNDRIES INC.

Free format text: FORMER OWNER: ADVANCED MICRO DEVICES INC.

Effective date: 20100730

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: CALIFORNIA STATE, USA TO: CAYMAN ISLANDS GRAND CAYMAN ISLAND

TR01 Transfer of patent right

Effective date of registration: 20100730

Address after: Grand Cayman, Cayman Islands

Patentee after: Globalfoundries Semiconductor Inc.

Address before: American California

Patentee before: Advanced Micro Devices Inc.

Effective date of registration: 20100730

Address after: Grand Cayman, Cayman Islands

Patentee after: Globalfoundries Semiconductor Inc.

Address before: American California

Patentee before: Advanced Micro Devices Inc.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090506

Termination date: 20190604