CN101855614A - 具有阶层式微码储存之多内核处理器 - Google Patents

具有阶层式微码储存之多内核处理器 Download PDF

Info

Publication number
CN101855614A
CN101855614A CN200880102847A CN200880102847A CN101855614A CN 101855614 A CN101855614 A CN 101855614A CN 200880102847 A CN200880102847 A CN 200880102847A CN 200880102847 A CN200880102847 A CN 200880102847A CN 101855614 A CN101855614 A CN 101855614A
Authority
CN
China
Prior art keywords
microcode
clauses
subclauses
processor cores
given
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.)
Pending
Application number
CN200880102847A
Other languages
English (en)
Inventor
G·W·沈
B·R·霍洛韦
S·利
M·G·巴特勒
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.)
Advanced Micro Devices 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 CN101855614A publication Critical patent/CN101855614A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/223Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一种具有阶层式微码储存的多内核处理器。处理器可包含多处理器内核,各个处理器内核系配置成独立执行根据程序员可见的指令集架构(ISA)定义的指令。各内核可包含配置成储存数个微码条目的个别本地微码单元。该处理器也可包含可被每个该等处理器内核存取的远程微码单元。任何给定的其中一个该等处理器内核可被配置成产生给定微码进入点,该给定微码进入点系对应至包含可用该给定处理器内核执行之一个或更多操作的特定微码条目,以及判断该特定微码条目是否储存于该给定内核之该个别本地微码单元内。响应于该特定微码条目未储存于该个别本地微码单元内的判断,该给定内核可传递该特定微码条目的请求至该远程微码单元。

Description

具有阶层式微码储存之多内核处理器
技术领域
本发明系关于处理器,且更特别的是,有关于在包含多处理器内核的处理器内实作微码。
背景技术
随着处理器实作的发展,日益常见的企图是藉由复制处理器内的处理器内核来增加处理器性能。该等内核能够独立地执行指令,这可增加用于执行应用***的粗粒度并行性(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)。在不同的具体实施例中,该等丛集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)。例如,顺序控制字段330可被配置成表示进程的退出点(亦即,为特定进程终止处的条目310),或可表示微码流控制的非顺序性改变,例如有条件或无条件分支或跳越至不同的进入点。在一些具体实施例中,微码顺序控制可管线化使得与给定条目310有关的顺序控制字段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与传送队列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至0xFFF可对应至在远程单元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内指定的操作。
在一些具体实施例中,在被分派供执行之前,可储存或队列被撷取微码条目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及818I;以及,处理节点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、等等)来提供频宽较低的连接性。
尽管已相当详细地描述以上的具体实施例,然而在熟谙此艺者一旦完全明白以上的揭示内容后仍可做出许多变体与修改。下列申请专利范围将被解释成可涵盖所有此类的变体及修改。
产业利用性
本发明一般可应用于微处理器。

Claims (10)

1.一种处理器,包括:
多个处理器内核,各处理器内核配置成独立地执行根据程序员可见的指令集架构(ISA)定义的指令,其中该多个处理器内核各自包含配置成储存微码条目的个别本地微码单元;以及
远程微码单元,其可被各该处理器内核存取并且包含配置成储存微码条目的远程微码储存;
其中,任何一个给定的该处理器内核进一步被配置成:
产生与特定微码条目相对应的给定的微码进入点,该特定微码条目包含可用该给定的处理器内核执行的一个或多个操作;
判断该特定微码条目是否储存于该给定的处理器内核中的该个别本地微码单元内;以及
响应于该特定微码条目未储存于该个别本地微码单元内的判断,传递该特定微码条目的请求至该远程微码单元。
2.如权利要求1所述的处理器,其中,为了判断该特定微码条目是否储存于该给定的处理器内核的该个别本地微码单元内,该给定的处理器内核进一步配置成判断该给定的微码进入点是否位于与该个别本地微码单元相对应的微码进入点地址空间的一部分中。
3.如前述权利要求中任何一项所述的处理器,其中,响应于收到该请求,该远程微码单元进一步配置成从该远程微码储存撷取该特定微码条目并且将该特定微码条目送回至该给定的处理器内核,其中,该特定微码条目包含顺序控制字段,该顺序控制字段配置成表示在该特定微码条目之后是否有另一个微码条目要撷取,以及其中,该远程微码单元进一步配置成取决于该顺序控制字段来从该远程微码储存撷取该另一微码条目并且将该另一微码条目送回至该给定的处理器内核,而该给定的处理器内核不用个别请求该另一微码条目。
4.如前述权利要求中任何一项所述的处理器,其中,该处理器内核更各自包含配置成储存该指令中的数个的个别指令缓存,其中响应于收到在该请求之后的该特定微码条目,该给定的处理器内核进一步被配置成储存该特定微码条目于该个别指令缓存内。
5.如前述权利要求中任何一项所述的处理器,其中,至少一部分该远程微码储存包含可写入存储器。
6.如前述权利要求中任何一项所述的处理器,其中,与储存于该本地微码单元内的微码条目相对应的微码进程都能满足性能敏感性门坎要求,同时至少一些与储存于该远程微码单元内的微码条目相对应的微码进程各自都不满足该性能敏感性门坎要求。
7.如权利要求6所述的处理器,其中,该性能敏感性门坎要求取决于微码进程执行的频率。
8.如权利要求6所述的处理器,其中,该性能敏感性门坎要求取决于微码进程执行的等待时间。
9.一种***,包括:
***存储器;以及
如前述权利要求中任何一项所述的处理器,其中,该处理器与该***存储器耦合。
10.一种方法,包含:
多个处理器内核中的给定的一个处理器内核产生与特定微码条目相对应的给定的微码进入点,该特定微码条目包含可用该给定的处理器内核执行的一个或更多操作,其中,该多个处理器内核的每个配置成独立地执行根据程序员可见的指令集架构(ISA)定义的指令,以及其中,该多个处理器内核各自包含配置成储存数个微码条目的个别本地微码单元;
该给定的处理器内核判断该特定微码条目是否储存于该给定的处理器内核中的该个别本地微码单元内;以及
响应于该特定微码条目未储存于该个别本地微码单元内的判断,该给定的处理器内核传递该特定微码条目的请求至远程微码单元,其中,该远程微码单元可被每个该处理器内核存取并且包含配置成储存数个微码条目的远程微码储存。
CN200880102847A 2007-07-18 2008-07-18 具有阶层式微码储存之多内核处理器 Pending CN101855614A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/779,642 2007-07-18
US11/779,642 US7743232B2 (en) 2007-07-18 2007-07-18 Multiple-core processor with hierarchical microcode store
PCT/US2008/008802 WO2009011913A1 (en) 2007-07-18 2008-07-18 Multiple-core processor with hierarchical microcode store

Publications (1)

Publication Number Publication Date
CN101855614A true CN101855614A (zh) 2010-10-06

Family

ID=39744974

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880102847A Pending CN101855614A (zh) 2007-07-18 2008-07-18 具有阶层式微码储存之多内核处理器

Country Status (7)

Country Link
US (1) US7743232B2 (zh)
EP (1) EP2171574B1 (zh)
JP (1) JP5372929B2 (zh)
KR (1) KR101493017B1 (zh)
CN (1) CN101855614A (zh)
TW (1) TWI433032B (zh)
WO (1) WO2009011913A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102446087A (zh) * 2010-10-12 2012-05-09 无锡江南计算技术研究所 指令预取方法与预取装置
CN105027075A (zh) * 2012-12-28 2015-11-04 英特尔公司 具有共享前端单元的处理核
WO2017202083A1 (zh) * 2016-05-25 2017-11-30 中兴通讯股份有限公司 微码调试方法及单板
CN108153559A (zh) * 2017-12-08 2018-06-12 芯海科技(深圳)股份有限公司 一种不影响mcu工作实时性的快速重构架构
US10083037B2 (en) 2012-12-28 2018-09-25 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10255077B2 (en) 2012-12-28 2019-04-09 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7971104B2 (en) * 2006-10-24 2011-06-28 Shlomi Dolev Apparatus and methods for stabilization of processors, operating systems and other hardware and/or software configurations
PL2171102T3 (pl) * 2007-07-19 2018-02-28 Muhr Und Bender Kg Pas stali o zmiennej grubości w kierunku długości
US8615647B2 (en) 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
FR2938943B1 (fr) * 2008-11-21 2010-11-12 Thales Sa Systeme multiprocesseur.
US8281110B2 (en) * 2009-07-15 2012-10-02 Via Technologies, Inc. Out-of-order microprocessor with separate branch information circular queue table tagged by branch instructions in reorder buffer to reduce unnecessary space in buffer
US9354944B2 (en) 2009-07-27 2016-05-31 Advanced Micro Devices, Inc. Mapping processing logic having data-parallel threads across processors
US8504807B2 (en) * 2009-12-26 2013-08-06 Intel Corporation Rotate instructions that complete execution without reading carry flag
US20110296096A1 (en) * 2010-05-28 2011-12-01 Xiang Zou Method And Apparatus For Virtualized Microcode Sequencing
US8990602B2 (en) * 2010-12-21 2015-03-24 Intel Corporation Apparatus, method, and system for early deep sleep state exit of a processing element
US20120166777A1 (en) * 2010-12-22 2012-06-28 Advanced Micro Devices, Inc. Method and apparatus for switching threads
WO2013081744A1 (en) * 2011-11-30 2013-06-06 Axis Semiconductor, Inc. Herarchical multi-core processor and method of programming for efficient data processing
US9448879B2 (en) 2011-12-22 2016-09-20 Intel Corporation Apparatus and method for implement a multi-level memory hierarchy
US20140258685A1 (en) * 2011-12-30 2014-09-11 Srihari Makineni Using Reduced Instruction Set Cores
US9983953B2 (en) * 2012-12-20 2018-05-29 Intel Corporation Multiple computer system processing write data outside of checkpointing
US9542193B2 (en) 2012-12-28 2017-01-10 Intel Corporation Memory address collision detection of ordered parallel threads with bloom filters
GB2518613A (en) 2013-09-25 2015-04-01 Ibm Multiple core processing with high throughput atomic memory operations
US9372696B2 (en) * 2013-10-18 2016-06-21 Via Technologies, Inc. Microprocessor with compressed and uncompressed microcode memories
KR101940382B1 (ko) * 2016-12-21 2019-04-11 연세대학교 산학협력단 페이지의 프리페칭 방법 및 장치
US10686729B2 (en) 2017-03-29 2020-06-16 Fungible, Inc. Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths
WO2018183526A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking, full-mesh data center network having optical permutors
US10637685B2 (en) 2017-03-29 2020-04-28 Fungible, Inc. Non-blocking any-to-any data center network having multiplexed packet spraying within access node groups
CN110741356B (zh) 2017-04-10 2024-03-15 微软技术许可有限责任公司 多处理器***中的中继一致存储器管理
US10452586B2 (en) 2017-04-17 2019-10-22 Intel Corporation Avoid thread switching in cache management
EP3625940A1 (en) 2017-07-10 2020-03-25 Fungible, Inc. Data processing unit for compute nodes and storage nodes
WO2019014268A1 (en) * 2017-07-10 2019-01-17 Fungible, Inc. DATA PROCESSING UNIT FOR FLOW PROCESSING
US11178262B2 (en) 2017-09-29 2021-11-16 Fungible, Inc. Fabric control protocol for data center networks with packet spraying over multiple alternate data paths
WO2019068017A1 (en) 2017-09-29 2019-04-04 Fungible, Inc. RESILIENT NETWORK COMMUNICATION USING SELECTIVE PULVER FLOW SPRAY BY MULTIPATH PATH
US10841245B2 (en) 2017-11-21 2020-11-17 Fungible, Inc. Work unit stack data structures in multiple core processor system for stream data processing
WO2019152063A1 (en) 2018-02-02 2019-08-08 Fungible, Inc. Efficient work unit processing in a multicore system
US10365860B1 (en) 2018-03-08 2019-07-30 quadric.io, Inc. Machine perception and dense algorithm integrated circuit
US10997115B2 (en) 2018-03-28 2021-05-04 quadric.io, Inc. Systems and methods for implementing a machine perception and dense algorithm integrated circuit and enabling a flowing propagation of data within the integrated circuit
US11467838B2 (en) 2018-05-22 2022-10-11 Advanced Micro Devices, Inc. Fastpath microcode sequencer
US10929175B2 (en) 2018-11-21 2021-02-23 Fungible, Inc. Service chaining hardware accelerators within a data stream processing integrated circuit
US11016763B2 (en) 2019-03-08 2021-05-25 Advanced Micro Devices, Inc. Implementing a micro-operation cache with compaction
US12039337B2 (en) * 2020-09-25 2024-07-16 Advanced Micro Devices, Inc. Processor with multiple fetch and decode pipelines
TWI783310B (zh) * 2020-11-26 2022-11-11 華邦電子股份有限公司 計數方法以及計數裝置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1464570A (en) 1974-11-27 1977-02-16 Ibm Microprogramme control units
US4498132A (en) 1981-05-22 1985-02-05 Data General Corporation Data processing system using object-based information and a protection scheme for determining access rights to such information and using multilevel microcode techniques
US4455604A (en) 1981-05-22 1984-06-19 Data General Corporation Digital data processing system having addressing means for translating operands into descriptors identifying data, plural multilevel microcode control means, and ability to execute a plurality of internal language dialects
JPS58182758A (ja) 1982-04-20 1983-10-25 Toshiba Corp 演算制御装置
IT1151683B (it) 1982-07-06 1986-12-24 Honeywell Inf Systems Sistema multiprocessore a bus asincrono con caricamento di microistruzioni da memoria di lavoro
US4901235A (en) 1983-10-28 1990-02-13 Data General Corporation Data processing system having unique multilevel microcode architecture
US4670835A (en) 1984-10-19 1987-06-02 Honeywell Information Systems Inc. Distributed control store word architecture
US5036453A (en) * 1985-12-12 1991-07-30 Texas Instruments Incorporated Master/slave sequencing processor
JP2753755B2 (ja) * 1990-02-09 1998-05-20 富士通株式会社 制御記憶割付け装置
US5386547A (en) * 1992-01-21 1995-01-31 Digital Equipment Corporation System and method for exclusive two-level caching
EP0596144A1 (en) * 1992-10-07 1994-05-11 International Business Machines Corporation Hierarchical memory system for microcode and means for correcting errors in the microcode
US5574927A (en) * 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
JPH07311752A (ja) 1994-05-11 1995-11-28 Internatl Business Mach Corp <Ibm> 分散データ処理システム及び初期プログラムロード方法
JP3177117B2 (ja) 1994-05-11 2001-06-18 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 複数のノード内の制御コードを更新する方法および装置
US5796972A (en) 1997-01-14 1998-08-18 Unisys Corporation Method and apparatus for performing microcode paging during instruction execution in an instruction processor
US6141740A (en) 1997-03-03 2000-10-31 Advanced Micro Devices, Inc. Apparatus and method for microcode patching for generating a next address
US5845102A (en) * 1997-03-03 1998-12-01 Advanced Micro Devices, Inc. Determining microcode entry points and prefix bytes using a parallel logic technique
US6725334B2 (en) * 2000-06-09 2004-04-20 Hewlett-Packard Development Company, L.P. Method and system for exclusive two-level caching in a chip-multiprocessor
US7415703B2 (en) 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US7095342B1 (en) 2005-03-31 2006-08-22 Intel Corporation Compressing microcode
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102446087A (zh) * 2010-10-12 2012-05-09 无锡江南计算技术研究所 指令预取方法与预取装置
CN102446087B (zh) * 2010-10-12 2014-02-26 无锡江南计算技术研究所 指令预取方法与预取装置
CN105027075B (zh) * 2012-12-28 2019-01-29 英特尔公司 具有共享前端单元的处理核
US10083037B2 (en) 2012-12-28 2018-09-25 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10089113B2 (en) 2012-12-28 2018-10-02 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10095521B2 (en) 2012-12-28 2018-10-09 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
CN105027075A (zh) * 2012-12-28 2015-11-04 英特尔公司 具有共享前端单元的处理核
US10255077B2 (en) 2012-12-28 2019-04-09 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10664284B2 (en) 2012-12-28 2020-05-26 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
WO2017202083A1 (zh) * 2016-05-25 2017-11-30 中兴通讯股份有限公司 微码调试方法及单板
CN108153559A (zh) * 2017-12-08 2018-06-12 芯海科技(深圳)股份有限公司 一种不影响mcu工作实时性的快速重构架构

Also Published As

Publication number Publication date
JP5372929B2 (ja) 2013-12-18
JP2010533920A (ja) 2010-10-28
KR20100063024A (ko) 2010-06-10
WO2009011913A1 (en) 2009-01-22
TWI433032B (zh) 2014-04-01
US7743232B2 (en) 2010-06-22
TW200912738A (en) 2009-03-16
EP2171574B1 (en) 2016-02-10
EP2171574A1 (en) 2010-04-07
KR101493017B1 (ko) 2015-02-12
US20090024836A1 (en) 2009-01-22

Similar Documents

Publication Publication Date Title
CN101855614A (zh) 具有阶层式微码储存之多内核处理器
CN104951281B (zh) 用于实现动态无序处理器流水线的方法和装置
Sankaralingam et al. Distributed microarchitectural protocols in the TRIPS prototype processor
EP2203811B1 (en) Parallel processing computer system with reduced power consumption and method for providing the same
EP3716056A1 (en) Apparatus and method for program order queue (poq) to manage data dependencies in processor having multiple instruction queues
CN108268282A (zh) 用以检查和存储对存储器地址是否在持久存储器中的指示的处理器、方法、***和指令
US20080109637A1 (en) Systems and methods for reconfigurably multiprocessing
CN108701040A (zh) 用户级别线程暂停的方法、设备、和指令
US9904553B2 (en) Method and apparatus for implementing dynamic portbinding within a reservation station
Arora The architecture and evolution of cpu-gpu systems for general purpose computing
CN101183315A (zh) 一种并行多处理器虚拟机***
TW200421178A (en) Enhanced processor virtualization mechanism via saving and restoring soft processor/system states
CN109997109A (zh) 具有提取提前滞后的流引擎
EP4020189A1 (en) Methods, systems, and apparatuses for a scalable reservation station implementing a single unified speculation state propagation and execution wakeup matrix circuit in a processor
TWI469047B (zh) 使用儲存預先擷取來消減久存潛時之方法和裝置
Ausavarungnirun Techniques for shared resource management in systems with throughput processors
Ze et al. Design of Shared Register File of GPU Unified Shader Array
Keckler et al. Architecture and Implementation of the TRIPS Processor
Fang et al. FastLanes: An FPGA accelerated GPU microarchitecture simulator
Goossens et al. A Multicore and Multithreaded Microcontroller
Keckler et al. Architecture and Implementation of the TRIPS Processor........... and Premkishore Shivakumar
Walter Computer architecture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20101006