数据的表示
进制表示
R进制转十进制使用按权展开法,其具体操作方式为∶将R进制数的每一位数值用R的k次方形式表示,即幂的底数是R,指数为k ,k与该位和小数点之间的距离有关。当该位位于小数点左边,k值是该位和小数点之间数码的个数,而当该位位于小数点右边,k值是负值,其绝对值是该位和小数点之间数码的个数加1。
例:
二进制11010.11 = 1 x 2^4 + 1 x 2^3 + 0 x 2^2 + 1 x 2^1 + 0 x 2^0 + 1 x 2^-1 + 1 x 2^-2=26.75
六进制532.13 = 5 x 6^2 + 3 x 6^1 + 2 x 6^0 + 1 x 6^-1 + 3 x 6^-2
进制转换
二进制与八进制
二进制转八进制:
从小数点开始,小数点前从小数点开始向左每三位为一组,最后不足三位的可以添0补足,小数点后向右每三位一组,不足三位必须添0补齐。然后将每组按权相加,即得到八进制数。
八进制转二进制:
同上面相似,从小数点开始向左右开始,把每一位数转换成二进制即可。
二进制与十六进制
二进制转十六进制:
与二进制和八进制的转换相似,每四位一组,然后再按权相加。需要注意的是,9之后的数用字母A--F表示,如13应表示为D。(注:末尾为H表示该数是十六进制数)
十六进制转二进制:
与八进制转二进制方法相同。
注:八进制与十六进制的转换,需先转为二进制,再转换成八进制或十六进制。
十进制转R进制
十进制转R进制可以使用短除法。如将十进制的83转成3进制:
-
3|83 余数 2
3|27 0
3|9 0
3|3 0
1 1
最后再从下往上读其余数,即十进制的83用3进制表示为:10002 。
详情参考:https://www.bilibili.com/video/BV1yU4y1371J?p=3
源码反码补码移码
源码:把一个数转成二进制即为它的源码(若为带符号的,取其最高位,每8位一组,不足8位的在前面添0补齐,正数首位为0,负数首位为1)。
反码:正数的反码是其本身,负数的反码是在其原码的基础上符号位不变,其余各个位取反
补码:正数的补码就是其本身,负数的补码是在其反码的基础上+1
移码:不管正负数,只要将其补码的符号位取反即可
表示范围:
详情参考:https://www.bilibili.com/video/BV1yU4y1371J?p=4
计算机结构
传统计算机一般由以下部分组成:运算器、控制器、存储器、I/O设备,运算器和控制器共同组成CPU(中央处理器),存储器又分为内存储器(RAM、ROM)和外存储器(硬盘、U盘、磁带等)。
运算器的构成:
- 算术逻辑单元ALU
- 累加寄存器AC
- 数据缓冲寄存器DR
- 状态条件寄存器PSw
控制器的构成:
- 程序计数器PC
- 指令寄存器IR
- 指令译码器
- 时序部件
参考:
https://www.bilibili.com/video/BV1yU4y1371J?p=4
https://blog.csdn.net/L_gentleman/article/details/93377576
flynn分类法
CISC与RISC
参考:
https://www.bilibili.com/video/BV1yU4y1371J?p=4
流水线
指令执行顺序: 取指—>分析—>执行
如图所示,在未使用流水线的情况下,需要先完成某一条指令的执行操作后,再进行下一条指令的操作;当使用了流水线后,只要前一条指令的一部分操作已完成,那么就会开始下一条指令的对应操作,从而减少了指令的处理时间。
直接上例题:
若指令流水线把一条指令分为取指、分析、执行三部分,且三部分的时间分别为取指2ns、分析2ns、执行1ns。求:流水线的周期是多少?100条指令全部执行完毕的时间是多少?
知识引入:
- 流水线周期(▲t ):执行时间最长的一段
- 流水线计算公式:
- 一条指令执行完毕时间+(指令条数-1)* 流水线周期
- 理论公式:(t1+t2+t3+…+tk)+(n-1)*▲t (考的比较多)
- 实践公式:(k+n-1)*▲t
- k表示把一条指令分为了几部分
- n表示一共有多少条指令
解答:
在本题中,由于三部分时间最长的为取指和分析两部分,它们的时间都为2ns,即流水线周期为2;指令共有三部分,即k为3 。
使用理论公式计算:(2+2+1)+(100-1)*2=203ns使用实践公式计算:(3+100-1)*2=204ns
流水线的吞吐率(Though Put rate,TP)是指在单位时间内流水线所完成的任务数量或输出的结果数量。公式如下:
TP=指令条数/流水线执行时间流水线最大吞吐率: TP(max)=1/▲t
以上面的例题为例,其流水线周期为2ns,共有100条指令,执行完所有指令消耗的时间为203ns,那么该流水线的吞吐率为:
TP = 100/203; 最大吞吐率为: TP(max) = 1 / 2公式:
S = 不使用流水线执行时间/使用流水线执行时间
前面提到不使用流水线时,需要等当前指令执行结束后再开始执行下一条指令,因此,在这种情况下,执行一条指令所需要的时间为2+2+1=5ns,共有100条指令,故执行完所有指令所需的时间为500ns,而使用流水线的执行时间仅为203ns,所以流水线加速比为:
S = 500 / 203计算机层次化存储结构
计算机存储结构如图:
cache的基本概念
cache的功能:提高CPU数据的I/O速率,突破了冯·诺依曼瓶颈,即CPU与存储系统间数据传送贷款限制。
在计算机存储体系中,cache是访问速度最快的层次。 使用cache改善系统性能的依据是程序的局部性原理。如果以h代表队cache的访问命中率,t1表示cache的周期时间,t2表示煮存储器周期时间,以读操作为例,使用cache+主存储器的系统的平均周期为t3,则:
t3 = h * t1 + (1-h) * t2
其中,(1-h) 又称为失效率(未命中率)。