双机通信在CPCI总线上的实现

发布者:DelightWish123最新更新时间:2014-09-15 来源: 21ic关键字:CPCI总线  映射  内存 手机看文章 扫描二维码
随时随地手机看文章

在电信、电力、国防等应用领域中,经常要求其所用设备有极高的实时性。当需要在各个设备间进行大容量的信息交换时,传统的网络包交换模式已不能很好地满足实时性的要求。而借助于CPCI总线,两个设备可以互访对方的内存, 具有传输速度快、传输容量大和高可靠性等特点,非常适合大容量的信息传递。国家数字交换系统工程技术研究中心承担的国家863计划项目——“中国第三代移动通信系统”CDMA2000系统集成就选择基于CPCI总线的多SBC平台。各个SBC间的通信效率直接决定了整个系统性能的高低。

目前常用的实时操作系统如VxWorks、Lynx等,都针对CPCI总线实现了消息队列,可用于SBC间的消息通信。但VxWorks、Lynx中消息传递的实现方式很不灵活,一般是通过在一个特定的SBC(通常为system board)中开启一块共享内存,其他各个SBC(通常为non system board)通过对共享内存的读写交换信息;每完成一次两个non system SBC间的信息交换,都要进行一次PCI读写操作,效率不高。另外VxWorks、Lynx中的消息长度都有一个最大值,当要进行大数据量(如1GB的内存数据库)的信息传输时,操作系统提供消息传递机制也无能为力。而以上这些问题,都可以通过任意两个SBC间的直接内存访问得到解决。本文首先介绍了 PCI Bridge的工作原理;然后以Motorola公司提供的CPX8000系列工控机为例,讨论了两个SBC是如何基于背板(Backplane)上的CPCI总线,并利用PCI Bridge的地址映射机制,通过互访内存的方式最终实现双机通信;最后介绍了实际应用时应注意的性能优化问题。

1 PCI Bridge的工作原理

在简单的计算机系统中,其拥有的外部设备较少,单级总线结构便能满足系统的需要。但是由于单个 PCI总线可支持的 PCI 设备数量有电气限制,对拥有大量外设的计算机系统而言,单级总线结构已不能满足系统的要求,因此便产生了桥接设备。通过PCI-to-PCI Bridge可扩展出新的PCI总线,通过PCI-to-ISA Bridge可扩展出ISA总线。借助PCI Bridge这些特殊的PCI设备,系统中各级总线被粘和在一起,使整个系统成为一个有机整体。

每个PCI设备都有自己的 PCI I/O空间、PCI内存空间和PCI配置空间(configuration space)。PCI设备的设备驱动程序对PCI配置空间进行初始化设置后,各个智能控制器如CPU、DMA控制器等,可以对PCI设备的PCI I/O空间、PCI内存空间进行访问。在图1中,CPU若要访问网卡,首先会在PCI Bus0上生成一个物理地址,这个地址经PCI-to-PCI Bridge的过滤及转换后,在PCI Bus1上产生一PCI Bus地址,网卡通过地址译码,响应对这个地址的访问。

 


图1 基于PCI的系统

从这个过程可以了解到,PCI-to-PCI Bridge有两种基本的功能:

(1)地址映射功能。虽然同是对网卡进行访问,但PCI Bus0与PCI Bus1上的地址意义是不同的。两个地址分属各自的地址空间,通过PCI-to-PCI Bridge实现两个地址的映射。根据这两个地址是否相同,可将PCI-to-PCI Bridge区分为两种类型:

·PCI-to-PCI Transparent Bridge。PCI Bridge不对PCI Bus0上的地址进行转换,直接将其映射到PCI Bus1上。PCI Bus0与PCI Bus1上的地址是相同的。

·PCI-to-PCI Non Transparent Bridge。PCI Bus0上的地址必须经过PCI Bridge的转换,才能映射到PCI Bus1上。PCI Bus0与PCI Bus1上的地址是不同的。

(2)地址过滤功能。PCI Bridge在把PCI Bus0上的地址向下游总线(ISA Bus、PCI Bus1)传递时,具有选择性。在图1中,CPU在PCI Bus0上所产生的地址,只有对SCSI和Ethernet的访问,PCI-to-PCI Bridge才予以接收;而对于PCI Bus0的其他地址,PCI-to-PCI Bridge均不予响应。每一个PCI Bridge所响应的地址范围,可形象地称其为此PCI Bridge的地址窗口,只有当上游总线的地址落进PCI Bridge的地址窗口中,PCI Bridge才响应此地址并向下游总线传递。

2 双机通信的具体实现

本节以Motorola公司提供的CPX8000系列工控机为例,介绍了如何通过CPCI总线实现双机间的通信。如图2所示,两个SBC通过背板上的CPCI总线实现了物理上的连接。如果两个SBC能够互相访问对方的内存, 就可实现两者间的数据交流。以系统处理机板(System Processor Board,又称主机板)访问非系统处理机板(Non-system Processor Board, 又称子机板)内存为例,介绍双机通信的具体实现。本方案已在Lynx及VxWorks实时操作系统上实现。

在图2中,主机板CPU若要访问子机板中的1MB内存单元,必须将这块内存映射到主机板CPU的虚拟地址空间中,可以通过对主机板、子机板、主机板与子机板的接口配置来达到目的。此1MB的内存单元可被映射到不同的地址空间(如CPU虚拟地址空间、物理地址空间、本地PCI地址空间、系统CPCI地址空间等),映射地址也各不相同。在图2中,对于此1MB内存的起始单元在不同地址空间中的映射地址,分别用符号A1、A2、…A7表示。

 


图2 数据通信原理图

2.1 子机板的配置

(1)调用内核内存分配函数申请1MB的内核虚拟地址空间,得到申请空间的开始地址A7。

(2)根据操作系统的内存映射关系,得到虚拟地址A7的物理映射地址A6。

(3)Raven ASIC是一个Host-to-PCI Bridge, 因为Processor Bus不是一个标准总线,所以通过Raven将其转换为PCI总线,以挂接各类PCI设备。CPU和Raven一起构成了一组套片(chipset),配合使用。根据Raven的设置,获得物理地址A6在Local PCI Bus的映射地址A5。

(4)21554是一PCI-to-PCI Non Transparent Bridge,并可进行双向数据传递。通过其内部的两个配置寄存器,将其地址窗口的大小设为1MB;地址窗口的起始地址在Local PCI Bus端设为A5。[page]

2.2 主机板的配置

(1)申请大小1MB的内核虚拟地址空间,得到其开始地址A1。

(2)根据操作系统的内存映射关系,得到虚拟地址A1的物理映射地址A2。

(3)根据Raven的设置,得到物理地址A2在Local PCI Bus上的映射地址A3。

(4)21154是一PCI-to-PCI Transparent Bridge,它也可以在两个方向上进行数据访问。设置其内部的两个配置寄存器,将其地址窗口的大小设为1MB;地址窗口的起始地址设置为A3。由于 21154的透明性,地址A3与其在System CPCI Bus端的映射地址A4的值是相同的。

2.3 主机板与子机板的接口配置

在主机板端对子机板进行配置,设置21554的配置寄存器,将其在System CPCI Bus端的地址窗口开始地址设为A4。由于在Local PCI Bus端的地址窗口起始地址已设为A5,所以将地址A4映射到了地址A5。可以看到,由于21554的非透明性,使主机板与子机板的地址空间相互隔离,各自可独立分配,并在System CPCI Bus级实现了对接。在主机板CPU看来,整个子机板与主机板网卡一样,都是挂在主机板Local PCI Bus下的一个外设。对子机板的访问与对主机板网卡的访问方式是一样的,没有什么不同。

2.4 地址转换流程

当所有的配置完成后,主机板CPU只对地址A1进行读写操作,便可实现对子机板1MB内存起始单元的访问;对1MB内存中其他单元的访问,只要将地址 A1加上相应的偏移量即可。通过下面的地址转换流程,可以清楚地看到各级地址是如何通过一级级映射,最终命中指定单元的。

主机板CPU给出虚拟内存访问地址A1→主机板物理地址A2→主机板Local PCI Bus地址A3→System CPCI Bus地址A4→子机板Local PCI Bus地址A5→子机板物理地址A6→经Falcon Memory Controller译码后,选中所申请的1MB内存的起始单元。

从上述介绍可以看出,要想实现双机的内存互访,关键是要进行正确的地址映射。当要实现多个SBC间的相互访问时,地址的映射会更复杂,需要对操作系统的地址空间分配、各个SBC的PCI-to-PCI Bridge设置、System CPCI Bus地址空间分配等进行通盘考虑。

 


?图3 在两SBC间进行读操作时的时间图

 


图4 在两SBC间进行写操作时的时间图

3 性能优化

图3、图4是用VMETRO的总线分析仪截获的数据。分别是在两个SBC间进行读写访问时,连续进行100 Byte传输的时间图。

从图3可以看出,每进行一次4Byte的读操作,要花费956.8+4×149.5+179.4=1734.2ns,这相当于1734.2ns/29.9ns=58 PCI clock cycles。

从图4可以看到,第一个4Byte的写操作花费了159.5ns,接着是两次猝发传送,随后一个4Byte写操作花费了119.6ns。进行一次 4Byte的写操作平均花费(159.5ns+2×29.9ns+119.6ns)/(4×29.9ns)=11 PCI clock cycles。

对比读写两种访问方式可以看出,写操作比读操作的效率要高得多。这主要有以下一些原因:

(1)当 PCI上的一个主设备发起对一个目标设备的访问时,读和写操作的完成时间差别很大。目前的PCI设备中一般都有一个用于存储器写的转发(post)缓冲器。若要进行写操作(如图2中主机板对子机板的写操作),主设备只需将其写缓冲区数据复制到目标设备的转发缓冲器中,便认为操作完成。例如在图2中,主机板的Raven只要将数据发给21154,便认为写操作完成,后续的数据传输由21154驱动完成。可以看到,写操作在目的总线上(子机板的 Process Bus)完成之前可以先在源总线上(主机板的Local PCI Bus)完成,实际上是寄存器对寄存器的操作。而要实现一个读操作,则必须经过存储器本身的访问和各级PCI接口的逻辑延迟才可完成。与写操作相比,读操作在源总线上完成之前必须先在目的总线上完成,这导致了读操作的效率很低。

(2)从图3、图4中可以看到,PCI设备还可进行写操作的猝发操作,但读操作则无法进行。这是由于猝发操作只有在前一事务是写事务时才能实现。猝发传送取消了 FRAME#、AD、C/BE#、IRDY#、TRDY#、DEVSEL#等总线信号的周转周期,实现了每一个PCI clock cycle进行一次数据传送。

(3)猝发传送操作不可能无限制地进行下去。连续进行猝发传送的次数与转发缓冲器的大小、Latency Timer的取值、总线的繁忙状况都有关系。

由于以上原因,在两个SBC间进行数据传送时,应该采用如下方式:

(1)提供数据的SBC应将数据直接写到消费数据的SBC内存中;而不是提供者将数据放在本地内存,再由消费者经过PCI读操作来实现。也就是说,总是进行PCI写操作。

(2)当需要在多个SBC间进行数据互传时,要合理地设置Latency Timer的取值,以使各SBC公平使用PCI总线资源。

考虑两个子机板间的通信实现。若采用操作系统提供的消息传递机制,数据提供者必须先将数据写到主机板,数据消费者再从主机板读取数据。对一个4 Byte的数据传输来说,平均要花费58+11=69 PCI clock cycles。若采用本文提供的方法,提供数据的SBC将数据直接写到消费数据的(接上页) SBC内存中,则传输一个4 Byte的数据,平均只需11 PCI clock cycles。可知,后者比前者快了69/11≈6.3倍,极大提高了传输效率。

参考文献:

1 Motorola.MCP750 Series Single Board Computer Programmer’s Reference Guide. Motorola, 2001

2 Motorola. CompactPCI Single Board Computer Programmer’s Reference Guide. Motorola, 2001

3 Intel.21554 PCI-to-PCI Bridge for Embedded Applications Hardware Reference Manual. ??Intel,1998

4 Intel. 21154 PCI-to-PCI Bridge Configuration Application Note. Intel,1998

5 Wind River.VxWorks Programmer′s Guide. Wind River Sys-tems Inc,1998

6 Lynx. Lynx Device Driver Service Manual. Lynx, 2000

7 T.Shanley, D.Anderson. PCI System Architecture(4th Edition).USA: Addison Wesley ??Longman,1999

关键字:CPCI总线  映射  内存 引用地址:双机通信在CPCI总线上的实现

上一篇:TMS320F24x与PC机串行通信接口设计及应用
下一篇:仪器总线技术概览

推荐阅读最新更新时间:2024-05-02 23:10

盘点商业化过程中 半路夭折的第三方ROM
    ROM的繁荣是Android系统的一大特色,而苹果的IOS则是非常封闭的,如果不越狱,用户只能使用手机的基本功能。与封闭的IOS不同的 是,Android系统最大的特点就是开源,也因为其开源的性质从而诞生了各种各样的第三方安卓ROM,它也让安卓用户在不更换手机只刷入新ROM的情况 下就能带来多彩缤纷的手机体验。   对于使用Android手机的用户来说,刷机是一件非常有意思的事,特别是在早期手机厂商ROM人性化定制程度不高、安卓碎片化严重的情况下, 要想要获得更好的用户体验,去刷一款人性化更高的系统似乎是更好的选择。而不少厂商也看到了其中拥有巨大的市场,纷纷推出旗下定制安卓系统。它们中有的在 后来成为了全球最好用的操作
[手机便携]
STM32内部RAM在线调试配置方法及详细说明
Ⅰ、 写在前面 本文主要讲述的内容:基于Keil开发工具下,STM32内部RAM在线调试配置方法,以及每一项配置的详细说明。如需要了解更多相关的文章,可以到我博客,或微信公众号查看。 让程序运行在RAM中调试代码有两优点:1.速度快;2.减少对芯片FLASH读写次数,增加芯片寿命。 本文牵涉的知识比较多,如果弄明白所有细节问题,对自己这方面的技能是一种很大的提升。 本文基于ST公司Cortex-M内核的STM32来讲述其配置方法,其实也适用于其他公司(如:TI、NXP等)的Cortex-M芯片,原理都是一样的。 本文内容已经整理成PDF文件,提供给大家下载: http://pan.baidu.com/s/1d
[单片机]
STM32内部<font color='red'>RAM</font>在线调试配置方法及详细说明
赛普拉斯为其领先业界F-RAM和nvSRAM产品组合提供晶圆销售支持
加利福尼亚州圣何塞市,2016年1月21日-赛普拉斯半导体公司(纳斯达克股票交易代码:CY)宣布其领先业界的非易失性随机存取存储器((NVRAM)产品组合新增晶圆产品。赛普拉斯的NVRAM产品组合包括铁电RAM(F-RAM )和非易失性静态RAM(nvSRAM),可在断电时为重要数据提供可靠保护。很多关键任务应用除了需要F-RAM和nvSRAM的独特优势之外,还需要能够实现小巧、独特封装选项的裸片。 赛普拉斯的F-RAM是业内能效最高的NVRAM技术,具有近乎无限的100万亿次读写耐久性。F-RAM 存储单元中的铁电材料可抵御由辐射或磁场导致的数据损坏,因此可为医疗、航天和国防应用提供软错误免疫能力。赛普拉斯的nvSRAM
[嵌入式]
【ARM学习笔记】实验三:S3C2440A与内存SDRAM连接实验
前文讲到了存储控制器对外引出了8根片选信号线,分别对应8个BANK,每个BANK的地址空间大小为128MB,共计1GB的物理寻址空间 在8个BANK中,BANK0占用总线地址0x00000000~0x07FFFFFF,而CPU在上电后会从总线地址0x00000000读取指令执行,只能通过硬件引脚OM1和OM0配置成16bit或32bit的位宽,一般情况下,BANK0都是用来连接Nor Flash作为启动设备用的 BANK1~BANK5可以随意连接具备类内存接口的ROM和SRAM,支持8bit,16bit和32bit这3种位宽 BANK6和BANK7则除了连接具备类内存接口的ROM和SRAM,还可以用来连接SDRAM,因
[单片机]
【ARM学习笔记】实验三:S3C2440A与<font color='red'>内存</font>SDRAM连接实验
联名紫禁城IP realme真我V25发布:超大内存 价格1999元
北京时间2022年3月3日,realme正式召开“手握星河”主题发布会,推出了新一代国潮手机realme真我V25。本次真我V25携手“紫禁城”国潮IP,将科技与东方文化的传承相结合,真我V25标配旗舰级“12 GB+256GB”超大内存组合,而此次发布会上,全新真我Buds Q2s无线耳机也同步亮相。 外观方面,本次realme联名“紫禁城”IP,从紫禁城与星河中汲取灵感,让真我V25实现了从设计语言到工艺的全面突破。 配色方面,真我V25采用了“紫微星”配色,还原紫禁城夜晚的星辰变幻,使用复合工艺打造“星空纹理设计”——双纹双镀工艺将光线汇集在后盖中心,并漾印星河,极具辨识度。而且realme在价位段首次应用光致
[手机便携]
3D NAND 的层数有限制吗?
内存供应商正在竞相为 3D NAND 添加更多层,数据爆炸以及对更大容量固态驱动器和更快访问时间的需求推动了3D NAND市场的竞争。 美光已经在完成 232 层 NAND 的订单,而且不甘示弱,SK 海力士宣布将于明年上半年开始量产 238 层 512Gb 三层单元 (TLC) 4D NAND。或许更重要的是,芯片制造商私下表示,他们将利用行业学习为目前正在开发的 3D-IC 堆叠 NAND。 西门子 EDA技术产品经理 Ben Whitehead 表示:“处理器的摩尔定律在过去几年中可以说一直滞后,但对于 NAND 闪存来说,摩尔定律仍然存在并且很好 。” “这是一件好事,因为现代计算和网络对快速存储有着无法满足的需求
[半导体设计/制造]
3D NAND 的层数有限制吗?
华邦推出为边缘AI带来超高带宽内存的CUBE架构
全球存储解决方案领导华邦今日宣布推出一项强大的内存赋能技术,可助力客户在主流应用场景中实现经济实惠的边缘 计算。华邦的 CUBE (半定制化超高带宽元件) 可大幅优化内存技术,可实现在混合云与边缘云应用中运行生成式 AI 的性能。 CUBE 增强了前端 3D 结构的性能,例如 chip-on-wr(CoW)和wafer-on-wafer(WoW),以及后端 2.5D/3D chip-on-Si-interposer 的基板和扇出(Fan out)解决方案。CUBE 专为满足边缘 AI 运算装置不断增长的需求而设计,能利用 3D 堆栈技术并结合异质键合技术而提供高带宽低功耗的单颗 256Mb 至 8Gb 内存。除此之外,
[机器人]
铠侠目标 2031 年推出 1000 层 NAND 闪存,重组存储级内存业务
4 月 7 日消息,据日经 xTECH 报道,铠侠 CTO 宫岛英史在近日举办的第 71 届日本应用物理学会春季学术演讲会上表示该企业目标 2030~2031 年推出 1000 层的 3D NAND 闪存,并对存储级内存(SCM)业务进行了重组。 铠侠与西部数据携手开发 NAND 闪存技术,目前这对合作伙伴最先进的产品是 218 层堆叠的 BICS8 3D 闪存。BICS8 闪存可实现 3200MT/s的 I / O 速率。 另一家主要 NAND 企业三星在 2022 年的技术日上提出了类似的观点,当时三星预测到 2030 年实现 1000+ 层堆叠的 3D NAND 闪存。 提升堆叠层数是提升单颗 3D NAND 闪存颗粒容量的
[半导体设计/制造]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved