检测以及校正挂起i2c总线的i2c总线监视器和方法

文档序号:6562089阅读:166来源:国知局
专利名称:检测以及校正挂起i2c总线的i2c总线监视器和方法
技术领域
本发明涉及数字系统可靠性和健康监视的领域。更具体地,本发明涉及清除挂起总线和复位I2C总线上从设备。
背景技术
许多不同类型的计算系统在全世界已获得了广泛应用。这些计算系统包括个人计算机、服务器、大型机以及多种独立和嵌入式的计算设备。散乱的客户-服务器系统连同应用程序和信息遍布存在于许多个人计算机网络、大型机和小型机中。在由网络连接的分布式系统中,用户可访问许多应用程序、数据库、网络系统、操作系统和大型机应用程序。计算机为个人和企业提供了包括字处理、电子表格和会计在内的大量软件应用。进一步地,网络使不同地点的人们之间通过电子邮件、网站、即时消息以及网络会议能够高速通信。
网络中的每个计算机和服务器的核心是能执行计算机指令的微处理器。在适合于执行特定指令的执行单元执行这些指令。在超标量体系结构中,这些执行单元通常包括加载/存储单元、整数运算/逻辑单元、浮点运算/逻辑单元以及并行运行的图形逻辑单元。在处理器体系结构中,操作系统控制处理器与处理器外围部件的操作。可执行应用程序被存储在计算机的硬盘驱动器中。计算机的处理器使应用程序运行以响应用户输入。
当今,无数人经由连接到因特网的计算机通信和交换信息。通过因特网,网站使用户能够访问由其他用户、机构、制造公司、服务供应商、新闻媒介等投放的网页。诸如那些由Yahoo和Google提供的搜索引擎使用户通过利用关键字能够搜索出涵盖任何主题的信息。因特网服务供应商(ISP)提供了成百上千的服务器使数不清的用户能够经由网络通信。这些服务器被互连并且显示出冗余,使得如果一个服务器出故障,一个或多个其它的被分配来代替它。因此,大量服务器处于运行中并且必须被维护。
无疑地,为监视和维护数以百计的服务器的系统,必须提供服务器内的电子系统来提供服务器电子基础结构的监视与控制(个人服务的供电质量、温度、错误处理、控制LED等)。这通过控制以及监视诸如发光二极管(LED)、温度传感器以及风扇的设备来实现。其他此类设备可包括存储器、电源调节器以及输入/输出(I/O)槽。连接这些设备的常用并且节约成本的方法是通过集成电路间(I2C)总线。I2C总线提供了与其所连接的不同电子设备接口的简单且成本低廉的方法。I2C总线包括两个有源线。有源线为双向串行数据线Sda以及双向串行时钟线。连接到I2C总线的每个设备都具有唯一地址并且可作为接收方和/或发送方。许多设备可被连接到单一I2C总线。为了与总线上的设备通信,总线主设备通常发送跟随有数据方向位的开始(或重复开始)条件,7位从设备地址。作为响应,其地址被驱动到总线上的设备发送接收方确认位。在接收方确认位之后,主设备(在写情况下)或从设备(在读情况下)发送一个或多个数据字节传送,每个都跟随有接收方确认位。然后利用停止条件终止通信。
服务器中通常有许多I2C设备。电气布线考虑、I2C中断等待问题以及I2C总线性能问题导致服务器将其所有I2C设备遍布于若干分立I2C总线上。在服务器内提供了连接到所有这些I2C总线的底板管理控制器(BMC)以执行系统监视以及维护功能。例如,BMC将从温度传感器读取温度值。如果温度超过预定值,BMC可使风扇接通或转得更快来将更多的热量从服务器的内部部件移去。作为另一个例子,BMC可检测到错误的调节器电压并且作为响应,点亮LED以指示该情况。BMC也可检测到存储器中或I/O适配器中的错误。I2C设备可以是主设备或从设备。当设备有提供给BMC的新信息时,一些从设备可发送中断信号到BMC。没有提供中断的从设备具有寄存器,其可由BMC查询以确定其是否有要提供的新信息。例如,BMC可查询电源调节器以确定调节器给系统提供多少功率。
因此,I2C系统通常提供环境控制、健康监视、错误检测、电源管理以及系统重要产品数据获取。I2C技术规范说明了多总线主设备和从设备如何能够被连接到相同I2C总线以及如何以可靠方式互操作。然而,实际经验表明I2C总线存在多种挂起条件。这些挂起最典型地起因于I2C总线与I2C多路复用器设备的交换出现的各种问题,以及I2C设备进入导致其未能完成I2C处理的坏逻辑状态并且因此将I2C总线挂起在不能继续进一步的总线操作的状态。当总线挂起发生时,总线必须被清除。目前,这要求连接于BMC的所有I2C总线上的所有I2C设备的复位以及BMC本身的复位。需要一种更好的方法来处理I2C总线挂起情况。

发明内容
如此处所揭示的,上面所认识到的问题大部分由用于监视和复位I2C总线设备的系统、方法以及介质来解决。一个实施例是I2C总线监视器,包括监视I2C总线的线路的状态的电路。监视器还包括有选择地复位连接到I2C总线的各个从设备以及复位连接到I2C总线的总线主设备的电路。定时装置确定最大事务期间。附加电路确定在最大事务期间是否已发生挂起总线条件。如果在整个最大事务期间挂起总线条件发生,则I2C总线保持稳定状态并且I2C总线的数据线和时钟线二者不都等于一。如果在I2C开始条件发生之后I2C重新启动或在整个最大事务期间I2C停止不发生,则挂起总线条件也发生。监视器可进一步包括从底板管理控制器接收信号以使监视器的软件控制能有选择地复位从设备和总线主设备的电路。
实施例包括具有I2C总线系统的服务器,包括监视I2C总线的数据线和时钟线并且检测总线是否被挂起的总线监视器。监视器单独复位连接到I2C总线的从设备。服务器进一步地包括监视与控制从设备并且指示总线监视器有选择地复位连接到I2C总线的各个从设备的底板管理控制器。总线监视器可进一步地包括提供一个数以对最大事务期间进行计时的超时寄存器。如果在整个最大事务期间,I2C总线保持稳定状态并且I2C总线的数据线和时钟线二者不都等于一,则监视器检测到挂起总线。或者如果在I2C开始条件发生之后I2C重新启动或在整个最大事务期间I2C停止不发生,则监视器也可检测到挂起总线。监视器可进一步包括复位寄存器,其每个位连接到与不同从设备或主设备相连的线路,以便有选择地复位从设备或主设备。
实施例进一步地包括用于检测并且校正挂起I2C总线的方法和系统,包括监视I2C总线的线路的状态。系统对总线上分组事务进行计时并且确定最大事务时间是否已过去。如果挂起总线条件在最大事务时间的最后成立,则表明挂起总线。系统确定I2C总线的哪些从设备以及I2C总线的哪些主设备复位,以便校正挂起总线条件。然后系统复位如此确定的从设备和总线主设备。方法可进一步包括从底板管理控制器接收信号以使处理的软件控制能有选择地复位从设备和总线主设备。


通过阅读下面的详细描述并且通过参考附图,其中类似参考可指示类似单元,本发明的优点将变得显而易见。
图1描述了网络内服务器的实施例;服务器内是底板管理控制器、I2C监视器、I2C主设备和从设备。
图1A描述了执行I2C功能并且向远程操作者报告的多个服务器的实施例的方框图。
图2A描述了与I2C总线通信的死锁监视器。
图2B描述了底板管理控制器以及与I2C总线通信的监视器。
图2描述了可被配置成执行底板管理控制功能的处理器的实施例。
图3描述了用来执行I2C总线监视和复位的实施例的流程图。
具体实施例方式
下面是附图中所描述的本发明的示例实施例的详细描述。示例实施例是如此详细以便清楚地传达本发明。然而,所提供的详细度不意欲限制实施例的预期变化;相反,目的却是涵盖属于如所附权利要求所定义的本发明的精神和范围的所有修改、等效方式以及可选方法。以下详细描述被设计成使此类实施例对于本领域普通技术人员来说显而易见。
揭示了用于清除挂起I2C总线的系统、方法以及介质。在一个实施例中,监视器监视I2C总线数据和时钟线,并检测挂起总线是否发生。监视器对总线上分组事务进行计时以确定当线路处于挂起状态时最大事务时间是否已过去。监视器允许各个从设备和总线主设备的选择性复位以清除挂起总线。
参考服务器以及服务器的系统来讨论本发明。然而,本发明不限于此。本发明可在采用I2C的任何数量不同系统中的I2C系统中实现。那么,举例来说,图1示出了根据本发明的一个实施例所实现的具有I2C部件的服务器116。服务器116具有根据BIOS(基本输入/输出系统)代码104和操作系统(OS)代码106运行的处理器100。BIOS和OS代码被存储在存储器108中。BIOS代码通常被存储在只读存储器(ROM)上而OS代码通常被存储在系统116的硬盘驱动器上。服务器116还包括底板管理控制器2500、I2C监视器2010、总线主设备2002和I2C从设备2004。
服务器116包括物理上位置接近于处理器100和底板管理控制器(BMC)2500的2级(L2)高速缓冲存储器102。存储器108存储程序以便由处理器100执行,并且进一步地存储底板管理控制程序以便由BMC 2500执行。因此,在实施例中,如此处将被描述的,存储器108存储计算机代码以执行底板管理控制功能。处理器100包括芯片内一级(L1)高速缓冲存储器190、取指装置130、控制电路160以及执行单元150。1级高速缓冲存储器190接收并且存储接近执行的时间的指令。在处理器100中,取指装置从存储器取指令。执行单元150执行由指令所要求的操作。执行单元150包括用于执行由取指装置130所取的指令的执行中的步骤的级段。控制电路160控制取指装置130和执行单元150。控制电路160还从执行单元150接收与控制决策有关的信息。
服务器116通常还包括未示出的其他部件和子系统,例如可信平台模块、存储器控制器、随机存取存储器(RAM)、外围驱动器、系统监视器、键盘、彩色视频监视器、一个或多个软盘驱动器、一个或多个诸如固定硬盘驱动器的可移动非易失性介质驱动器、CD和DVD驱动器、诸如鼠标的指示设备以及网络接口适配器等。服务器116可连接个人计算机、工作站、服务器、大型计算机、笔记本或便携式计算机、台式计算机等。因此,通过输入/输出设备110,处理器100也可与其他服务器以及计算机114通信。因此,服务器116可以在诸如因特网和/或本地内部网的计算机网络中。进一步地,服务器116可访问数据库112以及包括磁带驱动器存储、硬盘阵列、RAM、ROM等的其他存储器。
在服务器116的一个运行方式中,L2高速缓冲存储器102从存储器108接收预计在处理器100的处理器流水线中将被处理的数据和指令。L2高速缓冲存储器102是物理上位置接近处理器100以便达到更快速度的快速存储器。L2高速缓冲存储器从存储器108接收多个指令线程的指令。L1高速缓冲存储器190位于处理器中并且包含优选地接收自L2高速缓冲存储器102的数据和指令。理论上,随着程序指令将被执行的时间的接近,指令随其数据(如果有)被传递,首先到L2高速缓冲存储器,然后随着执行时间接近急迫,到L1高速缓冲存储器。执行单元150执行接收自L1高速缓冲存储器190的指令。执行单元150可包括加载/存储单元、整数运算/逻辑单元、浮点运算/逻辑单元以及图形逻辑单元。每个单元可适合于执行特定的指令组。指令可被提交给不同的执行单元以便并行执行。由执行单元150处理的数据可储存在整数寄存器堆和浮点寄存器堆(未示出)中以及可从整数寄存器堆和浮点寄存器堆(未示出)访问。存储在这些寄存器堆中的数据也可来自或被传送到板上L1高速缓冲存储器190或外部高速缓冲存储器或存储器。
服务器116还包括底板管理控制器2500以及I2C监视器2010、总线主设备2002和I2C从设备2004。底板管理控制器(BMC)2500为独立于处理器100运行的处理器。BMC 2500控制I2C从设备2004和总线主设备2002并与之通信。从设备包括诸如发光二极管(LED)、温度传感器和风扇的部件。其他从设备可包括存储器、电源调节器以及输入/输出(I/O)槽。每个总线主设备和从设备具有其自己的唯一地址。多个主设备可被接线到相同I2C总线。I2C标准为其提供了手段以便仲裁总线控制。检测到其已失去总线仲裁的主设备没有更进一步驱动总线就立即终止其处理,并且在再次尝试其事务之前等待总线成为空闲。
BMC 2500将执行各种功能。例如,BMC 2500将从温度传感器读取温度值。如果温度超过预定值,BMC 2500可使风扇接通或转得更快来将更多的热量从服务器的内部部件移去。作为另一个例子,BMC2500可检测到错误的调节器电压并且作为响应,点亮LED以指示该情况。BMC 2500也可检测到例如存储器中或I/O槽中的错误。当此类从设备中发生错误时,一些从设备可发送中断信号到BMC 2500。同样地,BMC 2500可查询多个从设备的每一个的内部寄存器以确定什么错误(如果有)存在。例如,BMC 2500可查询电源调节器以确定电源调节器是否输出不适当的电压。
I2C监视器2010是多个监视器,每个监视不同的I2C总线。在一个实施例中,服务器可具有多至10个不同的I2C总线,每个具有其自己的监视器、主设备和从设备。因此,多个I2C总线的每个被连接到一个或多个总线主设备2002和从设备2004。所有I2C设备可分类为主设备或从设备。主设备是发起消息的设备。从设备是响应由主设备发起的消息的设备。因此,从设备可包括由总线主设备寻址并写入的多个设备。
在系统操作的过程中,I2C总线可变为挂起。当在总线主设备和从设备之间传送数据的过程中应该发生的事件未能发生时,或当不应该发生的事件发生了时,挂起总线产生。例如,因为从设备未能将停止符传递给总线主设备,总线可被挂起。每个监视器2010可检测其总线是否是挂起总线。监视器2010允许在挂起总线被声明时某个时间量得知。该时间量可由BMC中的编程来指定。因此,监视器2010监视其被连接到的I2C总线的线路以确定总线是否被挂起。响应于挂起总线的检测,监视器2010可发出复位信号到一个或多个具体从设备的每个并且还可发出复位信号到一个或多个总线主设备的每个。
图1A示出了可由远程操作者1000监视的服务器116的网络。远程操作者1000通过以太网交换机1010被连接到各种服务器116上。服务器116通过总线1020被连接到计算机网络以及彼此相连。如此处将被说明的,通过I2C系统,远程操作者1000可监视服务器116的系统的健康并且可发出命令到服务器。I2C系统从温度传感器接收信息并发送通/断信号到发光二极管(LED)。同样地,I2C系统监视服务器内各种从设备的状态位。这些状态位指示相应的从设备的状态。例如,系统可监视多个电源调节器以确定电源调节器是否有故障。例如,如果服务器的电源调节器有故障,则系统可将有故障的服务器的通信转移到具有可使用的电源供给的另一个服务器。因此系统提供了电源管理和系统健康监视。
因此,每个服务器包括底板管理控制器(BMC)2500,至少一个监视器2010以监视其被连接到的I2C总线以及连接到I2C总线的至少一个其他从设备2004。远程操作者1000可因此监视服务器116的整个系统的各种设备的状态。为此,远程操作者1000通常可包括具有处理器、视频监视器、键盘和鼠标的计算机。这使人们能够通过观察和改变系统状态来与系统相互作用。远程操作者1000可使以太网交换机1010选择连接到以太网交换机1010的多个服务器的任何一个。每个服务器可被依次选择以获悉服务器116的整个系统的状态。除监视设备的状态之外,例如,远程操作者1010可启动服务器的开机序列或关机序列。
图2A示出了诸如服务器116的服务器内的I2C系统2000。I2C系统2000包括多个I2C总线主设备2002。每个总线主设备被连接到两个结构线数据线Sda和时钟线Scl。这些线被连接到多个I2C从设备2004,包括将多个I2C从设备2008连接到总线的I2C多路复用器2006。因此,数据可被设置到总线上并且提供时钟线以驱送数据到从设备中或从从设备驱出。在总线主设备写数据到从设备的写周期中,总线主设备将设置地址到数据线Sda上。每个所连接的从设备将接收该地址。当从设备收到地址时,其确定所接收的地址是否匹配其自己的内部地址。如果是,从设备必须声明地址确认信号到总线主设备。然后总线主设备可利用SDA和SCL线路写数据到从设备。对于其成功收到的数据的每个字节,从设备声明确认信号到总线主设备。当总线主设备已发送了所有预定的数据时,总线主设备利用停止信号释放总线的控制。在总线主设备从从设备读取数据的读周期中,总线主设备将利用SDA和SCL线路声明地址。每个所连接的从设备将接收该地址。当从设备收到地址时,其确定所接收的地址是否匹配其自己的内部地址。如果是,针对主设备在SCL线路上声明的每个时钟脉冲,从设备必须声明地址确认信号,并在SDA线路上提供数据位或确认位。在主设备已结束读取其所期望的所有数据之后,主设备声明将I2C总线返回空闲状态的停止符。
总线可由于若干原因变为“锁定”、“卡住”或“挂起”。一个例子是其中总线上电气条件(例如电路板缺少I2C上拉电阻)或总线上设备将总线保持在使I2C停止信号不被发送或不可被发送的状态。另一个例子是I2C从设备通过保持SCL线路的状态试图降低事务的速度,但最终没消除使其减速的情况并使总线永久地卡住。作为另一个例子,设备可在保持Sda或Scl为零的坏状态中,因此阻止总线进入空闲状态,因此更多的处理可开始。因此,死锁监视器2010监视线路Sda和Scl以确定总线是否处于挂起状态。利用可编程逻辑设备(PLD)可简单地实现死锁监视器2010。如果监视器2010判定I2C总线被挂起,其可发出复位信号Srst来复位从设备2004、2006、2008或总线主设备2002、2003或两者。
图2A示出了标记为Srst1到Srst8的这些复位线。因此,响应于线路Sda和Scl上的某些信号,死锁监视器2010可复位具体的设备或设备集并且清除总线。通过重新初始化其内部寄存器来复位I2C从设备。只有作为问题的来源的从设备需要被复位。包括没有挂起总线的所有从设备的完全复位通常是不必要的。同时注意到,监视器可从服务器的BIOS接收低引脚数(LPC)连接以使BIOS可清除总线,如果其怀疑其已失去与系统管理功能的通信的话。因此,监视器可在服务器的BIOS控制下运行和/或可在底板管理控制器的控制下运行。
总线主设备2003和2004也从监视器接收携带信号的单个共享总线主设备再同步线(此处称作BRST信号)。BRST信号将重新启动所给的I2C总线上的所有总线主设备。注意到这与服务器中所有系统管理功能的完全复位不相同。更确切些,总线主设备实施者可选择在BRST信号发生之后重试硬件中排队的操作。因此,BRST信号将总线主设备带到如总线挂起之前可继续其功能的执行的初始状态。
注意到监视器2010以及多路复用器2006在主I2C径向(radial)上。这样,仅利用一个死锁监视器就可消除所有副径向(sub-radial)上的潜在挂起。如果副径向被挂起,则复位多路复用器2006将通过其SRST线路断开有问题的径向并允许主径向重新开始正常操作。如以下所讨论的,由底板管理控制器所执行的软件应该避免重新连接复位后继续挂起的I2C总线的副径向。
图2B示出了底板管理控制器(BMC)2500,其为执行指令以完成电源管理和健康监视功能的处理器。BMC 2500与监视器2010接口。BMC和监视器两者都被连接到总线。监视器2010监视线路Sda和Scl并且可发送复位信号给如上所述的从设备和总线主设备。当总线被挂起时,监视器2010通知BMC 2500。BMC 2500与监视器2010通信以确定哪个I2C总线被挂起。利用监视器2010,BMC软件知道系统I2C拓扑结构并且因此能确定其希望进行什么复位。因此,BMC 2500可维护状态寄存器以接收并存储从设备的状态以及总线是否被挂起的指示。BMC 2500执行控制功能2520以指示监视器复位从设备或再启动总线主设备。BMC 2500还完成控制连接到总线的各种从设备的功能。这些功能包括改变LED的开/关状态、读温度传感器以及控制更复杂的从设备的状态。
监视器2010包括三个寄存器控制寄存器2020、目标复位寄存器2040以及监视超时寄存器2060。控制寄存器2020具有可被分别设置的8个位。控制寄存器2020具有启用监视位7,当该位被设置时启用监视而当该位不被设置时禁止监视。BMC将根据系统健康的控制和监视程序设置该位。通常将启用监视器。控制寄存器2020还具有总线主设备复位位6。该位通常被取消,并且当声明时反转。即,当BMC在监视器中置位该位时,其将被作为脉冲传递给I2C总线上的总线主设备。脉冲具有相对短的时延,长度刚好够确保总线主设备的复位。控制寄存器2020的保持位可被用于其他功能或可未被使用。
目标复位寄存器2040包括各个位,每位相应于不同从设备。当BMC 2500置位目标复位寄存器2040的位时,相应于该位的从设备被复位。该寄存器的长度将由系统设计员期望针对被监视I2C总线进行的分立I2C复位的数量决定。例如,8位寄存器可拥有相应于8个不同从设备的位,包括多路复用器在内,如果期望每个设备单独复位的话。因此,目标复位寄存器2040的位通常是未声明的。监视器2010将总线的状态传递给BMC 2500。BMC 2500根据其对受影响的总线上的各种I2C设备的知识确定采取什么行动,如果有的话。这可包括将从设备的状态复位到巳知的初始状态。从该初始状态,BMC 2500可将从设备带到任何其他所期望的状态。
监视器超时寄存器2060包括等于超时单元的数目的二进制值以允许总线在其通知BMC 2500前保持挂起。超时单元的值在监视器硬件中被设置。例如,超时单元可被设置为4毫秒,并且在挂起总线将被声明之前等于超时单元数目的二进制值可被设置成等于十进制128。这导致512毫秒的延迟,期间总线可变成挂起。在512毫秒的结尾,如果总线被挂起,BMC 2500将被告知并且通常其将通过声明从设备的SRST线路以及声明BRST线路来复位受影响的从设备和总线主设备。在超时周期的结尾,如果下面两个条件的任何一个成立,监视器将确定总线挂起1)对于整个超时周期,I2C总线保持于稳定状态,但不是Sda=1并且Scl=1;或2)超时周期内,I2C起始条件发生,并且I2C重新启动或I2C停止没有发生。
监视器2010包括计数器2070,在有效停止符或总线重新启动发生之后每当I2C总线回到空闲状态(sda=1以及scl=1)时,其就被复位。如果BMC 2500使得监视器2010执行I2C复位,则监视器复位计数器2070。
图2示出了处理器200的实施例,如此处所描述的,其可在诸如服务器116的服务器中被实现来执行底板管理控制软件。图2的处理器200被配置成执行底板管理控制指令以提供针对BMC 2500所描述的功能。在一个实施例中,处理器200为相对简单的可编程8位处理器或微控制器。1级指令高速缓冲存储器210从处理器外部的存储器216,例如2级高速缓冲存储器接收底板管理控制指令。因此,底板管理控制软件作为应用程序可被存储在存储器108中。BMC软件的顺序指令组可被传送到L2高速缓冲存储器,而这些指令的子组可被传送到L1高速缓冲存储器210。
取指装置212维护程序计数器并且从L1指令高速缓冲存储器210取底板管理控制指令。取指装置212的程序计数器包括将被执行的下一个指令的地址。取指装置212也可完成预取操作。因此,取指装置212与存储器控制器214通信以发起从存储器216到指令高速缓冲存储器210的底板管理控制指令的传送。高速缓冲存储器中从系统存储器216传送指令所到的位置通过从系统存储器地址中获得的索引来确定。
从系统存储器216传送指令序列到指令高速缓冲存储器210以实现底板管理控制功能。例如,指令序列可指示处理器200从监视器将有关总线是否被挂起的指示器的值装到处理器寄存器中。指令进一步指示处理器200发送信号给监视器2010的寄存器。因此,在一个例子中,处理器200将发送启用信号给监视的控制寄存器来启用总线条件的检测。如果监视器向处理器指示总线被挂起,则处理器200可使得监视器发送SRST信号来复位从设备以及BRST信号来复位总线主设备。软件还指示处理器200读温度监测器以及其他从设备的状态。例如,软件可进一步指示处理器200发送信号来点亮LED,或设置从设备为不同状态,或改变风扇的速度。
取指装置212取得传递到指令高速缓冲存储器210的底板管理控制指令并将其传递给指令译码器220。指令译码器220接收并解码由取指装置212取的指令。指令缓冲器230从指令译码器220接收已解码的指令。指令缓冲器230包括多个指令的存储器位置。指令缓冲器230可重排接收自指令译码器220的指令的执行顺序。指令缓冲器230因此包括指令队列来提供指令被发送给分配单元240的顺序。
分配单元240发送接收自指令缓冲器230的底板管理控制指令到执行单元250。执行单元250可包括加载/存储单元、整数运算/逻辑单元、浮点运算/逻辑单元以及图形逻辑单元,全部并行操作。分配单元240因此将指令发送给一些或所有执行单元来同时执行指令。执行单元250包括执行从分配单元240所接收的指令的步骤的级段。由执行单元250处理的数据可储存在未示出的整数寄存器堆和浮点寄存器堆中并可从其访问。因此,指令被顺序地并且并行地执行。
图2示出了具有多个执行单元的处理器的第一执行单元(XU1)270和第二执行单元(XU2)280。每个执行单元250的每个级段能够执行不同底板管理控制指令的执行中的步骤。在处理器200的每个周期中,指令的执行通过执行单元250内的处理器流水线进行到下一个级段。本领域技术人员将认识到,处理器”流水线″的级段可包括其他级段以及图2中未示出的电路。此外,通过多线程处理,多个底板管理控制处理可同时运行。例如,通过执行不同线程的指令,处理器可从死锁监视器装载并估算总线挂起指示器,同时完成其他I2C功能,例如递增总线被挂起的次数。因此,多个指令可被顺序并且并行地执行以完成底板管理控制功能。
图2还示出了完成控制处理器200的操作的各种功能的控制电路260。例如,控制电路260内的操作控制器解释包含于指令中的OPCode并且引导合适的执行单元执行所指示的操作。此外,控制电路260可包括分支重定向单元,其当分支被确定为已被错误预测时重定向取指装置212。控制电路260可进一步地包括刷新控制器来刷新比错误预测的分支指令更新的指令。分支指令可起因于执行多个底板管理控制功能的任何一个。例如,确定是否声明挂起总线涉及分支指令。如果声明挂起总线,则执行指令序列来清除总线。如果没有声明挂起总线,则操作正常继续。因此通过控制电路260提供了执行这些以及其他分支指令的控制逻辑。
图3示出了用于监视并清除总线挂起的实施例的流程图300。在正常操作中,I2C总线的总线监视器将监视I2C总线的Sda和Scl线(单元302)。例如,监视器可检测何时总线保持稳定状态而不是Sda=1以及Scl=1。例如,监视器将检测线是否满足条件Sda=0以及Scl=0。监视器也可以检测到何时I2C起始条件发生以及I2C重新启动或I2C停止没发生。监视总线的同时,系统对总线主设备和从设备之间的分组事务进行计时(单元306)。指定的时间单元被存储在监视器的硬件中而用户指定的数被存储在监视器超时寄存器中。最大事务期间为指定时间单元乘以超时寄存器中的数。当事务开始时,监视器开始对事务计时并且当监视器继续监视总线时,将持续地事务计时,直到超过最大事务期间。
直到超过最大事务期间(单元308),监视器继续监视上面的条件1或2。如果超过最大事务期间(单元308),监视器确定条件1是否成立(单元310)。即对于整个最大事务期间,I2C总线保持稳定状态(而不是Sda=1,Scl=1)。如果条件1成立(单元310),底板管理控制器根据需要将通过复位从设备(单元314)和总线主设备(单元316)来尝试清除总线。如果条件1不成立(单元310),则监视器判断条件2是否成立(单元312)。即,在最大事务期间内在没有I2C重新启动或I2C停止的情况下发生I2C起始条件。如果条件2成立(单元310),底板管理控制器根据需要将通过复位从设备(单元314)和总线主设备(单元316)来尝试清除总线。最大事务期间内发生的任何成功I2C总线事务将使得在停止信号之后I2C总线回到空闲状态(sda=1以及scl=1)。I2C总线空闲状态期间监视器停止并且当下一个I2C总线处理开始时再开始。
虽然本发明以及其一些优点已针对一些实施例做了详细描述,然而应该理解,在没有背离如所附权利要求所定义的本发明的精神和范围的情况下,此处可产生各种变化、替换以及变更。虽然本发明的实施例可达到多个目的,然而不是属于所附权利要求范围内的每个实施例都将达到每个目的。此外,本应用的范围不意欲受限于说明书中所描述的处理、机器、厂商、事情的构成、手段、方法以及步骤的具体实施例。因为本领域一名普通技术人员从本发明的揭示、处理、机器、厂商、事件的构成、手段、方法或步骤将容易地理解,根据本发明,可利用与此处所描述的相应实施例基本上完成相同功能或基本上达到相同结果的当前存在的或稍后将被开发的方式。因此,在其范围内所附权利要求意图包括此类处理、机器、厂商、构成的事件、手段、方法,或步骤。
权利要求
1.一种集成电路间(I2C)总线监视器,包括监视I2C总线的线路的状态的电路;有选择地复位连接到I2C总线的各个从设备以及复位连接到I2C总线的总线主设备的电路;用于确定最大事务期间的定时装置;以及确定在最大事务期间内挂起总线条件是否已发生的电路。
2.根据权利要求1的监视器,其中如果在整个最大事务期间内挂起总线条件发生,则I2C总线保持稳定状态并且I2C总线的数据线和时钟线二者不都等于一。
3.根据权利要求1的监视器,其中如果在I2C开始条件发生之后I2C重新启动或在整个最大事务期间内I2C停止不发生,则挂起总线条件发生。
4.根据权利要求1的监视器,进一步包括从底板管理控制器接收信号以使监视器的软件控制能有选择地复位从设备和总线主设备的电路。
5.根据权利要求4监视器,进一步地包括将总线的状态从监视器传递到底板管理控制器的电路。
6.根据权利要求1的监视器,进一步地包括来自包括该监视器的服务器的基本输入输出系统(BIOS)的监视器的低引脚数(LPC)输入。
7.根据权利要求1的监视器,进一步包括复位寄存器,其每个位连接到与不同从设备或主设备相连的线路,以有选择地复位从设备或主设备。
8.根据权利要求1的监视器,进一步地包括包含基本时间单元的数目的超时寄存器,以对最大事务期间计时。
9.一种用于检测并校正挂起集成电路间(I2C)总线的方法,包括监视I2C总线的线路的状态;对总线上分组事务计时并确定最大事务时间是否已过去;如果在最大事务时间的结束时挂起总线条件成立,则声明挂起总线;确定I2C总线的多个从设备的哪个从设备要复位以便校正挂起总线条件;以及复位所确定的从设备。
10.根据权利要求9的方法,其中如果在整个最大事务期间内挂起总线条件发生,则I2C总线保持稳定状态并且I2C总线的数据线和时钟线二者不都等于一。
11.根据权利要求9的方法,其中如果在I2C开始条件发生之后I2C重新启动或在整个最大事务期间内I2C停止不发生,则挂起总线条件发生。
12.根据权利要求9的方法,进一步包括从底板管理控制器接收信号以使处理的软件控制能有选择地复位从设备。
13.根据权利要求9的方法,进一步包括复位寄存器,其每个位连接到与不同从设备或主设备相连的线路,以有选择地复位从设备或主设备。
14.根据权利要求9的方法,进一步地包括包含基本时间单元的数目的超时寄存器,以对最大事务期间计时。
15.一种具有集成电路间(I2C)总线系统的服务器,包括总线监视器,用于监视I2C总线的数据线和时钟线并且检测总线是否被挂起,以及分别复位连接到I2C总线的从设备;以及底板管理控制器,用于监视与控制从设备并且指示总线监视器有选择地复位连接到I2C总线的各个从设备。
16.根据权利要求15的服务器,其中总线监视器包括超时寄存器,其提供一个数以对最大事务期间计时。
17.根据权利要求16的服务器,其中如果在整个最大事务期间内I2C总线保持稳定状态并且I2C总线的数据线和时钟线二者不都等于一,则检测到挂起总线。
18.根据权利要求16的系统,其中如果在I2C开始条件发生之后I2C重新启动或在整个最大事务期间内I2C停止不发生,则检测到挂起总线。
19.根据权利要求15的服务器,进一步地包括超时监视器,用于确定挂起总线条件是否存在。
20.根据权利要求15的服务器,进一步包括复位寄存器,其每个位连接到与不同从设备或主设备相连的线路,以有选择地复位从设备或主设备。
全文摘要
揭示了用于清除挂起I2C总线的系统、方法以及介质。在一个实施例中,监视器监视I2C总线数据和时钟线并检测挂起总线是否发生。监视器对总线上分组事务计时以确定当线路处于挂起状态时最大事务时间是否已过去了。监视器允许各个从设备和总线主设备的选择性复位来清除挂起总线。
文档编号G06F11/34GK1991783SQ20061013731
公开日2007年7月4日 申请日期2006年10月17日 优先权日2005年12月29日
发明者帕特里克·D.·布拉迪, 文赫·B.·卢, 李·H.·威尔森, 丹尼尔·E.·哈利曼, 科比·L.·沃特森 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1