计算机组成原理(2)

通信总线

取地址,虽然是地址,但是cpu在取的时候只是数儿而已,所以是用数据总线
usb主要是通信功能,数据功能,通电……不至于

总线就是机器、部件、机器部件彼此通信的通道
分为串行通讯(单条1位宽,一位一位按照顺序分时传送)、并行通讯(比如八条线)
并行通讯适用于近距离的,前者是远距离,都是距离越远效率越低,短距离内并行数据速率高

系统总线(数据总线)可以传输:指令、操作数(其实是一回事儿)

进入cpu的只能是数据线
中断类型号:从外设到cpu,还是从数据总线进去的,转中断处理
握手信号:控制总线来管理(层次更低)

tcp有链接,必须握手
udp无连接

cpu插板
引脚(就是一个通道或者说是接口吧)(连接主线的接入点)
主存插板(内存条)

总线特性

io插板
bus就在pcd板内,线路板的作用归结集成到一起
很多已经直接将对应的芯片安装在主板上,很多插卡已经做成了专用芯片,减少了插槽,使其结构更加合理

机械特性
1.机械连接方式
电气特性
2.每一根线上传输信号的方向和有效电平范围,cpu发出的是输出,送入的输入,地址总线是单向输出线,数据总线是双向传输线,高电平是1,低电平是0,控制总线都是单向,有输入和输出
功能特性
3.每根传输线的功能,地址总线指出地址码,数据总线传递数据,控制总线发出控制信号(向或是从cpu发出的)
时间特性
4.总线中的一根什么时间内有效,有效时序

总线性能指标:

总线宽度:数据线的根数
总线带宽:单位时间总线上传输的数据的位数,也即是每秒传输信息的字节数
标准传输率:每秒传输的最大字节数
时钟同步/异步:同步或者不同步(与时钟)
总线复用:分时复用地址线和数据线(地址接收,数据接收,数据发送)(归根结底是因为接收发送的借口复杂)(也就是地址线和数据线用一组物理线路)
信号线数:地址线、数据线和控制线的总和
总线控制方式:并发、自动、仲裁(处理同时请求)、逻辑、计数
负载能力:可以连接的扩增电路板的数量
pcie、usb、agp、rs232是常见的总线

总线标准

crt显示器

usb:即插即用,带电操作,热插拔
级联方式连接多台外设,一转多
通信总线,连接不同外设
同时只能传输一位数据(因为是串行的)

存储总线可支持突发传送方式(运用局部性访问一部分地域,快于随机访问(只是一个字节))(burst)
总线之间通过桥接器相连(控制器)
pci是串行

总线控制

多个部件同时提出总线请求——总线判优控制——仲裁
bg——总线同意
br——总线请求
bs——总线忙

有无控制功能可以分为主设备和从设备

总线判优控制分为集中式和分布式,前者将控制逻辑集中在一处,后者将控制逻辑分散在与总线连接的各个部件设备上

1链式查询中距离控制部件最近的设备具有最高的优先级,只需几根线就能实现优先次序,容易扩充设备,但对电路设备敏感,优先级别低的设备很难获得请求
2计时器定时查询,br总线请求,总线控制部件接收到br请求信号后,其计数器开始计数,通过地址线向设备发出地址信号,当某个请求占用总线的设备地址与计数值一致时就获得总线使用权,计数可以从0开始,优先次序被固定就不变,也可以从上一次终点开始,即循环方法,此时设备使用总线的优先级相等,初始值也可以从程序设置,对故障容错高
3独立请求方式
设备请求时就发送信号,总线控制部件中有一排电路,可根据优先次序确定响应设备请求,响应速度快,优先次序控制灵活,但是控制线数量多,复杂
总而言之是链式是两根,计数器查询是 logn(允许接纳的最大设备数),独立请求是 2n

总线通信控制

先发送地址,然后是读取允许的命令,然后是读数据(这些都是发起),最后有结束时刻
发送地址,把数据放在总线上,开始读取,但是要维持数据,写就是向低速设备上写
连续的时候只发起一个地址,其他就是读的操作(操作要分开)

众多部件争夺总线使用权的时候就应该是按照优先等级来解决,在通信时间上就应该按照分时方式来处理,就是获得使用权的先后顺序
一次总线操作的时间就称之为总线操作,分为几个阶段
1.申请分配阶段,由需要使用的模块提出申请,然后总线的仲裁机构决定
2.寻址阶段,取得了使用权的模块通过总线发出本次要访问的地址和有关命令,启动从模块(也就是目标)
3.传数阶段,主模块和从模块进行数据交换,这个是经由数据总线
4.结束阶段,所有的主模块信息从系统总线上撤除,也就让出了总线使用权

解决问题:如何让双方获知传输开始结束,通信双方如何协调配合,
1.同步通信

通信双方由统一时标控制数据传送称为同步通信,所谓时标,由cpu的总线控制部件来发出,送到总线的所有部件上,也可以由各自的时序发生器来发出,但是必须由总线控制部件发出的时钟信号对其进行同步

cpu在t1上升沿发出了地址信息,在t2上升沿发出了读命令(与地址信号相符合的输入设备按照命令进行一系列内部操作,且必须在t3上升沿到来之前将cpu所需数据发送到数据总线上);t3周期内将数据线上的信息送到其内部寄存器中,t4上升沿撤销读命令(输入设备不再传送数据,并且撤销对数据总线的驱动)
t1:主模块发地址
t2:主模块发读命令(提供数据)
t3:从模块提供数据(主模块提出写命令,从模块在规定时间内将数据总线上的数据写到地址总线所指明的单元中)
t4:主模块撤销命令,从模块撤销数据(主模块撤销数据和命令)

优点是规定明确、统一,配合简单一致,缺点是主从指甲你强制性同步,且必须在限定时间内完成规定的要求,不同速度必须迁就慢速度,影响工作效率
同步通信一般用于总线长度较短,各部件存取时间一致的场合
这种总线系统中,传输周期越短,数据线位数直接影响传输率

2.异步通信
克服了同步通信的缺点也就是它允许各个模块的速度不一致,没有公共的时钟标准,不要求所有的部件严格的统一操作时间,采用应答方式(握手),主模块发出请求信号时要等待从模块反馈回来的响应信号,再开始通信,但是需要在主从之间加上应答线
(1)不互锁方式
主模块发出请求信号后,不必等待接收从模块的回答信号,而是经过一段时间,确认从模块已经收到请求信号后,便撤销请求信号;从模块接收到了请求信号之后,在条件允许的时候发送回答信号,并且经过一段时间(这段时间随设备的不同而不同)确认主模块已经收到了回答信号之后,自动撤销回答信号,也就是没有互锁关系
比如cpu向着主存写信息需要先后给出地址信号、写命令、写入数据就是这种方式
(2)
主模块发出请求信号,必须等待接到从模块的回答信号之后再撤销请求信号,有互锁关系,从模块在接收到了请求信号之后发出回答信号,但是不必等待获知主模块的请求信号已经撤销,而是隔一段时间之后自动撤销其回答信号,没有互锁关系,也就是说主模块受到从模块的锁定而后者不必受到前者的锁定,就称为是半互锁方式
比如多机系统中某个cpu需要访问共享存储器(供所有的cpu访问的存储器),cpu发出访存命令之后必须收到来自于存储器未被占用的回答信号才能真正进行访存操作(但是共享存储器因为比较屌就不需要)
(3)
主模块发出请求信号,必须等从模块的回答再撤销,后者也是,这即是全互锁,在网络通信中,通信双方采用的就是这种方式。

异步通信可以用于并行传送和串行传送

半同步通信
保留了同步通信的基本特点,地址命令数据信号的发出时间都严格参照系统时钟的某个前沿开始,接收方都采用系统时钟后沿来进行判断识别,也像异步通信一样允许不同速度的模块和谐工作,就增设了一条wait响应信号线,采用插入时钟等待周期的措施来协调通信双方的配合问题
主模块:t1地址,t2命令,t3传输数据,t4结束传输,
但是从模块速度慢无法在t3提供数据,就必须在t3之前通知主模块给出低电平信号,插入一个等待周期tw(与时钟周期同宽度),不立即从数据线上取数,若是还是低就再插,
t1:主模块发出地址信息
t2:主模块发出命令
t3w:低电平进入等待
t3:从模块提供数据
t4:主模块撤销读命令,从模块撤销数据

适用于系统工作速度不高但是又包含了许多工作速度差异较大的设备组成的简单系统,比起异步通信简单,在全系统内各模块在统一的系统时钟控制下同步工作,可靠性高,同步结构较为方便,缺点是对于系统时钟频率要求不能太高,所以整体速度慢

忙碌是所有灵感和可能性的敌人,身为一个健全健康的人,我们应该允许自己赋予自己以“空闲”的权利,否则的话,我们就跟慌不择路的行尸走肉没有任何区别

4.分离式通信
以上三种通信方式都是从主模块发出地址和读写命令开始,直到数据传输结束,在整个传输周期中,系统总线的使用权完全由占有使用权的主模块和由它所选定的从模块占据,进一步分析读命令传输周期,发现除了申请总线这一阶段,其余时间主要花费在3方面
1.主模块通过传输总线向从模块发送地址和命令
2.从模块按照命令进行命令进行读数据的必要准备
3.从模块经过数据总线向着主模块提供数据
由2可见,对于系统总线,从模块内部读数据过程没有实质性的信息传输,总线是空闲的,为了克服利用,在大型计算机系统中,总线的负载已处于饱和状态,充分挖掘系统总线每个瞬间的潜力,对于提高系统性能能够起到极大的作用,为此人们又提出了分离式的通信方式,使一个传输周期分解为两个子周期,第一个周期中,主模块a在获得总线使用权后将命令地址和其他相关信息包括编号发布到系统总线上(当有多个主模块的时候这个编号就很重要了),经过总线传输之后,就由相关的模块b接收下来,这个发布信息只占用很短的时间,发送之后立即放弃总线使用权,以便其他模块使用,在第二周期中,b模块收到相关信号后,选择译码读取,将所需数据准备好,申请总线使用权,获准之后就将a的编号,b的地址,a所需的数据等送到总线上,由a接收,两个周期都是单向的信息流,每个模块都是主模块

特点
1.各模块都需要提出申请
2.得到总线使用权之后必须在限定的时间内向着对方发送信息,采用同步方式,不再等待对方的回答信号
3.准备数据的过程中都不占用总线,可以接受其他模块的请求。
4.占用的时候都在做有效工作,发送命令或者是数据,没有等待,充分利用了占用,实现了总线在多个主、从模块间进行信息交叉重叠并行式传送

终于到了这里了,话说令我震惊的是一节课的内容我竟然花了足足有三四天的时间来整理笔记,但是同时我也能够明显地感觉到,现在对于知识的学习效率要比起以前高得多,以前总是要不做要不不做,总是没有模糊的时候,但是现在,却是能够放慢自己的节奏,以前觉得自己每一天活完了之后都看不到第二天的太阳,现在却不再抱有恐惧

《狐妖小红娘》中南国皇帝说过一句话:“年轻人不喜欢吃苦,只会拼命”
我想背后的意思就是,接受没有奇迹的生活吧,只有接受暂且苟且的现在,未来才有期望的价值。

今天来复习最后一点知识也就是关于总线结构的地方。
通常分为单总线结构和多总线结构
1.单总线结构
将cpu、主存、io设备都挂在一组总线上,允许彼此之间直接交换信息,也便于扩充,所有的传送都通过这组,极易形成计算机瓶颈,也不允许两个以上部件同时传输信息,会影响工作效率的提高
被小型微型计算机使用
在外部设备随着种类数量变多而对数据传输数量和速度要求变高的时候,如果仍然采用单总线结构,总线发出的控制信号依次到达很多个设备延迟时间就会影响工作效率,在数据传输量和速度要求不高的情况下,增加总线宽度和提高传输速率来解决,但是要求高的时候只能使用多总线结构

2.多总线结构
双总线结构,将io设备分离出来,通过通道与总线相连,cpu将一部分功能给通道,具有管理功能,完成外部设备与主存间的数据传送,用于大中型计算机将io设备分类,主存总线用于cpu和主存之间传输,io总线供应cpu和io设备传递信息,dma用于高速io设备,任意时刻只能使用一种总线,主存和dma不能同时对主存进行存取,io总线只有cpu执行io指令时用到

或者:
处理器与cache之间有局部总线,将两者与设备连接(局部io控制器),cache也直接连接到系统总线上,就可以直接与主存交换信息,io设备与主存也不必通过cpu,而是扩展总线,通过扩展总线上的各类接口与io设备相连,可以支持两种总线之间的信息传递,效率提高

四总线结构(反正你要玩儿死我是吧!)
增加了一条高速总线,挂接了一些高速io设备,通过cache控制机构中的高速总线或是高速缓冲器与系统总线和局部总线连接,使得这些高速设备与cpu更密切,而低速依然是扩展总线,并且由控制之下与高速总线相连,高速设备可以很少依赖又更贴近cpu,各自的效率提高,cpu、高速总线、各自信号线定义可以完全不同,改变结构也不会影响高速总线的工作

推荐阅读更多精彩内容