【技术实现步骤摘要】
【国外来华专利技术】 专利技术背景1.
本专利技术涉及处理器领域,详言之,涉及处理器内部高速缓存机制。2.
技术介绍
EP-A-0 675 443揭示了一种用来存取直接映射(direct-mapped)高速缓存的装置和方法。该高速缓存包括设有预测索引并用来预测将可命中的高速缓存位置的预测机制。若在预测位置发生失败,则比较器比较全部标记并生成第二预测索引。WO-A-98/20421揭示了一种路线(way)预测结构,该路线预测结构预测关联于将要生成存取的高速缓存路线。标记比较区块通过将全部标记与所需地址相比较而判定是否所需的地址相吻合于预测的路线、命中于非预测的路线、或者失败。在1989年7月于美国华盛顿召开的计算机架构研讨会议决议事项,第17册,第3号,由R E Kessler等人发表的名称为“成组相联性的廉价实施(Inexpensive Implementation of Set-Associativity)”,揭示了局部比较方法,其中标记数组的首要读取为由各储存标记读取局部标记,并将该局部标记与输入地址的对应位作比较。在此匹配的情况,标记数组的次要读取为读取标记位置,该位置匹配于局 ...
【技术保护点】
一种高速缓存,包括: 耦接以接收地址和路线选择索引的标记数组(70),其中该标记数组(70)包括多个路线,而其中该标记数组(70)配置输出多个部分标记,并且其中所述多个部分标记中,每个都对应于所述多个路线中的其中之一;以及 耦接至该标记数组(70)的控制电路(78),其中该控制电路(78)配置以生成搜索路线选择,当由该第一全部标记和该地址的比较而判定时,该搜索路线选择响应在该标记数组(70)的所述多个路线中第一路线的该地址失败,而识别搜索路线。
【技术特征摘要】
【国外来华专利技术】US 2000-1-3 09/476,577书所界定的本发明范围内的修饰、等效和替换。 发明实施方案处理器综述现参考图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,并更进一步耦接到ITLB60、线路预测器12、I-高速缓存14、和读取地址多路复用器64。ITLB60更进一步耦接到读取地址多路复用器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捕获提供...
【专利技术属性】
技术研发人员:JB凯勒,KR舍克尔,P夏尔马,
申请(专利权)人:先进微装置公司,
类型:发明
国别省市:US[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。