两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

雙重同步系統(tǒng)和雙重同步系統(tǒng)的操作方法

文檔序號:6651418閱讀:248來源:國知局
專利名稱:雙重同步系統(tǒng)和雙重同步系統(tǒng)的操作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種雙重同步系統(tǒng)。具體地,本發(fā)明涉及一種雙重同步系統(tǒng)和一種在雙重同步系統(tǒng)中復(fù)制存儲器內(nèi)容的方法。
背景技術(shù)
容錯(FT)計算已知是一種提供高可靠性的計算機。在FT計算機中,構(gòu)成系統(tǒng)的硬件模塊是雙重的或多重的,并控制這些硬件模塊,從而彼此同步地進行操作。此后,將諸如FT計算機系統(tǒng)的系統(tǒng)稱為“雙重同步系統(tǒng)”。根據(jù)雙重同步系統(tǒng),即使在特定的部分(模塊)中發(fā)生故障時,仍然可以通過分離故障模塊,在正常模塊中繼續(xù)處理。也就是說,雙重同步系統(tǒng)具有出色的容錯性和可用性(例如,參見日本未審公開專利申請JP-P-平成10-293697)。
雙重同步系統(tǒng)由第一系統(tǒng)和第二系統(tǒng)構(gòu)成。在正常操作中,控制存儲在兩個系統(tǒng)的主存儲器中的數(shù)據(jù)總是彼此一致。另一方面,在系統(tǒng)啟動或系統(tǒng)故障之后的系統(tǒng)恢復(fù)時,存儲在兩個系統(tǒng)的主存儲器中的數(shù)據(jù)不一致。因此,需要盡可能快地將一個系統(tǒng)的主存儲器中的數(shù)據(jù)復(fù)制到另一系統(tǒng)的主存儲器中,由此使兩個系統(tǒng)彼此一致。
當(dāng)在數(shù)據(jù)恢復(fù)處理期間正常操作作為復(fù)制源的一個系統(tǒng)時,更新存儲在所述一個系統(tǒng)的主存儲器中的數(shù)據(jù)。因此,需要在數(shù)據(jù)恢復(fù)處理期間,中止整個雙重同步系統(tǒng)的操作。由于用于數(shù)據(jù)恢復(fù)的時間的增加對服務(wù)造成干擾,中止時間段最好盡可能地短。具體地,近年來主存儲器的容量不斷增加,因此在兩個系統(tǒng)之間的數(shù)據(jù)復(fù)制所需的時間越來越長。此后,將數(shù)據(jù)復(fù)制所需的時間稱為“存儲器復(fù)制時間”。此外,與LSI中的數(shù)據(jù)傳送性能相比,連接在系統(tǒng)之間的數(shù)據(jù)鏈路路徑的傳送性能較低。這也是引起存儲器復(fù)制時間增加的因素之一。需要減少存儲器復(fù)制時間和縮短雙重同步系統(tǒng)的中止時間段。

發(fā)明內(nèi)容
因此,本發(fā)明的一個目的是提供一種能夠減少存儲器復(fù)制時間的雙重同步系統(tǒng)及其操作方法。
本發(fā)明的另一目的是提供一種能夠縮短系統(tǒng)操作的中止時間段的雙重同步系統(tǒng)及其操作方法。
本發(fā)明的另一目的是提供一種雙重同步系統(tǒng)及其操作方法,即使在一個系統(tǒng)的DMA引擎故障時,仍能在兩個系統(tǒng)之間復(fù)制數(shù)據(jù)。
本發(fā)明的另一目的是提供一種雙重同步系統(tǒng)及其操作方法,即使在連接在兩個系統(tǒng)之間的部分數(shù)據(jù)路徑故障時,仍能在兩個系統(tǒng)之間復(fù)制數(shù)據(jù)。
在本發(fā)明的第一方案中,提出了一種雙重同步系統(tǒng)。所述雙重同步系統(tǒng)具有第一系統(tǒng)和與所述第一系統(tǒng)同步操作的第二系統(tǒng)。所述第一系統(tǒng)和所述第二系統(tǒng)通過多條數(shù)據(jù)鏈路路徑彼此相連。所述第一系統(tǒng)包括第一存儲器;控制對所述第一存儲器的讀/寫的第一控制器;和訪問所述第一控制器的第一DMA引擎。所述第二系統(tǒng)包括第二存儲器;控制對所述第二存儲器的讀/寫的第二控制器;和訪問所述第二控制器的第二DMA引擎。在發(fā)送其中表示源是所述第一控制器和所述第二控制器中的任意一個的讀命令時,所述第一DMA引擎和所述第二DMA引擎中的每一個將所述源設(shè)置為所述第一DMA引擎和所述第二DMA引擎中的任意一個。配置所述第一控制器,響應(yīng)所述讀命令,從所述第一存儲器中讀出數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送回所述源。配置所述第二控制器,響應(yīng)所述讀命令,從所述第二存儲器中讀出數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送回所述源。
在從所述第一存儲器到所述第二存儲器的數(shù)據(jù)復(fù)制中,所述第一DMA引擎不僅向所述第一控制器發(fā)送其中將所述源設(shè)置為所述第一DMA引擎的第一讀命令,還向其發(fā)送其中將所述源設(shè)置為所述第二DMA引擎的第二讀命令。所述第一控制器分別響應(yīng)所述第一讀命令和所述第二讀命令,從所述第一存儲器中讀出數(shù)據(jù),并將讀出的數(shù)據(jù)分別發(fā)送給所述第一DMA引擎和所述第二DMA引擎。所述第一DMA引擎和所述第二DMA引擎通過所述第二控制器將讀出的數(shù)據(jù)寫入所述第二存儲器。如上所述,由于在數(shù)據(jù)復(fù)制操作中同時使用了所述第一DMA引擎和所述第二DMA引擎,整體改善了存儲器數(shù)據(jù)的復(fù)制速度,并因而減少了存儲器復(fù)制所需的總時間。因此,能夠縮短系統(tǒng)的中止時間段。
所述第一控制器響應(yīng)所述第一讀命令,讀出存儲在所述第一存儲器中的第一地址組中的數(shù)據(jù),并響應(yīng)所述第二讀命令,讀出存儲在所述第一存儲器中的不同于所述第一地址組的第二地址組中的數(shù)據(jù)。所述第一地址組可以是奇地址組和偶地址組之一,以及所述第二地址組可以是所述奇地址組和所述偶地址組中的另一個。
在從所述第一存儲器到所述第二存儲器的數(shù)據(jù)復(fù)制中,在所述第一DMA引擎故障的情況下,所述第二DMA引擎向所述第一控制器發(fā)送其中將所述源設(shè)置為所述第二DMA引擎的讀命令。所述第一控制器響應(yīng)所述讀命令,從所述第一存儲器中讀出數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送回所述第二DMA引擎。所述第二DMA引擎通過所述第二控制器將讀出的數(shù)據(jù)寫入所述第二存儲器。如上所述,即使在所述第一DMA引擎故障時,仍能在兩個系統(tǒng)之間復(fù)制數(shù)據(jù)。
在從所述第一存儲器到所述第二存儲器的數(shù)據(jù)復(fù)制中,在所述第二DMA引擎故障的情況下,所述第一DMA引擎向所述第一控制器發(fā)送其中將所述源設(shè)置為所述第一DMA引擎的讀命令。所述第一控制器響應(yīng)所述讀命令,從所述第一存儲器中讀出數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送回所述第一DMA引擎。所述第一DMA引擎通過所述第二控制器將讀出的數(shù)據(jù)寫入所述第二存儲器。如上所述,即使在所述第二DMA引擎故障時,仍能在兩個系統(tǒng)之間復(fù)制數(shù)據(jù)。
此外,在從所述第一存儲器到所述第二存儲器的數(shù)據(jù)復(fù)制中,所述第一DMA引擎可以向所述第一控制器發(fā)送其中將源設(shè)置為所述第二DMA引擎的讀命令。所述第一控制器響應(yīng)所述讀命令,從所述第一存儲器中讀出數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送給所述第二DMA引擎。所述第二DMA引擎通過所述第二控制器將讀出的數(shù)據(jù)寫入所述第二存儲器。
即使在多條數(shù)據(jù)鏈路路徑中的至少一些發(fā)生故障時,仍能通過應(yīng)用前述任一操作,在兩個系統(tǒng)之間復(fù)制數(shù)據(jù)。
在本發(fā)明的第二方案中,提出了一種DMA引擎。所述DMA引擎位于具有第一系統(tǒng)和與所述第一系統(tǒng)同步操作的第二系統(tǒng)的雙重同步系統(tǒng)中。所述DMA引擎可以通過將表示所述第一系統(tǒng)中的DMA引擎的第一ID和表示所述第二系統(tǒng)中的DMA引擎的第二ID指定為命令的源的ID,來發(fā)出所述命令。
在本發(fā)明的第三方案中,提出了一種雙重同步系統(tǒng)的操作方法。根據(jù)所述方法,在從第一存儲器到第二存儲器的數(shù)據(jù)復(fù)制中,使用第一DMA引擎和第二DMA引擎中的至少一個??梢酝瑫r使用所述第一DMA引擎和所述第二DMA引擎。在這種情況下,所述第一DMA引擎和所述第二DMA引擎之一用于讀出存儲在所述第一存儲器中的奇地址組中的數(shù)據(jù),而所述第一DMA引擎和所述第二DMA引擎中的另一個用于讀出存儲在所述第一存儲器中的偶地址組中的數(shù)據(jù)?;蛘?,將所述第一DMA引擎和所述第二DMA引擎中未發(fā)生故障的一個用作所述至少一個DMA引擎。
根據(jù)本發(fā)明的雙重同步系統(tǒng)及其操作方法,減少了存儲器復(fù)制時間。
根據(jù)本發(fā)明的雙重同步系統(tǒng)及其操作方法,縮短了系統(tǒng)操作的中止時間段。
根據(jù)本發(fā)明的雙重同步系統(tǒng)及其操作方法,即使在一個系統(tǒng)的DMA引擎故障時,仍能在兩個系統(tǒng)之間復(fù)制數(shù)據(jù)。
根據(jù)本發(fā)明的雙重同步系統(tǒng)及其操作方法,即使在連接在兩個系統(tǒng)之間的部分數(shù)據(jù)路徑故障時,仍能在兩個系統(tǒng)之間復(fù)制數(shù)據(jù)。


圖1是示出了根據(jù)本發(fā)明的雙重同步系統(tǒng)的結(jié)構(gòu)的方框圖;圖2是示出了根據(jù)本發(fā)明的DMA引擎的結(jié)構(gòu)的概念圖;圖3是示出了根據(jù)本發(fā)明的分組的內(nèi)容的示意圖;圖4示出了本發(fā)明第一實施例中的處理流程;圖5是示出了本發(fā)明第一實施例中的配置寄存器的內(nèi)容的示意圖;圖6是示出了本發(fā)明第一實施例中的讀出分組的內(nèi)容的示意圖;圖7是示出了本發(fā)明第一實施例中的完成分組的內(nèi)容的示意圖;圖8示出了本發(fā)明第二實施例中的處理流程;圖9是示出了本發(fā)明第二實施例中的配置寄存器的內(nèi)容的示意圖;圖10是示出了本發(fā)明第二實施例中的讀出分組的內(nèi)容的示意圖;圖11示出了本發(fā)明第三實施例中的處理流程;圖12是示出了本發(fā)明第三實施例中的配置寄存器的內(nèi)容的示意圖;圖13是示出了本發(fā)明第三實施例中的讀出分組的內(nèi)容的示意圖;圖14示出了本發(fā)明第四實施例中的處理流程;圖15是示出了本發(fā)明第四實施例中的配置寄存器的內(nèi)容的示意圖;以及圖16是示出了本發(fā)明第四實施例中的讀出分組的內(nèi)容的示意圖。
具體實施例方式
下面,將參照附圖,對根據(jù)本發(fā)明的雙重同步系統(tǒng)及所述雙重同步系統(tǒng)中的復(fù)制方法進行描述。
圖1是示出了根據(jù)本發(fā)明的雙重同步系統(tǒng)1的結(jié)構(gòu)的方框圖。雙重同步系統(tǒng)1包括第一系統(tǒng)1a和第二系統(tǒng)1b。第一系統(tǒng)1a和第二系統(tǒng)1b彼此同步地進行操作。
第一系統(tǒng)1a具有控制LSI 2a、CPU 3a和主存儲器4a??刂芁SI2a與CPU 3a和主存儲器4a相連??刂芁SI 2a包括CPU控制器5a、存儲器控制器6a、路由器7a、IO比較器8a、IO控制器9a、DMA引擎10a、IB(對內(nèi)(In-Bound))鏈路控制器11a和OB(對外(Out-Bound))鏈路控制器12a。
第二系統(tǒng)1b具有與第一系統(tǒng)1a相同的結(jié)構(gòu)。即,第二系統(tǒng)1b具有控制LSI 2b、CPU 3b和主存儲器4b。控制LSI 2b與CPU 3b和主存儲器4b相連??刂芁SI 2b包括CPU控制器5b、存儲器控制器6b、路由器7b、IO比較器8b、IO控制器9b、DMA引擎10b、IB鏈路控制器11b和OB鏈路控制器12b。
CPU控制器5控制對CPU 3的連接總線。存儲器控制器6控制對存儲器4的存取(讀/寫)。路由器7具有控制路由的功能,將每個請求路由到CPU系統(tǒng)、存儲器系統(tǒng)和IO系統(tǒng)中的任一個。IO控制器9控制對IO設(shè)備的連接總線。
第一系統(tǒng)1a和第二系統(tǒng)1b通過多條數(shù)據(jù)鏈路路徑13a、13b、14a和14b彼此相連。每條數(shù)據(jù)鏈路路徑13用于從IO側(cè)到CPU/存儲器側(cè)的對內(nèi)數(shù)據(jù)傳送,而每條數(shù)據(jù)鏈路路徑14用于從CPU/存儲器側(cè)到IO側(cè)的對外數(shù)據(jù)傳送。IB鏈路控制器11控制對內(nèi)數(shù)據(jù)傳送(此后,稱為IB數(shù)據(jù)傳送)。另一方面,OB鏈路控制器12控制對外數(shù)據(jù)傳送(此后,稱為OB數(shù)據(jù)傳送)。
從第一系統(tǒng)1a到第二系統(tǒng)1b的IB數(shù)據(jù)傳送通過IB鏈路控制器11a、數(shù)據(jù)鏈路路徑13a和OB鏈路控制器12b來執(zhí)行。從第一系統(tǒng)1a到第二系統(tǒng)1b的OB數(shù)據(jù)傳送通過OB鏈路控制器12a、數(shù)據(jù)鏈路路徑14a和IB鏈路控制器11b來執(zhí)行。從第二系統(tǒng)1b到第一系統(tǒng)1a的IB數(shù)據(jù)傳送通過IB鏈路控制器11b、數(shù)據(jù)鏈路路徑13b和OB鏈路控制器12a來執(zhí)行。從第二系統(tǒng)1b到第一系統(tǒng)1a的OB數(shù)據(jù)傳送通過OB鏈路控制器12b、數(shù)據(jù)鏈路路徑14b和IB鏈路控制器11a來執(zhí)行。IO比較器8在操作中將自身系統(tǒng)的對外存取與來自另一系統(tǒng)的對外存取進行比較。
DMA引擎(DMA控制器)10控制DMA傳送。在DMA(直接存儲器存取)傳送中,直接在I/O設(shè)備和存儲器4之間傳送數(shù)據(jù),而不涉及CPU 3。第一系統(tǒng)1a的DMA引擎10a能夠通過路由器7a訪問存儲器控制器6a。DMA引擎10a還能通過IB鏈路控制器11a訪問第二系統(tǒng)1b的存儲器控制器6b。第二系統(tǒng)1b的DMA引擎10b能夠通過路由器7b訪問存儲器控制器6b。DMA引擎10b還能通過IB鏈路控制器11b訪問第一系統(tǒng)1a的存儲器控制器6a。
圖2更為詳細地示出了根據(jù)本發(fā)明的DMA引擎10的結(jié)構(gòu)。根據(jù)本發(fā)明的DMA引擎10具有配置寄存器20。設(shè)置(寄存)在配置寄存器20中的是“DMA操作模式”、“復(fù)制源ID”、“復(fù)制目的地ID”、“存儲器復(fù)制起始地址”、“大小”和“控制數(shù)據(jù)(信息)”。對于“DMA操作模式”,可以設(shè)置以下三類1、雙系統(tǒng)主模式2、雙系統(tǒng)從模式;以及3、單系統(tǒng)主模式。稍后,將詳細描述每個模式的操作。設(shè)置在“復(fù)制源ID”中的是主存儲器4的ID,作為復(fù)制源,而設(shè)置在“復(fù)制目的地ID”中的是主存儲器4的ID,作為復(fù)制目的地。將開始復(fù)制的頭地址設(shè)置在“存儲器復(fù)制起始地址”中。將要復(fù)制的存儲器區(qū)域的大小設(shè)置在“大小”中。DMA引擎10在更新目標(biāo)地址時,發(fā)出與大小一樣多的讀命令。設(shè)置在“控制數(shù)據(jù)”中的是“偽裝設(shè)置”、DMA開始位等。稍后,將詳細描述偽裝設(shè)置。在將DMA開始位設(shè)置為開時,開始DMA操作。
由CPU 3執(zhí)行配置寄存器20的上述設(shè)置。即,第一系統(tǒng)1a的DMA引擎10a具有配置寄存器20a,由CPU 3a或CPU 3b執(zhí)行對配置寄存器20a的設(shè)置。同樣,第二系統(tǒng)1b的DMA引擎10b具有配置寄存器20b,由CPU 3b或CPU 3a執(zhí)行對配置寄存器20b的設(shè)置。
在上述雙重同步系統(tǒng)1中,通過傳送分組來執(zhí)行從一個組件對另一個組件的請求(命令)。在以下的描述中,將命令發(fā)出側(cè)(即分組傳輸側(cè))稱為“源”。另一方面,將分組接收側(cè)稱為“目標(biāo)”。
圖3示出了用在根據(jù)本發(fā)明的雙重同步系統(tǒng)1中的分組的內(nèi)容。配置分組由CPU 3產(chǎn)生,以便進行配置寄存器20中的設(shè)置。配置分組包括作為表示目標(biāo)的ID的“目標(biāo)ID”、作為表示源的ID的“源ID”、由CPU 3發(fā)出的“配置寫命令”、“寄存器地址”和設(shè)置在配置寄存器20中的“寄存器數(shù)據(jù)”。讀分組由DMA引擎10產(chǎn)生,以便從主存儲器4中讀出數(shù)據(jù)。讀分組包括“目標(biāo)ID”、“源ID”、由DMA引擎10發(fā)出的“DMA存儲器復(fù)制讀命令”和“存儲器地址”。完成分組由存儲器控制器6發(fā)出。完成分組包括“目標(biāo)ID”、“源ID”、由存儲器控制器6發(fā)出的“完成命令”、“存儲器地址”和從主存儲器4讀出的“存儲器數(shù)據(jù)”。寫分組由DMA引擎10產(chǎn)生,以便將數(shù)據(jù)寫入主存儲器4。寫分組包括“目標(biāo)ID”、“源ID”、由DMA引擎10發(fā)出的“DMA存儲器復(fù)制寫命令”、“存儲器地址”和“存儲器數(shù)據(jù)”。
CPU 3可以分別向第一系統(tǒng)1a的DMA引擎10a(第一DMA引擎)和第二系統(tǒng)1b的DMA引擎10b(第二DMA引擎)傳輸配置分組。通過配置寫命令來執(zhí)行對應(yīng)配置寄存器20的設(shè)置。
在DMA操作中,DMA引擎10可以向第一系統(tǒng)1a的存儲器控制器6a和第二系統(tǒng)1b的存儲器控制器6b發(fā)送讀分組(讀命令)。在讀分組中,將目標(biāo)ID設(shè)置為與配置寄存器20中指示的復(fù)制源ID相對應(yīng)的存儲器控制器6。
存儲器控制器6從DMA引擎10接收讀分組。響應(yīng)DMA存儲器復(fù)制讀命令(讀命令),存儲器控制器6從對應(yīng)的主存儲器4中讀出數(shù)據(jù)。在讀出數(shù)據(jù)之后,存儲器控制器6向路由器7發(fā)送完成分組。這里,存儲器控制器6交換讀分組中指示的目標(biāo)ID和源ID,并將其設(shè)置為完成分組的目標(biāo)ID和源ID。換句話說,將完成分組t的源ID設(shè)置為讀分組的目標(biāo)ID,而將完成分組的目標(biāo)ID設(shè)置為讀分組的源ID。
在接收到完成分組時,路由器7檢查目標(biāo)ID。然后,根據(jù)目標(biāo)ID,路由器7將完成分組轉(zhuǎn)發(fā)給其自身系統(tǒng)的DMA引擎10或通過OB鏈路控制器12轉(zhuǎn)發(fā)給另一系統(tǒng)的DMA引擎10。
在接收到完成分組時,DMA引擎10輸出寫分組(寫命令)。在寫分組中,將目標(biāo)ID設(shè)置為與配置寄存器20中指示的復(fù)制目的地ID相對應(yīng)的存儲器控制器6。存儲器控制器6接收寫分組。響應(yīng)DMA存儲器復(fù)制寫命令(寫命令),存儲器控制器6將存儲器數(shù)據(jù)寫入對應(yīng)的主存儲器4。
如上所述,在DMA操作中執(zhí)行從一個系統(tǒng)的主存儲器4到另一系統(tǒng)的主存儲器4的數(shù)據(jù)復(fù)制。根據(jù)本發(fā)明,DMA引擎10能夠?qū)⒆x分組的源設(shè)置為第一DMA引擎10a或第二DMA引擎10b。例如,第一系統(tǒng)1a的第一DMA引擎10a不僅能夠發(fā)送其中將源設(shè)置為第一DMA引擎10a的讀分組,而且可以發(fā)送其中將源設(shè)置為第二DMA引擎10b的讀分組。在這種情況下,其中將源設(shè)置為第二DMA引擎10b的讀分組是“偽裝分組”。接收偽裝分組的存儲器控制器6解譯出作為讀分組的偽裝分組是由第二DMA引擎10b傳輸過來的。因此,不向第一DMA引擎10a而向第二DMA引擎10b傳輸響應(yīng)于偽裝分組的完成分組。根據(jù)配置寄存器20中的“偽裝設(shè)置”設(shè)置執(zhí)行何種偽裝(參見圖2)。
此后,將利用一些示例,詳細解釋根據(jù)本發(fā)明的雙重同步系統(tǒng)1和DMA引擎10的操作和效果。在以下示例中,將描述在第二系統(tǒng)1b的CPU 3b從故障恢復(fù)之后,將數(shù)據(jù)從第一系統(tǒng)1a的主存儲器4a(復(fù)制源)向第二系統(tǒng)1b的主存儲器4b(復(fù)制目的地)復(fù)制數(shù)據(jù)的情形。
第一實施例在第一實施例中,同時使用第一DMA引擎10a和第二DMA引擎10b(雙系統(tǒng)模式)。圖4示出了根據(jù)本實施例的處理流程。
首先,第一系統(tǒng)1a的CPU 3a確定第一DMA引擎10a和第二DMA引擎10b可用,并且在數(shù)據(jù)鏈路路徑13和14上未發(fā)生錯誤。然后,CPU 3a向第一DMA引擎10a傳輸配置分組(步驟S11-1)。同時,CPU 3a通過數(shù)據(jù)鏈路路徑14a(對外)向第二DMA引擎10b傳輸配置分組(步驟S11-2)。由此,執(zhí)行對配置寄存器20a和配置寄存器20b的設(shè)置。
圖5示出了所設(shè)置的配置寄存器20a和20b的內(nèi)容。在配置寄存器20a中,將DMA操作模式設(shè)置為“雙系統(tǒng)主模式”。另一方面,在配置寄存器20b中,將DMA操作模式設(shè)置為“雙系統(tǒng)從模式”。也就是說,在本實施例中,第一系統(tǒng)1a用作主機,而第二系統(tǒng)1b用作從機。在配置寄存器20a中,將偽裝設(shè)置設(shè)置為“奇/偶”。根據(jù)該設(shè)置,如稍后所述,根據(jù)讀地址對應(yīng)于奇數(shù)還是偶數(shù)來啟用偽裝。在配置寄存器20a和20b中,將復(fù)制源設(shè)置為主存儲器4a,以及將復(fù)制目的地設(shè)置為主存儲器4b。在開啟DMA開始位時,開始DMA操作。
由于DMA操作模式被設(shè)置為“雙系統(tǒng)從模式”,第二DMA引擎10b不產(chǎn)生讀分組。另一方面,由于DMA操作模式被設(shè)置為“雙系統(tǒng)主模式”,第一DMA引擎10a根據(jù)偽裝設(shè)置產(chǎn)生讀分組,并輸出所產(chǎn)生的讀分組。
圖6示出了由第一DMA引擎10a產(chǎn)生的讀分組的內(nèi)容。在本實施例中,第一DMA引擎10a產(chǎn)生兩類讀分組。例如,將第一讀分組的源設(shè)置為第一DMA引擎10a,而將第二讀分組的源設(shè)置為第二DMA引擎10b。換句話說,第二讀分組是“偽裝分組”。在這兩類分組中,根據(jù)配置寄存器20a中指示的復(fù)制源ID(主存儲器4a),將目標(biāo)設(shè)置為存儲器控制器6a。而且,第一讀分組與主存儲器4a中的奇地址組相關(guān),而第二讀分組與主存儲器4a中的偶地址組相關(guān)。在這種情況下,第一讀分組用于讀出存儲在奇地址組中的數(shù)據(jù)。另一方面,第二讀分組用于讀出存儲在偶地址組中的數(shù)據(jù)。應(yīng)當(dāng)注意,第一讀分組可以與偶地址組相關(guān),而第二讀分組可以與奇地址組相關(guān)。
參照圖4,第一DMA引擎10a通過路由器7a向存儲器控制器6a發(fā)送所產(chǎn)生的第一讀分組和第二讀分組(步驟S12)。當(dāng)存儲器控制器6a接收到第一讀分組時,存儲器控制器6a響應(yīng)DMA存儲器復(fù)制讀命令,從主存儲器4a的奇地址中讀出讀取數(shù)據(jù)。然后,存儲器控制器6a向路由器7a發(fā)送包括讀出數(shù)據(jù)的第一完成分組(步驟S13)。同樣,當(dāng)存儲器控制器6a接收到第二讀分組時,存儲器控制器6a響應(yīng)DMA存儲器復(fù)制讀命令,從主存儲器4a的偶地址中讀出讀取數(shù)據(jù)。然后,存儲器控制器6a向路由器7a發(fā)送包括讀出數(shù)據(jù)的第二完成分組(步驟S13)。
圖7示出了從存儲器控制器6a輸出的第一完成分組和第二完成分組的內(nèi)容。存儲器控制器6a交換讀分組中指示的目標(biāo)ID和源ID,并將其設(shè)置為完成分組的目標(biāo)ID和源ID。即,在第一完成分組中,將目標(biāo)設(shè)置為第一DMA引擎10a,將源設(shè)置為存儲器控制器6a。在第二完成分組中,將目標(biāo)設(shè)置為第二DMA引擎10b,將源設(shè)置為存儲器控制器6a。
參照圖4,當(dāng)接收到完成分組時,路由器7a檢查其目標(biāo)ID。當(dāng)路由器7a接收到第一完成分組時,即,當(dāng)目標(biāo)是第一DMA引擎10a時,路由器7a通過IO比較器8a將第一完成分組轉(zhuǎn)發(fā)回第一DMA引擎10a(步驟S14-1)。另一方面,當(dāng)路由器7a接收到第二完成分組時,即,當(dāng)目標(biāo)是第二DMA引擎10b時,路由器7a將第二完成分組轉(zhuǎn)發(fā)給OB鏈路控制器12a。結(jié)果,將第二完成分組通過數(shù)據(jù)鏈路路徑14a、IB鏈路控制器11b和IO比較器8b傳輸給第二DMA引擎10b(步驟S14-2)。
當(dāng)接收到第一完成分組時,第一DMA引擎10a產(chǎn)生寫分組。在寫分組中,根據(jù)配置寄存器20a中指示的復(fù)制目的地ID(主存儲器4b),將目標(biāo)設(shè)置為存儲器控制器6b。因此,將從第一DMA引擎10a輸出的寫分組通過IB鏈路控制器11a、數(shù)據(jù)鏈路路徑13a、OB鏈路控制器12b和路由器7b傳輸給存儲器控制器6b(步驟S15-1)。當(dāng)接收到寫分組時,存儲器控制器6b響應(yīng)DMA存儲器復(fù)制寫命令,將讀出數(shù)據(jù)寫入主存儲器4b的奇地址。
其操作模式被設(shè)置為“雙系統(tǒng)從模式”的DMA引擎10只產(chǎn)生寫分組。即,當(dāng)接收到完成分組時,第二DMA引擎10b產(chǎn)生寫分組。在寫分組中,根據(jù)配置寄存器20b中指示的復(fù)制目的地ID(主存儲器4b),將目標(biāo)設(shè)置為存儲器控制器6b。因此,將從第二DMA引擎10b輸出的寫分組通過路由器7b傳輸給存儲器控制器6b(步驟S15-2)。當(dāng)接收到寫分組時,存儲器控制器6b響應(yīng)DMA存儲器復(fù)制寫命令,將讀出數(shù)據(jù)寫入主存儲器4b的偶地址。
通過上述DMA操作,將存儲器數(shù)據(jù)從主存儲器4a復(fù)制到主存儲器4b。在前述示例中,根據(jù)目標(biāo)地址指示奇數(shù)還是偶數(shù)來產(chǎn)生偽裝分組。但是,偽裝設(shè)置并不局限于此。例如,將主存儲器4的存儲空間分為兩部分,并提供兩個起始地址。第一讀分組與第一地址組相關(guān),而第二讀分組與不同于第一地址組的第二地址組相關(guān)。
根據(jù)上述本實施例,由于第一DMA引擎10a產(chǎn)生偽裝分組,能夠通過同時使用第一DMA引擎10a和第二DMA引擎10b來執(zhí)行數(shù)據(jù)復(fù)制。在上述示例中,第二DMA引擎10b起到產(chǎn)生與第二完成分組相對應(yīng)的寫分組的作用。結(jié)果,減少了第一DMA引擎10a上的負載。因此,整體改善了存儲器數(shù)據(jù)的復(fù)制速度,因此減少了存儲器復(fù)制所需的總時間。即,能夠縮短系統(tǒng)操作的中止時間段。
此外,通過數(shù)據(jù)鏈路路徑13a向存儲器控制器6b傳輸由第一DMA引擎10a產(chǎn)生的寫分組,并通過數(shù)據(jù)鏈路路徑14a向第二DMA引擎10b傳輸?shù)诙瓿煞纸M。換句話說,可以通過同時使用數(shù)據(jù)鏈路路徑13a和14a,來執(zhí)行系統(tǒng)之間的傳輸,即數(shù)據(jù)復(fù)制。結(jié)果,整體改善了存儲器數(shù)據(jù)的復(fù)制速度,因此減少了存儲器復(fù)制所需的總時間。因此,能夠縮短系統(tǒng)操作的中止時間段。
此外,由于第一DMA引擎10a產(chǎn)生偽裝分組,第二DMA引擎10b不必發(fā)出任何讀分組(讀命令)。換句話說,不需要從第二DMA引擎10b通過IB鏈路控制器11b、數(shù)據(jù)鏈路路徑13b、OB鏈路控制器12a和路由器7a向存儲器控制器6a傳輸讀命令。省略了在系統(tǒng)之間傳輸讀命令。結(jié)果,整體改善了存儲器數(shù)據(jù)的復(fù)制速度,因此減少了存儲器復(fù)制所需的總時間。因此,能夠縮短系統(tǒng)操作的中止時間段。
第二實施例第二實施例所描述的是第一系統(tǒng)1a的第一DMA引擎10a發(fā)生故障的情況。在這種情況下,只使用未發(fā)生故障的第二DMA引擎10b(單系統(tǒng)模式)。圖8示出了根據(jù)本實施例的處理流程。
首先,第一系統(tǒng)1a的CPU 3a檢測到第一DMA引擎10a的故障,并確認第二DMA引擎10b可用,且數(shù)據(jù)鏈路路徑13和14上未發(fā)生錯誤。之后,CPU 3a通過數(shù)據(jù)鏈路路徑14a(對外)向第二DMA引擎10b發(fā)送配置分組(步驟S21)。由此,執(zhí)行對配置寄存器20b的設(shè)置。
圖9示出了所設(shè)置的配置寄存器20b的內(nèi)容。在配置寄存器20b中,將DMA操作模式設(shè)置為“單系統(tǒng)主模式”。此外,在配置寄存器20b中,將復(fù)制源設(shè)置為主存儲器4a,而將復(fù)制目的地設(shè)置為主存儲器4b。當(dāng)DMA操作模式被設(shè)置為“單系統(tǒng)主模式”時,偽裝設(shè)置不可用。當(dāng)開啟DMA開始位時,開始DMA操作。
第二DMA引擎10b產(chǎn)生讀分組。圖10示出了由第二DMA引擎10b產(chǎn)生的讀分組的內(nèi)容。將讀分組的源設(shè)置為第二DMA引擎10b。根據(jù)配置寄存器20b中指示的復(fù)制源ID(主存儲器4a),將讀分組的目標(biāo)設(shè)置為存儲器控制器6a。因此,將從第二DMA引擎10b輸出的讀分組通過IB鏈路控制器11b、數(shù)據(jù)鏈路路徑13b、OB鏈路控制器12a和路由器7a傳輸給存儲器控制器6a(圖8中的步驟S22)。
參照圖8,存儲器控制器6a接收讀分組。當(dāng)接收到讀分組時,存儲器控制器6a響應(yīng)DMA存儲器復(fù)制讀命令,從主存儲器4a中讀出數(shù)據(jù)。然后,存儲器控制器6a向路由器7a發(fā)送包括讀出數(shù)據(jù)的完成分組(步驟S23)。這里,存儲器控制器6a交換讀分組中指示的目標(biāo)ID和源ID,并將其設(shè)置為完成分組的目標(biāo)ID和源ID。也就是說,在完成分組中,將目標(biāo)設(shè)置為第二DMA引擎10b,而將源設(shè)置為存儲器控制器6a。
當(dāng)接收到完成分組時,路由器7a檢查目標(biāo)ID。由于此時目標(biāo)是第二DMA引擎10b,路由器7a將完成分組轉(zhuǎn)發(fā)給OB鏈路控制器12a。由此,將完成分組通過數(shù)據(jù)鏈路路徑14a、IB鏈路控制器11b和IO比較器8b傳輸給第二DMA引擎10b(步驟S24)。
當(dāng)接收到完成分組時,第二DMA引擎10b產(chǎn)生寫分組。在寫分組中,根據(jù)配置寄存器20b中指示的復(fù)制目的地ID(主存儲器4b),將目標(biāo)設(shè)置為存儲器控制器6b。因此,將從第二DMA引擎10b輸出的寫分組通過路由器7b傳輸給存儲器控制器6b(步驟S25)。當(dāng)接收到寫分組時,存儲器控制器6b響應(yīng)DMA存儲器復(fù)制寫命令,將讀出數(shù)據(jù)寫入主存儲器4b。
根據(jù)本實施例,如上所述,即使在第一DMA引擎10a發(fā)生故障時,仍能將存儲器數(shù)據(jù)從第一主存儲器4a復(fù)制到第二主存儲器4b。
第三實施例第三實施例所描述的是第二系統(tǒng)1b的第二DMA引擎10b發(fā)生故障的情況。在這種情況下,只使用未發(fā)生故障的第一DMA引擎10a(單系統(tǒng)模式)。圖11示出了根據(jù)本實施例的處理流程。
首先,第一系統(tǒng)1a的CPU 3a檢測到第二DMA引擎10b的故障,并確認第一DMA引擎10a可用,且數(shù)據(jù)鏈路路徑13和14上未發(fā)生錯誤。之后,CPU 3a向第一DMA引擎10a發(fā)送配置分組(步驟S31)。由此,執(zhí)行對配置寄存器20a的設(shè)置。
圖12示出了所設(shè)置的配置寄存器20a的內(nèi)容。在配置寄存器20a中,將DMA操作模式設(shè)置為“單系統(tǒng)主模式”。此外,在配置寄存器20a中,將復(fù)制源設(shè)置為主存儲器4a,而將復(fù)制目的地設(shè)置為主存儲器4b。當(dāng)DMA操作模式被設(shè)置為“單系統(tǒng)主模式”時,偽裝設(shè)置不可用。當(dāng)開啟DMA開始位時,開始DMA操作。
第一DMA引擎10a產(chǎn)生讀分組。圖13示出了由第一DMA引擎10a產(chǎn)生的讀分組的內(nèi)容。將讀分組的源設(shè)置為第一DMA引擎10a。根據(jù)配置寄存器20a中指示的復(fù)制源ID(主存儲器4a),將讀分組的目標(biāo)設(shè)置為存儲器控制器6a。因此,將從第一DMA引擎10a輸出的讀分組通過路由器7a傳輸給存儲器控制器6a(圖11中的步驟S32)。
參照圖11,存儲器控制器6a接收讀分組。當(dāng)接收到讀分組時,存儲器控制器6a響應(yīng)DMA存儲器復(fù)制讀命令,從主存儲器4a中讀出數(shù)據(jù)。然后,存儲器控制器6a向路由器7a發(fā)送包括讀出數(shù)據(jù)的完成分組(步驟S33)。這里,存儲器控制器6a交換讀分組中指示的目標(biāo)ID和源ID,并將其設(shè)置為完成分組的目標(biāo)ID和源ID。也就是說,在完成分組中,將目標(biāo)設(shè)置為第一DMA引擎10a,而將源設(shè)置為存儲器控制器6a。
當(dāng)接收到完成分組時,路由器7a檢查其目標(biāo)ID。由于此時目標(biāo)是第一DMA引擎10a,路由器7a將完成分組通過IO比較器8a轉(zhuǎn)發(fā)給第一DMA引擎10a(步驟S34)。
當(dāng)接收到完成分組時,第一DMA引擎10a產(chǎn)生寫分組。在寫分組中,根據(jù)配置寄存器20a中指示的復(fù)制目的地ID(主存儲器4b),將目標(biāo)設(shè)置為存儲器控制器6b。因此,將從第一DMA引擎10a輸出的寫分組通過IB鏈路控制器11a、數(shù)據(jù)鏈路路徑13a、OB鏈路控制器12b和路由器7b傳輸給存儲器控制器6b(步驟S35)。當(dāng)接收到寫分組時,存儲器控制器6b響應(yīng)DMA存儲器復(fù)制寫命令,將讀出數(shù)據(jù)寫入主存儲器4b。
根據(jù)本實施例,如上所述,即使在第二DMA引擎10b發(fā)生故障時,仍能將存儲器數(shù)據(jù)從第一主存儲器4a復(fù)制到第二主存儲器4b。此外,如圖11所示,用在本實施例中的數(shù)據(jù)鏈路路徑只是數(shù)據(jù)鏈路路徑13a。因此,本實施例具有對數(shù)據(jù)鏈路路徑的出色容錯性。
第四實施例第四實施例是一類不同于第一實施例的雙系統(tǒng)模式。即,同時使用第一DMA引擎10a和第二DMA引擎10b。圖14示出了根據(jù)本實施例的處理流程。
首先,第一系統(tǒng)1a的CPU 3a確定第一DMA引擎10a和第二DMA引擎10b可用。之后,CPU 3a向第一DMA引擎10a傳輸配置分組(步驟S41-1)。同時,CPU 3a通過數(shù)據(jù)鏈路路徑14a(對外)向第二DMA引擎10b傳輸配置分組(步驟S41-2)。由此,執(zhí)行對配置寄存器20a和配置寄存器20b的設(shè)置。
圖15示出了所設(shè)置的配置寄存器20a和20b的內(nèi)容。在配置寄存器20a中,將DMA操作模式設(shè)置為“雙系統(tǒng)主模式”。另一方面,在配置寄存器20b中,將DMA操作模式設(shè)置為“雙系統(tǒng)從模式”。也就是說,在本實施例中,第一系統(tǒng)1a用作主機,而第二系統(tǒng)1b用作從機。此外,在配置寄存器20a中,將偽裝設(shè)置設(shè)置為“改變?nèi)俊薄8鶕?jù)該設(shè)置,如稍后所述,偽裝所有讀分組。此外,在配置寄存器20a和20b中,將復(fù)制源設(shè)置為主存儲器4a,以及將復(fù)制目的地設(shè)置為主存儲器4b。在開啟DMA開始位時,開始DMA操作。
由于DMA操作模式被設(shè)置為“雙系統(tǒng)從模式”,第二DMA引擎10b不輸出任何讀分組。另一方面,由于DMA操作模式被設(shè)置為“雙系統(tǒng)主模式”,第一DMA引擎10a根據(jù)上述偽裝設(shè)置產(chǎn)生讀分組,并輸出所產(chǎn)生的讀分組。
圖16示出了由第一DMA引擎10a產(chǎn)生的讀分組的內(nèi)容。在本實施例中,所有讀分組都是“偽裝分組”。換句話說,將所有讀分組的源設(shè)置為第二DMA引擎10b。根據(jù)配置寄存器20a中指示的復(fù)制源ID(主存儲器4a),將所有讀分組的目標(biāo)設(shè)置為存儲器控制器6a。因此,將從第一DMA引擎10a輸出的讀分組通過路由器7a傳輸給存儲器控制器6a(圖14中的步驟S42)。
參照圖14,存儲器控制器6a接收讀分組。當(dāng)接收到讀分組時,存儲器控制器6a響應(yīng)DMA存儲器復(fù)制讀命令,從主存儲器4a中讀出數(shù)據(jù)。然后,存儲器控制器6a向路由器7a發(fā)送包括讀出數(shù)據(jù)的完成分組(步驟S43)。這里,存儲器控制器6a交換讀分組中指示的目標(biāo)ID和源ID,并將其設(shè)置為完成分組的目標(biāo)ID和源ID。也就是說,在完成分組中,將目標(biāo)設(shè)置為第二DMA引擎10b,而將源設(shè)置為存儲器控制器6a。
當(dāng)接收到完成分組時,路由器7a檢查目標(biāo)ID。由于此時目標(biāo)是第二DMA引擎10b,路由器7a將完成分組轉(zhuǎn)發(fā)給OB鏈路控制器12a。由此,將完成分組通過數(shù)據(jù)鏈路路徑14a、IB鏈路控制器11b和IO比較器8b傳輸給第二DMA引擎10b(步驟S44)。
當(dāng)接收到完成分組時,第二DMA引擎10b產(chǎn)生寫分組。在寫分組中,根據(jù)配置寄存器20b中指示的復(fù)制目的地ID(主存儲器4b),將目標(biāo)設(shè)置為存儲器控制器6b。因此,將從第二DMA引擎10b輸出的寫分組通過路由器7b傳輸給存儲器控制器6b(步驟S45)。當(dāng)接收到寫分組時,存儲器控制器6b響應(yīng)DMA存儲器復(fù)制寫命令,將讀出數(shù)據(jù)寫入主存儲器4b。
根據(jù)本實施例,如圖14所示,用在本實施例中的數(shù)據(jù)鏈路路徑只是數(shù)據(jù)鏈路路徑14a。因此,本實施例具有對數(shù)據(jù)鏈路路徑的出色容錯性。
此外,由于第一DMA引擎10a產(chǎn)生偽裝分組,能夠通過同時使用第一DMA引擎10a和第二DMA引擎10b來執(zhí)行數(shù)據(jù)復(fù)制。在上述示例中,第二DMA引擎10b起到產(chǎn)生與完成分組相對應(yīng)的寫分組的作用。結(jié)果,減少了第一DMA引擎10a上的負載。因此,整體改善了存儲器數(shù)據(jù)的復(fù)制速度,因此減少了存儲器復(fù)制所需的總時間。即,能夠縮短系統(tǒng)操作的中止時間段。
此外,由于第一DMA引擎10a產(chǎn)生偽裝分組,第二DMA引擎10b不必發(fā)出任何讀分組(讀命令)。換句話說,不需要從第二DMA引擎10b通過IB鏈路控制器11b、數(shù)據(jù)鏈路路徑13b、OB鏈路控制器12a和路由器7a向存儲器控制器6a傳輸讀命令。省略了在系統(tǒng)之間傳輸讀命令。結(jié)果,整體改善了存儲器數(shù)據(jù)的復(fù)制速度,因此減少了存儲器復(fù)制所需的總時間。因此,能夠縮短系統(tǒng)操作的中止時間段。
第五實施例當(dāng)數(shù)據(jù)鏈路路徑13、14上發(fā)生錯誤時,本發(fā)明也是有用的。
在數(shù)據(jù)鏈路路徑13a發(fā)生故障的情況下,可以應(yīng)用第二或第四實施例。即,當(dāng)CPU 3a檢測到數(shù)據(jù)鏈路路徑13a的錯誤時,CPU 3a如第二實施例或第四實施例中那樣進行配置寄存器20的設(shè)置。如圖8或圖14所示,在那些實施例中不使用數(shù)據(jù)鏈路路徑13a。因此,能夠?qū)⒋鎯ζ鲾?shù)據(jù)從第一主存儲器4a復(fù)制到第二主存儲器4b。
在數(shù)據(jù)鏈路路徑14a發(fā)生故障的情況下,可以應(yīng)用第三實施例。即,當(dāng)CPU 3a檢測到數(shù)據(jù)鏈路路徑14a的錯誤時,CPU 3a如第三實施例中那樣進行配置寄存器20的設(shè)置。如圖11所示,在第三實施例中不使用數(shù)據(jù)鏈路路徑14a。因此,能夠?qū)⒋鎯ζ鲾?shù)據(jù)從第一主存儲器4a復(fù)制到第二主存儲器4b。
在數(shù)據(jù)鏈路路徑13b發(fā)生故障的情況下,可以應(yīng)用第一、第三和第四實施例。即,當(dāng)CPU 3a檢測到數(shù)據(jù)鏈路路徑13b的錯誤時,CPU 3a如第一、第三或第四實施例中那樣進行配置寄存器20的設(shè)置。如圖4、11和14所示,在那些實施例中不使用數(shù)據(jù)鏈路路徑13b。因此,能夠?qū)⒋鎯ζ鲾?shù)據(jù)從第一主存儲器4a復(fù)制到第二主存儲器4b。
在數(shù)據(jù)鏈路路徑14b發(fā)生故障的情況下,可以應(yīng)用上述所有實施例。即,當(dāng)CPU 3a檢測到數(shù)據(jù)鏈路路徑14b的錯誤時,CPU 3a如前述任一實施例中那樣進行配置寄存器20的設(shè)置。因此,能夠?qū)⒋鎯ζ鲾?shù)據(jù)從第一主存儲器4a復(fù)制到第二主存儲器4b。
在數(shù)據(jù)鏈路路徑13a和13b發(fā)生故障的情況下,即當(dāng)與對內(nèi)有關(guān)的所有數(shù)據(jù)鏈路路徑發(fā)生故障時,可以應(yīng)用第四實施例。即,當(dāng)CPU 3a檢測到數(shù)據(jù)鏈路路徑13a和13b的錯誤時,CPU 3a如第四實施例中那樣進行配置寄存器20的設(shè)置。如圖14所示,在第四實施例中不使用數(shù)據(jù)鏈路路徑13a和13b。因此,能夠?qū)⒋鎯ζ鲾?shù)據(jù)從第一主存儲器4a復(fù)制到第二主存儲器4b。
在數(shù)據(jù)鏈路路徑14a和14b發(fā)生故障的情況下,即當(dāng)與對外有關(guān)的所有數(shù)據(jù)鏈路路徑發(fā)生故障時,可以應(yīng)用第三實施例。即,當(dāng)CPU 3a檢測到數(shù)據(jù)鏈路路徑14a和14b的錯誤時,CPU 3a如第三實施例中那樣進行配置寄存器20的設(shè)置。如圖11所示,在第三實施例中不使用數(shù)據(jù)鏈路路徑14a和14b。因此,能夠?qū)⒋鎯ζ鲾?shù)據(jù)從第一主存儲器4a復(fù)制到第二主存儲器4b。
在數(shù)據(jù)鏈路路徑13a和14b發(fā)生故障的情況下,可以應(yīng)用第二或第四實施例。即,當(dāng)CPU 3a檢測到數(shù)據(jù)鏈路路徑13a和14b的錯誤時,CPU 3a如第二實施例或第四實施例中那樣進行配置寄存器20的設(shè)置。如圖8或圖14所示,在那些實施例中不使用數(shù)據(jù)鏈路路徑13a和14b。因此,能夠?qū)⒋鎯ζ鲾?shù)據(jù)從第一主存儲器4a復(fù)制到第二主存儲器4b。
在數(shù)據(jù)鏈路路徑14a和13b發(fā)生故障的情況下,可以應(yīng)用第三實施例。即,當(dāng)CPU 3a檢測到數(shù)據(jù)鏈路路徑14a和13b的錯誤時,CPU 3a如第三實施例中那樣進行配置寄存器20的設(shè)置。如圖11所示,在第三實施例中不使用數(shù)據(jù)鏈路路徑14a和13b。因此,能夠?qū)⒋鎯ζ鲾?shù)據(jù)從第一主存儲器4a復(fù)制到第二主存儲器4b。
如上所述,根據(jù)本發(fā)明的雙重同步系統(tǒng)1、DMA引擎10及其操作方法,減少了存儲器復(fù)制時間。因此,縮短了系統(tǒng)操作的中止時間段。此外,即使在一個系統(tǒng)的DMA引擎發(fā)生故障時,仍能執(zhí)行存儲器復(fù)制。此外,即使在連接在兩個系統(tǒng)之間的部分數(shù)據(jù)鏈路路徑發(fā)生故障時,仍能執(zhí)行存儲器復(fù)制。應(yīng)當(dāng)注意,本發(fā)明還可以應(yīng)用于由三個或多個系統(tǒng)構(gòu)成的多重同步系統(tǒng)。即使在這種情況下,也能獲得相同的效果。而且,路由器7可以適當(dāng)?shù)刂付繕?biāo)ID,代替產(chǎn)生偽裝分組的DMA引擎10。
對于本領(lǐng)域普通技術(shù)人員而言,以偏離上述具體細節(jié)的其他實施例來實現(xiàn)本發(fā)明是顯而易見的。因此,本發(fā)明的范圍應(yīng)當(dāng)由所附權(quán)利要求來確定。
權(quán)利要求
1.一種雙重同步系統(tǒng),包括第一系統(tǒng);和配置為與所述第一系統(tǒng)同步操作的第二系統(tǒng),其中所述第一系統(tǒng)和所述第二系統(tǒng)通過多條數(shù)據(jù)鏈路路徑彼此相連,所述第一系統(tǒng)包括第一存儲器;控制對所述第一存儲器的讀/寫的第一控制器;和訪問所述第一控制器的第一DMA(直接存儲器存取)引擎,所述第二系統(tǒng)包括第二存儲器;控制對所述第二存儲器的讀/寫的第二控制器;和訪問所述第二控制器的第二DMA引擎,其中在發(fā)送其中表示源是所述第一控制器和所述第二控制器中的任意一個的讀命令時,所述第一DMA引擎和所述第二DMA引擎中的每一個將所述源設(shè)置為所述第一DMA引擎和所述第二DMA引擎中的任意一個,所述第一控制器,響應(yīng)所述讀命令,從所述第一存儲器中讀出數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送回所述源,以及所述第二控制器,響應(yīng)所述讀命令,從所述第二存儲器中讀出數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送回所述源。
2.根據(jù)權(quán)利要求1所述的雙重同步系統(tǒng),其特征在于在從所述第一存儲器到所述第二存儲器的數(shù)據(jù)復(fù)制中,所述第一DMA引擎不僅向所述第一控制器發(fā)送其中將所述源設(shè)置為所述第一DMA引擎的第一讀命令,還向其發(fā)送其中將所述源設(shè)置為所述第二DMA引擎的第二讀命令,所述第一控制器分別響應(yīng)所述第一讀命令和所述第二讀命令,從所述第一存儲器中讀出數(shù)據(jù),并將讀出的數(shù)據(jù)分別發(fā)送給所述第一DMA引擎和所述第二DMA引擎,以及所述第一DMA引擎和所述第二DMA引擎通過所述第二控制器將讀出的數(shù)據(jù)寫入所述第二存儲器。
3.根據(jù)權(quán)利要求2所述的雙重同步系統(tǒng),其特征在于所述第一控制器響應(yīng)所述第一讀命令,讀出存儲在所述第一存儲器中的第一地址組中的數(shù)據(jù),并響應(yīng)所述第二讀命令,讀出存儲在所述第一存儲器中的不同于所述第一地址組的第二地址組中的數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的雙重同步系統(tǒng),其特征在于所述第一地址組是奇地址組和偶地址組之一,以及所述第二地址組是所述奇地址組和所述偶地址組中的另一個。
5.根據(jù)權(quán)利要求1所述的雙重同步系統(tǒng),其特征在于在從所述第一存儲器到所述第二存儲器的數(shù)據(jù)復(fù)制中,在所述第一DMA引擎故障的情況下,所述第二DMA引擎向所述第一控制器發(fā)送其中將所述源設(shè)置為所述第二DMA引擎的讀命令,所述第一控制器響應(yīng)所述讀命令,從所述第一存儲器中讀出數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送回所述第二DMA引擎,以及所述第二DMA引擎通過所述第二控制器將讀出的數(shù)據(jù)寫入所述第二存儲器。
6.根據(jù)權(quán)利要求1所述的雙重同步系統(tǒng),其特征在于在從所述第一存儲器到所述第二存儲器的數(shù)據(jù)復(fù)制中,在所述第二DMA引擎故障的情況下,所述第一DMA引擎向所述第一控制器發(fā)送其中將所述源設(shè)置為所述第一DMA引擎的讀命令,所述第一控制器響應(yīng)所述讀命令,從所述第一存儲器中讀出數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送回所述第一DMA引擎,以及所述第一DMA引擎通過所述第二控制器將讀出的數(shù)據(jù)寫入所述第二存儲器。
7.根據(jù)權(quán)利要求1所述的雙重同步系統(tǒng),其特征在于在從所述第一存儲器到所述第二存儲器的數(shù)據(jù)復(fù)制中,所述第一DMA引擎向所述第一控制器發(fā)送其中將源設(shè)置為所述第二DMA引擎的讀命令,所述第一控制器響應(yīng)所述讀命令,從所述第一存儲器中讀出數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送給所述第二DMA引擎,以及所述第二DMA引擎通過所述第二控制器將讀出的數(shù)據(jù)寫入所述第二存儲器。
8.根據(jù)權(quán)利要求2到7之一所述的雙重同步系統(tǒng),其特征在于所述多條數(shù)據(jù)鏈路路徑中的至少一些發(fā)生故障。
9.一種DMA引擎,位于具有第一系統(tǒng)和與所述第一系統(tǒng)同步操作的第二系統(tǒng)的雙重同步系統(tǒng)中,其中通過將表示所述第一系統(tǒng)中的DMA引擎的第一ID和表示所述第二系統(tǒng)中的DMA引擎的第二ID指定為命令的源的ID,來發(fā)出所述命令。
10.一種雙重同步系統(tǒng)的操作方法,包括(A)設(shè)置所述雙重同步系統(tǒng),具有第一系統(tǒng);和與所述第一系統(tǒng)同步操作的第二系統(tǒng),其中所述第一系統(tǒng)包括第一存儲器和對所述第一存儲器進行存取的第一DMA引擎,以及所述第二系統(tǒng)包括第二存儲器和對所述第二存儲器進行存取的第二DMA引擎;以及(B)在從所述第一存儲器到所述第二存儲器的數(shù)據(jù)復(fù)制中,使用所述第一DMA引擎和所述第二DMA引擎中的至少一個。
11.根據(jù)權(quán)利要求10所述的雙重同步系統(tǒng)的操作方法,其特征在于在所述(B)步驟中,同時使用所述第一DMA引擎和所述第二DMA引擎。
12.根據(jù)權(quán)利要求11所述的雙重同步系統(tǒng)的操作方法,其特征在于所述第一DMA引擎和所述第二DMA引擎之一用于讀出存儲在所述第一存儲器中的奇地址組中的數(shù)據(jù),而所述第一DMA引擎和所述第二DMA引擎中的另一個用于讀出存儲在所述第一存儲器中的偶地址組中的數(shù)據(jù)。
13.根據(jù)權(quán)利要求10所述的雙重同步系統(tǒng)的操作方法,其特征在于將所述第一DMA引擎和所述第二DMA引擎中未發(fā)生故障的一個用作所述(B)步驟中的所述至少一個DMA引擎。
全文摘要
一種雙重同步系統(tǒng)(1)具有第一系統(tǒng)(1a)和與第一系統(tǒng)(1a)同步操作的第二系統(tǒng)(1b)。第一和第二系統(tǒng)(1a、1b)彼此相連。第一系統(tǒng)(1a)包括第一存儲器(4a);第一存儲器控制器(6a);和第一DMA引擎(10a)。第二系統(tǒng)(1b)包括第二存儲器(4b);第二存儲器控制器(6b);和第二DMA引擎(10b)。在向存儲器控制器(6)發(fā)送讀命令時,每個DMA引擎(10)可以將讀命令的源設(shè)置為第一DMA引擎(10a)或第二DMA引擎(10b)。存儲器控制器(6)響應(yīng)讀命令,從存儲器(4)中讀出數(shù)據(jù),并將讀出的數(shù)據(jù)發(fā)送回讀出命令中指示的源。
文檔編號G06F13/28GK1794197SQ20051013169
公開日2006年6月28日 申請日期2005年12月16日 優(yōu)先權(quán)日2004年12月21日
發(fā)明者兩角裕一 申請人:日本電氣株式會社
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
陈巴尔虎旗| 周口市| 静安区| 邛崃市| 秭归县| 泸水县| 屏东县| 玉溪市| 澜沧| 磴口县| 即墨市| 临夏市| 柳州市| 齐河县| 东城区| 峨山| 东乌珠穆沁旗| 临猗县| 芷江| 汨罗市| 绥棱县| 达孜县| 教育| 林芝县| 大田县| 嘉义县| 绩溪县| 乌拉特中旗| 邯郸县| 荆州市| 通化县| 贺州市| 桐乡市| 都江堰市| 涞源县| 赣榆县| 吉首市| 德格县| 横山县| 乌海市| 万荣县|