第二章.数据的表示和运算
边界对齐:

小端格式(低字节在地址低位,高字节在地址高位):
0x12345678
在内存中存储就是:0xff0011a0 78 56 34 12
0xff0011a4 88 88 88 88
大端格式(高字节在地址低位,低字节在地址高位):
0x12345678
在内存中存储就是:0xff0011a0 12 34 56 78
0xff0011a4 88 88 88 88
第三章.存储系统
存放一个二进制位的叫做存储元;
若干个存储元构成的一个存储单元,一个存储单元对应一个地址码;
若干个存储单元构成一个存储体(存储矩阵).
主存储器
主存=RAM+ROM,通常RAM和ROM(主板上的ROM)一起编址.
SRAM:静态随机存储器;
- 由双稳态触发器(六晶体管MOS,RS锁存器)来实现记忆;
- 一个地址一次性可以送入
- 数据读出时不会破坏原有状态;
- 密度低,速度最快,造价最高;
DRAM:动态随机存储器;
- 由一个电容存储一个二进制位,一个存储元就只有一个晶体管;
- 采用了地址复用技术,一个地址分成行列两个地址,分两次送入
- 数据读出时会破坏原有状态,会自动进行读后重写(数据再生,占用1个读/写周期);
- 电容上的电荷只能维持较短时间,需要时不时的刷新(给电容充电,一般是2ms);
- 密度高,速度较快,造价较高
DRAM刷新(以行为单位,由内存自动完成,cpu不知道):
- 集中刷新:一个刷新周期中,固定一段时间用作刷新工作;
- 优:读写时间不受刷新的影响;
- 缺:刷新时间不能访问存储器;
- 分散刷新:每个读写操作分两半,前一半用作读写,后一半时间用作刷新操作;
- 优:无死区;
- 缺:加长了系统的存储周期;
- 异步刷新:一个刷新周期只刷新一行,即每隔[一个刷新周期(例:2ms)/行数(例:128行) ]的时间,刷新一行;
- 优:使死时间分布更加均匀;
注:读后重写和刷新本质上都是对存储进行先读再写的操作,
不过读后重写只需要重写被读出的存储单元,以存储单位为单位,
而刷新则是对全部行的周期性维护,以行为单位(一行包含多个存储单元);
DRAM地址复用技术:
令行为r,列为c:
地址总数=r*c;
为了减少刷新开销,令r尽量少, r≤c.
DRAM行缓冲器(用于缓冲一行数据,常用SRAM或者SDRAM实现):行缓冲器大小=列数*数据线宽度.
行缓冲器可以应对突发传输,例:传输多个连续的存储单元数据.
ROM:只读存储器;
类别:
- MROM(Mask Read-Only Memory)——掩模式只读存储器:
- 优:可靠性高,集成度高,价格便宜
- 缺:不可更改,灵活性差
- PROM(Programmable Read-Only Memory)——可编程只读存储器:
- 可编写一次,一次过后无法更改
- EPROM(Erasable Programmable Read-Only Memory)——可擦除可编程只读存储器:
- 可多次更改
- UVEPROM(ultraviolet rays)—— 用紫外线照射8~20分钟,擦除所有信息
- EEPROM(也常记为E2PROM,第一个E是Electrically)——可用“电擦除”的方式,擦除特定的字:
- Flash Memory ——闪速存储器(注:U盘、SD卡就是闪存)
- 在EEPROM基础上发展而来,断电后也能保存信息,且可进行多次快速擦除重写
- 注意:由于闪存需要先擦除在写入,因此闪存的“写”速度要比“读”速度更慢
- SSD(Solid State Drives)——固态硬盘
- 由控制单元+存储单元(Flash芯片)构成,与闪速存储器的核心区别在于控制单元不一样,但存储介质都类似,可进行多次快速擦除重写.特点:速度快、功耗低、价格高.
主存储器构成

MAR位数与地址线宽度一致
MDR位数与数据线宽度一致
多模块存储器
- 单体多字寄存器:
- 一个存储单元存储m个字,每次读取m个字,总线宽度也要扩展为m个字,一次性读出.
- 多体并行存储器:
- 高位交叉编址:相当于存储器扩容,运行速度不变;
- 低位交叉编址:低位地址依次分布在各个存储模块上,采用流水线思想,连续读取相邻单元时,大大提升速度;
- 轮流启动:一个模块一次读写的位数等同于数据总线的宽度,m(模块数)≥T(周期)/r(总线周期),连续读取相邻存储单元时,可使速度提高m倍;
- 同时启动:所有(m个)模块并行一次读写的位数等同与数据总线的宽度,同时启动m个模块,构成一个存储字;
外部存储器
1.磁盘存储器:
硬盘的主要操作是寻址、读盘、写盘。每个操作都对应一个控制字,硬盘工作时,第一步是取控制
字,第二步是执行控制字。
硬盘属于机械式部件,其读写操作是串行的,不可能在同一时刻既读又写,也不可能在同一时刻读
两组数据或写两组数据。
优点:
- 存储容量大,价格低;
- 记录介质可重复使用;
- 记录信息可长期保存,断电不丢失;
- 非破坏性读出;
缺点:
- 速度慢;
- 机械结构复杂,容易坏;
- 对工作环境要求较高;
磁盘存储器组成:
磁盘驱动器:驱动磁盘转动并在盘面上通过磁头进行读/写操作;
磁盘控制器:磁盘控制器与主机的接口,负责接收并解释CPU发来的命令,并向磁盘驱动器发起控制信号;
盘片:一个磁盘有一个或两个记录面(磁头数),一个记录面有若干条磁道(柱面数),一条磁道有若干个扇区(块,是磁盘最小单位)

磁盘高速缓存:
在内存开辟一块空间用作缓冲送到磁盘的数据;
写磁盘时,是按”簇”为单位进行的,可以避免频繁的进行小数据量写盘;
磁盘的性能指标:
1.磁盘的容量:
非格式化指的是可利用的磁化单位总数量;
格式化指的是按某种记录格式所能存储的信息总量;
2.记录密度:
道密度:沿磁盘半径方向单位长度上的磁道数;
位密度:磁道单位长度上能记录的二进制代码位数;
面密度:位密度和道密度的乘积
3.存取时间:
存取时间=找磁道时间(寻道时间)+找扇区时间(旋转延迟时间)+数据传输时间
寻道时间和旋转延迟时间通常取平均值(盘片半径的一半和盘片半周)
4.数据传输速率:
数据传输速率=磁盘转速*磁道容量
磁盘地址:

RAID:
思想:把多个物理硬盘当作一个逻辑硬盘,利用磁盘价格便宜的特点,提高存储性能,可靠性,安全性;
RAID0(条带化技术):类似于多体存储器的低位交叉编址(逻辑上相邻的多个扇区,其实来自多个不同物理硬盘),提升了读写性能,存储容量,但是没有容错能力;
RAID1:两个硬盘互为镜像;
RAID2-5:通过数据校验码提高容错能力;
2.固态硬盘:
特点:价格高,抗震好,能耗低,安全性高;
随机读快,随机写较慢,因为写之前可能需要先转移数据;
SSD组成:由一个或者多个闪存芯片和闪存翻译层构成;
闪存翻译层:将cpu的读写信号翻译成对闪存芯片的控制信号
闪存芯片:一个闪存芯片由多个块组成,一个块由多张页组成;
块:数据以块为单位擦写,要想写一个页,需要把整个块擦除重写,但是读一个页可以无限次;
页:SSD读/写的最小单位,类似于磁盘的扇区(块);
磨损均衡:
闪存擦写是有寿命的;
动态磨损均衡:写入数据时,优先选择擦除次数少的内存块
静态磨损均衡:SSD会监视并自动调整新老块的数据,使得老块以读为主,同时腾出新块的空间,以应对后续的写入工作;
高速缓冲存储器
高速缓存技术利用局部性原理(把要访问的数据的”周围”一并放入Cache),大大提高程序运行速度;
例:二维数组在内存中是一行接着一行连续存放的,由于局部性原理,按行读数据就可以大大减少访存的次数,直接在Cache中就可以找到数据;
Cache以块为单位来划分,便于与主存交换信息,Cache块也称为Cache行,块(行)的长度称为块长(行长);
例:设块为1KB,按字节编址,主存的地址宽度为22位:可分为12位的块地址和10位的块内地址;
字节编址:以字节为单位,划分地址,一个地址存放一个字节
Cache命中率x(设Cache命中次数为m,内存命中次数为n):
x=m/(m+n)
平均访问时间(T):
1.先访问Cache再访存(设Cache命中率为x,访问Cache所需时间为t1,访存所需时间为t2):
T=t1*x+(1-x)*(t1+t2);
2.同时访问Cache和内存(设Cache命中率为x,访问Cache所需时间为t1,访存所需时间为t2):
T=t1*x+(1-x)*t2;
Cache和主存的映射关系:
注意按什么编址,若按字节编址,块大小为64B,则块内地址长度为6位
1.直接映射:最快,也最浪费时间;
实现方法:Cache行号=主存块号 mod Cache总行数
地址格式:
x=log2(Cache行数)
标记位(主存块号前几位,可以少记录x位的数据)+Cache行号(主存块号末x位)+块内地址
直接映射只需要对比更少的标记位数,且用了哈希的思想,需要对比一次标记即可(若冲突,则直接覆盖)
优点:速度快
缺点:空间利用率不高,命中率低,无法解决块冲突问题;

2.全相联映射:最慢;
实现方法:随便放,哪里有空位放哪里
地址格式:标记位(主存块号的位数)+块内地址
可能需要比对所有块的标记,所以最慢
优点:空间利用率高,命中率高,成本高
缺点:速度慢

3.组相联映射:折中;
实现方式:
所属分组=主存块号 mod 分组数
每n个Cache行为一组,组外用哈希的思想,组内随便放;
地址结构:
x=log2(总分组数)
标记位(主存块号前几位,可以少存x位的数据)+组号(主存块号末x位)+块内地址
特点:折中,综合效果最好;

Cache替换算法:
1.随机替换:实现简单,但完全没考虑局部性原理,命中率低,实际效果很不稳定
2.先进先出算法(FIFO):若Cache已满,则替换最先被调入Cache的块
可能会出现抖动现象:频繁的换入换出现象(刚被替换的块很快又被调入)
3.近期最少使用算法(LRU, Least Recently Used)——为每一个Cache块设置一个“计数器”,用于记录
每个Cache块已经有多久没被访问了。当Cache满后替换“计数器”最大的

4.最不经常使用算法(LFU, Least Frequently Used)——为每一个Cache块设置一个“计数器”,用于记
录每个Cache块被访问过几次。当Cache满后替换“计数器”最小的

Cache写策略:
写命中:
- 回写法:当cpu对Cache写命中的时候,只写入Cache,并且设置一个标记位(赃位,修改位),在Cache块被替换的时候,
- 若标志位为1(表示数据被修改过),则写回主存;
- 若标志位为0,则无须写回,直接覆盖.
- 全写法(直写法):当cpu对Cache写命中的时候,同时把数据写入Cache和主存,一般还有有一个先进先出的写缓冲(SRAM)用于减少多次访存的性能损耗;
写不命中:
- 写分配法:每次写不命中时,更新主存单元,同时把该主存块调入Cache;
- 非写分配法:每次写不命中时,只更新主存单元,不把主存块调入Cache;(读不命中的时候会调入Cache)
写分配法通常搭配写回法(以Cache为主),非写分配法通常搭配全写法(以主存为主);
多级Cache:

Cache与Cache之间采用全写法+非写分配法,Cache与主存之间采用回写法+写分配法;
L1Cache分离出指令Cache和数据Cache是为了支持指令预取技术(指令流水线技术的一部分),减少存取数据和指令的冲突
虚拟存储器
虚拟存储器将主存和辅存的地址空间统一编址,形成一个巨大的地址空间.
页的出现就是为了解决进程需要在内存中连续存储的问题。
进程被分成一个个的页存放在内存中,内存则用页框保存它,页框在内存中是离散分布的。页面是离散存储的,而页内是连续存储的。


页式虚拟存储器:把地址空间划分为若干个大小固定的页
虚拟地址空间中的页称为虚拟页(虚页)
主存空间中的页称为物理页(实页)
主存和辅存按页进行数据交换;
页表:
存放了若干个页表项,页表项在内存中是连续存储的(便于地址转换),每个页表项包含了虚拟页的信息.
为了防止页表过长,同样也可以把页表分组,离散的存储在内存块中,并加入二级页表来记录各个分组对应的内存块号(同样地,二级页表的页表项也是连续存储在内存中的)。
引入多级页表以后,注意各级页表大小就不能超过一个页(页框/内存块)了,并且寻找数据的访存次数也会随之增加,1级需要2次访存,2级就需要3次访存了。
每个进程都有一张常驻于内存的页表(属于PCB程序控制块的一部分),每次切换进程时,只需要更改页表基址寄存器PTBR(记录了页表在主存中的首地址)中的地址即可;
页表使用流程:
通过页表基址寄存器确定哪张页表;
通过虚拟地址中的虚拟页号确定页表项;
通过页表项的”存放位置”字段确定物理页号(假设页表项的有效位为1);
通过物理页号拼上页内偏移在内存中找到具体数据.

- 若有效位为1,该页表项指向的虚拟页已经在内存中,存放位置记录就是物理页号;
- 若有效位为0,该页表项指向的虚拟页还未调入内存:
- 若存放位置不为null,指向的是磁盘上该虚拟页的首地址;
- 若存放位置为null,则说明该虚拟页没有内容;
对于采用虚拟存储器的系统,指令中给出的地址是虚拟地址;
CPU内部的MMU将虚拟地址转换成主存的物理地址;
注:虚拟页内偏移等同于物理页内偏移.

流程:
1.cpu给出指令中的虚拟地址,MMU将虚拟地址中的虚拟页号结合页表基址寄存器转换成页表项地址,并通过该地址访问主存中相应的页表项;
2.主存返回给MMU页表项;
3.若有效位为1,则MMU可通过页表项中存放着的物理页号,加上页内偏移构造出数据的物理地址,在主存中找到数据,主存返回数据;

3.有效位为0,则表示缺页,操作系统执行缺页异常处理程序;如果页表满了,则根据替换算法进行替换,如果赃位为1,把页面调出到磁盘; 缺页处理程序从磁盘调入新的页面到主存,并更新相应的页表项;此时不在缺页,MMU再次通过主存中的页表项地址,访问主存中的相应页表项

结合Cache的页式虚拟存储器的访问流程:
注:为了方便主存和Cache进行数据交换,会把数据分块,故页表也会被分为数个页表块,相对应的虚拟页称之为数据块; 一部分页表块和数据块也可能作为数据副本存放在Cache内部;


快表:
快表可以看成一个小的Cache,专用用来存放经常需要访问的页表项,它是一个独立的器件;
若快表项有效位为1,则说明页表项已调入快表,物理页号字段存放的是数据的物理页号;
若快表项有效位为0,则说明页表项未调入快表,物理页号字段存放的是页表项的物理页号;
由全相联和组相联两种地址映射方式,快表缺失时常使用随机替换算法;


若虚拟地址的TLB标记=该组内某个页表项TLB标记,且有效位=1,则把该组内的该页表项的物理页号输出,与业内偏移拼接出物理地址.
1.cpu给出虚拟地址,MMU通过虚拟页号从快表中找到页表项
2.快表返回页表项给MMU,MMU检索页表项数据
3.若有效位为1,则说明物理页号字段记录的正是数据的页号,MMU拼接出物理地址,通过该物理地址找到数据,存储器返回数据;
若有效位为0,则说明物理页号字段记录的是页表项的页号,MMU拼接出页表项地址,通过该地址找到页表项,调入快表后,再次通过页表项的物理页号字段,拼接出物理地址,通过该地址找到数据,存储器返回数据。


TLB命中:物理页号字段存的就是数据的物理页号,则说明页一定命中;
页命中:说明页一定在主存中,可能也在Cache中;

注:1.TLB未命中一定需要访存(逻辑上的访存,也可能直接Cache命中,不去真正的访存);
2.若TLB和页都未命中,直接调用缺页处理程序,则不会去访问Cache,故当TLB和页均丢失时,Cache不可能命中.
第四章.指令系统
指令寻址:通过pc的值,从内存中取出指令(cpu始终通过pc给出的地址找到指令)
(pc始终指向下一条指令的地址)
顺序执行:执行完指令pc自增1,指向下一条;
跳跃寻址:若满足跳转条件,则修改pc值,cpu执行下一条指令的时候即可实现跳转;
数据寻址:从指令给出的地址找到对应的操作数
10种
第五章.中央处理器

cpu功能:1.指令控制 2.操作控制 3.时间控制 4.数据加工 5.中断处理

哪个触发器被置为1,则表示处在哪个周期.
单周期CPU:一个时钟周期完成一条指令,如果一个程序有多条指令,则时钟周期的时间根据执行时间最长的那条指令为主。执行一条指令就需要一个时钟周期则CPI为1。
时钟周期长度为执行时间最长的那条指令所花的时间
多周期CPU:一条指令被分成了若干个阶段,假设为n个,每执行一条指令需要花费n个时钟周期,所以执行一条指令就需要n个时钟周期CPI为n。
减少了一条指令所花的时间,但是不能并行
流水线CPU:力争一个时钟周期完成一条指令,是多周期CPU的优化,使得多条指令的不同阶段可以并行运行,理想情况下CPI为1.
指令执行过程:
取指周期流程:
1.PC的值传入MAR;(PC)->MAR
2.CU向控制总线发起一个读信号;1->R
3.MAR通过地址总线将地址送入存储器;存储器接收后将数据通过数据总线送入MDR;MEMORY(MAR)->MDR
4.MDR数据送入IR进行分析;(MDR)->IR
5.CU发起控制信号,形成下一条指令地址;(PC)+1->(PC)

间址周期流程(在取址周期之后):
1.将指令的地址码送入MAR;ADDRESS(IR)->MAR
2.CU向控制总线发起一个读信号;1->R
3.MAR通过地址总线将地址送入存储器;存储器接收后将数据通过数据总线送入MDR;MEMORY(MAR)->MDR
4.MDR数据(此时是有效地址)送入IR进行后续操作;(MDR)->ADDRESS(IR) (IR的地址码部分)
执行周期流程:
中断周期流程:
1.CU控制SP减1,然后SP的值送入MAR;(SP)-1->(SP),(SP)->MAR
2.CU向控制总线发起一个写信号;1->W
3.将断点信息(PC的值)送入MDR;(PC)->MDR
4.(压栈操作)MDR数据送入MAR指向的存储器中的位置;MDR->MENORY(MAR)
5.CU控制将中断服务程序的入口地址送入PC;向量地址->PC

内部总线:cpu内部连接各个寄存器以及运算器之间的总线;
系统总线:指的是cpu,内存,通道,和各类I/O接口之间互相连接的总线;
数据通路:
组合逻辑元件:ALU,译码器,多路选择器,三态门等;
时序逻辑元件(需要脉冲信号的元件):所有寄存器组,程序计数器;
用三态门控制数据通路的连接与断开。
CPU采用总线连接方式时,总线上信号流动规则是:每个时刻只有一个器件发出信息,每个时刻可以有多个器件接受信息。
单总线数据通路:
将ALU以及所有寄存器都连接到一个内部总线上。
为什么单周期cpu不能采用单总线数据通路?
答:一条指令的完成大致可分为“取指->分析->执行”三个步骤,但是单周期处理器要求指令的指令周期为一个时钟周期,也就是要求上述三个步骤要在一个时钟周期内完成,而一个时钟周期内一条总线上的控制信号是不变的。因此必须增加总线条数,这样才能保证“取指”“分析”“执行”三个步骤 在一个时钟周期内,互不冲突地利用总线来完成所有操作。
多总线数据通路:
有两条或者更多内部总线,可以同时在多个总线上传输不同的数据,提升效率。

控制器:
硬布线控制器设计:

T(n):表示一个节拍,一个节拍内可以并行完成多个“相容的”微操作.
一个微命令对应一个微操作
同一个微操作可能在不同指令的不同阶段被使用

例:FE和T0接一个与门,输出端为C1,当FE=1,T0=1,C1输出高电平,即执行C1对应的微操作.


罗列出所有指令在各个阶段的微操作序列,就可以知道在什么情况下需要使用这个微操作





硬布线控制器的特点:
指令越多,设计和实现就越复杂,因此一般用于RISC(精简指令集系统)
如果扩充一条新的指令,则控制器的设计就需要大改,因此扩充指令较困难。
由于使用纯硬件实现控制,因此执行速度很快。微操作控制信号由组合逻辑电路即时产生。
微程序控制器:
程序>指令=微程序>微指令>=微操作=微命令(指令对应微程序、微操作对应微命令,每条微指令对应一个或多个微操作)
指令:机器指令的缩写,也可以看成汇编指令,一条机器指令对应一个微程序,单位为指令周期;
微程序:对应一条机器指令,一个微程序由多条微指令构成;
1指令周期=1机器指令周期=1微程序周期=n机器周期
微指令:一个微指令包含多个微命令(微操作),一个微指令占用一个节拍(一个时钟周期);
1机器周期=1CPU周期=n微指令周期=n时钟周期
微命令:对应一条微操作,例:M(MAR)->MDR;
1微指令周期=1时钟周期=1节拍=n微操作=n微命令
一个指令周期包含多个机器周期



由于取指周期,间指周期,中断周期一般是公共的,故如果说某指令系统中有n条机器指令,则CM中微程序段的个数至少是n+1个;


静态微程序设计和动态微程序设计
- 静态
微程序无需改变,采用 ROM
- 动态
通过 改变微指令 和 微程序 改变机器指令
有利于仿真,采用 EPROM

指令流水线:
MIPS架构

IF:取指令
ID: 译码并从寄存器中取数
EX:执行运算或是计算地址
MEN:访问内存读/写数
WB:将执行结果歇会寄存器堆
影响流水线的因素:
1.结构相关(资源冲突):由于多条指令在同一时刻争用同一资源而形成的冲突.
解决办法:1.后一相关指令暂停一周期
2.cache分成数据cache和指令cache
2.数据相关(数据冲突):数据相关指在一个程序中,存在必须等前一条指令执行完才能执行后一条指令的情况,
则这两条指令即为数据相关。
解决办法:1.把遇到数据相关的指令及其后续指令都暂停一至几个时钟周期,直到数据相关问题消失后再继续执 行。可分为硬件阻塞(stall)和软件插入“NOP”两种方法。
2.数据旁路技术: alu输出端直连某一alu输入端。
3.编译优化:通过编译器调整指令顺序来解决数据相关
3.控制相关(控制冲突):当流水线遇到转移指令和其他改变PC值的指令而造成断流时,会引起控制相关。
1.转移指令分支预测。简单预测(永远猜ture或false)、动态预测(根据历史情况动态调整)
2.预取转移成功和不成功两个控制流方向上的目标指令
3.加快和提前形成条件码
4.提高转移方向的猜准率
多处理器:
分类:


硬件多线程:

第六章.总线
总线是一组能为多个部件分时共享的公共信息传送线路.
总线的特性:
1. 机械特性:尺寸、形状、管脚数、排列顺序
2. 电气特性:传输方向和有效的电平范围
3. 功能特性:每根传输线的功能(地址、数据、控制)
4. 时间特性:信号的时序关系
总线分类:
1.按数据传输格式分:

串行总线:
优点:
只需要一条传输线,成本低廉,广泛应用于长距离传输;
应用于计算机内部时,可以节省布线空间。
缺点:
在数据发送和接收的时候要进行拆卸和装配,要考虑串行-并行转换的问题。
并行总线:
优点:
总线的逻辑时序比较简单,电路实现起来比较容易。
缺点:
信号线数量多,占用更多的布线空间;远距离传输成本高昂;由于工作频率较高时,并行的信号线之间会产生严重干扰,对每条线等长的要求也越高,所以无法持续提升工作频率。(电气性质导致)
串行总线速度未必一定比并行总线慢,串行总线可以通过提高工作频率的方式在速度方面反超并行总线.
2.按总线功能分:
1.片内总线
片内总线是芯片内部的总线。它是CPU芯片内部寄存器与寄存器之间、寄存器与ALU之间的公共连接线。
2.系统总线
系统总线是计算机系统内各功能部件(CPU、主存、I/O接口)之间相互连接的总线。按系统总线传输信息内容的不同,又可分为3类:数据总线、地址总线和控制总线。
1)数据总线用来传输各功能部件之间的数据信息,它是双向传输总线,其位数与机器字长、存储字长有关。
2)地址总线用来指出数据总线上的源数据或目的数据所在的主存单元或I/O端口的地址,它是单向传输总线,地址总线的位数与主存地址空间的大小有关。
3)控制总线传输的是控制信息,包括CPU送出的控制命令和主存(或外设)返回CPU的反馈信号。(对于单条控制总线,它的方向是单向的;对于多条控制总线,宏观上是双向的)
3.通信总线
通信总线是用于计算机系统之间或计算机系统与其他系统(如远程通信设备、测试设备)之间信息传送的总线,通信总线也称为外部总线。
3.按时序控制分:
1.同步总线:各个部件通过统一的时钟信号进行同步,在规定的节拍内进行规定的总线操作,完成信息传输.
2.异步总线:各个部件没有统一的时钟信号,而以信号握手的方式进行协调各个部件之间的信息传输,总线操作时许不固定.
系统总线的结构:
单总线结构:

双总线结构:

三总线结构:

总线结构:

总线性能指标:
1.总线的传输周期(总线周期):
一次总线操作所需的时间(包括申请阶段、寻址阶段、传输阶段和结束阶段),通常由若干个总线时钟周期构成。
2.总线的工作频率:
总线上各种操作的频率,为总线周期的倒数。
若总线周期=N个时钟周期,则总线的工作频率=时钟频率/N。
实际上指一秒内传送几次数据。
3.总线时钟周期:
即机器的时钟周期。计算机有一个统一的时钟,以控制整个计算机的各个部件,总线也要受此时钟的控制
4.总线的时钟频率:
即机器的时钟频率,为时钟周期的倒数。
若时钟周期为T,则时钟频率为1/T。
实际上指一秒内有多少个时钟周期
总线周期与总线时钟周期的关系比较魔幻,
大多数情况下,一个总线周期包含多个总线时钟周期
有的时候,一个总线周期就是一个总线时钟周期
有的时候,一个总线时钟周期可包含多个总线周期
5.总线宽度:
又称为总线位宽,它是总线上同时能够传输的数据位数,通常是指数据总线的根数,如32根称为32位(bit)总线。
6.总线带宽:
可理解为总线的数据传输率,即单位时间内总线上可传输数据的位数,通常用每秒钟传送信息的字节数来衡量,单位可用字节/秒(B/s)表示。
总线带宽=总线工作频率×总线宽度(bit/s)=总线工作频率× (总线宽度/8) (B/s)
7.总线复用:
总线复用是指一种信号线在不同的时间传输不同的信息。可以使用较少的线传输更多的信息,从而节省了空间和成本。

8.信号线数
地址总线、数据总线和控制总线,3种总线数的总和称为信号线数。
例题:

总线周期的四个阶段:
1)申请分配阶段:由需要使用总线的主模块(或主设备)提出申请,经总线仲裁机构决定将下一传输周期的总线使用权授予某一申请者。也可将此阶段细分为传输请求和总线仲裁两个阶段。
2)寻址阶段:获得使用权的主模块通过总线发出本次要访问的从模块的地址及有关命令,启动参与本次传输的从模块。
3)传输阶段:主模块和从模块进行数据交换,可单向或双向进行数据传送。
4)结束阶段:主模块的有关信息均从系统总线上撤除,让出总线使用权。
总线定时方式:
1.同步定时方式(同步通信):
同步定时方式是指系统采用一个统一的时钟信号来协调发送和接收双方的传送定时关系。
若干个时钟产生相等的时间间隔,每个间隔构成一个总线周期。
在一个总线周期中,发送方和接收方可进行一次数据传送。
因为采用统一的时钟,每个部件或设备发送或接收信息都在固定的总线传送周期中,一
个总线的传送周期结束,下一个总线传送周期开始。
优点:传送速度快,具有较高的传输速率;总线控制逻辑简单。
缺点:主从设备属于强制性同步;不能及时进行数据通信的有效性检验,可靠性较差。
同步通信适用于总线长度较短及总线所接部件的存取时间比较接近的系统。
2.异步定时方式(异步通信):
在异步定时方式中,没有统一的时钟,也没有固定的时间间隔,完全依靠传送双
方相互制约的“握手”信号来实现定时控制。
主设备提出交换信息的“请求”信号,经接口传送到从设备;从设备接到主设备
的请求后,通过接口向主设备发出“回答”信号。
根据“请求”和“回答”信号的撤销是否互锁,分为以下3种类型。
1)不互锁方式
2)半互锁方式
3)全互锁方式

优点:总线周期长度可变,能保证两个工作速度相差很大的部件或设备之间可靠地进行
信息交换,自动适应时间的配合。
缺点:比同步控制方式稍复杂一些,速度比同步定时方式慢.
3.半同步通信:
半同步通信:统一时钟(同步通信)的基础上,增加一个“等待”响应信号WAIT.
wait响应信号线会在每个时钟到来时,采样wait信号,若无效则说明数据没准备好,若有效,再去数据线上取数据.
适用于系统工作速度不高,但又包含由许多速度差异较大的各类设备组成的简单系统.

优点:控制方式比异步简单,各模块在系统时钟的控制下同步工作,可靠性较高.
缺点:系统时钟不能要求太高,所以系统工作速度不高.
4.分离式通信:

优点:在不传送数据的时候释放总线,使总线可接受其他设备的请求,不存在空闲等待时间.
缺点:控制复杂,开销大.
第七章.I/O系统
cpu通过io接口(设备控制器)与io设备进行通信


前两个是由程序控制的,DMA由硬件控制
程序查询方式中,用户进程不会被阻塞.


cpu发出io指令后由通道去完成对io设备的后续工作,通道程序会提前编制好存放在内存中。

地址线:通过地址总线可以指定数据存储器还是状态/控制存储器
控制线:发出读写信号,以及接受中断请求。
如何确定要操作的设备?
每个设备对应一组寄存器,操作不同的寄存器就是在操作不同的设备

程序查询方式:

该图所示为独占查询方式,cpu花费全部时间用于查询io状态。
还有一种定时查询方式,每隔一段时间就查询一次io状态。
程序中断方式
中断周期时会检测中断信号

中断处理流程(单中断):1-3为硬件自动完成
1.关中断:关中断,防止不被新的中断打断
2.保存断点:保存该程序pc的内容(下一条指令的地址)
3.引出中断服务程序:取出中断服务程序的入口地址,传给pc
硬件向量法:由硬件产生向量地址,通过向量地址找到入口程序

中断处理程序流程(软件实现):
1.保护现场:保存原程序各个寄存器的内容,将它们入栈
2.中断服务(执行设备服务):主体部分,中断服务程序控制数据传送
3.恢复现场:将原程序的数据出栈,送回原来的寄存器处
4.开中断,中断返回:返回原程序断点处

中断屏蔽技术主要用于多重中断,CPU要具备多重中断的功能,须满足下列条件。
① 在中断服务程序中提前设置开中断指令。
② 优先级别高的中断源有权中断优先级别低的中断源。
每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字
中断屏蔽字:置1时屏蔽中断源,置0时不屏蔽中断源,且需要屏蔽自身中断源,置1。
中断优先级才是响应优先级。
中断屏蔽字可以改变处理优先级。

多重中断方式在保护现场时关中断,执行中断处理程序时开中断。


DMA方式传输:
DMA对于系统总线有着绝对控制权,DMA控制器工作时会接管系统总线,使用结束后会还给cpu
对于DMA方式传输,cpu只需要进行预处理和善后工作即可,其余时间可继续执行程序
(一个完整的DMA过程主要由DMA控制器控制,部分需要cpu控制)
预处理:初始化DMA控制器中寄存器的内容,主存的起始地址,IO设备起始地址,传送数据个数
善后工作:响应DMA控制器的中断请求,执行中断服务程序


外设准备数据,每当填满数据缓冲寄存器就发起一次DMA控制请求(接管总线)。

在DMA控制器访问内存时,cpu将禁止访问

