【计算机组成与设计:软件、硬件接口(1)】计算机概要与技术

一:引言

1.1计算机的分类
相同点:使用了一套通用的硬件技术。
不同点:设计需求不同、硬件实现方式不同。

  1. 个人计算机: 单用户、低廉、使用第三方软件。

  2. 服务器: 借助网络访问、执行大负载任务、使用定制软件、强大的计算、存储和I/O能力、多用户并行运行。

  3. 超级计算机: 多台处理器组成、内存TB级、昂贵、高端科学和工程计算、高性能、服务器的分支。

  4. 嵌入式计算机: 数量最多、应用和性能广泛、运行单一的或一组相关的程序、通常和硬件集成在一起、成本功耗要求严格、故障敏感。

  5. 相关阅读: 存储级别表示、处理器核。

1.2后PC时代

  1. 个人移动设备PMD: 包括智能手机、平板电脑、电子眼镜等。使用电池供电、无线连接入网、价格低廉、触摸屏或语音等进行输入、下载APP等第三方软件。

  2. 云计算: 替代了传统的服务器、依赖于仓储规模计算机(WSC)的数据中心、通过云计算实现软件即服务(SaaS)、网络上提供服务器服务。

  3. 相关阅读: 软件即服务

二:8个伟大思想

1.面向摩尔定理的设计单芯片的集成度每18~24个月翻新。

2.使用抽象简化设计用来提高软硬件的生产效率、抽象表示不同设计层次,高层看不到低层细节。

3.加速大概率事件 远比优化小概率事件更能提高性能。

4.通过并行提高性能 (这年头就是打群架的时代)

5.通过流水线提高性能特别的并行场景(排队水桶传递灭火)

6.通过预测提高性能 错误预测代价不高时、预测准确率较高时。(胆大心细)

7.存储器层次 通过存储器层次解决供需矛盾。(好钢用到刀刃上)

8.通过冗余提高可靠性冗余部件可以替代失效部件并检测出错误。(备胎)

三: 程序概念入门

1.软件层次: 硬件–>系统软件–>应用软件(可以有多层)

2.系统软件: 包括操作系统、编译程序、编译程序、加载程序

2.1 操作系统 常见的Windows、Linux、IOS。用户程序和硬件之间的接口,提供各种服务和监控功能。处理输入输出服务、分配内存和外存、提供计算机资源共享服务。

2.2 编译程序 把高级语言翻译成机器语言。

3.从高级语言到机器语言 高级语言→汇编语言→机器语言。高级语言到汇编语言使用编译程序,汇编语言到机器语言使用汇编程序。
高级语言到机器语言

四:硬件概念入门

1.计算机的功能 输入、输出数据;处理数据;存储数据

2.计算机的组成部件 输入设备、输出设备、存储器、数据通路(运算器)、控制器。其中数据通路+控制器=处理器。无线网络既是输入设备,也是输出设备。

3.输入输出设备: 显示器、触摸屏、摄像头、麦克风、耳机插孔、扬声器、加速计、陀螺仪、Wi-Fi网络、蓝牙网络

4.数据通路: 完成算数运算

5.控制器: 指导数据通路、存储器、I/O设备。

6.处理器: 控制器+数据通路。称作中央处理单元(CPU)

7.内存: 程序运行时的存储空间,保存着程序运行时的数据。它由DRAM芯片组成,DRAM访问内存所需时间基本相同。

8.缓存: 在处理器内部使用,一般作为DRAM的缓冲,采用SRAM。

五: 处理器和存储器

1.集成电路IC: 由成千上万个晶体管组成的芯片。芯片的集成度稳定增长,DRAM的容量每三年增加4倍。

六:性能

1.性能的评价指标
响应时间:
又称执行时间,指一个任务完成所需要的时间(硬盘访问、内存访问、I/O访问、操作系统开销、CPU执行时间)

吞吐率:
又称带宽,指单位时间内完成任务的数量。

相互影响关系:
降低响应时间几乎都可以增加吞吐率;当任务很多时(任务需要排队),增加吞吐率也会降低响应时间。

2.相对性能
性能=1/执行时间
两台计算机性能比较:性能x/性能y=y执行时间/x执行时间=n
称作增加性能或者降低执行时间。

3.性能的度量
CPU时间:
执行某一任务在CPU上花费的时间。不包括I/O等时间。CPU时间=用户CPU时间+系统CPU时间
用户CPU时间:
程序本身花费的时间。
系统CPU时间:
执行某程序在系统上花费的时间。
系统性能:空载系统的响应时间。
CPU性能:用户CPU时间。
时钟周期:计算机一个时钟周期的时间,通常是处理器时钟。时钟频率是其倒数。
时钟长度:每个时钟周期持续的时间长度。
4.CPU性能及其因素
CPU时间=时钟周期数✖时钟周期=时钟周期数/时钟频率
5.指令的性能
CPU时钟周期数=指令数✖每条指令的平均周期数(CPI)
6.经典CPU性能公式
CPU时间=时钟周期✖CPI✖指令数
程序性能影响因素:

因素 结果
算法 指令数、可能的CPI
编程语言 指令数、CPI
编译程序 指令数、CPI
指令集 指令数、CPI时钟频率

七:功耗

CMOS技术的动态能耗:正比于负载电容✖电压^2
一个晶体管消耗的能耗:正比于1/2✖负载电容✖电压^2
每个晶体管消耗的功耗:正比于 能耗✖开关频率
开关频率:时钟频率的函数;
负载电容:连接到输出上的晶体管数量和工艺的函数。它决定了导线和晶体管的电容
目前功耗问题:电压继续下降导致晶体管泄漏电流过大。

八:单处理器→多处理器

1.目的: 单片微处理器中加入多个处理器,以期达到更大的吞吐率。

2.问题: 程序员需要重写程序以充分利用多处理器的优势,来改进响应时间。

3.显示并行程序编写的困难: 需要位用户或其他程序提供接口;每个核上有大致相同数量的任务;尽量减小调度开销。

九:Intel Core i7实例

测试计算机性能通常使用一组程序集构成的工作负载来评价计算机。目前一般使用SPEC CPU基准测试程序。

十:谬误与陷阱

1.陷阱:在改进计算机的某个方面时期望总性能的提高与改进大小成正比
Amdahl定律:
改进后的执行时间=受改进影响的执行时间/改进量+不受影响的执行时间

2.谬误:利用率低的计算机功耗低
Google仓储式计算机中,10%的工作负载却消耗了1/3的峰值功耗。

3.谬误:面向性能的设计和面向能量效率的设计具有不相关的目标。
能耗=功耗✖时间。所有优化的部分工作时能耗可能高了一些,但是运行时间缩短了。并且在运行一个程序时,其余的部分也在消耗能量。所以优化后总的功耗可能会下降

4.陷阱:用性能公式的子集去度量性能
例如使用MIPS来衡量性能。
MIPS=指令数/执行时间
我们无法用MIPS来比较不同指令集的计算机。同一个计算机上不同程序也会有不同的MIPS。一个新程序执行的指令数更多,但是每条指令执行的速度更快,则MIPS的变化与性能无关。

十一:参考书目

帕特森|亨尼斯. 计算机组成与设计 : 硬件/软件接口|RISC-V版|the hardware/software interface|RISC-V edition[M]. 北京 : 机械工业出版社, 2020

十二:个人注解

本文做为个人学习笔记,能力有限。若有遗漏或不准确的地方,希望能够得到各位的指正。

猜你喜欢

转载自blog.csdn.net/guerbuzhang/article/details/108415766