好文档 - 专业文书写作范文服务资料分享网站

计算机原理--存储器和输入输出设备和总线

天下 分享 时间: 加入收藏 我要投稿 点赞

如图,Core I7处理器外频只有133MHz, 使用QPI技术后总线频率达到2.4GMhz,而使用DDR3-1600的内存,内存总线频率在800MHz。

2.3.7 小结

这一结介绍了计算机总线系统以及CPU和各个设备之间的交互。我们可以看到除了CPU自身的速度之外,总线的速度也影响这计算机的整体性能。从发展的过程来看,总线也是一个分分合合的过程。从最初的一条总线,到后来的单独出来的I/O总线,内存总线,就是为了提高CPU的效率。而当CPU和内存速度都发展到一定阶段后,又出现了DDR,双通道等技术,在不提高核心频率的情况下提高了传输率。于是又出现了CPU和内存间直接总线通信降低延迟的情况。 (从2000年开始接触电脑DIY,一直到07年毕业,都对DIY很有兴趣,但是随着电脑越来越快,目前以及弄不太清楚了,复习这些知识也费了我好多时间。)

3. I/O设备

前面主要介绍了系统总线和CPU与内存之间的通信,最后一部分简单介绍一下CPU和I/O设备是如何通信的。对于计算机来说输入输出设备也是五大组件。我们知道相对于CPU,I/O设备的工作频率要慢的很多。比如早期的PCI接口工作频率只有33MHz,硬盘的IDE-ATA6的传输速率也只有133MB/s。而现在的 SATA3接口速率能达到600MB/s。

3.1 I/O设备原理

对于硬件工程师来说,I/O设备是电子芯片、导线、电源、电子控制设备、电机等组成的物理设备。而对于程序员来说,关注的只是I/O设备的编程接口。

3.1.1 I/O设备分类

块设备: 块设备把信息存放在固定大小的块中,每个块都有自己的地址,独立于其他块,可寻址。例如磁盘,USB闪存,CD-ROM等。

符号设备:字符设备以字符为单位接收或发送一个字符流,字符设备不可以寻址。列入打印机、网卡、鼠标键盘等。

3.1.2 设备控制器

I/O设备一般由机械部件和电子部件两部分组成。电子设备一般称为设备控制器,在计算机上一般以芯片的形式出现,比如我们前面介绍的南桥芯片。不同的控制器可以控制不同的设备。所以南桥芯片中包含了多种设备的控制器,比如硬盘控制器,USB控制器,网卡、声卡控制器等等。而通过总线以及卡槽提供和设备本身的连接。比如PCI,PCI-E,SATA,USB等。

3.1.3 驱动程序

对于不同的设备控制器,进行的操作控制也是不同的。所以需要专门的软件对他进行控制。这个软件的作用就是用来专门和设备控制器对话,这种软件称为驱动程序。一般来说驱动程序由硬件设别厂商提供。所以我们有时会碰到一些设备因为没有安装驱动程序而无法使用的情况。 而目前的OS总都包含了大量的通用驱动程序,使得我们在安装完系统后不需要在额外的安装驱动。但是通用的驱动只能使用设备的基本功能。

驱动程序因为是非操作系统厂商开发,并且需要被安装到操作系统并调用,所以需要有一个统一的模型来开发驱动程序。否则操作系统是无法操作各式各样的设备的。前面我们知道设备非为两大类,所以一般操作系统都定义了这两类设备的标准接口。

3.1.4 内存映射I/O

每个控制器都有几个寄存器和CPU进行通信。通过写入这些寄存器,可以命令设备发送或接受数据,开启或关闭。而通过读这些寄存器就能知道设备的状态。因为寄存器数量和大小是有限的,所以设备一般会有一个RAM的缓冲区,来存放一些数据。比如硬盘的读写缓存,显卡的显存等。一方面提供数据存放,一方面也是提高I/O操作的速度。

现在的问题是CPU如何和这些设备的寄存器或数据缓冲区进行通信呢?存在两个可选方案:

为每个控制器分配一个I/O端口号,所有的控制器可以形成一个I/O端口空间。存放在内存中。一般程序不能访问,而OS通过特殊的指令和端口号来从设备读取或是写入数据。早期计算机基本都是这种方式。 将所有控制器的寄存器映射到内存空间,于是每个设备的寄存器都有一个唯一的地址。这种称为内存映射I/O。

另一种方式是两种的结合,寄存器拥有I/O端口,而数据缓冲区则映射到内存空间。Pentinum就是使用这种方式,所以在IBM-PC兼容机中,内存的0-640K是I/O端口地址,640K-1M的地址是保留给设备数据缓冲区的。(关于内存分布后面文章会介绍)

对于我们程序员来说这两种方案有所不同

对于第一种方式需要使用汇编语言来操作,而第2种方式则可以使用C语言来编程,因为他不需要特殊的指令控制,对待I/O设备和其他普通数据访问方式是相同的。

对于I/O映射方式,不需要特殊的保护机制来组织对I/O的访问,因为OS已经完成了这部分工作,不会把这一段内存地址分配给其他程序。

对于内存可用的指令,也能使用在设备的寄存器上。

任何技术有有点就会有缺点,I/O内存映射也一样:

前面提到过Cache可以对内存进行缓存,但是如果对I/O映射的地址空间进行缓存就会有问题。所以必须有机制来禁用I/O映射空间缓存,这就增大了OS的复杂性。

另一个问题是,因为发送指令后需要判断是内存还是I/O操作,所以它们需要能够检查全部的内存空间。以前CPU,内存和I/O设备在同一个总线上,所以检查很方便。但是后来为了提高CPU和内存效率,CPU和内存之间有一条高速的总线(比如QPI)。这样I/O设备就无法查看内存地址,因为内存地址总线旁落到了内存和CPU的高速总线上,所以需要一个额外的芯片来处理(北桥芯片,内存控制器的作用),增大了系统的复杂度。

3.2 CPU和I/O设备数据交换方式

前面已经知道CPU通过内存映射的方式和I/O设备交换数据,但是对于CPU来说,无论是从内存还是I/O设备读取数据,都需要把地址放到地址总线上,然后在向控制总线传递一个READ信号,还要用一条信号线来表示是从内存还是I/O读取数据。因为I/O映射的内存区域是特定的,所以不存在无法区分是内存还是I/O操作。目前一共有3种方式进行操作:

程序控制I/O: CPU在向I/O设备发出指令后,通过程序查询方式检查I/O设备是否完成工作,如果完成就读取数据,这种方式缺点是CPU在I/O设备工作时被占用。

中断驱动I/O: CPU是稀缺资源,所以为了提高利用率,减少I/O等待。在I/O设备工作时CPU不再等待,而是进行其他的操作,当I/O设备完成后,通过一个硬件中断信号通知CPU。CPU在来处理接下来的工作,比如读取数据存放到内存。但是每次只能请求一个字节,效率很低。

DMA: Direct Memory Access利用一种特性的芯片存在于CPU和I/O设备之间。CPU需要操作I/O设备时只需要发送消息给DMA芯片,后面的事情全部内又DMA来完成,当把所需要数据放入内存后在通知CPU进行操作,整个过程DMA直接和内存总线打交道,而CPU也只需要和DMA芯片和内存交互,大大提高了速度。

总结

这一篇文章介绍了计算机组件中的存储器的分类和工作原理,以及I/O设别的工作方式。通过总线将各个部件连接起来。我们可以看到计算机的发展不光是CPU,存储器以及I/O设备的发展,总线也是起了非常关键的作用。通过前2章的介绍,应该对计算机硬件的工作原理有了大概的了解。后面开始将主要偏向计算机操作系统软件的工作方式。当然这些也是和一些硬件的特性分不开的。

参考

《深入理解计算机系统》 《现代操作系统(原书第3版)》 动态随机存取存储器 动态随机存取存储器:

寄存器的速度为何比内存更快?

PC架构系列:CPU/RAM/IO总线的发展历史 内存核心频率、工作频率、预读技术详解

转载自:http://blog.csdn.net/cc_net/article/details/10439665

计算机原理--存储器和输入输出设备和总线

如图,CoreI7处理器外频只有133MHz,使用QPI技术后总线频率达到2.4GMhz,而使用DDR3-1600的内存,内存总线频率在800MHz。2.3.7小结这一结介绍了计算机总线系统以及CPU和各个设备之间的交互。我们可以看到除了CPU自身的速度之外,总线的速度也影响这计算机的整体性能。从发展的过程来看,总线也是
推荐度:
点击下载文档文档为doc格式
7zmyy0dm2v92i2p9mey92mdyx4233001c9x
领取福利

微信扫码领取福利

微信扫码分享