【计算机组成原理】主板与总线

计算机基本结构

冯诺依曼在《关于EDVAC的报告草案》,详细描述了EDVAC这台计算机的设计方案,从那之后,现在几乎所有的计算机都是遵循的冯诺依曼结构。

这份报告有几个关键点:

  • 程序应该存储起来的,而不是通过开关连线。
  • 用二进制存数据而不是十进制。
  • 计算机能自动的从存储器中取出指令并加以执行。
  • 明确了计算机的五个部分:输入,控制器,运算器,存储器,输出。

南北桥架构的演变

可以清楚的看到,早先的主板上是三片结构,CPU,北桥,南桥。其中,主存和显卡都是要通过北桥来和CPU连接的。

现代的主板变成了两片结构,cpu里面集成了很多东西,比如,现在是cpu直接与主存相连,还与PCIe相连。

总线系统

早期计算机内总线的模型,以cpu为主导,数据总线,地址总线,控制总线都是一起用,所有的数据传输都要靠cpu来指挥。这样总线的设计就很依赖于特定的cpu,所以各个部件之间也不自由,通用性差。

当代的总线模型,追求的是标准化,遵循cpu和其他部件结构无关的开发标准。在下图中,公用线是电源之类的线,其他的线下文会讲。

三总线结构,这个好处就是cpu和主存之间可以快速交换信息,主存和IO设备交流的速度也大大提升了。

相比之前的只能由CPU指挥数据在总线上的传输,当代总线上的CPU,I/O模块,DMA控制器都可以拥有总线的使用权

那么问题来了,如何调度它们来使用总线呢?这就需要一个仲裁机制,这东西就叫中央仲裁器,在cpu内部,独立的部件。我想程序经常有取地址,和存数据,内存到IO或者cpu到内存,这时候应该就是通过仲裁谁来拥有对总线的控制权,然后让设备自己去决定怎么传输。

这个仲裁的方式,有三种,它们都有一个BS线表示当前总线占用状态,BR线请求总线使用权。

  • 链式查询,主要特点就是从靠近cpu的部件来询问是否需要占用总线,如果不需要,继续问相邻的下一个设备,这样子其实很不好,只对优先级高的有利,而且前面的部件坏了后面的就永远读不到了。
  • 计数器定时查询,这个比上个就有很大进步,每当BR线发了请求之后,中央仲裁器就往设备地址线上发一个地址,如果这个地址代表的设备发了请求就把控制权赋给他,否则地址加一继续广播,初始地址可以从0开始,也可以从上一次终止广播的设备地址开始,发一个循环。还可以用软件的方式决定从哪个设备地址开始计数,这就意味着你可以自己决定赋给哪个设备最高优先级,然而说到底这种方式也是按顺序去查找,浪费了和很多时间。
  • 独立请求方式,每个设备都有自己独立的BS,BR线,不再是共用了,直接连到总线控制部件,排队判优的装置被安置在了总线控制部件内部,它可以是利用循环的那种分配优先级的方法,也可以是自己设计的复杂算法,这种方式的好处就是各个设备可以同时发出请求,至于怎么判优就交给总线控制部件里的专门的装置了,这比前面两种要智能一些,不过线也多了点。

现在设备占用总线的方式我们知道了,那么各个设备之间怎么通信的呢?

  • 同步通信的方式,其实就是按照总线的时钟周期来规定从设备识别完地址码,什么时候把对方要取的数据发出来,这个时间间隔就是存取时间,它是遵守的公共时钟,而各个设备的存取时间其实是相差很大的,这样就必须按照最慢的那个模块来设计公共时钟,不然会出错啊,所以这样就造成了效率的低下。总结来解释什么是同步通信,就是要在固定的时间点上给出固定的操作,就是在一个总线传输周期内,先做完什么再做完什么,最后再撤销什么。
  • 异步通信的方式,不互锁,就是主设备请求之后,继续走自己的周期,不管从设备响应了没有,半互锁就是从设备响应了,主设备才撤销,全互锁就是主设备撤销了从设备才撤销。感觉这样数据传输就没有同步那么可靠了。
  • 半同步,就是多了一个wait信号,来处理不同模块存取周期不同的锅。总结会发现,在从设备准备数据的时候,这段时间总线是被占用的但是没有做事,就浪费了。于是人们又想出个分离式通信,就是把上面过程分开,把中间那个浪费的时间拿出来,就是主设备发出请求完了以后就放弃总线的使用权,从设备准备好了数据以后再申请占用总线(之前是一直占用)。

好了,通俗的总结一下计算机里面那些线怎么传数据。首先大家都要传,所以弄出个总线仲裁器来给请求排队,然后轮到某个设备传了,这时候就叫做一个总线传输周期,在这个周期里面,规定请求方为主设备,响应数据方为从设备,它们之间传信息怎么传是根据时钟周期来看的,所以有同步和异步的概念,其实也不难,就是把从发出请求,到响应数据之间的过程弄清楚就行了,同步就是按照公共时钟周期,异步就是主设备不等待,跟阻塞和非阻塞的概念有点像。

参考资料

https://www.coursera.org/learn/jisuanji-zucheng/home/welcome
http://mooc.study.163.com/course/HIT-1000002002#/info

你可能感兴趣的:(Component)