可动态和选择性停用内核以及重新设定多内核微处理器 技术领域 本发明涉及一种多内核微处理器, 尤其涉及一种具有动态停用或重新设定内核的 功能的多内核微处理器。
背景技术 在一些传统的多内核微处理器中, 制造商也许会在微处理器烧断每一内核上的熔 丝 (fuse, 又称之为 “熔线” ), 来指定多内核微处理器的每一内核的设定, 藉以每一内核可以 稳定的确定多内核微处理器的内核熔丝 (fuse) 数值, 以确定系统内哪一内核能够执行处 理数据。虽然这种解决方法可能有许多优点, 但缺点是一旦使用第一个多内核微处理器的 设定, 而内核上的熔丝 (fuse) 被烧断, 也许产生第二次设定的需求时, 已烧断熔丝 (fuse) 的内核不能再重新设定。 在某些应用中, 例如执行不能支持多内核测试或是应用的软件, 也 许需要停用内核。此外, 在许多应用中, 并非所有微处理器的内核是需要的, 甚至内核会在 休眠状态用以节省功率的情况下, 内核依然引起处理器或系统总线与内核共享的拖曳。拖
曳可以被例如对窥探周期的响应而引起。 此外, 多内核微处理器中, 个别内核也许会在制造 中有缺陷或是在测试或是操作过程中故障。 这样的情况也许会干扰为了内核间的通信而在 处理器的内核间所设置的预设调整系统。因此, 现今需要的是一个重新设定多内核微处理 器的可靠方法。 发明内容
在一方面, 本发明提供一种可动态重新设定的多内核微处理器, 该多内核微处理 器包含多个初始启动的处理内核, 每个处理内核被设定为执行系统软件发出的终止指令, 以及内部存储且已设定的微码, 藉以停止响应于耦合在多内核微处理器的系统总线的异 动。执行终止指令的处理内核保有恢复的可操作性, 其通过外部重置输入在多内核微处理 器的重置引脚。处理内核也许能从微处理器移除电源, 然后再接上的情况下恢复但在实务 上, 停用的设定是不可以被撤回的。 在重置或是重新接上电源后, 执行终止指令而停用的初 始启动的处理内核会恢复成可操作的已启动内核, 而除非接收到另一终止指令, 否则其不 会停用。
在相关方面, 因为处理内核因为无法对系统总线的异动产生响应, 执行终止指令 而停用的处理内核, 并不会响应或遵行重置讯息指令, 以及由于响应或遵行于重置讯息指 令而停用。 此外, 处理内核因为无法对系统总线的异动产生响应, 因此处理内核不会对系统 总线的窥探周期响应, 进而不会增加处理器总线的相关拖曳。
另一方面, 该每一已初启用的内核更进一步设定对该终止指令响应, 而使该每一 已初启用的内核自行进入一省电睡眠状态。此外, 该其他未接收到该终止指令的已初启用 内核被设定为, 通过接收到内部电源状态的一管理微码来调整彼此间的电源状态管理, 而 非依据任何已停用内核的电源状态需求值。
另一方面, 本发明提供一种具有可动态重新设定内核间调整系统的多内核微处理器, 可动态重新设定的多内核微处理器包含多个处理内核, 这些多个处理内核中, 至少有一 处理内核被指定为一主要内核。 该可动态重新设定的多内核微处理器还包含至少一边带通 信线, 该边带通信线被设置于一系统总线的外部并且电性连接于一芯片组, 藉以增进这些 处理内核间的通信。每一组边带通信线电性连接于至少两处理内核, 该两处理内核若有任 何一个是被指定为主要内核, 在运作时可重新设定该主要内核或移除原有的指定。该两处 理内核被设定为有条件地驱动一输出至该边带通信线的一连接端, 该连接端是根据该两处 理内核的指定, 如果缺乏前述设定, 则该处理内核作为主要内核。
在其他方面, 每一处理内核包含一预设设定, 且预设设定被存储于这些处理内核 内部逻辑中, 藉以判断该处理内核是否为主要内核, 这些处理内核包含一存储器, 且内部的 存储器用以存储对该处理内核的一修正设定。此外, 该内部的存储器用以存储对该多内核 微处理器所作的一修正设定, 如果有修正设定的话, 该修正设定用以辨识其他该多内核微 处理器的已启用内核和这些启用内核的主要设定。
另一方面, 这些处理内核设有内部电源状态的一管理微码, 并依据该修正设定所 存储的内容调整其电源状态管理。
另一方面, 本发明提供一种中止包含多个内核的多内核微处理器内的一或多个内 核的方法。每一内核执行系统软件程序的第一或终止指令, 用以指示内核自行中止。其余 未执行该第一指令的多个内核则执行系统软件程序的第二指令, 藉以指定多内核微处理器 的内核设定。内核设定可通过使用者指定而反映到一或多个已停用的内核。
另一方面, 执行终止指令的内核停止响应于一总线上包含重置讯息指令以及以最 小的功耗状态转换的异动。然而, 该内核对于外部重设多内核微处理器的重置引脚的外部 重设响应的功能被保留。
另一方面, 其余的内核将该内核设定存储于其内部, 以作为执行第二指令的一部 分。
另一方面, 每一内核, 在重置后且在执行任何终止指令之前, 立即确认该多内核微 处理器的一初始预设内核设定。 然而, 在一或多个内核接收并计算任何终止指令后, 其余每 一内核根据存储的内核设定来执行, 而不是根据初始设定。
另一方面, 内核在重置后, 首先随即确认一初始内核设定, 之后基本输入 / 输出系 统 (Basic Input/Output System ; BIOS) 发出一终止或设定更新写入指令至每一内核的模 型专用寄存器 (Model-Specific Register ; MSR), 其中终止或设定更新写入指令是与使用 者所指定而存储在存储器并用以提供芯片组供应微处理器相符且一致的。在停用及其余 已启用的内核分别执行其指令后, 除了那些正在执行基本输入 / 输出系统 (Basic Input/ Output System ; BIOS) 的内核之外, 基本输入 / 输出系统 (Basic Input/Output System ; BIOS) 发出一停止指令至其余每一个已启用的内核, 藉以指示内核停止执行, 但仍保有内核 响应于系统总线异动的功能。之后基本输入 / 输出系统 (Basic Input/Output System ; BIOS) 在单一剩余执行内核上启动一操作系统, 接着执行系统发送一重置指令指示内核自 行重置, 但任何一个不再响应于系统总线异动而停用的内核, 不会响应或遵行重置指令, 只 有执行停止指令的内核遵行于重置指令。
另一方面, 本发明提供一种动态重置多内核微处理器内的一或多个内核的方法, 该多内核微处理器包含多个内核以及至少一组边带通信线, 边带通信线被设置于一系统总线外部并电性连接于一芯片组, 藉以增进无系统总线的这些内核间的通信。其中每一内核 被设定为有条件地驱动一边带通信线至一连接端, 该连接端根据该内核的指定, 如果缺乏 前述设定, 则该内核作为主要内核。其中至少有一些内核可被重新设定为具有或并无主要 身分码, 藉以架构基底边带内核间的通信。
另一非限制的例中, 适用于微处理器的方法包含多个多内核芯片, 每一芯片具有 一被指定为主要内核的内核, 该方法还包含一组电性连接于芯片的芯片间边带通信线, 其 中每一芯片的内核电性连接于该组芯片间边带通信线, 并且被设定为有条件地驱动一输出 至该组芯片间边带通信线, 其根据该两处理内核的指定, 如果其中该芯片的一内核缺乏前 述设定, 则作为该芯片的主要内核 ; 并且若有任何芯片的内核是被指定为主要内核, 在运作 时可重新设定为主要内核或移除原有的指定。
处理器的内核具有一初始设定, 藉以设定至少一个内核作为主要内核, 而不是设 定全部内核作为主要内核。该初始设定可通过选择性的烧断一适用于每一个内核的熔丝 (fuse) 而产生, 其中适用的熔丝 (fuse) 系定义为在预设的情况下, 内核是否具有一或多个 主要身分码。 通过设定发现微码在该每一内核上运行, 而选择性的确认初始设定后, 一适用 于内核的修正设定是将主要设定从最初如此设定的内核中移除, 并且指派一主要设定至一 最初没有如此设定的内核。 另一方面, 内核根据修正内核设定来操作, 该修正内核设定例如包含以相容的方 式调整内核间的电源状态管理。
另一方面, 一使用者经由一使用者接口操作定义一修正设定 ( 如果在定义的限制 范围内适用的话 ), 接下来系统软件程序提供修正设定至内核, 内核再将其存储至内核内。
另一方面, 内核根据临时设定而被重新设定, 其中临时设定为指定一个非主要内 核作为临时主要内核, 从驱动一适合的边带通信线中止该已设定的主要内核, 然后启动临 时主要内核来驱动适合的边带通信线。 在相关方面, 非主要内核对侦测到与一中止、 不能执 行、 一故障、 或是已设定的主要内核故障的情况一致而响应时, 非主要内核即执行该临时设 定。 目前临时的主要内核分配临时设定至其他内核 ( 例如在同样芯片的其他内核 ), 藉以启 动这些内核根据临时设定来操作。 已指定的主要内核通过一后续的异动启动一控制权移转 回到其本身, 在这样的情况下, 临时主要内核取消临时设定, 并且传送给被临时设定影响的 内核。
附图说明
图 1 是显示本发明计算系统的多内核微处理器的方块图 ;
图 2 是显示本发明的图 1 的其中的一内核的详细方块图 ; 以及
图 3A 是显示本发明的图 1 的多内核微处理器执行动态设定发现以及修正过程的 操作流程图 ; 以及
图 3B 是显示本发明的图 1 的多内核微处理器执行动态设定发现以及修正过程的 操作流程图。
【主要元件符号说明】
100 计算系统
102 多内核微处理器7CN 102521002 A
说双内核芯片 0 双内核芯片 1 内核 0 内核 1 内核 2 内核 3 输出焊接点 输入 1 焊接点 输入 2 焊接点 输入 3 焊接点 内核间的通信线 芯片组 系统总线 内核间的通信线 基本输入输出系统 (BIOS)明书4/15 页104 104 106 106 106 106 108 108 108 108 112 114 116 118 152 154 156 158 202 204 206 207 208 212 214 216 218 222 224 226 228 232 234 236 238 242 252 254 302非易失性随机存取存储器 (NVRAM) 操作系统 显示器、 键盘、 鼠标 指令快取存储器 指令译码器 微序列器 微码存储器 微码 寄存器别名表 保留站 执行单元 退移单元 数据快取存储器 总线接口单元 (BIU) 相位锁定回路 启动服务处理器 (BSP) 指示 主要指示 控制状态寄存器 控制状态寄存器 模块特定寄存器 内核时钟 启用指示 设定存储器 使用者指定内核设定304306 308 312314基本输入 / 输出系统 (BIOS) 将使用者所指 定的设定, 存储在非易失性随机存取存储器 NVRAM) 重置微处理器 每一内核的重置微码确定初始设定 基本输入 / 输出系统 (BIOS) 写入每一内核 的模块特定寄存器 (MSR) 来指示其自我终止 其中每一内核并不包含在使用者所指定的 设定内 每一内核引动一微码的一部分来执行响应 于在方块所执行的写入型号专用寄存器 (WRMSR) 的指令, 并且微码写入控制寄存器 来终止该内核 ( 例如停用响应于总线上的窥探周 期, 使内核转换至最小功耗状态 ), 并且微码从 不返回至使用者码 基本输入 / 输出系统 (BIOS) 写入其余内核 的模块特定寄存器 (MSR) 来指示使用者所指定 的设定覆写初始设定 每一其余的内核引动微码来响应于写入型 号专用寄存器 (WRMSR) 的指令, 且微码存储 使用者所指定的设定且根据其设定来操作 除了基本输入 / 输出系统 (BIOS) 所执行使 用的内核外, 基本输入 / 输出系统 (BIOS) 停止 其余内核 基本输入 / 输出系统 (BIOS) 在执行内核上 启动操作系统 ; 操作系统发送初始化 (INIT) 讯 息至所有其他内核, 并启动他们 终止的内核不响应于初始化 (INIT) 讯息 ; 其余内核根据存储使用者所指定的设定来响应 并操作, 而不是根据初始设定来响应并操作 引脚 引脚 引脚 引脚316318322324326P1 P2 P3 P4具体实施方式
在此叙述多内核微处理器的动态重新设定内核的结构及方法的实施例。一方面, 多内核微处理器以及相关方法用以支持系统软件 ( 例如 BIOS 或其他操作系统 ) 来停用或 终止所选择的内核的能力。有利的是, 经由上述中止内核的方法不会导致与其他内核共享处理器总线的拖曳。举例来说, 这样特征在性能测试上或是对于不支持多内核的软件而言 是理想的功能。另一方面, 多内核微处理器以及相关方法用以支持重新设定微处理器内核 间的调整系统。 有利的是, 内核可被选择性的指定为主要内核, 藉以驱动信号至内核间的通 信线。 这样的方式下, 微处理器会设定为适用于甚至可以自我修复内核间通信的目的, 而响 应于停用或是呈现无法指定为主要内核的情况。此外, 微处理器也许会设定一可选择内核 间最佳给定指令的协调系统。
在一些实施例中, 新的设定以及指定也许是由使用者指定或是经由系统软件或是 固件所提供, 如基本输入 / 输出系统 (Basic Input/Output System ; BIOS)。在其他实施例 中, 适用的修正的指定和 / 或临时的指定, 系响应于内部内核逻辑或微码侦测到的情况而 执行。
请参阅图 1, 图 1 是显示本发明的一计算系统 100 包含一多内核微处理器 102。图 1 的计算系统 100 在某些方面与美国专利申请案案号 61/426,470, 申请日 12/22/2010, 名称 为 “多处理器内核间的分散式电源管理 (Decentralized Power Management Distributed Among Multiple Processor Cores)” 相似, 其同在申请的非临时申请案 (CNTR2527) 也在本 文中纳入参考。 此外, 图 1 的计算系统 100 在某些方面与美国专利申请案案号 61/426,470, 申 请 日 12/22/2010, 名称为 “动 态 的 多 内 核 微 处 理 器 设 定 (Dynamic Multi-Core Microprocessor Configuration)” 相似, 其同案的非临时申请案 (CNTR2533) 也在本文中纳 入参考。
计算系统 100 包含一单芯片组 114, 单芯片组 114 通过系统总线 116 耦合在多内核 微处理器 102, 其中系统总线 116 包含一总线时钟。芯片组 114 可操作来产生一重置信号, 且该重置信号由多内核微处理器 102 所接收。 计算系统 100 还包含一非易失性存储器 152, 例如快闪存储器, 该非易失性存储器 152 用以存储如基本输入 / 输出系统 (Basic Input/ Output System ; BIOS) 码的系统固件。计算系统 100 还包含一非易失性的随机存取存储器 154, 例如快闪存储器或是在个人计算系统常见的电池供电的随机存取存储器, 非易失性随 机存取存储器 154 用以存储本文所述的使用者所指定的内核设定。计算系统 100 还包含一 存储装置 156, 例如磁盘驱动器, 存储器 156 用以存储操作软件。 此外, 计算系统 100 还包含 一输入 / 输出装置 158, 例如一用以显示输出如基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 所显示的内核设定选单而给使用者看的显示器、 一用以接受使用者输入 如本文所述的内核设定的键盘及鼠标。
多内核微处理器 102 封装包含两双内核芯片 104 并且表示为芯片 0 及芯片 1。芯 片 104 被安装在封装基板上, 每一双内核芯片 104 包含两处理内核 106。芯片 0 包含内核 0 及内核 1, 且芯片 1 包含内核 2 及内核 3。每一芯片 104 内的两处理内核 106, 系经由芯片 104 内的内核间的通信线 112 而通信。更具体地说, 内核间的通信线 112 使分别在芯片 104 内的处理内核 106 能中断彼此, 并且发送另一讯息来调整彼此间不同的发现 (discovery) 和管理流程, 其中各发现以及管理流程中包含微处理器的设定发现及修正设定。
在另一相关的实施例中, 内核间的通信线 112 包含一具有并联导线的总线。在 相关的实施例中, 内核间的通信线 112 包含旁路总线, 其中旁路总线与美国专利申请案 案 号 61/426,470, 申 请 日 12/22/2010, 名称为 “分 散 式 电 源 管 理 分 部 多 个 处 理 器 内 核 (Decentralized Power Management Distributed Among Multiple Processor Cores)”相似, 其同在申请的非临时申请案 (CNTR2527) 也在本文中纳入参考引用。在其他实施例 中, 内核间的通信线 112 包含一相对较小的内核间的通信线, 这样的设置可在各方面与 CNTR2503 所描述替代的边带设定相比较, 或是可与 CNTR2527 所描述的内核间的通信线的 相比较。
在本文中所述, “伙伴” 一词是指同一芯片 104 的处理内核 106, 且芯片 104 通过对 应的边带内核间的通信线来彼此通信。因此, 在图 1 的实施例中, 内核 0 及内核 1 为伙伴, 且内核 2 及内核 3 为伙伴。
每一芯片 104 提供多个用以将芯片 104 耦合至系统总线的焊接点, 以及多个用以 将芯片 104 耦合至内核间的通信线 118 的额外的边带通信焊接点。 具体来说, 每一芯片 104 包含四个边带通信焊接点 108, 四个边带通信焊接点 108 分别对应耦合至四个表示为 “P1” 、 “P2” 、 “P3” 以及 “P4” 的引脚。四个边带通信焊接点 108 中, 一个是输出焊接点 ( 表示为 “输 出” ) 以及三个输入焊接点 ( 表示为输入 1、 输入 2 以及输入 3)。在一实施例中, 每一芯片 104 根据多内核微处理器制造过程中的烧断的熔丝 (fuse) 设定, 而分配四个边带通信焊接 点 108 其中一个焊接点作为输出焊接点 ( 输出 )。
图 1 中, 封装本身提供对应耦合于封装内核间的通信线 118 的多个边带通信引脚, 其中边带通信引脚系表示为 P1 至 P4。而这些引脚并不需要实行封装内部芯片 104 内核间 的通信, 多封装设定的这些引脚可增进并且放大在内核间的通信线 118 所执行的外部测试 信号。 内核间的通信线 118 被设定为如下 : 芯片 0 的输出焊接点以及芯片 1 的输入 1 焊 接点经由一条导线耦合在 P1 引脚, 而芯片 1 的输出焊接点以及芯片 0 的输入 3 焊接点经由 一条导线耦合在 P2 引脚, 芯片 0 的输入 2 焊接点以及芯片 1 的输入 3 焊接点经由一条导线 耦合在 P3 引脚, 芯片 0 的输入 1 焊接点以及芯片 1 的输入 2 焊接点经由一条导线耦合在 P4 引脚。
每一芯片 104 具有一个被指定的主要内核 106, 主要内核 106 控制经由芯片 104 的 边带通信焊接点的通信。图 1 的实施例中, 内核 0 是芯片 0 的主要内核 106, 且内核 2 是芯 片 1 的主要内核 106。请参阅图一, “伙伴” 一词是指在不同芯片 104 的主要内核 106, 经由 边带内核间的通信线而彼此通信, 因此, 图 1 的实施例中, 内核 0 及内核 2 为伙伴。
内核间的通信线 118 在芯片 104 的主要内核 106 中电性连接, 藉以更增进主要内 核 106 间不同发现以及管理流程的通信及调整, 包含本文所述的微处理器设定的发现及修 正。更具体地说, 内核间的通信线 118 使相异芯片 104 的主要内核 106 中断彼此, 并且使主 要内核 106 发送另一讯息来执行分散式调整和多内核微处理器 102 的主要内核 106 间分散 式的发现动作。
举例来说, 当芯片 0 的主要内核 0 想要与芯片 1 的主要内核 2 通信时, 主要内核 0 从其输出焊接点传输一讯息至芯片 1 的输入 1 焊接点, 同样的, 当芯片 1 的主要内核 2 想要 与芯片 0 的主要内核 0 通信时, 主要内核 2 从其输出焊接点传输一讯息至芯片 0 的输入 3 焊 接点。如 CNTR2527 文中所述, 图 1 内并不是所有的焊接点及引脚皆需要去支持四核设定, 一些焊接点及引脚是能被移除的。但是同样如 CNTR2527 文中所述, 额外的焊接点及引脚能 增进其他处理器的设定, 例如八内核的实施例。在一些处理器设定中, 每一输出焊接点 108 与其他芯片 104 中多个输入焊接点 108 相耦合。为了支持这样的设定, 一些实施例中的主
要内核 106 在每一讯息传输中具有一识别码, 每一讯息从主要内核 106 的输出焊接点 108 输出, 并且在内核间的通信线 118 传输。识别码识别主要内核 106 的讯息发往的目的地, 藉 以使多个接受的内核 106 接收传播讯息后, 检测是否为讯息发送的预定目的地。
请参阅图 2, 图 2 是显示本发明的图 1 的其中的一内核的详细方块图。图 2 的内 核 106 在某些方面与 CNTR2527 以及 CNTR2533 所公开的图 2 相似, 其他方面将于下文进一 步说明。
根据一实施例, 内核 106 的微结构包含一超标量结构, 该结构为功能单元的无序 执行导线, 一指令快取存储器 202, 用以存取来自系统存储器 ( 图未示 ) 的指令。一耦合至 指令多内核微处理器存储器 202 至的指令译码器 204, 用以接收指令如 x86 指令集架构指令 的指令。寄存器别名表 (Register Alias Table ; RAT)212 耦合至指令译码器 204 以及微序 列器 206, 寄存器别名表 (Register Alias Table ; RAT)212 用以接收从指令译码器 204 以 及微序列器 206 所发出的已译微指令, 藉以产生与已译微指令的相依讯息。保留站 214 耦 合至寄存器别名表 (Register Alias Table ; RAT)212, 藉以接收寄存器别名表 (Register Alias Table ; RAT)212 所发出的已译微指令及相依讯息。执行单元 216 耦合至保留站 214, 藉以接收保留站 214 所发出的已译微指令, 并且接收其已译微指令的指令运算元。该运算 元也许来自内核 106 的寄存器以及耦合至执行单元 216 的数据快取存储器 222, 其中该内 核 106 的寄存器例如是通用目的寄存器以及可读可写的模块特定寄存器 238。退移单元 218 耦合至执行单元 216, 藉以接收执行单元 216 所发送的指令结果, 并且退移该指令结果 至内核 106 的架构状态。 数据快取存储器 222 耦合至总线接口单元 (Bus Interface Unit ; BIU)224, 总线接口单元 (Bus Interface Unit ; BIU)224 为图 1 的内核 106 至总线 116 的接 口。相位锁定回路 (Phased-Locked-Loop ; PPL)226 接收从总线 116 发出的总线时钟信号, 接收到后产生并传送一内核时钟信号 242 至内核 106 内部的不同功能的单元。相位锁定回 路 (Phased-Locked-Loop ; PPL)226 也许会经由执行单元 216 如执行停用指令而被控制。
如上述与图 1 相关的, 每个芯片具有一被指定的主要内核。此外, 在相关方面, 处 理器也许具有一已指定的启动服务处理器 (Boot Service Processor ; BSP) 内核, 该启动服 务处理器 (Boot Service Processor ; BSP) 内核被单独授权来调整芯片组 114 特定的受限 动作。因此, 不同指定的主要和 / 或启动服务处理器 (Boot Service Processor ; BSP) 身分 码内核的实施例中, 为了遵行预设的指定的。
在一实施例中, 每一内核 106 包含可编程设定熔丝 (fuse)。芯片 104 的制造商也 许会变化设定熔丝 (fuse) 来指定内核 106 和 / 或其他内核 106 是否作为芯片 104 的主要 内核或启动服务处理器 (Boot Service Processor ; BSP) 的内核, 以及内核 106 和 / 或其他 内核 106 是否被启动, 而指定每一内核 106 为唯一识别的情况, 例如内核 106 是否是内核 0、 内核 1、 内核 2 或内核 3。
另一实施例中, 任何给定的内核主要指定是根据其情况。 根据一实施例, 在预设的 情况下, 偶数内核 106 是每一芯片 104 的主要内核。根据另一相关的实施例中, 内核 0 被设 定为多内核微处理器 102 的启动服务处理器 (Boot Service Processor ; BSP) 内核
在另一实施例中, 一初始主要或启动服务处理器 (Boot Service Processor ; BSP) 的指定通过预设 ( 如基于适用的设定熔丝或内核的情况 ) 所提供, 但也许会被新的设定覆 写。 更进一步地说, 主要及启动服务处理器 (Boot Service Processor ; BSP) 的指定系动态的被重新设定或是暂时性的响应于临时设定而搁置, 上述的指定系响应于不同的情况, 该 情况例如是被指定的主要或启动服务处理器 (Boot Service Processor ; BSP) 内核为停用 或暂停使用的状况。
尤其是如图 2 所示, 每一内核 106 也许包含一主要指示 (master indicator)232、 启动服务处理器 (Boot Service Processor ; BSP) 指示 228 以及一启用指示 252。在一实 施例中, 如上所述, 这些指示构成可选择性被烧断的熔丝 (fuse)。例如, 与启用指示 252 相 关的熔丝 (fuse), 也许会选择性的被烧断以启用或停用内核 106, 藉以使内核 106 的数量可 用于计算系统 100, 使计算系统 100 执行数据处理所用到的内核也许会小于实体内核 106 的数量。在其他实施例中, 这些指示构成熔丝 (fuse) 藉以提供预设值, 这些预设值被存 储于模块特定寄存器 (Model-Specific Registers ; MSRS)238 或设定存储器 254 内, 但这 些预设值被以相反设定覆写, 如果有前述动作的话, 这些预设值被存储于模块特定寄存器 (Model-Specific Registers ; MSRS)238 或设定存储器 254 内。在另一实施例内, 这些指示 包含两个熔丝 (fuse), 藉以提供预设值及本机设定逻辑而能够覆写这些预设值。在其他实 施例中, 这些指示构成可以被开启或关闭的寄存器。
执行单元 216 接收到一启用指示 252, 启用指示 252 是指示是否启用内核 106 来 执行数据处理。执行单元 216 也接收一启动服务处理器 (Boot Service Processor ; BSP) 指示 228 以及一主要指示 232, 启动服务处理器 (Boot Service Processor ; BSP) 指示 228 以及一主要指示 232 分别指示内核 106 是否为芯片 104 的主要内核以及是否为多内核微处 理器 102 的启动服务处理器 (Boot Service Processor ; BSP) 内核。如上所述, 启动服务处 理器 (Boot Service Processor ; BSP) 指示 228、 主要指示 232 以及启用指示 252 包含可编 程的熔丝 (fuse)。在另一种实施例中, 启动服务处理器 (Boot Service Processor ; BSP) 指示 228、 主要指示 232 和 / 或启用指示 252 被存储于模块特定寄存器 (Model Specific Register ; MSR)238 内, 且模块特定寄存器 (Model Specific Register ; MSR)238 初始即设 有可编程的熔丝 (fuse) 数值, 但熔丝 (fuse) 数值可通过软件写入模块特定寄存器 (Model Specific Register ; MSR)238 而更新。
更进一步地说, 内核 106 包含设定存储器 254, 藉以存储多内核微处理器 102 的内 核设定。在一实施例中, 设定存储器 254 包含寄存器, 在另一实施例中, 设定存储器 254 包 含一在小型随机存取存储器 (Small Random Access Memory ; RAM) 的存储区, 小型随机存取 存储器 (Small Random Access Memory ; RAM) 例如是美国专利申请案案号 7,827,390 所述 的参数随机存取存储器 (Parameter Random Access Memory ; PRAM)。
如 CNTR.2527 所述, 执行单元 216 也可读写控制状态寄存器 (Control and Status Register ; CSR)234 及 控 制 状 态 寄 存 器 (Control and Status Register ; CSR)236, 藉以 与其他内核 106 通信。特别是, 内核 106 系利用控制状态寄存器 (Control and Status Register ; CSR)236 并经由内核间的通信线 112 与在同样芯片 104 上的内核 106 做通信, 且 内核 106 利用控制状态寄存器 (Control and Status Register ; CSR)234 而通过芯片间的 通信线 118 并经由焊接点 108, 进而与在同样芯片 104 上的内核 106 做通信。
微序列器 206 还包含一用以存储微码的微码存储器 207。每一处理内核 106 均具 有一相同指令集架构且彼此对称, 且每一处理内核 106 均设定为计算一包含来自该指令集 架构的指令的使用者程序。为了本发明所公开的目的, 在本文中, “微码” 一词是指在内核106 执行指令架构中, 相同内核 106 所执行的指令。也就是说, 如果有任何存储在微码存储 器 207 内的微码执行的话, 其系在原有执行的内核 106 执行。
微码存储器 207 用以存储微码, 微码包含如 CNTR.2527 内各种不同的实施例所 述的内部电源状态管理微码。微码存储器 207 亦存储一包含设定发现 (configuration discovery) 及修正微码 208。其中, 设定发现及修正微码 208 被设定为动态确认初始设定 (dynamically determine initial)( 或预设 ) 以及使用者所设定的 ( 或以其他方式重新设 定 ) 多内核微处理器 102 的内核设定, 用以存储指定的动态确定内核设定的讯息到设定存 储器 254, 并且使用该存储的讯息, 在此将于下的图 3 描述相对应的方法。 在一实施例中, 使 用者所设定的内核设定讯息被存储在设定存储器 254, 藉以替代多内核微处理器 102 的初 始设定或预设内核设定。在一实施例中, 如下所述, 设定发现及修正微码 208 被多内核微处 理器 102 的重置引脚的判定所引发。设定发现及修正微码 208 最好在每一内核 106 上系重 复的来支持扩充性。此外, 如 CNTR.2527 文中所述的内核的内部电源状态管理微码, 该微码 根据修正设定来调整电源状态管理, 其中修正设定发现并且存储响应于设定发现及修正微 码 208 的执行动作。
请一并参阅图 3A 及图 3B, 图 3A 及图 3B 是显示本发明的图 1 的多内核微处理器执 行动态设定发现以及修正过程的操作流程图。 更具体地说, 图 1 接合多内核微处理器 102 每 一内核 106 的微码 208 的基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152, 提 供一种方式来动态个别的停用或重启动并且重新设定内核 106 后制造的时间的主要设定, 上述的情况例如是太晚而不能烧断熔丝 (fuse) 的状况。
在流程图的方块 302 中一使用者输入一理想的多内核微处理器 102 的内核设定。 在一实施例中, 基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 在显示器 158 上, 显示一选单让使用者指定一个理想内核设定, 其中其是显示在图 1 所述的显示器 158。 举例来说, 在多内核微处理器 102 内每一实体存在的内核 106, 基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 也许会显示其启动指示 252 的数值, 且使用者能切换该启 动指示 252 的数值来指示理想的停用或重新启用内核 106( 启用指示 252 分别指示内核 106 是启用或是停用 )。
如与 CNTR.2527 相关的所述, 微处理器最好也设定有某些调整及发现动作, 其中 某些调整及发现动作系经由根据相容阶层式调整系统而适用的边带通信线, 例如是电源状 态管理。 一般来说, 阶层式调整系统会组成微处理器的内核的一或多个区域, 其中每个区域 中, 有一内核是被设定为该区域的主要内核, 且边带通信线被设置在适合的区域中。 内核能 根据主要身分码而被限制, 如果有前述限制的话, 为内核通过可用的边带通信线, 来通信及 调整其他区域的内核的能力。
CNTR.2527 描述了各式各样的阶层式调整系统, 各种巢套区域结构, 区域内的各种 内核集聚以及相对应的亲属群组, 以及各种在亲属群组内的调整模块。阶层式调整系统能 被用于电源状态管理, 包含 C 状态 (C-State) 及 P 状态 (P-State) 的执行以及共享电压与 时钟源的控制。 一般来说, 阶层式调整系统相容于边带通信线的结构与可用性, 其中边带通 信线被设置于内核与微处理器的内核群组之间。此外, 阶层式调整系统适用于多内核微处 理器能被指定布满全部或某个区域, 以及存储随着每一内核的设定存储器 254 的其他设定 讯息, 藉以增进内核间的调整分散式系统、 发现过程以及电源状态管理的过渡。 其中阶层式调整系统的分布可为戈达尔数量 (
Number) 或其中一些组合。每一内核中, 基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 能显 示其主要指示 232 及启动服务处理器 (Boot Service Processor ; BSP) 指示 228 的数值, 并且让使用者切换其中的数值, 藉以重新设置各内核的主要身分码 (master credential)。 基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 会显示一些预设方面的可 重新设定的阶层式调整系统, 让使用者能在一定程度上相容于内核个别的可设定性以及 适用于边带通信线中, 增加、 删除、 结合与划分区域、 重新定义相对应于亲属群组以及选择 亲属群组间可用的调整模块。因此, 基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 提供一设定选项, 藉以让使用者停用、 重启动以及个别重新设定内核 106。如果使 用者要求停用一最初设定的主要内核, 基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 能自动设定一替代内核作为主要内核。
在流程图的方块 304 中, 基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 将在方块 302 所接收的使用者所指定的设定, 存储至图 1 所示的非易失性随机存 取存储器 (Non-Volatile Random Access Memory ; NVRAM)。
在流程图的方块 306 中, 多内核微处理器 102 被重置。例如, 基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 会重置多内核微处理器 102 或是多内核微处理器 会被使用者以启动 (power) 计算系统 100 或点击重置按钮的一些操作而重置。
在流程图的方块 308 中, 每一内核 106 的重置微码 208 确定其初始设定。在一实 施例中, 每一内核 106 的重置微码 208 根据 CNTR.2533 所述的方法, 来确认多内核微处理器 的初始设定。如本文所述, 每一内核 106 将一动态确定的设定写入图 2 所述的设定存储器 254 内。
在流程图的方块 312 中, 基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 写入每一内核 106 的模块特定寄存器 (Model-Specific Register ; MSR)238, 其中 每一内核 106 并不包含在使用者所指定的设定内, 例如写入使用者期望被停用的每一内核 106 及写入每一内核的主要身分码, 如果有前述操作的话, 是使用者所期望去改变的。在另 一实施例中, 基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 执行一 x86 写入 型号专用寄存器 (Write to Model Specific Register ; WRMSR) 的指令来写入模块特定寄 存器 (Model-specific register ; MSR)238。如果使用者所设定的如此指定, 写入模块特定 寄存器 (Model-Specific Register ; MSR)238 的指令指示内核 106 自行终止或停用。另外, 如果使用者所设定的如此指定, 写入模块特定寄存器 (Model-Specific Register ; MSR)238 的指令指示内核 106 覆盖其预设的主要指示 232 和 / 或启动服务处理器 (Boot Service Processor ; BSP) 指示 228。
在流程图的方块 314 中, 每一内核 106 引动一微码 208 的一部分, 其中该部分 的微码用以执行响应于在方块 312 中写入型号专用寄存器 (Write to Model Specific Register ; WRMSR) 的指令。 以响应于一终止指令为例, 适当的终止执行微码 208 写入控制内 核 106 的寄存器藉以终止内核 106。特别是指将终止执行微码 208 写入总线接口单元 224, 藉以使终止内核 106 不响应于总线 116 的窥探周期。这样的设置有利于防止内核 106 响应 于窥探周期而引起总线 116 的拖曳。拖曳的产生由于窥探响应会要求内核 106 在总线 116 插入延迟的时钟, 而使其有额外的时间来窥探其快取存储器。最后, 终止执行微码 208 将内核转变至最小的功耗状态并且进入休眠状态, 例如, 终止执行微码 208 会停止时钟和 / 或从 多内核微处理器 102 的大部分电路中断开电源。然而, 内核 106 仍保有响应于由在外部重 设多内核微处理器 102 的重置引脚的功能。因此, 微码 208 从不返回至使用者码。在一实 施例中, 为了使被终止的内核 106 恢复, 需要一个经由多内核微处理器 102 的外部重置、 经 由相对应于内核 106 的输入焊接点或是切断内核 106 的电源的方式, 藉以恢复内核 106。
在流程图的方块 316 中, 基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 从非易失性随机存取存储器 (Non-Volatile Random Access Memory ; NVRAM)154 来读取使用者所指定的设定, 并且将模块特定寄存器 (Model-Specific Register ; MSR)238 写入任何一个仍启动的内核, 例如没有被使用者停用的内核 106, 通过前述方法来指示使用 者所指定的设定并覆盖方块 308 所确认的初始设定。 值得一提的是, 在方块 312 及方块 316 所执行的写入型号专用寄存器 (Write to Model Specific Register ; WRMSR), 其会被期 望采用内核 106 的终止或重新设定功能的任何系统软件执行, 上述功能如本文所描述来重 新设定多内核微处理器 102 且没有限制于使用基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152。
在流程图的方块 318 中, 每一仍启动的内核 106 引动微码 208 的一部分来执行写 入型号专用寄存器 (Write to Model Specific Register ; WRMSR) 的指令, 该指令系响应于 方块 316 所执行的写入型号专用寄存器 (Write to Model Specific Register ; WRMSR)。 微 码 208 接收到使用者所指定的设定并且写入设定存储器 254, 因而覆写掉方块 308 所写入的 初始设定。内核 106 便根据使用者所指定的设定继续操作。
举例来说, 内核 106 会通过返回已启动内核的数量来执行 CPUID 指令, 其中已启 动的内核系列举在使用者所指定的设定之内, 此外, 使用者所指定的设定被存储于设定存 储器 254 之内。在另一实施例中, 内核 106 利用方块 314 所存储的讯息来调整某些电源状 态管理功能, 例如所要求的 C 状态 (C-State)、 P 状态 (P-State)、 电压识别数字 (Voltage Identification Digital ; VID) 水平以及时钟频率的执行。如上所述, 例如与 CNTR2527 相 关以及美国专利临时申请案案号 61/426,470, 申请日 12/22/2010, 名称为 “分散式电源管 理分部多个处理器内核 (Decentralized Power Management Distributed Among Multiple Processor Cores)” 的一部分以及其同在申请的非临时申请案 (CNTR.2534), 这些都纳入本 文的参考。另一实施例中, 内核 106 利用所存储的设定讯息来执行多内核 “电源贷款” 功能, 如美国专利申请案案号 13/157,436(CNTR.2517), 申请日 6/10/2011, 为了达到本申请所有 目的, 也都在本文中纳入参考。
在流程图的方块 322 中, 除了基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 所执行使用的内核 106, 基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 在其余每一内核 106 上执行一停止 (Halt ; HLT) 指令来停止内核 106。值得一提 的是, 停止或是休眠的内核 106 仍在窥探总线 116 并且确认其快取存储器, 这样的情况有可 能导致产生在总线 116 的异动, 而不利于性能及不必要的功耗的产生。然而, 如本文所述, 在方块 312 时, 当基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 的设定将 模块特定寄存器 (Model-specific register ; MSR)238 写入终止内核, 内核 106 会在方块 314 自我终止, 相对于自我停止的方式, 这样的方法能让内核 106 是真的停用并且不会窥探 总线 116、 或认其快取存储器或是在总线 116 上产生异动, 这样的话, 只有真的外部重置这样的方法, 才能让被终止的内核 106 再次回复。
在流程图的方块 324 中, 基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 从磁盘将操作系统 156 载入到系统存储器并且转移控制权给操作系统 156。操 作系统 156 发出初始化 (Initialization ; INIT) 重置指令至多内核微处理器 102 的所有 内核 106, 通过 BIOS152 使他们从停止的状态中回复而进入方块 302。在另一实施例中, 初 始化 (Initialization ; INIT) 重置指令包含知名输入 / 输出高级可编程中断控制器 (I/ O Advanced Programmable Interrupt Controller ; I/O APIC) 初始化 (Initialization ; INIT) 指令, 其用以指示内核 106 执行一响应于重置的动作子集 ( 特别是从其停止的状态中 回复 )。
在流程图的方块 326 中, 在方块 314 中每一个自行终止的内核 106 对于方块 324 所 发出的初始化 (Initialization ; INIT) 讯息并不会发生响应, 更确切地说, 终止的内核 106 系保持其终止状态直到执行外部重置才会回复。然而, 其余已启动的内核 106 响应于初始 化 (Initialization ; INIT) 讯息并且根据存储在方块 318 中使用者所指定的设定而执行。 其中, 重置微码 208 被引动而响应于初始化 (Initialization ; INIT) 讯息。然而, 响应于 初始化 (Initialization ; INIT) 讯息中, 重置微码 208 不执行如方块 308 的操作, 重置微码 208 并不确认其内核设定, 而是响应于外部重置。值得一提的是, 初始化 (Initialization ; INIT) 讯息从在重置所有内核 106 的总线 116 上, 初始化 (Initialization ; INIT) 引脚是 判定为不同的, 也因此对每一内核 106 来说是唯一的。操作流程在方块 326 结束。 值得一提的是, 方块 302 及方块 304 的执行步骤只需要执行一次, 例如, 使用者 只需要指定一次他所期望的设定, 且基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 只需要存储一次使用者所指定的设定 ; 而方块 306 至方块 326 的执行步骤每被执 行一次, 系统就被重置且操作系统就会启动。
如上所述, 动态设定发现及修正过程可能会支持多内核微处理器 102 所有内核中 主要指定的重新设定。在一实施例中, 芯片 104 上的硬件设定为在该芯片中任何能够用以 驱动输出焊接点 108 的内核 106, 故内核间的通信线 118 耦合至输出焊接点 108, 藉以在计 算系统 100 内的其他内核 106 做通信 ; 然而, 在任何给定的时间中, 只有在芯片 104 的一内 核 106 设定为驱动输出焊接点 108。 这样有利于预设的主要内核 ( 内核 106 设定熔丝 (fuse) 而作为芯片 104 和 / 或多内核微处理器 102 的主要内核 ) 处于不操作状态或是基本输入 / 输出系统 (Basic Input/Output System ; BIOS)152 终止主要内核的状况。举例来说, 这样 能启动其余内核 106 的一内核 106 变成主要内核并且与伙伴内核 106 在其他芯片 104 上通 信, 藉以执行如 CNTR.2527 及 CNTR.2534 所述的电源状态管理。 所有芯片 104 的内核 106 接 收电性连接于输入内核间的通信线 118 的输入焊接点 108 的信号。因此, 如果使用者或故 障停用的预设主要内核, 有利于其余的内核 106( 例如新的主要内核 ) 能够接收代表这个芯 片 104 的输入内核间的通信带 118 的信号, 并且如上所述, 能够驱动这个芯片 104 内核间的 通信线 118 耦合至输出焊接点 108。通过这种方式, 在一实施例中, 所有在给定的芯片 104 的内核 106 设定可能的排列组合可行的。
为了支持动态内核重新设定, 在一实施例中, 内核 106 相关的熔丝 (fuse) 数值是 个别地做异或 (Exclusive-OR’ ed) 运算以及寄存器的对应位元, 藉以产生一终值, 例如主 要指示 232、 启动服务处理器 (Boot Service Processor ; BSP) 指示 228 及启用指示 252。
相关的熔丝 (fuse) 数值可为与 CNTR.2534 的图 2、 图 3A 及图 3B 相对应的熔丝 (fuse) 不驱 动指示 154 以及熔丝 (fuse) 不驱动频率指示 354, 其是个别地做异或 (Exclusive-OR’ ed, 又称之为 “互斥或” ) 运算。寄存器位元 (bit, 也称之为 “位” ) 通过微码 208 所写入, 通常 响应于写入模块特定寄存器 (Model-Specific Register ; MSR)238。最后, 每一内核 106 同 样设定启动微码 208, 藉以写入寄存器的一位元来动态更新内核 106 是否驱动耦合至输出 焊接点 108 的内核间通信线 118。 这样的设定能被采用, 例如设定双内核芯片 104 或四内核 芯片的任一内核 106 设定作为芯片的主要内核。
更进一步实施例中, 每一内核 106 没有被设定为适用于区域的主要内核, 该内核 106 设定内部微码, 这样的方式也许会与 CNTR.2533 其中之一所描述的过程一致, 藉以确定 区域中被设定的主要内核是否为已启用或是在执行状态, 如果不是则有条件的自我重新设 定 ( 如基于其相对于区域内的其他亲属内核的实际数量 ) 作为适用于区域的临时主要内 核, 以及藉以判定控制输出焊接点 108 为一合适的边带内核线。一个被指定的主要内核也 可以在预设的条件被设置 ( 如基于他们的状态或迫切性来限制中断的限制中断模式 ) 或是 响应于一合适的指令, 藉以暂时性的代表从属亲属内核作为临时主要内核。被指定的主要 内核能经由与临时设定相关之后续的异动, 启动一控制权移转回到其本身, 这样的情况下 临时主要内核取消其临时设定。
经控制权的判定或重新判定, 无论是从一个被指定的主要内核作为临时主要内 核, 或是从一个临时主要内核经由重新判定控制权而成为一指定的主要内核, 任何内核假 设主要功能是最好也设定为与至少其从属内核来共享其重新设定, 藉以重新设定从属内核 来调整新操作的主要内核而不是先前操作的主要内核。
接口逻辑也最好是被提供用来执行具有临时主要控制权, 藉以防止在指定的主要 内核间重新判定输出焊接点 108 的控制权, 直到如果有一个适当的控制权异动在被指定的 主要内核以及临时的主要内核之间进行。
这样的方式下, 多内核微处理器 102 也许会设定为动态响应于内核故障及内核失 效而自我修复。 自我修复实施例的最大程度中, 每一内核在任何给定的亲属群中, 是可以操 作设定为亲属群的主要内核或是临时主要内核, 包含最高的亲属群组水平上作为处理器的 启动服务处理器 (Boot Service Processor ; BSP) 的内核。 在这样的实施例中, 内核间的通 信线可以高效率的阶层式来组织, 但因为任何主要内核会被从属亲属内核替代, 微处理器 会能在周围故障的内核中, 重新设定其阶层式系统。
在另一实施例中, 内核 106 各方面不同于图 2 的代表实施例并且提供取代或额外 的高度并联结构, 例如适当的图形处理单元 (Graphics Processing Units ; GPU) 的结构。
然而各种有关于本发明的实施例已在本文详述, 应可充分了解如何实施并且不 限于这些实施方式。举凡本领域技术人员当可依据本发明的上述实施例说明而作其它种 种的改良及变化。举例来说, 软件可以启动如功能、 制造、 模型、 模拟、 描述和 / 或测试本 文所述的装置及方法。可以通过一般程序语言 ( 如 C 及 C++)、 硬件描述语言 (Hardware Description Languages ; HDL) 或 其 他 可 用 程 序 的 使 用 来 达 成, 其中硬件描述语言 (Hardware Description languages ; HDL) 包含 Verilog HDL、 VHDL 等硬件描述语言。这 样的软件能在任何所知的计算机可用媒介中处理执行, 例如磁带、 半导体、 磁盘或光盘 ( 如 CD-ROM 及 DVD-ROM 等 )、 网络、 有线电缆、 无线网络或其他通信媒介。本文所述的装置及方法的实施例中, 可包含在智慧型内核半导体内, 并且转换为集成电路产品的硬件, 其中智慧 型内核半导体如微处理器内核 ( 如硬件描述语言内的实施或设定 )。 此外, 本文所述的装置 及方法可由硬件及软件的结合来实施。 因此, 本发明并不局限于任何本发明所述的实施例, 但根据下述的专利范围及等效的装置及方法而定义。具体来说, 本发明能在普遍使用的处 理器装置里执行实施。最后, 熟练于本技术领域的应能体会他们能很快地以本文所公开的 观念及具体的实施例为基础, 并且在没有背离本发明所述的附属项范围下, 来设计或修正 其他结构而实行与本发明的同样目的。