« Xbox 360 架构 (index)

Xbox 360 架构

Chapter 3: 中央处理器 (CPU)


目录

  1. 简介
    1. 从编译者到统治者
    2. 共享同样的问题
    3. 怀恨在心的老朋友
    4. 新的 CPU 合作伙伴
  2. Cell的半个兄弟
    1. 对CPU历史的新看法
  3. 我们如何进行研究
    1. Xenon的不同方法
  4. 深入Xenon:信使
    1. 共享缓存
  5. Xenon的内部:领导者(们)
    1. 新的向量单元
    2. 一个新的但短命的指令
    3. 重访旧范式
      1. 另一种解决方案
      2. 关系侵蚀
  6. Xenon内部:主内存
    1. 内存控制器
  7. Xenon内部:编程风格

再一次,我们遇到了一种新型CPU,它与市面上见过的任何产品都不同。 毕竟,这是另一款第七世代游戏机,反映了那个时代对创新的痴迷需求。

简介

在我们讨论架构之前,我会先从一些历史背景开始,以便让您了解情况。 接下来的段落将聚焦于Xbox 360的CPU的商业方面,其事件序列至少可以说是有趣的。

我会尽量简短,这样我们就可以专注于这个系列的主要话题。但如果您最后感兴趣想了解更多,你可能会喜欢一本名为《新游戏机的竞赛》(The Race For A New Game Machine)的书,这本书是由IBM的前高管撰写的。

从编译者到统治者

Image
在2005年E3展会上,微软的展示开场,Robbie Bach、J Allard和Peter Moore公布了Xbox 360。

在享受初代Xbox令人惊喜的成功之后,微软开始着手开发继任产品。 公司首先寻找能够对抗索尼即将推出的技术的供应商。然而,与之前的发展不同,微软现在在即将进行的谈判中占据了上风。

为了了解背景,回到初代Xbox项目还处于早期阶段时,英特尔和英伟达都不愿意与微软分享他们的知识产权。 这个决定限制了微软根据Xbox的特定需求塑造英伟达或英特尔的芯片的能力。

例如,保护游戏机免受未授权代码执行的安全子系统是在这两块关键芯片之外实现的。 这使得它容易受到嗅探攻击,最终导致自制软件和盗版游戏在机子上的执行。 此外,微软也无法控制制造阶段,因此Xbox游戏机的生产取决于英特尔和英伟达的供应。

现在,微软在游戏机市场上获得了更多的杠杆,他们不再愿意放弃这些权利。

共享同样的问题

Image
初代Xbox的CPU(2001)。 英特尔设计制造。

Image
同构CPU的概念。 这正是微软为他们的下一代CPU所设想的。

与计算机行业的任何其他公司一样,21世纪初的创新危机无差别地影响了微软和索尼。 然而,不同之处在于,这两家公司为他们的 CPU 设计下了不同的赌注。 初代Xbox依赖于流行的现成产品(英特尔的奔腾III)并进行了一些定制,这是一个单核CPU,通过向量化指令和复杂的缓存设计进行了扩展。 另一方面,索尼的向量化冒险(情感引擎(EE))由一个低端CPU组成,周围环绕着专有的但功能强大的助手。

对于他们的新一代产品,微软决定采用保守的设计,并结合一些实验性想法。 根据他们的清单,新的CPU将是多核的(即,一个芯片内包含许多对称且同构的CPU核心),供应商必须与微软共享他们的知识产权(IP)

最后一个条件与第一个条件一样关键,因为它将使Xbox团队能够在芯片内集成一个安全系统(与初代Xbox不同,这次它将得到适当的庇护)。 此外,知识产权将授予微软选择第三方制造商来处理需求并谈判更好的成本,从而制造出具有竞争力的定价的新游戏机。

因此,微软开始与英特尔会面,尽管谈话并没有持续很长时间,因为英特尔不愿意透露其秘方。 所以,微软继续寻找。

怀恨在心的老朋友

Image
2019年6月我在计算机历史博物馆(加利福尼亚州圣何塞)参观时发现的一台 IBM 个人电脑。 出于某种原因,他们不允许你使用它......

碰巧,微软的潜在候选人之一竟然是IBM。 也许我看过的戏剧性纪录片太多了,但我总是把这两家公司想象成那种只在有其他人在场时才会相互微笑的消极攻击性"朋友"。

您看,过去IBM和微软形成了许多合作关系,但最终双方都心存怨恨。 尽管如此,他们的协议最终打破了全球市场的现状,为新的消费产品和开发铺平了道路。 举几个例子:

到了世纪之交,IBM将注意力转向内部产品,包括与苹果和摩托罗拉的合作,这导致了一系列具有独特架构的CPU的诞生,其名为PowerPC

当微软向IBM提出一个新的_无缝合作_时,IBM已经在与东芝和索尼合作,创建一个用于科学应用的更高级的 PowerPC 处理器。 尽管如此,IBM对新的商业机会持开放态度。

新的 CPU 合作伙伴

在事件的发展中,IBM同意分享其知识产权,并设计一个新的多核处理器,因此Xbox 360的CPU供应商变成了 IBM。 然而,您可能还记得,这正是与索尼和东芝签订协议生产PlayStation 3 CPU("Cell")的同一家IBM。 显然,IBM以为微软对Cell项目并不知情,并且他们与索尼的当前合同并未禁止他们向第三方销售。

这三家公司[IBM、东芝和索尼]......在法律上都有权将任何这些技术、任何这些处理器核心应用到其他领域。 (...) 非常常见的是,开发出一个有趣、前沿的新技术,然后利用这项技术在多个平台上。 (...) 我猜大家都没有预料到的是——在我们甚至还没有完成Cell芯片和PS3产品之前——我们就会特别向竞争对手展示这一点

——David Shippy,Power处理单元(PPU)的首席架构师

讽刺的是,截至2022年,IBM的PowerPC芯片已经从台式机和视频游戏机中消失了,这可能树立了一个不好的先例,极大地影响了IBM在未来业务中的信任? 我稍后会讨论这种影响。

总结一下,IBM在2001年与索尼和东芝签订协议开发Cell。 两年后的2003年,IBM同意向微软提供一个新的低功耗多核CPU。 微软的CPU将被称为Xenon,并将继承Cell的一部分技术,同时加上微软的额外投入(专注于多核同构计算和定制安全系统)。 此外,虽然IBM将Cell与其"BladeCenter"系列服务器相搭配,但Xenon只能安装在Xbox 360的主板上。

Cell的半个兄弟

现在我们已经把微软和IBM放在了地图上,让我们来谈谈新的CPU。 这就是Xenon在Xbox 360项目结束时如何成型的

Image
Xenon的简化示意图。

Image
为了比较,这里是Cell的示意图。 Cell也包括32 KB的ROM,这里没有显示。

别担心,这篇文章将解释所有这些组件,从左上角显示的PPE块开始。

对CPU历史的新看法

Cell项目,因其对向量化计算的痴迷,引入了非常有趣的方法来彻底解决阻碍技术进步的持续限制。 然而,这些限制非常复杂。 因此,说Cell的方法是最好的解决方案,甚至是不公平的。 换句话说,通过研究Xenon的架构(它与Cell一起竞争)我们可以获得不同的视角,了解CPU架构在那个时代(21世纪初)是如何发展的,并随后影响了接下来十年的CPU。

Image
Xenon芯片,周围环绕着一支去耦电容大军

这样做,你会发现Xenon采取了一种比Cell更保守的方法。 如果我们再看看之前Xenon的图表,你可以注意到后者配备了著名的PowerPC处理元件(PPEs),这也是Cell最重要的部分。 然而,Xenon现在配备了三个。 此外,协同处理元件(SPUs)已经不存在了。

毕竟,微软不希望他们CPU中的处理器性质差异太大。 他们指示IBM组成三个强大的核心,并用游戏开发者期望找到的成分来增强它们。 通过这种方法,IBM和微软还能够添加非标准特性,而不会破坏开发者的传统_工作方式_。

说实话,这也导致了预算的削减,以保持这个设计(以及系统的其余部分)在具有竞争力的价格范围内。 为了说明这一点,IBM在构建Xenon时,多核CPU还没有出现在PC的货架上,而当它们在2005年首次亮相时(恰好也是Xbox 360进入商店的那一年),AMD他们的最便宜的速龙X2定价为537美元(相当于2021年的约452英镑),而英特尔为他们的低端奔腾D收费241美元(相当于2021年的约203英镑)——别忘了盒子只包括CPU。

我们如何进行研究

现在,我们将来看看构成索尼对应产品的主要组件。 为了避免重复现有的信息,我将专注于Xenon的新颖之处。

虽然这么说,这款新的CPU运行频率为3.2 GHz,并且集成了如此多的电路,以至于在这项研究中,我们不得不将其分为不同的组别:

Xenon的不同方法

为了解释前面提到的各个组别,我已经按照这个顺序组织了对Xenon的研究:

  1. 首先是连接所有核心的总线,即XBAR和其特殊的L2缓存块
  2. 然后是PowerPC处理元件(PPE)的新改进。
  3. 接下来是通用内存的异常丰富。
  4. 微软提出(并在某种程度上强制执行)的新编程模型。 深入 Xenon:信使 原始芯片(Cell)需要容纳十二个独立节点来积极移动数据,这迫使 IBM 工程师设计了一个复杂的系统,以解决出现的瓶颈问题,这个系统就是元素互连总线(EIB)。而在 Xbox 360 中,Xenon 只需要容纳三个单元(三个 PPE),所以 EIB 在这里没有用途。因此,产生了一个更简单的解决方案,称为 XBAR,专门关注这三个 PPE,并留有空间以增加额外功能。

深入Xenon:信使

原始芯片(Cell)需要容纳十二个独立节点来积极移动数据,这迫使IBM工程师设计了一个复杂的系统,以解决出现的瓶颈问题,这个系统就是元件互连总线(EIB)。 而在Xbox 360中,Xenon只需要容纳三个单元(三个PPE),所以EIB在这里没有用途。 因此,产生了一个更简单的解决方案,称为XBAR,专门关注这三个PPE,并留有空间以增加额外功能。

XBAR依赖于一种网状拓扑结构,它不是以令牌方式引导流量。 相反,每个节点都提供了一个专用通道来移动其数据。 这看起来可能比EIB的令牌拓扑结构更优化,但这是因为XBAR只需要服务于少数节点。 此外,XBAR以全速(3.2 GHz)运行。

Image
这是XBAR/Crossbar与L2组件结合的简化示意图。

Image
为了比较,这是Cell处理器中EIB的架构(在PS3中找到)。

公平地说,到目前为止,我只谈到了连接PPE的特定接口。 好吧,XBAR只是IBM为Xenon设计的庞大块状结构中的一部分。 事实证明,剩余的空间让他们有机会整合另一个非常重要的块,以加速PPE与系统其他部分之间的交易:L2缓存

共享缓存

PPE通过XBAR可以访问1 MB的L2。 L2块也是以网状方式连接的,每个PPE都有一个独立的256位总线,但现在时钟频率为1.6 GHz(PPE速度的一半)

巧合的是,Cell处理器也为它的单个PPE配备了512 KB的L2。 我在之前的一篇文章中只用了一句话来描述它。 但现在,我们面临的情况是缓存空间更大,而且它们被三个核心共享,因此我觉得有必要深入探讨L2缓存块的特性,这样我们才能理解它将如何影响PPE的性能。

首先,每当缓存从内存中获取数据时(在发生"缓存未命中"的情况下),它都是通过拉取一个被称为"缓存行"的大块数据来完成的,在Cell和Xenon的情况下,这个缓存行是128字节宽。 然后,L2会在一个内部列表上记录这个缓存行,以便将来能够找到它。 此外,在Xenon/Cell中,L2是8路关联的,这意味着缓存集可以存储多达八个不同的缓存行。 如果你不知道这是什么意思,也不用担心,CPU缓存背后的理论可能很难理解,特别是如果你只想了解游戏机的话。 用通俗的话来说,关联度越高,缓存未命中的概率就越小,但遍历内部列表的速度也会越慢。

Image
Xenon中的缓存布局

选择8路关联缓存对Xenon来说并非一时冲动,因为提供八个关联可以缓解六个同时运行的线程(每个PPE都是双线程的)试图同时访问L2缓存块的压力。 这也在频繁的缓存未命中和查找时间之间取得了平衡。 所有这些,同时还要控制成本。 作为比较,昂贵的英特尔"Smithfield"(2005年的Pentium D)为每个核心提供了2 MB的L2缓存!

微软为了降低成本而削减缓存这并不是第一次,所以开发者需要优化其使用。 为了帮助做到这一点,XBAR集成了额外的逻辑,如"缓存锁定",这将在"图形"部分进一步解释。

Xenon的内部:领导者(们)

关于XBAR和L2的描述就到这里,现在让我们来谈谈实际的CPU。 提醒一下,因为我已经在PS3的文章中剖析了标准的PPE(在Cell中找到),所以这里我将专注于新的特点。

首先,Xenon的PPE不再包含PowerPC处理器存储子系统(PPSS),可能是因为接口部分由XBAR处理,而且L2现在是在三个单元之间共享的。

Image
Xenon的PowerPC处理元件(PPE)的简化示意图。

Image
为了比较,这是Cell的PPE。

说实话,我不确定为什么技术手册总是把Xenon的PPE称为"PPE",因为它们更像是一个PPU

不管怎样,让我们来看看微软喜欢在与PlayStation 3比较时吹嘘的显著变化。

新的向量单元

由于协同处理器元件(SPEs)是索尼的秘密武器,而微软只对同构系统感兴趣,IBM提出了一种加速Xenon中向量(vector)和矩阵(matrix)操作的新方法。 简而言之,IBM增强了VMX单元(在PPE中能找到的SIMD单元),它演变成了VMX128,现在拥有更多的寄存器和操作码。

PlayStation 3中最初实现的VMX规范提供了32个128位寄存器和操作指令,可以操作多达三个32位标量。 这对于依赖SIMD操作的一般应用来说是可接受的,尽管只有加入SPEs,真正的性能才能被释放。 相比之下,微软希望程序员能够轻松地移植那些需要SIMD的应用程序,新的VMX128单元反映了这一点。

VMX128提供了128个128位寄存器,以及一个修改后的指令集来操作更广泛的寄存器集。 为了实现这一点,IBM改变了操作码格式,分配了7位(而不是5位)来引用其扩展的寄存器文件。 这是通过在32位操作码的最后五位应用一些技巧来实现的。 最后五位大多数情况下,但并非完全,未被VMX使用。 因此,VMX128与VMX指令的子集(与整数乘法和加法相关)不兼容。

此外,VMX128增加了新的指令,可以计算由多达三个32位浮点数组成的两个向量的点积;以及其他处理Direct3D数据压缩格式的指令。值得注意的是,DirectX是这个游戏机编程的唯一API。 最后,由于Xenon的对称设计及其多线程模型(双发射),VMX128的寄存器文件被复制,因此每个核心有256个128位寄存器

在这个部分的最后,还有一个问题没有回答:对于向量操作来说,哪个更快,1个VMX加上6个SPEs(如PS3)还是3个VMX128单元(如Xbox 360)? 嗯,他们的设计太不同了,很难量化。 有人可能会说"SPE可以每个周期执行多达两个指令,而Xenon需要12个周期来把两个向量加起来(由于PPE的长流水线)",但这是相对的,因为SPE的内存范围仅限于其本地内存(需要DMA调用与外部交互),而Xenon的PPEs可以访问任何内存位置。 所以,总的来说,这是两个截然不同的模型,程序员只能尽力发挥它们的最佳性能。

一个新的但短命的指令

随着更大缓存系统的出现,微软和IBM扩展了PowerPC指令集,以适应一些从程序端操作这些块的指令,以防程序员希望进行手动干预(如提前缓存数据或节省L2空间)。 无论如何,标准的PowerPC规范已经提供了dcbt(Data Cache Block Touch,"数据缓存块触摸")指令,用于从内存中获取数据到L1(每个核心单独)。 然而,微软更进一步,增加了xdcbt(Extended Data Cache Block Touch,"扩展数据缓存块触摸")来填充L1,甚至不经过L2(所有核心共享)。 这很有意义,因为共享的L2是Xenon的新增功能。 然而,绕过L2是一种风险操作,因为两个核心可能会看到不同的数据(缓存不一致),所以需要程序员正确处理以保持缓存一致性和避免竞态条件。

不幸的是,xdcbt在微软开始收到游戏工作室的错误报告之前一直运行良好。 最初,微软依赖这个指令用于他们API中提供的常见例程(如memcpy()),但他们没有考虑到随后的缓存一致性缺乏。 因此,他们从API中删除了xdcbt的使用。 然而,工作室发现了一个更大的问题:xdcbt之后的分支指令总是执行后者。 事实证明,分支预测器将尝试执行xdcbt(就像任何可能在后来被撤销的指令一样,如果预测结果被证明是不正确的),除非缓存块被破坏,否则无法撤销(这将成为一个冒险)。 因此,程序不会同步缓存,因为它假设xdcbt没有被触发,导致PPEs处于混乱状态。

最终,由于xdcbt的非确定性(因此不可预测)行为,微软从编译器中清除了它,剩下的只是一个轶事。

重访旧范式

在2005年的重要著作中,如乔恩·斯托克斯(Jon Stokes)的《深入Xbox 360》 或安南德·拉尔·西姆皮(Anand Lal Shimpi)的《理解Cell微处理器》,有一个反复出现的话题,那就是早期PowerPC芯片如Gekko中首次出现,但在Cell和Xenon中却完全缺席的乱序执行(out-of-order execution),。 如果你还记得我两年前写的关于GameCube的文章,Gekko是一个乱序CPU,这意味着它能够分析指令流,并在指令进来后重新排序,以更好地分配Gekko内部单元的负载。

那时,采用乱序执行技术的CPU核心已然成为当时的顺位。 IBM的PowerPC 604(1994年)将其引入高端Macintosh电脑,Intel的P6(1995年)将其引入x86系列,MIPS则通过R10000 CPU(1996年)实现,这是任天堂64上R4000的继任者。 之后,突然之间,Cell和Xenon以顺序执行的方式出现......想解释一下这是为什么吗

为了理解这一转变,让我们更仔细地看看乱序执行(OoO)模型。 OoO并不是工程师安装后就继续下一步的乐高积木。 流水线式的CPU容易受到一系列新的冒险的影响,这意味着最微小的添加可能导致彻底的重新设计。 例如,OoO需要改变寄存器文件以适应寄存器重命名,这是一种聪明的技术,CPU包含的寄存器比指令集引用的更多,使CPU能够存储程序状态的多个副本,并防止在改变指令原始顺序后出现的依赖问题。 总的来说,虽然这些解决方案很有趣,但它们增加了CPU芯片的复杂性,这可能对未来可扩展性构成威胁。

PowerPC处理器元件(PPE)源自POWER4,它本身就是一个OoO核心。 然而,POWER4本身是一个独立的(且耗电的)芯片,而PPE要么被7个SPE包围(如PlayStation 3/Cell),要么被两个更多的PPE包围(如Xbox 360/Xenon)。 这些变化占据了空间,而CPU芯片的尺寸在价格和热耗散方面至关重要。 所以,最终,我想象IBM没有看到在PS3或Xbox 360这样特定应用的机器上应用OoO的足够优势。

另一种解决方案

这样想,OoO最初是为了什么而发明的呢? 是为了防止CPU空闲(因为空闲等于浪费资源)。 那么,应用程序(如3D游戏)容易遇到这个问题吗? 也许会,但同样正确的是,OoO并不是解决这个问题的唯一可能的解决方案! 隆重介绍线程级并行(Thread level parallelism,TLP)。

如果我们不是去确定哪些指令应该首先执行,而是将资源复制成两组(或更多)称为"线程"的组,并让程序在认为更适合的不同资源组之间切换(多线程),会怎样呢? 这就是IBM工程师选择的方法,也是PPE双发射的原因。 这种新技术称为线程级并行(TLP),它与指令级并行(ILP)的不同之处在于,它让程序而不是CPU来提出自己的解决方案。 在Xenon和Cell上,现在由编译器和程序的多线程实现来产生一个有效的指令序列。

有趣的是,这两种方法没有好坏之分,市场上仍然可以找到乱序处理器(Intel/AMD仍然支持OoO,以及大量的其他技术,而ARM在2007年通过Cortex-A9采用了OoO)。 此外,这些CPU具有多线程核心,甚至在同一芯片中集成了多个核心,因此你得到了两种技术的混合(TLP和ILP)。

关系侵蚀

然而,尽管从技术角度来看,省略乱序执行可能是合理的,但这最终会削弱人们对IBM长期能力的信任。 苹果公司意识到未来的PowerPC芯片将无法与英特尔抗衡,于是在2005年率先放弃与IBM的合作,转而采用英特尔的处理器(正好赶上了Yonah处理器)。 然而,这并没有让IBM感到担忧,他们更愿意专注于服务器和游戏领域。

但PowerPC CPU的长期结果却是灭绝。 上述技术限制(毕竟IBM曾经是乱序设计的先驱),加上可疑的商业伦理(IBM同时秘密为两个竞争对手设计),导致其失去了整个游戏机市场:索尼和微软为他们的下一代游戏机选择了AMD CPU。 十年后,任天堂的Wii U将成为最后一个捆绑PowerPC芯片的游戏机。

Xenon内部:主内存

与装备有256MB XDR DRAM的竞争对手不同,Xenon旁边没有安装任何外部内存。 没错,与日本竞争对手相比,这是一个100%的减少。

好吧...让我重新表述一下。 在主板上,多个芯片总共提供了512MB的GDDR3 SDRAM,但它们位于GPU旁边,而不是CPU旁边。 所以...你可能已经猜到了。 与初代Xbox一样,微软选择了统一内存架构(UMA)布局,其中所有组件共享相同的RAM芯片。 这提供了更大的灵活性,可以根据需要为CPU或GPU保留更多内存。 然而,对于各种组件来说,单一访问点意味着距离较远的组件(如CPU)将遭受比假设CPU有专用内存时更高的延迟。 这一点被IBM和微软的工程师注意到,并随后通过前述的L2缓存以及额外的电路(这将在"图形"部分解释)来解决这个问题。

Image
Xenon旁边的"Xenos"(GPU)守护着256MB的GDDR3,剩下的一半在背面。

内存芯片的类型(GDDR3)与WiiPS3中发现的相同。 相反,Xbox 360因为包含最大的内存量而获得好评。 实际上,有报道称微软最初计划安装256MB内存,但后来因为担心索尼的即将推出的竞争对手而将内存量翻倍。 不过,与索尼不同,微软在零售价格上更加谨慎,因此不得不削减其他功能。 这就是为什么硬盘驱动器变成了选装件。 此外,微软期望其内存供应商三星提供工作频率为1.4GHz的芯片,但在发货时却只能以700MHz的频率交付。

内存控制器

说完这些,Xenon如何访问这个内存呢? 好吧,CPU通过一个称为前端总线(Front-side Bus,FSB)的接口与GPU通信,这将串行和并行通信模型结合起来,以尽可能降低成本和减少延迟。

在外部,有两个单向通道名为"PHY",每个由16条总线组成,以异常快的速度运行在5.4 GHz。 在那里,信息以串行形式传输。 然而,在内部,CPU和GPU只理解整个字。 因此,两个端点都负责在通过PHY发送之前将数据序列化,并在接收后将其反序列化(移位寄存)。 CPU的内部接口为64位宽,运行频率为1.35 GHz,而GPU的为128位宽,运行频率为675 MHz。 如果我们做数学计算,两条通道提供的带宽为10.8 GB/s。

前端总线路由只带你到GPU。 因此,在GPU和GDDR3芯片之间,GPU内的两个内存控制器每个使一个1024位总线来管理这个连接。 为了减少延迟,内存控制器使用地址镶嵌(tiling)进行与GPU相关的操作,并使用路径查找来减少CPU拥塞。 一般而言,微软表示GPU和内存之间的带宽为22.4 GB/s

这一切在纸面上看起来都很棒,但我们不要忘记CPU仍然需要走很长的路才能到达内存。 直观地设想一下,如果你使用PIX(随SDK一起提供的CPU分析器)并运行该实用程序附带的样本测试,你会看到每次缓存未命中时,CPU花费约600个周期才能到达内存! 这是基于UMA的系统的_特征_之一,你不会经常看到它在市场上被宣传:),但它也帮助你理解为什么缓存如此重要。

Xenon内部:编程风格

说完这些,任何人如何利用这个_迷人的_芯片呢? 好吧,只有一种方法:多线程。

从编程的角度来看,由多个共享相同内存的相同核心组成的CPU就是我们所说的对称多处理(Symmetric Multi-Processing,SMP)设计。 这将决定应用程序的设计和实现方式。 截至2022年,这是消费者多核CPU(即x86和ARM)的事实上的布局。

SMP编程使用"虚拟线程"抽象访问物理CPU核心。 虚拟线程是程序员定义的指令序列。 然后,线程可以被提交给"调度器"以执行。 调度器是另一个程序(通常是操作系统的一部分),它处理虚拟线程如何分派到物理CPU核心。

这个抽象层允许程序员避免区分所使用的核心类型(因此使程序与类似平台兼容)和硬编码核心数量(使其可扩展)。

Image
Xenon上多线程范式的表示。 一个程序可以创建n个线程(在这个例子中是两个),然后操作系统的调度器负责将线程分派到物理核心。 请注意,操作系统也作为一个线程运行。

这种风格成为未来游戏机世代的标准并不奇怪,因为与不对称系统(即 Cell)相比,对称系统更容易扩展和编程。 后者通常依赖于不寻常的编程风格,侵蚀了与其他系统的兼容性。

此外,值得一提的是,虽然SMP编程不一定局限于一个平台,但Xbox 360开发者将只为Xenon编写线程(总共提供六个线程)。 这使他们能够为Xbox平台优化他们的多线程设计。


Previous: 2. 快速入门

Next: 4. 图形


Rodrigo Copetti © 2026 RSS Feed

切换至现代版

主页 · 文章 · 支持 · 关于作者 · 关于此网站