这些计算机领域的重要定律你都清楚吗?

简介: 这些计算机领域的重要定律你都清楚吗?

0 写在前面

🔥接触人工智能领域,除了要理性地学习各种算法,还要对行业内的基本发展历程和规律有感性的认识和了解,才能对领域有更深刻的理解(和外行科普也有得聊),本文主要罗列计算机领域的几条重要定律。

image.png

1 摩尔定律(Moore’s Law)

Moore’s Law指IT产业的硬件或设备生产商的技术每十八个月翻一番,或者说相关技术涉及的产品每十八个月价格下降一半。与之对应,Reverse Moore’s Law指一个IT公司如果今天和十八个月前卖掉同样多的、同样的产品,它的营业额就要降一半。


Moore’s Law& Reverse Moore’s Law告知所有IT行业:发展速度必须至少与摩尔定律的预测速度持平,否则整个企业就会面临亏损。这也使得IT行业与石油工业、飞机制造业等量变工业不同,IT行业必须在预测周期内寻求革命性和创新性的技术突破,否则优胜劣汰。因此两大定律促成了IT行业科技的不断进步,也避免了垄断的产生,为新兴企业的生存和发展提供了可能。


Moore’s Law& Reverse Moore’s Law是整个人类社会发展速度在IT行业的反映,是指导公司和科研机构制定研究计划和市场策略的重要指导。


目前Moore’s Law& Reverse Moore’s Law仍然有效,考虑如果其预测周期放缓或是失效,那么将对所有依赖于更高级芯片的行业(如AI行业)的发展换代都造成空前影响

2 阿姆达尔定律(Amdahl’s Law)

Amdahl’s Law指出:系统中对某一部件采用更快执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频率,或所占总执行时间的比例。


若系统由若干个单项组成,每项占比 a i a_i a

i


,每个单项可提速 k i k_i k

i


倍(对于不可提速的组件,其 k i = 1 k_i=1 k

i


=1),则整个系统的加速比为:

S = 1 ∑ i a i k i S=\frac{1}{\sum_i{\frac{a_i}{k_i}}}

S=

i


 

k

i


a

i



1



例2.1 根据SPEC CPU2000标准,其包含25% loads、10% stores、11% branches、2% jumps、52% R-type。现对该CPU进行优化,优化前后见例表,问:

(1) CPU优化后的整体提速比为多少;

(2) 优化后的平均CPI为多少。


指令 优化前耗时/时钟周期数 优化后耗时/时钟周期数

beq, j 5 3

R-Type, sw, addi 5 4

lw 5 5

(1) 由Amdahl’s Law知,提速比为:

S = 1 ∑ i a i k i = 1 ( 25 % 5 5 + 10 % 5 4 + 11 % 5 3 + 2 % 5 3 + 52 % 5 4 ) = 1.21359 S=\frac{1}{\sum_i{\frac{a_i}{k_i}}}=\frac{1}{\left( \frac{25\%}{\frac{5}{5}}+\frac{10\%}{\frac{5}{4}}+\frac{11\%}{\frac{5}{3}}+\frac{2\%}{\frac{5}{3}}+\frac{52\%}{\frac{5}{4}} \right)}=1.21359

S=

i


 

k

i


a

i



1


=

(

5

5


25%


+

4

5


10%


+

3

5


11%


+

3

5


2%


+

4

5


52%


)

1


=1.21359


(2) 平均CPI为:

A v r C P I = ( 11 % + 2 % ) × 3 + ( 52 % + 10 % ) × 4 + 25 % × 5 = 4.12 AvrCPI=\left( 11\%+2\% \right) \times 3+\left( 52\%+10\% \right) \times 4+25\%\times 5=4.12

AvrCPI=(11%+2%)×3+(52%+10%)×4+25%×5=4.12

3 软硬件互易性原理

软硬件互易性原理又称为软硬件逻辑功能等效性,是指计算机系统的某功能可以由硬件实现也可以由软件实现。


image.png

如图所示,对任何一个真实的、技术可实现的计算机系统,都需要有最基础的一薄层硬件来实现,这一最基础的硬件实现了图灵机模型的要求。图灵机等价硬件之上大部分都是各种硬件加速手段。图中说明了软硬件之间的关系:


(1) 硬件和软件互相依存


硬件是软件赖以工作的物质基础(图灵机等价硬件部分),软件的正常工作是硬件充分发挥作用的唯一途径。


(2) 硬件和软件无严格界线


随着计算机技术的发展,在许多情况下计算机的某些功能既可以由硬件实现,也可以由软件来实现。硬件就是数字逻辑电路的组合,软件通过编译成机器代码即0-1电平序列作为硬件的输入,使硬件实现特定的功能,而这个过程也可以不借助软件而直接通过数字电路实现。因此,硬件与软件在一定意义上说没有绝对严格的界面,是逻辑等效的。例如MP3既可以用软件的播放器播放,也可用专用的音频解码芯片解码实现播放。


(3) 硬件和软件协同发展


计算机软件随硬件技术的迅速发展而发展,而软件的不断发展与完善又促进硬件的更新,两者密切地交织发展,缺一不可。


对一个具体的计算机系统而言,软硬件的分割线在哪里,主要取决于性能和成本之间的折衷。由于软件实现功能需要经过编译,因此使用软件比硬件效率低,但随着技术发展,软件完全可以通过固化为硬件(如实现特定功能的芯片)来提升系统的性能,这样避免了编译环节,使硬件电路可以直接读取指令。因此如果要求高性能,那么硬件加速的部件可以多些,相应成本也不可避免会增加;如果要求低成本,那么图中曲线可以下移,即用软件完成大部分处理,但性能会有所下降。

4 抽象与3Y原则

下图给出了一个电子计算机系统的抽象层次,其中每个层次都列举了典型模块。抽象的意义在于便于不同类型的用户,对计算机进行使用和开发。例如普通用户可以通过计算机上网,而不用考虑电子波动;硬件工程师不用关注应用软件设计等。


image.png

最底层的抽象是物理层——电子运动:电子的行为由量子力学和麦克斯韦方程描述;基于电子运动的物理规律,组成晶体管真空管等电子器件,这些器件都有明确定义的称为端子的外部连接点,可以建立每个端子上的电压电流关系模型。


image.png

模拟电路抽象层由器件组成的放大器等组件构成;数字电路则将电压控制在离散的范围内,以便表示0-1二值;通过逻辑门等数字电路可以进行逻辑功能设计,构造更复杂的功能结构,例如加法器或存储器。


image.png

体系结构层描述了程序员观点的计算机抽象,其定义了一套指令系统和寄存器,程序员可以使用这些指令和寄存器;微体系结构将逻辑层的元素组合在一起实现体系结构中定义的指令,其是逻辑和体系结构的沟通桥梁。另外,一个特定的体系结构可以有不同的微结构实现方式,以便取得在价格、性能和功耗等方面的不同折中。例如Intel Core i7、In­tel 80486和AMD Athlon等都是x86体系结构的三种不同的微结构实现。


image.png

除抽象外,设计者还使用三条准则来处理系统复杂性,这些原则对软硬件设计都通用。


①层次化:将系统划分为若干模块,然后更进一步划分每个模块直到这些模块可以很容易理解;


②模块化:所有模块有定义好的功能和接口,以便它们之间可以很容易地相互连接而不会产生意想不到的副作用;


③规整化:在模块之间寻求一致,通用模块可以重复使用多次,以便减少设计不同模块的数量。

5 局部性原理

时间局部性原理:当CPU访问一个存储位置时,大概率在不久的将来会再次访问同一位置。程序的循环结构和过程调用体现了时间局部性。


空间局部性原理:当CPU访问一个存储位置时,大概率在不久的将来会访问该位置附近的存储单元,因为计算机中的数据通常被连续存放于内存。程序的顺序结构体现了空间局部性。



目录
相关文章
|
27天前
|
敏捷开发 Devops 持续交付
康威定律
康威定律
14 1
|
29天前
荷花定律
荷花定律
8 0
|
9月前
Amdahl定律(阿姆达尔定律)
Amdahl定律(阿姆达尔定律)
|
7月前
基尔霍夫定律
基尔霍夫定律(Kirchhoff's laws)是电路理论中的两个基本定律,分别是基尔霍夫电流定律和基尔霍夫电压定律。这两个定律是分析和解决电路中电流和电压分布的基础。
59 0
|
8月前
|
自动驾驶 机器人 流计算
什么是计算机领域的实时系统
什么是计算机领域的实时系统
53 0
|
机器学习/深度学习 人工智能 算法
量子力学、波函数与量子计算:揭开宇宙微观奥秘的神奇之门
量子力学、波函数与量子计算:揭开宇宙微观奥秘的神奇之门
130 0
|
量子技术
整个宇宙就是一台巨型量子计算机!俄新研究颠覆宇宙学理论
俄罗斯康德大学(IKBFU)的物理学家最近提出了关于宇宙的全新观点。他们认为,我们实际上生活在巨大的量子计算机仿真世界中,并将这个观点与许多令人难以置信的“多重世界”理论结合在了一起。文章提出,实质上整个宇宙可能都是无数个宇宙组成的大型量子系统的一部分。
1935 0
整个宇宙就是一台巨型量子计算机!俄新研究颠覆宇宙学理论
计算机科学三大定律和网络三大定律
计算机科学三大定律和网络三大定律,了解一下。
4172 0
|
人工智能 程序员 量子技术