​​程序设计语言-软件设计(二十一)

计算机组成原理在软件设计考试分值占比较高,主要会考

1、数据的表示:数据进制转化。(日常生活中使用的都是十进制的数据,但是计算机都是使用二进制,为了方便转换还有八进制和十六进制)

计算机结构、Flynn分类法、CISC与RISC、流水线技术、存储系统、总线系统、可靠性及校验码。

一、数据的表示

任意进制转十进制

例如二进制的转换。

二进制转十进制可以按权展开法,当小数点左边的是正数次方,右边的则是负数。

比如:二进制 10100.01

转成十进制:1*2的四次方+1*2的二次方+1*2的负二次方

比如:七进制 603.01

转成十进制:6*7的二次方+33*7的零次方+1*7的负二次方

十进制转二进制

可以使用短除法。

例如:十进制94

二进制:

94除以2 等于47  余0

47除以2 等于23  余1

23除以2 等于11  余1

11除以2 等于5   余1

5除以 2  等于2   余1

2除以2  等于1   余0

1除以2   等于0   余1

1011110

二进制转八进制与十六进制数

每三个2进制位可以转一个8进制位,高位补0,然后把每个位子转8进制。

10 001 110  

那么二进制110转八进制是 1*2的二次方+1*二的一次方 = 6

二进制001转八进制 1*2的零次方 = 1

二进制010转八进制 1*2的一次方 = 2

所以 八进制是 216

每四个2进制可以转一个16进制,高位补0。

十六进制到两位则用字母代替,10是A,11是B,12是C,依次类推。

1000 1110

那么二进制1000转十六进制 1*2的三次方 = 8

二进制1110转十六进制 1*2的三次方 + 1*2的二次方 + 1*2的1次方 = 8+4+2=14

所以十六进制 8E

问:反码1111 1111 代表十进制的多少

第一步:先把反码转成原码 1000 0000

第二步:首位1代表负数,所以是 -0

问:补码0000 0000 代表十进制的多少

0

问:移码1000 000代表十进制多少?

移码首位1代表正数,所以是 0。

计算机组成原理(1)-软件设计(二十二)_十进制

原码反码范围 -127~127

补码:-128~127

浮点数

1000的科学计数法是1.0 * 10的三次方,这就是计算机里的浮点数。

119则是1.19*10的平方。

所以公式为:

N = M * R的e次方。

其中M称为尾数,R称为基数,e称为指数。

所以1.19是尾数 ,10是基数、2是指数。

问:如何把两个浮点数相加?

1.0*10的三次方 + 1.19乘以10的平方

对阶,把平方转成三次方,0.119*10的三次方

所以等于1.119 * (10的三次方)

对阶  ->  尾数相加  ->结果格式化。

当小数点左边是0或者超过一位,则需要格式化

  • 计算器结构

运算器、控制器、主存储器 这些都属于主机。

而主机里最重要的部分是 运算器 + 控制器 = cpu (Central Processing Unit)

运算器包含 算术逻辑单元ALU、累加寄存器AC、数据缓冲寄存器DR(作用读写操作的时候,暂存数据)、状态条件寄存器PSW(作用在运算过程中存储标志位)。

控制器包含 程序计数器PC、指令寄存器IR、指令译码器、时序部件。

  • flynn分类法

单指令流单数据流SISD:意味着控制部件 是一个,处理器 是一个,主存模式 一个。代表就是单处理系统,老计算机。 (后面多核,4g8g就不属于此类)

单指令流多数据流SIMD:控制部件 一个,处理部件 多个,主存模式 多个。处理器以异步的形式执行同一条指令。代表有 阵列处理器、并行处理机。

多指令流单数据流:控制器多个 处理器 一个,主存模式。并不存在,理论模型,没有实际意义和价值。

多指令流多数据流:控制器,处理器和主存模式 都是多个。代表多处理器系统。

  • CISC与RISC

CISC复杂模式,RISC精简模式。

CISC是计算机没有大规模通用化时候提出来的,数量多,使用频率差别大,可变长格式,支持多种。

RISC大部分都是操作寄存器,只有load/store操作内存,优化编译,有效支持高级语言。

  • 流水线

执行一条指令分为 取指、分析、执行。

如果没有流水线,当有三条指令的情况下,则执行顺序是:

第一条指令 取指、分析、执行。

第二条指令 取指、分析、执行。

第三条指令 取指、分析、执行。

如果有流水线,则他们的执行顺序是:

第一条指令 第二条指令 第三条指令 取指。

第一条指令 第二条指令 第三条指令 分析。

第一条指令 第二条指令 第三条指令 执行。

流水线所做的工作,是把空闲时间利用起来。

流水线的计算

问:把一条指令分为 取指、分析、执行三个部分,且三部分的时间分别是取指2ns、分析2ns、执行2ns。那么流水线周期多少?100条指令全部执行完毕需要时间是多少?

分析:流水线周期指执行时间最长的一段,所以流水线周期最长的是2ns。

一条指令执行时间 + n-1条指令的执行时间

2+2+1 + 99 *2= 5+198 = 203

这是理论公式,第一条指令时间, 后面指令乘以 周期时长。

实践公式:(k+n-1)*流水线周期。这里k代表分成几段。

(3+100-1)*2 = 204

流水线吞吐率计算

指单位时间内流水线所完成的任务数量或者输出结果数量。

TP=指令条数 除以 流水线执行时间

TP = 100/203nm