【软件设计师】第一章 计算机组成与结构

第一章 计算机组成与结构

第一节 数据的表示

1、进制的转化

(1)R 进制转十进制:位权展开法,用 R 进制数的每一位乘以 R 的 n 次方,n 是变量(n可以是负数),从 R 进制数的最低位开始,依次为 0,1,2,3...累加。

举例:

【软件设计师】第一章 计算机组成与结构_第1张图片

二进制 10100.01 =

1            0             1            0            0          .  0               1

1×2^4 + 0×2^3 + 1×2^2 + 0×2^1 + 0×2^0 + 0×2^(-1) + 1×2^(-2)

七进制604.01=

6             0            4          . 0                1

6×7^2 + 0×7^1 + 4×7^0 + 0×7^(-1) + 1×7^(-2) 

八进制十六进制也是同样的道理,就不多赘述。

(2)十进制转 R 进制:短除法

举例:

【软件设计师】第一章 计算机组成与结构_第2张图片

 十进制转 2 进制,每次都除以 2 ,除至余数为 0 或者 1,得到的结果就是二进制数 94。

(3) 特殊的二进制、八进制、十六进制的互转要特别熟练

【软件设计师】第一章 计算机组成与结构_第3张图片

把二进制按位区分,就可以很容易的互转了。

2、源码、补码、反码、移码 

(1)相互关系

运算过程 : 原码 -> 反码 -> 补码 -> 移码
原码 : 二进制(开头第一个表示符号0正1负) 
反码 : 在原码的基础上,符号位不动,其他位取反——注意,任何正数的源码=反码补码。而负数都是通过补码表示的。                                                                                                                       补码 : 在反码的基础上,运算+1—注意,任何正数源码=反码=补码 ,而负数都是通过补码表示的0,0有唯一的编码:[+0]补 = 0 0000000.
公式 : 两数补码的和==两数和的补码。
移码 : 在补码的基础上,符号位取反                                                                                                    一个原码的补码再求其补码,就是它的原码;减一取反等价于取反加一。

(2)表示范围

(3)例子

【软件设计师】第一章 计算机组成与结构_第4张图片

 【软件设计师】第一章 计算机组成与结构_第5张图片

 

3、浮点数运算(小阶向大阶对齐,小阶尾数右移)

浮点数的表示分为尾数两部分。两个浮点数相加时,需要先对阶,即将小阶向大阶对齐,同时将尾数右移n位。

 

 二进制数N=2^E×F (E为阶码,F为尾数,例:2^5×0.1010001),而2^E×F称为浮点数。

浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定。为了充分利用尾数来表示更多的有效数字,通常才用规格化浮点数。规格化就是将尾数的绝对值限定在区间[0.5,1]。 

例如:

第二节 计算机结构

运算器与控制器的组成

考试中考的比较多的还是运算器和控制器的构成,这块必须掌握。

计算机的硬件基本系统由五大部分组成 : 运算器、控制器、存储器、输入设备(如鼠标键盘)、输出设备(如显示器)。
其中,运算器控制器合并称为中央处理单元,即CPU;存储器分为内部存储器(即内存,容量小,速度快,临时存放数据)和外部存储器(即硬盘、光盘等,容量大,速度慢,长期保存数据);输入设备和输出设备合并称为外设。
鼠标键盘等输入设备都是通过中断的原理来实现控制,点击后触发中断,首先进入中断处理程序。
主机:CPU(运算器、控制器)+主存储器。
CPU:由运算器、控制器、寄存器组和内部总线组成。实现程序控制、操作控制、时间控制、数据处理功能。
运算器:算术逻辑单元 ALU(实现对数据的算术和逻辑运算)、累加存器 AC(运算结果或源操作数的存放区)、数据缓冲寄存器 DR (暂时存放内存的指令或数据)和状条寄存器 PSW(保存指令运行结果的条件码内容,如溢出标志等)组成。执行所有的算术运算,如加减乘除等;执行所有的逻辑运算并进行逻辑测试,如与、或、非、比较等.
控制器:指令寄存器 IR(暂存 CPU 执行指令)、程序计数器 PC(存放指令执行地址)、地址寄存器 AR(保存当前 CPU 所访问的内存地址)、指令译码器 ID(分析指令操作码)等组成。控制整个CPU的工作,最为重要。
CPU 依据指令周期的不同阶段来区分二进制的指令和数据,因为在指令周期的不同阶段,指令会命令CPU 分别去取指令或者数据。

第三节 指令寻址方式

顺序寻址方式(从存储器中按顺序取指执行)、跳跃寻址方式(下一条指令的地址码不止由程序计数器给出,而是由本条指令直接给出,程序跳跃后,按新的指令地址开始顺序执行,指令计数器也会跟着改变,跟踪新的指令地址)。

指令操作数的寻址方式

寻址速度:立即寻址 > 寄存器寻址 > 直接寻址 > 寄存器间接寻址 > 间接寻址

立即寻址方式:指令的地址码字段指出的不是地址,而是操作数本身。

直接寻址方式:在指令的地址字段中直接指出操作数在主存中的地址。

寄存器间接寻址方式:与直接寻址方式相比,间接寻址中指令地址码字段所指向的存储单元中存储的不是操作数本身,而是操作数的地址。

寄存器寻址方式:指令中的地址码是寄存器的编号,而不是操作数地址或操作数本身。寄存器的寻址方式也可以分为直接寻址和间接寻址,两者的区别在于:前者的指令地址码给出寄存器编号,寄存器的内容就是操作数本身;而后者的指令地址码给出寄存器编号,寄存器的内容是操作数的地址,根据该地址访问主存后才能得到真正的操作数。                                                                                         
基址寻址方式:将基址寄存器的内容加上指令中的形式地址而形成操作数的有效地址,其优点是可以扩大寻址能力。(了解)

变址寻址方式:变址寻址方式计算有效地址的方法与基址寻址方式很相似,它是将变址寄存器的内容加上指令中的形式地址而形成操作数的有效地址。

相对寻址方式:相对于当前的指令地址而言的寻址方式。相对寻址是把程序计数器 PC 的内容加上指令中的形式地址而形成操作数的有效地址,而程序计数器的内容就是当前指令的地址,所以相对寻址是相对于当前的指令地址而言的。

第四节 计算机体系结构分类

按处理机的数量进行分类:单处理系统(一个处理单元和其他设备集成)、并行处理系统(两个以上的处理机互联)、分布式处理系统(物理上远距离且松耦合的多计算机系统)。

Flynn分类法

【软件设计师】第一章 计算机组成与结构_第6张图片

Flynn分类法中主要有两个指标:一个是指令流,一个是数据流。                                                  指令流为机器执行的指令序列;数据流是由指令调用的数据序列。                                                依据计算机特性,是由指令来控制数据的传输,因此,一条指令可以控制一条或多条数据流,但一条数据流不能被多条指令控制,否则会出错,就如同上级命令太多还互相冲突,不知道该执行哪个,因此多指令单数据MISD 不可能。

第五节 CISC和RISC

CISC 是复杂指令系统,兼容性强,指令繁多、长度可变,由微程序实现;
RISC 是精简指令系统,指令少,使用频率接近,主要依靠硬件实现(通用寄存器、硬布线逻辑控制)。

指令系统类型 指令 寻址方式 实现方式 其他
CISC(复杂指令系统)

数量多,使用频率差别大

可变长格式

支持多种 微程序控制技术(微码) 研制周期长
RISC(精简指令系统)

数量少,使用频率接近

定长格式,大部分为单周期指令

操作寄存器,只有Load/Store

操作内存

支持方式少

增加了通用寄存器

硬部线逻辑控制为主

适合采流水线

优化编译

有效支持高级语言

第六节 指令的流水处理(流水线)

流水线原理

将指令分成不同段,每段由不同的部分去处理,因此可以产生叠加的效果,所有的部件去处理指令的不同段,如下图所示:

【软件设计师】第一章 计算机组成与结构_第7张图片

RISC 中的流水线技术:超流水线(在每个机器周期内能完成一个甚至两个浮点操作,以时间换空间)、超标量(内装多条流水线同时执行多个处理,以空间换时间)、超长指令字 VLIW(同时执行多条指令,发挥软件作用)。

流水线时间计算

流水线周期:指令分成不同执行段,其中执行时间最长的段为流水线周期。

流水线的总共时间 = 一条完整指令的时间 +(n-1)*流水线周期

吞吐率 = 指令条数 /(一条完整指令的时间+(n-1)*流水线周期)

【软件设计师】第一章 计算机组成与结构_第8张图片

而流水线最大吞吐率是一种理想情况,即TPmax=1/流水线周期。

流水线的加速比计算

加速比即使用流水线后的效率提升度,即比不使用流水线快了多少倍,越高表明流水线效率越高,

公式:

流水线的效率

【软件设计师】第一章 计算机组成与结构_第9张图片

简单来算,就是阴影面积/总面积=[4*(1+1+1+3)] / (4*15) = 2/5

第七节 存储系统

计算机存储结构层次图

【软件设计师】第一章 计算机组成与结构_第10张图片

计算机采用分级存储体系的主要目的是为了解决存储容量、成本和速度之间的矛盾问题。

存储速度:寄存器 > Cache > 内存(主存) > 外存(辅存)

两级存储映像为:Cache-主存、主存-辅存(虚拟存储体系)。

存储器的分类

按存储器所处的位置: 内存、外存。
按存储器构成材料:磁存储器 (磁带)、半导体存储器(静态和动态两类)、光存储器(光盘)。          按存储器的工作方式:可读可写存储器(RAM)、只读存储器(ROM 固定只读存储器 只能读,PROM 可编程的只读存储器 可写入一次;EPROM 可擦除可编程的只读存储器 和 EEPOM 电擦除可编程的只读存储器 既可以读也可以写,只是修改方式不用)。闪速存储器(FM 简称闪存,其特性介于EPROM和EEPROM之间,类似于EEPROM)。
按存储器访问方式:按地址访问、按内容访问(相联存储器)。
按寻址方式:随机存储器(访问任意存储单元所用时间相同)、顺序存储器(只能按顺序访问,如磁带)、直接存储器(二者结合,如磁盘,对于磁道的寻址是随机的,在一个磁道内则是顺序的)。

主存分类

主存分为:随机存取存储器(RAM)和只读存储器(ROM)。主要区别是内存是属于RAM的,一旦断电之后,内存中的所有数据都将被清除掉,无法进行保存;而ROM在断电之后,仍然可以存储信息内容。

【软件设计师】第一章 计算机组成与结构_第11张图片

主存编址

由图可知三个存储器分别由一块芯片、两块芯片、两块芯片组成,以此类推。

【软件设计师】第一章 计算机组成与结构_第12张图片

(1)内存地址从AC000H到C7FFFH,共有多少K个地址单元,需要对这两个十六进制数进行相减,由于是“到”,要包含AC000H,所以再加1即可,所得结果是:1C000H(将其转换成K单位,要对结果除以1024)。将其转为十进制:(0×16^0 + 0×16^1 + 0×16^2 + C×16^3 + 1×16^4)/1024=112K。

(2)总容量为112K×16bit,需要28片存储器芯片,每片芯片有16K个存储单元,问该芯片每个存储单元存储多少位?

(112K×16bit)/(28×16K×a)=1,比值为1是因为这些地址单元是由28片芯片组成固定的空间,16和16约掉,K和K约掉,所以112/28a=1,解得a=4bit,即4位。
 

第八节 高速缓存 Cache

对程序员透明的意思是看不到的意思,而不是看得到。 

Cache地址映射

高速缓存中的地址映像方法:直接映像全相联映像组相联映像

1、直接映像:指主存的块与Cache块的对应关系是固定的。优点是地址变换简单,缺点是灵活性差、Cache块冲突率高。

【软件设计师】第一章 计算机组成与结构_第13张图片

 

2、全相联映像:允许主存的任一块可以调入Cache存储器的任何一个块的空间中。优点是Cache块冲突率低、灵活性好,缺点是访问速度慢、地址变换较复杂、成本太高。

3、组相联映像:是前两种方式的折衷方案,即组采用直接映像方式、块采用全相联映像方式。

发生块冲突从少到多的顺序:全相联映射-->组相联映射-->直接映射

Cache命中率

替换算法

替换算法的目的是使cache获得尽可能高的命中率,有以下四种:随机替换算法、先进先出算法、近期最少使用算法、优化替换算法

注:现代的计算机cache系统是分为了三个级别的,访问时先从第一层开始访问,直至三个级别的cache都被访问完全时才会访问内存

【软件设计师】第一章 计算机组成与结构_第14张图片 

局部性原理

总的来说,在 CPU 运行时,所访问的数据会趋向于一个较小的局部空间地址内。(例如循环操作,循环体被反复执行)
时间局部性原理:如果一个数据项正在被访问,那么在近期它很可能会被再次访问,即在相邻的时间里会访问同一个数据项。

空间局部性原理:在最近的将来会用到的数据的地址和现在正在访问的数据地址很可能是相近的,即相邻的空间地址会被连续访问。

你可能感兴趣的:(【软件设计师】,后端,java,职场和发展,经验分享)