加载中...
加载中...
计算机组成原理复习(1-2章)

计算机组成原理复习(1-2章) 原创

计算机组成原理复习

中国大学MOOC中华中科技大学秦磊华教授的《计算机组成原理》慕课  

地址:http://www.icourse163.org/course/HUST-1003159001  

参考书  计算机组成原理 第5版


第一章 计算机系统概论  

1.1 冯·诺依曼结构计算机工作原理及层次结构分析

冯·诺依曼,因提出“离散变量自动电子计算机方案”-EDVAC (Electronic Discrete Variable Automatic Computer ) ,被称为 “计算机之父”,该方案至今仍为计算机设计者所遵循;

是20世纪最重要的数学家之一,因其在现代计算机、博弈论等领域的重大贡献成为美国科学院院士。


冯·诺依曼计算机的工作原理

存储程序:将程序存放在计算机的存储器中;

(存储系统构建与快速访问 )

程序控制按指令地址访问存储器并取出指令,经译码依次产生指令执行所需的控制信号,实现对计算的控制,完成指令的功能。

(指令系统、控制器设计等) 


冯诺依曼型计算机的主要设计思想是:

1、数字计算机的数制采用二进制;
2、计算机应该按照程序顺序执行。


具体内容是:
1.计算机由控制器、运算器、存储器、输入设备、输出设备五大部分组成。
2.程序和数据以二进制代码形式存放在存储器中,存放位置由地址确定。
3.控制器根据存放在存储器中地指令序列(程序)进行工作,并由一个程序计数器控制指令地执行。控制器具有判断能力,能根据计算结果选择不同的工作流程。


根据冯诺依曼体系结构构成的计算机,必须具有如下功能:
1、把需要的程序和数据送至计算机中。
2、必须具有长期记忆程序、数据、中间结果及最终运算结果的能力。
3、能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力。
4、能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作。
5、能够按照要求将处理结果输出给用户。
为了完成上述的功能,计算机必须具备五大基本组成部件,包括:
1、输入数据和程序的输入设备;
2、记忆程序和数据的存储器;
3、完成数据加工处理的运算器;
4、控制程序执行的控制器;
5、输出处理结果的输出设备 。



冯·诺依曼计算机的组成(硬件+ 软件)

1)硬件系统(总体图)


1)硬件系统 - 运算器


算术运算
加、减、乘、除法等

逻辑运算
与、或、非、移位等

基本结构
ALU(Arithmetic Logical Unit) 、寄存器、连接通路


注重功能与结构的关系?
-- 指令、数据类型、性能要求等等


1)硬件系统 - 控制器


基本功能
产生指令执行过程所需要的所有控制信号,控制相关功能部件执行相应操作;

控制信号的产生方式
微程序、
硬布线。

控制信号的形式
电平信号、
脉冲信号;


产生控制信号的
依据
指令、状态、
时序;


1)硬件系统 - 存储器


功能
存储原程序、
原数据、运算
中间结果


工作模式
读/写;


工作原理
按地址访问,
读/写数据。


容量与地址线数量  

容量 →  地址线数量
1K → 10
1M → 20
1G → 30

--------------------

一根地址线是1和0两种状态,可以表示2个地址0和1。2根呢就是00,01,10,11,四种状态,可以用来表示4个地址。n根线,就可以有2的n次方种状态,可以表示2的n次方个地址。

一根地址总线寻址为2^1=2,10根地址总线就是2^10=1024Byte=1KB,13根就是2^13=8KB。N根就是2^N。

1KB=1024B,8KB=1024B*8=2^N,N=13

--------------------  

1KB=2^10B 需要10根地址总线
1MB =2^10KB = 2^10*2^10B =2^20B 需要20根地址总线
1GB=2^10MB=2^10*2^10*2^10B  =2^30B 需要30根地址总线
2GB=2 *2^3B=2^31b需要31根地址总线  

256GB=2^8 * 2^30B = 2^38B 

-------------------

1024Byte(字节)=1KB

1024kB=1MB

1024MB=1GB

1024=2^10

--------------------  

1)硬件系统 -输入/输出设备


输入设备
向计算机输入数据(键盘、鼠标、网卡、扫描仪等)

输出设备
输出处理结果(显示器、声卡、网卡、打印机等)


2) 软件系统

软件的理解

可运行的思想和内容的数字化
思想:算法、规律、方法---程序表达
内容:图形、图像、数据、声音、文字等被处理的对象
⚫软件的表现形式: 程序和数据(以二进制表示的信息)
⚫软件的核心: 算法


3) 硬件与软件系统间的关系

相互依存
硬件是软件运行的基础,软件的正常运行是硬件发挥作用的重要途径。计算机系统必须要配备完善的软件系统才能正常工作,且应充分发挥其硬件的功能;

逻辑等效性
某些功能既可由硬件实现,也可由软件来实现;

协同发展
软件随硬件技术的迅速发展而发展,而软件的不断发展与完善又促进硬件的更新,两者密切地交织发展,缺一不可 。


应用程序
高级语言 (e.g., C)
汇编语言 (e.g., MIPS)
操作系统
指令集架构层 (e.g., MIPS)
微代码层
Compiler(翻译)
硬件逻辑层


1.2计算机的性能指标P5

非时间指标

1、机器字长:志及其一次性能处理的二进制位数;

ALU算术逻辑单元(arithmetic and logic unit) 是能实现多组算术运算和逻辑运算的组合逻辑电路,简称ALU。   

2、总线宽度:总线一次能并行传送的最大信息位数;

 一般指运算器与存储器之间的数据总线位数。

有些计算机内部与尾部数据总线宽度不一致;

Pentium外总线64位,内总线32位(两条32位流水线)

3、主存容量与存储带宽

主存容量:是指一台计算机主存所包含的存储丹云总数。

存储带宽:指单位时间内与主存交换的二进制信息量,常用B/s(字节/秒)。(影响存储带宽的指标包括数据位宽和数据传输速率)。


时间指标

1、主频f/时钟周期T,外频、倍频

主频f

指CPU内核工作的始终频率,即CPU内数字脉冲信号震荡的速率,与CPU实际的运算能力不是唯一的、直接关系。


时钟周期T,也称节拍周期,是计算机中最基本的最小的时间单位。在一个时间周期内,CPU 仅完成一个最基本的动作。 

 

f与T的关系

互为倒数,f越高,T就越小(f=100MHz时,T=10ns;  f=1GHz时,T=1ns)

频率的倒数即是周期,即1/HZ=1s;
100MHz=100 * 10^6 Hz  = 10^8 Hz
T = 1/f  = 1/10^8 = 10^(-8)s = 10^(-5) ms  = 10^(-2)μs = 10^(1)ns  = 10ns

即频率是100MHZ时,其周期是10ns纳秒


外频

指CPU(内存)与主板之间同步的始终频率;

倍频  

CPU主频f与外频之间的倍数。


主频f  =  外频 *  倍频

如: 奔腾Pentium 4   2.4G CPU主频

2.4G = 2400M = 133M(外频)* 18(倍频)


CPI (Clock cycles Per Instruction) 

执行一条指令(平均)需要的时钟周期数 (即T周期的个数)

单条指令 CPI、一段程序中所有的CPI、指令系统的CPI等。

CPI = 程序中所有指令的时钟周期数之和  /  程序中指令总数

= 求和符号(程序中各类指令的CPI  *  程序中该类指令的比例)


MIPS(Million Instruction Per Second)

每秒CPU能执行的指令总条数。(单位:百万条 / 秒)

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

            = 指令条数  /  ((所有指令CPU时钟周期数之和  / f)* 10^6  )

            = f  / (CPI * 10^6)   (全性能公式)



CPU时间

执行一段程序所需要的时间

(CPU时间 + I/O时间 + 存储访问时间 + 各类排序时延的等)

CPU时间  =  程序中所有指令的时钟周期数之和  * T

                =  程序中所有指令的时钟周期数之和  / f


CPU时间的计算方法

1、考虑CPI后的CPU时间

CPU时间 =  总指令数 *  CPI  * T 时钟周期时间

                =  总指令数 * CPI / f  主频

2、考虑MIPS后的CPU时间

CPU时间 = 指令条数 / (执行时间 *10^6)




1.3 计算机性能测试 

性能测试的目的

全面了解所测试计算机的性能;
实时掌握计算机的工作状态;
为对比、评估、维护提供依据;

测试的基本原理

计算机系统中配置了大量的传感器和寄存器,系统运行的相关
参数保存在对应的寄存器中;
通过图形/数据方式显示获取的状态数值;
测试程序通过读取相应寄存器的值得到系统运行的状况;


第二章 数据表示

数据表示  原码、反码、补码、移码、定点数、 浮点数IEEE754有32位和64位运算,加减乘除

2.2 定点与浮点数据表示

1 定点数据表示
可表示定点小数和整数

定点数据表示数的不足:数据表示范围受限


2 浮点数据表示
浮点数的使用场合:当数的表示范围超出了定点数能表示的范围时。
把数的范围和精度分别表示的一种数据表示方法。
(1)格式(一般格式)

Es E1E2E3……En  
  Ms   M1M2M3M4 ..Mk -->  2^e •m 


E: 阶码位数,决定数据的范围
M: 尾数位数,决定数的精度


例1:将二进制数x =2^(-01) ×(- 0.1110) 表示成机器形式。假定用8位表示该数,且阶码占3位,尾数占5位(均包含一位符号位)。 

解:假定阶码和尾数均采用补码

e=-1    补码  111

m=-0.1110  补码 10010  (1.0010  隐含的点,定点小数

  1 1 1 1 0 0 1 0  


不同系统可能根据自己的浮点数格式从中提取不同位数的阶码。所以指定了IEEE 754格式。



IEEE 754格式

IEEE 754格式

符号位S8位偏指数E 23位有效尾数M 单精度 
符号位S11位偏指数E 52位有效尾数M 双精度 
  1. 指数E采用偏移值,其中单精度偏移值为127,双精度为1023, (为什么对阶码做移位?为了方便把阶码的值变成非负数), 将浮点数的阶码值变成非负整数,便于浮点数的比较和排序。 
  2.  IEEE754尾数M形式为1.XXXXXX,其中M部分保存的是XXXXXX(1被隐藏),从而可保留更多的有效位,提高数据表示的精确度。( 单精度和双精度  有效尾数M  都不是完整保存。从计算机中提取一个数据还原成真值的时候,要把1放到M的前面。)

精度移码二进制表示
单精度81270111 1111
双精度111023011 1111 1111
长双精度1516383011 1111 1111 1111

例1.某二进制数 X = + 1.100001* 2^8 , 若要变换成IEEE 754浮点数格式,则对尾数而言需要保存( ),其余位补0即可(说明:只需要填写6位二进制数)

答案:100001

例2.某二进制数 X = + 1.100001* 2^8 ,假定用8位表示该数,且阶码占3位,尾数占5位(均包含一位符号位)。 

解:假定阶码和尾数均采用补码 

e=8  补码  0100

m=+1.00001  补码  100001  ( 1.00001 隐含的点,定点小数)

 0 1 0 0  1 0 0 0 0 1


纯负小数的补码  

纯小数补码也就是说系统规定为8位,当位数不够的时候,要在最低有效数后面用0补齐,然后再求它的原码、反码、和补码。

纯小数在求它的原码、反码、和补码时方法和整数是一样的。
例如:X=-0.1011 系统要是规定为8位,那么它的原码为
[x]原=1.1011000 [x]反=1.0100111 [x]补=1.0101000


浮点数据表示

S8位偏指数E 23位有效尾数M 单精度 

与上述IEEE754格式相对应的32位浮点数的真值可表示为:
N = (-1)^ S * 2 ^(E-127) * 1.M

E-127  在保存的时候,加了127。 

随E和M的取值不同,IEEE754浮点数据表示具有不同的意义

浮点数据表示  

E=0 , M =0 :表示机器零;
E=0 , M !=0 :则N = (-1)^S * 2 ^(-126) * 0.M,非规格化的浮点数;
1<= E <= 254 :N = (-1)^S * 2^(E-127) * 1.M ,规格化的浮点数;
E=255 , M =0 :无穷大的数,对应于x / 0 (其中x != 0) ;
E=255 , M != 0 :N= NaN,表示一个非数值,对应于0 / 0。

可参考

关于浮点异常,见Kahan教授的《Lecture Notes on IEEE 754》   

http://www.cs.berkeley.edu/~wkahan/    有时打不开


IEEE754 32位浮点数与对应真值之间的变换流程


E = e + 01111111 保存的时候,加127。 

e = E - 01111111  求真值的时候,减127。   


转换成32位IEEE754格式  

例1.将十进制数20.59375转换成32位IEEE754格式浮点数的二进制格式(补码)。

解: 先将十进制数换成二进制数:

20.59375(10)  = 10100.10011(2) 

移动小数点,使其变成1.M的形式

10100.10011 = (-1)^0 * 1. 010010011 * 2^4

S=0,  e=4, M = 010010011, 

E=100 + 01111111 =10000011

最后得到32位浮点数的二进制存储格式为:

依次保存  SEM

8位偏指数E 23位有效尾数M(不够的补0)
0   10000011      01001001100000000000000     
0100   0001   1010   0100   1100   0000   0000   0000     

化成16进制 = 41A4C000H


例2.将单精度32位IEEE754格式的二进制数 0100   0001   1010   0100   1100   0000   0000   0000 转换成真值。

解: 从32位二进制序列中分离出S、E、M

S=0, E=1000 0011 , M = 0100 1001 1, 

e=E-127 = 1000 0011 -  01111111 = 100

 (-1)^0 * 1. 010010011 * 2^4 

= 10100.10011(2)

20.59375(10)


2.3 数据校验的基本原理

数据校验的必要性

受元器件的质量、电路故障或噪音干扰等因素的影响,数据在被处理、传输、存储的过程中可能出现错误;

若能设计硬件层面的错误检测机制,可以减少基于软件检错的代价(系统观)。

校验的基本原理


增加冗余码(校验位)

有效信息(k位)   
校验信息(r位)    


码距的概念

同一编码中,任意两个合法编码之间不同二进数位数的最小值
例 0011与0001 的码距为1,一位错误时无法识别;

0000、0011、0101、0110、1001、1010、1100、1111等编码码距为2。任何一位发生改变,如0000变成1000就从有效编码变成了无效编码,容易检测到这种错误。校验码中增加冗余项的目的就是为了增大码距。


码距与检错或纠错能力的关系

1) 码距≥e+1:
可检测e个错误


2) 码距≥2t+1:
可纠正t个错误 

 
3)码距≥e+t+1:
可纠正t个错误,同时检测e个错误(e≥ t)


选择码距要考虑的因素

有效信息(k位)   
校验信息(r位)    

码距越大,抗干扰能力越强,纠错能力越强,数据冗余越大,编码效率低,编码电路也相对复杂;
选择码距必须考虑信息发生差错的概率和系统能容许的最小差错率。


2.3 奇偶校验

奇偶校验的基本原理

1)增加冗余码(校验位)

有效信息(k位)   
校验信息(r位)    

2)编码:根据有效信息计算校验信息位,使校验码(数据+1位校验信息)中1的个数满足奇/偶校验的要求

0001 --> 00011 (偶校验)
0001  -->  00010 (奇校验)


3)检错方法与电路



奇偶校验的特点

编码与检错简单
编码效率高


不能检测偶数位错误, 无错结论不可靠,是一种错误检测码

不能定位错误,因此不具备纠错能力


奇偶校验的码距

举例说明奇/偶校验码距为 2
11000011 --> 01000010


改进的奇偶校验

双向奇偶校验
方块校验
垂直水平校验


可纠正1位错误
可检测出某行(列)上的奇数位
可检出一部分偶数位错误
不能检测出错码分布在矩形4个顶点上的错误


哪些场合应用奇偶校验?

工程上的应用
哪条内存条具有错奇偶校验功能的内存条?
http://www.eepw.com.cn/article/280413.htm (关于串口奇偶校验配置的经验)
一般在同步传输方式中常采用奇校验,异步传输方式中常采用偶校验


2.5 CRC校验及其实现

CRC校验的基本原理

增加冗余码(校验位)

有效信息(k位)   
校验信息(r位)    

N=k+r ≤ 2 r -1

生成多项式G(x)
收发双方约定的一个(r + 1)位二进制数,发送方利用G(X)对信息多项式做模2除运算,生成校验
码。接收方利用G(X)对收到的编码多项式做模2除运算检测差错及错误定位。

G(x)应满足的条件
A、最高位和最低位必须为1;
B、当被传送信息(CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0;
C、不同位发生错误时,模2除运算后余数不同;
D、对不为0余数继续进行模2除运算应使余数循环。


常见生成多项式G(x)



模2除运算

a)加/减运算 (异或运算,加不进位,减不借位)
0±0=0,0±1=1,1±0=1,1±1=0


b)模2除法
按模2减,求部分余数,不借位。


c)上商原则
①部分余数首位为1时,商为1,减除数;
②部分余数首位为0时,商为0,减0;
③当部分余数的位数小于除数的位数时,该余数即为最后余数。


CRC 编码方法

(1)根据待校验信息的长度k,按照 k+r ≤ 2 r -1 确定校验位r的位数

(2)根据r 和生成多项式的选择原则,选择位数为 r +1 的生成多项式G(X)= 1011
如对4位信息 1100 进行CRC编码,根据 4+r ≤ 2 r -1
得 r min = 3

(3)进行下列变化 

有效信息(k位)   
校验信息(r位)    

==》1100 000

即:将待校验的二进制信息Q(X)逻辑左移 r 位,得到Q(X)’

CRC编码

(4)对Q(X)’按模2运算法则除G(x),求CRC编码中的r位校验信息


(5)用得到的余数替换Q(X)’的最后r位即可得到对应的CRC编码

1100 000   ==> 1100 010     即为1100 的CRC 编码

CRC的检错与纠错


余数为0说明传输没有错误

接收方利用G(X)对收到的有错编码多项式做模2除运算


余数不为0说明传输有错。不同位数出错,得到的余数不一样。

编码不同数位出错对应的余数


 利用出错情况下余数的循环特性进行纠错


若余数不为0,一边对余数补0继续做模2除,同时让被检测的校验码循环左移,当余数为101时,出错位也移到A1位置。通过异运算纠正后继续循环左移和执行余数模2除法,直到修改后的出错位回原位。不需对每一位提供纠正电路。当位数增多时,循环码校验能有效地降低硬件
代价,这是它得以广泛应用的主要原因。



2.6 海明校验及其实现  

增加冗余码(校验位)

有效信息(k位)   
校验信息(r位)    

N=k+r ≤ 2^ r -1

1) 设k+r位海明码从左到右依次为第1,2,3,…..., k+r位,r位校验位记为P i (i=1,2,…,r),分别位于k+r位海明编码的第2 i-1 (i=1,2,…,r)位上,其余位依次放置被校验的数据位;

2) (7,4)海明校验码中校验位和被校验信息位的排列如下:




没有更多推荐了 [去首页]
image
文章
357
原创
284
转载
73
翻译
0
访问量
199056
喜欢
47
粉丝
6
码龄
5年
资源
0

文章目录

加载中...
0
0