CN100442248C - 用于避免竞争的计算机系统同步单元 - Google Patents
用于避免竞争的计算机系统同步单元 Download PDFInfo
- Publication number
- CN100442248C CN100442248C CNB2005101271590A CN200510127159A CN100442248C CN 100442248 C CN100442248 C CN 100442248C CN B2005101271590 A CNB2005101271590 A CN B2005101271590A CN 200510127159 A CN200510127159 A CN 200510127159A CN 100442248 C CN100442248 C CN 100442248C
- Authority
- CN
- China
- Prior art keywords
- processor
- write
- data
- logic
- writes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Hardware Redundancy (AREA)
Abstract
在包括多片处理器(104)和存储器(106)的系统中,具有避免竞争能力的同步单元(100)包括委派写入引擎(108),它从处理器(104)接收数据和存储器地址信息,以及作为处理器(104)的代表把数据写入存储器(106)。
Description
技术领域
本发明涉及计算机系统,更具体地说,涉及处理器中避免竞争的方法和装置。
背景技术
系统可用性、可缩放性以及数据完整性是企业系统的基本特征。不间断执行的能力强加于把企业系统用于诸如证券交易事务处理、信用卡和借记卡系统、电话网络之类的应用的金融、通信及其它领域。在具有高金融或人力成本的应用中,在大规模缩放的环境中,以及在不能容许停机和数据破坏的情况中,往往实现高可靠性系统。
冗余处理器体系结构可用于企业系统,其中,多个物理处理器用作一个逻辑处理器,每个处理器具有专用存储器并运行相似操作系统的副本。冗余处理器可实现预期可用性和数据完整性特征。冗余处理器体系结构可用于其中冗余处理器不是密切同步和/或可能基于不同时钟来工作的配置中。这类系统具有竞争状况的可能,例如处理器写入-输入/输出控制器读取竞争状况。在一个具体实例中,输入/输出控制器可从主存储器中读取直接存储器存取(DMA)描述符链。输入/输出控制器可向多个存储系统中的每个发出读命令,并比较结果。如果数据匹配,则结果可用来产生输入/输出操作。但是,如果处理器附加该链时输入/输出控制器正读取该链,则输入/输出控制器可能从一个处理器而没有从另一个处理器读取所附加的值,从而在输入/输出控制器看来是存储器比较错误、因而看作错误。
发明内容
在包括多片处理器和存储器的系统中,具有避免竞争能力的同步单元包括委派写入引擎,它从处理器接收数据和存储器地址信息,以及作为处理器的代表把数据写入存储器。
附图说明
通过参照以下描述和附图,可以最佳地理解涉及结构以及操作方法的本发明的实施例:
图1是示意框图,说明能够避免竞争状况的同步单元的一个实施例;
图2是示意框图,说明具有补充细节的同步单元的另一个实施例;
图3A和图3B是流程图,分别说明避免竞争状况的方法以及竞争委派功能的使用模型的一个实施例;
图4A和图4B是流程图,说明与处理器在初始化过程中执行的竞争委派处理有关的动作的实施例;
图5A和图5B是流程图,说明实现委派或代理写入操作的技术的实施例;
图6A和图6B是示意框图,分别说明能够实现用于避免竞争状况的说明性技术的计算机系统的实施例;以及
图7是示意框图,说明包括三个处理器片并且能够实现用于避免竞争状况的技术的复合处理器的一个实施例。
具体实施方式
参照图1,示意框图说明能够避免竞争状况的同步单元100的一个实施例,它包括至少一个处理器104与至少一个存储器106之间的接口102以及委派写入引擎108。委派写入引擎108经由接口102从处理器104接收数据和存储器地址信息,以及作为处理器104的代表把数据写入存储器106中的一个或多个。
同步单元100可用于冗余松散耦合处理器(RLCP)110,并且包括逻辑网关112,它可称作表决模块,其中包括委派写入引擎108。表决模块及关联表决逻辑相互比较来自多个处理器的数据以检测任何差异,以及以有利于数据的方式协商解决差异。委派写入引擎108可在所有参与的片中代表处理器104把数据写入存储器106。处理器104对委派写入引擎108执行表决写入操作,并设置两个寄存器,一个具有数据值以及第二个具有要写入的位置的地址值。在表决写入操作中,来自多个处理器的写数据的任何差异以有利于大多数的方式来解决。在写操作完成之后,逻辑网关112中的委派写入引擎108在地址值处把数据值写入每个存储器106。
参照图2,示意框图说明同步单元200的另一个实施例,它还包括数据寄存器210和地址寄存器212。处理器204把数据写入数据寄存器210,以及把地址信息写入地址寄存器212。在完成寄存器写入时,或者可命名为代理引擎的委派写入引擎208把数据写入存储器206中指定的地址。
委派写入引擎208可包括用于管理多个写入的写入队列211。写入队列211结合数据寄存器210、地址寄存器212以及在一些实施例和配置中结合委派序列号寄存器进行工作。与委派写入相关的信息暂时存储在写入队列211中以管理写入排序。在一般操作中,多个片执行相同指令集,使得来自所有处理器204的主机写入被异步写入队列211。所有处理器的写入的序列、地址和数据信息经过排队,以及用于对来自所有片的写入进行表决并相应地处理数据。
同步单元200能够通过输入/输出(I/O)总线连接一、二或三个处理器片204。同步单元200可在写入委派中执行多个功能,它们有助于包括可能的竞争状况的输入/输出表决和解决的松散耦合锁步操作。出站输入/输出操作的表决通过检测锁步发散来避免数据破坏。
在一些实现中,同步单元200还可包括逻辑网关214,它防止发散操作传播到输入/输出流。逻辑网关214还包括可编程输入/输出(PIO)子单元216,它控制PIO寄存器存取,并且对PIO寄存器中的读和写请求执行表决校验。PIO写入业务量由主处理器204发起,并且可针对输入/输出控制器220中的已表决寄存器空间、逻辑网关214中的已表决寄存器空间以及逻辑网关214和同步单元200中的未表决专用寄存器。PIO读取业务量也在主处理器204发起,并且可针对与PIO写入业务量相同的区域。对逻辑网关214和输入/输出控制器220中的寄存器空间的PIO读取请求被表决。PIO读取响应数据被复制,并转发给所有参与的处理器片,但未经过表决。逻辑网关214包括直接存储器存取(DMA)子单元218,它执行输入/输出(I/O)控制器发起的读操作。处理器向委派写入引擎208发送又称作已表决写入的已校验写入操作请求。DMA写入业务量由输入/输出控制器220发起,并复制到所有参与的处理器片204。DMA写入业务量未经过表决。DMA读取业务量也由输入/输出控制器220发起。DMA读取请求未经表决就被复制到所有参与片204。DMA读取响应数据被表决。直接存储器存取(DMA)读取响应子单元218检验输入/输出控制器发起的DMA操作或者来自存储器的响应,并对读取数据进行校验。
逻辑网关214可对存储器206产生均未表决的、包含中断的附加写入传输,其中的全部均相对目标存储器206被复制。
冗余松散耦合处理器(RLCP)或系统易受到处理器写入-输入/输出控制器读取竞争状况的影响。例如,输入/输出控制器可从主存储器中读取直接存储器存取(DMA)描述符链。输入/输出控制器可向多个存储系统中的每个发出读取,并比较结果。如果数据匹配,则结果用来产生输入/输出操作。但是,如果处理器附加该链,而输入/输出装置正读取该链,则输入/输出装置可能从一个处理器而没有从另一个处理器读取该附加值,结果在输入/输出装置或适配器看来是存储器比较错误、因而在处理中作为错误。说明性系统使输入/输出装置能够作为处理器的代表执行写操作,消除竞争状况的可能性。
同步单元200还可在逻辑网关214中包括能够执行委派写入动作的逻辑,它避免由主机写入输入/输出(I/O)控制器读取竞争状况产生的(表决)校验错误。主处理器204把写操作委派给委派写入引擎,以及委派写入引擎208一贯地把所委派的写入插入从I/O处理器到所有处理器204的直接存储器存取(DMA)流,使得写入对于对各存储器的DMA操作来说按照相同顺序。
在主机片204更新由逻辑同步单元200针对输入/输出操作在各个时间读取的数据结构的情况下,可能出现主机写入输入/输出控制器读取竞争。特定示例状况影响可能与处理器写入操作重合的直接存储器存取(DMA)读取操作。处理器写入的定时在片204之间可能有变化,导致DMA读取返回分歧的数据。
为了避免具有主机写入输入/输出控制器读取竞争,逻辑网关214支持主机存储器更新功能。为了避免由主机写入输入/输出读取竞争所产生的表决错误,处理器204可把写入操作委派给逻辑网关214。逻辑网关214则在称作委派写入的操作中在对于所有片204一致的时间,把写入插入到DMA事务流中。
多个输入/输出控制器220使用情况可能受到主机写入输入/输出读取竞争的影响。一个使用情况实例是I/O控制器直接存储器存取(DMA)链附加操作。I/O控制器产生通信请求包,并跟踪关联的响应包。例如,I/O控制器220可用来采用网络请求包与网络、例如图6A所示的网络626进行通信。DMA链附加操作的一个步骤包括盖写先前尾部条目链指针和列表结束位。写入受到功能路径中的竞争。通过采用写入委派功能执行写入,同步单元避免使用DMA链附加方法时的伪误表决。
易受到竞争状况的影响的使用情况的第二实例是存取验证和转换(AVT)表条目更新。AVT驻留在存储器206中。AVT表由主处理器写入,并由I/O控制器读取。I/O控制器采用AVT来检验入局网络包的合法性,并把合法包中的虚拟地址转换为用于存储器206的地址。主处理器软件更新AVT表,以便单独或者组合执行各种操作,包括预备新条目、重新映射页面、启用对页面的许可、禁用对页面的许可等。
在没有合法传输可能针对某个页面时,AVT被写入以便在操作之前启用许可。相反,在认为传输完成之后禁用许可;同样在没有合法传输针对此页面时。当没有合法传输针对页面时,仅对禁用页面执行对映射的变更。非法入局网络包可能正好在写入AVT时到达,有可能导致主机写入/输入/输出控制器读取竞争状况。采用竞争委派功能执行AVT表更新可能是可选的,因为只有错误行为受到影响。但是,竞争委派功能也可用来防止远程应用导致表决错误。
易受到竞争状况的影响的使用情况的第三实例在输入/输出控制器220中的中断管理器执行存储器的同步读取时出现。输入/输出控制器220提供中断模式,其中,已扩展的中断向量设置到存储器中,以及同步读取可能在内部寄存器更新之前被执行。软件可能在读操作之前操作存储器。
参照图3A,流程图说明避免竞争状况的方法300的一个实施例。该技术包括从多片松散耦合处理器接收已表决写入302。或者可称作已校验写入的已表决写入指定数据值和目标存储器地址。一完成已校验写入,数据值通过委派写入304在参与片的所有存储器中作为目标的地址。
参照图3B,流程图说明竞争委派功能的使用模型310的一个实施例。竞争委派序列号寄存器和竞争委派数据寄存器用来协调委派数据的写入。例如可用作主计算机的多片处理器执行对竞争委派功能的已表决写入。在采用委派写入特征之前,在采用序列号的实施例和配置中,主软件可初始化312竞争委派序列号寄存器。竞争委派序列号可用来维护处理器与代表之间的写入排序的一致性。在一些实现或情况中,可采用不同于序列号方法的完成通知技术。为了发起314委派写入操作,主机软件可把数据写入316竞争委派数据寄存器,从而采用指定数据值设置数据寄存器。委派写入操作继续进行主机软件,向竞争委派地址寄存器写入318地址、字节启用和代表启用,把地址寄存器设置为指定的目标存储器地址。用于委派写入的完成的主机软件监测器320基于以下假定:所有委派写入操作均通过又称作代表的单个代理来处理,它把数据寄存器内容写入地址存储器中指定的地址。在一些实施例或操作条件中,软件可在主机中工作以监测序列号,并确定附加委派写入资源是否可用或者当前正在使用。
每个写操作被写入队列211,以及代表维护322随着各个排队的委派写入操作而递增的内部委派写入序列号。代表在逻辑网关214中工作,并随着每个被执行的委派写入来递增324计数。在预选地址向主机存储器206反映326此计数。代表或代理可在相对于输入/输出(I/O)操作的不同时间从多个处理器片接收更新,但通过把对于具有委派的至少一个存储器的更新写入直接存储器存取(DMA)事务流来实现数据一致性。
在一些实施例中,系统可采用结合具有固定队列深度的委派写入队列的软件序列号和硬件序列号,使软件能够确定可安全排队的代表写入的数量。
示范实施例定义并采用一个或多个竞争委派寄存器,以便应用于竞争委派功能。用于保持要写入的数据的竞争委派数据寄存器的一个实施例如表I所述。
表I
位 | 符号 | 模式 | 描述 |
63:0 | RaceData | R/W | 竞争委派数据-要写入的数据。 |
竞争委派地址寄存器可包括若干控制和状态字段以及保持委派写入的地址的竞争地址字段。控制和状态字段包括用于委派写入操作的字节启用、当委派写入队列的所有条目全满时设置的委派队列满位、当委派写入队列条目可用时设置的委派队列未空位、以及可由软件设置以发起委派写入的代表启用位。竞争委派地址寄存器的一个实施例如表II所示。
表II
位 | 符号 | 模式 | 描述 |
63:56 | BE | R/W | 字节启用-字节为委派写入启用。 |
55:39 | 保留 | 保留 | |
38:3 | RaceAddr | R/W | 竞争地址-委派写入的对准地址。 |
2 | QFull | RO | 委派队列满-当委派写入队列的所有条目全满时设置位。 |
1 | QNotEmpty | RO | 委派队列未空-当存在委派写入队列条目时设置位。 |
0 | En | WO | 代表启用-由软件设置位以发起代表写入。位始终读作零。 |
各种模式包括读/写(R/W)、只读(RO)和只写(WO)。
竞争委派序列号寄存器在委派写入发起之前被初始化,以帮助维护写入队列上的写入的顺序。竞争委派序列号寄存器可具有包含随每个委派写入操作自动递增的委派写入序列号的序列号字段、包含所实现的委派写入队列深度的队列深度字段、序列号写入的序列号地址以及启用委派写入序列号写入的序列号写入启用位。竞争委派序列号寄存器的一个实施例如表III所示。
表III
位 | 符号 | 模式 | 描述 |
63:56 | SeqNr | R/W | 序列号-字段包含委派写入序列号,它随每个委派写入操作自动递增。 |
55:48 | Qdepth | RO | 队列深度-包含所实现的委派写入队列深度的只读字段。 |
47:39 | 保留 | 保留 | |
38:3 | SeqAddr | R/W | 序列号地址-序列号写入的对准主机地址。 |
2:1 | 保留 | 保留 | |
0 | En | R/W | 序列号写入启用-位启用委派写入序列号写入。 |
参照图4A和图4B,两个流程图说明与处理器在初始化过程中执行的竞争委派处理有关的动作。图4A说明在使用序列号402时采取的动作400。在首次使用委派写入功能性之前,例如通过初始化委派引擎,写入初始序列号SeqNr,设置地址SeqAddr,以及设置启用位En,软件写入404竞争委派序列号寄存器。处理器读取406队列深度Qdepth,并把内部状态写入408代理序列号寄存器。因此,软件保存当前竞争委派序列号和队列深度供将来使用。例如,处理器存储器中的CURRENT_PROXY_WRITE_SEQ用代理序列号寄存器写入。初始化完成410。
图4B说明在没有使用序列号422的情况中、例如当需要另一个完成通知技术时所采取的动作420。例如通过初始化委派引擎以及重置或清除启用En,软件写入424竞争委派序列号寄存器。初始化完成426。
参照图5A和图5B,两个流程图说明用于执行委派或代理写入操作的技术的实施例。图5A说明采用序列号522的委派或代理写入520的操作。动作由处理器528以及由委派或代理引擎536来执行。序列地址从存储器中读取524。如果队列已满526,例如如果CURRENT_PROXY_WRITE_SEQ大于在动作524中读取的序列地址号加上队列深度,则软件等待委派写入操作完成,即通过从存储器再次读取来检测的条件。如果队列未满,则处理器把预期数据写入530竞争委派数据寄存器,然后把地址RaceAddr、字节启用BE以及代表启用En写入532竞争委派地址寄存器,即发起委派写入操作的动作,从而发起代表的动作536。
例如通过跟踪已完成写入的计数或者如以下所述地轮询存储单元,或者以其它方式,处理器528监测委派写入的完成。代理引擎把数据寄存器的内容写入540竞争委派地址寄存器的处理器写入可存取的地址RaceAddr。代理引擎递增542序列号,并把序列号写入544存储器中的序列地址。
对于委派写入的完成的监测是基于所有委派写入操作通过单个代理来处理的假定。软件维护随每个排队和委派的写入操作而递增534的内部委派写入序列号。
委派写入引擎536等待538对地址寄存器的写入,并随着每个执行的委派写入而递增542计数。在所定义的地址上向处理器存储器反映544此计数。
软件所处理的内部委派写入序列号、硬件序列号以及委派写入队列深度共同用来确定可以安全排队的附加代表写入的数量。
图5B说明没有序列号502的委派或代理写入500的操作。例如,软件可就已更新数据轮询存储单元,作为采用序列号的备选方案。或者,软件可轮询硬件寄存器位“Q_FULL”,直到该位被清除。动作由处理器508以及由委派或代理引擎514来执行。软件读取504Q_FULL位,并在队列未满时继续进行。如果队列未满506,则处理器把预期数据写入510竞争委派数据寄存器,然后把地址RaceAddr、字节启用BE以及代表启用En写入512竞争委派地址寄存器,即发起代表中的委派写入操作514的动作,如虚线所示。
响应处理器写入512,委派或代理写入引擎514把数据寄存器的内容写入516地址RaceAddr,其中具有适当的字节启用BE。
参照图6A和图6B,示意框图分别说明计算机系统600、例如Hewlett-Packard Company(Palo Alto,California)开发的容错NonStopTM体系结构计算机系统的一个实施例以及单独的处理器片602的两个视图。说明性处理器片602是具有专用存储器和时钟振荡器的N路计算机。处理器片602具有多个微处理器604、输入/输出(I/O)桥接器和存储控制器608、以及存储器子系统606。处理器片602还包括重组逻辑610以及到又称作表决逻辑的逻辑网关616的接口。
计算机系统600包括多个处理器片602,它们可作为冗余松散耦合处理器共同运行。每个处理器片602还包括多个处理器604和存储器606。计算机系统600还包括至少一个逻辑同步单元614,它耦合到处理器片602的至少两个中的多个处理器中的多个处理器604。逻辑同步单元614可从多个处理器604异步接收数据和地址信息,以及通过委派把数据同步写入处理器片602的存储器606中的地址信息指定的地址。
处理器604中的逻辑执行对于逻辑网关616中的委派写入引擎(代表)618的已表决写入操作并发起对存储器606的委派写入操作。
I/O桥接器和存储控制器608用作处理器总线与存储系统之间的接口,并且包括到输入和输出装置的多个接口。I/O桥接器/存储控制器608可配置成支持专有接口、工业标准接口或组合接口。在一个实例中,控制器608支持外设部件互连(PCI)、PCI Express或其它适当的接口。I/O桥接器/存储控制器608可用来与逻辑同步单元(LSU)614接口。对于具有N个逻辑处理器的计算机系统600,使用至少N个表决器,以便使用N个输入/输出链路。如果链路的数量大于I/O桥接器/存储控制器608所支持的数量,则处理器片602可采用中间扇出逻辑来实现到各个表决器块616的独立链路。
在冗余计算机系统600中,片的更换包括重组,借此存储器的状态被复制到新的片。重组逻辑610可把存储器写操作复制到本地存储器,并且可通过存储器复制链路612把操作发送给另一个片。重组逻辑610可配置为接收来自存储器复制链路612或者来自本地存储控制器608的存储器写操作。重组逻辑610可在存储控制器608与存储器606、如双列直插式存储模块(DIMM)之间接口。或者,重组逻辑610可集成到I/O桥接器/存储控制器608中。重组逻辑610用于通过使存储器状态与其它处理器片一致,使新处理器片602联机。
处理器片602可提供内部时钟源,使得多个片没有保持密切同步。不同处理器片中的每个微处理器604可按照独立选取的频率运行。同步操作可在逻辑处理器中用来同步处理器元件。较快的处理器元件等待慢元件,使得逻辑处理器以逻辑处理器中的最慢处理器元件的速度运行。
在一个说明性实例中,计算机系统600采用称作片602的松散锁步多处理器盒,每个为具有微处理器604、高速缓冲存储器606以及到输入/输出线的接口608的组合的全功能计算机。为了数据完整性,比较自多处理器片602的所有输出路径。通过采用继续工作的其它片602继续工作,来透明处理一个片602中的故障。
计算机系统600以“松散锁步”方式运行,其中,冗余微处理器604运行相同的指令流并且间歇地比较结果,不是逐个周期地进行,而是当处理器片602执行输出操作时进行。松散锁步操作防止微处理器604中的错误恢复例程和次要不确定性导致锁步比较错误。该操作还改进多个容错。系统容许许多故障,即使在同一个逻辑处理器中。根据冗余度的可选量,没有两个处理器或结构故障能够停止NonStop应用。
计算机系统600可用于网络应用中。逻辑同步单元614中的输入/输出(I/O)接口620经由网络626实现与一个或多个远程实体、如存储控制器622和通信控制器624的通信。
该系统执行或运行的各种功能、过程、方法和操作可实现为在各种类型的处理器、控制器、中央处理器、微处理器、数字信号处理器、状态机、可编程逻辑阵列等上可运行的程序。程序可存储在任何计算机可读介质中,供任何计算机相关系统或方法使用或与其结合使用。计算机可读介质是电、磁、光或其它物理装置或部件,它们可包含或存储计算机相关系统、方法、过程或程序使用或与其结合使用的计算机程序。程序可包含在计算机可读介质中,供例如基于计算机或处理器的系统或者可从指令存储器或任何适当类型的存储器中取指令的其它系统之类的指令执行系统、装置、组件、元件或设备使用,或者与其结合使用。计算机可读介质可以是能够存储、传递、传播或传送由指令执行系统、设备或装置使用的或与其结合使用的程序的任何结构、装置、组件、产品或其它方式。
说明性框图和流程图说明可表示模块、段或包含用于实现过程中的特定逻辑功能或步骤的一个或多个可执行指令的代码部分的过程步骤或框。虽然具体实例说明特定过程步骤或动作,但是许多备选实现是可行的,并且一般通过简单的设计选择来进行。动作和步骤可根据功能、目的、与标准、遗留结构的一致性等的考虑事项,以不同于本文具体描述的顺序来执行。
参照图7,示意框图说明复合处理器700的一个实施例,它包括三个处理器片704、片A、B和C、以及N个表决块710和输入/输出(I/O)控制器712、例如系统区域网(SAN)接口。表决块的数量N大于或等于复合处理器700中支持的逻辑处理器的数量。处理器片704说明性地为具有内含高速缓存、存储系统、时钟振荡器等的多处理器计算机。每个微处理器能够运行来自不同逻辑处理器的不同的指令流。N个表决块710和N个I/O控制器712彼此成对,并且包含在N个相应的逻辑同步单元(LSU)中。说明性的复合处理器700的每个逻辑处理器具有一至两个逻辑同步块,其中的每个逻辑处理器具有关联的表决块单元710和I/O控制器712。
在操作过程中,处理器片704A、B和C一般配置为以松散锁步进行工作的多个三模块逻辑处理器,其中由表决单元710在数据被写入网络之前比较I/O输出。
表决单元710是操作的逻辑网关,以及数据从未校验逻辑同步块交叉到自校验域。针对自校验域的PIO读取和写入请求由表决单元710校验以便接收。不允许操作相互传递,以及在允许下一个开始之前完成。DMA读取响应数据也按照接收顺序被校验,然后转发给I/O控制器712、如PCI-X接口。PIO请求和DMA读取响应被并行处理而不要求按照顺序,或者在两个流之间被校验。
组成逻辑处理器706的多个、例如三个处理器元件702与至少一个逻辑同步单元(LSU)714和系统区域网(SAN)接口关联。表决逻辑710比较来自三个片704的输出数据,并在数据相等时使数据输出操作能够完成。只有唯一的一个逻辑处理器使用各I/O控制器712。各逻辑处理器具有到SAN的独占专用接口。
逻辑同步单元(LSU)714用作到系统区域网的容错接口中的逻辑处理器706的组成部分,并执行逻辑处理器706的处理器元件702的表决和同步。在一个说明性实现中,各逻辑同步单元仅由单个逻辑处理器706来控制和使用。
表决逻辑710把处理器片704连接到I/O控制器712,并为逻辑处理器提供同步功能性。更具体来说,表决逻辑710比较来自从处理器元件中的每个对逻辑同步单元中的寄存器的并行输入/输出(PIO)读和写的数据。该比较称作表决,并且确保只有正确的命令才发送给逻辑同步单元逻辑。表决逻辑710还从处理器片存储器中读取出站数据,并且在把数据发送给系统区域网(SAN)之前比较结果,从而确保出站SAN业务量仅包含所计算的、或者由逻辑处理器中的所有处理器元件的表决同意的数据。表决逻辑710还复制从系统区域网以及逻辑同步单元的寄存器中读取的并行输入/输出(PIO)数据,并分发给处理器元件702中的每个。表决逻辑710还复制来自系统区域网的入站数据,并分发给处理器元件中的每个。
表决逻辑710维护表明哪些处理器元件702当前是逻辑处理器706的成员的配置寄存器。表决逻辑710确保逻辑处理器706中的所有活动处理器元件702均参与表决。表决错误处理操作可根据逻辑处理器706中的处理器元件702的数量以及操作的类型而改变。例如,在一些条件下,错误操作在所有或大部分元件同意时可完成,或者在大多数或所有元件不同意时可中止。错误恢复动作可包括停止具有错误数据的处理器元件,然后再重组元件。
表决操作对于包括处理器元件702读取和写入表决逻辑710或I/O控制器712中的对称控制寄存器在内的并行输入/输出(PIO)传输来执行,以及还对来自I/O控制器712的直接存储器存取(DMA)读操作执行。无论是源自逻辑处理器的SAN写操作还是入局SAN读操作的所有出站数据均为从I/O控制器712到处理器元件存储器的DMA读取。DMA读取的数据完整性由表决操作来保证。在检测到表决错误时,逻辑网关710停止错误以免传播到系统区域网,并通知在逻辑处理器中运行的软件。软件处理错误。
对于从逻辑同步单元移动到处理器元件存储器的对称数据,例如写入逻辑处理器的入站存储区域网(SAN)业务量或者对称寄存器的PIO读取,逻辑网关710把来自系统区域网接口的数据分发给一个、两个或三个活动处理器元件702。类似地,来自系统区域控制器712的中断被分发给参与逻辑处理器706的所有处理器元件。
逻辑网关710在大致相同的时间把数据转发给处理器元件存储器。但是,处理器元件702没有完全锁步地运行,使得数据相对于特定处理器元件702的程序执行或早或迟地到达存储器。
该说明性系统避免了来自处理器元件的结果的逐个周期的比较,而是执行来自处理器片存储器的各个输出结果的“松散锁步”比较。在逻辑处理器发出输入或输出操作时,来自各处理器片存储器的输出信息被比较。微处理器、高速缓存、芯片组或存储系统中的不可纠正的错误最终导致存储器状态发散,这可在逻辑处理器尝试外部输入或输出操作时被检测。整个处理器、高速缓存、芯片组和存储系统的操作被比较,从而得到极高程度的数据完整性,高于通过对存储器添加纠错码(ECC)或对数据总线添加奇偶校验能够得到的程度。
微处理器结果不是每个周期进行比较,使得在一个微处理器重复高速缓存提取以便从瞬时错误中恢复时不会发生比较错误。两个片达到相同的输出结果,一个稍迟于另一个。类似地,不影响程序运行的次要不确定性行为、例如存储器提取过程中的额外周期插入不会引起发散。
所有处理器片输出信息被校验,以及仅当所有活动处理器片同意输出数据和操作时才会外部传递数据。如果I/O输出操作错误比较,则表决逻辑防止输出信息转到系统区域网,并调用处理器中的错误处理逻辑。如果错误较小且可恢复,则通过允许硬件继续采用所选数据进行,或者通过软件重新执行操作,错误处理代码使操作能够继续进行。对于不可恢复的错误,错误处理器元件被识别,并且对于瞬时错误可被暂停并重新启动。处理器元件采用重组操作来重新启动。对于不认为是瞬时的错误,可调度处理器片以便进行维修。
虽然本公开描述了各种实施例,但这些实施例要理解为说明性的,而不是限制权利要求的范围。对所述实施例的许多变更、修改、增加和改进是可行的。例如,本领域的技术人员易于实现提供本文所公开的结构和方法所需的步骤,并且会理解,过程参数、材料和尺寸仅作为实例给出。参数、材料、组件和尺寸可改变,以便实现预期结构以及修改,它们处于权利要求的范围之内。本文所公开的实施例的变更和修改也可进行,而仍然保持在以下权利要求的范围之内。例如,本文所述的具体实施例标识各种计算体系结构、通信技术和配置、总线连接等。本文所述的各种实施例具有多个方面和组件。在各种实施例和应用中,这些方面和组件可单独实现或结合实现。因此,各权利要求要被分别考虑,并且不包括权利要求用词之外的方面或限制。
Claims (11)
1.一种同步单元(100),具有在包括多片冗余松散耦合处理器(104)和存储器(106)的系统中避免竞争的能力,所述同步单元(100)包括:
委派写入引擎(108),它作为所述处理器(104)的代表执行表决写入操作,相互比较所述处理器(104)中的数据,以有利于大多数所述处理器(104)的形式解决所述处理器(104)之间的写数据中的数据差异,从所述处理器(104)接收数据和存储器地址信息,以及作为所述处理器(104)的代表把所解决的数据写入所寻址的存储器(106)。
2.如权利要求1所述的同步单元(100),其特征在于,还包括:
数据寄存器(210);以及
地址寄存器(212),所述处理器(104)把数据写入所述数据寄存器(210)以及把地址信息写入所述地址寄存器(212),以及所述委派写入引擎(108)在所述寄存器写入完成时,把所述所解决的数据写入所述存储器(106)中指定的地址。
3.如权利要求1所述的同步单元(100),其特征在于,还包括:
执行把写操作委派给所述委派写入引擎(108)的委派写入动作的逻辑,所述委派写入引擎(108)在对于所有处理器片一致的时间把所述委派写入插入直接存储器存取(DMA)流,从而对于多个存储器(106)中每个的所有委派写入的顺序是一致的。
4.如权利要求1所述的同步单元(100),其特征在于,还包括:
竞争委派序列号寄存器;以及
竞争委派数据寄存器。
5.如权利要求4所述的同步单元(100),其特征在于,还包括:
设置竞争委派序列、数据和地址以及监测委派写入完成的逻辑。
6.如权利要求5所述的同步单元(100),其特征在于,还包括:
在所述处理器(104)中可执行的逻辑,维护内部委派写入序列号,并随着各个排队的委派写入操作而递增所述内部委派写入序列号;以及
在所述委派写入引擎中可执行的逻辑,随着每个所执行的委派写入而递增计数,在所定义的地址向主机存储器反映所述计数。
7.如权利要求6所述的同步单元(100),其特征在于:
可排队的委派写入的数量由被维护的所述内部委派写入序列号、所述委派逻辑计数以及委派写入队列的深度来确定。
8.一种计算机系统(600),包括:
至少一个处理器片(602),可作为冗余松散耦合处理器来组合运行并包括存储器(606);以及
逻辑同步单元(614),耦合到所述处理器片(602),所述逻辑同步单元(614)从多个处理器片(602)异步接收数据和地址信息,作为所述处理器片(602)的代表执行表决写入操作,相互比较所述处理器片(602)中的数据,以有利于大多数所述处理器片(602)的形式解决所述处理器片(602)之间的写数据中的数据差异,以及在所述多个处理器片(602)之间同步地把所解决的数据通过委派写入多个处理器片(602)的所述存储器(606)中的地址信息指定的地址。
9.如权利要求8所述的计算机系统(600),其特征在于,还包括:
所述逻辑同步单元(614)中的委派写入引擎(618),它从所述至少一个处理器片(602)接收数据和地址信息,以及把数据写入所述至少一个处理器片(602)中的所述存储器(606)。
10.如权利要求9所述的计算机系统(600),其特征在于,还包括:
所述至少一个处理器片(602)中的逻辑,该逻辑执行对所述委派写入引擎(618)的已表决写入操作,并发起对所述至少一个处理器片(602)中的所述存储器(606)的委派写入操作。
11.如权利要求9所述的计算机系统(600),其特征在于,还包括:
数据寄存器(210);
地址寄存器(212);以及
所述至少一个处理器片(602)中的逻辑,所述逻辑把所述所解决的数据写入所述数据寄存器(210)以及把地址信息写入所述地址寄存器(212),以及所述委派写入引擎(618)在所述寄存器写入完成时,把所述数据写入所述至少一个处理器片(602)中的存储器(606)中指定的地址。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/990151 | 2004-11-16 | ||
US10/990,151 US7890706B2 (en) | 2004-03-30 | 2004-11-16 | Delegated write for race avoidance in a processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1776647A CN1776647A (zh) | 2006-05-24 |
CN100442248C true CN100442248C (zh) | 2008-12-10 |
Family
ID=36766163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101271590A Active CN100442248C (zh) | 2004-11-16 | 2005-11-16 | 用于避免竞争的计算机系统同步单元 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100442248C (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8364862B2 (en) * | 2009-06-11 | 2013-01-29 | Intel Corporation | Delegating a poll operation to another device |
JP5816572B2 (ja) * | 2012-02-23 | 2015-11-18 | 日立オートモティブシステムズ株式会社 | 車両用制御装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002013011A2 (en) * | 2000-08-04 | 2002-02-14 | Marconi Communications, Inc. | Synchronized sampling on a multiprocessor backplane via a broadcast timestamp |
US20020162051A1 (en) * | 2001-04-25 | 2002-10-31 | Joe Bolding | Synchronous breakpoint system and method |
WO2004015572A1 (en) * | 2002-08-07 | 2004-02-19 | Mmagix Technology Limited | Apparatus, method and system for a synchronicity independent, resource delegating, power and instruction optimizing processor |
-
2005
- 2005-11-16 CN CNB2005101271590A patent/CN100442248C/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002013011A2 (en) * | 2000-08-04 | 2002-02-14 | Marconi Communications, Inc. | Synchronized sampling on a multiprocessor backplane via a broadcast timestamp |
US20020042844A1 (en) * | 2000-08-04 | 2002-04-11 | Giovanni Chiazzese | Synchronized sampling on a multiprocessor backplane via a broadcast timestamp |
US20020162051A1 (en) * | 2001-04-25 | 2002-10-31 | Joe Bolding | Synchronous breakpoint system and method |
WO2004015572A1 (en) * | 2002-08-07 | 2004-02-19 | Mmagix Technology Limited | Apparatus, method and system for a synchronicity independent, resource delegating, power and instruction optimizing processor |
Also Published As
Publication number | Publication date |
---|---|
CN1776647A (zh) | 2006-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7890706B2 (en) | Delegated write for race avoidance in a processor | |
US8020041B2 (en) | Method and computer system for making a computer have high availability | |
Bernick et al. | NonStop/spl reg/advanced architecture | |
KR0137406B1 (ko) | 고장 방지 컴퓨터 시스템 | |
CN104040515B (zh) | 在逻辑驱动器模型下呈现直接存取的存储设备 | |
EP0731945B1 (en) | Fault resilient/fault tolerant computing | |
US5968185A (en) | Transparent fault tolerant computer system | |
US7613890B1 (en) | Consistent replication across multiple storage devices | |
US9798792B2 (en) | Replication for on-line hot-standby database | |
EP1760559B1 (en) | Method and apparatus for synchronizing an industrial controller with a redundant controller | |
EP0514075A2 (en) | Fault tolerant processing section with dynamically reconfigurable voting | |
CN101578586A (zh) | 在故障转移和故障回复环境中使用虚拟拷贝 | |
US20090240916A1 (en) | Fault Resilient/Fault Tolerant Computing | |
CN110431533A (zh) | 故障恢复的方法、设备和系统 | |
JP2006178659A (ja) | フォールト・トレラント・コンピュータシステムと、そのための割り込み制御方法 | |
EP3140735A1 (en) | System and method for running application processes | |
CN100442248C (zh) | 用于避免竞争的计算机系统同步单元 | |
CN1755660B (zh) | 冗余处理器中的诊断存储器转储方法 | |
JP4461777B2 (ja) | トランザクション処理システムおよび方法ならびにプログラム | |
CN108874578A (zh) | 用于监管和初始化端口的设备 | |
JP2006171819A (ja) | コンピュータシステム及びそれを用いたフォールトトレラントシステム並びにその動作制御方法 | |
Van Driel et al. | The error-resistant interactively consistent architecture (ERICA) | |
Lehey | Guardian: A Fault-Tolerant Operating System Environment | |
Siewiorek et al. | C. vmp: the analysis, architecture and implementation of a fault tolerant multiprocessor | |
JPH06124242A (ja) | 二重化共有メモリ等価性保証方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170119 Address after: American Texas Patentee after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: American Texas Patentee before: Hewlett Packard Development Co. |