这个是在学组成原理时候的一些东西,自己找上的找的一些资料,问了中科院的一个同学,整理出来,虽然和服务器差别很大,但是理解了一下,觉得还是有益处的。
数据库I/O始终是瓶劲,和I/O量没关系,I/O次数很多很多,所以会造成CPU繁忙,本身I/O是由DMA控制器来实现的。可以这么理解。
DMA:Direct Memory Access,其意思是“存储器直接访问”
说明它是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为“DMA控制器”的控制下进行的。CPU除了在数据传输开始和结束时做一点处理外,在传输过程中CPU可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处于并行操作。因此,使整个计算机系统的效率大大提高。
如果在DMA的时候,仍旧让CPU坐其他的I/O操作,肯定是受影响的。但是,在系统设计的时候,DMA是一种I/O的操作,在DMA的过程中,CPU一般会做其他的非I/O操作,如果一定要让CPU做I/O操作,由于DMA占据总线控制权,则I/O进程会阻塞,CPU转而执行其他的操作
DMA只有在批量的数据读才会高效,对于单个字节的读写效率比CPU的直接I/O还低呢,而现在的很多高端存储支持多种类型的I/O,不管是块还是字节,效率都很高
Direct Memory Access 直接存储器访问
在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。
一个完整的DMA传输过程必须经过下面的4个步骤。
1.DMA请求 CPU对DMA控制器初始化,并向I/O接口发出操作命令,I/O接口提出DMA请求。
2.DMA响应 DMA控制器对DMA请求判别优选级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。
3.DMA传输 DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。
4.DMA结束 当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停 止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后,带着本次操作结果及状态继续执行原来的程序。
由此可见,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提高。
DMA控制的仅仅是数据总线
附:总线结构概述
PC的组成部件都是通过数据总、地址总线和控制总线这三组,总线连接在一起并完成和实现它们之间的通讯与数据传送的,因此总线的概念是理解PC和主板的组成结构、工作原理及部件之间相互关系统的基础。
一、概述
1.地址总线AB(Address Bus)
是用来传送地址信息的信号线,其特点是:
(1).地址信号一般都由CPU发出,当采用MDA(Direct Memory Access,即直接内存访问)方式访问内存和I/O设备时,地址信号也可以由DMA控制器发生,并被送往各个有关的内存单元或I/O接口,实现CPU对内存或I/O设备的寻址(在PC中,内存和I/O设备的寻址都是采用统一编址方式进行的),即采用单向传输,动态控制(在计算机中,由于采用二进制工作方式,一般只有两种状态,即“1”和“0”,但是当计算机各总线上,显示“0”状态时,在电气上的效果相当于总线脱离。
(2).CPU能够直接寻找内存地址的范围是由地址线的数目(由于一条地址总线一次传送一位二进制数的地址,故也叫地址总线的位数)决定的,即PC系统中所能安装内存容量上限由CPU的地址总线的数目决定。
CPU能够直接寻址的内存范围上限为2CPU的地址总线数目
2.数据总线DB(Data、Bus)
用来传送数据信息的信号线,这些数据信息可以是原始数据或程序。数据总线来往于CPU、内存和I/O设备之间,其特点是:
(1).双向传输,三态控制:即可以由CPU送往内存或I/O设备,也可以由内存或I/O设备送往CPU。
(2).数据总线的数目称为数据宽度(由于一条数据线一次可传送一位二进制数,故也称位数),数据总线宽度决定了CPU一次传输的数据量,它决定了CPU的类型与档次。
3、控制总线CB(Control Bus)
是用来传送控制信息的信号线,这些控制信息包括CPU对内存和I/O接口的读写信号,I/O接口对CPU提出的中断请求或DMA请求信号,CPU对这些I/O接口回答与响应信号,I/O接口的各种工作状态信号以及其他各种功能控制信号。控制总线来往于CPU、内存和I/O设备之间,其特点是:
在单向、双向、双态等种形态,是总线中最复杂、最灵活、功能最强的,其数量、种类、定义随机型不同而不同。
二、总线的分类
总线就是各种信号线的集合,是计算机各部件之间传送数据、地址和控制信息的公共通道。
1.按相对于CPU与其芯片的位置来分
(1).片内总线:指在CPU内部各寄存器、算术逻辑部件ALU,控制部件以及内部高速缓冲存储器之间传输数据所用的总线,即芯片内部总线。
(2).片外总线:通常所说的总线(BUS)指的外总线,是CPU与内存RAM、ROM和输入输出(I/O)设备接口之间进行通讯的数据通道,CPU通过总线实现程序存取命令,内存/外设的数据交换在CPU与外设一定的情况下,总线速度是限制计算机整体性能的最大因数。
2.按总线功能分
(1).地址总线:(AB)用来传递地址信息
(2).数据总线:(DB)用来传递数据信息
(3).控制总线:(CB)用来传送各种控制信号
3.按总线的层次结构分
(1).CPU总线:包括CPU地址线(CAB),CPU数据线(CDB)和CPU控制线(CCD),其用来连接CPU和控制芯片。
(2).存储器总线:包括存储器地址线(MAB)、存储器数据线(MDB)和存储器控制线(MCD),用来连接内存控制器(北桥)和内存。
(3).系统总线:(I/O扩展总线)也称为I/O通道总线或I/O扩展总线,包括系统地址线(SAB),系统数据线(SDB)和系统控制线(SCD),用来与I/O扩展槽上的各种扩展卡相连接。
(4).外部总线:(外围芯片总线)用来连接各种外设控制芯片,如主板上的I/O控制器(如硬盘接口控制器、软盘驱动控制器、串行/并行接口控制器等),和键盘控制器,包括外部地址线(XAB)、外部数据线(XMB)和外部控制线(XCB)。
4.系统总线(I/O扩展总线)又分为ISA、PCI、AGP等多种标准
(1).ISA(Industry standard architecture,工业标准结构)是IBM公司为286AT电脑制定的总线工业标准,也称为AT标准。
(2).PCI(peripheral component interconnet,外部设备互连)是SIG(spelial interest group)集团推出的总线结构。
(3).AGP(accelerated graphics port,加速图形端口)是一种为了提高视频带宽而设计的总线规范,因为它是点对点连接,即连接控制芯片和AGP显卡,因此严格说来,AGP也是一种接口标准。
三、总线主要的技术指标
1、总线的带宽(总线数据传输速率)
总线的带宽指的是单位时间内总线上传送的数据量,即每钞钟传送MB的最大稳态数据传输率。与总线密切相关的两个因素是总线的位宽和总线的工作频率,它们之间的关系:
总线的带宽=总线的工作频率*总线的位宽/8 2、总线的位宽
总线的位宽指的是总线能同时传送的二进制数据的位数,或数据总线的位数,即32位、64位等总线宽度的概念。总线的位宽越宽,每秒钟数据传输率越大,总线的带宽越宽。
3、总线的工作频率
总线的工作时钟频率以MHZ为单位,工作频率越高,总线工作速度越快,总线带宽越宽。
四、总线命令含义
ADS#地址通讯
|
STOP#停止
|
SMIACT#激活系统管理中断
|
ACAS[B:A]写功能
|
D/C数据/控制
|
LOCK#锁存
|
TWE#TAG写效能
|
PC-LINK[15:0]PCI链锁
|
M/IO#记忆器/IO
|
DEVSEL#设备选择
|
COE#CACHE输出效能
|
1+STB:[1:0]记忆器选通
|
W/R#读写
|
PAR奇偶校验
|
GNE[7:0]#全写效能
|
MADV#MEHORY优先
|
BRDY#总线就绪
|
REQ[2:0]请求
|
TIO[7:0]TAG地址
|
PCMD[1:0]PCI命令
|
EADS#外部地址选通
|
GNT[2:0]PCI允许
|
H-LINK主时钟输入
|
BOE#BOST输入功能
|
HZTM#中较正
|
RE23#/MREQ#
|
PCLINK时钟输入
|
MOE#MEMY输入功能
|
BOFF#退去
|
PHLD#PCI保持
|
AD地址/数据
|
POE#PLINK输入功能
|
AHOLD地址保持
|
PHLD#PCI保持响应
|
C/BE[3:0]命令/字节使能
|
MXSCSH多功能选择
|
NA#下位地址
|
RAS[3:0]行选
|
FRAME#结构
|
|
KEN#/ZNLCACHE效能
|
CAS[7:0]列选
|
TRDY#目标就绪
|
|
CACHE#CACAHE效应
|
MA内存地址
|
IRDY#初始就绪
|
|
HLOCK#主锁存
|
SRASA#SDRAM行选
|
|
|
五、ISA插槽
1、地址总线:SA0~SA19(I/O)和LA17~LA23(I/O)
2、数据总线:SD0~SD7(I/O)和SD8~SD15(I/O)
3、控制总线:BALE(0)---US Address latch enable:系统地址锁存允许
4、SYSCLK(0)---SYSTEM CLOCK系统时钟信号
5、IR23~7,9~12,15(Z)---这是用于I/O设备通过中断控制器向CPU发送的中断请求(interrupt request)信号
6、SMEMR#和SMEMW#(0)---这是命令内存将数据送至数据总线的信号
7、MEMR#和MEMW#(I/O)---内存读(MEMR)或内存写(MEMW#)信号
8、DRQ0~3,5~7(2)---这是DMA请求(DMA Requesc)信号
9、DACK0#~3,5~7(0)---(DMA Acknowledge,DMA响应)这是对DRQ0~3,5~7的响应信号
10、AEN(0)---地址允许(Address enable)信号
11、REFRESH#(I/O)---内存刷新(DRAM refresh)信号
12、SBHE(I/O)---系统总线字节允许(system bus high enable)信号
13、MASTER(2)---主控信号
14、MEMCS16#(2)---存储器16位片选(Memory 16bit chip select)信号
15、ZOCS16#(2)---I/O16位片选(I/O 16bit chip select)信号
16、OWS(2)---零等待状态(Zero Wait State)信号
六、PCI插槽
1、系统信号定义:即“CLK”信号,除“RST#”、“ZRZB”、“ZRQC#”、“ZR2#”之外,其余信号都在“CLK”的上升没有效。
RST#(ZN)---复位信号,是用来使PCI专用特性寄存器和定序器相关的信号恢复规定的初始状态
2、地址和数据信号:
AD[31::00](T/S)---它们是地址,数据多路复用的输入/输出信号
C/BE[3::00]#(T/S)---它们是总线命令和字节使能多路复回信号线
3、接口控制信号
FRAME#(S/T/S)---帧周期信号
IRDY#(S/T/S)---主设备准备好信号
TRDY#(S/T/S)---从设备准备好信号
STOP#(S/T/S)---停止数据传送信号
LOCK#(S/T/S)---锁定信号
IDSEL(ZN)---初始化设备选择信号
DEVSEL#(S/T/S)---设备选择信号
4、仲裁信号
REQ#(T/S)---总线前用请求信号,它是一个点到点的信号线,任何主设备都应有自己的“GNT#”信号
GNT#(T/S)---总线占用允许信号
5、错误报告信号
为了使数据传输可靠、完整、PCI局部总线标准要求,所有挂接在其上的设备都应具有错误报告信号线
PERR#(S/T/S)---数据奇偶校验错误报告信号
SERR#(O/D)---系统错误报告信号
6、中断信号
PCI局部总线中一共有四条中断线,分虽是:“INTA#”、“INTB”、“INTC#”、“INTD”,它们均具有O/D(漏极开)的性质,其作用是用来请示一个中断
7、其它可选信号
(1)、高速缓存支持信号
SBD#(IN/OUT)---试探返回信号
SDONE(IN/OUT)---监听完成信号
(2)、64位总线扩展信号
AD[63::32](T/S)---扩展的32位地址和数据多路复用线
C/BE[7::4]#(T/S)---总线命令和字节使能多路复用信号线
REQ64#(S/T/S)---64位传输请求信号线
ACK64#(S/T/S)---64位传输认可信号线
DAR64(S/T/S)---奇偶双字节校验
|
附图: