TWI417724B - 使用替代頁池管理直接記憶器存取寫入頁錯誤之電腦執行方法、裝置、及電腦程式產品 - Google Patents
使用替代頁池管理直接記憶器存取寫入頁錯誤之電腦執行方法、裝置、及電腦程式產品 Download PDFInfo
- Publication number
- TWI417724B TWI417724B TW096107838A TW96107838A TWI417724B TW I417724 B TWI417724 B TW I417724B TW 096107838 A TW096107838 A TW 096107838A TW 96107838 A TW96107838 A TW 96107838A TW I417724 B TWI417724 B TW I417724B
- Authority
- TW
- Taiwan
- Prior art keywords
- page
- data
- current control
- direct memory
- memory access
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 31
- 238000004590 computer program Methods 0.000 title claims description 15
- 238000011084 recovery Methods 0.000 claims description 39
- 238000013519 translation Methods 0.000 claims description 31
- 238000012795 verification Methods 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 6
- 238000012958 reprocessing Methods 0.000 claims 8
- 230000004044 response Effects 0.000 claims 4
- 238000012546 transfer Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 19
- 239000000463 material Substances 0.000 description 15
- 230000007246 mechanism Effects 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000006833 reintegration Effects 0.000 description 1
- 238000010572 single replacement reaction Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
Description
本發明之較佳實施例一般係關於資料處理系統,更特別的是,關於使用替代寫入緩衝頁池,直接記憶體存取寫入頁錯誤之電腦執行方法、裝置、及電腦程式產品有關。
根據電腦系統發展趨勢,系統必須做到在重新設定組態的同時,而不會干擾資料處理工作。舉例來說,當電腦上執行多重作業系統時,而其中第一個作業系統正在使用一特定記憶體區塊,此時有可能需要將此記憶體區塊重新分配給第二個作業系統使用。在此情況下,第一作業系統必須先停止使用該實體記憶體區塊,然後才能將該記憶體區塊重新分配。或舉例來說,一實體記憶體區塊可能被偵測到有問題,在此情況下較佳的是先把記憶體的作業移除,然後才能更換該記憶體。同樣地,不管是哪一個作業系統正在使用記憶體區塊,都必須停止使用。
在某方面,要停止實體記憶體的一個區塊,並開始使用另一個是相當直接了當的,由於傳統作業系統已有與虛擬記憶體管理相關之機制,可用以處理作業系統存取虛擬記憶體的問題型態。但是這些機制只有在記憶體區塊只能用於作業系統存取程式資料,而非I/O裝置存取的程式資料,如果記憶體區塊可由I/O裝置存取,問題會比較複雜。由I/O裝置所進行的存取一般稱之為直接記憶體存取(direct memory access,DMA),不過也不一定都是這樣的情況。
由I/O裝置透過該I/O裝置之I/O轉接器存取的記憶體區塊,傳統上會「被鎖定(pinned)」,也就是說不會被移動,因為對它們的存取實質上與作業系統執行一樣久的I/O程式所限制。如果要停止此種鎖定記憶體的I/O程式,通常會影響到系統。藉由鎖定記憶體區塊,記憶體區塊係實質上屬於鎖定記憶體之I/O裝置。一特定的個別I/O裝置可以鎖定一或更多個個別的記憶體區塊。
然而,對包括鎖定記憶體I/O裝置之電腦系統來說,鎖定記憶體區塊並不特別有效率。這些記憶體區塊一般都很少使用。儘管I/O裝置可能在某個時候需要用到它鎖定的記憶體來寫入該記憶體,但是記憶體通常都不會被用到。
本發明係揭示一種電腦執行的方法、裝置以及電腦程式產品,用以利用一替代頁之池,來管理直接記憶體存取(DMA)寫入頁錯誤。電腦系統之平台一用於輸入/輸出轉接器之頁的解決一直接記憶體存取(DMA)寫入頁錯誤。該I/O轉接器嘗試將DMA資料寫入該頁。做出該頁無法用於寫入的一決定。接著,直接記憶體存取(DMA)資料會被寫入自替代頁之池中選出之一替代頁內之實料位置。一旗標設定於寫入資料之每一資料位置之一旗標位置。該些旗標位置對應寫入資料之該些資料位置。當一旗標設定時,旗標指示直接記憶體存取(DMA)寫入資料呈現於對應至旗標之旗標位置之資料位置。
本發明的示範實施例為一電腦執行方法、裝置及電腦程式產品,使電腦系統平台透過輸入/輸出(I/O)轉接器對屬於輸入/輸出裝置之頁解決輸入/輸出(I/O)寫入頁錯誤,如直接記憶體存取(DMA)寫入頁錯誤。因為平台可解決I/O寫入頁錯誤,因此該平台可暫時地使用專屬於一I/O轉接器之一頁作為其他用途,直到該I/O轉接器需要使用其頁為止。
平台的輸入/輸出子系統提供暫時的替代頁,來儲存原本要儲存在目標頁,但是目標頁已經被虛擬記憶體子系統呼叫的DMA寫入資料。暫時替代頁併入使用指標(usage indicator)(在此所指為旗標(flag))至每一位元組中,其係於虛擬子系統將直接記憶體存取(DMA)寫入資料,與恢復之呼叫(paged out)資料重新整合時使用。
當I/O裝置透過其I/O轉接器嘗試將直接記憶體存取(DMA)資料寫入特殊之目標頁,而I/O裝置無法在虛擬記憶體中找到目標頁時,則發生直接記憶體存取(DMA)寫入頁錯誤。當發生直接記憶體存取(DMA)寫入頁錯誤時,平台將寫入資料儲存於一替代頁內之資料位置,如同替代頁為目標頁。替代頁內之資料位置對應至目標頁內之位置,若目標頁未被虛擬記憶體呼叫,則該位置即為資料所應儲存之位置。
接著,旗標設定於特定之旗標位置。此特定旗標位置對應至直接記憶體存取(DMA)寫入資料儲存於一替代頁內之資料位置。
於一實施例,本發明使用了單一替代頁,其同時包括資料位置與旗標位置。直接記憶體存取(DMA)寫入資料儲存資料位置中特定幾個位置。隨後設定儲存於相同替代頁之旗標。設定的旗標為儲存於特定旗標位置之旗標。此特定旗標位置對應至直接記憶體存取(DMA)寫入資料儲存於一替代頁內的資料位置。未設定於剩餘旗標位置之旗標。
於另一實施例,使用二替代頁。第一替代頁僅包括資料位置,而第二替代頁僅包括旗標位置。直接記憶體存取(DMA)寫入資料儲存於第一替代頁的資料位置中之特定幾個位置。接著,旗標設定於第二替代頁,於第二替代頁之每一旗標位置對應至第一替代頁內之一資料位置。儲存於第二頁之旗標位置,並對應至直接記憶體存取(DMA)寫入資料至第一頁所儲存資料位置之旗標會被設定。
若設定一特定旗標位置之旗標,其對應之資料位置包含有效直接記憶體存取(DMA)寫入資料,若沒有設定一特定旗標位置之旗標,則其對應之資料位置不包含有效直接記憶體存取(DMA)寫入資料。
替代頁係為暫時頁,當原始的目標頁再次位於記憶體中而未呼叫時,直接記憶體存取(DMA)寫入資料可與直接記憶體存取(DMA)寫入時儲存於原始目標頁的資料重新整合。接著,資料與旗標用以恢復直接記憶體存取(DMA)寫入資料。旗標用以判斷哪個資料位置包含直接記憶體存取(DMA)寫入資料。一旦找到直接記憶體存取(DMA)寫入資料,與自目標頁的資料重新整合,建立一恢復頁。
電腦系統一般包括一位址驗證與解譯表(address validation and translation table),用以關聯實體頁(physical page)與特定之I/O轉接器。表中之每一輸入項(entry)係與一特定實體頁相關。此表利用直接記憶體存取(DMA)操作之位址作索引。於表中加入一控制欄位,用以指示每一實體頁目前狀態。
此一電腦系統的平台包括,於執行輸入/輸出操作時使用位址驗證與解譯表的輸入/輸出轉譯軟體。根據本發明的實施例,輸入/輸出轉譯軟體亦維持一替代頁表,替代頁使用方式如下。任何形式的表,如連結表(linked list)、多層級表(multilevel table)、佇列(queue)、或其他合適類型的表都可以使用。此一表會形成可用替代頁之一池。
當需要替代頁時,輸入/輸出轉譯硬體自表中選擇頁。當表中替代頁數目低於一預先決定的臨限時,則產生一中斷。於示範實施例中,中斷係由硬體所產生,如輸入/輸出轉譯或機制。平台之記憶體虛擬化軟體(memory virtualization software),接著,藉由分配可為替代頁之額外頁,以回應中斷。
對於位址驗證與解譯表中之每一輸入項來說,控制欄位設定係被用來指示關於輸入項實體頁之目前狀態。第一控制設定係用以指示,實體頁可進行直接記憶體存取(DMA)寫入處理。於此例,目標實體頁係位於未被呼叫之記憶體中。
第二控制設定係用以指示直接記憶體存取(DMA)寫入處理必須延遲(held)。此一設定係用於實體頁已被呼叫,而替代頁亦已使用之情形。於此例中,用於實體頁之替代頁係與原始目標頁資料重新整合。
第三控制設定係用以指示,於直接記憶體存取(DMA)寫入動作前,需先取得替代頁。於此例中,呼叫實體頁,且未被選擇之替代頁暫時用以儲存直接記憶體存取(DMA)之寫入資料。若所用為同時包括資料與旗標位置的單一替代頁,一旦選擇替代頁,儲存替代頁位址至輸入項。在與目標頁相關的位址驗證與解譯表中,如果使用二個替代頁,一旦選擇好替代頁後,則儲存包含替代頁位址之描述符(descriptor)位址至與目標頁相關之位址驗證輸入項,及與目標頁相關之解譯表。
第四個控制設定係用以指示,處理直接記憶體存取(DMA)寫入,但是必須處理選擇替代頁而非目標頁。當控制欄位設定係為第四個設定時,直接記憶體存取(DMA)寫入資料儲存於適當資料位置後,設定於對應旗標位址之旗標。在頁中剩下旗標位置的旗標未設定。
當平台的記憶體虛擬化軟體決定徵用一頁,其為用於直接記憶體存取(DMA)寫入之目標,即呼叫該頁。平台之記憶體虛擬化軟體設定於位址驗證與解譯表內的輸入項之控制欄位為第三設定。平台的記憶體虛擬化軟體接著清除輸入項的位址欄位。
若隨後此頁在恢復前成為直接記憶體存取(DMA)寫入操作之目標,則平台輸入/輸出轉譯硬體/機制判定控制欄位設定為第三設定。因為第三設定已設定,則平台之輸入/輸出轉譯硬體/機制會從替代頁表選擇替代頁。接著輸入/輸出轉譯硬體將替代頁的位址,包括資料位置,輸入位址驗證與解譯表的位址欄位。
輸入/輸出轉譯硬體/機制亦設定控制欄位至第四設定。接著,寫入直接記憶體存取(DMA)寫入資料至特定資料位置。當儲存直接記憶體存取(DMA)寫入資料時,設定對應至資料位置的旗標位置的旗標會。
當原始目標頁再次於記憶體中,且未被呼叫,則取回目前儲存於替代頁中之資料,並與目前儲存在目標頁內之資料重新整合。當重新整合程序開始時,虛擬記憶體軟體設定實體頁輸入項之控制欄位為第三設定,以避免發生替代頁寫入之無窮序列。第三設定在重新整合程序過程中會延遲其他直接記憶體存取(DMA)寫入的處理。
接著選擇一替代頁作為恢復頁。來自特定資料位置之資料儲存於恢復頁中對應資料位置之位置。旗標係用以識別那一資料位置包含有效之直接記憶體存取(DMA)寫入資料之特定位置。接著,此恢復頁儲存於位址驗證與轉譯表輸入項的位址欄位。
此時該頁再次位於虛擬記憶體,且用以進行一般之直接記憶體存取(DMA)寫入。因此設定此輸入項控制欄位為第一設定。
如熟悉此技藝者所知,替代頁欄位之實體大小,可經由縮放以達成最佳化之儲存細胞元利用率(storage cell utilization),同時不會影響到本發明之示範實施例之創新性。而在大多數情況下資料位置必須可在位元組層級寫入,以符合大多數輸入/輸出匯流排的特性,在可符合直接記憶體存取(DMA)產生設備的特性之前提下,也可使用其他尺度。
此外,旗標位置可包含只有單一資料位置位元組資訊,或包含多重位元組資訊。
儘管上述是以記憶體虛擬化軟體與輸入/輸出轉譯硬體/機制執行特定功能,任何適當之平台軟體都可執行上述之功能。
第一A圖敘述一包含於本發明示範實施例之電腦系統100。電腦系統100包括平台101。電腦系統係為對稱多重處理器(SMP)系統,包括複數個處理器l02與l04。替代地,亦可採用單一程序或系統。
在系統100中,包括指令的資料106係儲存於非揮發性記憶體,如磁碟儲存135中,而資料106區塊108係從非揮發性記憶體寫入至揮發性記憶體110。至於有關揮發性記憶體的實際實體位置,資料106的區塊108被稱為資料的「實體頁」115,以便與具有虛擬記憶體映對的參考方式之資料106做區別,所以揮發性記憶體110也被稱為「實體記憶體(physical memory)」。
揮發性記憶體110的資料區塊,係由系統100的輸入/輸出設備135、140、145、以及中央處理單元(CPU)104存取。在此所用的「I/O設備(device設備)」泛指任何與電腦系統100介接的設備,並且提供資訊給系統或從系統接收資訊。I/O設備包括記憶體如非揮發性磁碟儲存135、滑鼠、軌跡球、觸控板或其類似者、鍵盤、顯示幕、印表機、相機、數據機、光學掃瞄器、麥克風、以及喇叭等。
更特別的是,實體頁115藉由一第一匯流排125耦接至輸入/輸出橋接器130,且每一I/O設備135係由對應之輸入/輸出轉接器136、141、146,與輸入/輸出匯流排176的區段137、142耦接至輸入/輸出橋接器130。
數據機148以及/或者通訊轉接器149等可提供連接至其他電腦的通訊連結。
輸入/輸出橋接器130也具有邏輯150,其中包括於I/O設備135間作為判斷之匯流排邏輯,亦即,一次使一台I/O設備存取輸入/輸出匯流排176,以及從輸入/輸出匯流排176連接至第一匯流排125。輸入/輸出橋接器130也包括輸入/輸出資料緩衝器155,為回應輸入/輸出設備請求,而自實體頁115或者輸入/輸出設備,如非揮發性記憶體135,高速存取資料106,而邏輯150包括處理資料緩衝的邏輯,於示範實施例中,輸入/輸出橋接器邏輯150係.包括輸入/輸出處理器154。
中央處理器104執行作業系統與韌體指令,其影像係分別以第一圖中的中央處理器作業系統160與韌體165表示。中央處理器104執行之指令包括,韌體指令165、由韌體165支援的系統指令160,以及由作業系統160與韌體165所支援的應用指令(圖未示)。應可了解的是,在處理器104執行的韌體165實質上係獨立於作業系統160,並提供較低層級介面,因此,可提供比作業系統160大之硬體元件(如中央處理器104)存取能力。在某些方面,作業系統160資料106的區塊108以虛擬記憶體162的頁呈現給在中央處理器104上執行的應用,使資料106之實際位置相當地透明,舉例來說,不論資料是在揮發性記憶體110或磁碟儲存135上。因此,作業系統160包括呼叫機制163與呼叫表164,用以某程度透明地移動資料106進與出揮發性記憶體110。
對說到I/O設備虛擬記憶體152來說,作業系統160命令輸入/輸出邏輯150透過轉譯控制輸入項(TCE)表175內輸入項,映射資料106區塊108至實體頁115。如實施例所示,韌體165提供服務,將資料從實體頁115中的第一個頁移至第二個頁,使得實體頁115之第一頁用於不同服務或閒置。為此,作業系統160找到包含一或更多個輸入項之一組,用於轉譯控制輸入項(TCE)表175內實體頁115之第一個頁。接著,作業系統160指揮一韌體165元件,即超管理器(hypervisor)170,將資料從與一給定的I/O設備虛擬記憶體頁152相關的第一實體頁115複製到第二實體頁115,然後更改在轉譯控制輸入項(TCE)表175內之相關映對,使未來對I/O設備虛擬記憶體頁152之存取引導至第二實體頁。超管理器170具有數個功能,其中包括讓轉譯控制輸入項(TCE)表175不斷更新,以及維持輸入/輸出操作的記憶體連貫性。
記憶體的實體頁會由輸入/輸出(I/O)轉接器所存取。轉譯控制輸入項(TCE)表175包括將實體頁關聯至I/O轉接器的輸入項。每一輸入項將特定的實體頁關聯至一特定的I/O轉接器。
為了解轉譯控制輸入項(TCE)表175,考慮到I/O設備135把資料106當成虛擬記憶體152的頁來看,與中央處理器104的虛擬記憶體觀點類似。輸入/輸出橋接器邏輯150將此觀點呈現給I/O設備135。在其他實施例中,輸入/輸出處理器154和韌體165將此觀點呈現給I/O設備135。為了維持此觀點,在轉譯控制輸入項(TCE)表175內的輸入項(未顯示於第一圖)將資料106的區塊108映對至輸入/輸出虛擬記憶體頁152。因此,I/O設備135可藉由參考虛擬記憶體頁152找到資料106,而不管資料的實際位置,即,不論目前用哪個實體頁115來儲存資料。
輸入/輸出橋接器130提供介於匯流排125與匯流排176之間的邏輯150,來自I/O設備對匯流排176的記憶體要求包括反映I/O設備虛擬記憶體152的位址。輸入/輸出轉譯硬體(位址轉譯邏輯)156有效地存取轉譯控制輸入項(TCE)表175(其被放置於I/O設備虛擬頁次序中),以決定該用於匯流排125的實體頁位址,以便存取與來自匯流排176的記憶體需求相關之正確實體頁115(上述使用「有效地」一詞的原因是,邏輯150包含轉譯控制輸入項(TCE)表175的相關區段之高速存取複製,以加快程序)。
轉譯控制輸入項(TCE)表175為I/O位址驗證與轉譯表,該轉譯表係藉由直接記憶體存取(DMA)操作的I/O匯流排位址來作為索引。該表係用以確認I/O轉接器僅存取其所指定之儲存位置,且重新分配平台軟體實體儲存區塊,而區塊與I/O轉接器設備驅動程式所產生之I/O命令中的直接記憶體存取(DMA)位址相關。
平台101包括如上所述的硬體,也同樣包括作業系統177、驅動程式178、應用程式179、以及其他軟體180。
第一B圖所示為部分位址驗證與解譯表,也稱為轉譯控制輸入項(TCE)表,其中根據本發明的實施例包括用於每一輸入項之一控制欄位。表182包括用於每一實體頁的位址欄位183與控制欄位184。根據本發明的實施例,一額外的欄位,也就是欄位184,係被加入第一A圖中所述的轉譯控制輸入項(TCE)表175。
舉例來說,輸入項185包括用以存取實體頁"a"位址與用於實體頁"a"目前控制設定。用以存取實體頁"a"之位址,係儲存於輸入項185的欄位183a。用於實體頁"a"的目前控制設定係儲存於欄位184a。
輸入項186包括用以存取實體頁"b"位址與用於實體頁"b"之目前控制設定。用來存取實體頁"b"的位址係儲存於輸入項185的欄位183b。用於實體頁"b"的目前控制設定係儲存於欄位184b。
第一C圖敘述一替代資料頁187,根據本發明的示範實施例,係用以儲存直接記憶體存取(DMA)寫入資料。直接記憶體存取(DMA)寫入資料原本預定儲存資料位置之原始目標頁,從頁中位置XXX到位置YYY。因此,此直接記憶體存取(DMA)寫入資料係儲存於替代頁187之資料位置內,從位置XXX到位置YYY。從位置0到位置XXX以及從位置YYY到位置ZZZ沒有包含資料或包含不相關的資料。
第一D圖根據本發明示範實施例,敘述一替代旗標頁188用以儲存旗標。旗標頁188包括旗標位置0到ZZZ。旗標頁188內之每一旗標位置具有一對應於資料頁187內之資料位置。
旗標係儲存於每一旗標位置,若設定於一特定旗標位置之旗標,則在資料頁內對應至旗標位置之資料位置為有效的直接記憶體存取(DMA)寫入資料,以後需要被恢復。如果在一特定的旗標位置的旗標沒有被設定,則在資料頁內對應該旗標位置的資料位置並非有效的直接記憶體存取(DMA)寫入資料,而且應該忽略。
所以從位置0到位置XXX,以及從YYY到ZZZ的旗標沒有被設定,而在位置XXX到位置YYY之間的旗標會被設定。
第一E圖係根據本發明的示範實施例,敘述一恢復頁189,係用以整合當直接記憶體存取(DMA)寫入時,儲存在原始目標頁之原始資料與直接記憶體存取(DMA)寫入資料。複製到從原始目標頁取回之原始資料至恢復頁189內的資料位置,該資料位置係對應至原始目標頁內之原始位置。
接著從資料頁187取回直接記憶體存取(DMA)寫入資料,並利用旗標頁188旗標將直接記憶體存取寫入資料覆蓋於原始資料。覆蓋直接記憶體存取(DMA)寫入資料的程序是藉由決定在旗標頁188內的每一位置的旗標是否有被設定而完成。如果旗標有被設定,那麼儲存在資料頁內對應的資料位置之資料,會被儲存在恢復頁中對應的位置。如果旗標沒有被設定,那麼任何可能儲存在資料頁內對應的資料位置之資料會被忽略,同時不會被儲存在恢復頁中對應的位置。
第一F圖敘述根據本發明的示範實施例的一單一替代頁190,其包括資料位置與旗標位置。如第一F圖所示,旗標位置與資料位置在頁190內是交替的。所以,頁190的第一位置為旗標位置"a",下一位置為資料位置"a",其對應至旗標位置"a"。單一替代頁190可用來擔任替代頁187與188的角色。
替代頁190的使用方式如上所述。覆蓋直接記憶體存取(DMA)寫入資料的程序是藉由決定在頁190內的每一位置的旗標是否有被設定而完成。若旗標被設定,擇儲存在資料頁內對應之資料位置之資料,會被儲存在恢復頁中對應的位置。若旗標沒有被設定,那麼任何可能儲存在資料頁內對應的資料位置之資料會被忽略,同時不會被儲存在恢復頁中對應的位置。
第二A圖與第二B圖一起敘述一高階流程圖,其係根據本發明的示範實施例,說明利用一控制設定以決定如何執行一直接記憶體存取(DMA)寫入,以及當原始目標頁已被呼叫時利用替代頁的方法。程序始於區塊200,接著前進至區塊202,其中I/O設備嘗試對一特定目標頁執行直接記憶體存取(DMA)寫入。
接著區塊204位於位址驗證與解譯表,以及與特定頁相關之輸入項。位址驗證與解譯表係較佳為位於主儲存內,不過它也可位於記憶體控制器、I/O橋接器、PCI匯流排橋接器、I/O轉接器、以及其類似者。
接著區塊206讀取輸入項控制欄位之現行設定。接著,程序前進至區塊208,其中決定控制欄位設定是否為"a"。控制欄位設定"a"為第一控制欄位設定,若決定該控制欄位設定為"a",程序前進至區塊210,其中將繼續一般的直接記憶體存取(DMA)處理。接著程序會回到區塊202。
再次參考區塊208,若決定控制欄位設定不為"a",程序進至區塊212,其中決定控制欄位設定是否為"b"。控制欄位設定"b"為第二控制欄位設定,若決定該控制欄位設定為"b",則程序會回到區塊206。
再次參考區塊212,若決定該控制欄位設定不為"b",程序進至區塊214,其中決定控制欄位設定是否為"c"。控制欄位設定"c"為第三控制欄位設定,若決定該控制欄位設定為"c",則程序會至區塊216,其中會從一可用的替代頁表選擇二個替代頁。一頁會是資料替代頁,而另一頁是旗標替代頁。這二頁會變得彼此相關。
此二頁取得關聯之一方法是,使其成為真實記憶體中二個連續頁,通常是以偶數/奇數位址對來達成。
有幾種方法可用來設定這些頁,在一方法中,偶數頁包含直接記憶體存取(DMA)資料,而奇數頁包含旗標。
除使用二獨立頁,單一替代頁亦可使用包括資料與旗標。舉例來說,直接記憶體存取(DMA)位元組0到位元組0,也就是第一頁之第一個位元組,與其對應旗標位元組至第一頁之位元組1。如此繼續到第2048個旗標位元組,係位於第二頁之第二位元組。熟悉此技藝者應可知,尚有數個介於直接記憶體存取(DMA)與對應旗標位元組間之可能對應。
接下來,在區塊218,利用被選擇的資料替代頁的位址,其中包括資料位置,用以更新位址驗證與解譯表的輸入項,並且將控制欄位設定為"d"。然後程序前進至區塊206。
再次參考區塊214,若決定該控制欄位設定不為"c",程序進至區塊220,其中決定控制欄位設定是否為"d"。控制欄位設定"d"為第四控制欄位設定,若決定該控制欄位設定為"d",則程序會進至區塊230,如連接器A所示。
在區塊230,將直接記憶體存取(DMA)寫入資料儲存於位址驗證與解譯表的輸入項的位址部份所儲存之位址所識別之資料頁,此為用於替代的資料頁。接著,在區塊232,找出與該資料頁相關的旗標頁。然後,在區塊234,在每一旗標位置的旗標頁內設定一旗標,該旗標對應至在直接記憶體存取(DMA)寫入時資料頁內儲存資料的每一資料位置。程序會進至區塊202,如連接器B所示。
再次參考區塊220,如果決定控制欄位設定並非"d",程序進至區塊222,其中會報告錯誤。然後程序回到區塊202。
第三圖係根據本發明的示範實施例敘述一高階流程圖,說明當可用之替代頁數目低於一預先決定的臨限時產生一中斷的情形。程序由區塊300開始,然後進至區塊302,監測替代頁表,即替代頁池。列出之頁可作為替代頁。接著,於區塊304決定在表中的頁數目是否高於一預先決定的臨限,若決定所列的替代頁數目高於臨限,程序回到區塊302。若決定所列的替代頁數目並沒有高於臨限,程序進至區塊306。產生一「低運轉(low running)」中斷。然後程序回到區塊302。
第四圖係根據本發明的示範實施例敘述一高階流程圖,說明分配額外替代頁。程序由區塊400開始,進至區塊402,決定記憶體虛擬化軟體是否有收到「低運轉」中斷。若決定記憶體虛擬化軟體沒有收到「低運轉」中斷,程序回到區塊402。若決定記憶體虛擬化軟體有收到「低運轉」中斷,程序進至區塊404,記憶體虛擬化軟體分配額外的頁作為替代頁。這些新分配的頁會被列為可用的替代頁,因此成為可用的替代頁池的一部分。接著程序回到區塊402。
第五圖敘述一高階流程圖,其係根據本發明的示範實施例,說明當一實體頁已被呼叫時,用以更新位址驗證與解譯表的平台。程序由區塊500開始,然後進至區塊502,記憶體虛擬化軟體選擇到專屬於一I/O轉接器並用於另一程序的頁。接著,在區塊504決定該特定頁是否為一直接記憶體存取(DMA)寫入的目標。記憶體虛擬化軟體檢查用來驗證所有直接記憶體存取(DMA)操作的位址驗證與解譯表,以決定該特定頁是否為一直接記憶體存取(DMA)寫入的目標。位址驗證與解譯表包含所有頁的位址與寫入許可旗標,這些頁可能為直接記憶體存取(DMA)操作的目標。
再次參考區塊504,若該特定頁並非直接記憶體存取(DMA)寫入的目標,則程序於區塊512終止。若該特定頁為直接記憶體存取(DMA)寫入的目標,程序進至區塊506,會找出在位址驗證與解譯表內與特定頁相關的輸入項。
接著在區塊508,更新此輸入項的控制欄位,將控制欄位設定為"c"。隨後,在區塊510,清除此輸入項所用的欄位的位址部份。然後程序在區塊512結束。
第六圖敘述一高階流程圖,其係根據本發明的示範實施例,說明重新整合在一替代頁內的資料位置的資料與來自原始目標頁的資料以形成一被恢復頁的方法。
程序由區塊600開始,然後進至區塊602,有一特定頁需要被恢復。舉例來說,當寫入該頁的輸入/輸出操作完成時,該頁需要被恢復。進行寫入的I/O轉接器會傳送一中斷給控制的作業系統。要求原始輸入/輸出操作的使用者最後會被通知該操作已經完成。當使用者嘗試要存取頁內的資料,所嘗試的存取會造成頁錯誤,因為虛擬記憶體頁並沒有實際在主儲存內,因此接著會觸發恢復該頁的需求。
接著,於區塊604,從替代頁的表選擇一替代頁作為恢復頁。然後在區塊606,從支援儲存(backing storage)讀取呼叫之資料至用以作為恢復頁之替代頁。所以,在直接記憶體存取(DMA)寫入過程中,儲存於原始目標頁的資料儲存於恢復頁。資料於恢復頁內之位置,係對應至資料儲存於原始目標頁內的位置。
當原始目標頁呼叫時,儲存原始資料至支援儲存。原始資料係儲存於恢復頁中,位置與它們的原始資料位置相同。所以此時恢復頁與原始頁呼叫前之內容相同。
接著程序進至區塊608,決定該原始頁是否為一直接記憶體存取(DMA)寫入的目標。若決定原始頁不是直接記憶體存取(DMA)寫入之目標,則程序於區塊624終止。再次參考區塊608,若決定原始頁是直接記憶體存取(DMA)寫入的目標,則程序進至區塊610,找出與該替代頁的位址相關之位址驗證與轉譯表內的輸入項。
接著於區塊612,決定輸入項的控制欄位是否設定為"d"。此決定於原始頁呼叫之同時,是否對原始頁執行直接記憶體存取(DMA)寫入。若進行直接記憶體存取(DMA)寫入,則寫入資料至一替代資料頁,而非想要的原始直接記憶體存取(DMA)頁。若決定該輸入項的控制欄位沒有設定為"d",即在原始頁呼叫之同時,未對原始頁執行直接記憶體存取(DMA)寫入,程序進入至區塊620。若決定該輸入項的控制欄位被設定為"d",即於原始頁呼叫之同時,對原始頁執行直接記憶體存取(DMA)寫入。程序進至區塊614,藉由將控制欄位設定為"b"來更新輸入項的控制欄位。於區塊616,比較旗標位置的旗標與儲存在對應的資料位置之資料,以識別有效之直接記憶體存取(DMA)寫入資料。
接著,程序進入至區塊618,敘述儲存資料於恢復頁內的資料位置,每一資料位置對應至儲存有效直接記憶體存取(DMA)寫入資料之資料位置。以此方法,覆蓋替代頁資料於原始資料上。接著,程序進入至區塊619,釋放替代資料與旗標頁,使得其再次列入替代頁表中。以此方式,所釋放之頁再次成為替代頁池的一部份。接著,在區塊620,儲存恢復頁位址於輸入項位址部份。接著,在區塊622,將控制欄位設定為"a",以便更新輸入項的控制輸入項欄位。接著,程序於區塊624,終止。
在此所述的實施例可以完全是硬體之實施例、軟體之實施方式,或者是包含硬體與軟體元件之實施例。在某些實施例中,本發明係以軟體實施,其中包含但非限於韌體、常駐軟體(resident software)、微程式碼等。
另外,所述之實施例以電腦可用或電腦可讀取媒體存取的電腦程式產品形式,提供電腦可用或任何指令執行系統拿來使用或連接的程式碼。以本發明的目的來說,電腦可用或電腦可讀媒體應包含、儲存、通訊、傳播或運送程式的任何設備,供指令執行系統、設備或裝置使用或連接。
媒體係為電子/磁性、光學、電磁、紅外線、或半導體系統(或設備或裝置)、或傳播媒介,電腦可讀媒體的範例包括半導體或固態記憶體、磁帶、可移除的電腦碟片、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、堅硬的磁碟片或光碟片。目前可見的光碟片包括光碟、唯讀記憶體光碟(CD-ROM)、可覆寫光碟(CD-R/W)與DVD。
適合用以儲存以及/或者執行程式碼的資料處理系統,包括至少一個直接或間接透過系統匯流排耦接至記憶體元件的處理器,記憶體元件包括實際執行程式碼時採用之本地記憶體、大量儲存裝置和快取記憶體。快取記憶體提供至少一些程式碼的暫時儲存,以便降低在執行過程中必須從大量儲存取回程式碼的次數。
輸入/輸出或I/O裝置(包括但不限於鍵盤、顯示器、指向裝置等)可直接或透過I/O控制器的介入,被耦合至系統。
網路配接卡也可被耦接至系統,透過私有或公共網路-數據機、纜線數據機、以及乙太網路卡等都是現行可用的網路配接卡的型態,使資料處理系統變成耦接至其他資料處理系統、或遠端印表機、或儲存裝置。
以上藉由圖說與敘述之方式說明本發明,不過本發明並不受所列舉的型態所限。熟悉此技藝者應可知尚有其他修改與變化之方式。所選之實施例,係用以解釋本發明原則、實際應用,且使熟悉此技藝者了解本發明所針對之特殊用途,提出具有各種修改之各種實施例。
100...電腦系統
101...平台
102、104...處理器
106...資料
108...區塊
110...揮發性記憶體
115...實體頁
125...第一匯流排
130...輸入/輸出橋接器
135...磁碟儲存
136...輸入/輸出轉接器
137...區段
140...輸入/輸出設備
141...輸入/輸出轉接器
142...區段
145...輸入/輸出設備
146...輸入/輸出轉接器
147...區段
148...數據機
149...通訊轉接器
150...邏輯
152...輸入/輸出設備虛擬記憶體
154...輸入/輸出處理器
155...輸入/輸出資料緩衝器
155...輸入/輸出轉譯硬體
160...作業系統
162...處理器虛擬記憶體
163...呼叫機制
164...呼叫表
165...韌體
170...超管理器
175...轉譯控制輸入項(TCE)表
176...輸入/輸出匯流排
177...作業系統
178...驅動程式
179...應用程式
180...其他軟體
182...表
183...位址欄位
184...控制欄位
183a...用於實體頁a的位址
183b...用於實體頁b的位址
184a...用於頁a的控制欄位設定
184b...用於頁b的控制欄位設定
185...輸入項
186...輸入項
187...替代資料頁
188...替代旗標頁
189...恢復頁
190...替代頁
本發明的新穎特點與特性將於附屬之申請專利範圍中提出。本發明及其較佳之使用模式、進一步之目的與優勢,可透過以下示範實施例之詳細說明,配合所附的圖表而加以了解,其中:第一A圖敘述一包括本發明示範實施例之電腦系統;第一B圖所示為位址驗證與包括用於每一輸入項之一控制欄位解譯表之一部分,;第一C圖係根據本發明之示範實施例,敘述一用以儲存直接記憶體存取(DMA)寫入資料之替代資料頁;第一D圖係根據本發明之示範實施例,敘述一用以儲存旗標替代旗標頁;第一E圖係根據本發明的示範實施例,敘述一恢復頁整合儲存直接記憶體存取(DMA)寫入資料於原始目標頁之原始資料;第一F圖係根據本發明的示範實施例,敘述包括資料位置與旗標位置之替代頁;第二A圖與第二B圖係根據本發明的示範實施例,敘述一高階流程圖,利用一控制設定判斷如何執行一直接記憶體存取(DMA)寫入,及當原始目標頁被呼叫時利用替代頁之方法;第三圖係根據本發明的示範實施例,敘述當可用替代頁數目低於一預定臨限時,產生一中斷之情形之一高階流程圖;第四圖係根據本發明的示範實施例,敘述分配額外的替代頁之一高階流程圖;第五圖係根據本發明的示範實施例,敘述當一實體頁已被呼叫時,用以更新位址驗證與解譯表的平台之一高階流程圖;以及第六圖係根據本發明的示範實施例,敘述重新整合一替代頁內資料位置的資料與來自原始目標頁的資料,以形成一被恢復頁方法之一高階流程圖。
100...電腦系統
101...平台
102、104...處理器
106...資料
108...區塊
110...揮發性記憶體
115...實體頁
125...第一匯流排
130...輸入/輸出橋接器
135...磁碟儲存
136...輸入/輸出轉接器
137...區段
140...輸入/輸出設備
141...輸入/輸出轉接器
142...區段
145...輸入/輸出設備
146...輸入/輸出轉接器
147...區段
148...數據機
149...通訊轉接器
150...邏輯
152...輸入/輸出設備虛擬記憶體
154...輸入/輸出處理器
155...輸入/輸出資料緩衝器
156...輸入/輸出轉譯硬體
160...作業系統
162...處理器虛擬記憶體
163...呼叫機制
164...呼叫表
165...韌體
170...超管理器
175...轉譯控制輸入項(TCE)表
176...輸入/輸出匯流排
177...作業系統
178...驅動程式
179...應用程式
180...其他軟體
182...表
183...位址欄位
184...控制欄位
183a...用於實體頁a的位址
183b...用於實體頁b的位址
184a...用於頁a的控制欄位設定
184b...用於頁b的控制欄位設定
185...輸入項
186...輸入項
187...替代資料頁
188...替代旗標頁
189...恢復頁
190...替代頁
Claims (20)
- 一種電腦執行方法,用以解決一輸入/輸出(I/O)轉接器之一頁一直接記憶體存取(DMA)寫入頁錯誤,該頁用以維持該I/O轉接器使用,該電腦執行方法包含:由該I/O轉接器嘗試將直接記憶體存取資料寫入至該頁;回應該I/O轉接器嘗試將直接記憶體存取資料寫入至該頁,識別在與該頁相關的一位址驗證與轉譯表內的一特定輸入項,其中在該位址驗證與轉譯表內的每一輸入項包括一位址欄位儲存一位址以及一控制欄位儲存一目前控制設定;自該特定輸入項讀取與該頁相關之該目前控制設定;回應讀取該目前控制設定,根據該目前控制設定處理該嘗試將直接記憶體存取資料寫入至該頁;以及於處理該嘗試時,回應所發生之一直接記憶體存取寫入錯誤;僅寫入該直接記憶體存取資料到一替代頁包括的一全部資料位置之子集合,其中該資料位置之子集合包括的位置少於該替代頁包括的所有資料位置,且其中該替代頁與該頁包括相同數目的資料位置;以及設定一旗標於對應至每一該資料位置之子集合之一旗標位置中,其中該旗標指示直接記憶體存取寫入資料係位於每一該資料位置之子集合。
- 如申請專利範圍第1項之電腦執行方法,更包含:維持一替代頁之一池;以及 自該池選擇該替代頁。
- 如申請專利範圍第1項之電腦執行方法,其中該直接記憶體存取寫入錯誤發生於當該頁被移出虛擬記憶體外。
- 如申請專利範圍第1項之電腦執行方法,更包含:回應該目前控制設定為一第一設定,判斷該頁為可用,並將該直接記憶體存取資料寫入至該頁。
- 如申請專利範圍第1項之電腦執行方法,更包含:回應該目前控制設定為一第二設定;延遲將該直接記憶體存取資料寫入至該頁;重新讀取與該頁相關的該目前控制設定;以及重新處理該嘗試將直接記憶體存取資料寫入至該頁。
- 如申請專利範圍第1項之電腦執行方法,更包含:回應該目前控制設定為一第三設定;於處理該嘗試時,判斷所發生之該直接記憶體存取寫入錯誤;選擇該替代頁;更新該特定輸入項,以該替代頁之一位址取代在該特定輸入項中的該位址欄位中之該頁之該位址;重新讀取與該頁相關的該目前控制設定;以及 重新處理該嘗試將直接記憶體存取資料寫入至該頁。
- 如申請專利範圍第6項之電腦執行方法,更包含:回應更新該特定輸入項,以該替代頁之一位址取代在該特定輸入項中的該位址欄位中之該頁之該位址,設定該目前控制設定為一第四設定;回應該目前控制設定為該第四設定,僅將該直接記憶體存取資料寫入至在該替代頁內的該資料位置之子集合;以及設定一旗標於對應該資料位置之子集合之全部旗標位置中。
- 如申請專利範圍第6項之電腦執行方法,更包含:回應該目前控制設定為一第四設定;僅寫入該直接記憶體存取資料到該替代頁中的該資料位置之子集合;以及設定一旗標於對應該資料位置之子集合之全部旗標位置中。
- 如申請專利範圍第1項之電腦執行方法,更包含:選擇一第二替代頁作為一恢復頁,其中該頁、該第二替代頁,以及該恢復頁包括相同數目的資料位置;自該頁複製原始資料至該恢復頁;回應複製該原始資料,選擇儲存於該資料位置之子集合的資料,該資料位置之子集合與包括該旗標的旗標位置相關;以 及回應選擇資料,複製該被選擇資料到該恢復頁,該被選擇資料儲存於對應該資料位置之子集合的該恢復頁中的恢復資料位置,其中該被選擇資料覆寫儲存於該恢復頁中的資料位置中的原始資料,該恢復頁僅對應該資料位置之子集合,且其中被儲存於與旗標位置不相關的該恢復頁中的資料位置中的原始資料並未被覆寫,該旗標位置不包括該旗標。
- 如申請專利範圍第1項之電腦執行方法,其中根據該目前控制設定處理該嘗試將直接記憶體存取資料寫入至該頁包含:判斷該目前控制設定是否為一第一值;回應判斷該目前控制設定是該第一值,判斷該頁為可用,並將該直接記憶體存取資料寫入至該頁;回應判斷該目前控制設定不是該第一值,判斷該目前控制設定是否為一第二值;回應判斷該目前控制設定是該第二值;延遲將該直接記憶體存取資料寫入至該頁;重新讀取該目前控制設定;以及重新處理該嘗試將直接記憶體存取資料寫入至該頁;回應判斷該目前控制設定不是該第二值,判斷該目前控制設定是否為一第三值;回應判斷該目前控制設定是該第三值;於處理該嘗試時,判斷所發生之該直接記憶體存取寫入錯誤; 選擇該替代頁;更新該特定輸入項,以該替代頁之一位址取代在該特定輸入項中的該位址欄位中之該頁之該位址;設定該目前控制設定為一第四值;重新讀取該目前控制設定;以及重新處理該嘗試將直接記憶體存取資料寫入至該頁;回應判斷該目前控制設定不是該第三值,判斷該目前控制設定是否為一第四值;回應判斷該目前控制設定是該第四值;僅將該直接記憶體存取資料寫入至在該替代頁中的該資料位置之子集合;以及設定一旗標於對應該資料位置之子集合之全部旗標位置中。
- 一種儲存於包括程式碼的電腦可讀取媒體中之電腦程式產品,用以解決一輸入/輸出(I/O)轉接器之一頁一直接記憶體存取(DMA)寫入頁錯誤,該頁用以維持該I/O轉接器使用,當執行時其步驟包含:由該I/O轉接器嘗試將直接記憶體存取資料寫入至該頁;回應該I/O轉接器嘗試將直接記憶體存取資料寫入至該頁,識別在與該頁相關的一位址驗證與轉譯表內的一特定輸入項,其中在該位址驗證與轉譯表內的每一輸入項包括一位址欄位儲存一位址以及一控制欄位儲存一目前控制設定;自該特定輸入項讀取與該頁相關之該目前控制設定; 回應讀取該目前控制設定,根據該目前控制設定處理該嘗試將直接記憶體存取資料寫入至該頁;以及於處理該嘗試時,回應所發生之一直接記憶體存取寫入錯誤;僅寫入該直接記憶體存取資料到一替代頁包括的一全部資料位置之子集合,其中該資料位置之子集合包括的位置少於該替代頁包括的所有資料位置,且其中該替代頁與該頁包括相同數目的資料位置;以及設定一旗標於對應至每一該資料位置之子集合之一旗標位置中,其中該旗標指示直接記憶體存取寫入資料係位於每一該資料位置之子集合。
- 如申請專利範圍第11項之電腦程式產品,其中該程式碼當執行時其步驟更包含:維持一替代頁之一池;以及自該池選擇該替代頁。
- 如申請專利範圍第11項之電腦程式產品,其中該直接記憶體存取寫入錯誤發生於當該頁被移出虛擬記憶體外。
- 如申請專利範圍第11項之電腦程式產品,其中該程式碼當執行時其步驟更包含:回應該目前控制設定為一第一設定,判斷該頁為可用,並將該直接記憶體存取資料寫入至該頁。
- 如申請專利範圍第11項之電腦程式產品,其中該程式碼當執行時其步驟更包含:回應該目前控制設定為一第二設定;延遲將該直接記憶體存取資料寫入至該頁;重新讀取與該頁相關的該目前控制設定;以及重新處理該嘗試將直接記憶體存取資料寫入至該頁。
- 如申請專利範圍第11項之電腦程式產品,其中該程式碼當執行時其步驟更包含:回應該目前控制設定為一第三設定;於處理該嘗試時,判斷所發生之該直接記憶體存取寫入錯誤;選擇該替代頁;更新該特定輸入項,以該替代頁之一位址取代在該特定輸入項中的該位址欄位中之該頁之該位址;重新讀取與該頁相關的該目前控制設定;以及重新處理該嘗試將直接記憶體存取資料寫入至該頁。
- 如申請專利範圍第16項之電腦程式產品,其中該程式碼當執行時其步驟更包含:回應更新該特定輸入項,以該替代頁之一位址取代在該特定輸入項中的該位址欄位中之該頁之該位址,設定該目前控制 設定為一第四設定;回應該目前控制設定為該第四設定,僅將該直接記憶體存取資料寫入至在該替代頁內的該資料位置之子集合;以及設定一旗標於對應該資料位置之子集合之全部旗標位置中。
- 如申請專利範圍第11項之電腦程式產品,其中該程式碼當執行時其步驟更包含:回應該目前控制設定為一第四設定,僅寫入該直接記憶體存取資料到該替代頁中的該資料位置之子集合;以及設定一旗標於對應該資料位置之子集合之全部旗標位置中。
- 如申請專利範圍第11項之電腦程式產品,其中該程式碼當執行時其步驟更包含:選擇一第二替代頁作為一恢復頁,其中該頁、該第二替代頁,以及該恢復頁包括相同數目的資料位置;自該頁複製原始資料至該恢復頁;回應複製該原始資料,選擇儲存於該資料位置之子集合的資料,該資料位置之子集合與包括該旗標的旗標位置相關;以及回應選擇資料,複製該被選擇資料到該恢復頁,該被選擇資料儲存於對應該資料位置之子集合的該恢復頁中的恢復資料位置,其中該被選擇資料覆寫儲存於該恢復頁中的資料位置 中的原始資料,該恢復頁僅對應該資料位置之子集合,且其中被儲存於與旗標位置不相關的該恢復頁中的資料位置中的原始資料並未被覆寫,該旗標位置不包括該旗標。
- 如申請專利範圍第11項之電腦程式產品,其中根據該目前控制設定處理該嘗試將直接記憶體存取資料寫入至該頁包含:判斷該目前控制設定是否為一第一值;回應判斷該目前控制設定是該第一值,判斷該頁為可用,並將該直接記憶體存取資料寫入至該頁;回應判斷該目前控制設定不是該第一值,判斷該目前控制設定是否為一第二值;回應判斷該目前控制設定是該第二值;延遲將該直接記憶體存取資料寫入至該頁;重新讀取該目前控制設定;以及重新處理該嘗試將直接記憶體存取資料寫入至該頁;回應判斷該目前控制設定不是該第二值,判斷該目前控制設定是否為一第三值;回應判斷該目前控制設定是該第三值;於處理該嘗試時,判斷所發生之該直接記憶體存取寫入錯誤;選擇該替代頁;更新該特定輸入項,以該替代頁之一位址取代在該特定輸入項中的該位址欄位中之該頁之該位址; 設定該目前控制設定為一第四值;重新讀取該目前控制設定;以及重新處理該嘗試將直接記憶體存取資料寫入至該頁;回應判斷該目前控制設定不是該第三值,判斷該目前控制設定是否為一第四值;回應判斷該目前控制設定是該第四值;僅將該直接記憶體存取資料寫入至在該替代頁中的該資料位置之子集合;以及設定一旗標於對應該資料位置之子集合之全部旗標位置中。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/390,790 US7734842B2 (en) | 2006-03-28 | 2006-03-28 | Computer-implemented method, apparatus, and computer program product for managing DMA write page faults using a pool of substitute pages |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200821833A TW200821833A (en) | 2008-05-16 |
TWI417724B true TWI417724B (zh) | 2013-12-01 |
Family
ID=38662427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW096107838A TWI417724B (zh) | 2006-03-28 | 2007-03-07 | 使用替代頁池管理直接記憶器存取寫入頁錯誤之電腦執行方法、裝置、及電腦程式產品 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7734842B2 (zh) |
JP (1) | JP5063152B2 (zh) |
CN (1) | CN100576190C (zh) |
TW (1) | TWI417724B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9535849B2 (en) * | 2009-07-24 | 2017-01-03 | Advanced Micro Devices, Inc. | IOMMU using two-level address translation for I/O and computation offload devices on a peripheral interconnect |
US8386745B2 (en) * | 2009-07-24 | 2013-02-26 | Advanced Micro Devices, Inc. | I/O memory management unit including multilevel address translation for I/O and computation offload |
US8973144B2 (en) | 2011-10-13 | 2015-03-03 | Mcafee, Inc. | System and method for kernel rootkit protection in a hypervisor environment |
US9069586B2 (en) * | 2011-10-13 | 2015-06-30 | Mcafee, Inc. | System and method for kernel rootkit protection in a hypervisor environment |
CN103309619A (zh) * | 2012-03-16 | 2013-09-18 | 国民技术股份有限公司 | 一种闪存数据存储方法 |
US20160019168A1 (en) * | 2014-07-18 | 2016-01-21 | Qualcomm Incorporated | On-Demand Shareability Conversion In A Heterogeneous Shared Virtual Memory |
US9658918B2 (en) * | 2015-02-20 | 2017-05-23 | Dell Products, Lp | User prompted volume recovery |
US10216533B2 (en) | 2015-10-01 | 2019-02-26 | Altera Corporation | Efficient virtual I/O address translation |
US10528476B2 (en) * | 2016-05-24 | 2020-01-07 | International Business Machines Corporation | Embedded page size hint for page fault resolution |
CN106775477B (zh) * | 2016-12-19 | 2021-01-01 | 湖南国科微电子股份有限公司 | Ssd主控数据传输管理装置及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5749093A (en) * | 1990-07-16 | 1998-05-05 | Hitachi, Ltd. | Enhanced information processing system using cache memory indication during DMA accessing |
TW386193B (en) * | 1997-02-07 | 2000-04-01 | Cirrus Logic Inc | Circuits, system, and methods for processing multiple data streams |
TW457433B (en) * | 1999-03-31 | 2001-10-01 | Ibm | I/O page kill definition for improved DMA and L1/L2 cache performance |
US6804729B2 (en) * | 2002-09-30 | 2004-10-12 | International Business Machines Corporation | Migrating a memory page by modifying a page migration state of a state machine associated with a DMA mapper based on a state notification from an operating system kernel |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5423335A (en) | 1977-07-22 | 1979-02-21 | Nec Corp | Page detection mechanism |
US4277826A (en) | 1978-10-23 | 1981-07-07 | Collins Robert W | Synchronizing mechanism for page replacement control |
USRE37305E1 (en) | 1982-12-30 | 2001-07-31 | International Business Machines Corporation | Virtual memory address translation mechanism with controlled data persistence |
US4868738A (en) | 1985-08-15 | 1989-09-19 | Lanier Business Products, Inc. | Operating system independent virtual memory computer system |
US5123101A (en) | 1986-11-12 | 1992-06-16 | Xerox Corporation | Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss |
US5295258A (en) * | 1989-12-22 | 1994-03-15 | Tandem Computers Incorporated | Fault-tolerant computer system with online recovery and reintegration of redundant components |
JPH04308953A (ja) * | 1991-04-05 | 1992-10-30 | Kyocera Corp | 仮想アドレス計算機装置 |
JPH05173930A (ja) * | 1991-12-19 | 1993-07-13 | Yokogawa Electric Corp | Dma制御回路 |
JP3590075B2 (ja) * | 1992-01-20 | 2004-11-17 | 株式会社東芝 | 仮想記憶方式のデータ処理装置及び方法 |
US5440710A (en) | 1994-03-08 | 1995-08-08 | Exponential Technology, Inc. | Emulation of segment bounds checking using paging with sub-page validity |
US5729710A (en) * | 1994-06-22 | 1998-03-17 | International Business Machines Corporation | Method and apparatus for management of mapped and unmapped regions of memory in a microkernel data processing system |
US5842225A (en) | 1995-02-27 | 1998-11-24 | Sun Microsystems, Inc. | Method and apparatus for implementing non-faulting load instruction |
JPH0997214A (ja) * | 1995-09-29 | 1997-04-08 | Internatl Business Mach Corp <Ibm> | 補助プロセッサのためのアドレス変換を含む情報処理システム |
US6061773A (en) | 1996-05-03 | 2000-05-09 | Digital Equipment Corporation | Virtual memory system with page table space separating a private space and a shared space in a virtual memory |
US6622263B1 (en) | 1999-06-30 | 2003-09-16 | Jack Justin Stiffler | Method and apparatus for achieving system-directed checkpointing without specialized hardware assistance |
US6745306B1 (en) | 1999-07-29 | 2004-06-01 | Microsoft Corporation | Method and system for restricting the load of physical address translations of virtual addresses |
US6856420B1 (en) * | 2000-07-31 | 2005-02-15 | Hewlett-Packard Development Company, L.P. | System and method for transferring data within a printer |
US6986016B2 (en) * | 2002-09-30 | 2006-01-10 | International Business Machines Corporation | Contiguous physical memory allocation |
-
2006
- 2006-03-28 US US11/390,790 patent/US7734842B2/en not_active Expired - Fee Related
-
2007
- 2007-03-07 TW TW096107838A patent/TWI417724B/zh active
- 2007-03-20 JP JP2007071774A patent/JP5063152B2/ja active Active
- 2007-03-27 CN CN200710091553A patent/CN100576190C/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5749093A (en) * | 1990-07-16 | 1998-05-05 | Hitachi, Ltd. | Enhanced information processing system using cache memory indication during DMA accessing |
TW386193B (en) * | 1997-02-07 | 2000-04-01 | Cirrus Logic Inc | Circuits, system, and methods for processing multiple data streams |
TW457433B (en) * | 1999-03-31 | 2001-10-01 | Ibm | I/O page kill definition for improved DMA and L1/L2 cache performance |
US6804729B2 (en) * | 2002-09-30 | 2004-10-12 | International Business Machines Corporation | Migrating a memory page by modifying a page migration state of a state machine associated with a DMA mapper based on a state notification from an operating system kernel |
Also Published As
Publication number | Publication date |
---|---|
US20070260769A1 (en) | 2007-11-08 |
TW200821833A (en) | 2008-05-16 |
JP2007272885A (ja) | 2007-10-18 |
US7734842B2 (en) | 2010-06-08 |
CN100576190C (zh) | 2009-12-30 |
JP5063152B2 (ja) | 2012-10-31 |
CN101046774A (zh) | 2007-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI417724B (zh) | 使用替代頁池管理直接記憶器存取寫入頁錯誤之電腦執行方法、裝置、及電腦程式產品 | |
US7528838B2 (en) | Video memory management | |
US9767036B2 (en) | Page state directory for managing unified virtual memory | |
US20080235477A1 (en) | Coherent data mover | |
US9830210B2 (en) | CPU-to-GPU and GPU-to-GPU atomics | |
US20100205363A1 (en) | Memory device and wear leveling method thereof | |
US20150095585A1 (en) | Consistent and efficient mirroring of nonvolatile memory state in virtualized environments | |
US20090164715A1 (en) | Protecting Against Stale Page Overlays | |
JP7096840B2 (ja) | 能力メタデータを管理するための装置及び方法 | |
US10140212B2 (en) | Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed | |
JP2011170477A (ja) | ハイパーバイザ及びサーバ装置 | |
JP3872968B2 (ja) | コンピュータ・システムにおいてメモリを動的に再割当てするシステムおよび方法 | |
US10482008B2 (en) | Aligned variable reclamation | |
US20120226832A1 (en) | Data transfer device, ft server and data transfer method | |
US11741015B2 (en) | Fault buffer for tracking page faults in unified virtual memory system | |
US6490668B2 (en) | System and method for dynamically moving checksums to different memory locations | |
US9323671B1 (en) | Managing enhanced write caching | |
AU2014328735B2 (en) | Consistent and efficient mirroring of nonvolatile memory state in virtualized environments | |
JP2009026310A (ja) | データ記憶方法 |