计算机科学中的一些基本原理和定理

1 、多核的软肋──阿姆达定律

      阿姆达定律讲的是这么一件事:一个程序存在两部分,只能串行计算的部分S,和能够并行计算地部分P。两部分之和是整个程序,因此S+P=1。这个程序如果在一个具有N个核心的处理器上运行,那么和它在一个单核处理器上运行相比,速度的提升是1/(S + P/N)。当N趋近于无穷大时(即假设我们有无穷多个核心),速度提升的上限是1/S,即速度提升的上限取决于程序不能被并行计算的部分。

       这个定律的结果就是,即便我们能够有效地并行计算一个程序的95%,剩下5%只能串行计算的部分限制了这个程序的运行速度最多能提升1/5%=20倍。而现有的程序中很少能够做到95%以上部分的并行计算。下面这张图显示了对于4种不同类型的程序(分别有50%,75%,90%,95%的部分能够并行处理)的速度提升相对于处理器核心数量的关系,纵轴是相对于单核处理器速度提升的倍数,横轴是处理器核心的数量。可以看到4条曲线随着处理器核心数量的增加逐渐趋于平坦。

       现在的多核处理器还远远没到拥有1,000个核心的时候。然而未来的某一天,不管是软件还是硬件工程师们也许会满头大汗地向客户解释这个问题:为什么最新的1,000核处理器比旧的100核处理器快不了多少?

 

2、程序局部性原理

        程序的局部性原理:是指程序在执行时呈现出局部性规律,即在一段时间内,整个程序的执行仅限于程序中的某一部分。相应地,执行所访问的存储空间也局限于某个内存区域。局部性原理又表现为:时间局部性和空间局部性。时间局部性是指如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行;如果某数据被访问,则不久之后该数据可能再次被访问。空间局部性是指一旦程序访问了某个存储单元,则不久之后。其附近的存储单元也将被访问。

  另外,根据程序的局部性理论,Denning提出了工作集理论。所谓工作集是指进程运行时被频繁访问的页面集合。显然我们知道只要使程序的工作集全部集中在内存中,就可以大大减少进程的缺页次数;否则会使进程在运行过程中频繁出现缺页中断,从而出现频繁的页面调入/调出现象,造成系统性能的下降,甚至出现“抖动”。

  划分工作集可以按定长时间或定长页面两种方法进行划分。当颠簸现象发生时,说明系统的负荷过大,通常采用处理器均衡调度。另一种是控制缺页率,当缺页率达到上限时,则增加内存分配量;当缺页率达到下限时,就减少内存的分配量。

 

3、摩尔定律

       科技行业流传着很多关于比尔·盖茨的故事,其中一个是他和通用汽车公司老板之间的对话。盖茨说,如果汽车工业能够像计算机领域一样发展,那么今天,买一辆汽车只需要25美元,一升汽油能跑400公里。通用汽车老板反击盖茨的话我们暂且不论,这个故事至少说明计算机和整个IT行业的发展比传统工业要快得多。

 

  最早看到这个现象的是英特尔公司的创始人戈登·摩尔(Gordon Moore)博士。早在1965年,他就提出,在至多10年内,集成电路的集成度会每两年翻一番。后来,大家把这个周期缩短到18个月。现在,每18个月,计算机等IT产品的性能会翻一番;或者说相同性能的计算机等IT产品,每18个月价钱会降一半。虽然,这个发展速度令人难以置信,但几十年来IT行业的发展始终遵循着摩尔定律预测的速度。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值