專利名稱:用于tod-時鐘導引的系統和方法
技術領域:
本發明主要涉及計算機系統中的時序信號,特別涉及用于調整計算機系統中的白天時間(TOD)時鐘以求增強時序精度的系統和方法。
背景技術:
為了提供計算機系統中的系統完整性和數據恢復,主機服務器設備使用了通用時間戳的概念,比如可從受讓人國際商業機器公司獲得的zSerieseServer。每當更新數據庫記錄時,也創建恢復記錄。該恢復記錄包括在數據庫記錄被鎖定時而獲得的時間戳。只要使用時間戳依次對來自用于所有線程的所有恢復記錄數據集的恢復記錄進行分類,恢復記錄中的剩余信息就足以恢復數據庫記錄。這要求系統聯合體(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示出的,zSerieseServer,這里稱為中央處理聯合體(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·法雷爾, 埃伯哈德·恩格勒, 克勞斯·邁斯納 申請人:國際商業機器公司