处理器和计算机系统的制作方法

文档序号:6580308阅读:112来源:国知局
专利名称:处理器和计算机系统的制作方法
技术领域
概括地说,本发明涉及流水线处理器,更具体地,涉及利用执《亍单元 的级联排列的处理器,所述执行单元相对于彼此祐延迟。
背景技术
典型地,计算机系统包含若干集成电路(IC),其包括用于处理计算
才几系统中的信息的一个或多个处理器。现代处理器常常以流水线方式处理 指令,即作为一系列步骤来执行每个指令。典型地,由流水线中的不同级 (硬件电路)执行每个步骤,其中每个流水线级在给定时钟周期内执行其 与流水线中的不同指令相关的步骤。结果,如果流水线满载,则在每个时 钟周期处理一个指令,从而增加吞吐 量。
作为简单实例,流水线可包括三个级加载(从存储器读取指令)、 执行(执行指令)、和存储(存储结果)。在第一时钟周期,第一指令进 入流水线加载级。在第二时钟周期,第一指令移动至执行级,释放加载级 以加载第二指令。在第三时钟周期,可通过存储M储执行第一指令的结
果,同时执行第二指令并加载第三指令。
不幸地,由于典型指令流中固有的依赖性,传统指令流水线在执行一 个指令的执行单元等待由先前指令的执行所生成的结果期间会遭遇到停滞
(即流水线级不执行)。作为实例,加载指令可依赖于先前指令(例如另 一加载指令或增加对基地址的偏移)以提供要加载数据的地址。作为另一 实例,乘法指令可依赖于一个或多个先前加载指令的结果作为其操作数之 一。在任一情况下,传统指令流水线将停滞,直到先前指令的结果可用。 停滞可以是若干时钟周期,例如,如果(后续指令所依赖的)先前指令以
4未驻留在L1高速緩存中的数据为目标(导致L1 "高速緩存未命中")并 且必须访问相对较慢的L2高速緩存。结果,这种停滞由于流水线的未充 分利用而导致性能显著降低。
因此,需要一种对指令流水线化的改进机制,用于优选地减少停滞。

发明内容
本发明的实施例提供了 一种用于矢量指令的执行的装置。 本发明的一个实施例提供了一种处理器。 一般地,该处理器包括第 一和第二处理器核心,均具有多个流水线执行单元以i更执行具有多个指令 的发出组;以及调度逻辑,被配置为,当所述处理器处于笫一操作模式时, 向所述第 一处理器核心发出指令的第一发出組以便执行,并且向所述第二 处理器核心发出指令的第二发出组以便执行,以及被配置为,当所述处理 器处于第二操作模式时,发出一个或多个矢量指令以^更在所述第一和第二 处理器核心上同时执行。
本发明的另一实施例提供了一种计算系统。 一般地,该计算系统包括 第一和第二处理器,均具有多个处理器核心以便执行一个或多个矢量指令;
以及调度逻辑,被配置为,当所述计算系统处于第一操作模式时,向所述 第一处理器发出一个或多个矢量指令以l更执行,并且向所述第二处理器发 出一个或多个矢量指令以便执行,以及净皮配置为,当所述计算系统处于第 二操作模式时,向所述第一和第二处理器发出具有矢量指令的发出组以便 执行。


通过参照附图中所示的本发明实施例,可具有以上概述的本发明更具 体的描述,以便获得和详细理解本发明的上述特点、优点和目的。
然而,应注意,附图仅示出本发明的典型实施例,因此不应理解为限 制本发明的范围,因为本发明可允许其他等效实施例。
图l是示出才艮据本发明一个实施例的系统的框图;图2是示出根据本发明一个实施例的计算机处理器的框图; 图3是示出才艮据本发明一个实施例的处理器的核心之一的框图; 图4A和4B将传统流水线单元的性能与根据本发明实施例的流水线单 元相比较;
图5示出根据本发明实施例的示例性整数级联延迟执行流水线单元; 图6是根据本发明实施例的调度和发出指令的示例性操作的流程图; 图7A-7D示出经过图5所示的流水线单元的指令流; 图8示出根据本发明实施例的示例性浮点级m迟执行流水线单元; 图9A-9D示出经过图5所示的流水线单元的指令流;
图io示出才艮据本发明实施例的示例性矢量级m迟执行流水线单元;
图11示出j吏得处理器的物理核心变形以对于不同应用呈现出不同的 实例;
图12A和12B示出根据本发明实施例被变形为单个单元的示例性级联 延迟执行流水线单元;
图13示出4吏得处理器的物理核心对于不同应用呈现出不同变形的另 一实例;
图14示出4吏得处理器的物理核心对于不同应用呈现出不同变形的另 一实例;
图15示出才艮据本发明一个实施例的实例物理布局("平面图");
图16示出根据本发明一个实施例的另一实例平面图17示出对物理核心变形以用于矢量处理的实例;
图18示出对物理核心变形以用于矢量处理的另一实例;
图19示出根据本发明一个实施例的多芯片封装(MCP);
图20示出被一起变形的多个CPU;以及
图21示出可在各个CPU之间维持正确计时中采用的逻辑。
M实施方式
概括地说,本发明提供一种以流水线方式执行指令的改进技术,其可减少在执行依赖指令时发生的停滞。可通过利用具有执行单元的流水线的
级联排列来减少停滞,所述执行单元相对于彼此,iu^迟。这种级联延迟排 列通过以下方式允许在公共发出组中发出依赖指令,即调度这些指令在不 同流水线中执行,以便在不同时间执行。
作为实例,可调度第一指令以在第一 "更早,,或"更少延迟"流水线 上执行,同时可调度第二指令(依赖于通过执行第一指令获得的结果)以 在第二 "更晚"或"更多延迟,,流水线上执行。通过调度第二指令以在相 对于第一流水线延迟的流水线中执行,笫一指令的结果可以刚好在第二指 令要执行时及时可用。在第二指令的执行仍旧禎延迟直到第一指令的结果
可用时,随后的发出组可在下一周期i^级联流水线,从而增加吞吐量。 换句话说,这种延迟^第一发出组中"可见",并对于l^发出组是"隐 藏的",从而允许在每个流水线周期发出不同发出组(即使具有依赖指令)。
以下描述本发明的实施例。然而,应理解,本发明不限于具体描述的 实施例。相反,以下特征和元素的任意组合(无论是否与不同实施例相关) 都被构想为实现和执行本发明。此外,在各个实施例中,本发明提供相对 于现有技术的多种优点。然而,尽管本发明的实施例可实现相对于其他可 能方案和/或相对于现有技术的优点,但是给定实施例是否实现特定优点并 不限制本发明。因此,以下方面、特点、实施例和优点仅是示例性的,并 且不被认为是所附权利要求的元素或限制,除非在权利要求中明确引用。 同样,所提及的"本发明"不应理解为是在此公开的任意发明主题的概括, 并且不应认为是所附权利要求的元素或限制,除非在权利要求中明确引用。
以下是在附图中描述的本发明实施例的具体实施方式
。这些实施例是 实例,并且从细节上用于清楚地表达本发明。然而,所提供的细节数量并
非旨在限制实施例的期望变型;相反,其旨在覆盖落入由所附权利要求限 定的本发明的精神和范围内的所有修改、等同物和替代物。
本发明的实施例可通过并可相对于例如计算机系统的系统来使用和描 述。如在此使用的,系统可包括利用处理器和高速緩冲存储器的任意系统,
包括个人计算机、互联网装置、数字媒体装置、便携式数字助理(PDA)、
7便携式音乐/视频播放器和视频游戏控制台。尽管高速緩冲存储器可与利用 高速緩冲存储器的处理器位于同一管芯上,但是在一些情况下,处理器和 高速緩沖存储器可位于不同管芯上(例如,不同芯片在不同模块中,或不 同芯片在一个模块中)。
示例性系统的概况
图1是示出根据本发明一个实施例的系统100的框图。系统100可包 含系统存储器102,用于存储指令和数据;图形处理单元104,用于图形 处理;1/0接口,用于与外部设备通信;存储设备108,用于指令和数据的 长期存储;以及处理器IIO,用于处理指令和数据。
根据本发明的一个实施例,处理器110可具有L2高速緩存112以及 多个L1高速緩存116,其中由多个处理器核心114之一利用每个L1高速 緩存116。才艮据一个实施例,可对每个处理器核心114流水线化,其中在 一系列小步骤中执行每个指令,通过不同流水线级执行每个步骤。
图2是示出根据本发明一个实施例的处理器110的框图。为了简单, 图2示出处理器110的单个核心114并相对于其来进行描述。在一个实施 例中,每个核心114可以是完全相同的(例如,包含具有流水线级的相同 排列的相同流水线)。对于其他实施例,核心114可以不同(例如,包含 具有流水线级的不同排列的不同流水线)。
在本发明的一个实施例中,L2高速緩存可包含由处理器110使用的指 令和数据的一部分。在一些情况下,处理器110可请求未包含在L2高速 緩存112中的指令和数据。在所请求的指令和数据未包含在L2高速緩存 112中时,可(从更高级别高速緩存或系统存储器102 )取回所请求的指令 和数据并将其放置在L2高速緩存中。当处理器核心114从L2高速緩存112 请求指令时,可首先通过预解码器和调度器220处理指令。
在本发明的一个实施例中,可从称为I线的组中的L2高速緩存112 取回指令。类似地,可从称为D线的组中的L2高速緩存112取回数据。 图1中所示的L1高速緩存116可分成两部分,即用于存储I线的L1指令高速緩存222( I高速緩存222 )以及用于存储D线的Ll数据高速緩存224 (D高速緩存224)。可使用L2存取电路210从L2高速緩存112取回I 线和D线。
在本发明的一个实施例中,可通过预解码器和调度器220处理从L2 高速緩存112取回的I线,并且可将I线放置在I高速緩存222中。为了 进一步提高处理器性能,常常对指令预解码,例如,从L2 (或更高)高速 緩存取回I线。这种预解码可包括各种功能,例如地址生成、分支预测、 以及调度(确定应发出指令的顺序),后者被捕获为控制指令执行的分派 信息(一组标志)。对于一些实施例,可在多个核心114和Ll高速^^ 之间共享预解码器(和调度器)220。
除了从发出和分派电路234接收指令,核心114还可从多个位置接收 数据。在核心114需要来自数据寄存器的数据时,可使用寄存器文件240 来获得数据。在核心114需要来自存储器单元的数据时,可使用高速緩存 加载和存储电路250从D高速緩存224加载数据。在执4亍此类加载时,可 向D高速緩存224发出对所需数据的请求。同时,可检查D高速緩存目录 225,以确定所需数据是否位于D高速緩存224中。在D高速緩存224包 含所需数据时,D高速緩存目录225可指出D高速緩存224包含所需数据, 并且可以在随后的某个时间完成D高速緩存访问。在D高速緩存224不包 含所需数据时,D高速緩存目录225可指出D高速緩存224不包含所需数 据。因为可以比D高速緩存224更快地访问D高速緩存目录225,所以可 在访问D高速緩存目录225之后但在完成D高速緩存访问之前(例如使用 L2存取电路210)向L高速緩存112发出对所需数据的请求。
在一些情况下,可以在核心114中修改数据。可将修改后的数据写入 寄存器文件,或存储在存储器中。可使用写回电路238向寄存器文件240 写回数据。在一些情况下,写回电路238可利用高速緩存加载和存储电路 250向D高速緩存224写回数据。可选地,核心114可直接访问高速緩存 加载和存储电路250以执行存储。在一些情况下,如以下所述的,也可4吏 用写回电路238向I高速緩存222写回指令。如上所述,可使用发出和分派电路234形成指令组以及向核心114发 出所形成的指令组。发出和分派电路234还可包括旋转和合并I线中的指 令并由此形成适当的指令组的电路。发出组的形成可考虑几个因素,例如 在发出组中的指令之间的依赖性,以及可以从如下更详细描述的指令排序 获得的最优化。 一旦形成发出组,则可向处理器核心114并行分派发出组。 在一些情况下,指令组对于核心114中的每个流水线都可以包含一个指令。 可选地,指令组可以是更少数目的指令。
级W1迟执行流水线
才艮据本发明的一个实施例, 一个或多个处理器核心114可利用级联的、 延迟的执行流水线配置。在图3所示的实例中,核心114包含4个级联配 置的流水线。可选地,在这种配置中可使用更小数目(2个或更多)或更 大数目(多于4个流水线)。此外,图3所示的流水线的物理布局是示例 性的,并且不一定暗示级联的、延迟执行流水线单元的实际物理布局。
在一个实施例中,级联的、延迟执行流水线配置中的每个流水线(PO、 Pl、 P2、 P3)都可包含执行单元310。执行单元310可包含为给定流水线 执行一个或多个功能的若干流水线级。例如,执行单元310可执行指令的 取回和解码的全部或一部分。由执行单元执行的解码可与预解码器和调度 器220共享,后者在多个核心114之间共享,或可选地,由单个核心114 来利用。执行单元还可从寄存器文件读取数据,计算地址,执行整数运算 功能(例如使用算术逻辑单元或ALU),执行浮点运算功能,执行指令分 支,执行数据存取功能(例如从存储器加载和存储),以及向寄存器存储 回数据(例如在寄存器文件240中)。在一些情况下,核心114可利用指 令取回电路236、寄存器文件240、高速緩存加载和存储电路250、和写回 电路、以及任意其他电路来执行这些功能。
在一个实施例中,每个执行单元310可执行相同功能。可选地,每个 执行单元310 (或不同的执行单元组)可执行不同的功能集。此外,在一 些情况下,每个核心114中的执行单元310可与其他核心中提供的执行单元310相同或不同。例如,在一个核心中,执行单元3100和3102可执^亍加 载/存储和运算功能,而执行单元31(h和3102可仅执行运算功能。
在一个实施例中,如上所述,可以相对于其他执行单元310延迟的方 式执行在执行单元310中的执行操作。所示的排列也可称为级联的、延迟 配置,但是所示的布局不一定表示执行单元的实际物理布局。可向流水线 PO、 Pl、 P2、 P3并行发出公共发出组中的指令(例如指令IO、 II、 12和 13),其中可通过相对于彼此延迟的方式执行每个指令。例如,可以首先 在流水线PO的执行单元310。中执行指令10,其次在流水线Pl的执行单 元31(h中执行指令I1,等等。
在此类配置中,在组中并行执行的指令不需要以程序顺序发出的情况 下(例如,如果指令之间不存在依赖性,则可向任意管线发出这些指令), 假设所有指令组按先前实例的顺序被执行。然而,对于其他示例性实施例, 跨组的乱序执行也是允许的。在乱序执行中,级联延迟排列仍可提供类似 的优点。然而,在一些情况下,可决定来自先前组的一个指令不能与该组 一起执行。作为实例,第一组可具有3个加载(按程序顺序Ll、 L2和 L3),其中L3依赖于L1,并且L2不依赖于任一个。在此实例中,可在 公共组中发出Ll和L3 (其中将L3发出至更加延迟的流水线),而可在 151^发出組中"乱序"发出L2。
在一个实施例中,在向处理器核心114发出所iiiL出组时,可在执行 单元310o中立即执行10。随后,在指令10完成在执行单元3100中的执行 之后,执行单元310i可开始执行指令I1,等等,从而以相对于彼此延迟的 方式执行向核心114并4亍发出的指令。
在一个实施例中, 一些执行单元310可相对于彼此被延迟,而其他执 行单元310 ^目对于彼此被延迟。在第二指令的执行依赖于第一指令的执 行的情况下,可使用转发路径312将结果从第一指令转发至第二指令。所 示的转发路径312仅是示例性的,并且核心114可包含从执行单元310中 的不同点到其他执行单元310或到同一执行单元310的更多转发路径。
在一个实施例中,可将没有由执行单元310执行的指令(例如被延迟的指令)保存在延迟队列320或目标延迟队列330中。延迟队列320可用 于保存指令组中尚未由执行单元310执行的指令。例如,在执行单元3100 中执行指令10时,可将指令II、 12和13保存在延迟队列330中。 一旦指 令经过延迟队列330,就可将指令发出至适当执行单元310并执行。可使 用目标延迟队列330来保存已由执行单元310执行的指令的结果。在一些 情况下,可将目标延迟队列330中的结果转发至执行单元310以便处理或 在适当时使其无效。类似地,在一些情形下,如下所述,可使得延迟队列 320中的指令无效。
在一个实施例中,在指令组中的每个指令都经过延迟队列320、执行 单元310、和目标延迟队列330之后,可将结果(例如,数据以及如下所 述的指令)写回寄存器文件或LI I高速緩存222和/或D高速緩存224。在 一些情况下,可使用写回电路238写回(从目标延迟队列330之一接收的) 最近修改后的寄存器值并丟弃无效结果。
级m迟执行流水线的性能
可通过与传统顺序执行流水线相比较来示出级联的延迟执行流水线的 性能影响,如图4A和4B所示。在图4A中,将传统"2-发出"流水线排 列2802的性能与根据本发明实施例的级联延迟的流水线排列2002相比较。 在图4B中,将传统"4-发出"流水线排列2804的性能与才艮据本发明实施 例的级联延迟的流水线排列2004相比较。
仅为了图示的目的,示出仅包括加载存储单元(LSU) 412和算术逻 辑单元(ALU) 414的相对简单排列。然而,本领域普通技术人员可理解, 可通过使用各种其他类型的执行单元的级联延迟排列获得性能的类似改 进。此外,将相对于示例性指令发出组(L,-A,-L,,-A,,-ST-L)的执行来讨 论每个排列的性能,所述示例性指令发出组(L,-A,-L"-A"-ST-L)包括2 个相关加载-加法指令对(L,-A,和L,,-A,,)、独立存储指令(ST)、和独 立加载指令(L)。在此实例中,不仅每个加法依赖于先前的加载,而且 第二加载(L,,)也依赖于第一加法(A,)的结果。首先参照图4A中所示的传统2-发出流水线排列2802,在第一周期发 出第一加载(L,)。因为第一加法(A,)依赖于第一加载的结果,所以直 到结果可用(在此实例中的周期7)才能发出第一加法。假设第一加法在 一个周期中完成,依赖于其结果的第二加载(L,,)可在下一周期发出。此 外,直到第二加载的结果可用(在此实例中的周期14)才能发出第二加法 (A,,)。因为存储指令是独立的,所以其可在同一周期中发出。此外,因 为第三加栽指令(L)是独立的,所以其可在下一周期(周期15)中发出, 总共15个发出周期。
接下来,参照图4A所示的2-发出延迟执行流水线2002,可明显减少 发布周期的总数。如图所示,由于延迟排列,且第二流水线(Pl)的算术 逻辑单元(ALU) 412A相对于第一流水线(P0)的加载存储单元(LSU) 412L位于流水线中的较深位置,所以第一加载和加法指令(L,-A,)两者可 在一^C出,而不必考虑依赖性。换句话说,在时间A,到达ALU412A时, L,的结果可用,并且可被转发以用于在周期7的A,的执行。此外,假设A, 在一个周期中完成,L"和A"可在下一周期中发出。因为随后的存储和加 载指令是独立的,所以它们可在下一周期中发出。因此,即使没有增加发 出宽度,级,迟的执行流水线2002也将发出周期的总数减小到9。
接下来,参照图4B所示的传统4-发出流水线排列2804,可以看出, 尽管发出宽度增加(x2),但是依然直到第一加载(L,)的结果在周期7 可用之后才能发出第一加法(A,)。然而,在第二加载(L,,)的结果可用 之后,发出宽度的增加确实允许第二加法(A,,)以及独立存储和加载指令 (ST和L)在同一周期内发出。然而,这仅导致边际性能增加,将发出周 期的总数减小到14。
接下来,参照图4B所示的4-发出级,迟执行流水线2004,在将更 宽的发出组与级联延迟排列组合时可明显减少发出周期的总数。如图所示, 由于延迟排列,且第四流水线(P3)的第二算术逻辑单元(ALU) 412a相 对于第三流水线(P2)的第二加载存储单元(LSU) 412l位于流水幾中的 较深位置,所以加载加法对(L,-A,和L,,-A,,)两者可在一赴良出,而不必考虑依赖性。换句话说,在时间L,,到达第三流水线(P2)的LSU412L 时,A,的结果将可用,并且在时间A,,到达第四流水线(P3)的ALU412A 时,A"的结果将可用。结果,随后的存储和加载指令可在下一周期内发出, 将发出周期的总数减少到2。
调JL良出组中的指令
图5示出在级m迟的执行流水线中调度和发出具有至少一些依赖性 的指令以^更执行的示例性操作500。对于一些实施例,可在多个处理器核 心(每个核心都具有级联延迟的执行流水线单元)之间共享的预解码器/ 调度器电路中执行实际调度操作,同时可通过处理器核心中的不同电# 行分派/发出指令。作为实例,共享的预解码器/调度器可通过检查要发出指 令的"窗口"来应用一组调JU現则以便检查依赖性,以及生成一组"发出 标志",其用于控制分派电路将如何(对哪些流水线)发出组中的指令。
在任意情况下,在步骤502,接收要发出的指令组,其中所述组包括 依赖于第一指令的第二指令。在步骤504,调度第一指令,以在具有第一 执行单元的第一流水线中发出第一指令。在步骤506,调度第二指令,以 在具有相对于第 一执行单元祐延迟的第二执行单元的第二流水线中发出第 二指令。在步骤508 (在执行期间),将第一指令的执行结果转发至第二 执行单元以在执行第二指令中4吏用。
将指令调度至不同流水线的确切方式可才艮据不同实施例而改变,并且 可至少部分地依赖于相应级M迟流水线单元的确切配置。作为实例,更 宽的发出流水线单元可允许更多指令并行发出以及提供更多用于调度的选 择,而更深的流水线单元可允许更多依赖性指令在一^L出。
当然,通过利用级联延迟流水线排列获得的总体性能增加将取决于多 个因素。作为实例,更宽的发出宽度(更多流水线)的级联排列可允许更 大的发出组,并且通常允许在一M出更多相关指令。然而,由于实际限 制(例如功率或空间成本),可期望将流水线单元的发出宽度限制在可管 理的数目。对于一些实施例,具有4-6个流水线的级联名,列可以以可接受成本提供良好的性能。总体宽度还可取决于所预期的指令的类型,其很可 能确定在排列中的特定执行单元。
整数级购逸迟的执行流水线的实例性实施例
图6示出用于执行整数指令的级,迟执行流水线单元600的示例性 排列。如图所示,所述单元具有4个执行单元,包括2个LSU 612l和2 个ALU614a。单元600允许在相邻流水线之间直接转发结果。对于一些实 施例,可允许更复杂的转发,例如在非相邻流水线之间的直接转发。对于 一些实施例,也可允许从目标延迟队列(TDQ) 630的选择性转发。
图7A-7D示出经过图6的流水线单元600的4个指令(L,-A,-L"-A") 的示例性发出组的流程。如图所示,在图7A中,发出组可进入单元600, 并且将第一加载指令(L,)调度至最少延迟的第一流水线(PO)。结果, 在L,被执行时,L,将在组中的其他指令(这些其他指令可向下经过指令队 列620)之前到达要执行的第一LSU612L。
如图7B所示,在第一加法A,到达第二流水线(Pl)的第一 ALU 612A 时,执行第一加载(L,)的结果可用(刚好及时)。在一些情况下,第二 加载可依赖于第一加法指令的结果,例如,后者可通过将偏移(例如与第 一加载L,一起加载)与基地址(例如第一加法A,的操作数)相加来计算。
在任意情况下,如图7C所示,在第二加载L,,到达第三流水线(P2) 的第二 LSU 612L时,执行第一加法(A,)的结果可用。最后,如图7D 所示,在第二加法A,,到达第四流水线(P3)的第二ALU 612A时,执行 第二加载(L")的结果可用。可将执行第一组中的指令的结果用作执行随 后发出组的操作数,因此可对其进行反馈(例如直接或经由TDQ630)。
尽管未示出,但M理解,在每个时钟周期,新的发出组可i^A流水 线单元600。在一些实例中,例如,由于相对少见的具有多个依赖性 (L,-L"-L",)的指令流,每个新的发出组可能不包含最大数目的指令(在 此实例中为4),通过允许在没有停滞的情况下在公共发出组中发出相关
指令,在此所述的级m迟排列仍可提供显著的吞吐量提高。浮点/矢量级m迟执行流水线的实例性实施例 可在利用各种不同类型功能单元的各种不同配置中应用在此提供的级 联的、延迟的执行流水线单元的概念,其中使得发出组中的一个或多个指 令的执行相对于同一组中的另一指令的执行被延迟。此外,对于一些实施 例,可将级联的、延迟的执行流水线单元的多个不同配置包括在同一系统 中和/或同 一芯片上。在特定设备或系统中包括的特定配置或配置集可取决 于预期用途。
以上所述的定点执行流水线单元允许包含例如加载、存储以及基本
ALU运算的相对简单运算(仅需要几个周期来完成)的发出组在没有停滞 的情况下执行,尽管在发出组中存在依赖性。然而,还常见的是具有例如 浮点乘法/加法(MADD)指令、矢量点积、矢量叉积等的执行相对复杂运 算(可需要几个周期)的至少一些流水线单元。
在例如在商业视频游戏中常见的图形编码中,例如,在处理3D场景 数据以生成像素值以便产生实际屏幕图像时,倾向于存在高频率的标量浮 点编码。指令流的实例可包括加载(L),随后紧跟基于作为输入的加载 的第一乘法/加法(MADD),其随后是基于第一 MADD的结果的第二 MADD。换句话说,第一MADD依赖于加载,而第二MADD依赖于第一 MADD。在第二MADD之后是存储由笫二MADD生成的结果的存储。
图8示出适应上述实例性指令流的级联的、延迟的执行流水线单元 800,其允许在单个发出组中同时发出两个相关MADD指令。如图所示, 所述单元具有4个执行单元,包括第一加载存储单元(LSU) 812、两个浮 点单元FPU 81^和8142、和第二 LSU 816。单元800允许将第 一流水线(P0 ) 中的加载结果直接转发至第二流水线(Pl)中的第一 FPU 81^以及将第一 MADD的结果直接转发至第二 FPU 814le
图9A-9D示出经过图8中所示的流水线单元800的具有4个指令 (L,-M,-M"-S,)的示例性发出组的流程(其中M,代表第一相关乘法/加法, M,,代表依赖于第一相关乘法/加法的结果的第二乘法/加法)。如图所示,在图9A中,发出组可^单元卯0,且将加载指令(L,)调度至最少延迟 笫一流水线(PO)。结果,在L,被执行时,L,将在组中的其他指令之前到 达要执行的第一LSU812 (这些其他指令可向下经过指令队列620)。
如图9B所示,在第一 MADD指令(M,)到达时,可将执行第一加载 (L,)的结果转发至FPU 814la如图9C所示,刚好在第二 MADD (M") 到达第三流水线(P2)的第二FPU8142时,执行第一MADD (M,)的结 果可用。最后,如图9D所示,在存储指令(S,)到达第四流水线(P3) 的第二LSU812时,执行第二MADD (M")的结果可用。
执行第 一组中的指令的结果可用作执行随后发出组中的操作数,并因 此可^L^馈(例如直接或经由TDQ 630 ),或转发至寄存器文件写回电路。 对于一些实施例,可在存储器中存储之前进一步处理第二 MADD指令的 (浮点)结果,例如用以简化或压缩结果以便更加有效地存储。
在将图8中所示的浮点级联的、延迟的执行流水线单元800与图6中 所示的整数级联的、延迟的执行流水线单元600相比较时,可观察到多处 相似和不同。例如,它们都利用多个指令队列620来延迟向"延迟的"流 水线发出的某些指令的执行,以及利用目标延迟队列630来保存"中间" 目标结果。
单元800的FPU 814的深度可明显大于单元600的ALU 600,从而增 加单元800的总体流水线深度。对于一些实施例,这种深度的增加允许例 如在访问L2高速緩存时隐藏一些延时。作为实例,对于一些实施例,可 在流水线P2中的早期阶段发起L2访问,以取回操作数之一用于第二 MADD指令。由第一 MADD指令生成的其他操作数可刚好在L2访问完 成时变为可用,由此有效地隐藏L2访问延时。
此外,部分地由于加载指令可产生(可由另一指令)用作地址的结果, 浮点MADD指令产生不可用作地址的浮点结果,所以转发互连可实质上 不同。因为FPU不产生可用作地址的结果,所以图8所示的流水线互连方 案实质上可更加简单。
对于一些实施例,可为了例如使用置换指令的矢量处理(例如其中将中间结果用作到随后指令的输入)的确切目的而创建各种其他流水线单元
排列。图10示出可适应这种矢量运算的级联的、延迟的执行流水线单元 1000。
类似于图8中所示的执行单元800,执行单元1000具有4个执行单元, 包括笫一和第二加载存储单元(LSU) 1012,但是具有两个矢量处理单元 FPU1014i和10142。矢量处理单元可被配置为执行各种矢量处理运算,并 且在一些情况下,执行类似于图8中的FPU814的运算以及附加功能。
这种矢量运算的实例可包括多个(例如32位或更高)乘法/加法,其 中对结果求和(例如在点积或叉积中)。在一些情况下, 一旦生成点积, 则可从中生成另一点积,和/或可简化结果以备向存储器中存储。对于一些 实施例,可将所生成的点积从浮点转换成定点、成比例和压缩的点积,然 后将其存储到存储器或发送到其他位置以用于其他处理。例如可以在矢量 处理单元1014中或在LSU 1012中执行此类处理。
多态性
对于一些实施例,可利用多态性来提供灵活性并允许一组有限的处理 核心适应具有不同特征的更大范围的应用。如在此使用的,术语"多态性" 一般指转换一个或多个物理处理核心,从而它们对于不同应用呈现出不同。 在不改变被执行的代码的情况下,处理核心的性能和行为可变化。
在当前上下文中,多态性可应用于例如如上所述的具有流水线的级联 排列的执行单元,以有效地对于不同应用呈现出不同流水线执行单元。作 为实例,可组合两个相对较窄的发出执行单元,以呈现出具有两倍发出宽 度的单个执行单元。某种类型的应用(例如具有更少线程的应用)可以从 具有更宽发出组的更少执行单元中获益,而其他应用(例如具有更大数目 线程的应用)可以从具有更窄发出组的更多执行单元获益。
可利用各种不同技术来控制是否转换("变形")一个或多个执行单 元以呈现出不同。这些技术可包括经由设置位以控制各种逻辑组件(例如 不同的预解码、发出/分派、和路径选择)的软件(例如经由应用或^Mt系统)的控制、经由在硬件(例如基于所监视的执行设置某些类型的标志以 改变发出宽度)中动态地对指令流解码/预解码的控制、或它们的组合。
指令级平行(ILP)变形
变形的一个实例可称为指令级平行(ILP)变形。总体思想是通过组 合相对窄的执行单元来实现增加的平行性,以便为同一指令流实现增加的 发出宽度。通过控制转换,可组合两个执行单元以为某些应用(例如具有 相对较少线程的游戏应用)提供增加的发出宽度,或保持两个执行单元独 立以适应更多线程(例如对于具有较多任务数的服务器)。
图11示出使得处理器的物理核心对于不同应用呈现出不同的ILP变 形的实例。如图所示,在M模式下,两个相对窄的处理核心1110可单独 工作。在所示实例中,每个核心1110具有4个流水线,并且能够处理来自 不同指令流的4个指令发出组。
然而,可使处理核心1110变形以在成组模式下呈现为单个处理核心 1120。如图所示,变形后的处理核心1120有效地用作宽度是单独核心1110 的两倍且深^A其两倍的流水线的级联排列。结果,处理核心1120能够处 理来自单个指令流的8个指令,对于一些应用来i兌,可大大增加性能。
为了有效地增加核心1120的深度以适应附加流水线,必须采用一些机 制以增加流水线(其具有相对于单独核心1110更加延迟的处理单元)的指 令队列(IQ)的深度,以及增加流水线(其具有相对于单独核心1110更 加延迟的处理单元)的目标延迟队列(TDQ)的深度。
如图12A所示,增加变形后的核心1120的IQ和TDQ的深度的一个 方法是添加附加硬件。如图所示,变形后的核心1120可利用附加IQ 1210 来緩冲指令,以及利用附加TDQ 1220来緩冲结果。可提供多个路径和控 制逻辑以便当核心单独工作时,在基础模式下有效绕过此附加逻辑。
如图12B所示,借助附加硬件实际增加变形后的核心1120的IQ和 TDQ的深度的备选方法是借助控制逻辑适应附加深度。作为实例,预解码 和/或发出/分派电路可被配置为控制发出組的计时,从而发出组的所有指令在一起有效地在流水线中传播下去。换句话说,在所示实例中,可在一个
周期上将宽度为8的组的最初4个指令(10-13)发出至左半核心,而在4 个周期后发出其次的4个指令(14-17)。可类似地控制写回电路以有效地 M来自较早(左半)处理单元的结果,从而正确地同步写回。
如上所示,各种逻辑组件可在一起工作,以实现处理器核心的变形。 例如,可灵活地配置预解码电路,从而其可净皮告知是调度单个4发出核心 还是成组的8发出核心,并相应地设置调度标志。这样,可在I线緩冲器 中正确地对齐指令。取决于实施例,可以使多个核心的资源一起成为一组。 例如,如图13所示,可以使预解码电路在一起有效地成组,以为成组 的核心生成更宽的发出组。对于一些实施例,可对指令流预解码,从而在 馈给每个核心的指令高速緩存中正确地对齐指令。如上所述,在一些情况 (如果没有实现附加指令队列)下,这种对齐可涉及使得一个处理核心的 I高速緩存中的同一发出组中的指令相对于彼此偏移。例如,可通过控制 以各个核心的发出宽度(例如+4或+8)偏移的一个I高速緩存的指令指针 来实现这种偏移。
对于一些实施例,单个预解码器可被配置为针对单个或成组发出宽度 进行调度。例如,(在软件中或以其他方式设置的)控制位可向预解码器 指出其调度多少发出宽度,并且预解码器可相应地采取操作,例如实现适 当的位以在执行期间控制逻辑。尽管这可增加一些复杂性,但是一旦为更 宽发出组完成调度,则对于窄发出组的调度逻辑基本是相同逻辑的子集。
在任意情况下,来自预解码器(多个)的指令流可流入由成组的核心 执行的I高速緩存中的一个或多个。取决于实施例,单个I高速緩存可馈 给多个成组的核心,或者可在成组的核心的I高速緩存之间划分指令。此 外,如下文中更详细描述的,对于一些实施例, 一种类型的变形可允许一 个指令控制多个核心的处理单元。在这种情况下,可将指令复制到每个I 高速緩存中,或将一部分指令包含在每个I高速緩存中。
为了使处理核心成组,可做出规定,使得每个核心可从其他核心接收 数据,以及更新其他核心的文件寄存器和/或写入其他核心的数据高速緩存。因此,如图13所示,可实现附加数据路径(线)以允许这些更新。可 实现逻辑,从而在正常操作或基础(非成组)模式下,简单地不使用这些 路径。为了最佳地运行,这些路径可被设计为允许核心像同一核心中的更 新一样快地那样更新其他核心中的寄存器。
如图14所示,可将变形思想扩展为超过2个核心。在所示实例中,4 个核心在一起变形,以形成具有4倍发出宽度的单个核心。如图所示,每 个核心都能够更新一个或多个其他核心中的寄存器文件。然而,对此更新 设置实际约束(例如将热转发限于特定指令宽度内)可减少核心间布线的 数目并便于布局。
物理平面图
为了以期望频率实现处理核心之间的更新,仔细计划可涉及处理核心 及其组件的物理布局("平面图"),以限制用于高频率更新的传输路径。
可用于实现满足变形后执行单元的计时要求的物理布局的一个方案是 在根本上设计处理核心以满足变形后(成组)核心的更宽宽度的计时要求。 如果可满足更宽发出情况的计时要求,则可实现逻辑以将更宽发出核心有 效分成单独的更窄发出核心。根据此方案,通过有效地设计要分成两半的 更宽发出核心,物理布局可具有作为跨轴的镜4象的组件。
图15示出关于轴1510基本对称的这种"蝶式"平面图的一个实例。 所述布局可被设计为最小化在加载单元和数据高速緩存之间的延时,以及 在处理单元自身(在此实例中的ALU)之间的延时。对于具有浮点单元的 实施例,计时要求可略为宽松,因为通常允许额外的一个周期或两个周期 以将加载结果提供给浮点单元。
所示的实例性平面图通过使得ALU 1520的集群接近于取回数据所出 现的位置(数据高速緩存1530)来尝试最小化在高速緩存取回和ALU之 间的路径。通过在级联流水线中限制热转发,几乎没有必须跨单独核心之 间的边界完成的高速信号路由(即高速信号路由仅在加载-加法边界t间)。 此外,通过如上所述从处理核心移除TLB,可消除与地址转换相关的频率
21问题。
如上所述,例如指令队列1522、 I高速緩存1524、和指令緩冲器1526 的其他组件也可被跨轴1510来镜像。在^l才莫式下,两个二等分的指令高 速缓存部分1524独立操作,并且能够向其各自的核心提供完整的指令。然 而,在统一或成组才莫式下, 一个指令高速緩存可提供指令的一半,而另一 指令高速緩存可提供另一半。换句话说,解码逻辑可根据变形模式以两种 不同方式加载I高速緩存 一种是每个I高速緩存提供发出组的指令的一 半;另一种是每个I高速緩存提供4^发出组指令。
利用两个I高速緩存的一个优点(即使单个I高速緩存可将所有指令 提供给成组核心)是通过4吏每个I高速緩存提供一半指令, 一个I高速緩 存不必沿全部距离将指令驱动到另一侧。然而,对于一些实施例,通过关 闭未用于在一起成组的核心的逻辑组件可实现省电。例如,如果为成组核 心使用单个I高速緩存或D高速緩存,则未使用的高速緩存可被断电。
在所示实例中,示出(VMX)单元。取决于特定实施例,VMX单元 可保持为单个单元,或者也可例如围绕轴1510净皮划分。
当然,可对允"^午将多于2个的核心变形为1个的平面图应用类似概念。 例如,图16示出组合4个核心的平面图。如图所示,在此类4-核心应用中, 可通过以下方式布局组件,即围绕水平轴1610和垂直轴1620形成实质上 的镜像。可利用与上述类似的技术在不同I高速緩存之间分发指令加载, 或允许单个I高速緩存向多个核心提供全部指令流。
矢量变形
变形的另 一实例可称为矢量变形。总体思想是通过组合相对窄的执行 单元实现增加的平行性,以为同一指令流实现增加的发出宽度。通过控制 转换,可组合2个或更多个执行单元,以为某些应用(例如具有相对少线 程的游戏应用)提供增加的发出宽度,或4吏它们保持独立以适应更多线程 (例如对于具有较多任务数的服务器)。
图17示出4吏得处理器的物理核心对于不同应用呈现出不同的矢量变形的实例。如图所示,在基础模式下,两个相对窄的处理核心1710可单独 工作。在所示实例中,每个核心1710具有4个流水线,并且能够处理来自 不同指令流的4个指令发出组。
然而,可对处理核心1710变形以在成组模式下呈现为单个处理核心 1720。在一些实施例中,可对指令队列和目标延迟队列分流,以有效提供 大于单独核心1710的流水线的平行排列,如图17所示。结果,可通过单 个指令并行处理具有若干操作的更大指令(如64位矢量指令,如图18所 示的指令)。在指令中发现的操作可包括矢量加栽(VL)、矢量乘法/加 法(VMADD)、矢量存储(VST)、分支条件目标(BCT)、以及本领 域普通技术人员已知的其他指令。
然而,在一些实施例中,可对处理核心1710变形,以有效用作比单独 核心1710更宽和更深的流水线的级联排列。结果,处理核心1720能够处 理来自单个指令流的8个或更多个指令,对于一些应用可大大增加性能。
为了有效增加核心1720的深度以适应附加流水线,必须采取一些机制 以增加处理单元(具有相对于单独核心1710的更多延迟)的流水线的指令 队列(IQ)的深度,以及增加处理单元(具有相对于单独核心1710的更 多延迟)的流水线的目标延迟队列(TDQ)的深度。
如上所述,除了对两个处理核心变形之外,可将多个处理核心在一起 变形。例如,芯片可具有4个处理核心,每个处理核心具有4个流水线。 在一些实施例中,可对所有4个处理核心的所有4个流水线变形以在一起 工作。图19示出根据本发明实施例的在一起变形的4个处理核心。
可对所有4个处理核心一起变形的一个方法是将同一指令线加载到每 个I高速緩存1920中,使得所有4个核心在每个周期看到同 一指令。参照 先前实例,结果是并行执行同一操作(例如LMADD)的16个实例。这可 通过接收额外位移(例如+0、 +4、 +8、 +12)而每次在高速緩存中具有16 个元素并且对每个核心分配要获取的4个元素的子集(例如COREO获取 元素0-3, COREl获取元素4-7等)来实现。由控制逻辑1930对每个处理 核心分配要获取的4个元素的子集。在一些实施例中,控制逻辑可与预解码逻辑1910耦合。
如上所述,将同一指令线加载到每个I高速緩存1920中的一个问M 在对I高速緩存1920、解码器以及4个核心中的每个核心的其他硬件供电 时消耗的不必要功率。这些硬件组件中的若干组件对于操作来说不是必要 的,因为一个核心的指令与其他核心中的每个核心的指令相同。例如,在 矢量才莫式配置下,存在执行16次乘法/加法或16次加载或16次存储的一 个指令,并且每个I高速緩存将具有同 一指令的副本。
在克服上述功率问题时可将所有4个处理核心一起变形的另一方法是 指定一个处理核心作为主处理核心,并在相应I高速緩存1920中加载指令 线,以及使I高速緩存1920、解码器以及剩余3个处理核心的其他未使用 硬件断电。例如,如果将单个I高速緩存或D高速緩存用于成组核心,则 可使未使用的高速緩存断电。然后,总线可从主处理核心的I高速緩存1920 通向所有剩余处理核心。
在一些实施例中,可将多个CPU在一起变形以看起来像单个处理核 心。图20示出在一起变形的多个CPU2010。在一些实施例中,多个CPU 2010可位于单独芯片上。第一 CPU 2020被指定为主CPU,并经由多个 64位总线向剩余CPU 2010发出指令。可实现逻辑以确保在各个CPU之 间保持正确计时和指令划分。
图21进一步示出可在各个CPU之间保持正确计时中采用的逻辑。公 共I緩冲器2110可用于取回和存储指令,然后由发出/分派逻辑2120分派 和发出这些指令。I緩沖器2110和发出/分派逻辑2120可物理地位于主芯
片2020上。然后,所发出的指令,iciL送至指令队列,然后^JC送至主CPU
2020和从CPU 2010。然后,指令经过每个CPU上的延迟逻辑2130,以 在由每个芯片上的每个处理核心2150执行之前确保正确的指令同步。
尽管上文涉及本发明的实施例,但是在不脱离本发明的基本范围的情 况下,可以构想本发明的其他和进一步的实施例,并且本发明的范围由随 后的权利要求所确定。
权利要求
1.一种处理器,包括第一和第二处理器核心,均具有多个流水线执行单元以便执行具有多个指令的发出组;以及调度逻辑,被配置为,当所述处理器处于第一操作模式时,向所述第一处理器核心发出指令的第一发出组以便执行,并且向所述第二处理器核心发出指令的第二发出组以便执行;以及被配置为,当所述处理器处于第二操作模式时,发出一个或多个矢量指令以便在所述第一和第二处理器核心上同时执行。
2. 如权利要求l所述的处理器,其中所述第一和第二处理器核心均具有能够执行具有N个指令的发出组的N个流水线执行单元。
3. 如权利要求1所述的处理器,其中所述第一和第二处理器核心均 包括流水线执行单元的级联,在所述处理器处于第一操作模式时,所述流 水线执行单元以相对于彼此延迟的方式执行公共发出组中的指令。
4. 如权利要求3所述的处理器,其中在所述处理器处于第二操作模 式时,所述第 一和第二处理器核心的流水线执行单元以并行方式执行与矢 量指令对应的操作。
5. 如权利要求4所述的处理器,其中所述第一和第二处理器核心包括目标延迟队列,在所述处理器处于第 一操作模式时,所述目标延迟队列允许以相对于彼此延迟的方式发出公共 发出组中的指令;以及在所述处理器处于第二操作模式时,所述目标延迟队列被分流。
6. 如权利要求1所述的处理器,还包括可由软件指令控制以在所 述第 一和第二操作模式之间进行选择的机制。
7. 如权利要求1所述的处理器,其中所述调度逻辑净皮配置为 向所述第一和第二处理器核心发送所述矢量指令的相同副本,使得所述第一和第二处理器核心在单个时钟周期内看到同样的指令;以及向所述第一和第二处理器核心发送偏移值,以有效地对所述第一处理器核心分派所述矢量指令的第一子集以及对所述第二处理器核心分派所述矢量指令的第二子集。
8. —种计算系统,包括第一和第二处理器,均具有多个处理器核心以^更执行一个或多个矢量指令;以及调度逻辑,被配置为,当所述计算系统处于第一操作模式时,向所述第 一处理器发出 一个或多个矢量指令以便执行,并且向所述第二处理器发出一个或多个矢量指令以《更执行;以及4皮配置为,当所述计算系统处于第二操作模式时,向所述第一和第二处理器发出具有矢量指令的发出组以便执行。
9. 如权利要求8所述的计算系统,其中所述第一和第二处理器均包括多个处理器核心,在所述计算系统处于第一^Mt才莫式时,所述多个处理器核心以相对于彼此同时的方式执行矢量指令。
10. 如权利要求9所述的计算系统,其中在所述计算系统处于第二操作模式时,所述第 一和第二处理器的处理器核心以相对于彼此延迟的方式执行具有矢量指令的公共发出组中的矢量指令。
11. 如权利要求10所述的计算系统,其中所述第一和第二处理器核心包括目标延迟队列,在所述处理器处于第一操作模式时,所述目标延迟队列允许以相对于彼此延迟的方式发出公共发出组中的指令;以及在所述处理器处于第二操作模式时,所述目标延迟队列被分流。
12. 如权利要求8所述的计算系统,其中所述调度逻辑与所述第一处理器共享印刷电路板。
13. 如权利要求8所述的计算系统,还包括可由软件指令控制以在所述第 一和第二操作模式之间进行选择的机制。
全文摘要
本发明涉及一种处理器和计算机系统。本发明的一个实施例提供了一种处理器。该处理器通常包括第一和第二处理器核心,均具有多个流水线执行单元以便执行具有多个指令的发出组;以及调度逻辑,被配置为,当所述处理器处于第一操作模式时,向所述第一处理器核心发出指令的第一发出组以便执行,并且向所述第二处理器核心发出指令的第二发出组以便执行,以及被配置为,当所述处理器处于第二操作模式时,发出一个或多个矢量指令以便在所述第一和第二处理器核心上同时执行。
文档编号G06F9/38GK101676865SQ20091017191
公开日2010年3月24日 申请日期2009年9月18日 优先权日2008年9月19日
发明者D·A·卢伊克 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1