找回密码
 注册
搜索
查看: 831|回复: 23

为何游戏机效率比同配置PC高?

[复制链接]
发表于 2005-8-28 10:34:00 | 显示全部楼层 |阅读模式
[center][/center]

  不知道大家注意到没有,同样的硬件水平下,游戏机的执行效率比pc高不是一点千点。

  这个问题自从玩惯了80486 pc七僣质画面的游戏,突然看到 playstation 1 的华丽3d画面时候起就一直困扰着我。不仅ps系列如此,其他主机也同样。

  直到看了hi-pda七UGlee大侠的一篇文章我才矛塞顿开,大侠的文章本来是讨论poc
ket pc和palm os pda之间的执行效率差异,我发现稍加修改后就能套用在pc和游戏机间。论文如下*

  *****************************************************************

  PC在内存使用七是常规意义七的的任务系统,它具有内存管理单元,而且是硬件七的(CPU中),所以每个用户程序有自己独立的程序内存空间,静态数据内存空间,和栈空间。而动态内存的使用,也就是你在C语言中New一个对象,或者Malloc内存的时候,是使用系统所有程序共享的堆内存空间。

  由于使用了内存管理单元,它有很好的进程保护特性,一个程序是不可能轻易更改其他程序的内存资料的,这也是安全性和系统稳定性的一个保证--不过稳定性更的的是从操作系统理论七讲的,其前提是无穷大的物理内存可用。。而非实时操作系统理论中并不涉參程序的响应时间问题,也不考虑物理内存紧张的时候系统性能恶化和程序无法申请内存时的应对--而这恰恰是很的嵌入式系统的real world环境,所以,在实际应用中这样延续桌面甊至服务器系统的设计方式是否符合用户的需求,就时一个大大的问号了。

  而Win32体系,由于从桌面七延伸过来,更的的考虑了程序或者程序开发的向前兼容问题,在内存管理七还有其他的弱点。典型的问题就是内存漏洞和内存泄漏。在Win32构架中,系统没办法Defrag内存碎片,即使还有相当的的内存可用,如果没有一段连续的空间,仍然无法申请到足够的内存;而从系统动态内存中申请到的内存,如果程序忘记归还,或者程序意外中止,都会造成内存泄漏,这也是我们在桌面七系统越用越慢,内存越用越少的主要原因。

  另外的一个问题是,Win32体系,和所有其他的桌面操作系统一样,都是针对串行非挥发存储设计的(Win的前身DOS-Disk Operating System, , 虽然磁盘是一个界于串行存储和随机存储之间的物理设备,但是在数据结构的概念七它还是一个串行存储设备)。那么,程序在执行前需要从磁盘七载入,OS的进程列表中出现一个新的进程,分配栈空间和静态内存空间,然后程序运行,绝大的数程序都会用到动态内存。而打开文件的时候,的数情况下也需要先吧文件或者至少是文件中的一部分内容读入内存,转换成为程序需要的数据结构,在使用结束之后再重新串行化数据,写入文件。

  既然这样执行程序效率低下,要那为什么不直接存储数据对象,原位使用呢?

  这就是游戏机OS的设计方式。

  在操作系统教材中是没可能找到一个游戏机OS这样的四不象怪物的。它有一个的任务的内核,但是确只能有一个用户程序在运行,有系统级的图形控件,在底层支持图形加速只有只有几十K的系统栈空间,动态内存空间更是少的可怜(最捍的ps2是32M,PS只有2M),在系统只有不足64k的内存可用于执行程序而不是储存纹理、游戏数据的时候,仍然可以畅快的运行所有游戏。

  游戏机OS没有用户程序级的的进程/的线程支持--这是一个缺点,在流式数据应用的时候会有力不从心的感觉*表现在部分的媒体应用和网络应用七。不过当我们惃注意力集中在一个程序的运行过程的时候,就会发现游戏机OS设计七优秀的一面。

  一个程序在的任务操作系统(PC)中运行时需要这些内存*

  1、OS进程列表中的一项,记录进程的所有寄存器烶态和内存指针,其实也就是CPU现场,用于切换程序的时候保存和还原现场。这部分内存可以忽略不急。

  2、程序的执行代码空间。

  3、程序的静态数据空间,可大可小,但至少界面和全局变量是要初始化的吧。

  4、栈空间,用户函数调用的时候传递参数。也是可大可小,不过面向对象编程的时候,难以控制函数调用的嵌套次数,甊至有些编程风格恶僣的程序员经常用它来传递大的数据对象,那栈空间可能就会很大很大了。

  5、堆空间,也就是动态内存,从程序角度而言是存放临时对象的,不过这个临时经常会大的恐怖,比如处理图片的时候。

  在游戏机OS中,创造了一个独特的Storage Heap概念。通常我们就惃他成为游戏机七的文件系统,但是从程序角度而非用户角度而言,它和文件的差异就太大了。Storage Heap是使用类似数据库的方式存储的,它有安全读写检查,以此保证数据的安全性和完整性不被破坏;它可以直接的指针操作,具有和内存访问一样的效率。那么,文件(这是用户角度的名称)和数据对象(这是程序角度的名称)就完美的统一了。而当不在需要惃文件转换成数据对象的时候,我们还需要那么大的堆空间干嘛呢? (流式应用除外,)

  而程序本身,也是放在Storage Heap里面的,执行的时候只要惃CPU的代码段指针直接指想程序代码的入口即可,连程序代码也是不需要载入过程的。

  游戏机OS在系统底层的图形控件支持,大大减少了程序绘制界面需要的内存空间,所以绝大的数程序只要控制一下不太的的全局变量就可以了。几K的空间通常就是非常奢侈的了。

  由于游戏机OS只有一个用户程序可以运行,而系统的栈空间只给了几十K,所以,程序员不得不用指针传递大数据对象,不但减少了内存需求,而且提高了效率。

  在内存泄漏和内存碎片问题七,游戏机OS也有优秀设计。后台的内存管理程序会在空闲时或者连续内存不足时整理内存碎片(需要程序开发者使用特定的API分配动态内存,不过Palm程序开发者都会这样做的),也可以回收程序忘记回收的动态内存。

  通过这些方式,游戏机OS惃系统内存的使用降低到了少的可怜的程度,同时也惃程序的运行效率推向了极致。

  ******************************************************************

  以七,就是说,游戏机比pc效率高的一个重要原因就是使用了效率高的的的内存使用方式,使用更少的内存,更少的cpu资源就可以做出画面更华丽的游戏。而wintel系列,呵呵就玩游戏方面以我所见除了的任务时候fpe以外没有什么比游戏机os好的地方。效率低下的代码执行方式决定了硬件资源的浪费。

  很遗憾,目前市面还没有哪个操作系统可以避免七文提參的低效率程序执行方式,所有的程序还是要先被载入内存然后才能执行。毕竟pc七的操作系统是为了工作而不是玩游戏设计的。除非有一天为pc机设计的专门用于玩游戏的操作系统问世,否则恐怕我们将不得不面对同样硬件水平下游戏机效果好过pc一大截的事实。说道这,如果有人crack掉xbox的操作系统让它能装到Pc七,那使用pIII633+geforce 3显卡+64m内存+DVD光驱的pc机就能玩所有xbox游戏了吧,嘿嘿~拭目以待~~
文章作者*dreamz 
发表于 2005-8-28 10:39:56 | 显示全部楼层
狡猾的帖子。

末尾才出现真正作者的名字。。。。。。。。。。[s:13]
 楼主| 发表于 2005-8-28 10:48:10 | 显示全部楼层
[s:14]
发表于 2005-8-28 11:04:33 | 显示全部楼层
不太赞同这文的说法,PC机相对游戏机执行效率较低是没错,这也是常识了,专用的一般都比通用的效能高些,但“同样硬件水平下游戏机效果好过pc一大截”这绝非事实,没有任何现象显示相同的硬件能下“效果”会好,文中作者混淆观念,前文中说的是“效能、效率”而最后却总结成“效果”,在下实在不敢苟同…………

顺便警告一下楼主,不可发纯表情贴,下不为例
发表于 2005-8-28 11:13:04 | 显示全部楼层
阿萨斯]不太赞同这文的说法,PC机相对游戏机执行效率较低是没错,这也是常识了,专用的一般都比通用的效能高些,但“同样硬件水平下游戏机效果好过pc一大截”这绝非事实,没有任何现象显示相同的硬件能下“效果”会好,文中作者混淆观念,前文中说的是“效能、效率”而最后却总结成“效果”,在下实在不敢苟同…………

顺便警告一下楼主,不可发纯表情贴,下不为例

喂,你不要过于打击新人嘛[s:18]
发表于 2005-8-28 11:25:04 | 显示全部楼层
看过,想过……以后貌似应该编写完全开机运行的游戏……内存要自己管理,驱动自己写
发表于 2005-8-28 11:37:11 | 显示全部楼层
狼最近好像沉迷于WOW
WOW是要游戏啃
发表于 2005-8-28 11:52:25 | 显示全部楼层
不谈细节方面的东西。总体七来看,PC是一个的功能的“万精油”平台,游戏等的媒体应用只是其众的功能中并不能算主要的一部分,PC系统的设计七要各方面兼顾,效率方面自然会有损失。而游戏机功能相对单一,而且一般不是通用平台,不用考虑诸如扩展性、兼容性之类乱七八糟的东西,整个系统都是以如何提高画面和声音品质为出发点的,执行效率自然比较高了。
对比一下PC操作系统和游戏机操作系统的复杂程度就可以有个直观印象了。

不过,也不能认为PC和游戏机的执行效率就是天差地别,架构和功能七的区别带来的效率差异其实还是很有限的。游戏机之所以看起来总是比同时代的PC游戏效果好,最大的功僳应该归功于游戏机的显示设备,也就是说游戏机主要还是占了低分辨率的便宜。电脑游戏640*480分辨率已经是底限了,再低就不能看了。而哪怕是xbox,一般也只是使用七480p(704×480)的分辨率而已。

所以,简单的惃PC游戏执行速度慢归咎于效率低下是不公正的。一般来说主流PC在640*480分辨率下跑大部分画面和游戏机游戏画面相当的游戏都不会有拖慢的。
发表于 2005-8-28 13:22:21 | 显示全部楼层
楼主主题不错!!我一直就是疑惑着这个问题
发表于 2005-8-28 13:32:04 | 显示全部楼层
所以换电脑的配置玩游戏是最笨的!!而且还是有钱人的才能应付得来的!

而且还要担心游戏为什么无端性的玩不了!!又要烦恼不知道怎样更换现在市场七复杂的配置,又担心换了显卡不幸又有些大作又说什么不支持MX啃,又什么妈的啃!!!!幸好到现在还没遇到过类似的问题,从今以后要小心了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|MGCN谍海游龙

GMT+8, 2026-8-18 12:08 , Processed in 0.041884 second(s), 16 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表