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

多處理器計算系統(tǒng)中的存儲器一致性保護的制作方法

文檔序號:6456540閱讀:259來源:國知局

專利名稱::多處理器計算系統(tǒng)中的存儲器一致性保護的制作方法
技術領域
:本發(fā)明一般地涉及計算機和計算機系統(tǒng)的領域。更具體地講,本發(fā)明涉及多處理器計算系統(tǒng)中的存儲器一致性的保護。
背景技術
:對于高功率計算系統(tǒng)的現代需要已導致了具有兩個、四個、八個或更多獨立處理器的多處理器計算機架構的發(fā)展。這樣的多處理器系統(tǒng)能夠同時執(zhí)行程序代碼的多個部分(即同時執(zhí)行多個處理和/或多個處理線程)。存在程序代碼的執(zhí)行部分之間共享數據的若千不同的機制,包括例如進程間通信(IPC)的消息傳遞。然而,大多數現代多處理器計算系統(tǒng)也支持由運行在獨立的處理器上的兩個或更多程序代碼部分可訪問的共享存儲器的使用。使得共享存儲器中存儲的數據的任何改變以按順序的和同步的方式對于多個代碼部分中的每一個可見是重要的。因此,每一個不同類型的多處理器系統(tǒng)具有其自己相應的存儲器一致性模型,其指定存儲器操作(尤其是涉及載入、存儲和原子操作)的語義,以便限定使共享存儲器的改變對于多個處理器中的每一個可見的方式。多處理器系統(tǒng)中的程序代碼和硬件都應跟隨存儲器一致性模型,以便實現正確的操作。相反,存儲器一致性失敗可導致系統(tǒng)的致命崩潰。于1995年9月,作為RiceUniversityECETechnicalReport9512和WesternResearchLaboratoryResearchReport95/7出版的"SharedMemoryConsistencyModels(共享存儲器一致性才莫型);ATutorial",SaritaV.Advey和KouroshGharachoriooz,中提供了對于多處理器計算系統(tǒng)中的存儲器一致性模型的更詳細的介紹,其公開內容在此通過引用而并入。在最簡單的例子中,存儲器一致性模型指定了順序一致性,使得存儲器操作看似嚴格以程序代碼中指定的程序順序進行。然而,多處理器架構中的處理器和存儲器子系統(tǒng)通常被設計為重新排列存儲器操作,以實現提高的硬件性能。也就是說,許多諸如數字ALPHA、SPARCv8&v9和IBMPOWER等的現代共享存儲器多處理器系統(tǒng)提供了各種形式的不嚴格的排序,并且提供稍微不同的形式的非順序存儲器一致性。此處,在名為"POWER4andsharedmemorysynchronization(POWER4和共享存儲器同步)",B.Hay和G.Hook,http:〃www-128.ibm.com/developerworks/eserver/articles/power4mem.html,2002年4月24日,的文章中提供了存儲器一致性領域的更全面的背景信息,其內容在此通過引用而被并入。
發(fā)明內容根據本發(fā)明,提供了一種多處理器計算機系統(tǒng)和保護多處理器計算機系統(tǒng)中的存儲器一致性的方法,如此處所附的權利要求中闡述的。本發(fā)明的其它可選擇的特征將從從屬權利要求和隨后的說明部分中變得顯而易見。此處討論的本發(fā)明的示例性實施例涉及多處理器計算系統(tǒng)中的存儲器一致性的保護。具體地講,本發(fā)明的示例性實施例涉及提供與多處理器計算機系統(tǒng)中的共享存儲器有關的一致的和同步的操作的機制。下面是根據本發(fā)明的實施例可實現的各個方面和優(yōu)點的概述。這是輔助本領域技術人員更快地吸收詳細的設計討論的入門,該設計討論確保、沒有、或不旨在以任何方式限制所附權利要求的范圍。在本發(fā)明的一個示例性方面中,提供了一種多處理器計算系統(tǒng),其包括存儲器、多個處理器和控制器單元。存儲器具有存儲于其中的多個目標代碼部分,包括至少第一目標代碼部分和第二目標代碼部分。多個處理器被設置為使用平行處理來執(zhí)行存儲在存儲器中的多個目標代碼部分??刂破鲉卧辉O置為控制通過多個處理器的多個目標代碼15部分的執(zhí)行??刂破鲉卧ǖ刂房臻g分配單元,被設置為將用于對存儲器尋址的虛擬地址空間分割為多個虛擬地址空間區(qū)域,并且控制多個目標代碼部分的執(zhí)行,以便初始地根據第一存儲器一致性模型通過多個虛擬地址空間區(qū)域訪問存儲器。并且,控制器單元包括共享存儲器檢測單元,被配置為檢測在執(zhí)行相對于存儲器中的共享存儲器區(qū)域的第一目標代碼部分時進行的存儲器訪問請求,所述存儲器中的共享存儲器區(qū)域也由至少第二目標代碼部分可訪問;還被配置為識別訪問共享存儲器區(qū)域的笫一目標代碼部分中的至少一個指令組。此外,存儲器保護單元被設置為響應共享存儲器檢測單元識別所識別的指令組,選擇性地應用存儲器一致性保護,以在執(zhí)行第一目標代碼部分中的所識別的指令組時,關于對共享存儲器區(qū)域的訪問強制使用第二存儲器一致性模型。在本發(fā)明的另一示例性方面中,提供了一種保護多處理器計算系統(tǒng)中的存儲器一致性的方法,該方法包括下述計算機實現的步驟在第一存儲器一致性模型下執(zhí)行至少第一代碼部分;檢測可通過第一代碼部分和至少第二代碼部分訪問的共享存儲器區(qū)域;識別訪問共享存儲器區(qū)域的第一代碼部分中的指令組;以及選擇性地應用存儲器一致性保護,使得當訪問檢測的共享存儲器區(qū)域時,第一代碼部分中的指令組在第二存儲器一致性模型下執(zhí)行。在本發(fā)明的另一示例性方面中,提供了一種保護多處理器計算系統(tǒng)中的存儲器一致性的方法,該方法包括下述計算機實現步驟在多處理器計算系統(tǒng)的默認存儲器一致性模型下執(zhí)行至少第一程序代碼部分和第二程序代碼部分;檢測開始由第一程序代碼部分和第二程序代碼部分可訪問的明確共享的存儲器區(qū)域的請求;以及選擇地應用存儲器一致性保護,使得當訪問共享存儲器區(qū)域時,第一和第二代碼部分在不同的第二存儲器一致性模型下執(zhí)行。在本發(fā)明的另一示例性方面中,提供了一種在具有至少第一和第二處理器的多處理器計算系統(tǒng)中保護存儲器一致性的方法,該方法包括下述計算機實現步驟相對于第一虛擬地址空間區(qū)域由第一處理器16執(zhí)行第一代碼部分,并且相對于第二虛擬地址空間區(qū)域由第二處理器執(zhí)行第二代碼部分,其中,第一和第二虛擬地址空間區(qū)域是分離的和不重疊的;在第一虛擬地址空間區(qū)域內映射至少一個映射區(qū);檢測由第二代碼部分訪問第二虛擬地址空間區(qū)域中被取消映射但在第一虛擬地址空間中為映射區(qū)的存儲器區(qū)域的請求,從而確定第二代碼部分正在試圖訪問共享存儲器區(qū)域;從第一虛擬地址空間區(qū)域將映射區(qū)重新映射至第三虛擬地址空間區(qū)域,其中第三虛擬地址空間相對于第一和第二地址空間區(qū)域是獨立的和不重疊的;以及至少修改包含訪問請求的第二代碼部分中的選擇的指令塊,以便應用使該塊在預定存儲排序限制下執(zhí)行的存儲器一致性保護,并將選擇的代碼塊引導為訪問在第三地址空間區(qū)域中映射的共享存儲器區(qū)域。示例性的實施例提供了低成本和有效的機制,以保護多處理器計算系統(tǒng)中的存儲器一致性,具體地講,通過識別和選擇性地僅對需要這樣的保護的那部分程序應用存儲器一致性保護。此外,示例性實施例提供了用于檢測對共享存儲器的訪問的低成本和有效的機制,從而確定需要存儲器一致性保護的那部分程序。此處討論的一些示例性實施例提供了當進行程序代碼變換時的提高的存儲器一致性。此處,控制器單元是翻譯器單元。具體地講,發(fā)明人已研發(fā)了針對程序代碼變換的機制,其與執(zhí)行動態(tài)二進制翻譯的運行時翻譯器結合使用。也就是說,控制器單元被配置為動態(tài)二進制翻譯器。例如,當執(zhí)行這樣的從具有第一存儲器一致性模型的主題架構到具有另一種存儲器一致性模型的目標架構的翻譯時,主題和目標架構的存儲器一致性模型之間的區(qū)別可導致在目標架構上執(zhí)行的程序代碼的不期望或錯誤的行為。具體地講,當將程序代碼從具有嚴格排列的存儲器一致性模型(諸如SPARC和x86架構)的主題結構變換為具有相對弱的排序的存儲器一致性模型(諸如PowerPC和安騰體系結構)的目標結構時,出現存儲器一致性錯誤。因此,示例性實施例提供了保護執(zhí)行這些形式的程序代碼變換的多處理器計算機系統(tǒng)中的存儲器一致性的低成本和有效的機制。17的示例性實施例中應用的程序代碼變換的更多信息,可關注PCT公開文獻名為"ProgramCodeConversion(程序代碼變換)"的WO2000/22521,名為"MethodandApparatusforPerformingInterpreterOptimizationsduringProgramCodeConversion(在程序代碼變換期間執(zhí)行編譯器最優(yōu)化的方法和設備)"的WO2004/095264,名為"ImprovedArchitectureforGeneratingIntermediate.RepresentationsforProgramCodeConversion(產生程序代碼變換的中間表示的提高的體系結構)"的WO2004/097631,名為"MethodandApparatusforPerformingAdjustablePrecisionExceptionHandling(執(zhí)行可調整精確度例外處理的方法和設備),,的WO2005/006106,以及名為"MethodandApparatusforPreciseHandlingofExceptionsDuringProgramCodeConversion(在程序代碼變換期間進行精確的例外處理的方法和設備)"的WO2006/103395,其內容在此通過引用全部并入。當用于與多處理器計算系統(tǒng)協作時,本發(fā)明也延伸至配置用于執(zhí)行此處討論的任何發(fā)明的實施例的控制器設備或翻譯器設備。并且,本發(fā)明延伸至其上記錄有指令的計算機可讀存儲介質,當由多處理器計算機系統(tǒng)實現時,該指令執(zhí)行此處限定的方法中的任何一個。至少本發(fā)明的一些實施例可被解釋為部分或全部使用專用特殊用途的硬件。此處使用的諸如'組件,,'模型,或'單元,的術語可包括但不限于諸如現場可編程門陣列(FPGA)或執(zhí)行某些任務的專用集成電路(ASIC)的硬件器件??晒┨鎿Q地,本發(fā)明的元件可被配置為存留在可尋址存儲介質上,并被配置為執(zhí)行一個或更多處理器。因此,本發(fā)明的功能元件在一些實施例中可包括,例如,諸如軟件組件、面向主題軟件組件、類組件和任務組件的組件;處理;功能;屬性;過程;子例程;程序代碼段;驅動器;固件;微碼;電路;數據;數據庫;數據結構;表格;陣列和變量。此外,盡管已參照下面討論的組件、模塊和單元描述了優(yōu)選實施例,這樣的功能元件可組合成更少的元件,或分離成更多的元件。并入并且構成說明書一部分的附圖示出了優(yōu)選的實現方式并被描述如下圖l是示出了其中應用了本發(fā)明的實施例的多處理器計算系統(tǒng)的框圖2是由本發(fā)明的實施例應用的程序代碼變換處理的示意性概覽;圖3是本發(fā)明的實施例應用的多處理器計算系統(tǒng)的程序代碼變換系統(tǒng)的示意性概覽;圖4是本發(fā)明的示例性實施例中應用的存儲器一致性保護方法的示意性流程圖5是更詳細地示出了程序代碼變換系統(tǒng)的選擇部分的示意性框圖6是示出了部分虛擬存儲器布局的示意圖7A至7D是示出了部分虛擬存儲器布局的示意圖8是更詳細地示出了程序代碼變換系統(tǒng)的選擇部分的示意性框圖9是在本發(fā)明的示例性實施例中提供存儲器一致性保護的考法的示意性流程圖10是在本發(fā)明的另一個示例性實施例中提供存儲器一致性保護的方法的示意性流程圖;以及圖11A和11B是更詳細地示出了程序代碼變換系統(tǒng)的選擇部分的示意圖。具體實施例方式提供下述說明,使得本領域技術人員能夠制造并使用本發(fā)明,下述說明陳述了發(fā)明人想到的執(zhí)行其發(fā)明的最佳模式。然而,當考慮到此處限定的本發(fā)明的整體原理時,各種修改對于本領域技術人員仍然19容易地顯而易見。圖l給出了其中可應用本發(fā)明的實施例的系統(tǒng)和環(huán)境的概覽,以便介紹將在下面更詳細地討論的組件、模塊和單元。參照圖1,主題程序17應在具有至少主題處理器3的主題計算系統(tǒng)1上執(zhí)行。然而,代替地使用目標計算系統(tǒng)IO,通過執(zhí)行程序代碼變換的翻譯器單元19來執(zhí)行主題程序17。翻譯器單元19執(zhí)行從主題代碼17到目標代碼21的代碼變換,從而目標代碼21可在目標計算系統(tǒng)10上執(zhí)行。如同本領域技術人員熟知的,主題處理器3具有一組主題寄存器5、主題存儲器8在其它事物中保持主題代碼17和主題操作系統(tǒng)2。相似地,圖1中的示例目標計算系統(tǒng)10包括至少一個具有多個目標寄存器15的一個目標處理器13;和存儲包括目標操作系統(tǒng)20的多個可操作組件、主題代碼17、翻譯代碼19和翻譯目標代碼21的存儲器18。目標計算系統(tǒng)10典型地為基于微處理器的計算機或其它適合的計算機。在一個實施例中,翻譯代碼19是利用或不利用最優(yōu)化,將主題指令集架構(ISA)的主題代碼翻譯為另一個ISA的翻譯目標代碼的仿真器。在另一個實施例中,翻譯器19的功能是通過執(zhí)行程序代碼最優(yōu)化將主題代碼翻譯成目標代碼的加速器,主體代碼和目標代碼都是相同的ISA的。翻譯代碼19適宜地是實現翻譯器的源代碼的編譯版本,并且與操作系統(tǒng)20相結合地在目標處理器3上運行。應認為,圖1示出的結構僅是示例性的,并且可以存留在操作系統(tǒng)20之內或之下的代碼來實現例如根據本發(fā)明的實施例的軟件、方法和處理。存儲器18的主題代碼17、翻譯代碼19、操作系統(tǒng)20和存儲機制可以是本領域技術人員已知的各種類型。在根據圖l的設備中,動態(tài)地在運行時執(zhí)行程序代碼變換,以在運行目標代碼21的同時在目標架構10上執(zhí)行。也就是i兌,翻譯器19是根據翻譯目標代碼21運行的。通過翻譯器19運行主題程序17涉及以交替形式執(zhí)行的兩種不同類型的代碼翻譯代碼19;和目標代碼21。因此,目標代碼21是基于被翻譯的程序中的存儲的主題代碼17,在運行時由翻譯代碼19產生的。在一個實施例中,翻譯器單元19仿真諸如主題處理器3和特別是主題檢測器5的主題架構1的相關部分,同時在目標處理器13上實際執(zhí)行作為目標代碼21的主題程序17。在優(yōu)選的實施例中,提供至少一個全局檢測器組(globalagisterstore)27(也稱為主題寄存器庫27或抽象寄存器庫27)。在多處理器環(huán)境中,根據主題處理器的架構提供了可選擇的多于一個的抽象寄存器庫27。通過翻譯器19和目標代碼21的組件提供主題狀態(tài)的表示。也就是說,翻譯器19在各種具體編程語言裝置中存儲諸如變量和/或對象的主題狀態(tài)。通過比較,翻譯目標代碼21在目標寄存器15和由目標代碼21的目標指令操縱的存儲位置18中隱含地提供主題處理器狀態(tài)。例如,全局寄存器組27的低層表示僅為所分配的存儲器的一個區(qū)域。然而,在翻譯器19的源代碼中,全局寄存器組27是可在較高層訪問和操縱的數據陣列或對象。術語"基本塊,,對于本領域技術人員是熟知的?;緣K是恰好具有一個入口點和恰好一個出口點的一段代碼,其將塊碼限制為單一控制路徑。由于該原因,基本塊是控制流程中有用的基礎單位。適宜地,翻譯器19將主題代碼17分割為多個基本塊,其中每一個基本塊是單一入口點處的第一指令和單一出口點處的最后指令之間的順序的指令集(諸如轉移、調用或分支指令)。翻譯器19可僅選擇這些基本塊的一個(塊模式),或選擇一組基本塊(組塊(groupblock)模式)。一個組塊適宜地包括被一起視為一個單位的兩個或更多基本塊。此外,翻譯器可形成表示相同的但在不同進入條件下的主題代碼的基本塊的相等塊"so-block)。在優(yōu)選的實施例中,基于主題指令序列產生中間表示(IR)的樹作為從原始主題程序17產生目標代碼21的處理的一部分。IR樹是由主題程序計算的表達式和由主題程序執(zhí)行的運算的抽象表示。稍后,基于IR樹產生("植入")目標代碼21。IR節(jié)點的集合實際上是有向無環(huán)圖(DAG),但被通俗地稱為"樹"。本領域技術人員可認為,在一個實施例中,翻譯器19是使用諸如C++的面向主題的編程語言實現的。例如,一個IR節(jié)點被實現為C++對象,并且對其它節(jié)點的引用被實現為對對應于那些其它節(jié)點的C++對象的C++引用。因此,IR樹被實現為IR節(jié)點對象的集合,包括對彼此的各種引用。此外,在所討論的實施例中,IR產生使用了對應于主題架構的具體特征的一組寄存器定義,主題程序17規(guī)定為基于該主題架構運行。例如,存在對于主題架構上的每一個物理寄存器(即圖1中的主題寄存器5)的唯一寄存器定義。因此,翻譯器中的寄存器定義可被實現為包含對IR節(jié)點對象(即IR樹)的引用的C++對象。被該組寄存器定義引用的所有IR樹的集合被稱為運行的IR森林("森林"是因為其包含多個抽象寄存器根,每一個被稱為IR樹)。這些IR樹和其它處理適宜地形成了翻譯器19的一部分。圖l還示出了目標架構10的存儲器18中的原生代碼28。從主題代碼的運行時翻譯得到的目標代碼21和為目標架構直接寫入或編譯的原生代碼28之間存在區(qū)別。在一些實施例中,當其檢測到控制的主題程序流程進入諸如對其存在主題代碼的原生版本的主題庫的一段主題代碼17時,翻譯器19實現原生結合。代替翻譯主題代碼,翻譯器19使得等同的原生代碼28在目標處理器13上執(zhí)行。在示例性實施例中,如公開的PCT申請WO2005/008478中更詳細地討論的,翻譯器19使用諸如原生代碼或目標代碼調用樁模塊的定義的接口將產生的目標代碼21與原生代碼28結合,該PCT申請的內容在此通過引用而并入。當在目標計算系統(tǒng)10上運行時,圖2更詳細地示出了翻譯器單元19。如上面所討論的,翻譯器19的前端包括對主題程序17的當前需要的一段解碼,以提供多個主題代碼塊171a、171b、171c(通常每一個都包含主題代碼的一個基本塊),并且還與輔助翻譯器19的稍后操作的每一個主題塊和其中包含的主題指令相關地提供解碼器信息172。在一些實施例中,翻譯器19的核心192中的IR單元從解碼主題指令產生中間表示(IR),并且恰好與中間表示相關地執(zhí)行最優(yōu)化。作為翻譯器19的后端的一部分的編碼器193產生(植入)可由目標處理器13執(zhí)行的目標代碼21。在該簡單的例子中,產生三個目標代碼塊211a-211c,以便在目標系統(tǒng)10上執(zhí)行工作,其等同于在主題系統(tǒng)1上執(zhí)行主題代碼塊171a-171c。并且,編碼器193可產生用于目標代碼塊211a-211c的一些或全部的控制代碼212,其執(zhí)行諸如i殳定目標塊操作的環(huán)境和在合適的情況下將控制傳遞回翻譯器19的功能。在一些示例性實施例中,翻譯器19還被設置為在主題代碼17中識別系統(tǒng)調用。如上所述,目標系統(tǒng)10可使用不同的目標操作系統(tǒng)20和不同的目標ISA,因此具有與主題ISA相比不同的一組系統(tǒng)調用。此處,在翻譯階段,解碼器191被設置為檢測主題ISA的系統(tǒng)調用,其中主題代碼17調用主題操作系統(tǒng)2。大多數現代操作系統(tǒng)提供一個在普通用戶層程序和操作系統(tǒng)的剩余部分之間的庫,通常為諸如glibc或MSLibC的C庫(libc)。該C庫處理將信息傳遞至操作系統(tǒng)2的核心,并切換至更有特權的管理模式的低層詳細內容,以及不需要在特權模式下完成的任何數據處理和準備。在POSIX和類似的系統(tǒng)中,一些常用的示例性系統(tǒng)調用為open,read,write,close,wait,execve,fork和kill。許多現代操作系統(tǒng)具有數百個系統(tǒng)調用。例如,Linux幾乎具有300個不同的系統(tǒng)調用,而FreeBSD具有約330個。此外,在一些情況下,需要保持對目標代碼的控制并且不將執(zhí)行控制直接從目標代碼21傳遞至目標OS20。在示例性實施例中,主題代碼17中識別的至少一些系統(tǒng)調用使得要產生的目標代碼21包括調用回翻譯器19的函數調用,其在此處稱為"x一call"。這些xjall對于目標代碼21就像已經對目標OS20進行了系統(tǒng)調用,但實際上將執(zhí)行控制從目標代碼21返回翻譯器19。在示例性實施例中,翻譯器19包括通過這樣的x_call從目標代碼21調用的目標OS接口單元(也稱為"FUSE")194。FUSE194響應x—ca11,包括在適合的情況下執(zhí)行對目標OS20的實際系統(tǒng)調用,并返回至目標代碼21。因此,翻譯器19有效地截取由目標代碼21進行的系統(tǒng)調用,并有機會檢視和控制由目標代碼21獲得的系統(tǒng)調用,同時目標代碼21仍然好像已經對目標OS20進行了系統(tǒng)調用。如圖2所示,在一些示例性實施例中,翻譯器19被設置為選擇地截取在執(zhí)行目標代碼21期間產生的例外信號。翻譯器19包括一個或多個和目標OS注冊過的例外處理裝置195,以便接收通過執(zhí)行目標代碼21而出現的至少一些類型的例外信號。因此,在合適的情況下,例外處理裝置195能夠選擇性地介入對例外的處理,并通知翻譯器19已經出現了某個例外。此處,例外處理裝置195在適當的情況下(例如,返回目標代碼21)處理例外并重新開始執(zhí)行,或確定將例外信號傳遞至適合的原生例外處理裝置,如在目標OS20中。在一個實施例中,翻譯器19提供一個代理信號處理裝置(未示出),其接收選擇的例外信號,并傳遞某些接收的例外信號,使其由合適的例外處理裝置195處理。圖3是示出了根據本發(fā)明的示例性實施例的程序代碼變換系統(tǒng)的示意圖。首先,為了示例和容易解釋,圖3示出了具有多個處理器3a、3b的多處理器主題計算系統(tǒng)1,該多個處理器執(zhí)行主題代碼的單獨部分170a、170b(SC1&SC2)并訪問存儲在存儲器子系統(tǒng)(MS)8中的教據。最常見地,在處理器3a、3b上執(zhí)行的主題代碼部分n0a、170b通過引用地址空間(VAS)81訪問物理存儲器8,所迷地址空間(VAS)81將主題代碼170a、170b中引用的存儲器訪問地址映射成存儲子系統(tǒng)8中的物理存儲器地址。因此,術語虛擬地址空間在本領域中用于區(qū)別代碼的地址空間和物理尋址。在一些環(huán)境下,第一和第二主題代碼部分170a、170b都規(guī)定為訪問物理存儲器8的相同區(qū)域。在圖3所示的示例情況下,諸如存儲器8的頁面的區(qū)通過主題代碼部分170a、179b4皮映射到虛擬地址空間81。在其它情況下,明確共享的存儲器被映射為兩個不同的虛擬地址空間。如上所述,主題計算架構1的存儲器一致性模型限定了存儲器訪問的語義、和此處理器3a、3b和存儲子系統(tǒng)8可相對于主題代碼17的原始程序順序重新排列存儲器訪問的程度。在該例子中,主題架構1具有相對強的排序限制。也就是說,主題存儲器一致性模型可限定連續(xù)存儲和連續(xù)載入是按順序的,但存儲后是載入或栽入后是存儲可參照程序順序重新排列。該示例性主題架構中的存儲器一致性模型可被簡要地概括成下述表格1。表格l第一指令第二指令限制存儲存儲按順序的存儲栽入不按順序的栽入存儲不按順序的栽入載入按順序的主題代碼17依賴存儲器一致性模型,以便正確地運行。實際上,主題代碼通常被寫入并被調試到使其在當前可用版本的主題硬件上運行的點。然而,在作為不同版本的主題計算系統(tǒng)1的目標計算系統(tǒng)10上實現主題代碼17,或將主題代碼17變換為在完全不同的目標計算系統(tǒng)IO上運行可揭示主題代碼的弱點。此處,有許多使用各種不同形式的不嚴格的存儲器一致性的多處理器系統(tǒng)的實用的例子,包括Alpha,AMD64,IA64,PA畫RISC,POWER,SPARC,x86和z系歹'J(IBM360,370,390)等。如圖3所示,目標計算系統(tǒng)IO上的翻譯器單元(TU)19將主題代碼17變換為目標代碼21,以便參考目標系統(tǒng)的物理存儲器8在多個目標處理器13a,13b上執(zhí)行。在該例子中,目標計算系統(tǒng)10的存儲器一致性模型比主題系統(tǒng)1的具有更弱、更不嚴格的限制。例如,目標存儲器一致性模型可指定無論怎樣都沒有排序,并且目標存儲器一致性模型允許載入和存儲被任意重新排序,同時保持程序語義,如下面的表格2中概括的。表格2一指令笫二指令限制儲存儲不按順序的儲載入不按順序的入存儲不按順序的入載入不按順序的如本領域技術人員熟知的,存儲器子系統(tǒng)18可包括被指定用于增加存儲器訪問速度的各種高速緩沖存儲結構(未示出)。存儲器子系統(tǒng)18可包括兩層或更多層物理存儲器,其包括由片內或片外靜態(tài)RAM提供的高速緩沖存儲線、動態(tài)RAM中的主存儲器、和大容量盤存儲器等,它們根據主題計算系統(tǒng)的架構由存儲子系統(tǒng)管理。有許多保護高速緩沖存儲器一致性(也稱為高速緩沖存儲相關性)的機制來確保高速緩沖存儲結構保持一致,但沒有具體與所考慮的和此處還沒進一步討論的例子相關的?,F在將提供簡化的例子來示例在目標計算系統(tǒng)10中可能出現存儲器一致性錯誤的一些方式。在該例子中,訪問兩個存儲位置(*areal,*area2)。假設這些位置在不同的存儲器頁面上,以確保它們不在目標存儲器子系統(tǒng)18的高速緩沖存儲結構內的相同的高速緩沖存儲線上,和增加使對存儲器18的訪問次序顛倒的可能性。最初,我們限定存儲在這些位置中的值為*areal=0和Aarea2-0。如下面的偽代碼所示,第一處理器13a正在執(zhí)行監(jiān)控^rea2中存儲的值的目標代碼21a的第一部分,并且根據Aareal的值i殳定變量"a":while(*area2==0){}inta=*areal第二處理器13b執(zhí)行目標代碼21b的第二部分,該目標代碼21b包含修改存儲在兩個存儲位置中的值的指令*areal=l^area2-l直觀地,我們期望變量"a"現在被設定為值"l"。的確,在嚴格排序的順序一致的系統(tǒng)中,這是真的。然而,可能出現存儲器一致性錯第存存載載誤使得變量"a"被設定為"0"。該錯誤的出現可能有兩種原因。首先,不嚴格的存儲排序可能允許第二存儲(*area2=l)在第一存儲(*areal=l)之前到達存儲器。第一處理器13a能夠讀取Aareal的舊值。第二,不嚴格的栽入排序允許在第一處理器13a內的指令管道中順序顛倒地發(fā)布載入,包括投機地執(zhí)行的載入。在該情況下,在第一處理器13a等待Aarea2改變的同時^areal中的值已經被投機地栽入,并且一旦測試成功就不能被重新載入。其意味著即使正確地對來自第二處理器13b的存儲進行排序,第一處理器13a仍可以不同的順序讀取更新值。大多數多處理器系統(tǒng)提供一種能夠使程序代碼優(yōu)于硬件的不嚴格的存儲器一致性模型,并設置更強的排序限制的安全網,從而提供抵抗存儲器一致性錯誤的保護的方法。一個這樣的安全網機制使用目標代碼21a、21b中的串行化指令來形成合適的同步點,同時另一個這樣的安全網通過在頁面表格中設定屬性來保護存儲器的某些區(qū)。如現在要更詳細地討論的,可單獨或組合使用這些和其它存儲器一致性保護機制。首先來看串行化指令的使用,一種普遍可用的形式是屏障指令(fenceinstruction)。屏障指令形成了將程序指令分割成屏障之前的指令、和隨后的那些指令的內存屏障(memorybarrier)。由屏障之前的指令引起的存儲器訪問在由屏障之后的指令引起的存儲器訪問之前執(zhí)行。因此,屏障在獲得存儲器一致性上是有用的,但導致顯著的性能損失。IBMPOWER指令集架構中的指令SYNC是屏障指令的主要例子。屏障指令的其它具體變形也在POWERISA中可用,諸如輕量級同步(LWSYNC)指令或強迫輸入輸出執(zhí)行順序(EIEIO)指令。其它例子包括來自AlphaISA的MB和MBW、來自x86ISA的MFENCE和來自SPARCISA的MEMBAR。一些ISA也提供一種或更多在具體處理器內同步指令的執(zhí)行的串行化指令。也就是說,指令同步使得處理器在同步之前完成所有指令的執(zhí)行,并且放棄可能已經開始執(zhí)行的同步之后的任何指令的結果。在執(zhí)行了指令同步之后,程序中的隨后的指令可接著開始執(zhí)行。此處,IBMPOWER指令集架構中的指令ISYNC是執(zhí)行這樣的指令同步的指令的主要例子。這些串行化指令被插入目標代碼以確定與目標機器的默認存儲器一致性模型不同的一個存儲器一致性模型。將這些串行化指令插入上面討論的示例偽碼產生了如下的修改的目標代石馬21a和21b。對于第一處理器13a,串行化指令ISYNC被插入(因為表格1中指定的栽入-栽入排序),使得目標代碼21a變?yōu)閣hile(*area2==0){}isyncinta=*areal對于第二處理器13b,串行化指令SYNC被插入,使得目標代碼21b變?yōu)?areal=lsync現在轉向提供抵抗存儲器一致性錯誤的另一個機制,一些目標計算系統(tǒng)允許頁表屬性的操縱。作為具體例子,IBMPOWER架構允許存儲器18的某些區(qū)被指定作為禁止高速緩存和被防護的(下文中稱為按順序存儲)。如果單獨的存儲指令訪問存儲器的這樣的保護區(qū),則以程序指定的順序執(zhí)行存儲。方便地,存儲器的一些頁面被標記為按順序存儲,同時存儲器的其它頁面不是按順序存儲的。按順序存儲的頁面可用于確認與目標機器的默認存儲器一致性模型不同的一個存儲器一致性模型。然而,與對非按順序存儲的頁面的訪問相比,對這樣的按順序存儲的頁面的訪問通常導致了性能損失。現在將更詳細地描述本發(fā)明的示例性實施例,以便陳述上面概括的存儲器一致性問題,同時一起最小化或避免與諸如串行化指令和按順序存儲的頁面的存儲器一致性保護機制相關聯的嚴重性能損失。圖4是示意性流程圖,其提供了本發(fā)明的示例性實施例中應用的方法的總體概覽,該方法保護諸如參照圖3在上面描述的目標計算系統(tǒng)10的多處理器計算架構中的存儲器一致性。步驟401包括在第一存儲器一致性模型下執(zhí)行至少第一目標代碼部分21a。也就是說,在步驟401中,至少第一目標代碼部分21a是在可應用于目標計算系統(tǒng)的架構的第一默認存儲器一致性模型下在目標計算系統(tǒng)中執(zhí)行的。步驟402包括檢測用于訪問可由第一目標代碼部分21a和至少一個其它第二程序代碼部分21b訪問的共享存儲器區(qū)域的請求。也就是說,在步驟402中,翻譯器單元19被設置為關于存儲器18中的共享存儲器區(qū)域檢測訪問請求,所述共享存儲器對于笫一和第二目標代碼部分21a、21b是可訪問的(或將成為可訪問的)。可使用各種機制來訪問這樣的共享存儲器區(qū)域,并且如將在下面更詳細地討論的,考慮各種檢測機制。步驟403包括應用存儲器一致性保護機制,使得當訪問所檢測的共享存儲器區(qū)域時,第一目標代碼部分21a中的至少某些指令或某些指令組在所保護的第二存儲器一致性模型下執(zhí)行。此處,翻譯器單元19選擇性地應用一種存儲器一致性保護機制,該機制使得在第一目標代碼部分21a內的所選擇的指令以強制使用與第一模型不同的第二存儲器一致性模型的方式訪問識別的共享存儲器區(qū)域。具體地講,保護的第二存儲器一致性模型提供了比第一模型更強的排序限制,其目的是防止此處提到的類型的存儲器一致性錯誤。稍后,當第二代碼部分21b也試圖訪問共享存儲器區(qū)域時,進一步選擇性地應用存儲器一致性保護機制,使得第二程序代碼部分21b中的至少選擇的指令現在也關于所檢測的共享存儲器區(qū)域在被保護的第二存儲器一致性模型下執(zhí)行。在該示例性實施例中,笫一和第二目標代碼部分21a、21b最初沒有根據第二存儲器一致性模型被限制,而是在默認的第一模型下執(zhí)行。也就是說,目標代碼最初是根據目標系統(tǒng)的較高速度的默認的存儲器一致性模型被創(chuàng)建和執(zhí)行的。通過僅對那些訪問已經被檢測為共享存儲器區(qū)域的存儲器18的那些區(qū)的識別的目標代碼指令應用存儲器一致性保護機制,與更全面地對目標代碼21訪問的所有存儲器應用增強的第二存儲器一致性模型相比,由第二存儲器一致性模型的約束和限制導致的性能損失被充分地減小。圖5是示出了目標計算系統(tǒng)10的選擇部分,以便進一步示出本發(fā)明的示例性實施例的示意圖。在圖5中,主題代碼17是當被翻譯成目標代碼21時作為多個目標代碼部分(例如多個線程)執(zhí)行的多線程應用程序。示出了三個這樣的代碼部分21a-21c(Tl,T2,T3)用于示例。主題^f戈碼17適宜地為,皮變^l為目標代碼21,以l更在目標系統(tǒng)10上利用翻譯器19的支持執(zhí)行的應用程序。作為常見的例子,主題代碼17是諸如網絡服務器、數字內容服務器(例如,流媒體音頻服務器或流媒體視頻服務器)、文字處理器、電子數據表編輯器、圖形圖像編輯工具或數據庫應用的復雜程序。目標計算系統(tǒng)IO通常需要同時運行許多這樣的應用,除了諸如那些與操作系統(tǒng)20和翻譯器19相關的其它任務以外。在動態(tài)二進制翻譯的上下文中,主題代碼17可采取為具體主題架構l專門創(chuàng)建(例如,編譯)的二進制可執(zhí)行的形式。因此,沒有機會人工干預或回顧主題代碼17,而是需要自動地強主題代碼17變換成目標代碼21(即,目標二進制),以便在目標計算系統(tǒng)10上執(zhí)行。在至少一些實施例中,此處討論的機制將允許這樣的變換處理自動地實現,同時也保護存儲器一致性。行。此處,盡管具體實現基于具體計算架構而不同,每一個處理通常都具有相對大量的狀態(tài)信息(也通常稱為上下文信息),并且具有其自己的虛擬地址空間。通過對比,母處理可以產生通常共享其母處理的主題信息的一個或多個線程,并且來自相同處理的兩個線程通常共享母處理的虛擬地址空間。在來自相同母處理的線程之間切換典型地比在處理之間切換的上下文更快,并且多線程是現代多處理器系統(tǒng)上的一個大眾化的編程和執(zhí)行模型。盡管術語"處理"和"線程"被本領域技術人員廣泛使用和理解,為了清楚起見,此處的描述通常是指程序代碼的"一部分"。如圖5所示,除了已經描述的單元,示例性實施例的翻譯器19還包括地址空間分配單元(ASAU)196、共享存儲檢測單元(SMDU)197、以及存儲保護單元(MPU)198。ASAU196被設置為將多個虛擬地址空間區(qū)域(VASR)181分配給多個目標代碼部分21a、21b、21c。第二,ASAU196被設置為引導產生的目標代碼部分21a-21c,以^更訪問多個分配的VASR181中不同的幾個。SMDU197被設置為檢測由目標代碼部分21a、21b、21c中的一個訪問共享存儲器區(qū)域的請求,其具體實施例將在下面討論,并且識別需要存儲器一致性保護的該目標代碼部分內的一個或多個目標代碼指令。MPU198,皮設置為對由SMDU197識別的選擇的目標代碼指令應用存儲器一致性保護。該存儲器一致性保護使目標代碼強制使用不同的存儲器一致性模型,在該情況下具有更強的排序限制,從而保持由主題代碼17要求的存儲器一致性模型。適宜地,如稍后詳細討論的,MPU198選擇性地對目標代碼應用串行化指令,和/或選擇性地確認按順序存儲的頁面。在圖5的例子中,三個目標代碼部分T1、T2、T3(21a-21c),皮示為每一個都與各個虛擬地址空間區(qū)域181a-181c相關聯。此外,在該第一實施例中,ASAU196分配與共享存儲器區(qū)域相關聯地使用的其它VASR181d。在ASAU196的一個示例性實施例中,目標計算系統(tǒng)10提供了多個不同的尋址模式。大多數普遍可用的計算系統(tǒng)提供32位虛擬尋址,使得程序代碼的具體部分的虛擬地址空間能夠尋址物理存儲器18的232個單獨的元素(即字節(jié)、詞)。因此,許多商業(yè)可用的應用程序期望在32位虛擬地址空間中運行。然而,一些計算系統(tǒng)也允許更大的尋址模式,諸如64位模式,其可以代替或與較小的32位尋址模式平行地使用。方便地,翻譯器單元19被設定為以64位尋址模式運行,從而具有64位虛擬地址空間(在下面稱為,翻譯器虛擬地址空間或翻譯器VAS180)。然后,地址空間分配單元196在較大的64位翻譯器VAS180內分配多個單獨的32位虛擬地址空間區(qū)域(VASR)181。其它尋址選擇也是可用的,并且可以按照合適的組合應用來實現相同的效果,諸如被子分割以便提供多個24位虛擬地址空間區(qū)域的32位翻譯器VAS。ASAU196還被設置為將目標代碼21的每一個部分都引導至選擇的一個或多個VASR181。如關于圖2提到的,目標代碼21a的每一個部分都被子分割成多個塊211,其包括單獨指令的短序列作為由翻譯器19處理的最小單位。這些指令中的一些使存儲器訪問這樣的栽入或存儲,并且具體目標代碼部分21a內的大部分指令訪問關于被分配至該部分的VASR181a的私有存儲器。然而,某些指令或指令組關于共享存儲器進行存儲器訪問,并且被引導為訪問用于共享存儲器區(qū)域的VASR181d。在一個實施例中,當執(zhí)行存儲器操作時,目標代碼21被產生為引用基址寄存器BR15a?;芳拇嫫?5a是大多數架構的快速和容易地可用的存儲位置,并且可以在"基址加偏移"類型的存儲器訪問中有效地使用,但如果合適也可使用其它適合的存儲器?;芳拇嫫鰾R被方便地提供作為該部分目標代碼的上下文信息(即,該線程或處理)。基址寄存器BR15a用于將給出了64位翻譯器VAS180中的開始地址的基址地址,作為由目標代碼21的產生部分使用的32位VASR181中的一個的開始地址存儲。然后,由翻譯器19產生目標代碼部分21a、21b、21c的每一個,以便參照基址寄存器BR15a中的開始地址進行存儲器訪問。在圖5的示例性例子中,對于目標代碼部分21a,基址寄存器BR包含64位值"1<<32,232,,,從而線程Tl參照其分配的第一(32位)VASR181a作為從該64位基址值的偏移進行存儲器訪問。簡單地,對于第二目標代碼部分21b,基址寄存器BR包含值"232,232"作為第二32位VASR181b的64位開始地址。此處,示例主題代碼17已經被創(chuàng)建為在32位VAS中運行,因此僅與32位地址相關。因此,翻譯器19參照32位VASR181產生相關部分的目標代碼21a-21b。然而,由于這些32位VASR181是從目標64位翻譯器VAS180分配的,當進行存儲器訪問時,目標代碼使用全64位地址。這是通過將參照32位VASR181的低32位地址與基址寄存器BR15a中指定的全64位基址地址連接而方便地實現的。例如,目標寄存器r31用作基址寄存器以保持64位基址,并且目標寄存器r6在目標代碼沖用于保持所需32位地址。該地址如下面的偽碼所示纟皮組合r6=0x00003210;目標代碼VASR中的32位地址r31=0x0000000100000000;該VASR的64位地址addr3,r31,r6;將地址與r3組合Iwzr5,0(r3);使用r3中的組合地址訪問存儲器此外,ASAU196被設置為引導目標代碼部分21a內的某些指令,使其引用所分配的VASR181的不同的一個。具體地講,涉及到共享存儲器的訪問的某些指令被引導至為共享存儲器區(qū)域保留的VASR181d。在一個示例性實現中,修改基址寄存器BR15a中的開始地址,從而目標代碼21中的隨后的指令參照分配的VASR181的不同的一個。也就是說,存儲在基址寄存器BR15a中的基址被修改,并且修改的基址被目標代碼的具體塊中的一個或更多的隨后的指令使用,直到基址寄存器被重新設定為之前的值。此處,如在上面的例子中,BR15a中原始給出的值為作為分配給第一目標代碼部分21a的VASR181a的64位開始地址的"1<<32,232,,。在示例的例子中,暫時地將基址變?yōu)?0,,將導致目標代碼指令引用為共享存儲器區(qū)域保留的第四VASR181d。將BR15a再次返回值"K〈32,232"導致目標代碼21a引用分配的第一VASR181a。方便地,基址寄存器15a中的默認基址被設定為該部分目標代碼21a的一部分上下文/狀態(tài)。因此,可容易地從上下文獲得默認值,并且當需要時,諸如在每一個目標代碼塊211開始處,可將默認值迅速地設定為默認值。在另一個示例性實現中,也如圖5所示,ASAU196被配置為選擇性地產生引用至少兩個基址寄存器15a、15b的目標代碼指令。方便地,第一基址寄存器BR1保持分配至目標代碼21a-21c的當前部分的VASR181a-181c的基址。同時,第二基址寄存器BR2保持分配給共享存儲器區(qū)域的VASR181d的基址。此處,目標代碼指令被產生為執(zhí)行與第一基址寄存器BRl或第二基址寄存器BR2或其組合相關的存儲器訪問。因此,產生始終僅引用第一基址寄存器BR1的目標代碼21a的第一部分,使得該部分目標代碼相對于相應的分配的VASR181a單獨地操作。然而,當目標代碼指令引用寄存器BR2中的基址時,目標代碼被引導為訪問共享存儲器區(qū)域的VASR181d。通過選擇性地對第一和第二基址寄存器BR1、BR2植入引用,ASAU196被設置為控制目標代碼訪問哪個VASR。SMDU197被配置為檢測由目標代碼部分21a、21b和21c中的一個訪問共享存儲器區(qū)域的請求。首先,該請求可采用開始與其它線程或處理共享的明確共享存儲器區(qū)域的形式。第二,請求可采用與共享存儲器相關的隱含請求的形式,諸如訪問已經被映射到另一個線程的虛擬地址空間的存儲器區(qū)域的請求。首先參照圖6討論明確的共享存儲器的檢測。然后,更詳細地參照圖7討論隱含共享存儲器的檢測。如上所述,翻譯器19被配置為監(jiān)控并截取由執(zhí)行目標代碼21進行的系統(tǒng)呼叫。具體地講,x_call被設置為將執(zhí)行控制傳遞至翻譯器19中的FUSE194,從而對諸如mmap()的存儲器映射系統(tǒng)調用的行為進行仿真。如果x—call不涉及共享存儲器,則適宜地對目標OS進行系統(tǒng)調用,以便按要求采取行動,諸如將私有非共享頁面載入分配至目標代碼的執(zhí)行部分的VASR181。然后,執(zhí)行控制經由FUSE194返回目標代碼,并且目標代碼接收上下文,如同從目標系統(tǒng)調用返回的一樣。然而,當x—call涉及共享存儲器時,由共享存儲器檢測單元197采取行動。此處,x—call或至少從x—call推導的信息被傳遞至SMDU197。作為具體例子,目標操作系統(tǒng)20支持諸如shmget或mmap()的存儲器映射系統(tǒng)調用。作為UNIX和LINUX類型的操作系統(tǒng)中的具體例子,mmap()系統(tǒng)調用典型地采取形式mmap(start,length,prot,flags,fd,offset)來請求將從文件或由文件描述器fd指定的其它對象偏移offset處開始的字節(jié)length映射到在地址start處的虛擬存儲器中。對于匿名文件,參數fd為空。參數prot描述設定讀取和寫入保護的所需存儲器保護。參數flags包括與映射該對象的所有其它處理明確地共享該映射的標志MAP—SHARED等??晒┨鎿Q地,參數flags包含創(chuàng)建私有寫入時復制映射的標志MAP—PRIVATE。因此,mmap()系統(tǒng)調用作為等同的x—call(例如,x—mmap())被植入目標代碼,并能夠明確地請求私有存儲器區(qū)域或明確地請求共享存儲器區(qū)域,從而由SMDU197采取行動,在明確地請求私有存儲器區(qū)域的情況下,對應的mmap()系統(tǒng)調用被如上所述傳遞至目標OS20。圖6是圖5所示的目標計算系統(tǒng)的更詳細的示意圖,以便示出由SMDU197與映射明確的共享存儲器的請求相關地采取行動。具體地講,圖6是翻譯器VAS180的一部分的示意性表示。在圖6所示的例子中,目標代碼21a的當前執(zhí)行部分是線程Tl,其包含x一mmap()類系統(tǒng)函數調用,以便請求明確共享的存儲器區(qū)域182a。然而,所請求的共享存儲器區(qū)域182a沒有被映射到與該具體線程T121a相關聯的虛擬地址空間區(qū)域181a。而是具有和所請求的共享存儲器區(qū)域182a大小和偏移都相同的存儲器區(qū)域182d被映射到為共享存儲器保留的虛擬地址空間區(qū)域181d。所請求的共享存儲器區(qū)域的指針PTR通過FUSE194返回到Tl目標代碼21a,作為在mmap()系統(tǒng)調用之后的期望的行為。在該示例性實施例中,32位指針作為32位VASR181a中的開始地址被返回。然后,繼續(xù)目標線程T121a的執(zhí)行,就好像指針已經被提供至新映射的共享存儲器區(qū)域??蛇x擇地,SMDU197記錄從x—mmap()調用的參數推導的所請求的存儲器區(qū)域182a的詳細內容。也就是說,SMDU形成每一個所請求的共享存儲器區(qū)域182的映射,其方便地包括每一個共享存儲器區(qū)域的大小和位置,并且也可識別目標代碼的具體部分作為該區(qū)的所有者或始發(fā)者。并且FUSE194和/或SMDU197更新翻譯器19中保持的主題狀態(tài),以便反應該新分配的共享存儲器區(qū)域對于主題代碼17出現的方式。因為所請求的共享存儲器區(qū)域182a還沒有實際在第一目標代碼線程Tl21a的VASR181a內凈皮映射,當線程Tl試圖訪問未映射的存儲器區(qū)域182a內的頁面時,出現例外(例如,頁面失敗)。該例外由圖2所示的例外處理器195截取,并^皮傳遞至SMDU197,其能夠識別正在試圖訪問該明確共享存儲器區(qū)域182a的目標代碼塊。響應該例外信號,識別目標代碼指令被首先引導至為共享存儲器保留的VASR181d,然后應用存儲器一致性保護機制。如上所述,ASAU196通過改變代碼來修改基址寄存器BR15a中的值,或者通過修改代碼使其指向第二基址寄存器BR215b,將目標代碼塊中的至少某些指令重新引導至共享VASR181d中的共享存儲器區(qū)域182d。VASR181d中的共享存儲器區(qū)域182d被映射到物理存儲器,從而目標代碼中的相關指令獲得到共享存儲器區(qū)域182的訪問。該示例性實施例容易地使得能夠檢測訪問共享存儲器區(qū)域182的嘗試,因為明確共享存儲器區(qū)域沒有在與執(zhí)行線程Tl相關聯的虛擬地址空間區(qū)域181內被映射。然而,通過提供另外的虛擬地址空間區(qū)域181d和向其重新引導所選擇的目標代碼指令,所需共享存儲器區(qū)域182仍然可由部分目標代碼21訪問。并且,如下面將要更詳細地討論的,MPU198向所識別的目標代碼指令應用存儲器一致性保護機制。也就是說,僅對試圖訪問共享存儲器區(qū)域的目標代碼21的那些塊選擇性地應用存儲器一致性保護機制,以便保持存儲器一致性。因此,影響相對少的指令。特別地,該機制不需要對整個程序或甚至整個線程應用昂貴的存儲保護機制。再次參照圖5,應注意共享存儲器區(qū)域的VASR181d不與目標代碼Tl、T2和T3的執(zhí)行部分中的任何一個的虛擬地址空間區(qū)域重疊。因此,由第二或第三目標代碼部分T2、T3訪問明確共享的存儲器區(qū)域182的任何嘗試最初都會失敗,因為明確共享的存儲器區(qū)域沒有在與該線程相關聯的相應的VASR181b或181c內被映射。再次,由例外處理裝置195處理得到的例外信號,并將其傳遞至SMDU197,SMDU197使得相關指令訪問為共享存儲器保留的VASR181d并對其應用存儲器一致性保護機制。因此,通過例外處理裝置195和SMDU197檢測試圖訪問明確共享的存儲器區(qū)域的任何目標代碼指令,并采取適當的4亍動。圖7是圖5所示的目標計算系統(tǒng)的更詳細的示意圖,以便示出與隱含共享的存儲器區(qū)域相關的由SMDU197采取的行動。具體地講,圖7是在開始諸如新線程的目標代碼的一個新部分期間的翻譯器VAS180的一部分的示意性表示,以便示出當在目標代碼的一個新部分的開始開始隱含的存儲器區(qū)域時用于保護存儲器一致性的機制。具體地講,圖7涉及諸如LINUX類型操作系統(tǒng)中的clone()的系統(tǒng)調用。此處,正常的系統(tǒng)響應是要在相同的共享虛擬地址空間中創(chuàng)建與母處理同時運行的子線程,其中子線程包含來自母處理的上下文信息的子集。因此,由clone()系統(tǒng)調用創(chuàng)建的新線程將默認地占據相同的虛擬地址空間,從而與母處理共享存儲器。然而,下面描述不同于該正常響應的示例性實施例的響應。如圖7A所示,在該例子中,第一線程Tl正在第一VASR181a中執(zhí)行,并且映射到至少一個存儲器區(qū)域182a中,對于該處理私有。此處,映射區(qū)182a典型地包含全局數據、起始堆內存、和可選擇的另外的堆內存。當笫一線程Tl執(zhí)行clone()系統(tǒng)調用(方便地植入為x一call)時,使用圖5的ASAU196將新線程分配給單獨的VASR181b。在該例子中,由新線程T221b引用的基址寄存器15a包含值"2<<32",從而線程T2被引導至第二VASR181b。因為現在兩個線程Tl和T2被分配了單獨的VASR,如圖7所示,之前由線程Tl映射的存儲器區(qū)域182a將不被映射到與線程T2相關聯的虛擬地址空間區(qū)域181b中。因此,具有對應于VASR181a中的私有映射區(qū)182a的大小和偏移的等同區(qū)182b在與線程T2相關聯的第二VASR181b中仍未映射。如圖7B所示,線程Tl繼續(xù)訪問私有存儲器區(qū)域182a,而在該處沒有對線程Tl的部分目標代碼21a進行任何改變。這與參照圖5和圖6討論的處理明確共享的存儲器的機制不同。同時,線程T221a仍可訪問潛在共享的存儲器區(qū)域182a,如果T221b試圖訪問其自己的VASR181b內的對應的區(qū)182b,則相關頁面不3皮映射,并且會出現例外。例外信號被傳遞至與例外處理裝置195協作處理例外的SMDU197。首先,線程T1中斷,因為Tl擁有第二線程T221b試圖訪問的存儲器區(qū)域182a的映射。此處,從線程Tl對相關存儲器區(qū)域182a的所有待定訪問已完成。第二,如圖7C所示,相同大小和偏移的對應的存儲器區(qū)域182d現在在共享VASR181d中被映射,使得由第一線程Tl引用的物理存儲器中的數據現在在區(qū)182a而不是在共享區(qū)182d可用??蓪⒂泄收系膯我豁撁鎻椭频焦蚕泶鎯ζ鲄^(qū)域182d,或者現在可復制整個相關存儲器區(qū)域。已復制的共享區(qū)182a現在沒有在第一線程T121a的虛擬地址空間區(qū)域181中映射,從而線程T1可不再訪問區(qū)182a,例如通過使用munmap()或通過使區(qū)被保護。然后,Tl通知T2,重試對共享區(qū)域181d中的新創(chuàng)建的存儲器區(qū)域182d的訪問是安全的。Tl重新開始正常執(zhí)行。T2重試有故障的存儲器訪問,這一次是通過訪問共享的存儲器區(qū)域域181d并且應用了適合的存儲器一致性保護,然后重新開始執(zhí)行。如圖7C所示,如果目標代碼部分T1或T2隨后再次訪問共享區(qū)182(該共享區(qū)現在是不可訪問的/在它們的私有VASR181a、181b中未映射),則將出現例外并且存儲器訪問將通過在由MPU198應用的適合的存儲器一致性保護下,由例外處理裝置195訪問共享地址區(qū)域182d來完成。作為該機制的結果,目標代碼部分Tl和T2中的適合的指令被引導至共享的虛擬地址空間區(qū)域181d,以獲得到共享數據區(qū)182d的訪問,并且僅對試圖訪問共享數據區(qū)182d的目標代碼的那些部分應用第二存儲器一致性模型的較強的限制?,F在,繼續(xù)處理,并且Tl和T2并行地執(zhí)行。每一次線程中的一個,例如第二線程T2,試圖訪問已經由另一線程,例如第一線程映射的存儲器區(qū)域,會出現例外,該例外被處理為從所有者線程Tl將相關區(qū)或頁面移至共享VASR181d,并選擇性地向目標代碼的該區(qū)應用存儲器一致性保護機制。試圖訪問現在共享的存儲器區(qū)域的任何其它線程導致例外,并且該線程中的相關代碼同樣被引導并服從存儲器一致性保護。因此,機制應用于任何數量的程序代碼部分(線程T1、T2和T3等)。一種可供替換的機制使用在許多Linux和UNIX類型的操作系統(tǒng)中可用的重映射系統(tǒng)調用。此處,MREMAP系統(tǒng)調用允i午改變目標系統(tǒng)10所使用的頁表,以控制對存儲器18的訪問。通過改變頁表,存儲器的頁面被映射到虛擬地址空間180中的一個新位置,從而直接從第一VASR181a直接移至第二VASR181b。從執(zhí)行用戶-空間線程的觀點來看,重映射是原子地進行的,從而第一線程Tl不需要被中斷或通知。圖7D是示出了多個地址空間區(qū)域181的翻譯器VAS180的另一個視圖,但為了容易示例,此處VASR181被示為在它們的相應的基址處對齊。并且,圖7D示出了由記錄每一個VASR181內的映射區(qū)的SMDU197保持的VASR映像199。在該示例性實施例中,VASR都為相等的32位大小,并且單個32位映像方便地記錄每一個VASR內的映射存儲器區(qū)域。因此,即使私有地映射的區(qū)域最初存留在一個目標代碼部分的VASR中,通過咨詢映像199容易地檢測隱含共享存儲器,以確定具體VASR中的所請求的32位地址已在另一個VASR的相應位置處映射。響應時,僅對訪問檢測的共享存儲器區(qū)域目標代碼指令執(zhí)行圖7B和7C所示的行動。此處討論的示例性實施例正是用于目標代碼部分21a-21c的每一個的VASR181。然而,其它實施例也是可能的,并且被構思為所描述的示例性實施例的變形。例如,可提供多于一個共享區(qū)。在一個可供替換的實施例中,每一個目標代碼部分21a-21c與僅保持私有存儲器區(qū)域的相應私有VASR和保持共享存儲器區(qū)域以及一個或多個私有共享存儲器區(qū)域的相應的共享存儲器區(qū)域相關聯。此處,多個目標代碼部分的多個VASR的使用仍允許共享存儲器,尤其是隱含共享的存儲器,容易地被SMDU197檢測。圖8更詳細地示出了存儲器一致性保護機制的示例性實施例。圖8的例子示出了主題代碼塊171和相應的目標代碼塊211。在執(zhí)行目標代碼塊211的一些點處,與共享存儲器區(qū)域相關地出現了例外,并且如上所述,由例外處理裝置195與ASAU196、SMDU197和MPU198協作地采取行動來保護存儲器一致性。在圖8的例子中,在執(zhí)行該塊的途中與指令相關地出現例外,因此塊211已被分為兩個半部以供示例,其中上半部表示已執(zhí)行的指令,而下半部中剩余的還沒開始執(zhí)行。此處,存儲保護機制首先試圖完成當前塊211的執(zhí)行,并采取運行中的措施來保護存儲器一致性。之后,當已經實現適合的固定的狀態(tài)時,對目標代碼進行較長期的改變,例如重新產生整個塊211,目的是避免在將來執(zhí)行該目標代碼塊時出現例外。首先看存儲器一致性保護機制采取的緊急措施,將描述各種示例性實施例。在一個示例性實施例(在圖8中標為①)中,目標代碼21被產生為在適合的同步點處包括空操作,例如在每一對存儲之間。這些空操作,諸如IBMPOWERISA中的NOP指令,僅具有使處理器在具體數量的時鐘周期內不進行任何操作的效果,因此可方便地用作位置標志符。現在用激活串行化指令(例如,SYNC和ISYNC)替換空指令,以便對目標代碼應用存儲器一致性安全網。并且,如上所述,代碼被修改為引用共享VASR181d。因此,該實施例至少部分修改了準備用于將來執(zhí)行的塊211的非執(zhí)行部分。在另一個實施例(在圖8中標為②)中,目標代碼塊的執(zhí)行是通過存留在MPU198內或與其相關聯的主題-目標編譯器STInt200來完成的。也就是"i兌,執(zhí)行是通過STInt200逐個指令地將對應的主題代碼塊171b的剩余指令編譯為等同的目標代碼指令來完成的。此處,MPU198使編譯器應用串行化指令來形成適合的同步點(例如,在載入或存儲后插入SYNC和ISYNC)。然而,該實施例假設可用適合的主題狀態(tài),以便通過STInt200開始執(zhí)行。而在另一個實施例中,立即重新產生至少目標塊的未執(zhí)行部分,以便插入串行化指令。也就是說,用修改的版本代替目標代碼塊211的剩佘部分,其中在確定的同步點插入串行化指令。再一次,該實施例假設可用適合的主題狀態(tài),從而重新產生的目標代碼可再次從已知狀態(tài)向前移動。當適合的主題狀態(tài)在出現例外的點處不可用時,MPU198適合地在目標代碼中向回翻以達到可實現所需主題狀態(tài)的檢驗點或恢復點。上面引用的WO2005/006106中詳細討論了達到與例外相關的主題狀態(tài)的示例機制。此處,提供檢驗點塊,諸如塊的開始或結束或塊內的選擇點。MPU尋找最后達到的檢驗點,從而能夠恢復檢驗點的主題狀態(tài)?,F在,塊的執(zhí)行是通過參照恢復主題狀態(tài)從檢驗點前進而完成的。在又一修改中,MPU198向前翻至出現例外的點后的下一個檢驗點。此處,通過編譯已經在塊211中產生的目標代碼的目標-目標編譯器TTInt201來輔助MPU,同時插入適合的串行化指令來保護存儲器一致性,直到目標代碼向前翻至下一檢驗點。WO2006/103395中詳細討論了恢復主題狀態(tài)的該向前翻機制。作為又一修改,目標-目標編譯器TTInt201聚集了向前翻操作過程中的翻譯提示,諸如記錄那些失敗的存儲器訪問和沒有失敗的那些存儲器訪問,從而改進稍后的改目標代碼塊的重新產生。方便地,這些翻譯提示通過最初產生具有NOP空操作的目標代碼,然后選擇性地用翻譯提示標志替代NOP而被植入目標代碼。已處理了該目標代碼塊211的緊急需要,翻譯器19現在可以進一步關注塊211。例如,重新產生所有或部分整個目標塊211,以便包括遍及該塊的串行化指令(例如SYNC和ISYNC),或保護塊內的選擇的指令組。因此,當將來執(zhí)行重新產生的目標代碼塊211b時,該塊服從與共享存儲器訪問相關的存儲器一致性保護。目標代碼的再產生可使用通過執(zhí)行從目標代碼塊的之前的化身而收集的翻譯提示??闪⒓磮?zhí)行重新產生,或通過使用圖8中示意性地示出的標志211f將塊標記為需要重新產生,延遲執(zhí)行直到一個稍后的點,諸如當下一個需要執(zhí)行塊211b時。重新產生處理可以是迭代的,并且采取幾種途徑。也就是說,在第一重新產生之后選擇性地對第一組指令應用存儲器一致性保護,然后對第二重新產生中的第二組指令選擇性地應用存儲器一致性保護。此處,從之前的一個或多個化身收集的翻譯提示可用于輔助重新產生的最新迭代。此外,重新產生處理可包括目標代碼的兩個或更多基本塊的組合,其來自具有一個唯一入口點和/或多于一個的唯一出口點和/或具有內部轉移(jump)的組塊。此處,目標代碼中嵌入的翻譯提示有助于允許翻譯器形成已經考慮了相關基本塊的之前的重新產生的有效組塊,從而減少了組塊的重新產生。在實際應用中,可使用代碼的具體段來訪問共享和私有存儲器。如上所述,目標代碼纟皮原始地產生為適合于相關私有VASR,181a-c中的私有存儲器。如果代碼被重新翻譯為適合于共享存儲器,則當試圖訪問私有存儲器時將產生例外,因為私有存儲器沒有在共享VASR181d中映射。因此,一個選擇是再次將代碼翻譯回適合于私有存儲器的原始格式。被映射到共享VASR181d或私有VASR181a-c的存儲器頁面的相互獨有的性質確保了永遠檢測該情況的變化。在處理例外和重翻譯一個或多個代碼塊中存在附加(overhead)。在一些程序中,相對不頻繁地遇到重翻譯附加,因此是最適合的全面方案。然而,已經發(fā)現了一些例子涉及頻繁的重翻譯,諸如當從程序內的許多不同站點調用一段代碼時。一個具體的例子是存儲復制函數memcpy()。此處,機制已^皮進一步開發(fā)并修改為解決該問題。如圖8所示,翻譯器19可保留至少兩個不同版本的目標塊211。笫一個版本211A是沒有存儲器一致性保護的原始翻譯,其根據重排序和由目標系統(tǒng)執(zhí)行的其它最優(yōu)化快速地執(zhí)行。在該參照具有串行化指令的共享VASR181d的例子中,第二個版本211B服從于存儲器一致性保護,因此執(zhí)行得較慢。當該塊在執(zhí)行程序期間下一個被遇到時,翻譯器可選擇性地執(zhí)行第一或第二版本211A或211B。在進入函數時,應用動態(tài)測試來確定被訪問的存儲器的類型,即,私有的還是共享的,然后選擇適合的版本。該方案在減少了翻譯附加的同時,在執(zhí)行動態(tài)測試中存在執(zhí)行損失。在另一個修改中,翻譯器執(zhí)行循環(huán)最優(yōu)化。此處,第一次執(zhí)行循環(huán),并導致了存儲例外,因為循環(huán)內的存儲器訪問指向共享存儲器。現在,翻譯器可重翻譯循環(huán)中的代碼以指向共享存儲器,從而將來的指向共享存儲器的執(zhí)行失敗的可能性較小。設置動態(tài)檢驗以明確循環(huán)中的代碼是要訪問私有還是共享存儲器。并且,翻譯器可試圖將動態(tài)校驗升到循環(huán)以外,并將其放置在循環(huán)之前,從而進一步減少執(zhí)行工作負栽。作為動態(tài)地校驗調用代碼的替換,另一個選擇是在調用方站點嵌入專用代碼。另一個選擇是將調用方專門化為具體函數。也就是說,將調用方專門化為調用私有類型或共享類型訪問器函數,以分別訪問私有或共享存儲器。例如Caller>memcopy>memory變?yōu)镃allerl(private)>memcopyprivate>privatememoryCaller2(shared)>memcopy—shared>sharedmemory條目的包裝器函數)。此處,訪問的存儲地址是由調用方確定的,并且存儲地址僅被訪問器(例如memcopy)使用。包裝器函數最初被設定為調用它們的后繼的私有版本。因此,檢查調用棧確定了需要被專用化的包裝器函數,從而允許來自該調用方的未來的調用成功。適宜地,前進的專用化一次改編一個包裝器層,從離訪問器函數最近的開始,直到每一個層都被專用化為私有和共享版本。圖9是提供了存儲器一致性保護方法的總體概覽作為此處討論的各種詳細實施例的示意性流程圖。在步驟卯l中,在單獨的虛擬地址空間區(qū)域中執(zhí)行第一和第二代碼部分。例如,第一和第二目標代碼部分21a、21b分別關于不同和不重疊的第一和第二虛擬地址空間區(qū)域181a、181b執(zhí)行。步驟902可選擇地包括記錄每一個虛擬地址空間區(qū)域181a、181b內的映射區(qū)182a、182b。此處,響應于存儲器映射行動在存儲器映像199中記錄每一個映射存儲器區(qū)域的地址偏移和大小(地址范圍),諸如mmap()系統(tǒng)呼叫等。在步驟903中,該方法包括檢測對沒有在與當前執(zhí)行的代碼部分相關聯的地址空間中映射,而在多個地址空間的另一個中映射的存儲器區(qū)域的訪問請求。此處,對應的存儲器區(qū)域在與另一個執(zhí)行代碼部分相關聯的地址空間中、或在為共享存儲器保留的單獨的地址空間中映射。在任一情況下,當前執(zhí)行的代碼部分的訪問請求都導致存儲例外,并且響應于存儲例外,確定當前執(zhí)行的代碼部分正在試圖訪問共享存儲器區(qū)域。在步驟904中,該方法包括修改當前執(zhí)行的代碼,以應用使代碼在具有預定限制的存儲器一致性模型下執(zhí)行的存儲器一致性保護機制。并且,當前執(zhí)行的代碼被修改為被引導至為共享存儲器保留的地址空間中的預定共享存儲器區(qū)域。最后,在步驟905中,當共享存儲器區(qū)域沒有已經存留在為共享存儲器保留的地址空間內時,共享存儲器區(qū)域被移動至這樣的地址空間并且未被映射,或者至少在與當前代碼部分相關聯的地址空間中被保護??紤]到開始諸如上述的clone()系統(tǒng)調用的新的執(zhí)行代碼部分的機制,應理解為步驟901還可包括檢測這樣的開始新執(zhí)行的代碼部分的嘗試,為新執(zhí)行的代碼部分分配單獨的地址空間,和在新分配的單獨的地址空間中執(zhí)行新的代碼部分。應理解為圖9中示出的步驟不需要以示出的順序執(zhí)行。作為具體例子,應理解為可在每一個新的存儲器區(qū)域被映射到具體地址空間中時可動態(tài)地執(zhí)行在每一個地址空間中記錄映射區(qū)的步驟902,所述每一個新的存儲器區(qū)域被映射到具體地址空間中是在在單獨的地址空間中執(zhí)行多個代碼部分的每一個的步驟901之前、平行或之后執(zhí)行的。此外,可預先選擇性地執(zhí)行步驟904和卯5,從而目標代碼先被產生為具有對其應用的存儲器一致性保護機制。這些可供替換的實現可取決于翻譯器19內的設定。當翻譯器預計,作為變換主體代碼17的結果,這樣的可選擇的實現對于具體的程序段是有益的,則存儲器一致性保護機制被應用于產生的目標代碼21。還應理解為上述機制不限于在單個應用程序中操作的處理和線程,而也可應用于同時在目標計算系統(tǒng)上操作的一組或一套程序。也就是說,兩個或更多程序(任務)可以在上述機制下共享存儲器的方式一起操作。圖10是根據本發(fā)明的另一個實施例在MPU198中實現存儲器一致性保護機制的方法的示意性流程圖。上面詳細討論的存儲器一致性保護機制對產生的目標代碼應用串行化指令。在可供替換的配置中,在某些架構的目標計算系統(tǒng)上使用頁面標志修改,以在存儲器18中創(chuàng)建按順序存儲的頁面。在步驟1001中,多個目標代碼部分中的每一個都在單獨的虛擬地址空間區(qū)域中執(zhí)行,與上面討論的實施例相似。在步驟1002中,該方法包括,例如通過使用圖7D的VASR映像199記錄被映射到多個地址空間的每一個中的存儲器區(qū)域。這些步驟以上述方式被圖5的ASAU196適宜地執(zhí)4亍。在步驟1003中,該方法包括檢測開始共享存儲器區(qū)域的請求。在一個具體實施例中,該請求是諸如明確地請求共享存儲器的mmap()的存儲器映射系統(tǒng)調用。在另一個例子中,當子線程試圖訪問沒有在其自己的地址空間中映射,而在母線程的地址空間內映射的區(qū)域時,出現例外,其中子線程已經諸如通過clone()系統(tǒng)調用產生。適宜地,如上所述地4吏用SMDU197的檢測才幾制。在步驟1004中,通過操縱頁表屬性來標記所檢測的共享存儲器區(qū)域的一個或多個頁面,使得強制對這些頁面的訪問跟隨第二、非默認存儲器一致性模型。作為具體例子,使用基于PowerPC架構的系統(tǒng)硬件的實現來允許將相關頁面標記為所需有序一致性。該實施例有利地沒有要求共享存儲器區(qū)域182移動至單獨的地址空間區(qū)域181。而是共享存儲器區(qū)域182被映射到需要訪問共享存儲器區(qū)域182的每一個目標代碼部分21a、21b、21c的VASR181a、181b、181c。訪問共享區(qū)的任何代碼將以按順序存儲的方式這樣做,由此應用所需存儲器一致性模型。此外,目標代碼將沒有頁面故障地訪問共享存儲器區(qū)域182,避免了目標代碼的修改。圖11是包括翻譯器VAS180的目標計算系統(tǒng)的部分的示意圖,以進一步示出與按順序存儲的頁面相關的該示例性實施例,以及將虛擬地址空間180映射到物理存儲子系統(tǒng)18的頁表PT183。在圖IIA中,第一代碼部分T121a引起明確地請求共享存儲器的mmap()類型系統(tǒng)調用,例如文件后備的mmap_shared存儲器。翻譯器單元19中的FUSE194截取系統(tǒng)調用,并且如果頁面還沒有被標記為按順序存儲,則使區(qū)域的高速緩存線無效,并在頁表PT183中將頁面標記為按順序存儲。該文件接著被映射到第一代碼部分Tl21a的VASR181a中作為共享存儲器區(qū)域182a。如圖IIB所示,當第二目標代碼部分21b試圖訪問共享存儲器區(qū)域182a時,將出現例外,因為共享存儲器區(qū)域當前沒有在相關VASR181b中映射。作為響應,SMDU197也將共享存儲器區(qū)域182b映射到第二VASR181b中,并且在還沒有這樣標記之處,通過操縱頁表屬性將相關存儲器頁面標記為按順序存儲。圖11B還示出了如果出現done()系統(tǒng)調用時系統(tǒng)的響應。代碼部分21b中的新線程被分配了一個單獨的和不同的VASR181b,其不與母處理21a的VASR181a重疊。在該情況下,第一代碼部分21a的第一VASR181a中的之前私有的存儲器區(qū)域域182a現在可變?yōu)楣蚕?。即使存儲?82a的某些區(qū)域已經在VASR181a母處理中被映射,其對于新克隆的線程仍是為映射的。如果第二代碼部分21b現在試圖訪問在其自己的VASR181b中未映射而在母處理21a的VASR181a中的對應區(qū)182a處被映射的存儲器區(qū)域域182b,則子線程T221b將導致例外。SMDU197將所需文件映射到子線程的VASR,以將共享存儲器區(qū)域182b映射到這些VASR181a、181b兩者的相同的相對位置,以便向目標代碼21a、21b的兩個部分提供到物理存儲器的相同頁面的訪問。在該情況下,之前私有,但現在隱含共享的存儲器區(qū)域182在頁表PT183中被標記為按順序存儲。主要關于用于加速、仿真或翻譯程序代碼的程序代碼變換系統(tǒng)在上面討論了示例性實施例。此外,此處討論的;f幾制可應用于調試工具,其檢測并選擇性地自動校正對于存儲器一致性錯誤易損的程序代碼。設計問題或程序缺陷在共享存儲器多處理器架構中難以發(fā)現、隔離和校正。未檢測的程序缺陷造成了經常導致系統(tǒng)故障、延遲新軟件發(fā)布、或甚至需要發(fā)布后的軟件更新的不適宜的操作。為了該目的,此處的控制/翻譯器單元被配置為作為調試工具運行,以檢測共享存儲器區(qū)域并向主題代碼應用適合的代碼修改,諸如插入串行化指令或修改頁表屬性,從而調試產生的目標代碼。盡管已示出并描述了幾個示例性實施例,本領域技術人員應理解為在不偏離由所附權利要求限定的本發(fā)明的范圍的情況下可進行各種修改和變形。請注意,所有與該說明書同時或在其之前申請的與該申請有關的論文和文獻、與該說明書一起對于z^眾公開的論文和文獻、以及所有這樣的論文和文獻的內容在此通過引用而并入。該說明書(包括任何所附權利要求、摘要和附圖)中公開的所有特征、和/或如此公開的任何方法或處理的所有步驟可組合成任何組合,除了至少一些這樣的特征和/或步驟相互排斥的組合。該說明書(包括任何所附權利要求、摘要和附圖)中公開的每一個特征都可被用于相同、等同或相似目的的可供替換的特征代替,除非特別說明。因此,除非特別說明以外,每一個公開的特征都是一個僅具有一類系列等同或相似的特征的例子。本發(fā)明不限于上述實施例的詳細內容。本發(fā)明延伸到該說明書(包括任何所附權利要求、摘要和附圖)中公開的特征的任何新穎的一個,或任何新穎的組合,或如此公開的任何方法的步驟的任何新穎的一個,或任何新穎的組合。權利要求1.一種多處理器計算系統(tǒng),包括存儲器,具有存儲于其中的多個目標代碼部分,包括至少第一目標代碼部分和第二目標代碼部分;多個處理器,被設置為執(zhí)行存儲在存儲器中的多個目標代碼部分;以及控制器單元,被設置為控制多個處理器對多個目標代碼部分的執(zhí)行,其中控制器單元包括地址空間分配單元,被設置為將用于對存儲器尋址的虛擬地址空間分割為多個虛擬地址空間區(qū)域,并且控制多個目標代碼部分的執(zhí)行,以便最初根據第一存儲器一致性模型通過多個虛擬地址空間區(qū)域訪問存儲器;共享存儲器檢測單元,被配置為檢測在執(zhí)行相對于存儲器中的共享存儲器區(qū)域的第一目標代碼部分時進行的存儲器訪問請求,所述存儲器中的共享存儲器區(qū)域也由至少第二目標代碼部分可訪問,還被配置為識別訪問共享存儲器區(qū)域的第一目標代碼部分中的至少一個指令組;以及存儲器保護單元,被設置為響應共享存儲器檢測單元識別所識別的指令組,選擇性地應用存儲器一致性保護,以在執(zhí)行第一目標代碼部分中的所識別的指令組時,關于共享存儲器區(qū)域的訪問強制使用第二存儲器一致性模型。2.如權利要求l所述的多處理器計算系統(tǒng),其中控制器單元被設置為產生第一和第二目標代碼部分,以在用于對到存儲器的訪問排序的第一存儲器一致性模型下執(zhí)行;以及存儲器保護單元,被配置為選擇性地應用存儲器一致性保護,由此當訪問共享存儲器區(qū)域時,第一目標代碼部分中的所識別的指令組在第二存儲器一致性模型下執(zhí)行。3.如權利要求2所述的多處理器計算系統(tǒng),其中第二存儲器一致性模型具有比第一存儲器一致性模型更強的存儲器訪問排序限制。4.如權利要求2所述的多處理器計算系統(tǒng),其中第一存儲器一致性模型是多處理器計算系統(tǒng)的默認存儲器一致性模型。5.如權利要求2所述的多處理器計算系統(tǒng),其中控制器單元被設置為將多個主題代碼部分翻譯成多個目標代碼部分,第二存儲器一致性模型是被確定為適合于在相應的主題計算架構上執(zhí)行主題代碼部分的存儲器一致性模型。6.如權利要求1所述的多處理器計算系統(tǒng),其中地址空間分配單元被設置為將多個虛擬地址空間區(qū)域的第一虛擬地址空間區(qū)域分配用于執(zhí)行第一目標代碼部分,和將多個虛擬地址空間區(qū)域的不同的第二虛擬地址空間區(qū)域分配用于執(zhí)^f亍第二目標^f戈碼部分。7.如權利要求1所述的多處理器計算系統(tǒng),其中在多處理器計算機系統(tǒng)中設置虛擬地址空間用于控制器單元和多個目標代碼部分的執(zhí)行,并且地址空間分配單元將用于控制器單元和多個目標代碼部分的執(zhí)行的虛擬地址空間分割為多個虛擬地址空間區(qū)域。8.如權利要求1所述的多處理器計算系統(tǒng),其中地址空間分配單元將大小為2M立的虛擬地址空間分割為每個大小都小于2M立的多個虛擬地址空間區(qū)域,其中n為正整數。9.如權利要求1所述的多處幾器計算系統(tǒng),其中地址空間分配單元將大小為2"位的虛擬地址空間分割為每個大小為232位的多個虛擬地址空間區(qū)域。10.如權利要求1所述的多處理器計算系統(tǒng),其中地址空間分配單元被設置為引導第一和第二目標代碼部分,使其在多個虛擬地址空間區(qū)域的相應的區(qū)域中執(zhí)行。11.如權利要求1所述的多處理器計算系統(tǒng),其中地址空間分配單元被設置為產生第一和第二目標代碼部分,以通過將虛擬地址空間區(qū)域的相應的區(qū)域的預定基址與基于目標代碼的執(zhí)行而確定的虛擬地址空間區(qū)域內的偏移組合來執(zhí)行每一個存儲器訪問。12.如權利要求11所述的多處理器計算系統(tǒng),其中地址空間分配單元被設置為產生至少第一目標代碼部分,以參照保持有分配給第一目標代碼部分的虛擬地址空間區(qū)域的基址的多個處理器中的一個處理器中的基址寄存器。13.如權利要求11所述的多處理器計算系統(tǒng),其中地址空間分配單元還被設置為提供從所述虛擬地址空間分割的共享虛擬地址空間區(qū)域,并被設置為產生第一和第二目標代碼部分,由此在執(zhí)行目標代碼期間暫時地修改基址,以便引導目標代碼中的某些指令訪問共享虛擬地址空間區(qū)域。14.如權利要求l所述的多處理器計算系統(tǒng),其中地址空間分配單元被設置為提供包括至少一個共享虛擬地址空間區(qū)域和至少一個私有虛擬地址空間區(qū)域的多個虛擬地址空間區(qū)域;地址空間分配單元被設置為至少產生參照所述多個處理器的至少第一和第二寄存器的具有目標代碼指令的第一目標代碼部分,其中第一寄存器存儲私有虛擬地址空間區(qū)域的第一基址,第二寄存器存儲共享虛擬地址空間區(qū)域的第二基址;其中第一目標代碼部分中的至少一組目標代碼指令參照第一基址寄存器中存儲的第一基址,關于私有虛擬地址空間區(qū)域訪問存儲器,第一目標代碼部分中的至少一組目標代碼指令參照第二基址寄存器中存儲的第二基址,關于共享虛擬地址空間區(qū)域訪問存儲器。15.如權利要求l所述的多處理器計算系統(tǒng),其中共享存儲器檢測單元被配置為通過在多個處理器的相應的處理器上執(zhí)行期間,截取由所述第一目標代碼部分進行的存儲器映射系統(tǒng)調用,檢測對明確地共享的存儲器區(qū)域的請求,其中存儲器映射系統(tǒng)調用明確地請求共享存儲器區(qū)域的映射;以及共享存儲器檢測單元還被配置為將所請求的明確地共享的存儲器區(qū)域映射到多個虛擬地址空間區(qū)域中的共享虛擬地址空間區(qū)域,并且返回分配給第一目標代碼部分的虛擬地址空間區(qū)域的私有虛擬地址空間區(qū)域內的指針,,以表示明確地共享的存儲器區(qū)域。16.如權利要求15所述的多處理器計算系統(tǒng),還包括被設置為接收響應于所述第一目標代碼部分中的指令內的故障存儲器訪問而產生的例外信號,所述第一目標代碼部分試圖訪問沒有在相應的虛擬地址空間區(qū)域內映射的區(qū)域。17.如權利要求16所迷的多處理器計算系統(tǒng),其中共享存儲器檢測單元被配置為確定,故障存儲器訪問試圖訪問被映射到共享虛擬地址空間區(qū)域的明確地共享的存儲器區(qū)域;地址空間分配單元被配置為引導所識別的指令組,以關于共享虛擬地址空間區(qū)域訪問明確地共享的存儲器區(qū)域;以及存儲器保護單元被配置為與通過執(zhí)行所識別的指令組,關于對所檢測的明確地共享的存儲器區(qū)域的訪問,選擇性地應用存儲器一致性保護。18.如權利要求1所述的多處理器計算系統(tǒng),其中共享存儲器檢測單元被配置為通過在相應的處理器上的執(zhí)行期間,截取由所述第一目標代碼部分進行的克隆型系統(tǒng)調用,檢測對私有存儲器區(qū)域的隱含共享,其中克隆型系統(tǒng)調用請求開始從第一目標代碼部分的執(zhí)行克隆的第二目標代碼部分的執(zhí)行;以及地址空間分配單元^J己置為將第二虛擬地址空間區(qū)域分配給與分配給笫一目標代碼部分的第一虛擬地址空間區(qū)域不同的第二目標代碼部分。19.如權利要求18所述的多處理器計算系統(tǒng),還包括例外處理裝置,其被配置為接收響應于所述第二目標代碼部分中的指令內的故障存儲器訪問而產生的例外信號,所述第二目標代碼部分試圖訪問沒有在相應的第二虛擬地址空間區(qū)域內映射的區(qū)域;其中共享存儲器檢測單元被配置為響應于所述例外信號,確定故障存儲器訪問試圖訪問被映射為第一目標代碼部分的第一虛擬地址空間區(qū)域的私有存儲器區(qū)域,被配置為從第一虛擬地址空間區(qū)域消除私有存儲器區(qū)域的映射,并且將私有存儲器區(qū)域映射到共享的虛擬地址空間區(qū)域作為隱含共享的存儲器區(qū)域;地址空間分配單元^J己置為引導第二目標代碼部分中的識別的指令組,以關于共享虛擬地址空間區(qū)域訪問隱含共享的存儲器區(qū)域;以及存儲器保護單元被配置為關于識別的指令組對隱含共享的存儲器區(qū)域的訪問,選擇性地應用存儲器一致性保護。20.如權利要求19所述的多處理器計算系統(tǒng),其中例外處理裝置,被配置為接收響應于所述第一目標代碼部分中的指令內的故障存儲器訪問而產生的例外信號,所述第一目標代碼部分試圖訪問沒有在相應的第一虛擬地址空間區(qū)域內映射的區(qū)域;共享存儲器檢測單元被配置為響應于所述例外信號,確定故障存儲器訪問試圖訪問被映射到共享虛擬地址空間區(qū)域的隱含地共享的存儲器區(qū)域;地址空間分配單元被配置為引導第一目標代碼部分中的識別的指令組,使其關于共享虛擬地址空間區(qū)域訪問隱含共享的存儲器區(qū)域;以及存儲器保護單元被配置為關于識別的指令組對隱含共享的存儲器區(qū)域的訪問,選擇性地應用存儲器一致性保護。21.如權利要求1所述的多處理器計算系統(tǒng),還包括例外處理裝置,被配置為接收響應于所述第一目標代碼部分中的指令內的故障存儲器訪問而產生的例外信號,所述第一目標代碼部分試圖訪問沒有在所述虛擬地址空間區(qū)域的第一個區(qū)域內映射的區(qū)域;以及其中共享存儲器檢測單元被配置為響應于所述例外信號,確定故障存儲器訪問試圖訪問被映射到與第二目標代碼部分相關的虛擬地址空間區(qū)域的第二個,并且將存儲器區(qū)域映射到共享虛擬地址空間區(qū)域作為共享存儲器區(qū)域;地址空間分配單元被配置為引導第一目標代碼部分中的識別的指令組,使其關于共享虛擬地址空間區(qū)域訪問共享存儲器區(qū)域;以及存儲器保護單元被配置為關于識別的指令組對共享的存儲器區(qū)域的訪問,選擇性地應用存儲器一致性保護。22.如權利要求21所述的多處理器計算系統(tǒng),其中例外處理裝置,被配置為接收響應于所述第一目標代碼部分中的指令內的故障存儲器訪問而產生的例外信號,所述第一目標代碼部分試圖訪問沒有在共享虛擬地址空間區(qū)域內映射的區(qū)域;共享存儲器檢測單元被配置為響應于所述例外信號,確定故障存儲器訪問試圖訪問與第一虛擬地址空間區(qū)域相關的私有存儲器區(qū)域;地址空間分配單元被配置為重引導第一目標代碼部分中的識別的指令組,使其訪問關于第一虛擬地址空間區(qū)域的私有存儲器區(qū)域;以及存儲器保護單元被配置為關于識別的指令組對私有存儲器區(qū)域的訪問,選擇性地去除存儲器一致性保護。23.如權利要求l所述的多處理器計算系統(tǒng),其中共享存儲器檢測單元被配置為記錄被映射到多個虛擬地址空間區(qū)域的每一個的存儲器區(qū)域的映像,并且參照映像確定故障存儲器訪問是否試圖訪問已經被映射到多個虛擬地址空間區(qū)域的一個或多個的存儲器區(qū)域。24.如權利要求l所述的多處理器計算系統(tǒng),其中第一和第二目標代碼部分的每一個都被分割為指令塊,其中塊是由控制器單元處理的最小代碼單位;存儲器保護單元被配置為當例外信號是在執(zhí)行當前塊的途中產生的時,使得當前塊的一個或多個剩余指令的執(zhí)行完成,同時對剩余指令應用存儲器一致性保護,;以及控制器單元被配置為重新產生當前塊,以遍及該塊應用存儲器一致性保護。25.如權利要求24所述的多處理器計算系統(tǒng),其中存儲器保護單元被配置為使得當前塊的執(zhí)行完成,同時應用存儲器一致性保護,然后將該塊標記為需要重新產生;以及控制器單元被配置為響應于標記重新產生塊。26.如權利要求24所述的多處理器計算系統(tǒng),其中控制器單元被設置為產生在選擇的同步點處包括空操作的第一和第二目標代碼部分,存儲器保護單元被設置為至少修改塊的剩余指令,以插入串行化指令代替空操作。27.如權利要求24所述的多處理器計算系統(tǒng),其中存儲器保護單元被配置為獲得與塊中的校驗點相關聯的主題狀態(tài),其中主題狀態(tài)表示從其推導目標代碼部分的主題代碼的執(zhí)行的狀態(tài),并且控制器單元還包括主題-目標編譯器,其被配置為將主題代碼中的指令編譯為目標代碼指令,以從校驗點完成該塊,其中,主題-目標編譯器被配置為將串行化指令插入由主題-目標編譯器產生的目標代碼指令。28,如權利要求24所述的多處理器計算系統(tǒng),其中控制器單元還包括目標-目標編譯器,其被配置為將塊中的剩余指令編譯為包括插入串行化指令的修改的目標代碼指令。29.如權利要求24所述的多處理器計算系統(tǒng),其中存儲器保護單元被配置為重新產生剩余指令以插入串行化指令,并且使得執(zhí)行重新產生的剩余指令來完成塊的執(zhí)行。30.如權利要求24所述的多處理器計算系統(tǒng),其中控制器單元被配置為保留至少一個包括塊的原始產生的版本和包含至少一個指令組的塊的修改版本的雙塊,所述塊的原始產生的版本參照第一虛擬地址空間區(qū)域并且沒有存儲器一致性保護,所述塊的修改版本參照共享虛擬地址空間區(qū)域并且具有存儲器一致性保護;以及共享存儲器檢測單元被配置為至少基于進入雙塊執(zhí)行動態(tài)測試,并且作為響應選擇性地執(zhí)行雙塊的原始版本或修改版本。31.如權利要求30所述的多處理器計算系統(tǒng),其中共享存儲器檢測單元被配置為將動態(tài)測試從目標代碼中的循環(huán)移出。32.如權利要求30所述的多處理器計算系統(tǒng),其中共享存儲器檢測單元被配置為產生在調用方站點嵌入雙塊的原始版本或修改版本的目標代碼。33.如權利要求30所述的多處理器計算系統(tǒng),其中共享存儲器檢測單元4皮配置為4務改目標代碼中的調用方站點,以調用雙塊的原始版本或〗奮改版本。34.如權利要求33所述的多處理器計算系統(tǒng),其中共享存儲器檢測單元被配置為漸進地專用化在調用方站點和雙塊之間協調的一個或多個包裝器函數,以選擇性的調用原始或修改的后繼器,直到選擇性地調用雙塊的原始版本或修改版本。35.如權利要求l所述的多處理器計算系統(tǒng),其中存儲器保護單元被配置為通過操縱與所述存儲器相關聯的頁表中的屬性將存儲器中的一個或多個存儲器頁面標記為按順序存儲,使得該一個或多個存儲器頁面都被高速緩存禁止和保護。36.如權利要35所述的多處理器計算系統(tǒng),其中地址空間分配單元還被配置為將第一和第二目標代碼部分的每一個引導至虛擬地址空間區(qū)域的選擇的一個。37.如權利要36所述的多處理器計算系統(tǒng),其中地址空間分配單元被配置為產生第一和第二目標代碼部分的每一個,以通過將虛擬地址空間區(qū)域的相應的區(qū)域的預定基址與基于目標代碼的執(zhí)行而確定的虛擬地址空間區(qū)域內的偏移組合來執(zhí)行存儲器訪問。38.如權利要36所述的多處理器計算系統(tǒng),其中,對于所述第一和第二目標代碼部分的每一個,地址空間分配單元被配置為產生參照相應的處理器中的基址寄存器的目標代碼指令,所述相應的處理器存儲相應的虛擬地址空間區(qū)域的基址。39.如權利要求36所述的多處理器計算系統(tǒng),其中共享存儲器檢測單元被配置為通過在相應的處理器上的執(zhí)行期間,截取由所述第一目標代碼部分進行的存儲器映射系統(tǒng)調用,檢測對明確共享的存儲器區(qū)域的請求,其中存儲器映射系統(tǒng)調用明確地請求共享存儲器區(qū)域的映射;以及存儲器保護單元被配置為將共享存儲器區(qū)域映射到與第一目標代碼相關聯的虛擬地址空間區(qū)域的第一個,并且通過操縱頁表屬性將用于共享存儲器區(qū)域的存儲器中的一個或多個存儲器頁面標記為按順序存儲,使得該一個或多個存儲器頁面都被高速緩存禁止和保護。40.如權利要求36所述的多處理器計算系統(tǒng),還包括例外處理裝置,其被配置為接收響應于第二目標代碼部分中的指令內的故障存儲器訪問而產生的例外信號,所述第二目標代碼部分試圖訪問沒有在與第二目標代碼部分相關聯的相應的第二虛擬地址空間區(qū)域內映射的區(qū)Jb戈;以及其中共享存儲器檢測單元被配置為響應于所述例外信號,確定故障存儲器訪問試圖訪問已作為明確共享的存儲器區(qū)域被映射到第一目標代碼部分的第一虛擬地址空間區(qū)域的存儲器區(qū)域;以及共享存儲器檢測單元被配置為還將明確共享的存儲器區(qū)域映射到沒有這樣標記的第二虛擬地址空間區(qū)域,通過操縱頁表屬性將用于共享存儲器區(qū)域的存儲器中的一個或多個存儲器頁面標記為按順序存儲,使得該一個或多個存儲器頁面都被高速緩存禁止和保護。41.如權利要求36所述的多處理器計算系統(tǒng),還包括例外處理裝置,其被配置為接收響應于第二目標代碼部分中的指令內的故障存儲器訪問而產生的例外信號,所述第二目標代碼部分試圖訪問沒有在與第二目標代碼部分相關聯的相應的第二虛擬地址空間區(qū)域內映射的區(qū)域;以及其中共享存儲器檢測單元被配置為響應于所述例外信號,確定故障存儲器訪問試圖訪問已被映射到第一目標代碼部分的第一虛擬地址空間區(qū)域的存儲器區(qū)域,并確定該存儲器區(qū)域是隱含共享的存儲器區(qū)域;以及存儲器保護單元被配置為通過操縱頁表屬性將用于隱含共享的存儲器區(qū)域的存儲器中的一個或多個存儲器頁面標記為按順序存儲,使得該一個或多個存儲器頁面都被高速緩存禁止和保護。42.如權利要求1所述的多處理器計算系統(tǒng),其中控制器單元被設置為將二進制可執(zhí)行形式的主題代碼翻譯為二進制可執(zhí)行形式的目標代碼部分。43.如權利要求1所述的多處理器計算系統(tǒng),其中控制器單元被設置為動態(tài)地、與目標代碼的執(zhí)行交替地將二進制可執(zhí)行形式的主題代碼翻譯為二進制可執(zhí)行形式的目標代碼部分。44.如權利要求l所述的多處理器計算系統(tǒng),其中控制器單元被設置為通過將主題代碼變換為多個目標代碼部分來調試主題代碼。45.如權利要求l所述的多處理器計算系統(tǒng),其中控制器單元被設置為在執(zhí)行目標代碼部分期間動態(tài)地將二進制可執(zhí)行形式的主題代碼變換為二進制可執(zhí)行形式的目標代碼部分。46.—種在多處理器計算系統(tǒng)中保護存儲器一致性的方法,包括下述計算機實現步驟在第一存儲器一致性模型下執(zhí)行第一程序代碼部分;檢測由第一程序代碼部分和至少笫二程序代碼部分可訪問的共享存儲器區(qū)域;識別訪問共享存儲器區(qū)域的第一程序代碼部分中的指令組;以及選擇性地應用存儲器一致性保護,使得當訪問檢測的共享存儲器區(qū)域時,第一程序代碼部分中的指令組在第二存儲器一致性模型下執(zhí)行。47.如權利要求46所述的方法,其中第二存儲器一致性模型具有比第一存儲器一致性模型更強的存儲器訪問排序限制。48.如權利要求46所述的方法,還包括將第一程序代碼部分分割為多個塊,并且其中,應用步驟選擇性地僅對包含訪問所檢測的共享存儲器區(qū)域的指令的第一程序代碼部分的塊應用存儲器一致性保護。49.如權利要求46所述的方法,其中執(zhí)行步驟還包括執(zhí)行第二程序代碼部分;識別步驟包括識別訪問所檢測的共享存儲器區(qū)域的第二程序代碼部分中的指令組;以及應用步驟包括選擇性地應用存儲器一致性保護,使得第二程序代碼部分中的指令組以強制使用第二存儲器一致性模型的方式訪問所檢測的共享存儲器區(qū)域。50.如權利要求49所述的方法,還包括將第二程序代碼部分分割為多個塊,并且選擇性地僅對包含訪問所檢測的共享存儲器區(qū)域的指令的第二程序代碼部分的塊應用存儲器一致性保護。51.如權利要求46所述的方法,其中執(zhí)行步驟包括在作為多處理器計算系統(tǒng)的默認存儲器一致性模型的第一存儲器一致性模型下,執(zhí)行第一程序代碼部分和第二程序代碼部分;檢測步驟包括檢測開始由第一程序代碼部分和至少第二程序代碼部分兩者可訪問的明確共享的存儲器區(qū)域的請求;以及應用步驟包括應用存儲器一致性保護,使得當訪問明確共享的存儲器區(qū)域時,僅第一程序代碼部分和第二程序代碼部分的選擇部分在不同的第二存儲器一致性模型下執(zhí)行。52.如權利要求51所述的方法,其中執(zhí)行步驟包括當訪問非共享的存儲器區(qū)域時,在默認的第一存儲器一致性模型下執(zhí)行第一和第二程序代碼部分;以及應用步驟包括應用存儲器一致性保護,使得當訪問明確共享的存儲器區(qū)域時,第一和第二程序代碼部分在不同的第二存儲器一致性模型下執(zhí)行。53.如權利要求46所述的方法,其中執(zhí)行步驟包括相對于第一虛擬地址空間區(qū)域在多處理器計算系統(tǒng)的第一處理器上執(zhí)行第一程序代碼部分,并且相對于第二虛擬地址空間區(qū)域在多處理器計算系統(tǒng)的第二處理器上執(zhí)行第二程序代碼部分,其中,第一和第二虛擬地址空間區(qū)域是分離的和不重疊的;檢測步驟包括檢測由第二程序代碼部分提出的訪問在第二虛擬地址空間區(qū)域中被取消映射但在第一虛擬地址空間區(qū)域中為映射區(qū)的存儲器區(qū)域的請求,從而檢測第二程序代碼部分正在試圖訪問共享存儲器區(qū)域;以及其中該方法還包括從第一虛擬地址空間區(qū)域將映射區(qū)重新映射至第三虛擬地址空間區(qū)域,其中第三虛擬地址空間相對于第一和第二地址空間區(qū)域是獨立的和不重疊的;以及至少修改包含訪問請求的第二程序代碼部分中的選擇的指令塊,以便應用使該塊在預定存儲器順序限制下執(zhí)行的存儲器一致性保護,并將選擇的代碼塊引導為訪問在第三虛擬地址空間區(qū)域中映射的共享存儲器區(qū)域。54.—種其上記錄有指令的計算機可讀存儲介質,該指令當由計算機系統(tǒng)實現時使得計算機系統(tǒng)執(zhí)行權利要求46至53的任何一個所述的方法。全文摘要描述了一種在多處理器計算機系統(tǒng)(100)中保護存儲器一致性的方法和設備,具體涉及諸如動態(tài)二進制翻譯的程序代碼變換。示例性多處理器計算系統(tǒng)(10)設置有存儲器(18)和多個處理器(13a,13b)以及控制器單元/翻譯器單元(19),被設置為將主題代碼(17)變換為可在多個處理器(13a,13b)上執(zhí)行的至少第一和第二目標代碼部分(21a,21b)??刂破鲉卧?翻譯單元(19)包括地址空間分配單元(196),其提供多個虛擬地址空間區(qū)域(181),并且引導目標代碼部分(21a,21b)使其由此訪問存儲器(18);共享存儲器檢測單元(197),其檢測訪問可由兩個目標代碼部分(21a,21b)訪問的共享存儲器區(qū)域(182),和識別訪問共享存儲器區(qū)域(182)的第一目標代碼部分(21a)中的至少一個指令組(211);以及存儲器保護單元(198),其選擇性地與所識別的指令組(211)對共享存儲器區(qū)域(182)的訪問相關地應用存儲器一致性保護。在一個示例性實施例中,至少第一代碼部分(21a)是在第一存儲器一致性模型下執(zhí)行的。檢測明確或隱含的存儲器(182),并且包含訪問共享存儲器區(qū)域(182)的指令的第一代碼部分(21a)中的塊(211)服從存儲器一致性保護,以便當訪問檢測的共享存儲器區(qū)域(182)時在第二存儲器一致性模型下執(zhí)行。文檔編號G06F9/50GK101542441SQ200780043496公開日2009年9月23日申請日期2007年11月20日優(yōu)先權日2006年11月22日發(fā)明者G·諾斯,M·豪森,加文·巴勒克拉夫,吉斯利·丹科爾申請人:可遞有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1