TWI403898B - 在多處理器計算系統中之記憶體一致性保護方法 - Google Patents
在多處理器計算系統中之記憶體一致性保護方法 Download PDFInfo
- Publication number
- TWI403898B TWI403898B TW096144164A TW96144164A TWI403898B TW I403898 B TWI403898 B TW I403898B TW 096144164 A TW096144164 A TW 096144164A TW 96144164 A TW96144164 A TW 96144164A TW I403898 B TWI403898 B TW I403898B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- address space
- virtual address
- computing system
- code portion
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 41
- 238000001514 detection method Methods 0.000 claims abstract description 17
- 238000013507 mapping Methods 0.000 claims description 27
- 230000006870 function Effects 0.000 claims description 17
- 238000012986 modification Methods 0.000 claims description 6
- 230000004048 modification Effects 0.000 claims description 6
- 238000012360 testing method Methods 0.000 claims description 6
- 210000000746 body region Anatomy 0.000 claims description 2
- 230000009977 dual effect Effects 0.000 claims 8
- 230000007123 defense Effects 0.000 claims 1
- 238000005192 partition Methods 0.000 claims 1
- 230000001568 sexual effect Effects 0.000 claims 1
- 238000006243 chemical reaction Methods 0.000 abstract description 24
- 238000013519 translation Methods 0.000 abstract description 17
- 230000007246 mechanism Effects 0.000 description 44
- 238000010586 diagram Methods 0.000 description 17
- 230000004044 response Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 6
- 101000821257 Homo sapiens Syncoilin Proteins 0.000 description 5
- 102100021919 Syncoilin Human genes 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 241000272173 Calidris Species 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000027455 binding Effects 0.000 description 3
- 238000009739 binding Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000001172 regenerating effect Effects 0.000 description 3
- 241000196324 Embryophyta Species 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003252 repetitive effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 101150065749 Churc1 gene Proteins 0.000 description 1
- 101000771640 Homo sapiens WD repeat and coiled-coil-containing protein Proteins 0.000 description 1
- 241000761456 Nops Species 0.000 description 1
- 102100029476 WD repeat and coiled-coil-containing protein Human genes 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 125000002015 acyclic group Chemical group 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 108010020615 nociceptin receptor Proteins 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 102220029901 rs140332992 Human genes 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007858 starting material Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Multi Processors (AREA)
Description
本發明係大體上有關於計算機與計算機系統之領域,且特別有關於一種在多處理器計算系統中之記憶體一致性保護。
現今對於高性能計算系統之需求已經導致多處理器計算架構發展成具有兩個、四個、八個或更多個分開的處理器。這種多處理器系統能夠同步執行程式碼之多個部分(即同步執行多個程序及/或多個程序線程(process threads))。乃有數種不同的分享程式碼正執行部分之間資料的機制,舉例而言,包含進程間通訊(Inter-process Communication;IPC)之訊息傳送。然而,大多數的現代多處理器計算系統亦支援共享記憶體之使用,此共享記憶體可被不同處理器上所執行的兩或更多個程式碼部分來讀取。
重點在於,此共享記憶體內所儲存資料所發生之任何改變,皆能以一種有次序且同步化之方式來對於這些多個程式碼部分當中之每一個程式碼部分都成為可見的。因此,每一個不同類型的多處理器系統皆具有本身的對應記憶體一致性模型,該記憶體一致性模型乃規定記憶體操作之語義(sematics)(尤其是與載入(load)、儲存(store)及自動操作有關),其故而定義了此多個處理器當中每一處理器內
之共享記憶體之改變成為可見之方式。多處理系統之程式碼與硬體應該皆依附至記憶體一致性模型以達成正確的操作。反之,一記憶體一致性錯誤係導致系統毀滅性的當機。
對於多處理器計算系統內之記憶體一致性模型的較詳細介紹乃被提供於Sarita V.Advey及Kourosh Gharachorlooz所撰之於1995年9月發表為Rice大學ECE技術報告9512與西方研究實驗室研究報告95/7的「共享記憶體一致性模型:導引(Shared Memory Consistency Models:A Tutorial)」之內,此揭露在此並納作參考文件。
在一最簡化之範例中,記憶體一致性模型係規定連續一致性,藉此記憶體操作乃顯現為依照程式次序來嚴格地發生,如同於程式碼內所規定的一般。然而,多處理器架構內之處理器及記憶體子系統往往設計來對記憶體操作進行重新排序,以達成硬體性能之改善。這意味著,許多現今共享記憶體多處理器系統,譬如是Digital ALPHA、SPARC v8及V9以及IBM POWER及其他乃提供了放鬆排序(relaxed ordering)之種種不同形式並適當地提供非連續之計憶體一致性的不同形式。在此,記憶體一致性領域內之更多普遍背景資訊乃提供於一篇由B.Hay與G.Hook所撰,於2002年四月24日發佈於http://www-128.ibm.com/developeworks/eserver/aritcles/power4_mem.hemal之一篇名為「POWER4與共享記憶體同步化
(POWER4 and shared memory synchronisation)」之文章中,此文章之揭露在此並納作參考文件。
在此乃根據本發明而提供一種多處理器計算系統及一種方法以保護一多處理計算機系統內之記憶體一致性,如所附加之申請專利範圍所提出之。本發明之其他選擇性特徵將由附屬項及以下描述來明白呈現。
在此所討論之本發明之範例實施例係關於一多處理器計算系統內之記憶體一致性保護。特別地,本發明之範例實施例係有關於一種提供多處理器計算機系統內之共享記憶體相關之一致性與同步化操作之機制。
以下是根據本發明之實施例而可實現的種種不同方面及優點之概述。其乃提供來作為一介紹以協助本領域技術者能夠更輕易地吸收接下來的詳細設計討論,然而其不以任何方式來限制或意圖限制此處所附加之申請專利範圍的範疇。
在本發明之一範例方面,係提供一種多處理器計算系統,其包括:一記憶體、複數個處理器以及一控制器單元。該記憶體係具有複數個目標碼部分儲存其中,包含至少一第一目標碼部分及一第二目標碼部分。該複數個處理器係安排用來利用平行處理以執行該記憶體中所儲存之該複數個目標碼部分。該控制器單元係安排用來控制該複數個處理器對該複數個目標碼部分之執行。該控制器單元係包
括一位址空間配置單元,其安排用來切割一用來定址該記憶體的虛擬位址空間成複數個虛擬位址空間區域,以及用來控制該複數個目標碼部分之執行,以一開始根據一第一記憶體一致性模型來透過該複數個虛擬位址空間區域而存取該記憶體。此外,該控制器單元亦包括一共享記憶體偵測單元,其安排用來偵測一記憶體存取要求,該記憶體存取要求係於該第一目標碼部分之執行當中對於該記憶體內之一共享記憶體區域所產生,該記憶體內之該共享記憶體區域亦可藉由該第二目標碼部分來加以存取,以及用來確認該第一目標碼部分內之至少一存取該共享記憶體區域之指令群組。更者,一記憶體保護單元係安排用來以回應於該共享記憶體偵測單元確認該被確認的一指令群組,選擇性地施行一記憶體一致性保護,以相關於該第一目標碼部分內之該被確認的指令群組之執行對該共享記憶體區域之存取實施一第二記憶體一致性模型。
在本發明另一範例方面,係提供一種用以保護一多處理器計算系統之記憶體一致性的方法,包括計算機執行步驟:在一第一記憶體一致性模型下執行一第一程式碼部分;偵測一共享記憶體區域,該共享記憶體區域係可藉由該第一程式碼部分及至少一第二程式碼部分來存取;確認該第一程式碼部分內一存取該共享記憶體區域之一指令群組;以及選擇性地施加一記憶體一致性保護,以使該第一程式碼部分內之該指令群組當存取該被偵測共享記憶體區域時在一第二記憶體一致性模型下執行。
在本發明另一範例方面,係提供一種用以保護一多處理器計算系統之記憶體一致性的方法,包括計算機執行步驟:包含在該多處理器計算系統之一內定第一記憶體一致性模型下,執行至少一第一程式碼部分及一第二程式碼部分;偵測一欲對一明確共享記憶體區域進行初始化之要求,該明確共享記憶體區域對於該第一程式碼部分及該第二程式碼部分皆可存取;以及施加該記憶體一致性保護,以使該第一程式碼部分及該第二程式碼部分當存取該明確共享記憶體區域時於該不同的第二記憶體一致性模型下執行。
在本發明另一範例方面,係提供一種用以保護一多處理器計算系統之記憶體一致性的方法,包括計算機執行步驟:在該多處理器計算系統之一第一處理器上對於一第一虛擬位址空間區域執行一第一程式碼部分,以及在該多處理器計算系統之一第二處理器上對於一第二虛擬位址空間區域執行一第二程式碼部分,其中該第一及第二虛擬位址空間區域係相分離且不相重疊;映射該第一虛擬位址空間區域內之至少一被映射區域;偵測該第二程式碼部分對於一記憶體區域所產生之一存取要求,該記憶體區域未被映射進入該第二虛擬位址空間區域內,但是其係在該第一虛擬位址空間內之映射區域,以及藉此決定該第二程式碼部分係正企圖存取一共享記憶體區域;重新由該第一虛擬位址空間區域將該映射區域改成映射至一第三虛擬位址空間區域,其中該第三虛擬位址空間與該第一及第二虛擬位址
空間區域係相分離並不相重疊;以及修改在該第二程式碼部分內之至少一個選取指令區塊,該第二程式碼部分係包含有施加該記憶體一致性保護之存取要求,該存取要求係使該區塊在既定記憶體排序限制下來執行,以及指示該所選取編碼區塊去存取該被映射在該第三虛擬位址空間區域內之共享記憶體區域。
所述範例實施例係提供一種多處理器計算系統內之保護記憶體一致性之低廉且有效之機制,尤其是藉由確認並僅選擇性地施加記憶體一致性保護至那些要求這樣保護之程式部份之方式。更者,所述範例實施例係提供一種用以偵測對共享記憶體之存取並藉此決定那些需要記憶體一致性保護之程式部份之低廉且有效之機制。
在此所討論之範例實施例當中部份係提供當接受程式碼轉換時的改良記憶體一致性。在此,控制單元係一直譯器。特別地,發明人已經開發針對程式碼轉換之機制,其在與一個實施動態二進制轉換的執行時間直譯器相連結時乃有其用處。這意味著,控制單元係被組態為一動態二進制直譯器。舉例而言,當接受這樣由一具有第一記憶體一致性模型之主題架構至一具有另一記憶體一致性模型之目標架構的轉譯時,主題架構與目標架構之記憶體一致性模型間之差異會導致目標架構上所執行之程式碼產生不被期望或錯誤的行為。尤其是,當將程式碼由一個具有一強烈排序之記憶體一致性模型(譬如是SPARC或x86架構)之主題架構而轉換成一個具有排序相對為弱之記憶體一致性模
型之目標架構(譬如是在PowerPC及Itanium架構中)時,可能產生記憶體一致性錯誤。因此,範例實施例係提供執行這些程式碼轉和型式之多處理器計算機系統內保護記憶體一致性之低價且有效的機制。
針對此處所討論之範例實施例所可能運用之程式碼轉換之相關資訊,可注意WO2000/22521之名為「程式碼轉換(Program Code Conversion)」、WO2004/095264之名為「於程式碼轉換期間用以執行直譯器最佳化之方法與設備(Method and Apparatus for Performing interpreter Optimizations during Program Code Conversation)」、WO2004/097631之名為「用以為程式碼轉換而產生中間再表示法之改良架構(Improved Architecture of Generating Intermediate Representations for Program Code Conversion)」、WO2005/006106之名為「用來執行可調整之精確例外處置的方法及設備(Method and Apparatus for Performing Adjustable Execution Handling)」,以及WO2006/103395之名為「用以於程式碼轉換期間精確處置例外之方法與設備(Method and Appratus for Precise Handling of Exceptions During Program Code Conversation)」之PCT公開文件,在此並將全部納為參考文件。
本發明亦可延伸成一種控制器設備或直譯器設備,其乃安排用來與一多處理器計算系統共同使用以執行在此所討論之本發明之實施例當中之任一實施例。此外,本發明
亦可延伸為可被記算機讀取之儲存媒介,其上乃記錄著指令,並且當被一多處理器計算機系統實行時,其乃執行此處所定義之方法當中任何之一。
本發明之至少部份實施例可以部份或完全地利用專門之特定用途硬體來建造。在此所使用之諸如「部件(component)、模組(module)、單元(unit)」可能但不限制為包含一硬體裝置,譬如是一現場可程式邏輯陣列(Field Programmable Gate Array)或特定功能積體電路(Application Specific.Integrated Circuit),其乃實施特定之任務。或著,本發明之元素可以組態成位居一可定位儲存媒介上並且組態為可於一或更多個處理器上執行。因此,本發明之功能元素在一些實施例中,舉例而言,會包含部件,譬如是軟體部件(software components)、物件導向軟體部件(object—oriented software components)、類別部件(class components)以及任務部件(task components)、程序(processes)、屬性(attributes)、手續(procedures)、子程式(subroutines)、程式碼區段(segments of program code)、驅動器(drivers)、韌體(firmware)、微碼(microcode)、電路(circuitry)、資料(data)、資料庫(databases)、資料結構(data structures)、表格(tables)、陣列(arrays)以及變數(variables)。更者,雖然在此乃參考上述部件、以下所討論之模組或單元以描述較佳實施例,但是這類功能元素可以被合併成較少之元素或分開為額外之元素。
以下之描述係提供來使得嫻熟本領域技術者能夠製造及使用本發明以及能夠提出發明人所思忖之實施本發明之最佳方式。然而,當考量在此所定義之本發明的大體概念時,種種不同之修改將對嫻熟本領域技術者仍保持為顯而易見。
第1圖係給予一系統及環境之概觀,當中本發明之範例實施例能夠得到應用,用以介紹爾後將作更仔細討論之部件、模組以及單元。參考第1圖,一主題程式17係用來於一主題計算系統1上執行,該主題計算系統1係具有至少一個主題處理器3。然而,一目標計算系統10,反而用來通過一用來實施程式碼轉換的轉譯單元19而執行上述主題程式17。轉譯單元19係實施由主題碼17至目標碼21之程式碼轉換,以便目標碼21可於目標計算系統10上執行。
對於本領域技術嫻熟者所熟悉的是,主題處理器3係具有一組主題暫存器5。一主題記憶體8係特別保持主題碼17及一主題操作系統2。類似地,第1圖之範例目標計算系統10係包括至少一個目標處理器13,其具有複數個目標暫存器15,以及一記憶體18,其用來儲存複數個操作部件,其中該等操作部件包含一目標操作系統20、該主題碼17、該轉譯器碼19、以及該經轉換之目標碼21。目標計算系統10典型上是一個以微處理器為主之計算器或其他合適的計算器。
在一實施例中,轉譯碼19是一仿真器(emulator),用來將一主題指令組架構(subject instruction set architecture;ISA)轉譯為另一ISA之經轉換的目標碼,過程乃有或無實行最佳化。在另一實施例中,轉譯器19係用作一加速器(accelerator),用以藉由實施程式碼之最佳化,來將主題碼轉譯成目標碼,其各自均屬相同的ISA。
編譯器碼19適合為一實行該編譯器之來源碼之編譯版本,並與操作系統20連同於一目標處理器13上運作。必須理解的是,第1圖所顯示之結構僅為範例,舉例而言,根據本發明之軟體、方法以及程序,其乃可以實施為一位居於操作系統20以內或以下之程式碼。主題碼17、轉譯器碼19、操作系統20,以及記憶體18之儲存機制可為本領域技術嫻熟者所熟知之廣泛類型當中之任何類型。
在根據第1圖之設備中,乃於運作期間動態地實施編碼轉換,以於目標碼21運作之同時於目標架構10上執行。這意味著,轉譯器19與經轉譯之目標碼21並列運作。通過轉譯器19所運作之主題碼17係牽涉到兩種不同類型的程式碼,這兩種不同類型的程式碼係以交錯方式來執行:轉譯器碼19;以及目標碼21。因此,目標碼21係以正被轉譯之程式之所儲存之主題碼17為基礎,而於整個執行時間內藉由轉譯器碼19來產生。
在一實施例中,轉譯器單元19係仿真主題架構1之相關部分,譬如是主題處理器3,或特別是主題暫存器5,必且同時如目標碼21於主題處理器13上一般,實際地
來執行程式碼17。在較佳之實施例中,係提供至少一個總體暫存器儲存(global register store)21(亦稱作總體暫存器記憶庫(subject register bank)27或抽象暫存器記憶庫(abstract register bank)27)。在一多處理器環境中,係選擇性地來根據主題處理器之架構而提供一個以上的抽象暫存器記憶庫27。一主題狀態之再表示法(representation)係藉由轉譯器19及轉譯器碼21而被提供。這意味著,轉譯器19係將主題狀態儲存於種種不同之明確程式語言裝置中,譬如是變數及/或物件。經轉譯的目標碼21係藉著比較而將主題處理器狀態內隱地提供於目標暫存器17內以及記憶位置18內,其乃被目標碼21之目標指令加以操縱。舉例而言,總體暫存器儲存27的一低階再表示法乃簡單地為配置後之記憶體之一區域。然而,在轉譯器19之來源碼內,總體暫存器儲存27係一資料陣列或一物件,其可被高階存取及操縱。
「基本區塊(Basic Block)」這個名詞乃為本領域技術嫻熟者所熟悉。一基本區塊是程式碼的一個區段,其具有正好一個進入點及正好一個離開點,這將區塊碼限制至單一的控制路徑。由於這個原因,基本區塊係控制流的一個有用的基本單元。適當地,轉譯器19將主題碼17切割成複數個基本區塊,其中每一基本區塊係複數個指令之一連續組合,該等連續組合乃介於一單一進入點上之第一指令以及一單一離開點上之最終指令兩者之間(譬如是一跳躍(bump)、呼叫(call)或分支指令(branch instruction))。轉
譯器19可僅僅選擇這些基本區塊當中之一(區塊模型)或選擇基本區塊之一群組(群組基本模型(group block mode))。一群組區塊適當是包括兩或更多個基本區塊,其可當作單一單元來處理。更者,轉譯器可以形成類區塊(iso—blocks),其代表主題碼之相同區塊但位於不同的進入條件下。
在較佳之實施例中,中間再表示法(Intermediate Representation;IR)樹係根據主題指令序列而產生,其乃由原始主題程式17來產生目標碼21之程序之部分。IR樹係主題程式所計算及實施的操作的表達的抽象再表示法。之後,目標碼21係以這些IR樹為基礎而產生(種植(plant))。IR節點之蒐集實際上是有向非循環圖(Directed Acyclic Graphs),但口語上係稱作「樹(tress)」。
本領域技術嫻熟者可能領略的是,在一實施例中,轉譯器19可能利用諸如C++之物件導線程式語言來實行。舉例而言,一IR節點係被實行為一C++物件,並且指向其他節點之參照係被實行為C++參照,而這些C++參照係指向與其餘節點相對應之C++物件。IR樹因而被實行成為IR節點物件之集合,以及包含種種不同彼此相參考之參照。
更者,在所討論之此實施例中,IR之產生係利用一組暫存器定義,該組暫存器定義乃對應至主題程式17欲於其上執行的主題架構的特定特徵。舉例而言,針對主題架構上之每一實體暫存器(譬如第1圖之主題暫存器5)有一獨特的暫存器定義。如此一來,轉譯器內之暫存器定義可
實行為一C++物件,該C++物件包含一個指向一IR節點物件(譬如是一IR樹)之參照。藉由這組暫存器定義而被參照的所有IR樹的集合係稱為工作IR森林(working IR forest)(稱為「森林」,是因為其含有多個抽象暫存器根部(abstract register roots),而當中每一根部係參考一IR樹)。這些IR樹與其餘程序乃適當地形成轉譯器19之部分。
第1圖更顯示目標架構10之記憶體18內之本體碼28(native code)。目標碼21與本體碼28兩者間係有所區別,目標碼21係主題碼17運作時間之轉譯所產生的結果,而本體碼28係對於目標架構而被直接地寫入或編譯。在一些實施例中,一本體連結(native binding)係使用轉譯器19來實行,而實行時間是當其偵測到主題程式之控制流進入主題碼17之一區段的時刻,譬如是進入一主題程式館(subject library)時,而主題碼之本體版本因為該主題程式館而存在。並非轉譯主題碼,轉譯器19反而引起同等的本體碼28於目標處理器13上執行。在範例實施例中,轉譯器19係利用一經過定義之介面,而將所產生之目標碼21連結至本體碼28,該經定義之介面譬如為本體碼或主題碼呼叫短截(stubs),其乃於公開的PCT申請案WO2005/008478內有詳細討論,而此揭露在此並納為參考文件。
第2圖係更詳細顯示當運作於目標計算系統10上之轉譯器單元。如以上所討論,轉譯器19之前端係包含一解碼器單元191,其係將主題程式17目前所需區段加以解
碼以提供複數個主題碼區塊171a、171b、171c(每一主題碼區塊通常包含主題碼之一個基本區塊),以及亦可提供與每一主題區塊及當中所含主題指令相關之編碼器資訊172,其能夠協助轉譯器19之後續操作。在一些實施例中,轉譯器19之內核192內之一IR單元由所解碼之主題指令來產生一中間再表示法(IR),並且與此中間再表示法有關之最佳化乃適時地實施。身為轉譯器19後端部分的一編碼器193係產生(種植)可被目標處理器13執行之目標碼21。在這個過分簡化之範例中,係產生了三個目標碼區塊211a至211c以於目標系統10上實施工作,這同等於在主題系統1上執行主題碼171a至171c。此外,編碼器193可為所有或部分的目標碼區塊211a至211c產生控制碼212,其乃實施如設定目標區塊將操作之環境、以及傳送控制回至適宜的轉譯器19…等功能。
在一些範例實施例中,轉譯器19更安排用來確認主題碼17內之系統呼叫。如先前所討論,目標系統10可使用一個不同的目標操作系統20以及一個不同之目標ISA,並因而具有與相較主題ISA不同的系統呼叫組。在此,於轉譯之階段中,解碼器191係安排用來偵測主題ISA之系統呼叫,在主題ISA中,主題碼17係呼叫主題操作系統2。多數現今的操作系統係提供坐落於正常的使用者階級程式以及操作系統之剩餘部份兩者之間的程式庫,通常是C程式庫(libc),譬如是glibc或MS LibC。此C程式庫係處理傳輸資訊至操作系統2之核心的低階細節,並轉換
至一較優先之監視模式,以及任何毋須於該優先模式內完成之資料處理或準備。在POSIX或類似系統上,一些流行的範例系統呼叫是開放(open)
、讀取(read)
、寫入(write)
、關閉(close)
、等待(wait)
、執行(execve)
、叉接(fork),
以及殺(kill)
。許多現今的操作系統具有數百個系統呼叫。舉例而言,Linux幾乎具有300個不同之系統呼叫,以及FreeBSD則約有330個。更者,在一些情況中,較合意的情況是維持目標碼之控制,而不將執行控制由目標碼21直接傳輸至目標OS 20。在這些範例實施例中,於主題碼17內所確認之至少部分的系統呼叫會導致目標碼21產生,這至少部分的系統呼叫乃包含呼叫回轉譯器19之函數呼叫,在此並將其定名為「x_呼叫(x_calls)」。這些x_呼叫對於目標碼21係表現為仿彿一系統呼叫曾對目標OS 20產生一樣,但實際上則將執行控制由目標碼21回傳至轉譯器19。在此範例實施例中,轉譯器19係包含一目標OS介面單元(亦稱作一「熔線(FUSE)」)194,其乃使用這類的X一呼叫而從目標碼21被呼叫。此FUSE 194乃對x_呼叫作回應,包含實施針對適當的目標OS 20之實際系統呼叫,以及繼而返回目標碼21。因此,轉譯器19係有效地擷取目標碼21所產生之系統呼叫,以及有機會監控以及控制目標碼21所需要的系統呼叫,同時間目標碼21仍如同系統呼叫曾被產生至目標OS 20般來行動。
亦如同第2圖所示,在一些範例實施例中,轉譯器19係安排用來選擇性的擷取目標碼21於執行期間所提起的
例外訊號。轉譯器19係包含一或更多個例外處置器(exception handlers)195,其乃由目標OS記錄以接收目標碼21之執行所提起之例外訊號當中之至少一些類型。例外處置器195因而能夠選擇性地介入適宜處置例外的地方並且提醒轉譯器一特定的例外已經被提起。在此,例外處置器195要不是處置例外並繼續適當的執行(譬如返回目標碼21),或就是決定將例外訊號傳送至一個譬如是在目標OS 20內之適當的本體例外處置器。在一實施例中,轉譯器19係提供一委託訊號處置器(proxy signal handler)(未顯示),該委託訊號處置器係接收經選擇之例外訊號,並傳送所接收之例外訊號當中特定者以使其能被適當的例外處置器195來處置。
第3圖係顯示本發明所提供之一程式碼轉換系統之一實施例之示意圖。
首先,為說明及簡單解釋起見,第3圖係顯示一多處理器主題計算系統1,其具有複數個處理器3a、3b,這些處理器3a、3b係執行主題碼170a、170b之不同部分(SC1及SC2)以及存取一記憶體子系統(memory subsystem;MS)8所儲存之資料。
更普遍而言,於處理器3a、3b上所執行之主題碼部分170a、170b係藉由參考一位址空間(VAS)81而存取實體記憶體8,該位址空間81係將主題碼17a及17b內所被參考之記憶體存取位址加以映射至記憶體子系統8內之實體記憶體位址。在此乃使用「虛擬位址空間」這個名詞
以將程式碼的位址空間與實體定址(physical addressing)加以區隔。
在一些環境中,第一及第二主題碼部分170a、170b兩者皆被用來存取實體記憶體8之相同區域。在第3圖所顯示之範例情況中,一譬如為記憶體8之一頁面之一區域乃使用主題碼部分170a、170b來映射至虛擬位址空間81之內。在其他情況中,一明確共享記憶體區域(explicitly shared memory area)係被映射至兩個不同的虛擬位址空間。
如之前所討論,主題計算架構1之一記憶體一致性模型係將記憶體存取,以及處理器3a、3b及記憶體子系統8關於主題碼17之原始程式命令之記憶體存取的可再排序之程度,定義出語義。在此範例中,主題架構1係具有相當強烈的排序束縛。這意味著,主題記憶體一致性模型可能定義著連續儲存和連續載入係被排序的,但是一個接續一載入之儲存或是一個接續一儲存之載入,相較該程式次序而言,可能為被再排序的。此範例主題架構中之記憶體一致性模型可利用以下之表格1來簡單地概述。
主題碼17係仰賴記憶體一致性模型以能正確地行使功能。實際上,主題碼通常被寫入或被除錯到在現今可利用之主題硬體上能夠工作之點。然而,在目標計算系統10上將主題碼17實行為主題計算系統1之不同版本,或是將主題碼17轉換以於一全然不同的目標計算系統10上運作,會顯現出主題碼當中的弱點。在此,有眾多的多處理器實用範例,這些實用範例乃運用了放鬆記憶體一致性(relaxed memory consistency)之種種不同型式,包含Alpha、AMD64、IA64、PA—RISC、POWER、SPARC、x86以及xSeries(IBM 360、370以及390)等等。
如第3圖所示,於目標計算系統10上的轉譯器單元(TU)19係將主題碼17轉換成目標碼21,以於多個目標處理器13a及13b上參考目標系統之實體記憶體18來執行。在此範例中,目標計算系統10乃具有一個記憶體一致型模型,該記憶體一致性模型乃具有與主題系統1相比較弱、較放鬆之束縛。舉例而言,目標記憶體一致性模型可能規定沒有任何的命令,並且目標記憶體一致性模型允許載入與儲存能夠在維持程式語義之同時被自由地加以記錄,如同以下表格2所概述。
如本領域技術者所熟悉的是,記憶體子系統18可包含種種不同設計來增加記憶體之存取速率的快取結構(cache structures)(未顯示)。記憶體子系統18可包括兩個或更多個實體記憶體階級,包含使用晶片上或晶片外靜態RAM而提供之快取線(cache lines)、一位於動態RAM內之主記憶體,以及一個大容量之磁碟儲存…等等,這些實體記憶體階級乃由記憶體子系統根據主題計算系統之架構來管理。有許多機制用來保護快取一致性(或定名為快取相干性(chche coherency))以確保快取結構保持一致,但是這些機制並沒有特別與這些所考慮的範例相關,在此並不做進一步的討論。
現在將提供一簡化範例以說明一些記憶體一致性錯誤可能浮現於目標計算系統10內之方法,在此範例中,兩個記憶體位置(*
area1,*
area2)係被存取。這些位置係假定為在不同記憶體頁面上,以確保其不會位於目標記憶體子系統18之快取結構內的相同快取線上,以及用以增加因脫序而讀取記憶體18之機率。一開始,我們把儲存於這些位置內之數值定義為*
area1=0以及*
area2=0。第一處
理器13a係執行一目標碼21a之第一部分,其乃監控*
area2所儲存之數值,以及繼而根據*
area1之數值來設定一變數「a」,如以下之虛擬碼(pseudocode)所說明:
while(*
area2==0){}
int a=*
area1
第二處理器13b係執行目標碼21b之一第二部分,其乃包含修改兩個記憶體位置所儲存數值之指令:*
area1=1*
area2=1
直觀地,我們希望現在變數「a」應該設定為數值「1」。固然,在一強烈連續排序之一致系統內,這會是肯定的。然而,可能產生一個記憶體一致性錯誤而導致變數「a」反而被設定為「0」。這個錯誤可能會由於兩個典型的原因而產生。第一,放鬆的儲存命令可能允許第二儲存(*
area2=1)在第一儲存(*
area=1)之前到達記憶體。第二,放鬆的載入命令允許載入能夠被雜亂地發佈於第一處理器13a內之指令導管(instruction pipeline)內,包含一被推測地實行的載入。在此情況中,當第一處理器13a等待*
area2作出改變之同時,*
area1之數值已經被推測地載入,並且一旦測試成功就將不會被重新載入。這意謂即使來
自第二處理器13b之儲存正被排序,第一處理器13a仍以不同之順序來讀取經更新後的數值。
多數的多處理器系統係提供一個安全網(safty net),此安全網係使得程式碼能夠推翻硬體之放鬆記憶體一致性模型並且強制實施較強烈的命令束縛,因而提供了一種對記憶體一致性錯誤的保護措施。這樣一個安全網機制於目標碼21a、21b內乃使用串列指令而形成適當的同步點,並且同時另一個這樣的安全網則藉由設定一頁面表格之屬性來防衛記憶體之特定區域。這些和其他一致性保護機制可以單獨地利用,或組合運用,以下將更作詳細討論。
首先考慮串列指令之使用,一種廣泛可利用之型式係一柵欄指令(fence instruction)。柵欄指令係形成一記憶體障礙,而將程式指令切割成柵欄前的程式指令以及柵欄後的程式指令。柵欄前之指令所造成的記憶體存取相較柵欄後的指令所造成的記憶體存取乃優先地執行。因此,對於獲得記憶體一致性方面柵欄是有其功用的,然而這卻招致了重大性能表現之不利結果。IBM POWER指令組架構(Instruction Set Architecture)內之指令SYNC係一柵欄指令之首要範例。柵欄指令之其餘特定變化在POWER ISA內亦可利用,譬如是一輕型同步(Lightweight synchronisation;LWSYNC)指令或I/O之強制循序執行(Enforce In—order Execution ofI/O;EIEIO)指令。其餘範例係包含來自Alpha ISA之MB及MBW、來自x86 ISA之MFENCE以及SPARC ISA之MEMBAR。
一些ISA亦提供一或更多個串列指令,其係將一特定處理器內指令之執行進行同步化。這意味著,指令同步化導致處理器在同步化之前就完成所有指令之執行,以及拋棄在可能已開始執行之同步化後的任何指令結果。當指令同步化執行之後,程式內的接續指令可能繼而開始執行。在此,IBM POWER指令組架構(Instruction Set Architecture)內之指令ISYNC乃一個用來執行這樣的指令同步化之首要範例指令。
這些串列指令係插入於目標碼之內以主張一個與目標機器之內定記憶體一致性模型不同之記憶體一致性模型。將這些串列指令插入於以上所討論的範例虛擬碼內將會造成經修改的目標碼21a及21b,如以下所述。
對於第一處理器13a而言,串列指令ISYNC係被插入(由於表格1所指明之載入一載入命令),因而使得目標碼21a變成:
while(*
area2==0){}
isync
int a=*
area1
對於第二處理器13b而言,串列指令SYNC係被插入,因而使得目標碼2變成:*
area1=1
sync*
area2=1
現轉向討論另一個對記憶體一致性錯誤提供防護之機制,一些目標計算系統係容許頁面表格屬性之操縱。如一特定實施例,IBM POWER架構係允許記憶體18之特定區域能被設計為被快取抑制的(caching—inhibited)與防衛(guared)(以下稱為儲存一依序的)。如果不同的儲存指令存取記憶體中這樣的受保護區域,則儲存乃於程式碼所規定的命令內執行。便利的是,記憶體的一些頁面係標記為儲存一依序的,同時記憶體的其他頁面則不為儲存一依序的。儲存一依序的頁面可能用來主張一個與目標機器之內定記憶體一致性模型不同之記憶體一致性模型。然而,存取這樣的儲存一依序的頁面通常招致相較於存取非儲存依序的頁面的性能表現還要不利的結果。
本發明之範例實施例將於以下作詳細描述,以強調以上所概述的記憶體一致性問題,同時一道減少或避免與記憶體一致性保護機制相關聯之嚴重性能表現問題,譬如是串列指令及儲存一依序的頁面。
第4圖係一示意流程圖,其乃本發明所提供之一種用來保護多處理器計算架構內之記憶體一致性之實施例內所應用的方法之大體概觀,其中多處理器計算架構譬如是以上所討論之參考第3圖的目標計算系統10。
步驟401係包括於一第一記憶體一致性模型下執行至
少一第一目標碼部分21a。這意味著,於步驟401中,目標碼21a之至少一第一部分係在一個可應用至目標計算系統架構的第一內定記憶體一致性模型下,於目標計算系統10內執行。
步驟402係包括偵測一對一共享記憶體區域存取之要求,該共享記憶體區域可被第一目標碼部分21a與至少一個其他的第二程式碼部分21b所存取。這意味著,於步驟402中,轉譯器單元19係安排用來偵測一個對於記憶體18內之一共享記憶體區域的記憶體存取之要求,該記憶體18對於至少該第一及第二目標碼部分21a、21b兩者皆可存取(或將變為可存取)。許多不同機制皆可用來存取這樣的一個共享記憶體區域,在此乃考慮了種種不同的偵測機制,以下將作更詳細討論。
步驟403係包括施加一個記憶體一致性保護機制,第一目標碼部分21a之至少特定指令或至少特定指令群組會於存取受偵測之共像記憶體區域的時候,在一受保護之第二記憶體一致性模型下執行。在此,轉譯器單元19係選擇性地施加一個記憶體一致性保護機制,而導致第一目標碼部分21a內所選取的指令以一種不同於第一模型之第二記憶體一致性模型的實施方式來存取所確認之共享記憶體區域。特別的是,所保護之第二記憶體一致性模型係提供較第一模型還要強烈之排序限制,目的在於避免在此所注意到的記憶體一致性錯誤類型。接下來,當第二目標碼部分21b亦企圖存取此共享記憶體區域時,記憶體一致性保
護機制係被更選擇性地施加,因而使得第二程式碼部分21內之至少所選擇之指令現在亦能夠在與所偵測共享記憶體區域相關的受保護第二記憶體一致性模型下來實施。
在此範例實施例中,第一及第二目標碼部分21a、21b一開始並不根據第二記憶體一致性模性來被限制,反而一開始就於內定的第一模型下執行。這意味著,目標碼一開始係根據目標系統之高速內定記憶體一致性模型來產生並執行。藉由將記憶體一致性保護機制僅施加至對那些曾經被偵測為共享記憶體區域之記憶體區域進行存取的那些經確認目標碼指令,第二記憶體一致性模型之限制與束縛所招致的性能表現不利結果,相較於將增強的第二記憶體一致性模型更普遍地施加通過所有使用目標碼21之記憶體存取而言,實質上乃有所縮減。
第5圖係一顯示目標計算系統10所選取部份的示意圖,用以顯示本發明之範例實施例。在第5圖中,主題碼17係一多線程應用程式,而當其被轉譯至目標碼21時,乃執行為複數個目標碼部分(譬如是複數個線程)。三個這樣的目標碼部分21a至21c(T1、T2、T3)係顯示於以下來作說明。
主題碼17適合為一個被轉換至目標碼21以於目標系統10上受轉器器19支援而執行之應用程式。以普遍的範例而言,主題碼17係一複雜的程式,譬如是一網路伺服器、一數位內容伺服器(譬如是一串流聲音伺服器或串流影像伺服器)、一文字處理器、一試算表編輯器
(spreadsheet editor)、一畫面影像編輯工具,或一資料庫應用程式。目標計算系統10通常需要同時執行許多這樣的應用以及其他譬如與操作系統20與轉譯器19相關聯之任務。
在動態二進制轉譯(dynamic binary translation)之上下文中,主題碼17可能具有一種可二元執行之型式,其曾被產生(或被編譯)而特定於特別的主題架構1。因此,主題碼17之人為介入或檢越是不可能發生的。相反地,乃希望其能自動將主題碼17轉換成目標碼21(及目標二進制數)以能於目標計算系統10上執行。這裡所討論之機制,至少於部分的實施例中,允許這樣的一個轉換過程能夠自動地被實行,同時並保護記憶體一致性。
眾多商業上可利用之應用程式係執行為複數個程序及/或複數個程序線程。在此,雖然精確實行乃根據特定的計算架構而異,但是每一程序大體上皆具有一相當大量的狀態資訊(或普遍上定名為背景資料),以及具有自己的虛擬位址空間。相反的,一母程序(parent process)會造成一或更多個線程,而該一或多個線程通常共用母程序之虛擬位址空間。來自相同母程序之線程間的轉換典型上比程序間的背景轉換來得快,以及多線程是現今多處理器系統上流行的編程與執行模組。雖然「程序」與「線程」名詞對本領域技術嫻熟者乃廣泛地使用與了解,然而為清楚起見,此處之描述反而指的是程式碼之一「部分」。
如第5圖所示,除了以上已描述之單元外,範例實施
例之轉譯器19更包含一位址空間配置單元(address space allocation unit;ASAU)196、一共享記憶體偵測單元(Shared Memory Detection Unit;SMDU)197以及一記憶體保護單元(Memory Protection Unit;MPU)198。
ASAU 196係安排用來將複數個虛擬位址空間區域(virtual address space regions;VASR)分配給複數個目標碼部分21a、21b及21c。第二,ASAU 196乃安排用來偵測所產生之目標碼部分21a至21c,以存取複數個經分配之VASR 181當中不同者。
SMDU 197係安排用來偵測目標碼部分21a、21b、21c所產生之要求以存取一共享記憶體區域,其中的特定實施例將於以下討論,以及確認目標碼部分內之一或更多個目標碼指令,為其乃要求記憶體一致性保護。
MPU 198乃安排用來將記憶體一致性保護施加至SMDU 197所確認之經選取目標碼。在此具有較強烈的排序束縛的情況中,記憶體一致性保護係使得目標碼實施不同的記憶體一致性模型以維護記憶體一致性,並藉此維持主題碼17所要求之記憶體一致性模型。適當地,MPU 198選擇性地將串列指令施加至目標碼及/或選擇性地主張儲存一依序的頁面,以下將作詳細討論。
在第5圖之範例中,三個目標碼部分T1、T2、T3(21a至21c)當中每一個目標碼部分係連同一個別的虛擬位址空間區域181a至181c來顯示。更者,於第一實施例中,ASAU 196係對一與共享記憶體區域相關而使用之額
外VASR 181d加以分配。
在ASAU 196之一範例實施例中,目標計算系統10係提供數個不同的定位模型。最普遍可利用的計算系統係提供一個32位元的虛擬定位模型,以使得程式碼之一特定部分之虛擬位址空間能夠對實體記憶體18之232個個別元素(即位元、字元)加以定位。因此,許多商業上可利用的應用程式乃希望於32位元虛擬位址空間內運作。然而,一些計算系統亦容許較大的定位模型,譬如是64位元模型,其可替換使用或與較小的32位元地位模型並列使用。便利地,轉譯器單元19係設定為在64位元定位模型內運作並因此與一64位元之虛擬位址空間(以下稱為轉譯器虛擬位址空間或轉譯器VAS 180)一同被提供。位址空間配置單元196繼而對較大的64位元轉譯器VAS 180內的複數個不同的32位元虛擬位址空間區域(VASR)181進行分配。亦可利用其他的定位選擇,並以合適的組合來應用以達到相同的效果,譬如是一32位元轉譯器被細分以提供複數個24位元虛擬位址空間區域。
ASAU 196係更安排來將目標碼21之每一部分指示到VASR 181中一或更多的被選擇者。如以上對第2圖之所注意者,目標碼21a之每一部分係劃分成複數個區塊211,區塊211包括個別指令之一短序列以作為轉譯器19所處置之最小單元。這些指令當中一些係使得記憶體存取這類的載入或儲存,以及使得一特定目標碼部分21a內之多數指令存取關於分配至那個部分之VASR 181a的專用記憶
體。然而,特定指令或指令群組乃產生關於共享記憶體之記憶體存取,以及係被指示以對共享記憶體區域存取VASR 181d。
在一實施例中,目標碼21係被產生以於實施記憶體操作時參考一基本暫存器BR 15a。基本暫存器15a對多數架構而言是一個快速且輕易可利用的儲存位置,並且可在「基本加上偏移」類型之記憶體存取內有效地使用,然若適合,也可採用其餘適當的儲存。基本暫存器BR係方便地對於目標碼(即線程或程序)被提供成為部分背景資料。基本暫存器BR 15a係用來儲存一基本位址,而給予64位元轉譯器VAS 180之一起始位址為32位元VASR 181當中之一的起始位址,以供目標碼21之所產生部份來使用。目標碼21a、21b、21c之每一部分繼而由轉譯器19產生,用以產生參考基本暫存器BR 15a之起始位址的記憶體存取。
在第5圖所顯示之範例中,對目標碼部分21a而言,基本暫存器BR係包含64位元值「1<<32,232」,當中線程T1乃產生參考其分配後的第一(32位元)VASR 181的存取,並使其成為一相對此64位元基本值之偏移。類似地,對第二目標碼部分21a而言,基本暫存器BR係包含「1<<32,232」之值以作為第二32位元VASR 181b之64位元起始位址。
在此,範例主題碼17已經被產生以於一32位元之VAS內運作並因而僅與32位元位址有關。轉譯器19因而
產生參考32位元VASR 181之目標碼21a—21b之相關部分。然而,由於這些32位元的VASR 181從較大的64位元轉譯器VAS 180來被分配,因此目標碼當產生記憶體存取時會使用完整的64位元位址。這可方便地藉由將一參考32位元VASR 181之較低32位元位址與由基本暫存器BR 15a內所規定之一完整的64位元基礎位址相連接來達成。舉例而言,一目標暫存器r31係作為基本暫存器以保持64位元之基本位址,以及一目標暫存器r6係於目標碼內使用以保持一所欲的32位元位址。這些位置係被結合,如以下之虛擬程式碼(pseudo code)所說明:
R6=0×00003210;目標碼VASR內的一個32位元位址
R31=0×00000001 00000000;此VASR的一個64位元基本位址
add r3,r31,r6;將這些位址結合成r3
lwz r5,0(r3);使用r3內結合後的位址來存取記憶體
更者,ASAU 196乃安排用來指示目標碼部分21a內之特定指令去參考所分配的VASRs 181當中不同者。尤其是,與對共享記憶體之存取有關之特定指令係被指定至保留給共享記憶體區域之VASR 181d。
在一範例實行方式中,基本暫存器15a內之開始位址乃被修改,以使得目標碼21內之接續指令能繼而參考經分配的VASRs 181當中不同者。這意味著,儲存於基本暫
存器BR 15a內之基本位址被修改,以及被修改之基本位址繼而被目標碼之特定區塊內之一或更多個接續指令來運用,直到基本暫存器被設定為先前數值為止。在此,如以上之範例中所述,一開始於BR 15內給定之值是「1<<32,232
」,如同被分配給第一碼部分21a之VASR 181a之64位元的開始位址。於所示範例中,將基本位置暫時改變為「0」現在將導致目標碼指令反而去參考保留給共享記憶體區域之第四VASR 181d。將BR 15a回復成數值「1<<32,232
」將再導致目標碼21a去參考所分配之第一VASR 181a。
便利地,基本暫存器15a之內定基本位址對目標碼21a的這個部分乃設定為背景/狀態部分。因此,內定值係可從背景輕易地利用並且當需要時可以快速地設定至內定值,譬如是在每一目標碼區塊211之開始處。
在另一範例實行方式中,ASAU 196係安排用來選擇性地產生參考至少兩個基本暫存器15a、15b之目標碼指令,亦如第5圖所示。便利地,第一基本暫存器BR1係保持一個分配至目標碼21a至21c之目前部份之一基本位址。同時間,第二基本暫存器BR2係保持一個分配給共享記憶體區域之VASR 181d之基本位址。在此,目標碼指令係被產生以實施與第一基本暫存器BR1或第二基本暫存器BR2或兩者組合相關的記憶體存取。因此,產生目標碼21a之第一部分以僅參考第一基本暫存器BR1整個導致目標碼之這個部分能夠對於個別分配後的VASR 181a來單獨
地加以操作。然而,在目標碼指令反而參考暫存器BR2之基本位址處,目標碼繼而被指示來對暫存器BR2之共享位址存取VASR 181d。藉著選擇性地種植指向第一或第二基本暫存器BR1、BR2之參照,ASAU 196係安排用來控制哪一個VASR被目標碼存取。
SMDU 197係安排用來偵測目標碼21a、21b、21c之部分當中之一所產生之存取一共享記憶體區域之要求。第一,此要求可能具有將一明確共享記憶體區域進行起始化之型式,其會被其他的線程或程序所共享。第二,此要求具有一個與共享記憶體相關之內隱要求,譬如是對於已映射進入另一線程之該虛擬位址空間記憶體區域進行存取之要求。首先將會參照第6圖來討論對明確共享記憶體之偵測。接著,亦將參照第7圖來討論內隱共享記憶體之偵測。
如以上所討論,轉譯器19係安排用來監控以及擷取正執行之目標碼21所產生之系統呼叫。特別地,x_呼叫係提供來將執行控制傳送至轉譯器19內之FUSE 194,並藉此仿真記憶體映射系統呼叫,譬如是mmap()
。
如果x_呼叫與共享記憶體無關,則適當的情況是一系統呼叫產生給目標OS以產生所需之動作,譬如是將一專用的非共享頁面載入至被分配給目標碼之正執行部分的VASR 181。執行控制繼而經由FUSE 194來返回目標碼,以及目標碼彷彿從目標系統呼叫接收背景。
然而,在x_呼叫與共享記憶體相關的地方,乃藉由共
享記憶體偵測單元197來採取行動。在此,x_呼叫,或至少是由x_呼叫所推導得之資訊,係傳送至SMDU 197。舉一特定範例,目標操作系統20係支援記憶體映射系統,譬如是shmget
或mmap()
。舉一UNIX及LINUX類型之操作系統之特定範例,mmap()
系統典型上可具有mmap
(start
、length
、flags
、fd
、offset
)之型式,以要求將一由offest
偏移處開始的lengh
位元,從檔案描述者fd所規定之檔案或物件偏移,映射至位置start處的虛擬記憶體。對於一無名檔案而言,引數fd
為空(null)。引數prot
係描述所希望用來設定讀取及寫入保護之記憶體保護。參數flag
尤其包含將這個映射與其餘映射此物件的程序明確分享之程序旗標MAP_SHARED。或著,參數flags
係包含建立一專用白色上複製(copy—on white)之旗標MAP_PRIVATE。因此,mmap()
系統呼叫乃種植於目標碼之內而成為一同等的x_呼叫(譬如是x_mmap(
)),以及能夠明確地要求一專用記憶體區域,在這個情況中,一對應的mmap()
系統呼叫乃如上所注意而傳送至目標OS 20,或是明確地要求一記憶體區域,藉此SMDU 197乃採取行動。
第6圖係第5圖所示之目標計算系統之一較詳細的示意圖,用以說明SMDU 197所採取行動,此行動乃關於一個映射明確共享記憶體之要求。特別地,第6圖係轉譯器VAS 180之部分的示意再表示法。
在第6圖所示的這個範例中,目標碼21a目前執行的部份係一線程T1,該線程T1乃包含一x_mmap()
似系統之
函數呼叫,以要求一明確共享記憶體區域182a。然而,所要求之共享記憶體區域182a並不被映射至與特定線程T121a相關聯之虛擬位址空間區域181a之內。相反地,一個與所要求共享記憶體區域182a具有相同尺寸及偏移的記憶體區域182d係反而映射進入保留給共享記憶體之虛擬位址空間區域181d。一指向所要求共享記憶體區域之指標PTR係藉由FUSE 194來回傳給T1目標碼21a,如同一mmap()
系統呼叫所接續的期望行為。在此範例實施例中,一32位元之指標係回傳為32位元VASR 181當中之一起始位址。目標線程T1 21a之執行接著繼續進行,彷彿一線程已經授與一新的被映射共享記憶體區域一般。
選擇性地,SMDU 197係記錄由x_mmap()
呼叫推導得的所要求共享記憶體區域182a之細節。這意味著,SMDU係形成每一要求共享記憶體區域182之映射,其便利地包含每一共享記憶體之尺寸及位址,以及亦可將目標碼之特定部份確認為此區域之擁有者或起始者。此外,FUSE 194或/及SMDU 197係更新轉譯器19內所保持之主題區域,以反應新的被分配共享記憶體區域對於主題碼17之顯現方式。
由於當線程T1企圖存取一位於未被映射之共享記憶體區域182a內部的頁面時,所要求共享記憶體區域182a實際上並沒有被映射進入第一目標碼線程T1 21a之VASR 181以內,因此一例外(及一頁面錯誤)產生。此例外係如第2圖所示被例外處置器擷取並被傳送至SMDU 197,因
而能夠確認企圖存取明確共享記憶體區域182a之目標碼之區塊。
所確認之目標碼指令係回應於例外訊號,於是首先被指向保留給共享記憶體之VASR 181d,而記憶體一致性保護機制則被應用。
如以上所討論,ASAU 196係藉由改變程式碼以修改基本暫存器BR 15a之數值,或藉由修改程式碼以反而參照至第二基本暫存器BR2 15b,而將目標碼之區塊內之至少特定指令重新指向給共享VASR 181d之共享記憶體區域182d。VASR 181d內之共享記憶體區域係映射至實體記憶體,因而目標碼內之相關指令現在可獲得對於共享記憶體區域182之存取。
此範例實施例乃輕易地使一企圖之偵測能夠存取共享記憶體區域182,原因在於明確共享記憶體區域不被映射進入與正執行線程T1相關連之虛擬位址空間區域181之內。然而,藉由提供額外的虛擬位址空間區域181d以及將所選擇之目標碼指令重新指向前者,所欲共享記憶體區域182仍可被目標碼21之部分來讀取。
此外,以下將詳細討論,MPU 198係將記憶體一致性保護機制施加給所確認的目標碼指令。這意味著,記憶體一致性保護機制係選擇性地僅施加至目標碼21之那些企圖要存取一共享記憶體區域的區塊上而已,目的在於保持記憶體一致性。因此,非常少的指令會被影響。顯然地,此機制並不需要將昂貴的記憶體保護機制施加給整個程式
或至少整個線程。
再參考第5圖,須注意,對共享記憶體區域之VASR 181d,與目標碼T1、T2或T3之正執行部份當中任一者之虛擬位址空間區域,兩者並不相重疊。因此,任何第二或第三目標碼部分T2、T3所作以存取明確共享記憶體區域182之企圖一開始將失敗,原因在於明確共享記憶體區域未被映射至與該線程相關聯之個別VASR 181b或181c之內。再來,結果產生的例外訊號係為例外處置器195所處置並傳送給SMDU 197,這乃使得相關指令會去對保留給共享記憶體之VASR 181d進行存取,並使得記憶體一致性機制會被施加至保留給共享記憶體之VASR 181d。因此,企圖存取明確共享記憶體區域之目標碼指令係經由例外處置器195及SMDU 197而被偵測,適當的行動並被採取。
第7圖係第5圖所示之目標計算系統的較詳細示意圖,用以說明SMDU 197所採取之關於內隱共享記憶體的行動。特別地,第7圖係顯示於起始化目標碼之一新部分的期間內,轉譯器VAS 180之部分之示意再表示法,譬如是一新的線程,用以說明於一新的目標碼部分開始之時一內隱共享記憶體區域被初始化時的保護記憶體一致性的機制。特別的,第7圖係與LINUX類型的操作系統內之系統呼叫有關,譬如是clone()
。在此,正常的系統回應乃是要建立一個子線程,該子線程係於相同之共享虛擬位址空間內與母程序一同運作,在此共享虛擬位址空間內,子線程係包含一來自母程序之背景資訊之主題。因此,一個由clone()
系統所建立之新線程將內定為佔據相同的虛擬位址空間,並因此與一母程序分享記憶體。然而,範例實施例之回應係與正常反應相異,以下將描述之。
如第7A圖所示,在這個範例中,一第一線程T1係正於第一VASR 181之內執行並映射至至少一個記憶體區域182a而對這個程序成為專用。在此,所映射區域182a典型上係包含全域資料(Global data)、起始堆積記憶體(initial heap memory)以及選擇性額外堆積記憶體(optionally additionally heap memory)。當第一線程T1實施一clone()
系統呼叫(便利地種植為一個x_呼叫)時,一個新的線程係使用第5圖之ASAU 196而被分配給一個不同的VASR。在此範例中,被新的線程T2 21b所參照的基本暫存器15a係包含數值「2<<32」以使線程T2指向第二VASR 181b。由於兩個線程T1及T2現在是被分配給不同的VASRs,先前被線程所映射進入的記憶體182a將不會被映射進入與線程T2相關聯之虛擬位址空間區域181b,如第7B圖所示。因此,於與線程T2相關連之第二VASR 181b內,一具有與VASR 181a之專用被映射區域182a相對應之尺寸與偏移的同等區域182b維持為不被映射。
如第7B圖所示,在此位置,線程T1係繼續存取專用記憶體區域182a,而線程T1之目標碼21a之位址不作任何改變。此與以上參考第5及6圖之討論中處置明確共享記憶體之機制乃有所差異。雖然線程T1 21a能可以存取潛在的共享記憶體區域182a,但如果線程T2 21b企圖於
存取位於其本身的VASR 181b的對應區域182b,相關頁面不被映射進入,以及一例外將會產生。
例外訊號被傳送至SMDU 197,而SMDU 197與例外處置器195係共同運作以處置此例外。第一,線程T1被打斷,原因在於T1擁有第二線程T2所企圖存取之被映射進入記憶體區域182a。在此,所有來自線程T1而對於相關記憶體區域182a之準備中的存取係完成。第二,如第7c圖所示,一具有相同尺寸與偏移之對應的記憶體區域182d現在被映射進入共享VASR 181d中,因而區域182上的第一線程T1所參考的實體記憶體內的資料現在反而在共享區域182d上可利用。一被指出錯誤的單一頁面可能被複製至共享記憶體區域182d,或是整個相關的記憶體區域182a可被複製。藉著使用munmap()
或藉著將區域標記為受保護的,曾被複製的共享區域182a現於第一線程T1 21a之虛擬位址空間區域181內被解映射,因而使得線程T1不再存取區域182a。
T1繼而對T2通知說重新嚐試存取共享區域181d內之新建立的記憶體區域182d是安全的。T1繼續正常執行。T2現在重新嘗試被指出錯誤的記憶體存取,這次則藉由存取共享記憶體區域181d以及使用適當施加的記憶體一致性保護而繼續執行。
如第7c圖所示,如果目標碼部分T1或T2再度循序地存取共享區域182(現在在他們的專用VASR 181、182內為不可存取的/不被映射的),則一例外將產生,以及記
憶體存取將反而通過例外處置器195來完成,用以在MPU 198所施加之適當記憶體一至性保護下存取共享位址區域182d。
此機制之結果是,目標碼部分T1及T2內之適當指令乃指向共享虛擬位址空間區域181d以獲得對共享資料區域182d之存取,以及第二記憶體一致性模型之較強束縛僅僅為了企圖存取共享資料區域182d之目標碼的那些部分而來施加。
現在,程序係伴隨線程T1及T2平行執行來繼續進行。在這些線程當中之一,譬如是第二線程T2,乃企圖存取一曾被另一線程,譬如是於第一線程T1所映射進入之記憶體之一區域的每一時間時,一例外將會發生並被處置,以將相關區域或來自擁有者線程T1之頁面移動至共享VASR 181d內,並將記憶體一致性保護機制選擇性地施加至目標碼之區域。任何繼而企圖存取目前共享記憶體區域的其餘線程可能導致一例外,以及那個線程內的相關程式碼可能被指向而接受記憶體一致性保護。因此,此機制乃施加至程式碼之任何數量的部分(線程T1、T2、T2等等)。
另一可供選擇的機制乃使用一在許多Linux及UNIX種類操作系統內可利用的再映射系統呼叫。在此,一MREMAP系統呼叫係允許目標系統10所使用的頁面表格可作改變以控制對記憶體18之存取。藉由改變頁面表格,一記憶體頁面映射進入虛擬位址空間180之一新位置,
並因此重新直接由第一VASR 181a移動至第二VASR 181b。以正執行之使用者空間線程的觀點,重新映射乃自動地發生,第一線程T1因而不需要被擷取或被通知。
第7D圖係轉譯器VAS 180之另一圖式,其顯示複數個位址空間區域181,並且在此為便於說明起見,VASR 181在其個別的基本位置上對準。此外,第7圖顯示一由SMDU 197所保持的VASR映射199,其記錄位於VASRs 181當中每一者的被映射區域。在此範例實施例中,VASR全部皆具有相同的32位元尺寸,以及單一的32位元映射係便利地記錄位於每一VASR內的被映射記憶體區域。因此,即使專用映射區域一開始位居目標碼部分當中之一的VASR之內,內隱共享記憶體可藉由查閱映射199而被輕易地偵測,以決定一特定VASR內之所要求32位元位址已經被映射至另一VASR之對應位置。相回應地,第7B及7C圖所顯示的行動僅針對存取所偵測之共享記憶體區域之目標碼來實施。
在此所討論的範例實施例對於目標碼部分21a至21c當中每一目標碼部分而言,僅恰擁有一個VASR 181。然而,其餘實施例亦有可能,而被考量為所描述範例實施例之變型。舉例而言,可提供一個以上之共享區域。在一替代實施例中,每一目標碼部分21a至21c係與一個僅維持專用記憶體區域的對應專用VASR,以及一個用來維持共享記憶體區域及一或更多關用記憶體區域之個別共享記憶體區域相關聯。在此,供複數個目標碼部分所使用之多個
VASR仍容許共享記憶體,特別是內隱共享記憶體,已經能夠輕易被SMDU 197偵測。
第8圖係更詳細顯示記憶體一致性保護之範例實施例。
第8圖之範例係顯示一主題碼區塊171以及一對應的目標碼區塊211。在目標碼區塊211執行期間內的某一點上,一與一共享記憶體區域相關的例外係發生,並如同以上所討論,例外處置器195係連同ASAU 195、SMDU 197以及MPU 198來採取行動以保護記憶體一致性。在第8圖之範例中,例外之發生與這個區塊執行期間半途中之指令相關,因此區塊211曾被對分以作說明,其中上半部代表曾被執行的指令,而下半部則尚未開始執行。在此,記憶體保護機制一開始企圖完成目前區塊211之執行,以及開始採取措施以保護記憶體一致性。之後,在一適當的設定狀態達到時,即對目標碼產生長期性的改變,譬如是重新產生整個區塊211,目標是要避免這個區塊於未來執行中發生例外。
首先注意記憶體一致性保護機制所採取之中間措施,種種不同之範例實施例將作描述。
在一範例實施例中(標記為第8圖中的?),目標碼21係產生以包含適當之同步化位置上的空操作,譬如是介於每一對儲存之間。這些空操作,譬如是IBM POWER ISA內之NOP指令,除了使處理器不對一特定數目之時脈週期作任何事外,並無其餘作用,因此方便作為位置保存器
(placeholders)。這些空操作現在乃被主動串列指令(譬如SYNC及ISYNC)取代,以將記憶體一致性安全網施加至目標碼。此外,程式碼被修改以參考以上討論之共享VASR 181d。此實施例因而至少部分地對準備好將來執行之區塊211之未執行部份進行修改。
在另一實施例中(標記為第8圖中的?),目標碼區塊的執行乃通過一主題對目標直譯器STInt 200來完成,該主題對目標直譯器STInt 200係位居於MPU之內部或是與MPU相關聯。這意味著,執行之完成乃是藉由通過STInt 200而將對應的主題碼區塊171b之剩餘指令一個指令接著一個指令地擷取成同等的目標碼指令。在此,MPU 198使直譯器去施加串列指令以形成適當的同步化點(譬如是插入載入或儲存後之SYNC及ISYNC)。然而,此實施例係假定一適當的主題碼是可利用的,以通過STInt 200來開始執行。
在另一實施例中,目標區塊之至少未被執行部份被馬上再度產生以插入串列指令。這意味著,目標碼區塊211之剩餘部份係使用一修改之版本來取代,其中串列指令插入於所決定的同步化點的位置。再者,此實施例係將一適當的主題碼假定為可利用的,以使得所再度產生的目標碼能夠從一所知狀態再度往前移動。
於一適當主題狀態於執行發生處不可利用之地方,MPU 198乃適當地在目標碼內轉回至一所要求之主題狀態可達到之檢查點或復原點。一達成與例外相關之主題狀態
的範例係於以上所引用之WO2005/006106內作詳細討論。在此,檢查點係提供於譬如是一區塊之起點或終點或是位於一區塊內部之一所選擇之位置。MPU係尋求最後到達的檢查點,因此能夠於該檢查點的位置復原主題狀態。區塊目前係藉由從參考所復原主題狀態之檢查點開始往前行進而完成執行。
在進一步之細部改進中,MPU係往前轉至接續例外發生處之下一檢查點。在此,MPU係受一目標至目標直譯器Ttint 201之協助,其中該目標至目標直譯器Ttint 201係擷取區塊211內之已產生之目標碼並同時插入適當的串列指令以保護記憶體一致性,直到目標碼往前轉至下一檢查點為止。這種往前轉以復原主題狀態之機制乃於WO2006/1003395內討論。於一更細部之改進中,目標對目標直譯器TTInt 201於往前轉之操作中蒐集轉譯暗示,譬如是記錄被指出錯誤或不被指出錯誤之記憶體存取,用以改善爾後目標碼之區塊之再產生。便利地,這些轉譯暗示乃藉由一開始利用NOP空操作而產生目標碼,並繼而選擇性地利用轉譯暗示旗標來取代NOPs而被植入至目標碼內。
在處理好目標碼區塊211之中間需要後,轉譯器19現在將其注意力貢獻給區塊211。舉例而言,所有或部分的整個目標區塊211乃被重新產生,以包含通過整個區塊之串列指令(譬如SYNCs及ISYNCs)或保護區塊內部所選擇之指令群組。因此,當區塊於未來執行時,所再度產生
的目標碼係接受一與共享記憶體存取有關的記憶體一致性保護。從目標碼之再產生乃可採用目標碼之區塊先前化身的執行所蒐集得的轉譯暗示。藉由利用一個第8圖所示之再產生旗標以將區塊標記為需要再產生,則此再產生可以馬上實施或是延至稍後實施,譬如是當區塊211b接下來需要執行的時候。此再產生程序可以重複執行或採取數個操作。這意味著,記憶體一致性保護係於第一再產生後選擇性地施加至第一指令組,以及繼而被施加至一第二再產生內之第二指令組。在此,由先前一個或更多分身所蒐集而得之轉譯暗示可能用來協助再產生之最後重複動作。更者,再產生程序可能包含目標碼之二或多個基本區塊之組合,以形成一個具有一個以上的獨特進入點及/或一個以上之獨特離開點及或具有內部跳躍的群組區塊。在此,內嵌於在目標碼之轉譯暗示在允許轉譯器能夠形成一有效群組區塊之方面乃有所助益,其中該有效群組區塊已經考慮相關基本區塊之先前再產生並因而降低了群組區塊之再產生。
於實用的實行方式中,程式碼之一特定區段係可用來存取共享與專用記憶體兩者。如以上所討論,目標碼係原本產生為適於相關專用VASR 181a-c內之專用記憶體。如果程式碼繼而再轉譯為適於共享記憶體,則當其企圖存取專用記憶體時將,反而會導致一例外發生,原因在於專用記憶體並不被映射進入共享VASR 181d之內。因此一個選擇方法是將程式碼再度轉譯回適於專用記憶體之原始形式
。正被映射之記憶體頁面對於共享VASR 181d或專用VASR 181a至c之互斥天性係確保此情況之改變可以永遠被偵測到。
在處置例外與再轉譯相關區塊或程式碼區塊之過程中係有額外負擔(overhead)發生。在一些程式中,遭遇再轉譯之額外負擔乃相當稀有,因此成為最適宜的整體解決方法。然而,亦發現有一些範例牽涉到頻繁的再轉換,譬如是當程式碼之一區段於一程式碼內從不同之位置被呼叫。一個特定之實施例乃記憶體複製函數memcpy()
。在此,此機制乃更發展及改良以著重此問題。
如第8圖所示,轉譯器19係保留目標區塊211之不同版本。一第一版本211A係不具備一致性保護之原始版本,而根據目標系統所實施之再排序及其餘最佳化而快速地執行。在參考具有串列指令之共享VASR 181d之範例中,第二版本211B,則接受記憶體一致性保護,因而較為緩慢地執行。當程式執行期間接著遭遇到此區塊時,轉譯器目前可選擇性地執行第一或第二版本211A或211B。在一函數入口,可能施加一動態測試以決定正被存取之記憶體類型,即決定是專用還是共享,並繼而選取適當的版本。雖然這種解決方式降低了轉譯之額外負擔,然而執行此動態測試係存在執行的不利結果。
在另一改進方式中,轉譯器係執行一迴圈最佳化。在此,一迴圈係第一次執行並導致一記憶體例外,原因在於此迴圈內的一記憶體存取乃參考共享記憶體,因而使得未
來參考共享記憶體之執行較不可能被指出錯誤。提供一動態測試係導致迴圈內之程式碼專門存取專有記憶體或共享記憶體。此外,轉譯器可能企圖從迴圈舉起動態檢查並將其放置於迴圈前,從而進一步縮減執行的工作負載。
如另一動態檢查所呼叫程式碼之替代方式,另一個選擇乃將特殊化之程式碼進線(inline)於呼叫者之位置處。另一個選擇係把呼叫者特殊化至一特定函數。這意味著,一呼叫者係被特殊化來呼叫專用類型或共享類型之存取者函數,以分別存取專用或共享記憶體。舉例而言:
Caller>memcopy>memory
變成:
Caller1(private)>memcopy_private>private memory
Caller2(shared)>memcopy>shared memory
這些經特殊化之呼叫者亦更牽涉間接階層(即於一呼叫堆疊(call stack)上作為額外項目的封套函數(wrapper functions))。在此,要被存取的記憶體位址係由此呼叫者來決定,以及記憶體存取係僅被存取者函數使用(譬如是memcopy)。封套函數一開始乃設定為呼叫其後繼者(successor)之專用版本。因此,審查呼叫堆疊乃決定了需要特殊化之封套函數,以容許來自呼叫者位置之呼叫能夠接替。適當地,逐步的特殊化一次適應一個封套函數,由最接近存取者函數處來開始,直到每一階層已經被特殊化
成專用或共享版本為止。
第9圖係一提供記憶體一致性保護方法之一大體概述的示意流程圖,作為在此所討論之種種詳盡實施例的概述。
在步驟901中,第一及第二碼部分係於不同的虛擬位址空間區域內執行。舉例而言,第一及第二目標碼部分21a、21b係分別相對不同且不重疊的第一及第二虛擬位址空間區域181a及181b而執行。
步驟902係選擇性包括記錄虛擬位址空間區域181a、181b當中每一之被映射區域182a、182B。在此,每一被映射之記憶體區域的位址偏移與尺寸(位址範圍)係回應一記憶體映射動作而記錄於一記憶體映射199內,尤其譬如是一MMAP()
系統呼叫。
於步驟903中,此方法係包括偵測對一記憶體區域之存取要求,該記憶體區域係於目前正執行之碼部分相關聯之位址空間內被解映射,但於此複數個位址空間當中之另一位址空間內被映射。在此,對應之記憶體區域要不是於與另一正執行碼部分相關聯之位址空間(即另一線程)內或就是於一個保留給共享記憶體之不同位址空間內被映射。在任一情況中,目前正執行之碼部分所產生之存取要求會造成一例外,以及回應於記憶體之例外,其乃決定目前正執行之程式碼部分企圖存取一共享記憶體區域。
於步驟904中,此方法包括修改目前正執行之程式碼以施加一記憶體一致性保護機制,這造成程式碼會於一具
有既定束縛之記憶體一致性下執行。此外,目前被執行的程式碼被修改以指向保留給共享記憶體之位址空間內的既定共享記憶體區域。
最後,於步驟905中,當中共享記憶體區域尚未存在於保留給共享記憶體之位址空間之內,共享記憶體區域係被移進這樣的位址空間內並且被解映射,否則就是至少在與目前碼部分相關聯之位址空間以內受到保護。
考慮對一新的正執行碼部分進行起始化之機制,譬如是以上所討論的CLONE()
系統呼叫,將能明瞭的是,步驟901可更包含偵測這樣的一個對一新執行碼部分起始化之企圖,為新的正執行碼部分配置一個不同之位址空間,並繼而於新配置的不同位址空間內執行新的位址碼部分。
將能明瞭的是,第9圖所示步驟不需要採用所示之連續次序來實施。在一特定之實施例中,將能明瞭的是,在每一位址空間內記錄所映射區域之步驟902可以在記憶體之每一新區域被映射至一特定之位址空間的時候來動態地實施,而記憶體之每一新區域被映射至一特定之位址空間內係可能先於、平行於或後於在不同位址空間內分別執行複數個碼部分來發生。更者,步驟904及905可能被選擇性地預定實施,因而使得目標碼首先被產生,其上並施加有記憶體一致性保護機制。這些替代實施方式可能依靠轉譯器19內之設定而定。於轉譯器所預測的地方,如同主題碼17之轉換結果,這樣選擇性的實施方式可能對於程式碼之一特定區段有所利益,繼而記憶體一致性保護機制
被施加至所產生之目標碼21上。
可進一步明瞭的是,以上所討論之機制乃不設限於單一應用程式碼內所操作的程序或線程,而亦可應用至目標計算系統上同時操作之一組或一套程式。這意味著,兩或更多個程式(任務)可能根據先前所討論機制下共享記憶體的方式來一道操作。
第10圖係本發明所提供之一個於MPU 198內實行記憶體一致性保護之方法之另一實施例之示意流程圖。以上所詳細討論之記憶體一致性保護機制乃將串列指令施加至所產生之目標碼上。在一替代的安排方式中,係於目標計算系統之特定結構上採用一頁面旗標修改,以於記憶體18內建立儲存一依序的頁面。
在步驟1001中,複數個目標碼部分係分別於不同的虛擬位址空間區域內執行,這與以上所討論之實施例相似。於步驟1002中,此方法乃包括譬如藉由使用第7圖之VASR映射199,而對被映射至複數個位址空間當中每一位址空間內的記憶體區域進行紀錄。這些方法適合使用第5圖之ASAU 196根據先前所討論之方式來實施。
於步驟1003中,此方法乃包括偵測一要求以起始化一共享記憶體區域。在一特別實施例中,這個要求係一記憶體映射系統呼叫,譬如是明確要求共享記憶體之mmap()
。在另一範例中,當一子線程企圖存取一不於其本身之位址空間內解映射但於一母線程之位址空間內被映射的區域時,一例外乃被提起,其中該子線程已經藉由一clone()
系統呼叫來產生。適當地,如以上所討論,SMDU 197之偵測機制被加以採用。
於步驟1004中,所偵測之共享記憶體區域的一個或多個頁面係藉由使用MPU 198來操縱頁面表格屬性來被標記,因而使得對這些頁面之存取被強迫為依附於第二非內定記憶體一致性模型。舉一特定之範例,以PowerPC為主的系統硬體之實施係調整以允許相關頁面能標記為需要連續一致性。
此實施例之優勢在於不需要求共享記憶體區域182必須移動至一不同的位址空間區域181。相反地,共享記憶體區域182係映射至要求對共享記憶體區域182存取之每一目標碼部分21a、21b、21c之VASR 181a、181b、181c以內。任何存取此共享區域之程式碼將以一種儲存一排序之方式來如此做,因而所欲的記憶體一致性模型可被施行。更者,目標碼係對不具有一頁面錯誤的共享記憶體區域182來進行存取,因而避免了對目標碼之修改。
第11圖係一個包含轉譯器VAS 180之目標計算系統之部分示意圖,用以進一步說明一個與儲存一依序的頁面有關之範例實施例,連同一個將虛擬位址空間180映射至實體記憶體子系統18之頁面表格PT。
於第11A圖中,第一碼部分T1 21a係包含一mmap()
類型的系統呼叫,該系統呼叫乃明確地要求共享記憶體,譬如是檔案備份之mmap_shared記憶體。轉譯器單元19內之FUSE 194係擷取系統呼叫,以及如果頁面尚未標記
為儲存一依序的,則令該區域之快取線(cache lines)無效,以及將該頁面於頁面表格PT 183內標示為儲存一依序的。此檔案繼而被映射至第一碼部分T1 21a之VASR內而成為一共享記憶體區域182a。
如第11B圖所示,其中一第二目標碼部分21b目前企圖存取共享記憶體區域182a,一例外因為共享記憶體目前於相關VASA 182b內不被映射而被提起。相回應地,SMDU 197現在亦將共享記憶體182b映射至第二VASR 181之內,並且在第二VASR 181尚未如此標記時,藉由操縱頁面表格之屬性而將相關記憶體頁面標記為儲存一依序的。
第11B圖係顯示若一clone()
系統呼叫發生時的系統回應。碼區域21b內之新線程乃配置為一分離且不同的VASR 181b,該VASR 181b乃不與母程序21a之VASR 181相重疊。在此範例中,第一碼部分21a之第一VASR 181a之一先前專用記憶體區域182a現在會變成共享的。即使記憶體182a之特定區域將會已經映射於VASR 181a母程序之內,這些特定區域對於新仿製的線程而言仍維持為未被映射的。如果第二碼部分21b現在企圖存取一在本身的VASR 181b內不被解映射但在母程序21a內之VASR 181a內之對應區域182a處被映射之記憶體區域182b,則子線程T2 21b將造成一個例外發生。SMDU 197將所欲檔案映射至子線程之VASR內,以將共享記憶體區域182b映射進入至這些VASR 181a、182b兩者內的相同的相對位
置,以將目標碼21a、21b之兩部份存取提供給實體記憶體之相同頁面。在此情況中,先前專用但目前內隱共享之記憶體區域182乃於頁面表格PT183內被標示為儲存依序的。
以上所討論之範例實施係關於程式碼轉換系統之程式碼的加速、仿真或轉譯。此外,在此討論之機制可應用至一除錯工具,該除錯工具係對容易產生記憶體一致性錯誤之程式碼加以偵測並選擇性地修正。於共享記憶體多處理器架構中難以發現、孤立及修正設計程式或錯誤。未偵測到之錯誤會導致不適當的操作,而通常導致系統失誤並且延遲新的軟體發佈或甚至需要日後發佈軟體更新。為此目的,此處之控制器/轉譯器係組態成除錯工具來運作,以偵測共享記憶體區域並對主題碼施加適當的程式碼修正,譬如是插入串列指令或修改頁面表格屬性,因而使得所產生之目標碼能被除錯。
雖然在此顯示及描述少數的範例實施例,然而對本領域技術嫺熟者所能知悉的是,可能產生種種不同之變化及修改而不悖離所附加實施例所定義之本發明範疇。
須注意,所有與本份說明書並存或先前歸檔之論文或文件,其乃與本申請案相連結並且與這份說明書一同公開給大眾檢閱,以及所有這類論文或文件之內容在此係納作參考文件。
此份說明書(包含任何附加申請專利範圍、摘要及圖式)內所揭露之所有特徵,或是所揭露之方法或程序之所
有步驟,可利用任何組合形式來結合,除非是於組合當中至少一些的這類特徵及/或步驟彼此互斥。
此份說明書(包含任何附加申請專利範圍、摘要及圖式)內所揭露之每一特徵係可以利用任何提供相同或同等或類似用途之替代特徵來取代,除非明確地陳述不然。因此,除非明確地陳述不然,每一所揭露之特徵僅為同等或類似特徵之一般序列的一個範例而已。
本發明並不設限於前述之實施例之細節。本發明可延伸至本份說明書(包含任何附加申請專利範圍、摘要及圖式)所揭露特徵之任何新穎者或新穎組合,或是所揭露之方法或程序之步驟之任何新穎者或新穎組合。
1‧‧‧主題計算系統
2‧‧‧主題操作系統
3‧‧‧主題處理器
3a,3b‧‧‧處理器
5‧‧‧主題暫存器
8‧‧‧主題記憶體/記憶體子系統/實體記憶體
10‧‧‧目標計算系統
13‧‧‧目標處理器
13a‧‧‧第一處理器
13b‧‧‧第二處理器
15‧‧‧目標暫存器
15a‧‧‧基本暫存器
15b‧‧‧基本暫存器
17‧‧‧主題碼/主題程式
170a、170b‧‧‧主題碼部分
171、171a、171b、171c‧‧‧主題碼區塊
172‧‧‧編碼器資訊
18‧‧‧記憶體
180‧‧‧轉譯器虛擬位址空間/轉譯器
181a、181b、181c、181d‧‧‧虛擬位址空間區域
182a、182b、182d‧‧‧記憶體區域
183‧‧‧頁面表格
19‧‧‧轉譯器/轉譯單元
191‧‧‧解碼器單元
192‧‧‧內核
193‧‧‧編碼器
194‧‧‧熔線
195‧‧‧例外處置器
196‧‧‧位址空間配置單元
197‧‧‧共享記憶體偵測單元
198‧‧‧記憶體保護單元
199‧‧‧映射
20‧‧‧目標操作系統
200‧‧‧主題對目標直譯器
201‧‧‧目標至目標直譯器
21‧‧‧目標碼
21a‧‧‧第一目標碼部分
21b‧‧‧第二目標碼部分
21c‧‧‧第三目標碼部分
211、211a、211b、211c‧‧‧目標碼區塊
211A‧‧‧第一版本
211B‧‧‧第二版本
212‧‧‧控制碼
27‧‧‧總體暫存器記憶庫/抽象暫存器記憶庫
28‧‧‧本體碼
81‧‧‧位址空間
根據本發明的各種特點、功能以及實施例,皆可以從上述詳細說明,並同時參考所附圖式而達較佳之瞭解,該等圖式係包含:第1圖係顯示應用本發明之實施例之一多處理器計算系統之方塊示意圖;第2圖係本發明實施例所運用之程式碼轉換程序之示意概要圖;第3圖係本發明實施例所運用之供一種多處理器計算系統用之一種程式碼轉換系統之示意概要圖;第4圖係顯示應用於本發明之範例實施例中的一種記憶體一致性保護方法之示意流程圖;
第5圖係顯示程式碼轉換系統之所選擇部分之細部方塊示意圖;第6圖係顯示虛擬位址佈局之部分示意圖;第7A至7D圖係顯示虛擬位址佈局之部分示意圖;第8圖顯示程式碼轉換系統之所選擇部分之細部方塊示意圖;第9圖係顯示應用於本發明之一範例實施例中的一種提供記憶體一致性保護方法之示意流程圖;第10圖係顯示應用於本發明之另一範例實施例中的一種提供記憶體一致性保護方法之示意流程圖;以及第11A及11B圖係顯示程式碼轉換系統之所選擇部分之細部方塊示意圖。
1‧‧‧主題計算系統
3a、3b‧‧‧處理器
8‧‧‧主題記憶體
10‧‧‧放電燈
13a、13b‧‧‧目標處理器
18‧‧‧記憶體
19‧‧‧轉譯單元
21a、21b‧‧‧目標碼
81‧‧‧位址空間
170a、170b‧‧‧主題碼
181a、181b‧‧‧虛擬位址空間區域
Claims (54)
- 一種多處理器計算系統,包括:一記憶體,其具有複數個目標碼部分儲存其中,包含至少一第一目標碼部分及一第二目標碼部分;複數個處理器,安排用來執行該記憶體中所儲存之該複數個目標碼部分;以及一控制器單元,安排用來控制該複數個處理器對該複數個目標碼部分之執行,其中該控制器單元包括:一位址空間配置單元,安排用來切割一用來定址該記憶體的虛擬位址空間成複數個虛擬位址空間區域,以及用來控制該複數個目標碼部分之執行,以一開始根據一第一記憶體一致性模型來透過該複數個虛擬位址空間區域而存取該記憶體;一共享記憶體偵測單元,安排用來偵測一記憶體存取要求,該記憶體存取要求係於該第一目標碼部分之執行當中對於該記憶體內之一共享記憶體區域所產生,該記憶體內之該共享記憶體區域亦可藉由至少該第二目標碼部分來加以存取,以及用來確認該第一目標碼部分內之至少一存取該共享記憶體區域之指令群組;一記憶體保護單元,安排用來以回應於該共享記憶體偵測單元確認該被確認的一指令群組,選擇性地施行一記憶體一致性保護,以相關於該第一目標碼部分內之該被確認的指令群組之執行對該共享記憶體區 域之存取實施一第二記憶體一致性模型。
- 如申請專利範圍第1項所述之多處理器計算系統,其中該控制器單元係安排用來產生該第一及第二目標碼部分,以於第一記憶體一致性模型下執行來排序該記憶體之存取;以及該記憶體保護單元係安排用來選擇性地施行該記憶體一致性保護,藉以令該第一目標碼部分內之該等被確認之指令群組於存取該共享記憶體區域時於該第二記憶體一致性模型下執行。
- 如申請專利範圍第2項所述之多處理器計算系統,其中該第二記憶體一致性模型相較於該第一記憶體一致性模型具有較強的記憶體存取排序限制。
- 如申請專利範圍第2項所述之多處理器計算系統,其中該第一記憶體一致性模型係該多處理器計算系統之一內定記憶體一致性模型。
- 如申請專利範圍第2項所述之多處理器計算系統,其中該控制單元係安排用來將複數個主題碼部分轉譯為複數個目標碼部份,以及該第二記憶體一致性模型係一個被決定成適合於一個別主題計算架構上執行該主題碼部分之記憶體一致性模型。
- 如申請專利範圍第1項所述之多處理器計算系統,其中該位址空間配置單元係安排用來將該複數個虛擬位址空間區域之一第一虛擬位址空間區域配置成執行該第一目 標碼部分,以及安排用來將該複數個虛擬位址空間區域之一不同的第二虛擬位址空間區域配置成執行該第二目標碼部分。
- 如申請專利範圍第1項所述之多處理器計算系統,其中該虛擬位址空間係被提供於該多處理器計算系統內,以供該控制器單元及該複數個目標碼部分執行之用,以及該位址空間配置單元係將該供該控制單元及該複數個目標碼部分執行用之虛擬位址空間切割成為該複數個虛擬位址空間區域。
- 如申請專利範圍第1項所述之多處理器計算系統,其中該位址空間配置單元係將尺寸為2n 位元之該虛擬位址空間切割為每一尺寸小於2n 位元之該複數個虛擬位址空間區域,其中n為一正整數。
- 如申請專利範圍第1項所述之多處理器計算系統,其中該位址空間配置單元係將尺寸為264 位元之該虛擬位址空間切割為每一尺寸為232 位元之該複數個虛擬位址空間區域。
- 如申請專利範圍第1項所述之多處理器計算系統,其中該位址空間配置單元係安排用來指示該第一及第二目標碼部分於該複數個虛擬位址空間區域之個別虛擬位址空間區域內執行。
- 如申請專利範圍第1項所述之多處理器計算系統,其中該位址空間配置單元係用來產生該第一及第二目標碼部分以實施記憶體之存取,其中每一記憶體存取之實施 係藉由將該等虛擬位址空間區域之一個別虛擬位址空間區域之一預定基本位址與該虛擬位址空間區域之內之一偏移相結合,該偏移係根據該目標碼之執行來決定。
- 如申請專利範圍第11項所述之多處理器計算系統,其中該位址空間配置單元係安排用來產生至少該第一目標碼部分以指向該複數個處理器當中之一處理器內之一基本暫存器,該基本暫存器係保持住一配置至該第一目標碼部分之該虛擬位址空間區域之基本位址。
- 如申請專利範圍第11項所述之多處理器計算系統,其中該位址空間配置單元係更安排用來提供一由該虛擬位址空間所切割之共享位址空間區域,以及安排用來產生該第一及第二目標碼部分,藉此該基本位址於該目標碼之執行期間被暫時地修改,以指示該目標碼內之特定指令去存取該共享虛擬位址區域。
- 如申請專利範圍第1項所述之多處理器計算系統,其中:該位址空間配置單元係安排用來提供該複數個虛擬位址空間區域,該複數個虛擬位址空間區域包含至少一個共享虛擬位址空間區域與至少一個專用虛擬位址空間區域,以及該位址空間配置單元係安排用來產生至少該第一目標碼部分,該第一目標碼部分係具有指向該複數個處理器之至少第一及第二暫存器之目標碼指令,其中該第一暫存器係儲存該專用虛擬位址空間區域之一第一基本位址,以及 該第二暫存器係儲存該共享虛擬位址空間區域之一第二基本位址,其中該第一目標碼部分內之至少一個目標碼指令群組係參照儲存於該第一基本暫存器內之該第一基本位址而對於該專用虛擬位址空間區域來存取該記憶體,以及該第一目標碼部分內之至少一個目標碼指令群組係參照儲存於該第二基本暫存器內之該第二基本位址而對於該共享虛擬位址空間區域來存取該記憶體。
- 如申請專利範圍第1項所述之多處理器計算系統,其中該共享記憶體偵測單元係安排用來藉由截取一記憶體映射系統呼叫而偵測一對於明確共享記憶體區域之要求,該記憶體映射系統呼叫係於該複數個處理器之一個別處理器上該第一目標碼部分之執行期間所產生,其中該記憶體映射系統呼叫係明確地要求一共享記憶體區域之一映射;以及該共享記憶體偵測單元係更安排用來將所要求之明確共享記憶體區域映射至該複數個虛擬位址空間區域當中之一共享虛擬位址空間區域,以及用來回傳該虛擬位址空間區域內之一專用虛擬位址空間區域內一個被配置至該第一目標碼部分以表示該明確共享記憶體區域之指標。
- 如申請專利範圍第15項所述之多處理器計算系統,更包括一例外處置器,其安排用來接收一例外訊號,該例外訊號係回應該第一目標碼部分內之一指令內之一錯誤記憶體存取而產生,該錯誤記憶體存取係企圖存取一個未 被映射至該個別虛擬位址空間區域內之區域。
- 如申請專利範圍第16項所述之多處理器計算系統,其中:該共享記憶體偵測單元係安排用來決定該錯誤記憶體存取係一欲存取該被映射至該共享虛擬位址空間區域內之明確共享記憶體區域之企圖;該位址空間配置單元係安排用來指示該被確認之指令群組對該共享虛擬位址空間區域存取該明確共享記憶體區域;以及該記憶體保護單元係安排用來藉由執行該被確認之指令群組,而對於該所偵測之該明確共享記憶體區域選擇性地施行該記憶體一致性保護。
- 如申請專利範圍第1項所述之多處理器計算系統,其中該共享記憶體偵測單元係安排用來藉由截取一由該第一目標碼部分於一個別處理器上執行期間所產生之仿製型系統呼叫而偵測一專用記憶體區域之內隱共享,其中該仿製型系統呼叫係要求該第二目標碼部分之執行初始化,其中該第二目標碼部分之執行係仿造該第一目標碼部分之執行;以及該位址空間配置單元係安排用來將一第二虛擬位址空間區域配置至該第二目標碼部分,其中該第二目標碼部分係不同於一被配置至該第一目標碼部分之第一虛擬位址空間區域。
- 如申請專利範圍第18項所述之多處理器計算系統,更包括一例外處置器,其安排用來接收一例外訊號,該例外訊號係回應該第二目標碼部分內之一指令內之一錯誤記憶體存取而產生,該錯誤記憶體存取係企圖存取一未被映射至該個別第二虛擬位址空間區域內之一區域;其中該共享記憶體偵測單元係安排:用來回應該例外訊號而決定該錯誤記憶體存取係一欲存取該被映射至該第一目標碼部分之該第一共享虛擬位址空間區域內之該專用共享記憶體區域之企圖;用以將該專用記憶體區域從該第一虛擬位址空間區域進行解映射;以及用以將該專用記憶體區域映射至一共享虛擬位址空間區域而作為一內隱共享記憶體區域;該位址空間配置單元係安排用來指示該第二目標碼部分內之該被確認之指令群組對於該共享虛擬位址空間區域來存取該內隱共享記憶體區域;以及該記憶體保護單元係安排用來藉由執行被確認之指令群組,而選擇性地施行與該內隱共享記憶體區域之存取相關之記憶體一致性保護。
- 如申請專利範圍第19項所述之多處理器計算系統,其中該例外處置器係安排用來接收一例外訊號,該例外訊號係回應該第一目標碼部分內之一指令內之一錯誤記憶體存取而產生,該錯誤記憶體存取係企圖存取一未被映射至該個別第一虛擬位址空間區域內之區域; 該共享記憶體偵測單元係安排用來對該例外訊號回應而決定該錯誤記憶體存取係一欲存取該被映射至該第二共享虛擬位址空間區域內之該內隱共享記憶體區域之企圖;該位址空間配置單元係安排用來指示該第一目標碼部分內之該被確認之指令群組對於該共享虛擬位址空間區域來存取該內隱共享記憶體區域;以及該記憶體保護單元係安排用來有關於藉由被確認之指令群組對於該內隱共享記憶體區域之存取,而選擇性地施行該記憶體一致性保護。
- 如申請專利範圍第1項所述之多處理器計算系統,更包括:一例外處置器,其安排用來接收一例外訊號,該例外訊號係回應該第一目標碼部分內之一指令內之一錯誤記憶體存取而產生,該錯誤記憶體存取係企圖存取一未被映射至該等虛擬位址空間區域當中之一第一虛擬位址空間區域之區域;及其中該共享記憶體偵測單元係安排用來回應該例外訊號而決定該錯誤記憶體存取係一欲存取該被映射至該等虛擬位址空間區域當中之一與該第二目標碼部分相關之第二虛擬位址空間區域內的記憶體區域之企圖,以及用來將該記憶體區域映射至一共享虛擬位址空間區域而作為一共享記憶體區域;該位址空間配置單元係安排用來指示該第一目標碼部分內之該被確認之指令群組對於該共享虛擬位址空間區域 來存取該共享記憶體區域;以及該記憶體保護單元係安排用來相關於該被確認之指令群組對該共享記憶體區域之存取,而選擇性地施行記憶體一致性保護。
- 如申請專利範圍第21項所述之多處理器計算系統,其中該例外處置器係安排用來接收一例外訊號,該例外訊號係回應該第一目標碼部分內之一指令內之一錯誤記憶體存取而產生,該錯誤記憶體存取係企圖存取一不被映射至該共享虛擬位址空間區域內之區域;該共享記憶體偵測單元係安排用來回應該例外訊號而決定該錯誤記憶體存取係一欲存取與該第一虛擬位址空間區域相關之專用記憶體區域之企圖;該位址空間配置單元係安排用來重新指示該第一目標碼部分內之該被確認之指令群組對於該第一虛擬位址空間區域來存取該專用記憶體區域;以及該記憶體保護單元係安排用來相關於該被確認之指令群組對該專用記憶體區域之存取,而選擇性地移除記憶體一致性保護。
- 如申請專利範圍第1項所述之多處理器計算系統,其中該共享記憶體偵測單元係安排用來記錄記憶體區域之一映射,其中該等記憶體區域係被映射進入該複數個虛擬位址空間區域當中之每一區域,以及用來參考該映射而決定一錯誤記憶體存取是否為一用來存取一記憶體區域之 一企圖,其中該記憶體區域已經映射進入該複數個虛擬位址空間區域當中之一或更多虛擬位址空間區域。
- 如申請專利範圍第1項所述之多處理器計算系統,其中:該第一及第二目標碼部分當中每個目標碼部分係切割成為指令之區塊,其中一個區塊係一個由該控制器單元所處置之最小編碼單元;該記憶體保護單元係安排用來在一例外訊號在透過一目前區塊執行而半途產生時,使該目前區塊之一或更多的剩餘指令完成,同時並將記憶體一致性保護施加至該等剩餘指令;以及該控制器單元係安排用來重新產生該目前區塊,以將記憶體一致性保護施加至整個區塊。
- 如申請專利範圍第24項所述之多處理器計算系統,其中:該記憶體保護單元係安排用來使一目前區塊之執行完成,同時施加記憶體一致性保護,並繼而將該區塊標記為需要重新產生;以及該控制器單元係安排用來回應該標記以重新產生該區塊。
- 如申請專利範圍第24項所述之多處理器計算系統,其中該控制器單元係安排用來產生該第一及第二目標碼部分,該第一及第二目標碼部分包括於所選擇之同步點空操作,以及該記憶體保護單元係安排用來修改至少該區塊 之該剩餘指令,以插入串列指令來取代空操作。
- 如申請專利範圍第24項所述之多處理器計算系統,其中該記憶體保護單元係安排用來獲得一與該區塊中一檢查點相關聯之主題狀態,其中該主題狀態係代表一主題碼之一執行狀態,其中該目標碼部分係由該主題碼導出,以及該控制器單元更包括一主題對目標直譯器,該主題至目標直譯器係安排用來將該主題碼內之指令直譯成為目標碼指令以完成來自該檢查點之該區塊,其中該主題至目標直譯器係安排用來將串列指令插入到由該主題至目標直譯器所產生之目標碼指令。
- 如申請專利範圍第24項所述之多處理器計算系統,其中該控制器單元更包括一目標至目標直譯器,該目標至目標直譯器係安排用來將該區塊內之剩餘指令直譯為包含插入串列指令之修改目標碼指令。
- 如申請專利範圍第24項所述之多處理器計算系統,其中該記憶體保護單元係安排用來重新產生該剩餘指令以插入串列指令,以及繼而使所重新產生之剩餘指令之執行完成該區塊之執行。
- 如申請專利範圍第24項所述之多處理器計算系統,其中:該控制器單元係安排用來維持至少一個雙區塊,該雙區塊係包含:該區塊之一個原始產生版本,其指向該第一虛擬位址空間區域而無記憶體一致性保護;以及該區塊之一個修改版本,其包含至少一個指令群組,該指令群組係 指向該具有記憶體一致性保護之共享虛擬位址空間區域;以及該共享記憶體偵測單元係安排用來在至少進入該雙區塊之時實施一動態測試,以及回應以選擇性地執行該雙區塊之該原始版本或該修改版本。
- 如申請專利範圍第30項所述之多處理器計算系統,其中該共享記憶體偵測單元係安排用來將該動態測試移出該目標碼內之一迴圈。
- 如申請專利範圍第30項所述之多處理器計算系統,其中該共享記憶體偵測單元係安排用來產生該目標碼以於一呼叫者地點將該雙區塊之該原始版本或該修改版本進行進線(inline)。
- 如申請專利範圍第30項所述之多處理器計算系統,其中該共享記憶體偵測單元係安排用來修改該目標碼內之一呼叫者地點,以呼叫該雙區塊之該原始版本或該修改版本。
- 如申請專利範圍第33項所述之多處理器計算系統,其中該共享記憶體偵測單元係安排用來逐步地將一或更多封套函數進行特殊化,該封套函數係介入於該呼叫者地點與該雙區塊間,以選擇性地呼叫一原始或修改後繼者,直到選擇性地呼叫該雙區塊之該原始版本或該修改版本當中之一為止。
- 如申請專利範圍第1項所述之多處理器計算系統,其中該記憶體保護單元係安排用來藉由操縱一與該記憶 體相關聯之頁面表內之屬性,而將該記憶體內之一或更多記憶體頁面標記為依序儲存的,以使該一或更多記憶體頁面成為被快取抑制的及被防衛的。
- 如申請專利範圍第35項所述之多處理器計算系統,其中該位址空間配置單元係更安排用來將該第一及第二目標碼部分當中之每一目標碼部分指示至該等虛擬位址空間區域當中之一所選取虛擬位址空間區域。
- 如申請專利範圍第36項所述之多處理器計算系統,其中該位址空間配置單元係安排用來產生該第一及第二目標碼部分當中之每一部份,用以藉由將該等虛擬位址空間區域之一個別虛擬位址空間區域之一既定基本位址與該虛擬位址空間區域內之一由該目標碼之執行所決定之偏移相結合,而實施記憶體存取。
- 如申請專利範圍第36項所述之多處理器計算系統,其中對於該第一及第二目標碼部分當中每一目標碼部分,該位址空間配置單元係安排用來產生該目標碼指令,以參考該個別處理器內之一基本暫存器,其中該基本暫存器係儲存該個別虛擬位址空間區域之一基本位址。
- 如申請專利範圍第36項所述之多處理器計算系統,其中:該共享記憶體偵測單元係安排用來藉由截取一個由該第一目標碼部分於一個別處理器上之執行期間所產生之記憶體映射系統呼叫,而偵測一個對於一明確共享記憶體區域之要求,其中該記憶體映射系統呼叫係明確地要求一共 享記憶體區域之一映射;以及該記憶體保護單元係安排用來將該共享記憶體區域映射至該虛擬位址空間區域之一與該第一目標碼部份相關聯之第一虛擬位址空間區域,以及用來藉由操縱頁面表屬性而將對共享記憶體區域之記憶體內之一或更多記憶體頁面標記為被依序儲存的,以使該一或更多頁面是被快取抑制的或被防衛的。
- 如申請專利範圍第36項所述之多處理器計算系統,更包括一例外處置器,其安排用來接收一例外訊號,該例外訊號係回應該第二目標碼部分內之一指令內之一錯誤記憶體存取而產生,該錯誤記憶體存取係企圖存取一區域,該區域係未被映射至一與該第二目標碼部分相關之個別第二虛擬位址空間區域;其中該共享記憶體偵測單元係安排用來回應該例外訊號,而決定該錯誤記憶體存取係一欲存取一記憶體區域之企圖,其中該記憶體區域係已經被映射至該第一目標碼部分之該第一虛擬位址空間區域之內而成為一明確共享記憶體區域;以及該共享記憶體偵測單元係安排用來將該明確共享記憶體區域同樣映射進入該第二虛擬位址空間區域,以及在該第二虛擬位址空間區域尚未被如此標記下,用來藉由操縱頁面表屬性,而將該共享記憶體區域之該記憶體內之一或更多記憶體頁面標記為被依序儲存的,以使該一或更多頁面成為被快取抑制的或被防衛的。
- 如申請專利範圍第36項所述之多處理器計算系統,更包括一例外處置器,其安排用來接收一例外訊號,該例外訊號係回應該第二目標碼部分內之一指令內之一錯誤記憶體存取而產生,該錯誤記憶體存取係企圖存取一區域,該區域係未被映射至一與該第二目標碼部分相關聯之個別第二虛擬位址空間區域以內;其中該共享記憶體偵測單元係安排用來回應該例外訊號,而決定該錯誤記憶體存取係一欲存取一記憶體區域之企圖,該記憶體區域係已經被映射至該第一目標碼部分之該第一虛擬位址空間區域之內,以及決定該記憶體區域係一個內隱共享記憶體區域;以及該記憶體保護單元係安排用來藉由操縱頁面表屬性,而將供該該內隱共享記憶體區域所用之該記憶體內之一或更多記憶體頁面標記為被依序儲存的,以使該一或更多頁面成為被快取抑制的或被防衛的。
- 如申請專利範圍第1項所述之多處理器計算系統,其中該控制器單元係安排用來將一為二進位可執行型式之主題碼轉譯為該等二進位可執行型式之目標碼部分。
- 如申請專利範圍第1項所述之多處理器計算系統,其中該控制器單元係安排用來將一為二進位可執行型式之主題碼轉譯為該等與該目標碼執行動態交錯之二進位可執行型式之目標碼部分。
- 如申請專利範圍第1項所述之多處理器計算系統,其中該控制單元係安排用來藉由將一主題碼轉換為該複 數個目標碼部分以對該主題碼進行除錯。
- 如申請專利範圍第1項所述之多處理器計算系統,其中該控制單元係安排用來動態地於該等目標碼部分執行期間,藉由將一為二進位可執行型式之主題碼轉譯為該等二進位可執行型式之目標碼部分以對該主題碼進行除錯。
- 一種在多處理器計算系統中之記憶體一致性保護方法,包括計算機執行步驟:在一第一記憶體一致性模型下執行一第一程式碼部分;偵測一共享記憶體區域,該共享記憶體區域係可藉由該第一程式碼部分及至少一第二程式碼部分來存取;確認該第一程式碼部分內一存取該共享記憶體區域之一指令群組;以及選擇性地施加一記憶體一致性保護,以使該第一程式碼部分內之該指令群組當存取該被偵測共享記憶體區域時在一第二記憶體一致性模型下執行。
- 如申請專利範圍第46項所述之在多處理器計算系統中之記憶體一致性保護方法,其中該第二記憶體一致性模型相較於該第一記憶體一致性模型具有較強的記憶體存取依序限制。
- 如申請專利範圍第46項所述之在多處理器計算系統中之記憶體一致性保護方法,更包括將該第一程式碼部分分割成複數個區塊,以及其中該施加步驟係選擇性地只 將該記憶體一致性保護施加至第一程式碼部分之包含對所偵測之該共享記憶體區域存取之指令之該等區塊。
- 如申請專利範圍第46項所述之在多處理器計算系統中之記憶體一致性保護方法,其中:該執行步驟更包括執行該第二程式碼部分;該確認步驟係包含確認該第二程式碼區塊內對所偵測之共享記憶體區域存取之一指令群組;以及該施加步驟係包含選擇性地施加該記憶體一致性保護,以使該第二程式碼部分內之該指令群組能以實施該第二記憶體一致性模型之方式,來存取該所偵測之共享記憶體區域。
- 如申請專利範圍第49項所述之在多處理器計算系統中之記憶體一致性保護方法,更包括將該第二程式碼部份切割成複數個區塊以及選擇性地將該記憶體一致性保護僅施加至該第二程式碼部分之該等包含對所偵測之該共享記憶體區域存取之指令之區塊。
- 如申請專利範圍第46項所述之在多處理器計算系統中之記憶體一致性保護方法,其中:該執行步驟係包含在一第一記憶體一致性模型下,執行該第一程式碼部分及該第二程式碼部分,其中該第一記憶體一致性模型是該多處理器計算系統之一預設的記憶體一致性模型;該偵測步驟係包含偵測一欲對一明確共享記憶體區域進行初始化之要求,該明確共享記憶體區域對於該第一程 式碼部分及該第二程式碼部分皆可存取;以及該施加步驟係包含施加該記憶體一致性保護,以使僅有該第一程式碼部分及該第二程式碼部分之所選取部份當存取該明確共享記憶體區域時於該不同的第二記憶體一致性模型下執行。
- 如申請專利範圍第51項所述之在多處理器計算系統中之記憶體一致性保護方法,其中:該執行步驟係包含當存取一非共享記憶體區域時,在該預設第一記憶體一致性模型下執行該第一及第二程式碼部分;以及該施加步驟係包含施加該記憶體一致性保護,以使當存取該明確共享記憶體區域時,該第一及第二程式碼部分在該不同之第二記憶體一致性模型下執行。
- 如申請專利範圍第46項所述之在多處理器計算系統中之記憶體一致性保護方法,其中:該執行步驟係包含:在該多處理器計算系統之一第一處理器上對於一第一虛擬位址空間區域執行該第一程式碼部分,以及在該多處理器計算系統之一第二處理器上對於一第二虛擬位址空間區域執行該第二程式碼部分,其中該第一及第二虛擬位址空間區域係相分離且不相重疊;該偵測步驟係包含偵測該第二程式碼部分對於一記憶體區域所產生之一存取要求,該記憶體區域未被映射進入該第二虛擬位址空間區域內,但是其係在該第一虛擬位址空間內之映射區域,以及藉此偵測該第二程式碼部分係正 企圖存取一共享記憶體區域;以及其中該方法更包含:重新由該第一虛擬位址空間區域將該映射區域改成映射至一第三虛擬位址空間區域,其中該第三虛擬位址空間與該第一及第二虛擬位址空間區域係相分離並不相重疊;以及修改在該第二程式碼部分內之至少一個選取指令區塊,該第二程式碼部分係包含有施加該記憶體一致性保護之存取要求,該存取要求係使該區塊在預定記憶體排序限制下來執行,以及指示該所選取編碼區塊去存取該被映射在該第三虛擬位址空間區域內之共享記憶體區域。
- 一電腦可讀儲存媒介,其上記錄著指令,當該等指令被一計算機系統實行時係使該計算機系統實施步驟:於一第一記憶體一致性模型下執行至少一第一程式碼部分;偵測一可被該第一程式碼部分及至少一第二程式碼部分存取之共享記憶體區域;確認該第一程式碼部分內對該共享記憶體區域存取之一指令群組;以及選擇性地施加一記憶體一致性保護,以使該第一程式碼部分內之該指令群組當對該所偵測之共享記憶體區域存取時於一第二記憶體一致性模型下執行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB0623276.3A GB0623276D0 (en) | 2006-11-22 | 2006-11-22 | Memory consistency protection in a multiprocessor computing system |
US87983407P | 2007-01-11 | 2007-01-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200839513A TW200839513A (en) | 2008-10-01 |
TWI403898B true TWI403898B (zh) | 2013-08-01 |
Family
ID=37636310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW096144164A TWI403898B (zh) | 2006-11-22 | 2007-11-21 | 在多處理器計算系統中之記憶體一致性保護方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7895407B2 (zh) |
EP (1) | EP2097817A1 (zh) |
JP (1) | JP5583409B2 (zh) |
KR (1) | KR101244014B1 (zh) |
CN (1) | CN101542441B (zh) |
GB (2) | GB0623276D0 (zh) |
TW (1) | TWI403898B (zh) |
WO (1) | WO2008062225A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI763158B (zh) * | 2020-08-19 | 2022-05-01 | 美商谷歌有限責任公司 | 記憶體共享 |
Families Citing this family (87)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8695000B1 (en) | 2007-03-16 | 2014-04-08 | The Mathworks, Inc. | Data transfer protection in a multi-tasking modeling environment having a protection mechanism selected by user via user interface |
US7657695B1 (en) * | 2007-05-30 | 2010-02-02 | Paravirtual Corporation | Efficient processing of memory accesses to virtual hardware using runtime code patching |
US8893126B2 (en) * | 2008-02-01 | 2014-11-18 | International Business Machines Corporation | Binding a process to a special purpose processing element having characteristics of a processor |
GB2457341B (en) * | 2008-02-14 | 2010-07-21 | Transitive Ltd | Multiprocessor computing system with multi-mode memory consistency protection |
US8006055B2 (en) * | 2008-03-04 | 2011-08-23 | Microsoft Corporation | Fine granularity hierarchiacal memory protection |
JP5115332B2 (ja) * | 2008-05-22 | 2013-01-09 | 富士通株式会社 | エミュレーションプログラム、エミュレーション装置およびエミュレーション方法 |
US8607344B1 (en) * | 2008-07-24 | 2013-12-10 | Mcafee, Inc. | System, method, and computer program product for initiating a security action at an intermediate layer coupled between a library and an application |
GB0813833D0 (en) * | 2008-07-29 | 2008-09-03 | Transitive Ltd | Apparatus and method for handling page protection faults in a computing system |
US9026424B1 (en) * | 2008-10-27 | 2015-05-05 | Juniper Networks, Inc. | Emulation of multiple instruction sets |
US7613850B1 (en) | 2008-12-23 | 2009-11-03 | International Business Machines Corporation | System and method utilizing programmable ordering relation for direct memory access |
US8775780B2 (en) * | 2009-02-27 | 2014-07-08 | Keicy Chung | System for multi-boot of a central processing unit using internal registers that direct an operating system to boot into disjoint memory spaces |
US20110066897A1 (en) * | 2009-09-11 | 2011-03-17 | William Bumgarner | Methods and apparatuses for determining permanent memory growth |
US8832403B2 (en) | 2009-11-13 | 2014-09-09 | International Business Machines Corporation | Generation-based memory synchronization in a multiprocessor system with weakly consistent memory accesses |
US8418156B2 (en) * | 2009-12-16 | 2013-04-09 | Intel Corporation | Two-stage commit (TSC) region for dynamic binary optimization in X86 |
KR101490468B1 (ko) * | 2010-02-04 | 2015-02-06 | 삼성전자 주식회사 | 데이터 처리 장치 및 방법 |
JP5429372B2 (ja) | 2010-06-08 | 2014-02-26 | 富士通株式会社 | マルチコアプロセッサシステム、制御方法、および制御プログラム |
US8954697B2 (en) * | 2010-08-05 | 2015-02-10 | Red Hat, Inc. | Access to shared memory segments by multiple application processes |
CN102135894B (zh) * | 2010-10-13 | 2015-11-25 | 华为技术有限公司 | 一种多核在线补丁方法和装置 |
US11615115B2 (en) | 2010-12-23 | 2023-03-28 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US9740762B2 (en) | 2011-04-01 | 2017-08-22 | Mongodb, Inc. | System and method for optimizing data migration in a partitioned database |
US10997211B2 (en) | 2010-12-23 | 2021-05-04 | Mongodb, Inc. | Systems and methods for database zone sharding and API integration |
US9805108B2 (en) * | 2010-12-23 | 2017-10-31 | Mongodb, Inc. | Large distributed database clustering systems and methods |
US9881034B2 (en) | 2015-12-15 | 2018-01-30 | Mongodb, Inc. | Systems and methods for automating management of distributed databases |
US11544288B2 (en) | 2010-12-23 | 2023-01-03 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US10614098B2 (en) | 2010-12-23 | 2020-04-07 | Mongodb, Inc. | System and method for determining consensus within a distributed database |
US10977277B2 (en) | 2010-12-23 | 2021-04-13 | Mongodb, Inc. | Systems and methods for database zone sharding and API integration |
US8572031B2 (en) | 2010-12-23 | 2013-10-29 | Mongodb, Inc. | Method and apparatus for maintaining replica sets |
US10740353B2 (en) | 2010-12-23 | 2020-08-11 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US10366100B2 (en) | 2012-07-26 | 2019-07-30 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10346430B2 (en) | 2010-12-23 | 2019-07-09 | Mongodb, Inc. | System and method for determining consensus within a distributed database |
US10698775B2 (en) | 2016-05-31 | 2020-06-30 | Mongodb, Inc. | Method and apparatus for reading and writing committed data |
US8996463B2 (en) | 2012-07-26 | 2015-03-31 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10713280B2 (en) | 2010-12-23 | 2020-07-14 | Mongodb, Inc. | Systems and methods for managing distributed database deployments |
US10262050B2 (en) | 2015-09-25 | 2019-04-16 | Mongodb, Inc. | Distributed database systems and methods with pluggable storage engines |
CN102073533B (zh) * | 2011-01-14 | 2013-06-19 | 中国人民解放军国防科学技术大学 | 支持动态二进制翻译的多核体系结构 |
WO2012101538A1 (en) * | 2011-01-26 | 2012-08-02 | International Business Machines Corporation | Emulation of strongly ordered memory models |
JP5967073B2 (ja) * | 2011-02-21 | 2016-08-10 | 富士通株式会社 | プロセッサ管理方法 |
US8850417B2 (en) | 2011-04-15 | 2014-09-30 | International Business Machines Corporation | Method and framework for invisible code rewriting |
US9015027B2 (en) | 2011-04-21 | 2015-04-21 | International Business Machines Corporation | Fast emulation of virtually addressed control flow |
WO2012167533A1 (zh) * | 2011-10-31 | 2012-12-13 | 华为技术有限公司 | 一种构建内存访问模型的方法及装置 |
US20140068247A1 (en) * | 2011-12-12 | 2014-03-06 | Moose Loop Holdings, LLC | Security device access |
US8935513B2 (en) * | 2012-02-08 | 2015-01-13 | International Business Machines Corporation | Processor performance improvement for instruction sequences that include barrier instructions |
KR102040160B1 (ko) * | 2012-02-29 | 2019-11-04 | 삼성전자주식회사 | 대칭 멀티스레딩 환경의 공유 데이터 동기화를 위한 결합 락 할당 및 참조 |
GB2500707B (en) | 2012-03-30 | 2014-09-17 | Cognovo Ltd | Multiprocessor system, apparatus and methods |
WO2014002162A1 (ja) * | 2012-06-25 | 2014-01-03 | 富士通株式会社 | ストレージ制御装置、情報処理装置、ストレージ制御プログラム、及びストレージ制御方法 |
US11403317B2 (en) | 2012-07-26 | 2022-08-02 | Mongodb, Inc. | Aggregation framework system architecture and method |
US11544284B2 (en) | 2012-07-26 | 2023-01-03 | Mongodb, Inc. | Aggregation framework system architecture and method |
US10872095B2 (en) | 2012-07-26 | 2020-12-22 | Mongodb, Inc. | Aggregation framework system architecture and method |
US9304924B2 (en) | 2012-08-17 | 2016-04-05 | Futurewei Technologies, Inc. | Cache coherent handshake protocol for in-order and out-of-order networks |
EP2951705A4 (en) * | 2013-01-29 | 2016-11-02 | Hewlett Packard Development Co | ASSIGNING PROCESSORS TO MEMORY TOPOGRAPHY CONFIGURATION |
EP3028151A1 (en) * | 2013-07-31 | 2016-06-08 | Hewlett Packard Enterprise Development LP | Versioned memory implementation |
US9336413B2 (en) * | 2013-11-22 | 2016-05-10 | Oracle International Corporation | Method and system for fast permission changes for virtual addresses |
US9413765B2 (en) * | 2014-03-25 | 2016-08-09 | Intel Corporation | Multinode hubs for trusted computing |
US20150370707A1 (en) * | 2014-06-24 | 2015-12-24 | Qualcomm Incorporated | Disunited shared-information and private-information caches |
GB2532777B (en) | 2014-11-28 | 2021-07-07 | Advanced Risc Mach Ltd | System error handling in a data processing apparatus |
US10055209B2 (en) * | 2015-01-12 | 2018-08-21 | Red Hat, Inc. | Resource closing |
US9886210B2 (en) * | 2015-06-09 | 2018-02-06 | Ultrata, Llc | Infinite memory fabric hardware implementation with router |
US10496669B2 (en) | 2015-07-02 | 2019-12-03 | Mongodb, Inc. | System and method for augmenting consensus election in a distributed database |
US11977891B2 (en) | 2015-09-19 | 2024-05-07 | Microsoft Technology Licensing, Llc | Implicit program order |
US11681531B2 (en) * | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US10673623B2 (en) | 2015-09-25 | 2020-06-02 | Mongodb, Inc. | Systems and methods for hierarchical key management in encrypted distributed databases |
US10423626B2 (en) | 2015-09-25 | 2019-09-24 | Mongodb, Inc. | Systems and methods for data conversion and comparison |
US10846411B2 (en) | 2015-09-25 | 2020-11-24 | Mongodb, Inc. | Distributed database systems and methods with encrypted storage engines |
US10394822B2 (en) | 2015-09-25 | 2019-08-27 | Mongodb, Inc. | Systems and methods for data conversion and comparison |
US9514083B1 (en) * | 2015-12-07 | 2016-12-06 | International Business Machines Corporation | Topology specific replicated bus unit addressing in a data processing system |
WO2017155523A1 (en) * | 2016-03-09 | 2017-09-14 | Hewlett Packard Enterprise Development Lp | Server virtual address space |
US10776220B2 (en) | 2016-06-27 | 2020-09-15 | Mongodb, Inc. | Systems and methods for monitoring distributed database deployments |
US11442760B2 (en) * | 2016-07-01 | 2022-09-13 | Intel Corporation | Aperture access processors, methods, systems, and instructions |
US10380342B2 (en) * | 2016-07-29 | 2019-08-13 | Qualcomm Incorporated | Kernel-based detection of target application functionality using virtual address mapping |
US9852202B1 (en) | 2016-09-23 | 2017-12-26 | International Business Machines Corporation | Bandwidth-reduced coherency communication |
US10235202B2 (en) | 2016-11-08 | 2019-03-19 | International Business Machines Corporation | Thread interrupt offload re-prioritization |
US10671426B2 (en) | 2016-11-28 | 2020-06-02 | Arm Limited | Data processing |
US10423446B2 (en) | 2016-11-28 | 2019-09-24 | Arm Limited | Data processing |
US10552212B2 (en) * | 2016-11-28 | 2020-02-04 | Arm Limited | Data processing |
US10262144B2 (en) | 2016-12-15 | 2019-04-16 | International Business Machines Corporation | Verifying proper operation of the instruction execution protection architecture |
US10474469B2 (en) * | 2017-04-12 | 2019-11-12 | Arm Limited | Apparatus and method for determining a recovery point from which to resume instruction execution following handling of an unexpected change in instruction flow |
US10866868B2 (en) | 2017-06-20 | 2020-12-15 | Mongodb, Inc. | Systems and methods for optimization of database operations |
US11436143B2 (en) * | 2017-12-22 | 2022-09-06 | Alibaba Group Holding Limited | Unified memory organization for neural network processors |
US10592431B2 (en) * | 2018-08-13 | 2020-03-17 | Hewlett Packard Enterprise Development Lp | Independent shared and process virtual address translations |
EP3891634A1 (en) * | 2018-12-07 | 2021-10-13 | Koninklijke Philips N.V. | A computing device with increased resistance against address probing |
US11734192B2 (en) | 2018-12-10 | 2023-08-22 | International Business Machines Corporation | Identifying location of data granules in global virtual address space |
US11016908B2 (en) * | 2018-12-11 | 2021-05-25 | International Business Machines Corporation | Distributed directory of named data elements in coordination namespace |
US10877788B2 (en) * | 2019-03-12 | 2020-12-29 | Intel Corporation | Processing vectorized guest physical address translation instructions |
US11307981B1 (en) * | 2020-05-10 | 2022-04-19 | Juniper Networks, Inc | Systems and methods for sharing memory pointers across multiple processes |
TWI755112B (zh) * | 2020-10-23 | 2022-02-11 | 財團法人工業技術研究院 | 電腦程式碼之優化方法、優化系統及應用其之電子裝置 |
CN113111391B (zh) * | 2021-04-09 | 2022-07-08 | 支付宝(杭州)信息技术有限公司 | 用于内存完整性保护的方法和内存控制器 |
US12008372B2 (en) * | 2022-07-21 | 2024-06-11 | VMware LLC | Techniques for reducing CPU privilege boundary crossings |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5692153A (en) * | 1995-03-16 | 1997-11-25 | International Business Machines Corporation | Method and system for verifying execution order within a multiprocessor data processing system |
WO2000022521A1 (en) * | 1998-10-10 | 2000-04-20 | The Victoria University Of Manchester | Program code conversion |
TW470881B (en) * | 1998-11-30 | 2002-01-01 | Ibm | Method and system for efficiently handling memory operations in a data processing system |
US6591355B2 (en) * | 1998-09-28 | 2003-07-08 | Technion Research And Development Foundation Ltd. | Distributed shared memory system with variable granularity |
TW548547B (en) * | 1999-06-18 | 2003-08-21 | Ibm | Method and system for maintaining cache coherency for write-through store operations in a multiprocessor system |
TW548545B (en) * | 2000-06-28 | 2003-08-21 | Intel Corp | Cache line pre-load and pre-own based on cache coherence speculation |
TW200410133A (en) * | 2000-02-07 | 2004-06-16 | Sun Microsystems Inc | A method to reduce memory latencies by performing two levels of speculation |
WO2004095264A2 (en) * | 2003-04-22 | 2004-11-04 | Transitive Limited | Method and apparatus for performing interpreter optimizations during program code conversion |
WO2004097631A2 (en) * | 2003-05-02 | 2004-11-11 | Transitive Limited | Architecture for generating intermediate representations for program code conversion |
WO2005006106A2 (en) * | 2003-07-04 | 2005-01-20 | Transitive Limited | Method and apparatus for performing adjustable precision exception handling |
WO2005008478A2 (en) * | 2003-07-15 | 2005-01-27 | Transitive Limited | Method and apparatus for performing native binding |
US6892286B2 (en) * | 2002-09-30 | 2005-05-10 | Sun Microsystems, Inc. | Shared memory multiprocessor memory model verification system and method |
WO2006103395A1 (en) * | 2005-03-30 | 2006-10-05 | Transitive Limited | Preparing instruction groups in a processor having multiple issue ports |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6263414B1 (en) * | 1998-07-17 | 2001-07-17 | Technion Research And Development Foundation, Ltd. | Memory for accomplishing lowered granularity of a distributed shared memory |
US7398376B2 (en) * | 2001-03-23 | 2008-07-08 | International Business Machines Corporation | Instructions for ordering execution in pipelined processes |
EP1532118A2 (en) | 2002-07-05 | 2005-05-25 | Axxima Pharmaceuticals Aktiengesellschaft | Imidazole compounds for the treatment of hepatitis c virus infections |
US9043194B2 (en) * | 2002-09-17 | 2015-05-26 | International Business Machines Corporation | Method and system for efficient emulation of multiprocessor memory consistency |
US6892283B2 (en) * | 2002-12-05 | 2005-05-10 | International Business Machines Corporation | High speed memory cloner with extended cache coherency protocols and responses |
GB0316531D0 (en) * | 2003-07-15 | 2003-08-20 | Transitive Ltd | Method and apparatus for performing native binding |
US7818724B2 (en) | 2005-02-08 | 2010-10-19 | Sony Computer Entertainment Inc. | Methods and apparatus for instruction set emulation |
-
2006
- 2006-11-22 GB GBGB0623276.3A patent/GB0623276D0/en not_active Ceased
-
2007
- 2007-11-19 US US11/986,321 patent/US7895407B2/en not_active Expired - Fee Related
- 2007-11-20 KR KR1020097012940A patent/KR101244014B1/ko not_active IP Right Cessation
- 2007-11-20 GB GB0722686A patent/GB2444148B/en not_active Expired - Fee Related
- 2007-11-20 WO PCT/GB2007/050700 patent/WO2008062225A1/en active Application Filing
- 2007-11-20 JP JP2009537704A patent/JP5583409B2/ja not_active Expired - Fee Related
- 2007-11-20 EP EP07824912A patent/EP2097817A1/en not_active Withdrawn
- 2007-11-20 CN CN2007800434969A patent/CN101542441B/zh not_active Expired - Fee Related
- 2007-11-21 TW TW096144164A patent/TWI403898B/zh not_active IP Right Cessation
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5692153A (en) * | 1995-03-16 | 1997-11-25 | International Business Machines Corporation | Method and system for verifying execution order within a multiprocessor data processing system |
US6591355B2 (en) * | 1998-09-28 | 2003-07-08 | Technion Research And Development Foundation Ltd. | Distributed shared memory system with variable granularity |
WO2000022521A1 (en) * | 1998-10-10 | 2000-04-20 | The Victoria University Of Manchester | Program code conversion |
TW470881B (en) * | 1998-11-30 | 2002-01-01 | Ibm | Method and system for efficiently handling memory operations in a data processing system |
TW548547B (en) * | 1999-06-18 | 2003-08-21 | Ibm | Method and system for maintaining cache coherency for write-through store operations in a multiprocessor system |
TW200410133A (en) * | 2000-02-07 | 2004-06-16 | Sun Microsystems Inc | A method to reduce memory latencies by performing two levels of speculation |
TW548545B (en) * | 2000-06-28 | 2003-08-21 | Intel Corp | Cache line pre-load and pre-own based on cache coherence speculation |
US6892286B2 (en) * | 2002-09-30 | 2005-05-10 | Sun Microsystems, Inc. | Shared memory multiprocessor memory model verification system and method |
WO2004095264A2 (en) * | 2003-04-22 | 2004-11-04 | Transitive Limited | Method and apparatus for performing interpreter optimizations during program code conversion |
WO2004097631A2 (en) * | 2003-05-02 | 2004-11-11 | Transitive Limited | Architecture for generating intermediate representations for program code conversion |
WO2005006106A2 (en) * | 2003-07-04 | 2005-01-20 | Transitive Limited | Method and apparatus for performing adjustable precision exception handling |
WO2005008478A2 (en) * | 2003-07-15 | 2005-01-27 | Transitive Limited | Method and apparatus for performing native binding |
WO2006103395A1 (en) * | 2005-03-30 | 2006-10-05 | Transitive Limited | Preparing instruction groups in a processor having multiple issue ports |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI763158B (zh) * | 2020-08-19 | 2022-05-01 | 美商谷歌有限責任公司 | 記憶體共享 |
Also Published As
Publication number | Publication date |
---|---|
KR101244014B1 (ko) | 2013-03-25 |
KR20090115118A (ko) | 2009-11-04 |
GB0623276D0 (en) | 2007-01-03 |
US20080140971A1 (en) | 2008-06-12 |
GB2444148A (en) | 2008-05-28 |
WO2008062225A1 (en) | 2008-05-29 |
TW200839513A (en) | 2008-10-01 |
JP5583409B2 (ja) | 2014-09-03 |
JP2010510599A (ja) | 2010-04-02 |
CN101542441A (zh) | 2009-09-23 |
CN101542441B (zh) | 2012-03-07 |
US7895407B2 (en) | 2011-02-22 |
GB2444148B (en) | 2009-03-04 |
EP2097817A1 (en) | 2009-09-09 |
GB0722686D0 (en) | 2007-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI403898B (zh) | 在多處理器計算系統中之記憶體一致性保護方法 | |
US8230181B2 (en) | Multiprocessor computing system with multi-mode memory consistency protection | |
US11030105B2 (en) | Variable handles | |
US9436457B2 (en) | Generating and applying patches to computer program code concurrently with its execution | |
JP3704573B2 (ja) | クラスタシステム | |
Marlow et al. | There is no fork: An abstraction for efficient, concurrent, and concise data access | |
US8990790B2 (en) | Java native interface array handling in a distributed java virtual machine | |
US10013235B2 (en) | Method and system for queuing data for multiple readers and writers | |
JP2016534431A (ja) | ロード/記憶ユニット及びデータキャッシュの順序付け及びバンド幅の向上 | |
US11620215B2 (en) | Multi-threaded pause-less replicating garbage collection | |
US20030212874A1 (en) | Computer system, method, and program product for performing a data access from low-level code | |
US20110296431A1 (en) | Method and apparatus for efficient helper thread state initialization using inter-thread register copy | |
US7769962B2 (en) | System and method for thread creation and memory management in an object-oriented programming environment | |
US8700851B2 (en) | Apparatus and method for information processing enabling fast access to program | |
JP7492528B2 (ja) | リングバッファ更新の処理 | |
US20080098198A1 (en) | Information processing device, data transfer method, and information storage medium | |
TWI447649B (zh) | 關於程式碼轉換之管理程序檔案系統之方法及設備 | |
US11853755B2 (en) | Atomic range compare and modify operations | |
CN104508626B (zh) | 可执行代码数据的无锁流传送的方法和系统 | |
JP5238876B2 (ja) | 情報処理装置及び情報処理方法 | |
JPS62216058A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |