麒麟子

~~

导航

<2024年8月>
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

统计

常用链接

留言簿(12)

随笔分类

随笔档案

Friends

WebSites

积分与排名

最新随笔

最新评论

阅读排行榜

评论排行榜

#

[导入]Symbian 智能手机操作系统综述

Symbian 智能手机操作系统综述

(这是根据自己的理解写的一篇综述,操作系统课程论文)

1、智能手机操作系统:

手机已渐渐成为人们日常生活不可或缺的东西,最初的手机只能用来打电话、收发短信。并且有些人到目前也仅仅是这样的需求,但是,随着时代的发展,越来越多的新事物融入了大家的生活中:音乐,游戏,电子刊物等。而手机也随之发展着,机发展到现在功能可以说是五花八门,能照相,能听MP3,能玩游戏……不过啊,手机的发展还是无法满足人们对于信息化生活的需要,于是,智能手机应运而生了。那么到底什么是智能手机呢?

 一般说来,智能手机在具备手机接打电话和收发短信等基本功能的同时,它还拥有一部分PDA的功能。特别在个人信息管理方面和基于无线数据通信的网络浏览器和电子邮件功能方面,智能手机所拥有的强大扩展性能为软件运行和内容服务提供了广阔的舞台。新闻、天气、交通、股票、商务、应用程序下载等增值服务能够通过智能手机以图文的形式传送到用户手中。未来手机的发展趋势也倾向于高度智能化和集成化的智能手机。 

  如前所述,智能手机实际上是结合了传统手机和PDA的一种高科技产品。它在具备普通手机全部功能的同时,又具备了一部微型电脑的功能。一部智能手机必须要具备以下几个条件: 

  1、拥有普通手机的基本功能。这方面主要指接打电话和收发短信两个方面。

  2、拥有无线接入互联网的能力。这是指手机必须支持GSM网络下的GPRS网络服务或CDMA网络下的CDMA 1×网络服务,高端产品还应该支持3G网络。

  3、拥有PDA的主要功能。主要有PIM(个人信息管理),日程记事,任务安排,多媒体播放,浏览网页等等。

  4、拥有一个开放性的操作系统。在这个操作系统上可以安装和应用互联网上提供的第三方应用程序,从而使手机的功能得到无限的延伸。

目前智能手机的操作系统一共分为四大类,分别是Symbian和WindowsMobile、Linux以及Palm OS四大阵营。

由于操作系统固有的复杂性,以及每个系统自身的特点,所以,不能一一讲述,因此借symbian系统,作为一个例子来讲述其特点,而其中当然也包含了手机操作系统的共性。

2、symbian系统的发展:

    Symbian是一个实时性、多任务的纯32位操作系统,具有功耗低、内存占用少等特点,非常适合手机等移动设备使用,经过不断完善,可以支持GPRS、蓝牙、SyncML、以及3G技术。最重要的是它是一个标准化的开放式平台,任何人都可以为支持Symbian的设备开发软件。与微软产品不同的是,Symbian将移动设备的通用技术,也就是操作系统的内核,与图形用户界面技术分开,能很好的适应不同方式输入的平台,也可以使厂商可以为自己的产品制作更加友好的操作界面,符合个性化的潮流,这也是用户能见到不同样子的symbian系统的主要原因。现在为这个平台开发的java程序已经开始在互联网上盛行。用户可以通过安装这些软件,扩展手机功能。

  在Symbian发展阶段,出现了三个分支:分别是Crystal、Pearl和Quarz。前两个主要针对通讯器市场,也是出现在手机上最多的,是今后智能手机操作系统的主力军。第一款基于Symabian系统的手机是2000年上市的某款爱立信手机。而真正较为成熟的同时引起人们注意的则是2001年上市的诺基亚9210,它采用了Crystal分支的系统。而2002年推出的诺基亚7650与3650则是Symbian Pearl分系的机型,其中7650是第一款基于2.5G网的智能手机产品,他们都属于Symbian的6.0版本。索尼爱立信推出的一款机型也使用了Symbian的Pearl分支,版本已经发展到7.0,是专为3G网络而开发的,可以说代表了当今最强大的手机操作系统。此外,Symbian从6.0版本就开始支持外接存储设备,如MMC,CF卡等,这让它强大的扩展能力得以充分发挥,使存放更多的软件以及各种大容量的多媒体文件成为了可能。

版本:

Symbian按版本来分,继2005年二月Symbian推出一款新的手机操作系统软件OSv9.0,到目前为止已先后有了6.0、6.1、7.0、7.0s、8.0、9.0几种版本

版本号:1999年3月Symbian推出了Symbian5.0

功能:它的主要内核集合了网络,无线文字,电子邮件,名片薄以及个人信息助理,同时还具有支持标准网络页面的浏览器,配合java语言的支持,使得Symbian可以运行小型的应用程序。不过这个版本采用的机型甚少,基本上与EPOC没有太多的差别。

版本号:Symbian 6.0

功能:在5.0的基础上增加了,GPRS、WAP1.2浏览器以及蓝牙技术的支持,用户可以运行第三方基于C++和J2ME开发的程序。而Symbian 6.1则是和Symbian 6.0相比主要增加了对USB的支持。Symbian 6.0的主要特点是: 支持语音通话和数据通信 ,支持Bluetooth和WAP ,配备安全性功能(SSL,HTTPS,WTLS) ,采用16bit Unicode,支持多语言显示 ,采用“PersonalJava 3.0”和“JavaPhone 1.0”。

版本号:Symbian 7.0

功能:7.0则支持多模式和3G手机(专区),可以让制造商们可以面向全世界推出可以运行于所有网络之上的Symbian OS手机,而且可以不对代码进行重大改动的情况下就可以重新使用许多目前已有的软件应用。7.0包含一些新的通讯、消息、联网和应用开发技术,并对一些与安全和认证相关的功能进行了改进。Symbian OS 7.0的其他功能包括:支持灵活的用户界面,例如Nokia的Series 60;支持几种音频/图像格式和许多面向游戏开发人员的API;全力的加密和认证管理,基于安全通讯协议(包括HTTPS、WTLS和SSL)及认证的应用安装;和Over-the-air(OTA)SyncML同步支持。

版本号:Symbian 8.0

功能:该版本改善了实时系统性能,提高了原有操作系统的兼容能力。此外,Symbian OS 8.0的软件工具改进了远程接入控制系统功能,运用调节装置消除手机用户使用增值服务时会受到的干扰。这个系统包含了绝对现代化的多媒体和Java设备,支持多种标准,其中包括JSR118, CLDC1.1 (JSR139),MobileMedia (JSR135),3D图像数据(JSR184), JTWI 1.0 c(JSR185)。最后,新版OS还支持SDIO。 

版本号:Symbian 9.0

    2005年二月,英国著名手机软件制造商Symbian推出一款新的手机操作系统软件OSv9.0,它支持更高像素数码相机与三维游戏动画。该操作系统软件对运行环境要求较高,目前运行在由英国芯片开发商ARM提供的快速处理器芯片,并且需要相关设计与其它工具的支持来帮助手机生产商在开发其它版本时能够节约时间和降低成本。该软件可以处理200万像素的数字图片,甚至能够向无线耳机传送立体声音乐,更可喜的是,它不需要同步软件就能够从PC上导出MP3文件。

    目前,Symbian 9已经发行到Symbian 9.5版本。在原来强大的功能基础上,进一步完善和更新,更注重于平台的移植性和网络兼容性,当然,在性能上也有一定的提升。如:按需分页、RAM碎片整理、内存优化、PIPS、SQL 数据库、文件缓冲、ActiveSync、扩展性更强的联系、数据库、改进的日历能和协同工作、实时网络功能、移动 IP、基于位置的服务 (LBS)、媒体传输协议、数字电视等。另外,对于开发商来说,从成本和开发速度上也有很大的提升。更低的硬件成本、可降低RAM的占用率20%~30% 、快的上市速度、更加方便移植、软件启出众的生产率等。

Symbian系统的界面:

Symbian公司发行了基于Symbian系统的用户界面Series系列。有Series 40、Series60、Series80、Series90等版本。Series60是智能手机中应用最广泛的版本,支持的分辨率为176*208像素,但后来S60还支持240*320像素、352*416像素等。S60是拥有第三方软件或游戏最多的界面。所以,这里主要介绍一下Series60版本。

识别Series80界面最简单的办法就是看手机是否支持全键盘,例如诺基亚高端系列的9210、9300甚至9500,都采用全键盘的。识别Series90的最简便方法是:会采用触摸屏幕,分辨率也高达640*320像素。Series90应该是手机游戏、娱乐的最强平台,但因为采用Series90界面的手机型号太少,第三方软件的支持很少,所以S60依旧是玩家首选。

    Series 60 用户界面是诺基亚投入了最深入研究、进行了最彻底开发的图形化用户界面。作为Series 60 Platform的一部分,它能确保用户在各个厂商的所有基于Series 60 Platform的设备上具有一致的用户界面。Series 60 Platform被设计成能单手操作各种高级的、用户友好的各类数据服务。Series 60用户界面有一个彩色显示屏,支持多种屏幕解析度(176x208、240x320(QVGA)及352x416)。它支持各种各样不同的功能,包括两个功能键、五方向导航键、一个应用与应用切换键,及呼叫和呼叫终止键。该用户界面使用一个标准的12键键盘,包括字母。界面中针对文本输入设置了清除键和编辑键。

    Series 60 Platform提供了范围广泛的丰富应用和应用实现器。其中包括如先进的电话应用、统一消息中心(Unified Messaging Center,MMS、SMS、Email)、各种OMA即时消息及精灵(Presence)应用、一个完整的移动互联网浏览器(HTML 4.01、XHTML MP,& WAP CSS)、3GPP兼容的流客户端(RealOne Player)、Java MIDP 2.0 环境、应用管理器、OMA数字版权管理(转发锁定)、SyncML数据同步及设备管理、OMA客户端配置、媒体廊、摄录机应用、图像阅览器、支持多重 PDP场景的连接管理器、移动钱包,以及多种个人信息管理应用。

    Series 60 platform中包括对GSM/GPRS/EDGE、CDMA及双模WCDMA-GSM配置的支持。双模WCDMA-GSM向运营商们的各种3G服务提供了全方位的支持, 从而为在各种移动设备上实现视频电话并提供先进的流能力和高级浏览功能铺平了道路。

Series 60 Platform 3rd Edition

  Series 60 Platform 3rd Edition是新一代全球领先的智能手机软件平台。全新的Series 60 Platform 3rd Edition加入了许多新鲜功能,同时又保持2nd edition的所有功能。新版Series 60 Platform 3rd Edition专注于增强的多媒体及企业应用功能、可持续发展的应用业务支持、 精益求精的客户定制能力,及不断改进的平台结构。

  因为3rd Edition,Series 60 Platform现在更适合高容量的客户市场。Series 60 Platform 3rd Edition中得到改进的结构灵活性使Series 60手机制造商们能创建出既高度细分成本优化的各种终端,以满足用户的不同需求。这种新结构还包括内置的安全特性,从而向用户和开发者提供了更为安全更为信任的环境。

  支持企业和多媒体应用

  广大企业将得益于Series 60 Platform 3rd Edition的内置业务特性。诸如日程表、数据同步,及email等特性都得到了改进以适应针对各种各样企业环境的使用方便性。新加入的内置安全特性提供了对业务敏感数据的更多保护。Series 60 Platform 3rd Edition让获授权厂商们能构建更强健更多样化的各种企业级终端。

  这一新版本还支持移动多媒体的成长。对OMA DRM 2.0 for music的支持既改善了使用性也改进了受保护内容的安全性。新版音乐播放器使得在线访问音乐内容更为便捷。有了全新的Series 60 Platform 3rd Edition,可以更为方便地在PC和移动终端之间传送将音乐及其他内容,这是因为:基于这个新版本的各种智能电话在功能上能被视为一个普通的USB储存棒。

  面向开发伙伴的更多业务

  对开发伙伴来说,Series 60 Platform 3rd Edition提供了更多针对高终端持有量的商业机会。新型安全框架和内置内容保护改善了对开发伙伴投资的保护,但同时又仍然允许自由软件应用的使用。诸如可扩展用户界面这类特性功能发现API将使开发伙伴们能创建更为智能化的应用,同时提供更佳的用户体验。

  Series 60 Platform 3rd Edition,以其全新的结构和更好的多媒体及企业应用特性,正在全力走上其发展的康庄大道,以满足各获授权厂商、运营商,及用户的严苛需求。运行于 Symbian OS v9之上的Series 60 Platform 3rd Edition已于2005年中面市。

结尾:

     总的说来,智能手机平台飞速发展着,已超过了一些厂商的硬件更新速度,但是,正是由于这种约束导致新一代的平台或版本不能及时地得到广泛的运用,不免是对新技术的一种浪费。而渐渐地,手机硬件平台已经在走向规范化,而终有一天,当几乎所有的手机硬件平台都是处于同一个状态的时候,那各大厂商的工作重点将转向于新的操作系统和应用软件的开发,并且此时不会存在软件与硬件之间的代沟,也就是软件不必担心硬件的支持问题。这样,手机平台会更飞速地发展着。同时手机平台自身的兼容性也得到了提升。而现今能够在PC上做的事情都有可能在手机上完成。想想将来某一天,能够拿着手机写程序,又将是一个怎样的局面。而PC市场又将是怎样的一个局面。


文章来源:http://ly-weiwei.blog.163.com/blog/static/7297528320081126115654996

posted @ 2008-12-26 23:57 麒麟子 阅读(181) | 评论 (0)编辑 收藏

[导入]我的职业规划

我的职业生涯规划

自我评估

   对于即将步入社会的我来说,一切好似进在咫尺,因为它即将来临。而又仿佛远在天涯,因为一切对于我来说,都是未知的。我所拥有的,仅仅是现在的自己以及对未来的幢景。

   貌似我不是一个严谨的人,虽然我可以毫不谦虚的说,我自己有着敏锐的嗅觉。当然那不能说是洞察秋毫,毕竟我还不是圣人。选择了计算机科学,是自己从小就有的梦想,但每个人都有自己合适和擅长的一面。在现实面前,我无法抵奈。虽然我自己对此充满了爱好与向往,可那始终无法静心钻研的缺点造成了让我可以摆开普通层次的瓶颈,我与其他走在此路上的人一样,很迷茫……

   “未来是不可预见的”,这是一个无可非议的句子。而我们却又不得不为自己的未来有所打算,以此鞭策自己,向期望的方向前进。至于最终结果如何,依然是未知的。就好比一艘在大海中行始的巨轮。虽然它有着自己的起点和终点,可是若中途遇上了冰山或是其它一些什么不可避免的灾难。那可能它将会改道,又或者,它永远停止在事发的地方……

当然,正是因为未来的不可预见性,因此,我们可以暂时认为未来所要发生的事情都是好的,都是我们想看到的,这样我们就不用去为那些没有发生的事情而苦恼。而事实上也正是如此,既然可以在快乐与悲哀之间做一个选择,那我们为何要傻到去留住悲哀,而让快乐远去呢。

我想每个人都是有自己的想法的,不管是快乐的人还是不快乐的人,都会在对过去怀念,对现实难以抗拒的时候,而对未来有一丝,或更多的期望。

记得从小学的时候,班主任就开始让我们写自己的心得体会以及将来的打算。比如试卷发下来之后,他会让你写此次考试的体会,接下来要怎么做以及下一次考试的期望成绩,期中考试乃至期末考试的成绩。我想,上面我所写的,就是自己“考试”的感想吧,而接下来,则是面对将来的“考试”我自己的打算。

近期打算(1~2年)

自工业革命以来,IT行业就飞速地发展着。短短半个世纪,就使计算机渗透到了社会大大小小的角落,而行业随即产生的职业,也火爆起来。但随着人数的增加,自然而然竞争力会争强。技术的革新又使得更多的人更容易地掌握,无疑增加了就业的困难。那场来自异国的金融风暴使中国刚刚发热的市场经济降了温,而某些国家甚至进入了寒冬期。面对这样一个艰难的处境,因为大学扩招而壮大的大学生队伍的竞争力显得有些单薄。只是,对于这样严俊的趋势,依然有许多师兄找到了自己满意的岗位,当然,其中也有我满意的那一个。我们没有先进的技术,我们没有成熟的经验,我们没有好的人际关系。可是,我们并不是什么都没有,我们应该具有扎实的基础,举一反三的思维,要知道,所有东西都是有基础派 生出来的。我们应该具有自我学习的能力,对于接触到的新内容我们要用自己拥有的知识来融合。我们应该具有创造性的思维,毕竟技术的革新还是要依靠新的一代。因此,我们不要过于急躁地想要获得更多的专业技能,而更应该注重基础的学习,注重自身多方面素质的培养。在即将到来的战役中,我们要做到像一块璞玉,让人发现自己潜在的价值,这也是我们最具分量的筹码。

不管结果是好是坏,我想只有抓住了工作的机会,才有证明自己能力的机会,不然,璞玉也有可能埋没千年无人知晓。也许,当你进入一个自己不喜欢的行业的时候,你会发现,原来你的优势就在此处,机缘巧合的事情虽然并不多见,但也不失为一种安慰自己的方法。

IT行业当然是作为计算机专业毕业生的首选,我也不列外。对于计算机游戏,我想说的是,我与它有说不清的故事,不仅仅是喜欢玩,而更喜欢它们背后的故事,喜欢它们本质的东西(游戏程序)。进入游戏行业,成为一名游戏制作人,是我“处心积虑”的梦想。因此,我一直在努力,希望可以实现自己的愿望。当然,进入此行业是很轻松的,但是考虑到发展的空间,因此会对就业单位进行选择,若的确没人要我,那只证明我不适合做这一行,那转为普通商业软件也未偿不可。因为,游戏也是商业软件的一种,因此适用于游戏的软件设计理论也适用于普通的商业软件,同样是我自己喜欢的工作,选择,并不唯一,因此我有足够的空间可以调整我自己的事情。

进入行业(不管我最终进的是哪行)之后的事情,当然是努力在工作中学习,抓住本行业的要点。因为我觉得,若我懂得越多,会得越多,那做起事情来就容易许多,那我除了能够很愉快地完成自己的事业以外,还有许多的时间和一个良好的心情去陪自己的家人。毕竟事业和家庭是人生中的两件不可或缺的东西。少了一样,或者其中一样不和谐。那只能说人生很失败。对于行业的东西,依然有技术与管理两方面,我倒不过早的做决定。但凭着我先前说的,我不是一个严谨的人,无法静心研究的这一特点,我将成为领域专家的可能性不大吧。但这已不是很重要,因为我将会很自然的作出决定,没有任何徘徊。

中期打算(5~10年)

有人会觉得在某一行干上五年,太久了,若要他呆在一个公司,那更是不可能的事情。有这种想法的人,也不能说是坏事情,毕竟这是一种领先的潮流。也是许多年青人乐意干的事情。不知道是不是我的思维太过于传统,我总是想着自己能够从事某种工作到最后,精于其一,总会有成绩的,不是靠天赋,而是靠时间。不是许多人常爱说的一句话吗?“时间可以改变一切的”。五到十年的确也是一个漫长的过程,但是,为什么不期望自己在这五到十年间的工作都非常愉快呢?如果你干的是一个自己喜欢干的行业,做着自己喜欢做的工作。薪金和地位随着工作年限也按着你自己的期望而提升,那是不是很满足呢。虽然现实与理想的矛盾冲突比较大,但估且我就这样想的吧,愿我自己是一个很幸运的人。当然,若理想与现实相差太大了,我只有妥协,去寻觅另一条路径。但我会尽量保持在一个稳定的状态,因为我不喜欢动荡不安的生活……

长期打算(10年之后)

这是一个比较热门的话题,就是人们30岁后应该干什么。继续留在自己的公司“安享晚年”,还是另起炉灶革命一翻,又或者归隐田园去过着那种有着小资情调的日子。我想,有第三种想法的人,一定是这十年来赚够了,并且是靠运气赚够了。工作是一件多么惬意的事情,若整天空着手走来走去,估计我用不了多久就会忘了自己叫什么名字。30岁,正是人生的黄金时期,“黄金时期”明白吗?也许有人不明白吧,有人以为黄金时期就像秋天稻田里已经黄了,是丰收的时候了。若按这种理解方式的,那黄金时期应该是春天。“黄金时期”就是万事具备,只欠东风的时期。30岁的我们,人际关系,资金,经验,能力,技术等都有一定的积累,若很满意自己现在的工作和岗位,则可以留在原处,并凭借自己的能力获得更大的提升。但是若自己不是那么幸运,虽然过着舒服的日子,但却做着自己不想做的事情,那则可以选择自立门户,或找几个朋友“揭杆而起”做自己想做的事情。后果当然了,越是美好的事情,风险就越大,那就要看到时候的我,有没有这个条件去应付。

结束语:

也许,我是不能将自己真正的想法用文字彻底地描述出来,但基本构架和我如上所写的几乎一样。并且,我突然发现,自己的文字开始变得有些生硬,就好像是从国外的翻译书籍中选出来的句子一样,也许是平时看的是翻译书的原因。不知道会不会对自己今后的路产生影响,看来看国外的书还是看原版的好。

PS:这就是我的人生规划。


文章来源:http://ly-weiwei.blog.163.com/blog/static/7297528320081126115424827

posted @ 2008-12-26 23:54 麒麟子 阅读(98) | 评论 (0)编辑 收藏

[导入]CPU GPU设计工作原理《转》

我知道这很长,但是,我坚持看完了.希望有幸看到这文章并对图形方面有兴趣的朋友,也能坚持看完.一定大有收获.毕竟知道它们到底是怎么"私下勾搭"的.会有利于我们用程序来指挥它们....(这是我加上去的)

原文从这里开始:

要说到设计的复杂程度,那还是CPU了!这个不用讨论,很简单的道理你看看显卡芯片的更新速度和CPU的更新速度就可见一斑了。还是简单说说他们的设计原理吧。

CPU:

      但是,现在我要问一句:“什么是CPU?”我相信大多数人并不知道什么是CPU。当然,你可以回答CPU是中央处理器,或者来一句英文: Central Processing Unit。是的,没错。但,RISC和CISC是什么?什么是“9路超标量设计”、“20级流水线”?什么是“解 码”,为什么Athlon和PIII的解码过程需要的时钟周期大大大于其他的RISC处理器?这些都不是一句“中央处理器”所能够回答的。

一、 指令系统

要讲CPU,就必须先讲一下指令系统。指令系统指的是一个CPU所能够处理的全部指令的集合,是一个CPU的根本属性。比如我们现在所用的CPU都是 采用x86指令集的,他们都是同一类型的CPU,不管是PIII、Athlon或Joshua。我们也知道,世界上还有比PIII和Athlon快得多的 CPU,比如Alpha,但它们不是用x86指令集,不能使用数量庞大的基于x86指令集的程序,如Windows98。之所以说指令系统是一个CPU的 根本属性,是因为指令系统决定了一个CPU能够运行什么样的程序。所有采用高级语言编出的程序,都需要翻译(编译或解释)成为机器语言后才能运行,这些机 器语言中所包含的就是一条条的指令。

1、 指令的格式

一条指令一般包括两个部分:操作码和地址码。操作码其实就是指令序列号,用来告诉CPU需要执行的是那一条指令。地址码则复杂一些,主要包括源操作数地址、目的地址和下一条指令的地址。在某些指令中,地址码可以部分或全部省略,比如一条空指令就只有操作码而没有地址码。

举个例子吧,某个指令系统的指令长度为32位,操作码长度为8位,地址长度也为8位,且第一条指令是加,第二条指令是减。当它收到一个 “00000010000001000000000100000110”的指令时,先取出它的前8位操作码,即00000010,分析得出这是一个减法操 作,有3个地址,分别是两个源操作数地址和一个目的地址。于是,CPU就到内存地址00000100处取出被减数,到00000001处取出减数,送到 ALU中进行减法运算,然后把结果送到00000110处。

这只是一个相当简单化的例子,实际情况要复杂的多。

2、 指令的分类与寻址方式

一般说来,现在的指令系统有以下几种类型的指令:

(1)算术逻辑运算指令

算术逻辑运算指令包括加减乘除等算术运算指令,以及与或非异或等逻辑运算指令。现在的指令系统还加入了一些十进制运算指令以及字符串运算指令等。

(2)浮点运算指令

用于对浮点数进行运算。浮点运算要大大复杂于整数运算,所以CPU中一般还会有专门负责浮点运算的浮点运算单元。现在的浮点指令中一般还加入了向量指令,用于直接对矩阵进行运算,对于现在的多媒体和3D处理很有用。

(3)位操作指令

学过C的人应该都知道C语言中有一组位操作语句,相对应的,指令系统中也有一组位操作指令,如左移一位右移一位等。对于计算机内部以二进制不码表示的数据来说,这种操作是非常简单快捷的。

(4)其他指令

上面三种都是运算型指令,除此之外还有许多非运算的其他指令。这些指令包括:数据传送指令、堆栈操作指令、转移类指令、输入输出指令和一些比较特殊的指令,如特权指令、多处理器控制指令和等待、停机、空操作等指令。

对于指令中的地址码,也会有许多不同的寻址(编址)方式,主要有直接寻址,间接寻址,寄存器寻址,基址寻址,变址寻址等,某些复杂的指令系统会有几十种甚至更多的寻址方式。

3、 CISC与RISC

CISC,Complex Instruction Set Computer,复杂指令系统计算机。RISC, Reduced Instruction Set Computer,精简指令系统计算机。虽然这两个名词是针对计算机的,但下文我们仍然只对指令集进行 研究。

(1)CISC的产生、发展和现状

一开始,计算机的指令系统只有很少一些基本指令,而其他的复杂指令全靠软件编译时通过简单指令的组合来实现。举个最简单的例子,一个a乘以b的操作就 可以转换为a个b相加来做,这样就用不着乘法指令了。当然,最早的指令系统就已经有乘法指令了,这是为什么呢?因为用硬件实现乘法比加法组合来得快得多。

由于那时的计算机部件相当昂贵,而且速度很慢,为了提高速度,越来越多的复杂指令被加入了指令系统中。但是,很快又有一个问题:一个指令系统的指令数是受指令操作码的位数所限制的,如果操作码为8位,那么指令数最多为256条(2的8次方)。

那么怎么办呢?指令的宽度是很难增加的,聪明的设计师们又想出了一种方案:操作码扩展。前面说过,操作码的后面跟的是地址码,而有些指令是用不着地址码或只用少量的地址码的。那么,就可以把操作码扩展到这些位置。

举个简单的例子,如果一个指令系统的操作码为2位,那么可以有00、01、10、11四条不同的指令。现在把11作为保留,把操作码扩展到4位,那么 就可以有00、01、10、1100、1101、1110、1111七条指令。其中1100、1101、1110、1111这四条指令的地址码必须少两 位。

然后,为了达到操作码扩展的先决条件:减少地址码,设计师们又动足了脑筋,发明了各种各样的寻址方式,如基址寻址、相对寻址等,用以最大限度的压缩地址码长度,为操作码留出空间。

就这样,慢慢地,CISC指令系统就形成了,大量的复杂指令、可变的指令长度、多种的寻址方式是CISC的特点,也是CISC的缺点:因为这些都大大 增加了解码的难度,而在现在的高速硬件发展下,复杂指令所带来的速度提升早已不及在解码上浪费点的时间。除了个人PC市场还在用x86指令集外,服务器以 及更大的系统都早已不用CISC了。x86仍然存在的唯一理由就是为了兼容大量的x86平台上的软件。

(2)RISC的产生、发展和现状

1975年,IBM的设计师John Cocke研究了当时的IBM370CISC系统,发现其中占总指令数仅20%的简单指令却在程序调用中占了80%,而占指令数80%的复杂指令却只有20%的机会用到。由此,他提出了RISC的概念。

事实证明,RISC是成功的。80年代末,各公司的RISC CPU如雨后春笋般大量出现,占据了大量的市场。到了90年代,x86的CPU如pentium和k5也开始使用先进的RISC核心。

RISC的最大特点是指令长度固定,指令格式种类少,寻址方式种类少,大多数是简单指令且都能在一个时钟周期内完成,易于设计超标量与流水线,寄存器 数量多,大量操作在寄存器之间进行。由于下文所讲的CPU核心大部分是讲RISC核心,所以这里就不多介绍了,对于RISC核心的设计下面会详细谈到。

RISC目前正如日中天,Intel的Itanium也将最终抛弃x86而转向RISC结构。

二、CPU内核结构

好吧,下面来看看CPU。CPU内核主要分为两部分:运算器和控制器。

(一) 运算器

1、 算术逻辑运算单元ALU(Arithmetic and Logic Unit)

ALU主要完成对二进制数据的定点算术运算(加减乘除)、逻辑运算(与或非异或)以及移位操作。在某些CPU中还有专门用于处理移位操作的移位器。

通常ALU由两个输入端和一个输出端。整数单元有时也称为IEU(Integer Execution Unit)。我们通常所说的“CPU是XX位的”就是指ALU所能处理的数据的位数。

2、 浮点运算单元FPU(Floating Point Unit)

FPU主要负责浮点运算和高精度整数运算。有些FPU还具有向量运算的功能,另外一些则有专门的向量处理单元。

3、通用寄存器组

通用寄存器组是一组最快的存储器,用来保存参加运算的操作数和中间结果。

在通用寄存器的设计上,RISC与CISC有着很大的不同。CISC的寄存器通常很少,主要是受了当时硬件成本所限。比如x86指令集只有8个通用寄存 器。所以,CISC的CPU执行是大多数时间是在访问存储器中的数据,而不是寄存器中的。这就拖慢了整个系统的速度。而RISC系统往往具有非常多的通用 寄存器,并采用了重叠寄存器窗口和寄存器堆等技术使寄存器资源得到充分的利用。

对于x86指令集只支持8个通用寄存器的缺点,Intel和AMD的最新CPU都采用了一种叫做“寄存器重命名”的技术,这种技术使x86CPU的寄 存器可以突破8个的限制,达到32个甚至更多。不过,相对于RISC来说,这种技术的寄存器操作要多出一个时钟周期,用来对寄存器进行重命名。

4、 专用寄存器

专用寄存器通常是一些状态寄存器,不能通过程序改变,由CPU自己控制,表明某种状态。

(二) 控制器

运算器只能完成运算,而控制器用于控制着整个CPU的工作。

1、 指令控制器

指令控制器是控制器中相当重要的部分,它要完成取指令、分析指令等操作,然后交给执行单元(ALU或FPU)来执行,同时还要形成下一条指令的地址。

2、 时序控制器

时序控制器的作用是为每条指令按时间顺序提供控制信号。时序控制器包括时钟发生器和倍频定义单元,其中时钟发生器由石英晶体振荡器发出非常稳定的脉冲信号,就是CPU的主频;而倍频定义单元则定义了CPU主频是存储器频率(总线频率)的几倍。

3、 总线控制器

总线控制器主要用于控制CPU的内外部总线,包括地址总线、数据总线、控制总线等等。

4、中断控制器

中断控制器用于控制各种各样的中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU处理。

(三) CPU核心的设计

CPU的性能是由什么决定的呢?单纯的一个ALU速度在一个CPU中并不起决定性作用,因为ALU的速度都差不多。而一个CPU的性能表现的决定性因素就在于CPU内核的设计。

1、超标量(Superscalar)

既然无法大幅提高ALU的速度,有什么替代的方法呢?并行处理的方法又一次产生了强大的作用。所谓的超标量CPU,就是只集成了多个ALU、多个FPU、多个译码器和多条流水线的CPU,以并行处理的方式来提高性能。

超标量技术应该是很容易理解的,不过有一点需要注意,就是不要去管“超标量”之前的那个数字,比如“9路超标量”,不同的厂商对于这个数字有着不同的定义,更多的这只是一种商业上的宣传手段。

2、流水线(Pipeline)

流水线是现代RISC核心的一个重要设计,它极大地提高了性能。

对于一条具体的指令执行过程,通常可以分为五个部分:取指令,指令译码,取操作数,运算(ALU),写结果。其中前三步一般由指令控制器完成,后两步 则由运算器完成。按照传统的方式,所有指令顺序执行,那么先是指令控制器工作,完成第一条指令的前三步,然后运算器工作,完成后两步,在指令控制器工作, 完成第二条指令的前三步,在是运算器,完成第二条指令的后两部……很明显,当指令控制器工作是运算器基本上在休息,而当运算器在工作时指令控制器却在休 息,造成了相当大的资源浪费。解决方法很容易想到,当指令控制器完成了第一条指令的前三步后,直接开始第二条指令的操作,运算单元也是。这样就形成了流水 线系统,这是一条2级流水线。

如果是一个超标量系统,假设有三个指令控制单元和两个运算单元,那么就可以在完成了第一条指令的取址工作后直接开始第二条指令的取址,这时第一条指令 在进行译码,然后第三条指令取址,第二条指令译码,第一条指令取操作数……这样就是一个5级流水线。很显然,5级流水线的平均理论速度是不用流水线的4 倍。

流水线系统最大限度地利用了CPU资源,使每个部件在每个时钟周期都工作,大大提高了效率。但是,流水线有两个非常大的问题:相关和转移。

在一个流水线系统中,如果第二条指令需要用到第一条指令的结果,这种情况叫做相关。以上面哪个5级流水线为例,当第二条指令需要取操作数时,第一条指 令的运算还没有完成,如果这时第二条指令就去取操作数,就会得到错误的结果。所以,这时整条流水线不得不停顿下来,等待第一条指令的完成。这是很讨厌的问 题,特别是对于比较长的流水线,比如20级,这种停顿通常要损失十几个时钟周期。目前解决这个问题的方法是乱序执行。乱序执行的原理是在两条相关指令中插 入不相关的指令,使整条流水线顺畅。比如上面的例子中,开始执行第一条指令后直接开始执行第三条指令(假设第三条指令不相关),然后才开始执行第二条指 令,这样当第二条指令需要取操作数时第一条指令刚好完成,而且第三条指令也快要完成了,整条流水线不会停顿。当然,流水线的阻塞现象还是不能完全避免的, 尤其是当相关指令非常多的时候。

另一个大问题是条件转移。在上面的例子中,如果第一条指令是一个条件转移指令,那么系统就会不清楚下面应该执行那一条指令?这时就必须等第一条指令的 判断结果出来才能执行第二条指令。条件转移所造成的流水线停顿甚至比相关还要严重的多。所以,现在采用分支预测技术来处理转移问题。虽然我们的程序中充满 着分支,而且哪一条分支都是有可能的,但大多数情况下总是选择某一分支。比如一个循环的末尾是一个分支,除了最后一次我们需要跳出循环外,其他的时候我们 总是选择继续循环这条分支。根据这些原理,分支预测技术可以在没有得到结果之前预测下一条指令是什么,并执行它。现在的分支预测技术能够达到90%以上的 正确率,但是,一旦预测错误,CPU仍然不得不清理整条流水线并回到分支点。这将损失大量的时钟周期。所以,进一步提高分支预测的准确率也是正在研究的一 个课题。

越是长的流水线,相关和转移两大问题也越严重,所以,流水线并不是越长越好,超标量也不是越多越好,找到一个速度与效率的平衡点才是最重要的。

三、CPU的外核

1、解码器(Decode Unit)

这是x86CPU才有的东西,它的作用是把长度不定的x86指令转换为长度固定的类似于RISC的指令,并交给RISC内核。解码分为硬件解码和微解 码,对于简单的x86指令只要硬件解码即可,速度较快,而遇到复杂的x86指令则需要进行微解码,并把它分成若干条简单指令,速度较慢且很复杂。好在这些 复杂指令很少会用到。

Athlon也好,PIII也好,老式的CISC的x86指令集严重制约了他们的性能表现。

2、一级缓存和二级缓存(Cache)

以及缓存和二级缓存是为了缓解较快的CPU与较慢的存储器之间的矛盾而产生的,以及缓存通常集成在CPU内核,而二级缓存则是以OnDie或OnBoard的方式以较快于存储器的速度运行。对于一些大数据交换量的工作,CPU的Cache显得尤为重要。

GPU:

     Graphic Processing Unit简称GPU距离那场革命已经5年了还记得最早由伟大的nVIDIA在1999年8月31日提出

一,GPU

GPU全称是Graphic Processing Unit—图形处理器,其最大的作用就是进行各种绘制计算机图形所需的运算。包括顶点设置,光影,像 素操作等。GPU实际上是一组图形函数的集合,而这些函数由硬件实现,主要用于处理3D游戏中物体移动时的坐标转换及光源处理。以前,这些工作都是由 CPU配合特定的软件来做的。GPU从某种意义上来讲就是为了取代CPU在图形处理过程中充当主角而出现的,一块标准的GPU主要包括 2D Engine,3D Engine ,Video Processing Engine,FSAA Engine,显存管理单元等等,其中,3D运 算中起决定作用的是3D Engine,这是现代3D显卡的灵魂,也是区别GPU等级的重要标志。3D Engine在各公司的产品中都是宣传攻势的重点 照顾对象,名字叫的一个比一个响,像nVidia的nFinitFX系列,CineFX系列,ATI的SmoothVision系列,一个 3D Engine通常包含着T&L单元,Vertex Processing Engine,Setup Engine, Piexl Shader等

二,API

说到API,也许很多人不容易理解。在计算机行业中,所有软件的程序接口,包括3D图形程序接口在内,统称为API (Application Program Interface)—应用程序接口。过去,如果您想让它们发挥最大功效,必须做的一件事,就是记录相关硬件 设备的地址。现在,API已成为软、硬件之间一种连接的桥梁,这道工序就可以省略了。显卡芯片厂商根据标准来设计自己的硬件产品,以达到在API调用硬件 资源时最优化,获得更好的性能。有了这个桥梁,便可实现不同厂家的硬件、软件最大范围兼容。目前PC游戏与显卡之间的桥梁主要有两个—DirecX和 OpenGL。可能会有人认为DriectX是一个专门的图形API,其实,DirectX并不局限于显示领域。目前的DirectX中包含有 Direct Graphics(Direct 3D+Direct Draw)、Direct Input、Direct Play、 Direct Sound、Direct Show、Direct Setup、Direct Media Objects等多个组件,它提供了一整套的 多媒体接口方案。其中,Direct Graphics主要负责3D图形部分

初代的DriectX并不成功,技术上也不成熟,这种情况一直持续DriectX5.0,DirectX 5版本在D3D上有很大改善,对D3D的内容做 了彻底修改,除此之外,许多应用程序接口的细节部分也得到了改进。加入了雾化效果、Alpha混合等3D特效,使3D游戏中的空间感和真实感得以增强。因 此,DirectX发展到DirectX 5才真正走向了成熟。而真正显现出DirectX的王者霸气并且的版本是革命的DirectX7.0

DirectX 7.0加入了硬件几何转换与光源处理,及T&L技术。虽然OpenGL中已有相关技术,但此前从未在娱乐级显卡中出现。 T&L技术将多边形设置,光影转换等大计量消耗CPU运算能力的工作转移给了GPU内的T&L单元进行,从而在一定程度上将CPU从繁重 的劳力中解放了出来

随后的DirectX 8.0中,T&L被Shader所取代,各种Shader单元的应用带来了图形特效的质的飞跃,DirectX 8.0使 GPU真正成为了可编程的处理器。而DirectX 9.0则将各种Shader效果带入了FLOAT运算的时代在GPU出现的以前,显卡和CPU的关系 有点像“主仆”,简单的说这时的显卡就是画笔,根据各种由CPU发出的指令和数据进行着色,材质的填充,渲染,输出等等。所以较早的娱乐用3D显卡又称 “3D加速卡”,由于大部分坐标处理的工作及光影特效需要由CPU亲自来执行,占用了CPU太多的运算时间,从而造成整体画面不能非常流畅地表现出来。随 着时间的推移,CPU进行各种光影运算的速度变的越来越无法满足游戏开发商的要求,更多多边形以及特效的应用压榨光了几乎所有的CPU性能,矛盾产生 了……如果说不堪忍受的游戏速度催生了GPU的话,那么为GPU准备“产床”的则是我们这个世界上唯一的软件帝国:微软—当矛盾接近临界点时, DriectX7.0来了。接着,1999年8月31日,NV10(就是GeForce)诞生了伴随着DriectX版本的变化,GPU的发展也经历了3 个阶段:

1、剪除,变形,光照—T&L以及第一代GPU

第一代GPU的最重要的特点就是在硬件级别上实现了T&L运算,其代表有:NV10/15(Geforce256/2GTS/MX),R100 (Radeon256/LE),Savage2000等,由于这一代GPU的基本工作原理相同,所以这里我们以Geforce2GTS为例,来看看第一代 的GPU是如何工作的首先,CPU将数据传递给GPU进行处理,数据先进入T&L单元中的Transform Engine,在这里,数据将以顶 点的形式接受视野范围的判断,当处理单元判断某部分顶点处于观察者的视线范围以外时,Transform Engine将把这部分顶点“剪除”以使其不会 干扰后续的流水线操作, 具个简单的例子:当你在某FPS游戏中突然打开狙击枪的狙击镜,视野变成了一个圆形的空洞,而其他部分则为黑色,这时 Transform Engine将去除这个圆形视野范围以外的所有顶点,不过,这里进行的只是视野范围的判断,Transform Engine去除在 你的视线范围内但是被其它东西挡住了的物体,另外,每一个三角形可能被旋转,放大/缩小,上升,下降,左偏,右移等。 这就是多边形转换转换。 Transform Engine根据你的视角,改变了由程序提供的组成3D物体的顶点的坐标。经过Lighting Engine处理后的图象经过判断 处理后的数据将流入T&L单元中的Lighting Engine,根据光源的类型,距离,角度,数目,应用方式等不同参数,每一个多边形都会有 不同的光影表现和光影关系,因而需要不同的光线函数予以表征,在Lighting Engine中,处理单元将根据软件提出的光源分布情况为每个顶点计算 出它所具有的光线矢量,以便后续进行的光线纹理贴图,着色等操作

经过Lighting Engine处理的画面

其实,经由T&L单元处理过的数据还只是抽象的数据,并不是具体的图形,上面两副图仅仅是方便读者进行想象的示意图。

接下来数据将流入Setup Engine,在这里,运算单元将进行三角形的设置工作,这是整个绘图过程中最重要的一个步骤,Setup Engine甚 至直接影响着一块GPU的执行效能。三角形的设置过程是由一个一个的多边形组成的,或者是用更好的三角形代替原来的三角形。在三维图像中可能会有些三角形 被它前面的三角形挡住,但是在这个阶段3D芯片还不知道哪些三角形会被挡住。所以三角形建立单元接收到的是一个个由三个顶点组成的完整三角形。三角形的每 个角(或顶点)都有对应的X轴、Y轴和Z轴坐标值,这些坐标值确定了它们在3D景物中的位置。同时,三角形的设置也确定了像素填充的范围

经过Setup Engine处理的画面

最终着色完毕的画面

在三角形设置完毕后,T&L单元的全部运算就完成了。接下来数据将进入NV15独有的NSR像素处理单元进行一定的像素处理,接着流入像素流水线 进行后续的纹理像素填充等操作,这部分操作在DriectX7.0中的变化并不明显,基本的渲染填充过程与过去的显卡几无二异

T&L虽然再一定程度上缓解了CPU运算能力的不济所带来的瓶颈,使得系统在图形方面的资源得到了再分配和增强,但同时,T&L也将新的矛盾转到了GPU上

T&L是一组相对固定的简单的图形函数,所实现的特效受到了函数本身语句的限制,虽然这种固定的指令集设计可以带来比较高的执行效率,但这种设置 使得DX7下所能实现的特效受到了指令集的约束,许多逼真的特效无法实现,程序员的思想也被限定在一个相对狭窄的范围内。

2、我要看到你飘逸的秀发和迷人的微笑—可编程Shader以及第二代GPU

DriectX8.0在传统T&L的基础上加入了两个新的概念—可编程的Vertex Shader和Piexl Shader,同样的,第二代 GPU的标志就是硬件级别的可编程Shader运算,代表产品为NV2X(Geforce3/4Ti),R2XX(Radeon8500)等

可编程Shader的复杂程度远非T&L可比,为了方便大家理解第二代GPU的特点,我们先来认识一下什么是可编程Shader,以及可编程Shader运算单元

可编程Vertex Shader及顶点处理器:

可编程Vertex Shader让程序员能够对特定物体,甚至整个画面的每一个顶点,指定特别的运算程序,却不需要CPU介入。每一个顶点都携带相当多 的信息,比如坐标,重量,法线,颜色,纹理坐标,雾和点大小数据。顶点处理器能够以简短的程序来改变上述这些信息。 这些小程序直接由顶点着色引擎本身执 行,不必劳驾CPU。 典型的T&L引擎将程序员限制在3D运算的光影转换之前, 在有了顶点处理器的支持之后,游戏设计师对游戏场景里的3D物 体能够为所欲为的操纵变化,而且不需要用到中央处理器。

这导致了一场革新,程序可以改变顶点的坐标,这样基本上改变物体的形状,以达到更接近真实的移动、移动残影、混色、内插(在两种外型间转换),以及变形, 比如改变角色脸部的骨骼和皮肤一个产生一个适时的微笑。也可改变顶点上的颜色数据和纹理坐标,物体表面的颜色达到设计师所想要的色彩效果、投影、凹凸贴图 设置(如Blinn Bump mapping)或者其它投射的纹理。光源也可以为程序员随心所欲的调整,不再像过去那样需要对光源的效果进行笨拙的光线 纹理贴图,而这些在以前是不可想象的。这一切都归功于可编程Vertex Shader和顶点处理器的出现

Blinn Bump mapping

可编程Piexl Shader以及像素处理器

在NV15中,nVidia曾经尝试加入一个叫NSR的像素处理单元,它可以在数据进入像素流水线之前对每个像素进行一系列运算操作,虽然同为每像素操 作,但NSR与Piexl Shader可不能同日而语, NSR对于像素的运算只有7种,同T&L一样,它依然是固定模式的,程序员依然要依照 规定好的条条框框写出程序,而Piexl Shader则不同,我们可以用许多不同方式去编程,以实现不同的特效,下面就是一般的像素处理器所具备的特 性:

· 阴影贴图

· 快速纹理载入

· 影像乘法,对称核心

· 支持4096x4096或512x512x512 纹理

· 立方体贴图每边可4096x4096x32-位

· 支持YUYV的纹理(自动转换成RGB三原色)

· 支持全景贴图

可以指向任何一个图像,如背景缓冲区(back buffer),而可直接当作纹理使用

· 边缘色彩及边缘纹理

· 硬件同步化读/写

对同一张纹理的读及写允许全流水线操作。

可以对背景缓冲区着色,然后马上能当作纹理使用

· Pass through colors

· 支持DX6规格的环境凹凸/亮度贴图(就是环境凹凸贴图)

· 简单的纹理,S,T 在alpha/红(AB)及蓝/绿 (BG)

· 等向的双方向性反射分布功能光源

· 内积产生色彩贴图或Z坐标

· 真实反射凹凸贴图

这看起来似乎有点抽象,简单的说,可编程Piexl Shader实现了一个非常重要的特效—真实的毛发

古老街道上昏暗灯光中的狼人

在3D渲染中,渲染真实的毛发一直是一件非常困难的事情,大量的多边形给多边形生成带来了严峻的考验,而每一根毛发之间复杂多变的即时光影关系更不是几个简单固定的指令所能实现的。Piexl Shader的可编程性和运算能力很好的解决了这个问题

好啦,现在让我们来看看第二代GPU是如何完整处理一个画面的吧

首先,来自CPU的各种物理参数进入GPU,Vertex Shader将对顶点数据进行基本的判断,如果没有需要处理的Vertex效果,则顶点数据直 接进入Transform&Lighting Unit进行传统的T&L操作以节约时间提高效率,如果需要处理各种Vertex效果,则 Vertex Shader将先对各种Vertex Programs的指令进行运算,一般的Vertex Programs中往往包含了过去转换,剪 切,光照运算等所需要实现的效果,故经由Vertex Shader处理的效果一般不需要再进行Transform&Lighting操作;另 外,当遇到涉及到曲面镶嵌(把曲面,比如弓形转换成为多边形或者三角形)的场合时,CPU可以直接将数据交给Vertex Shader进行处理

另外,在DX8.0的Transform过程中,Vertex Shader可以完成Z值的剔除,也就是Back Face Culling—阴面隐去,这就意味着除了视野以外的顶点外,视野内被前面顶点遮住的顶点也会被一并剪除,这大大减轻了需要进行操作的顶点数目

接下来,经由Vertex Shader处理完成的各种数据将流入Setup Engine,在这里一如既往的进行三角形的设置工作,到这里为止,Vertex Shader的工作就完成了

过去,设置好的三角形本来应该带着各自所有的参数进入像素流水线内进行纹理填充和渲染,但现在则不同,在填充之前我们还需要进行Piexl Shader的操作

其实Piexl Shader并非独立存在的,它位于纹理填充单元之后,数据流入像素流水线后先进入纹理填充单元进行纹理填充,然后便是 Piexl Shader单元,经由Piexl Shader单元进行各种处理运算之后再进入像素填充单元进行具体的着色,再经由雾化等操作后,一个完整 的画面就算完成了

值得注意的是,第二代GPU中普遍引入了独立的显示数据管理机制,他们位于Vertex Shader,Setup Engine以及像素流水线之间,负 责数据的更有效率的传输、组合,各种无效值的剔除,数据的压缩以及寄存器的管理等工作,这个单元的出现对整个GPU的工作效率的保证其到了至管重要的作 用。

HyperZ系列:HyperZ技术本身就是一种类似nVIDIA的“Z-封闭甄别”的技术,但是比nVIDIA还更进一步。它的主要功能简单说来就是分 析在Z轴上的场景,被遮挡的就会被忽略掉,只渲染我们能看到的部分场景;然后对渲染过的Z轴场景进行压缩处理,数据的压缩可减少他所占用的空间,从而在存 取Z-Buffer数据的时候可以保留更多的显存带宽。而且这是一种画面质量没有损害的压缩算法,并不影响画面质量。最后一步就是把经过渲染的场景中的Z -Buffer信息立刻清除掉,这样就更加大了显存带宽的利用率。

LMA(光速显存架构)系列:光速显存架构采用的第一个技术是“显存交错控制”技术, LMA中的显存控制器划分成了4个独立的显存控制单元,每个单元最 大可以进行32bit图形相关数据的存取工作,并且这4个单元之间以及它们和图形处理单元之间都保持密切的通讯联系,并随时协调平衡各个子单元之间的数据 流量,因此整体来看LMA的显存控制单元还是可以进行128bit数据的存储,但是保证了显存带宽的充分利用。光速显存架构采用的第二个技术是“无损Z压 缩算法”。传统的图形芯片对于每个待渲染的图形象素都要进行Z轴数据的读写工作,因此存储这些数据的Z缓存一向是消耗显存带宽的大户。LMA中集成了硬件 “无损Z压缩”单元,采用“无损Z压缩算法”对Z-缓存数据进行4:1的完全无损压缩。 光速显存架构采用的第三个技术是“Z-封闭甄别”。排除了图象中 被遮盖住而不可见的部分,这样GPU就不做隐面模型构建(节省处理器的多边形运算资源),并且渲染管线也不对隐面进行渲染(无需从帧缓存中读写隐面资料数 据,节省渲染管线的象素和纹理生成资源并完全消灭了隐面资料对显存带宽的占用)。最后,LMA还包括了4组高速Cache,对数据传输进行缓冲。

3、梦中的镜花水月—可编程Shader2.0以及第三代GPU

当你第一次看到3Dmark03中的MotherNature时,你有没有感觉到震撼?

更加宽泛的色彩范围能够使得图形的逼真度上升,这就是Shader2.0的由来,Shader2.0的核心实际上就是以扩大指令数目以及FLOAT数据形 式的应用来提高色彩表达的精确度,而第三代GPU的Shader单元也由此而具备了高精度FLOAT色彩数据的运算能力。从一般角度来讲,第三代GPU同 第二代GPU相比在基本的操作控制形式等方面并没有本质的区别,但是由于Shader2.0更大的指令长度和指令个数,以及通用程序+子程序调用的程序形 式等使得第三代GPU在处理高精度的庞大指令时效率上有了明显的提升,同时也使得第三代GPU的可编程性跃上了一个新的台阶

让我们来看看第三代GPU到底有哪些改进吧

Vexter Shader部分

第三代GPU的顶点处理器部分除了一般的操作功能外还具备流程控制能力,包括循环,跳跃以及子程序调用等,这些控制指令以及更多向量(或标量)寄存器的应 用使得顶点处理器能够以更高的效率执行Vertex Programs,提高了Vertex的处理速度。同时,加大的指令长度和指令数量使得顶点处理器的 功能得到了进一步的强化。另外,在第三代GPU中,传统的T&L数据将完全交由顶点处理器来执行,Transform& Lighting Unit将彻底被顶点处理器“吞并”,这也是第三代GPU的一个重要特点

Piexl Shader部分

第二代GPU的Piexl Shader只能实现INT数据的运算,这势必会带来最终运算结果的不精确,而数据的不精确导致了颜色表现的不准确,干扰了最 终画面的质量以及效果的表现,第三代GPU的重点改进就是运算单元和寄存器所支持的运算格式,现在Piexl Shader可以进行更高精度的FLOAT 运算和输出,从而使得图形的色彩显示更加精确

暴光正确的图象

数据精度不当而无法实现的特种暴光

另外,第三代GPU的像素处理器每周期所能处理的材质以及指令也分别增加了数倍,这些新特性使得第三代GPU可以处理各种复杂程度的效果,营造一个更为真实的3D画面,比如更加真实的水面效果

INT Piexl Shader所表现的水面效果

FLOAT Piexl Shader所表现的水面效果

传统的INT无法表现宽泛的波浪效果,程序员害怕数据精度范围狭窄引起的上溢或者下溢的发生而不得不在一个很小的物理参数范围内控制涟漪水面所需的波长、 波浪的大小、移动速度以及反射和折射效果等,现在,由于数据精度的提升,像素处理器完全可以处理一个非常宽泛的数据精度范围,避免数据的溢出,这就使得更 加真实的水面效果得以被表现。第三代GPU的代表是NV3X系列,R3XX系列等,其中R3XX系列的基本处理方式和顺序与第二代GPU在本质上基本相 同,仅仅是Vertex Shader和Piexl Shader的具体操作细节和运算精度上有些许不同,而NV3X虽然在基本原理上也与之大略相同,但 从流水线的角度来看则与完全不同,应该算是个“异类”。产生过程,只分析一下NV3X

以NV35为例:

首先,他具有8个纹理帖图单元,但8个纹理贴图单元并不在固定分布于每一条Piexl流水线,而是集簇在一起,根据情况来搭配,可以是4*2、8*1。

其次,他具有12条Shader流水线,但没有全盘采用浮点渲染流水线,而只是把12条Shader流水线中的8条做成具备浮点处理能力;不过全部12条Shader流水线都具备Fixed-Point Shader的执行能力。

另外,NV3X将流水线后部的各种渲染单元,如雾化,Alpha混合等大幅削减,使得流水线在一定程度上公用这些单元

NV30的构架组成形式基本上与之相当,只是数目上略有不同

由于这个构架并不是传统意义上的4*2或者8*1的固定构架,我们不能象过去那样说NV35“每个流水线具有2个纹理帖图单元”或者“每条管线具有3个Shader流水线”……我们只能说“NV35单位周期可以完成8次左右的纹理贴图或者12次Shader操作”

另外,由于NV3X对于Fixed-Point Shader的支持精度是FP16和FP32,同时NV3X的Shader流水线的单位Fixed- Point Shader处理精度是16位,所以当遇到32位Fixed-Point Shader数据时,能进行Fixed-Point Shader 数据处理的8条Shader流水线也会根据情况进行搭配来运算32位的Fixed-Point Shader数据

Pixel Programs往往是由多条指令构成的,不同的指令需要不同的执行时间来完成,每个像素必须在应用在它“身上”的Pixel Shader 操作完成后才能由像素流水线写入到帧缓存里。故此,对于应用了Piexl Shader的像素实际上是需要多个以上的周期才能写入到帧缓存里,如果采用8 条完整的渲染流水线的话, 流水线后面的雾化、色彩混合等单元很多时候都会处在等待阶段,这部分单元需要占用的晶体管数量不在少数,如果这样浪费就怪可惜 的,砍掉后其中的雾化等单元后,对整体的性能虽然有一些影响,但是却可以把节省下来的晶体管用于加强Pixel Shader的功能和性能上来,同时可以 保证比较高的多重纹理效率,利大于弊。

简单的,这个有点诡异的体系节省晶体管的同时能确保相对较好的Pixel Shader效能,同时还有极高的多重贴图效能

nVidia本指望4条Pixel管线+ 12条Shader流水线的设计能够在现在以及未来较长的一段时间的游戏里提供超过4条甚至8条 Pixel Pipeline显卡的效能。不过,实际情况却与nVidia的初衷有些背道而驰,Shader的完美应用带来的一个结果就是越来越好的非多 纹理光效果,传统的多纹理贴图才能表现的很好的光效果现在只需要进行一次贴图或者直接使用Shader就可以达到,这使得NV3X的设计成为了空架子,实 用意义大大降低,而在单纹理处理过程中由于NV3X的后续效果单元被削减,它的渲染效能注定没有传统的完整流水线高,另外,由于DX9中的最终FP精度被 定义为FP24,这导致了NV3X的相对低下的FP效能。最终,本来“先进”的NV3X构架落的个整体效能低下的下场

从本质上来讲,图形数据在NV3X中的实际处理过程依然是沿着顶点处理器—Setup Engine—像素流水线的顺序进行的,这与R3XX以及所有的第二代GPU是相同的

天堂的入口—可编程Shader3.0,DriectX Next以及未来的GPU

在微软刚刚公布的Driect9.0C中,Vertex Shader和Piexl Shader已经具有了几乎相同的能力,而在nVidia新发布的第 四代GPU—NV40中,我们发现Vertex Shader包含了4个纹理取样器,可以使用texld指令进行查表操作, NV40可以在一个 shader pass里完成4个纹理的读取,这个对于通用替换贴图而言相当的重要,有了vertex texturing功能后, vertex shader就能读取纹理信息直接映射到顶点上,以实现displacement mapping(位移映射)等等效果,用不同的纹理和较 少的顶点传输时间就能实现外形复杂、平滑的模型,这表明GPU中Vertex Shader的功能正在逐渐接近Piexl Shader。随着GPU的发 展,未来GPU中的Vertex Shader和Piexl Shader最终将被合并成一个统一的处理单元—Intergrated Shader,两 种处理单元将使用完全相同的语法以及指令集,Shader的统一将带来完全不同与现在的数据执行处理方式,GPU的内部结构将发生本质的变化, Intergrated Shader带来了更低晶体管数目的解决方案,以更少的晶体管数目来完成现在需要数亿晶体管才能完成的功能,同时统一 Shader将引出类似全通用I/O接口的设计以利资源的更合理的传输和分配,同时,为了解决越来越庞大的数据量,虚拟显存、无限资源访问以及帧缓冲操作 等技术的引入也势在必行。另外,我们在DirectX Next中还发现了整数指令集,处理器等特殊的定义,这些新颖的设计为我们勾勒出了未来GPU的轮 廓

整数指令集

在编程中不必在担心指令限制是一个很大的进步,不过想使得GPU更为通用还需要更多的工作。一个需要提高的主要区域就是整数处理能力。目前基于在着色器中 处理的所有数据都是浮点,这对于大多数显卡操作而言是没有问题的,不过不适合动态分支预测、非内插式显存搜索(如顶点缓冲的索引)等操作。在目前的GPU 中,唯一的内存寻址就是纹理查找,使用的也是浮点值。这样的情况对于纹理定位而言没有什么问题,不过对于通用内存寻址而言就不合适了,这里的连续内存块可 以完全彼此没有关联,采用内插式查找没有任何意义。微软对于这样的情况,在4.0版的Shader模型中引入了全新的、完整的整数指令集。拓扑处理器实际 上,目前的显卡可以在某些情况下新生成三角形,比如在用到直线以及点的时候。大多数的娱乐级显卡只具备对三角形进行光栅化处理的能力,这也就意味着所有的 点、线就必须转化为三角形。点和线在最后都将以2个三角形结束,这样就需要用到2-6个顶点(根据索引方式的不同而变化)。从本质上来说,这样的做法是有 益处的,通过可编程的管线,显示先前应该遮蔽的场景也就无需通过CPU,而可以通过微软的“拓扑处理器”直接完成。从逻辑上来说,这个拓扑处理器和镶嵌单 元是相互独立的,这个处理器在两种操作集中均可以使用。由目前的趋势来看,未来的GPU将向着高运算能力,高精度,高通用性的方向发展,GPU在工作方式 上将越来越接近CPU,由于高通用性等CPU特性的引入,GPU可能在一定程度上替代一部分CPU在非绘图领域的工作,也许在未来我们会看到由全GPU组 成的图形工作站。尽管未来GPU需要面对由于这些改进而带来得的诸多问题,尤其是通用性导致的效率低下,比如Intergrated Shader的效率 低下,但随着时间的推移,各种问题都将会得到妥善的解决。


文章来源:http://ly-weiwei.blog.163.com/blog/static/729752832008112611455157

posted @ 2008-12-26 23:46 麒麟子 阅读(179) | 评论 (0)编辑 收藏

[导入]求伯君:向暴雪学习 金山不求一夜暴富

from: http://bbs.chinagcn.com/viewthread.php?tid=2004

求伯君:向暴雪学习 金山不求一夜暴富

提起金山必言及微软的人,一定不了解今日的金山。  最近关于金山最火爆的新闻是,正在内测的武侠网游《剑侠世界》,内测人数突破28万人,创下国产网游最好成绩。

  近几个月,关于金山的新闻一直在业内十分“抢眼”:斥资亿元进行信息化建设、签下国家电网千万大单、全面布局企业安全市场、在越南成立合资公司……

  记者:金山网游与软件收入比例约是7:3,有人比喻说这是地球上海洋和陆地的比例,是否意味着网游正是金山的生命之水?金山所坚持的两条腿走路是否也有轻重之分?

  求伯君:生命的维持除了水之外,氧气也是必不可少的。如果网游是水的话,那软件就是氧气了。开个玩笑,其实网游和软件我们理想的比例是2:1,刚发布的中期财报中,网游的营收入占总营收的66%,软件34%,就是这个比例。除非网游或者软件上有重大的突破,或者市场的环境有了大范围的改变,否则,我们都会认为维持这个比例对金山而言是比较好的。

  至于网游和软件的“两条腿”走路是否有轻重之分,其实是没有的。我们在香港上市的时候虽然打出的是“网游概念股”,但我去路演的时候,被问的最多的,还是通用软件,还是我们的WPS、词霸和毒霸。网游风险大、收入高,软件风险小、稳健,两者结合是金山的特点,也是被投资者看好的布局。

  记者:网游市场的竞争何其激烈,金山一直强调技术立业。单一靠研发的模式是否在时间上会使金山失去抢占市场的良机?

  求伯君:正是因为竞争的激烈,才要避免浮躁的心态,把握好自己的方向。虽然市场瞬息万变,玩家的喜好也在变化,但事实证明有时候并不是“越快越好”,现在的玩家越来越成熟,他们对游戏各个方面的要求也越来越高。举个例子,我们即将内测的游戏剑侠情缘网络版3的研发人员曾经在玩家的群里发了一个游戏场景的截图,他问他们,如果行船在水面划过的痕迹,包括水的微波、船的倒影都做得十分逼真,仅仅是在水面和岸边相接的地方,没有做出岸边的倒影效果,能接受吗?结果是大部分的玩家都觉得不能接受这样 “粗糙的画面”。由此可见,像这样精益求精的追求不只体现在游戏的开发者身上,更会体现在玩家们的身上。

  而事实也证明,暴雪用5年时间打造的魔兽很成功,用心做的精品原创网游,最终还是会被市场认可的。免费网游时代,用户体验一款游戏非常容易,市场只是前端吸引用户来,而产品本身是否能足够吸引玩家留下,就是技术研发实力的体现了。

  记者:您刚才再次提到了“浮躁”,我们注意到您在今年的ChinaJoy的年会上也有类似的表述。那么您认为网游的浮躁主要指的什么?金山网游自身有没有浮躁的因素?

  求伯君:我在ChinaJoy的年会上,说中国的网游行业太浮躁,是由于游戏行业太容易成功,太容易赚到钱,又太容易出现“捞一把就走”的心态。近几年,中国的网游行业都处于迅速的增长期,这样的趋势还会持续一段时间,竞争也会更加激烈。谁都知道,做一个精品游戏需要几年时间来精雕细琢,但是在利益的促使下,现在这个游戏制作周期逐步缩短,半年甚至三个月就出一个作品。这就造成了公司之间的恶性竞争和恶性炒作。

  金山网游现在已经回到了一个朴实的心态,就是为了游戏而做游戏,而不是为了赚钱而做游戏的心态。我们《铁血三国志》已经开发了5年,《剑侠情缘网络版3》也已经开发了三四年。走精品路线来迎接竞争,以不变应万变,是我们面对浮躁的选择。


文章来源:http://ly-weiwei.blog.163.com/blog/static/729752832008112211110398

posted @ 2008-12-22 11:01 麒麟子 阅读(92) | 评论 (0)编辑 收藏

[导入]网页游戏公司遇到的政策难题

原文地址: http://www.chinagcn.com/news/show.php?itemid=99

 国务院412号令规定保留新闻出版总署“出版境外著作权人授权的电子出版物(包含互联网游戏作品)审批”。个别单位和个人认为、规定似乎将网络游戏管理职责划给新闻出版总署。单从字面上分析可以看出、所谓互联网游戏作品出版属于电子出版物出版、指网络游戏客户端光盘出版、而不是游戏进口和网上传播。

《出版管理条例》明确将互联网出版和电子出版物出版并列、说明两者并不属于母子概念关系、电子出版物出版不能包括互联网传播行为。游戏进口和网上传播行为纳入电子出版物管理范畴没有任何政策法规依据、国际上也从无先例。而网页游戏本身特质不属于光盘形势新闻出版物、严格意义上说只能算是网站、从事的范围为网络文化内容经营。因为客户端游戏需要发行光盘、因此属于电子出版物、没有版号无法进行光盘制作发行、因而需要申请电子出版物版号。因此网页游戏不具备这一属性特质、进口外来产品国家法规、条例都无明确定义。

【出版管理条例】

第三十三条

出版单位不得委托未取得出版物印刷或者复制许可的单位印刷或者复制出版物。

第三十四条

印刷或者复制单位经所在地省、自治区、直辖市人民政府出版行政部门批准,可以承接境外出版物的印刷或者复制业务;但是印刷或者复制的境外出版物必须全部运输出境,不得在境内发行。

【经营性互联网文化单位申报指南】

一、申报条件

(一)经营性互联网文化单位、是指经文化行政部门和电信管理机构批准、从事经营性互联网文化活动的互联网信息服务提供者、其中经营性互联网文化活动是指以营利为目的、通过向上网用户收费或者电子商务、广告、赞助等方式获取利益。提供互联网文化产品及其服务的活动、在中华人民共和国境内从事经营性互联网文化活动、均应申请设立经营性互联网文化单位。

二、要求

1、有单位的名称、住所、组织机构和章程

2、有确定的互联网文化活动范围

3、具有合法的互联网文化产品来源渠道或互联网文化产品生产能力

4、有适应互联网文化活动需要并取得相应从业资格8名以上业务管理人员和专业技术人员

5、有100万元以上的注册资金、适应互联网文化活动需要的设备、工作场所以及相应的经营管理技术措施;申请游戏产品业务的、除上述条件外注册资金须达到1000万元以上

6、符合文化部关于互联网文化单位总量、结构和布局的规划

7、根据《关于文化领域引进外资的若干意见》(文办发[2005]19号)、不受理外商投资互联网信息服务提供者申请从事互联网文化活动、允许香港和澳门服务提供者设立由内地控股的经营性互联网文化单位

8、法律、法规规定的其他条件

三、申报流程及时间说明

申请设立经营性互联网文化单位,应当向所在地省、自治区、直辖市人民政府文化行政部门提出申请,由省、自治区、直辖市人民政府文化行政部门初审后,报文化部审批。对申请设立经营性互联网文化单位的,省、自治区、直辖市人民政府文化行政部门应当自受理申请之日起20个工作日内提出初审意见上报文化部,文化部自收到初审意见之日起20个工作日内做出批准或者不批准的决定。批准的,发给《网络文化经营许可证》;不予批准的,应当说明理由。

【结论】

不难看出、网页游戏企业资质申请与新闻出版总署没有任何关系、由于新形态展现方式出现、不在以客户端游戏产品发行而受到新闻出版总署限制。因而法制社会下、新闻出版总署在管理网页游戏公司领域不存在任何法理依据。新闻出版总署由于和国家版权局属于一个人员班子、二种身份。在侵犯他人知识产权、和著作权方面可以入手管理网页游戏行业、但著作权也恰恰是最容易解决的问题。

而文化部法理依据在于不以出版物形式管理、而是文化产品内容方面进行管理。对海外产品、除港澳台等地区具备申请资质条件外、海外巨头公司或产品进入中国大陆有相当大难度、除政策变更外才可获得敞开大门绿灯。文化部门在酒吧、音乐、书画、演出、KTV、古董、艺术品包含任何表现形式游戏产品都具备法理上进行管理的依据。传统客户端游戏厂商已长期习惯面临的方式:先拿毕业证(版号)→之后被告之体育不及格(文化内容审批)。当前时代环境背景下、网页游戏有望取代2D、2.5D为表现形式的客户端游戏。因此改变游戏传播方式、传统客户端游戏扩大用户群体将进一步扩大、更加迅速。对于中小网页游戏团队和公司而言、目前尚处于黑户较多状态(类似黑网吧)。由于文化部门管理速度未跟上市场发展需要、当前网页游戏市场鱼龙混杂、对不符合条件中小团队与公司没有进行加强行政管理从而导致当前产品众多。供大于求、资金使用效率不高、产品品质低下、同质化严重而形成的浮躁现象。

文化部门进行管理行业硬性要求的几项、100万元以上公司注册资金对于中小游戏公司解决起来不是问题、较容易解决。符合文化部关于互联网文化单位总量、结构和布局规划为理由拒绝审批当前现状下由于文化部门速度与效率低下、并未出台行业结构与布局规划相关政策出台。具有合法的互联网文化产品来源渠道或互联网文化产品生产能力、将在一定程度上制约部分山寨、使用OGAME源码换皮包装、不具备生产能力和侵犯他人知识产权的游戏产品。工作场所以及相应的经营管理技术措施、8名以上业务管理人员和专业技术人员硬性要求多数团队与小公司都不具备此项要求。确定的互联网文化活动范围、网络文化经营许可证经营业务的范围并非全部都有运营网页游戏产品资格。港、澳、台地区公司可在大陆经营网页游戏产品这是文化部门阻挡不了的。他们也不敢说中国台湾、中国香港等不属于中国一部分、既然是中国一部分就理所当然可以申请经营资格。

已获得文化经营许可证公司与经营范围查看:

http://www.ccm.gov.cn/show.php?aid=57149&cid=321


文章来源:http://ly-weiwei.blog.163.com/blog/static/7297528320081122104116717

posted @ 2008-12-22 10:41 麒麟子 阅读(89) | 评论 (0)编辑 收藏

仅列出标题
共38页: First 30 31 32 33 34 35 36 37 38