软件设计师中级笔记

计算机组成原理与体系结构

数据的表示

进制转换

image-20210413083704070


image-20210413083946062


image-20210413084239685


分割时,不足则高位补0


原码、反码、补码、移码

image-20210413091105813


image-20210413092014292


1、原码就是符号位加上真值的绝对值,即用第一位表示符号,其余表示值。


比如:[+1]原= 0000 0001 [-1]原= 1000 0001


因为第一位是符号位,所以8位二进制数的取值范围就是:(即第一位不表示值,只表示正负。)


[1111 1111 , 0111 1111] 即 [-127 , 127]


2、反码


反码的表示方法是:正数的反码是其本身;负数的反码是在其原码的基础上,符号位不变,其余各个位取反。


[+1] = [0000 0001]原= [0000 0001]反


[-1] = [1000 0001]原= [1111 1110]反


3、 补码


补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(也即在反码的基础上+1)


[+1] = [0000 0001]原= [0000 0001]反= [0000 0001]补


[-1] = [1000 0001]原= [1111 1110]反= [1111 1111]补


理解:https://zhuanlan.zhihu.com/p/91967268


注:


image-20210507183622034


浮点数运算

image-20210413113401277


计算机结构

image-20210413145506976


程序计数器:用于存放下一条指令所在单元的地址的地方。


指令寄存器:保存当前正在执行的一条指令。


指令译码器:主要作用是对指令进行译码。


累加寄存器:用来暂时存放算术逻辑运算部件ALU运算的结果信息。


数据寄存器:用来保存操作数和运算结果等信息,其目的是为了节省读取操作数所需占用总线和访问存储器的时间。


地址寄存器:用来保存当前CPU所访问的内存单元的地址,以方便对内存的读写操作。


Flynn分类

image-20210417082727426


CISC与RISC

image-20210417083051128


流水线

image-20210417092041760


流水线计算


流水线有 **k ** 个部分

80%的情况下使用理论公式,如果理论公式计算下没有正确答案再用实践公式

image-20210417090742299


image-20210504093329296


流水线吞吐率计算


image-20210417091437194


最大吞吐量率是指不考虑流水线建立时间的状态下,每一个流水线周期完成一次任务


流水线加速比


不使用流水线所用的时间:(2+2+1)* 100 = 500


image-20210417092108240


流水线效率


image-20210417094013799


层次化存储结构

image-20210417095508515


存储设备按访问速度排序为:通用寄存器 > Cache > 内存 > 硬盘

Cache的地址映像中,全相联映像块冲突最小,其次为组相联映像,直接映像块冲突最大。

Cache与主存的地址映像需要专门的硬件自动完成,使用硬件来处理具有更高的转换率。

image-20210417111135815


随机存取存储器在掉电之后数据将被清除


只读存储器在掉电之后仍然可以存储相应的信息


Cache高速缓存用来提高CPU访问主存(内存)数据或指令的效率,解决容量不匹配的问题,与外存无关。

主存 - 编址


image-20210417112016325


求地址单元:尾地址 - 首地址 + 1 


一般选择用 (尾地址 + 1) - 首地址

第二空:

该内存地址共有 112K * 16 存储空间

则 112K * 16 = 28 * 16K * x

得出x = 4

磁盘结构与参数

image-20210417113206417


image-20210417114354722


image-20210417114439422


单缓冲区是只有一个缓冲区处理数据


磁盘旋转周期为33秒,总共有11个扇区,则一个扇区的旋转周期为3秒。


接下来介绍读取次序与逻辑:


读取R0(3s)-> 缓冲区进行数据处理(3s)-> 缓冲区数据处理完成后,读取指针在R2的开始处 -> 磁盘继续旋转直到落到R1的开始处(30s)->进行R1扇区的数据处理 ......(R0~R9的处理方式一样)


得出每一个扇区的处理时间为33s


R10的处理时间为 读取(3s)+ 缓冲区处理(3s) = 6s


则所有的处理时间为:(33 + 3)*10 + 6


优化存储后,不需要多余的扫描时间,每一个扇区处理完之后刚好处理下一个扇区


所以时间为:(3+3)*11 = 33

你可能感兴趣的:(软件设计师中级笔记)