亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

在存儲(chǔ)器遷移期間停止dma操作的計(jì)算機(jī)實(shí)現(xiàn)的方法、設(shè)備和計(jì)算機(jī)程序產(chǎn)品的制作方法

文檔序號(hào):6454388閱讀:252來(lái)源:國(guó)知局
專利名稱:在存儲(chǔ)器遷移期間停止dma操作的計(jì)算機(jī)實(shí)現(xiàn)的方法、設(shè)備和計(jì)算機(jī)程序產(chǎn)品的制作方法
技術(shù)領(lǐng)域
本發(fā)明總的涉及數(shù)據(jù)處理系統(tǒng),更具體地,涉及在存儲(chǔ)器遷移期間停 止I)MA操作的計(jì)算機(jī)實(shí)現(xiàn)的方法、設(shè)備和計(jì)算機(jī)程序產(chǎn)品。
背景技術(shù)
根據(jù)計(jì)算機(jī)系統(tǒng)的趨勢(shì),可以在系統(tǒng)運(yùn)行時(shí)不需中斷數(shù)據(jù)處理的情況 下進(jìn)行重新配置。例如,在計(jì)算機(jī)上運(yùn)行多個(gè)操作系統(tǒng)時(shí),當(dāng)?shù)谝徊僮飨?統(tǒng)正在使用特定的存儲(chǔ)器塊時(shí),可能需要重新分配用于第二操作系統(tǒng)的存 儲(chǔ)器塊。在這種情況下,在對(duì)存儲(chǔ)器重新分配之前,第一操作系統(tǒng)必須首 先停止使用物理存儲(chǔ)器塊。或者,例如,在物理存儲(chǔ)器塊中可能檢測(cè)到問(wèn) 題,在這種情況下期望將該存儲(chǔ)器從操作中移除,從而可對(duì)其進(jìn)行替換。 而且,過(guò)去曾經(jīng)使用該存儲(chǔ)器塊的任何操作系統(tǒng)都必須停止使用它。
在某些情況下,相對(duì)簡(jiǎn)單地停止使用一個(gè)物理存儲(chǔ)器塊并開(kāi)始使用另 一個(gè),這是由于在傳統(tǒng)操作系統(tǒng)中已經(jīng)存在與虛擬存儲(chǔ)器管理相關(guān)的機(jī)構(gòu) 以解決與訪問(wèn)該存儲(chǔ)器的操作系統(tǒng)相關(guān)的這個(gè)問(wèn)題的多個(gè)方面,但是這些 機(jī)構(gòu)取決于僅由操作系統(tǒng)訪問(wèn)而不是由I/O設(shè)備訪問(wèn)的程序數(shù)據(jù)的存儲(chǔ)器
塊。如果存儲(chǔ)器塊由1/o設(shè)備訪問(wèn),則問(wèn)題更加困難。由i/o設(shè)備的這種
訪問(wèn)一般是直接存儲(chǔ)器存取(DMA),盡管這不總是這種情況。
直接存儲(chǔ)器存取(DMA )是在沒(méi)有軟件直接輔助的情況下從I/O設(shè)備 到另一個(gè)實(shí)體(例如,存儲(chǔ)器或另一個(gè)I/O設(shè)備)的數(shù)據(jù)傳送。DMA需要 贏得用于發(fā)起I/O設(shè)備的I/O總線控制,以執(zhí)行DMA操作。對(duì)于例如傳 統(tǒng)PCI和PCI-X的共享總線,通過(guò)對(duì)I/O總線仲裁來(lái)獲得I/O總線的控制。對(duì)執(zhí)行仲裁的代理的關(guān)閉(從而允許對(duì)i/o總線仲裁),即仲裁器將關(guān)閉,
即防止對(duì)于4吏用該I/O總線的所有實(shí)體的DMA。對(duì)于每個(gè)總線(也稱為鏈 路)僅存在一個(gè)設(shè)備的類似PCI Express的I/O總線,通過(guò)具有緩存點(diǎn)來(lái) 獲得對(duì)總線的訪問(wèn),并且停止DMA涉及不向總線另一端的i殳備歸還任意 緩存點(diǎn)。
不使用分離傳輸?shù)拇鎯?chǔ)器映射I/O (MMIO)負(fù)載是在不需要操作目 標(biāo)(即用以提供數(shù)據(jù)的I/O設(shè)備)在I/O總線上必須產(chǎn)生它自己的傳輸以 返回所請(qǐng)求的數(shù)據(jù)的情況下從I/0設(shè)備到處理器的數(shù)據(jù)傳送。這些MMIO 操作需要請(qǐng)求者(例如用于處理器的I/O橋)連續(xù)向目標(biāo)要求(有時(shí)稱為 向目標(biāo)輪詢)數(shù)據(jù),直到在其中一個(gè)輪詢操作上的目標(biāo)具有可用的數(shù)據(jù)并 在請(qǐng)求者仲裁循環(huán)中將其返回至請(qǐng)求者。在該操作期間,目標(biāo)并不是獨(dú)立 地訪問(wèn)I/0總線,因此不需要贏得總線的控制。目標(biāo)通過(guò)執(zhí)行MMIO負(fù)栽 應(yīng)^#作返回?cái)?shù)據(jù)。所請(qǐng)求的數(shù)據(jù)包括在MMIO負(fù)栽應(yīng)答中。
使用分離傳輸?shù)拇鎯?chǔ)器映射I/O (MMIO)負(fù)載是在操作目標(biāo)(即用 以提供數(shù)據(jù)的I/O設(shè)備)可延遲將數(shù)據(jù)回傳至請(qǐng)求者的情況下從I/O設(shè)備 到處理器的數(shù)據(jù)傳送。目標(biāo)必須在I/O總線上產(chǎn)生它自己的傳輸以返回所 請(qǐng)求的數(shù)據(jù)。一旦目標(biāo)具有要返回的數(shù)據(jù),則目標(biāo)在I/O總線上產(chǎn)生MMIO 負(fù)栽應(yīng)^Mt,以向請(qǐng)求者傳送數(shù)據(jù)。
由1/Oi殳備訪問(wèn)的數(shù)據(jù)可能需要從一個(gè)物理頁(yè)向另一個(gè)遷移。當(dāng)需要 遷移由1/0設(shè)備訪問(wèn)的數(shù)據(jù)時(shí),在遷移處理期間需要暫停對(duì)該數(shù)據(jù)的DMA 訪問(wèn)。特別對(duì)于使用分離傳輸實(shí)現(xiàn)存儲(chǔ)器映射1/0 (MMIO)的系統(tǒng)來(lái)說(shuō), 現(xiàn)有技術(shù)沒(méi)有提供有效遷移該數(shù)據(jù)的解決方案。
在不實(shí)施用于存儲(chǔ)器映射I/O (MMIO)操作的分離傳輸?shù)南到y(tǒng)中, 一旦請(qǐng)求者贏得總線的控制,則請(qǐng)求者發(fā)出他的MMIO負(fù)載請(qǐng)求。然后, 請(qǐng)求者保持對(duì)操作的控制,直到I/O設(shè)備通過(guò)所請(qǐng)求的數(shù)據(jù)對(duì)MMIO負(fù)載 請(qǐng)求作出應(yīng)答。從而,不需要目標(biāo)贏得總線的控制。
在實(shí)施分離傳輸?shù)南到y(tǒng)中, 一旦請(qǐng)求者贏得總線的控制,則請(qǐng)求者發(fā) 出他的MMIO負(fù)載請(qǐng)求。 一旦請(qǐng)求者發(fā)出他的MMIO負(fù)載請(qǐng)求,則請(qǐng)求者讓出總線的控制。 一旦目標(biāo)i/o設(shè)備具有所請(qǐng)求的數(shù)據(jù),則它必須贏得
總線的控制,以應(yīng)答該請(qǐng)求并向請(qǐng)求者發(fā)送它的數(shù)據(jù)。
如果通過(guò)關(guān)閉由I/O設(shè)備對(duì)總線的訪問(wèn)來(lái)停止DMA,則在使用分離傳 輸?shù)南到y(tǒng)中,使用I/O系統(tǒng)的停止部分的部分系統(tǒng)將停止。這是因?yàn)樾枰?贏得總線的控制以執(zhí)行MMIO負(fù)載應(yīng)答的1/0設(shè)備再不能夠贏得總線的控 制。如果I/0設(shè)備不能夠贏得總線的控制,因此不能夠執(zhí)行它的MMIO負(fù) 載應(yīng)答,則MMIO負(fù)載操作將不再能夠完成,從而停止發(fā)出MMIO負(fù)栽 操作的處理器。
此外,如果在更靠近處理器的位置而不是與1/0設(shè)備直接鄰近地停止 DMA,從而1/0設(shè)備能夠仍舊訪問(wèn)總線,則得到停止的DMA寫(xiě)請(qǐng)求可防 止MMIO負(fù)載分離響應(yīng)返回至處理器。這樣的原因是PCI操作排序規(guī)則 需要MMIO負(fù)栽應(yīng)答不能夠返回進(jìn)行負(fù)載操作的處理器,直到已經(jīng)完成來(lái) 自相同I/O設(shè)備的所有先前DMA寫(xiě)操作。因此,MMIO負(fù)載應(yīng)答阻塞 在等待處理的先前DMA寫(xiě)請(qǐng)求之后的隊(duì)列中,但是由于存儲(chǔ)器遷移操作 所以不能夠處理這些請(qǐng)求。

發(fā)明內(nèi)容
公開(kāi)一種從源物理頁(yè)向目的物理頁(yè)遷移數(shù)據(jù)的計(jì)算機(jī)實(shí)現(xiàn)的方法、設(shè) 備和計(jì)算機(jī)程序產(chǎn)品。在使用分離傳輸實(shí)現(xiàn)MMIO加載操作(還稱為 MMIO加載請(qǐng)求)的系統(tǒng)中,當(dāng)從一個(gè)物理頁(yè)向另 一個(gè)物理頁(yè)遷移數(shù)據(jù)時(shí), 所述方法、設(shè)備和計(jì)算機(jī)程序產(chǎn)品提供在主橋中停止直接存儲(chǔ)器存取 (DMA )操作,而不停止MMIO加載操作。
開(kāi)始從所述源物理頁(yè)向所述目的物理頁(yè)遷移數(shù)據(jù)的遷移處理,以使得 主橋進(jìn)入第一狀態(tài)。然后,當(dāng)所述主橋處于所述第一狀態(tài)時(shí),它中止它的 直接存儲(chǔ)區(qū)存取(DMA)請(qǐng)求的處理。然后,開(kāi)始數(shù)據(jù)遷移處理,以從源 物理頁(yè)向目的物理頁(yè)復(fù)制數(shù)據(jù)。
在第一狀態(tài)時(shí),如果MMIO加栽操作需要處理,則將主橋轉(zhuǎn)移到第二 狀態(tài),以使得主橋繼續(xù)它的DMA和MMIO操作的處理。ii^第二狀態(tài)的處理向數(shù)據(jù)遷移處理信號(hào)通知需要重新開(kāi)始數(shù)據(jù)遷移處理。
然而,如果在完成從所述源物理頁(yè)向所述目的物理頁(yè)對(duì)所述數(shù)據(jù)的復(fù) 制時(shí)確定所述主橋仍舊處于所述第 一狀態(tài),則所述主橋轉(zhuǎn)移到第三狀態(tài)。
當(dāng)所述主橋處于第三狀態(tài)時(shí),所述主橋完全停止它的所有I/O操作(包括 DMA和MMIO操作)的處理,從而完成數(shù)據(jù)遷移處理的最終狀態(tài),包括 從指向源頁(yè)的地址改變?yōu)楝F(xiàn)在指向目的頁(yè)。


在所附的權(quán)利要求中闡述本發(fā)明的特征所實(shí)現(xiàn)的新穎性特征。以下, 參照附圖僅通過(guò)實(shí)例描述包括優(yōu)選使用模式和進(jìn)一步目的和優(yōu)點(diǎn)的本發(fā)明 實(shí)施例,其中
圖l描述包括示例性實(shí)施例的數(shù)據(jù)處理系統(tǒng)的框圖; 圖2示出包括示例性實(shí)施例的邏輯分區(qū)平臺(tái)的框圖; 圖3是示出才艮據(jù)示例性實(shí)施例的轉(zhuǎn)換和控制項(xiàng)目(TCE)表和物理存 儲(chǔ)器的框圖4示出包括示例性實(shí)施例的主橋;
機(jī)構(gòu);圖6是示出才艮據(jù)示例性實(shí)施例的設(shè)置軟停止位以使得主橋進(jìn)入軟停止
狀態(tài)的高級(jí)流程圖7是示出才艮據(jù)示例性實(shí)施例的設(shè)置軟停止故障位的高級(jí)流程圖8是示出根據(jù)示例性實(shí)施例的設(shè)置硬停止位的高級(jí)流程圖9是示出根據(jù)示例性實(shí)施例主橋基于在主橋中包括的軟停止、硬停
止和軟停止故障位的當(dāng)前設(shè)置處理新DMA和中斷請(qǐng)求的高級(jí)流程圖; 圖10是示出才艮據(jù)示例性實(shí)施例如果主橋的存儲(chǔ)器映射I/0 (MMIO)
隊(duì)列變滿則處于退出硬停止?fàn)顟B(tài)的主橋退出硬停止?fàn)顟B(tài)的高級(jí)流程圖; 圖11是示出根據(jù)示例性實(shí)施例不管源頁(yè)是否被訪問(wèn)當(dāng)從源頁(yè)向目的
頁(yè)遷移數(shù)據(jù)時(shí)臨時(shí)停止DMA操作的高級(jí)流程圖;圖12示出才艮據(jù)示例性實(shí)施例包括進(jìn)行中的遷移(MIP)位的轉(zhuǎn)換和控 制項(xiàng)目(TCE);
圖13是示出根據(jù)示例性實(shí)施例利用轉(zhuǎn)換和控制項(xiàng)目的進(jìn)行中的遷移 (MIP)位來(lái)確定是否應(yīng)該ii^軟停止?fàn)顟B(tài)的高級(jí)流程圖;和
圖14是示出根據(jù)示例性實(shí)施例僅如果源頁(yè)被向源頁(yè)寫(xiě)入的!/0設(shè)備訪 問(wèn),則在從源物理頁(yè)向目的物理頁(yè)遷移數(shù)據(jù)時(shí)的暫時(shí)停止DMA操作的高 級(jí)流程圖。
M實(shí)施方式
示例性實(shí)施例是一種計(jì)算機(jī)實(shí)現(xiàn)的方法、這種和計(jì)算機(jī)程序產(chǎn)品,用 于當(dāng)使用分離傳輸在執(zhí)行MMIO負(fù)載操作的系統(tǒng)中從源物理頁(yè)向目的物 理頁(yè)遷移數(shù)據(jù)時(shí),停止主橋中的DMA操作,而不停止MMIO負(fù)載操作。 根據(jù)該示例性實(shí)施例,當(dāng)在停止DMA操作同時(shí)需要處理MMIO負(fù)載操作 時(shí),重新開(kāi)始數(shù)據(jù)遷移處理。
該示例性實(shí)施例提供了在主橋(例如PCI主橋(PHB))中實(shí)現(xiàn)的軟 停止?fàn)顟B(tài)和硬停止?fàn)顟B(tài)。
在本發(fā)明第一實(shí)施例中,當(dāng)遇到DMA寫(xiě)操作時(shí),不管DMA寫(xiě)操作 是否嘗試對(duì)源頁(yè)的訪問(wèn),在從源頁(yè)到目的頁(yè)的數(shù)據(jù)遷移期間暫停通過(guò)主橋 的所有DMA操作。當(dāng)需要將數(shù)據(jù)從源物理頁(yè)遷移到目的物理頁(yè)時(shí),軟件 設(shè)置在主橋中的軟停止位。當(dāng)設(shè)置了軟停止位并且在主橋發(fā)生DMA寫(xiě)操 作時(shí),主橋進(jìn)入軟停止?fàn)顟B(tài)。在軟停止?fàn)顟B(tài)下時(shí),主橋暫停從與該主橋連 接的1/0設(shè)備到存儲(chǔ)器的直接存儲(chǔ)器存取(DMA)流量。在軟停止?fàn)顟B(tài)激 活時(shí)間段內(nèi),主橋繼續(xù)處理MMIO存儲(chǔ)流量。如果在主橋處于軟停止?fàn)顟B(tài) 時(shí)主橋接收到MMIO負(fù)載操作,則將暫停軟停止?fàn)顟B(tài),以允許處理MMIO 負(fù)栽操作。如果暫停軟停止?fàn)顟B(tài)以允許處理MMIO負(fù)載操作,則需要重新 開(kāi)始遷移處理。
如果能夠在不暫停軟停止?fàn)顟B(tài)的情況下完成遷移,則主橋?qū)⑦M(jìn)入硬停 止?fàn)顟B(tài),從而軟件可完成遷移處理(包括改變地址)的最終步驟。當(dāng)主橋?qū)⑦M(jìn)入石更停止?fàn)顟B(tài)時(shí),暫停通過(guò)該主橋的所有DMA和所有MMIO流量(包 括MMIO負(fù)載和負(fù)載應(yīng)M作兩者)。當(dāng)主橋處于硬停止?fàn)顟B(tài)時(shí),軟件可 完成遷移處理的最終步驟。
本發(fā)明第一示例性實(shí)施例描述了在主橋中包括的軟停止位、硬停止位 和軟停止故障位。當(dāng)將主橋的軟停止位設(shè)置為等于1并且主橋接收到DMA 寫(xiě)操作以進(jìn)行處理時(shí),主橋進(jìn)入軟停止?fàn)顟B(tài)。軟停止故障位表示在主橋處 于軟停止?fàn)顟B(tài)時(shí)主橋是否接收到MMIO負(fù)栽操作。當(dāng)將主橋的軟停止位設(shè) 置為等于0時(shí),主橋不處于軟停止?fàn)顟B(tài)。當(dāng)將主橋的硬停止位設(shè)置為等于 0時(shí),主橋不處于硬停止?fàn)顟B(tài)。
這里描述包括多個(gè)項(xiàng)目的表。該表稱為轉(zhuǎn)換和控制表。在表中的每個(gè) 項(xiàng)目將特定源物理頁(yè)與特定I/O適配器相關(guān)。所述項(xiàng)目稱為轉(zhuǎn)換和控制項(xiàng) 目(TCE )。按照DMA操作的I/O總線地址對(duì)表進(jìn)行索引。
更具體地,當(dāng)軟件需要從源物理頁(yè)向目的物理頁(yè)遷移數(shù)據(jù)時(shí),軟件將 可訪問(wèn)源頁(yè)的所有主橋中的軟停止位設(shè)置為等于1。然后,軟件通過(guò)向可 使用指向源頁(yè)的表項(xiàng)目的所有主橋發(fā)出MMIO負(fù)載操作的方式刷新來(lái)自 那些主橋的任意剩余DMA寫(xiě)處理。然后,軟件從源頁(yè)向目的頁(yè)復(fù)制數(shù)據(jù)。
在可訪問(wèn)源頁(yè)的每個(gè)主橋中,在數(shù)據(jù)的遷移期間,軟件檢查以觀察軟 停止故障位是否#皮_沒(méi)置為等于1。如果在數(shù)據(jù)正遷移時(shí)主橋接收到MMIO 復(fù)制操作,則將軟停止故障位設(shè)置為等于1。如果軟停止故障位被設(shè)置為 等于l,則軟件必須重新開(kāi)始遷移處理。
如杲軟停止故障位被設(shè)置為等于0,則當(dāng)由軟件讀取軟停止位時(shí),硬 件將硬停止位設(shè)置為等于1。將硬停止位設(shè)置為等于1,以使得主橋進(jìn)入硬 停止?fàn)顟B(tài)。當(dāng)主橋處于硬停止?fàn)顟B(tài)時(shí),將指向源頁(yè)的表項(xiàng)目中的值改變?yōu)?指向目的頁(yè)。 一旦表項(xiàng)目改變,則軟件將受影響的主橋中的軟停止位、硬 停止位、和軟停止故障位重設(shè)為等于O。
在本發(fā)明第二實(shí)施例中,在從源物理頁(yè)向目的物理頁(yè)的數(shù)據(jù)遷移期間, 僅如果DMA操作嘗試向具有要遷移數(shù)據(jù)的特定源物理頁(yè)寫(xiě)處理,則暫停 通過(guò)主橋的DMA操作。如果在遷移進(jìn)行期間沒(méi)有DMA操作嘗試向源頁(yè)寫(xiě)操作,則在數(shù)據(jù)的遷移期間DMA操作將繼續(xù)通過(guò)主橋的處理。
在第二實(shí)施例中,每個(gè)轉(zhuǎn)換和控制項(xiàng)目(TCE)包括新的控制位,這 里稱為進(jìn)行中的遷移(M1P)位。在TCE中的轉(zhuǎn)換信息指向特定物理頁(yè)。 當(dāng)要遷移在物理頁(yè)中的數(shù)據(jù)時(shí),將指向該物理頁(yè)的TCE中的MIP位設(shè)置 為等于l。當(dāng)TCE中的MIP位械:設(shè)置為等于O時(shí),當(dāng)前不遷移在TCE所 指向的頁(yè)中的數(shù)據(jù)。
地址轉(zhuǎn)換和控制邏輯以及DMA控制邏輯都包括每個(gè)主橋中。當(dāng)在主 橋中的地址轉(zhuǎn)換和控制邏輯提取將其MIP位設(shè)置為等于1的TCE時(shí), I)MA控制邏輯將主橋的軟停止位設(shè)置為等于1,以使得主橋進(jìn)入軟停止?fàn)?態(tài)。當(dāng)主橋進(jìn)入軟停止?fàn)顟B(tài)時(shí),主橋繼續(xù)處理通過(guò)主橋的MMIO存儲(chǔ)流量, 除非主橋接收到對(duì)于其I/O設(shè)備之一的MMIO復(fù)制操作。
在軟停止?fàn)顟B(tài)期間,主橋暫停從與該主橋連接的I/O設(shè)備到系統(tǒng)存儲(chǔ) 器的DMA操作。在軟停止?fàn)顟B(tài)激活期間,主橋?qū)⒗^續(xù)處理MMIO存儲(chǔ)操 作。如果在主橋處于軟停止?fàn)顟B(tài)時(shí)主橋接收到對(duì)于I/O設(shè)備的MMIO復(fù)制 操作,則將暫停軟停止?fàn)顟B(tài),以允許處理MMIO復(fù)制操作。在這種情況下, 將軟停止故障位設(shè)置為等于1,以向軟件通過(guò)信號(hào)傳輸需要重新開(kāi)始遷移 處理。
如果能夠在不暫停軟件停止?fàn)顟B(tài)下完成遷移,則軟件將讀出軟停止故 障位,并且其值為0,在這種情況下主橋硬件將i殳置硬停止位,并且主橋 將進(jìn)入硬停止?fàn)顟B(tài)。當(dāng)主橋進(jìn)入硬停止?fàn)顟B(tài)時(shí),暫停通過(guò)該主橋的所有 DMA和所有MMIO流量。當(dāng)主橋處于硬停止?fàn)顟B(tài)時(shí),軟件可完成遷移處 理的最終步驟。
更具體地,當(dāng)軟件需要從源頁(yè)向目的頁(yè)遷移數(shù)據(jù)時(shí),在所有主橋中軟 件將指向源頁(yè)的所有TCE中的MIP位設(shè)置為等于1。然后,軟件通過(guò)向 可使用指向源頁(yè)表項(xiàng)目的所有主橋發(fā)出MMIO負(fù)載操作的方式刷新來(lái)自 那些主橋的任意剩余DMA寫(xiě)處理。然后,軟件從源頁(yè)向目的頁(yè)復(fù)制數(shù)據(jù)。 然后,在數(shù)據(jù)的遷移期間,軟件檢查每個(gè)主橋以觀察主橋的軟停止故障位 是否#皮_沒(méi)置為等于1。如果在遷移期間主橋接收到以源頁(yè)為目標(biāo)的DMA
12寫(xiě)操作并且還接收到MMIO復(fù)制操作,則將軟停止故障位設(shè)置為等于1。 如果將軟停止故障位"^殳置為等于1,則軟件必須重新開(kāi)始遷移處理。如果 將軟停止故障位設(shè)置為等于0,則當(dāng)軟件讀取軟停止故障位時(shí),硬件將硬 停止位設(shè)置為等于1,以使得主橋進(jìn)入硬停止?fàn)顟B(tài)。當(dāng)主橋處于硬停止?fàn)?態(tài)時(shí),然后將TCE改變?yōu)橹赶蚰康捻?yè)。在將TCE改變?yōu)橹赶蚰康捻?yè)之后, 將TCE中的MIP位設(shè)置為等于O。 一旦TCE表項(xiàng)目改變,則軟件將軟停 止位、硬停止位、和軟停止故障位重設(shè)為等于O。
現(xiàn)在參照附圖,圖1示出包括示例性實(shí)施例的數(shù)據(jù)處理系統(tǒng)的框圖。 數(shù)據(jù)處理系統(tǒng)100可以是對(duì)陣多處理器(SMP)系統(tǒng),其包括與系統(tǒng)總線 106連接的多個(gè)處理器101、 102、 103和104。例如,數(shù)據(jù)處理系統(tǒng)100 可以是作為網(wǎng)絡(luò)中的服務(wù)器實(shí)現(xiàn)的IBM eServer,即紐約Armonk的國(guó)際 商業(yè)機(jī)器/>司的產(chǎn)品?;蛘?,可采用單處理器系統(tǒng)。與系統(tǒng)總線106連接 的還有存儲(chǔ)控制器/緩存108,其提供對(duì)于多個(gè)本地存儲(chǔ)器160-163的接口。 包括轉(zhuǎn)換和控制項(xiàng)目(TCE)表110a的I/O總線橋110連接至系統(tǒng)總線 106,并且提供對(duì)I/O總線112的接口??扇鐖D所示集成存儲(chǔ)控制器/緩存 108和1/0總線橋110。
I/O橋110包括表110a。轉(zhuǎn)換和控制項(xiàng)目(TCE )存儲(chǔ)在TCE表110a 中。表110a是I/O地址轉(zhuǎn)換和保護(hù)機(jī)構(gòu),其基于I/O頁(yè)提供用以控制從I/O 設(shè)備向物理頁(yè)的I/O操作的能力。
TCE項(xiàng)目將物理存儲(chǔ)器160-163的物理頁(yè)與在I/O總線112上可用于 I/O適配器120-124、 148-150的I/O總線地址頁(yè)相關(guān)。每個(gè)項(xiàng)目將特定物 理頁(yè)與特定I/O地址頁(yè)相關(guān)。按照DMA操作的I/O總線地址對(duì)TCE表110a 進(jìn)行索引。將該表用作間接尋址機(jī)構(gòu),幾乎相同于從軟件向物理存儲(chǔ)器提 供間接尋址機(jī)構(gòu)的處理器中的虛擬地址機(jī)構(gòu)。這種處理器虛擬地址轉(zhuǎn)換機(jī) 構(gòu)在本領(lǐng)域中已知。
數(shù)據(jù)處理系統(tǒng)100是邏輯分區(qū)(LPAR)的數(shù)據(jù)處理系統(tǒng);然而,應(yīng) 該理解,本發(fā)明不限于LPAR系統(tǒng),但是也可以在其他數(shù)據(jù)處理系統(tǒng)中實(shí) 現(xiàn)。LPAR數(shù)據(jù)處理系統(tǒng)100具有同時(shí)運(yùn)行的多個(gè)異構(gòu)^Mt系統(tǒng)(或多個(gè)單操作系統(tǒng)的副本)。所述多個(gè)操作系統(tǒng)中的每個(gè)可具有在其中執(zhí)行的任
意數(shù)目的軟件程序。數(shù)據(jù)處理系統(tǒng)IOO被邏輯分區(qū),從而可對(duì)不同邏輯分 區(qū)分配不同的PCI輸入/輸出適配器(IOA) 120、 121、 122、 123和124, 圖形適配器148和硬盤(pán)適配器149,或其部分。在這種情況下,圖形適配 器148提供對(duì)顯示設(shè)備(未示出)的連接,而硬盤(pán)適配器149提供用以控 制硬盤(pán)150的連接。
因此,例如,假設(shè)將數(shù)據(jù)處理系統(tǒng)100分成3個(gè)邏輯分區(qū)Pl、 P2和 P3。對(duì)這3個(gè)分區(qū)的每個(gè)分配每個(gè)PCIIOA 120-124、圖形適配器148、硬 盤(pán)適配器149、每個(gè)主機(jī)處理器101-104以及來(lái)自本地存儲(chǔ)器160-163的存 儲(chǔ)器。在該實(shí)例中,存儲(chǔ)器160-163可采用雙列存儲(chǔ)器模塊(DIMM)的 形式。并不是正常地基于每個(gè)DIMM對(duì)于分區(qū)分配DIMM。相反,分區(qū) 將得到通過(guò)平臺(tái)所觀察的總存儲(chǔ)器的一部分。例如,可對(duì)邏輯分區(qū)Pl分 配處理器101、來(lái)自本地存儲(chǔ)器160-163的存儲(chǔ)器的某些部分、PCI IOA 121、 123和124;對(duì)邏輯分區(qū)P2分配處理器102-103、來(lái)自本地存儲(chǔ)器 160-163的存儲(chǔ)器的某些部分、PCI IOA 120和122;以及對(duì)邏輯分區(qū)P3 分配處理器104、來(lái)自本地存儲(chǔ)器160-163的存儲(chǔ)器的某些部分、圖形適配 器148、硬盤(pán)適配器149。
對(duì)不同邏輯分區(qū)分配在邏輯分區(qū)的數(shù)據(jù)處理系統(tǒng)100中執(zhí)行的每個(gè)操 作系統(tǒng)。因此,在邏輯分區(qū)的數(shù)據(jù)處理系統(tǒng)100中執(zhí)行的每個(gè)操作系統(tǒng)僅 可訪問(wèn)在其邏輯分區(qū)中的那些IOA。例如,高級(jí)交互執(zhí)行體(AIX)操作 系統(tǒng)的一個(gè)實(shí)例可在分區(qū)Pl中執(zhí)行,AIX操作系統(tǒng)的第二實(shí)例(副本) 可在分區(qū)P2中執(zhí)行,Linux或OS/400操作系統(tǒng)可在邏輯分區(qū)P3中運(yùn)行。
外圍組件互連(PCI)主橋(PHB) 130、 131、 132和133連接至I/O 總線112,并提供分別與PCI局部總線140、 141、 142和143的接口。優(yōu) 選地,PCI總線140、 141、 142和143符合PCI規(guī)范。在以下所述的實(shí)施 例中,PCI總線140、 141、 142和143符合利用MMIO操作的分離傳輸?shù)?PCI規(guī)范。
PCI IOA 120-121通過(guò)包括交換器和橋接器的I/O結(jié)構(gòu)(fabric) 180連接至PCI局部總線140。以類似方式,PCI IOA 122通過(guò)I/O結(jié)構(gòu)181 連接至PCI局部總線141, PCI IOA 123和124通過(guò)I/O結(jié)構(gòu)182連接至 PCI局部總線142,圖形適配器148和^_盤(pán)適配器149通過(guò)I/O結(jié)構(gòu)183 連接至PCI局部總線143。 I/O結(jié)構(gòu)180-183提供對(duì)PCI總線140-143的接 口。典型的PCI主橋?qū)⒅С?和8個(gè)之間的IOA (例如,用于插件連接的 擴(kuò)展槽)。PCI IOA 120-124中的每個(gè)提供在數(shù)據(jù)處理系統(tǒng)100和作為對(duì) 數(shù)據(jù)處理系統(tǒng)100的客戶端的輸入/輸出設(shè)備(例如,其他網(wǎng)絡(luò)計(jì)算機(jī))之 間的接口。
PCI主橋130提供用于PCI總線140的接口 ,以連接至I/O總線112。
這種PCI總線還將PCI主橋130連接至服務(wù)處理器郵箱接口和ISA總線
訪問(wèn)經(jīng)過(guò)邏輯194和I/O結(jié)構(gòu)180。服務(wù)處理器郵箱接口和ISA總線訪問(wèn)
經(jīng)過(guò)邏輯194轉(zhuǎn)發(fā)指向PCI/ISA橋193的PCI訪問(wèn)。NVRAM存儲(chǔ)裝置
192連接至ISA總線196。服務(wù)處理器135通過(guò)其本地PCI總線195耦合
至服務(wù)處理器郵箱接口和ISA總線訪問(wèn)經(jīng)過(guò)邏輯194。服務(wù)處理器135還
經(jīng)由多個(gè)JTAG/I2C總線134連接至處理器101-104。 JTAG/I2C總線134
是JTAG/掃描總線(見(jiàn)IEEE 1149.1)和飛利浦I2C總線的組合。然而,
可選擇地,JTAG/^C總線134可通過(guò)僅飛利浦I2C總線或僅JTAG/掃描
總線代替。將主處理器101、 102、 103和104的所有SP-ATTN信號(hào)連接
在一起,以中斷服務(wù)處理器的輸入信號(hào)。服務(wù)處理器135具有它自己的本
地存儲(chǔ)器191,并訪問(wèn)硬盤(pán)OP-面板190。
當(dāng)數(shù)據(jù)處理系統(tǒng)100最初通電時(shí),服務(wù)處理器135使用JTAG/I2C總
線134,以詢問(wèn)系統(tǒng)(主機(jī))處理器101-104、存儲(chǔ)控制器/緩存108和I/O
橋110。在該步驟完成時(shí),服務(wù)處理器135具有對(duì)數(shù)據(jù)處理系統(tǒng)100的目
錄和拓樸結(jié)構(gòu)的理解。服務(wù)處理器135還在通過(guò)詢問(wèn)主機(jī)處理器101-104、
存儲(chǔ)控制器/緩存108和I/O橋110所找到的所有元件上執(zhí)行內(nèi)建自測(cè)試
(BIST)、基本保證測(cè)試(BAT)和存儲(chǔ)器測(cè)試。通過(guò)服務(wù)處理器135聚
集和報(bào)告對(duì)于在BIST、 BAT和存儲(chǔ)器測(cè)試期間檢測(cè)的故障的任意錯(cuò)誤信 自如果在去除了在BIST、 BAT和存儲(chǔ)器測(cè)試期間發(fā)現(xiàn)故障的元件之后 仍舊可能進(jìn)行系統(tǒng)資源的有用/有效配置,則允許數(shù)據(jù)處理系統(tǒng)100繼續(xù)將 可執(zhí)行代碼加載到本地(主機(jī))存儲(chǔ)器160-163中。然后,服務(wù)處理器135 釋放用于執(zhí)行被加載到本地存儲(chǔ)器160-163中的代碼的主機(jī)處理器 101-104。在主機(jī)處理器101-104執(zhí)行來(lái)自數(shù)據(jù)處理系統(tǒng)100中的各個(gè)操作 系統(tǒng)的代碼時(shí),服務(wù)處理器135 it7v監(jiān)控和報(bào)告錯(cuò)誤模式。由服務(wù)處理器 135監(jiān)控的項(xiàng)目類型包括,例如,散熱風(fēng)扇速度和操作、熱傳感器、電源 調(diào)節(jié)器、以及由處理器101-104、本地存儲(chǔ)器160-163和I/O橋110才艮告的 可恢復(fù)和不可恢復(fù)錯(cuò)誤。
服務(wù)處理器135負(fù)責(zé)保存和報(bào)告與數(shù)據(jù)處理系統(tǒng)100中所有監(jiān)控的項(xiàng) 目相關(guān)的4晉誤信息。服務(wù)處理器135還基于錯(cuò)誤類型和預(yù)定閾值采取行動(dòng)。 例如,服務(wù)處理器135可在處理器的高速緩存上記錄過(guò)多不可恢復(fù)的錯(cuò)誤, 并確定這是否為硬故障的預(yù)測(cè)?;谒龃_定操作,服務(wù)處理器135可標(biāo) 記在當(dāng)前運(yùn)行會(huì)話和未來(lái)初始化裝入程序(IPL)期間用于重新配置的資 源。IPL有時(shí)還稱作"啟動(dòng)程序"或"引導(dǎo)程序"。
可使用各種商業(yè)可用的計(jì)算機(jī)系統(tǒng)來(lái)實(shí)現(xiàn)數(shù)據(jù)處理系統(tǒng)100。例如, 可使用從國(guó)際商業(yè)機(jī)器公司得到的IBM eServer iSeries Model 840系統(tǒng)來(lái) 實(shí)現(xiàn)數(shù)據(jù)處理系統(tǒng)100。這種系統(tǒng)可支持使用OS/400操作系統(tǒng)(同樣可從 國(guó)際商業(yè)機(jī)器公司得到)的邏輯分區(qū)。
本領(lǐng)域普通4支術(shù)人員可以理解,圖1中所述的硬件可以改變。例如, 也可以額外地或代替所述硬件地使用其他外圍設(shè)備,例如光盤(pán)驅(qū)動(dòng)器等。 所示實(shí)例并非暗示對(duì)于本發(fā)明的結(jié)構(gòu)的限制。
圖2示出包括示例性實(shí)施例的邏輯分區(qū)平臺(tái)的框圖。在邏輯分區(qū)平臺(tái) 200中的硬件可作為例如圖1中的數(shù)據(jù)處理系統(tǒng)100來(lái)實(shí)現(xiàn)。邏輯分區(qū)平 臺(tái)200包括分區(qū)硬件230、操作系統(tǒng)202、 204、 206、 208和分區(qū)管理固 件210。操作系統(tǒng)202、 204、 206和208可以是在邏輯分區(qū)平臺(tái)200上同 時(shí)運(yùn)行的單操作系統(tǒng)的多個(gè)副本或多個(gè)異構(gòu)操作系統(tǒng)。這些操作系統(tǒng)可使 用OS/400實(shí)現(xiàn),所述OS/400被j殳計(jì)為與分區(qū)管理固件210 (還稱為管理程序)對(duì)接。OS/400僅用作這些示例性實(shí)施例的實(shí)例。可根據(jù)具體實(shí)現(xiàn)使 用其他類型的操作系統(tǒng),例如AIX和Linux。
操作系統(tǒng)202、 204、 206和208位于分區(qū)203、 205、 207和209中。 管理程序軟件是可用以實(shí)現(xiàn)分區(qū)管理固件210以及可從國(guó)際商業(yè)機(jī)器公司 得到的軟件實(shí)例。固件是在存儲(chǔ)器芯片中存儲(chǔ)的"軟件",所述存儲(chǔ)器芯 片在不需要電力的情況下保存固件的內(nèi)容,例如只讀存儲(chǔ)器(ROM)、可 編程ROM (PROM)、可擦除可編程(EPROM)、電可擦除可編程 (EEPROM)和非易失性隨才踏取存儲(chǔ)器(非易失性RAM)。
此外,這些分區(qū)還包括分區(qū)固件211、 213、 215和217。可使用初始 引導(dǎo)程序代碼、IEEE-1275標(biāo)準(zhǔn)開(kāi)放固件以及從國(guó)際商業(yè)機(jī)器公司得到的 運(yùn)行時(shí)抽象軟件(RTAS)來(lái)實(shí)現(xiàn)固件211、 213、 215和217。
當(dāng)對(duì)分區(qū)203、 205、 207和209實(shí)例化時(shí),通過(guò)分區(qū)管理固件210將 引導(dǎo)程序代碼的副本加栽到分區(qū)203、 205、 207和209上。之后,將控制 傳輸?shù)揭龑?dǎo)程序代碼,然后通過(guò)引導(dǎo)程序代碼加載開(kāi)放固件和RTAS。然 后,將與分區(qū)相關(guān)或分配給分區(qū)的處理器分派給分區(qū)的存儲(chǔ)器,以執(zhí)行分 區(qū)固件。
分區(qū)硬件230包括多個(gè)處理器232-238、多個(gè)系統(tǒng)存儲(chǔ)器單元 240-246、多個(gè)IOA 248-262、存儲(chǔ)單元270和TCE表272。對(duì)于邏輯分區(qū) 平臺(tái)200中的多個(gè)分區(qū)之一分配處理器232-238、存儲(chǔ)器單元240-246、 NVRAM存儲(chǔ)裝置298、 IOA 248-262或其部分中的每個(gè),其中邏輯分區(qū)平 臺(tái)200中的多個(gè)分區(qū)中的每個(gè)對(duì)應(yīng)于操作系統(tǒng)202、 204、 206和208之一。
分區(qū)管理固件210執(zhí)行用于分區(qū)203、 205、 207和209的多個(gè)功能和 服務(wù),以創(chuàng)建和執(zhí)行邏輯分區(qū)平臺(tái)200的分區(qū)。分區(qū)管理固件210是與基 礎(chǔ)硬件相同的固件實(shí)現(xiàn)的虛擬機(jī)。因此,分區(qū)管理固件210允許通過(guò)虛擬 化邏輯分區(qū)平臺(tái)200的硬件資源來(lái)同時(shí)執(zhí)行獨(dú)立的OS映像202、 204、 206 和208。
服務(wù)處理器2卯可用于提供各種服務(wù),例如處理分區(qū)中的平臺(tái)錯(cuò)誤。 這些服務(wù)還用作向廠家(例如國(guó)際商業(yè)機(jī)器公司)報(bào)告錯(cuò)誤的服務(wù)代理??赏ㄟ^(guò)硬件管理控制臺(tái)(例如硬件管理控制臺(tái)280)控制不同分區(qū)的操作。 硬件管理控制臺(tái)280是單獨(dú)數(shù)據(jù)處理系統(tǒng),系統(tǒng)管理員可從中執(zhí)行包括對(duì) 不同分區(qū)重新分配資源的各種功能。
在LPAR環(huán)境中,不允許在一個(gè)分區(qū)中的資源或程序影響另 一個(gè)分區(qū) 中的操作。此外,有利地,資源的分配需要細(xì)分。例如,由于將限制系統(tǒng) 可配置性(包括在分區(qū)之間動(dòng)態(tài)移動(dòng)資源的能力),所以通常不接受將連 接至特定PCI主橋(PHB )的所有IOA分配給相同分區(qū)。
因此,在將IOA連接至I/0總線的PCI主橋中需要一些功能,以能夠 將資源(例如獨(dú)立的IOA或IOA的部分)分配給獨(dú)立的分區(qū),并且同時(shí), 例如通過(guò)獲得對(duì)其他分區(qū)的資源的訪問(wèn)防止所分配的資源影響其他分區(qū)。
圖3是示出才艮據(jù)示例性實(shí)施例的轉(zhuǎn)換和控制項(xiàng)目(TCE )表和物理存 儲(chǔ)器的框圖。頁(yè)遷移是從一個(gè)物理頁(yè)復(fù)制數(shù)據(jù)并將其存儲(chǔ)在不同物理頁(yè)中 的處理。
物理存儲(chǔ)器302包括物理頁(yè)304和物理頁(yè)306。在所示實(shí)例中,要將 物理頁(yè)304的內(nèi)容遷移到物理頁(yè)306。允許發(fā)生這種遷移的基礎(chǔ)機(jī)構(gòu)是經(jīng) 由TCE表對(duì)I/O適配器的I/O總線地址的重定向。
TCE表300包含基于位于I/O總線上的頁(yè)地址提取的項(xiàng)目。在TCE 表中包含的是將I/O總線頁(yè)地址轉(zhuǎn)換成新系統(tǒng)存儲(chǔ)頁(yè)地址的項(xiàng)目。例如, 在從源頁(yè)304向目的頁(yè)306遷移數(shù)據(jù)之前,TCE 308指向物理頁(yè)304, TCE 310指向物理頁(yè)304。在從源頁(yè)304向目的頁(yè)306遷移數(shù)據(jù)之后,改變了在 TCE表300中的地址,從而TCE 308現(xiàn)在指向物理頁(yè)306, TCE 310現(xiàn)在 指向物理頁(yè)306。
圖4示出包括示例性實(shí)施例的主橋,例如PCI主橋(PHB )。主橋400 通過(guò)主總線402與主機(jī)通信。主總線可以是與I/O橋耦合的I/O總線,例 如I/O總線112(見(jiàn)圖1)。由主橋400通過(guò)主總線402接收存儲(chǔ)器映射I/O (MMIO)加載和存儲(chǔ)請(qǐng)求以及DMA讀取應(yīng)答。MMIO加載和存儲(chǔ)請(qǐng)求 通過(guò)MMIO隊(duì)列和控制器404來(lái)排隊(duì)和控制。在DMA隊(duì)列和控制器406 排隊(duì)的DMA寫(xiě)和讀請(qǐng)求以及在MMIO加栽應(yīng)答隊(duì)列和控制器408排隊(duì)的MMIO加栽應(yīng)答通過(guò)主總線402流出主橋400。
主橋400通過(guò)二級(jí)總線410與一個(gè)或多個(gè)I/O適配器通信。DMA寫(xiě)和 讀請(qǐng)求以及MMIO加載應(yīng)答通過(guò)二級(jí)總線410流入主橋400。優(yōu)選地,二 級(jí)總線410是實(shí)施PCI規(guī)范(例如PCI Express )的PCI總線,其中所述 PCI規(guī)范利用MMIO操作的分離傳輸。
主橋400包括地址轉(zhuǎn)換和控制器412,其提取TCE以用于轉(zhuǎn)換控制 DMA操作。地址轉(zhuǎn)換和控制器412耦合至頁(yè)遷移和控制器414。
機(jī)構(gòu)。頁(yè)遷移和控制機(jī)構(gòu)414耦合至地址轉(zhuǎn)換和控制機(jī)構(gòu)412 (見(jiàn)圖4 )。 頁(yè)遷移和控制機(jī)構(gòu)414包括遷移控制狀態(tài)機(jī)500、軟停止位寄存器502、 硬停止位寄存器504、和軟停止故障位寄存器506。將軟停止位、硬停止位 和軟停止故障位的當(dāng)前值存儲(chǔ)到它們各自的寄存器502、 504或506中,并 且可從中讀出。
在從源頁(yè)向目的物理頁(yè)遷移源物理頁(yè)中的數(shù)據(jù)時(shí),將軟停止位設(shè)置為 等于1。在軟停止位被設(shè)置為等于1時(shí),如果將DMA寫(xiě)操作接收到DMA 隊(duì)列406中,則軟停止位通過(guò)鏈路508向遷移控制狀態(tài)機(jī)500信號(hào)通知停 止DMA流水線。在流水線停止時(shí),主橋400將不進(jìn)一步處理通過(guò)二級(jí)鏈 路410接收的DMA寫(xiě)流量,除非從MMIO隊(duì)列和控制器404處理MMIO 加載請(qǐng)求(見(jiàn)圖4 )。如果從MMIO隊(duì)列和控制器404處理MMIO加載 請(qǐng)求,則需要釋放DMA停止,從而可接收MMIO加載應(yīng)答消息,否則 MMIO隊(duì)列將充滿,使得軟件不能夠訪問(wèn)主橋控制邏輯,從而造成MMIO 加載請(qǐng)求的死鎖和最終超時(shí)。這將出現(xiàn)錯(cuò)誤情形。
當(dāng)主橋400處于軟停止?fàn)顟B(tài)時(shí),遷移控制狀態(tài)機(jī)500可通過(guò)鏈路510 感測(cè)已經(jīng)由主橋400接收到MMIO加載。在這種情況下,遷移控制狀態(tài)機(jī) 500將軟停止故障位設(shè)置為等于1,其表示需要重新開(kāi)始遷移的軟件。
如果當(dāng)軟件讀取寄存器506時(shí)軟停止位等于1并且軟停止故障位等于 0,則頁(yè)遷移和控制邏輯414將設(shè)置硬停止位,其向遷移控制狀態(tài)機(jī)500 通知遷移控制狀態(tài)才幾500不應(yīng)該處理任何DMA請(qǐng)求,即使存在MMIO加載應(yīng)答信號(hào)。
圖6是示出根據(jù)示例性實(shí)施例的設(shè)置軟停止位以使得主橋ii^軟停止 狀態(tài)的高級(jí)流程圖。如框600所示,該過(guò)程開(kāi)始,之后轉(zhuǎn)到框602,其示 出接收軟件請(qǐng)求以設(shè)置軟件停止位,從而可將源頁(yè)中的數(shù)據(jù)遷移到目的頁(yè)。 接下來(lái),框604表示將軟停止位設(shè)置為等于1。然后,如框606所示,該 處理中止。
圖7是示出根據(jù)示例性實(shí)施例的設(shè)置軟停止故障位的高級(jí)流程圖。如 框700所示,該過(guò)程開(kāi)始,之后轉(zhuǎn)到框702,其示出接收存儲(chǔ)器映射輸^/ 輸出(MMIO)加栽命令。接下來(lái),框704示出確定軟停止位是否等于1。 如果確定軟停止位不等于1,則處理轉(zhuǎn)到框714。如果確定軟停止位等于1, 則處理轉(zhuǎn)到框706。
框706示出確定在流水線中是否存在停止的DMA寫(xiě)命令。如果確定 不存在停止的DMA寫(xiě)命令,則處理轉(zhuǎn)到框714。如果確定存在停止的DMA 寫(xiě)命令,則處理轉(zhuǎn)到框708,其示出確定硬停止位是否等于1。如果確定硬 停止位等于l,則處理轉(zhuǎn)回框708,直到硬停止位等于0時(shí)為止。
再參照框708,如果確定硬停止位不等于1,即等于O,則處理轉(zhuǎn)到框 710,其示出將軟停止故障位設(shè)置為等于1。接下來(lái),框712示出處理DMA 寫(xiě)操作。然后,處理轉(zhuǎn)到框714。然后,框714示出處理MMIO加載命令。 然后,如框716所示,該處理中止。
圖8是示出才艮據(jù)示例性實(shí)施例的設(shè)置硬停止位的高級(jí)流程圖。在從源 頁(yè)向目的頁(yè)遷移數(shù)據(jù)之后執(zhí)行圖8的處理,并且TCE值需要更新,以指向 目的頁(yè)。如框800所示,該過(guò)程開(kāi)始,之后轉(zhuǎn)到框802,其示出接收軟件 請(qǐng)求,以讀出對(duì)于硬停止位、軟停止位和軟停止故障位的當(dāng)前設(shè)置。
接下來(lái),框804示出確定軟停止位是否等于1并且軟停止故障位是否 等于0。如果確定軟停止位等于1并且軟停止故障位等于0,則處理轉(zhuǎn)到框 806,其示出將硬停止位設(shè)置為等于1。然后,處理轉(zhuǎn)到框808。
再參照框804,如果確定軟停止位等于1并且軟停止故障位等于0,則 處理轉(zhuǎn)到框808,其示出恢復(fù)對(duì)硬停止位、軟停止位和軟停止故障位的當(dāng)前設(shè)置。然后,如框810所示,該處理中止。
圖9是示出根據(jù)示例性實(shí)施例主橋基于在主橋中包括的軟停止、硬停 止和軟停止故障位的當(dāng)前設(shè)置處理新DMA和中斷請(qǐng)求的高級(jí)流程圖。如 框900所示,該過(guò)程開(kāi)始,之后轉(zhuǎn)到框卯2,其示出接收請(qǐng)求。接下來(lái), 框卯4示出確定硬停止位是否設(shè)置為等于1。如果確定硬停止位設(shè)置為等 于l,則處理轉(zhuǎn)回框904,直到硬停止位不再等于l,即等于0時(shí)為止。
再參照框卯4,如果確定硬停止位不等于1,即等于0,則處理轉(zhuǎn)到框 906,其示出確定軟停止位是否等于1。如果確定軟停止位不等于1,則處 理轉(zhuǎn)到框912。
再參照框906,如果確定軟停止位等于l,則處理轉(zhuǎn)到框908,其示出 確定軟停止故障位是否等于1。如果確定軟停止故障位不等于1,則處理轉(zhuǎn) 回框906。如果確定軟停止故障位等于1,則處理轉(zhuǎn)到框910。
框910示出確定所接收的請(qǐng)求是DMA請(qǐng)求還是中斷。如果確定所接 收的請(qǐng)求是中斷,則處理轉(zhuǎn)回框904。如果確定所接收的請(qǐng)求是DMA請(qǐng) 求,則處理轉(zhuǎn)到框912,其示出正常處理DMA。然后,如框914所示,該 處理中止。
圖10是示出根據(jù)示例性實(shí)施例如果主橋的存儲(chǔ)器映射I/0 (MMIO) 隊(duì)列充滿則處于退出硬停止?fàn)顟B(tài)的主橋退出硬停止?fàn)顟B(tài)的高級(jí)流程圖。如 框1000所示,該過(guò)程開(kāi)始,之后轉(zhuǎn)到框1002,其示出確定石更停止位是否 等于1。如果確定硬停止位不等于1,即等于0,則如框1004所示,該處
理中止。
再參照框1002,如果確定硬停止位等于l,則處理轉(zhuǎn)到框1006,其示 出是否由于MMIO隊(duì)列充滿而4吏得MMIO流水線停止。如果MMIO隊(duì) 列充滿并且不能接收任意新附加MMIO請(qǐng)求,則MMIO流水線停止。如 果確定MMIO流水線沒(méi)有停止,則處理轉(zhuǎn)回框1002。如果確定MMIO流 水線已經(jīng)停止,則處理轉(zhuǎn)到框1008,其示出丟棄使得流水線停止的MMIO 復(fù)制,設(shè)置適當(dāng)?shù)腻e(cuò)誤狀態(tài),以及將硬停止位設(shè)置為等于0。從丟棄的 MMIO負(fù)載的恢復(fù)是平臺(tái)依賴性的。然而,恢復(fù)典型地包括檢測(cè)錯(cuò)誤、重設(shè)i/o子系統(tǒng),重啟未完成的1/0操作。1/0子系統(tǒng)的重設(shè)包括將硬停止位 重設(shè)為等于0。然后,處理轉(zhuǎn)回框1002。
圖11是示出根據(jù)示例性實(shí)施例不管源頁(yè)是否被訪問(wèn)當(dāng)從源頁(yè)向目的 頁(yè)遷移數(shù)據(jù)時(shí)暫時(shí)停止DMA操作的高級(jí)流程圖。如框1100所示,該過(guò)程 開(kāi)始,之后轉(zhuǎn)到框1102,其示出向?qū)υ错?yè)映射的每個(gè)主橋發(fā)出MMIO負(fù) 載請(qǐng)求。該MMIO負(fù)載將使得任意未完成的DMA寫(xiě)操作^皮刷新。
接下來(lái),框1104描述在具有指向要被遷移的頁(yè)的TCE的所有主橋中 將軟停止位設(shè)置為等于l,將硬停止位設(shè)置為等于0,以及將軟停止故障位 設(shè)置為等于0。
然后,處理轉(zhuǎn)到框1106,其示出從源頁(yè)向目的頁(yè)復(fù)制數(shù)據(jù)。之后,框 1108示出讀取在對(duì)源頁(yè)映射的所有主橋中的頁(yè)遷移控制寄存器。如果軟停 止位等于1并且軟停止故障位等于0,則讀取這些寄存器的處理使得硬停 止位設(shè)置為等于1。
接下來(lái),框1110示出確定所有軟停止故障位是否仍舊等于0。如果確 定所有軟停止故障位沒(méi)有仍舊等于0,則處理轉(zhuǎn)回框1104。再參照框1110, 如果確定所有軟停止故障位仍舊等于0,則處理轉(zhuǎn)到框1112,其示出設(shè)置 所有受影響的TCE以指向目的頁(yè)。接下來(lái),框1114示出在所有主橋中將 所有軟停止、應(yīng)停止和軟停止故障位設(shè)置為等于O。然后,如框1116所示, 該處理中止。
根據(jù)本發(fā)明第二示例性實(shí)施例,對(duì)TCE表中的每個(gè)轉(zhuǎn)換和控制項(xiàng)目增 加新的控制位。在這里,該位稱為進(jìn)行中的遷移(MIP)位。在TCE中的 MIP位的值表示在TCE所指向的物理頁(yè)中的數(shù)據(jù)當(dāng)前是否被遷移。當(dāng)MIP 位設(shè)置為等于1時(shí),該數(shù)據(jù)當(dāng)前被遷移。當(dāng)MIP位設(shè)置為等于0時(shí),該數(shù) 據(jù)當(dāng)前沒(méi)有被遷移。
圖12示出才艮據(jù)示例性實(shí)施例包括進(jìn)行中的遷移(MIP )位的轉(zhuǎn)換和控 制項(xiàng)目(TCE) 1200。每個(gè)轉(zhuǎn)換和控制項(xiàng)目(TCE)包括轉(zhuǎn)換信息1202, 用于將命令中的地址(還稱為請(qǐng)求)轉(zhuǎn)換為特定物理頁(yè);進(jìn)行中的遷移 (MIP )位1204;和讀/寫(xiě)控制信息1206。圖13
(MIP )位來(lái)確定主橋是否應(yīng)該i^/v軟停止?fàn)顟B(tài)的高級(jí)流程圖。如框1300 所示,該過(guò)程開(kāi)始,之后轉(zhuǎn)到框1302,其示出接收要處理的DMA操作。 接下來(lái),框1304示出讀取用于該DMA操作的TCE。
然后,框1306示出確定這是否為DMA寫(xiě)操作,并且進(jìn)行中的遷移 (MIP)位是否等于1。如果確定這不是DMA寫(xiě)操作并且進(jìn)行中的遷移 (MIP)位等于1,則如框1310所示,該處理中止。再參照框1306,如果 確定這是DMA寫(xiě)操作并且進(jìn)行中的遷移(MIP)位等于1,則處理轉(zhuǎn)到框 1308,其示出將軟停止位設(shè)置為等于1。然后,如框1310所示,該處理中 止。
圖14是示出根據(jù)示例性實(shí)施例僅如果源頁(yè)被向源頁(yè)寫(xiě)入的1/0設(shè)備訪 問(wèn),則在從源物理頁(yè)向目的物理頁(yè)遷移數(shù)據(jù)時(shí)暫時(shí)停止DMA操作的高級(jí) 流程圖。如框1400所示,該過(guò)程開(kāi)始,之后轉(zhuǎn)到框1402,其示出在指向 源頁(yè)的所有TCE中將進(jìn)行中的遷移(MIP)位設(shè)置為等于1。改變MIP 位的處理使得那些TCE的任意緩存的副本無(wú)效。
接下來(lái),框1404示出向具有所映射的源頁(yè)的每個(gè)主橋發(fā)出存儲(chǔ)器映射 輸入/輸出(MMIO )加載請(qǐng)求。該MMIO加載在向處理器返回MMIO加 載應(yīng)答之前使得TCE的任意硬件無(wú)效到達(dá)主橋,并且將保證對(duì)存儲(chǔ)器刷新 在該無(wú)效之前對(duì)TCE的所有寫(xiě)操作。
然后,該處理轉(zhuǎn)到框1406,其示出從源頁(yè)向目的頁(yè)復(fù)制數(shù)據(jù)。接下來(lái), 框1408示出在可具有指向源頁(yè)的TCE的所有主橋中將軟停止位設(shè)置為等 于0。之后,框1410示出在已經(jīng)對(duì)源頁(yè)映射的所有主橋中讀取頁(yè)遷移控制 寄存器。如果軟停止位和軟停止故障位等于0,則讀取這些存儲(chǔ)器的處理 使得將硬停止位設(shè)置為等于1 。
接下來(lái),框1412示出所有軟停止故障位是否仍舊等于0。如果確定不 是所有軟停止故障位仍舊等于0,則處理返回框1414,其示出在所有主橋 中將軟停止位設(shè)置為等于O,將硬停止位設(shè)置為等于O,以及將軟停止位設(shè) 置為等于O。然后,處理轉(zhuǎn)回框1404。再參照框1412,如果確定所有軟停止故障位仍舊等于0,則處理轉(zhuǎn)到 框1416,其示出設(shè)置所有受影響的TCE以指向目的頁(yè)。然后,在那些TCE 中,將所有進(jìn)行中的遷移(MIP)位設(shè)置為等于O。之后,框1418將所有 主橋中的軟停止位設(shè)置為等于O,將硬停止位設(shè)置為等于O,以及將軟停止 故障位設(shè)置為等于O。然后,如框1420所示,該處理中止。
本發(fā)明可采用完全硬件實(shí)施例或包含硬件和軟件元素的實(shí)施例。在優(yōu) 選實(shí)施例中,在包括但不限于固件、駐留軟件、微碼等的硬件和軟件中實(shí) 現(xiàn)本發(fā)明。
此外,本發(fā)明可采用從計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可訪問(wèn)的計(jì)算機(jī) 程序產(chǎn)品的形式,所述計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)提供用于計(jì)算機(jī)或任 意指令執(zhí)行系統(tǒng)或與其連接的程序代碼。為了這里說(shuō)明的目的,計(jì)算機(jī)可 用或計(jì)算機(jī)可讀介質(zhì)可以是可包含、存儲(chǔ)、通信、傳播或傳輸用于指令執(zhí) 行系統(tǒng)、裝置或i殳備或與其連接的程序的任意有形裝置。
介質(zhì)可以是電子、磁、光、電磁、紅外或半導(dǎo)體系統(tǒng)(或裝置或設(shè)備) 或傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的實(shí)例包括半導(dǎo)體或固態(tài)存儲(chǔ)器、磁帶、 可卸計(jì)算機(jī)磁盤(pán)、隨機(jī)存取存儲(chǔ)區(qū)(RAM)、只讀存儲(chǔ)區(qū)(ROM)、硬 盤(pán)和光盤(pán)。光盤(pán)的當(dāng)前實(shí)例包括壓縮盤(pán)-只讀存儲(chǔ)區(qū)(CD-ROM)、壓縮盤(pán) _讀/寫(xiě)(CD-R/W)和DVD。
總線間接與存儲(chǔ)區(qū)元件耦合的至少一個(gè)處理器。存儲(chǔ)器元件可包括在程序 代碼的實(shí)際執(zhí)行期間采用的本地存儲(chǔ)器、海量存儲(chǔ)裝置、以及提供至少一 些程序代碼的臨時(shí)存儲(chǔ)以減少在執(zhí)行期間必須從海量存儲(chǔ)裝置提取代碼的 次數(shù)的高速緩存。
輸入/輸出或I/0設(shè)備(包括但不限于鍵盤(pán)、顯示器、定點(diǎn)設(shè)備等)可 直接或通過(guò)中間I/O控制器耦合至系統(tǒng)。
網(wǎng)絡(luò)適配器也可耦合至系統(tǒng),以使得數(shù)據(jù)處理系統(tǒng)能夠通過(guò)中間專用 解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡僅是網(wǎng)絡(luò)適配器的幾個(gè)當(dāng)前可用類型。為了說(shuō)明和描述的目的提出本發(fā)明實(shí)施例的以上描述,并且其不是窮 盡的,以及并沒(méi)有將本發(fā)明限制在所公開(kāi)的特定形式。對(duì)于本領(lǐng)域普通技 術(shù)人員,許多變形和改變是清楚的。選擇和描述實(shí)施例以最佳地解釋發(fā)明 原理、實(shí)際應(yīng)用,以及使得本領(lǐng)域普通技術(shù)人員能夠通過(guò)適用于特定用途 的具有各種修改的各種實(shí)施例理解本發(fā)明。
權(quán)利要求
1.一種從源物理頁(yè)向目的物理頁(yè)遷移數(shù)據(jù)的計(jì)算機(jī)實(shí)現(xiàn)的方法,所述計(jì)算機(jī)實(shí)現(xiàn)的方法包括開(kāi)始從所述源物理頁(yè)向所述目的物理頁(yè)遷移數(shù)據(jù)的遷移處理;使得主橋進(jìn)入第一狀態(tài);當(dāng)所述主橋處于所述第一狀態(tài)時(shí),通過(guò)所述主橋暫停所述主橋的直接存儲(chǔ)器存取(DMA)請(qǐng)求的處理;和在所述主橋處于所述第一狀態(tài)時(shí),如果由所述主橋接收到存儲(chǔ)器映射輸入/輸出(MMIO)加載請(qǐng)求,則中斷所述第一狀態(tài),以使得所述主橋進(jìn)入第二狀態(tài)。
2. 根據(jù)權(quán)利要求1所迷的方法,還包括響應(yīng)于所述主橋接收到所述MMIO加載請(qǐng)求,使得所述主橋近入第二 狀態(tài);和在所述主橋處于所述第二狀態(tài)時(shí),通過(guò)所迷主橋繼續(xù)直接存儲(chǔ)器存取 請(qǐng)求的處理。
3. 根據(jù)權(quán)利要求2所迷的方法,還包括響應(yīng)于所述主橋進(jìn)入所述第二狀態(tài),需要重新開(kāi)始所述遷移處理。
4. 根據(jù)權(quán)利要求l至3中任一個(gè)所述的方法,還包括 響應(yīng)于開(kāi)始所述遷移處理,開(kāi)始從所述源物理頁(yè)向所述目的物理頁(yè)復(fù)制數(shù)據(jù);定所述主橋是否仍舊處于所述第一狀態(tài);和響應(yīng)于在完成所述復(fù)制時(shí)確定所述主橋仍舊處于所述第一狀態(tài),使得 所述主橋it^第三狀態(tài)。
5. 根據(jù)權(quán)利要求4所述的方法,還包括響應(yīng)于所述主橋進(jìn)入所述第三狀態(tài),通過(guò)所述主橋停止所述主橋的所 有1/0操作的處理。
6. 才艮據(jù)權(quán)利要求5所述的方法,還包括 完成所述遷移處理。
7. 根據(jù)權(quán)利要求6所述的方法,還包括 改變對(duì)于所述數(shù)據(jù)的地址,以指向所述目的頁(yè);和 使得所述主橋退出所述第三狀態(tài)。
8. 根據(jù)權(quán)利要求l至7中任一個(gè)所述的方法,還包括 將遷移位包括在轉(zhuǎn)換和控制表中的每個(gè)項(xiàng)目中,其中在所述轉(zhuǎn)換和控制表中的每個(gè)項(xiàng)目與特定物理頁(yè)相關(guān);和僅如果DMA寫(xiě)請(qǐng)求嘗試對(duì)所述源頁(yè)寫(xiě)入并且在與所述源物理頁(yè)相關(guān) 的項(xiàng)目中設(shè)置遷移位,則使得所述主橋i^所述第一狀態(tài)。
9. 根據(jù)權(quán)利要求8所述的方法,還包括 通過(guò)所述主橋接收DMA請(qǐng)求;使用與所述源物理頁(yè)相關(guān)的遷移位,確定所述DMA請(qǐng)求是否嘗試對(duì) 所述源物理頁(yè)寫(xiě)入;響應(yīng)于確定所述DMA請(qǐng)求嘗試對(duì)所述源物理寫(xiě)入,使得所述主橋進(jìn) 入所述第一狀態(tài);和響應(yīng)于確定所述DMA請(qǐng)求沒(méi)有嘗試對(duì)所述源物理寫(xiě)入,通過(guò)所述主 橋執(zhí)行所述DMA請(qǐng)求。
10. —種計(jì)算才;i^呈序產(chǎn)品,包括含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用介質(zhì),所述計(jì)算機(jī)可用程序代 碼用于從源物理頁(yè)向目的物理頁(yè)遷移數(shù)據(jù),所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可用程序代碼,開(kāi)始從所述源物理頁(yè)向所述目的物理頁(yè)遷移數(shù) 據(jù)的遷移處理;計(jì)算^^可用程序代碼,使得主橋^v第一狀態(tài);計(jì)算機(jī)可用程序代碼,當(dāng)所述主橋處于所述第一狀態(tài)時(shí),通過(guò)所述主 橋暫停所述主橋的直接存儲(chǔ)器存取(DMA)請(qǐng)求的處理;和計(jì)算機(jī)可用程序代碼,在所述主橋處于所述第一狀態(tài)時(shí),如果由所述 主橋接收到存儲(chǔ)器映射輸^/輸出(MMIO)加載請(qǐng)求,則中斷所述第一狀態(tài),以使得所述主橋進(jìn)入第二狀態(tài)。
11. 一種從源物理頁(yè)向目的物理頁(yè)遷移數(shù)據(jù)的設(shè)備,所述設(shè)備包括 使得主橋i^第 一狀態(tài)的頁(yè)遷移機(jī)構(gòu);當(dāng)所述主橋處于所述第一狀態(tài)時(shí),所述主橋暫停所述主橋的直接存儲(chǔ) 器存取(DMA)請(qǐng)求的處理;和在所述主橋處于所述第一狀態(tài)時(shí),如果由所述主橋接收到存儲(chǔ)器映射 輸入/輸出(MMIO)加栽請(qǐng)求,則所述頁(yè)遷移機(jī)構(gòu)中斷所述第一狀態(tài),以 使得所述主橋i^第二狀態(tài)
12. 根據(jù)權(quán)利要求11所述的設(shè)備,還包括響應(yīng)于所述主橋接收到所述MMIO加載請(qǐng)求,所述頁(yè)遷移機(jī)構(gòu)使得所 述主橋^第二狀態(tài);和在所述主橋處于所述第二狀態(tài)時(shí),所述主橋繼續(xù)直接存儲(chǔ)器存取請(qǐng)求 的處理。
13. 根據(jù)權(quán)利要求12所述的設(shè)備,還包括響應(yīng)于所述主橋進(jìn)入所述第二狀態(tài),所述頁(yè)遷移機(jī)構(gòu)需要重新開(kāi)始所 述遷移處理。
14. 4艮據(jù)權(quán)利要求11至13中任一個(gè)所述的設(shè)備,還包括 響應(yīng)于開(kāi)始所述遷移處理,所述遷移處理開(kāi)始從所述源物理頁(yè)向所述目的物理頁(yè)復(fù)制數(shù)據(jù);響應(yīng)于完成從所述源物理頁(yè)向所述目的物理頁(yè)對(duì)所述數(shù)據(jù)的復(fù)制,所 述頁(yè)遷移機(jī)構(gòu)確定所述主橋是否仍舊處于所述第一狀態(tài);和響應(yīng)于在完成所述復(fù)制時(shí)確定所述主橋仍舊處于所述第一狀態(tài),所述 頁(yè)遷移機(jī)構(gòu)使得所述主橋進(jìn)入第三狀態(tài)。
15. 根據(jù)權(quán)利要求14所述的設(shè)備,還包括響應(yīng)于所述主橋進(jìn)入所述笫三狀態(tài),所述主橋停止所有1/0操作的處理。
16. 根據(jù)權(quán)利要求15所述的設(shè)備,還包括完成所述遷移處理。
17. 根據(jù)權(quán)利要求16所述的設(shè)備,還包括 所述遷移處理改變對(duì)于所述iL據(jù)的地址,以指向所述目的頁(yè)。
18. 根據(jù)權(quán)利要求11至17中任一個(gè)所述的設(shè)備,還包括 將遷移位包括在轉(zhuǎn)換和控制表中的每個(gè)項(xiàng)目中,其中在所述轉(zhuǎn)換和控制表中的每個(gè)項(xiàng)目與特定物理頁(yè)相關(guān);和僅如果DMA寫(xiě)請(qǐng)求嘗試對(duì)所述源頁(yè)寫(xiě)入并且在與所述源物理頁(yè)相關(guān) 的項(xiàng)目中設(shè)置遷移位,則所述頁(yè)遷移機(jī)構(gòu)使得所迷主橋i^所述第一狀態(tài)。
19. 根據(jù)權(quán)利要求18所述的設(shè)備,還包括 所述主橋接收DMA請(qǐng)求;使用與所述源物理頁(yè)相關(guān)的遷移位,以確定所述DMA請(qǐng)求是否嘗試 對(duì)所述源物理頁(yè)寫(xiě)入;響應(yīng)于確定所述DMA請(qǐng)求嘗試對(duì)所述源物理寫(xiě)入,所述頁(yè)遷移才幾構(gòu) 使得所述主橋ii^所述第一狀態(tài);和響應(yīng)于確定所述DMA請(qǐng)求沒(méi)有嘗試對(duì)所述源物理寫(xiě)入,所述主橋執(zhí) 行所述DMA請(qǐng)求。
全文摘要
公開(kāi)一種從源物理頁(yè)向目的物理頁(yè)遷移數(shù)據(jù)的計(jì)算機(jī)實(shí)現(xiàn)的方法、設(shè)備和計(jì)算機(jī)程序產(chǎn)品。開(kāi)始從所述源物理頁(yè)向所述目的物理頁(yè)遷移數(shù)據(jù)的遷移處理,以使得主橋進(jìn)入第一狀態(tài)。然后,當(dāng)所述主橋處于所述第一狀態(tài)時(shí),所述主橋暫停由所述主橋的直接存儲(chǔ)器存取(DMA)請(qǐng)求的處理。在所述主橋處于所述第一狀態(tài)時(shí),從源物理頁(yè)向目的物理頁(yè)遷移數(shù)據(jù)。
文檔編號(hào)G06F13/28GK101410813SQ200780011257
公開(kāi)日2009年4月15日 申請(qǐng)日期2007年5月23日 優(yōu)先權(quán)日2006年5月25日
發(fā)明者A·G·亞內(nèi)斯, C·A·本德, P·A·巴克蘭, S·M·瑟伯 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1