冯诺依曼结构:运算器、控制器、存储器、输入设备和输出设备五大部件组成。现代计算机一般把控制器和运算器集成在一个芯片上,合称为中央处理器。 现代计算机一般以存储器为中心,使I/O操作尽可能绕过CPU,直接在I/O设备与存储器间完成,从而提高系统的整体运行效率。
重要设备:
MAR和MDR虽然是存储器的一部分,但是确实在现代CPU内的。
CPU和主存储器构成主机,计算机中除去主机的其他硬件设备统称为外部设备。
PS:DBMS和DBS是有区别的。DBMS是系统软件,而DBS是引入DBMS后的系统。
信息流程:
层次之间,下层是上层的基础,上层是下层的扩展。
CPI:指执行一条指令所需的时钟周期数 CPU执行时间= CPU周期数/主频=(指令条数*CPI)/主频 MIPS(million instructions per second):每秒执行多少百万条指令。有MIPS=指令条数/(执行时间*10^6)=主频/CPI
MFLOPS,每秒执行多少百万次浮点运算,重要的性能判断标志。
题目

17.C 解析:基准程序的CPI=2*0.5+3*0.2+4*0.1+5*0.2=3。计算机的主频为1.2GHz,即1200MHz,故该机器的MIPS=1200/3=400 18.D 解析:程序A的运行时间为100秒,除去CPU时间90秒,剩下10秒为I/O时间。CPU提速后运行基准程序A所耗费的时间T=90/1.5+10秒 19.D 解析:假设原来指令条数为x,那么原CPI就为20*f/x(注:f为CPU的时钟频率),经过编译优化后,指令条数减少到原来的70%,即指令条数为0.7x,而CPI增加到原来的1.2倍,即24*f/x,那么现在P在M上的执行时间就为:(指令条数*CPI)/f=(0.7x*24*f/x)/f=16.8秒 20.C 运行时间=指令数*CPI/主频。M1的时间=指令数*21.5,M2的时间=指令数*1/1.2,两者之比为(2/1.5):(1/1.2)=1.6
透明性:在计算机领域中,站在某一类用户的角度,如果感觉不到某个事物或属性的存在,则称“对该用户而言,某个事物或属性是透明的”。这与日常生活中透明的概念刚好相反。
例如,对于高级语言程序员而言,浮点数格式、乘法指令等这些语言的格式、数据如何在运算器中运算都是透明的;而对于机器语言或汇编语言程序员来说,指令的格式、机器结构、数据格式等则不是透明的。
码距:任意两个合法码字之间最少变化的二进制位数,称为数据校验码的码距。
奇偶校验,最高位为校验位,剩下的是信息位
缺点为只能发现数据代码中奇数位出现错误的情况,不能纠正错误。
海明码的位数:n位有效信息位,k位校验位,有n+k<=2^k-1。
海明码最高位采用全校验,全校验是对全部数据位和其他校验位采用偶校验计算出来的。
纠错理论:L-1=D+C,且D>=C,这里L是编码最小码距,D为检测错误位数,C为纠正错误位数。
第2章重点复习:补码和原码的乘法和除法 大佬的博客:数的表示与运算 PS:变形补码等同于模4补码,即符号位有两位
值得注意的一点:标准的移码中,对于n+1位,偏移量为2^n,这时候有一个很好的性质,就是移码在表示上等于补码在符号位取反后的结果。
- IEEE754不是标准的译码,它的偏移量是2^k-1,即对于32位浮点数,偏移量为127
- 从网上的回答来看,目的应当是为了对齐范围阶码全1表示无穷大(根据符号位分为正无穷和负无穷,要求尾数为0) 阶码全0表示非规格数,其中尾数全0表示机器零。 这篇文章介绍的很好。
2009年真题 浮点数加、减运算过程一般包括对阶、尾数运算、规格化、舍入和判溢出等步骤。设浮点数的阶码和尾数均采用补码表示,且位数分别为5位和7位(均含2位符号位)。若有两个数X=2^7*29/32,Y=2%5*5/8,则用浮点加法计算X+Y的最终结果是() A. 00111 1100010 B.00111 0100010 C. 01000 0010001 D.发生溢出 解析:选D 根据浮点数的加法步骤进行计算 X:00,111;00,11101 Y:00,101;00,10100 1 对阶。X、Y的阶码相减,可以目测出来是X的阶码比Y大2.根据小阶向大阶看齐的原则,将Y的阶码加2,尾数右移2位,将Y变为00,111;00,00101 2 尾数相加,得到01,00010,尾数相加结果符号位为01,故需要右规 3 规格化。将尾数右移1位,阶码加1,得X+Y:01,000;00,10001 4 判断溢出。阶码符号位为01,说明发生正溢出 本题容易误选B、C,B少了第3和第4步,C少了第4步
大端:高位低地址 小端:低位低地址 如0x12345678,大端为12 34 56 78,小端为78 56 34 12


速度、容量和价格三者不能同时取得。
DRAM需要定期刷新,重新将信息写入电容中。
特点:
来自百度知道 书上并没有明确提出这个概念,不过参考各种资料可以得出如下结论:
非易失,断电后信息保存
主存容量扩展:位扩展、字扩展、位字扩展
片选+字选
##3.5 双口RAM和多模块存储器
同一个存储器拥有左右两个独立的端口,允许两个独立的控制器同时异步地访问存储单元。当两个端口的地址不相同的时候,在两个端口上的读写操作一定不会产生冲突。 当读写同一个地址单元的时候:不同时存取或者读同一个数据不会产生冲突;同时写入或者一边读取一遍写入会产生冲突。
低位交叉编址后,可以在不改变每个模块存取周期的前提下,采用流水线的方式并行存取,提高存储器的带宽。 设模块字长等于数据总线宽度,模块存取一个字的存取周期为T,总线传送周期为r,为实现流水线方式存取,则存储器交叉模块数应大于等于m=T/r 其中,m称为交叉存取度,每经r时间延迟后启动下一个模块。如果保证流水线国祚,则连续存取m个字所需的时间为t1=T+(m-1)r
已知命中率为H,主存访问时间与cache访问时间的倍率r
cache主存系统的效率:e=访问Cache的时间/平均访存时间=1/[H+(1-H)r]
包括时间局部性和空间局部性。时间局部性指的是最近的未来要用到的信息,很可能是现在正在使用的信息,这是因为程序存在循环。空间局部性指的是最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是邻近的,这是因为指令通常是顺序存放、顺序执行的,数据一般也是以向量、数组、表等形式簇聚地存储在一起。
高速缓存由SRAM构成
CPU要访问的信息在cache中的比率称为命中率,设总命中次数为Nc,访问内存的总次数为Nm,命中率H=Nc/(Nc+Nm) 平均访问时间Ta=Htc+(1-H)tm
cache中要为每一块加一个标记,指明它是主存中那一块的副本,内容相当于主存中块的编号。 为了说明标记是否有效,每个标记至少应该设置一个有效位,该位为1的时候,表示Cache映射的主存块数据有效;否则无效。
例题 假设某个计算机的主存地址空间大小为256MB,按字节寻址,其数据Cache有8个Cache行,行长为64B,那么 1.若不考虑用于cache的一致维护性和替换算法控制位,并且采用直接映射方式,则该数据cache的总容量为多少? 2.若该cache采用直接映射方式,则主存地址为3200(十进制)的主存块对应的cache行号是多少?若采用二路组相联映射又是多少? 3.以直接映射为例,简述访存过程(设访存的地址为0123456H)

详细
采用全相联映射和组相联映射方式时,当cache的空间已经被占满时,就需要使用替换算法替换cache行。
对于Cache写命中,两种策略
写不命中:
一般非写分配法与全写法合用。写分配法通常和写回法合用。
PS:需要意识到,cache中的内容都是主存中的备份,因此在计算存储系统容量的时候不能够简单地将主存容量与cache容量相加。
- 主存地址从0开始的时候,组相联的组号需要慎重考虑是否能直接通过求余得到(仔细思考)
## 3.7 虚拟存储器
与cache的不同之处:
1. cache是为了解决系统速度,而虚拟存储器解决的是主存容量。
2. cache全由硬件实现,对所有程序员透明;而虚拟存储器由OS和硬件实现,对系统程序员不透明。
3. CPU速度为cache的10倍,而主存速度为磁盘速度的100倍,故虚拟存储器系统不命中时对系统性能的影响更大。
4. cache不命中的时候主存能直接和CPU通信,把数据调入cache中。而虚拟存储器不命中时只能先将数据调入主存,不能直接和CPU通信。PS:指令和数据可以分别存储在不同的cache中,其特点是允许CPU在同一Cache存储周期内同时提取指令和数据,由于指令执行过程取值和取数据都有可能访问cache,这一特性可以保证不同的指令同时访存。
寻址方式是指寻找指令或操作数有效地址的方式,也就是确定本条指令的数据地址以及下一条要执行的指令地址的方法。分为指令寻址和数据寻址两大类。
指令中的地址码字段叫做形式地址A,通过A结合寻址方式可以计算出操作数在存储器中的真实地址,称为有效地址EA。
指令寻址的方式有两种,一种是顺序寻址方式,另一种是跳跃寻址方式。
数据寻址:数据寻址就是如何在指令中表示一个操作数的地址,如何用这种表示得到操作数或怎样计算出操作数的地址。
指令格式:操作码+寻址特征+形式地址A









指令字长一般都取存储字长的整数倍,和机器字长没有关系。
指令周期:CPU从主存中每取出并执行一条指令所需的全部时间,也就是CPU完成一条指令的时间。 指令周期常常用若干机器周期表示,一个机器周期包含若干个时钟周期。 时钟周期,又称为节拍或T周期,是CPU操作的最基本单位。 机器周期,又称为CPU周期,是执行指令一项操作(取值、执行)的时间

对于无条件转移指令,执行的时候不需要访问内存,只包含取指阶段(包括取值和分析)和执行阶段,所以其指令周期仅包含取指周期和执行周期。 对于间接寻址的指令,为了取操作数,需要先访问一次主存,取出有效地址,然后再访问主存取出操作数,所以还需要包括间址周期。 如果存在中断的话,还会有中断周期。完整的指令周期应该包含取值、间址、执行和中断4个周期。
上述4个工作周期CPU都需要访存,只是访存的目的不相同。 CPU设置4个标志触发器FE、IND、EX和INT,分别对应取值、间址、执行和中断周期。 PS:中断周期中进栈操作是将SP减1,和传统意义上相反。原因是计算机的堆栈中都是向低地址增加,所以进栈是减1而非加1.
取值周期,任务是根据PC中的内容从主存中取出指令代码并存放在IR中。
1.PC->MAR->地址总线->主存 2. CU发出控制信号->控制总线->主存 3. 主存->数据总线->MDR->IR 4. CU发出读命令->PC内容加1
间址周期,任务是取操作数有效地址。以一次间址为例,将指令中的地址码送到MAR并送至地址总线,此后CU向存储器发读命令,以获取有效地址并存至MDR。
执行周期,任务是根据IR中的指令字的操作码和操作数通过ALUM操作产生执行结果。
中断周期,任务是处理中断请求。假设程序断点存入堆栈中,并用SP指示栈顶地址,而且进栈操作是先修改栈顶指针,后存入数据。
数据在功能部件之间的传送路径称为数据通路,描述了信息从什么地方开始,中间经过哪个寄存器或多路开关,最后传送到哪个寄存器。
控制器的主要功能:
基本原理:根据指令的要求、当前的时序及外部和内部的状态情况,按时间的顺序发送一系列微操作控制信号。由复杂的组合逻辑门电路和一些触发器构成,因此又称为组合逻辑控制器。
CPU的控制方式:控制单元控制一条指令执行的过程,实质上是依次执行一个确定的微操作序列的过程。因为每条指令和每个微操作所需的执行时间也不同,有3种控制方式:
硬布线控制单元设计步骤:
基本思想是将每一条机器指令编写成一个微程序,每一个微程序包含若干条微指令,每一条微指令对应一个或几个微操作命令。
微程序控制器的基本组成: 主要画出的是微程序控制器比组合逻辑控制器多出的部件

微程序控制器的工作流程:
微指令的编码方式:编码的目的是在保证速度的情况下,尽量缩短微指令字长
微指令的地址形成方式:
微指令的格式:

微指令控制单元的设计步骤:

超标量流水线技术:每个时钟周期可并发多条独立指令,即以并行操作方式将两条或多条指令编译并执行,为此配置多个功能部件。 超流水线技术:在一个时钟周期内再分段,在一个时钟周期内一个功能部件使用多次。 超长指令字:由编译程序挖掘出指令潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字。
2017-19 下列关于指令流水线数据通路的叙述中,错误的是() A. 包含生成控制信号的控制部件 B. 包含算术逻辑运算部件ALU C. 包含通用寄存器组和取指部件 D. 由组合逻辑电路和时序逻辑电路组成 解析:选A 流水线中各个子系统之间通过数据总线连接形成的数据传送路径称为数据通路,包含程序计数器、算术逻辑运算部件、通用寄存器组、取值部件等,不包括控制部件。
片内总线:芯片内部的总线,比如CPU芯片内部寄存器与寄存器之间、寄存器与ALUM之间的公共连接线
系统总线
通信总线:计算机系统之间或计算机系统与其他系统之间信息传送的总线,也称为外部总线。
总线控制逻辑集中于一个设备上,利用一个特定的裁决算法进行裁决,称为集中仲裁方式

每个设备有自己的仲裁号和仲裁器,每个仲裁器将从仲裁总线上得到的仲裁号与自己的仲裁号进行比较,如果仲裁总线上的号优先级高,则它的总线请求不予响应,并撤销它的仲裁号。最终,获胜者的仲裁号保留在仲裁总线上。
1.申请分配阶段:由使用总线的主模块向总线仲裁机构申请。 2. 寻址阶段:取得了使用权的主模块通过总线访问本次要访问的从模块 3. 传输阶段:主模块和从模块进行数据交换 4. 结束阶段:主模块让出总线使用权。
系统采用一个统一的时钟信号来协调发送和接收双方的传送定时关系。产生相等的间隔,每个间隔构成一个总线周期,在一个总线周期中,发送方和接收方可以进行一次数据传送。 优点:传送速度快,具有较高的传输速率;总线控制逻辑简单 缺点:主从设备属于强制性同步;不能及时进行数据通信的有效性检验,可靠性较差。
没有同一的时钟或固定的时间间隔,完全依靠双方相互发送握手信号。 通常,把交换信息的两个部件分为主设备和从设备,主设备提出交换信息的“请求”信号,从设备发出“回答”信号
根据请求和回答信号是否互锁,又分为3种类型:
并行总线因为涉及到多条线之间数据同步的问题,所以速度其实是不如串行总线快的。
基本的控制方式有4种:
除主机之外,能直接或间接与计算机交换信息的装置。
磁盘存储器
磁盘阵列 RAID通过使用多个磁盘,提高了传输率;通过在多个磁盘上并行存取来大幅提高存储系统的数据吞吐量;通过镜像功能,可以提高安全可靠性;通过数据校验,可以提供容错能力。
一个汉字内码在主存中占用2个字节,输出的字形码16*16点阵占用32个字节。
在字符显示器中的VRAM存放ASCII码以显示字符。
CPU同外设之间的信息传送实质上是对接口中的某些寄存器(即端口)进行读或写,如传输数据是对数据端口DBR进行读写操作。 接口与端口不同,端口是指接口电路中可以进行读/写的寄存器,若干个端口加上相应的控制逻辑才可以组成接口。
每一个端口对应一个端口地址
前两者更依赖于CPU中程序指令的执行。
信息交换的控制完全由主机执行程序实现,程序查询方式接口中设置一个数据缓冲寄存器(数据端口)和一个设备状态寄存器(控制端口)。当主机进行I/O操作时,首先发出询问信号,读取设备的状态并根据设备状态决定下一步操作究竟是进行数据传送还是等待。
工作流程:
CPU与I/O串行工作,一旦启动I/O,必须停止现行程序的运行,并在现行程序中插入一段程序。 CPU在信息传送过程中要花费很多时间用于查询和等待,而且一段时间内只能和一台外设交换信息,效率大大降低。
程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后又自动返回到现行程序的断点处,继续执行原程序。
根据中断源的不同,可以将中断源分为内中断和外中断两种。 每个中断源向CPU发出中断请求的时间是随机的。为了记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTRODUCE,当其状态为1时,表示中断源有请求。这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中断源中。
中断系统在一瞬间只能够响应一个中断源的请求,如果有多个中断源同时请求,需要通过中断判优逻辑确定响应哪个中断源的请求。
CPU响应中断必须满足以下3个条件:
中断隐指令:CPU响应中断后,经过某些操作,转去执行中断服务程序(由硬件直接实现)
工作流程:
1-3是中断隐指令(硬件自动完成),4-9由中断服务程序完成。
主要用于多重中断,要求CPU具备多重中断的能力
条件:
而每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容就是屏蔽字。
参见例题

DMA方式是一种完全由硬件进行成组信息传送的控制方式。具有程序中断方式的优点,即在数据准备阶段,CPU与外设并行工作。 DMA方式是在外设与内存之间开辟一条“直接数据通道”,信息传送不再经过CPU,降低了CPU在传送数据时的开销。(省去了保护、恢复CPU现场等繁琐操作)
有一个对数据传送过程进行控制的硬件,称为DMA控制器。当I/O设备需要进行数据传送时,通过DMA控制器向CPU提出DMA传送请求,CPU响应后将让出系统总线,由DMA控制器接管总线进行数据传送。 过程:
DMA传送方式:主存和DMA控制器之间有一条数据通路,因此主存和IO设备进行数据交换的时候可以不通过CPU。但是IO设备与CPU同时访存的时候可能引起冲突,3种方式:
DMA传送过程:预处理、数据传送和后处理
DMA请求的优先级高于中断请求。