具有阶层式微码储存之多内核处理器的制作方法

文档序号:6478050阅读:209来源:国知局
专利名称:具有阶层式微码储存之多内核处理器的制作方法
技术领域
本发明系关于处理器,且更特别的是,有关于在包含多处理器内核的处理器内实 作微码。
背景技术
随着处理器实作的发展,日益常见的企图是藉由复制处理器内的处理器内核来增 加处理器性能。该等内核能够独立地执行指令,这可增加用于执行应用系统的粗粒度并行 性(coarse-grained parallelism),而成本及设计复杂度低于用以增加性能之替代策略所 需要的,例如增加细粒度并行性或执行频率。不过,多内核处理器实作本身有若干设计挑战。有些处理器内核资源(例如,微码 进程的储存资源)可内含于关键时序路径(criticaltiming path)中,使得资源与给定内 核的邻近度可直接影响给定内核的工作频率。因此,多个内核共享该等储存资源中之单一 实例(instance)可能会由于增加共享实例的等待时间(latency)而使该等内核的性能降 级。不过,以设计面积,功率及/或其它设计质量因素而言,复制储存资源使得各个内核包 含它自己的资源实例是昂贵的。

发明内容
兹揭示具有阶层式微码储存之多内核处理器的各种具体实施例。根据一个具体实 施例,处理器可包含许多处理器内核,各个系配置成可独立执行根据程序员可见的指令集 架构(instruction set architecture, ISA)定义的指令。该等处理器内核各自可包含配 置成储存数个微码条目的个别本地微码单元。该处理器也可包含远程微码单元,其可被每 个该等处理器内核存取以及包含配置成储存数个微码条目的远程微码储存。任何一个给定 的该等处理器内核可被配置成产生给定微码进入点,该给定微码进入点系对应至包含可用 该给定处理器内核执行之一个或更多操作的特定微码条目,以及判断该特定微码条目是否 储存于该给定处理器内核之该个别本地微码单元内。响应于该特定微码条目未储存于该个 别本地微码单元内的判断,该给定内核可传递该特定微码条目的请求至该远程微码单元。尽管本发明容易做成不同的修改与替代形式,本文仍以附图为例图示数个本发明 的特定具体实施例且详述于本文。然而,应了解,附图及详细说明不是想要把本发明限制成 所揭示的特定形式,反而,本发明是要涵盖落入所附申请专利范围所界定之本发明精神及 范畴内的所有修改、均等及替代陈述。


图1的方块图系图示处理器内核之一个具体实施例。图2的方块图系图示含有多处理器内核的处理器之一个具体实施例。图3的方块图系图示微码控制储存之一个具体实施例的组织。图4的方块图系图示包含本地及远程微码单元的阶层式微码储存之一个具体实施例。图5的方块图系图标本地微码单元之一个具体实施例。图6的方块图系图标远程微码单元之一个具体实施例。图7的流程图系图示用于撷取具有阶层式微码储存之处理器内的微码条目的方 法之一个具体实施例。图8的方块图系图标示范计算机系统之一个具体实施例。
具体实施例方式处理器内核的概述图1图示处理器内核100之一个具体实施例。一般而言,内核100可被配置成能 执行可储存于与内核100直接或间接耦合之系统存储器内的指令。该等指令的定义可根据 特定指令集架构(ISA)。例如,内核100可被配置成实作x86 ISA的版本,然而在其它具体 实施例中,内核100可实作不同的ISA或数种ISA的组合。在图示具体实施例中,内核100可包含指令缓存(instruction cache,IC) 110,其 系经耦合以提供指令至指令提取单元(instruction fetch unit,IFU) 120。IFU 120可耦合 至分支预测单元(branch prediction unit, BPU) 130与指令译码单元140。译码单元140 可耦合以提供数个操作给多个整数执行丛集(integer execution cluster) 150a至b与浮 点单元(floating point unit,FPU) 160。每个丛集150a至b可包含耦合至各自多个整数 执行单元154a至b的个别丛集排程器(cluster scheduler) 152a至b。在不同的具体实施 例中,内核100可包含数个在丛集150a至b内或者由丛集150a至150b所共享的数据缓存 (未图标)。在图示具体实施例中,FPU 160可耦合以接收来自FP排程器162的操作。另 外,丛集150a至b、FPU 160及指令缓存110可额外地耦合至内核接口单元170,接着内核 接口单元170是耦合至L2缓存180与在内核100外的系统接口单元(system interface unit, SIU)(其系图示于图2以及在下文会加以描述)。应注意,尽管图1呈现一些在各种 单元之间的指令及数据流路径,然而仍可提供未具体图示于图1的其它路径或数据或指令 流的方向。内核100的附加配置也有可能,例如改变丛集150、FPU160及L2缓存180之数 目,以及改变该等单元彼此互动方式者。如以下所详述的,可将内核100配置成用于执行多执行绪(multithread)而可并 行执行来自不同执行绪的指令。在不同的具体实施例中,吾等预期并行执行可用数目不同 的执行绪支持,而且可提供不同数目的丛集150与FPU 160。另外,也可添加其它的共享或 多执行绪化单元,包含专用媒体处理器或其它类型的加速器。指令缓存110可被配置成在指令被提取、译码及发行供执行之前储存该指 令。在不同的具体实施例中,可将指令缓存110配置成为有任何适合的大小及/或关 连度的直接映像式(direct-mapped)、集合关连式(set-associative)或完全关连式 (fully-associative)缓存。指令缓存110可实体寻址、虚拟寻址、或两者之组合。在一些 具体实施例中,指令缓存110也可包含转换后备缓冲器(translation lookaside buffer, TLB)逻辑,其系配置成缓存用于指令提取地址的虚拟至实体转换,然而在内核100内的其 它地方可包含TLB与转换逻辑。存取指令缓存110的指令提取可用IFU 120调节。例如,IFU 120可跟踪用于各种执行中之执行绪的当前程序计数器状态以及可向指令缓存110发行提取以便撷取额外 的指令供执行。在指令缓存未命中的情形下,指令缓存110或者IFU 120可调节来自L2缓 存180撷取的指令数据。在一些具体实施例中,IFU 120也可调节在预期会用到之前预提 取(prefetch)来自其它层次之存储器阶层的指令以便减少存储器等待时间的效应。例如, 成功的指令预提取可提高指令在需要时出现在指令缓存110中的可能性,从而避免高速缓 存阶层的可能数个层次而未命中的等待时间效应。有各种类型的分支(例如,有条件或无条件跳越、呼叫/返回指令、等等)可改变 特定执行绪的执行流(flow Of execution)。一般可将分支预测单元130配置成可预测未 来的提取地址供IFU 120使用。在一些具体实施例中,BPU 130可包含配置成可储存关于分 支指令之信息的任一合适的结构(或数个结构)。例如,在一些具体实施例中,BPU 130可 包含一个或更多类型不同,配置成可预测条件分支之结果的的预测器(例如,本地、全域、 或混合预测器)。可将IFU 120配置成可产生指令字节的序列(也被称作提取封包(fetch packet))作为提取的结果。提取封包可具有任何合适的字节个数的长度。在一些具体实施 例中,特别是实施变量长度指令的ISA,排列任意边界之有效指令在给定提取封包内的数量 是变动的,以及在有些实例中,指令可跨越不同的提取封包。一般而言,可将译码单元140 配置成可识别提取封包内的指令边界,以译码指令或用其它方式把指令转变成适合用丛集 150或FPU 160来执行的操作,以及分派该等操作供执行。在一个具体实施例中,可将DEC 140配置成首先判断可能指令在给定字节窗口 (从一个或更多提取封包抽出)内的长度。例如,就兼容于x86的ISA而言,可将DEC 140配 置成可由在给定提取封包内的每个字节位置开始识别前置码(prefix)、操作码、“mod/rm” 及“SIB”字节的有效顺序。然后,在一个具体实施例中,可将DEC 140内的拾取逻辑(pick 逻辑)配置成可识别多个有效指令在窗口内的边界。在一个具体实施例中,识别指令边界 的多个提取封包及多组指令指针可队列于DEC 140内。然后,可引导指令从提取封包储存器进入DEC 140内数个指令译码器中之一个。 在一个具体实施例中,可将DEC 140配置成尽可能提供与每个周期被分配供执行的指令一 样多的多个独立指令译码器,然而也有可能及考虑其它的配置。在内核100支持微码化指 令(microcoded instruction)的具体实施例中,可将各个指令译码器配置成判断给定指令 是否为微码化指令,如果是,则可叫用(invoke)微码引擎(microcode engine)的操作以把 指令转换成一序列的操作。否则,指令译码器可把指令转换成一个适合供丛集150或FPU 160执行的操作(或者,在有些具体实施例中,可能为数个操作)。所得到的操作也可称作 微操作(micro-operation、micro-op或uop),而且可储存于一个或更多个队列内以等待分 派供执行。在一些具体实施例中,微码操作与非微码(或“快速路径(fastpath)”)操作可 储存于分开的队列。与实作微码于内核100内之具体实施例有关的其它细节在下文会有更 详细的说明。可将DEC 140内的分派逻辑配置成检查在队列中等待分派之操作的状态结合执 行资源与分派法则的状态以便尝试组装分派包裹(dispatch parcel)。例如,DEC 140可考 虑到可队列供分派的操作、在丛集150及/或FPU 160内队列及等待执行的操作数、以及 可能施加于待分派操作的任何资源限制。在一个具体实施例中,可将DEC 140配置成在给定的执行周期期间分派一个操作包裹给丛集150或FPU160中之一个。在一个具体实施例中,可将DEC 140配置成在给定的执行周期期间译码及分派操 作只给一个执行绪。不过,应注意,IFU 120与DEC 140不需要在相同的执行绪上并行操 作。可考虑在指令提取及译码期间使用各种类型的执行绪切换策略(thread-switching policy)。例如,可将IFU 120与DEC 140配置成以循环方式(round-robin fashion)每N 个周期(在此N可以少至1)选择不同的执行绪供处理。替换地,在操作期间出现的动态情 况可能会影响执行绪的切换。一般而言,可将丛集150配置成实作整数算术及逻辑操作以及执行加载/储存操 作(load/store operation)。在一个具体实施例中,每一个丛集150a至b可专用于各自的 执行绪来执行操作。各个丛集150可包含它自己的排程器152,该排程器152可被配置成能 管理先前分派至该丛集供执行之操作的发行。各个丛集150可进一步包含它自己的整数实 体登录文件(integer physical register file)复本以及它自己的完成逻辑(例如,重排 序缓冲器(reorder buffer)或用于管理操作完成及退除的其它结构)。在各丛集150内,有数个执行单元154可支持各种不同类型之操作的并行执行。例 如,在一个具体实施例中,执行单元154可支持并行的加载/储存地址产生(AGU)操作及算 术/逻辑(ALU)。执行单元154可支持数种附加操作,例如整数乘法和除法,然而在不同的 具体实施例中,对于该等附加操作与其它ALU/AGU操作的通量及并行,该等丛集150可实施 排程限制(scheduling restriction) 0在不同的具体实施例中,该等丛集150可包含或共 享可组织成与指令缓存110不同的数据缓存。FPU 160可包含FP排程器162,其系类似于丛集排程器152,可被配置成能接收、 队列及发行在FP执行单元164内执行的操作。FPU160也可包含配置成管理数个浮点操作 数的浮点实体登录文件(floating-point physical register file)。可将数个FP执行 单元164配置成实作各种类型的浮点操作,例如可以是由ISA界定的操作。在不同的具体 实施例中,FPU 160可支持不同类型之一些浮点操作的并行执行,而且也可支持不同的精确 度(例如,64位操作数、128位操作数、等等)。在不同的具体实施例中,FPU 160可包含资 料缓存或可被配置成存取位于其它单元内的数据缓存。指令缓存110与数据缓存156可被配置成经由内核接口单元170来存取L2缓存 180。在一个具体实施例中,CIU 170可提供内核100与系统内其它内核100以及与外部系 统存储器、周边等等之间的通用接口。通常,L2缓存180的容量会实质大于第一阶指令及 数据缓存的容量。在一些具体实施例中,内核100可支持有序操作(in-orderoperation)。在其它具 体实施例中,内核100可支持操作(包含,加载及储存操作)的无序执行。亦即,操作在丛 集150与FPU 160内执行的顺序可不同于与该等操作对应的指令在原始程序内的顺序。像 这样被放松执行的秩序有助于提高执行资源的排程效率,这可改善整体的执行性能。另外,内核100可实作各种控制及数据推测技术(control and dataspeculation technique)。如上述,内核100可实作各种分支预测及推测性预提取技术以便尝试预测执 行绪的执行控制流之进行方向。此类控制推测技术一般是在确知指令是否可用或者是否 推测错误(例如,由于分支预测错误)之前企图提供一致的指令流。如果出现控制推测错 误,则可将内核100配置成抛弃在推测错误路径中的操作与数据以及重新引导执行控制到正确的路径。例如,在一个具体实施例中,可将该等丛集150配置成可执行条件分支指令以 及判断分支结果是否与预测结果一致。如果不一致,则可将丛集150配置成可重新引导IFU 120以开始沿着正确的路径提取。内核100可独立实作各种资料推测技术用来在得知数据数值是否正确之前尝试 提供数据数值给进一步的执行使用。藉由以推测方式来使用该等数据,在使用数据之前,可 放松评估所有与数据有效性有关之条件的必要时序限制,这能够加快内核操作。在不同的具体实施例中,处理器实作可包含把内核100制作成为单一整体集成电 路芯片及其它结构之一部分的多个实例。图2图示处理器之一个此种具体实施例。如图示, 处理器200包含4个各按照上述方式配置的内核100a至d的实例。在图示具体实施例中, 各个内核100可经由系统接口单元(SIU) 210而耦合至L3缓存220与存储器控制器/周边 接口单元(MCU)230。在一个具体实施例中,可将L3缓存220配置成为使用任一合适组织实 作的联合式缓存,它可操作为在内核100的L2缓存180与相对缓慢的系统存储器240之间 的中间缓存。可将MCU 230配置成直接介接处理器200与系统存储器240。例如,可将MCU 230 配置成产生为了支持一个或更多不同类型之随机存取存储器(RAM)而需要的讯号,例如 双倍数据率同步动态随机存取存储器(DDR SDRAM)、DDR-2SDRAM、全缓冲双线存储器模块 (FB-DIMM)、或可用来实作系统存储器240的其它合适类型存储器。系统存储器240可被配 置成储存可让处理器200操作于不同内核100的指令及数据,以及可用上述的各种缓存来 缓存系统存储器240的内容。另外,MCU 230可支持连至处理器200的其它类型接口。例如,MCU 230可实作专用 的图形处理器接口,例如一种可用来介接处理器200与图形处理子系统的加速/先进图形 端口(AGP)接口,其中该图形处理子系统可包含个别的图形处理器、图形存储器及/或其它 组件。也可将MCU 230配置成实作一个或更多种类型的周边接口,例如,一种PCI-Express 总线标准版本,处理器200通过该PCI-Express总线标准可与周边介接该周边,例如储存 装置、图标装置、网络装置、等等。在一些具体实施例中,处理器200外部的第二总线桥接器 (例如,“南桥”)可用来经由其它类型的总线或互连接使处理器200与其它的周边装置耦 合。应注意,尽管图中存储器控制器与周边接口功能是经由MCU 230整合于处理器200内, 然而在其它具体实施例中,经由习知的“北桥”配置可实作该等功能于处理器200外部。例 如,可经由个别的芯片组来实作MCU 230的各种功能,而不是整合于处理器200内。本地及远程微码单元如上述,在一些具体实施例中,内核100可支持微码化操作。一般而言,微码可涵 盖一种待由给定内核100执行的个别操作都源于控制及数据储存的处理器实作技术,该控 制及数据储存系与指令流的通常程序员可见路径(例如,也许由IFU 120所提供的)分开。 例如,给定ISA(例如,x86 ISA)可包含指令以及可按复杂度明显分类的其它确定处理器性 能(例如,重设机能、中断/陷入/例外机能、等等)。与缓存器操作数有关的简单移位或 旋转指令也许相当容易具体实作成为可用执行单元154直接执行的单一操作。例如,通过 进位旗标来旋转操作数的旋转指令更容易具体实作为可在执行单元154内执行的不同操 作之组合。然而,更加复杂的指令(例如,某类复杂的控制转移指令、修改系统缓存器(例 如控制缓存器)的指令,涉及虚拟存储器的指令、在特权或保护模式背景下执行的指令、等等)可能涉及额外的操作,例如在指令执行被调节后测试处理器状态(例如,特权状态)。ISA内有些指令可直接映像至个别的对应操作。在一些具体实施例中,对于ISA之 中不直接映像至可在执行单元154内执行之单一操作的复杂指令,微码可用来把给定复杂 指令转换成一序列比较简单、可分派供执行的操作。可利用微码的操作集合一般包含对应 至可直接执行ISA指令的操作。不过,在一些具体实施例中,微码操作可包含执行单元154 可执行但程序员不可见的操作。另外,微码可用来产生一序列可执行操作以回应不与在实 作ISA内之特定指令对应的架构定义之处理器事件。例如,重设微码进程可包含一序列操 作,其配置成使内核100处于一致操作状态于软件或硬件重设事件之后(例如,藉由初始化 缓存、储存特定数值至特定架构与非架构缓存器、致使指令提取从预定地址开始、等等)。在 一些具体实施例中,微码也可用来产生实作内核100中之非架构特征的进程(亦即,在内核 100的正常操作期间,程序员通常看不到或无法存取的特征)。例如,微码可用来实作硬件 测试或除错进程供使用于产品制造期间、现场分析、开机自我测试、或用于其它合适的应用 系统。微码进程通常可储存于任一合适的类型的控制储存内,例如只读存储器(ROM), 或者,如以下所详述的,可写入存储器内,例如随机存取存储器(RAM)。图3图示微码控制 储存的一个示范组织。在图示具体实施例中,微码控制储存300包含许多条目310,条目 310可各自包含许多操作字段(operation field) 320与顺序控制字段(sequencecontrol field) 330。在一个具体实施例中,条目310可各自对应至在微码地址空间内的个别进入 点。例如,12位微码地址空间可以允许多达4,096 (4K)个不同的进入点数值。应注意,在一 些具体实施例中,微码地址空间可被配置成有比实际条目310还多的可能进入点数值,例 如在使用稀疏进入点寻址法(sparse entrypoint addressing)的情形下。在一个具体实施例中,可将条目310中每个操作字段320配置成储存编码可用一 个执行单元154执行之单一操作的信息。例如,操作字段320可包含配置成识别待执行操 作之类型的操作码位,以及配置成识别该操作要使用之操作数来源(例如,缓存器或立即 数据)的操作数位。在一些具体实施例中,编码于操作字段320内的操作数可指定应从宏 指令(例如,由IFU 120提取的程序员可见ISA指令)取出操作数以响应要执行哪一个微 码条目310。在一些具体实施例中,操作字段320中之不同的一个可各自对应至丛集150内 执行单元154之中的一个。因此,例如,如果执行单元154包含两个ALU与两个AGU,则操作 字段320中有两个可对应至该等ALU,以及两个可对应至该等AGU。亦即,给定条目310中 的每个操作字段320可各自对应至丛集150的个别发行插槽(issue slot),藉此可以一个 单元的方式分派整个给定条目310至丛集150。在某些情况下,在给定条目310内的一个操 作可与在同一条目内的另一个操作相依,而在其它的情形下,条目310内的每一个操作可 与其它的独立。应注意,在其它具体实施例中,在微码条目310内的操作字段320可能没有 发行插槽的限制。例如,在一个此种具体实施例中,可由任何一字段320来发行操作至任何 执行单元。 顺序控制字段330可被配置成管理微码进程的定序行为(sequencing behavior) 0例如,顺序控制字段330可被配置成表示进程的退出点(亦即,为特定进程终 止处的条目310),或可表示微码流控制的非顺序性改变,例如有条件或无条件分支或跳越 至不同的进入点。在一些具体实施例中,微码顺序控制可管线化使得与给定条目310有关
9的顺序控制字段330实际关连于在顺序上较早的不同条目310。例如,在于微码条目310的 提取与关连于该条目310之顺序控制字段330的执行之间有一个或两个周期之延迟或气泡 的具体实施例中,可储存会影响条目310在进入点N处之行为的顺序控制字段330于各自 在进入点N-1或N-2处与其关连的条目310。在一些具体实施例中,指令译码单元140可包含与微码条目310之存取及定序有 关的机能。例如,可将DEC 140配置成侦测指令与需要执行微码的其它处理器事件以及对 应地请求来自微码储存的条目310。在一些具体实施例中,可将DEC 140配置成取决于需要 微码的指令或其它事件来计算出进入点,例如藉由映像指令操作码至在微码地址空间内的 进入点数值。然后,DEC 140可呈递计算出的进入点至可内含于DEC 140或在内核100内装 设成内核100内之独特功能单元的微码单元而可接收及分派列于一个或更多微码条目310 所表示的操作供执行用。微码进入点的产生也可响应于除指令译码以外的事件。例如,可 藉由执行丛集或其它单元来产生进入点以响应例外或中断的侦测。在包含多个内核100之处理器200的具体实施例中,在微码实作方面存在特殊问 题。通常,每个内核100将参考相同的微码内容(例如,也许反应于条目310内)。亦即,在 一些具体实施例中,每个内核100可实作相同的ISA,以及大致上可预期代码是用相同的功 能行为执行,而与执行该代码的内核100无关。相应地,可将内核100配置成共享微码储存 的单一、共享实例,其中该微码储存包含所有界定用于处理器200之具体实施例的微码条 目310。不过,实作要被所有内核100共享的单一控制储存实例(例如,单一 ROM结构)可 能会增加微码数据由控制储存行进到被请求该数据之内核100所需要距离,这会增加执行 与微码有关之操作所需要的总等待时间。接着,这可能降低内核100的执行性能。另外,如果多个内核100企图并行地存取共享控制储存的话,则于多个内核100之 间共享单一控制储存可能造成资源争夺问题。增加由控制储存支持的并行存取数(例如, 藉由增加读取总线的数目、进入点译码逻辑的数量、等等)可能会增加该控制储存的复杂 度与成本以及减少它的时序性能,而序列化并行存取请求可能会增加内核100所经历的微 码存取等待时间,因为每次服务都要等它返回。反之,可复制微码控制储存的实例使得每个内核100包含微码的完整复本。在内 核100共享单一控制储存实例的情形下,该复制可改善路由、等待时间及上述资源争夺问 题。例如,可将每个复制实例安置成各自与它的内核100有相当靠近的邻近度,这可减少总 路由距离。不过,以此方式整个复制控制储存可能会增加设计面积与每个内核100的复杂 度,这会增加设计及制造成本与处理器200的耗电量。在一些具体实施例中,可将处理器200配置成利用包含复制及共享两方面的阶层 微码控制储存方法。如图4所示,在一个具体实施例中,处理器200中多个内核100a至d 各自包含本地微码单元400a至d的实例(或简称本地单元400a至d)以及可被配置成经 由系统接口单元210来存取共享的远程微码单元410 (或简称远程单元410)。应注意,尽 管为求简洁而省略,图4的具体实施例中可包含图2处理器200的其它组件。此外,在不同 的具体实施例中,可改变内核100与分别内含于其中之本地微码单元400的数目。在一些 具体实施例中,本地单元400可各自内含于内核100的其它单元。例如,本地单元400可实 作于DEC 140内。然而在图示的具体实施例中,每个内核100都各自包含一个本地微码单 元400,吾等预期,在一些具体实施例中,内核100中只有多个可包含各自的本地微码单元400。亦即,在本地单元400方面,不需要用相同的方式配置每一个内核100,然而有些具体 实施例都这样做。一般而言,可将本地微码单元400的每个实例配置成储存判定对于内核100之操 作有较高性能敏感度的微码进程,同时可将远程微码单元410配置成储存判定性能敏感 度为较低的微码进程。例如,如果给定微码进程满足性能敏感性门坎要求(performance sensitivitythreshold requirement),则可选择它给在本地单元400内的储存器,否则可 分配给在远程单元410内的储存器。在不同的具体实施例中,可用不同的准则来决定给定微码进程的性能敏感性。例 如,微码进程的长度可用来作为性能敏感性的准则,使得有给定长度(例如,由单一条目 310组成的进程)或小于门坎长度的进程都内含于本地单元400,而大于门坎长度的进程都 内含于远程单元410。在有些情形下,进程执行等待时间可用来作为长度的代表。替换地, 进程执行的频率可用来作为选择准则,使得至少以门坎频率或机率(例如,可通过模拟预 期的编程工作量来预测)执行的进程都内含于本地单元400,而有较低执行频率或机率的 进程都内含于远程单元410。在其它具体实施例中,可考虑执行频率/机率与进程长度两 者,以及其它可能的准则来决定给定进程要存放于哪里。例如,重设微码进程可能相当长而 且不经常被执行,因此有可能内含于远程微码单元410。在另一情形下,虚拟记忆页未命中 处理微码进程的执行频率可能高于重设进程。不过,记忆页未命中进程由于未命中记忆页 而很可能会进行许多高等待时间存储器存取。因此,存取记忆页未命中进程的等待时间比 执行该进程的等待时间还逊色,而有可能内含于远程微码单元410。一般而言,给定微码进 程的性能敏感性门坎要求可为上述因素(例如,长度、等待时间、执行频率)或其它相关因 素中之一或更多项的任一适当函数。图5图标本地微码单元400之实例之一个具体实施例。在图标具体实施例中,本地 单元400包含控制储存500与定序器(sequencer) 510。一般而言,控制储存500可为微码 控制储存300之一示范实例,微码控制储存系配置成储存对应至选定内含于本地单元400 的微码进程的许多微码条目310。在一个具体实施例中,控制储存500可包含依任一合适组 织配置的ROM。例如,控制储存500可组织成为单一大型ROM记忆库,而多个记忆库是根据 条目310的字段或于另一合适方式来区隔。一般而言,ROM可指任一类型的可寻址数据结 构,其系配置成接收索引值(例如,进入点)作为输入以及响应地提供与供给输入值对应的 输出值(例如,条目310)。此类数据结构可包含存储器数组与闸极数组或逻辑装置的其它 合适配置。在一些具体实施例中,除了或取代ROM以外,控制储存500可包含可写入存储器 组件,例如RAM或非挥发性存储器。在一个具体实施例中,可将定序器510配置成根据从DEC 140收到的微码请求与 内含于条目310的顺序控制信息存取控制储存500。响应于从DEC 140收到特定的微码进 入点,可将定序器510配置成存取控制储存500以撷取对应至该特定进入点的条目310。然 后,可将被撷取条目310内所指定的操作送回到DEC 140供分派及执行。另外,可将定序器 510配置成能评估被撷取条目310的顺序控制字段330,以判断是否要撷取在顺序上是在前 一个被撷取条目310之后的另一条目310,是否要撷取位在非顺序进入点(例如,顺序控制 字段330中所指定的进入点)的另一条目310、是否要终止微码条目310的撷取、或者是否 要采取一些其它经定义之动作。在一些具体实施例中,微码条目310可包含可在执行单元154或内核100内其它地方内预测及/或执行的分支操作。在一些此类具体实施例中,也可 将定序器510配置成响应由被预测或执行分支操作引起的微码顺序控制之改变。例如,该 分支操作可能造成定序器510把微码撷取从当前的进入点复位向为由该分支操作所指定 的进入点。在一些具体实施例中,可将每个本地微码单元400配置成映像相同的一组微码进 入点至它的各自控制储存500,使得每个内核100都存取与本地进入点相同的进入点。然而 在一些具体实施例中,控制储存500之每个实例可与在处理器200之各种内核100内的每 个其它实例有相同的内容,吾等预期,在其它具体实施例中,各个控制储存500不需要与其 它的有完全一样的内容。例如,制造瑕疵可能导致控制储存500的实例在功能上有差异,这 可通过补修技术或通过参照储存于除给定控制储存500以外之位置中的条目310来修正。图6图标远程微码单元410之一个具体实施例。在图标具体实施例中,远程单元 410包含远程微码单元接口 610,其可配置成经由SIU210或任一其它合适类型的接口来与 内核100通讯。接口 610可耦合至请求队列(request queue)620与传送队列(transmit queue) 630。可将请求队列620配置成向远程控制储存640传递储存于控制储存内微码条目 的请求。在图示具体实施例中,远程控制储存640可包含任意数目的微码ROM记忆库650a 至n,以及视需要可包含微码修补RAM660。在一些具体实施例中,也可将请求队列620配置 成传递微码请求至视需要的动态微码RAM数组670。可将传送队列630配置成能队列从远 程控制储存640(以及在一些具体实施例中,用以传输至他们的请求内核100的动态微码 RAM数组670)撷取的条目。如以上在描述图4时提及的,可将远程单元410配置成代表内核100储存各种微 码进程。此类进程可包含,例如,很长、与选定内含于本地单元400的进程相比不常被执行 或者被视为不太可能影响处理器性能的进程。一般而言,可将远程单元410配置成从不同 的内核100接收各种微码进入点的请求,以及可用一个或更多对应条目来响应各个请求。 取决于远程微码单元接口 610的配置以及用于内核100与远程单元410之间的接口协议, 可以并行或序列方式接收源于多个内核100的微码请求。远程控制储存640可为微码控制储存300之示范实例,其系配置成储存对应至选 定内含于远程单元410的微码进程的许多微码条目310。在一些具体实施例中,储存于远 程控制储存640内之条目310的格式可类似于储存于本地单元400之控制储存500内的条 目310的格式。在图标具体实施例中,条目310可分配于根据任一合适分割法或组织的许 多微码ROM记忆库650。应注意,在其它具体实施例中,记忆库650的个数可改变。也预期, 与控制储存500 —样,在一些具体实施例中,除存储器数组以外,远程控制储存640可包含 可写入存储器及/或数据储存组件。一般而言,可一起将远程微码单元接口 610、请求队列620及传送队列630配置成 管理从内核100收到的微码请求之处理。可将请求队列620配置成储存进来的微码请求 (在一个具体实施例中,这可最低限度包含进入点与请求内核100的表示值)直到它们可 在远程控制储存640内处理为止。同样,可将传送队列630配置成储存已从远程控制储存 640 (或在一些具体实施例中,从动态微码RAM数组670)撷取的条目310,直到可传送条目 310到它们的请求内核100为止。在一个具体实施例中,可将远程微码单元接口 610配置成 控制从内核100接收请求以及传送所得到的条目到内核100,这包含管理请求队列620与传
12送队列630。接口 610也可包含逻辑,该逻辑系配置成调节储存于请求队列620的个别请求 的处理,例如以根据定序控制或仲裁方案来选择特定请求供处理,以及在请求处理期间调 节被撷取条目在传送队列630内的储存。在其它具体实施例中,可用在接口 610外部的逻 辑来选择出于请求队列620供处理的请求以及储存结果于传送队列630内。远程单元410有许多不同的请求管理配置可供考虑。在一个具体实施例中,远程 单元410可省略定序机能。在此具体实施例中,可将远程微码单元接口 610配置成从对应 至给定内核100希望收到之每个特定进入点的给定内核100收到请求。因此,例如,可将给 定本地单元400的定序器510配置成决定需要撷取哪个进入点给储存于远程单元410的给 定进程以及以类似于用以存取控制储存500的方式来产生引导至该等进入点的请求。尽管省略远程单元410的定序机能可简化它的设计,然而这会增加请求交通量以 及内核100与远程单元410之间的处理等待时间。在其它具体实施例中,远程单元410可 支持不同程度的自主定序(autonomous sequencing)。例如,在一个具体实施例中,收到的 微码请求可指定开始进入点与结束进入点或一些要撷取的条目。在此一具体实施例中,可 将远程单元410配置成撷取与收到请求相对应的多个条目310,由开始端点开始并依顺序 继续直到结束进入点或已获致要撷取的条目数。以此方式撷取到的多个条目310可按照他 们撷取的顺序送回到请求内核100。在另一具体实施例中,远程单元410可支持更复杂的定序机能。例如,可将远程单 元410配置成包含机能上与定序器510类似的定序器。可将此一定序器配置成支持被定序 器510支持之顺序控制字段330中的一些或所有数值。替换地,在一个具体实施例中,可将 储存于远程单元410的条目310配置成包含与顺序控制字段330不同的附加顺序控制字 段,使得该附加顺序控制字段可用远程单元410内的定序机能处理,而顺序控制字段330可 用特定本地单元400内的定序器510处理。在此一具体实施例中,可将定序多条目进程的 任务适当地分配于远程单元410与本地单元400。由于许多不同的内核100可共享远程单元410,因此可将远程单元410配置成在选 择要服务哪种微码请求时可使用各种不同类型的仲裁或排程策略。例如,可将远程单元410 配置成能藉由首先选择最老的请求,或者使用任一其它合适的选择方案,而从请求队列620 选出请求来以循环方式处理。在一些远程单元410支持请求之定序的具体实施例,来自特 定内核100的单一请求有可能使数目相当多的条目310被撷取,而可能排斥其它内核100 的请求。相应地,在一些具体实施例中,在撷取到一些条目310后,可暂停此一请求以允许 服务不同的请求。替换地,选择下一个待服务请求的公平算法不仅可考虑到最近为内核100 服务之请求的总数,也可考虑到该等请求的持续时间。应注意,在一些具体实施例中,可以 多埠方式(multiported fashion)来配置远程控制储存640,藉此可并行撷取一个以上的 微码请求。例如,用多端口记忆格(memory cell)来实作远程控制储存640。替换地,记忆 库方案(banked scheme)可使用较小的单端口记忆格,藉此可并行撷取以不同记忆库650 为目标的多个请求。在一些记忆库具体实施例中,可序列化以同一个记忆库650为目标的 多个请求。以阶层方式把微码实作分配于多个本地微码单元400与共享远程微码单元410有 助于改善处理器200的时序与耗电量。例如,通常本地微码单元400的面积可小于远程微 码单元410,如果每个本地微码单元400都与远程微码单元410 —样大,这使得本地微码单元400可以较高的频率操作。同样,通常较小微码单元所消耗的电量比较大的少。在一些具 体实施例中,实作与本地微码单元400分开的远程微码单元410使得远程微码单元410在 不被内核100存取时可关闭电源(例如,用门控频率(gating clock)或去能远程单元410 的电源栅(power grid))。这可降低处理器200的总耗电量。图7图示在处理器具体实施例中撷取微码条目310的方法之一个具体实施例,处 理器具体实施例系包含在个别内核100内的本地微码单元400与共享远程微码单元410。 在图示具体实施例中,操作在方块700开始,其中系于给定内核100内产生微码进入点。在 一个具体实施例中,可将DEC 140配置成产生与从IFU 120收到的指令相对应的微码进入 点,例如藉由译码该指令的各种部分,判断该指令对应至微码,以及由译码后指令产生对应 的进入点。如上述,在有些具体实施例中,也可用DEC 140或在内核100内的其它单元来产 生进入点,对于除指令执行以外的处理器事件,例如重设事件、中断、陷入、例外、错误、呼叫 非架构微码进程(例如,测试或除错进程)的请求、或与微码执行有关的其它类型事件。然后,判断产生的进入点是否对应至位于给定内核100内之本地微码单元400的 条目310,或位于远程微码单元410内(方块702)。在一个具体实施例中,可分割涵盖条 目310的微码地址空间使得一个或更多地址空间部分对应至在本地微码单元400内的条目 310,而一个或更多其它不同的地址空间部分对应至在远程微码单元410内的条目310。例 如,一个具体实施例可支持涵盖4,096个条目310的12位微码地址空间,其中1,024个可位 于本地微码单元400内,而其余的都储存于远程。在此实施例中,16进位进入点数值0x000 至0x3FF可对应至在本地单元400内的条目310,而进入点数值0x400至OxFFF可对应至 在远程单元410内的条目。其它的映像方式也有可能,例如把微码地址空间中多个不连续 部分分配到不同单元的映像方式。此外,在一些具体实施例中,判断进入点是否是在本地或 者远程可取决于除了进入点是否落入特定地址范围以外的示值。例如,藉由与指令之进入 点分开的DEC 140,可从该指令译码得到本地/远程示值。在不同的具体实施例中,可用在 内核100内的译码逻辑(例如,DEC 140)、本地微码单元400 (例如,定序器510)、或在内核 100内的其它逻辑来判断进入点是在本地或者远程。如果产生的进入点对应至位于本地单元400内的条目310,则从本地单元撷取条 目(方块704)。例如,在收到进入点与微码请求的示值后,可将在本地单元400内的定序器 510配置成存取控制储存500以撷取对应的条目310。如果产生的进入点对应至位于远程单元410内的条目310,则请求可传递至远程 单元(方块706)。例如,藉由经由系统接口单元210来传递指定远程单元410为目的地的 请求,DEC 140或者是本地单元400可发出请求给远程单元410。然后,远程单元410可撷 取指定条目310 (方块708)以及送回该条目到给定内核100(方块710)。例如,远程微码单 元接口 610可从SIU 210接收该请求以及插入请求队列620。在被选定时,可处理该请求 以从远程控制储存640撷取指定的条目310,以及可将结果放入传送队列630。随后,接口 610可从传送队列630选出条目310以及经由SIU 210传递到给定内核100。在由本地单元400或者是远程单元410撷取条目310后,可分派它的操作供执行 (方块712)。例如,DEC 140可分派在条目310内指定的操作至其中一个丛集150内的排 程器152,供执行单元154后续执行。在一些具体实施例中,在分派之前,可用例如DEC 140 执行进一步译码在条目310内指定的操作。
14
在一些具体实施例中,在被分派供执行之前,可储存或队列被撷取微码条目310 所指定的操作。例如,DEC 140可实作允许分派从解码或微码撷取行程去耦合之操作的队 列,这可降低可能出现于DEC140或其上游的延迟对于性能的冲击。在一些具体实施例中, 从远程微码单元410撷取的微码条目310所指定的操作在被内核100收到后可直接插入此 种操作队列或储存器,否则被撷取条目310不会被储存或保留于内核100内。不过,在其 它具体实施例中,存放于远程的被撷取条目310可留在内核100内一段时间,这使得该条目 310可再使用而不用再度由远程单元410撷取而需等待。例如,本地微码单元400可包含可 写入储存器,其系于收到从远程单元410撷取的条目310后可写入该条目310。在一个具体 实施例中,该储存器可包含一个或数个缓冲器或缓存器,而且可储存该条目310直到被后 续的被撷取条目310逐出。在另一个具体实施例中,本地单元400可包含例如实作成为控制储存500之一部 分的微码缓存。可将该缓存配置成储存许多被撷取条目310以及可用任一合适配置来组 织,例如直接映像式、集合关连式、完全关连式、等等。可根据任一合适的更换策略来执行缓 存逐出,例如使用频率最低或最近使用最低的策略。在此具体实施例的一个变体中,被撷取 条目310可储存于指令缓存110内而不是在专属微码缓存内。在可缓存储存于远程或储存 于内核100内之被撷取条目310的具体实施例中,对于储存于远程的给定条目310,可在产 生给定条目310的请求之前,或与其并行地,检查该缓存或其它本地储存器。如果想要的条 目310已在本地缓存或其它本地储存器可取得,则可以不产生或取消(如果未完成的话) 远程单元410的请求。可将该微码缓存配置成提供动态微码储存,它对内核100而言是在 本地而且是基于在给定内核100上执行的特定指令流来分配。由于远程微码单元410的等 待时间通常大于给定本地微码单元400的等待时间,因此该微码缓存可减缓不常用指令顺 序的性能问题,当呈顺序出现时可能需要频繁地存取远程微码单元410。应注意,尽管在类似于图4的具体实施例中,多个内核100可共享单一远程微码单 元410,然而在其它具体实施例中可复制远程微码单元410。例如,内核100中数目少于所 有的几个可共享远程微码单元410的数个实例。替换地,远程微码单元410的完整副本可 内含于每个内核100。在该等具体实施例中,复制远程微码单元410所要求的增加之面积可 能会被减少的路由及/或时序复杂度抵消。例如,复制远程微码单元410可减少内核100 至远程微码的平均距离,而可相应地减少远程微码存取等待时间。在许多处理器实作中,微码在处理器实作期间常常是静态不变的而可实作于只读 控制储存内,例如最小化控制储存器要求的面积。不过,在一些具体实施例中,有用的方式 是提供一种可修改微码的技术,例如,以便修正缺陷或增加机能。如图6所示,在一些具体 实施例中,远程微码单元410可包含配置成提供可写入控制储存的附加特征。可将视需要的微码修补RAM 660配置成提供设施让特定进入点可从微码ROM记忆 库650映像到在修补RAM 660内的对应可写入条目310。在一个具体实施例中,修补RAM 660可包含配置成执行许多条目310的可写入储存资源。在一些具体实施例中,修补RAM 660可包含与一个ROM记忆库650相同数目的条目310,而在其它具体实施例中,可提供更 多或更少个条目。修补RAM 660也可为每个条目310提供对应至可指派进入点的资源。在 远程控制储存640包含各个条目数与修补RAM 660相同的许多ROM记忆库650的具体实施 例中,修补RAM 660的给定条目310可映像到ROM记忆库650中之任一个的对应条目310。在修补RAM 660内的位之附加集可指定哪一个记忆库在任何给定时间对应至给定修补RAM 条目。例如,具体实施例可包含4个ROM记忆库650与一个修补RAM记忆库660,各有1000 个条目。在修补RAM 660内的附加位对于其中的每个给定条目310可指定4个ROM记忆库 中之任一个是否映像到给定条目。在其它具体实施例中,修补RAM 660的每个条目可具有 可编程的对应进入点。为了修补在一个记忆库650内的给定条目310,在一个具体实施例中,该给定条目 的想要修补值,以及表示哪个记忆库650要修补或者是特定进入点数值要与该修补RAM条 目关连的信息可储存于修补RAM 660的对应条目内。随后,当远程控制储存640收到存取 特定进入点的请求时,可检查修补RAM 660以判定被请求进入点是否已修补。例如,可将远 程控制储存640配置成判断该特定进入点映像到特定记忆库650,然后检查用于在修补RAM 660内之对应条目310的控制位,以判断是否应该选择储存于修补RAM 660内的条目310而 不是储存于特定记忆库650内的条目310。替换地,可比较该特定进入点与以关连方式编程 于修补RAM 660内的进入点以判断该特定进入点是否命中或匹配修补RAM 660的条目。应 注意,在修补RAM 660已显示为远程微码单元410的视需要特征时,在一些具体实施例中, 本地微码单元400也可以刚刚所描述的类似方式支持在控制储存500内的修补RAM特征。修补RAM 660可容易提供修补个别微码进入点。不过,在一些具体实施例中,最好 再写涵盖许多进入点的整个进程,或用新进程扩充现有的微码。相应地,在一个具体实施 例中,远程微码单元410可包含视需要的动态微码RAM数组670。一般而言,微码RAM数组 670可根据任一合适可写入或非挥发性储存数组技术来实作以及可被配置成除了储存于远 程控制储存640及本地控制储存500内的以外,还可储存许多条目310。在一个具体实施例 中,微码地址空间中与微码RAM数组670之条目310关连的部分(或数个)可不同于微码 地址空间与在远程控制储存640及本地控制储存500内之条目310关连的部分,藉此可根 据被请求进入点来引导被远程微码单元410收到的微码存取请求至远程控制储存640或者 是微码RAM数组670。在其它具体实施例中,可将在微码RAM数组670内的一些条目310配置成遮蔽也 映像至远程控制储存640的进入点或使其无效。例如,微码RAM数组670可包含可编程进入 点控制位或缓存器,其系与在上文关于修补RAM 660之说明类似。在此类具体实施例中,可 检查映像至远程微码单元410的特定进入点以获悉对应的条目310是否已定义于微码RAM 数组670内。如果是,则可忽视在远程控制储存640内的任何对应条目310。在支持某种 程度之定序的一些远程微码单元410之具体实施例中,一旦进入点在开始就已经映像至微 码RAM数组670 (例如,在多条目微码进程开始时)后,则后续的顺序参考可留在分配至微 码RAM数组670的部分微码地址空间内。这允许进程的其余部分可由RAM数组670执行而 不必进一步参考远程控制储存640。应注意,尽管上述具体实施例是用包含数个本地微码单元400与远程微码单元 410的两阶阶层来说明,然而在其它具体实施例中,可用有附加层次的阶层将微码分散于处 理器200内或在系统内之处理器200的多个实例。在一些具体实施例中,计算机系统内可实作处理器200以及其它的组件。图8图标 该系统之一个具体实施例。在图标具体实施例中,计算机系统800包含数个处理节点812A、 812B、812C及812D。各处理节点经由包含于各个别处理节点812A至812D内的存储器控制器816A至816D而耦合至个别存储器814A至814D。另外,处理节点812A至812D包含用于 处理节点812A至812D之间通讯的接口逻辑。例如,处理节点812A包含接口逻辑818A用来 与处理节点812B通讯,接口逻辑818B用来与处理节点812C通讯,以及第三接口逻辑818C 用来与另一个处理节点(未图标)通讯。同样,处理节点812B包含接口逻辑818D、818E及 818F ;处理节点812C包含接口逻辑818G、818H及8181 ;以及,处理节点812D包含接口逻辑 818J、818K及818L。处理节点812D系经耦合成经由接口逻辑818L可与多个输入/输出装 置(例如,呈菊链配置的装置820A至820B)通讯。其它的处理节点可以类似的方式与其它 的I/O装置通讯。可将处理节点812A至812D配置成执行基于封包之链路(packet-based link)供 处理节点间相互通讯用。在图示具体实施例中,该链路系经实作成为单向线路的集合(例 如,线路824A用来从处理节点812A传送封包至处理节点812B,而线路824B用来从处理节 点812B传送封包至处理节点812A)。其它的线路824C至824H集合用来在如图8所示的 其它处理节点之间传送封包。一般而言,每条线路集824可包含一个或更多数据线、与该等 数据线相对应的一个或更多频率线、以及表示正被传递封包之类型的一个或更多控制线。 可以缓存连贯方式操作该链路用于在处理节点之间的通讯,或以不连贯方式用于在处理节 点与I/O装置(或习知构造之I/O总线(例如,周边组件互连(PCI)总线或工业标准架构 (ISA)总线)的总线桥接器)之间的通讯。此外,可以不连贯方式使用如图标在I/O装置之 间的菊链接构来操作该链路。应注意,要从一个处理节点传送到另一个处理节点的封包可 通过一个或更多个中间节点。例如,由处理节点812A传送到处理节点812D的封包可通过 处理节点812B或者是处理节点812C,如图8所示。可使用任何一种合适的路由算法。计算 机系统800的其它具体实施例可包含比图8所示具体实施例所示更多或更少个处理节点。 此外,可用使用适当接口协议的双向总线来实作计算机系统800的其它具体实施例,而不 是使用上述基于封包之协议的单向总线。一般而言,该等封包在节点之间的线路824上是以一个或更多位时间(bit time) 传送。A位时间可为对应频率在线的时钟讯号之上升或下降边缘。该等封包可包含命令封 包用于初始化异动、探查封包用于维持缓存连贯性,以及用于回应探查及命令的回应封包。除了存储器控制器与接口逻辑以外,处理节点812A至812D可包含一个或更多处 理器。大体上,处理节点包括至少一个处理器而且可视需要包含存储器控制器用于按需要 与存储器及其它逻辑通讯。更特别的是,每个处理节点812A至812D可包括如图2所示之 处理器200的一个或更多副本(例如,包含如图1与图3至图7所示的各种结构及操作细 节)。一个或更多处理器可包括在处理节点之中或形成该处理节点的芯片多重处理(CMP) 或芯片多执行绪(CMT)集成电路,或者该处理节点可具有任何其它想要的内部结构。在一 些具体实施例中,处理节点812的存储器控制器及/或周边接口逻辑可直接整合于处理器 200内,如图2所示。例如,存储器控制器816的实例可对应至在处理器200内的存储器控 制器/周边接口 230。存储器814A至814D可包括任何合适的存储器装置。例如,存储器814A至814D 可包括一个或更多 RAMBUS DRAM (RDRAM)、同步 DRAM (SDRAM)、DDR SDRAM、静态 RAM、等等。计 算机系统800的地址空间可分配于存储器814A至814D。每个处理节点812A至812D可包 含存储器映像表用来判断哪个地址映像到哪个存储器814A至814D,以及因而特定地址的存储器请求应该路由到哪个处理节点812A至812D。在一个具体实施例中,用于在计算机 系统800内之地址的连贯点是存储器控制器816A至816D,该等存储器控制器816A至816D 系与储存对应至该地址之字节的存储器耦合。换言之,存储器控制器816A至816D可响应 以确保存取对应存储器814A至814D的每个存储器是以缓存连贯方式出现。存储器控制器 816A至816D可包括用于建立至存储器814A至814D之接口的控制电路。另外,存储器控制 器816A至816D可包含用于队列存储器请求的请求队列。一般而言,接口逻辑818A至818L可包括用于从链路接收封包以及用于缓冲要在 链路上传送之封包的各种缓冲器。如上述,在一些具体实施例中,接口逻辑818可整合于处 理器200内,例如于存储器控制器/周边接口 230内或于与整合存储器控制器不同的个别 接口内。计算机系统800可使用任一合适的流量控制机构用于传送封包。例如,在一个具 体实施例中,每个接口逻辑818都储存每种缓冲器在位于链路另一端(其系连接该接口逻 辑)之接收器内的计数。该接口逻辑不会传输封包,除非接收接口逻辑有空间缓冲器储存 该封包。当接收缓冲器因向前路由封包而空出时,接收接口逻辑会传送讯息给发送接口逻 辑以表示该缓冲器已经空出。此一机构可称作“基于票券”的系统。I/O装置820A至820B可为任一合适的I/O装置。例如,I/O装置820A至820B可 包含装置用于与可耦合该装置的另一个计算机系统通讯(例如,用有线或无线网络适配卡 或调制解调器)。此外,I/O装置820A至820B可包含视讯加速器、声卡、硬盘或软盘驱动器 或驱动控制器、SCSI (小型计算机系统接口)配接器以及电话卡、声音卡、以及各种数据撷 取卡(例如,GPIB或现场总线适配卡。此外,实作成为电路卡的任何I/O装置也可实作成为 系统800之主电路板上的电路、于处理器200内及/或于在处理节点上执行的软件中。应 注意,术语“I/O装置”与术语“周边装置”在本文中意指同义的。此外,可将一个或更多处理器200实作于更传统个人计算机(PC)结构(其系包含 该等处理器至一个或更多I/O互连及/或存储器之桥接器的一个或更多界面)。例如,可将 处理器200配置成用来实作于北桥-南桥阶层内。在此具体实施例中,可将北桥(其系可 耦合或整合于处理器200内)配置成对于系统存储器、图形装置接口及/或其它系统装置 提供高频宽连接性,而南桥对于其它周边装置可经由各种类型周边总线(例如,通用串行 总线(USB)、PCI、ISA、等等)来提供频宽较低的连接性。尽管已相当详细地描述以上的具体实施例,然而在熟谙此艺者一旦完全明白以上 的揭示内容后仍可做出许多变体与修改。下列申请专利范围将被解释成可涵盖所有此类的 变体及修改。产业利用性本发明一般可应用于微处理器。
权利要求
一种处理器,包括多个处理器内核,各处理器内核配置成独立地执行根据程序员可见的指令集架构(ISA)定义的指令,其中该多个处理器内核各自包含配置成储存微码条目的个别本地微码单元;以及远程微码单元,其可被各该处理器内核存取并且包含配置成储存微码条目的远程微码储存;其中,任何一个给定的该处理器内核进一步被配置成产生与特定微码条目相对应的给定的微码进入点,该特定微码条目包含可用该给定的处理器内核执行的一个或多个操作;判断该特定微码条目是否储存于该给定的处理器内核中的该个别本地微码单元内;以及响应于该特定微码条目未储存于该个别本地微码单元内的判断,传递该特定微码条目的请求至该远程微码单元。
2.如权利要求1所述的处理器,其中,为了判断该特定微码条目是否储存于该给定的 处理器内核的该个别本地微码单元内,该给定的处理器内核进一步配置成判断该给定的微 码进入点是否位于与该个别本地微码单元相对应的微码进入点地址空间的一部分中。
3.如前述权利要求中任何一项所述的处理器,其中,响应于收到该请求,该远程微码 单元进一步配置成从该远程微码储存撷取该特定微码条目并且将该特定微码条目送回至 该给定的处理器内核,其中,该特定微码条目包含顺序控制字段,该顺序控制字段配置成表 示在该特定微码条目之后是否有另一个微码条目要撷取,以及其中,该远程微码单元进一 步配置成取决于该顺序控制字段来从该远程微码储存撷取该另一微码条目并且将该另一微码条目送回至该给定的处理器内核,而该给定的处理器内核不用个别请求该另一微码条目。
4.如前述权利要求中任何一项所述的处理器,其中,该处理器内核更各自包含配置成 储存该指令中的数个的个别指令缓存,其中响应于收到在该请求之后的该特定微码条目, 该给定的处理器内核进一步被配置成储存该特定微码条目于该个别指令缓存内。
5.如前述权利要求中任何一项所述的处理器,其中,至少一部分该远程微码储存包含 可写入存储器。
6.如前述权利要求中任何一项所述的处理器,其中,与储存于该本地微码单元内的微 码条目相对应的微码进程都能满足性能敏感性门坎要求,同时至少一些与储存于该远程微 码单元内的微码条目相对应的微码进程各自都不满足该性能敏感性门坎要求。
7.如权利要求6所述的处理器,其中,该性能敏感性门坎要求取决于微码进程执行的频率。
8.如权利要求6所述的处理器,其中,该性能敏感性门坎要求取决于微码进程执行的 等待时间。
9.一种系统,包括 系统存储器;以及如前述权利要求中任何一项所述的处理器,其中,该处理器与该系统存储器耦合。
10.一种方法,包含多个处理器内核中的给定的一个处理器内核产生与特定微码条目相对应的给定的微码进入点,该特定微码条目包含可用该给定的处理器内核执行的一个或更多操作,其中, 该多个处理器内核的每个配置成独立地执行根据程序员可见的指令集架构(ISA)定义的 指令,以及其中,该多个处理器内核各自包含配置成储存数个微码条目的个别本地微码单 元;该给定的处理器内核判断该特定微码条目是否储存于该给定的处理器内核中的该个 别本地微码单元内;以及响应于该特定微码条目未储存于该个别本地微码单元内的判断,该给定的处理器内核 传递该特定微码条目的请求至远程微码单元,其中,该远程微码单元可被每个该处理器内 核存取并且包含配置成储存数个微码条目的远程微码储存。
全文摘要
一种具有阶层式微码储存的多内核处理器。处理器可包含多处理器内核,各个处理器内核系配置成独立执行根据程序员可见的指令集架构(ISA)定义的指令。各内核可包含配置成储存数个微码条目的个别本地微码单元。该处理器也可包含可被每个该等处理器内核存取的远程微码单元。任何给定的其中一个该等处理器内核可被配置成产生给定微码进入点,该给定微码进入点系对应至包含可用该给定处理器内核执行之一个或更多操作的特定微码条目,以及判断该特定微码条目是否储存于该给定内核之该个别本地微码单元内。响应于该特定微码条目未储存于该个别本地微码单元内的判断,该给定内核可传递该特定微码条目的请求至该远程微码单元。
文档编号G06F9/22GK101855614SQ200880102847
公开日2010年10月6日 申请日期2008年7月18日 优先权日2007年7月18日
发明者B·R·霍洛韦, G·W·沈, M·G·巴特勒, S·利 申请人:先进微装置公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1