A9VG电玩部落论坛

 找回密码
 注册
搜索
查看: 2947|回复: 4

[教學]CPU "Emotion Engine" 工作原理解密

[复制链接]
该用户已被禁言

精华
0
帖子
1957
威望
0 点
积分
1783 点
种子
11 点
注册时间
2005-3-13
最后登录
2024-9-13
 楼主| 发表于 2007-6-18 21:56  ·  马来西亚 | 显示全部楼层 |阅读模式


本文主要分析了Sony出品的Playstation 2的核心:Emotion Engine。當然,不可能只關注於Emotion Engine而忽略PS2的其他部分。所以在文章的開頭,首先對PS2的整體設計進行簡介,然後我們再把目光集中在Emotion Engine上。

PLAYSTATION2的整體結構

在整個PS2結構中我們如此關注於Emotion Engine是因為,與標準PC的CPU相比,Emotion Engine並不是通用處理器。PC的CPU是為了完成SPEC測試而設計的……當然,這麼說刻薄了一點,是讓應用程序代碼的執行速度越快越好。不可避免地,由於應用程序代碼的形式與功能五花八門,CPU必須有足夠的兼容性以執行一個程序員所能寫出來的各種稀奇古怪的東西。在一個PC系統中,通用性的CPU必須依賴於所添加的特殊硬件才能完成諸如圖形加速,網絡通信,音頻處理等任務。

PS2則又有不同,它生來就是為了讓一種程序的運行效果好到極致:3D遊戲。雖然PS2也可以上網,收發email,或其它一些軟件,但這些都排在第二位。PS2就是專為運行3D遊戲而存在的,它所做的就是盡其所能地產生各種*真的視聽效果來營造一個虛擬的世界。幾乎所有PS2的硬件都是為此而設計的。

那PS2如何生成3D圖像和音響效果呢?下面我們來看PS2的主要部件構成:

由圖可見,PS2主要分為4大部分。I/O Processor(簡稱IOP)控制所有的U**,FireWire和手柄接口。當你在PS2上玩遊戲的時候,IOP將手柄輸入送給Emotion Engine(簡稱EE),從而由Emotion Engine去更新遊戲場景。可以說,Emotion Engine是PS2的核心,是真正使PS2獨一無二的關鍵部件。Emotion Engine主要控制以下兩類運算:

幾何運算(Geometry calculations):幾何變形,幾何變換等。
行為/世界模擬(Behavior/World simulation):敵方AI,兩個物體間的磨擦,模擬生成海浪的高度等。
其他功能(Misc. functions): 程序控制,管理等。

總而言之,Emotion Engine的任務就是產生display lists(一系列顯示命令的序列)送給Graphics Synthesizer(PS2的圖形加速卡,簡稱GS)。GS負責執行所有的標準視頻加速函數,它的作用是將EE傳來的display lists顯示出來。最後,Sound Processor(即PS2的聲卡)以AC-3和DTS輸出3D數字音頻信號
  

Emotion Engine基本構架

正如上文所提到的,Emotion Engine的主要輸出是display list。生成這些display list需要進行大量的幾何運算。比如說,你正在運行賽車遊戲,在拐彎進入下一場景前得首先算出輪胎與地面之間的虛擬摩擦。又如第一視角射擊遊戲,必須執行敵方AI的路徑查找代碼,這樣才能知道如何將其放入每一幀。在每一幀畫面的背後都有如此多的要素影響到屏幕上的輸出。所有這些幾何運算,物理運算,AI及數據傳輸都由下列單元來執行:

MIPS III CPU core  
Vector Unit (向量處理單元,共有兩個,VU0 and VU1)  
Floating-point coprocessor (浮點協處理器,FPU)
Image Processing Unit (一個增強型的MPEG2解碼器,IPU)  
10-channel DMA controller  (十道DMA控制器)
Graphics Interface unit. (圖形接口單元,GIF)  
RDRAM interface and I/O interface (連接RDRAM和IOP)  

所有上述單元(除FPU之外)都與128位共享式內部總線相連。


可以看出,VU進一步分為兩個獨立的128-bit SIMD/VLIW向量處理單元,VU0,VU1。兩者雖然在微結構上是相同的,但運行時各自扮演不同角色。Emotion Engine的設計者Toshiba公司並不認為使用三個通用硬件(CPU和兩個VU)以滿足所有需求是明智的。相反,Toshiba提升了設備應完成的功能,根據所需功能定制設備,最後將設備組織為邏輯單元。形象地說,這些邏輯單元就像是由各具天賦的成員合理搭配以發揮最大才華而組成的工作小組。我們接著就來看看這些小組和小組成員吧:

CPU + FPU: 基本程序控制與管理等。
CPU + FPU + VU0: 行為與感情演繹,物理運算等。
VU1: 幾何運算以產生display lists 通過GIF送Graphics Synth。
IPU: 圖像解壓。

Emotion Engine內部架構


CPU/FPU/VU0工作組

FPU和VU0是MIPS III CPU core的協處理器。這就是說,雖然三者整體上構成一個邏輯功能塊,但CPU是主要控制設備,而FPU和VU0只是增強了它的功能。CPU/FPU/VU0工作組有共同的目標:感情演繹,物理運算,行為模仿等。

在PS2中有兩個部件使這個工作組捆綁在一起且工作時關係密切。第一,它們運行時要相互通信:專用的128位協處理器總線將VU0和FPU與CPU直接相連,而不需要使用共享總線,這就極大的提升了處理速度。專用128位總線使CPU能直接訪問VU0的寄存器,從而使VU0能完美地扮演MIPS III 協處理器的角色。

另一個重要部件是將CPU核心和VU0連在一起的Scratch Pad RAM。SPRAM是集成在CPU上的一塊高速RAM,但CPU和VU0都可在此存數據。同時SPRAM也作為數據送128位總線前的臨時存儲區域。SPRAM就像是一塊共享工作區,CPU和VU0就在這裡生成數據,然後再發送到指定設備。

VU1/Graphics Synth工作組

另一個重要的工作組由VU1和Graphics Synthesizer(通過GIF通信)。正如VU0由專用總線與CPU核心相連,VU1也有自己的專用128位總線與GIF相連。但VU1和Graphics Synth並不像CPU/FPU/VU0工作組結合得那麼緊。與CPU控制VU0相比,VU1和GS更像是平等的合作者。

CPU/FPU/VU0與VU1/GS的協同工作方式

即使是PS2的設計者們限定了各部件的功能,其整體設計還是富有彈性的。你可以自由地在工作組之間分配程序的運行。比如說,CPU/FPU/VU0工作組正在生成display list,同時VU1在與之並行地進行圖形幾何處理,兩者可同時將display list送入GIF。
  
或者,換一種方式,將CPU/FPU/VU0工作組作為VU1的前端處理器。CPU和VU0執行程序代碼並從主存中讀取數據,生成的虛擬世界信息交與VU1,並由VU1轉化為display list。
  
這種彈性為遊戲開發者提供了最大的便利,使之能夠從容地設計3D場景的生成與渲染過程,以產生各種各樣的特殊程序效果。

Emotion Engine與P2和P3的工作兩對比


Summary&conclusions

我想上述介紹已經基本上說明了PS2的工作原理。如果你需要瞭解進一步信息,請訪問http://www.arstechnica.com/ 及其相關站點。下面列出PS2主要性能指標表,就此作為文章的結尾吧。
Feature   Description
CPU   MIPS III 2-issue superscalar with 128-bit multimedia extension
Instruction cache   16K, two-way
Data cache   16K, two-way
SPRAM   16K
Data Bus   128-bits
FPU   1 FMAC + 1 FDIV
VPU   
VPU0   4 FMACS + 1 FDIV
VPU1   4 FMACS + 1 FDIV
EFU (attached to VPU1)   1 FMAC + 1 FDIV
DMA Controller   10 channels
IPU    MPEG-2 decoding accelerator

Emotion Engine 對照PS3 CELL SPE


後記:
本文原來是網上一篇英文文章,原作者Jon "Hannibal" Stokes對PS2、PC的體系結構及各種性能指標之間的權衡都有著深入的瞭解。原文中還有很大一部分是描述PS2的MIPS III和VPU的工作原理,但是這一部分我實在看不懂,沒辦法寫出來。這篇文章的中心就是--權衡的概念。正如文中所說PS2是專用機,PC是通用機(相對來說),兩者程序的運行特徵南轅北轍(關於這一點,參見The Playstation2 vs_ the PC),自然會在硬件設計上突出不同的特性。與PC機相比,遊戲機的設計(無論是Sony,Nintendo,還是已經退出江湖的Sega)看起來有著很多離經叛道的地方,但換一個角度看,實際上往往正是這些地方,成為遊戲機設計上真正的閃光點。.

骑士

まゆゆ神推し!

精华
0
帖子
779
威望
0 点
积分
1509 点
种子
308 点
注册时间
2004-4-27
最后登录
2024-11-5
发表于 2007-6-19 03:01  ·  广东 | 显示全部楼层
当年ps2的 开发难度很高 跟这个很大关系。
后来适应了不是发挥的很好嘛。
ps3 以后也会这样的~看好你了~ps3
该用户已被禁言

流放者(禁止发言)

Only on Playstation 3

精华
0
帖子
1937
威望
0 点
积分
1945 点
种子
0 点
注册时间
2007-1-23
最后登录
2015-1-11
发表于 2007-6-19 08:00  ·  北京 | 显示全部楼层
技术性文章,谢谢楼主分享
该用户已被禁言

精华
0
帖子
1264
威望
0 点
积分
1123 点
种子
0 点
注册时间
2006-2-22
最后登录
2017-9-23
发表于 2007-6-19 08:15  ·  北京 | 显示全部楼层
补上这1课。。。。。。。。。。。。。。。

精华
0
帖子
1687
威望
0 点
积分
1676 点
种子
5 点
注册时间
2007-1-28
最后登录
2017-7-7
发表于 2007-6-19 08:52  ·  天津 | 显示全部楼层
看多了战帖,骂帖,很无聊.....
支持技术帖,顶!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|A9VG电玩部落 川公网安备 51019002005286号

GMT+8, 2024-11-15 21:56 , Processed in 0.158510 second(s), 14 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部