计算机原理
本笔记记录来源于MOOC国防科技大学的《计算机原理》课程
一、计算机抽象和技术
1.1计算机系统概述
计算、实验和理论是我们科学研究的三大方法,利用计算机实验,我们可以再现、预测和发现客观世界的运动规律和演化特性的全过程。成功的程序员重视关系其所写的程序性能如何,在上世纪六七十年代,计算机性能受制于内存容量,因此程序员要尽可能用内存提高程序的执行速度,而现在,程序员需要理解的是存储的层次化特性和处理器的并行化特点。
决定程序性能的主要因素有程序中使用的算法、创建程序并翻译成机器指令的软件、计算机各部件的执行效率。其中,算法决定源程序语句数量及执行I/O操作数量,程序语言、编译器和体系结构决定每条源程序语句所对应的机器指令,处理起、存储系统决定指令的执行速度,I/O设备决定I/O的执行速度。
1.2程序的表象之下
马克吐温说:在巴黎,我对当地人讲法语,他们只是瞪着我看,我从来没能让这些白痴理解他们的语言。那么,我们要对计算机说什么语言,它才能听得懂呢?
首先我们知道,计算机大致可以分为硬件层、系统层和应用层,层与层之间以一种抽象的方式进行联系——隐藏低层层次的实现细节,简化各层上用户的使用(每一层都为上一层隐藏了自己的技术细节——抽象)。
从程序到电子信号
计算机内部工作过程可以简化为逐条执行加载到内存中的二进制及其指令流的过程。
一条指令的执行过程可简单地分为两个操作阶段:取指阶段和执行阶段,在取指阶段,CPU从内存中读取指令,程序计数器(PC寄存器)保存要被取出的吓一跳指令的地址,除非遇到跳转指令(jmp)等情况,否则,PC一般都是在每次取值后加上一个增量(当前指令的字节数);在执行阶段,对取出的指令先进行译码,解释指令的功能,然后执行译码好的指令,这期间可能会读写存储器或端口来获得操作数或者存放结果。程序的执行过程便是周期性、重复性地进行取指令和执行指令两个操作。
1.3打开计算机的机箱
存储程序原理
冯诺依曼第一次书面提出了存储程序原理和存储程序数字计算机,即将事先设计好,用以描述计算机解题过程的程序如同数据一样,也采用二进制形式存储在机器中,计算机工作时自动高速从机器中逐条取出指令加以执行。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3I66Ovc0-1613305134204)(C:\Users\renju\AppData\Roaming\Typora\typora-user-images\image-20210213114751986.png)]
-
功能部件1——处理器(CPU - Central Processing Unit)
- 功能:执行程序(execute programs)
- 组成:Control Unit + Data Path
- CU(控制单元):对指令进行译码,产生控制信号
- Data Path(数据通路):完成指令的执行
- 核心:ALU(Arithmetic Logic Unit)+ Register(寄存器)
- ALU用来执行算数、逻辑运算
- 寄存器用来存储临时的数据或控制信息,例如:PC、IR等
-
功能部件2——存储器
- 功能:存储程序和数据
- 组成(层次化结构Hierarchies)
- 内存(Primary memory):Cache+Main memory(MM)
- Cache(高速缓存):存放最近使用的数据和指令
- 主存:存放被启动的程序中的部分数据和指令
- 外存:磁盘、固态盘、光盘、磁带
- 磁盘、固态盘:存放系统中所有软件和文档
- 光盘、磁带:脱机存档
- 内存(Primary memory):Cache+Main memory(MM)
-
功能部件3——输入、输出设备
- 功能:各种信息的输入/输出
- 组成:I/O Controller + I/O Device
- I/O控制器:控制外设工作,完成主机与外设之间的通信
- I/O设备:输入/输出信息
1.4 计算机性能评价
衡量计算机性能的基本指标有响应时间(单位任务):执行时间、等待时间,吞吐量、带宽、指令执行速度、功耗和制作成本。
性 能 = 1 / 执 行 时 间 x 性能 = 1 / 执行时间x 性能=1/执行时间x
比较计算机性能时,可以用响应(运行)时间来衡量,用户所感受到的是系统响应时间,其包括CPU执行时间和其他时间,CPU执行时间是CPU真正花费在程序执行上的时间,如用户CPU时间(用来运行用户代码的时间)和系统CPU时间(为执行用户程序而需运行一些操作系统代码的时间),其他时间则是等待I/O操作完成或CPU花在其他用户程序的时间。
我们要知道,计算机系统性能不等于CPU性能,系统性能是系统响应时间,CPU性能表示用户CPU时间即CPU真正用于用户程序执行上的时间。
CPU执行时间
CPU执行时间的计算
一个程序的CPU执行时间 = 执行一个程序需要的(计算机)基本时间单元的数量 × 基本事件单元
时钟周期:所有计算机都有一个固定频率的硬件时钟,决定各种硬件事件发生和执行的时间和顺序。
时钟频率:时钟周期的倒数
1 s = 1 0 3 m s = 1 0 6 μ s = 1 0 9 n s = 1 0 12 p s = 1 0 15 f s 1s = 10^3ms = 10^6μs = 10^9ns = 10^{12}ps = 10^{15}fs 1s=10