计算机组成原理笔记
一、计算机系统概述
1.1 计算机发展历程(了解)
- 第一代计算机 – 电子管时代
- 第二代计算机 – 晶体管时代
- 第三代计算机 – 中小规模集成电路时代
- 第四代计算机 – 超大规模集成电路时代
摩尔定律:价格不变时,每隔18个月,性能将提升一倍
1.2 计算机系统层次
冯·诺依曼机的特点:
- 采用存储程序的工作方式
- 计算机硬件由运算器、控制器、存储器、输入设备和输出设备组成
- 指令和数据以同等地位存放在存储器中
- 指令和数据均匀二进制代码表示
存储程序:将事先编好的程序和原始数据送入主存后才能执行,一旦程序被启动执行,就无需操作人员的干预,计算机自动逐条执行指令,直至程序执行结束
计算机的功能部件:
- 输入设备:将程序和数据以机器所能识别和接收的信息形式输入计算机
- 输出设备:将计算机处理结果以人类所能接受的形式输出
- 存储器:分为主存储器和辅助存储器,CPU直接访问主存储器,辅助存储器的信息必须调入主存后才能被CPU访问
- 运算器:计算机的执行部件,进行算数运算和逻辑运算
算术运算:加减乘除等
逻辑运算:与或非,比较,移位等
- 控制器:计算机的指挥中心,指挥各部件协调的工作,由PC、IR、CU组成
软件分为系统软件和应用软件
系统软件时保证计算机系统高效、正确运行的基础软件,通常作为系统资源提供给用户使用。主要包括操作系统(OS),数据库管理系统(DBMS)、语言处理程序、分布式系统软件、网络软件系统、标准库程序、服务性程序等
应用软件时指用户为解决应用领域中的各类问题而编制的程序
三级语言
- 机器语言:二进制代码语言,是计算机唯一可以直接识别和执行的语言
- 汇编语言: 汇编语言用英文单词或其缩写代替二进制的指令代码
- 高级语言:为方便设计人员写出解决问题的处理方案和解题过程的语言,例如C,C++,JAVA等
翻译程序有三类
- 汇编程序:将汇编语言程序翻译成机器语言程序
- 解释程序:将原程序中的语句按执行顺序逐条翻译成机器指令并立即执行
- 编译程序:将高级语言翻译成汇编语言或机器语言
计算机系统的结构层次
- 第1级是微程序机器层,这是一个实在的硬件层,它由机器硬件直接执行微指令,也叫M0层
- 第2级是传统机器语言层,它也是一个实际的机器层,由微程序解释机器指令系统
- 第3级是操作系统层,它由操作系统程序实现。操作系统程序是由机器指令和广义指令组成的,这些广义指令是为了扩展机器功能而设置的,是由操作系统定义和解释的软件指令,所以这一层也称混合层
- 第4级是汇编语言层,它为用户提供一种符号化的语言,借此可编写汇编语言源程序。这一层由汇编程序支持和执行
- 第5级是高级语言层,它是面向用户的,是为方便用户编写应用程序而设置的。该层由各种高级语言编译程序支持和执行
- 在高级语言层之上,还可以有应用程序层,它由解决实际问题和应用问题的处理程序组成,如文字处理软件、数据库软件、多媒体处理软件和办公自动化软件等
没有软件的纯硬件系统叫做裸机,第3-5层称为虚拟机。本课程主要讨论M0层和M1层
计算机的工作原理:(先了解,后面会详细介绍)
“存储程序” 工作方式规定,程序执行前,需要将程序所含的指令和数据送入主存,一旦程序被启动执行,就无须操作人员的干预,自动逐条完成指令的取出和执行任务。一个程序的执行就是周而复始地执行一条一条指令的过程。每条指令的执行过程包括:从主存取指令、对指令进行译码、计算下条指令地址、取操作数并执行、将结果送回存储器
各部件的功能:
- 程序计数器(PC) 用来存放当前欲执行指令的地址,可以自动加1以形成下一条指令的地址,它与主存的MAR之间有一条直接通路
- 地址寄存器(MAR)存放访存地址,经过译码后找到所选的存储单元
- 数据寄存器(MDR)暂存要从存储器中读或写的信息
- 指令寄存器(IR)用来存放当前的指令,其内容来自主存的 MDR。指令中的操作码OP(IR)送至CU,用以分析指令并发出各种微操作命令序列;而地址码Ad(IR)送往MAR,用以取操作数
一个hello.c源程序文件翻译成hello可执行文件的过程:
一条指令执行的具体过程述(以取数指令(送至运算器的ACC中)为例来说明):
- 取指令:PC→MAR→M→MDR→IR
根据PC取指令到IR。将PC的内容送MAR,MAR中的内容直接送地址线,同时控制器将读信号送读/写信号线,主存根据地址线上的地址和读信号,从指定存储单元读出指令,送到数据线上,MDR从数据线接收指令信息,并传送到IR中 - 分析指令:OP(IR)→CU
指令译码并送出控制信号。控制器根据IR中指令的操作码,生成相应的控制信号,送到不同的执行部件。在本例中,R中是取数指令,因此读控制信号被送到总线的控制线上 - 执行指令:Ad(IR)→MAR→M→MDR→ACC
取数操作。将IR中指令的地址码送MAR,MAR中的内容送地址线,同时控制器将读信号送读/写信号线,从主存中读出操作数,并通过数据线送至 MDR,再传送到ACC中
每取完一条指令,还须为取下条指令做准备,计算下条指令的地址,即(PC)+1 → PC
1.3 计算机的性能指标
- 字长:计算机进行一次整数运算所能处理的二进制数据的位数。字长一般等于内部寄存器的大小,字长越长,数据表示范围越大越精确
- 数据通路带宽:指数据总线一次所能并行传送信息的位数
- 主存容量:主存储器所能存储信息的最大容量,通常以字节来衡量
- 运算速度
- 吞吐量:指系统在单位时间内处理请求的数量
- 响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果的等待时间。通常包括CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、IO操作、操作系统开销等的时间)
- CPU时钟周期。通常为节拍脉冲或T周期,即主频的倒数,它是CPU中最小的时间单位,执行指令的每个动作至少需要1个时钟周期
- 主频:机器内部主时钟的频率,是衡量机器速度的重要参数。对于同一个型号的计算机,其主频越高,完成指令的一个执行步骤所用的时间越短,执行指令的速度越快
- CPI (Clock cycle Per Instruction),即执行一条指令所需的时钟周期数
- CPU执行时间(运行一个程序的时间)= CPU时钟周期数 / 主频 = (指令条数×CPI)/主频。上式表明,CPU 的性能(CPU执行时间)取决于三个要素:
①主频(时钟频率);
②每条指令执行所用的时钟周期数(CPI):
③指令条数。 - MIPS:每秒执行几百万条指令
- MFLOPS:每秒执行多少百万次浮点运算
- GFLOPS:每秒执行多少十亿次浮点运算
- TFLOPS:每秒执行多少万亿次浮点运算
- PFLOPS、EFLOPS、ZFLOPS…
基准程序:专门用来进行性能评价的一组程序,能够很好地反映机器在运行实际负载时的性能,可以通过在不同机器上运行相同的基准程序来比较在不同机器上的运行时间,从而评测其性能。
系列机:具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列
兼容:指软件或硬件的通用性,即运行在某个型号的计算机系统中的硬件/软件也能应用于另一个型号的计算机系统时,称这两台计算机在硬件或软件上存在兼容性
软件可移植性:指把使用在某个系列计算机中的软件直接或进行很少的修改就能运行在另一个系列的计算机中的可能性
固件:将程序固化在 ROM 中组成的部件称为固件