CN1415092A - 当预测路线失败时从非预测路线提供局部标记以指导搜索的高速缓存 - Google Patents

当预测路线失败时从非预测路线提供局部标记以指导搜索的高速缓存 Download PDF

Info

Publication number
CN1415092A
CN1415092A CN00818038A CN00818038A CN1415092A CN 1415092 A CN1415092 A CN 1415092A CN 00818038 A CN00818038 A CN 00818038A CN 00818038 A CN00818038 A CN 00818038A CN 1415092 A CN1415092 A CN 1415092A
Authority
CN
China
Prior art keywords
route
address
speed cache
mark
prediction
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.)
Granted
Application number
CN00818038A
Other languages
English (en)
Other versions
CN1208726C (zh
Inventor
J·B·凯勒
K·R·舍克尔
P·夏尔马
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 CN1415092A publication Critical patent/CN1415092A/zh
Application granted granted Critical
Publication of CN1208726C publication Critical patent/CN1208726C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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/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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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
    • 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)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种高速缓存(14)对预测路线响应而提供输出字节。另外,可由预测路线读取标记,而由非预测路线仅读取部分标记。在输入地址的标记部分比较标记,而在输入地址的相对应部分标记部分比较部分标记。若在预测路线上未检测到命中,则使用部分标记比较结果。若没有任何部分标记匹配输入地址的对应的部分标记部分,则判定在高速缓存中失败。另一方面,若一个或更多个部分标记匹配输入地址的对应的部分标记部分,则高速缓存(14)搜索对应路线以判定是否输入地址在高速缓存(14)中命中或失败。

Description

当预测路线失败时从非预测路线提供局部标记以指导搜索的高速缓存
发明背景
1.技术领域
本发明涉及处理器领域,详言之,涉及处理器内部高速缓存机制。
2.背景技术
超级标量处理器通过在时钟周期内同时执行多个指令并通过指定与设计相符合的最短可能时钟周期,而达成了高性能。在此所用的“时钟周期”一词指的是一时间间隔,在此时间间隔期间处理器的流水线各阶段实现其预定的功能。当时钟周期结束,所得结果值移送至下一个流水线阶段。具有时钟的储存装置(例如寄存器、锁存器、正反器等)可响应于定义时钟周期的时钟信号,而获取其值。
为减少有效的存储器等待时间,处理器通常包括有高速缓存。高速缓存是用来储存先前取得的指令和/或数据字节的高速存储器。高速缓存存储器可以提供比包括处理器的计算机系统内主存储器中所使用的实际上更低的存储器等待时间。
高速缓存可以组构成“成组相联(set associative)”结构。在一个成组相联结构中,高速缓存组构成具有行(通常称之为“组(set)”)和列(通常称之为“路线(way)”)的二维数组。当为了一个地址上的字节而搜索高速缓存时,则取自该地址的许多位作为“索引(index)”而进入该高速缓存。索引选择在二维数组内的特定组,因而需用为索引的地址位数目由配置入高速缓存中的组的数目而决定。经由索引而选择组的动作称之为“检索(indexing)”。高速缓存的各路线具有一个高速缓存线(cache line)储存位置,该位置为所选之组的一部分(此处高速缓存线为许多连续字节,作为一个单元来处理,以便储存在高速缓存中,一般可为16-64字节范围,然而可以任何数目的字节而界定构成高速缓存线)。检验相关联于储存于选择之组的路线的字节地址,以判定是否储存于组中任何地址匹配于所需的地址。若发现匹配,则存取称之为“命中(hit)”,此高速缓存提供了相关联的字节。若未发现匹配,则存取将称之为“失败(miss)”。当检测到失败时,则字节从主存储器系统转入高速缓存中。亦存储与高速缓存中所存储的字节相关联的地址。这些存储的地址称之为“标记(tag)”或“标记地址(tag addresses)”。
如上所述,从高速缓存的各路线来的高速缓存线储存位置,为所选择组(即,响应于选择组的存取)的一部分。将储存于其中一个路线的信息提供作为高速缓存的输出,并且通过对高速缓存提供一个路线选择而选择该路线。该路线选择确认所选择的路线作为输出。在一个典型的成组相联高速缓存中,通过检验组内的标记并发现其中一个标记与所需地址之间的匹配,而决定路线选择。
不幸的是,由于标记比较以决定用于输出的路线选择,成组相联高速缓存可能比直接映射的高速缓存(其对每一索引设有一个高速缓存线储存位置)有更高的等待时间。另外,因为存取之前并不知道路线选择,若检测到命中(hit),则各路线一般存取和使用对应的路线选择来稍后选择输出字节。存取所有的路线将会引起不希望的高功率消耗。在现代处理器中,与增加处理速度(或频率)相同的是,正在快速地达成减少功率消耗。因此,希望能有一种用于存取成组相联高速缓存的低等待时间、低功率消耗的方法。
发明内容
本发明所揭示的高速缓存,解决了上述提出的大部分问题。将该高速缓存连接来接收输入地址和对应的路线预测。该高速缓存响应预测的路线而提供输出字节(以替代进行标记比较而选择输出字节),并因此较之于进行标记比较可以减少存取等待时间。另外,可由预测的路线读取标记,而由非预测的路线仅读取部分标记。将标记与输入地址的标记部进行比较,而将部分标记与输入地址的对应的部分标记部进行比较。若标记匹配于输入地址的标记部,则在预测路线检测到命中(hit),而且响应于预测路线所提供的字节为正确。若标记不匹配于输入地址的标记部,则在预测路线检测到失败(miss)。若没有任何一个部分标记匹配于输入地址的相对应部分标记部,则判定高速缓存为失败。另一方面,若有一个或多个部分标记匹配于输入地址的相对应部分标记部,则高速缓存搜索相对应的路线以判定输入地址是否在高速缓存中命中或失败(例如,通过对于其中检测到部分标记匹配的各路线进行全部标记比较)。因为由非预测的路线读取部分标记,较之由各路线读取全部标记,可以节省电源。有利的是,可以减少存取等待时间和功率消耗。另外,通过设有部分标记,可以识别要搜索的其它路线,从而减少所要搜索的路线的数目(例如具有部分标记失败的各路线即可不加搜索)。
广言之,高速缓存经过了精心设计。高速缓存包括标记数组和耦接到该标记数组的控制电路。标记数组耦接以接收读取地址和路线选择的索引,并包括多条路线。配置标记数组以输出多个部分标记,各多个部分标记得自多个路线的其中一个。配置控制电路以生成搜索路线选择,该搜索路线选择响应于标记数组的多个路线的第一路线的失败读取地址,而识别搜索路线。由路线选择而识别第一路线。由搜索路线来的第一部分标记匹配于读取地址的对应部分。
此外,处理器经过精心设计。处理器包括线路预测器(line predictor)和指令高速缓存,该线路预测器配置为响应读取地址(fetch address)而提供路线(way)预测,该指令高速缓存耦接以接收路线预测和读取地址。指令高速缓存设置为相关联的并包含有标记数组,该标记数组配置为响应读取地址的索引而输出多个部分标记。配置指令高速缓存,对路线预测所识别的第一路线的读取地址失败加以响应,而搜索标记数组的第二路线,对于此标记数组,多个部分标记的对应部分标记匹配于读取地址的对应部分。另外还有,计算机系统经过精心设计,包括有处理器和输入/输出(I/O)装置,配置为在所述计算机系统和其它可由该I/O装置耦接的计算机系统之间进行通信。
另外,精心设计了一种方法。响应于读取地址而从高速缓存读取多个部分标记。判定是否读取地址命中高速缓存的预测路线。对于判定读取地址在高速缓存的预测路线失败加以响应,搜索高速缓存的第二路线以求得命中。该第二路线不同于预测路线,对应于第二路线的多个部分标记的第一部分标记匹配于读取地址的对应部分。
附图简述
通过阅读以下详细说明并参看附图,本发明的目的和优点即变得一目了然,其中:
图1为处理器的一个实施例的方块图。
图2为流水线示意图,显示可由图1所示处理器使用的流水线的一个实施例。
图3为由图1所示分支预测/读取PC生成单元、线路预测器、和I-高速缓存的方块图,而ITLB显示根据各单元的一个实施例而进行的其间互相连接。
图4为图1和图3所示的I-高速缓存的一个实施例的方块图。
图5为图4所示标记数组的一个实施例的方块图。
图6为示意图,说明在一个范例地址内的字段。
图7为一个状态机示意图,说明可由图4所示控制电路的一个实施例使用的状态机。
图8为一个流程图,说明在图7所示存取状态中,图4所示控制电路的一个实施例的操作。
图9为一个流程图,说明在图7所示搜索状态中,图4中所示控制电路的一个实施例的操作。
图10显示图1所示包括处理器的计算机系统的一个实施例的方块图。
图11显示图1所示包括处理器的计算机系统的第二个实施例的方块图。
虽然对本发明易于有各种修改和替代的形式,但通过附图示例的方式——以及以下所要作的详细说明——描述了本发明的特定实施例。然而,应嘹解到此处特定实施例的说明并非意在将本发明限制为所揭示的特定形式,反之,本发明将涵盖所有落在所附权利要求书所界定的本发明范围内的修饰、等效和替换。
发明实施方案 处理器综述
现参考图1,显示了处理器10的一个实施例的方块图。可施行其它的实施例并予以设计。在图1所示实施例中,处理器10包括了线路预测器12、指令高速缓存(I-高速缓存)14、对准单元(alignment unit)16、分支预测/读取(branch prediction/fetch)PC生成单元18、多个译码单元24A-24D、预测器(predictor)失败译码单元26、微码(microcode)单元28、映射(map)单元30、退役排队(retire queue)32、体系结构更名文件34、未来文件20、调度部件(scheduler)36、整数寄存器文件38A、浮点寄存器文件38B、整数执行核心40A、浮点执行核心40B、负载/储存单元42、数据高速缓存(D-高速缓存)44、外部接口单元46、以及PC储仓(silo)48。线路预测器12耦接到预测器失败译码单元26、分支预测/读取PC生成单元18、PC储仓48、以及对准单元16。线路预测器12亦可耦接到I-高速缓存14。I-高速缓存14耦接到对准单元16和分支预测/读取PC生成单元18,而该分支预测/读取PC生成单元18进一步耦接到储仓48。对准单元16亦进一步耦接到预测器失败译码单元26和译码单元24A-24D。译码单元24A-24D进一步耦接到映射单元30,而译码单元24D耦接到微码单元28。映射单元30耦接到退役排队32(该退役排队32耦接到体系结构更名文件34)、未来文件20、调度部件36、和储仓48。体系结构更名文件34耦接到未来文件20。调度部件36耦接到寄存器文件38A-38B,该寄存器文件38A-38B进一步耦接到各其它和个别的执行核心40A-40B。执行核心40A-40B进一步耦接到负载/储存单元42和调度部件36。执行核心40A更进一步耦接到D-高速缓存44。负载/储存单元42耦接到调度部件36、D-高速缓存44、和外部接口单元46。D-高速缓存44耦接到寄存器文件38。外部接口单元46耦接到外部接口单元46。D-高速缓存44耦接到寄存器文件38。外部接口单元46耦接到外部接口52和I-高速缓存14。在此以一个参考编号后附一个字母所表示的各组件,集合起来将单独由该参考编号所表示。例如,译码单元24A-24D集合起来将表示为译码单元24。
在图1所示实施例中,处理器10使用可变的字节长度,复杂指令集计算(CISI)指令集体系结构。举例而言,处理器10可使用x86指令集体系结构(亦称之为IA-32)。其它的实施例可使用其它的指令集体系结构,包括固定长度指令集体系结构和精简指令集计算(RISI)指令集体系结构。图1所示的某些特征在这样的体系结构中可以省略。
配置分支预测/读取PC生成单元18以提供读取地址(读取PC)至I-高速缓存14、线路预测器12、和储仓48。分支预测/读取PC生成单元18可包括适当的分支预测机制,用以支持读取地址的生成。响应于读取地址,线路预测器12向对准单元16提供对应于多个指令的对准信息,并可提供下一个读取地址,用于读取指令——该指令接续于为所提供的指令信息所识别的指令。可提供下一个读取地址至分支预测/读取PC生成单元18,或若需要的话,可直接提供至I-高速缓存14。分支预测/读取PC生成单元18可从PC储仓48接收陷阱地址(若检测到陷阱的话),而陷阱地址可包括由分支预测/读取PC生成单元18所生成的读取PC。否则,可使用分支预测信息和由预测器12来的信息而生成读取PC。一般而言,线路预测器12储存着信息,该信息对应于处理器10所事先推测性地读取的指令。在一个实施例中,线路预测器12包括2K的项目,各项目定位一组的一个或多个指令,此处称之为指令的“线路(line)”。指令线路可同时由处理器10的指令处理流水线,通过放置在调度部件36中而处理。
I-高速缓存14为高速缓冲存储器,用来存取指令字节。依照一个实施例,例如I-高速缓存14可包括128K字节,4条路线成组相联结构使用64字节高速缓存线。然而,任何I-高速缓存结构都可以适用(包括直接映射结构)。
对准单元16从线路预测器12和对应于由I-高速缓存14来的读取地址的指令字节接收对准信息。对准单元16依照所提供的指令对准信息,选择指令字节进入各译码单元24A-24D。详言之,线路预测器12识别对应于各译码单元24A-24D的指令指针。该指令指针定位在读取的指令字节内用于传递至对应译码单元24A-24D的指令。在一个实施例中,可将某些指令传递至不止一个的译码单元24A-24D中。因此,在所示实施例中,从线路预测器12来的一条线路的指令可包括多达4个指令,虽然其它的实施例可包括更多或较少的译码单元24以提供一条线路内的更多或较少的指令。
译码单元24A-24D译码对其提供的指令,而各译码单元24A-24D生成识别一个或多个对应于该指令的指令操作(或ROP)的信息。在一个实施例中,各译码单元24A-24D对每一指令可生成多达2个指令操作。如此处所用的,指令操作(或ROP)为一操作,其中在执行核心40A-40B内的执行单元配置为执行单一一个实体(entity)。简单指令可对应于单一指令操作,而更复杂的指令可对应于多指令操作。某些更复杂的指令可在微码单元28内作为微码例程来执行(从只读存储器读取,其中经由本实施例的译码单元24D)。另外,其它的实施例对于各指令可使用单一指令操作(即在这种实施例中,指令和指令操作可以是同义的)。
PC储仓48储存对于各指令读取的读取地址和指令信息,并在异常情况(exceptions)下(例如由处理器10所使用的指令集体系结构所定义的指令陷阱、分支误预测、以及其它微体系结构所定义的陷阱)负责重新定向指令读取。PC储仓48可包括循环缓冲器(ciecular buffer),用来储存对应于多条指令线路的读取地址和指令信息,该多条指令线路可能是在处理器10内未完成的(outstanding)。响应于线路指令的退役,PC储仓48可舍弃对应的项目。响应于异常情况,PC储仓48可提供陷阱地址至分支预测/读取PC生成单元18。退役和异常情况信息可由调度部件36提供。在一个实施例中,PC储仓48对各指令指定序号(R#)以识别在处理器10内未完成的的指令次序。调度部件36可将序号(R#)送回到PC储仓48以识别经过了异常情况或退役指令操作的指令操作。
当在线路预测器12中检测到失败,对准单元16即将对应的指令字节从I-高速缓存14路由至预测器失败译码单元26。预测器失败译码单元26译码指令,当设计使用处理器10时(例如,指令操作的最大数目、指令的最大数目、分支指令的终结,等等),强化任何在指令线路上的限制。在终结一线路时,预测器失败译码单元26提供信息至线路预测器12,以便储存。应注意,预测器失败译码单元26可配置成当指令译码后,分送该指令。另外,预测器失败译码单元26可译码指令信息的线路,并将其提供至线路预测器12,以便储存。其后,可在线路预测器12中重新尝试失败的读取地址,并可检测到命中(hit)。
除了基于在线路预测器12上的失败以译码指令外,若线路预测器12所提供的该指令信息有效,则预测器失败译码单元26可配置来译码指令。在一个实施例中,处理器10并不要求保有在线路预测器12中的与I-高速缓存14中指令相关的信息(例如,当在I-高速缓存14中指令被替代或无效时,则对应的指令信息不能作用为无效)。译码单元24A-24D可验证所提供的指令信息,并当检测到无效指令信息时,可发信号给预测器失败译码单元26。依照一个特定实施例,可由处理器10支持下列指令操作:整数(包括算术、逻辑、移位/回转、和转移操作)、浮点(包括多媒体操作)、和负载/储存。
将译码的指令操作和来源(source)及目的寄存器号码提供给映射单元30。通过将物理寄存器(physical register)号码(PR#)指定给各指令操作的目的寄存器运算数和来源寄存器运算数,配置映射单元30以完成寄存器更名。物理寄存器号码标识寄存器文件38A-38B内的寄存器。映射单元30通过提供指令操作的指示序号(R#),额外地提供用于各指令操作的相关性指示,该指示序号更新指定到指令操作的来源运算数的各物理寄存器号码。映射单元30根据相对应逻辑寄存器号码,由指定到各目的寄存器(以及相对应指令操作的R#)的物理寄存器号码,更新未来文件20。此外,映射单元30储存指定了物理寄存器号码的目的寄存器的逻辑寄存器号码,和退役排队32中先前指定的物理寄存器号码。当使指令退役时(由调度部件36指示至映射单元30),退役排队32更新体系结构更名文件34,并空出许多不再使用的任何寄存器。因此,在体系结构更名文件34中的物理寄存器号码标识储存处理器10的相关体系结构状态的物理寄存器,而未来文件20则表明处理器10的推测的状态。换言之,体系结构更名文件34储存对应于各逻辑寄存器的物理寄存器号码,表明各逻辑寄存器相关的寄存器状态。未来文件20储存对应到各逻辑寄存器的物理寄存器号码,表明各逻辑寄存器推测的寄存器状态。
指令操作线路、来源物理寄存器号码、和目的物理寄存器号码,依照由PC储仓48所指定的序号(R#),而储存入调度部件36。另外,对于特殊指令操作的相关性,可附注(noted)为对其它指令操作的相关性,所述其它指令操作储存于调度部件中。在一个实施例中,指令操作保留在调度部件36中直到退役为止。
调度部件36储存各指令操作,直到所附注的对于该指令操作的相关性得到满足为止。对特定指令操作的执行所进行的调度加以响应,调度部件36可判定在何时钟周期特定的指令操作将更新寄存器文件38A-38B。在执行核心40A-40B内不同的执行单元,可使用不同数目的流水线阶段(因此有不同的等待时间)。另外,某些指令在流水线内较之其它指令会经过更多的等待时间。因此,生成测量用于特殊指令操作的等待时间(时钟周期数目)的向下计数。调度部件36等待指定数目的时钟周期(直到在相依指令操作读取寄存器文件之前或同时,发生更新),然后指示指令操作相依于特殊指令操作为可调度。应注意一旦已满足其相关性(即,超出其在调度部件排队中的次序),则调度部件36即可调度一个指令。
整数和负载/储存指令操作,根据从寄存器文件38A来的来源物理寄存器数目而读取来源运算数,并输送至执行核心40A用以执行。执行核心40A执行指令操作,并更新指定到寄存器文件38A内的目的物理寄存器。此外,执行核心40A报告指令操作的指定序号(R#)和关于至调度部件36的指令操作(如果有任何指令操作的话)异常情况信息(exception information)。寄存器文件38B和执行核心40B可关于浮点指令操作而以相似的方式操作(并可提供用于浮点储存至负载/储存单元42的储存数据)。
在一个实施例中,执行核心40A可包括例如二个整数单元、分支单元、和二个地址生成单元(相对应于转移后备缓冲器,或TLBs)。执行核心40B可包括浮点/多媒体乘法器、浮点/多媒体加法器、和用于输送储存数据至负载/储存单元42的储存数据单元。还可以有其它的配置执行单元。
负载/储存单元42提供至D-高速缓存44的接口,用来进行存储器操作,和用来调度用于存储器操作的填充操作,所述存储器操作在D-高速缓存44中失败。可由执行核心40A进行地址生成并传送数据至寄存器文件38A-38B(由D-高速缓存44或在负载/储存单元42内的储存排队)而完成负载存储器操作。一旦其中的执行核心40A完成生成,储存地址即可提供给D-高速缓存44(直接经由执行核心40A和D-高速缓存44之间的连接)。储存地址分配储存排队项目。可依于所设计的选择,同时提供储存数据或依序提供储存数据。基于储存指令的退役,数据储存入D-高速缓存44中(虽然在退役和更新D-高速缓存44之间会有一些延迟)。此外,负载/储存单元42可包括用于储存负载/储存地址——所述负载/储存地址在用于依序高速缓存填充数据(经由外部接口单元46)的D-高速缓存44中失败——的负载/储存缓冲器,并试图再次进行这一失败的负载/储存操作。可进一步配置负载/储存单元42,以控制负载/储存存储器相关性。
D-高速缓存44为高速缓冲存储器,用于储存由处理器10所存取的数据。虽然D-高速缓存44可包括任何适当的结构(包括直接映射和成组相联结构),然D-高速缓存44的一个实施例可包括128K字节、具有64字节线路的2路线成组相联高速缓存。
外部接口单元46配置成经由外部接口52而与其它装置通讯。可使用任何适当的外部接口52,包括介接到L2高速缓存的接口和用来将处理器10连接到其它装置的外部总线或各总线。外部接口单元46取得用于I-高速缓存16和D-高速缓存44的填充数据,以及将从D-高速缓存44舍弃的更新高速缓存线写入到外部接口。另外,外部接口单元46可完成由处理器10生成的非缓冲存储器的读取和写入。
现参照图2,显示了一个示范性流水线阶段组的范例流水线图,该各流水线阶段可由处理器10的一个实施例使用。其它的实施例可使用不同的流水线,各流水线包括比图2所示的流水线有更多或较少的流水线阶段。图2中所示的各阶段由垂直虚线所界定。各阶段为时钟信号的一个时钟周期,用来提供给处理器10中的时钟储存组件(例如寄存器、锁存器、正反器等)。
如图2中所示,范例流水线包括有CAM0阶段、CAM1阶段、线路预测器(LP)阶段、指令高速缓存(IC)阶段、对准(AL)阶段、译码(DEC)阶段、映射1(M1)阶段、映射2(M2)阶段、写入调度部件(WR SC)阶段、读取调度部件(RD SC)阶段、寄存器文件读取(RF RD)阶段、执行(EX)阶段、寄存器文件写入(RF WR)阶段、和退役(RET)阶段。一些指令使用于执行状态的多个时钟周期。例如,存储器操作、浮点操作、和整数乘法操作以分散形式显示于图2中。存储器操作包括有地址生成(AGU)阶段、转移(TLB)阶段、数据高速缓存1(DC1)阶段、和数据高速缓存2(DC2)阶段。同样地,浮点操作包括达4个浮点执行(FEX1-FEX4)阶段,而整数乘法包括达4个(IM1-IM4)阶段。
在CAM0和CAM1阶段,线路预测器12将分支预测/读取PC生成单元18所提供的读取地址与储存于其中的各线路地址加以比较。此外,在CAM0和CAM1阶段,读取地址从虚拟地址(例如在x86架构的线性地址)转移至实际地址。响应于CAM0和CAM1阶段对命中(hit)的检测,而在线路预测器阶段由线路预测器读取对应的线路信息。同样地,I-高速缓存14在线路预测器阶段,起始读取(使用实际地址)。在指令高速缓存阶段,完成读取。
应注意,虽然图2中所示流水线使用了2个时钟周期以检测在线路预测器12中对于读取地址的命中,但是在其它实施例中可以使用单一个时钟周期(和阶段)来进行此操作。另外,在一个实施例中,线路预测器12提供了下一个用于I-高速缓存14的读取地址和下一个在线路预测器12中用于命中的项目,而因此CAM0和CAM1阶段对于从先前在线路预测器12中的命中读取结果可以跳过。
由I-高速缓存14提供的指令字节在对准阶段响应于来自线路预测器12的对应线路信息而由对准单元16对准译码单元24A-24D。译码单元24A-24D译码所提供的指令,该指令识别在译码阶段对应于指令和运算数信息的ROP。映射单元30在映射1阶段由所提供的信息生成ROP,并进行寄存器更名(更新未来文件20)。在映射2阶段,ROP和指定的更名记录于退役排队32。另外,判定由各ROP所相依的ROP。相依于较早记录在未来文件中的ROP,各ROP可以是寄存器,并且还可以呈现其它类型的相关性(例如对先前串行化指令的相关性,等等)。
在写入调度部件阶段,生成的ROP写入调度部件36中。一直达到此阶段,由特定信息线路所定位的ROP流经流水线作为一个单元。然而,依序写入调度部件36中,ROP可在不同时间单独流过其余的阶段。大致来说,特定的ROP保留于此阶段直到由调度部件36选用执行为止(例如,如上所述,在ROP之后,相依的特定ROP已经选用来执行)。因此,特定的ROP可经历一个或更多个在写入调度部件阶段和读取调度部件阶段之间延迟的时钟周期。在读取调度阶段,特定的ROP参与在调度部件36中的选择逻辑,并选用来执行,并由调度部件36中读取。然后特定的ROP进行到在寄存器文件读取阶段中的寄存器文件38A-38B中从其中一个文件来的(依于ROP的型式)读取寄存器文件操作。
特定的ROP和运算数提供至对应的执行码40A或40B,而在执行阶段于运算数进行指令操作。如上所述,一些ROP有数个执行的流水线阶段。举例而言,存储器指令操作(例如负载和储存)经由地址生成阶段(其中生成由存储器指令操作所存取的存储器位置的数据地址)、转移阶段(其中转移由地址生成阶段所提供的虚拟数据地址)、和一对的其中存取D-高速缓存44的数据高速缓存阶段而执行。浮点操作可使用达4个执行的时钟周期,而整数乘法可同样地使用达4个执行的时钟周期。
基于完成执行阶段或各阶段,特定的ROP在寄存器文件写入阶段,更新其指定的物理寄存器。最后,在各先前ROP退役之后(于退役阶段),退役特定的ROP。另外,对于寄存器文件写入阶段和退役阶段之间的特定的ROP,可经历一个或更多个时钟周期。另外,可如已知技术,因流水线阻塞条件而在任何阶段阻塞特定的ROP。高速缓存存取
现参照图3,显示一个由分支预测/读取PC生成单元18、线路预测器12、I-高速缓存14、指令TLB(ITLB)60、和读取地址多路复用器64所成实施例的方块图。可能有并且实际设想出其它的实施方案。在图3实施例中,分支预测/读取PC生成单元18耦接以接收从PC储仓48来的陷阱PC,并更进一步耦接到ITLB 60、线路预测器12、I-高速缓存14、和读取地址多路复用器64。ITLB 60更进一步耦接到读取地址多路复用器64,该读取地址多路复用器64耦接到I-高速缓存14。线路预测器12耦接到I-高速缓存14和读取地址多路复用器64。
大致来说,分支预测/读取PC生成单元18生成用于将要读取指令的读取地址(读取PC)。读取地址提供至线路预测器12和TLB 60(以及如1图所示的PC储仓48)。线路预测器12比较读取地址与储存于其间的读取地址,以判定是否对应于读取地址的线路预测器项目存在于线路预测器12中。若发现了对应的线路预测器项目,则将储存在线路预测器项目中的指令指针提供至对准单元16。与搜索线路预测器项目的线路预测器12平行,ITLB 60转移读取地址(在本实施例中为虚拟地址)至用于存取I-高速缓存14的实际地址(实际PC)。ITLB 60提供实际地址至读取地址多路复用器64,而分支预测/读取PC生成单元18D控制多路复用器64以选择实际地址。多路复用器64的输出称之为高速缓存读取地址(或高速缓存读取PC),用来使附图或说明能够清楚。I-高速缓存14读取对应于实际地址的指令字节,并提供指令字节至对准单元16。
在本实施例中,各线路预测器项目亦提供下一个读取地址(下一个读取PC)。提供此下一个读取地址至多路复用器64,而分支预测/读取PC生成单元18响应于线路预测器12检测命中,经由多路复用器64选择地址作为高速缓存读取地址以存取I-高速缓存14。按此方式,下一个读取地址可以更快速地提供至I-高速缓存14,只要读取地址在线路预测器中继续命中。线路预测器项目亦可包含在线路预测器12中(对应至下一个读取地址)的下一个线路预测器项目的指示,以允许线路预测器12取得对应于下一个读取地址的指令指针。因此,只要读取地址在线路预测器12中继续命中,则线路指令的读取可以由图2所示的流水线的线路预测器阶段起始。由PC储仓48起始的陷阱(响应调度部件36),由线路预测器12所做成用于下一个读取地址的预测和由分支预测/读取PC生成单元18所生成的下一个读取地址之间的不一致,可以引发由将在线路预测器12中搜索的分支预测/读取PC生成单元18所生成的读取地址。
此外,线路预测器12提供对应于高速缓存读取地址的路线预测。I-高速缓存14可以读取由路线预测所识别的预测的路线,并提供读取指令字节至对准单元16。较有利地,因为未使用标记比较以选择输出数据,则可以减少对于存取I-高速缓存14的等待时间。另外,可通过闲置非预测的路线(即,不存取非预测的路线),而减少电源消耗,并因此可节省将由存取非预测的路线而消耗的电源。又另外,I-高速缓存14可由预测路线和由非预测路线来的部分标记而存取标记。部分标记排除全部标记的一个或多个位,并且若读取地址在预测的路线中失败,则可使用以指向非预测路线的搜索。通过从预测路线中存取全部标记,但仅从非预测路线中存取部分的标记,而仍可节省额外的电源。若读取地址失败预测的路线,则I-高速缓存14可搜索非预测的路线,对此非预测路线对应的部分标记匹配于读取地址的对应部分。若部分标记不匹配于读取地址的对应部分,则全部标记将亦不匹配,而因此部分标记不匹配的该路线在搜索中可予跳过。因此,当较之于从各路线存取全部标记而仍可以减少电源消耗时,此搜索可以更为有效。
若检测到路线预测失败,则I-高速缓存14可确认失控信号(stallsignal)至分支预测/读取PC生成单元18和线路预测器12。失控信号可引致分支预测/读取PC生成单元18和线路预测器12以中断进一步生成读取地址以允许I-高速缓存14搜索在非预测路线中的命中(hit)。一旦检测到命中,则I-高速缓存14可提供更新的路线预测至线路预测器12并解除确认失控信号。线路预测器12可用更新的线路预测,来更新对应的线路预测器项目。若检测到失败(即,没有任何路线匹配到标记),则I-高速缓存14可选择替代路线并提供替代路线作为更新的路线预测。或可取而代之,当对应的指令字节由外部接口单元提供到I-高速缓存14时,则可选择替代路线。
甚至当由线路预测器12生成下一个读取地址,且在线路预测器12中为命中时,则分支预测/读取PC生成单元18继续生成读取地址用于由PC储仓48登录。另外,分支预测/读取PC生成单元18可经由一个或多个包含于其中的分支预测器来验证由线路预测器12提供的下一个读取地址。在线路预测器12中的线路预测器项目通过型式而识别在指令线路内的终结指令,以及线路预测器12传送型式信息至分支预测/读取PC生成单元18和终结指令的预测方向(图3中状态)。另外,对于经由包含在分支指令内的分支位移,形成目标地址的分支,线路预测器12可提供分支位移的指示。从此信息和储存于分支预测器内的信息,分支预测/读取PC生成单元18可生成虚拟的下一个读取地址。在一个实施例中,分支预测器包括条件分支预测器、间接分支目标地址高速缓存、和返回堆栈。
值得注意的是,在一个实施例中,I-高速缓存14对于指令读取可提供固定数目的指令字节,而由读取地址定位的指令字节开始。因为读取地址可定位字节在高速缓存线内任何地址,则I-高速缓存14可响应于读取地址而存取二个高速缓存线(由读取地址索引的高速缓存线,和在高速缓存中下一个索引的高速缓存线)。其它的实施例可限制提供高达固定数目或高速缓存线结束的指令字节数目,即使该高速缓存线第一次用到。在一个实施例中,固定数目是16,虽然其它的实施例中可使用多于16或少于16的固定数目。在存取2条高速缓存线的各实施例中,可设有2个路线预测器。以下关于图4-9的讨论可参考为路线预测,但是亦可扩展为多条同时的路线预测。
此处所用的“地址”是一个值,该值识别在存储器系统内的字节,而处理器10耦接至该存储器系统。“读取地址”为使用来读取指令字节的地址,该指令字节在处理器10内执行作为指令。如上所述,处理器10可使用地址转移机制,其中虚拟地址(响应于指令操作域而生成)转移至实际地址(该实际地址为存储器系统中的实际辨认位置)。在x86指令集体系结构中,虚拟地址可以是依照分段机制操作基于由指令操作域生成的逻辑地址而生成的线性地址。其它的指令集体系结构可不同地定义虚拟地址。
现参照图4,显示了I-高速缓存14的一个实施例的方块图。可能有并且实际设想出其它的实施方案。在图4的实施例中,I-高速缓存14包括标记数组70、指令数组72、剩余标记比较器74、多个部分标记比较器76A-76D、控制电路78、路线多路复用器(mux)80、地址多路复用器82、和地址寄存器84。地址多路复用器82和地址寄存器84耦接以接收设于I-高速缓存14的高速缓存的读取地址,而地址寄存器84更进一步耦接至地址多路复用器82。地址多路复用器82的输出耦接至标记数组70和指令数组72,以及至比较器74和76A-76D。路线多路复用器80耦接以接收提供至I-高速缓存14的路线预测,并耦接以接收由控制电路78来的搜索路线选择。路线多路复用器80的输出,耦接至标记数组70和指令数组72。多路复用器80和82耦接以接收来自控制电路78的选择信号,而地址寄存器84耦接以接收来自控制电路78的保持控制信号。剩余标记比较器74耦接以接收来自标记数组70的预测路线剩余标记(Rtag),并耦接以提供输出信号至控制电路78。各部分标记比较器76A-76D耦接以接收来自标记数组70的个别部分标记(Ptag0-Ptag3),并耦接以提供个别输出信号至控制电路78。控制电路78耦接以提供失败信号至外部接口单元46、路线预测更新信号至线路预测器12,和失控信号提供至线路预测器12和分支预测/读取PC生成单元18。控制电路78耦接以接收来自路线多路复用器80的路线选择。应注意,I-高速缓存14可包括额外的电路(未显示),如所希望的响应于失败,管理高速缓存线的转移进入I-高速缓存14和管理窥视处理等。
标记数组70储存指令字节的高速缓存线标记,该指令字节储存在I-高速缓存14中,而指令数组72储存指令字节的高速缓存线。举例而言,标记数组70和指令数组72包括随机存取存储器(RAM)数组。在标记数组70中在标记储存位置和指令数组72中高速缓存线储存位置之间有一对一的对应。详言之,标记数组70和指令数组72可包括相同数目的组(而因此由相同组的索引位所索引),和相同数目的路线。
一般而言,虽然控制电路78并不由于在预测路线中的失败,而搜索在非预测路线中读取地址的命中,然而控制电路78经由地址多路复用器82和经由路线多路复用器80的路线预测,可选择高速缓存读取地址。因此,高速缓存读取地址和预测的路线提供至标记数组70和指令数组72。详言之,高速缓存读取地址的索引部提供至各数组,并选择所对应的组。另外,在指令数组72,存取组的预测路线,而非预测路线则保持闲置以节省电源(响应于路线预测)。因为在读取存取期间由数组消耗的电源通常正比于存取的信息量(例如,位或字节的数目),则由闲置不用于存取而未选择于输出(例如非预测路线的指令数组72)的部分的数组而减少电源的消耗。储存于预测的路线的指令字节由指令数组72输出至对准单元16。此外,由标记数组70的各路线读取部分标记,而剩余标记(即,由部分标记以外的标记部分)由标记数组70的预测路线而读取。另外,因为从非预测的路线仅读取部分的标记,因此较之于从各路线读取完全的标记可节省电源。来自预测路线的部分标记和来自预测路线的剩余标记结合,组构成来自预测路线的标记。
剩余标记比较器74将来自预测路线的剩余标记与读取地址的对应部分相比较。若剩余标记相等于读取地址的对应部分,则剩余标记比较器74确认其输出信号至控制电路78。否则,剩余标记比较器74解除确认其输出信号至控制电路78。同样地,各部分标记比较器76A-76D接收来自标记数组70个别路线的部分标记,并将接收的部分标记与读取地址的对应部分相比较。若接收的部分标记和读取地址的对应部分相等,则部分标记比较器76A-76D确认其输出信号。否则,部分标记比较器76A-76D解除确认其输出信号。
若剩余标记比较器74和对应预测路线的部分标记比较器76A-76D二者确认其输出信号,则控制电路78检测于预测路线的命中,并更正由指令数组72所提供的对应指令字节。控制电路78不确认阻塞信号或失败信号,并可继续依序存取。控制电路78接收提供至标记数组70的路线选择,以判定那一个部分标记比较器76A-76D对应至选择的路线。
另一方面,若剩余标记比较器74或对应至预测路线的部分标记比较器76A-76D只要有二者其中之一不确认其输出信号,则控制电路78将检测于预测路线的失败。若没有任何一个其它的部分标记比较器76A-76D确认其输出信号,则读取地址是在I-高速缓存14中的失败,而控制电路78确认失败信号至外部接口单元46,以使之读取失败指令字节。反之,若确认了至少其中一个来自其它部分标记比较器76A-76D的输出信号,而在预测路线检测到失败,则控制电路78生成搜索路线选择,提供搜索路线选择至路线多路复用器80,并确认阻塞信号至线路预测器12和分支预测/读取PC生成单元18。搜索路线选择识别该部分标记匹配于读取地址的对应部分的路线。控制电路78经由路线多路复用器80选择搜索路线选择,并经由地址多路复用器84选择地址寄存器值。存取搜索路线,并比较判定是否在搜索路线中检测得的命中以相似于预测的路线存取方式而实施。若检测得命中,则控制电路78传送搜索路线选择,该搜索路线选择命中,作为至线路预测器12的路线预测更新。
一般而言,地址寄存器84捕获提供至I-高速缓存14各时钟周期的高速缓存读取地址。然而,地址寄存器84包括保持控制,当确认时,该保持控制使得地址寄存器84保持其现用值。在时钟周期期间确认保持控制,在此周期中控制电路78经由路线多路复用器80选择搜索路线选择,和经由地址多路复用器82选择地址寄存器84的内容。此方式中,在预测的路线中失败的读取地址再表现至标记数组70和指令数组72,而搜索路线选择提供作为至标记数组70和指令数组72的路线选择。
若控制电路78未检测得于搜索路线中的命中,则控制电路78生成额外的搜索路线直到已搜索得检测到部分标记命中的各路线为止。在一个实施例中,第一搜索路线可以是已检测得部分标记命中的最低号路线,而依序的搜索路线可以增加号次而生成(例如,在本实施例中,首先可搜索路线0,而最后搜索路线3)。当搜索继续进行时,控制电路78继续确认阻塞信号。若已经搜索具有部分标记命中的各路线的命中,而尚未检测到命中,则控制电路78确认失败信号至外部接口单元46。因此,可取得失败高速缓存线,并储存入I-高速缓存14中。失败信号的确认可引致线路预测器12和分支预测/读取PC生成单元18失效,直到由外部接口单元46提供失败指令字节为止。或可取而代之,控制电路78可继续确认阻塞信号直到提供失败指令字节为址。
值得注意的是,除了存取仅于指令数组72中选择的路线外,指令数组72可使用在高速缓存线中的多个库。指令数组72可使用一个或多个高速缓存线补偿位,以选择一个库(或多个库)来存取,而其它各库可保持闲置。进一步应注意,数组的一部分可由不存取数组的该部分而保持闲置。举例而言,若没有从数组的输出数据的部分选择储存存储单元,则该部分可闲置。换言之,闲置部分可不“供给电源”。更应注意的是,虽然使用指令高速缓存作为使用路线预测和部分标记的例子,但是也可使用相似构造的其它高速缓存。例如,数据高速缓存或结合的指令/数据高速缓存可使用相似的结构。
应注意到可使用替代结构。例如,替代搜索各检测到部分命中的路线,除了从选择的路线读取全部标记和从其它的路线读取部分的标记外,可配置标记数组70以提供从各路线读取全部的标记。若检测到一个或多个部分标记命中(hit),则控制电路78可进行全部标记读取,和可设有用于各路线的全部标记比较器。此方式中,对于命中的搜索,可于标记的一个读取操作中完成,而不必如上所述有一个或多个读取。更进一步应注意,如果需要,可合并地址多路复用器82和多路复用器64(如图3中所示)成为单一个多路复用器,以选择在地址寄存器84、由ITLB 60所提供的实际地址、和由线路预测器12所提供下一个读取地址之间。
现参照图5,显示了标记数组70的一个实施例的方块图。可能有并且实际设想出其它的实施方案。在图5的实施例中,标记数组70包括耦接以接收索引的部分标记译码器90,和耦接以接收索引和路线选择的剩余标记译码器92。标记数组70更进一步包括配置于各组中的一组的RAM存储单元。一个范例组96显示于二个水平虚线之间,而其它的组可包括相同的配置接收来自译码器90和92的不同信号。组96包括剩余标记存储单元98A-98D和部分标记存储单元100。亦显示了剩余标记感测放大器(senseamp)102和部分标记感测放大器104。应注意额外的电路可包括任何方式的适用于成组相联RAM设计的更新标记数组70(未显示)。
在典型RAM数组中,译码器译码接收的索引以选择一个组,并起动字线至组内的RAM存储单元。各RAM存储单元耦接到一对位线(共同称之为位和位条(bar)),其中的一位RRAM存储单元响应储存于RAM存储单元中的位而放电。感测放大器耦接至位线并配置对于在组内的各存储单元响应该对位线之间的不同的电压而生成二进制的0或二进制的1。在图5所示标记数组70的实施例中,存储单元98A-98D和存储单元100耦接成用于各存储单元的位线对,由偶接存储单元至感测放大器102或104其中之一的垂直线所表示。因此,对于在存储单元98A中各位,可提供一对位线,并将该对位线耦接至剩余标记感测放大器102。同样地,对于在存储单元98B中各位线,可提供一对位线,并将该对位线耦接至剩余标记感测放大器102(以及同样地对于存储单元98C-98D)。对于在存储单元100中各位线,可提供一对位线,并将该对位线耦接至部分标记感测放大器104。在其它组(图5中未示)中的存储单元98A-98D和100分别如存储单元98A-98D和100,耦接到相同的位线组。
一般而言,部分标记存储单元100储存存放在组96中各标记的部分标记部分。举例而言,在所示实施例中,标记数组70为4路线成组相联。因此,部分标记存储单元100包括存储单元储存用于如此实施例的四部分标记(一个标记用于各路线)的各位。剩余标记存储单元98A-98D的每一个包括存储单元储存一个剩余标记的各位(而因此四个标记存储单元98A-98D显示对于表现的四个路线成组相联实施例)。
部分标记译码器90译码由标记数组接收的索引,并起动用于所选择组的部分标记字线。各组由部分标记译码器90接收不同的字线。举例而言,图5显示组96中的部分标记存储单元100,该组96接收来自部分标记译码器90的字线。响应于起动字线,部分标记存储单元100放电耦接于其上的位线,而部分标记感测放大器104经由位线上的不同电压而感测部分标记的位。此方式中,来自各路线的部分标记输出到比较器76A-76D。应注意,对于部分标记的字线可实际地包含对于各路线的分离字线,以允许当保留剩余部分标记未改变时,一个部分标记部分可予更新。为了读取目的,起动各字线以读取各部分标记。
剩余标记译码器92译码索引以判定所选择之组,而亦译码路线选择以选择其中一个储存在所选择组中的剩余标记。剩余标记译码器92提供多个字线至各组,并响应于路线选择而起动其中一个用于所选择组的字线。举例而言,图5显示剩余标记译码器92提供第一字线至剩余标记存储单元98A、第二字线至剩余标记存储单元98B、第三字线至剩余标记存储单元98C、和第四字线至剩余标记存储单元98D。其它的组接收不同的多个字线。响应于起动字线,剩余标记存储单元98A-98D的其中一个放电对应的位线,而剩余标记感测放大器102经由不同的电压来感测剩余标记位。此方式中,由所选择路线的剩余标记输出至比较器74。值得注意的是,在所示实施例中,剩余标记感测放大器102由组中几个剩余标记中提供一个剩余标记。因此,剩余标记感测放大器102接收路线选择(或可取而代之,由剩余标记译码器92来的控制信号),以选择对应于其中一个剩余标记存储单元98A-98D来感测的一组位线。换言之,来自各剩余标记存储单元98A-98D的位线在输入到感测放大器电路之前可以进行“列多任务”处理。因为感测放大器通常由数组消耗而消耗相当数量的电源,则限制感测的位线数量可以更进一步减少电源。或者,如果需要的话,可在由分离的感测放大器感测以后而进行剩余标记的多任务处理。
在一替代配置中,标记数组70对于每一组可使用单一个译码器和单一个字线,但是亦可如上述般提供一个剩余标记感测放大器102和列多路复用器。在如此实施例中,所选择组中的各剩余标记存储单元98A-98D放电其对应的位线,但是感测的位线数目仍受限制,而因此可以限制由感测放大器所消耗的电源。另外,在设有全部标记读取的实施例中,标记数组70可使用用于储存在组中各位的感测放大器,但可仅起动部分标记感测放大器和其中一个剩余标记感测放大器,除非进行了全部标记读取。
应注意的是,图5所示组中存储单元的分配,仅为了图示方便和清楚的目的。该等存储单元可依照所选择的设计,而作任何适当方式的实际安排。
现参照图6,显示了读取地址110的范例,图中显示了各读取地址当关于I-高速缓存14时的各不同部分。读取地址的最高有效位在图6中处于左边,而最低有效位在图6中处于右边。如图6中所示,读取地址110划分成补偿栏112、索引栏114、和标记栏116。标记栏116次划分成部分标记栏118和剩余标记栏120。
读取地址110形成补偿栏112的部分,为读取地址110的位,该读取地址110界定在指令高速缓存线内寻址字节的补偿。因此,在补偿栏112内位的数目,依高速缓存线内的字节数目而定。举例而言,在一个实施例中I-高速缓存14包括了64字节高速缓存线。对于如此一个实施例,补偿栏112为高速缓存线的最低有效6个位。
索引栏114包括形成高速缓存索引以选择在I-高速缓存14中组的位。在所示实施例中,索引栏114包括读取地址110排除补偿栏112的最低有效位。举例而言,在一个实施例中,I-高速缓存14为具有64字节线的4路线成组相联结构的128K字节。如此实施例具有512个组,而因此该索引包括9个位以供组(29=512)选择。
标记栏116包括排除索引栏114和补偿栏112的读取地址110部分。标记栏116包括读取地址110部分,该读取地址110部分由I-高速缓存14储存至唯一于标记数组70(亦称之为“标记”)中的识别高速缓存线。因为补偿栏112界定在高速缓存线内的字节,因此不储存补偿栏112。另外,因为索引选择在I-高速缓存14内的组,因此索引本来存在于储存标记的I-高速缓存14的位置。因此,当读取地址储存于I-高速缓存14中时(若检测得有匹配),将标记栏116与储存于所选择组的标记相比较,则可识别对应于读取地址的高速缓存线。
在所示实施例中,部分标记栏118为由标记数组70所提供的标记栏116部分,该标记数组70用于各路线以判定若预测的路线失败的话,则那些路线搜索命中;以及部分标记栏118为提供至用来与由标记数组70所提供部分标记相比较的部分标记比较器76A-76D的读取地址部分。在所示实施例中,部分标记栏118包括标记栏116的最低有效位。因为许多程序呈现出“地区性参考”,其中各指令实际上位于彼此邻近的存储器中;以及因为I-高速缓存14一般为储存指令字节的最近存取高速缓存线,则统计上最可能不同于读取地址的标记位,为标记的最低有效位。因此,选用这些位作为部分标记栏118以增加限制搜索非预测路线的可能性,由此可更快速地定位命中路线或检测失败。其它的实施例可选择标记栏116的任何可适用部分以形成部分标记。
在所示实施例中,剩余标记栏120为由标记数组70所提供的标记栏116部分,该标记数组70用于预测或选择的路线,以判定是否检测到路线上命中;以及剩余标记栏120为提供至用来与由标记数组70所提供剩余标记相比较的剩余标记比较器74的读取地址部分。剩余标记栏120包括排除部分标记栏118的标记栏116的剩余位。
依照所选设计,而可选择包括于部分标记栏118的位数。一般而言,选择位的数目可以在消除或包含搜索路线的正确性与节省电源量之间斟酌取舍。包括在部分标记中有较多数量的位,对于于非预测路线中的命中,则愈可能将储存非匹配标记的路线从搜索中消除,但是将会节省较少电源。举例而言,在具有4个路线成组相联高速缓存的实施例中,在标记栏116中三分之一的位可以分配至部分标记栏118而消耗约全部标记读取一半的电源(因为一个全部标记三个部分标记读取时,每一个部分标记其为全部标记的三分之一大小,则相等于二个全部标记)。在部分标记中可包括任何数目的位。一般而言,部分标记包括除了至少一个位以外的位数,亦可包括将标记的多个位排除的位数。
其次参照到图7,显示了状态机器的范例,其可由控制电路78的一个实施例使用。其它的实施例为可能并予构思。图7实施例中,状态机器包括存取状态130和搜索状态132。
存取状态130是从I-高速缓存14中进行正常读取的状态。因此,若读取命中于预测路线中,则状态机器维持于存取状态130。此外,若读取失败于预测路线中但当相较于部分标记时亦为失败时,则状态机器维持于存取状态130(即,没有任何部分标记匹配于读取地址的对应部分)。另一方面,状态机器响应于读取从存取状态130转移至搜索状态132,该读取于预测的路线失败并至少其中一部分标记匹配读取地址的对应部分(“部分标记命中”)。
搜索状态132为I-高速缓存14搜索非预期路线的状态,该非预期路线具有对于失败预期路线的读取地址的部分标记命中。若读取地址失败于现正搜索的搜索路线,且至少一个具有部分标记命中的其它路线将要予以搜索,则状态机维持于搜索状态132。若搜索路线命中或若各部分标记命中已经用尽(即,已经搜索了或已发现失败),则状态机从搜索状态132转移至存取状态130。
现接着参照图8,显示当状态机是在存取状态130时,控制电路78的一个实施例的操作流程图。可能有并且实际设想出其它的实施方案。虽然图8中为了便于了解而以特殊次序显示了各步骤,但是该等步骤可使用任何适当的次序。另外,可通过使用在控制电路78内的结合逻辑,而平行完成各步骤。
若出现了读取地址,则控制电路78判定是否读取地址于预测路线中失败(决定方块140)。举例而言,控制电路78检验来自对应于预测路线的剩余标记比较器74和部分标记比较器76A-76D的输出信号。若读取地址命中于预测路线,则控制电路78不作任何额外的事。另一方面,若读取地址于预测路线中失败,则控制电路78判定是否有部分标记命中(决定方块142)。举例而言,控制电路78可通过检查来自各其它部分标记比较器76A-76D的输出信号而判定是否有部分标记命中。若没有检测到部分命中,则控制电路78确认失败信号至外部接口单元46以起始失败高速缓存线的读取(步骤144)。另一方面,若检测到部分标记命中,则控制电路78确认阻塞信号(步骤146)。此外,控制电路78起始第一路线的读取,对于该第一路线对应的部分标记命中该读取地址(步骤148)。然后控制电路78转移状态机至搜索状态(步骤150)。
图9显示当状态机是在搜索状态132时,控制电路78的一个实施例的操作流程图。其它的实施例为可能并予构思。虽然图9中为了便于了解而以特殊次序显示了各步骤,但是该等步骤可使用任何适当的次序。另外,可通过使用在控制电路78内的结合逻辑,而平行完成各步骤。
控制电路78判定是否读取地址命中于搜索路线(判定方块160)。举例而言,控制电路78检验来自对应于搜索路线的剩余标记比较器74和部分标记比较器76A-76D的输出信号。若读取地址命中于搜索路线,则控制电路78传送更新路线预测至线路预测器12(步骤162),解除确认阻塞信号(步骤164),并转移状态机至存取状态(步骤166)。
另一方面,若读取地址在搜索路线中失败,则控制电路78判定是否有额外的部分标记命中于搜索(决定方块168)。举例而言,控制电路78可判定是否较之检测到有部分标记命中的搜索路线,有较高号数的路线。若检测到额外的部分标记命中,则控制电路78起始下一个部分标记命中的读取(步骤170)。例如,控制电路78可选择下一个来自搜索路线的检测到部分标记命中的较高号数路线。此外,控制电路78继续确认阻塞信号以允许搜索下一个将要搜索的路线(步骤172)。若没有额外的部分标记命中欲搜索,则控制电路78确认失败信号至外部接口单元46(步骤174),并转移状态机至存取状态(步骤176)。
值得注意的是,此处使用项目控制电路以有关任何电路结合(例如结合的逻辑闸,譬如多路复用器、寄存器、锁存器、正反器、加法器、位移器、回转器等的数据流组件,和/或实现状态机的电路),该等电路响应于如上述而操作于输入和生成输出。此外,如此处所使用者,术语“确认(asserted)”参考为对于信号或位提供逻辑真值。若信号或位传送一特定状况指示值,则该信号或位即“确认”。反之,若信号或位传送一缺乏特定状况指示值,则该信号或位即“解除确认”。当信号或位传送逻辑0值,则可定义该信号或位为确认;反之,若信号或位传送逻辑1值,则可定义该信号或位为解除确认。
计算机系统
现参照图10,显示包括经由总线桥202耦接到各不同的系统组件的处理器10的计算机系统200的一个实施例的方块图。在所示系统中,主存储器204经由存储器总线耦接到总线桥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的接口可包括外部接口52。
总线桥202提供处理器10、主存储器204、图形控制器208、和附接到PCI总线214装置之间的接口。当接收来自连接到总线桥202的其中一个装置的操作时,总线桥202识别操作目标(例如,特殊装置、或对于PCI总线214情况,该情况目标是在PCI总线214)。总线桥202路由操作至订定目标的装置。总线桥202通常将由来源装置或总线所使用的协议的操作,转移至由目标装置或总线使用的协议。
除了提供介接至用于PCI总线214的EISA/ISA总线接口外,第二个总线桥216可更进一步如所需要的并入额外的功能。输入/输出控制器(未显示),可以是由外部或是与第二个总线桥216整合,而若需要的话亦包括在计算机系统200中,以提供对于键盘和鼠标222和对于各种串联和并联端口的作业支持。在其它的实施例中,外部高速缓存单元(未显示)可更进一步耦接到处理器10和总线桥202之间的CPU总线224。或可取而代之,外部高速缓存可以耦接至总线桥202,和用于外部高速缓存的高速缓存控制逻辑可以整合入总线桥202中。L2高速缓存228更进一步显示于至处理器10的背面配置。值得注意的是,L2高速缓存228可从处理器10中分离出,整合入具有处理器10的卡匣中(例如槽1或槽A),或甚至整合入具有处理器10的半导体基板中。
主存储器204是一个储存有应用程序的存储器,而由此存储器来的程序处理器10得以执行。适当的主存储器204包括有动态随机存取存储器(DRAM)。例如,有多个可适用的同步DRAM(SDRAM)或存储器总线动态随机存取存储器(Rambus DRAM,RDRAM)。
PCI装置212A-212B为例示的变化周边装置,举例而言,譬如网络适配卡、视频加速器、声频卡、硬盘或软盘机或该机的控制器、小型计算机系统接口(SCSI)配接器和电话卡。同样地,ISA装置218例示了各种不同型式的周边装置,譬如调制解调器、声音卡、和例如GPIB或场总线适配卡的各种不同的数据采集卡。
设有图形控制器208以控制在显示屏上的彩现内容和影像。图形控制器208可具体实施于此技术方面通常已知的典型的绘图加速器,以彩现可从主存储器204有效地移入和移出的三次元数据结构。因此图形控制器208可以是主AGP总线210,其中此主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可以经由独立的总线(如图10所示)连接到总线桥202,或可与处理器10共享CPU总线224。另外,处理器10a可耦接到所选用的相似于L2高速缓存228的L2高速缓存228a。
现参照图11,显示了计算机系统300的另一实施例。可能有并且实际设想出其它的实施方案。在图11实施例中,计算机系统300包括有几个处理节点312A、312B、312C、和312D。各处理节点经由包括在各个别的处理节点312A-312D内的存储器控制器316A-316D耦接到个别的存储器314A-314D。此外,处理节点312A-312D包括用于连通处理节点312A-312D之间的接口逻辑。举例而言,处理节点312A包括用于连通处理节点312B的接口逻辑318A、用于连通处理节点312C的接口逻辑318B,和用于连通另一个处理节点(未显示)的第三接口逻辑318C。同样地,处理节点312B包括接口逻辑318D、318E、和318F;处理节点312C包括接口逻辑318G、318H、和318I;以及处理节点312D包括接口逻辑318J、318K、和318L。处理节点312D耦接以与多个输入/输出装置(例如,菊花链式配置中的装置320A-320B)连通。
处理节点312A-312D实施用于处理节点间连通的以封包为基础的连接。本实施例中,以单方向线路的各组进行连接(例如,线路324A用于传送封包从处理节点312A至处理节点312B,而线路324B用于传送封包从处理节点312B至处理节点312A)。线路324C-324H的其它各组用于传送封包于如图11所示的其它处理节点之间。一般而言,线路324的各组可包括一个或多个数据线路、一个或多个对应于数据线路的时钟线路、和一个或多个指示传送的封包型式的控制线路。连接可通过用于处理节点间连通的高速缓存联结方式操作,或通过用于处理节点和I/O装置(或至譬如PCI总线或ISA总线的传统结构的I/O总线的总线桥接)之间连通的非联结方式操作。另外,连接可使用如图所示I/O装置之间菊花链式结构的非联结方式操作。值得注意的是,从一个处理节点传送至另一个处理节点的封包可通过一个或多个处理节点。举例而言,由处理节点312A传送至处理节点312D的封包,可通过处理节点312B或处理节点312C其中之一,如图11所示。可使用任何适当的路由规则。计算机系统300的其它实施例可包括较图11所示的实施例有更多或更少的处理节点。
一般而言,封包在节点之间线路324上可传送为一个或多个位时间。位时间可以是在对应的时钟线上时钟信号的上升或下降波缘。封包可包括用于起始处理的命令封包、用于维持高速缓存联结的探测封包、和由响应于探测和命令的响应封包。
除了存储器控制器和接口逻辑外,处理节点312A-312D可包括一个或多个处理器。广言之,处理节点包括至少一个处理器,并可选择地包括用于与存储器连通的存储器控制器,以及所需的其它逻辑。详言之,处理节点312A-312D可包括处理器10。外部接口单元46可包括在节点内的接口逻辑318,以及存储器控制器316。
存储器314A-314D可包括任何适当的存储器装置。例如,存储器314A-314D可包括一个或多个RAMBUS DRAMs(RDRAMs)、同步DRAMs(SDRAMs)、静态RAM等。计算机系统300的地址空间在存储器314A-314D之间划分。各处理节点312A-312D可包括存储器映射,用来判定那些地址映射入存储器314A-314D中的那个,以及判定因此路由到将由存储器请求特定地址的处理节点312A-312D中的那一个。在一个实施例中,对于在计算机系统300中地址的联结点为耦接到对应于地址的存储器储存字节的存储器控制器316A-316D。换言之,存储器控制器316A-316D可响应以确保至对应的存储器314A-314D的各存储器存取,是以高速缓存相联结的方式生成。存储器控制器316A-316D可包括用于介接存储器314A-314D的控制电路。此外,存储器控制器316A-316D可包括用来排队等候存储器请求的请求排队。
一般而言,接口逻辑318A-318L可包括各种不同的缓冲器,用来从连接路上接收封包,并用来缓冲存放将发送至连接路上的封包。计算机系统300可使用任何适当的流程控制机制用来传送封包。举例而言,在一个实施例中,各接口逻辑318储存在连接有接口逻辑的连接路的另一端接收器内各型缓冲器的计数值。接口逻辑不传送封包,除非接收接口逻辑具有用来储存封包的空闲缓冲器。当接收缓冲器通过路由封包传送出而为空闲时,接收接口逻辑传送讯息至发送接口逻辑以指示缓冲器已空闲了。如此机制可称之为“联票基础(coupon-based)”系统。
一旦充分理解了以上说明内容,对于本领域技术人员来说,各种各样的变型和修改即会变成显而易见的。所附权利要求书应理解为意在涵盖所有这类变型和修改。
I/O装置320A-320B可以是任何可适用的I/O装置。举例而言,I/O装置320A-320B可以包括网络适配卡、视频加速器、声频卡、硬盘或软盘机或该机的控制器、小型计算机系统接口(SCSI)配接器和电话卡、调制解调器、声音卡、和例如GPIB或场总线适配卡的各种不同的数据采集卡。
                       工业应用
本发明可应用于处理器和计算机系统。

Claims (10)

1.一种高速缓存,包括:
耦接以接收地址和路线选择索引的标记数组(70),其中该标记数组(70)包括多个路线,而其中该标记数组(70)配置输出多个部分标记,并且其中所述多个部分标记中,每个都对应于所述多个路线中的其中之一;以及
耦接至该标记数组(70)的控制电路(78),其中该控制电路(78)配置以生成搜索路线选择,当由该第一全部标记和该地址的比较而判定时,该搜索路线选择响应在该标记数组(70)的所述多个路线中第一路线的该地址失败,而识别搜索路线。
2.如权利要求1的高速缓存,进一步包括耦接以接收输入路线预测和该搜索路线选择的多路复用器(80),其中该多路复用器(80)配置以在该输入路线预测和该搜索路线选择之间进行选择,并耦接以对该标记数组(70)提供所述路线选择,并且其中该控制电路(78)耦接以提供选择控制至该多路复用器(80)并配置以响应该控制电路(78)未生成该搜索路线选择而导致该输入路线预测的选择,而且其中该控制电路(78)配置以响应生成该搜索路线选择而导致该搜索路线选择的选择。
3.如权利要求1高速缓存,其中若该地址失败于该搜索路线,则该控制电路(78)配置以响应来自匹配所述地址的所述对应部分的该第二搜索路线的第二部分标记而生成第二搜索路线选择。
4.如权利要求1的高速缓存,其中该控制电路(78)配置以响应于该第一路线的该地址失败和该多个部分标记中没有任何一个匹配该地址的该对应部分,而确认失败信号。
5.如权利要求1的高速缓存,其中该控制电路(78)配置以响应于该第一路线中的该地址失败,搜索各该多个路线,对于该等路线对应的部分标记匹配该地址的该相对应部分,和在该多个路线的该各路线失败,而确认失败信号。
6.一种处理器,包括:
线路预测器(12),配置以响应于读取地址而提供路线预测;以及
如权利要求1至5中任何一项的高速缓存(14),该高速缓存(14)耦接以接收该路线预测和该读取地址。
7.如权利要求6的处理器,其中,响应检测于该第二路线或该额外路线的命中,该高速缓存(14)配置以提供更新的路线预测至该线路预测器(12)。
8.一种方法,包括:
响应于地址而从高速缓存(14)读取多个部分标记;
判定是否在该高速缓存(14)的预测路线命中;以及
对所述判定中,该地址未在该高速缓存(14)的该预测路线命中响应,而在该高速缓存(14)的第二路线搜索命中所述,所述第二路线不同于所述预测路线,并且所述多个部分标记的第一部分标记对应于匹配该地址对应部分的所述第二路线。
9.如权利要求8的方法,进一步包括:
判定是否该地址命中于该第二路线;以及
响应于该判定该地址失败在该高速缓存(14)的该第二路线、该第三路线不同于该预测路线、和相对应于该第三路线匹配于该地址的对应部分的该多个部分标记的第二部分标记,而搜索该高速缓存(14)的第三路线的命中。
10.如权利要求8或9的方法,进一步包括:
响应于该判定该地址失败于该预测的路线,并且判定该多个部分标记没有任何一个匹配该相对应的该地址的部分,而生成失败信号;以及
响应于该判定该地址失败于该预测的路线,和判定未检测得命中于该多个部分标记的相对应部分标记匹配该地址的该相对应部分的搜索各路线,而生成失败信号。
CNB008180385A 2000-01-03 2000-08-08 当预测路线失败时从非预测路线提供部分标记以指导搜索的高速缓存 Expired - Lifetime CN1208726C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/476,577 US6687789B1 (en) 2000-01-03 2000-01-03 Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
US09/476,577 2000-01-03

Publications (2)

Publication Number Publication Date
CN1415092A true CN1415092A (zh) 2003-04-30
CN1208726C CN1208726C (zh) 2005-06-29

Family

ID=23892412

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB008180385A Expired - Lifetime CN1208726C (zh) 2000-01-03 2000-08-08 当预测路线失败时从非预测路线提供部分标记以指导搜索的高速缓存

Country Status (7)

Country Link
US (1) US6687789B1 (zh)
EP (1) EP1244970B1 (zh)
JP (1) JP2003519835A (zh)
KR (1) KR100747127B1 (zh)
CN (1) CN1208726C (zh)
DE (1) DE60003235T2 (zh)
WO (1) WO2001050272A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1297901C (zh) * 2003-09-11 2007-01-31 国际商业机器公司 有选择地接受高速缓存内容的方法和系统
CN102193875A (zh) * 2011-04-26 2011-09-21 北京工业大学 多核下基于Cache划分的自适应路预测算法
CN101023414B (zh) * 2004-09-23 2012-01-11 英特尔公司 提前运行牺牲选择以减少内含式高速缓存中不合需要的置换行为的方法和装置
CN103597450A (zh) * 2011-05-20 2014-02-19 高通股份有限公司 具有存储在存储器页的一部分中的元数据的存储器
CN111988444A (zh) * 2020-08-19 2020-11-24 成都安可信电子股份有限公司 一种同步总线快速搜索终端地址搜索方法

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4027620B2 (ja) * 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
US6944713B2 (en) * 2002-06-18 2005-09-13 Intel Corporation Low power set associative cache
US20040054867A1 (en) * 2002-09-13 2004-03-18 Paulus Stravers Translation lookaside buffer
US6973557B2 (en) * 2003-02-04 2005-12-06 Sun Microsystems, Inc. Apparatus and method for dual access to a banked and pipelined data cache memory unit
US20040181626A1 (en) * 2003-03-13 2004-09-16 Pickett James K. Partial linearly tagged cache memory system
TWI246658B (en) * 2003-04-25 2006-01-01 Ip First Llc Microprocessor, apparatus and method for selectively associating store buffer cache line status with response buffer cache line status
US20040243767A1 (en) * 2003-06-02 2004-12-02 Cierniak Michal J. Method and apparatus for prefetching based upon type identifier tags
US7117290B2 (en) * 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US6961276B2 (en) * 2003-09-17 2005-11-01 International Business Machines Corporation Random access memory having an adaptable latency
KR100688503B1 (ko) * 2004-11-02 2007-03-02 삼성전자주식회사 브랜치 목적 어드레스를 이용하여 캐쉬 웨이를 예측하는프로세서 및 그 방법
US7793040B2 (en) * 2005-06-01 2010-09-07 Microsoft Corporation Content addressable memory architecture
US7707387B2 (en) 2005-06-01 2010-04-27 Microsoft Corporation Conditional execution via content addressable memory and parallel computing execution model
US20060277352A1 (en) * 2005-06-07 2006-12-07 Fong Pong Method and system for supporting large caches with split and canonicalization tags
US20060274787A1 (en) * 2005-06-07 2006-12-07 Fong Pong Adaptive cache design for MPT/MTT tables and TCP context
US9946547B2 (en) 2006-09-29 2018-04-17 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
US7594079B2 (en) * 2006-09-29 2009-09-22 Mips Technologies, Inc. Data cache virtual hint way prediction, and applications thereof
JP5326314B2 (ja) 2008-03-21 2013-10-30 富士通株式会社 プロセサおよび情報処理装置
US20100332762A1 (en) * 2009-06-30 2010-12-30 Moga Adrian C Directory cache allocation based on snoop response information
EP2492818A4 (en) 2009-10-20 2014-07-30 Univ Electro Communications CACHE-MEMORY AND ITS CONTROL METHOD
US8392665B2 (en) 2010-09-25 2013-03-05 Intel Corporation Allocation and write policy for a glueless area-efficient directory cache for hotly contested cache lines
US8458447B2 (en) * 2011-06-17 2013-06-04 Freescale Semiconductor, Inc. Branch target buffer addressing in a data processor
US9460016B2 (en) 2014-06-16 2016-10-04 Analog Devices Global Hamilton Cache way prediction
KR102354990B1 (ko) * 2014-09-17 2022-01-24 삼성전자주식회사 캐시 메모리 시스템 및 그 동작방법
US9846648B2 (en) 2015-05-11 2017-12-19 Intel Corporation Create page locality in cache controller cache allocation
GB2553102B (en) * 2016-08-19 2020-05-20 Advanced Risc Mach Ltd A memory unit and method of operation of a memory unit to handle operation requests
US10324850B2 (en) 2016-11-11 2019-06-18 Microsoft Technology Licensing, Llc Serial lookup of tag ways
GB2560336B (en) 2017-03-07 2020-05-06 Imagination Tech Ltd Address generators for verifying integrated circuit hardware designs for cache memory
US10565122B2 (en) 2017-05-30 2020-02-18 Microsoft Technology Licensing, Llc Serial tag lookup with way-prediction
US10545875B2 (en) 2017-12-27 2020-01-28 Advanced Micro Devices, Inc. Tag accelerator for low latency DRAM cache
US11507174B2 (en) * 2020-02-25 2022-11-22 Qualcomm Incorporated System physical address size aware cache memory
US11928472B2 (en) 2020-09-26 2024-03-12 Intel Corporation Branch prefetch mechanisms for mitigating frontend branch resteers
US11593001B1 (en) * 2021-08-02 2023-02-28 Nvidia Corporation Using per memory bank load caches for reducing power use in a system on a chip

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62293596A (ja) * 1986-06-12 1987-12-21 Matsushita Electric Ind Co Ltd 連想記憶装置
US4914582A (en) 1986-06-27 1990-04-03 Hewlett-Packard Company Cache tag lookaside
JPS63163939A (ja) * 1986-12-26 1988-07-07 Nippon Telegr & Teleph Corp <Ntt> キヤツシユメモリの制御方法
JPH02156352A (ja) * 1988-12-09 1990-06-15 Hitachi Ltd キャッシュメモリ
US5235697A (en) 1990-06-29 1993-08-10 Digital Equipment Set prediction cache memory system using bits of the main memory address
JPH05120135A (ja) * 1991-10-25 1993-05-18 Oki Electric Ind Co Ltd キヤツシユ制御方式
US5418922A (en) 1992-04-30 1995-05-23 International Business Machines Corporation History table for set prediction for accessing a set associative cache
JPH0721785A (ja) * 1993-06-29 1995-01-24 Kawasaki Steel Corp 半導体メモリ
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
JP3589485B2 (ja) * 1994-06-07 2004-11-17 株式会社ルネサステクノロジ セットアソシアティブ方式のメモリ装置およびプロセッサ
US5732242A (en) * 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
JPH08263370A (ja) * 1995-03-27 1996-10-11 Toshiba Microelectron Corp キャッシュメモリシステム
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
WO1998020421A1 (en) 1996-11-04 1998-05-14 Advanced Micro Devices, Inc. A way prediction structure
US5848428A (en) 1996-12-19 1998-12-08 Compaq Computer Corporation Sense amplifier decoding in a memory device to reduce power consumption
JPH1139216A (ja) * 1997-07-24 1999-02-12 Hitachi Ltd 半導体記憶装置及びキャッシュメモリシステム
US5956746A (en) * 1997-08-13 1999-09-21 Intel Corporation Computer system having tag information in a processor and cache memory
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

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1297901C (zh) * 2003-09-11 2007-01-31 国际商业机器公司 有选择地接受高速缓存内容的方法和系统
CN101023414B (zh) * 2004-09-23 2012-01-11 英特尔公司 提前运行牺牲选择以减少内含式高速缓存中不合需要的置换行为的方法和装置
CN102193875A (zh) * 2011-04-26 2011-09-21 北京工业大学 多核下基于Cache划分的自适应路预测算法
CN102193875B (zh) * 2011-04-26 2013-08-14 北京工业大学 多核下基于Cache划分的自适应路预测算法
CN103597450A (zh) * 2011-05-20 2014-02-19 高通股份有限公司 具有存储在存储器页的一部分中的元数据的存储器
CN111988444A (zh) * 2020-08-19 2020-11-24 成都安可信电子股份有限公司 一种同步总线快速搜索终端地址搜索方法

Also Published As

Publication number Publication date
DE60003235D1 (de) 2003-07-10
KR100747127B1 (ko) 2007-08-09
EP1244970A1 (en) 2002-10-02
CN1208726C (zh) 2005-06-29
JP2003519835A (ja) 2003-06-24
EP1244970B1 (en) 2003-06-04
WO2001050272A1 (en) 2001-07-12
DE60003235T2 (de) 2004-04-08
US6687789B1 (en) 2004-02-03
KR20020067596A (ko) 2002-08-22

Similar Documents

Publication Publication Date Title
CN1208726C (zh) 当预测路线失败时从非预测路线提供部分标记以指导搜索的高速缓存
CN100414494C (zh) 根据多组高速缓存组预测来选择执行的指令的装置和系统
US6502185B1 (en) Pipeline elements which verify predecode information
CN100485638C (zh) 在处理器中用于减少功耗的微变换检测缓冲器及微标记符
US7024545B1 (en) Hybrid branch prediction device with two levels of branch prediction cache
CN1287292C (zh) 使用类型位跟踪二级高速缓存中储存的错误校正码及预解码位
JP4699666B2 (ja) インデックスおよび任意選択的ウェイ一致に基づいてデータをフォワードするストアバッファ
US6339822B1 (en) Using padded instructions in a block-oriented cache
US7003629B1 (en) System and method of identifying liveness groups within traces stored in a trace cache
US8583894B2 (en) Hybrid prefetch method and apparatus
CN101689146B (zh) 分层的高速缓存标签架构
JPH1074166A (ja) 多重レベル・ダイナミック・セット予測方法および装置
US20070033385A1 (en) Call return stack way prediction repair
US8694759B2 (en) Generating predicted branch target address from two entries storing portions of target address based on static/dynamic indicator of branch instruction type
EP1290562A1 (en) A translation lookaside buffer flush filter
US6453387B1 (en) Fully associative translation lookaside buffer (TLB) including a least recently used (LRU) stack and implementing an LRU replacement strategy
CN100524202C (zh) 利用改进指令目的地标记的数据处理系统、处理器和方法
CN116302106A (zh) 用于促进分支预测单元的改善的带宽的设备、方法和系统
KR20020039689A (ko) 정렬정보를 캐쉬하는 장치 및 방법
US7197630B1 (en) Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
US11797308B2 (en) Fetch stage handling of indirect jumps in a processor pipeline
US7694110B1 (en) System and method of implementing microcode operations as subroutines
CN113760371A (zh) 分支预测的方法及其微处理器以及数据处理系统
US7610476B1 (en) Multiple control sequences per row of microcode ROM
WO1998002806A1 (en) A data address prediction structure utilizing a stride prediction method

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

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

Effective date: 20100705

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

Free format text: CORRECT: ADDRESS; FROM: CALIFORNIA, THE UNITED STATES TO: CAYMAN ISLANDS, BRITISH

TR01 Transfer of patent right

Effective date of registration: 20100705

Address after: Grand Cayman, Cayman Islands

Patentee after: Globalfoundries Semiconductor Inc.

Address before: American California

Patentee before: Advanced Micro Devices Inc.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20050629