用于计算机系统的双模式总线桥的制作方法

文档序号:6418768阅读:254来源:国知局
专利名称:用于计算机系统的双模式总线桥的制作方法
本申请是1995年12月27日的提交的美国专利申请08/579,297,标题为“在主机总线和个人计算机接口总线之间的双模式总线桥”的部分继续再申请,该申请的内容在此引用作为参考。本发明背景技术一般而言,本发明涉及计算机总线系统;具体而言,它涉及互连主机总线和外部总线(如外围组件接口(PCI)总线)之间的桥接或接口元件。
外围组件接口总线系统在个人计算机中,尤其是配置为文件服务器的个人计算机中的应用越来越广泛。根据PCI专用组建立的协议,外围组件接口总线可以配置成高性能和高带宽的总线。
在采用外围组件接口总线的典型的计算机系统中,在计算机系统的外围组件接口总线和主机总线之间提供了一个外围组件接口到主机的总线桥。提供该总线桥的部分目的是便于把外围组件接口格式的数据转换成主机总线采用的格式。许多外围组件接口到主机的总线桥配置成只容纳32位外围组件接口总线。其他的总线桥则配置成要么只能容纳64位外围组件接口总线要么只能容纳32位外围组件接口总线。因此,为了容纳多于一个外围组件接口总线,就需要附加外围组件接口到主机总线桥。对许多计算机系统,尤其是文件服务器计算机系统,必须容纳大量的外围组件接口总线。每个外围组件接口总线都需要一个总线桥的传统配置方法的灵活性较差。而且,许多现有技术的主机总线对挂接在总线上的计算机(比如总线桥)的数目高度敏感。由于每个元件的电子负载问题,这些总线所允许的时钟速率通常与连接到主机总线上的元件数目成反比。因此,将其他总线桥连接到主机总线导致最大允许时钟速率的降低,进而降低了系统的总体性能。结果,连接附加外围组件接口总线桥使得所允许的最大时钟速率降低导致了严重阻碍整体计算机系统性能的地步。
因此,有必要开发更灵活的技术将外围组件接口总线连接到主机总线,而不给主机总线带来额外的电子负载。
本发明的简要描述根据本发明的一个实施例提供了把第一和第二总线接口到第三总线的总线桥。该总线桥可以配置成独立模式或组合模式。在独立模式下,第一和第二外部总线独立操作;在组合模式下,第一和第二外部总线组合起来创建一个单独的总线。根据本发明的另一个实施例,该总线桥包括两个数据队列,第一数据队列和第二数据队列。第一数据队列在第一外部总线和第三总线之间转发数据,第二数据队列在第二外部总线和第三总线之间转发数据。总线桥还包括耦合到第一和第二数据队列上的控制器。在独立模式下,该控制器并行操作第一和第二数据队列;在组合模式下,控制器通过第一数据队列转发偶数地址的数据,通过第二数据队列转发奇数地址数据。
附图的简要描述

图1的方框图描述了根据本发明实施例的计算机系统;
图2的方框图描述了根据本发明实施例的总线扩展桥;以及图3的方框图进一步描述了图2中根据本发明实施例的总线扩展桥的细节。
本发明详细描述参考附图,其中,同样的数字标识同样的元件。图1的方框图描述了根据本发明的实施例的计算机系统。计算机系统8包括多个处理器10,20,30,和40。多个处理器连接到计算机系统8的主机总线60。内存子系统110通过线50连接到主机总线60,该子系统包括内存(比如动态随机访问存储器)和相关的控制逻辑。计算机系统8还包括内存和输入/输出(I/O)桥控制器(MIOC)100,它连接到主机总线60,用于在一个或多个I/O总线(或其它外部总线)和内存子系统110与主机总线60之间接口。尽管在图1中MIOC 100画成一个单独的方框或组件,但MIOC 100可以分别由分离的内存控制器和分离的I/O桥控制器组成。
计算机系统8还包括连接到MIOC 100的多个总线扩展桥80,用于将一个或多个外部总线接口到主机总线60。根据图1所示的实施例,两个总线扩展桥80A和80B通过扩展总线70A和70B被分别连接到MIOC 100。尽管只有两个总线扩展桥80A和80B被连接到MIOC 100,但实际上可以有连接到MIOC 100的任何数目的总线扩展桥80(如80A,80B,80C,80D)。
每个总线扩展桥80包括多个外围组件接口,其中,每个外围组件接口提供到外围组件接口总线的连接或接口。在图1所示的实施例中,每个总线扩展桥80A和80B都包括两个外围组件接口,用以容纳两个外围组件接口总线90A和90B。扩展总线70A和70B以及外围组件接口总线90A和90B都是双向总线。多个外围组件接口扩展槽92被连接到每个外围组件接口总线90,以允许一个或多个外围组件接口装置插入或连接到每个外围组件接口总线90。各种类型的外围组件接口装置或适配器可以插入外围组件接口扩展槽92,比如与外围组件接口兼容的硬盘驱动器、图形卡、和磁带装置等。
根据本发明,一个或多个总线扩展桥80可以通过MIOC 100耦合到主机总线60。但是,MIOC 100只对主机总线60施加了一个单独的电子负载。因此,本发明的总线扩展桥80允许多个外部总线(比如,PCI总线)连接到主机总线60上,而又不降低主机总线的性能。因为对主机总线60来说,多个外部总线就象是一个单独的电子负载。
尽管在本发明的一个实施例中,每个扩展桥80A和80B都提供了外围组件接口总线的接口,但本发明的扩展桥80A和80B可以选择性的连接其它类型的外部总线。因此,本发明的总线扩展桥80并没有局限于外围组件接口总线接口。
根据本发明的一个实施例,每个总线扩展桥80提供两个独立的32位,33MHZ,Rev.2.1兼容的外围组件接口。根据外围组件接口标准,每个外围组件接口接口需要对应总线的50路信号,加上12路附加的仲裁和支持信号。每个总线扩展桥80在外围组件接口总线90A和90B与扩展总线70A和70B之间提供主控制和数据接口。每个总线扩展桥80包括外围组件接口端口以容纳多个外围组件接口总线,如图1所示。另外,每个总线扩展桥80也可以配置成把多个外围组件接口总线组合起来提供增加了带宽的单一外围组件接口总线。
根据本发明的一个实施例,每个总线扩展桥80可以配置成提供两个独立的32位外围组件接口总线(独立32位模式),或者把两个32位外围组件接口总线90A和90B组合以获得单一的64位外围组件接口总线(组合64位模式)。因此,本发明的总线扩展桥80提供了改善的灵活性,因为每个总线扩展桥80可以配置成容纳不同大小的总线。
使用各种不同的技术,每个总线扩展桥80可以被配置成独立32位模式或组合64位模式。比如,使用跳线设置64位模式引脚输入状态为总线桥80,对总线桥80中的烧入的一个或多个硅芯片编程,或者通过处理器10初始化总线桥80。
在实际操作中,经过计算机系统8的各种不同的事务流包括处理器10(或其它处理器)与连接到外围组件接口总线90A和90B上的外围组件接口装置之间的事务流,处理器10和内存子系统110之间的事务流,以及不同外围组件接口装置之间的事务流等。
根据本发明的一个实施例,通过主机总线60和扩展总线70A和70B之间的总线事务是全分离事务,它们由请求包和完成包组成。有两种类型的事务读事务和写事务。请求包激发一个事务。完成包用于返回的数据(只对读请求而言),以指出事务在目的装置已经完成,并重新分配缓冲区或队列资源。
信息包由多个32位长的字(又称为双字或Dword)组成。每个包由标题和数据区组成,标题包括地址和控制信息。包的标题由一个或多个字组成,包括命令(读或写),地址信息,标识事务的事务ID,路由信息,和附加的控制信息。包的数据区可以包括一个或多个数据字。完成包内有对应原始请求的事务ID,说明事务已经完成的指示信息,以及其它控制信息。读完成包还包括响应读请求所接收到的请求的数据(如果有)。写完成包不含有数据,但指示写操作已经成功完成。
计算机系统8中的事务可以分为入站事务和出站事务两类。入站事务是由连接到总线90A或90B的外围组件接口主方激发的事务。比如,按外围组件接口主方运行的外围组件接口装置可以激发对内存子系统110的入站读操作。出站事务是由处理器10所激发的事务,该事务被导向到连接在外围组件接口总线90A或90B的装置。比如,出站事务可以包括连接到外围组件接口扩展槽92的硬盘驱动器的处理器读操作。
图2的方框图描述了根据本发明的实施例的总线扩展桥。如图2所示,总线扩展桥80A用于连接扩展总线70A到外围组件接口总线90A和90B。总线桥80A分为两个明显不同的部分(A-部分和B-部分),每个部分服务于一个在独立32位模式下的32位外围组件接口总线(90A或90B)。有一个通用扩展总线控制器235同时服务于总线扩展桥80A的两个部分。
下面简要叙述总线扩展桥80A的每个部分的特定元件或组件。如图所示,总线扩展桥80A的两个部分完全是相同的。如图2所示,两个部分的对应元件的数字标识是一致的。为了区分总线扩展桥80A的A部分和B部分,在A部分的相同元件的数字标识以字母“A”结束,在B部分的相同元件的数字标识以字母“B”结束。
总线扩展桥80A的每个部分都包括几个队列来存放地址和控制信息以及数据出站事务队列(OTQ)205用于存放出站读写请求和入站读完成包的地址和控制信息;出站写数据队列(OWDQ)210用于存放出站写数据;出站读数据队列(ORDQ)215用于存放出站读数据;入站事务队列(ITQ)220用于存放入站读写请求和出站完成包的地址和控制信息;
入站写数据队列(IWDQ)225用于存放入站写数据;两个入站读数据队列(IRDQ)230用于为两种不同的读完成存放入站读数据。
如图2所示,总线扩展桥80A的每个部分还包括六个控制器负责控制上述队列的操作。总线扩展桥80A还包括一个扩展总线控制器235,该控制器对两个部分通用。具体而言,总线扩展桥80A的每个部分包括出站事务控制器240负责OTQ205、OWDQ210、和ORDQ215的装载和卸载;入站事务控制器245负责ITQ220、IWDQ225、和IRDQ230的装载和卸载;主总线控制器250在出站事务控制器250和外围组件接口总线的出站事务之间接口;目标总线控制器255在入站事务控制器245和用于入站事务的外围组件接口总线之间接口;出站包控制器270用于从扩展总线控制器235接收出站包并转发包到队列;以及入站包控制器275用于从队列转发包到扩展总线控制器235。
另外,一些多路复用器260用于选择性地通过总线桥80A转发的信息。
图3的方框图进一步描述了图2中根据本发明的实施例的总线扩展桥的细节。如上对图2所述,总线扩展桥80A被分成两个完全相同的部分,即A部分和B部分。每个部分包括一个队列全集(如上)和六个控制器。
如图3所示,扩展总线控制器235包括接收逻辑305和发送逻辑310,接收逻辑305从扩展总线70A接收扩展总线包,发送逻辑310把扩展总线包发送到扩展总线70。扩展总线控制器235还包括多路复用器315,它连接到发送逻辑310的输入端,用于从入站包控制器275A或入站包控制器275B中选择信息。
下面的描述(下两段)适用于对总线桥80A的每个部分(包括A部分和B部分),除非具体指明是A部分或B部分。虚线(线426和432)和虚线多路复用器345不是总线桥80A的两个部分都有的。图3中的虚线或虚数据通道(线426和432)和虚线多路复用器345用于在组合64位模式下配置总线桥80A,这在后文中描述。
接收逻辑305的输出经过线409连接到两个部分的OTQ 205,OWDQ 210和IRDQ 230的输入。IRDQ 230(在每个部分)包括两个IRDQ,表示为IRDQ0和IRDQ1。IRDQ 230的输出通过线406和408到达多路复用器325的输入端。多路复用器325的输出通过线422(在A部分是In_Read_Data_A,在B部分是In_Read_Data_B)被连接到多路复用器330。多路复用器330的输出通过线424(在A部分是Out_Data_A,在B部分是Out_Data_B)连接到多路复用器335。多路复用器335的输出通过线428连接到缓冲区320。缓冲区320A连接到外围组件接口总线90A,缓冲区320B连接到外围组件接口总线90B。OWDQ 210的输出通过线404(在A部分是Out_Write_Data_A,在B部分是Out_Write_Data_B)连接到多路复用器330。OTQ205的输出通过线402(在A部分是Out_Adr_A,在B部分是Out_Adr_B)连接到多路复用器335。多路复用器330B的输出通过虚线426(Out_64to32_Data)连接到多路复用器335A。
线416(在A部分是In_Adr/Data_A,在B部分是In_Adr/Data_B)将缓冲区320的输出连接到多路复用器340,ORDQ215,和IWDQ 225。OTQ 205的输出(线402)通过线420(Out_Completion_A或者Out_Completion_B)连接到多路复用器340。多路复用器340的输出通过线410到达ITQ 220的输入。ITQ220,ORDQ 215,IWDQ 225的输出被送到入站包控制器275的输入端。入站包控制器275A和275B的输出送到多路复用器315。
在B部分提供多路复用器345接收如下的输入,缓冲区320B的输出(In_Adr/Data_B)和缓冲区320A(In_Adr/Data_A)通过虚线432(In_32to64_Data)的输出。线416B是多路复用器345的输出。
下面通过描述几个总线事务来说明总线扩展桥80A的的操作。(连接到MIOC的其它总线扩展桥80B、80C、80D等也可以象总线扩展桥80A一样工作在独立32位模式或组合64位模式)。
独立32位模式总线扩展桥只讨论总线扩展桥80A的A部分的事务。但是,当总线桥80A工作在32位模式时,总线扩展桥B部分的与A部分是对称的,其操作方式也是相同的。
1.32位模式扩展桥入站读(即从外围组件接口主方读内存子系统110)对入站读操作,外围组件接口装置发布外围组件接口读事务。外围组件接口读事务由缓存区320A接收并传送到目的总线控制器255A。目的总线控制器255A确定读事务是有效的,解码读事务的目的地,然后传送地址和目的信息到入站事务控制器245A(在读请求包中没有数据)。入站事务控制器245A产生包括事务ID的控制信息,并转发指示该包来自哪个外围组件接口部分(A部分或B部分)的信息。入站事务控制器245A格式化控制和地址信息(读请求包)成扩展总线包,并把该地址和控制信息输出到线416A,并通过多路复用器340A把地址和控制信息存放到ITQ220A。
入站事务控制器245A产生ITQEnableA信号使能ITQ 220A存储放置在线416A上的读请求包的控制和地址信息。尽管ORDQ215A和IWDQ 225A也连接到线416A,但ORDQ 215A和IWDQ225A此时还保留在禁用状态,因此不会存储输出到线416A的包的地址和控制信息。(在独立32位模式,入站事务控制器245B可以独立产生ITQEnableB信号使能ITQ 220B)。扩展总线控制器235通过扩展总线70A输出读请求包到MIOC 100。当所请求的数据从内存子系统110可以获得时,MIOC 100生成完成包,其中包括所请求的数据和读完成(比如路由信息和事务ID之类的控制信息),并通过扩展总线70A发送完成包到总线扩展桥80A。
扩展总线控制器235检测完成包的控制信息(尤其是路由信息),以确定是否该包去往外围组件接口A部分或B部分。完成包被定向到发出请求的同一侧。扩展总线控制器235首先输出完成包控制信息(包括事务ID)到线409。此时,如果包定向到A部分,控制器235产生OTQEnableA信号使能OTQ 205A(A部分),以便通过驱动线409存储控制信息到OTQ 205A。同样的,如果包定向到B部分,控制器235产生OTQEnableB信号,允许控制信息存储到OTQ 205B(B部分)。该例假设请求包来自A部分,因此完成包被定向到A部分。
下一步,扩展总线控制器235输出所请求的数据到线409,存储数据到包被定向到的那部分的两个入站读数据队列(IRDQ0或IRDQ1)之一。OTQ 205A最大能够存储两个读完成(两个不同的读完成的地址和控制信息,包括事务ID,字个数,路由信息等)。与每个读完成对应的数据存放在两个IRDQ 230A(IRDQ0和IRDQ1)之一。根据本发明的一个实施例,IRDQ0可以存储最多64个双字,IRDQ1可以存储32个双字。控制器235产生控制信号(IRDQ0 EnableA或IRDQ1 EnableA)使能一个IRDQ 230A存储所请求的数据。同样的,如果包被定向到B部分,就要为B部分IRDQ产生一个控制信号(IRDQ0 EnableB或IRDQ1 EnableB)。
出站事务控制器240A读OTQ 205A并检测入站读完成包。出站事务控制器240A转发入站读完成包到入站事务控制器245A,后者解码事务ID,确定该数据属于哪个读请求。当总线扩展桥80A从外围组件接口主方接收到对该事务的重复读请求时(比如,与起始事务相同的地址但不同的控制信息),入站事务控制器245A输出请求数据(在图中示为In_Read_Data_A),从IRDQ0或IRDQ1230A到外围组件接口总线90A,其中经过多路复用器325A,330A,和335A。入站事务控制器245A控制多路复用器325A选择性的输出存储在IRDQ0或IRDQ1中的数据,目标总线控制器255A控制多路复用器330A和335A。IRDQ0可以存储多达例如64个双字,IRDQ1可以存储多达32个双字。读完成的每个个双字按连续时钟周期输出到外围组件接口总线90A,直到来自特定IRDQ的所有数据被输出或直到事务被外围组件接口主方终止。
2.32位模式扩展桥入站写(即从外围组件接口主方写内存子系统110)扩展总线70上的地址和数据信号是复用的。同样的,外围组件接口总线90A和90B上的地址和数据信号也是多路复用的。对入站写而言,外围组件接口主方提供地址和控制信息,然后提供要写的数据。在总线90A上的扩展总线桥80A按连续时钟周期接收这些信息。外围组件接口写事务的地址和控制信息首先由外围组件接口缓冲区320A接收并传送到目标总线控制器255A。目标总线控制器255A确定写事务是有效的,然后解码写事务的目的地并传送地址和目标信息到入站事务控制器245A。入站事务控制器245A产生包括源和目的在内的控制信息,格式化地址和控制信息成为扩展总线包的格式,输出地址和控制信息(在图中示为In_Adr_A)到线416A,以便通过产生ITQEnableA信号并经由多路复用器340AITQ在220A中存储该地址和控制信息。
下一步,从外围组件接口主方接收外围组件接口写事务的数据。入站事务控制器245A格式化该数据,然后存储数据到IWDQ225A,其方法是输出数据到线416A并产生IWDQEnableA信号使能IWDQ 225A。(在独立32位模式和组合64位模式,入站事务控制器245B可以独立的产生IWDQEnableB信号使能IWDQ225B)。
扩展总线控制器235输出来自ITQ 220A的地址和控制信息,然后输出来自IWDQ 225A的数据,经过扩展总线70A传输到MIOC100。在数据被写到内存子系统110之后,扩展总线控制器235收到来自MIOC 100的完成包。
3.32位模式扩展桥出站读(即从处理器10读外围组件接口目标)对出站读,扩展总线控制器235接收来自MIOC 100的读请求包。控制器235检测包标题(地址和控制信息)来确定包被导向外围组件接口A部分或B部分。然后转发地址和控制信息到合适部分的OTQ。本例假设包定向到外围组件接口A部分(总线90A)。扩展总线控制器235产生OTQEnableA信号使能OTQ 205A,存储该地址和控制信息到OTQ 205A。出站事务控制器240A还格式化地址和控制信息为外围组件接口格式。在扩展总线桥80A获得外围组件接口总线90A的所有权之后,主总线控制器250A经线402A(图中所示为Out_Adr_A),多路复用器335,和缓冲区320A输出来自OTQ 205A的地址和控制信息到达总线90A。地址和控制信息的一部分还经线420A(Out_Completion_A)转发并存储到出站事务控制器240A。然后,扩展总线桥80A输出地址和控制信息到总线90A。
外围组件接口目标提供所请求的数据到总线90A上。出站事务控制器240A经线416A将所请求的数据存储到ORDQ 215A,其方法是产生ORDQEnableA信号使能ORDQ 215A。使能ORDQ215A允许ORDQ 215A存储线416A提供的数据。(在独立32位模式和组合64位模式中,出站事务控制器240B能独立的产生ORDQEnableB信号使能ORDQ 215B)。所有的数据被接收之后,出站事务控制器240A产生并经过线420A和多路复用器340A存储读完成包(控制和地址信息,包括事务ID,和字个数)到ITQ220A。ITQEnableA信号被产生并使能ITQ 220A存储完成包(地址和控制信息)。完成包在图中以Out Completion A的形式画在线420A上。扩展总线控制器235从ITQ 220A输出完成包(地址和控制信息)到扩展总线70A,然后输出来自ORDQ 215A的所请求的数据。
4.32位模式扩展桥出站写(即从处理器10写到外围组件接口目标)对出站写,扩展总线控制器235从MIOC 100接收写请求包。控制器235检测包标题(地址和控制信息)来确定包是定向到外围组件接口A部分或B部分(本例假设包定向到A部分)。然后通过输出地址和控制信息到线409,转发地址和控制信息到合适部分的OTQ。本例假设包定向到外围组件接口A部分(总线90A)。扩展总线控制器235产生OTQEnableA信号使能OTQ 205A,以便存储该地址和控制信息到OTQ 205A。下一步,控制器235输出数据到线409并产生OWDQEnableA信号使能OWDQ 210A存储数据。在扩展总线桥80A获得外围组件接口总线90A的所有权之后,主总线控制器250A经线402A(图中所示为Out_Adr_A),多路复用器335,和缓冲区320A输出来自OTQ 205A的地址和控制信息到达总线90A。地址和控制信息的一部分(包括事务ID,地址,和字个数)还经线420A(Out_Completion_A)转发,并存储到出站事务控制器240A。然后,OWDQ 210A经线404A(在图中示为Out_Write_Data_A),多路复用器330A,线424A(数据在图中示为Out_Data_A),多路复用器335A,和缓冲区320A将数据输出到总线90A。
使用总线90A上的外围组件接口接口,外围组件接口目标通知总线扩展桥80A数据已经写入外围组件接口目标。出站事务控制器240A产生并经线420A和多路复用器340A将写完成包(控制和地址信息,包括事务ID,地址,和字个数)存储到ITQ 220A,其方法是产生ITQEnableA信号使能ITQ 220A。完成包在线420A上示为Out Completion A。扩展总线控制器235输出来自ITQ 220A的完成包(地址和控制信息)到扩展总线70A。
当总线桥80A工作在独立32位模式时,总线扩展桥80A的B部分操作与上面描述的A部分的操作类似。总线扩展桥80A的A部分和B部分可以同时操作,扩展总线控制器235可以处理来自桥80A的两部分的包。如图1所示,可以有多个总线扩展桥80(桥80A,80B,。。。)连接到MIOC 100。每个扩展桥80并行操作而且每个都可以配置成在独立(或复合)32位模式或组合64位模式操作。
在组合64位模式的总线扩展桥总线扩展桥80A可以配置成在组合64位模式下操作,其中,两个32位外围组件接口总线90A和90B组合提供单一的64位外围组件接口总线。同样的,多于两个外部总线(如外围组件接口或其它总线)可以连接到总线扩展桥80并组合提供有更高带宽的外部总线。比如,3个32位外部总线可以组合提供外部96位总线。
可以使用总线扩展桥80A上的64位模式引脚来配置总线扩展桥为64位模式。也可以采用其它技术选择64位模式。在组合64位模式下,总线扩展桥80A可以通过64位外围组件接口总线与64位外围组件接口装置(一次可以提供/接收两个双字或64位数据的装置)通信,或者与32位装置(一次只可以提供/接收32位数据的装置)通信。当64位总线扩展桥80A与32位外围组件接口装置通信时,只使用了桥80A的可用带宽的一半。
根据本发明的一个实施例,总线扩展桥80A在64位模式中利用“奇偶”体系来使用两个外围组件接口部分(A部分和B部分)。在该“奇偶”体系中,所有偶数地址的数据(其地址[2]是0)被放置在桥80A的A部分的队列中,而所有奇数地址的数据(其地址[2]是0)被放置在桥80A的B部分的队列中。该体系还符合64位外围组件接口规范,后者要求所有偶数地址的数据被放置在低32位(A部分),而所有奇数地址的数据被放置在高32位(B部分)。当总线扩展桥80A工作在64位模式但与32位外围组件接口装置通信时,所有奇数地址数据被转发到外围组件接口A部分。
根据本发明的一个实施例,当桥80A工作在组合64位模式时,它的A部分和B部分的队列(包括事务和数据队列)和控制器都并行操作。
但是,根据本发明总线扩展桥80A的另一个实施例,在组合64位模式中仅使用桥80A的A部分的控制器,而B部分的控制器都被重置(未用),而且只使用A部分的事务队列而禁用B部分的事务队列。下面讨论关于本发明的该实施例的细节。
因此,根据本发明的实施例,选择64位模式禁用所有的B部分控制器(出站事务控制器240B,入站事务控制器245B,主总线控制器250B,目标总线控制器255B,和包控制器270B、275B),以及所有的B部分事务队列(OTQ 205B和ITQ 220B)。比如,通过不产生用于B部分事务队列的使能信号,可以在64位模式中禁用B部分的事务队列。因此,在A部分的事务队列(OTQ 205A,ITQ 220A)应该足够大以容纳其他事务(来自A部分和B部分)。所以,A部分的事务队列可以是B部分的两倍大(或深),以便在64位模式中容纳该奇偶体系。
在总线扩展桥80A的64位模式下禁用B部分的控制器和B部分的事务队列的该奇偶体系大大节约了在两个部分之间转发32位数据通道的数目,而且与并行操作桥80A的两个部分的64位模式相比,减少了必须的电路的数目和复杂性。
下面描述用于组合64位模式总线的扩展桥80A的操作。为了避免重复,只详细讨论64位模式操作和独立32位模式操作的区别。
1.64位模式扩展桥来自32位外围组件接口主方的入站读外围组件接口读事务(包括地址和控制信息)总是从外围组件接口主方发送到外围组件接口A部分的总线扩展桥80A(经总线90A)(无论该读事务来自32位或64位主方)。入站事务控制器245A接收地址和控制信息并格式化该信息成为扩展总线包。扩展总线包输出到线416A,并经多路复用器340A存储该地址和控制信息到ITQ 220A。扩展总线控制器然后将包输出到MIOC 100。数据从内存子系统110读取之后,就经总线70A提供完成包(包括数据)到扩展总线控制器235。读完成包的地址和控制信息总是存储在OTQ 205A(A部分)(B部分的控制器和ITQ被禁用)。但是,如果数据是偶数地址的,就把数据存储在IRDQ0或IRDQ1 230A(A部分);如果数据是奇数地址的,就把数据存储在IRDQ0/IRDQ1230B(B部分)。
当总线扩展桥80A接收到来自外围组件接口主方的重复外围组件接口读事务(与起始外围组件接口读事务有同样的地址,不同的控制信息)时,A部分的偶数地址数据和B部分的奇数地址数据被输出到外围组件接口总线90A(A部分)。存储在A部分IRDQ230A的偶数地址数据从IRDQ0/IRDQ1 230A经多路复用器325A,多路复用器330A,和多路复用器335A输出。存储在B部分IRDQ230B的奇数地址数据从IRDQ0/IRDQ1 230B经多路复用器325B和多路复用器330B沿线426 Out_64to32_Data输出到达多路复用器335A。如果地址是奇数,多路复用器335A选择B部分数据。数据交替来自两个部分,直到所有数据被输出或直到外围组件接口事务被外围组件接口主方终止。
2.64位模式扩展桥来自64位外围组件接口主方的入站读数据从内存子系统110读取出来之后,就经总线70A将完成包(包括数据)提供到扩展总线控制器235。读完成包的地址和控制信息总是存储在OTQ 205A(A部分)(B部分的控制器和ITQ被禁用)。但是,如果数据是偶数地址的,就把数据存储在IRDQ0或IRDQ1 230A(A部分);如果数据是奇数地址的,就把数据存储在IRDQ0/IRDQ1 230B(B部分)。对64位主方而言,第一个地址总是偶数地址。
当总线扩展桥80A接收到来自外围组件接口主方的重复外围组件接口读事务(与原始读事务有同样的地址和命令)时,偶数地址数据(存储在A部分的IRDQ中)被输出到外围组件接口A部分(总线90A),奇数地址数据(存储在B部分的IRDQ中)被输出到外围组件接口B部分(总线90B)。A部分的入站事务控制器(245A)并行地从两个部分的IRDQ重复输出两个双字,直到所有的数据被输出或直到外围组件接口读事务被外围组件接口主方终止。通过并行输出来自A部分的双字和来自B部分的双字,就提供了64位外围组件接口总线。
3.64位模式扩展桥来自32位外围组件接口主方的入站写外围组件接口写事务由外围组件接口主方发布。入站事务控制器245A(A部分)格式化地址和控制信息为扩展总线格式并存储地址和控制信息到ITQ 220A(A部分)。数据只到达外围组件接口A部分(仅通过总线90A)。外围组件接口主方通过外围组件接口协议通知总线扩展桥80A外围组件接口主方只是一个32位装置,因而,扩展桥只从外围组件接口A部分获得数据。
入站事务控制器245A(A部分)检测写请求包的首地址。如果该首地址是偶数,那么第一个双字的数据经线416A存储在IWDQ225A(A部分)。如果该首地址是奇数,那么第一个双字的数据经线432(图中示为In_32to64_Data),多路复用器345,和线416B被存储在IWDQ 225B。后续的双字被交替存储在IWDQ中。入站事务控制器245A(A部分)格式化并存储写请求包的地址和控制信息到ITQ 220A(A部分)(B部分的控制器和事务队列被禁用)。地址和控制信息作为写请求包的一部分,通过扩展总线控制器235输出到MIOC 100。
控制器235然后输出数据到MIOC 100。为了识别第一个双字的位置(A部分或B部分),入站包控制器检测包的地址信息。第一个双字的偶数地址或奇数地址分别指示第一个双字的位置在A部分或B部分。如果首地址是偶数,第一个双字从A部分AITCHES输出;如果首地址是奇数,第一个双字从B部分AITCHES获得。控制器235从AITCHES输出数据,两个部分交替,以第一个双字开始。写数据之后,从MIOC 100接收写完成包(地址和控制信息)。
4.64位模式扩展桥;来自64位外围组件接口主方的入站写在该情形下,外围组件接口主方通过外围组件接口协议通知总线扩展桥80A外围组件接口主方是一个64位外围组件接口装置(一次可以经总线90A和90B发送64位数据)。因而,写请求包的数据同时通过外围组件接口两个部分(外围组件接口总线90A和90B)接收。写请求包的地址和控制信息只存储在ITQ 220A(A部分)(禁用B部分的控制器和事务队列)。通过A部分外围组件接口总线接收的数据总是偶数地址并被存储在IWDQ 225A(A部分),而通过B部分外围组件接口总线(90B)接收的数据总是奇数地址并被存储在IWDQ 225B(B部分)。偶数地址的双字是数据的低32位。因此,(对64位主方)扩展总线控制器235输出所写的数据到MIOC 100总是从A部分的AITCHES开始。
5.64位模式扩展桥出站写写请求包由控制器235从MIOC 100接收。写请求包的地址和控制信息被存储在OTQ 205A(A部分),无论外围组件接口目标是32位目标还是64位目标。因为当总线扩展桥80A工作在独立64位模式时,B部分的事务队列被禁用。偶数地址数据被放置在OWDQ 210A(A部分),而奇数地址数据被放置在OWDQ 210B(B部分)。这样,扩展总线桥80A并不在乎外围组件接口目标是32位或64位。主总线控制器250A(A部分)使用外围组件接口协议确定外围组件接口目标是32位或64位目标。举例来说,可以通过主总线控制器250A发布Reg64信号来通知外围组件接口目标它是具备64位能力的方法达到该目的。外围组件接口目标能够用DevSel(装置选择)信号响应,也可用Ack64信号响应,以说明它是具备64位能力的。如果主总线控制器接收到DevSel回复信号但没有接收到Ack64信号,那么,主总线控制器250A就知道外围组件接口目标是32位目标。如果主总线控制器接收到Ack64信号,那么它就知道外围组件接口目标是64位外围组件接口目标。
如果外围组件接口目标是64位目标,存储在A部分的数据输出到外围组件接口A部分总线90A,同时,存储在B部分的数据输出到外围组件接口B部分总线90B,以提供64位数据通道。另一方面,如果外围组件接口目标是32位目标,存储在桥80A的A部分和B部分的数据以第一地址所在的部分为开始,交替输出到外围组件接口A部分总线90A。对32位目标而言,B部分数据从OWDQ 210B输出,通过多路复用器330B和线426 Out_64to32_Data到达多路复用器335A。多路复用器335A交替选择A部分数据(线424A的Out Data A)或B部分数据(线426的Out_64to32_Data)。
6.64位模式扩展桥出站读读请求包从MIOC 100接收。控制和地址信息被存储在OTQ220A(在读请求包中没有数据)。
主总线控制器使用外围组件接口协议确定外围组件接口目标是32位目标还是64位目标。读请求包然后经外围组件接口A部分总线90A被输出到外围组件接口目标。
如果外围组件接口目标是具备64位能力的,所请求的数据从外围组件接口目标经外围组件接口总线90A(用于偶数地址数据)和90B(用于奇数地址数据)输出到总线扩展桥80A,并分别存储在ORDQ 215A(A部分)和215B(B部分)。
如果外围组件接口目标是32位目标,所请求的数据只经A部分外围组件接口总线90A送到总线扩展桥80A。如果起始地址是偶数,则第一个双字存储在ORDQ 215A(A部分)。如果起始地址是奇数,第一个双字存储在ORDQ 215B(B部分)。双字交替的存储在桥80A的不同的部分。对完成包而言,扩展总线控制器从交替的部分输出双字。如果首地址是偶数,首双字从A部分输出。如果首地址是奇数,首双字从B部分输出。
虽然以上具体描述了本发明的几个实施例,但是,对于本发明的修改和变化没有离开本发明的精神和意图,并由上述教导和附加的权利要求的范围所涵盖。
权利要求
1. 用于将第一和第二总线接口到第三总线的总线桥,所述总线桥可以配置成独立模式和组合模式,在独立模式中第一和第二总线独立操作,在组合模式中第一和第二总线组合起来创建单一总线。
2. 用于将第一和第二总线接口到第三总线的装置,所述装置可以配置成独立模式和组合模式,在独立模式中第一和第二总线独立操作,在组合模式中第一和第二总线组合起来创建单一总线,所述装置包括第一组数据队列,用于在第一总线和第三总线之间转发数据;第二组数据队列,用于在第二总线和第三总线之间转发数据;耦合到第一和第二组数据队列并在独立模式下并行操作第一和第二数据队列的控制器;所述控制器在组合模式下通过第一数据队列转发偶数地址的数据,通过第二数据队列转发奇数地址数据。
3. 根据权利要求2所述的装置,其中所述控制器包括第一控制器和第二控制器,所述第一控制器控制第一组数据队列的操作,所述第二控制器控制第二组数据队列的操作。
4. 根据权利要求3所述的装置,其中,在所述组合模式下,所述第二控制器被禁用而所述第一控制器控制所述第一和第二组数据队列。
5. 根据权利要求2所述的装置,进一步包括第一组事务队列,用于在所述第一总线和所述第三总线之间转发地址和控制信息;第二组事务队列,用于在所述第二总线和所述第三总线之间转发地址和控制信息;所述控制器耦合到所述第一和第二组事务队列并且在独立模式下并行操作所述第一和第二组事务队列;以及所述控制器通过用于组合模式下的只是一组事务队列转发地址和控制信息。
6. 根据权利要求5所述的装置,其中所述控制器在组合模式下只用所述第一组事务队列转发地址和控制信息而禁用所述第二组事务队列。
7. 根据权利要求2所述的装置,其中所述第一和第二总线包括第一和第二外围组件接口总线。
8. 根据权利要求2所述的装置,其中所述第一和第二总线包括在独立模式下独立操作的第一和第二32位外围组件接口总线,而且,在组合模式下所述第一和第二32位外围组件接口总线组合起来创建单一的64位外围组件接口总线。
9. 计算机系统包括耦合到主机总线的主机处理器;耦合到主机总线的桥控制器;耦合到桥控制器的总线桥和至少第一和第二外部总线,所述总线桥可以配置成独立模式或组合模式,在独立模式中,所述第一和第二外部总线独立操作,在组合模式中,所述第一和第二外部总线组合起来创建单一总线。
10.根据权利要求9所述的计算机系统,其中所述总线桥包括第一组数据队列,用于在所述第一外部总线和所述桥控制器之间转发数据;第二组数据队列,用于在所述第二外部总线和所述桥控制器之间转发数据;耦合到所述第一和第二组数据队列并在独立模式下并行操作所述第一和第二组数据队列的控制器;所述控制器在组合模式下通过第一组数据队列转发偶数地址的数据,通过第二组数据队列转发奇数地址数据。
11.根据权利要求9所述的计算机系统,其中所述总线桥包括耦合到所述桥控制器的多个总线桥,每个所述总线桥包括多个外部总线。
12.根据权利要求10所述的计算机系统,其中所述总线桥进一步包括第一组事务队列,用于在所述第一外部总线和所述桥控制器之间转发地址和控制信息;第二组事务队列,用于在所述第二外部总线和所述桥控制器之间转发地址和控制信息;耦合到所述第一和第二组事务队列并且在独立模式下并行操作所述第一和第二组事务队列的所述控制器;以及所述控制器在组合模式下只用一组事务队列转发地址和控制信息。
13.根据权利要求9所述的计算机系统,其中所述第一和第二外部总线包括在独立模式下独立操作的第一和第二32位外围组件接口总线,以及在组合模式下第一和第二32位外围组件接口总线组合起来创建的一个64位外围组件接口总线。
14.用于将第一和第二总线接口到第三总线的装置,所述装置可以配置成独立模式和组合模式,在独立模式中,所述第一和第二外部总线独立操作,在组合模式中,所述第一和第二外部总线组合起来创建单一总线,所述装置包括第一组数据队列,用于在所述第一外部总线和所述第三总线之间转发数据;第二组数据队列,用于在所述第二外部总线和所述第三总线之间转发数据;在独立模式下并行操作所述第一和第二组数据队列的装置;以及在组合模式下通过所述第一组数据队列转发偶数地址的数据并通过所述第二数据队列转发奇数地址数据的装置。
15.根据权利要求14所述的装置,进一步包括第一控制器,用于控制所述第一组数据队列的操作;以及第二控制器,用于控制所述第二组数据队列的操作。
16.根据权利要求15所述的装置,在组合模式下,所述第二控制器被禁用,而所述第一控制器控制所述第一和第二组数据队列。
17.用于将第一和第二外部总线接口到第三总线的方法,包括如下步骤当所述第一和第二外部总线按独立的总线操作时,通过所述第一组数据队列转发数据到所述第一外部总线和所述第三总线之间的接口,通过所述第二组数据队列转发数据到所述第二外部总线和第所述三总线之间的接口;以及当外部总线组合形成单一总线时,通过所述第一组数据队列转发偶数地址数据,通过所述第二组数据队列转发奇地址数据到所述外部总线和所述第三总线之间的接口。
全文摘要
本发明提供了总线扩展桥(80A-80B)用来作为第一和第二外部总线(90A-90B)(比如PCI总线)连接到第三总线(70A-70B)的接口。总线扩展桥可以配置成独立模式或组合模式两种模式。在独立模式下,第一和第二外部总线独立操作;在组合模式下,第一和第二外部总线组合起来创建一个单独的总线。总线扩展桥包括两个数据队列;第一数据队列和第二数据队列。第一数据队列在第一外部总线和第三总线之间转发数据,第二数据队列在第二外部总线和第三总线之间转发数据。总线扩展桥还包括耦合到第一和第二数据队列上的控制器。在独立模式下,该控制器并行的操作第一和第二数据队列;在组合模式下,控制器通过第一数据队列转发偶数地址的数据,通过第二数据队列转发奇数地址数据。
文档编号G06F9/38GK1289420SQ99802393
公开日2001年3月28日 申请日期1999年1月26日 优先权日1998年1月26日
发明者苏万希·卡布尔, 凯文·科斯乔瑞克, 斯瑞兰德·文卡特森, D·迈克尔·德尔 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1