国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

      文檔序號(hào):6456540閱讀:262來(lái)源:國(guó)知局

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