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

发布者:创意旅程最新更新时间:2006-05-18 来源: 电子技术应用关键字:总线  pci  映射  内存 手机看文章 扫描二维码
随时随地手机看文章

   在电信、电力、国防等应用领域中,经常要求其所用设备有极高的实时性。当需要在各个设备间进行大容量的信息交换时,传统的网络包交换模式已不能很好地满足实时性的要求。而借助于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。   

  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

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

上一篇:USB接口芯片的原理及应用
下一篇:一种Windows2000下连续输出数据的PCI卡

推荐阅读最新更新时间:2024-05-13 18:11

基于LIN总线和MAX6675温度传感器改善车辆制动性能
1、引言 国内的大型、重型车辆普遍采用鼓式刹车装置,每年重型车辆在山路下坡行驶时因制动失灵造成的事故频发,刹车鼓温度过热导致制动器的散热不能满足要求是导致制动失灵的主要因素,提高重型车辆制动性能的最佳方案就是加装ABS,尽管国家已发布标准GB7258、GB12676来规定客车和货车必须安装符合要求的防抱死制动装置,以此来增强道路行驶的安全性。但实际配备情况很不理想,因为鼓式刹车换成盘式刹车、配备ABS会使厂商成本增加,所以未来几年内多数大型车辆仍旧采用加装水箱的方式来给刹车鼓降温。 就国内目前实际情况,本文提出的基于LIN总线监测刹车鼓温度、自动控制喷淋系统以及添加安全报警功能的设计是改善现有重型车辆制动性能的一种低成本、便于
[嵌入式]
基于LIN<font color='red'>总线</font>和MAX6675温度传感器改善车辆制动性能
SPI总线单片机发送数据的C51程序
关于spi协议见: http://hi.baidu.com/gilbertjuly/blog/item/0be222eeac9abae5cf1b3e38.html ISD4002芯片资料参考: http://download.csdn.net/source/1208805 以下是单片机spi通信的通用程序,在不同晶振情况下可能需调整延时。这里单片机晶振为11.0592MHz。 _nop_();语句指延迟一个机器周期,约1us左右。写1bit约10us,spi传输率约100kbit/s。 程序中只用了MOSI,/SS,SCLK信号,没有用MISO信号。 #include REGX52.H #include string
[单片机]
SPI<font color='red'>总线</font>单片机发送数据的C51程序
PIC单片机-普通IO口模拟I2C总线对24C02进行读写操作
使用PIC单片机的普通IO口模拟I2C总线,对24C02进行读写操作。其中,总线定义为: #define IIC_SCLK RC3 //24C02时钟线 #define IIC_SDAT RC4 //24C02数据线 将跳线帽P11短接至24C02方向,将跳线帽P6段接至IIC方向。 I2C 总线协议规定任何将数据传送到总线的器件作为发送器,任何从总线接收数据的器件为接收器,数据传送是由产生串行时钟和所有起始停止信号的主器件控制的,主器件和从器件都可以作为发送器或接收器。 I2C 总线协议定义如下: 1、只有在总线空闲时才允许启动数据传送 2、在数据传送过程中当时钟线为高电平时数据线必
[单片机]
直接总线式DRAM的信号连接
    Direct Rambus DRAM的信号连接关系如图所示。与DDR-SDRAM最大的不同在于信号线是漏极开路输出以及时钟是以连续不断的方式往复的。   图 Direct Rambus DRAM的信号连接关系   异步DRAM、同步DRAM以及DDR-SDRAM等无论哪个输出都是有极性输出,是属于在高电平时驱动高电平的机制,而Direct Rambus DRAM利用漏极开路输出,可以对应于快速操作。     另外,采用2个系统时钟是处理时钟相位偏移的对策,DDRSDRAM利用双向的选通信号实施时钟相位偏移的处理对策,而Direct Rambus DRAM预各了由DRAM向DRAM控制器方向的时钟及由控制器向DRAM
[嵌入式]
利用CAN总线的进行汽车轮速传感器系统设计
  引言   目前,网络技术是汽车电子领域发展的一项新技术。它不仅是解决汽车电子化中的线路复杂和线束增加问题的技术,而且其通讯和资源共享能力成为新的电子与计算机技术在车上应用的一个基础,是车上信息与控制系统的支撑。   汽车电子网络按功能可分为面向控制的网络(CON)和面向信息传输的网络(ION)。按网络信息传输速度,美国汽车工程师协会(SAE)将网络分为 A,B,C三类。A类为低速网,波特率在9600bps以下,进而波特率在125kbps以下为中速网B类,125kbps以上为高速网C类。车轮速度 (即车轮绕轮轴旋转的线速度)传感器(简称轮速传感器)信号,可供发动机控制模块、防抱制动系统(ABS)控制模块及仪表控制模块共享
[嵌入式]
机构:国产DRAM内存芯片和三星的技术差距缩短至5年
数字经济时代,芯片扮演着重要角色。得益于人才聚集、产业升级、政策扶持等,我国的半导体产业正在蓬勃发展,并不断拉近与先进地区、企业的差距。日前,韩国研究机构OERI在报告中称,估计韩企和中国厂商在DRAM芯片的技术差距已缩短至5年。 具体来说,三星和SK海力士计划在年底前投产第五代10nm级(1b或者说12nm)内存芯片,国产DRAM代表企业合肥长鑫今年的打算则是第二代10nm(1y或者说16/17nm)。 一般而言,DRAM每一代的演进时间是2年到2年半。 按照正常节奏,国产内存芯片完全有机会进一步缩短差距,可目前有一个比较棘手的问题在于,三星和SK海力士已经为生产更先进的DRAM芯片引入了EUV(极紫外光刻)设备,
[手机便携]
机构:国产DRAM<font color='red'>内存</font>芯片和三星的技术差距缩短至5年
搭载骁龙710+4GB内存 Nokia 8.1现身Geekbench跑分库
集微网消息,近日诺基亚有一款新设备出现在Geekbench跑分库上,通过Geekbench的数据显示诺基亚该新机名为诺基亚8.1,搭载了高通骁龙710处理器,其中主频为1.71 GHz,并配备了4GB的运行内存,运行Android Pie(9.0)系统。 诺基亚8.1在Geekbench的成绩单核得分为1841,多核得分为5807。另有传言称诺基亚8.1将配备6GB内存,搭载64GB或128GB存储空间。不过诺基亚并没有对外泄露改款新机的发布日期,但预计会在明年初推出。
[手机便携]
一种嵌入式WEB服务器的设计与实现
  在企业自动化的工业现场,下层车间的监测设备之间都是采用现场总线相互连接,而企业的管理层和生产监控层都是连于以太网的PC,甚至是位于异地的连于互连网上的PC。为了使工业现场的现场总线上的设备和管理监控层之间的PC能够通信,同时改善故障检测和设备维护的远程访问能力,笔者在CAN总线网与以太网的互连系统中设计了一个嵌入式WEB服务器。 1 嵌入式WEB服务器硬件设计 通常嵌入式系统硬件包括微控制器、存储器及外设器件和I/O端口等,其核心是嵌入式微控制器。为适应上网需求,嵌入式微控制器不仅要具有传统的控制功能,还要具有与因特网连接的功能。而Ubicom公司的SX52芯片能比较容易实现TCP/IP协议,选择它作为微控制器。关于传输媒
[应用]
小广播
最新应用文章

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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