这些计算机领域的重要定律你都清楚吗?
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, 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=\\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、Intel 80486和AMD Athlon等都是x86体系结构的三种不同的微结构实现。
除抽象外,设计者还使用三条准则来处理系统复杂性,这些原则对软硬件设计都通用。
①层次化:将系统划分为若干模块,然后更进一步划分每个模块直到这些模块可以很容易理解;
②模块化:所有模块有定义好的功能和接口,以便它们之间可以很容易地相互连接而不会产生意想不到的副作用;
③规整化:在模块之间寻求一致,通用模块可以重复使用多次,以便减少设计不同模块的数量。
5 局部性原理
时间局部性原理:当CPU访问一个存储位置时,大概率在不久的将来会再次访问同一位置。程序的循环结构和过程调用体现了时间局部性。
空间局部性原理:当CPU访问一个存储位置时,大概率在不久的将来会访问该位置附近的存储单元,因为计算机中的数据通常被连续存放于内存。程序的顺序结构体现了空间局部性。
以上是关于这些计算机领域的重要定律你都清楚吗?的主要内容,如果未能解决你的问题,请参考以下文章