用于tod-时钟导引的系统和方法

文档序号:7963482阅读:543来源:国知局
专利名称:用于tod-时钟导引的系统和方法
技术领域
本发明主要涉及计算机系统中的时序信号,特别涉及用于调整计算机系统中的白天时间(TOD)时钟以求增强时序精度的系统和方法。
背景技术
为了提供计算机系统中的系统完整性和数据恢复,主机服务器设备使用了通用时间戳的概念,比如可从受让人国际商业机器公司获得的zSerieseServer。每当更新数据库记录时,也创建恢复记录。该恢复记录包括在数据库记录被锁定时而获得的时间戳。只要使用时间戳依次对来自用于所有线程的所有恢复记录数据集的恢复记录进行分类,恢复记录中的剩余信息就足以恢复数据库记录。这要求系统联合体(sysplex)中的所有TOD时钟必须具有相同时间。
以往,时序网络中的TOD时钟的同步是借助了外部时钟盒,9037系统联合体定时器。9037时序网络中的每个中央处理联合体(CPC)将它的TOD时钟步进到来自9037的信号。由9037广播的步进信号要求从9037到每个CPC的专用点对点链路(称为外部时间基准(ETR)链路)。步进信号在ETR链路上的准确传送在逻辑和物理信号层要求不同于任何其他通信协议的专用协议。为了同步在逻辑上分隔的机器逻辑分区而实施ETR偏移值的代表性系统在共有的美国专利第6,209,106中有所描述。
当前的时钟同步解决方案解决了以略有不同的速率来进行步进的时钟(通常分开相当大的距离)的同步(每个时钟具有本地振荡器)。用于时钟同步的这些解决方案要求两部分动作1)检测时钟之间的差异(或误差);以及2)根据该误差对振荡器频率或步进速率进行调整。
对于实施不包括步进信号的时序解决方案的系统,即时序信息是借助于具有时间戳和其他时序信息的消息来传送的,每个CPC必须通过计算偏移和采取动作调整TOD时钟来将它的TOD时钟保持为与其余的其他CPC的TOD时钟步调一致。这类似于由NTP(网络时序协议)执行的动作,其差异在于NTP通常是在时间戳能够由控制程序来生成的软件层中实施。然而,eServer zSeries体系结构对于TOD时钟具有很严格的要求;它能够被任何问题程序查看,所有时间戳必须不同,时间戳必须决不表现为向后步进,而且时间戳必须表现为增加,即使当被在CPC中的不同CPU上运行的程序查看时。为了对新的时序解决方案所要求的TOD时钟进行调整,TOD时钟的步进速率必须通过很精细的调整来加速或减缓,而且这些调整必须同时被CPC中的所有CPU观测。这一点是关键的,因为如下事实到达TOD时钟最右比特的步进脉冲之间的时间可以与CPU之间的高速缓存到高速缓存的传送时间相比。因此,通过可能的最小值来改变正如一个CPU所查看的TOD可能造成TOD时钟不再满足对于正如CPC中的其它CPU所查看的TOD时钟的体系结构要求。
替选解决方案是调整对TOD步进脉冲进行驱动的物理振荡器的速率。然而,对此有若干问题1)此解决方案不能翻新到较旧的机器;2)没有技术可用来提供所要求的准确度(例如优于每百万分之(ppm)2);3)测试这样的电路很难;4)它未解决协同不连续(在误差之后重新同步时钟)的问题;以及5)它未提供对除z/OS和TPF(交易处理设施)之外的平台的良好接口。
因此将非常希望提供一种用于在包括多个CPC的紧密耦合共享存储多处理环境中调整TOD时钟的系统和方法,其中所有物理时钟已经借助于公共振荡器步进脉冲来同步。

发明内容
本发明的目的是为具有紧密耦合的共享存储多处理环境(CPC)的主机服务器体系结构提供新颖的白天时间(TOD)时钟导引方法和装置,其中所有物理时钟借助于公共振荡器步进脉冲来进行同步。
根据本发明,TOD时钟导引提供了用以改变TOD的明显步进速率而不改变使物理时钟步进的物理硬件振荡器的手段。这是借助于具有内容的TOD偏移寄存器来实现的,将这些内容相加到物理时钟以产生逻辑TOD时钟值。优选地,TOD时钟的调整借助于硬件共享存储器中的共享位置来数字地执行。
因此,根据本发明,提供了一种用于为计算机系统导引白天时间(TOD)时钟的系统、方法和计算机程序,该计算机系统具有用于为执行操作提供时基的物理时钟,将该物理时钟步进到公共振荡器。该方法包括计算TOD时钟偏移值(d)以将其相加到物理时钟值(Tr)来获得逻辑TOD时钟值(Tb),其中TOD时钟值是可调整的并且无需调整振荡器的步进速率。
总导引速率由两个分量构成细导引速率和粗导引速率。细导引速率用来校正本地振荡器中在相对长的时间段稳定的不准确。该值将通常小于本地振荡器的指定容差(通常为±2.0ppm)。粗导引速率用作为对于所有其他效果的动态校正,它是用以将时间同步于外部时间源以及同步于时序网络中的其他时钟的主导力量。
该新颖的装置和方法使用了所构造的数学公式,使得时钟“滴答”决不丢失,即使将特定CPU延迟了延长的时间段。提供了接口用以允许甚至在第二执行层的问题程序来确定和考虑TOD时钟导引的甚至最细微的细节。这些程序能够获得准确到百万分之零点几的时序信息,即使例如正在以百万分之40对TOD时钟进行引导。
作为对此的引申,本发明的装置和方法1)提供了将所有物理时钟步进到公共振荡器而且进行了同步;2)提供了用以指示出现TOD偏移更新事件的由硬件生成的信号。在一个示例实施例中,这可以通过来自每个CPU中物理时钟的比特位置的“进位”来触发;3)将当前的导引参数传达到所有CPU。这优选地通过共享存储器来实现,该共享存储器能够进行互锁地更新以改变导引参数并且能够由所有处理器进行只读访问以最小化开销;以及4)它实施了数学公式用以计算数字值,以便更新该偏移并将其应用于精确的时间时刻。该数学公式使得,即使CPU长时间进入休眠也保证不丢失值。


根据与附图相组合的如下具体描述,本发明的目的、特征和优点对于本领域技术人员将变得明显,在附图中图1是描绘了本发明实施于其中的系统10的图;图2描绘了根据本发明一个实施例的TOD时钟操作的概况;图3提供了根据本发明一个实施例而实施的TOD时钟导引寄存器的总结;图4图示了代表在本发明中实施的硬件寄存器的符号,其子集在图1中示出;以及图5图示了用以更新TOD偏移寄存器的实施细节。
具体实施例方式
本发明致力于一种用于主机服务器体系结构的白天时间(TOD)时钟导引方法和装置,该主机服务器体系结构具有紧密耦合共享存储多处理环境(CPC),其中所有物理时钟已经借助于公共振荡器步进脉冲进行了同步。
图1是描绘了本发明实施于其中的系统10的图。该系统包括,如图1示出的,zSerieseServer,这里称为中央处理联合体(CPC),其具有标记为CPU_0、CPU_1、...、CPU N的多个CPU。该CPC具有主时钟15,而且每个CPU具有从物理时钟20a、20b、...、20n。借助于本领域中公知的手段将从物理时钟设置为与主时钟相同的值。主时钟15和所有从物理时钟20a、20b、...、20n通过由振荡器18生成的相同的步进信号(标记为“s”)来进行步进。在一个说明性实施例中,除从物理时钟(标记为“Tr”)之外,每个CPU也具有偏移寄存器(标记为“d”)、基本机器逻辑TOD时钟(标记为“Tb”)、指令地址寄存器(标记为“IA”)和16个通用寄存器(标记为GR0-GR15)。如图所示,CPU_0、CPU_1、...、CPU_N中的每一个共享公共存储设备25,该设备包括可为程序所用的主存储区26以及硬件存储区27,后者是分出的小部分以便在“覆盖之下”用于子通道信息、CPU到CPU通信、加密缓冲器队列、测量信息等。
众所周知,CPC适用于允许在单个CPC内建立多个系统图像的逻辑分区。逻辑分区(LPAR)结构28如图1中所示,代表了每个系统图像,该系统图像能操作为就好像它是分离的计算机系统一样,而且能够被独立地重置、加载有(对于每个逻辑分区而言不同的)操作系统、以及使用不同的I/O设备以不同的软件程序来操作。另外,每个分区具有它自身的逻辑分区时钟“Tp”,正如参照图2更详细地描述的。图1中所示的每个LPAR结构通过状态描述来逻辑地代表,该状态描述包括用以指明寄存器(PSW、GR、FPR等)、要使用的存储区和LPAR拦截控制的所有信息。随着仅LPAR的系统的出现,硬件存储区27是用于LPAR系统管理程序(hypervisor)的共享存储部分。此外,图1的系统中示出了导引控制29,该导引控制包括“TOD时钟导引寄存器”用于存储时钟导引值,包括但不限于旧片断(episode)开始时间(old.s)、旧片断基础偏移(old.b)、旧片断细导引(old.f)、旧片断粗导引(old.g)、新片断开始时间(new.s)、新片断基础偏移(new.g)、新片断细导引(new.f)和新片断粗导引(new.g)。这些时钟导引寄存器值将结合图2在此详细地进一步加以描述。
根据本发明,TOD-时钟导引提供了用以改变TOD时钟Tb的明显步进速率而不改变对物理时钟Tr进行步进的物理硬件振荡器的手段。这借助于TOD-偏移寄存器d来实现,将该寄存器d相加到物理时钟Tr以产生逻辑TOD时钟值。
TOD偏移寄存器d名义上包括比特,即比特0-95,这些比特通过与称为当前总导引速率“r”的32比特带符号值相加而每微秒地进行更新,该带符号值与TOD偏移寄存器的比特64-95对准。来自TOD偏移寄存器比特位置0的进位(如果有的话)在此加法中被忽略。在具有更高或更低分辨率的机型中,该加法是以这样的频率而且利用适当地对准的r时来执行的,该频率使得改变TOD偏移寄存器的速率与就好像每微秒地将r相加到比特64-95那样相同。
应当理解,对于一些服务器(CPC)体系结构,TOD偏移寄存器d可以少于64比特,而且使用数学公式来定期地进行更新。该数学公式产生等效于名义速率的结果,而且被设计为使得更新决不丢失即使在长时间段中止机器操作的情况下。在正常操作中,足够频繁地执行该更新,以使得如程序所观测的效果与均匀的步进速率没有区别。
正如这里将更详细地所述,TOD时钟导引包括半特许指令执行时序设施功能(PTFF),该半特许指令包括功能代码和参数块的规范。TOD时钟导引还包括解释性执行控制,“时序设施执行控制”,该解释性执行控制在用于逻辑分区的结构中包括控制比特。此比特当在第一层状态描述中为一时,允许该逻辑分区中的管理程序执行四个PTFF控制功能中的三个控制功能而无需拦截。
如上所述,TOD时钟导引允许时序设施控制程序调整TOD时钟的明显步进速率。该步进速率能够被调整达到约±百万分之(ppm)122,精度达到244分之一(约每天4.9纳秒)。该步进速率能够以非破坏方式来改变;也就是,应用程序可以在该改变进行时运行于该配置中,对于程序有几乎不可察觉的效果。
总导引速率由两个分量构成细导引速率和粗导引速率。细导引速率用来校正本地振荡器中在相对长的时间段稳定的不准确。该值将通常少于本地振荡器的指定容差(通常为±2.0ppm),其改变将很少地发生(数量级为每天一次至每周一次),而且改变将是小的(通常小于±0.2ppm)。
粗导引速率用作为对于所有其他效果的动态校正,它是用以将时间同步于外部时间源以及同步于时序网络中的其他时钟的主导力量。其值将通常地频繁改变(数量级为每秒一次至每分钟一次);而且其值在范围上可以达到多于±10ppm。
尽管细导引速率和粗导引速率由时序设施控制程序用于不同的目的,但是这些分量在时钟调整算法中是可交换地被处理的。将32比特细导引速率(f)相加到32比特粗导引速率(g)以形成32比特当前总导引速率(r);来自比特位置0的进位(如果有的话)在此加法中被忽略。TOD时钟导引包括由时序设施控制程序发出的四个控制功能1)设置细导引速率;2)设置粗导引速率;3)调整TOD偏移;以及4)设置TOD偏移。设置细导引速率和设置粗导引速率的功能分别对细导引速率寄存器和粗导引速率寄存器进行操作,而且在不造成逻辑TOD时钟的任何不连续性的情况下即可发出。这些功能仅可对时序设施控制程序可用;然而,可以由在具有特殊授权的逻辑分区中运行的测试程序使用。
当操作于基本机器层时,设置TOD偏移和调整TOD偏移的功能允许将逻辑TOD时钟Tb设置到任一任意值,但是具有不连续性。这些功能旨在仅由时序设施控制程序使用于初始化、测试以及极端误差的情形中。当操作于逻辑分区和虚拟机器层时,设置TOD偏移的功能在管理状态中发出时造成拦截,而且用以将状态描述中的TOD时点差异设置为请求值的该功能可以由系统管理程序模拟。对于具有特殊授权的在逻辑分区中运行的程序,设置TOD偏移和调整TOD偏移的功能以不同的寄存器为目标。设置TOD偏移的功能由系统管理程序模拟,而且如上所述对TOD时点差异进行操作。调整TOD偏移的功能在TOD偏移寄存器上操作,并且由该机器执行而无拦截。
TOD时钟导引也包括若干查询功能,这些查询功能不仅可由时序设施控制程序使用,而且还可由问题程序使用以便确定TOD时钟的质量。
图2描绘了包括导引的TOD时钟操作的概况。TOD时钟导引借助于三个值来实现开始时间(s)、基础偏移(b)和导引速率(r)。这三个值用来计算TOD偏移(d),将该TOD偏移相加到物理时钟(Tr)以形成基本机器TOD时钟(Tb)。开始时间(s)和基础偏移(b)是64比特无符号二进制整数,而且被视为与TOD时钟的比特0-63对准。根据本发明的一个实施例,导引速率是32比特带符号二进制定点值而且被视为通过因子2-44来缩放。如下公式示出了从物理时钟(Tr)、当前开始时间(s)、当前基础偏移(b)和当前总导引速率(r)导出TOD偏移(d)和基本机器TOD时钟(Tb)d=b+(Tr-s)·r·2-44Tb=Tr+d如图2中所示,还将导引应用到逻辑分区TOD时钟(Tp)和虚拟机器TOD时钟(Tv)。
在操作中,定期地更新TOD偏移(d),而不是连续地计算。这里称为TOD偏移更新事件的此更新是通过来自物理时钟的比特位置的进位来触发的。该比特位置依赖于机型,但是被选择为使得对于正常的导引速率,通过相继的TOD偏移更新事件来为TOD偏移(d)计算的值之间的差异小于TOD时钟的分辨率。
三个值s、b和r定义了能够不确定地被应用的线性导引调整。在这些值在未改变的情况下被应用的持续时间称为片断。每当时序设施控制程序请求对导引速率的变化时,该机器就安排新的片断在未来时间生效。为了提供平滑的过渡,该机器将用于新片断的开始时间安排在下一TOD偏移更新事件处,而且计算新的基础偏移,使得在新值生效的瞬间在TOD偏移值中将没有不连续性。
该机器将新值置入称为新片断开始时间(new.s)、新片断基础偏移(new.b)、新片断细导引速率(new.f)和新片断粗导引速率(new.g)的专用寄存器中,而且这四个寄存器的先前内容是通过将它们分别置入称为旧片断开始时间(old.s)、旧片断基础偏移(old.b)、旧片断细导引速率(old.f)和旧片断粗导引速率(old.g)的寄存器中来保持的。该机器继续使用用于旧片断的值,直至物理时钟达到新片断开始时间(new.s),然后自动地切换到使用用于新片断的值。在任何特定时间瞬间使用的寄存器称为当前开始时间(s)、当前基础偏移(b)和当前总导引速率(r)。这些统称为当前片断寄存器。
图3总结了TOD时钟导引寄存器及其对应的比特值。所有TOD时钟导引寄存器的内容通过开机重置来初始化到零。
当前开始时间(s)
当机器在旧片断中操作时,从旧片断开始时间(old.s)获得当前开始时间;而当在新片断中时,则从新片断开始时间(new.s)获得它。当前开始时间(s)是64比特无符号二进制整数而且被视为与TOD时钟的比特0-63对准。在导引调整的计算中,从物理时钟的值(Tr)减去当前开始时间(s)以形成64比特无符号差(Tr-s)。来自比特位置0的借位(或进位)在此减法中被忽略。
当前基本偏移(b)当机器在旧片断中操作时,从旧片断基础偏移(old.b)获得当前基础偏移;而当在新片断中时则从新片断基础偏移(new.b)获得它。当前基础偏移(b)是64比特无符号二进制整数而且被视为与TOD时钟的比特0-63对准。
当前导引速率(f,g,r)当机器在旧片断中操作时,分别从旧片断细导引速率(old.f)和粗导引速率(old.g)获得当前细导引速率(f)和当前粗导引速率(g);当在新片断中时,则分别从新片断细导引速率(new.f)和粗导引速率(new.g)获得它们。从当前细导引速率(f)和当前粗导引速率(g)之和获得当前总导引速率(r)。来自比特位置0的进位,如果有的话,则在此加法中被忽略。根据本发明的一个实施例,当前总导引速率(r)是32比特带符号定点值而且被视为通过因子2-44来缩放。处理为32比特二进制无符号数的(r)的绝对值与64比特无符号差(Tr-s)相乘以形成96比特无符号二进制乘积,将该乘积向右移44比特位置以形成52比特的中间结果。十二个零然后被附加到左侧以形成64比特调整值。如果r为零,则当前基础偏移直接用作TOD偏移而且乘法是不必要的。如果r为正,则将调整值相加到当前基础偏移(b)以形成TOD偏移(d);如果r为负,则从当前基础偏移(b)减去调整值以形成TOD偏移(d)。在此加法(或减法)期间出现的进位(或借位)被忽略。当r为负时,则每当TOD偏移更新事件在单个片断中出现时,则在计算当前TOD偏移(d)之后,该机器通过延迟足够久以保证逻辑TOD时钟如程序所查看的那样好像是向前步进来提供互锁。
应当理解,导引速率的比特0和31分别代表导引速率-2-13和2-44。因此,百万分之±122(每天10.5秒)的导引速率可以被指定具有每天4.9纳秒的精度。
TOD偏移(d)TOD偏移是与TOD时钟的比特0-63对准的64比特值。将处理为64比特无符号二进制值的TOD偏移的内容相加到物理时钟以获得基本机器TOD时钟。来自比特位置0的进位,如果有的话,则在此加法中被忽略。依赖于机型,与超出TOD时钟分辨率的比特对应的TOD偏移的最右比特可以不被实施而且处理为零。
执行时序设施功能该系统实施了由通用寄存器中的功能代码指定的若干时序设施功能。条件代码设置为指示功能结果,即指示已经执行了所请求的功能或者所请求的功能不可用。另一通用寄存器包含在存储器中的参数块的地址。实施两类执行时序设施功能(PTFF)功能1)PTFF查询功能将信息放置在参数块中;以及2)PTFF控制功能使用从参数块获得的信息。通用寄存器的某些比特位置,例如比特位置57-63包含功能代码。图4示出了所分配的功能代码。另一通用寄存器包含在存储器中的参数块的最左字节的逻辑地址。用于执行时序设施功能的功能代码提供如下

现在提供伪代码子例程的说明性例子,这些子例程指示了用来实施本发明的功能。出于简洁的目的,将它们描述为子例程,而且用以指示调用它们的那些功能的公共部分。依赖于实施而不是通用子例程,该代码能够在要求该功能的每个例程中被复制。
在子例程的描述中,参照图4,该示了用于根据所发明来实施的硬件寄存器的符号,其子集在图1中示出。在图4中,下标字母r、b、p和v分别代表实际(real)、基本机器、逻辑分区和虚拟机器。逻辑TOD时钟寄存器Tb不直接在硬件中提供,而是对其进行模拟,正如这里描述的伪代码例程中所述的。时钟比较器寄存器CCb被维护于硬件存储区中而且使用CCr来模拟,正如这里描述的伪代码例程中所述的。由CPU计时器CTr和CTb实施相同的寄存器,然而为了与图4所示两列中的其他条目相一致而被指示为两个符号。TOD时钟同步控制寄存器Yb(基本机器TOD时钟同步控制)对时钟进行控制,正如由发出设置时钟(SCK)指令的程序所观测的那样。因此,Yb在LPAR系统管理程序发出SCK时适用。
下面是在描述这里所述伪代码例程中使用的其他符号的总结。
比特选择。例如,Tr
指示了使用物理时钟的比特0-41;abs(r)r的绝对值。
||并置。例如,将Tv
||pa6指示了虚拟机器TOD时钟的58比特与6比特处理器地址并值以形成64比特值;0b111 3个一比特的字段;0b1111 4个一比特的字段;dTOD偏移寄存器(实施于每个CPU中);op2 SCK、STCK、STCKE、SCKC、STCKC、SPT或STPT的第二操作数;pa6 6比特处理器地址pax 包含处理器地址的40比特非零字段pr 基本机器TOD可编程寄存器的16比特右半部r指示当前总导引速率的32比特带符号二进制整数SDB 导引接口数据块。SDB的内容包括old.s、old.b、old.f、old.g、new.s、new.b、new.f和new.g;t1 64比特时间戳,包括伪代码例程开始时物理时钟的高阶比特(0:41或0:51);t2 64比特时间戳,包括伪代码例程结束时物理时钟的高阶比特(0:41或0:51)(如果t2>t1,则伪代码循环,因为这指示了例程没有按时完成);tcs 客户逻辑时钟将开始时的系统管理程序逻辑时间;v41 在比特位置41具有一的64比特值;因此在TOD时钟格式中代表来自比特位置42的进位值的时间;以及z(n)n个零比特的字段;例如z(8)是8比特零字段。
PTFF-QAF(查询可用功能)PTFF-QAF(查询可用功能)功能提供了指示其他功能的可用性的手段。PTFF-QAF的伪代码描述提供如下pb.w1←0b1111||z(28)pb.w2←z(32)pb.w3←0b1111||z(28)pb.w4←z(32)PTFF-QTO(查询TOD偏移)用于该功能的参数块返回以下值,包括64比特物理时钟值(pb.Tu),该值是最近期TOD偏移更新事件的物理时钟的值。返回的64比特TOD偏移值(pb.d)指示TOD偏移的值(d)。返回的64比特逻辑TOD偏移值(pb.dl)指示了当前值,将该值相加到Tr(物理时钟)以获得Tc(用于当前CPU执行层的逻辑TOD时钟);以及返回的64比特TOD时点差值(pb.ed)是用于当前CPU执行层的TOD时点差。PTFF-QTO的伪代码描述提供如下LoopQT1Gall ccepdl←dced←z(64)If sie>0 Thendl←(dl+sd1.ed)
ed←sd1.edEndIfIf sie>1 Thendl←(dl+sd2.ed)
ed←sd2.edEndIfpb.Tu←t1pb.d←dcpb.dl←dlpb.ed←edt2←Tr
||z(22)If t2>t1 Goto LoopQT1
PTFF-QSI(查询导引信息)用于该功能的参数块返回以下的值,包括64比特物理时钟值(pb.Tu)是最近期TOD偏移更新事件的物理时钟值。剩余字段是旧片断和新片断寄存器的值。PTFF-QSI的伪代码描述提供如下LoopQS1t1←Tr
||z(22)pb.Tu←t1pb.old.s←SDB.old.spb.old.b ←SDB.old.bpb.old.f←SDB.old.fpb.old.g←SDB.old.gpb.new.s←SDB.new.spb.new.b←SDB.new.bpb.new.f←SDB.new.fpb.new.g←SDB.new.gt2←Tr
||z(22)If t2>t1 Goto LoopQS1PTFF-QPT(查询物理时钟)用于该功能的参数块返回以下的值,包括64比特物理时钟值(pb.Tr),该值是物理时钟的当前值。PTFF-QPT的伪代码描述提供如下pb.Tr←Tr
PTFF-ATO(调整TOD偏移)用于该功能的参数块提供64比特值(pb.a),该值被处理为无符号二进制值,而且相加到下一片断的基础偏移。来自比特位置0的进位,如果有的话,则在此加法中被忽略。如果下一片断已经被安排而且尚未变为活动的,则pb.a和new.b之和取代new.b,而且不采取其他动作。如果下一片断尚未被安排,则将新片断寄存器保存于旧片断寄存器中而且安排新的片断。新片断开始时间(new.s)被设置为物理时钟将在下一TOD偏移更新事件时具有的值,而新片断基础偏移(new.b)被设置为pb.a与TOD偏移将在相同瞬间时具有的值之和,该值是使用当前导引参数来计算的。
如果安排了新的片断,新片断细导引和粗导引速率与当前值相同,则此功能不改变导引速率。调整TOD偏移功能的执行被互锁,使得TOD偏移寄存器的全部内容好像是并发地和同时地进行更新,正如配置中所有CPU所观测的那样。然而,配置中的CPU对逻辑TOD时钟的访问并不是人为地延迟的;因此,大的无符号调整值的加法可能具有负变化的效果,而且可能造成逻辑TOD时钟好像是向后步进。PTFF-ATO的伪代码描述提供如下LoopATLock SDBCall cnepSDB.new.b ←(SDB.new.b+pb.a)
Unlock SDBPTFF-STO(设置TOD偏移)用于该功能的参数块提供了取代TOD偏移的64比特值(pb.d)。当在基本机器层发出时,如果下一片断已经被安排而且尚未变成活动的,则pb.d取代new.b而且不采取其他动作。如果下一片断尚未被安排,则将新片断寄存器保存于旧片断寄存器中而且安排新的片断。新片断开始时间(new.s)被设置为物理时钟将在下一TOD偏移更新事件时具有的值,而新片断基础偏移(new.b)设置为pb.d的值。如果安排新的片断,新片断细导引和粗导引速率与当前值相同,则此功能不改变导引速率。当在逻辑分区或虚拟机器层发出时,该功能由系统管理程序模拟而且对用于当前CPU执行层的TOD时点差(分别是Dp或Dv)进行操作;不安排新的片断并且该改变立即生效。设置TOD偏移功能的执行被互锁,使得TOD偏移寄存器的全部内容好像是并发地和同时地进行更新,正如配置中所有CPU所观测的那样。然而,配置中的CPU对逻辑TOD时钟的访问并不是人为地延迟的;因此,由较小的值取代TOD偏移可能造成逻辑TOD时钟好像是向后步进。PTFF-STO的伪代码描述提供如下LoopSTLock SDB
Call cnepSDB.new.b←pb.dUnlock SDBPTFF-SFS(设置细导引速率)用于该功能的参数块提供了变为用于下一片断的细导引速率的32比特值(pb.f)。如果下一片断已经被安排而且尚未变成活动的,则由pb.f取代new.f而且不采取其他动作。如果下一片断尚未被安排,则将新片断寄存器保存于旧片断寄存器中而且安排新的片断。新片断开始时间(new.s)被设置为物理时钟将在下一TOD偏移更新事件时具有的值,而新片断基本偏移(new.b)被设置为TOD偏移将在相同瞬间时具有的值,该值是使用当前导引参数来计算的。新片断细导引速率(new.f)被设置为pb.f,而新片断粗导引速率与当前值相同。当新的片断生效时,配置中的CPU对逻辑TOD时钟的访问被互锁,以保证逻辑TOD时钟好像是正在唯一和单调地增加,正如所有程序所观测的那样。PTFF-SFS的伪代码描述提供如下LoopSFLock SDBCall cnepSDB.new.f←pb.fUnlock SDBPTFF-SGS(设置粗导引速率)用于该功能的参数块提供了变为用于下一片断的粗导引速率的32比特值(pb.g)。如果下一片断已经被安排而且尚未变成活动的,则由pb.g取代new.g而且不采取其他动作。
如果下一片断已经被安排,则将新片断寄存器保存于旧片断寄存器中而且安排新的片断。新片断开始时间(new.s)被设置为物理时钟将在下一TOD偏移更新事件时具有的值,而新片断基础偏移(new.b)被设置为TOD偏移将在相同瞬间时具有的值,该值是使用当前导引参数来计算的。新片断粗导引速率(new.g)被设置为pb.g,而新片断细导引速率与当前值相同。当新的片断生效时,配置中的CPU对逻辑TOD时钟的访问被互锁,以保证逻辑TOD时钟好像是正如所有程序所观测的那样唯一和单调地增加。PTFF-SGS的伪代码描述提供如下LoopSGLock SDBCall cnepSDB.new.g←pb.gUnlock SDBTOD-时钟导引根据本发明的一个实施例,导引参数必须使用互锁机制来更新,该互锁机制不要求只读操作的写访问。这是特别为TOD偏移更新事件而实施的。此事件周期性地在每个CPU上同时出现,例如每1204微秒,而且如果每个CPU试图锁定信息则该开销将是禁止的。
概念上讲,当前总导引速率(r)的比特0:31每微秒一次地被相加到TOD偏移(d)扩展的比特64:95中(也就是,每当进位从物理时钟的比特位置52出现到比特位置51处时)。该体系结构允许一种实施,用以在对于该加法的恰当对准时通过使用来自物理时钟不同位置的进位来不那么频繁地执行此更新,只要所得效果实质上相同。具体来说,该体系结构要求比特位置依赖于机型,但是将其选择为使得对于正常的导引速率,通过相继的TOD偏移更新事件来为TOD偏移(d)计算的值之间的差异小于TOD时钟的分辨率。
例如,如果TOD时钟分辨率处于比特位置57,而且TOD偏移更新事件通过进入比特位置41中的进位来触发,则满足该体系结构的要求,只要正常的导引速率小于16ppm。如果将振荡器指定为±2ppm,则正常的导引速率应当比16ppm小得多。在此例中,假设使用来自物理时钟的比特42的进位,不过此进位输出比特位置可依赖于实施而配置。定期地将进位从物理时钟的比特位置42传播到比特位置41,例如每1024微秒,或者近似为每毫秒。大约在出现此进位时实施对导引参数的更新。
用以计算当前片断参数(ccep)的伪代码子例程此例程由用于TOD偏移更新事件的伪代码以及查询TOD偏移功能所调用。该子例程计算和返回最近期TOD偏移更新事件的时间(t1)和对于时间t1的偏移(dc)。该子例程也返回当前片断寄存器当前开始时间(s)、当前基础偏移(b)、当前细导引速率(f)、当前粗导引速率(g)和当前总导引速率(r)。
LoopC1t1←Tr
||z(22)If t1<SDB.new.s Thens←SDB.old.sb←SDB.old.bf←SDB.old.fg←SDB.old.gElses←SDB.new.sb←SDB.new.bf←SDB.new.fg←SDB.new.gEndIfr←(f+g)
If r≠0Thenu←(t1-s)
w←z(12)||u
||z(10)m←abs(r)
p←(w·m)
q←p
EndIfIf r>0Thendc←(b+q)
EndIfIf r=0Thendc←bEndIfIf r<0Thendc←(b-q)
EndIfExit Sub用以计算新片断参数(cnep)的伪代码子例程此子例程由用于所有四个PTFF控制功能的伪代码所调用调整TOD偏移、设置TOD偏移、设置细导引速率和设置粗导引速率。该子例程检查新的片断是否是活动的。如果当前时间小于新片断开始时间(new.s),则新的片断尚未活动(当前片断是旧的片断),并且不需要采取其他动作。如果当前时间大于或等于new.s,则新的片断是活动的(当前片断是新的片断),将当前片断字段(new.s、new.b、new.f和new.g)置于旧片断字段中,而且为新的开始时间(new.s)和新的基础偏移(new.b)计算新值。该子例程使用值v41,该值是在比特位置41为一的64比特值;因此在TOD时钟格式中代表来自比特位置42的进位的时间值。
t1←Tr
||z(22)If t1<SDB.new.s ThenExit SubEndIfr←(SDB.old.f+SDB.old.g)
s←(t1+v41)
SDB.old.s←SDB.new.sSDB.old.b←SDB.new.bSDB.old.f←SDB.new.fSDB.old.g←SDB.new.gSDB.new.s←sIf r≠0 Thenu←(SDB.new.s-SDB.old.s)
w←z(12)||u
||z(10)m←abs(r)
p←(w·m)
q←p
EndIfIf r>0ThenSDB.new.b←(SDB.old.b+q)
EndIfIf r=0ThenSDB.new.b←SDB.old.bEndIfIf r<0ThenSDB.new.b←(SDB.old.b-q)
EndIfExit Sub用于基本机器时钟比较器更新(bmccu)的伪代码子例程
此例程由用于TOD偏移更新事件、基本机器设置时钟比较器和基本机器时钟比较器中断动作的伪代码所调用。该例程调整物理时钟比较器以补偿物理时钟和基本机器TOD时钟的不同速率。该例程也防止了当前总导引速率(r)为负的情况。在此情况下,物理时钟正在运行得比逻辑TOD时钟快,而且物理时钟比较器中断将提早出现。该例程通过将基本机器TOD时钟值(Tb)与基本机器时钟比较器(CCb)做比较来对此进行检查。如果Tb>CCb,则应当采取基本机器时钟比较器中断,这是通过将物理时钟比较器设置为零来实现的。如果Tb≤CCb而且(Tb-d)≤(CCb-d),则不存在卷绕(wrap)而且重新计算物理时钟比较器值(CCr)。如果Tb≤CCb而且(Tb-d)>(CCb-d),则存在卷绕。将物理时钟比较器值(CCr)设置为全一(在伪代码描述中描绘为-1)。这产生曝露(exposure),因为将决不采取时钟比较器中断,即使在未来某一时间基本机器TOD时钟将大于基本机器时钟比较器。
Tq←Tr
Tb←(Tq+d)
CCq←(CCb-d)
If Tb>CCb ThenCCr←0ElseIf Tq>CCq ThenCC←(-1)ElseCCr←CCqEndIfExit Sub用于TOD偏移更新事件的伪代码图5图示了用以更新TOD偏移寄存器的实施细节。在示例性实施中,每当进位从物理时钟的比特位置42传播到比特位置41时,在使用任何逻辑TOD时钟之前,TOD偏移寄存器必须根据硬件存储区中的导引参数来进行更新。现在提供伪代码表示,该表示指示了在配置中的每个CPU上用来更新该CPU中的TOD偏移寄存器所采取的动作。
LoopD1Call ccepd←dcCall bmccuIf sie>0 ThenLoopD2t3←Tr
||z(6)Tp←(t3+d+sd1.ed)
t4←Tr
||z(6)Ift4>t3 Goto LoopD2EndIfIf sie>1 ThenLoopD3t5←Tp
||z(6)Tv←(t5+sd2.ed)
t6←Tp
||z(6)Ift6>t5 Goto LoopD3EndIfLoopD4w1←Tr[42:57]wr←(-r)
Ifw1≤wr Goto LoopD4t2←Tr
||z(22)If t2>t1 Goto LoopD1用于基本机器时钟比较器中断的伪代码此例程是刚好在采取基本机器时钟比较器中断之前执行的。该例程防止了当前总导引速率(r)为负的情况。在此情况下,物理时钟正在运行得比逻辑TOD时钟快,而且物理时钟比较器中断可能提早出现。如果中断尚未到期,则调用用于基本机器时钟比较器更新的子例程。
Tb←(Tr+d)
If Tb>CCb ThenTake InterruptionElseCall bmccuEndIf用于时序指令的伪代码提供如下伪代码,该伪代码代表了用于处理如下时序指令的代码存储时钟(STCK)、存储扩展时钟(STCKE)、设置时钟(SCK)、设置时钟比较器(SCKC)、设置CPU定时器(SPT)、存储时钟比较器(STCKC)和存储CPU定时器(STPTP)。

SIE Entry(sie=0 to sie=1)LoopSE1t1←Tr
||z(6)Tp←(t1+sd1.ed+d)
||z(6)t2←Tr
||z(6)If(t2>t1)Goto LoopSE1CCp←sd1.ccCTp←sd1.ctSIE Entry(sie=1 to sie=2)LoopSE2t1←Tp
||z(6)Tv←(t1+sd2.ed)
||z(6)t2←Tr
||z(6)If(t2>t1)Goto LoopSE2
CCv←sd2.ccCTv←sd2.ctSIE Exit(sie=2 to sie=1)sd2.cc←CCvsd2.ct←CTvSIE Exit(sie=1 to sie=0)sd1.cc←CCpsd1.ct←CTpTOD时钟同步正如CPU本身所见的,TOD时钟的导引一定不能在TOD时钟引入可观测的不连续性;特别地,该时钟一定不能好像是向后步进,或者甚至是在行中两次产生相同值。为了保证逻辑TOD时钟好像是单调地增加,在施加负的增量之后,CPU必须延迟对TOD时钟进行使用至少该增量的数量,正如这里将在下面详细说明的那样。
更具难度的要求涉及CPU之间的交互。所有CPU必须几乎同时地开始使用时钟偏移的任何改变,无论该改变是正或负。这些例子示出仅一个时钟滴答的差异如果未在相同时刻进行施加就足以被问题程序检测到。
示为情况0的正常操作被用来定义称为最佳情况CPU到CPU时钟传送时间的值。然后,针对未在所有CPU处在相同时刻识别新值的实施,对于分别引入最小的可能正增量或负增量,示出了情况1和情况2。这些例子显示,正改变和负改变实质上造成了相同的问题,而且唯一的实际解决方案是在所有CPU上同时识别该更新。该更新的同步是通过要求每个CPU在严格相同的时间时刻开始使用新值来解决的。此时刻称为TOD偏移更新事件,而且其在从物理时钟的特定比特位置出现进位时被触发。该体系结构指定了所选比特位置依赖于机型。在一个实施例中,使用了从物理时钟的比特位置42到比特位置41的进位。
对于单个CPU的TOD偏移寄存器的负改变下表图示了TOD偏移寄存器的负改变的例子。

每行提供了物理时钟、TOD偏移寄存器和逻辑TOD时钟的比特42-57的瞬象(snapshot)。每当物理时钟在特定的比特位置(比如比特57)滴答时摄取瞬象。
在表中提供的此说明性例子中,未示出的当前总导引速率假设为具有最大负值;也就是,比特位置0中为一,其后全零。第一行(滴答编号0)示出了在从比特42发生进位之前最后的滴答处的物理时钟。此进位将在TOD偏移寄存器中引入新值,这使得逻辑TOD时钟好像是向后步进。为了避免这对于程序是可观测的,该机器决不提供任何逻辑TOD时钟值,直至滴答编号9之后。在该示例中,用于TOD偏移寄存器的新值在摄取对于滴答编号1的瞬象之时就已经被应用。在实际的实施中,用以更新TOD偏移寄存器的动作可能相当可观地占用比这更多的时间。表中提供的示例示出如果此更新占用少于125纳秒(在优选实施例中约为167个CPU周期),则该机器必须延迟使用该时钟,直至这么多的时间已经逝去。
用于多个CPU的TOD时钟同步不失一般性地,能够将所有多个CPU TOD时钟同步失败简化为如下单个情况
CPUiCPUjSTCK AFetch A(新值)STCK BA>B例如在具有60个PCU的机器上,TOD时钟值的比特58-63由CPU编号取代;因此,TOD时钟的比特57是最右的步进比特。TOD时钟的比特57每15.625纳秒进行递增,这仅略微小于最佳情况高速缓存到高速缓存传送时间(例如22-24个机器周期)。最临界的情况是当第一CPU比第二CPU具有更大的CPU编号时。为了在示例中示出这一点,用于CPUi和CPUj的CPU编号分别选择为55和33(八进制)。在下表中,示出TOD时钟的比特58-60以指示时间推移,即使这些比特不是物理时钟的一部分。
情况0-无偏移改变-无失败表1示出了对于当偏移未改变时的情况的TOD时钟正确操作。

表1第一CPU上STCK存储部分的执行时间、加上从第一CPU到第二CPU的最佳情况CPU到CPU高速缓存到高速缓存传送时间、加上第二CPU上LG和STCK访问时钟部分的执行时间之和称为最佳情况CPU到CPU时钟传送时间。为了保证对于情况0的正确操作,最佳情况CPU到CPU时钟传送时间必须至少为15.625纳秒。如果有必要,这可以通过人为地延迟每个CPU上的STCK执行时间来实现。在将来硬件中将可能要求的可选方案将是实现物理时钟的比特58-63,而且该机器延迟CPU上的STCK执行,直至物理时钟的比特58-63与用于此CPU的CPU编号相匹配。
情况1-负的偏移改变-失败表2示出了当该偏移减少15.625纳秒(对于优选实施例的负导引速率而言可能的最小改变)而且未在两个CPU上同时识别此改变时的TOD时钟同步失败(由于该体系结构要求所有CPU在相同时刻开始使用新值,所以仅当未遵循该体系结构时才出现此失败)。在此示例中,当CPU33已经开始使用新值而CPU55仍使用旧值时出现失败(注意作为使用新值的一部分,CPU33已经延迟足够久以保证如CPU33本身所观察的逻辑时钟不会好像是向后步进的)。

表2为了针对情况1正确地操作,最佳情况CPU到CPU时钟传送时间必须至少为15.625纳秒加上该改变的绝对数量,而且这通常将不是优选实施例的情况。此示例示出如果开始使用新值的两个CPU之间的时间大于最佳情况CPU到CPU时钟传送时间就可能出现失败。由于使用旧值的CPU尚未意识到该改变,所以使用新值的CPU将不得不延迟每次STCK的执行,直至所有CPU已经更新到新的偏移;除非这是已知的固定持续时间,否则这将可能证明是不切实际的。
情况2-正的偏移改变-失败表3示出了当该偏移增加15.625纳秒(对于优选实施例的正导引速率而言可能的最小改变)而且未在两个CPU上同时识别此改变时的TOD时钟同步失败。(由于该体系结构要求所有CPU在相同时刻开始使用新值,所以仅当未遵循该体系结构时才出现此失败。)在此例中,当CPU55已经开始使用新值而CPU33仍使用旧值时出现失败。

表3为了针对情况2正确地操作,最佳情况CPU到CPU时钟传送时间必须至少为15.625纳秒加上该改变的绝对数量,而且这通常将不是优选实施例的情况。此示例示出如果开始使用新值的两个CPU之间的时间大于最佳情况CPU到CPU时钟传送时间就可能出现失败。由于使用旧值的CPU尚未意识到该改变,所以使用新值的CPU将不得不延迟每次STCK的执行,直至所有CPU已经更新到新的偏移;除非这是已知的固定持续时间,否则这将可能证明是不切实际的。
已经参照根据本发明实施例的方法、装置(系统)和计算机程序产品图描述了本发明。将理解到,每个图能够由计算机程序指令实施。可以将这些计算机程序指令提供给通用计算机、专用计算机、嵌入式处理器或其他可编程数据处理装置的处理器以产生一种机器,使得经由该计算机或其他可编程数据处理装置的处理器来执行的这些指令创建用于实施这里指出的功能的装置。
这些计算机程序指令也可以存储于计算机可读存储器中,该计算机可读存储器能够指引计算机或其他可编程数据处理装置以特定的方式来工作,使得计算机可读存储器中存储的指令产生包括有用于实施这里指出的功能的指令装置在内的制造品。
计算机程序指令也可以被加载到计算机可读或其他可编程数据处理装置上,以促使一系列操作步骤得以在该计算机或其他可编程装置上执行以便产生计算机实施的过程,使得在该计算机或其他可编程装置上执行的指令提供用于实施这里指明的功能的步骤。
尽管明显的是,这里公开的本发明被很好地考虑用来实现上述目的,但是将理解到,可以由本领域的技术人员构思许多改进和实施例,并且旨在所附权利要求涵盖如落入本发明的真正精神和范围之内的所有这样的改进和实施例。
权利要求
1.一种用于计算机系统的白天时间(TOD)时钟导引装置,该计算机系统具有为执行操作而提供时基的物理时钟,该物理时钟步进到公共振荡器,所述装置包括用于计算TOD时钟偏移值(d)的装置,该TOD时钟偏移值(d)将被相加到物理时钟值(Tr)来获得逻辑TOD时钟值(Tb),所述逻辑TOD时钟值是可调整的而无需调整所述振荡器的步进速率。
2.如权利要求1所述的TOD时钟导引装置,其中所述TOD时钟偏移值(d)计算如下d=b+(Tr-s)×r,其中(b)是与(Tr)的比特对准的基础偏移值,(s)是与(Tr)的比特对准的当前开始时间值,以及(r)是当前导引速率值,所述s、b和r值定义TOD时钟导引调整值。
3.如权利要求2所述的TOD时钟导引装置,其中所述当前导引速率值r通过约为2-44的因子来缩放。
4.如权利要求2所述的TOD时钟导引装置,包括用于保持所述当前d、s、b和r值的TOD时钟导引寄存器。
5.如权利要求4所述的TOD时钟导引装置,其中所述计算机系统包括多个处理单元,每个处理单元具有步进到所述公共振荡器而且进行了同步的关联物理时钟,每个处理单元包括用于保持所述TOD时钟偏移值(d)的TOD时钟偏移寄存器,其中每个处理单元计算逻辑TOD时钟值。
6.如权利要求4所述的TOD时钟导引装置,其中所述当前导引速率值r包括细导引速率值(f)和粗导引速率值(g),其中r=(f)+(g),所述TOD时钟导引寄存器用于保持所述g和r值,所述细导引速率值被建立以用来校正所述振荡器中的不准确,所述粗导引速率值被建立用来响应于其他事件动态地校正所述导引速率。
7.如权利要求6所述的TOD时钟导引装置,还包括用于发出控制指令的控制装置,该控制指令用于请求对于所述导引速率r的改变,所述控制功能输入与TOD时钟导引寄存器对应的新s、b、f和g值。
8.如权利要求7所述的TOD时钟导引装置,其中所述控制装置还发出查询指令,该查询指令用于从对应的TOD时钟导引寄存器获得所述s、b、f和g值的值。
9.如权利要求5所述的TOD时钟导引装置,其中还包括支持更新同步的装置,其中每个处理单元计算逻辑TOD时钟值,每个处理单元同时地开始使用新逻辑TOD时钟值。
10.如权利要求5所述的TOD时钟导引装置,其中导引速率使得能够在负方向上进行所述逻辑TOD时钟的导引,所述TOD时钟导引装置还包括如下装置,该装置用于在对TOD偏移寄存器施加负改变之后为处理单元对新逻辑TOD时钟值的使用进行延迟,由此该逻辑TOD时钟值的改变单调地增加,所述装置使得CPU必须延迟对该TOD时钟进行使用至少所述负改变的数量。
11.一种为计算机系统导引白天时间(TOD)时钟的方法,该计算机系统具有为执行操作而提供时基的物理时钟,该物理时钟步进到公共振荡器,所述方法包括步骤计算TOD时钟偏移值(d),该TOD时钟偏移值将被相加到物理时钟值(Tr)来获得逻辑TOD时钟值(Tb),所述逻辑TOD时钟值是可调整的而无需调整所述振荡器的步进速率。
12.如权利要求11所述的方法,其中所述TOD时钟偏移值(d)计算如下d=b+(Tr-s)×r,其中(b)是与(Tr)的比特对准的基础偏移值,(s)是与(Tr)的比特对准的当前开始时间值,以及(r)是当前导引速率值,所述s、b和r值定义TOD时钟导引调整值。
13.如权利要求12所述的方法,其中所述当前导引速率值r通过约为2-44的因子来缩放。
14.如权利要求12所述的方法,还包括提供用于保持所述当前d、s、b和r值的TOD时钟导引寄存器。
15.如权利要求14所述的方法,其中所述计算机系统包括多个处理单元,每个处理单元具有步进到所述公共振荡器而且进行了同步的关联物理时钟,其中每个处理单元包括用于保持所述TOD时钟偏移值(d)和计算逻辑TOD时钟值的TOD时钟偏移寄存器。
16.如权利要求14所述的方法,其中所述当前导引速率值r包括细导引速率值(f)和粗导引速率值(g),其中r=(f)+(g),所述TOD时钟导引寄存器用于保持所述g和r值,所述细导引速率值被建立以用来校正所述振荡器中的不准确,所述粗导引速率值被建立用来响应于其他事件动态地校正所述导引速率。
17.如权利要求16所述的方法,还包括发出控制指令,该控制指令用于请求对于所述导引速率r的改变,所述控制功能输入与TOD时钟导引寄存器对应的新s、b、f和g值。
18.如权利要求17所述的方法,还包括发出查询指令,该查询指令用于从对应的TOD时钟导引寄存器获得所述s、b、f和g值的值。
19.如权利要求15所述的方法,还包括支持更新同步,其中每个处理单元计算逻辑TOD时钟值,每个处理单元同时地开始使用新逻辑TOD时钟值。
20.如权利要求15所述的方法,其中导引速率使得能够在负方向上进行所述逻辑TOD时钟的导引,所述方法还包括在对TOD偏移寄存器施加负改变之后为处理单元对新逻辑TOD时钟值的使用进行延迟,由此该逻辑TOD时钟值的改变单调地增加,所述装置使得CPU必须延迟对该TOD时钟进行使用至少所述负改变的数量。
全文摘要
一种为计算机系统导引白天时间(TOD)时钟的系统、方法和计算机程序产品,该计算机系统具有为执行操作而提供时基的物理时钟,该物理时钟步进到公共振荡器。该方法包括步骤计算TOD时钟偏移值(d)以将其相加到物理时钟值(Tr)来获得逻辑TOD时钟值(Tb),其中逻辑TOD时钟值是可调整的并且无需调整振荡器的步进速率。
文档编号H04J3/06GK1928769SQ200610092290
公开日2007年3月14日 申请日期2006年6月16日 优先权日2005年9月9日
发明者老罗纳德·M·史密斯, 马克·S·法雷尔, 埃伯哈德·恩格勒, 克劳斯·迈斯纳 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1