新四季網

事務中寄存器的動態保存的製作方法

2023-06-19 17:32:51 4


本公開涉及數據處理領域,並且更具體地關於數據處理裝置中對事務的使用。



背景技術:

在多處理器系統中,確保各個處理設備之間的協調通常是必要的。例如,考慮以下情況:處理器A和處理器B二者都嘗試將共享資源(例如,一個人的銀行餘額值)減少10。如果此人的銀行餘額值初始為100,則進行正確處理後,共享值應該減少到80(100-10-10)。然而,如果處理器A和B各自同時得到當前值,則每個處理器可以執行計算並且將新值(90)同時寫回共享處理器中。因此,由於缺乏協調,兩個事務中的一個事務已經被另一事務掩蔽或覆寫。

可以使用鎖定(lock)以便確保每次僅單個執行代理(處理器或線程)可以訪問共享資源。考慮上面的示例,用戶的銀行餘額是共享資源並且因此可以將鎖定應用到該數據值以確保一次僅一個處理器可以讀取和修改該值。如果進行了正確的寫操作,則這類鎖定可用於防止事務彼此覆寫並且可用於確保對共享資源的訪問跨所有代理被協調。換句話說,這有助於防止一個代理在共享資源的舊版本上執行操作的情況。使用鎖定的劣勢在於被保護的粒度等級。例如,考慮鍊表。在鍊表中,每個元素提供數據值以及指向列表中的下一元素的指針。當多個代理可能尋求對這類鍊表的修改訪問時,期望鎖定對列表的訪問以便防止元素之一不再指向列表中下一元素的情況-使得列表中斷。一個選項是為整個列表提供鎖定。然而,如果一個代理希望修改列表的頭部並且另一代理希望修改列表的尾部,則該鎖定是不必要的限制-由這兩個代理進行的編輯不太可能互相干擾。另一選項是為列表的各個元素提供鎖定。然而,在大列表的情況下這可能要求大量的鎖定,每個鎖定在存儲器中都要求其自己的存儲。鎖定還有這樣的劣勢:其可以引起死鎖。例如,如果兩個代理各自要求對由鎖定保護的兩個共享數據資源的訪問,並且兩個代理中的每個代理針對這兩個共享數據資源之一持有鎖定,則系統進入死鎖。換句話說,兩個代理都不能繼續進行並且將永遠等待另一代理釋放其所需的鎖定。

一個解決方案是使用事務而不是鎖定。當事務開始時,處理器進入特殊執行模式。在該模式中時,系統追蹤讀和寫。如果確定(例如,在多個代理之間)存在衝突,則代理之一將被消滅和回滾,例如其改變將被撤銷。如果未發生任何衝突,則這些代理繼續直到其完成(此時做出的改變被提交)。因此事務被認為是一系列操作,這一系列操作被視為單個原子操作,直到該事務被提交為止(單個操作),整個事務對其它代理不可見並且甚至可以通過回滾由這一個代理撤銷或倒回。

在一些系統中,執行事務可能要求每個架構寄存器被保存以便那些寄存器在回滾的情況下被恢復到其原始值。一些架構可以包括大量寄存器,並且因此在這類系統中,保存所有那些寄存器的值可能是必要的。然而,這類方法是浪費的,這是由於其涉及保存事務內從未被修改的數據。在該情況下,數據被不必要地存儲,因此既消耗了存儲空間(為了存儲值)也消耗了時間(為了在物理上複製數據值)。此外,如果發生回滾,則所有保存的寄存器必須恢復其值,即使那些數據值尚未被修改。因此,如果發生回滾,則在恢復所有存儲的數據值中可能浪費更多的時間。此外,與在發生回滾的情況下恢復所有那些存儲的數據值相關聯的功率消耗也最好被避免。

作為替代,對用戶和/或編譯器來說指定在事務期間將被修改的那些寄存器是可能的。在該情況下,僅所指定的寄存器被保存,並且在發生回滾的情況下僅那些寄存器將被恢復。然而,不可能一直預測到特定寄存器是否將在事務中使用。例如,事務可以包括對庫函數的一個或多個調用。用戶或程式設計師對這類庫函數可能幾乎不具有控制,並且甚至可能無法了解庫函數如何工作。在這類情況下,當事務啟動時,用戶不知道哪些寄存器必須被保存。因此,用戶要麼必須保存所有寄存器,要麼則可能繼續伴隨以下情況:回滾將由於未保存的寄存器被修改而失敗。



技術實現要素:

從第一示例配置來看,提供了一種數據處理裝置,包括:多個數據存儲元件,每個數據存儲元件被配置為存儲數據;掩碼存儲電路,被配置為存儲掩碼;處理電路,被配置為執行一個或多個指令;數據保存器,被配置為:響應於事務啟動指令,選擇數據存儲元件的子集並且保存數據存儲元件的子集的備份;掩碼控制電路,被配置為更新掩碼以指示由數據保存器選擇的數據存儲元件的子集;以及監測器,被配置為檢測對數據存儲元件中未由掩碼指示的數據存儲元件的寫入。

根據第二示例配置,提供給了一種數據處理裝置,包括:用於存儲數據的多個裝置;用於存儲掩碼的掩碼存儲裝置;用於執行一個或多個指令的處理裝置;用於響應於事務啟動指令,選擇用於存儲數據的多個裝置的子集並且用於保存由用於存儲數據的多個裝置的子集存儲的數據的備份的數據保存裝置;用於更新掩碼以指示由數據保存裝置選擇的用於存儲數據的多個裝置的子集的掩碼控制裝置;以及用於檢測對用於存儲數據的多個裝置中未由掩碼指示的裝置的寫入的監測裝置。

根據第三示例配置,提供給了一種用於在數據處理裝置中進行數據處理的方法,該數據處理裝置包括用於存儲數據的多個數據存儲元件,所述方法包括以下步驟:響應於事務啟動指令,選擇數據存儲元件的子集;以及保存由數據存儲元件的子集存儲的數據的備份;更新掩碼以指示數據存儲元件的子集;以及檢測對數據存儲元件中未由所述掩碼指示的數據存儲元件的寫入。

附圖說明

將僅通過示例方式參照附圖中所示的本技術的實施例來進一步描述本技術,在附圖中:

圖1是在一個實施例中示出包括數據處理裝置的系統的概覽;

圖2在一個實施例中示出了描述構成數據處理裝置的組件的電路圖;

圖3在一個實施例中示出了描述構成數據處理裝置的組件的電路圖;

圖4以流程圖的形式示出了根據一個實施例使用數據處理裝置的方法;

圖5是指示可以如何使用啟發以便選擇在事務開始時保存的寄存器的集合的流程圖。

具體實施方式

從第一示例配置來看,提供了一種數據處理裝置,包括:多個數據存儲元件,每個數據存儲元件被配置為存儲數據;掩碼存儲電路,被配置為存儲掩碼(mask);處理電路,被配置為執行一個或多個指令;數據保存器,被配置為:響應於事務啟動指令,選擇數據存儲元件的子集並且保存數據存儲元件的子集的備份;掩碼控制電路,被配置為更新掩碼以指示由數據保存器選擇的數據存儲元件的子集;以及監測器,被配置為檢測對數據存儲元件中未由掩碼指示的數據存儲元件的寫入。

響應於事務啟動指令(指示事務將開始),掩碼存儲電路保存(備份)數據存儲元件的子集。這些數據存儲元件可以例如是數據處理裝置中的寄存器。將理解的是,這類數據存儲元件還可以採取寄存器文件、影子寄存器文件、以及各種類型的存儲器構造(包括例如緩存和內部便箋本存儲器)的形式。然後掩碼被存儲,掩碼指示數據存儲元件中的哪些存儲元件已經被保存。應該理解的是詞「子集」在這裡用於表示「少於所有」數據存儲元件的全集。在事務期間,處理器執行一個或多個指令。監測器檢測對未由掩碼指示的數據存儲元件的寫嘗試(即,對尚未保存或備份的數據存儲元件的寫嘗試)。例如,監測器可以檢查引起對數據存儲元件的寫入的那些指令或可以截聽由處理電路發送到數據存儲元件的信號。注意,貫穿該說明書,術語「寫」旨在既指代對數據存儲元件的實際寫入也指代來自處理器的寫入那些數據存儲器元件的請求。如果這類寫或寫嘗試被允許繼續進行,則事務機制本身將失敗,因為無任何回滾將是可能的(由於將做出對數據存儲元件的無法恢復的寫入)。因此,數據處理裝置(憑藉監測器)能夠檢測這類寫入並且可以在適當的情況下採取適當的動作。因此,不論事務將何時開始,保存或備份每個單個寄存器是不必要的,並且用戶不需要關心事務機制由於對尚未保存或備份的數據存儲元件做出寫嘗試而失敗的可能性。

由數據處理裝置響應於檢測到對未由掩碼指示的數據存儲元件的寫入的嘗試而採取的動作可以採用若干不同形式,下面給出了其中的示例,並且這些示例可以單獨存在或以組合形式存在。

例如,數據處理裝置可以包括抑制器電路,被配置為抑制對數據存儲元件中未由掩碼指示的數據存儲元件的寫入。在這類實施例中,如果做出寫入尚未備份的數據存儲元件的嘗試,則執行寫入的嘗試可以簡單地被阻塞。這可以通過監測器防止由處理器發出的寫請求到達數據存儲元件來實現。在一些實施例中,監測器還可以向處理器發送寫嘗試已失敗的信號,這可以使得處理器能夠採取其自己的校正動作-例如,通過執行異常處理例程。

作為另一示例,數據處理裝置可以包括恢復器,被配置為從備份中恢復由掩碼指示的數據存儲元件。因此,如果做出寫入尚未備份的數據存儲元件的嘗試,則所有數據存儲元件可以被恢復到其之前的值。在一些情況下,更新器(例如被實現為更新電路)還可以更新程序計數器以指示事務啟動指令或錯誤處置器(handler)。由於返回程序計數器並且恢復數據存儲元件的結果,引起對事務的完全回滾(rollback)。因此,事務可以被迫再次開始。通過改變程序計數器以指示錯誤處置器,執行特殊錯誤處理代碼是可能的。這可用於輸出診斷信息。

作為另一示例,監測器可以被配置為響應於檢測到對數據存儲元件中未由掩碼指示的數據存儲元件的寫入而發送錯誤信號。例如,信號可以被發送到處理器。處理器可以具有用於處理這類情況的專用子例程。替代地,處理器可以發送異常信號並且軟體本身可以包括用於處理該情況的異常處理例程。這可以允許關於如何繼續事務的完整靈活性。例如,如果事務已經失敗若干次,則事務可以簡單地被回滾並且被拋棄。如果事務的故障是不重要的(例如,數據值它們本身不是關鍵的),則軟體可以被允許繼續甚至無回滾。在其它情況下,事務可以被回滾並且被迫再次開始,這次使得額外的寄存器被保存。

數據存儲元件可以由數據保存器基於由數據處理裝置執行的啟發式(例如,基於經驗的)分析來選擇。具體地,通過使用啟發(heuristic)或統計,數據保存器可以選擇要被保存(備份)的那些數據存儲元件。在這類情況下,對程式設計師來說明確示出必須被備份的那些數據存儲元件可能是不必要的,這降低了程式設計師的負擔並且可適用於在庫被程式設計師調用時以及程式設計師不清楚哪些數據存儲元件必須被備份的地方使用。

啟發式分析可以依賴由編譯器注釋的數據。例如,在編譯期間,編譯器可以提供提示(即指示),提示可以由數據保存器用於確定哪些數據存儲元件應該被保存。

啟發式分析可以依賴於與一個或多個指令相關聯的調用約定。調用約定可以由特定架構指示,並且可以指定在函數調用中數據應該如何在調用方和被調用方之間交換。具體地,調用約定可以指示參數將如何被傳遞(例如,使用特定數據存儲元件或堆棧)並且結果將如何被返回。該信息可用於預測在啟動事務之前必須被保存或很可能必須被保存的那些數據存儲元件。

啟發式分析可以依賴於監測器已檢測到對數據存儲元件中未由掩碼指示的數據存儲元件的寫入的次數。例如,如果事務由於對尚未保存的寄存器的寫入而被重複回滾,則由數據保存器選擇的用於保存的數據存儲元件可以變化,以便需求降低未來事務將回滾的可能性。例如,所選擇的數據存儲元件的子集可以響應於監測器檢測到對數據存儲元件中未由掩碼指示的數據存儲元件的寫入而增加。例如,每當監測器檢測到對寫入尚未保存的數據存儲元件的嘗試時,回滾可以發生,並且與之前的迭代相比額外的寄存器可以被保存。在其它實施例中,被保存的寄存器的數目可以更快增加以便限制發生的回滾的數目。然而,這必須與增加的不必要地保存寄存器的風險相平衡。

要保存的數據存儲元件的子集可以由數據保存器響應於子集定義指令來選擇。例如,用戶可以提供關於哪些數據存儲元件應該被保存的「最佳猜測」。這類方法作為確定要備份哪些數據存儲元件的初始啟動點可能是有用的。如果用戶已獲取關於被調用的庫的工作的知識,這類方法可能是特別有用的。

數據存儲元件可以是多個寄存器。

監測器可以包括監測電路。監測電路可以攔截由處理器向數據存儲元件發出的信號。在其它實施例中,監測器可以通過監測軟體來實現,並且可以監測被執行的指令以便在處理器執行該指令之前確定指令是否將引起對尚未保存(即不是掩碼的一部分)的數據存儲元件的寫入。

數據保存器可以包括數據保存電路,即被配置為執行所述數據保存功能的特定電路。然而,數據保存器可以通過數據保存軟體來實現,數據保存軟體明確使得數據存儲元件被備份或保存到特定位置。

數據保存器可以被配置為將數據存儲元件的子集的備份保存到本地緩存。通過使用本地緩存,隔離由其它代理做出的改變直到改變被提交的時間這是可能的。這是重要的,因為直到改變被提交,改變不可以被其它代理看到。該隔離可以通過使用本地緩存並且通過在相關聯的緩存行條目上提供適當的標籤(以指示該緩存行條目不應該被允許由其它處理器取回)來實現。

在一些實施例中,掩碼既指示將要保存的寄存器的集合,也指示將不保存的寄存器的集合;並且其中數據保存器通過包括將要保存的寄存器的集合中標識的存儲元件並且排除將不保存的寄存器的集合中標識的存儲元件來選擇數據存儲元件。因此,指示將不保存其值的寄存器的集合是可能的。然而,由於那些寄存器仍由掩碼指示,因此寫入那些寄存器將不引起任何特殊行為發生。這類寄存器因此可用於通信目的,例如到外界的通信。

圖1示出了包括兩個數據處理裝置102、104的系統,每個數據處理裝置包括相應的處理器核100、130,並且每個數據處理裝置具有相關聯的寄存器集合(對處理器核來說是本地的)。處理器核100、130中的每個處理器核還具有相關聯的本地緩存110、140。換句話說,一個處理器核可能無法訪問與另一處理器核相關聯的緩存。緩存110、140中的每個緩存可以互相通信(為了一致的目的)並且可以經由存儲器總線150與共享存儲器120通信。共享或主存儲器120包括可以由處理器核100、130訪問的一個或多個共享數據結構(共享資源)。由於處理器核100、130中的每個處理器核可以訪問主存儲器120中擁有的同一共享數據結構,因此系統使用事務以便在處理器核之間提供協調並且幫助防止一個處理器核做出的修改被另一處理器核做出的修改「覆寫」。

圖2示出了處理器核100的實施例。處理電路160執行數據處理指令。那些指令之一可用於指示事務將開始。響應於接收到這類指令,處理電路160向數據保存電路170發送信號以保存寄存器文件180中的寄存器的子集190。掩碼200還可以由掩碼控制電路210更新以表示寄存器的子集190。在該示例中,子集190包括寄存器r0、r1和r2。因此,掩碼可以包含值11100000,從而指示子集包括寄存器文件180中的八個寄存器的前三個寄存器。當然,將理解的是在包括更大或不同數目寄存器的寄存器文件中,掩碼的尺寸將是適當的以便反映寄存器中哪些寄存器構成已經由數據保存電路170保存的寄存器的子集。處理器核100還包括監測電路220,監測電路220(在功能上)位於處理電路160和寄存器文件180之間。監測電路220攔截由處理電路160向寄存器文件180發出的寫請求。換句話說,如果處理電路160發送對寄存器文件180中的寄存器進行寫入的信號,則該信號將首先由監測電路220接收。監測電路220然後將通過經由轉換器230轉換掩碼200來與尚未由數據保存電路保存的寄存器的集合進行比較。如果由處理電路160發出並在監測電路220處接收的寫請求不是去往已由數據保存電路170保存的寄存器之一,則監測電路作出反應。例如,在該實施例中,監測電路向處理電路160發出警告信號。然而,如果由處理電路160發出的寫請求(信號)是去往已經由數據保存電路170保存的寄存器之一,則請求可以被允許通過監測電路220繼續到寄存器文件180以便完成寫入。

在一些其它實施例中,掩碼可以額外地標識將未保存(即不保存)的寄存器的集合。這類寄存器不被數據保存電路170保存,然而由於這些寄存器仍然由掩碼標識,因此如果這些寄存器被寫入,則監測電路220將不作出反應。這些寄存器未被備份,但是可以被寫入而無需監測電路170執行一些特殊行為(例如,引發錯誤、中斷或重啟)。這類寄存器因此可用於例如到外界的通信。例如,中斷事務可以使用這類寄存器來傳送事務被中斷的原因。

在這些實施例中,寄存器因此可以落入三種不同情況之一。在第一種情況中,寄存器可以由掩碼指示為要被保存的寄存器。這類寄存器被備份並且必要的話可以被回滾。在第二種情況下,寄存器可以完全未由掩碼指示。如果這類寄存器在事務期間被寫入,則一些種類的特殊行為可以由監測電路170發起。例如,事務可以中斷、系統可以重啟、或可以引發錯誤等。在第三種情況下,寄存器可以由掩碼指示為未保存的寄存器。這類寄存器不被備份並且不能被回滾。然而,如果這類寄存器被寫入,則監測電路170將不採取特殊動作。

圖3示出了包括處理器核100和本地緩存110的數據處理裝置102的實施例。相同標號已用於指示已描述的特徵。

在所示出的實施例中,數據保存電路170包括啟發式分析器240。啟發式分析器監測數據保存電路在對將被保存或備份到本地緩存110的寄存器的子集190的選擇中的正在進行的成功或失敗。存在可以在確定子集190時由啟發式分析器240考慮的若干不同啟發或統計。例如,該實施例基於監測電路截聽處理電路160對寫入寄存器文件180中不是子集190的一部分的寄存器的嘗試的次數來考慮啟發。具體地,每當處理電路160嘗試寫入寄存器文件180中尚未保存到緩存的寄存器(即,不是子集190的一部分的寄存器)時,計數器250被增加。當數據保存電路170確定應該被保存的寄存器時,計數器250的值被考慮。按這種方式,隨著處理電路160做出更多寫入寄存器文件180中尚未保存的寄存器的請求,數據保存電路170將通過保存寄存器的更大子集來進行響應。

啟發式分析器240還可以考慮諸如與由處理電路160執行的指令相關聯的調用約定之類的啟發。調用約定指定在函數調用期間數據在調用方和被調用方之間傳遞數據的方法和方式。例如,調用約定可以指定使用寄存器的特定組合或使用堆棧來傳遞的參數。類似地,調用約定可以指示函數調用的結果將如何被返回。該信息可以被使用以便更好地預測更可能由處理電路160寫入的寄存器。例如,如果調用約定指示第一參數通常使用寄存器r0來傳遞,則更可能的是:寄存器r0有可能在某一時刻由處理電路160被寫入。因此,啟發式分析器240可以確定寄存器r0通常應該構成所選擇的子集的一部分。

由啟發式分析器考慮的啟發的另一示例可以是由編譯器在將原始碼編譯到處理電路160的指令期間提供的提示。由於編譯器對原始碼具有可視性,因此編譯器能夠提供對必須由數據保存電路170保存的那些寄存器的良好指示。注意,然而這並不總是可能的,這是由於原始碼可以參考編譯器不可視的庫或外部代碼源。因此,由編譯器提供的提示可能不總是完全的。

類似地,經編譯的應用可以給出對不應該由數據保存電路170保存的寄存器的指示。這可用於推翻由啟發式分析器240聚集的啟發或統計、或者數據保存電路170可以被配置為保存除由經編譯的應用指示的那些寄存器外的所有寄存器。

應該理解的是,各種不同啟發(包括這裡未明確提到但對技術人員已知的另外的示例)可以按任意組合由啟發式分析器240來考慮。啟發式分析器240還可以以各種方式結合不同的啟發以便產生關於將被保存的寄存器的子集190的最終結論。

監測和抑制電路320被提供來監測處理電路160對寄存器文件180的寫入的嘗試。監測和抑制電路320被配置為使得:監測從處理電路160到寄存器文件180的寫請求,同時由處理電路160發送到寄存器文件180的與尚未由數據保存電路170保存(備份)的寄存器有關的信號被抑制。換句話說,該信號被忽略並且未被轉發到寄存器文件180。

此外,響應於檢測到去往寄存器文件180中尚未由數據保存電路170保存的寄存器的寫請求,寄存器文件180內擁有的程序計數器270由更新器260更新。程序計數器270被用於指示下一個要由處理電路160執行的指令。因此,通過使用更新器260更新程序計數器270,在監測和抑制電路320檢測到處理電路160嘗試寫入不是子集190的一部分的寄存器的情況下重啟事務或整個跳過事務是可能的。在該實施例中,還提供了數據恢復電路280,以使得如果做出寫入不是子集190的一部分的寄存器的嘗試,則從緩存中恢復已經被保存的那些寄存器。換句話說,被備份的寄存器被重置到其初始值。因此通過數據恢復電路280和更新器260,進行有效的回滾是可能的。也就是說,響應於監測和抑制電路320檢測到處理電路160正嘗試寫入不是子集190的一部分的寄存器(即,尚未保存的寄存器),寫請求被監測和抑制電路320抑制,程序計數器270由更新器260重置到事務開始時的指令的值,並且數據恢復電路280將寄存器的子集190的值恢復到在事務開始時那些寄存器具有的值。換句話說,數據處理裝置的狀態被重置到事務開始時的點。在其它實施例中,響應於監測和抑制電路320檢測到處理電路160正嘗試寫入不是子集190的一部分的寄存器,程序計數器可以被更新以指代錯誤處理例程。這類錯誤處理例程可以定義當做出寫入不是子集190的一部分的寄存器的嘗試時要執行的特殊行為。

圖4根據一個實施例以流程圖的形式示出了執行事務的方法。在步驟S200處,事務開始。這可以由於處理電路160接收到事務啟動指令而發生。然而,如果滿足特定條件,事務還可以由硬體發起。在步驟S210處,選擇數據存儲元件的子集。數據存儲元件可以是例如寄存器文件180中的寄存器。存在很多可以選擇數據存儲元件的集合的方式。選擇這些數據存儲元件的集合的一個方式是通過使用啟發,啟發將稍後參照圖5被示出。然而,數據存儲元件被選擇,在步驟S220處進行備份。在一些實施例中,備份可以通過將那些數據存儲元件的值寫入緩存110中來實現。然而,將理解的是,其它形式的數據存儲同樣是可以接受的。掩碼200然後被更新以便反映在步驟S230處已經被保存的數據存儲元件的子集。事務然後通過處理電路繼續執行一個或多個指令。如果在該指令序列期間的任意階段,做出對未由掩碼指示的數據存儲元件的寫或寫嘗試,則這在步驟S240處被檢測到並且流程繼續到步驟S250,在S250中執行一些動作。在該實施例中,用信號發送錯誤。然而,將理解的是,在其它實施例中,其它響應可以是適當的或可以被利用。例如,回滾可以被執行,包括更改程序計數器270和/或如之前所討論的恢復數據存儲元件的子集的值。可以採取各種其它更改或補救動作,這對於技術人員將是顯而易見的。替代地,如果數據處理裝置在事務期間未檢測到對未由掩碼指示的寄存器(即,尚未保存或備份的寄存器)的寫入,則事務在步驟S260處成功結束。

圖5以流程圖的形式示出了在選擇數據存儲元件的子集時對啟發的使用。在該示例中,數據存儲元件被考慮為構成寄存器文件180的一部分的寄存器。當事務啟動指令由處理器執行時,處理在步驟S100處開始。這使得x的初始值被初始化或被設置。在該示例中,x的初始值是基於啟發的。具體地,x與計數器有關,其中,每當由於處理電路160向寄存器文件180中的尚未保存或備份的寄存器發出寫請求而拋出錯誤時,計數器被增加。已經確定x的值後,在步驟S110處保存x個寄存器的集合。例如,x個寄存器的集合190可以被保存到本地緩存110。x個寄存器的集合190部分通過使用關於由處理電路160執行的指令的調用約定的知識來確定。具體地,如果調用約定指示參數和返回結果通常使用按升序從r0到r8的寄存器來傳遞,則啟發可以確定x個寄存器的集合從寄存器r0開始,並且額外的寄存器被順序添加直到x個寄存器已經被添加。在其它實施例中,其它啟發可用於確定寄存器的集合如何被擴展。在寄存器被保存之前或之後,掩碼200被更新以便反映已經被備份的寄存器的集合。在步驟S120處事務開始。在該步驟期間,一系列指令可以由處理電路160執行。然而,在事務被提交(即完成)之前的任意時間,在步驟S110處保存的寄存器的值可以通過回滾來恢復。在步驟S130處,確定是否已經發生錯誤。具體地,步驟S130在事務期間的任意階段持續測試處理電路160是否做出以下嘗試:寫入寄存器文件180中的寄存器中不是在步驟S110處被保存的寄存器的子集190的一部分的寄存器。這類錯誤可以由監測電路220或監測和抑制電路230引發。如果在事務期間未做出任何這類嘗試,則事務在步驟S160處結束。事務的結束可以由於到達代碼塊的末端而隱含地發生,或可以隨著結束事務指令而明確地發生。當事務結束時,寄存器的值被保存回主存儲器,以使得其它處理器核可以訪問新更新的值。替代地,如果在步驟S130處拋出錯誤,則處理繼續進行到步驟S140。在步驟S140處,x的值加1,從而使得未保存的下一最高寄存器被保存。

將理解的是,在其它實施例中,x可以增加不止1。這可以使得發生更少的循環迭代。然而,這可能以保存更多實際有必要的寄存器為代價。

在一些其它實施例中,(一個或多個)錯誤訪問的寄存器的標識可以被記錄以使得那些寄存器在下次事務被啟動時被具體保存。這可以例如在步驟S140處通過直接修改掩碼來實現。

不管怎樣,在步驟S150處,事務被中斷。在該實施例中,這使得程序計數器270由更新器260更新到事務啟動指令由處理電路160執行時的程序計數器的值。此外,寄存器的集合190的值被恢復到在之前執行步驟S110中保存的值。換句話說,事務被回滾,在於事務從其起點重啟並且寄存器的集合190的值將被恢復到接收事務啟動指令時那些寄存器所擁有的值。流程然後繼續到步驟S110,在步驟S110中事務再次開始,並且x個寄存器的集合被再一次保存。

因此,總之可以看出,對x個寄存器的集合的初始估計被完成。事務然後繼續進行。然而,如果事務由於處理電路160做出寫入寄存器文件180中不是寄存器的集合190的一部分的寄存器的嘗試(即,如果對在事務啟動時未保存的寄存器做出寫嘗試)而失敗,則拋出錯誤,事務被回滾並且x個寄存器的集合被擴展。事務然後利用寄存器的該新集合重啟。該過程可以繼續進行直到事務在步驟S160處成功結束。因此,既不需要明確示出必須被保存的寄存器(可以是未知的)的集合,也不需要保存架構寄存器的整個集合。

儘管本文已經參照附圖詳細描述了本發明的說明性實施例,但是要理解的是,本發明不限於那些精確的實施例,並且在不脫離由所附權利要求定義的本發明的範圍和精神的情況下,本領域技術人員可以在其中產生各種變化、添加和修改。例如,在不脫離本發明的範圍的情況下,可以做出從屬權利要求的特徵和獨立權利要求的特徵的各種組合。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀