计算机组成原理

基本原理

冯诺依曼机的特点

  • 计算机由运算器、存储器、控制器、输入设备、输出设备组成
  • 指令和数据以同等的地位存放于存储器内,并可按地址寻访。
  • 指令和数据均用二进制数表示,形式上无差别
  • 指令由操作码和地址码组成
  • 指令在存储器内按顺序存放
  • 机器以运算算器为中心

易混淆

指令字长:一个指令字中包含的二进制代码的位数

存储字长:一个存储单元存储的二进制代码的长度

机器字长:计算机能直接处理的二进制数据的位数

三者都是字节的整数倍

if 指令字长+2*存储字长 需要两次访存取一条指令

此时取值周期 为 机器周期的2倍

CPU区分指令和地址的依据:指令周期的不同阶段

MAR用于寻址,位数对应于存储单元的个数,等于地址码长度

MDR位数和存储字长相等

IR、MAR、MDR对程序员均不可见

n位的计算机用m位来表示,机器字长为n位,一次可以处理n位的数据,m为地址码的长度。

相联存储器既可按地址寻址又可按内容寻址


计算机的运算过程

  1. 预处理阶段
  2. 编译阶段
  3. 汇编阶段
  4. 链接阶段

指令执行的过程

取指令过程

  1. 取指令 PC–>MAR–>M–>IR
  2. 分析指令 OP(IR)–>CU
  3. 执行指令 Ad(IR)–>MAR–>M–>MDR–>ACC

计算机系统的多级层次结构

  1. 微程序机器M0(微指令系统) 微程序机器层
  2. 传统机器(用机器语言的机器)M1
  3. 虚拟机器(操作系统)M2
  4. 虚拟机器M3(汇编语言机器)
  5. 虚拟机器M4(高级语言机器)

计算机性能指标

机器字长

计算机进行一次整数运算所能处理的二进制数据的位数。

CPU的寄存器位数、加法器有关

机器字长=内部寄存器的大小,通常为字节的整数倍

与机器字长相同的部件

机器字长=CPU内部用于整数运算的运算器位数和通用寄存器宽度

ALU、通用寄存器

数据通路带宽

数据总线一次所能并行传送信息的位数。

数据通路宽度=外部总线的宽度

主存容量

主存储器所能存储信息的最大容量,单位:B,也可用字数*字长表示

MAR的位数反应存储单元的个数

运算速度

吞吐量

系统在单位时间内处理请求的数量。取决于主存的存取周期

响应时间

用户向计算机发出一个请求到系统对该请求做出响应并获得结果的时间。

CPU时间(运行一个程序所花费的时间)+等待时间(磁盘访问、存储器访问、IO操作、操作系统开销等)

CPU时钟周期

节拍脉冲或T周期,主频的倒数

CPU中最小的单位

主频

1Hz表示每秒一次

CPI

执行一条指令所需的时钟周期数。

CPU执行时间

CPU执行时间=CPU时钟周期/主频=(指令条数*CPI)/主频

MIPS

每秒执行多少万条指令

MIPS=指令条数/(执行时间* 10^6)=主频/(CPI * 10^6)

MFLOPS、GFLOPS、PFLOPS、ZFLOPS

M:百万次

G:十亿次

T:万亿次

基准程序

专门用来评价性能的一组程序

专业术语

系列机

具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机

兼容

软件可移植性

固件

固定在ROM中的部件

校验码

奇偶校验码

可检测出一(或奇数)位错误,但不能确定出错的位置,也不能检测出偶数位错误。

奇校验码:整过校验码中“1”的个数为奇数,偶校验相反。

海明码

海明码的位数

n为有效信息的位数,k为校验位的位数

n+k<=(2^k)-1

确定校验位的分布

规定校验位分布在海明号为2^(i-1)的位置(1、2、4、8….)

分组形成校验关系

校验位取值

海明码的校验原理

CRC循环冗余码

定点数

定点小数的范围:-(1-2^(-n))~1-2^(-n)

定点整数的范围:-(2^n -1)~2^n -1

若字长为n+1,

原码小数的范围:-(1-2^(-n))~1-2^(-n)

原码整数的范围:-(2^n -1)~2^n -1

补码小数的范围:-1~1-2^(-n)

补码整数的范围:-2^n~2^n -1

反码小数的范围:-(1-2^(-n))~1-2^(-n)

反码整数的范围:-(2^n -1)~2n -1

补位规则

算数移位

image-20210322203746474

逻辑移位

逻辑移位将操作数视为无符号数

移位规则:逻辑左移时,高位移丢,低位添0;逻辑右移时,低位移丢,高位添0。

循环移位

循环移位分为带进位标志位CF的循环移位(大循环)和不带进位标志位的循环移位(小循环)。

溢出判断

采用一符号位

两个相同符号的数运算,结果符号相反,则溢出

采用双符号位

模4补码

运算结果的两个符号位相同:未溢出

运算结果的两个符号位不同:溢出

00:结果为正数,未溢出

01:正溢出

10:负溢出

11:结果为负数,未溢出

采用一位符号位根据数据位的进位情况判断

符号位与数据位最高位相同:未溢出,否则溢出

大端存储 和 小端存储

大端存储

0800H 0801H 0802H 0803H
…… 01H 23H 45H 67H ……

小端存储

0800H 0801H 0802H 0803H
…… 67H 45H 23H 01H ……

边界对齐

image-20210322210605115

浮点数

N=r^E *M

r:浮点数阶码的底

E:阶码

M:尾数

规格化

原码规格化后的范围:1/2~(1-2^(-n))

原码规格化后的范围:-(1-2^(-n))~-1/2