TWI285332B - Operating method, processor, multiple-processor system, and machine-readable medium for performing compare and exchange instruction using sleep-wakeup mechanism - Google Patents
Operating method, processor, multiple-processor system, and machine-readable medium for performing compare and exchange instruction using sleep-wakeup mechanism Download PDFInfo
- Publication number
- TWI285332B TWI285332B TW094119878A TW94119878A TWI285332B TW I285332 B TWI285332 B TW I285332B TW 094119878 A TW094119878 A TW 094119878A TW 94119878 A TW94119878 A TW 94119878A TW I285332 B TWI285332 B TW I285332B
- Authority
- TW
- Taiwan
- Prior art keywords
- lock
- processor
- instruction
- sleep
- instructions
- Prior art date
Links
- 230000007246 mechanism Effects 0.000 title claims abstract description 51
- 238000011017 operating method Methods 0.000 title 1
- 230000007958 sleep Effects 0.000 claims abstract description 44
- 238000000034 method Methods 0.000 claims abstract description 24
- 230000008859 change Effects 0.000 claims description 19
- 238000012544 monitoring process Methods 0.000 claims description 15
- 239000000872 buffer Substances 0.000 claims description 14
- 230000008878 coupling Effects 0.000 claims description 2
- 238000010168 coupling process Methods 0.000 claims description 2
- 238000005859 coupling reaction Methods 0.000 claims description 2
- 230000002618 waking effect Effects 0.000 claims description 2
- 239000012536 storage buffer Substances 0.000 claims 8
- KJLPSBMDOIVXSN-UHFFFAOYSA-N 4-[4-[2-[4-(3,4-dicarboxyphenoxy)phenyl]propan-2-yl]phenoxy]phthalic acid Chemical compound C=1C=C(OC=2C=C(C(C(O)=O)=CC=2)C(O)=O)C=CC=1C(C)(C)C(C=C1)=CC=C1OC1=CC=C(C(O)=O)C(C(O)=O)=C1 KJLPSBMDOIVXSN-UHFFFAOYSA-N 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 12
- 238000005192 partition Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000012360 testing method Methods 0.000 description 6
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 5
- 102100037226 Nuclear receptor coactivator 2 Human genes 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 101000974356 Homo sapiens Nuclear receptor coactivator 3 Proteins 0.000 description 3
- 102100022883 Nuclear receptor coactivator 3 Human genes 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000004622 sleep time Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 101000602926 Homo sapiens Nuclear receptor coactivator 1 Proteins 0.000 description 2
- 101000651467 Homo sapiens Proto-oncogene tyrosine-protein kinase Src Proteins 0.000 description 2
- 102100027384 Proto-oncogene tyrosine-protein kinase Src Human genes 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101100120298 Rattus norvegicus Flot1 gene Proteins 0.000 description 1
- 101100412401 Rattus norvegicus Reg3a gene Proteins 0.000 description 1
- 101100412403 Rattus norvegicus Reg3b gene Proteins 0.000 description 1
- 206010041349 Somnolence Diseases 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000001693 membrane extraction with a sorbent interface Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000013102 re-test Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000009987 spinning Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/52—Indexing scheme relating to G06F9/52
- G06F2209/521—Atomic
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Power Sources (AREA)
- Memory System (AREA)
- Hardware Redundancy (AREA)
- Exchange Systems With Centralized Control (AREA)
- Advance Control (AREA)
Description
1285332 (1) 九、發明說明 【發明所屬之技術領域】 本發明之實施例係有關處理器。更具體而言,一實施 例係有關使用睡眠-喚醒機制以執行比較與交換操作。 【先前技術】 一多緒執行式處理器或一多處理器系統通常可同時處 理多個指令序列。在單一處理器內執行多個指令流的一主 要驅策因素是可達到處理器使用率的提高。多緒執行式處 理器可讓多個指令流同時在不同的執行資源中執行,而嘗 試對這些資源作更佳的利用。此外,可將多緒執行式處理 器用於遭遇長時間延遲或經常等候事件發生的程式。 電腦系統通常具有將被所有執行緒或處理器共用的單 一資源設定。沒有適當的資源時,可能諸如因各處理器共 用匯流排及記憶體頻寬,而造成各處理器(或執行緒)之 間對資源的競爭。當一個或多個處理器等候一旗號( semaphore )或鎖定(lock )(意指通常用來讓一單一處理 器唯一地存取其他資料結構之資料結構)變爲可取得狀態 時,上述對資源的競爭尤其明顯。因而造成資源的瓶頸、 以及記憶體頻寬、計算頻寬、微架構資源、及電源的浪費 。各處理器的“忙碌等待”(“busy waiting”)也能對系統 中之其他處理器的效能有不利的影響。 圖1是一例示電腦系統(1 〇〇 )之一方塊圖,該電 腦系統(1 〇〇 )具有存取一共用記憶體空間(1 1 4 )之處理 -5- (2) 1285332 器(1 02 - 1 06 )。旗號(鎖定)是記憶體(i〇8 )中 特定位置,該特定位置被指定存放與對共用空間(1 的存取(1 1 2 )相關聯之一値。爲了讓處理器(i 〇2 -)中之一處理器存取共用空間(1 1 4 ),首先存取鎖 1 1 〇 ),並測試鎖定位置(1 1 0 )中儲存的資料之裝置 ),且在最簡單的格式中,係將兩個値中之一値指定 定(1 1 0 )。第一値指示共用空間(1 1 4 )可供存取之 得性,而第二値指示共用空間(1 1 4 )目前正被使用 _而不可供存取。此外,可將狀態1及 〇用於鎖定 )的被鎖定及未被鎖定狀態。 處理器(1 02 - 1 06 )爲了資料轉移而對記憶體 .)進行的存取涉及載入及儲存操作。載入操作自記憶 108)中被存取的一位置轉移記憶體內容,而儲存操 資料轉移到記憶體(1 〇8 )中被存取的一記憶體位置 此,係將載入/儲存操作用來存取記憶體(1 08 )及 I ( 110),以便進行處理器(1 02 - 1 06 )與記憶體(1 之間的資料轉移。載入及儲存存取也分別被稱爲讀取 入存取。根據諸如 MESI (被修改的/唯一的/共用 無效的)協定等的一協定,當執行一讀取時,快取線 “共用且未被修改的”、或“唯一的”、或“被修改的 態出現在處理器的快取記憶體中。如果快取線並未以 狀態中之一狀態(例如,無效的狀態)出現,則處理 102 - 1〇6 )自記億體(108 )擷取該快取線,並將該 線置於“共用且未被修改的”或“唯一的”狀態。 之一 14 ) 106 定( (値 給鎖 可取 ,因 (110 (108 體( 作將 。因 鎖定 08 ) 及寫 的/ 係以 ”狀 這些 器( 快取 爲了 -6- (3) 1285332 執行一寫入,處理器(1 02 - 1 06 )在其快取記憶體 處於“唯一的”或“被修改的”狀態之快取線, 該快取線,並以“唯一的”狀態將該快取線放置到 記憶體中。“共用的狀態”可供同時讀取,但只有 理器(1 02 - 1 06 )可讀取或寫入處於“唯一的” 快取線。 檢查旗號的可取得性並使旗號忙碌的一種技術 子是使用基元的(atomic)讀取-修改-寫入序列( 測試並設定(“Test & Set” ;簡稱 TS )機制。執行 一種機制是“比較及交換指令”,此種機制是較有 ,但並未具有充分的效率,這是因爲該機制需要記 置的快取線之唯一所有權。因而使其他處理器無法 取該記憶體位置。 另一例子包括測試再測試並設定(“Test . & Set” ;簡稱 TTS )機制。該 TTS機制是更有效率 是因爲當旗號並未處於未被使用狀態時,處理器在 測試中存取變數的處於共用的狀態之一區域快取記 貝。然而,當一處理器已取得鎖定,且其他處理器 爭該鎖定時(例如,同時嘗試讀取以便檢查該旗號 於未被使用狀態時),該 TTS機制無法防止對其 器的阻擋或瓶頸。取得該鎖定的處理器獲得處於 “ ”狀態的鎖定之快取線,並迫使該快取線無法存在 的快取記憶體。當該處理器完成了寫入該鎖定時, 理器嘗試一讀取,因而使該取得鎖定之處理器將其 中具有 或擷取 其快取 一個處 狀態之 之一例 例如, 同步的 效率的 憶體位 同時讀 Test & 的,這 第一次 憶體拷 正在競 是否處 他處理 唯一的 於其他 其他處 被修改 -7- (4) IZ85332 的鎖定値寫回到記憶體,並在一序列的匯流排交易中將現 在共用的資料轉送到其他處理器。 【發明內容】 本發明提供了一種使用睡眠-喚醒機制以執行比較與 父換操作之方法、裝置、及系統。根據一實施例,在一處 理器中執行一指令,以便代表該處理器而協助取得一鎖定 。如果該處理器無法取得該鎖定,則將該指令置於睡眠狀 態到發生一事件爲止。 【實施方式】 下文中將說明一種使用睡眠-喚醒機制以執行比較與 交換操作之系統及方法。在下文的說明中,可能述及了諸 如邏輯實施例、運算碼、資源分割、資源共用、資源複製 實施例、系統組件的類型及相互關係、以及邏輯分割/整 φ合選擇等的許多特定細節,以便提供對本發明的各實施例 之更徹底的了解。然而,熟悉此項技術者將可了解:根據 本說明書所提供的揭示事項,可在無須這些特定細節的情 形下實施本發明的實施例。在其他的情形中,並未詳細示 出控制結構、閘等級的電路、以及完整的軟體指令序列, 以便不會模糊了本發明。對此項技術具有一般知識者在參 閱本說明書中包含的說明之後,將可在無須過度實驗的情 形下實施適當的功能。 下文中將說明本發明的各實施例。可以硬體組件執行 -8- (5) 1285332 各實施例,或者可以機器可執行的指令實施各實施例,而 該等機器可執行的指令可被用來使一般用途或特殊用途處 理器或以該等指令程式化的機器或邏輯電路執行各實施例 。或者,可以硬體及軟體的一組合執行各實施例。 可以一電腦程式產品之方式提供本發明的各實施例, 該電腦程式產品可包括儲存有指令之一機器可讀取的媒體 ,該等指令可被用來將一電腦(或其他電子裝置)程式化 g成可執行根據本發明的各實施例之一程序。該機器可讀取 的媒體可包括(但不限於)軟碟、光碟、唯讀光碟( Compact Disk-Read-Only Memory;簡稱 CD-ROM)、磁 光碟、唯讀記憶體(Read-Only Memory ;簡稱 ROM )、 隨機存取記憶體(R a n d o m A c c e s s M e m o r y ;簡稱:R A Μ ) 、可抹除可程式唯讀記億體(Erasable Programmable Read Only Memory ;簡稱 EPROM)、電氣可抹除可程式唯讀 記憶體(Electrically Erasable Programmable Read Only φ Memory ;簡稱 EEPROM )、磁卡或光學卡、快閃記憶體 、或適於儲存電子指令的另外類型之媒體/機器可讀取的 媒體。此外,亦可以一電腦程式產品之方式下載本發明的 各實施例,其中可經由一通訊鏈路(例如一數據機或網路 連線)而利用在一載波或其他傳播媒體中實施的資料信號 將該程式自一遠端電腦轉移到一提出要求的電腦。 圖 2是一指令(200 )的一編碼體系的一實施例之 一方塊圖。圖中示出執行一讀取-修改-寫入操作的一指令 (例如,比較及交換(C0MPXCHG ) ) ( 200 )。指令( 1285332 (6) 2 00 )讀取一第一來源資料,將其與另一來源資料,且如 果該比較符合預定準則或條件(例如,當一比較爲真時) ,則將某一被修改的値寫到一位置。該位置可包括該第一 來源資料的原始位置。如果不符合預定條件,則不修改該 位置的原始資料。可以如下文所示之方式以其中包括該原 始資料以外的其中一個位置之狀態更新另一位置: (**譯者註··請 copy原文 P· 6第 12 - 20行的程式 碼) 指令( 200 )包含一單一基元的指令,其中包括用來 將指令(200 )識別爲 CMPXCHG指令之一運算碼運算 元(202 )、以及分別對應於來源及目標的與 SRC1、 SRC2、SRC3、及 DEST 之運算元(204-210)。 圖 3是用來執行一指令(200 )的一處理架構(300 )的一實施例之一方塊圖。係以一中央處理單元(Central Processing Unit;簡稱 CPU)之形式示出處理器( 3 02 ) ,處理器(3 02 )具有被一匯流排(3 1 6 )相互耦合的一執 行單元(3 04 )、一暫存器檔(306)(包含若干暫存器( 3〇8 ))、以及一解碼器(314 )。暫存器檔(3 06 )包含 一組暫存器(3 08 ),而執行單元(3 04 )存取該組暫存器 (3 08 ),以便執行指令(200 )。指令(200 )可包括圖 2所示之 CMPXCHG指令、或具有睡眠-喚醒機制的一 比較及交換指令(CMPXCHG__S W指令)之一實施例。 -10- (7) 1285332 係將指令(200 )示爲存在於執行單元(3 04 )內,且 係將各虛線示爲自指令(200 )的運算元(202-2 1 0 )至暫 存器檔(306 )中之對應的暫存器(3 08 )。解碼器(314 )被用來將指令(2 0 0 )解碼,以供執行。記憶體(3 2 0 ) 係經由一匯流排(3 1 8 )而連接到匯流排介面單元(Bus Interface Unit;簡稱 BIU) (312)。係將 BIU(312) 用來在記憶體(320 )與處理器(3 02 )之間轉移資料。我 們考慮到:指令(200 )的程式常式(運算序列)可存在 於記憶體(3 20 )內。在執行指令(200 )之前,可先將 SRC1、SRC2、及 SRC3 載入該等暫存器(308)中。在 一實施例中,可將一處理-比較運算元(Pr〇cess-Compare-Operand;簡稱 P CO )暫存器(圖中未示出)用來作爲在 執行指令(200 )時的不同期之 SRC2 及(或)DEST 暫存器。換言之,在執行之前,SRC1及 SRC3被載入 該等暫存器(3 08 )中,而 SRC2 資訊被載入用來作爲 SRC2資訊的專用暫存器之該 PCO暫存器。 在一實施例中,指令(200 )包括一 CMPXCHG —SW 指令,而處理架構(300 )係針對該 CMPXCHG_SW指令 而實施並執行具有睡眠-喚醒機制的比較與交換操作( CMPXCHG —SW機制)。可使用硬體實施該機制(例如, 在處理器(302 )中實施該機制),及(或)可使用軟體 實施該機制(例如,使用同步碼實施並執行該機制的各種 功能)。在一實施例中,如果諸如因爲另一處理器取得了 鎖定(322 ),而無法取得所需的(用來存取共用記憶體 -11 - ,1285332 (8) 空間(3 26 )之)鎖定(3 22 ),則將CMPXCHG^SW機 制用來將一cmpxchg—sw指令置於睡眠狀態。然後, 當取得鎖定的處理器完成了其對共用記憶體空間(326 ) 的存取時,該處理器然後可能需要將鎖定(3 2 2 )重新設 定在(或修改爲)開啓(或未鎖定)狀態,使另一處理器 現在可取得存取共用記憶體空間(3 2 6 )的控制權。該系 統釋出對共用記憶體空間(3 26 )的控制權之方式可以是 ^ 一設計上的選擇(例如,由系統架構所規定)。例如,可 將一未鎖定的狀態値直接寫到鎖定(3 2 2 ),或寫入/儲 存在一暫存器(308)中。下文中將參照圖7-9而進一 步揭示該 CMPXCHG —SW機制。 圖 4是用來實施本發明的<一個或多個實施例的一例 示電腦系統(400 )之一方塊圖。該電腦系統(系統)包 含一個或多個處理器(402 - 406)。處理器( 402 · 406) 可包括一個或多個單緒執行式或多緒執行式處理器。一典 φ型的多緒執行式處理器可包含多個執行緒或邏輯處理器, 且可使用其多個執行緒而同時處理多個指令序列。處理器 (4 02 - 4 06 )亦包含一個或多個內部層級的快取記憶體( 圖中未示出)、以及用來與處理器匯流排(412)直接互 動的一匯流排控制器或匯流排介面單元。 可將也被稱爲主匯流排或前端匯流排的處理器匯流排 (412 )用來將處理器(402 - 406 )耦合到系統介面(414 )。處理器匯流排(412 )可包含一控制匯流排(432 )、 一位址匯流排(434 )、以及一資料匯流排(436 )。控制 -12- 1285332
匯流排(432 )、位址匯流排(434 )、及資料匯流排( 436)可以是多點式(multidrop)雙向匯流排(例如,被 連接到三個或更多個匯流排代理裝置),而不是只可在兩 個匯流排代理裝置之間連接的一點對點匯流排。
系統介面(4 1 4 )(或晶片組)可被連接到處理器匯 流排(4 1 2 ),以便將系統(400 )的其他組件連接到處理 器匯流排(4 1 2 )。例如,系統介面(4 1 4 )可包含一記億 體控制器(4 1 8 ),用以將一主記憶體(4 1 6 )連接到處理 器匯流排(4 1 2 )。主記憶體(4 1 6 )通常包含一個或多個 記憶體卡及一控制電路(圖中未示出)。系統介面(4 1 4 )亦可包含一輸入/輸出(I/O )介面(420 ),用以將一 個或多個 I/O橋接器或I/O裝置連接到處理器匯流排 (4 12 )。例如,如圖所示,I/O介面(420 )可將一 I/O 橋接器(424 )連接到處理器匯流排(412 ) 。I/O橋接器 (424 )可以一匯流排橋接器之方式操作,以便作爲系統 介面(414 )與一 I/O匯流排(426 )間之介面。諸如圖 中所示之 I/O控制器( 428 )及 I/O裝置( 43 0 )等的 一個或多個 I/O控制器及(或)I/O裝置可被連接到 I/O匯流排(426 ) 。I/O匯流排(426 )可包括一周邊組 件互連(Peripheral Component Interconnect;簡稱 PCI) 匯流排或其他類型的I/O匯流排。 系統(400 )可包含被稱爲主記憶體(416 )的一動態 儲存裝置、或一隨機存取記憶體(RAM )、或被耦合到處 理器匯流排(412)的用來儲存將被處理器( 402 - 406 ) -13- (10) 1285332 執行的資訊及指令之其他裝置。亦可將主記憶體(4 1 6 ) 用來儲存處理器(402 - 406 )於執行指令期間的暫時性變 數或其他中間資訊。系統(400 )可包含被耦合到處理器 匯流排(412 )的一唯讀記憶體(ROM )及(或)其他靜 態儲存裝置(圖中未示出),用以儲存處理器(402 - 406 )的靜態資訊及指令。 主記憶體(4 1 6 )或動態儲存裝置可包括用來儲存資 |訊及指令之一磁碟或一光碟。I/O裝置(430)可包括諸 如一陰極射線管(Cathode Ray Tube;簡稱 CRT)或液晶 顯示器(Liquid Crystal Display;簡稱 LCD)等的一顯示 裝置(圖中未示出),用以向最終使用者顯示資訊。例如 ,可在顯示裝置上向預期購買者顯示安裝狀態的圖形及( 或)文字指示、剩下的試用期間、以及其他資訊。I/O裝 置( 43 0)亦可包括諸如一文數字輸入裝置等的一輸入裝 置(圖中未示出),而該文數字輸入裝置包含文數字及其 φ他鍵,用以將資訊及(或)其他命令選擇傳送到處理器( 4 02 - 406 )。另一類型的使用者輸入裝置包括諸如一滑鼠 、一軌跡球、或游標方向鍵等的游標控制器,用以將方向 資訊及命令選擇傳送到處理器(402 - 4 0 6 ),並控制該顯 示裝置上的游標移動。 系統(400 )亦可包含諸如一數據機、一網路介面卡 、或其他習知介面裝置(例如,用來耦合到以太網路、記 號環網路的那些介面裝置、或爲了提供一通訊鏈路以支援 諸如一區域網路或廣域網路的其他類型之實體連接介面裝 -14- (11) ,1285332 置)等的一通訊裝置(圖中未示出)。換言之,系統( 4 00 )可經由諸如一公司的企業內網路及(或)網際網路 等的一傳統網路基礎結構而被耦合到若干用戶端裝置及( 或)伺服器。 我們當了解,比前文所述例子較多或較少配備之系統 對某些實施例可能是較佳的。因此,可根據諸如價格限制 、性能要求、技術改良、及(或)其他情況等的許多因素 I而隨著不同的實施例以改變系統(4 0 0 )的組態。 請注意,雖然可在諸如處理器(402 - 406 )等的一被 程式化之處理器的控制下執行本說明書所述之實施例,但 是在替代實施例中,也可以諸如客戶端可程式閘陣列( Field-Programmable Gate Array ϊ 簡稱 FPGA)、電晶體-電晶體邏輯(Transistor Transistor Logic ;簡稱 TTL )、 或特定應用積體電路(Application Specific Integrated Circuit ;簡稱 ASIC )等的任何可程式或硬碼式( 參hardcoded )邏輯完全地或部分地實施該等實施例。此外, 可以程式化的一般用途電腦組件及(或)客製化硬體組件 之任何組合來執行本發明的實施例。因此,不應將本說明 書所揭示的任何事項詮釋爲將本發明的各實施例限制在可 以硬體組件的一特定組合執行的一特定實施例。 圖5是用來實施本發明的一個或多個實施例的一多 緒執丫了式處理益(5 0 0 )的一實施例之一*方塊圖。根據一* 實施例,可將一處理器(5 00 )形成爲一單一積體電路。 根據另一實施例,多個積體電路可共同形成一處理器( -15- (12) ,Ϊ285332 条 5 00 ),且根據又一實施例,硬體及軟體常式(例如,二 進位轉換常式)可共同形成處理器(500)。處理器(500 )可包含圖 4所示之一個或多個處理器(402 - 406 )。 如圖所示,一匯流排/記憶體控制器(520 )可將用來執 行的指令提供給一前端(5 3 0 )。前端(5 3 0 )可根據指令 指標(5 70 )而指示自各執行緒擷取指令。可複製指令指 標,以便支援多個執行緒。 ^ 根據一實施例,前端(5 3 0 )可將指令傳送到執行緒 /處理器可分割資源(540 ),以供進一步的處理。執行 緒/處理器可分割資源(540 )可包含若干在邏輯上被分 隔的分割區,而當多個執行緖在處理器( 500 )內工作時 ,該等分割區係爲各特定執行緖:所專用。執行緒/處理器 可分割資源(5 40 )可包含諸如若干指令佇列。當處於一 單一執行緒模式時,可合倂執行緒/處理器可分割資源( 5 40 )的該等分割區,以便形成該一執行緒專用的一單一 •大分割區。 根據一實施例,處理器(500 )亦可包含複製的狀態 (5 8 0 )。複製的狀態(5 80 )可包含足以維護一邏輯處理 器的環境(context)之若干狀態變數。使用複製的狀態( 5 80 )時,多個執行緒可執行,而無須競爭狀態變數0勺11 存。此外,可爲每一執行緒複製暫存器分配邏輯。複製的 與狀態相關之邏輯可配合適當的資源分割區而操作,以便 準備進入的指令以供執行。 根據一實施例,執行緒/處理器可分割資源(540 ) -16- .Ϊ285332 (13) 可將指令傳送到共用的資源(5 5 0 )。共用的資源(5 50 ) 可對指令進行操作,而無須考慮該等指令的來源。例如, 排程器及執行單元可以是不知道執行緒的共用的資源。可 分割資源(540 )可以一種對每一工作中之執行緒提供持 續的進展之公平方式在多個執行緒之間輪流進行,而將來 自該等執行緒的指令傳送到共用的資源(5 5 0 )。 根據一實施例,共用的資源(5 5 0 )之後可設有另一 0 組執行緒/處理器可分割資源(560 )。執行緒/處理器 可分割資源(560 )可包含諸如重定序緩衝區(re-order buffer )等的指令退休資源。因此,執行緒/處理器可分 割資源(560 )可確保:來自每一執行緒的各指令之執行 正確地結束,並適當地更新該執行緒的適當狀態。 根據一實施例,可將下列機制提供給程式設計師:在 整個睡眠-喚醒比較及交換期間,執行有效率的同步功能 ,而無須不斷地輪詢一記憶體位置或指令的執行。例如, _可用與一記憶體存取位置有關的資訊將記憶體存取監視器 (5 1 0 )程式化,以便記億體存取監視器(5 1 0 )能夠監視 該記億體存取位置。因此,記憶體存取監視器(5 1 0 )可 包含一監視位置資訊暫存器(5 1 2 ),且係使用比較邏輯 (5 1 4 )將該監視位置資訊暫存器(5 1 2 )的內容與自匯流 排/記憶體控制器(520 )接收的記億體位置資訊比較。 監視位置資訊暫存器(5 1 2 )可存放有用來指定週期 的類型及(或)可觸發指令的恢復或喚醒的位址之細節。 監視器(5 1 0 )可包含用來啓動恢復信號的暫停時間計數 -17- (14) 1285332 器。此外,監視器(5 1 Ο )可包含一暫存器(5 1 2 ),用以 存放可比對通過一匯流排的資訊之位址。進行該匯流排與 暫存器(5 1 2 )(例如,具有該暫停時間計數器)間之一 比較。任何週期的形式可以是一明確的寫入週期,且(或 )可以是對所有權的一讀取(例如,造成快取線的唯一所 有權之行動),或是嘗試取得一快取線的唯一所有權的另 一代理裝置之一使無效週期。 | 圖 6是具有使用 CMPXCHG —SW機帋丨J (614-618 )的多個處理器( 602 - 606 )的一系統( 600 )的一實施 例之一方塊圖。如圖所示,系統(600 )包含競爭一鎖定 (634)的多個處理器(602 - 606),而該鎖定(634)係 被指定以控制對記憶體(632 )中之共用空間/變數( 636 )的存取(如箭頭(63 8 )所示)。在所示實施例中,每 一處理器(602 - 606)使用 一 CMPXCHG —SW 機制(614 -61 8 ),該機制可以是在每一處理器(602 - 606 )上實施 φ之硬體,且係使用一軟體同步碼執行該機制。爲了圖式的 清晰及更易於了解一實施例,在每一處理器.(602 - 606 ) 中亦釋出了一例示指令序列(620 - 624 )。 如圖所示,係在處理器 (602 ) 上執行 CMPXCHG — SW指令(608 ),而該處理器(602 )成功地 取得了用來存取共用記憶體空間(63 6 )之鎖定(634 )。 可在處理器(602 )擁有該旗號的持續時間中使用記憶體 (63 2 )的共用空間(63 6 ),但是處理器(602 )可在取 得程序期間取得唯一狀態的鎖定(6 3 4 ),並阻止對鎖定 -18- (15) 1285332 (6 3 4 )的其他行動。然後,可將共用的狀態用來 份鎖定(634)。在一實施例中,當另一處理器 6 0 6 )嘗試取得並未閒置的鎖定(6 3 4 )時,處理器 606 )上的 CMPXCHG一SW 指令(6 1 〇 - 6 1 2 )被置 狀態。換言之,例如當處理器(604 )嘗試取得已 處理器取得的鎖定(634 )時,自記憶體(632 )送 指示鎖定(634)正被處理器(602)所使用的一値 一實施例中,並不是在鎖定(6 3 4 )變爲可取得狀 將處理器(604 )置於一持續的 “while”迴圈中, 處理器( 604)中之 CMPXCHG_SW指令(610) 眠狀態。同樣地,當處理器(6 0 6 )正在尋求的被 之鎖定(634 )處於忙碌狀態時,處理器(606 CMPXCHG一SW指令(612 )也被置於睡眠狀態。 在一實施例中,當將一 CMPXCHG_SW指令 612 )置於一·睡眠狀態時,意指:CMPXCHG_SW 6 1 0 - 6 1 2 )是閒置的,且正等候用來緩醒或觸發該 一事件。當 CMPXCHG —SW 指令(610 · 612)處 或睡眠狀態時,處理器(606 - 608 )可持續執行其 作,例如,持續執行其他指令(62 8 - 630 ),但是 、執行、且退休舊的 CMPXCHG —SW指令(610 -之前,可以不使該等指令(628 - 63 0 )退休。換言 何後續的載入指令(例如,指令(628 )或(630 ) 得其値,並執行某些工作或計算,但是在處於睡眠 CMPXCHG —SW指令(610 - 612 )被喚醒之前,該 共用一 (604 -(604 - 入睡眠 被其他 回用來 ,且在 態之前 而是將 置於睡 競爭中 )中之 (6 10 - 指令( 指令的 於閒置 他的工 在喚醒 612 ) 之,任 )可取 狀態的 等後續 -19- (16) t Ϊ285332 參 的載入指令係在處理器(6 Ο 4 - 6 Ο 6 )中在一嘗試或推測狀 態下等候。可以非循序方式執行來自重定序緩衝區(Re_ Order Buffer ;簡稱R〇B )的任何指令,然而,在最舊的 CMPXCHG-SW指令(610 - 612)被喚醒且退休之前,仍 然處於推測階段的新的或開始不久的指令(628 - 63 0 )不 可退休。 在 CMPXCHG-SW指令(610 - 612 )正處於睡眠狀 馨態時,使處理器(604 - 606 )執行各種工作,而不是持續 盤旋等候(spin-waiting )(亦即載入及比較)區域共用 的拷貝,將有助於避免處理器(604 - 606 )被阻擋或碰到 瓶頸。此種技術有助於節省電力及時間,並提高效能。該 技術進一步有助於在各同步程序、之間缺少動態資料共用機 制時的各程序之同時進展。例如,假設一雜湊表(hash table )受到一鎖定(634 )的保護,使多個程序不會同時 更新該雜湊表,且如果兩個程序需要更新該雜湊表的不同 φ部分(例如,將元素加入不同的儲存區),則該技術可讓 兩個程序同時繼續進行。此種技術與下列方式不同:使一 個處理器執行更新,但是其代價是完全阻擋了任何其他處 理器的一切有用之工作,縱使該處理器在動態上不會干擾 到任何其他處理器也是如此。例如,處理器(602 )可能 擁有該鎖定,且找到適當的雜湊表儲存區,並以其値更新 該雜湊表儲存區。同時,並未擁有該鎖定的處理器(604 )可能也找到該適當的儲存區,準備好要被寫入的値及位 置,但是在處理器(604 )能夠取得該鎖定並使 -20- (17) .1285332 CMPXCHG — SW指令(608 )退休之前,不可使用來更新 該雜湊表的指令退休。 在一實施例中,可以一事件的發生(例如,鎖定( 634)被釋出(且可被使用),或當處理器(602 )(在例 示指令序列(620 )中)嘗試使鎖定(63 4 )被重新寫入用 來指示鎖定(634 )的潛在可取得性之鎖定値時)而觸發 CMPXCHG — SW指令(610 · 612 )的喚醒。例如,當指令 | ( 610 )處於睡眠狀態時,處理器(604 )可尋找一新的鎖 定値(例如,指示鎖定被釋出之鎖定値),或觀測一處理 器對改變鎖定値的嘗試(例如,鎖定有可能被釋出,使包 含共用空間(6 3 6 )的快取線無效,或使包含共用空間( 634 )的快取線無效),而監視鎖定(634 )的可取得性。 一旦一處理器作了改變鎖定値的嘗試之後(例如,處理器 (6 02 )使處理器(604 - 606 )的快取記億體(圖中未示 出)中之變數無效,以便取得寫入鎖定變數的唯一所有權 φ ),則觸發了 CMPXCHG —SW指令(610 )的喚醒。處理 器(604 )然後讀取新的値,並再度要求共用空間(63 6 ) 的鎖定(634 )(例如,鎖定値),且回應該要求而接收 到鎖定變數(634 ),且使 CMPXCHG-SW 指令(610 ) 被執行及退休,並且接著使(CMPXCHG_SW指令(610 )處於睡眠狀態時被執行的)任何其他指令(628 )退休 。藉由將指令(610)置於睡眠狀態,處理器(604 )避免 持續循環地執行典型的載入、比較、及分支指令序列,因 而有助於提高效率並節省電力。 -21 - (18) 1285332 在一實施例中,CMPXCHG_SW機制(614 - 618)有 助於避免產生一軟體式盤旋(spin )迴圈,這是因爲可在 硬體中實施等候(“while” 迴圈)。在一實施例中, CMPXCHG^SW機制(614 · 618 )是基於硬體及(或)軟 體,而將該 “while”迴圈整合到 CMPXCHG_SW指令( 610 )的睡眠狀態,因而有助於避免持續地執行 “while” 迴圈。執行機制(6 1 4 - 6 1 8 )並使機制(6 1 4 - 6 1 8 )同步 的一例示同步碼包含: (**譯者註:請 copy 原文 P.16第 21行至 P. 17第 1 行的程式碼) t ..: .. 其中 e ax 及 ecx (以及 ebx、 edx 等) 意指通常也被稱 爲 R1或 Regl、 R2 或 Reg2、 R3 或 Reg3等的各暫 存器,zf意指處理器的零旗標狀態暫存器,且 jne ( φ jump if not equal的縮寫)意指:決定該嘗試是否成功, 且如果該嘗試不成功,則分支回到該標籤(例如,jne標 籤),以便執行一指令。 圖 7是甩來執行 CMPXCHG_SW機制的一程序的 一實施例之一流程圖。首先,在處理步驟(702 )中,一 多處理器系統中之一處理器企圖取得一鎖定。現在考慮下 列狀況··該企圖可能不需要該鎖定的一唯一所有權,而是 可在一共用的狀態下取得該鎖定。在決定步驟(7 0 4 )中 ,決定是否可取得該鎖定。如果可取得該鎖定,則該處理 -22- (19) 1285332 器在處理步驟(706 )中使用傳統的比較與交換操作而取 得該鎖定。 在一實施例中,如果無法取得該鎖定,則在處理步驟 ( 708 )中將該處理器中之 CMPXCHG_SW指令置於睡眠 狀態,直到以鎖定値的改變(或一嘗試的改變)喚醒該指 令爲止。換言之,一旦來自記憶體的値被送回到該處理器 ,而指示了該鎖定的無法取得,則將正企圖得到該鎖定的 _ 該處理器中之 CMPXCHG_SW指令置於睡眠狀態,而不 是使該 CMPXCHG-SW指令持續在一 “while”迴圈中盤 旋並在每一迴圈中重新要求該鎖定。在處理步驟(710) 中,該處理器的記憶體系統監視鎖定値的任何改變,而鎖 定値的任何改變可能指示該鎖定的可取得性或潛在可取得 性。例如,目前取得該鎖定的處理器可嘗試改變鎖定値, 以便釋出該鎖定,以供其他處理器嘗試並取得該鎖定。該 記憶體系統可監視任何此種行動,且任何此種行動可喚醒 $ CMPXCHG_SW指令,以便監視可能的鎖定可取得性。 在一實施例中,當該 CMPXCHG —SW指令正處於睡 眠狀態時,處理器的記憶體系統監視鎖定値的改變。此外 ,可載入及執行其中包括 CMPXCHG-SW指令的其他指 令、以及 ROB中之載入指令,使該處理器在處理步驟( 7 1 2 )中可持續執行其他的工作。換言之,該處理器中之 CMPXCHG一SW指令的睡眠不只是不會將該處理器置於一 持續的盤旋狀態或一 “while”迴圈中,而且也不會使該 處理器被阻擋或無用。反之,雖然係以非循序方式執行, -23- .1285332 (20) 但是可在關鍵性部分之內載入並以推測方式執行任何數目 的後續指令,但是在最舊的指令(例如,睡眠的 CMPXCHG_SW 指令)退休之前,不可使比睡眠的 CMPXCHG^SW指令更爲新的指令退休。不會有任何處理 器被阻擋,且這些處理器持續執行有用的工作,因而節省 電力及時間,並提高效能。 在決定步驟(7 1 4 )中,決定該鎖定値是否已被改變 ,或者嘗試重新寫入該値。如果並非如此,則在處理步驟 (7 1 2 )中繼續進行執行其他指令的程序。然而,如果已 嘗試改變該鎖定値,或者如果該値已被改變,則在處理步 驟(716)中觸發睡眠的 CMPXCHG_SW指令之喚醒。一 旦該 CMPXCHG_SW指令被喚醒且可取得該鎖定之後, 該處理器在步驟(7〇6 )中取得該鎖定。然後可使 CMPXCHG一SW 指令退休,作爲喚醒該 CMPXCHG —SW 指令的一部分。此外,亦可使該關鍵性部分中已被以推測 φ方式執行過的任何後續指令退休。 圖 8是用來實施 CMPXCHG —SW機制的一狀態機 (800 )的一實施例之一方塊圖。如果可在該處理器中取 得快取線,且可取得鎖定,則通過起始的軟體 “while” 迴圈,且執行該指令(例如,CMPXCHG_S W指令)。如 圖所示,在步驟(802 )中,發出載入指令。如果在步驟 (8 (Μ )中命中快取線,且在讀取該値之後,決定可取得 該鎖定(該鎖定是“未被鎖定的”),則在步驟(806 )中 發出讀取該快取線的所有權之一要求。然後啓動自動取得 -24- (21) Γ285332 該鎖定之機制,而造成起始諸如載入等的各微指令(uops )° 在一實施例中,係在步驟(802 )中發出該載入指令 ,但是在步驟(8 1 0 )中,並未命中該快取線,或另一處 理器正持有該快取線(例如,被鎖定),或者快取記憶體 中並無足夠的資料以供讀取或得知該快取線是否被鎖定。 可能要耗用一些時間自匯流排取得該快取線的資料,因而 可能要耗用數個時脈來執行。因而在步驟(812)中造成 記憶體排序緩衝區(Memory Order Buffer;簡稱 MOB) 中之載入指令的睡眠。係將該 Μ Ο B用來:緩衝存放載 入及儲存指令,並確保維持了記憶體操作的正確順序。也 將該 ΜΟΒ用來重新發出因爲諸如快取記憶體未命中、 記憶體操作排序相依性、或睡眠狀態等的某一理由而尙未 完成的載入指令。此外,該 ΜΟΒ追蹤尙未完成載入指 令的原因,並在處理了妨礙完成的狀況之後,喚醒該等載 φ入指令。在一實施例中,資料是在快取記憶體中,且在讀 取該値之後,在步驟(8 1 0 )中決定該資料是被鎖定的( 例如,另一處理器擁有該資料)。因而也在步驟(81 2 ) 中造成該載入指令在該 ΜΟΒ 中睡眠。在一實施例中, 下列兩種情形中之一種情形可能使該快取線變爲可取得: (1 )可取得該快取線(例如,該快取線現在是在處理器 的快取記憶體中)及(2 )另一處理器嘗試重新寫入變數 中之値;因而可在步驟(814)中觸發該載入指令的喚醒 。在步驟(816)中,重新發出該載入指令,且如果可取 -25- 1285332 (22) 得該快取線(例如,發生一命中),且在讀取該値之後在 步驟(8 1 8 )中決定可取得該鎖定(未被鎖定的),則在 步驟(806 )中發出對所有權的要求。然而,如果在步驟 (820 )中發生另一未命中,則y94 步驟(8 1 2 )中使該載入指令回到睡眠狀態。 在一實施例中,可加入一暫停時間計數器,以便提供 對睡眠時間的一限制。例如,在步驟(822 )中啓動該暫 g停時間計數器,而在自步驟(8 1 2 )中該處理器啓動該睡 眠起而經過某一段時間之後,終止該睡眠時間。換言之, 該處理器放棄被另一處理器或被~事件喚醒,且反而執行 其他的工作(例如,進入處理步驟(806 ))。例如,當 一未處於工作狀態的一處理器擁_ 一鎖定,且可能使等候 中之其他處理器很少有機會或毫無機會取得該鎖定時,該 暫停時間計數器可能是必要的。在一實施例中,在被該暫 停時間計數器喚醒之後,該指令可嘗試取得該鎖定,並可 φ在一未成功的情況下,使該指令退休。在另一實施例中, 在被喚醒之後,該指令可中斷對取得該鎖定的嘗試,且須 在一未成功的情況下退休。此外,在步驟(8 24 )中暫停 時間到期時,等候該鎖定的處理器(例如,具有處於睡眠 模式的 CMPXCHG — SW指令之處理器)放棄取得該特定 的鎖定,並執行其他的工作,以便持續是有效率的。此外 ,步驟(824 )中暫停時間到期可能造成自步驟(8 1 2 )中 之睡眠狀態退出,而指示該處理器在一段時間中企圖取得 該鎖定,但無法證明用來指示另一處理器正在寫入該快取 -26 - (23) Γ285332 線的使該快取線無效之情形。 可在諸如 Intel的 Pentium處理器等的任何數目的 微處理器架構中實施該 CMPXCHG_SW 機制,且該 CMPXCHG —SW機制可與任何數目的微處理器架構相容。 這些架構的改變對該處理器的 Μ Ο B及資料快取記憶體 單元(Data Cache Unit ;簡稱 DCU )之影響可能是相當 小的,而其中用來實施“睡眠”模式的狀態機(8〇〇 )可 被放置在該 DCU中。例如,可將記憶體系統中之3位 元的資料用來指示被鎖定的或未被鎖定的,且因而可將該 3 位元的資料與一暫存器(例如,eax暫存器)的最低 3位元比較。然而,可在該記憶體系統中將任何數目的位 元(例如,32位元)用來指示鎖定/未鎖定狀態,且可 以任何必須或所需之方式分割該數目(例如,用於鎖定及 未鎖定的位元數目可能無須相同)。此外,該 CMPXCHG —SW機制可將 〇及1的値分別用於未被鎖 定的及被鎖定的値,因而該等 3個最低有效位元可能是 足夠的。在一實施例中,一執行緒可插入一識別(ID )値 (並非1及 〇),用以指示該狀態。此外,任何非零値 可指示鎖定,而 〇値可指示未被使用。在一實施例中, 如果3位元的預期未被使用値與自記憶體載入的位元値 是不同的,則可將該鎖定視爲不是未被使用的;然而,如 果該等値是相符的,則鎖定可被視爲或可不被視爲是未被 使用的。例如,該比較可指示現有値與未被鎖定的値間之 一部分符合。部分符合可啓動嘗試取得該鎖定的一操作( -27- 1285332 (24) 例如,處理步驟(806 )及(808 ))。然而,當使用 CMPXCHG —SW機制比較所有位元時,該操作可能發現該 鎖定被另一處理器取得,並可採用程式碼中之分支,並再 度嘗試。 例如,在一實施例中,比較器存放 eax[2:0]的値( 例如,eax 的較低 3 位元),且當爲 load_with_store_intent微指令而自一快取記憶體(例如 I ,L1快取記憶體)送回資料時,將該資料與 eax比較 器所存放的値比較。該 l〇ad_with_storeJntent微指令是 CMPXCHG指令的一構成微指令,且載入被用來作爲一鎖 定變數的記憶體位置之値。如果該等兩個値相等,則將該 値寫回到寫回匯流排。如果該< 等兩個値不相、等,則該 DCU中斷該寫回,並在 MOB中將載入指令置於睡眠狀 態,且啓動暫停時間計數器。如果該 MOB 偵測到對鎖 定快取線的一使無效監視,則該 MOB喚醒且重新派發 0該 load_with_store_intent微指令。然後可在每一時脈上 遞減該暫停時間計數器。當該計數器的計數等於 〇時, 該 DCU可將一暫停時間信號傳送到MOB。當該 MOB 接收到暫停時間信號時,該 MOB 即派發該該 load_with_store」ntent微指令。於該派發期間,不論該 比較的結果爲何,該 load_with_store_intent微指令都執 行至完成且退休。 我們當了解,在前文對本發明的實施例之說明中,爲 了使揭示有效率而有助於對本發明的各種觀點的一或多個 -28- (25) 1285332 觀點之了解,有時將本發明的各項特徵聚集在本發明的一 單一實施例、圖式、或中。雖然已說明了且在附圖中示出 了某些實施例,但是我們當了解,這些實施例只具有例示 性而不具有限制性,且本發明的實施例將不限於所示出及 說明的特定結構及配置,這是因爲對此項技術具有一般知 識者在參閱本發明的揭示之後,將可作出各種修改。 【圖式簡單說明】 最後的申請專利範圍詳細述及了本發明的特徵。若參 閱前文中之詳細說明並配合各附圖,將可對本發明的實施 例及其優點有最佳的了解 在這些附圖中: ;, 圖1是具有存取一共用記憶體空間的若干處理器的 一例示電腦系統之一方塊圖; 圖 2是一指令的一編碼體系的一實施例之一方塊圖 , 圖3是執行具有睡眠-喚醒機制的比較與交換操作的 一處理架構的一實施例之一方塊圖; 圖 4是用來實施本發明的一個或多個實施例的一例 示電腦系統之一方塊圖; 圖 5是用來實施本發明的一個或多個實施例的一多 緒執行式處理器的一實施例之一方塊圖; 圖6是具有使用依據有睡眠-喚醒機制的比較與交換 操作的多個處理器的一系統的一實施例之一方塊圖; -29 - 1285332 (26) 圖 7是用來執行具有睡眠-喚醒機制的比較與交換操 作的一程序的一實施例之一流程圖;以及 匱1 8是用於具有睡眠-喚醒機制的比較與交換操作的 一狀態機的一實施例之一方塊圖。 【主要元件符號說明】 1 00,400,600電腦系統 102-106,3 02,402-406,602-606 處理器 1 08,320,63 2 記憶體 1 1 0,322,634 鎖定 1 1 2,63 8 存取 1 1 4,326,63 6共用記憶體空間 200 指令 202 運算碼 204-210 300 304 306 308 3 14
3 16,318 3 12 412 414 運鼻兀 處理架構 執行單元 暫存器檔 暫存器 解碼器 匯流排 匯流排介面單元 處理器匯流排 系統介面 -30- (27)1285332
43 2 控制匯流排 434 位址匯流排 43 6 資料匯流排 4 18 記憶體控制器 4 16 主記憶體 420 輸入/輸出介面 424 輸入/輸出橋接器 426 輸入/輸出匯流排 428 輸入/輸出控制器 43 0 I/O 裝置 500 多緒執行式處理器 520 匯流排/記憶體控制;器 530 丄山 m m 570 指令指標 540,5 60 執行緒/處理器可分割資源 580 複製的狀態 550 共用的資源 5 10 記憶體存取監視器 512 監視位置資訊暫存器 614-618 CMPXCHG_S W 機制 620-624 指令序列 608-612 CMPXCHG_S W 指令 626-630 其他指令 800 狀態機 -31 -
Claims (1)
- •1285332 (1):/:..¾ Λ所揭斑申請專利範圍 Π附件4 A : 第9 4 1 1 9 8 7 8號專利申請案 中文申請專利範圍替換本 民國9 6年1月22日修正 1 · 一種利用睡眠-喚醒機制來執行比較與交換操作之 方法,包含下列步驟:執行一處理器中之一指令,以便代表該處理器而協助 取得一鎖定; 如果該鎖定是無法取得的,則將該處理器中之該指令 置於睡眠狀態,其中該指令將睡眠到一事件發生爲止。 2 ·如申請專利範圍第 1項之方法,進一步包含下 列步驟:監視與該鎖定對應的一記憶體位址,其中該鎖定 係用於控制處理器對一記憶體的一共用記憶體空間之存取3.如申請專利範圍第 1項之方法,其中該指令包 含一比較及交換指令,用以執行該比較與交換操作,以便 使該處理器取得該鎖定,而該比較與交換操作包括一基元 的比較與交換操作。 4 ·如申請專利範圍第 1項之方法,進一步包含下 列步驟: 監視具有一鎖定値的一目標,以便決定是否已發生了 該事件,對該目標的該監視包括觀察下列狀況中之一或多 個狀況··該鎖定値的改變、以及改變該鎖定値的一嘗試, 其中該目標包括一暫存器或一記憶體位置;1285332 (2) 偵測該事件的發生; 當該事件發生時,喚醒該指令,其中該事件包含下列 各項中之一項或多項:如果已改變了該鎖定値,則該鎖定 變爲可取得;以及如果已發生了改變該鎖定値的嘗試,則 該鎖定可能變爲可取得;以及 該處理器取得該可取得的鎖定。 5 ·如申請專利範圍第 1項之方法,其中將該指令 φ 置於睡眠狀態之該步驟包含下列步驟:釋出該處理器之資 源以用來執行其他工作,而該等其他工作包括下列各項中 之一項或多項:載入複數個指令、以及執行該複數個指令 6.如申請專利範圍第 5項之方法,其中釋出資源 的該步驟包含下列步驟: 釋出一暫存器池中之複數個暫存器; 釋出一指令佇列中之複數個指令佇列入口欄;釋出一儲存緩衝區中之複數個儲存緩衝區入口欄;以 及 釋出一重定序緩衝區中之複數個重定序緩衝區入口欄 7. 一種利用睡眠-喚醒機制來執行比較與交換操作之 處理器,包含: 一執行單元,該執行單元可執行一指令,以便代表該 處理器取得一鎖定;以及 一睡眠-喚醒機制,而在當該處理器無法取得該鎖定 -2 - 1285332 (3) ί—ΙΟΙ一—--- I年月曰修正替換頁 ...... Ill 1 2 3 4 5 ''iHwnwr-i*iMi jin II. _____ ,則該睡眠-喚醒機制將該指令置於睡眠狀態,其中該指 令將睡眠到一事件發生爲止。 8 ·如申請專利範圍第 7項之處理器,其中該指令 包含一比較及交換指令,用以執行該比較與交換操作,以 便使該處理器取得該鎖定,而該比較與交換操作包括一基 元比較與交換操作。 9·如申請專利範圍第 7項之處理器,進一步包含監視邏輯,用以監視具有一鎖定値的一目標,以便決 定是否已發生了該事件,對該目標的該監視包括觀察下列 狀況中之一或多個狀況:該鎖定値的改變、以及改變該鎖 定値的一嘗試,其中該目標包括一專用暫存器或一記憶體 位置;偵測邏輯,用以偵測該事件的發生;以及 睡眠-喚醒機制,當該事件發生時,該睡眠-喚醒機制 喚醒該指令,其中該事件包含下列各項中之一項或多項: 如果已改變了該鎖定値,則該鎖定變爲可取得;以及如果 已發生了改變該鎖定値的嘗試,則該鎖定可能變爲可取得 -3 - 1 〇.如申請專利範圍第7項之處理器,其中將該指 2 令置於睡眠狀態包含··釋出該處理器之資源以執行其他工 3 作,而該等其他工作包括下列各項中之一項或多項:載λ 4 複數個指令、以及執行該複數個指令。 5 11.如申請專利範圍第10項之處理器,其中該釋 1285332 [ f 正替換頁 (4) 。— j" 11 1〜一...·L - "IIM 出資源包含: 釋出一暫存器池中之複數個暫存器; 釋出一指令佇列中之複數個指令佇列入口攔; 釋出一儲存緩衝區中之複數個儲存緩衝區入口欄;以 及 釋出一重定序緩衝區中之複數個重定序緩衝區入口欄12·如申請專利範圍第 7項之處理器,進一步包含 一匯流排介面單元,用以將該處理器耦合到一記憶體,該 匯流排介面單元進一步包含該專用暫存器。 1 3 ·如申請專利範圍第 7項之處理器,進一步包含 一指令集,該指令集具有其中包括該比較及交換指令的複 數個指令。 14· 一種利用睡眠-喚醒機制來執行比較與交換操作 之多處理器系統,包含: 其中包括一第一處理器之複數個處理器,該第一處理 器具有: 一執行單元,該執行單元可執行一指令,以便代表該 第一處理器取得一鎖定;以及 一睡眠-喚醒機制,當該第一處理器無法取得該鎖定 ,則該睡眠-喚醒機制將該指令置於睡眠狀態,其中該指 令將被置於睡眠狀態到一事件發生爲止; 被耦合到該複數個處理器之一記憶體,該記憶體具有 被該複數個處理器共用之一記憶體空間;以及 -4 - 1285332 (5)被耦合到該記憶體及該複數個處理器之一鎖定儲存位 置,該鎖定儲存位置具有用來控制對該記憶體空間的存取 之鎖定。 1 5 .如申請專利範圍第 1 4項之多處理器系統,其 中該指令包含一比較及交換指令,用以執行該比較與交換 操作,以便使具有一邏輯處理器或執行緒的該第一處理器 取得該鎖定。1 6 ·如申請專利範圍第 1 4項之多處理器系統,進 一步包含監視邏輯,用以監視具有一鎖定値的一目標,以 便決定是否已發生了該事件,對該目標的該監視包括觀察 下列狀況中之一或多個狀況:該鎖定値的改變、以及改變 該鎖定値的一嘗試,其中該目標包括一專用暫存器或一記 憶體位置;偵測邏輯,用以偵測該事件的發生;以及 睡眠喚醒機制,當該事件發生時,該睡眠-喚醒機制 喚醒該指令,其中該事件包含下列各項中之一項或多項: 如果已改變了該鎖定値,則該鎖定變爲可取得;以及如果 已發生了改變該鎖定値的嘗試,則該鎖定可能變爲可取得 1 7 ·如申請專利範圍第1 4項之多處理器系統,其 中將該指.令置於睡眠狀態包含:釋出該第一處理器之資源 以執行其他工作,而該等其他工作包括下列各項中之一項 或多項:載入複數個指令、以及執行該複數個指令。 1 8 .如申請專利範圍第1 7項之多處理器系統,其 -5- 1285332 華调,、曰修d)正替換頁I (6) 中該釋出資源包含: 釋出一暫存器池中之複數個暫存器; 釋出一指令佇列中之複數個指令佇列入口欄; 釋出一儲存緩衝區中之複數個儲存緩衝區入口欄·,以 及 釋出一重定序緩衝區中之複數個重定序緩衝區入口欄19. 一種利用睡眠-喚醒機制來執行比較與交換操作 之機器可讀取媒體,其上儲存有代表若干組指令的資料, 當一機器執行該等組指令時,將使該機器執行下列步驟: 執行一處理器中之一指令,以便代表該處理器而協助 取得一鎖定; 如果該鎖定是無法取得的,則將該處理器中之該指令 置於睡眠狀態,其中該指令將睡眠到一事件發生爲止。 20.如申請專利範圍第 19項之機器可讀取媒體, 其中當該機器執行該等組指令時,將進一步使該機器監視 與該鎖定對應的一記憶體位址,其中該鎖定係用於控制處 理器對一記憶體的一共用記憶體空間之存取。 2 1 ·如申請專利範圍第 1 9項之機器可讀取媒體, 其中該指令包含一比較及交換指令,用以執行該比較與交 換操作,以便使該處理器取得該鎖定,而該比較與交換操 作包括一基元的比較與交換操作。 22.如申請專利範圍第 1 9項之機器可讀取媒體, 其中當該機器執行該等組指令時,將進一步使該機器執行 ·、λ r、, 军月“曰辑)正替換頁 1285332 (7) 下列步驟: 監視具有一鎖定値的一目標,以便決定是否已發生了 該事件,對該目標的該監視包括觀察下列狀況中之一或多 個狀況:該鎖定値的改變、以及改變該鎖定値的一嘗試, 其中該目標包括一暫存器或一記憶體位置; 偵測該事件的發生;當該事件發生時,喚醒該指令,其中該事件包含下列 各項中之一項或多項:如果已改變了該鎖定値,則該鎖定 變爲可取得;以及如果已發生了改變該鎖定値的嘗試,則 該鎖定可能變爲可取得;以及 代表該處理器取得該可取得的鎖定。 23 .如申請專利範圍第 1 9項之機器可讀取媒體, 其中將該指令置於睡眠狀態之該步驟包含下列步驟:釋出 該處理器之資源以執行其他工作,而該等其他工作包括下 列各項中之一項或多項:載入複數個指令、以及執行該複 數個指令。 24.如申請專利範圍第 23項之機器可讀取媒體, 其中該釋出資源包含: 釋出一暫存器池中之複數個暫存器; 釋出一指令佇列中之複數個指令佇列入口欄; 釋出一儲存緩衝區中之複數個儲存緩衝區入口欄;以 及 釋出一重定序緩衝區中之複數個重定序緩衝區入口欄
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/880,638 US8607241B2 (en) | 2004-06-30 | 2004-06-30 | Compare and exchange operation using sleep-wakeup mechanism |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200614075A TW200614075A (en) | 2006-05-01 |
TWI285332B true TWI285332B (en) | 2007-08-11 |
Family
ID=34941754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW094119878A TWI285332B (en) | 2004-06-30 | 2005-06-15 | Operating method, processor, multiple-processor system, and machine-readable medium for performing compare and exchange instruction using sleep-wakeup mechanism |
Country Status (6)
Country | Link |
---|---|
US (2) | US8607241B2 (zh) |
EP (1) | EP1612661A3 (zh) |
JP (2) | JP2006031691A (zh) |
KR (1) | KR100829638B1 (zh) |
CN (1) | CN100407136C (zh) |
TW (1) | TWI285332B (zh) |
Families Citing this family (70)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8099538B2 (en) | 2006-03-29 | 2012-01-17 | Intel Corporation | Increasing functionality of a reader-writer lock |
US20070271450A1 (en) * | 2006-05-17 | 2007-11-22 | Doshi Kshitij A | Method and system for enhanced thread synchronization and coordination |
US8468526B2 (en) * | 2006-06-30 | 2013-06-18 | Intel Corporation | Concurrent thread execution using user-level asynchronous signaling |
KR101205323B1 (ko) * | 2006-09-28 | 2012-11-27 | 삼성전자주식회사 | 리텐션 입/출력 장치를 이용하여 슬립모드를 구현하는시스템 온 칩 |
US20100241812A1 (en) * | 2007-10-18 | 2010-09-23 | Nxp B.V. | Data processing system with a plurality of processors, cache circuits and a shared memory |
US8312458B2 (en) | 2008-02-01 | 2012-11-13 | International Business Machines Corporation | Central repository for wake-and-go mechanism |
US8725992B2 (en) | 2008-02-01 | 2014-05-13 | International Business Machines Corporation | Programming language exposing idiom calls to a programming idiom accelerator |
US8015379B2 (en) * | 2008-02-01 | 2011-09-06 | International Business Machines Corporation | Wake-and-go mechanism with exclusive system bus response |
US8145849B2 (en) * | 2008-02-01 | 2012-03-27 | International Business Machines Corporation | Wake-and-go mechanism with system bus response |
US8452947B2 (en) * | 2008-02-01 | 2013-05-28 | International Business Machines Corporation | Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms |
US8225120B2 (en) | 2008-02-01 | 2012-07-17 | International Business Machines Corporation | Wake-and-go mechanism with data exclusivity |
US8171476B2 (en) | 2008-02-01 | 2012-05-01 | International Business Machines Corporation | Wake-and-go mechanism with prioritization of threads |
US8880853B2 (en) * | 2008-02-01 | 2014-11-04 | International Business Machines Corporation | CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock |
US8640141B2 (en) | 2008-02-01 | 2014-01-28 | International Business Machines Corporation | Wake-and-go mechanism with hardware private array |
US8612977B2 (en) * | 2008-02-01 | 2013-12-17 | International Business Machines Corporation | Wake-and-go mechanism with software save of thread state |
US8341635B2 (en) | 2008-02-01 | 2012-12-25 | International Business Machines Corporation | Hardware wake-and-go mechanism with look-ahead polling |
US8316218B2 (en) * | 2008-02-01 | 2012-11-20 | International Business Machines Corporation | Look-ahead wake-and-go engine with speculative execution |
US8127080B2 (en) | 2008-02-01 | 2012-02-28 | International Business Machines Corporation | Wake-and-go mechanism with system address bus transaction master |
US8386822B2 (en) * | 2008-02-01 | 2013-02-26 | International Business Machines Corporation | Wake-and-go mechanism with data monitoring |
US8250396B2 (en) * | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Hardware wake-and-go mechanism for a data processing system |
US8732683B2 (en) | 2008-02-01 | 2014-05-20 | International Business Machines Corporation | Compiler providing idiom to idiom accelerator |
US8516484B2 (en) | 2008-02-01 | 2013-08-20 | International Business Machines Corporation | Wake-and-go mechanism for a data processing system |
US8788795B2 (en) * | 2008-02-01 | 2014-07-22 | International Business Machines Corporation | Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors |
US8145931B2 (en) * | 2008-05-27 | 2012-03-27 | Sharp Laboratories Of America, Inc. | Imaging device with adaptive power saving behavior and method for use thereon |
US8555292B2 (en) * | 2008-06-27 | 2013-10-08 | Microsoft Corporation | Synchronizing communication over shared memory |
EP2144163A1 (en) * | 2008-07-09 | 2010-01-13 | Software AG | Method and system for synchronizing the execution of a critical code section |
US7792916B2 (en) * | 2008-10-20 | 2010-09-07 | International Business Machines Corporation | Management of cluster-wide resources with shared variables |
US20100146169A1 (en) * | 2008-12-05 | 2010-06-10 | Nuvoton Technology Corporation | Bus-handling |
US8230201B2 (en) * | 2009-04-16 | 2012-07-24 | International Business Machines Corporation | Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system |
US8082315B2 (en) * | 2009-04-16 | 2011-12-20 | International Business Machines Corporation | Programming idiom accelerator for remote update |
US8145723B2 (en) * | 2009-04-16 | 2012-03-27 | International Business Machines Corporation | Complex remote update programming idiom accelerator |
US8886919B2 (en) | 2009-04-16 | 2014-11-11 | International Business Machines Corporation | Remote update programming idiom accelerator with allocated processor resources |
US8156275B2 (en) * | 2009-05-13 | 2012-04-10 | Apple Inc. | Power managed lock optimization |
US8266383B1 (en) * | 2009-09-28 | 2012-09-11 | Nvidia Corporation | Cache miss processing using a defer/replay mechanism |
US8464035B2 (en) | 2009-12-18 | 2013-06-11 | Intel Corporation | Instruction for enabling a processor wait state |
US8601242B2 (en) * | 2009-12-18 | 2013-12-03 | Intel Corporation | Adaptive optimized compare-exchange operation |
US8996845B2 (en) * | 2009-12-22 | 2015-03-31 | Intel Corporation | Vector compare-and-exchange operation |
US8516577B2 (en) * | 2010-09-22 | 2013-08-20 | Intel Corporation | Regulating atomic memory operations to prevent denial of service attack |
US8732496B2 (en) * | 2011-03-24 | 2014-05-20 | Nvidia Corporation | Method and apparatus to support a self-refreshing display device coupled to a graphics controller |
JP5819184B2 (ja) * | 2011-12-28 | 2015-11-18 | 富士通株式会社 | 情報処理装置及び情報処理装置の制御方法 |
TWI646422B (zh) | 2012-06-15 | 2019-01-01 | 英特爾股份有限公司 | 在處理器中之免消歧義失序載入/儲存佇列方法、微處理器、和非暫態性電腦可讀取儲存媒體 |
KR101996351B1 (ko) | 2012-06-15 | 2019-07-05 | 인텔 코포레이션 | 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐 |
WO2013188701A1 (en) | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | A method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization |
CN104583936B (zh) * | 2012-06-15 | 2019-01-04 | 英特尔公司 | 具有组成按序从存储器进行读取的加载的存储器一致性模型中的乱序加载的信号量方法和系统 |
WO2013188306A1 (en) | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | Reordered speculative instruction sequences with a disambiguation-free out of order load store queue |
EP2862069A4 (en) | 2012-06-15 | 2016-12-28 | Soft Machines Inc | DEFINING INSTRUCTIONS TO REORDER AND OPTIMIZE LOADING AND STORAGE |
KR20170102576A (ko) | 2012-06-15 | 2017-09-11 | 인텔 코포레이션 | 분산된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐 |
US8719504B2 (en) * | 2012-09-14 | 2014-05-06 | International Business Machines Corporation | Efficient processing of cache segment waiters |
CN104854845B (zh) * | 2012-10-04 | 2019-07-23 | 高通股份有限公司 | 使用高效的原子操作的方法和装置 |
CN103885824B (zh) * | 2012-12-21 | 2017-06-20 | 华为技术有限公司 | 接口控制电路、设备和标识切换方法 |
TWI573015B (zh) | 2013-06-19 | 2017-03-01 | 祥碩科技股份有限公司 | 防超時方法及資料處理系統 |
US9465432B2 (en) * | 2013-08-28 | 2016-10-11 | Via Technologies, Inc. | Multi-core synchronization mechanism |
US9466091B2 (en) | 2013-09-26 | 2016-10-11 | Imagination Technologies Limited | Atomic memory update unit and methods |
US11257271B2 (en) | 2013-09-26 | 2022-02-22 | Imagination Technologies Limited | Atomic memory update unit and methods |
GB2520603B (en) * | 2013-09-26 | 2016-04-06 | Imagination Tech Ltd | Atomic memory update unit and methods |
US9817703B1 (en) * | 2013-12-04 | 2017-11-14 | Amazon Technologies, Inc. | Distributed lock management using conditional updates to a distributed key value data store |
US9372500B2 (en) | 2014-02-27 | 2016-06-21 | Applied Micro Circuits Corporation | Generating a timeout signal based on a clock counter associated with a data request |
US9454370B2 (en) | 2014-03-14 | 2016-09-27 | International Business Machines Corporation | Conditional transaction end instruction |
US9558032B2 (en) | 2014-03-14 | 2017-01-31 | International Business Machines Corporation | Conditional instruction end operation |
US10120681B2 (en) | 2014-03-14 | 2018-11-06 | International Business Machines Corporation | Compare and delay instructions |
US10198274B2 (en) * | 2015-03-27 | 2019-02-05 | Intel Corporation | Technologies for improved hybrid sleep power management |
US10191747B2 (en) * | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
CN105068904A (zh) * | 2015-08-17 | 2015-11-18 | 浪潮电子信息产业股份有限公司 | 一种linux系统下自动计算内存理论带宽的方法 |
US11216378B2 (en) * | 2016-09-19 | 2022-01-04 | Advanced Micro Devices, Inc. | Techniques for handling cache coherency traffic for contended semaphores |
CN110825530B (zh) * | 2018-08-10 | 2022-12-23 | 昆仑芯(北京)科技有限公司 | 用于人工智能芯片的指令执行方法和装置 |
US10901807B2 (en) | 2019-01-02 | 2021-01-26 | International Business Machines Corporation | Computer system with concurrency for multithreaded applications |
US11105645B2 (en) * | 2019-05-28 | 2021-08-31 | Glazberg, Applebaum & co. | Navigation in vehicles and in autonomous cars |
CN112130904B (zh) * | 2020-09-22 | 2024-04-30 | 黑芝麻智能科技(上海)有限公司 | 处理系统、处理器间通信方法、以及共享资源管理方法 |
JP7509021B2 (ja) * | 2020-12-14 | 2024-07-02 | トヨタ自動車株式会社 | 車載システム、車載システム制御方法、及び車載システム制御プログラム |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5274809A (en) * | 1988-05-26 | 1993-12-28 | Hitachi, Ltd. | Task execution control method for a multiprocessor system with enhanced post/wait procedure |
US5487156A (en) * | 1989-12-15 | 1996-01-23 | Popescu; Valeri | Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched |
JPH05225149A (ja) | 1992-02-13 | 1993-09-03 | Toshiba Corp | ロック方式 |
JPH07319716A (ja) | 1994-05-23 | 1995-12-08 | Hitachi Ltd | 計算機システムの資源の排他制御方式 |
JP3745800B2 (ja) | 1995-09-29 | 2006-02-15 | 富士通株式会社 | 共有資源の排他制御方式 |
US5787026A (en) * | 1995-12-20 | 1998-07-28 | Intel Corporation | Method and apparatus for providing memory access in a processor pipeline |
US6938263B2 (en) * | 1996-04-23 | 2005-08-30 | Sun Microsystems, Inc. | System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space |
US6237024B1 (en) | 1998-03-20 | 2001-05-22 | Sun Microsystem, Inc. | Method and apparatus for the suspension and continuation of remote processes |
US5860126A (en) * | 1996-12-17 | 1999-01-12 | Intel Corporation | Controlling shared memory access ordering in a multi-processing system using an acquire/release consistency model |
US5889983A (en) * | 1997-01-21 | 1999-03-30 | Intel Corporation | Compare and exchange operation in a processing system |
US5790851A (en) | 1997-04-15 | 1998-08-04 | Oracle Corporation | Method of sequencing lock call requests to an O/S to avoid spinlock contention within a multi-processor environment |
US6112222A (en) | 1998-08-25 | 2000-08-29 | International Business Machines Corporation | Method for resource lock/unlock capability in multithreaded computer environment |
US6223335B1 (en) * | 1998-12-09 | 2001-04-24 | Sun Microsystems, Inc. | Platform independent double compare and swap operation |
JP2001084235A (ja) * | 1999-09-10 | 2001-03-30 | Nec Corp | ロック粒度統計情報を利用した排他制御方法及びプログラムを記録した機械読み取り可能な記録媒体 |
US6493741B1 (en) | 1999-10-01 | 2002-12-10 | Compaq Information Technologies Group, L.P. | Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit |
US6473819B1 (en) * | 1999-12-17 | 2002-10-29 | International Business Machines Corporation | Scalable interruptible queue locks for shared-memory multiprocessor |
US6886105B2 (en) * | 2000-02-14 | 2005-04-26 | Intel Corporation | Method and apparatus for resuming memory operations from a low latency wake-up low power state |
US6615340B1 (en) * | 2000-03-22 | 2003-09-02 | Wilmot, Ii Richard Byron | Extended operand management indicator structure and method |
US6502170B2 (en) * | 2000-12-15 | 2002-12-31 | Intel Corporation | Memory-to-memory compare/exchange instructions to support non-blocking synchronization schemes |
JP3796124B2 (ja) * | 2001-03-07 | 2006-07-12 | 株式会社ルネサステクノロジ | スレッド間優先度可変プロセッサ |
WO2003040948A1 (fr) | 2001-11-08 | 2003-05-15 | Fujitsu Limited | Ordinateur et procede de commande |
US7363474B2 (en) | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
US7127561B2 (en) * | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques for suspending execution of a thread until a specified memory access occurs |
JP2004135875A (ja) | 2002-10-17 | 2004-05-13 | Konsho Ryu | 巻取り装置付き靴 |
US7559060B2 (en) * | 2003-06-10 | 2009-07-07 | National Instruments Corporation | Time-bounded program execution |
US7213093B2 (en) * | 2003-06-27 | 2007-05-01 | Intel Corporation | Queued locks using monitor-memory wait |
EP1503309A1 (en) * | 2003-07-31 | 2005-02-02 | Deutsche Börse Ag | Data validity control in straight-through processing systems |
JP2005225149A (ja) | 2004-02-16 | 2005-08-25 | Mitsubishi Paper Mills Ltd | インクジェット記録材料 |
JP4376692B2 (ja) | 2004-04-30 | 2009-12-02 | 富士通株式会社 | 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ |
US7529914B2 (en) * | 2004-06-30 | 2009-05-05 | Intel Corporation | Method and apparatus for speculative execution of uncontended lock instructions |
US7437581B2 (en) * | 2004-09-28 | 2008-10-14 | Intel Corporation | Method and apparatus for varying energy per instruction according to the amount of available parallelism |
US7555630B2 (en) * | 2004-12-21 | 2009-06-30 | Intel Corporation | Method and apparatus to provide efficient communication between multi-threaded processing elements in a processor unit |
US8010969B2 (en) * | 2005-06-13 | 2011-08-30 | Intel Corporation | Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers |
US7882339B2 (en) * | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
US8099538B2 (en) | 2006-03-29 | 2012-01-17 | Intel Corporation | Increasing functionality of a reader-writer lock |
JP4129532B2 (ja) | 2007-09-11 | 2008-08-06 | 株式会社高尾 | 弾球遊技機 |
US7904696B2 (en) | 2007-09-14 | 2011-03-08 | Intel Corporation | Communication paths for enabling inter-sequencer communication following lock competition and accelerator registration |
US8555016B2 (en) | 2008-12-17 | 2013-10-08 | Intel Corporation | Unified optimistic and pessimistic concurrency control for a software transactional memory (STM) system |
US8316194B2 (en) | 2009-12-15 | 2012-11-20 | Intel Corporation | Mechanisms to accelerate transactions using buffered stores |
US8479053B2 (en) | 2010-07-28 | 2013-07-02 | Intel Corporation | Processor with last branch record register storing transaction indicator |
US8446903B1 (en) | 2012-05-22 | 2013-05-21 | Intel Corporation | Providing a load/store communication protocol with a low power physical unit |
-
2004
- 2004-06-30 US US10/880,638 patent/US8607241B2/en not_active Expired - Fee Related
-
2005
- 2005-06-15 TW TW094119878A patent/TWI285332B/zh not_active IP Right Cessation
- 2005-06-17 JP JP2005178287A patent/JP2006031691A/ja active Pending
- 2005-06-23 EP EP05253896A patent/EP1612661A3/en not_active Withdrawn
- 2005-06-28 KR KR1020050056393A patent/KR100829638B1/ko not_active IP Right Cessation
- 2005-06-29 CN CN2005100798027A patent/CN100407136C/zh not_active Expired - Fee Related
-
2008
- 2008-12-19 JP JP2008324669A patent/JP5054665B2/ja not_active Expired - Fee Related
-
2013
- 2013-03-15 US US13/843,305 patent/US9733937B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20060048630A (ko) | 2006-05-18 |
JP2006031691A (ja) | 2006-02-02 |
JP2009151793A (ja) | 2009-07-09 |
EP1612661A2 (en) | 2006-01-04 |
CN100407136C (zh) | 2008-07-30 |
US8607241B2 (en) | 2013-12-10 |
US20060005197A1 (en) | 2006-01-05 |
CN1716186A (zh) | 2006-01-04 |
TW200614075A (en) | 2006-05-01 |
US20130232499A1 (en) | 2013-09-05 |
KR100829638B1 (ko) | 2008-05-16 |
JP5054665B2 (ja) | 2012-10-24 |
EP1612661A3 (en) | 2007-09-19 |
US9733937B2 (en) | 2017-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI285332B (en) | Operating method, processor, multiple-processor system, and machine-readable medium for performing compare and exchange instruction using sleep-wakeup mechanism | |
JP4764430B2 (ja) | マルチプロセッサ環境におけるトランザクションベースの共有データオペレーション | |
US8065499B2 (en) | Methods and apparatus to implement parallel transactions | |
US7882339B2 (en) | Primitives to enhance thread-level speculation | |
US8949583B1 (en) | Concurrent atomic execution | |
AU2011305091B2 (en) | Apparatus, method, and system for dynamically optimizing code utilizing adjustable transaction sizes based on hardware limitations | |
US8190859B2 (en) | Critical section detection and prediction mechanism for hardware lock elision | |
US8225120B2 (en) | Wake-and-go mechanism with data exclusivity | |
US20080040524A1 (en) | System management mode using transactional memory | |
CN107003896B (zh) | 具有共享事务处理资源的装置和数据处理方法 | |
US6986010B2 (en) | Cache lock mechanism with speculative allocation | |
SG188993A1 (en) | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region | |
TW201203111A (en) | Hardware assist thread for increasing code parallelism | |
US8495311B2 (en) | Updating shared variables atomically |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |