專利名稱:定時具有不同持續時間的操作的方法和系統的制作方法
技術領域:
本發明一般地涉及操作定時,具體地說,涉及定時具有不同持續時間 的操作。
背景技術:
大型計算機系統(例如,IBM的zSeries計算系統)已M成極其有 用的系統,主要是因為它們對企業不斷變化的需求的適應性。zSeries系 統通常包括大型機,其中包括子通道控制塊(SCB)、通道子系統(CSS)、 1/0配置、中央處理器以及主存儲裝置。CSS執行各種功能/操作,包括用 于啟動向/從主存儲裝置移動數據的啟動子通道(SSCH )操作。CSS還執行 暫停子通道(HSCH)操作和清除子通道(CSCH)操作,所述操作主要用于 當需要終止由SSCH指令啟動的1/0活動或設備需要重置時重置設備以及子 通道控制塊(SCB)。定時CSS中的特定1/0操作(包括那些與SCB 1/0操作相關的操作) 已變得非常重要。兩個此類由CSS定時的I/O操作是HSCH操作和CSCH操 作。在z/Architecture Principle of Operation (POP) (IBMz〉司,2005 年9月,第5版,SA22-7832-04,在此引入作為參考)中從功能的角度說 明了這些操作。當前的定時方法對于定時操作4W用。但是,隨著引入具有更復雜功 能的系統,例如,z990大型機上的多通道子系統(MCSS)功能,整體系統 以及每通il^礎上的子通道數顯著增加。這種子通道和SCB數的增加使當 前定時機制不那么有用。為了更好地理解與現有的定時方法關聯的問題,從zSeries系統內部
角度考慮如何啟動并當前定時CSCH操作。定時這些指令的常規過程包括使 用固件可訪問存儲器中的現有SCB,也稱為石更件系統區域(HSA) 1002和 CSS 1000中的系統輔助處理器(SAP)。如果在CP 1001上運行的軟件程 序啟動了 CSCH指令,則執行CSCH指令的CP固件首先將CSCH指今i殳置到 SCB 1003中,然后繼續將該SCB在工作隊列(WQ) 1004的底部排隊。在圖 l示出的實例中,將SCB在WQ z的底部排隊。然后,CP固件使用"暫停/ 清除信號"通過控制電路1010來發信號通知SAP z,后者是WQ z的"所 有者,,。該信號指示具有這些要處理的功能的一個或多個SCB已在由SAPz 擁有的WQz上排隊。然后,SAPz從隊列的頂部開始搜索WQz,查找HSCH 或CSCH指令來處理。跳過了具有其他類型的要處理的1/0操作(例如,啟 動子通道(SSCH))的其他SCB。 一旦找到了具有HSCH或CSCH指令的SCB, 則SAP z將該SCB從WQ z中移除。在該實例中,將具有CSCH的SCB 1003 出隊。如果這是第一次在該CSCH的上下文中將SCB 1003從WQ出隊,則 SAP z 1005將時間戳(T/S) 1006存儲到SCB中。如圖2詳細示出的,可 以從當前戳得出所述時間戳。圖3中示出了包括在如上所述的常規定時過 程中和本背景技術部分的其余部分中的步驟的詳細信息。返回參考圖1, SAP z然后開始處理CSCH指令。如果需要將清除信號 發送到I/O配置1007中與正在為CSCH處理的SCB關聯的設備,則SAP z 執行I/O路徑選擇,以確定將通過通道連接1009將清除信號傳送到所需設 備的由CSS 1000中的通道路徑標識符(CHPID)號標識的通道路徑。例如, 如果選擇了 CHPID 02或CHPID y,則SAP z可以發信號通知選定的CHPID 以執行CSCH。這是因為如混列線1008所示,這些CHPID與SAP z具有密 切關系。要了解"通道到SAP (或IOP)"密切關系的進一步說明,讀者可 參考美國專利6, 973, 529。如果需要選擇CHPID 01,則需要將具有CSCH 功能的SCB在WQ O的底部排隊,因為在該實例中,CHPID 01和SAP O具 有密切關系。然后,SAP z將必須使用"暫停/清除信號"來通知SAP 0。 一旦該SCB升到WQ 0的頂部,SAP 0就執行與SAP z之前執行的步驟相同 的步驟,除了在子通道中插入T/S以外,因為已啟動了定時。因此,WQ上 的此重新排隊進一步延長了完成CSCH操作所花費的經過時間(ET)。如果SCB在WQ 0上,且SAP O將其出隊,則SAP 0計算該CSCH的ET 并將其與CSCH的經過時間限制(ETL)比較,而非在SCB中存儲新功能T/S。 一旦選擇了路徑,SAP O就通過CSS中的電路發信號通知CHPID以執行CSCH 操作。如果CHPID忙而不能接受該信號以執行CSCH操作,則SAPO將SCB 放回WQO,并重復在本險中說明的過程。如果在重復嘗試后該忙碌情況沒 有消除,則ET最終超過ETL并調用恢復,如圖3詳細示出的。如果CHPID 01能夠處理CSCH操作,則SAP O在發信號通知CHPID 01 執行CSCH操作之后仍將SCB放回WQ 0,但是在SCB內設置了清除已發出 狀態。此刻,SCB在WQ上只是對CSCH的完成定時。當CHPID 01完成CSCH 時(這可能涉及將清除信號發送到所需設備中),CHPID 01發信號通知SAP O它已完成了CSCH。然后SAP O將SCB從WQ 0出隊并將CSCH操作的結果 報告回CP,該CP又發信號通知發出它的軟件程序。如果發生了某種阻止 CHPID發信號通知SAP 0 CSCH操作完成的問題,則ET最終超過ETL,并為 該CHPID調用恢復,如圖3所示。恢復導致該CHPID的重置,這不僅導致 CSCH完成,而且還導致該通道上的其他操作4皮重置,其可能導致一個或多 個通道控制檢查(CCC)操作。CCC處理是一種形式的SCB恢復,該SCB恢復的執行由CSS中的在CSS 與特定子通道一起工作時遇到的錯誤所導致。CCC處理的高級說明也在上 面參考的POP文檔中說明。如在CSCH操作的情況下,具有要執行的CCC 操作的SCB在WQ上排隊。同樣,作為CCC處理的一部分,通道通常被給予 將清除信號發出到與SCB關聯的設備的主動權。CSCH和CCC處理之間的一 個區別是CSS發起CCC處理,而不是在CP上運行的OS發起CCC指令(如 發起CSCH指令那樣)。盡管如此,WQ仍用于保持執行CCC操作以及對操 作完成定時的主動權。同樣,對于HSCH和CSCH操作,在WQ上將SCB重新 排隊可以出于相同的原因(例如,密切關系、忙碌路徑以及定時)而發生。CCC處理與CSCH處理之間的另一個區別是選擇的ETL。從各種錯誤恢 復導致CCC通常涉及在實際處理CCC之前重置在餘溪時與SCB —起工作的 整個通道。由于在重置通道上處理ccc的時間通常少于在已加載的通道上處理CSCH所花費的時間,所以通常將選擇的完成CCC處理的ETL設置為低 于用于CSCH處理的ETL。所以,例如,通常將CSCH處理的ETL設置為14 秒(如HSCH處理的ETL),而將CCC處理的ETL通常設置為7秒。因此, 實現定時的代碼需要具有根據功能區分各種ETL的邏輯。圖4示出了常規定時過程中工作隊列的狀態以及對子通道控制塊的定 時。在圖4中,鏈接了具有雙鏈接表(DLL)的WQ,所i^具有WQ標頭4010 中的頂部/底部指針和SCB中由4020處的箭頭指示的下一個/前一個指針。 每個SCB都示為具有要執行的SSCH、 HSCH、 CSCH或CCC操作。注意,顯示 的每個SCB ET示出了將使用圖3中的算法計算的ET,所述算法又使用每 個SCB中示出的當前T/S 4000以及任意的FUNC T/S。在該實例中,SCB 1 4001處于HSCH未發出狀態,W示SAP尚未發 信號通知CHPID執行HSCH。為該HSCH首次將SCB 1放置在WQ G上,并且 示出了在4001處未設置任何FUNC T/S值。當SAP為該HSCH首次將SCB 從WQ出隊時,將FUNC T/S設置到SCB中。SCB 2 4002處于HSCH已發出狀態,這表示HSCH #議送到通道。僅作 為一種給予SAP定時HSCH操作的主動權的方式,SAP在將HSCH發送到通 道之后重新將SCB排隊回WQ。完成發生在通道向SAP做出HSCH操作完成 的響應時,此時SAP將SCB從WQ中移除。同時,每次該SCB "上升"到隊 列頂部時,SAP將其出隊并計算ET以判定是否存在如圖3中示出的超時。 如果沒有超時,則將SCB在該WQ的底部重新排隊。該SCB將很可能已多次 出隊以檢查超時并被重新排隊,導致約4-7秒的ET。SCB 3 4003處于CSCH未發出狀態。在設置了 FUNC T/S時,很可能已 嘗試將CSCH操作發送到通道。在這種情況下,WQ 0用于向SAP提供繼續 嘗試將CSCH操作發送到通道的主動權。最可能的是,選定的通道忙并且 SCB必須在WQ上重新排隊以稍后嘗試。4003處的0. 5秒的ET反映了 SCB 3 尚未達到SCB 2重新排隊的次數。SCB 4 4004處于CSCH已發出狀態,這表示CSCH ,議送到通道。如同 SCB 2的HSCH已發出狀態,SCB將在WQ上作為對CSCH操作完成定時的方 法。但是,在這種情況下,4005處的14. 2秒的ET已超過了 ETL超時值。 很可能該SCB在WQ上重新排隊的次數多于SCB 2和SCB 3重新排隊的次數。 由于ET高于該操作的14秒的ETL,所以當將該SCB出隊時,SAP會采取適 當操作來恢復SCB 4以及通道,這又將導致CSCH操作完成。SCB 5處于CCC已發出狀態。如同HSCH已發出和CSCH已發出狀態, SCB 5將在WQ上作為一種定時CCC的方法。但是,對于CCC功能,ETL超 時不同于HSCH或CSCH功能,即,7秒對14秒。SCB6處于SSCH未發出狀態。SSCH指令未由CSS定時。因此,不同于 HSCH、 CSCH和CCC功能, 一旦將SSCH發出到通道,就不會將SCB放回WQ 以便定時。因此, 一旦發出了SSCH,則在有關SSCH的WQ利用率方面,每 操作的開銷更少。SSCH完成的速度是zSeries大型機的重要基準度量。因此,將減緩SSCH 處理的任何潛在性能瓶頸最小化很重要。多數時候,WQ上的大部分SCB通 常都具有SSCH功能要處理。但是,有時,HSCH和CSCH指令由0S用于恢 復情況中,并且CCC處理由CSS在CSS恢復操作期間啟動。0S由此發出非常大量的HSCH指令(并可能有CSCH指令)的情況實例 是當FICON通道檢測到結構外的鏈路故障并報告給OS時。當出現鏈路故障 時,OS為每個與該鏈路關聯的設備執^i殳備恢復。這可能涉及大量設備以 及大量子通道控制塊,每個都需要被發送HSCH指令并可能被發送CSCH指 令。即使有大量HSCH指令要處理,在過去對早期大型機的SSCH性能也沒 有任何顯著影響。但是,隨著引入更復雜的子通道和SCB數量顯著增加的大型機,WQ性 能可能受到影響,如果其用作〗呆持定時和處理功能(例如,HSCH、 CSCH和 CCC操作)的主動性的方法的話。增加WQ擁塞的是為定時而在WQ上多次 對同一 SCB重新排隊和/或保持上述功能的主動權的需要。同樣,通過使 SAP搜索WQ上具有未決HSCH或CSCH功能的SCB來給予HSCH和CSCH高優 先級的方法進一步推遲了處理SSCH。
因此,需要一種減少WQ瓶頸的新的操作定時技術。 發明內容根據示例性實施例,提供了使用定時隊列和指令隊列在多處理器多控 制塊環境中定時操作的方法、計算機程序產品和系統。接收到針對子通道 控制塊(SCB)的執行需被定時的操作的請求時,根據操作的經過超時限 制(ETL)在多個定時隊列之一上排隊SCB。每個操作都存在ETL,并且 多個定時隊列中的每一個都與完成操作的ETL關聯。可以將SCB放置在 定時隊列底部,定時隊列按從最早到最晚排序,此排序允許快速檢查大量 被定時的SCB。可以進行超時檢查而不必將SCB從定時隊列出隊,并且 如果定時隊列頂部(最早)的SCB操作沒有超時,則該定時隊列上的任何 其他元素都無需被檢查是否超時。接收到執行高優先級操作的請求時,CP 可將SCB排隊在高優先級指令隊列中。當為該SCB執行操作時,SAP將 來自此隊列的元素從頂部出隊。如果SAP需要重試操作,則SCB可以仍 位于定時隊列以保留定時隊列順序并將被置于高優先級指令隊列以重試操 作。完成操作或出現超時時,將SCB出隊。如果在出現超時時SCB被出 隊,則可以將其重新排隊。可以由一個或多個SAP以循環方式檢查一個或 多個定時隊列以查找SCB操作超時。在查看以下附圖及詳細說明后,對于本領域的技術人員,根據實施例 的其他系統、方法和/或計算機程序產品將是顯而易見的或將變得顯而易 見。所有此類其他系統、方法和/或計算機程序產品都旨在#>包括在本說明 中、在本發明的范圍內并由所附權利要求來保護。
在說明書結尾處的權利要求書中特別指出并明確要求保護了被視為本 發明的主題。從以下結合附圖的詳細說明中,本發明的上述和其他目標、 特性和優點是顯而易見的,這些附圖是圖1示出了常規zSeries系統;
圖2示出了如何從一天的時間中得出時間戳;圖3示出了用于定時HSCH、 CSCH或CCC操作的常規過程;圖4示出了常規zSeries系統中工作隊列的狀態以及子通道的定時;圖5示出了才艮據示例性實施例的zSeries系統;圖6示出了根據示例性實施例的用于使用定時隊列處理HSCH、 CSCH或CCC操作的方法;圖7示出了根據示例性實施例的用于定時隊列檢查的過程;圖8a示出了根據示例性實施例的分配定時隊列檢查的過程;圖8b示出了才艮據示例性實施例的由多個SAP以循環方式進4亍定時隊列檢查的過程;圖9示出了根據示例性實施例的定時隊列、指令隊列的狀態以及子通 道定時;圖10示出了根據示例性實施例的如何將定時隊列用于定時操作; 圖11示出了才艮據示例性實施例的在無需定時子通道操作時的工作隊 列的狀態。詳細的說明通過參考附圖以實例方式說明了本發明的示例性實施例以 及優點和特性。
具體實施方式
根據示例性實施例,提供了方法、系統和計算機程序產品,以便顯著 降低與定時具有各種持續時間的1/0操作相關的子通道關聯的開銷,以及 減少掃描具有要處理的HSCH、 CSCH和CCC操作的子通道的必要性。這通過 具有針對每個持續時間的單獨定時隊列(TQ)或任何SAP可用于定時I/O 操作的被定時的經過超時限制(ETL)來實現。特定TQ上的SCB或元素從 隊列頂部開始按照從"最早,,到"最晚"排序。例如,對于需要定時14 秒的1/0操作(例如,HSCH和CSCH操作),可以存在僅包含被定時14秒 的元素的TQ。對于需要被定時7秒的1/0操作(例如,CCC操作),可以 建立不同的TQ。通過在TQ的底部排隊元素且在需要定時的時間點獲得功
能時間戳來實現保持每個定時隊列中從"最早"到"最晚"的順序排列。 這確保了在該元素之前的元素"較早"(或"年齡相同",取決于定時器解決方案),并因此比剛剛在同一TQ上排隊的元素更早超時。此順序結合 將該特定TQ上的所有元素定時相同持續時間(例如,14秒或7秒)的事 實,確保了如果隊列頂部"較早"的元素沒有超時,則"較晚"的元素不 會超時。為了在已經在TQ上的元素需要從頭重新定時的情況下保持從"最早" 到"最晚"的順序,可以將該元素從TQ出隊,即使它在隊列的中間,然后 可以將它在相應TQ底部重新排隊且在排隊時獲得新的功能時間戳。例如, 如果為已針對HSCH指令處理的SCB啟動CSCH指令,則會出現這種情況。這種年齡排序的固定持續時間定時隊列結構的重要優點是在進行超時 檢查時,如果SAP TQ檢查過程(TQCHK)發現頂部隊列元素("最早"元 素)沒有超時,則SAP無需檢查該TQ上的任何其他元素,不論該TQ上定 時的元素的數量是多少。這潛在地節省了巨大的開銷。另一個優點是當進行超時檢查時,無需將任何元素出隊,除非檢測到 超時或定時的操作完成或不再需要定時。在"最早"的元素中檢測到超時 的情況下,TQCHK過程將該元素從隊列頂部出隊,并為該元素和關聯的I/O 操作啟動任何必要的恢復。新的最頂部的元素然后是"最早,,的,并且重 復TQCHK過程直至新的"最早"的元素未處于超時狀態。根據示例性實施例,可以為每個SAP提供單獨的HSCH/CSCH/CCC指令 隊列(HCCQ )來進一步流線地處理這些指令,而無需如常規定時方法中那 樣掃描隊列。此處的優點在于僅這些高優先級操作在隊列上,不需要由SAP 進行掃描,因為不需要跳過具有較低優先級SSCH操作的子通道。現在,當 SAP接收到"停止/清除信號"時,SAP只需將第一個元素從指令隊列出隊 以處理某一高優先級操作。新HCCQ的另一個優點在于WQ被釋放以僅包含 具有性能敏感啟動子通道(SSCH) 1/0操作的SCB。根據示例性實施例,可以在需要保持驅動HSCH、 CSCH或CCC功能的主 動權但也需要定時操作的情況下將SCB在TQ和HCCQ上排隊。何時可能發 生這種情況的實例是如果SAP嘗試向通iiiC出HSCH指令,而通道正忙。在 這種情況下,SAP將具有HSCH指令的SCB放回HCCQ的底部。但是,SAP 必須在它首次得到SCB的HSCH指令時開始對HSCH操作定時,因為假如通 道處于某種錯誤狀態,由此始終表現為忙,則SAP同樣需要通過將SCB放 到TQ上來對HSCH指令定時。根據一個實施例,可以在"循環"基礎上執行所有SAP間的TQ檢查, 以確保不是所有SAP都不必要地竟爭以檢查定時隊列。這避免了浪費SAP 利用率。這還允許在功能SAP間進行TQ檢查的動態重新平衡,因為在機器 運行時將SAP添加到配置或將其從配置移除。此處另 一個優點在于任何SAP 都可用于運行TQCHK過程,與哪個SAP將SCB放置在TQ上無關。圖5示出了根據示例性實施例的zSeries大型機。在該實施例中,將 TQ添加到HSA以定時具有不同持續時間的操作。添加HCCQ不僅為了改進 處理HSCH、 CSCH和CCC過程的性能,而且作為一種給予SAP在必要時重試 部分操作的主動權的方法,同時繼續定時同一ETL的操作,而不將SCB從 該定時隊列出隊。當SAP需要重試部分操作時(如它在遇到通道忙碌狀況 時那樣),它將SCB放置在HCCQ的底部以允許通道有機會變得不忙碌。SAP 將在SCB升到HCCQ頂部并被出隊之后重試該操作。在圖5示出的系統中, 已將HSCH/CSCH/CCC隊列(HCCQ)和定時隊列(TQ)添加到HSA 5002。在 圖5示出的系統中,每個SAP有一個HCCQ,每個操作ETL有一個TQ用相 同的持續時間定時。在圖5示出的實例中,需要14秒ETL的TQ 5011和7 秒ETL的TQ 5012來將CSCH或HSCH定時為14秒并將CCC操作定時為7 秒。如果需要將HSCH或CSCH定時為其他持續時間而非7秒或14秒ETL, 則可以擴展該實施例以在HSA中包括附加的TQ,每個附加的ETL —個TQ。 例如,如果CSCH需要定時為16秒,而HSCH需要定時為14秒,則可以添 加具有16秒ETL的附加TQ。如果在CP 5001上運行的軟件程序將CSCH指令發送到HSA 5002中的 SCB,則作為正常處理該指令的一部分執行CSCH的CP固件首先將CSCH功 能5006設置到SCB 5003中,然后繼續將該SCB在指令隊列HCCQ z 5004
的底部排隊。然后,CP固件使用"停止/清除信號"通過控制電路5010發 信號通知HCCQ z的所有者SAP z 5005。該信號指示具有此要處理的功能 的一個或多個SCB已在HCCQz上排隊。然后,SAPz將第一個元素從HCCQ z的頂部出隊,而不是如常規操作那樣搜索該隊列。假如在程序發出CSCH 指令之前,SCB 5003在具有SSCH的WQ z上,則CP固件首先將SCB從WQ z 出隊,然后再將它在HCCQ z底部排隊。這種首先將SCB從WQ出隊的少量 附加開銷與如常規操作那樣必須掃描WQ相比是微不足道的。圖6示出了功能處理流程及如何將TQ用于定時操作。出于示例目的, 在下文說明了 CHSC操作的處理和定時。但是,應當理解,類似的過程可以 用于處理和定時其他1/0操作,例如HSCH和CCC操作。參考圖6, 一旦SAP z將SCB 5003從HCCQ z出隊,用于該功能的處 理流程就在步驟6001開始。作為出隊過程的一部分,在步驟6001關閉SCB 中的HCCQ位以指示SCB不再在HCCQ上。如果這是第一次將該特定SCB從 該特定CHSC的HCCQ出隊,則該SCB將已不在TQ上。因此在步驟6002判 定該SCB已不在TQ上之后,通過執行步驟6003和6004來將功能時間戳 (FUNC T/S )設置到SCB中。然后,在步驟6005,將該SCB在具有該操作 可以花費的最大時間量的ETL的TQ底部排隊。例如,SCB可以在TQ14上 排隊,因為CSCH功能需要以約14秒來定時。在步驟6006處理功能的實際過程。僅大致說明了實際CSCH功能處理, 因為它與定時該功能有關。用于定時CSCH的機制可應用到其他需要定時的 功能,例如,HSCH和CCC功能。作為功能處理的一部分,功能可能需要發 信號通知其他元素以執行整體功能的一部分。例如,CSCH功能可能需要發 信號通知通道以對SCB指示的設^L行有選擇的重置。在該實施例中,SAP 嘗試發信號通知通道它必須執行其CSCH處理部分。在步驟6007判定是否 成功發信號通知通道以處理功能。如果成功發信號通知了通道,則在塊 6009, SCB停留在TQ中等待通道完成。當該SCB在定時隊列時,SAP可以 執行其他工作。實質上,CSCH過程轉為"休眠"直到通道向SAPz做出它 已完成CSCH操作的響應或在定時隊列檢查(TQCHK)過程中檢測到超時為
止,如下文將說明的。如果通道完成了操作,則通itic信號通知已經發信號通知通道的SAP, SAP在步驟6010恢復處理,在步驟6011執行一些其他 功能特定的處理,并在步驟6012將SCB從TQ出隊。此時完成CSCH操作。如果在步驟6007判定未成功發信號通知通道,例如,因為遇到了要求 CSCH操作暫停一段時間并在稍后的時間重試的某種形式的忙碌情況,則在 步驟6008通過將SCB在該SAP的HCCQ底部排隊來保持重新嘗試發信號通 知通道的主動權。因此,此時將該SCB同時在6008在SAP z的HCCQ上和 TQ 14 (之前在步驟6005排隊)上排隊以對整個CSCH操作定時。在稍后的 時刻,該SCB將在SAP處理了其他已在該隊列上的SCB之后最終升到該HCCQ 的頂部,并且對該CSCH的處理將返回到步驟6001。但是,這時SCB已在 TQ 14上,所以處理在步驟6013發生。在步驟6013,判定CSCH功能是否 需要從頭定時,例如,通過判定這是否是HSCH頂部的新CSCH。因為在該 實例中,未將CSCH發送到HSCH的頂部,所以不需要從頭定時功能,所以 處理在6006發生。如果在步驟6006處理嘗試重新發信號通知通道以處理 CSCH操作,并且重新發信號通知的嘗試也已失敗,則可以再次采取步驟 6008的處理。在兩種情況下,無論在步驟6007是否發信號通知通道,SCB 仍將在TQ上以確保操作在14秒內完成。這將參考圖7說明。對于在處理同一 SCB的HSCH指令時發出的CSCH指令,可以重置特定 SCB的定時,同時仍保持有序的定時隊列。如果在步驟6013判定由在CP 上運行的程序在HSCH指令之上發出CSCH指令,則CSCH操作的定時需要再 次重新啟動。如果該SCB的HSCH操作已在進行中,它將已在TQ上。在這 種情況下,處理前進到6014。因為在這種情況下,需要將CSCH操作定時 例如14秒,所以在步驟6014需要將HSCH操作正在進行的SCB從TQ出隊。 然后,處理在步驟6003和6004發生,并且將新的當前T/S設置到SCB的 功能T/S字段中,然后在步驟6005將SCB在TQ 14的底部排隊。在步驟 6005繼續處理該CSCH功能,并且先前描述的過程發生。將SCB在TQ底部 排隊且將FUNC T/S設置為當前T/S在有序定時隊列上保留了頂部最早底部 最晚的所需排隊順序。
圖7示出了根據示例性實施例的當分配TQCHK指令以在SAP上運行時 發生的定時隊列檢查(TQCHK)過程。當將TQCHK分配到SAP處時,在步驟 7001選擇要檢查的TQ。如以上說明的,可以由多個SAP在"循環"基礎上 檢查TQ。如果在步驟7002判定至少一個元素在TQ上,則處理在步驟7003 和7004發生。此處,通過從當前T/S(例如,從時間時鐘獲得)減去如圖 6所示的設置到SCB中的功能時間戳(FUNC T/S )來計算TQ頂部的SCB的 經過時間(ET)。在步驟7005,通過將ET與經過超時限制(ETL)相比較 并判定ET是否大于或等于TQ頂部元素的ETL,來判定該TQ頂部的SCB是 否發生超時。可以在無需將SCB從TQ出隊的情況下進行此ET和ETL的比 較。如果該SCB沒有超時,即,ET不大于或等于TQ頂部元素的ETL,則無 需在該TQ中進一步向下探尋,因為最早的元素在TQ的頂部。如果存在超 時,并且ET由此大于TQ頂部元素的ETL,則處理在7006發生,由此將SCB 從正在處理的TQ (例如TQ 14或TQ 7,如從SCB中的"隊列中,,控制所確 定的)出隊。在步驟7007,安排了功能特定的恢復操作,這可能涉及通過 恢復將其他元素i文入系統中,例如超時功能所涉及的通道或SAP。恢復將 SCB從任何它所在的隊列出隊,在SCB中將它的功能控制改為通道控制已 檢查(CCC)并將SCB在HCCQ的底部排隊。因為同樣定時了 CCC,用于定 時CCC的方法將在圖6的步驟6001中繼續進行。除了在這種情況下,CCC 功能僅需定時為例如7秒。因此,將SCB在TQ7上排隊。后續的CCC處理 導致CSCH操作完成。本領域的技術人員將理解此恢復過程的詳細信息,在 此為了簡潔而省略了其說明。雖然上面說明了恢復過程,但是還應指出的 是,在其他實施例中,在檢測到超時情況時可以分配除恢復以外的應用特 定的過程。根據示例性實施例的定時機制可用于判定操作(例如,HSCH、 CSCH、 CCC或其他實施例中的任何其他功能)是否出現超時。如果檢測到 超時,無論超時是由于持久的通道忙碌狀況或某種其他原因,可以分配任 何適當的過程(例如,恢復操作)來清除和完成操作。在恢復過程在步驟7007安排了針對該SCB的恢復之后,可以在同一 TQ中檢查其他元素以查看其他SCB是否超時。如果在步驟7002判定TQ上 存在其他元素,則采取步驟7003和7004,并在步驟7005檢查TQ頂部的 新SCB是否超時。如果TQ頂部的該新SCB沒有超時,則在步驟7008檢查 以查看系統中是否有任何其他要檢查的TQ。在該實例中,處理了 TQ 14。 所以接下來將是TQ 7,并且TQCHK過程在步驟7010繼續。 一旦完成TQ 7 的TQCHK過程且沒有其他要檢查的TQ,則在步驟7009調用過程返回。根 據示例性實施例,在圖8a和8b中示出了調用TQCHK的過程。圖8a示出了才艮據示例性實施例的如何在一個或多個SAP間分配TQCHK 過程。在步驟8001,可以在系統中的所有SAP上以定期的間隔調用"預 TQCHK"過程。分配率可以取決于超時率。如果選擇了過小的間隔,則會為 所有SAP帶來不必要的開銷。相反,如果選擇了過大的間隔,則TQCHK過 程可能無法準確地檢測超時。 一旦調用,預TQCHK就在步驟8002將"下一 個要分配TQCHK的SAP" ( NXTSCAP )字段與特定SAP自己的SAP標識符進 行比較以查看是否輪到該SAP來分配TQCHK。在一個實施例中,可以將TQCHK 存儲在可由所有SAP訪問的公共控制塊(CCB)中。圖8b示出了可以訪問 將CCB中的字段用作互鎖的多個TQ的多個SAP。如果在步驟8002判定輪到該特定SAP,則在步驟8003分配TQCHK過 程。在完成TQCHK過程之后,過程在步驟8004發生以設置NXTSAP (下一 個運行的SAP)。可以根據"運行的SAP掩碼"以循環順序將NXTSAP設置 為CCB中從當前NXTSAP字段開始的下一個運行的SAP的值。然后,預TQCHK 過程在步驟8006結束。如果在步驟8002判定沒有輪到該特定SAP來分配TQCHK過程,則在步 驟8005根據例如運行的SAP掩碼做出判定,以測試在NXTSAP字段中指示 的SAP是否可運行。如果是,處理在步驟8006發生。如果否,處理在步驟 8004發生以將NXTSAP設置為運行的SAP。持續地確保NXTSAP可運行的需 要在系統中很重要,由此可以在系統運行時添加和移除分配TQCHK過程的 處理器。這確保了在動態添加和移除SAP環境中可靠地分配TQCHK過程。 應當理解,對于移除的情況,要移除的處理器很可能需要處于空閑狀態。 本領域的技術人員將理解被從操作刪除之前確保處理器處于空閑狀態的方16
法,在此為了簡潔而省略了其細節。圖9、 10和11示出了根據示例性實施例的如何處理以上參考圖4說明 的實例。圖9示出了如何使用SCB (具有相同的HSCH、 CSCH和CCC功能以 便如圖4所示的那樣執行)來填充指令隊列HCCQ 9010和14秒TQ 9011, 兩者都具有雙鏈接表(DLL)。根據示例性實施例,顯示的每個SCB ET都 示出了可以在計算ET時使用圖7中的算法(步驟7004 )(其又使用在9000 處示出的當前T/S和設置到每個SCB中的圖4的任意FUNC T/S )。在該實 例中,SCB 1處于HSCH未發出狀態,如9001處所示,&示SAP尚未發 信號通知CHPID執行HSCH。在9010首次為了該HSCH將SCB 1放置在HCCQ 0上,并在9001示為沒有設置任何FUNC T/S值。將在SAP首次為了該HSCH 功能將SCB從HCCQ出隊時將FUNC T/S設置到SCB中,如先前圖6所示。也可能的是,在其他實施例中,CP固件可以當CP將SCB在HCCQ上排 隊時將FUNC T/S設置到SCB中,而不是當SAP將SCB從HCCQ出隊時使SAP 將FUNC T/S設置到SCB中。可以采取此操作來提高超時準確性。SCB 2在9002處于HSCH已發出狀態,這表示已將HSCH發送到通道。 要指出的是,根據示例性實施例,該SCB在9011處于TQ14上而非要定時 的WQ上。這降低了 WQ的竟爭和長度。當發生HSCH操作完成并且通道將完 成HSCH的響應送回SAP時,SAP將SCB從該TQ中移除。同時,在對其定 時時,無需根據圖7中示出的算法將其從TQ出隊。SCB 3在9003處于CSCH未發出狀態。在設置了 FUNC T/S的情況下, 嘗試將CSCH發送到通道。在這種情況下,使用9010處的HCCQ O來為SAP 提供保持嘗試將CSCH發送到通道的主動權。最可能的是,選定的通道忙, SCB必須在HCCQ上重新排隊以嘗試發信號通知通道來處理CSCH指令。當 重新嘗試時,該SCB在9011仍在TQ 14上以對整體CSCH操作定時。要指出的是,SCB中有兩組DLL鏈指針,以便能夠在需要時使SCB同 時位于2個隊列在9012處的用于HCCQ或WQ的FQ-下一個和前一個,以 及在9013處的僅在必要時用于TQ的TQ-下一個和前一個。此外要指出的是,在9014,將多個"隊列中"控制設置到SCB: HCCQ 0 和TQ 14以指示該SCB在哪個隊列。才艮據示例性實施例,可以存在"HCCQ 隊列中,,位、"WQ隊列中"位和"TQ隊列中"位以及其他指示"WQ-HCCQ 號"和"TQ號"的字段。WQ-HCCQ號是組合字段,因為SCB僅需要在WQ 上或在HCCQ上,而非同時在兩者上。在該實例中,SCB在HCCQ O和TQ 14 上。因此,在實際的SCB中,"HCCQ隊列中,,位將是開啟狀態且WQ-HCCQ 號設置為0, "TQ隊列中"位將是開啟狀態且TQ號設置為14。在其他實 施例中,可能需要多個具有相同持續時間的定時隊列。在此情況下,將元 素從定時隊列入隊和出隊的應用將需要一種方法來區分將使用哪個具有相 同持續時間的隊列。 一種方法是使用可以反映該情況的"TQ號,,的不同編 碼方案。例如,如果有兩個14秒隊列,則"TQ號"141可以標識第1個 14秒TQ,而"TQ號"142可以標識第2個14秒TQ。在任何情況下,應用 都需要了解該編碼方案,無論是否支持具有相同持續時間的多個定時方案。SCB 4在9004處于CSCH已發出狀態,這表示已將CSCH發送到通道。 如為SCB 2發出的HSCH,在9011處,該SCB在TQ 14上以便為完成CSCH 定時。但是,在此情況下,9004處的14. 2秒的ET已超過了 ETL超時值。 才艮據示例性實施例,因為ET高于該^Mt的14秒ETL,所以當如圖7和8a 所示分配TQCHK過程時,執行TQCHK過程的SAP則采取適當操作以恢復CSCH 操作,強制操作完成。圖10示出了如何將TQ用于定時CCC操作。在圖IO示出的實例中,SCB 5處于CCC已發出狀態。如HSCH已發出和CSCH已發出狀態一樣,SCB在 TQ上作為定時CCC的方法。但是,對于CCC功能,ETL超時不同于HSCH 或CSCH功能的ETL超時。例如,對于CCC功能,ETL可以是7秒。因此, 在10001處,該SCB位于7秒定時隊列TQ 7上。圖11示出了根據示例性實施例的工作隊列狀態和子通道定時。在圖 11中,SCB6處于SSCH未發出狀態。圖11中的SCB6和圖4中示出的SCB 6處于相同狀態,并且如先前那樣,無需定時SSCH指令。但是,該實例的 不同之處在于僅具有要執行的啟動子通道的SCB在圖11中的WQ上。因此, 已經實現了 WQ O上的SCB數量的減少。在該實例中,已將WQ上的SCB數
從圖4中的6個SCB減少到圖11中的1個SCB。 i^艮示了由才艮據示例性實 施例的定時技術實現的WQ瓶頸的顯著降低。雖然以上說明集中在具有7秒和14秒持續時間的操作上,但是應當理 解,可以使用專用于每個操作的ETL的定時隊列來定時具有任何持續時間 的操作。此外,如上所述,對于具有相同持續時間的操作,可以存在多個 定時隊列。在其他實施例中,可能有必要根據應用將同一類型的操作定時 為不同的持續時間。這也是可能的并可以通過上述參考圖6的方法實現。 在步驟6005,應用可以在決定它需要哪個TQ來排隊SCB及SCB "隊列中"控制的設置時考慮其他應用相關的狀態,而不是僅根據操作類型做出決定。 如上所述,實施例可以體現為實現那些過程的計算機實現的過程和裝 置的形式。在示例性實施例中,本發明體現在由一個或多個網絡元素執行 的計算機程序代碼中。實施例包括包含指令的計算機程序代碼,所述指令 體現在有形介質(例如,軟盤、CD-ROM、硬盤,或任何其他計算機可讀存 儲介質)中,其中,當計算機加載并執行計算機程序代碼時,計算機變成 實現本發明的裝置。實施例包括計算機程序代碼,例如,無論存儲在存儲 介質中,由計算機加載和/或執行,還是在某種傳輸介質上傳輸(例如,在 電線和電纜上,通過光纖,或通過電磁輻射),其中,當計算機加載和執 行計算機程序代碼時,計算機變成實現本發明的裝置。當在通用微處理器 上實現時,計算機程序代碼段配置微處理器以創建專用邏輯電路。雖然參考示例性實施例描述了本發明,但是本領域的技術人員將理解, 可以做出各種更改并可以用等價物替代其元素而不偏離本發明的范圍。此 外,可以在不偏離本發明基本范圍的情況下做出許多修改以使特定情況或 材料適合本發明的教導。因此,并非旨在將本發明限于作為實現本發明構 想的最佳模式而公開的特定實施例,而是本發明將包括所有落入所附權利 要求的范圍內的實施例。此外,術語第一、第二等的使用并不表示任何順 序或重要性,而是用于將一個元素與另一個元素進行區分。此外,術語一, 一個等的使用并不表示量的限制,而是表示存在至少一個引用的項。
權利要求
1. 一種用于在多處理器多控制塊環境中定時操作的方法,所述方法包括以下步驟接收針對子通道控制塊的執行操作的請求;根據所述操作的經過超時限制,將所述子通道控制塊在多個定時隊列 之一中排隊,其中對于每個操作都存在經過超時限制,并且所述多個定時 隊列中的每個隊列都與用于完成操作的經過超時限制相關聯;以及在完成所述操作或出現超時時,使所述子通道控制塊出隊。
2. 如權利要求l中所述的方法,其中所述排隊的步驟包括將所述子通 道控制塊放置在按照最早到最晚排序的定時隊列的底部。
3. 如權利要求l中所述的方法,還包括在接收到執行高優先級操作的 請求時,將所述子通道控制塊在高優先級指令隊列中排隊。
4. 如權利要求l中所述的方法,還包括如果在出現超時時所述定時暫 停,則將所述子通道控制塊重新排隊。
5. 如權利要求l中所述的方法,其中通過計算經過時間并確定所述經 過時間大于或等于所述經過超時限制來確定所M時。
6. 如權利要求l中所述的方法,其中檢查所述定時隊列以查找要執行 的子通道控制塊^^作。
7. 如權利要求6中所述的方法,其中以循環方式檢查所述定時隊列。
8. —種用于定時具有不同持續時間的操作的系統,所述系統包括 子通道控制塊,用于接收執行特定操作的指令;定時隊列,用于將不同的子通道控制塊排隊,其中每個定時隊列都與 具有固定的經過時間限制的子通道控制塊操作關聯,并且在接收到執行操 作的請求時,將每個子通道控制塊在與所述操作的預定經過時間限制對應 的定時隊列中排隊。
9. 如權利要求8中所述的系統,其中所述排隊的步驟包括將所述子通 道控制塊在按照最早到最晚排序的定時隊列的底部處排隊。
10. 如權利要求8中所述的系統,還包括在接收到執行高優先級操作 的指令時將子通道控制塊排隊的高優先級指令隊列。
11. 如權利要求8中所述的系統,其中如果出現超時,則將所述子通 道控制塊重新排隊。
12. 如權利要求ll中所述的系統,其中通過計算經過時間并確定所述 經過時間大于或等于所述經過超時限制來確定所述超時。
13. 如權利要求8中所述的系統,其中檢查所述定時隊列以查找要執 行的操作。
14. 如權利要求13中所述的系統,其中以循環方式檢查所述定時隊列。
全文摘要
一種定時具有不同持續時間的操作的方法和系統。接收到針對子通道控制塊(SCB)的執行需被定時的操作的請求時,根據操作的經過超時限制(ETL)在多個定時隊列之一上排隊SCB。每個操作都存在ETL并且多個定時隊列中的每個都與完成操作的ETL關聯。將SCB放置在定時隊列底部,定時隊列按從最早到最晚排序。接收到執行高優先級操作的請求時,將SCB排隊在高優先級指令隊列中。SCB可以仍位于定時隊列以保留其順序并被置于高優先級指令隊列以重試操作。完成操作或出現超時時將SCB出隊。如果在出現超時時SCB出隊,則可將其重新排隊。可以由一個或多個SAP以循環方式檢查一個或多個定時隊列以查找SCB操作超時。
文檔編號G06F11/00GK101145116SQ20071014923
公開日2008年3月19日 申請日期2007年9月7日 優先權日2006年9月14日
發明者J·S·特羅特, K·J·奧克斯 申請人:國際商業機器公司