发明实施方案
处理器综述
现参考图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或场总线适配卡的各种不同的数据采集卡。