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

Posted FrigidWinter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这些计算机领域的重要定律你都清楚吗?相关的知识,希望对你有一定的参考价值。

0 写在前面

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

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 ai,每个单项可提速 k i k_i ki倍(对于不可提速的组件,其 k i = 1 k_i=1 ki=1),则整个系统的加速比为:
S = 1 ∑ i a i k i S=\\frac1\\sum_i\\fraca_ik_i S=ikiai1

例2.1 根据SPEC CPU2000标准,其包含25% loads、10% stores、11% branches、2% jumps、52% R-type。现对该CPU进行优化,优化前后见例表,问:
(1) CPU优化后的整体提速比为多少;
(2) 优化后的平均CPI为多少。

指令优化前耗时/时钟周期数优化后耗时/时钟周期数
beq, j53
R-Type, sw, addi54
lw55

(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=\\frac1\\sum_i\\fraca_ik_i=\\frac1\\left( \\frac25\\%\\frac55+\\frac10\\%\\frac54+\\frac11\\%\\frac53+\\frac2\\%\\frac53+\\frac52\\%\\frac54 \\right)=1.21359 S=ikiai1=(5525%+4510%+3511%+352%+4552%)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 软硬件互易性原理

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


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

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

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

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

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

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

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

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

4 抽象与3Y原则

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

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

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


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


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

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

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

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

5 局部性原理

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

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

以上是关于这些计算机领域的重要定律你都清楚吗?的主要内容,如果未能解决你的问题,请参考以下文章

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

Java 的几把 JVM 级锁,你都搞懂了吗?

世界著名的十大定律,你都知道吗

世界著名的十大定律,你都知道吗

世界著名的十大定律,你都知道吗

浏览器缓存的这些知识点你都清楚吗?