在这里插入图片描述

计算机概要和技术

引言

计算机的发展史:参考链接
现代计算机,按照应用来分,有如下的类型:

  • 个人计算机
  • 服务器
  • 超级计算机
  • 嵌入式计算机

后PC时代的概念:

  • 个人移动设备
  • 云计算

哪些因素会影响程序的性能?

  • 算法:决定了源码级语句的数量和I/O操作的数量
  • 编程语言、编译器和体系结构:决定了每条源码级语句对应的计算机指令数量
  • 处理器和存储系统:决定了指令的执行速度
  • I/O系统:决定了I/O 操作的执行速度

计算机系统结构中的8个伟大思想

  • 面向摩尔定律的设计
  • 使用抽象简化设计:如通过指令集体系结构实现底层硬件和软件之间的交互
  • 加速大概率事件:如动态分支预测、Cache缓存的设计、TLB的设计
  • 通过并行提高性能:如处理机流水线实现了指令间并行
  • 通过流水线提高性能
  • 通过预测提高性能
  • 存储器层次
  • 通过冗余提高可靠性

程序概念入门

程序根据层次的不同,可分为:

  • 应用软件
  • 系统软件(compiler,OS,etc)
  • 硬件
    在这里插入图片描述
    程序代码的级别:
  • 高级语言
  • 汇编语言
  • 机器语言

硬件概念入门

在这里插入图片描述
硬件要细说有很多,主要包括下面一些设备硬件:

  • 用户接口设备:显示器,键鼠
  • 存储设备:总体上可分为易失性存储器(内存,Cache)和非易失性存储器(硬盘,闪存,光盘)
  • 网络适配器

处理器和存储器制造技术

  • 容量和性能不断增加
  • 成本不断降低
    -在这里插入图片描述在这里插入图片描述

性能

注:不能简单以MIPS(Million Instructions Per Second)作为性能的度量指标。因为,并不是执行的指令数越多,就代表性能越高。

要定义性能,首先我们得先定义几个概念:

  • 响应时间(执行时间):计算机完成某任务所需的总时间
  • 吞吐率(带宽):单位时间内完成的任务数

有了上面的定义,我们就可以定义性能:

性能 = 1 / 执行时间 (在某种程度上,这相当于是吞吐率,即单位时间内执行的事务数)

所谓“计算机X比计算机Y快n倍”,指的是:
在这里插入图片描述
那么,执行时间是怎么度量的?答案是采用时钟周期(时钟频率)。
在这里插入图片描述
从上面这个式子,我们就可以看出,要先提高性能,要么就是减小CPU的时钟周期数,要么就是增大时钟频率。

结合指令而言,我们就还需要引入CPI这个重要概念,所谓CPI,全名是:clock cycle per instruction,表示执行每条指令所需要的时钟周期数的平均值。
在这里插入图片描述
我们回到最开始讲的影响程序性能的因素上来:

  • 算法:影响程序的指令数,可能影响CPI
  • 编程语言:影响程序的指令数和CPI
  • 编译程序:影响程序的指令数和CPI
  • 指令集体系结构:影响指令数、CPI和时钟频率

功耗墙

在这里插入图片描述
基于CMOS集成电路技术,每个晶体管的功耗可以按如下的公式进行计算:
在这里插入图片描述
而所谓功耗墙,可以理解为处理器消耗的最大功耗,当处理器功耗超过功耗墙设置时,处理器会自动降频。

从单处理器向多处理器转变

单处理器顶多就是实现程序并发执行,而真正的并行执行,则还需要依赖多处理器架构。现代计算机大多数都是多核的了,并行编程也成为了一项技术。
在这里插入图片描述
在这里插入图片描述

SPEC CPU 基准测试程序

这个程序是用于比较和测量计算机性能(主要指的是CPU,IO影响因素可以忽略)的程序

Amdahl定律

Amdahl定律阐述了一个事实:即使我们可以通过并行来提升程序的性能,但这种提升是有上限的,这意味着无论我们如何增大处理器数目,加速比是无法高于某个阈值。之所以会有这样的效果,就是因为程序并不是每一个部分都会受益于并行,有些东西是并行也无法加速的。但是这也启示我们,如果一个程序中可以并行执行的部分越大,那么该程序可以通过并行提升的空间就越大,反映了加速大概率事件的伟大设计思想。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐