计算机系统结构
计算机的发展历史:
1946年,世界上第一台电子计算机ENIAC出现,之后经历了5个发展阶段:
电子管——晶体管——集成电路——大规模集成电路——超大规模集成电路
冯式结构计算机的组成部分:存储器、运算器、控制器、输入设备和输出设备。
强化的概念:
计算机的工作过程:一般是由用户使用各种编程语言把所需要完成的任务以程序的形式提交给计算机,然后翻译成计算机能直接执行的机器语言程序,在计算机上运行。
层次:高级语言机器—汇编语言机器—操作系统机器—物理机器
计算机系统结构(computer architecture):指机器语言级机器(物理机器)的系统结构,它主要研究软件、硬件功能分配,确定软件、硬件界面(机器级界面),即从机器语言程序员或编译程序设计者的角度所看到的机器物理系统的抽象。
计算机组成(computer organization):是指计算机系统的逻辑实现,包括机器内部数据流和控制流的组成以及逻辑设计等,其目标是合理的把各种部件、设备组成计算机,以实现特定的系统结构,同时满足所希望达到的性能价格比。
计算机实现(computer implementation)是指计算机组成的物理实现。
这几个概念之间的关系说明:
计算机体系结构——计算机组成——计算机物理组成
计算机系统的分类:Flynn分类、冯氏分类、Handler分类和Kuck分类;
Flynn分类:根据不同指令流—数据流组织方式把计算机系统分成4类。(重点理解)
指令流:机器指令的执行序列;
数据流:由指令流调用的数据序列,包括输入数据和中间结果;
多倍性:在系统性能的瓶颈部件上同时处于同样执行阶段的指令和数据的最大可能个数;
I. 单指令流单数据流SISD——如单处理机
II. 单指令流多数据流SIMD——如相联处理机
III. 多指令流单数据流MISD——如流水线计算机
IV. 多指令流多数据流MIMD——如多处理机
冯氏分类:以最大并行度Pm把计算机系统结构分为4类,其中字宽W表示在一个字中同时处理的二进制位数,位宽B表示在一个位片中能同时处理的字数。
I. 字串位串WSBS(serial)(parallel)
II. 字并位串WPBS
III. 字串位并WSBP
IV. 字并位并WPBP
Handler分类:根据并行度和流水线处理的程度将计算机系统结构分成3个层次
I. 程序控制部件PCU的个数K
II. 算术逻辑部件ALU或处理部件PE的个数D
III. 每个算术逻辑部件包含基本逻辑线路ELC的套数W
Kuck分类:与Flynn分类法类似,根据指令流、执行流和多倍性来分类。
I. 单指令流单执行流SISE——典型的单处理机
II. 单指令流多执行流SIME——带多操作部件的处理机
III. 多指令流单执行流MISE——带指令级多道程序的单处理机
IV. 多指令流多执行流MIME——多处理机
计算机不同级别程序员所见的计算机部分,透明性的概念:
透明性:一种实际存在的事物或属性,从某个角度看似乎不存在的现象。
低层机器级的概念结构和功能特性对于高级语言的程序员来说是透明的。
计算机中的编码:
(1)二进制、十进制和十六进制等常用数制及其相互转换:
由于计算机的存储器和寄存器是两态部件,所以各种信息在计算机中是以二进制的方式存储和计算的。数制是由基数和基数个不同的数码组成的。
BCD码:十进制的二进制表示,
0:0000 1:0001 2:0010 3:0011 4:0100 5:0101
6:0110 7:0111 8:1000 9:1001
十进制的202可以表示成BCD码为0010 0000 0010;
十六进制 <-> 二进制:十六进制表示法是用16位二进制数字组成的,每4位二进制数字表示一位十六进制数,十六进制的数字表示从0-9,A,B,C,D,E,F共十六个字符.十六进制与二进制相互转换就是一位十六进制字符与四位二进制数字的相互转换过程.
十进制 <-> 二进制:十进制向二进制转换分两步进行:首先把该数的整数部分和小数部分转换为二进制数;然后再把这两部分合并起来即可.十进制的整数部分向二进制转换是通过对十进制不断的除2取余数得到,十进制小数部分通过乘2取整的方法获得,直到小数部分为0,所得到的整数部分就形成了二进制编码;同样的,二进制向十进制转换如下所示:
十进制数N=(RnRn-1...R1R0R-1...R-m)
= Rn *2n+Rn-1*2n-1+...+R1*2+R0+R-1*2-1...R-m*2-m
八进制 <-> 二进制:二进制向八进制转换的方法是从小数点开始分别向左右每3位二进制数编成一组,若不够3位 ,则小数点左侧的最高位和右侧的最低位用0补充,每一组用对应的八进制的数码表示即可;八进制向二进制转换的方法是从小数点开始,把每一位八进制的数码转换成对应的3位二进制即可.其小数点左侧的最高位或右侧的最低位的0可以省去.
⑵ 计算机中的二进制数运算方法:
1. 定点数运算:要判断是否溢出?( )
加法:[X+Y]=([X]补+[Y]补) MOD 2
减法:[X-Y]=([X]补+[-Y]补)MOD 2
乘法:采用原码比较方便,使用原码一位乘法来求两个定点数的乘积。运算规则为:
n 乘积的符号位等于乘数和被乘数的符号位进异或;
n 乘积的值等于两数绝对值之积,即乘数和被乘数的绝对值进行移位相加;
除法:采用原码比较方便。运算规则为:
商的符号位同定点数原码乘法的处理方法,由两数的符号位进行异或
两数的绝对值部分进行相除。
2. 浮点运算
1) 加减法:
a) 对阶
b) 尾数进行加、减运算
c) 规格化
d) 舍入
e) 溢出判断
2) 乘除法:
浮点相乘,其积的阶码为两数阶码相加,积的尾数为两尾数相乘。
浮点数相除,其商的阶码为两数阶码之差,商的尾数为两尾数相除。
其结果都需要进行规格化处理,同时还需要进行溢出判断。