文章目录:
1.数据的表示
1.1 进制的转换
1.1.1 R进制转十进制
这里写的详细一点就是:二进制10100.01 = 1×2^4 + 0×2^3 + 1×2^2 + 0×2^1 + 0×2^0 + 0×2^(-1) + 1×2^(-2),对于七进制604.01也是同样的道理。
1.1.2 十进制转R进制
对于十进制转R进制,采取的就是对十进制数除R取余,最后对余数取倒序即可。
如果将十进制数94转8进制,那么除8取余即可,其他情况均是如此。
1.1.3 二进制转八进制与十六进制
①二进制转八进制:每三个二进制位对应一个八进制位,对于二进制数10001110,从低位开始三位三位的看,二进制的110对应八进制的6;二进制的001对应八进制的1;而此时只剩下两位10,那么在最前面补0(补满3位即可),也就是010,对应八进制的2,所以该二进制数10 001 110就对应八进制数216。
②二进制转十六进制:每四个二进制位对应一个十六进制位,对于二进制数10001110,从低位开始四位四位的看,二进制的1110对应十六进制的E(14);二进制的1000对应十六进制的8;如果不满四位,与转八进制一样,在最前面补0(补满4位即可)。在十六进制中,A=10,B=11,C=12,D=13,E=14,F=15。
1.2 原码反码补码移码
对于十进制数1,我们将其转为二进制为:1,如果用1个字节来存储它,我们会在它的左边补7个0(1个字节8位),也就是0000 0001,最高位是符号位(带符号的情况下),对于正数而言,符号位为0;对于负数,符号位为1。也就是说,对于正数1,它的原码就是0000 0001;对于负数1,它的原码就是1000 0001。
在上面的图表中,如果我们用原码进行1+(-1)的计算,会得到1000 0010这样的二进制数,此时的结果为-2。那么我们每个人都知道1+(-1)=0,所以原码表示的这种方式,是不能在机器中做直接的计算的。(用补码计算)
对于一个正数而言,它的原反补三码相同;对于一个负数而言,它的反码为:符号位不变,其余位按位取反(1变0,0变1);它的补码为:在原码的基础上,符号位不变,在剩下的位中,从低位开始找到第一个为1的那一位,从这个1开始的右边所有位都不变,左边所有位按位取反即可。在图中,对于二进制数1000 0001,首先符号位不变,然后从低位开始找到最末位为1,那么从它开始右边所有位不变,剩下左边的按位取反,即补码为1111 1111。
移码一般在特定的场合才会用到,比如浮点数运算中的阶码。而移码的求解方法,其实就是在补码的基础上,对于符号位进行取反即可。
表1-1 机器字长为n时各种码制表示的带符号数的范围 |
||
码制 |
定点整数 |
定点小数 |
原码 |
- (2^(n-1)-1) ~ + (2^(n-1)-1) |
- (1-2^-(n-1)) ~ +(1-2^-(n-1)) |
反码 |
- (2^(n-1)-1) ~ + (2^(n-1)-1) |
- (1-2^-(n-1)) ~ +(1-2^-(n-1)) |
补码 |
-2^(n-1) ~ +(2^(n-1)-1) |
-1 ~ +(1-2^-(n-1)) |
移码 |
-2^(n-1) ~ +(2^(n-1)-1) |
-1 ~ +(1-2^-(n-1)) |
从上图中,我们可以看到对于原码和反码表示的范围是一样的,并且是对称的。而对于补码和移码表示的范围是一样的,它可以比原码、反码表示的范围要多1(原因就在0这个位置)。
1.3 浮点数运算
对于浮点数的相关计算方法,在这里就不做详细的叙述了,大家可以百度搜索学习。
需要记住的就是先进行对阶(小阶向大阶看齐),之后对尾数进行计算,最后是舍入处理,结果规格化。同时还要记住一点:尾数右移,阶码加1;尾数左移,阶码减1。
浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定。
2.CPU结构
计算机的主机中包含两大部件:CPU和内存(主存储器)。而对于声卡、显卡、鼠标键盘这些都是属于外设的。
对于CPU,我们需要了解的就是运算器和控制器,以及这两者中的一些寄存器。
①算术逻辑单元 ALU:它是运算器的重要组成部件,负责处理数据,实现对数据的算术运算和逻辑运算。
②累加寄存器 AC:通常简称累加器,它是一个通用寄存器,功能是当运算器的算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工作区。
③数据缓冲寄存器 DR:作为CPU和内存、外设之间数据传送的中转站,作为CPU和内存、外设之间在操作速度上的缓冲。
④状态条件寄存器 PSW:保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容。
⑤程序计数器 PC:用于存放下一条指令的地址。当一条指令被获取后,程序计数器的地址加1,指向下一条指令的地址。
⑥指令寄存器 IR:用于存放当前从主存储器读出的正在执行的一条指令。
⑦地址寄存器 AR:用于保存当前CPU所访问的内存单元的地址。
⑧指令译码器 ID:计算机执行一条指令时,首先分析这条指令的操作码是什么,以决定操作的性质和方法,然后才能控制计算机其他各部件协同完成指令表达的功能,这个分析工作由指令译码器来完成。
3.Flynn分类法
体系结构类型 |
结构 |
关键特性 |
代表 |
单指令流单数据流(SISD) |
控制部分:一个 处 理 器:一个 主存模块:一个 |
|
单处理器系统 |
单指令流多数据流(SIMD) |
控制部分:一个 处 理 器:多个 主存模块:多个 |
各处理器以异步的 形式执行同一条指令 |
并行处理机 阵列处理机 超级向量处理机 |
多指令流单数据流(MISD) |
控制部分:多个 处 理 器:一个 主存模块:多个 |
被证明不可能, 至少是不实际 |
目前没有,有文献称 流水线计算机为此类 |
多指令流多数据流(MIMD) |
控制部分:多个 处 理 器:多个 主存模块:多个 |
能够实现作业、任务 指令等,各级全面并行 |
多处理机系统 |
Flynn分类法中主要有两个指标:一个是指令流,一个是数据流。指令流为机器执行的指令序列;数据流是由指令调用的数据序列。无论是指令流还是数据流,它们都分为两种类型:单、多。
4.CISC和RISC
指令系统类型 |
指令 |
寻址方式 |
实现方式 |
其他 |
CISC(复杂指令集计算机) |
数量多,使用频率差别大 可变长格式 |
支持多种 |
微程序控制技术 |
研制周期长 |
RISC(精简指令集计算机) |
数量少,使用频率接近 定长格式,大部分为单周期指令 操作寄存器,只有Load/Store 操作内存 |
支持方式少 |
增加了通用寄存器 硬部线逻辑控制为主 适合采流水线 |
优化编译 有效支持高级语言 |
5.流水线
5.1 基本概念
5.2 流水线计算
首先,流水线周期是指在(取指、分析、执行)三个阶段中时间最长的一段,对应上面的例题,最长的一段时间为2ns,所以流水线周期为2ns。
100条指令全部执行完毕需要的时间为:理论公式:(2+2+1)+(100-1)*2=203ns。
100条指令全部执行完毕需要的时间为:实践公式:(3+100-1)*2=204ns。(公式中的k表示指令被分成了几段)
5.3 流水线吞吐率计算
在这个公式中,我们对比5.2中的例题,指令条数为100,流水线执行时间为203ns,所以流水线的吞吐率TP=100/203。
而流水线最大吞吐率是一种理想情况,即TPmax=1/2。(Δt=流水线周期=2ns)
5.4 流水线加速比计算
仍然参照5.2中的例题,如果不使用流水线,采用顺序执行的方法,所花费的时间为:(2+2+1)*100=500ns。而使用流水线的方法,所花费的时间为:(2+2+1)+(100-1)*2=203ns。所以流水线的加速比:S=500/203。
6.层次化存储结构
6.1 层次结构
在上图中,存储速度最快、效率最高的就是寄存器,它位于CPU中,在CPU中,拥有运算器和控制器,而在运算器和控制器中,就会存在相应的寄存器。而寄存器的容量是极小的,但是速度非常快。
速度排在第二的是Cache(高速缓存),之后依次是内存(主存)、外存(辅存)。
对于Cache而言,它内部的所有内容都来自于内存,它所存储的内容是内存中的一小部分,但是运行速度却比内存快的多。
6.2 存储器的分类
6.2.1 按存储器所处的位置分类
①内存:也称为主存,设在主机内或主板上,用来存放机器当前运行所需要的程序和数据,以便向CPU提供信息。相对于外存,其特点是容量小、速度快。
②外存:也称为辅存,如磁盘、磁带、光盘和U盘等,用来存放当前不参加运行的大量信息,而在需要时调入内存。
6.2.2 按存储器的构成材料分类
①磁存储器:用磁介质做成,如磁芯、磁泡、磁膜、磁鼓、磁带及磁盘等。
②半导体存储器:根据所用元件可分为:双极型和MOS型;根据数据是否需要刷新可分为:静态和动态。
③光存储器:利用光学方法读/写数据的存储器,如光盘。
6.2.3 按存储器的工作方式分类
①读/写存储器(RAM):既能读取数据也能存入数据的存储器。
②只读存储器:工作过程中仅能读取的存储器,根据数据的写入方式又可分为:ROM、PROM、EPROM、EEPROM等。
固定只读存储器(ROM):这种存储器是在厂家生产时就写好数据的,其内容只能读出,不能改变。一般用于存放系统程序BIOS和用于微程序控制。
可编程的只读存储器(PROM):其中的内容可以由用户一次性写入,写入后不能再修改。
可擦除可编程的只读存储器(EPROM):其中的内容既可以读出,也可以由用户写入,写入后还可以修改。
电擦除可编程的只读存储器(EEPROM):与EPROM相似,既可以读出,也可以写入,只不过这种存储器采用电擦除的方式进行数据的改写。
闪速存储器(FM):简称闪存,其特性介于EPROM和EEPROM之间,类似于EEPROM。
6.2.4 按访问方式分类
①按地址访问的存储器。②按内容访问的存储器。
6.2.5 按寻址方式分类
①随机存储器(RAM):这种存储器可对任何存储单元存入或读取数据,访问任何一个存储单元所需的时间是相同的。
②顺序存储器(SAM):访问数据所需要的时间与数据所在的存储位置相关,磁带是典型的顺序存储器。
③直接存储器(DAM):介于随机存取和顺序存取之间的一种寻址方式。磁盘是一种直接存储器。
6.3.1 主存-分类
主存可分为:随机存取存储器(RAM)和只读存储器(ROM)。对于这两种类型,一个明显的区别是:内存是属于RAM的,一旦断电之后,内存中的所有数据都将被清除掉,无法进行保存;而ROM在断电之后,仍然可以存储信息内容。
6.3.2 主存-编址
对于上面这个例题,我们首先看第一空,内存地址从AC000H到C7FFFH,共有多少K个地址单元,那么对这两个十六进制数进行相减、再加1即可,第5位:F-0=F;第四位:F-0=F;第三位:F-0=F;第二位:7-C,因为C=12,不够减,所以向高位借一位,此时第四位应该是:7+16-C=B(11,因为是十六进制,所以每借一位加16);第一位:因为被借走了一位,所以C-1=B,B-A=1;所得结果是:1BFFFH,再加1,即:1C000H(将其转换成K单位,要对结果除以1024)。将其转为十进制:(0×16^0 + 0×16^1 + 0×16^2 + C×16^3 + 1×16^4)/1024=112K。
第二空:总容量为112K×16bit,需要28片存储器芯片,每片芯片有16K个存储单元,问该芯片每个存储单元存储多少位?
也就是说:(112K×16bit)/(28×16K×a)=1,比值为1是因为我们使用这些芯片组成固定的空间,16和16约掉,K和K约掉,所以112/28a=1,即解得a=4。
6.4 相联存储器(简介)
相联存储器是一种按内容访问的存储器,其工作原理就是把数据或数据的某一部分作为关键字,按顺序写入信息,读出时并行的将该关键字与存储器中的每一单元进行比较,找出存储器中所有关键字相同的数据字,特别适合于信息的检索和更新。
6.5 Cache(高速缓存)
高速缓存中的地址映像方法:直接映像、全相联映像、组相联映像。
①直接映像:指主存的块与Cache块的对应关系是固定的。优点是地址变换简单,缺点是灵活性差、Cache块冲突率高。
②全相联映像:允许主存的任一块可以调入Cache存储器的任何一个块的空间中。优点是Cache块冲突率低、灵活性好,缺点是访问速度慢、地址变换较复杂、成本太高。
③组相联映像:是前两种方式的折衷方案,即组采用直接映像方式、块采用全相联映像方式。