在这个系列文章的第一讲,漫谈计算机组成原理(一)之程序运行的过程 中说过,现代计算机是从冯若伊曼计算机发展起来的。其组成部分有存储器、运算器、控制器、输入设备、输出设备,在现代计算机中,人们将运算器与控制器封装起来成为CPU(中央处理单元)。计算机的各类部件想要进行数据交互,就必须让这些部件造成必定的链接关系,以便数据交互的进行。 链接的方式有两种,一种是各个部件之间使用不一样的线相互链接,很明显,这种交互方式有很大的弊端,如连线复杂形成的控制复杂,还有就是当部件较多的状况下,简直就是个灾难。因此就催生了另一种链接方式——总线链接,也就是咱们这一讲要讲述的东西。 总线链接是指,将全部就的部件链接在一组公共的信息传输线上,这样作就避免了上面那种传输方式的弊端。现代计算机几乎全部的都是采用总线链接。缓存
概述
从引言中,咱们基本上可以了解到总线在计算机系统中的做用。可是上面的说法只是一个概论,咱们须要给出更加详细的总线的做用:**总线是计算机中各个部件的信息传输线。**在计算机中,几乎全部须要信息传输的地方,都是存在总线的。 那么,总线传输的信息具体来说是什么呢?总的来说,总线传输的信息可使数据、地址(详情请看第一讲https://blog.csdn.net/yanmiao0715/article/details/80338802)等,接下来会详细介绍。 另外,从传输方式上来说,共有两种传输方式。一种是并行的,另一种串行的方式,两种方式各有利弊。微信
总线的传输方式
-
并行方式 异步
并行传输方式很简单,就是在同一时间内,传输多位数据,而计算机的位数,就是按照系统总线传输的数据位数划分的,常见的有32位、64位等。 注意,并行方式并不合适远距离数据传输,由于并行传输方式,一旦距离过长,那么各条总线的相互干扰则十分强大,数据丢失、错误也就成了必然。 因此,并行传输用在计算机内部,就很是可靠了。既保证了传输速度,又保证了数据传输的可靠性。
-
串行方式 分布式
串行方式很明显不适用于计算机内部的数据传输,一来一条总线传输速度实在是慢,另外会致使计算机的总线分布过于复杂。 不过,与上面的方式正好相反的是,这种方式能够避免远距离传输的数据干扰。 ###总线的结构框图 在了解了基本的总线传输方式后,咱们将从比单根总线更大的方面来介绍总线的具体结构。 所谓的总线结构,就是总线在计算机中的具体分布位置,这个位置的不一样,会致使计算机的各个方面的不一样,下面就来一一介绍。
-
面向CPU的双总线结构 性能
在这种结构中,包括了M总线(CPU与主存之间的数据传输总线)、I/O总线。优势是多条总总线,并行传输,效率高。缺点也很明显,其一是事件执行过程容易被打断,好比当前IO设备正在占用总线,与CPU或者主存之间在传输数据,而另一个设备此时却发起了占用请求,IO总线还要停下来处理占用请求;其二是IO设备没法直接与主存进行信息交互,只能经过CPU这个介质,可是这就无故端的占用了CPU,CPU彻底能够在被占用的这段时间处理数据,因此,就须要改进。
-
单总线结构 操作系统
这种结构中,只有一条总线:系统总线。计算机中的全部设备都链接在这条总线上。这种方式的优势基本能够忽略了,缺点太多: 当CPU进行数据处理的时候,很是容易被打断,相似于上面的状况,就致使了CPU的效率太低;若是计算机中有不少的设备,很难想象这条总线要长到什么程度,总线越长,延迟越高;最后,这么多的设备,只有一条系统总线,典型的狼多肉少,这些设备之间必定会打架的。
-
以存储器为中心的双总线结构 .net
最后的这种以存储器为中心的双系统总线结构,也就是在第一讲之中提过的现代计算机的结构。这种结构整合了上面两种方式的结构,作到了扬长避短**。虽然和单总线结构挺像,可是,它在CPU和主存之间加入了一条存储总线,这样保证了CPU和主存交互是不占用系统总线,也就避免了CPU的执行被打断,CPU须要的数据既能够从主存中获取,又能够从总线中获取,很是强大;另外,系统总线和存储总线飞凯,提升了效率的同时,还减轻了系统总线的负担。**
总线分类
片内总线
所谓的片内总线,就是CPU内部的总线,链接着CPU内部的各个部件。3d
系统总线
- 数据总线:数据总线是双向传输的,和机器字长、存储字长有关系
- 地址总线:地址总线是单向的,包括存储地址、IO地址
- 控制总线:有入、有出,发出各类控制信号
固然,总线分类的内容还有不少,包括一些常见的术语,这里就再也不赘述了,在后面的讲解 中遇到什么就会解释什么。cdn
总线性能指标
- 总线宽度:数据总线的根数
- 总线带宽:总线的数据传输速率,也就是每秒传输的最大字节数,单位MBp/S
- 总线复用:一条信号线上分时传送两种信号
- 信号线数:地址总线、数据总线 、控制总线的数目总和
- 总线控制方式 #总线结构 ##单总线结构 单总线结构在总线结构框图中其实已经说过了。就是上面那种问题特别多的总线结构。这里就再也不赘述。 ##多总线结构 ###双总线结构
能够看到,这种方式,是将I/O接口接在了与主存总线通讯的通道上,那么这个通道是什么呢?这个通道其实是由计算机操做系统控制的一个特殊的处理器,用来对I/O设备进行管理。 图中所示只有一个通道,其实是有不少通道的。人为的将不一样速度的I/O设备换分为不一样的组,进而将这些组分别接在不一样的通道上,能够预见,这种结构的总线数据吞吐量是十分高的,就实现了一个至关强大的计算机系统。 而这种结构,一般被用在大型计算机上。
三总线结构
这种结构的总线包括:主存总线、DMA总线(直接存储器访问,顾名思义,使用这条总线的I/O设备能够直接向主存的读写数据)、I/O总线。 其中,DMA总线链接的是告诉I/O设备,最好可以和主存(内存条)的速度在必定程度上匹配。 在这种结构中,任意时刻,只有一条总线被占用。主存总线确定不能和DMA总线同时被占用,而I/O设备只在CPU调用I/O指令的时候才会被用到。 我以为你有可能会有这么个疑问:I/O总线会不会和DMA总线同时被占用?确定是不能的,由于前面说了,I/O总线只有在调用I/O指令的时候才会被占用,在占用的过程当中,没有CPU的控制,高速I/O设备怎么可能会和主存交互。
这种结构,是将CPU和Cache(缓存设备)之间加入了局部总线,不只如此,主存和Cache都链接在系统总线上,去掉了CPU和主存的信息传输,此时与CPU直接进行信息传输的是Cache,咱们知道,Cache是一种比主存更快的设备,Cache能够直接经过总线读取主存中的信息,而后交给CPU,这样就速度就会飞起。另外,扩展总线的存在,使得设备扩展变得极为容易。
四总线结构
对比三总线结构,四总线就是将三总线更加细分,将I/O总线分红了高速总线和低速扩展总线。因为四总线结构并非特别常见,这里就不详细说明了,感兴趣的小伙伴能够本身查阅一下相关的资料。blog
总线控制(重要内容)
接下来的这个内容,能够说是系统总线这一讲中最为核心的部分。
概述
总线的控制主要是两个方面的内容。 首先,咱们能够想象到,当某一个时间点上,有了多个设备同时发出总线的占用请求,那么总线应该去响应哪个设备的占用请求呢?再者,咱们讲了,在信息传输的过程当中,不可避免的会出现信息丢失,如何保证数据传输的完整性呢?这就是咱们要讨论的第一个问题——总线的判优控制。 其次,虽然总线的判优控制解决了总线应该与哪个设备交互的问题,可是仍是存在这样一个问题的:两个设备,一个主设备(对总线有控制权的设备)和一个从设备(只能响应从总线发来的命令)进行交互的时候,主设备什么时候占用传输数据?从设备什么时候发送响应数据?这就是咱们要讲的第二个问题,也就是总线的通讯控制。它的做用就是解决通讯双方的协调配合的问题。
总线的判优控制
具体的讲,总线的判优控制共有两种方式,一种是集中式,将全部的控制逻辑集中在一个部分;另一种是分布式,也就是将控制逻辑集中在各个部分。而分布式并不常见,这里只介绍集中式的判优控制。
而咱们接下来要讨论的内容就是数据传输阶段的通讯过程。
通讯方式
- 同步通讯:由统一时标控制通讯的数据传输
这张图片表示的是某个设备向CPU传输数据的过程。 整个的传输过程以下:
- 在T1时间的上升沿(上升沿这个词其实不难理解,就是时钟向上走的部分,对应降低沿就是时钟线向下走的过程),主设备(CPU)给出读数据的目的地址
- 在T2上升沿,主设备(CPU)给出读命令
- 在T3上升沿,从设备给出数据信息,执行读数据操做
- T3降低沿,读命令、数据信号撤销
- T4,地址线撤销
这种方式,比较中规中矩,就是说在每个时间段,执行固定的操做,模块间的配合较为简单。缺点也很明显,就是中规中矩的缺点,不够灵活,设备必须在规定的时间内执行完成相应的操做。 在这中方式中,主从模块的操做按照统一的时标操做。主从设备的速度若是相差较大,那么速度快的设备必须等待速度慢的设备执行。 【适用范围】适用于总线长度较短、各部件存取时间比较一致的场合。
- 异步通讯
异步通讯就比较灵活了,没有统一的时标,只须要主设备发出请求,从设备发出响应便可。异步通讯分红了三种方式:
- 不互锁 想象这样的一个场景,一我的向另一我的打招呼,打完招呼就去忙本身的事情了,无论那我的是否听到了本身的问候,都去作本身的事情。类比这种状况:主设备发出请求,发完请求后就去执行其余的操做了,无论从设备是否收到了回答。理想的情况下确定是须要从设备回答的,这就衍生了另一种方式。
- 半互锁 再想象一个场景,A向B打招呼,若是B和A没有仇的话,B确定是会回复A的,若是A发现B没有搭理他,那么他通常会再和B打招呼,若是B依然不回应,那么这个过程就会持续下去。 到这里也是同样的,当主设备向从设备发出信号时,若是从设备接收到这个信号,那么就会向主设备发送响应信息。若是主设备一直没有接收到这个信号,就会一直向从设备发送信息。
- 全互锁 全互锁,就是半互锁的升级版本。在半互锁中,若是主设备没有收到从设备发出的响应信号,除了是从设备没有接收到主设备的信号外,还有多是由于从设备发送的信号主设备没有收到,若是是这种状况,主设备也会一直请求下去。 在全互锁的状况中,若是主设备发出信号后,从设备也收到了信号,则会向主设备发送响应信号;若是主设备接收到了信号,那么就会再从设备发送一个表示接收到了的信号,此时从设备就能够撤销响应信号了。若是没有收到,则从设备就会保持这个响应信号。 总结一句话就是,主设备一直请求,从设备一直应答。
- 半同步通讯(同步、异步结合)
为何说半同步通讯是同步通讯和异步通讯相互结合的方式呢?由于半同步通讯保留了同步通讯的时钟周期,又继承了异步通讯的可以使得不一样速度的设备协调工做的优势,能够说是十分的强大。 从图中能够看到,半同步通讯不一样于同步通讯的一个重要的特色就是:增长了两个Tw周期,还增长了WAIT信号。下面咱们就来讲一下它的具体状况。 首先,和同步通讯相同,都是在T1给出地址信号,T2给出读命令,读命令给出后,紧接着的并不必定是数据信号。若是从设备的速度很慢,不能在T3时间给出数据,则会通知主设备,我如今尚未准备好。随后主设备就会给出WAIT信号,插入等待周期,当从设备说我已经准备好了的时候,主设备就会撤销掉等待信号,开始读数据。后面的状况就和同步通讯一致了。
- 分离式通讯:充分发挥系统总线每瞬间的潜力 这种通讯方式比较复杂,咱们很难在通常的计算机上见到,这里就很少说了,只须要知道它的这个特性就能够了。感兴趣的能够看看这片博文:https://blog.csdn.net/ce123_zhouwei/article/details/6936047,不过我发现这个做者好像是直接摘抄的唐朔飞教授的《计算机组成原理》这本书。无奈╮(╯▽╰)╭,你们看看就好了。
结语
感谢您的阅读,欢迎指正博客中存在的问题,也能够跟我联系,一块儿进步,一块儿交流!
邮箱:roobtyan@outlook.com
我的博客:http://roobtyan.cn
微信公众号:最高权限比特流