摘要
PCI bus用于计算机平台领域已将近十年,以PCI总线为架构设计的计算机系统也已运用于许多应用领域,但是主流个人计算机内的PCI架构似乎并没有办法直接满足工业用计算机的需求。
工业计算机的典型运用比如计算机语音整合(CTI), 常常需要在一个系统内插入超过十张PCI 的语音卡,而一般个人计算机上可提供的PCI扩充槽仅有四槽。为了能在计算机平台上增加这些扩充槽,PCI-SIG协会就发展出一个PCI桥接器的公开规范,让世人遵循,而工业计算机界所属的规范制定者PICMG协会也为PCI bus及PCI桥接器的运用制定了一些规范,成为公开标准,其中有些谈及单板计算机上设计的标准,也有些谈到背板设计的规范。除了单板计算机及背板设计上需特别规范外,若将桥接器应用到CompactPCI的单板计算机上,实际应用还有一些特别的不同,单板计算机上的桥接器将区分成『透明桥』以及『不透明桥』。到底单板计算机及背板的桥接器设计要注意些什么?『透明桥』以及『不透明桥』又是怎么一回事呢?当您要运用PCI桥接器来开发应用时,关键的考虑因素为何?本文希望能加以探讨。
引言
为了符合应用上的需求,在技术上总是会不断的更新调整,产品设计者及制造商必须跟上脚步及时做设计变更。传统的工业计算机主要组成含单板计算机及背板,二者之间的结合靠的是PCI/ISA金手指及其插槽,早期的4U 上架式机箱中,所采用的背板大都是4槽PCI及8~12槽的ISA,主要的扩充是背板上的ISA插槽,在总线主流地位由ISA转移到PCI后,多槽数PCI背板的需求应运而生,于是PCI桥接器开始出现在背板上。另一方面,电信用的欧规卡原先架构在VME Bus上,后来在PCI 总线转为流行之后,欧规卡上VME bus 也渐渐被PCI取代掉,催生了CompactPCI的架构。欧规卡架构常有多槽数需求,因此也促使CompactPCI单板计算机以及背板的设计需要将PCI桥接器考虑进去。诸多单板计算机的应用区分为Host CPU Card及Peripheral CPU Card,这两种应用都需要PCI 桥接器将CPU Card连接上背板上的PCI总线,不同的地方只是CPU Card插在系统槽作为Host CPU Card或是插在外围槽作为Peripheral CPU Card,这两种应用所需的桥接器是不同的,分别为『透明桥』以及『不透明桥』。
以下将针对桥接器在单板计算机、背板、compactPCI上的应用作深入探讨,特别是在compactPCI的设计上,同时也会介绍一下PCI桥接器之技术发展趋势。
PCI桥接器在传统工业计算机上的应用</B>
请参考图一,传统工业计算机可拆解为单板计算机及背板两大部分。背板必须依据PICMG1.0的规范来设计,图中可以看见有2颗PCI桥接器芯片在10槽的背板上,若依据原不含PCI桥接器的规范来看,CPU卡需要提供以下几组信号来实现背板上的四个扩充槽(PCI Bus0):1. REQ(3,2,1,0)#
2. GNT(3,2,1,0)#
3. Slot(1,2,3,4)的Clock分别接CLK(A,B,C,D)
4. Slot(1,2,3,4)的IDSEL分别接AD(31,30,29,28)
5. 中断信号INT(A,B,C,D) 绕行方式依据PCI 规范来连接,有一固定的绕行规则
若要再进一步增加扩充槽,则桥接器可依据PCI Bridge的规范,将二颗桥接器芯片分别放在Slot3及Slot4的位置,分别扩充8个PCI槽(PCI Bus1,2),使背板上的PCI槽数达到18槽,扩充槽位的REQ#,GNT#及CLK信号由桥接器提供,中断信号INT(A,B,C,D)则需依据PCI桥接器规范来连接,使得PCI Bus0, 1, 2可以共享INT(A,B,C,D)四个中断信号。
图一:4U机箱、PICMG单板计算机及18槽PCI背板
用单板计算机上PCI桥接器来扩充Compact PCI背板上的槽数
CompactPCI规范PICMG2.0将CompactPCI的slot数目限制在小于等于8槽,这是在PCI-33Mhz下经模拟及实际验证的结果。为了设计这8槽,CompactPCI的单板计算机上需要使用PCI桥接器,并将扩充的PCI总线信号经由单板计算机上的J1, J2连接到背板上的P1, P2, 再分配到各个扩充槽去,如图二所示。在 CompactPCI背板上,除系统槽外,另外七槽的信号必须依照以下规则设计: 1. REQ(6,5,4,3,2,1,0)#
2. GNT(6,5,4,3,2,1,0)#
3. Slot(1,2,3,4,5,6,7)的Clock分别接CLK(A,B,C,D,E,F,G)
4. Slot(1,2,3,4,5,6,7)的IDSEL分别接AD(31,30,29,28,27,26,25)
5. 中断信号INT(A,B,C,D)的绕行方式依据PCI桥接器的规范来连接,有一固定的绕行规则
图二:3U,6U单板计算机及8槽背板
若是要扩充到15槽,则须遵循PICMG2.7的双系统规范来设计,单板计算机上需设计两个PCI桥接器才行,概念上可以方块图示意,如图三。而在背板的设计上则须将第一个桥接器扩充的BusA经由P1, P2扩充1-7槽;同时将第二个桥接器扩充的BusB经由P4, P5扩充9-15槽,如图四。
图三:6U单板计算机,双桥接器设计
图四:6U 15槽,双系统背板
用托盘式桥接方式来扩充Compact PCI背板上的槽数
前一段我们采用CPU卡上的桥接器来扩充背板上的插槽,但是有时候碍于主板面积或是J4, J5有其它的用途,不得不将另一颗桥接器安置于背板上,但事与愿违,很不幸的是背板并没有多余的空间放置桥接器,在设计上并没有如图一中传统背板那样简单。此时有一个不错的做法,就是将桥接器作成子板,由背板背面将Primary bus端连接1-7槽中的一槽,再将桥接器子板上的Secondary Bus连接至欲扩充的7槽去,如图五,这样的应用方法较常出现在3U的系统中,主要是因为3U的系统并没有J4, J5可使用,6U系统则较常采用图四的做法。
图五 托盘式桥接法
PCI透明桥、非透明桥在CompactPCI单板计算机上的应用</B>
在传统的应用上,CompactPCI单板计算机就像一般计算机一样,被用作主控端主机 (Host Computer),但是在许多特殊应用中,常常希望能够有一种CompactPCI卡,它属于外围卡但是却拥有CPU卡般的运算能力,为了达到此目的,于是诞生了PCI非透明桥,PCI非透明桥虽然仍旧将不同的CPU卡用PCI Bus连接起来,但是它会将背板上的PCI Bus与CPU外围卡上PCI bus做适当的阻隔。PCI非透明桥到底是什么,如何运作的呢?以下作一个简要说明。
首先我们以Intel 21555 非透明桥在凌华科技的cPCI-6765 6U CompactPCI的CPU外围卡为例做说明,如图六。
图六 Intel 21555非透明桥,ADLINK cPCI-6765 CPU外围卡
联合工控的cPCI-6765设计时主要目的是插在CompactPCI的外围槽而不是系统槽,其与系统槽CPU卡之间的沟通与一般CPU跟外围设备的沟通相似,从系统槽CPU卡向PCI总线看去,是一张含21555桥接器的PCI 组件,图七可帮助理解,在操作系统底层需通过驱动程序才能依据cPCI-6765板内BIOS所分配的固定I/O或是Memory空间,正常存取cPCI-6765板内实际地址数据,而系统槽CPU卡对cPCI-6765的寻址行为,会被21555重新编码,再寻址到cPCI-6765板内实体地址上。同样的从cPCI-6765向PCI总线看去,也只能看到21555桥接器,也用同样的方法去存取系统槽的CPU卡。
图七 CompactPCI系统槽CPU卡与外围槽CPU卡
PCI 桥接器的技术发展近况</B>
PCI总线发展的最初几年,大部分的应用都集中在32bit/33MHz的规范上,这个时期较著名的PCI桥接器有Intel的32bit透明桥21150, 21152,德州仪器的PCI2050系列,HINT的HB1, HB2等,这一个时期大家都尽可能发展脚位兼容的桥接器,后来到了64bit PCI较普遍使用时期,Intel, HINT, PERICOM等厂商都还是尽可能的做到脚位兼容,较著名的桥接器以Intel的21154为典型代表,凌华科技的双Xeon 6U CPU卡 cPCI-6860即采用此颗桥接器做设计。
后来Intel发展出第一颗64-bit的非透明桥21554,不久又更新设计,发表非透明桥21555,使得x86架构的主机板有机会被视为外围卡来使用。事隔不久,Intel的竞争对手HINT,设计出一颗脚位与Intel透明桥21154兼容,又具21555非透明桥功能的Universal桥接器HB6,凌华科技的双LV-PIII 6U CPU卡cPCI-6820即采用此颗桥接器做设计,是国内第一块Universal CPU卡,既可插在系统槽,又可插在外围槽。桥接器大厂Intel, Hint, PeriCOM, TI等在产品不同特色上互有领先,近来PCI-X在高端X86架构计算机上的应用也有越来越多的趋势,因此上述这些大厂也大都有PCI-X桥接器的计划在进行,其中以Intel与HINT的竞争最为激烈,近期都有新产品发布。
结论
PCI桥接器虽然很少在一般个人计算机上被采用,但在工业计算机领域的应用却极为重要,就像文中所提的,传统工业计算机背板、主板,CompactPCI系统的背板、主板等设计,都或多或少会牵扯到PCI桥接器的应用,凌华科技在PCI桥接器的应用上有一些值得分享的经验,仅以此篇短文用最浅显的方式介绍给大家,希望对有兴趣的人能有一点帮助。