PCI局部总线基础Word文件下载.docx
《PCI局部总线基础Word文件下载.docx》由会员分享,可在线阅读,更多相关《PCI局部总线基础Word文件下载.docx(8页珍藏版)》请在冰豆网上搜索。
为了解决这一问题,1992年Intel公司在发布486处理器的时候,也同时提出了32bit的PCI总线"
最早提出的PCI总线工作在33MHz频率之下,传输带宽达到了132MB/s,比ISA总线有了极大的改善,基本上满足了当时处理器的发展需要"
随着对更高性能的要求,1993年提出了64bit的PCI总线,后来又提出把PCI总线的频率提升到66MHZ。
目前广泛采用的是32bit/33MHz的PCI总线.
PCI总线之所以能发展,其动力之一是图形用户接口界面(GraphUserinterface,简称GUI)的发展。
良好的用户接口界面的实现是以高性能的图形界面操作系统为基础的,这样对总线的性能提出了更高的要求。
例如,在多媒体视频图像显示中,若分辨率为64Ox480,30帧/S,显示彩色深度为24位,则多媒体显示卡的数据吞吐量=640x480x30x3=27.648MB/S。
由于外围设备的数据吞吐量与总线传输率之间没有严格的比例关系,一般一条总线可能挂接3~5个高速外设,因而,总线的最大传输应为高速外设的3一5倍。
由此可计算出多媒体视频卡对总线最大传输率的需求为82.944~138.24MB/s,ISA总线的最大传输率为8MB/S,EISA总线为33MB/S,无法满足图形操作系统和高速网络的要求,而PCI局部总线的传输率为132MB/s可满足上述要求。
另一个推动PCI局部总线发展的原因是它可以降低系统成本。
用大量面向PCI局部总线的处理芯片来构造系统机、工作站、外围设备及板卡,其性能优越,处理能力、传输速度都很高。
反之,若不采用面向PCI的芯片进行设计,实现同样的功能,其成本将升高10%~15%。
PCI总线目前己成为世界上应用最广泛的扩展总线。
1.2PCI局部总线的特点
PCI局部总线在高度集成的外围控制器件、外围插件板和处理器/存储器之间作为互联机构应用,并能完全兼容现有的ISA、EISA、MAC扩展总线。
PCI局部总线的主要特点如下:
(1)高速性:
PCI的数据总线宽度为32位,可扩充到64位,它以33MHz的时钟频率工作。
因此,若采用32位数据总线,数据传送速率可达132MB/S,而采用64位宽度,则最高传输速率可达264MB/S。
(2)独立于处理器:
传统的系统总线(如ISA总线)实际上是中央处理器信号的延伸或再驱动,而PCI总线以一种独特的中间缓冲器方式,独立于处理器,并将中央处理器子系统与外围设备分开"
一般来说,在中央处理总线上增加更多的设备或部件,会降低系统性能和可靠程度,而有了这种缓冲器的设计方式,用户可随意增添外围设备,而不必担心会导致系统性能的下降。
这种独立于处理器的总线结构还可保证外围设备互连系统的设计不会因处理器技术的变化而变得过时。
(3)支持碎发传输:
通常的数据传输是先输出地址后进行数据操作,即使所要传输数据的地址是连续的,每次也要有输出和建立地址的阶段,而PCI支持碎发数据传输周期,该周期在一个地址相位后可跟若干个数据相位。
这意味着传输从某一个地址开始后,可以连续对数据进行操作,而每次的操作数地址是自动加l形成的。
显然这种方式减少了无谓的地址操作,加快了传输速度。
这种传输方式对使用高性能图形设备尤为重要。
(4)支持即插即用:
所谓即插即用是指在新的接口卡插入PCI总线插槽时,系统能自动识别并装入相应的设备驱动程序,因而立即可以使用。
即插即用功能使用户在安装接口卡时不必再拨开关或设跳线,也不会因设置有错而使接口卡或系统无法工作。
即插即用的硬件基础是每个PCI接口卡(PCI设备)中的256个字节的配置寄存器。
在操作系统启动时或在PCI接口卡刚接入时PCI总线驱动程序要访问这些寄存器,以便对其初始化,并装入相应的设备驱动程序。
(5)数据完整性:
PCI总线提供了数据和地址的奇偶校验功能,保证了数据的完整性和准确性。
(6)适用于多种机型:
PCI总线适用于各种规格的计算机系统,如台式计算机、便携式计算机以及服务器中。
(7)低成本、高可靠性:
PCI总线插槽短而精致,采用地址/数据复用技术,减少了引脚需求,这些使得PCI卡的小型化成为可能,从而使成本降低,可靠性提高。
(8)软件透明:
在与PCI设备或面向扩展总线的同类设备通信时,软件驱动程序使用相同的命令集和状态定义。
2PCI规范简介
2.1PCI总线信号定义
PCI(PeripheralComponentinterconnect)的含义是外设部件互连,它是一种高性能的局部总线,可同时支持多组外围设备,是一种独立于CPU的总线结构。
在一个PCI应用系统中,如果某设备取得了总线控制权,就称其为“主设备”,而被主设备选中以进行通信的设备称为“从设备”或“目标设备”。
主设备是发起数据交换的一方,至少需要49条信号线,从设备响应主设备提出的数据交换请求,至少需要47条接口信号线。
利用这些信号线便可以处理数据、地址,实现接口控制、仲裁及系统功能,图1中的方框表示挂在PCI总线上的一个设备,包括桥设备和PCI扩展槽。
框左边是要求任何一个PCI设备都应具有的信号,框右边的信号是可选的,与具体PCI设备的功能有关。
下面介绍PCI常用信号及其功能。
(1)地址和数据信号
AD[31:
:
0]是地址、数据多路复用的输入/输出信号。
一个总线交易由一个地址期和多个数据期构成。
在FRAME#有效时,是地址期;
在IRDY#和TRDY#同时有效时,是数据期。
在FRAME#有效的第一个时钟周期是地址期,该周期中AD[31:
0]线上含有一个32位的物理地址,对于I/O访问操作这是一个字节地址,对于配置和存储器访问操作,这是一个双字地址。
在数据期中,AD[7:
0]为最低有效字节,AD[31:
24]为最高字节,而当IRDY#有效时,表示“写”数据稳定有效;
而当TRDY#有效时,表示“读”数据稳定有效。
在数据传输期间,IRDY#和TRDY#应同时有效。
C/BE[3:
0]#总线命令和字节使能多路复用信号线,在交易的地址期中,这四条线上传输的是总线命令;
在交易的数据期内,它们传输的是字节使能信号,并在整个数据期中有效,用来确定AD[31:
0]线上那些字节为有效数据。
C/BE[0]#应用于最低字节,CB/E[3]#应用于最高字节;
PAR奇偶校验信号,检查地址数据信息的完整性。
(2)接口控制信号
FRAME#帧周期信号,由当前主设备驱动,表示当前主设备一次交易的开始和持续时间。
FRAME#有效预示着传输的开始;
FRAME#存在期间意味着数据传输的持续进行;
FRAME#失效后,是交易的最后一个数据期。
图1PCI局部总线信号
IRDY#主设备准备好信号:
由当前主设备驱动,该信号的有效表明发起本次传输的设备能够完成交易的当前数据期。
写周期时,该信号有效,表示有效数据已提交到了AD[31:
0]上,读周期时,该信号有效,表示主设备已做好接收数据的准备。
TRDY#目标设备准备好信号:
由当前被寻址的目标驱动,该信号有效表示目标设备已作好完成当前数据传输的准备。
在写周期,该信号有效时,表示目标设备已作好接收数据的准备;
在读周期,该信号有效时,表示有效数据已提交到AD[31:
0]线上。
TRDY#信号和IRDY#信号要配合使用,二者同时有效,数据才能完整传输"
DEVSEL#:
设备选择信号,该信号有效时说明总线上某处的某一设备己被选中。
如果一个主设备启动一个交易并且在6个时钟周期内没有检测到该信号有效,它必须假定目标设备没有反应或者地址不存在,实施主设备缺省。
IDSEL#初始化设备选择信号:
在参数配置读和配置写的交易期间,用作片选信号,系统通过该信号选择PCI槽口进行配置访问。
(3)错误报告信号
为使数据传输可靠、完整,PCI局部总线标准要求所有挂于其上的设备都应具有错误报告线。
PERR#用来通知系统发生奇偶校验错误,PERR#信号只报告除特殊周期之外的所有PCI交易其间的数据奇偶错误。
PERR#信号是一个持续的三态信号,并且对于每个数据接收设备,如果发现数据有错误,就应在数据收到后的两个时钟周期内将PERR#信号激活,PERR#的宽度至少是一个时钟宽。
SERR#是系统错误报告信号:
该信号的作用是报告地址奇偶错误、特殊周期命令的数据奇偶错误,以及其它可能引起灾难性后果的系统错误。
4.仲裁信号
REQ#是主设备输出给PCI总线仲裁的信号,这不是一个共用的信号,每个主设备都有各自的REQ#,表示请求使用总线。
在复位信号RST#被肯定时,该信号必须处于三态。
GNT#是仲裁对主设备REQ#信号的响应,也是每个主设备一个,告知该主设备己被获准使用总线。
在RST#被肯定时,GNT#为三态信号。
在RST#被肯定时,由于所有的REQ#信号都为三态,没有一个是有效地请求,此时仲裁不应理睬任何REQ#信号,只有在RST#被否定以后才能进行仲裁。
同样,主设备在RST#被肯定时,也应不理睬其GNT#信号"
(5)系统信号
CLK#系统时钟输入信号,是整个系统同步的依据,其频率范围为0~33MHz或0~66MHz,也称为PCI的工作频率。
对于PCI的信号,除RST#、INTA#、INTB#、INTC#、INTD#之外,其余信号都在CLK的上升沿有效。
RST#复位信号,用来使PCI专用的特性寄存器、配置寄存器、定时器、主设备、目标设备以及输出驱动器恢复为规定的初始状态。
(6)中断信号
PCI局部总线中提供了四条中断信号线,分别是INTA#、INTB#、INTC#和INTD#,这些PCI中断信号属电平敏感性,低电平有效,使用漏极开路方式驱动。
一个设备肯定它的INTX#信号后就要保持这个肯定状态,直到该中断被响应。
在对应的设备驱动程序中将这个设备的中断请求清除为止,此类信号的建立和撤消与时钟不同步。
对于单功能设备,只能使用INTA#,其它三条中断线没有意义。
对于多功能设备,各功能与中断线之间的连接是任意的,如果该设备只实现一个中断,就定义为INTA#,要实现两个中断,就定义为INTA#和INTB#,依此类推。
2.2PCI总线命令
总线命令是用来规定主、从设备之间的传输类型的,主设备用总线命令控制从设备的动作。
总线命令出现在地址期的CB/E[3:
0]信号线上,从设备可以对总线命令进行译码以确定后续动作"
当一个主设备获得PCI局部总线的拥有权时,它可以启动表1中的任何一种交易类型。
表1给出了总线命令的编码及类型说明,其中,命令编码中的“1”表示高电平,“0”表示低电平。
3PCI总线的配置技术
PCI局部总线定义了三个物理地址空间:
I/O地址空间、内存地址空间、配置空间。
在PCI协议中,I/O空间和内存空间是分开的,访问的方式也不尽相同。
配置空间是PCI局部总线特有的一个空间,PCI局部总线能实现即插即用的功能,正是通过它特有的配置空间实现的。
下面对配置空间作一下详细的介绍:
在PCI协议中,设备占用的内存、I/O、中断等资源是浮动的,随着系统中资源需求的变化而变化。
PCI总线提供了资源配置机制,能够让设备提出资源需求申请,系统收集所有资源申请信息并综合分配设备所需要的资源,最后把资源分配信息写入到设备中去,以此作为设备访问的依据。
保存资源配置信息的寄存器成为配置寄存器,所有配置寄存器的整体就构成了配置空间。
除了资源需求信息外,配置空间还提供其他如设备制造商、设备类型等信息。
配置空间是一容量为256字节并具有特定记录结构或模型的地址空间,该空间又分为头标区和设备有关区两部分。
设备在每个区中只实现必要的和与之相配的寄存器。
一个设备的配置空间不仅在系统自举时可以访问,在其它时间内也是可以访问的,直接影响设备特性的配置寄存器在头标区,其他部分则因设备而异。
头标区的长度为64字节,用来惟一的识别设备,并使设备能以一般方法控制。
头标区分为两部分:
前16个字节的定义在各种类型设备中都是一样的;
剩余的字节可以根据设备支持的基本功能情况进行不同的布置。
表2给出了每个设备必须支持的256字节配置空间中预先定义的头标类型0所对应的64字节头标区的布局情况。
头标区可实现的一些功能如下:
(1)设备设别:
利用设备识别字段,配置软件能很容易地确定在系统的PCI总线上有什么样的可用设备,所有这类寄存器都是只读寄存器,包括标明特定设备的设备识别字段,标明设备制造者的供应商识别字段,指定设备特有的版本识别代码的版本识别字段,标识设备的总体功能和特定的寄存器级编程接口的分类代码字段以及表示布局类型及指定功能的头标类型字段。
(2)设备控制:
头标区中的命令寄存器可发出和响应PCI局部总线命令以提供对设备的粗略控制。
它是一个16位寄存器,目前只定义了位[9:
0],位[15:
10]保留以便将来使用。
当向这个寄存器写入0时,对应的设备在逻辑上除了可进行配置访问外,其它所有访问均与总线脱开。
要求所有的设备都应支持这一基本功能。
(3)设备状态:
头标区中的状态寄存器用于记录PCI局部总线有关事件的状态信息。
设备可根据自己的功能实现状态寄存器的相应位。
(4)中断控制:
主要包括中断线寄存器和中断引脚寄存器。
中断线寄存器用来指示中断线的连接信息,它的值表示设备的中断引脚与系统中断控制器的哪一个输入端相连。
这个中断寄存器的值与标准8259配置中的IRQ编号(0~15)相对应。
中断引脚寄存器的值表示设备使用了哪根中断引脚,值01H~04H对应于PCI中断请求引脚INTA#~INTD#。
(5)基址寄存器:
PCI总线最重要的功能之一是通过基地址寄存器和局部配置寄存器在地址空间重定位PCI设备。
系统上电时,通过上层应用软件能判断系统中存在哪些设备,并由此建立协调的地址映射。
PCI配置寄存器提供有6个基地址寄存器(BASE0一BASE5),位于头标区的10H~24H。
这些基地址都是系统中的物理地址,其中BASE0和BASE1是用来访问局部配置寄存器的基地址,BASE0是映射到内存的基地址,BASEI是映射到I/O的基地址,可用于通过内存和I/O来访问局部配置寄存器“BASE2~BASE5”实现4个局部地址空间的PCI总线访问。
它们将局部端的芯片通过局部端地址(在局部配置寄存器中设置)翻译成PCI总线地址,也就是将本地的芯片映射到系统的内存或I/O空间。
这样,应用程序操作这一段内存或I/O实际上就是对本地芯片的操作,如图2所示:
图2PCI配置空间和存储空间的映射关系