有关 Nintendo GameCube
毫無疑問, Nintendo GameCube 在市場上失敗了.
毫無疑問, Nintendo GameCube 在技術(shù)上成功了.
也許有人懷疑這第二句, 這就是我寫這篇文章的原因.
?
從硬件上來講, NGC十分的標(biāo)準(zhǔn), 簡潔, 高效.
NGC硬件組成:
大體上, NGC以Art-X Flipper為中心, 北橋連接CPU, 南橋連接24MB 1T-SRAM, 東橋連接Audio DSP, Audio DSP另外連接16MB緩存.
事實(shí)上Audio DSP是集成在Flipper中的, PCB上看不到.從這種角度上看, 似乎很像pc.
?
深入Art-X Flipper, 這塊PCB上最大的芯片, 集成了內(nèi)存控制器, GPU, Audio DSP. 注意, CPU和GPU都直接連接到內(nèi)存控制器. 在NGC架構(gòu)中, 沒有顯存和內(nèi)存的區(qū)別, 24MB 1T-SRAM 同時(shí)存放代碼, 貼圖, 頂點(diǎn)乃至FrameBuffer等等數(shù)據(jù). 這24MB 1T-SRAM用得很出彩. CPU可以很方便的對GPU處理過的數(shù)據(jù)再次進(jìn)行處理.
?
1T-SRAM 具體原理就不介紹了, 它最大的特點(diǎn)就是與DRAM相比, 沒有隨機(jī)訪問的延遲, 不像DRAM那樣需要等待幾個(gè)時(shí)鐘周期才會(huì)讀取到需要的數(shù)據(jù).
?
NGC GPU有個(gè)特殊的設(shè)計(jì), 就是嵌入式的2MB 1T-SRAM, 這個(gè)緩沖區(qū)被用作GPU內(nèi)部的超高速緩沖, 保存有z-buffer之類的數(shù)據(jù), 渲染中間過程的臨時(shí)數(shù)據(jù)放在這里, 可以不用搶主存的帶寬. 注意, 這個(gè)設(shè)計(jì)顯然被ATI發(fā)揚(yáng)光大了, XBOX360 GPU中也有這么個(gè)玩意, 只不過容量大了不少.
?
從軟件上講, NGC編程易于掌握.
NGC CPU Gekko是一塊IBM PowerPC 750 + Paired Single多媒體擴(kuò)展指令集, 可以使用工業(yè)標(biāo)準(zhǔn)的c/c++, 同時(shí)匯編語言也易于掌握.
NGC GPU 從概念上類似于OpenGL, 可以設(shè)置大量的狀態(tài), CPU通過專用FiFo向其發(fā)送渲染命令, 即可完成渲染.
NGC Memory map非常的清晰:
0x00000000 - 0x017FFFFF 物理內(nèi)存
0x80000000 - 0x817FFFFF cached 邏輯內(nèi)存
0xC0000000 - 0xC17FFFFF not cached 邏輯內(nèi)存
0xCC000000 - 0xCC00FFFF 硬件寄存器
0xE0000000 -?0xE0003FFF L2 cache
0xFFF00000 - +1MB IPL(BIOS BOOT ROM)
?
由于設(shè)備全部共享24MB主存, 所以主存被映射到三個(gè)地址區(qū)域, 為不同的目的服務(wù), 例如程序代碼使用cache映射地址.
所有設(shè)備的硬件寄存器都依次映射到寄存器地址區(qū)域, 詳細(xì)的分布也是很有規(guī)律的.
至于L2 cache為什么也會(huì)映射到全局地址空間, 這個(gè)并沒有文檔介紹, 個(gè)人估計(jì)是為硬件調(diào)試器使用的.
?
NGC模擬器
NGC模擬器自當(dāng)年Dolphin橫空出世之后, 對廣大玩家而言, 就沒有什么突破性的進(jìn)展了, 其實(shí)質(zhì)變源于量變, NGC模擬并不是停滯不前, 只是量還積累的不夠.
CPU: Gekko使用的PowerPC指令集, 由于RISC的緣故, 并且OPCODE似乎是6bits, 所以解釋模擬的話, 目前似乎都是采用查表的方法, 效率還是蠻高的. gcemu采用了動(dòng)態(tài)編譯的實(shí)現(xiàn), 效率已經(jīng)非常令人滿意了. Dolphin x64更是利用了x64的64位優(yōu)勢, 不過由于尚未正式發(fā)布, 所以其性能無法實(shí)際考察.
GPU: Art-X這個(gè)顯示芯片, 由于似乎和OpenGL有那么一腿, 所以開源的實(shí)現(xiàn)無一例外都使用了OpenGL, 其中g(shù)cemu采用了OpenGL 2.0規(guī)范, 實(shí)現(xiàn)了動(dòng)態(tài)生成shader的算法, 所以已經(jīng)實(shí)現(xiàn)的部分, 速度非常得快.
AudioDSP: 很多模擬器作者已經(jīng)表態(tài), 這是NGC中最難以模擬的部分, 主要是資料的稀少, 基本上都是靠反向工程獲取的數(shù)據(jù).
由目前我所掌握的源代碼來看, 優(yōu)化的余地還很大, 至少還沒有多線程的模擬器實(shí)現(xiàn), 如果CPU和GPU能夠多線程并行模擬, 以目前主流配置, 至少在不考慮DSP模擬的情況下應(yīng)該可以達(dá)到全速執(zhí)行游戲.
轉(zhuǎn)載于:https://www.cnblogs.com/skogkatt/archive/2007/07/04/4163247.html
總結(jié)
以上是生活随笔為你收集整理的有关 Nintendo GameCube的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET2.0数据库入门之SQL
- 下一篇: XHTML和HTMl区别