专利名称:在信息处理系统的不同总线结构之间提供准确和完整的通信的方法和设备的制作方法
以下美国专利申请在此作为参考文献,即使它们已被全部陈述申请号08/068477、申请日1993年5月28日、名称“多总线计算机系统的直接存储器存取(DMA)周期逻辑”(代理人标记为BC9-93-010);申请号08/069253、申请日1993年5月28日、名称“多总线计算机系统相关申请的仲裁逻辑”(代理人标记为BC9-93-011);申请号08/070134、申请日1993年5月28日,名称“初始化信息处理系统中的多总线网络的方法和设备”(代理人标记为BC9-93-012);申请号08/69230,申请日1993年5月28日、名称为“多总线计算机系统中的外部总线的误差俘获逻辑”(代理人标记为BC9-93-025);申请号08/068882、申请日1993年5月28日,名称“在具有多路传输总线的信息处理系统中提供背对背(back to back)数据传送的方法和设备”(代理人标记为BC9-93-026);申请号08/078877、申请日1993年5月28日、名称“用于最佳化系统总线和外部总线之间的数据传送的多总线信息处理系统的总线一总线桥路”(代理人标记为BC9-93-031)。
总的来说,本发明涉及信息处理系统,特别涉及当从适合于一种总线结构的设备或部件到适合于另一种总线结构的设备或部件时保证连接到信息处理系统中的两种不同总线。
一般来说,信息处理系统通常具有作为其主要部件的中央处理单元(CPU),它控制在系统内的全部通信并协调将要被信息处理系统执行的全部命令。信息处理系统通常也具有称为总线的物理连接设备的一个网络或多个网络。这些网络将该CPU连接到任意数目的外部设备和部件,因此CPU能够与这些外部设备和部件通信。
信息处理系统中使用的一种总线是CPU局部总线。也被称为系统总线局部总线专门用来将CPU直接连接到信息处理系统的关键部件,例如系统存储器和存储器控制器。CPU局部总线是高性能总线,即它以高的速率执行连接到该总线的CPU和其它部件之间的数据传送并且能够同时处理许多数据传送。信息处理系统中的另一种总线是外部总线。外部总线用来将外部设备,例如输入/输出设备(I/O)和图形数据包连接到信息处理系统。外部总线通常利用将该外部总线连接到CPU局部总线的主桥路被接至CPU和信息处理系统的其余中央部件。
每种总线具有其用来控制在与其连接的不同的设备和部件之间的数据传送的不同的标准协议或规则。这些协议被设计在总线内部,称为该总线的“结构”。可以包括一种总线结构的各种协议是被总线识别的数据串的位长度,当它们为低电平或高电平时,不同的信号是否有效?总线上的数据是在一条导线上被多路传输还是在多条导线上被并行发送,或者某种数据是不可接受的并且使信息处理系统出现故障或“崩溃”。
CPU局部总线和外部总线的总线结构通常是不同的。当必须在与外部总线连接的外部设备和与CPU局部总线连接的系统的CPU或其它部件之间进行数据传送时,不同的结构将造成通信问题。由于在这样的数据传送中牵涉到不同的总线结构,所以按照第一总线结构在传送的数据不会是第二总线结构可使用或可理解的形式。
因此需要设备和方法来“翻译”从一种总线结构传送到另一种总线结构的数据。用来翻译在两种不同的总线结构之间传送的数据的硬件和逻辑通常包括在将该两种不同总线进行连接的桥路之内。这样一来,连接CPU局部总线和外部总线的主桥路必须包括翻译在两总线之间的通信并保证数据在两总线之间可以理解地传送的逻辑和硬件。
CPU局部总线和外部总线的总线结构的差别之一是各个总线对在其上传送的邻接数据的存在的反应。非邻接数据包括被一个字节或多个字节的不可用数据分隔的多个字节可用数据。不可用数据是不可理解的、应当被忽略的在特定的数据传送期间不应被传送的数据。某些外部总线,和与这些外部总线连接的设备能够无故障地传送非邻接数据。与此相反,非邻接数据在CPU局部总线上的传送能够使信息处理系统崩溃或出现严重故障。
外部总线结构和CPU局部总线结构的另一差别在于CPU局部总线能够可理解地以不同的位长度传送数据,而外总线对于数据传送被局限于一个标准位长度。因此,CPU局部总线与被设计为以各种位长度发送和接收数据的部件兼容。例如,当只发送和接收几位长的数据串的一部件被接至CPU局部总线时,它能够发送和接收数据。同样地,一16位或32位的部件也能够使用CPU局部总线进行数据传送。CPU局部总线以各种位长度进行数据传送的能力被称为动态总线分级(dynamic bus Sizing)。
在此相反,外部总线只能发送标准位长度的数据串,例如32位。因此,没有某种介入数据翻译类型,与CPU局部总线连接的、只以不同于在一特定外部总线上发送的数据的标准位长度的位长度传送和接收数据的部件就不能与与外部总线连接的外部设备进行通信。
因此,本发明的目的之一是提供一方法和设备,该方法和设备确定将在CPU局部总线上发送的数据是否是非邻接的,如果是,就用邻接据代替所述非邻接数据以便保证CPU局部总线不发生故障。
本发明的另一目的是提供一方法和设备,该方法和设备翻译在与外部总线连接的设备和与CPU局部总线连接的部件之间的数据传送,CPU局部总线的数据位长度不同于在外部总线结构中的数据的标准位长度。
本发明的再一个目的是在包括一主桥路的硬件中提供上述方法和设备,该主桥路将CPU局部总线连接到外部总线。
根据本发明,提供了在将CPU局部总线连接到外部总线的主桥路内的硬件逻辑,该硬件逻辑确定将在CPU局部总线上发送的数据是否是非邻接的,如果是,就用邻接数据代替所述非邻接数据以便保证CPU局部总线不发生故障。发明的硬件还翻译在因其结构被局限为标准长度的数据串的外部总线和允许动态总线分级的CPU局部总线之间的传送的数据。
图1是多总线信息处理系统的示意图;图2是在PCI总线上的两个连续的写周期的时序图;图3是在PCI总线上的两个连续的读周期的时序图4是能控制在主桥路内的硬件的字节的逻辑图。
现在参看图1,一双总线信息处理系统10概括地以标号10来表示,它包括(i)通过S-总线(系统总线)16与S-总线设备14连接的处理器、高速缓冲存储器和存储器组成合器以及(ii)通过主PCI总线22被接至一个S-总线设备—主PCI主桥路20的主外部部件互连(PCI)设备18。图1所示的处理器、高速缓冲存储器和存储器组12和S-总线设备14、主PCI设备18以及其它部件的详细描述将在下面给出。
处理器、高速缓冲存储器和存储器组合12包括一中央处理单元(CPU)24、一自检电路26、一存储器控制器28、一CPU高速缓冲存储器30和基本系统存储器32。最佳实施列中的CPU24是英特尔公司的商标为i486TM的32位微处理器,当然系统10也可以用其它种类的CPU来实现,特别是X86类型的微处理器。自检电路26在加电时为CPU提供了内置自检(BIST)特点的性能。自检电路也控制可以设置在每一个S-总线设备14中的任何自检性能。
CPU24通过CPU5部总线34与自检电路26和存储器控制器28连接。存储器控制器28通过基本系统存储器总线36与基本系统存储器32连接。存储器控制器28通过基本系统存储器总线36与基本系统存储器总线36控制对基本系统存储器32的读和写操作,这些操作或者由CPU24利用CPU局部总线34或者由S-总线设备14利用S-总线16来启动。因为存储器控制器具有管理在两条总线上的操作的能力,所以可以同时地管理对于基本系统存储器总线36和CPU局部总线34的操作。CPU局部部线34、基本系统存储器总线36和S-总线都是32位总线,每种总线都具有其特有的数据、地址和控制信息通道。
基本系统存储器32提供了全系统的存储能力并且可以包括非交错或交错存储器卡。CPU高速缓冲存储器30允许对在基本系统存计器32或在系统10的扩充存储器中的信息进行短期存储。这样的扩充存储器例如可以位于系统中的外部连接的I/O设备上。CPU高速缓冲存储器30包括用于暂存被CPU24频繁存取的基本系统存储器32的地址单元的随机存取存储器(RAM)。CPU24直接存取存储在CPU高速缓冲存储器30中的信息,但对存储器在基本系统存储器32中的信息的存取则必须由存储器控制器28来处理。
所有对基本系统存储器32的存取都是由存储器控制器28利用基本系统存储器总线36来控制的。存储器控制器启动时基本系统存储器32的系统存储器周期,在这一周期内,CPU24或S-总线设备14中的一个通过存储器控制器28访问了基本系统存储器。存储器控制器28在为其指定的存储器周期内响应该存储器周期。但是,如果设有为存储器控制器28指定存储器周期,信息就传送给S-总线16。如果存储器控制器28确认其正在管理的操作是—I/O周期,存储器控制器就将信息传送给S-总线16,以便由S-总线设备进行存取。如果该I/O周期是为S-总线设备而指定的,相应的S-总线设备就以一译码命令来响应存储器控制器。如果该I/O操作是为主PCI设备18而指定的,PCI主桥路20就以一译码命令来响应存储器控制器并将该I/O周期传送给相应的主PCI设备。
系统时钟模块28为S-总线设备14提供单个时钟信号,为CPU24提供一对时钟信号。在最佳实施例中,提供给S-总线的时钟信号为33MHZ。提供给CPU24的两个信号分别为33MHZ和66MHZ。因为CPU 24以66MHZ进行内部操作而以33MHZ通过CPU局部总线34进行通信,所以它需要两个时钟信号。
处理器、高速缓冲存储器和存储器组合12与S-总线设备的通信由存储器控制器28通过32位S-总线16来管理。如图1的最佳实施例所示,与该S-总线连接的还有直接存储器存取(DMA)控制器40、系统仲裁控制点(SACP)42、输入/输入(I/O)控制器44、PCMCIA控制器46和电源管理控制器48。在需要更复杂的电源管理控制的场合,一任选电源管理控制器SO可被拉至电源管理控制器48。缓冲器52设备在DMA控制器40和I/O控制器44中间的S-总线16上。但是,如图1所示,可以设想除所示的之外,其它S-总线设备14也可以按至S-总线16。
PCMCIA控制器46直接与PCMCIA卡插槽54连接。外部I/O设备56可通过缓冲器58与PCMCIA卡插槽54连接。外部I/O设备56由I/O控制器44控制。与I/O控制器连接的是日历钟60和RAM端器64、串行端口66、并行端口68和键盘端口70。
除了支持在S-总线16上的S-总线设备14外,系统10还支持第二高速、宽带宽的总线,在最佳实施例中,这一总线是主PCI总线22。该PCI总线22由称为PCI的新的总线结构组成。主CPI总线22是高性能总线,就是说,它以相对短的时间进行有效的数据传送,高达每秒120兆字节数据。PCI总线取得这样高的性能的部分原因在于它可以直接与例如S-总线16这样的其它高速总线连接,并因此可在CPU24或其它S-总线设备14和主PCI设备18之间提供快速的数据传送。事实上,几个高度综合设备例如某些图形数据包的操作需要通过类似PCI总线22这样的高性能总线直接与例如S-总线这样的系统总线连接。
此外,PCI总线结构不需要任何“连接逻辑”来操作与其连接的外部设备。其它总线的连接逻辑一般包括各种各样的安装在外部设备和总线中间的例如译码器、缓冲器或锁存器这样的各种各样的硬件部件。
主PCI总线22根据33MHZ的同步时钟信号而运行,通过PCI总线发送的数据串是32位长。PCI总线上的32位数据串称为双字(DWORD),它被功分为4字节,每字节包括8位数据。
PCI总线传送的地址和数据信息被多路传输为一个信号。与其它总线结构不同,多路传输不需要单独的地址和数据线,这又减少了在PCI总线环境中所需的信号数目。在PCI总线结构中所需的数据目在45-47之间,而标准的非多路传输总线一般需要两倍于这一数目的信号。因此,因为减少了信号数目,所以支持与PCI总线连接的设备所需的引线数目也被减少了相应的数量。因此PCI结构特别适合于高度集成的台式计算机系统。
PCI总线结构的结构和操作的更详细描述在以下由PCI特殊兴趣小组(Special Iuterest Group)出版的文献中可找到1992年6个22日出版的“外部部件互连(PCI)修订1.0规程”;1992年11月1日出版的“初步PCI系统设计指南”,修订版0.6;1992年11月6日出版的“外部部件互连(PCI)插入/连接器附录”(草案);以及1993年4月30日出版的“外部部件互连(PCI)修订2.0规程”;所有上述文献的全文在此都作为参考文献。
在系统10中的主PCI设备18通过主PCI总线22相互通信。主PCI设备通过PCI主桥路20与CPU、高速缓冲存储器和存储器组合12进行通信,并且与挂在S-总线16上的其它S-总线设置14进行通信,PCI主桥路20本身是挂在S-总线上的S-总线设备。PCI主桥路20然后作为S-总线16和主PCI总线22之间的接口并在这两条总线和可挂在这些总线上的任何外部设备之间提供有效的通信手段。
PCI主桥路20是短等待时间的互连机构,CPU 24或其它S-总线设备14通过它可直接存取主PCI设备18或与它连接的设备。桥路20也提供了允许主PCI设备或与其连接的设备对基本系统存储器32进行迅速和直接的存取的高性能通道。此外,主桥路20提供了在S-总线16和主PCI总线22之间提供接口所需的全部硬件,因此数据可以在这些总线之间传送。
主PCI总线22能够支持那些是PCI兼容的各种设备。如图1所示,这些设备可包括图形控制器72,串行SCSI(小型计算机系统接口)控制器74、未来PCMCIA控制器76、标准总线(例如ISA或MICROCHANNEL(R)(“MC-A”))桥路78和PCI次桥路80。但是,图1所示的接至主PCI总线的设备只是采用PCI总线结构的系统的一个实例,因此,公开的结构决不是用来限制本发明的。
通常给图形控制器72提供了VRAM82形式的存储器能力,这就使图形控制器能够缓冲在其内的视频帧并且可以控制可被PCI总线结构支持在任何已知的图形数据包。SCSI控制器74作为与SCSI总线86连接的SCSI设备84和主PCI总线22之间的接口,并且可以控制被PCI总线结构支持的任何SCSI设备。未来PCMCIA控制器76与卡插槽88连接并控制之。
标准总线桥路78作为与标准(例如MC-A或ISA)总线92连接的I/O设备90和主PCI总线22之间的接口。标准总线桥路78的MC-A型的结构是以下转让给IBM公司的尚待授权的专利申请的主题次PCI设备94通过次PCI总线96与PCI桥路80连接。任意数目的未标识次PCI设备94都可与次PCI总线96连接。PCI桥路80作为与次PCI总线96连接的任何数目的PCI设备94和主PCI总线22之间的接口。
任意数目的与PCI总线结构兼容的外部设备可以连接在主PCI总线22上,在整个计算机系统10内再没有其它PCI总线;或者任意的数目的PCI外部设备可用任意数目的次PCI总线的主PCI总线22连接,除了PCI总线96之外,任意数目的次PCI总线还通过相同数目的单独和各自的PCI桥路80与主PCI总线22连接。每一条次PCI总线可以具有通过PCI桥路与其连接的任意数目的附加PCI总线,这些“第三级”PCI总线可以具有与它们连接的各种组合的其它PCI总线。同样地,每一PCI总线可以具有与其连接的任意数目的PCI设备。两条PCI总线之间的每一连接都必须利用与桥路80完全一样的PCI桥路。
此外,与PCI主桥路20完全相同的多桥路可以由S-总线16来驱动。这些主桥路的每一个可以具有与其连接的、按照系统10的设计者的任何意愿设置的任意数目的PCI总线、桥路和设备。因此,系统10的由PCI总线结构组成的部分可以由按照各种同等和分级组合设置的多总线和PCI外部设备组成(此后统称为PCI网络)。
另外,信息处理系统10的另一种结构取消了S-总线16,因此主桥路20直接将主PCI总线22接至CPU局部总线34。在这一结构中,任一S-总线设备14可被直接接至CPU局部总线34。由于S-总线16和CPU局部总线34利用相同的结构来运行,因此,如下所述,本发明的这一另一个实施例与根据图1描述的最佳实施例一样。
现在参看图2,图中表示了在两个连续的写周期内对于与主PCI总线22连接的外部设备的各种PCI总线信号的时序。这一外部设备可以是图形控制器72、标准总线桥路78或任何其它能够由PCI总线驱动的外部设备。与此类似,图2所示的写周期是一般的PCI总线写周期,并不是主PCI总线22所独有的。它们可以是在次PCI总线96上的或在PCI网络中的任何其它总线上的写周期。
时钟信号(CLOCK)给在PCI网络上的所有通信提供定时。CLOCK是给每一个PCI设备和所有PCI桥路的输入信号。CLOCK是同步的,即在PCI结构中的所有通信信号都具有至少一个时钟的持续时间,并且任何命令或数据传送都是在至少一个时钟期间内被执行的。图2中的信号被垂直虚线分隔为单个“时钟”。每条虚线表示一个时钟持续时间的开始和前一个时钟持续时间的结束。每行信号被取样或者在时钟信号的上升缘具有其有效意义。
帧信号(FRAME)被与PCI总线连接的任何PCI桥路或外部设备用来表明正在启动对于与总线连接的另一PCI桥路或外部设备的通信周期或一次存取。启动存取的外部设备或PCI桥路称为主动装置。被存取的设备或部件称为从动装置。在PCI总线结构中,许多信号在它们从高电压到低电压或被驱动为“低电平”时成为被允许或者被启动。FRAME是这些信号之一。因此,当主动装置如在第2个时钟中所示的那样将FRAME驱动为低电平时,主动装置正在向从动装置表明它正在启动一存取过程。
启动程序就绪信号(IRDY)也是当其为低电平时被启动,表明主动装置做好了开始数据传送的准备。因此,当主动装置在读周期内做好报接收数据的准备或在写周期内做好了给从动装置传送数据的准备时,它就将IRDY驱动为低电平。
目标就绪信号(TRDY)被启动为低电平,表明从动装置做好了开始数据传送的准备。因此,当从动装置在写周期内做好了给主动装置传送数据的准备时,它就将TRDY驱动为低电平。
地址/数据信号(AD)含有将向其传送数据的寄存器的地址以及将要在一条导线上进行多路传输的数据。地址信息在AD上被主动装置在其确认FRAME的地址周期内驱动。根据存取是一写周期还是一读周期,主动装置或从动装置将分别在地址周期之后的数据周期内提供在AD信号线上被驱动的数据。地址周期为一个时钟的持续时间,数据周期至少为一个时钟,但是,如果数据传送是脉冲式传送或者从动装置对TRDY的确认被延迟,数据周期可以大于一个时钟。
命令/字节允许信号(C/BE)提供在一条导线上多路传输的PCI总线命令和字节使能信号。当主动装置确认FRAME时以及在在AD上的地址周期内,主动装置确认总线命令。根据主动装置启动的存取的类型,总线命令可以是读命令或写命令。
字节允许信号在在AD上的数据传送期间出现在C/BE上。字节允许信号被包括在具有0至3的标识号的四个位内。当全部四个位被启动为低电平(二进制值0)时,它们表示在AD上被传送的四个字节或全部32位数据被允许并应当在传送期间被写入。当四个位中的一个为高电平(二进制值1)时,在PCI总线上被传送的四个字节数据中的一个字节被禁止。
在如图2所示的写操作期间,各种PCI总线信号的功以如下在第二时钟期间,主动装置驱动FRAME为低电平,表明该主动装置下在启动对从动装置的存取。在第二时钟期间,IRDY和TRDY处于转向周期。
这时,主动装置提供在从动装置中的在AD信号线上对准其进行存取的寄存器的地址,同时主动装置在C/BE信号线上产生一写命令。
到达第三个时钟时FRAME不被确认,这就意味着存取将要结束。主动装置现在获得对IRDY信号线的控制并将其驱动为低电平,表明主动装置做好了将数据传送给从动装置的准备。从动装置也获得对TRDY信号线的控制并将其驱动为低电平,表明它已将地址信息作为在其内部的寄存器的地址译码并做好了在这一寄存器中接收数据的准备。因此,根据第三个时钟,数据沿AD信号线从主动装置传送到从动装置被译码的寄存器中。
在地址周期之后,当数据周期开始时,主动装置确认有C/BE信号线上的字节允许信号,该信号说明数据是否被允许。如果四个位的一个或多个为高电平,那么在AD信号线上的数据的相应字节就不被允许。
在第五个时钟期间,因为另一个写周期已被启动,所以时序图是以上的重复。这第二个写周期可由同一个主动装置由其它的主动装置来启动。与此类似,写周期的目标可以是同一个从动装置或完全不同的从动装置。
为了消除与PCI总线连接的各种设备之间的争用危险,在第二写周期被启动之前,每条信号线都经历一换向周期。为了全面说明换向周期和争用,请参看转让给IBM公司的与本发明同时申请的题为“在具有多路传输总线的信息处理系统中提供背对背(back-to-back)数据传送的方法和设备”的尚待授权的专利申请。
现在参图3,该图表示读周期的时序图以及另一读周期的开始。在第二个时钟期间,主动装置确认FRAME为低电平。由于这是一单个数据周期的传送,所以FRAME在第2个时钟期间只对一个时钟信号保持低电平。地址信号也是由主动装置通过AD来提供,读命令在第二个时钟期间通过C/BE信号线来发送。
在第三个时钟序列期间,因为从装置必须在第四个时钟期间取得AD信号线的控制,以便提供主动装置已请求读出的数据,所以AD信号线进入换向周期。这一换向周期对消除与AD信号线连接的主动装置和从动装置之间的争用是必不可少的。主动装置在第三个时钟期间确认IRDY为低电平,表明它准备读请求的数据。在第三个时钟信号期间,主动装置还确认在C/BE信号线上的字节允许信号。
在第四个时钟信号期间,从动装置在AD信号线上提供数据并确认TRDY。字节允许仍然在C/BE信号线上被PCI主动装置确认。由于IRDY信号在第四个时钟期间保持低电平,所以将要读出的数据从从动装置传送到主动装置。
当与PCI总线连接的主动装置需要将数据传送给与CPU局部总线或系统总线连接的部件或设备、例如DMA控制器或系统存储器时,必须经过两个步骤。在第一个步骤中,将PCI总线与CPU局部总线或系统总线连接的主桥路对于在PCI总线上的数据传送是一从动装置。对于第二个步骤,不管是读周期还是写周期,主桥路变为在CPU局部总线或系统总线上的主动装置,将要被传送数据的设备或部件对于这一特定的数据事项处理而言是在CPU局部总线或系统总线上的从动装置。
例如,如果图形控制器72对准为DMA控制器40的一写周期,PCI主桥路20就成为在主PCI总线22上的写周期的从动装置。在写周期期间将要写入的数据然后被传送给主桥路20。主桥路20然后由于DMA控制器40作为该写周期的从动装置或目标,成为在S-总线16上的写周期的主动装置,然后数据在写周期期间通过S-总线16再从主路20传送给DMA控制器40。读周期也经历类似的两个步骤,主桥路20是在PCI总线22上的读周期的从动装置,然后成为在S-总线16上的读周期的主动装置,完成从S-总线16返回到PCI总线22的数据传送。
另外,如果S-总线16上的主动装置启动向PCI总线22上的设备的数据传送,它就必须首先将主桥路20作为从动装置。然后主桥路20成为PCI总线22上的数据传送的主动装置。
与PCI网络中低于PCI桥路80的PCI总线连接和与CPU局部总线34或S-总线16连接的部件之间的数据传送必须通过连续进行将数据传送给连结网络的PCI桥路和从PCI桥路传送数据、直至数据最终传送给主桥路20来完成。一旦PCI桥路80具有要被传送的数据,如果某一传送是写周期,则由于PCI桥路80作为PCI总线22上的主动装置,而主桥路20作为PCI总线22上的从动装置和S-总线16上的主动装置利用上述的两个步骤的过程来完成的数据传送。
因为S-总线16和PCI总线22的总线结构不同,所以它们之间的数据传送必须通过两个步骤来完成。CPU局部总线34和S-总线16的总线结构相同。在CPU局部总线34和S-总线16的总线结构中,数据和地址地址信息不象在PCI总线结构中那样被多路传输;它们通过单独的线路传送。在这些线路上的数据和地址信息串是32位长的。
CPU局部总线结构没有执行与在PCI总线结构中的字节允许信号相同功能的字节允许信号线。因此,在CPU局部总线结构中的字节允许信号是四位长的,指出在数据线上的数据的某一个字节被允许或不被允许。
CPU局部总线34和S-总线16将来自PCI总线22的时钟信号作为定时信号。定时信号在CPU局部总线34S-总线16上的每段持续时间称为总线周期。
与PCI总线结构不同,CPU局部总线34和S-总线16的数据和地址信息在单独的信号线上传送。因此,一旦将要被传送数据的从动装置响应在地址线上传送的地址,就能在CPU局部总线的一个总线周期内完成数据传送。在将几个32位的数据串以脉冲方式传送到连续地址期间,一旦从动装置响应第一个数据传送,就能在一个总线周期内完成随后每一数据传送。在数据传送期间,主动装置在CPU局部总线上产生字节允许信号。
参看图2,如果以第二个时钟到第四个时钟所示的写周期最终为与S-总线16连接的一部件,主桥路20就是PCI写周期所指向的从动装置。因此,主桥路20通过响应在第二个时钟内发送的地址而在其内部寄存器中的一个寄存器内接收在第三个时钟内发送的数据。这一地址也将被存储在主桥路内部寄存器中的一个寄存器内。
然后一旦主桥路20得到对S-总线16的控制权,它就作为主动装置在S-总线16上产生一写周期。在第一个总线周期内,主桥路20将其在PCI写周期内接收的同样的地址信息和字节允许信号传送到这些信号在S-总线16上的各条信号线上。相应的从动装置响应该地址信息,并且在这一响应之后在下一个总线周期内通过地址线传送数据。
PCI总线上的数据在读或写周期内都可以是非邻接的。非邻接数据就是在32位数据串中的两个或多个允许的字节数据被一个字节或多个字节的不允许的数据分隔开。字节允许信号的四个位表示数据是否被禁止,即是否是非邻接的。以下表1表示四个字节的允许位的每种可能的二进制组合以及每种组合是否表示非邻接的数据。
表1
表1(续 )
CPU局部总线34和S-总线16的结构不能传送在一次数据传送中不造成信息处理系统的故障的非邻接的数据,因此,在主桥路20能够将从PCI总线22传送到S-总线16之前,它必须确定数据中否是非邻接的,如果是,就将非邻接数据转换为邻接数据。体现了本发明的硬件就是完成这一任务的。
以下描述的本发明将非邻接数据转换为邻接数据的方法是将在PCI总线22上的一非邻接数据传送分成在S-总线16上的两次或多次的邻接数据传送。例如,如果来自与主PCI总线22连接的主动装置的非邻接数据具有字节允许值0110并且主动装置在将这一数据写入到与S-总线16连接的从动装置,则本发明的被包括在主桥路20中的硬件将在S-总线16上分别产生字节允许值为1110和0111的两个写周期。这两个写周期的地址和数据都是相同的。这就使得数据的第一和第四字节(它们被允许)被传送,数据被禁止的第二和第三字节不被传送。
本发明还同时涉及和觖决了与CPU局部总线或系统总线连接的8位和16位设备和与PCI总线连接的只以32位长的数据串传送数据的设备之间的通信问题。本发明觖决这一问题也是将在PCI总线上的32位数据传送分为在CPU局部总线或系统总线上的多次数据传送。
例如,如果来自与主PCI总线22的主动装置的写周期被分配给与只接收8位数据的S-总线16连接的从动装置,假设全部数据被允许,则来自主动装置的32位数据串必须被分成在S-总线16上的四个周期。四次传送的每一次的字节允许信号随着数据的字节被传送给从动装置而变化。在S-总线16上的第一次写的字节允许信号将是0000,表示数据的全部4个字节被允许。但是,因为从动装置是8位设备,所以只有数据的最低位字节被从动装置接收。因此,因为数据的最低位字节已经被传送到从动装置,所以本发明的主桥路20产生具有字节允许信号0001的第二写周期。当数据的每个字节在顺序的写周期中被传送时,第三写周期的字节允许值将改变为0011,第四写周期的字节允许信号将改变为0111。
表2表示根据从动装置的位容量和特定数据传送的字节允许信号,在一次数据传送之后,是否需要在CPU局部总线或系统总线上进行另外的数据传送。表2还表示了下一次数据传送的字节允许值。
表2
以下描述本发明在主桥路的硬件中,例如主桥路20中采用了该表。
现参看图4,该图表示本发明的在主桥路20内的字节允许控制硬件100。硬件100包括与PCI总线22的C/BE信号线连接的第一锁存寄存器102和第二锁存寄存器104。锁存寄存器104与一个五输入的多路转换器106相连接。锁存寄存器104具有一输出线108,通过该输出线锁存寄存器与一个两输入的多呼转换器110连接。
锁存寄存器102和104的每一个都具有保持4位数据的容量,并且将4位值锁存和保持一个时钟信号的时间长度。锁存寄存器102从PCI总线22的C/BE信号线接收用于特定的数据传送的4位字节允许信号并锁存该信号,直到该特定的数据传送在S-总线16上结束。
锁存寄存器104从多路转换器106接收4位的输出信号,并保持这一值直到多路转换器106产生另一输出信号为止。锁存寄存器104在信号线108上输出其当前的4位值给多路转换器110的第二输入端。锁存寄存器104的输出称为锁存的字节有效(L-BV)。
多路转换器106具有编号为1到5的五个输入端,根据在PCI总线22和S-总线16上的数据相位的状态,其内部逻辑在其输出端上有选择地被驱动。这些输入的每一个都是4位值。多路转换器106通过主桥路20的硬件接收在这些总线上的数据传送的状态。在PCI总线22和S-总线16上的使多路转换器106选择其五个输入的每一个的数据相位的状态如下输入1—当主桥路20开始响应在PCI总线22上的读数据传送、在S-总线16上的数据传送已经结束,以及准备开始另一数据传送时被选择。输入1总是“1111”的二进制值。
输入2—当写数据传送在PCI总线22上开始以及在完成在S-总线16上的相应写数据传送所需的在S-总线16上的第一总线周期已开始之前被选择。输入2是来自PCI总线22的C/BE信号线的4位字节允许值。
输入3—当将要在S-总线16上结束的数据传送是通过PCI总线22启动的写操作并且在S-总线16上的传送的总线周期刚刚结束时被选择。
输入4—当将要在S-总线16上结束的数据传送是读操作并且在S-总线16上的传送的总线周期刚刚结束时被选择。
输入5—在S-总线16的任何总线周期期间被选择和保持,直到该总线周期结束为止。这一输入是锁存寄存器104输出的反馈。
多路转换器110具有两个输入端,这两个输入端根据被PCI总线22启动的数据传送是读操作还是写操作进行选择。这些输入端的每一个是4位的。第一输入端在PCI写数据传送期间被选择。多路转换器110通过主桥路20的硬件监测在PCI总线22和S-总线16上的数据传送的状态。
多路转换器110的输出端与非邻接数据检测器114连接,该检测器检测在S-总线16的下一个总线周期内将要被传送的数据的字节允许是否是非邻接的。检测器114是硬件逻辑的功能块组合,它提供了以上所述表1的功能。因此,检测器114确定在下一个总线周期内将要被传送的数据是否是非邻接的,如果数据事实上的非邻接的,就在输出线116上产生一二进制“1”。检测器114的输出标为NC。
多路转换器110输出的四个位还分别作为在信号线118、120和122上的三个信号。具有标号为0和1的两个低位在信号线118上输出,信号线118与信号线124连接,信号线124又与S-总线16连接。多路转换器110输出的具有标号2的位在信号线120上输出并作为第一个两输入或门126的输入。多路转换器110输出的具有标号3的位在信号线122上输出并作为第二个两输入或门128的输入。
检测器114的NC输出还输入到或门126和128。或门126和128的输出与信号线124连接。
信号线124传送4位信号PBE给S-总线16,S-总线16合并两个或门126和128的输出和多路转换器110的输出的标为0和1的位。这一4位信号是S-总线16的当前总线周期的字节允许信号,并且总是相邻的。
检测器114的NC输出还输入到第三个两两输入或门130,或门130的另一输入端通过信号线134与字节允许发生器132连接。发生器132在信号线134上的输出被标为BSZ。或门130具有标为BC的输出端,该输出端与在主桥路20内的其它硬件连接。
发生器132是已知逻辑硬件的功能块,它提供产生以上所述表2的功能。因此,发生器132确定是否需要S-总线16的另一总线周期来结束由PCI总线22启动的特定的数据传送并为这一传送提供字节允许信号。发生器132的输出取决于被传送数据的从动装置是8位还是16位的设备。
发生器132通过标为BS8和BS16的两输出线与S-总线16连接。BSZ、BS8和BS16信号是可以具有值0或1的单个比特二进制信号。一旦与在其上传送数据的S-总线16连接的从动装置响应结束数据传送,它就根据它是8位还是16位设备而分别在BS8或BS16上发送二进制信号。如果它不是8位或16位设备,则BS8和BS16的值为1。如果BS8和BS16的值为0,则该从动装置分别是8位或16位设备,发生器132在信号线134上产生二进制值为1的BSZ信号。
如果NC或BSZ信号的值为1,则或门130产生一高值的BC信号。高的BC信号向在主桥路20中的其它硬件指出需要至少一个以上的总线周期来完成当前的数据传送。
发生器132具有来自信号线124的另一个输入,该输入是S-总线16当前总线周期的字节允许信号。发生器132根据当前字节允许值产生下一总线周期的字节允许值。
发生器132具有在信号线136上输出的被标为NBE的第二输出。NBE是4位值。NBE或者被赋予下一总线周期的字节允许信号的值,或者如果因为从动装置是8位或16位设备而不再需要S-总线16的总线周期来结束由PCI总线22启动的数据传送,其值就为“1111”。
NBE信号是两输入异或门(XOR)138和两输入反相异或门(NXOR)140的一个输入。XOR门138和NXOR门140的另一输入是来自信号线124的S-总线16当前总线周期的字节允许信号的值,信号线124通过信号线142与XOR门138和NXOR门140连接。
XOR门138的输出与第四个两输入或门144的一输入端连接。NXOR门140的输出与两输入与门146的一输入端连接。或门144和与门146的另一输入是通过信号线148的输出与多路转换器106的第3个输入端连接。与门146的输出与多路转换器106的第4个输入端连接。
锁存寄存器104的输出还通过信号线148与第二个两输入NXOR门150、四输入与门152和比较器154连接。与门152的四个输入是锁存寄存器104的L-BV信号的四个位。与门152的输出输出给在主桥路20中的其它硬件,并指出由PCI总线22启动的写周期已在S-总线16上结束。这一输出被标为W-DONE并且当其被启动时为二进制1。
NXOR门150的另一输入是锁存寄存器102的输出。这一输出还是在PCI总线22上被启动的数据传送的字节允许信号的值。这一值保持恒定,直至数据传送在S-总线16上结束。NQOR门的输出与多路传换器110的第一个输入连接。
锁存寄存器102的输出还与比较器154连接。比较器154将这一值与它通过信号线148接收的L-BV值比较。当这两个值相等时,比较器154与其在主桥路20中的其它硬件连接的输出端上产生二进制1的值。这一值被标为R-DONE,表示由PCI总线22启动的读数据传送在S-总线16上已结束。
根据由与PCI总线22连接的主动装置(PCI主动装置)启动的数据传送是读或写传送,硬件100的运行是不同的。在读传送期间的操作中,PCI主动装置在PCI总线22上启动为S-总线16定的读周期,主桥路20作为从动装置而响应。PCI主动装置的字节允许信号被锁存到锁存器102中去并被输入到比较器154和NXOR门150。
由于在S-总线16上的读传送尚未开始,多路转换器106输出第一输入,它是4位二进进制值“1111”。该值然后被锁存到锁存寄存器104中去并在信号线148上作为L-BV信号被输出给NXOR门150。
NXOR门150然后根据来自PCI总线22的被锁存在锁存寄存器102中的字节允许信号和L-BV的值的反相异或组合产生一4位的输入值。因为当前的传送是一读操作,所以多路转换器110在数据传送的整个期间选择NXOR150的输出来在其自己的输出端上进行驱动。
检测器114然后确定多路转换器110的输出是否是非邻接的,如果是,就通过将其驱动为二进制值1来启动其在信号线116上的输出信号NC。当NC启动时,或门126和128的输出将为高电平,保证在信号线124上的PBE信号的第2和3位为逻辑1。即PBE将总是邻接的。如上所述,PBE的第0和1位的值就是多路转换器110输出的第0和1位。
PBE信号然后作为当前总线周期的字节允许信号通过信号线124传送给S-总线16。当与支配读传送的S-总线16连接的从动装置响应该数据传送时,它会在BS8或BS16信号线上产生二进制0,表明该从动装置分别是8位或16位的设备。在BS8、BS16的值以及PBE信号的基础上,发生器132将按照上述表2在信号线136上产生NBE信号。
如果BS8或BS16被允许为二进制0并且发生器132确认需要S-总线16上的另一总线周期来结束读数据传送,则发生器132将在信号线134上产生BSZ的二进制高信号。这将使或门130产生BC的高信号,该信号向在主桥路20中的其它硬件指出需要另一总线周期来结束数据传送。类似地,如果检测器114驱动为二进制高值,这表示需要另一总线周期来结束数据传送。
一旦产生了NBE信号,它就和在信号线142上的PBE信号一道输入到NXOR门140。NXOR门140输出的4位二进制值与锁存寄存器104的输出的反馈信号一道输入到与门146。与门146对这两个信号进行逻辑“与”操作并将结果输出到多路转换器106的第4个输入端。由于这是读数据传送并且在S-总线16上的数据传送的第一总线周期已经结束,所以多路转换器106选择其第4个输入来在其输出端上进行驱动。
多路转换器106的这一新的输出被锁存到锁存寄存器104中去并成为下一个L-BV信号。然后对这一新的L-BV信号重复上述过程。
对每一新的L-BV值不断地重复上述过程,直到由PCI总线22的C/BE信号线上的字节允许信号表示的全部数据已被传送为止。当这种情况出现时,L-BV的值将等于PCI总线22的字节允许信号。这两个信号不断地输入到比较器154,当它们相等时,比较器154将R-DONE启动为高电平,向S-总线16和主桥路20指出数据传送已结束。当这一情况出现时,已经从与S-总线16连接的从动装置中读出了全部数据。
字节允许硬件100在写传送期间的操作在几个方面不同于其在读传送期间的操作。与PCI总线22连接的主动装置通过启动为S总线16定的写周期开始其运行。PCI总线22的字节允许信号输入到多路转换器106的第2输入端。由于数据传送的第一总线周期尚未在S-总线16上开始和这是一写操作,所以多路转换器106选择在其第二输入端上的信号来在其输出端上进行驱动。因此锁存器104锁存来自PCI总线22的字节允许的值并且这些信号成为L-BV的值。
由于这是一写传送,所以多路转换器110选择在其第2输入端上的信号在其输出端上进行驱动,这一信号是L-BV。 L-BV然后输出给检测器114并且被分派在信号线118、120和122上。检测器114和或门126和128提供与它们为读操作提供的功能相同的功能,在S-总线16上产生PBE信号并且保证它是邻接的。同样地,发生器132、BS8和BS16以与它们在读传送期间同样的运行方式产生NBE信号,或门130也同样地产生BC信号。
一旦发生器132产生了NBE信号,它就通过信号线136和PBE信号一道输入到XOR门138。XOR门138对PBE信号和NBE信号进行“异或”操作并将结果输出到或门144的输入端。或门144还从反馈信号线148接收一输入信号,该输入信号是L-BV信号。或门144对输入给它的这两个信号进行“或”操作并将结果输出到多路转换器106的第3输入端。
因为当前的数据传送是写操作并且在S-总线上的数据传送的第一总线周期已经结束,所以多路转换器106选择在第3输入端的信号来在其输出端发送。多路转换器106的输出被锁存到锁存寄存器104中去并成为新的L-BV的值。
这一新的L-BV的值然后输入到多路转换器110的第二输入端,整个过程被自行重复。上述过程将重复,直到L-BV的值具有等于“1111”的二进制值。当这种情况出现时,那么全部的数据已经从PCI总线22传送到与S-总线16连接的从动装置。
当L-BV等于“1111”时,与门152将启动W=DONF。这向S-总线16和与该连接的从动装置指出数据传送已经结束。
硬件100在用来自PCI总线22的指向8位从动装置的等于“0100”的字节允许信号的一写操作期间的运行实例如下“0100”的字节允许信号传送给多路转换器106的第2输入端。多路转换器106将该信号输出给锁存寄存器104,后者转换器106将该信号输出给锁存寄存器104,后者输出等于“0100”的L-BV信号。多路转换器110输入并输出这一信号给检测器114。
检测器114确定L-BV为非邻接的并输出等于1的NC信号。因为NC等于1,所以或门126和128使在信号线124上的PBE等于“1100”。这一信号作为第一总线周期的字节允许信号在S-总线16上被传送。
被写入的从动装置以在BS8上的低电平信号来响应,由于只有相应于PBE信号第0位的数据在第一总线周期内被传送,所以这就使发生器132产生“1101”的NBE信号。发生器132还使BSZ变为高电平,与高的NC信号一道使或门130在BC上产生一高电平信号,表示需要至少另一个总线周期来结束传送。
PBE和NBE输入到XOR门138,该门进行异或操作并产生等于“0001”的输出。或门144然后将XOR门的输出和锁存器104的反馈值作为输入进行“或”操作。这一操作的结果是“0101”,被传送给多路转换器106的第3输入端并且从多路转换器106输出给锁存寄存器104。这一值现在成为L-BV值。
因此,“0101”通过多路转换器110的第2输入端被传送给检测器114,检测器114再确定这一值是非邻接的并使NC等于1。这就使或门126和128以及信号线118为S-总线16的第2总线周期在信号线124上产生等于“1101”的PBE信号。NC信号还使或门130启动BC信号,它向主桥路20表示还需要另一总线周期来结束数据传送。在第二总线周期期间,相应于字节允许信号PBE的第2位的数据的字节将被传送给从动装置。
从动装置再次响应在BS8上的低电平信号。因此,发生器132依据表2不启动BSZ信号,在信号线136上产生“1111”的NBE信号。
这一值与PBE的值一道输入给XOR门138。因此,XOR门138产生“0010”的输出信号,该输出信号同通过反馈信号线148的当前L-BV值一起输入给或门144。或门144输出等于“0111”的值作为响应给多路转换器106的第3输入端,该值成为下一个L-BV的值。
检测器114确认新的L-BV的值是相邻的,但不启动NC信号。因此,L-BV的值只是作为PBE新的值不受或门126和128的影响而直接通过信号线124。然后在S-总线16上产生第三总线周期,该总线周期结束数据传送,字节允许信号等于PBE的当前值或等于“0111”。
从动装置由启动BS8作出响应,但是,发生器132不启动BSZ信号并且再次在信号线136上产生“1111”的NBE值。XOR门138和或门144进行的逻辑操作的最终结果现在是“1111”,该结果输入给多路转换器106的第3输入端并输出给锁存寄存器104。L-BV的值因此成为“1111”,使与门152产生W-DONE的高电平信号,该信号结束数据传送。
如果上述实例是读数据传送,相同的PBE字节允许值将用于S-总线16的总线周期。但是,如上所述,它们将会以不同的方式被获得。这是因为利用了在硬件100中的读“逻辑通道”而不是写逻辑通道。
以上描述了在信息处理系统的不同总线结构之间提供准确和完整的通信的方法和设备的最佳实施例。但是,根据以上描述可知这一描述是作为一个实例而已,本发明不限于在此描述的具体的实施例,不脱离权利要求限定的本发明的精神实质可以进行各种调整、修改和替换。
权利要求
1.一种信息处理系统,包括中央处理单元;与所述中央处理单元连接的系统总线;以及连接外部设备的外部总线;其特征在于包括将所述系统总线与所述外部总线连接的主桥路,该主桥路具有一逻辑网络,该逻辑网络检测将要在所述系统总线上传送的数据串是否是非邻接的,如果所述数据串是非邻接的,就在所述数据在所述系统总线上被传送之前将所述数据串转换为多个邻接数据串。
2.权利要求1的信息处理系统,其特征在于所述逻辑网络是在所述主桥路中的硬件。
3.权利要求1的信息处理系统,其特征在于所述逻辑网络包括一发生器,该发生器根据连接到发送或接收所述数据串的系统总线的从动装置的位容量产生用于所述数据串的多个允许信号。
4.权利要求3的信息处理系统,其特征在于所述逻辑网络包括在写传送期间将所述数据串转换为所述多个邻接数据串的第一逻辑通道和在读传送期间将所述数据串转换为所述多个邻接数据串的第二逻辑通道。
5.权利要求4的信息处理系统,其特征在于所述逻辑网络包括至少一个选择所述第一逻辑通道或所述第二逻辑通道的多路转换器。
6.权利要求5的信息处理系统,其特征在于所述允许信号在写传送期间被所述第一逻辑通道处理、以及在读传送期间被所述第二逻辑通道处理,以便获得所述多个邻接数据串。
7.权利要求1的信息处理系统,其特征在于所述外部总线是PCI总线。
8.权利要求1的信息处理系统,其特征在于所述外部总线是多路传输总线。
9.权利要求1的信息处理系统,其特征在于与所述外部总线连接的外部设备启动在所述系统总线上的所述数据串传送。
10.权利要求1的信息处理系统,其特征在于所述多个邻接数据串的每一个连续地在所述系统总线上被传送,在所述邻接数据串和所述系统总线的总线周期之间为一一对应的。
11.一种在信息处理系统的与外部总线连接的外部设备和与系统总线连接的部件之间传送非邻接数据的方法,其特征在于包括以下步骤设置一中央处理单元;设置与所述中央处理单元连接的系统总线;设置连接外部设备的外部总线;将所述系统总线与所述外部总线连接;检测将要在所述系统总线上被传送的数据串是否是非邻接的;如果所述数据串是非邻接的,就将所述数据串转换为多个邻接数据串;以及在所述系统总线上传送多个邻接数据串的每一个。
12.权利要求11的方法,其特征在于包括根据连接到发送或接收所述邻接数据串的系统总线的从动装置的位容量产生每一个所述邻接数据串的允许信号的步骤。
13.权利要求11的方法,其特征在于所述外部总线是PCI总线。
14.权利要求11的方法,其特征在于所述外部总线是多路转输总线。
15.在信息处理系统中将系统总线与外部总线连接的主桥路,其特征在于包括确定从所述系统总线传送给所述外部总线或从所述外部总线传送给所述系统总线的数据串是否是非邻接的检测器;将所述数据串转换为多个邻接数据串并且在系统总线的相继周期内传送所述邻接数据串的逻辑网络;以及根据所述信息处理系统的在所述的数据串的传送中为从动装置的部件的容量产生所述多个邻接数据串的每一个的允许信号的发生器。
16.权利要求15的主桥路,其中所述外部总线是PCI总线。
17.权利要求15的主桥路,其中所述外部总线是多路传输总线。
全文摘要
本发明在连接CPU局部总线和外部总线的主桥路内设置硬件逻辑,该硬件逻辑确定将要在CPU局部总线上被传送的数据是否是非邻接的,如果是,就用邻接数据来代替非邻接数据,以便保证CPU局部总线不出现故障。本发明的硬件还同时翻译在外部总线和CPU局部总线之间的数据传送,外部总线因其结构局限于传送标准长度的数据串而CPU局部总线可允许动态总线分级。
文档编号G06F13/20GK1118478SQ9410879
公开日1996年3月13日 申请日期1994年5月26日 优先权日1993年5月28日
发明者G·N·桑托斯 申请人:国际商业机器公司