作者:不详 来源:《程序员》2006年第9期   酷勤网收集 2007-09-27

摘要
  本文试图通过回顾计算机硬件在存储容量、CPU主频、CPU指令集、总线带宽、显卡性能、网络带宽等方面的进步,来展示硬件对软件的“影响力”。应对扑面而来的多核时代,你做好准备了吗?

对于一台计算机来说,硬件是“经济基础”,软件则是“上层建筑”。于是,硬件与软件之间的关系必然是:矛盾的,但又辩证统一的。软件是硬件为用户提供服务的窗口,而硬件对软件的功能提供了基础的支持、以及性能上的保障。硬件决定了软件,而软件也会反作用于硬件(有时候甚至是一种制约)。硬件与软件之间息息相关,相互依存,相互渗透,最终能够达到共同繁荣。

硬件技术在不断进步,而且它的进步往往还具有革命性!由于“摩尔定律”的客观存在,每一次硬件技术的变革都是那么的令人期待。它推动着计算机工业不断地向前发展,给软件业也带来了深远的影响。因此,本文试图通过回顾计算机硬件在存储容量、CPU主频、CPU指令集、总线带宽、显卡性能、网络带宽等方面的进步,来展示硬件对软件的“影响力”。应对扑面而来的多核时代,你做好准备了吗?


存储容量

每台计算机都有它的存储设备,或是内置的,或是外置的。最常见的应该是硬盘了。你用过只有10MB的硬盘吗?我猜你没有那么“幸运”吧!那你还记得最早用过的硬盘容量是多少吗?回忆一下吧!

我的第一份工作是开发数字视频监控系统。这个产品跟硬盘有很大关联,也时常被人称作为 “硬盘录像机”。它的大致功能为:前端从摄像头采集视频图像,实时显示在电脑终端以供监视,并且支持将数据同步存档到硬盘上。这个产品被看作是银行、物业、超市等安全应用领域已有模拟监控系统(数据记录在磁带上)的一种替代品而被大力倡导。但是,当时主流的硬盘容量是40GB。我们的第一代产品图像压缩算法采用的是JPEG,假设图像分辨率是320 x 240,压缩成JPEG后单幅图像的大小为15KB,如果每秒钟采集15帧的话,1秒钟保存到硬盘上的数据就要达到225KB。即使系统中挂了两个40GB的硬盘,那也只能持续存储大概4天的数据。这跟银行的要求(至少保存1个月的数据)其实相差很远。存储容量在当时是限制了这个产品的推广和应用。

硬件资源受到了限制,那就只能在软件上下功夫了。我们先是优化算法,对采集到的图像进行差别判断,仅保存前后变动较大的图像;后来索性放弃JPEG,采用了MPEG-1压缩算法。假设MPEG-1码流的比特率是1Mbps(接近VCD效果),保存1小时的数据大小为450MB,如果系统的存储容量仍然是80GB,那就能保存将近8天的数据。如果可以略微牺牲一点图像质量(即降低码流的比特率),再配合一些存储容量扩充技术(比如使用磁盘阵列),系统就能存储更多时间的数据,也就使这套系统接近了实用阶段。再后来采用压缩率更高的MPEG-4算法,进一步把这种数字视频监控系统推向了实际的应用。

存储容量的不足推迟了数字视频监控产品的广泛应用,但另一方面也催化了多媒体压缩编码算法的进步。如今给你一个320GB的硬盘,你也不要太惊讶。一个系统挂上两个硬盘就有640GB了,即使还是1Mbps的MPEG-1码流,保存1个月的数据也是绰绰有余。在存储容量充裕的条件下,监控系统软件开发的重点也从千方百计减少录像的数据量,转变到增强软件界面的友好性、易操作性、以及功能的完整性等方面。


CPU主频

CPU是Central Processing Unit的缩写,意为中央处理器。人们常常形容它是计算机的“心脏”。1978年,Intel公司推出了首枚16位的微处理器8086,当时的时钟频率仅为4.77MHz。经过将近30年的发展,CPU主频得到了大幅的提升,现在已经可以达到4GHz。CPU运算得越来越快了,跑在它上面的软件也显得越来越轻松了。

我供职的前一家公司是专门从事多媒体应用软件开发的。该公司创建于1998年,以MPEG编解码速度快见称。大家知道,多媒体软件需要处理大量的数据,在CPU速度不够快的时候,软件工作的效率就可以呈现出一种竞争力。因为编码速度快,就可以做到音视频的实时采集、编码、存储;这一点很多竞争对手都做不到。因此这个公司在刚开始的那么几年过得还不错。但随着CPU主频的不断提升,这种竞争优势已经日趋不明显。竞争对手的编解码器虽然慢一点,但在高速的CPU逐渐成为电脑的主流配置时,一些实时的应用也开始可以做了。这个时候,用户更关心的是软件本身实现的功能,以及通过软件产出的作品的质量(而不会太在意这个作品的制作过程需要花费多少相差不大的时间)。那些以软件效率高为主要竞争力的公司是应该有些危机感了!效率高似乎应该是硬件的专利才对。

微软的Windows Media编解码器是另外的一个例子。它的编解码器效率一直很低,在配置较低的机器上跑,CPU几乎总是100%,还会产生丢帧。但微软似乎并不着急,也无意于花大力气去提高它的编解码器。看来微软对硬件技术的发展趋势把握得非常好。现在配置以高主频的CPU,Windows Media编解码器就能满足绝大部分应用的需要,制作/呈现出来的媒体质量也相当令人满意。更何况,Windows Media编解码器是完全免费的!


CPU指令集

CPU依靠指令来计算和控制系统。每款CPU在设计的时候就规定了一系列与其硬件电路相配合的指令系统。指令集可分为复杂指令集和精简指令集两部分。而从具体应用来看,还有另外一个叫“扩展指令集”的分类,如Intel公司的MMX、SSE、SSE2、SSE3、SSE4和AMD公司的3D Now!等。这些扩展指令集定义了新的数据和指令格式,能够大大提高CPU某方面的数据处理能力,但必须要有软件的支持。

其实,扩展指令集大都是为增强CPU对多媒体、图形图像的处理能力而设计的。因为多媒体应用程序往往要处理海量的数据,对效率有比较苛刻的要求。CPU通过扩展指令集给出了优化方案,剩下的就看软件如何来配合了。现在的开源项目很多,随便去看一两个音视频编解码相关的,汇编优化的代码随处可见。在一些多媒体应用软件中,如果要实现图像叠加、尺寸缩放、效果处理等功能,如果没有算法/代码优化,效率几乎不可想象。软件在CPU的扩展指令集上真是受益匪浅!


总线带宽

北京时间2005年4月25日晚间,微软在西雅图WinHEC大会上正式推出了x64操作系统。这是一款什么样的操作系统呢?它又有如何的重要意义呢?

在计算机系统中,各个功能部件都是通过总线来交换数据的,总线的带宽对系统性能有着极大的影响。计算机历史上经历了从8位计算到16位计算、从16位计算到32位计算的两次飞跃。现在正在推进的就是第三次飞跃——从32位计算到64位计算。全球最重要的处理器供应商包括:AMD、HP、IBM、Intel、Motorola、Sun无一例外都在推动着64位计算。

目前的X86结构在32位寻址时最大空间只能是4GB,这对于很多大型数据库应用、数字/三维/视频内容的创作,还有如CAD/CAM等需要将现实世界建模运算的软件来说有点捉襟见肘。这些高性能计算领域都有大量的内存需求。而64位平台的寻址能力达到了180亿GB,这在未来很长一段时间内都可以解决高端应用中存储器寻址的瓶颈问题。

Windows XP Professional x64 Edition目前来说是新一代应用程序的最佳系统平台。大多数Windows兼容的32位应用程序在这个x64平台上仍将能正常运行。Win64 API与Win32 API大致相同,只在必要处进行了修改,使它们可以反映其运行平台的精度。这样设计的目的是:简化编程,并缩短软件开发人员编写64位Windows代码的学习曲线;同时也保持了微软对开发者支持比较好的一向作风。但无论怎么说,64位平台和32位平台毕竟不一样了,面对64位计算的大趋势,我们应该有所准备!


显卡性能

现在的家用电脑常被称作为多媒体电脑。电脑不仅可以从事计算任务,还可以作为媒体娱乐中心,为人们提供丰富的视听享受。很多人都将声卡或CDROM作为PC进入多媒体时代的标志,然而真正吸引大量电脑用户的却是PC游戏。作为决定游戏效果的关键因素,显卡将一代又一代玩家带入一个个梦幻般的游戏世界。显卡几乎为游戏而生!

从最初简单的显示功能到如今疯狂的3D加速,显卡的面貌可谓沧海桑田。无论是速度、画质,还是接口类型、视频功能,显卡在近十年里的革新甚至已经可以超越CPU。推陈出新的游戏软件在满足玩家的同时,对显卡的性能不断提出新的要求。而随着高性能显卡的发布,又会催生一大批令玩家沉迷的新游戏。PC游戏市场日渐繁荣,甚至形成了一个蓬勃发展的产业。

除了游戏软件之外,在电脑上进行媒体播放也很依赖显卡的性能。最初在电脑上播放DVD,由于是完全的软件解码,占用CPU资源太多,播放出来的画面很不流畅。随后,微软发布了一套DXVA 视频加速接口。使用这个接口,软件播放器可以将一部分解码工作交给显卡去做,让显卡分担一部分的CPU负荷。于是,软件播放器的性能得到了大幅的提升。伴随着显卡的发展,Windows上的显示技术也得到了长足的发展,从最初的GDI到DirectDraw、Direct3D,无一不是在发挥着显卡的极致性能,让软件呈现给用户极致的体验。


网络带宽

21世纪了,如果你使用电脑的方式还停留在单机模式,那你就落伍了。如今已是如火如荼的网络时代!网络是信息共享最有效的途径。除了工作时经常使用的局域网之外,影响人们工作和生活更多的还属互联网。早期的互联网上出现的只有文字、图像、声音等简单信息,后来逐渐出现了视频(有个很热的概念叫作“流媒体”)。但这里有个很严重的问题,那就是视频数据对时间很敏感、而且数据量非常之大,而可利用的网络带宽却非常之有限,结果流媒体很难得到完美的呈现。

有限的网络带宽似乎给了一些软件公司难得的发展契机(其中成就最为辉煌的当属RealNetworks)。它们一方面通过提高编解码技术,在保证多媒体内容质量的前提下尽可能多地降低在网络上传输的数据量;另一方面大力发展网络通信技术,开发了RTP、RTSP、MMS等一系列专门针对实时性数据的网络传输/控制协议。成果是喜人的!流媒体也因此在远程教育、视频点播、视频会议等领域得到了大量的应用。

即便如此,互联网还有很大的发展潜力。随着网络基础设施的不断改善、信息高速公路的逐步建成,以及电信、电视、计算机“三网融合”趋势的加强,未来的互联网将能够融合现今所有的通信业务,并能培育出更多的新业务,给整个信息技术产业带来一场革命。你看到其中蕴藏的机遇了吗?


多核时代

在硬件技术发展的大舞台上,CPU似乎总是主角。Intel公司一直是CPU的霸主,它提供了世界上主频最高的CPU,从MHz量级到1GHz、2GHz、3GHz,最高达到4GHz,一路领先。在这一过程中,AMD公司只在1GHz时领先过那么一小会儿。但CPU主频到了4GHz似乎已经是一个极限,微处理器厂商不再单纯去提高频率,而纷纷推出了双核乃至多核的架构。好像就在一夜之间,多核来到了我们身边。从此一台电脑可以拥有多颗奔腾的芯,那是多么的激动人心啊!

像以往硬件技术的进步总会对软件以及相关产业产生或多或少的影响一样,多核CPU带来的震撼可能更具有划时代的意义。但采用多核CPU是否一定意味着跑在它上面的软件效率得到成倍的提升呢?未必!如何在两个以上的处理器之间合理地调配资源,目前尚未有成熟高效的算法。从目前来看,软件仍然是个“软肋”;由于软件的限制,多核的优势很难被充分发挥。而且这种充分发挥只有在特定的条件下才会起效,当它面对的是流水线比较长、或者两种互不交叉的运算时,多核的智商可能会低得和单核一样。多核给软件带来了很多亟待解决的课题,它可能还会颠覆现有的编程模式。作为软件开发人员,是时候做些准备了!

分类: 硬件技术 网络管理员 网络技术 黑客技术



关于酷勤 | 联系方式 | 免责声明 | 友情链接