多重設備和多重化舊版本設備的方法
2023-05-13 12:04:51 5
專利名稱:多重設備和多重化舊版本設備的方法
技術領域:
本發明涉及一種多重設備以及一種多重化舊版本設備(legacydevice)的方法。更具體地,本發明涉及一種多重設備和一種多重化舊版本設備的方法,其中舊版本設備是通過利用偽舊版本設備來多重化的。
背景技術:
近年來,通常利用工業標準技術來構造計算機系統。傳統上以專用作業系統和專用硬體構造的多重系統(multiplex)也已經由通用作業系統和通用硬體來構造。
但是,通用作業系統的設計通常不會考慮多重系統。結果,在構造多重系統時產生了一些問題。在這些問題中,多重化舊版本設備的方法變得尤為嚴重。在系統中只有一個地址的前提下,舊版本設備的地址是固定的。因此,如果作業系統在舊版本設備中檢測到故障,作業系統之後可能會停止操作。因此,需要配置多重系統,從而即使在舊版本設備中發生故障,這種故障對於作業系統是透明的。
傳統上,使用以另一模塊代替訪問舊版本設備的作業系統(此後稱為「OS」)模塊、從而實現舊版本設備的故障切換的方法。在此方法中,替代模塊截獲由OS發送給舊版本設備的請求。按照這種方式,即使在從舊版本設備返回不正確的響應的情況下,處理仍能繼續,而無需將該響應通知給作業系統。但是,此方法引起了以下一些問題。
第一個問題是由於OS的出售方通常不允許公開原始碼,為了更換模塊,需要OS的出售方提供原始碼。因此,此方法不能用於具有不能提供其原始碼的OS的系統。也就是說,能夠實現故障切換的OS是受到限制的。
第二個問題是由於更換了OS中的模塊,極大地惡化了系統以後的維護。OS的出售方根據需要針對在出貨以後發現的安全漏洞,發布安全補丁。但是,在應用補丁之前,需要考慮補丁對替代模塊的不利影響。因此,難以在用戶側應用補丁。換句話說,OS中模塊的更換極大地惡化了系統以後的維護。
結合以上描述,日本未審公開專利申請(JP-A-平成11-232206)公開了一種輸入/輸出控制電路。此輸入/輸出控制電路插入在微處理器和輸入/輸出電路之間,用於控制微處理器和輸入/輸出電路之間的數據傳輸。這裡,微處理器通過存儲器控制線、在預定的存取定時,對完成了存取操作的存儲器進行存取。輸入/輸出電路的特徵在於包括(a)存儲器接口和(b)仿真器。存儲器接口與存儲器控制線相連,從而輸入由微處理器通過存儲器控制線輸出的存取請求。仿真器在與上述預定存取定時相同的存取定時,向微處理器輸出從存儲器接口接收到的、對存取請求的響應。
此外,日本未審專利申請(JP-A-平成9-146853)公開了一種雙重計算器和一種故障恢復方法。雙重計算器包括雙重處理器(雙重CPU)、雙重輸入/輸出設備(雙重I/O)、用於彼此連接雙重CPU和雙重I/O的雙重系統總線、和I/O總線。雙重CPU彼此同步地進行操作。雙重I/O彼此同步地進行操作。在一個系統中的CPU或I/O中發生故障的情況下,另一系統中的CPU和I/O繼續可操作狀態。然後,可以對發生了故障的系統中的CPU和I/O進行維護、更換和重新組裝。雙重計算器還包括狀態存儲裝置,用於存儲每個系統中的自身狀態;以及I/O總線連接選擇裝置,用於選擇其自身系統中的CPU與其自身系統中的I/O或另一系統中的I/O相連。在維護和更換期間,在每個系統中只選擇其自身系統中的CPU與其自身系統中的I/O相連。
發明內容
因此,本發明的目的是提供一種多重設備和一種多重化舊版本設備的方法,其中可以對舊版本設備進行多重化,而無需改變作業系統中的模塊。
本發明的另一目的是提供一種多重設備和一種多重化舊版本設備的方法,其中可以實現定時器的故障切換,而無需改變作業系統中的模塊。
通過參考以下描述和附圖,本發明的這些和其他目的、特徵和優點將更容易理解。
為了實現本發明的方案,本發明提出了一種多重設備,包括配置為通過鏈路彼此相連的多個系統。所述多個系統中的每一個均包括CPU、偽舊版本設備和舊版本設備。將所述偽舊版本設備配置為與所述CPU電連接。將所述舊版本設備配置為與所述偽舊版本設備電連接。所述偽舊版本設備包括請求緩衝器和偽操作器。將所述請求緩衝器配置為在所述CPU通過所述偽舊版本設備向所述舊版本設備發送請求時,存儲所述請求。將所述偽操作器配置為根據所述請求,執行對所述舊版本設備的仿真,並存儲包括所述舊版本設備的內部狀態在內的仿真結果。
在所述多重設備中,所述偽舊版本設備還可以包括響應緩衝器、比較檢錯器和操作單元。將所述響應緩衝器配置為存儲來自所述舊版本設備的、對所述請求的響應。將所述比較檢錯器配置為將從所述響應緩衝器輸出的所述響應與從所述偽操作器輸出的期望值進行比較,其中所述期望值是通過所述仿真獲得的。將所述操作單元配置為根據所述比較結果,在所述響應和所述期望值之間發生不一致時,向所述CPU輸出所述期望值,作為所述響應。
所述多重設備還可以包括中斷控制器,配置為根據接收到的中斷通知,向所述CPU輸出中斷。當根據所述比較結果,在所述響應和所述期望值之間發生不一致時,所述操作單元可以向所述中斷控制器輸出所述中斷通知。
在所述多重設備中,所述偽舊版本設備還可以包括響應緩衝器、超時檢測器和操作單元。將所述響應緩衝器配置為存儲所述舊版本設備中、對所述請求的響應。將所述超時檢測器配置為檢測其中所述響應緩衝器不能在所述請求緩衝器接收到所述請求之後的預定時間段內接收到所述響應的超時。將所述操作單元配置為當根據所述超時,向所述CPU輸出期望值,作為所述響應,其中所述期望值是通過所述仿真獲得並由所述偽操作器輸出的。
所述多重設備還可以包括中斷控制器,配置為根據接收到的中斷通知,向所述CPU輸出中斷。所述偽舊版本設備可以包括比較檢錯器,配置為將從所述響應緩衝器輸出的所述響應與從所述偽操作器輸出的所述期望值進行比較。當根據所述比較結果,在所述響應和所述期望值之間發生不一致時,所述操作單元可以向所述中斷控制器輸出所述中斷通知。
在所述多重設備中,所述操作單元可以根據所述超時,向所述中斷控制器輸出所述中斷通知。
在所述多重設備中,所述舊版本設備可以是定時器,以及所述偽舊版本設備可以是偽定時器。
為了實現本發明的另一方案,本發明提出了一種多重化舊版本設備的方法,包括(a)設置計算機系統,所述計算機系統包括配置為通過鏈路彼此相連的多個系統,其中所述多個系統中的每一個均包括CPU;偽舊版本設備,配置為與所述CPU電連接;以及舊版本設備,配置為與所述偽舊版本設備電連接;(b)在所述CPU通過所述偽舊版本設備向所述舊版本設備發送請求時,由所述偽舊版本設備存儲所述請求;(c)由所述偽舊版本設備根據所述請求,執行對所述舊版本設備的仿真;以及(d)由所述偽隨機設備存儲包括所述舊版本設備的內部狀態在內的仿真結果。
所述多重化舊版本設備的方法還可以包括(e)由所述偽舊版本設備存儲來自所述舊版本設備的、對所述請求的響應;(f)由所述偽舊版本設備將所述響應與期望值進行比較,其中所述期望值是通過所述仿真獲得的;以及(g)由所述偽舊版本設備根據所述比較結果,在所述響應和所述期望值之間發生不一致時,向所述CPU輸出所述期望值,作為所述響應。
所述多重化舊版本設備的方法還可以包括(h)當根據所述比較結果,在所述響應和所述期望值之間發生不一致時,由所述偽舊版本設備向中斷控制器輸出中斷通知。所述中斷控制器可以根據接收到的中斷通知,向所述CPU輸出中斷。
所述多重化舊版本設備的方法還可以包括(i)由所述偽舊版本設備檢測超時,其中所述超時是所述偽舊版本設備不能在所述偽舊版本設備接收到所述請求之後的預定時間段內接收到所述響應;以及(j)由所述偽舊版本設備根據所述超時,向所述CPU輸出期望值,作為所述響應,其中所述期望值是通過所述仿真獲得的。
所述多重化舊版本設備的方法還可以包括(k)由所述偽舊版本設備存儲來自所述舊版本設備的、對所述請求的響應;(1)由所述偽舊版本設備將從所述響應與期望值進行比較,其中所述期望值是通過所述仿真獲得的;以及(m)當根據所述比較結果,在所述響應和所述期望值之間發生不一致時,由所述偽舊版本設備向中斷控制器輸出中斷通知。所述中斷控制器可以根據接收到的中斷通知,向所述CPU輸出中斷。
所述多重化舊版本設備的方法還可以包括(n)由所述偽舊版本設備根據所述超時,向所述中斷控制器輸出所述中斷通知。
在所述多重化舊版本設備的方法中,所述舊版本設備可以是定時器,以及所述偽舊版本設備可以是偽定時器。
圖1是示出了根據本發明第一實施例中的多重設備的結構的方框圖;圖2是示出了根據本發明第一實施例中的多重設備的操作的時序圖;圖3是示出了根據本發明第一實施例中的多重設備的另一操作的時序圖;圖4是示出了根據本發明第二實施例中的多重設備的結構的方框圖;圖5是示出了根據本發明第二實施例中的多重設備的操作的時序圖;圖6是示出了根據本發明第三實施例中的多重設備的結構的方框圖;圖7是示出了偽操作器的方框圖;圖8是示出了根據本發明第三實施例中的多重設備的操作的時序圖;圖9是示出了根據本發明第三實施例中的多重設備的另一操作的時序圖;圖10是示出了根據本發明第三實施例中的多重設備的另一操作的時序圖;圖11是示出了根據本發明第三實施例中、多重化舊版本設備的方法中的故障切換處理的流程圖;以及圖12是示出了另一偽操作器的方框圖。
具體實施例方式
下面,將參照附圖,對根據本發明的多重設備和多重化舊版本設備的方法的實施例進行描述。
(第一實施例)將參照附圖,對第一實施例中的多重設備的結構進行描述。圖1是示出了根據本發明第一實施例中的多重設備的結構的方框圖。多重設備包括第一系統10和第二系統20,以雙重計算機系統進行舉例說明,雙重計算機系統是多重計算機系統的一個示例。第一系統10包括CPU 1000、存儲器控制器1100、存儲器1200、偽舊版本設備1300、中斷控制器1400、I/O控制器1500、和舊版本設備1600。類似地,第二系統20包括CPU 2000、存儲器控制器2100、存儲器2200、偽舊版本設備2300、中斷控制器2400、I/O控制器2500、和舊版本設備2600。
這裡,基本上是對步伐一致(lockstep)系統的多重設備進行解釋。具體地,圖1所示的CPU 1000和2000、存儲器控制器1100和2100、存儲器1200和2200、偽舊版本設備1300和2300、以及中斷控制器1400和2400執行步伐一致的操作。對於舊版本設備1600和2600,一個進行有效地操作,而另一個待機。下面,將只描述第一系統10的結構。但是,第二系統20的結構(類似於2000的參考數字)與第一系統10相同。
在正常操作期間,作業系統(此後稱為「OS」)在CPU 1000中進行運行。OS訪問存儲器1200、I/O控制器1500和在I/O控制器2500的控制下的I/O設備。當通知系統管理中斷(稱為「SMI」)時,之後不久,CPU1000將操作切換到BIOS(未示出)內部的系統管理中斷處理器。在系統管理中斷處理器完成處理時,CPU 1000將操作切換到OS。
在從CPU 1000所操作的OS或BIOS向舊版本設備發出請求的情況下,存儲器控制器1100將該請求傳輸給偽舊版本設備1300。存儲器控制器1100接收來自偽舊版本設備1300的、對所述請求的響應。在針對除舊版本設備1600以外的其他設備的請求的情況下,存儲器控制器1100將該請求傳輸給I/O控制器1500。之後,存儲器控制器1100接收來自I/O控制器1500的、對所述請求的響應。
偽舊版本設備1300包括上I/F 1301、下I/F 1302、請求緩衝器1303、偽操作器1304、響應緩衝器1305、比較檢錯器1306、響應選擇器1307、超時檢測器1308和操作控制器1309。
上I/F 1301接收針對舊版本設備1600的請求,然後將該請求傳輸給請求緩衝器1303。此外,上I/F 1301通過響應選擇器1307接收對請求的響應,然後將該響應傳輸給存儲器控制器1100。
請求緩衝器1303在其中保存從上I/F 1301傳輸過來的請求。與此同時,請求緩衝器1303向下I/F 1302傳輸該請求。
下I/F 1302向I/O控制器1500傳輸由請求緩衝器1303傳輸過來的請求。下I/F 1302接收來自I/O控制器1500的響應,然後將接收到的響應傳送到響應緩衝器1305。
在接收到由I/O控制器1500傳輸過來的響應時,響應緩衝器1305通知偽操作器1304接收到響應。
當從響應緩衝器1305通知偽操作器1304接收到響應時,偽操作器1304從請求緩衝器1303中獲取與該響應對應的請求。之後,偽操作器1304通過根據所獲取的請求執行仿真,掌握舊版本設備1600的內部狀態,然後將所述內部狀態存儲(即更新)在其中。與此同時,偽操作器1304通過執行仿真,產生針對所獲取的請求的響應的期望值。偽操作器1304將期望值通知給比較檢錯器1306。此時,從請求緩衝器1303中刪除所獲取的請求。
比較檢錯器1306將由偽操作器1304產生的期望值與從舊版本設備接收到的響應進行比較,從而確認不一致的發生。在發生不一致的情況下,比較檢錯器1306通知操作控制器1309發生不一致。
超時檢測器1308監控請求緩衝器1303和響應緩衝器1305。如果超時檢測器1308檢測到在預定的時間段或更長的時間內仍未返迴響應的請求,則超時檢測器1308將該事件通知給操作控制器1309。
操作控制器1309根據來自比較檢錯器1306和超時檢測器1308的通知,判斷在舊版本設備1600中是否發生故障。然後,操作控制器1309控制操作模式。如果在舊版本設備中發生故障,則操作控制器1309將該事件通知給中斷控制器1400。
響應選擇器1307根據操作控制器1309的指令,向上I/F 1301輸出來自偽操作器1304的響應和來自響應緩衝器1305的響應之一。
I/O控制器1500向舊版本設備1600和舊版本設備2600中有效的一個傳輸由CPU 1000或偽舊版本設備1300發出的請求。I/O控制器1500向CPU 1000或偽舊版本設備1300傳輸來自舊版本設備1600或舊版本設備2600的響應。
中斷控制器1400接收來自操作控制器1309的、對舊版本設備中發生故障的通知。然後,中斷控制器1400根據故障、在CPU 1000中執行中斷。
接下來,將參照附圖,對根據本發明第一實施例中的多重化舊版本設備的方法(即對其應用了偽舊版本設備的多重設備的操作)進行描述。這裡,假設舊版本設備1600是有效的,而舊版本設備2600待機。
附帶地,在本實施例中省略了交叉橋和I/O總線(將在第三實施例中描述),因為其並不與操作直接相關。
圖2是示出了根據本發明第一實施例中的多重設備的操作(多重化舊版本設備的方法)的時序圖。
首先,將描述正常操作。
在時刻T1,作業系統(OS=CPU 1000)創建針對舊版本設備1600的請求1。OS通過存儲器控制器1100向偽舊版本設備1300傳輸請求1。然後,偽舊版本設備1300接收請求1(步驟S01)。
偽舊版本設備1300中的上I/F 1301向請求緩衝器1303傳輸接收到的請求1。請求緩衝器1303將請求1保存在其中,並且將請求1傳輸給下I/F 1302。下I/F 1302將請求1傳輸給I/O控制器1500。I/O控制器1500將請求1傳輸給舊版本設備1600(步驟S02)。
舊版本設備1600響應請求1產生響應1,然後將響應1傳輸給I/O控制器1500。I/O控制器1500將接收到的響應1傳輸給偽舊版本設備1300(步驟S03)。
偽舊版本設備1300中的下I/F 1302將接收到的響應1傳輸給響應緩衝器1305。響應緩衝器1305將響應1保存在其中。響應緩衝器1305通知偽操作器1304接收到響應1。偽操作器1304從請求緩衝器1303中獲得與響應緩衝器1305所接收到的響應1相對應的請求1。然後,偽操作器1304執行針對舊版本設備1600的偽操作(即仿真)。在此偽操作中,更新存儲在偽操作器1304中的舊版本設備1600的內部狀態,並且產生與請求1相對應的響應的期望值1。比較檢錯器1306將偽操作器1304產生的期望值1與響應1進行比較,然後向操作控制器1309傳輸比較結果。在期望值1和響應1之間未發生不一致的情況下,操作控制器1309指示響應選擇器1307將由舊版本設備1600傳輸過來的響應1返回給OS。由舊版本設備1600傳輸過來的響應1存儲在響應緩衝器1305中。響應選擇器1307從響應緩衝器1305接收響應1,然後通過上I/F 1301向OS輸出響應1(步驟S04)。
當舊版本設備正常操作時,如上實現根據本發明的多重化舊版本設備的方法。
下面,將描述在舊版本設備1600中發生故障的情況。
在時刻T2,OS創建針對舊版本設備1600的請求2。OS通過存儲器控制器1100向偽舊版本設備1300傳輸請求2。然後,偽舊版本設備1300接收請求2(步驟S05)。
偽舊版本設備1300中的上I/F 1301向請求緩衝器1303傳輸接收到的請求2。請求緩衝器1303將請求2保存在其中,並且將請求2傳輸給下I/F 1302。下I/F 1302將請求2傳輸給I/O控制器1500。I/O控制器1500將請求2傳輸給舊版本設備1600(步驟S06)。
舊版本設備1600響應請求2產生響應2,然後將響應2傳輸給I/O控制器1500。I/O控制器1500將接收到的響應2傳輸給偽舊版本設備1300(步驟S07)。
偽舊版本設備1300中的下I/F 1302將接收到的響應2傳輸給響應緩衝器1305。響應緩衝器1305將響應2保存在其中。響應緩衝器1305通知偽操作器1304接收到響應2。偽操作器1304從請求緩衝器1303中獲得與響應緩衝器1305所接收到的響應2相對應的請求2。然後,偽操作器1304執行針對舊版本設備1600的偽操作,由此產生與請求2相對應的響應的期望值2。比較檢錯器1306將偽操作器1304產生的期望值2與響應2進行比較,然後向操作控制器1309傳輸比較結果。操作控制器1309識別出在期望值2和響應2之間發生不一致(步驟S08)。
操作控制器1309通過中斷控制器1400向CPU 1000通知系統中斷(步驟S09)。
與此通知並行地,操作控制器1309指示響應選擇器1307將由偽操作器1304產生的期望值2返回給OS。響應選擇器1307接收來自偽操作器1304的期望值2,然後通過上I/F 1301向OS輸出期望值2,作為響應2(步驟S10)。
之後,由OS分別在時刻T3和T4發出的針對舊版本設備1600的請求3和4(步驟S11和S13)不能傳輸到舊版本設備1600。但是,分別將在偽舊版本設備1300中產生的期望值3和4返回給OS,作為響應3和4(步驟S12和S14)。在此操作期間,偽操作器1304根據請求3和4的內容,仿真舊版本設備1600的內部狀態,由此產生期望值3和4。
在時刻T5,BIOS啟動故障切換處理(步驟S15)。BIOS查閱舊版本設備1600的內部狀態。將內部狀態存儲在偽操作器1304中(步驟S16和S17)。BIOS根據舊版本設備1600的內部狀態,設置舊版本設備2600(步驟S18和S19)。按照這種方式,BIOS結束故障切換處理(步驟S20)。
在完成故障切換處理時,啟動操作,舊版本設備2600處於有效狀態。在時刻T6,OS創建請求5,然後通過偽舊版本設備1300和I/O控制器1500(步驟S21)向舊版本設備2600傳輸請求5(步驟S22)。舊版本設備2600產生響應5,然後通過偽舊版本設備1300和I/O控制器1500(步驟S23),將響應5返回給OS(步驟S24)。
如上所述,在舊版本設備1600中發生故障的情況下,實現了根據本發明的、多重化舊版本設備的方法。
圖3是示出了根據本發明第一實施例中的多重設備的另一操作(多重化舊版本設備的方法)的時序圖。
這裡,將描述在發生響應超時的情況下的操作。
在時刻T7,OS創建針對舊版本設備1600的請求6。OS通過存儲器控制器1100向偽舊版本設備1300傳輸請求6。然後,偽舊版本設備1300接收請求6(步驟S31)。偽舊版本設備1300按照上述相同的步驟,通過I/O控制器1500向舊版本設備1600傳輸請求6(步驟S32)。
在時刻T8,超時檢測器1308監控請求緩衝器1303和響應緩衝器1305,然後確定即使在接收到請求6之後已經過去了預定的時間段AT(等於從時刻T8中減去時刻T7而獲得的數值)之後,仍未從舊版本設備1600返迴響應6。超時檢測器1308通知操作控制器1309發生響應超時(步驟S33)。
操作控制器1309識別出響應超時的發生。操作控制器1309通過中斷控制器1400將系統管理中斷通知給CPU 1000(步驟S34)。
與此操作並行地,操作控制器1309指示響應選擇器1307將由偽操作器1304產生的針對響應6的期望值6返回給OS。響應選擇器1307接收來自偽操作器1304的期望值6,然後通過上I/F 1301向OS輸出期望值6,作為響應6(步驟S35)。之後,按照與響應和期望值之間發生不一致的情況相同的方式,啟動舊版本設備1600中的故障切換處理(上述步驟S15到S20)。
如上所述,在發生響應超時的情況下,實現了根據本發明的、多重化舊版本設備的方法。
按照這種方式,根據本發明,藉助於偽舊版本設備1300,可以多重化舊版本設備,而無需改變作業系統中的任何模塊。
(第二實施例)將參照附圖,對第二實施例中的多重設備的結構進行描述。圖4是示出了根據本發明第二實施例中的多重設備的結構的方框圖。與圖1所示的第一實施例相比,在第二實施例的多重設備中,以故障切換控制器1700和2700代替中斷控制器1400和2400。
在圖1所示的第一實施例中,CPU 1000執行故障切換處理。相反,在圖4所示的本實施例中,故障切換控制器1700執行故障切換處理。具體地,如果在由圖1所示的第一實施例中的偽操作器1304產生的期望值中發生錯誤,CPU 1000(即稱為「OS」的作業系統)也可能會錯誤地進行操作。相反,在圖4所示的本實施例中,並不將由偽舊版本設備產生的期望值返回OS,所以OS不會錯誤地進行操作。
其他結構與第一實施例中相同,因此將省略對其的詳細解釋。
圖5是示出了根據本發明第二實施例中的多重設備的操作(多重化舊版本設備的方法)的時序圖。同樣,在本實施例中,假設舊版本設備1600有效,舊版本設備2600待機。
正常操作與第一實施例相同,因此,將省略對其的詳細解釋。下面,將描述在舊版本設備1600中發生故障的情況下的操作。
在時刻T9,OS(即CPU 1000)創建針對舊版本設備1600的請求7。OS通過存儲器控制器1100向偽舊版本設備1300傳輸請求7。然後,偽舊版本設備1300接收請求7(步驟S41)。
偽舊版本設備1300中的上I/F 1301向請求緩衝器1303傳輸接收到的請求7。請求緩衝器1303將請求7保存在其中,並且將請求7傳輸給下I/F 1302。下I/F 1302將請求7傳輸給I/O控制器1500。I/O控制器1500將請求7傳輸給舊版本設備1600(步驟S42)。
舊版本設備1600響應請求7產生響應7,然後將響應7傳輸給I/O控制器1500。I/O控制器1500將接收到的響應7傳輸給偽舊版本設備1300(步驟S43)。
偽舊版本設備1300中的下I/F 1302將接收到的響應7傳輸給響應緩衝器1305。響應緩衝器1305將響應7保存在其中。響應緩衝器1305通知偽操作器1304接收到響應7。偽操作器1304從請求緩衝器1303中獲得與響應緩衝器1305所接收到的響應7相對應的請求7,然後,執行偽操作,由此產生與請求7相對應的響應的期望值7。比較檢錯器1306將偽操作器1304產生的期望值7與響應7進行比較,然後向操作控制器1309傳輸比較結果。操作控制器1309識別出在期望值7和響應7之間發生不一致(步驟S44)。
操作控制器1309通知故障切換控制器1700在期望值7和響應7之間發生不一致(步驟S45)。
在操作控制器1309通知故障切換控制器1700在舊版本設備中發生故障時,故障切換控制器1700啟動故障切換處理(步驟S46)。故障切換控制器1700查閱舊版本設備1600的內部狀態(步驟S47和S48)。將內部狀態存儲在偽操作器1304中。故障切換控制器1700根據舊版本設備1600的內部狀態,通過I/O控制器1500設置舊版本設備2600(步驟S49和S50)。按照這種方式,故障切換控制器1700結束故障切換處理(步驟S51)。
在完成故障切換處理時,啟動操作,舊版本設備2600處於有效狀態。偽舊版本設備1300中的請求緩衝器1303通過下I/F 1302和I/O控制器1500向舊版本設備2600傳輸請求7(步驟S52)。舊版本設備2600響應請求7產生響應7,然後通過I/O控制器1500,將響應7返回給偽舊版本設備1300(步驟S53)。之後,按照與正常操作相同的方式,偽舊版本設備1300將響應7返回給OS。之後,在時刻T10,通過偽舊版本設備1300和I/O控制器1500,向舊版本設備2600傳輸由OS發出的針對舊版本設備的請求8(步驟S55、S56)。然後,通過偽舊版本設備1300和I/O控制器1500,向OS傳輸由舊版本設備2600輸出的、響應於請求8的響應8(步驟S57、S58)。
在第二實施例中,同樣可以獲得與第一實施例相同的效果。此外,在第二實施例中,不能將由偽舊版本設備1300產生的期望值返回到OS(即CPU 1000),由此防止了OS中錯誤操作的發生。
(第三實施例)將參照附圖,對第三實施例中的多重設備的結構進行描述。圖6是示出了根據本發明第三實施例中的多重設備的結構的方框圖。多重設備包括第一系統30和第二系統40,以雙重計算機系統進行舉例說明,雙重計算機系統是多重計算機系統的一個示例。第一系統30包括CPU 3000、存儲器控制器3100、存儲器3200、偽定時器3300、交叉橋3400、I/O控制器3500、定時器3600、中斷控制器3700和I/O總線3800。類似地,第二系統40包括CPU 4000、存儲器控制器4100、存儲器4200、偽定時器4300、交叉橋4400、I/O控制器4500、定時器4600、中斷控制器4700和I/O總線4800。
這裡,基本上是對步伐一致系統的多重設備進行解釋。具體地,圖6所示的CPU 3000和4000、存儲器控制器3100和4100、存儲器3200和4200、以及偽定時器3300和4300執行步伐一致的操作。此外,對於I/O控制器3500和4500、定時器3600和4600以及中斷控制器3700和4700,一個進行有效地操作,而另一個待機。下面,將只描述第一系統30的結構。但是,第二系統40的結構(類似於4000的參考數字)與第一系統30相同。
在正常操作期間,作業系統(此後稱為「OS」)在CPU 3000中進行操作。OS訪問存儲器3200、I/O控制器3500和在I/O控制器4500的控制下的I/O設備。當通知系統管理中斷(稱為「SMI」)時,之後不久,CPU 3000將操作切換到BIOS(未示出)內部的系統管理中斷處理器。在系統管理中斷處理器完成處理時,CPU 3000將操作切換到OS。
在從OS或BIOS向I/O設備發出請求的情況下,存儲器控制器3100將該請求傳輸給偽定時器3300。存儲器控制器3100接收來自偽定時器3300的、對所述請求的響應。
附帶地,在針對除定時器3600以外的其他設備的請求的情況下,存儲器控制器3100可以將該請求傳輸給交叉橋3400。在這種情況下,存儲器控制器3100接收來自交叉橋3400的、對所述請求的響應。此時,通過存儲器控制器3100和交叉橋3400之間的配線(未示出)來執行傳輸/接收。
偽定時器3300包括上I/F 3301、請求緩衝器3302、超時檢測器3303、操作控制器3304、下I/F 3305、定時器中斷檢測器3306、響應緩衝器3307、比較檢錯器3308、響應選擇器3309、和偽操作器3310。
上I/F 3301接收針對I/O設備的請求,然後將該請求傳輸給下I/F 3305和請求緩衝器3302。此外,當上I/F 3301接收到對CPU 3000的響應或請求時,上I/F 3301向存儲器控制器3100傳輸該響應或請求。
請求緩衝器3302判定從上I/F 3301傳輸過來的請求是否訪問定時器3600或4600,然後在針對定時器3600或4600的請求的情況下,保存該請求的副本。
下I/F 3305向交叉橋3400傳輸由上I/F 3301傳輸過來的請求。下I/F 3305通過交叉橋3400接收來自I/O設備的響應,然後將接收到的響應傳送到響應緩衝器3307。
在接收到由下I/F 3305傳輸過來的響應數據時,響應緩衝器3307通知偽操作器3310接收到響應數據。
當從響應緩衝器3307通知偽操作器3310接收到響應時,偽操作器3310從請求緩衝器3302中獲取與該響應對應的請求。偽操作器3310產生針對所獲取的請求的響應的期望值,然後將期望值通知給比較檢錯器3308。此時,從請求緩衝器3302中刪除所獲取的請求。
比較檢錯器3308將由偽操作器3310產生的期望值與從定時器接收到的響應數據進行比較,從而確認是否發生不一致。在發生不一致的情況下,比較檢錯器3308通知操作控制器3304發生不一致。
超時檢測器3303監控請求緩衝器3302和響應緩衝器3307。如果超時檢測器3303檢測到在預定的時間段或更長的時間內仍未返迴響應的請求,則超時檢測器3303將該事件通知給操作控制器3304。
操作控制器3304根據來自比較檢錯器3308和超時檢測器3303的通知,判斷在定時器3600中是否發生故障,然後對操作模式進行控制。如果在定時器中發生故障,則操作控制器3304跳過0S,向CPU 3000發出系統管理中斷。BIOS處理系統管理中斷,而OS不會感知到任何系統管理中斷的產生。
響應選擇器3309根據操作控制器3304的指令,向上I/F 3301輸出偽操作器3310中的響應和響應緩衝器3307中的響應之一。
定時器中斷檢測器3306檢測從中斷控制器3700輸出的中斷請求,然後將該中斷請求通知給偽操作器3310。
交叉橋3400向定時器3600和定時器4600中有效的一個傳輸由偽定時器3300發出的請求。交叉橋3400向偽定時器3300傳輸來自定時器3600或定時器4600的響應。此外,交叉橋3400接收來自I/O控制器3500或I/O控制器4500的響應和中斷請求,然後將其傳輸給偽定時器3300。
I/O控制器3500向I/O總線3800傳輸來自交叉橋3400或交叉橋4400的請求。
定時器3600接收來自I/O總線3800的請求,然後將響應傳輸到I/O總線3800上。定時器3600適合於接收至少四個請求計數器模式設置、計數器值加載、計數器模式讀取和計數器值讀取。
發出計數器模式設置請求,用於設置計數器的操作模式。根據中斷的類型,至少將計數器的操作模式設置為周期中斷模式或一次性(one-shot)中斷模式。
發出計數器值加載請求,用於加載定時器3600的計數器值。計數器3600以在加載計數器值時設置的計數器模式開始操作。計數器3600將計數器值遞減1,然後在計數器值變為0時產生中斷。
在周期中斷模式的情況下,在計數器值變為0時,將計數器值重新設置為最後加載的數值,然後再次開始對計數器值的計數。相反,在一次性中斷模式的情況下,在計數器值變為0時,停止操作。
中斷控制器3700接收來自定時器3600的中斷,然後向I/O總線3800傳輸中斷請求。
圖7是示出了偽操作器3310的方框圖。偽操作器3310包括請求解碼器3311、計數器值單元3312、加載值單元3313、計數器模式單元3314、中斷狀態單元3315、相加值單元3316、加法單元3317、MUX3318和另一MUX 3319。計數器值單元3312存儲計數器值。加載值單元3313存儲加載值。計數器模式單元3314存儲計數器模式。中斷狀態單元3315存儲中斷狀態。相加值單元3316存儲相加值。加法單元3317存儲加法結果。
請求解碼器3311解碼來自請求緩衝器3302的請求,此外更新偽操作器3310中的計數器值(3312)、加載值(3313)、計數器模式(3314)和中斷狀態(3315)。下面,將對更新方法進行描述。
計數器值(3312)仿真定時器3600中的計數器值。具體地,在發出計數器值加載請求(從請求緩衝器3302獲得)的情況下,以要加載到定時器3600的數值更新計數器值(3312)。
在發出計數器值讀取請求(從請求緩衝器3302獲得)的情況下,以從定時器3600接收到的響應的數值更新計數器值。
在定時器3600中發生故障期間,發出計數器值讀取請求(從請求緩衝器3302獲得)的情況下,返回通過將相加值(3316)與計數器值(3312)相加而獲得的數值,作為返回值,之後以返回值更新計數器值(3312)。這裡,相加值3316並不總是正值,也可以是負值。
加載值(3313)是加載到定時器3600的數值。具體地,在根據計數器值加載請求(從請求緩衝器3302獲得)將數值加載到定時器3600中的計數器上的情況下,加載值(3313)是加載到定時器3600中的計數器上的數值。加載值(3313)用於定時器3600的故障切換。
計數器模式(3314)是設置在定時器3600中的模式。具體地,在以計數器模式設置請求(從請求緩衝器3302獲得)設置計數器模式的情況下,計數器模式(3314)是設置為計數器模式的數值。此外,計數器模式單元3314向中斷狀態單元3315輸出表示計數器的中斷模式是周期的還是一次性的信號。
中斷狀態(3315)是表示定時器3600中是否產生一次性中斷的數值。具體地,當在根據計數器模式設置請求(從請求緩衝器3302獲得)將定時器3600設置為一次性中斷模式的狀態下啟動計數時,設置1。相反,當定時器中斷檢測器3306通知定時器中斷的出現時,設置0。與此同時,在定時器處於周期中斷模式的情況下,始終設置0。
相加值(3316)是預設值。這裡,預設值並不總是正值,也可以是負值。
MUX 3318根據請求的解碼結果,向計數器值單元3312輸出適當的數值。MUX 3319根據請求的解碼結果,向比較檢錯器3308輸出適當的期望值。
接下來,將參照附圖,對根據本發明第三實施例中的多重化舊版本設備的方法(即對其應用了偽舊版本設備的多重設備的操作)進行描述。在本實施例中,偽舊版本設備是偽定時器。這裡,假設I/O控制器3500、定時器3600和中斷控制器3700是有效的,而I/O控制器4500、定時器4600和中斷控制器4700待機。
圖8是示出了根據本發明第三實施例中的多重設備的操作(多重化舊版本設備的方法)的時序圖。下面,將描述定時器的中斷模式為周期中斷模式的情況下的操作。
在時刻T1,作業系統OS(即CPU 3000)創建針對定時器3600的請求1。請求1是計數器模式設置請求,此外,中斷模式是周期中斷模式。OS通過存儲器控制器3100向用作偽舊版本設備的偽定時器3300傳輸請求1。然後,偽定時器3300接收請求1(步驟S71)。
偽定時器3300中的上I/F 3301向下I/F 3305和請求緩衝器3302傳輸接收到的請求1。下I/F 3305將請求1傳輸給交叉橋3400。請求緩衝器3302將請求1的副本保存在其中。交叉橋3400將請求1傳輸給處於有效狀態的I/O控制器3500。I/O控制器3500通過I/O總線3800將請求1傳輸給定時器3600(步驟S72)。
定時器3600響應請求1產生響應1,然後將響應1傳輸給I/O控制器3500。I/O控制器3500將接收到的響應1傳輸給偽定時器3300中的下I/F 3305(步驟S73)。
下I/F 3305將接收到的響應1傳輸給響應緩衝器3307。響應緩衝器3307將響應1保存在其中,此外,將此接收通知給偽操作器3310。偽操作器3310從請求緩衝器3302中獲得與響應緩衝器3307所接收到的響應1相對應的請求1。請求解碼器3311解碼所獲得的請求1。請求1是計數器模式設置請求。結果,計數器模式單元3314將響應1的模式(即設置在定時器3600中的模式)保存在其中(步驟S74)。
由於請求1是計數器模式設置請求,比較檢錯器3308不將響應1與期望值1進行比較。比較檢錯器3308將此事實傳輸給操作控制器3304。操作控制器3304指示響應選擇器3309將存儲在響應緩衝器3307中的、來自定時器3600的響應1返回給CPU 3000。響應選擇器3309向上I/F 3301輸出響應1。上I/F 3301通過存儲器控制器3100將響應1返回給CPU 3000(即OS)(步驟S75)。
接下來,在時刻T2,OS創建針對定時器3600的請求2。請求2是計數器值加載請求。OS通過存儲器控制器3100向用作偽舊版本設備的偽定時器3300傳輸請求2。然後,偽定時器3300接收請求2(步驟S76)。
偽定時器3300中的上I/F 3301向下I/F 3305和請求緩衝器3302傳輸接收到的請求2。下I/F 3305將請求2傳輸給交叉橋3400。請求緩衝器3302將請求2的副本保存在其中。交叉橋3400將請求2傳輸給處於有效狀態的I/O控制器3500。I/O控制器3500通過I/O總線3800將請求2傳輸給定時器3600(步驟S77)。
定時器3600響應請求2產生響應2,然後將響應2傳輸給I/O控制器3500。I/O控制器3500將接收到的響應2傳輸給偽定時器3300中的下I/F 3305(步驟S78)。
下I/F 3305將接收到的響應2傳輸給響應緩衝器3307。響應緩衝器3307將響應2保存在其中,此外,將此接收通知給偽操作器3310。偽操作器3310從請求緩衝器3302中獲得與響應緩衝器3307所接收到的響應2相對應的請求2。請求解碼器3311解碼所獲得的請求2。請求2是計數器值加載請求。結果,以響應2的值(即加載到定時器3600上的數值)更新加載值(3313)(步驟S79)。
由於請求2是計數器值加載請求,比較檢錯器3308不將響應2與期望值2進行比較。比較檢錯器3308將此事實傳輸給操作控制器3304。操作控制器3304指示響應選擇器3309將存儲在響應緩衝器3307中的、來自定時器3600的響應2返回給CPU 3000。響應選擇器3309向上I/F 3301輸出響應2。上I/F 3301通過存儲器控制器3100將響應2返回給CPU 3000(即OS)(步驟S80)。
此外,在時刻T3,OS(即CPU 3000)創建針對定時器3600的請求3。請求3是計數器值讀取請求。OS通過存儲器控制器3100向用作偽舊版本設備的偽定時器3300傳輸請求3。然後,偽定時器3300接收請求3(步驟S81)。
偽定時器3300中的上I/F 3301向下I/F 3305和請求緩衝器3302傳輸接收到的請求3。下I/F 3305將請求3傳輸給交叉橋3400。請求緩衝器3302將請求3的副本保存在其中。交叉橋3400將請求3傳輸給處於有效狀態的I/O控制器3500。I/O控制器3500通過I/O總線3800將請求3傳輸給定時器3600(步驟S82)。
定時器3600響應請求3產生響應3,然後將響應3傳輸給I/O控制器3500。I/O控制器3500將接收到的響應3傳輸給偽定時器3300中的下I/F 3305(步驟S83)。
下I/F 3305將接收到的響應3傳輸給響應緩衝器3307。響應緩衝器3307將響應3保存在其中,此外,將此接收通知給偽操作器3310。偽操作器3310從請求緩衝器3302中獲得與響應緩衝器3307所接收到的響應3相對應的請求3。請求解碼器3311解碼所獲得的請求3。請求3是計數器值讀取請求。結果,以響應3的值更新計數器值(3312)(步驟S84)。
由於請求3是計數器值讀取請求,比較檢錯器3308不將響應3與期望值3進行比較。比較檢錯器3308將此事實傳輸給操作控制器3304。操作控制器3304指示響應選擇器3309將存儲在響應緩衝器3307中的、來自定時器3600的響應3返回給CPU 3000。響應選擇器3309向上I/F 3301輸出響應3。上I/F 3301通過存儲器控制器3100將響應3返回給CPU 3000(即OS)(步驟S85)。
此外,在時刻T4,OS(即CPU 3000)創建針對定時器3600的請求4。請求4是計數器模式讀取請求。OS通過存儲器控制器3100向用作偽舊版本設備的偽定時器3300傳輸請求4。然後,偽定時器3300接收請求4(步驟S86)。
偽定時器3300中的上I/F 3301向下I/F 3305和請求緩衝器3302傳輸接收到的請求4。下I/F 3305將請求4傳輸給交叉橋3400。請求緩衝器3302將請求4的副本保存在其中。交叉橋3400將請求4傳輸給處於有效狀態的I/O控制器3500。I/O控制器3500通過I/O總線3800將請求4傳輸給定時器3600(步驟S87)。
定時器3600響應請求4產生響應4,然後將響應4傳輸給I/O控制器3500。I/O控制器3500將接收到的響應4傳輸給偽定時器3300中的下I/F 3305(步驟S88)。
下I/F 3305將響應4傳輸給響應緩衝器3307。響應緩衝器3307將響應4保存在其中,此外,將此接收通知給偽操作器3310。偽操作器3310從請求緩衝器3302中獲得與響應緩衝器3307所接收到的響應4相對應的請求4。請求解碼器3311解碼所獲得的請求4。請求4是計數器模式讀取請求。當請求解碼器3311確認請求4是模式讀取請求時,請求解碼器3311根據請求4產生期望值4,作為預期要從定時器3600返回的模式值。然後,請求解碼器3311向比較檢錯器3308輸出期望值4。比較檢錯器3308將響應緩衝器3307中的響應4與期望值4進行比較,之後,向操作控制器3304輸出比較結果。操作控制器3304判斷在期望值4和響應4之間是否發生不一致(步驟S89)。
在期望值4和響應4之間未發生不一致的情況下,操作控制器3304指示響應選擇器3309將來自定時器3600的響應4(存儲在響應緩衝器3307中)返回給CPU 3000。響應選擇器3309向上I/F 3301輸出響應4。上I/F 3301通過存儲器控制器3100將響應4返回給CPU3000(即OS)(步驟S90)。
圖9是示出了根據本發明第三實施例中的多重設備的另一操作(多重化舊版本設備的方法)的時序圖。下面,將描述定時器的中斷模式為一次性中斷模式的情況下的操作。
在時刻T5,作業系統OS(即CPU 3000)創建針對定時器3600的請求5。請求5是計數器模式設置請求,此外,中斷模式是一次性中斷模式。按照與圖8所示的針對請求1的處理(在步驟S71到S75中)相同的方式(在步驟S101到S105中),處理請求5。
接下來,在時刻T6,OS創建針對定時器3600的請求6。請求6是計數器值加載請求。OS通過存儲器控制器3100向用作偽舊版本設備的偽定時器3300傳輸請求6。然後,偽定時器3300接收請求6(步驟S106)。
偽定時器3300中的上I/F3301向下I/F 3305和請求緩衝器3302傳輸接收到的請求6。下I/F 3305將請求2傳輸給交叉橋3400。請求緩衝器3302將請求6的副本保存在其中。交叉橋3400將請求6傳輸給處於有效狀態的I/O控制器3500。I/O控制器3500通過I/O總線3800將請求6傳輸給定時器3600(步驟S107)。
定時器3600響應請求6產生響應6,然後將響應6傳輸給I/O控制器3500。I/O控制器3500將接收到的響應6傳輸給偽定時器3300中的下I/F 3305(步驟S108)。
下I/F 3305將接收到的響應6傳輸給響應緩衝器3307。響應緩衝器3307將響應6保存在其中,此外,將此接收通知給偽操作器3310。偽操作器3310從請求緩衝器3302中獲得與響應緩衝器3307所接收到的響應6相對應的請求6。請求解碼器3311解碼所獲得的請求6。請求6是計數器值加載請求。結果,以響應6的值(即加載到定時器3600上的數值)更新加載值(3313)。此外,由於定時器3600已經被設置為一次性中斷模式,並且已經在時刻T5的處理中(在步驟S101到S105中),以請求6的計數器值加載請求開始計數,中斷狀態的數值3315被設置為1。中斷狀態3315的數值為1的事實表示在定時器3600按照一次性中斷模式開始操作以來仍未發生中斷(步驟S109)。
由於請求6是計數器值加載請求,比較檢錯器3308不將響應6與期望值6進行比較。比較檢錯器3308將此事實傳輸給操作控制器3304。操作控制器3304指示響應選擇器3309將存儲在響應緩衝器3307中的、來自定時器3600的響應6返回給CPU 3000。響應選擇器3309向上I/F 3301輸出響應6。上I/F 3301通過存儲器控制器3100將響應6返回給CPU 3000(即OS)(步驟S110)。
在時刻T7,在定時器3600的內部產生定時器中斷。定時器3600通過I/O控制器3500向偽定時器3300中的下I/F 3305傳輸定時器中斷,作為中斷消息(步驟S111)。
下I/F 3305向定時器中斷檢測器3306和響應緩衝器3307傳輸定時器中斷。當定時器中斷檢測器3306檢測到定時器3600已經發出定時器中斷(即中斷消息)時,定時器中斷檢測器3306將該事件通知給偽操作器3310。將偽操作器3310中的中斷狀態的數值3315清零。中斷狀態的數值3315為0的事實表示在定時器3600按照一次性中斷模式開始操作之後已經產生了中斷(步驟S112)。
與此同時,響應緩衝器3307通過上I/F 3301向CPU 3000傳輸定時器中斷(步驟S113)。
圖10是示出了根據本發明第三實施例中、多重化舊版本設備的方法的另一操作的時序圖。這裡,將描述發生故障的情況下的操作。
在時刻T8,作業系統OS(即CPU 3000)創建針對定時器3600的請求8。請求8是計數器模式讀取請求。OS通過存儲器控制器3100向用作偽舊版本設備的偽定時器3300傳輸請求8。然後,偽定時器3300接收請求8(步驟S121)。
偽定時器3300中的上I/F 3301向下I/F 3305和請求緩衝器3302傳輸接收到的請求8。下I/F 3305將請求8傳輸給交叉橋3400。請求緩衝器3302將請求8的副本保存在其中。交叉橋3400將請求8傳輸給處於有效狀態的I/O控制器3500。I/O控制器3500通過I/O總線3800將請求8傳輸給定時器3600(步驟S122)。
定時器3600響應請求8產生響應8,然後將響應8傳輸給I/O控制器3500。I/O控制器3500將接收到的響應8傳輸給偽定時器3300中的下I/F 3305(步驟S123)。
下I/F 3305將響應8傳輸給響應緩衝器3307。響應緩衝器3307將響應8保存在其中,此外,將此接收通知給偽操作器3310。偽操作器3310從請求緩衝器3302中獲得與響應緩衝器3307所接收到的響應8相對應的請求8。請求解碼器3311解碼所獲得的請求8。請求8是計數器模式讀取請求。當請求解碼器3311確認請求8是模式讀取請求時,請求解碼器3311根據請求8產生期望值8,作為預期要從定時器3600返回的模式值。然後,請求解碼器3311向比較檢錯器3308輸出期望值8。比較檢錯器3308將響應緩衝器3307中的響應8與期望值8進行比較,之後,向操作控制器3304輸出比較結果。操作控制器3304判斷在期望值8和響應8之間是否發生不一致(步驟S124)。
在期望值8和響應8之間發生不一致的情況下,操作控制器3304在時刻T9發出系統管理中斷(步驟S125)。與此同時,操作控制器3304指示響應選擇器3309將由偽操作器3310產生的期望值8返回給CPU3000。響應選擇器3309向上I/F 3301輸出期望值8,作為響應8。上I/F 3301通過存儲器控制器3100將響應8返回給CPU 3000(即OS)(步驟S126)。
同樣,在發出系統管理中斷之後,當將處理傳遞到系統管理中斷處理器之前,仍然可能從OS向定時器3600輸出請求。例如,在圖10中,在時刻T10,從OS發出請求9。請求9是計數器值讀取命令。但是,定時器3600因為發生了故障而不能返回計數器值。因此,偽定時器3300返回偽計數器值,作為響應。返回通過將相加值(3316)與偽操作器3310中的計數器值(3312)相加而獲得的數值,作為偽計數器值。按照這種方式,能夠防止在作業系統內部發生計數器值的反向返回的不一致。
具體地,將如下執行該處理。
在時刻T10,作業系統OS(即CPU 3000)創建針對定時器3600的請求9。請求9是計數器值讀取請求。OS通過存儲器控制器3100向用作偽舊版本設備的偽定時器3300傳輸請求9。然後,偽定時器3300接收請求9(步驟S127)。
偽定時器3300中的上I/F 3301向下I/F 3305和請求緩衝器3302傳輸接收到的請求9。下I/F 3305將請求9傳輸給交叉橋3400。但是,由於發生故障,定時器3600不能返回計數器值。超時檢測器3303監控請求緩衝器3302和響應緩衝器3307,然後通知操作控制器3304在預定的時間段或更長的時間內並未返回與請求9對應的響應9。操作控制器3304通過比較檢錯器3308,從偽操作器3310中獲取通過將相加值(3316)與計數器值(331)相加而獲得的數值(即偽計數器值)(步驟S128)。之後,操作控制器3304將該數值返回給CPU 3000,作為響應9(步驟S129)。
下面,將描述故障切換處理。
在時刻T11,BIOS中的系統管理中斷處理器開始進行操作,由此啟動故障切換處理(步驟S130)。在故障切換處理中,系統管理中斷處理器查閱偽操作器3310中所保存的計數器值(3312)、加載值(3313)、計數器模式(3314)和中斷狀態(3315)(步驟S131和S132)。系統管理中斷處理器根據計數器值(3312)、加載值(3313)、計數器模式(3314)和中斷狀態(3315),使處於待機狀態的定時器4600變為與處於有效狀態的定時器3600相同的狀態(步驟S133和S134)。在完成故障切換處理時(步驟S135),在時刻T12,處理從系統管理中斷處理器返回OS。通過交叉橋3400、I/O控制器4500和I/O總線4800,向處於新有效狀態的定時器4600傳輸在故障切換處理之後的時刻T13創建的、針對定時器的請求。按照與步驟S71到S75中的處理相同的方式,針對定時器4600,執行圖10所示的步驟S136到S140中的處理。
接下來,將進一步描述故障切換處理。
圖11是示出了根據本發明第三實施例中、多重化舊版本設備的方法中的故障切換處理的流程圖。
在步驟S151中,系統管理中斷處理器查閱計數器模式(3314),然後設置作為故障切換目的地的計數器的模式。
在步驟S152中,系統管理中斷處理器確認計數器模式(3314)的中斷模式是周期中斷模式還是一次性中斷模式。如果中斷模式是一次性中斷模式,則控制例程前進到步驟S153。相反,如果中斷模式是周期中斷模式,則控制例程前進到步驟S154。
在步驟S153中,系統管理中斷處理器確認中斷狀態的數值(3315)。如果此時中斷狀態的數值(3315)為1,則控制例程前進到步驟S154。如果中斷狀態的數值(3315)為0,則控制例程前進到步驟S155。當中斷狀態的數值(3315)為0時,在設置一次性中斷模式之後,產生了中斷。因此,如果執行步驟S154中的處理,將再次產生中斷,從而導致作業系統中不一致的發生。因此,如果中斷狀態的數值(3315)為0,則控制例程前進到步驟S155。
在步驟S154中,系統管理中斷處理器查閱加載值3313,然後將計數器值加載到作為故障切換的目的地的定時器(即定時器4600)上。
在步驟S155中,讀取定時器(即定時器4600)的計數器值,直到計數器值變得小於計數器值3312中所保存的數值。
根據本發明,由於在發生定時器故障之後、直到完成故障切換之前,偽定時器返回偽響應,不存在作業系統的任何不一致,能夠對定時器進行故障切換,而無需改變作業系統中的任何模塊。
偽操作器3310可以由偽操作器3310a代替,如下所述。
圖12是示出了另一偽操作器3310a的方框圖。與圖7所示的偽操作器3310相比,偽操作器3310a額外包括存儲頻率比值的頻率比值單元3321和另一加法單元3322。
頻率比值(3318)是定時器3600以其進行操作的時鐘頻率與偽定時器3300以其進行操作的時鐘頻率的比值。可以將頻率比值設置在固定點。在偽定時器3300進行操作的每個時鐘,相加值3316將頻率比值3318的數值與預定數值相加。在完成計數器值讀取請求時,清空相加值3316。當在定時器3600中發生故障之後,發出計數器值讀取請求,並由偽定時器3300返回偽響應時,偽定時器3300返回通過將相加值3316的整數與計數器值3312相加而獲得的數值。
當在定時器3600中發生故障之後,發出計數器值讀取請求時,圖7所示的偽操作器3310返回通過將相加值3316與計數器值3312相加而獲得的數值,作為偽響應。相反,考慮到定時器3600的時鐘頻率與偽定時器3300的時鐘頻率的比值以及在前一計數器值讀取請求之後的時間間隔,圖12所示的偽操作器3310a可以返回更為正確的計數器值,作為偽響應。
如上所述,根據本發明,可以多重化舊版本設備,而無需改變作業系統中的任何模塊。此外,可以實現定時器的故障切換,而無需改變作業系統中的任何模塊。
顯而易見的是,本發明並不局限於上述實施例,在不偏離本發明的範圍和精神的前提下,可以對其進行修改和改變。
權利要求
1.一種多重設備,包括配置為通過鏈路彼此相連的多個系統,其中所述多個系統中的每一個均包括CPU;偽舊版本設備,配置為與所述CPU電連接;和舊版本設備,配置為與所述偽舊版本設備電連接,所述偽舊版本設備包括請求緩衝器,配置為當所述CPU通過所述偽舊版本設備向所述舊版本設備發送請求時,存儲所述請求;和偽操作器,配置為根據所述請求,執行對所述舊版本設備的仿真,並存儲包括所述舊版本設備的內部狀態在內的仿真結果。
2.根據權利要求1所述的多重設備,其特徵在於所述偽舊版本設備還包括響應緩衝器,配置為存儲來自所述舊版本設備的、對所述請求的響應;比較檢錯器,配置為將從所述響應緩衝器輸出的所述響應與從所述偽操作器輸出的期望值進行比較,其中所述期望值是通過所述仿真獲得的;和操作單元,配置為根據所述比較結果,在所述響應和所述期望值之間發生不一致時,向所述CPU輸出所述期望值,作為所述響應。
3.根據權利要求2所述的多重設備,還包括中斷控制器,配置為根據接收到的中斷通知,向所述CPU輸出中斷,其中當根據所述比較結果,在所述響應和所述期望值之間發生不一致時,所述操作單元向所述中斷控制器輸出所述中斷通知。
4.根據權利要求1所述的多重設備,其特徵在於所述偽舊版本設備還包括響應緩衝器,配置為存儲所述舊版本設備中、對所述請求的響應;超時檢測器,配置為檢測其中所述響應緩衝器不能在所述請求緩衝器接收到所述請求之後的預定時間段內接收到所述響應的超時;和操作單元,配置為當根據所述超時,向所述CPU輸出期望值,作為所述響應,其中所述期望值是通過所述仿真獲得並由所述偽操作器輸出的。
5.根據權利要求4所述的多重設備,還包括中斷控制器,配置為根據接收到的中斷通知,向所述CPU輸出中斷,其中所述偽舊版本設備包括比較檢錯器,配置為將從所述響應緩衝器輸出的所述響應與從所述偽操作器輸出的所述期望值進行比較,其中當根據所述比較結果,在所述響應和所述期望值之間發生不一致時,所述操作單元向所述中斷控制器輸出所述中斷通知。
6.根據權利要求5所述的多重設備,其特徵在於所述操作單元根據所述超時,向所述中斷控制器輸出所述中斷通知。
7.根據權利要求1到6之一所述的多重設備,其特徵在於所述舊版本設備是定時器,以及所述偽舊版本設備是偽定時器。
8.一種多重化舊版本設備的方法,包括(a)設置計算機系統,所述計算機系統包括配置為通過鏈路彼此相連的多個系統,其中所述多個系統中的每一個均包括CPU;偽舊版本設備,配置為與所述CPU電連接;和舊版本設備,配置為與所述偽舊版本設備電連接;(b)在所述CPU通過所述偽舊版本設備向所述舊版本設備發送請求時,由所述偽舊版本設備存儲所述請求;(c)由所述偽舊版本設備根據所述請求,執行對所述舊版本設備的仿真;以及(d)由所述偽隨機設備存儲包括所述舊版本設備的內部狀態在內的仿真結果。
9.根據權利要求8所述的多重化舊版本設備的方法,還包括(e)由所述偽舊版本設備存儲來自所述舊版本設備的、對所述請求的響應;(f)由所述偽舊版本設備將所述響應與期望值進行比較,其中所述期望值是通過所述仿真獲得的;以及(g)由所述偽舊版本設備根據所述比較結果,在所述響應和所述期望值之間發生不一致時,向所述CPU輸出所述期望值,作為所述響應。
10.根據權利要求9所述的多重化舊版本設備的方法,還包括(h)當根據所述比較結果,在所述響應和所述期望值之間發生不一致時,由所述偽舊版本設備向中斷控制器輸出中斷通知,其中所述中斷控制器根據接收到的中斷通知,向所述CPU輸出中斷。
11.根據權利要求8所述的多重化舊版本設備的方法,還包括(i)由所述偽舊版本設備檢測超時,其中所述超時是所述偽舊版本設備不能在所述偽舊版本設備接收到所述請求之後的預定時間段內接收到所述響應;以及(j)由所述偽舊版本設備根據所述超時,向所述CPU輸出期望值,作為所述響應,其中所述期望值是通過所述仿真獲得的。
12.根據權利要求11所述的多重化舊版本設備的方法,還包括(k)由所述偽舊版本設備存儲來自所述舊版本設備的、對所述請求的響應;(l)由所述偽舊版本設備將從所述響應與期望值進行比較,其中所述期望值是通過所述仿真獲得的;以及(m)當根據所述比較結果,在所述響應和所述期望值之間發生不一致時,由所述偽舊版本設備向中斷控制器輸出中斷通知,其中所述中斷控制器根據接收到的中斷通知,向所述CPU輸出中斷。
13.根據權利要求12所述的多重化舊版本設備的方法,還包括(n)由所述偽舊版本設備根據所述超時,向所述中斷控制器輸出所述中斷通知。
14.根據權利要求8到13之一所述的多重化舊版本設備的方法,其特徵在於所述舊版本設備是定時器,以及所述偽舊版本設備是偽定時器。
全文摘要
一種多重設備,包括配置為通過鏈路彼此相連的多個系統(10、20/30、40)。所述多個系統(10、20/30、40)中的每一個(10)均包括CPU(1000)、偽舊版本設備(1300)和舊版本設備(1600)。將偽舊版本設備(1300)配置為與CPU(1000)電連接。將舊版本設備(1600)配置為與偽舊版本設備(1300)電連接。所述偽舊版本設備(1300)包括請求緩衝器(1303)和偽操作器(1304)。將請求緩衝器(1303)配置為在CPU(1000)通過偽舊版本設備(1300)向舊版本設備(1600)發送請求時,存儲所述請求。將偽操作器(1304)配置為根據所述請求,執行對舊版本設備(1600)的仿真,並存儲包括舊版本設備(1600)的內部狀態在內的仿真結果。
文檔編號G06F11/00GK1794188SQ200510133819
公開日2006年6月28日 申請日期2005年12月21日 優先權日2004年12月21日
發明者白野康之 申請人:日本電氣株式會社