TWI266987B - Method for monitoring locks, processor, system for monitoring locks, and machine-readable medium - Google Patents
Method for monitoring locks, processor, system for monitoring locks, and machine-readable medium Download PDFInfo
- Publication number
- TWI266987B TWI266987B TW093117562A TW93117562A TWI266987B TW I266987 B TWI266987 B TW I266987B TW 093117562 A TW093117562 A TW 093117562A TW 93117562 A TW93117562 A TW 93117562A TW I266987 B TWI266987 B TW I266987B
- Authority
- TW
- Taiwan
- Prior art keywords
- processor
- monitoring
- lock
- monitor
- event
- Prior art date
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 115
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000012545 processing Methods 0.000 claims description 58
- 238000003860 storage Methods 0.000 claims description 22
- 239000000872 buffer Substances 0.000 claims description 12
- 238000001514 detection method Methods 0.000 claims description 7
- 230000002618 waking effect Effects 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 5
- 230000008901 benefit Effects 0.000 claims description 4
- 239000012536 storage buffer Substances 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 17
- 238000005192 partition Methods 0.000 description 14
- 238000013461 design Methods 0.000 description 11
- 238000012360 testing method Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 8
- 238000011084 recovery Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 235000009827 Prunus armeniaca Nutrition 0.000 description 1
- 244000018633 Prunus armeniaca Species 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000003776 cleavage reaction Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000000227 grinding Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000007017 scission Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 239000002699 waste material Substances 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- 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
- 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
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
-
- 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/30083—Power or thermal control 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/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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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)
- Multimedia (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
(1) 1266987 玖、發明說明 [發明所屬之技術領域】 本發明係有關處理器,尤係有關等待一鎖的一個或多 個處理器而使用監視記憶體等待來監視該鎖到該該鎖可用 爲止之方法。 【先前技術】 一超執行緒(hyperthreaded )或多執行緒的處理器通 常可同時處理多個指令序列。促使在一單一處理器內執行 多個指令流的一主要動機是提高處理器的使用率。超執行 緒處理器可讓多個指令流在不同的執行資源中同時執行, 而嘗試對那些資源作更佳的利用。此外,可將超執行緒處 理器用於遇到長執行延遲或經常要等待事件發生的程式。 超執行緒處理器通常有將爲所有的執行緒或邏輯處理 器(處理器)鎖共用的一單一之資源準備。若並無適當的 資源,則可能造成各處理器間顯著的競爭,尤其在一個或 多個處理器等待一鎖定可用時更是如此。已出了數種技 術,以便改善程式作業的無效率、及處理多個處理器間之 鎖定競爭的其他資源耗用延遲。例如,在一傳統的螺旋等 待(spin-wait )鎖定系統中,將一等待佇列用來使處理器 等待在等待淸單上的鎖定,而要等待到該鎖定可甩時爲 止。然而,在此種等待期間,該處理器持續地存取該鎖定 的記億位置,而造成該記憶位置上的記憶體競爭、資源的 -5- (2) 1266987 瓶頸、記憶體頻寬、運算頻寬、微架構資源、及電力的浪 費。這些“在忙碌狀態中等待的”處理器可能對晶片中 之其他處理器的效能有不利的影響。 【發明內容】 本發明提供了一種使用監視記憶體等待的監視鎖定之 方法、裝置、及系統。根據一實施例,監視關聯於一相競 爭的鎖定的一節點;以及將尋找該相競爭的鎖定之一處理 器設定於休眠狀態,直到發生一監視事件爲止。 [實施方式】 本發明說明了一種爲等待一鎖定的一個或多個處理器 監視該鎖動之方法及裝置。廣義而言,提供了使用監視記 憶體等待而爲等待一鎖定的一個或多個處理器監視該鎖定 直到該鎖定可用爲止的本發明之一些實施例。 提供了一種將嘗試取得可能被其他處理器鎖競爭的一 鎖定之一處理器置於休眠狀態直到發生諸如該處理器可使 用該鎖定等的一監視事件爲止之系統、裝置、及方法。換 言之,雖然該處理器可能要一直等待到該鎖定可用爲止, 但是該處理器可在一佇列中等待時處於休眠狀態。根據一 實施例,處於休眠狀態的處理器之作業可包括:該處理器 放棄其資源’並將所放棄的資源提供給其他處理器使用。 根據一實施例,尋找鎖定的處理器可以是一超執行緖處理 - 6- (3) 1266987 器的一邏輯處理器。一典型的超執行緒處理器可包括共用 相同資源的多個執行緒或邏輯處理器。 根據一實施例,可將該監視記憶體等待機制用來監視 相競爭的鎖定,並將處理器置於休眠狀態,直到諸如該鎖 定可用爲止。該相競爭的鎖定意指一個或多個處理器等待 或試圖取得的一鎖定。根據一實施例,可對應於該處理器 而產生一節點或佇列元件(節點)。根據一實施例,可將 該節點初始化,使該節點與相競爭的鎖定相關聯,並利用 監視記憶體等待而監視該節點。對該節點的監視可包括: 諸如監視可被稱爲監視位址的該鎖定的鎖定位址,而監視 該鎖定。 根據一實施例,可將一個或多個事件或一設定的時間 期間稱爲監視事件,且於發生一監視事件時,可終止對該 節點的監視,並可喚醒該處理器。例如,使佇列中之次一 處理器要求該鎖定,且可將該鎖定的可使用性稱爲一監視 事件。換言之,當該處理器是等待線中的次一(或第一) 個接收該相競爭的鎖定之處理器,且該鎖定可用時,該處 理器可要求該鎖定,並亦可要求先前放棄的資源的全部或 部分。根據一實施例,當ί維有相競爭的鎖定之另一處理器 釋出該鎖定時,即可使用該鎖定。 根據一實施例,可在一執行緖或處理器中實施監視記 憶體等待,同時讓其他處理器使用處理資源。例如,根據 --實施例,可間一監視程式設定成:一處理器可保持在休 - 7- (4) 1266987 眠狀態直到發生諸如寫到一指定的記憶位置等的一特定記 憶體存取爲止。可於發生一指定時,喚醒一處理器,而無 須執行可能會浪費處理器資源的一些常式。根據一實施 例,在該處理器現在仍處於休眠狀態時,可放棄該處理器 先前專用的分割區。本發明的上述這些及(或)其他的實 施例可相當地改善整體機器的處理速率。 在下文的說明中,述及了諸如邏輯實施方式、運算 碼、資源分割、資源共孚、及資源複製實施方式、各系統 組件的類型及相互關係、以及邏輯分割/整合選擇等的許 多特定細節,以便本發明的的各實施例被更徹底地了解。 然而,熟習此項技術者當可了解,可根據所提供的揭示事 項而在沒有這些特定細節的情形下實施本發明。在其他的 情形中,則並未詳細示出控制結構、閘階層電路、及完整 的軟體指令序列,以免模糊了本發明·。對此項技術具有一 般知識者在得知所包含的說明之後,將可在無須過度的實 驗下實施適當的功能。 下文中將說明本發明的實施例之各步驟。可以硬體組 件執行該等實施例的各步驟,或者可在機器可執行的指令 中實施該等實施例的各步騾 而該等機器可執行的指令可用來使被該等指令設定程式的 一般用途的或特殊用途的處理器或一機器或邏輯電路執行 該等各步驟。或者,可以硬體及軟體的一組合來實施該等 實施例的各步驟。 -8- (5) 1266987 可以一電腦程式產品的形式提供本發明的各實施例, 該電腦程式產品可包含中儲存有指令之一機器可讀取的媒 體,而可將該等指令用來將一電腦(或其他電子裝置)設 定成執行根據本發明的各實施例之一程序。該機器可讀取 的媒體可包括(但不限於)軟碟、光碟、唯讀光碟、磁光 碟、ROM、RAM、EPROM、EEPROM、磁卡或光卡、快閃 記憶體、或適於儲存電子形式指令的其他類型的媒體/機 器可讀取的媒體。此外,亦可以一電腦程式產品之形式下 載本發明的各實施例,其中可經由一通訊鏈路(例如一數 據機或網路連線)而利用在一載波或其他傳播媒介中實施 的資料信號而將程式自一遠端電腦轉移到一提出要求的電 腦。 圖1是具有一記憶體存取監視器(1 1 0 )的一超執 行緒處理器(1 0 0 )的一實施例之一方塊圖。根據一實施 例’可將一處理器(1 0 0 )形成爲一單一積體電路。根據 另一實施例,多個積體電路可合而形成一處理器 (1 〇 〇 ),且根據又一實施例,硬體及軟體常式(例如二 進位轉換常式)可合而形成處理器(1 0 0 )。如圖所示, 一匯流排/記憶體控制器(1 2 〇 )可將用於執行的指令提 供給一前端(1 3 0 )。前端(1 3 0 )可根據指令指檩 (1 7 〇 )而ί曰不自各執行緒擷取指令。可複製指令指標邏 輯,以支援多個執行緒。 根據一實施例,前端(丨3 〇 )可將指令傳送到執行緒 (6) 1266987 /處理器可分割的資源(1 40 ),以供進—步處理。執行 緒/處理器可分割的資源(1 4〇 )可包含若干在邏輯上獨 立的分割區,而當處理器(1 0 0 )內有數個執行緒在進行 時,該等在邏輯上獨立的分割區係爲特定的執行緖所專 用。根據一實施例,每一獨立的分割區只可容納邋自專用 該分割區的執行緒之指令。執行緒/處理器可分割的資源 (1 4 0 )可包含諸如指令佇列。當處於一單一執行緖模式 時,可合倂執行緒/處理器可分割的資源(1 4 0 )的該等 分割區’以便形成一執彳-j緒專用的一單一較大的分割區。 根據一實施例,處理器(1 0 〇 )亦可包含複製狀態 (1 8 〇 )。複製狀態(1 8 0 )可包含足以維護一邏輯處理器 的_行環境之若干狀態變數。由於有複製狀態(1 8 0 ), 所以可在無須競爭狀態變數儲存空間的情形下執行多個執 行緒。此外,可針對每一執行緒而複製暫存器分配邏輯。 該複製的與狀態相關之邏輯可配合適當的資源分割區而作 業,以便準備供執行的進入指令。 根據一實施例,執行緖/處理器可分割的資源 (1 4 0 )可將指令傳送到共用的資源(1 5 〇 )。共用的資源 (1 5 0 )可對指令進行作業,而無須可慮該等指令的來 源。例如,排程器及執行單元可以是執行緒不知道的共用 資源。可分割的資源(1 4 0 )可以一種對每一進行中之執 行緒提供持續的進展之公平方式在該等執行緒之間輪流服 務,而將來自多個執行緒的指令傳送到共用的資源 -10- (7) 1266987 (1 5 Ο )。因此,共用的資源(1 5 0 )可執行在適當狀態下 的所提供之指令,而無須考慮到執行緒的混合。 根據一實施例,共用的資源(1 5 〇.)可接續有另一組 執行緒/處理器可分割的資源(1 6 0 )。執行緒/處理器 可分割的資源(1 6 0 )可包含諸如重新排序緩衝區(reel r d e r b u f f e r ) 等的 指令退 休資源 。因此 ,執 行緖 / 處理 器可分割的資源(1 6 0 )可確保:來自每一執行緒的指令 之執行正確地結束,且適當地更新該執行緒的適當狀態。 根據另一實施例’可將用來在不需要接連不斷地輪詢 一記憶位置或指令執行的情形下實施監視記憶體等待的功 能之機制提供給程式設計師。例如’處理器(1 0 0 )可包 含一記憶體存取監視器(1 1 0 )。可以與可起動記憶體存 取監視器(1 1 〇 )來監視的一記憶體存取週期有關之資訊 來設定記憶體存取監視器(1 1 〇 )。因此,記憶體存取監 視器(110)可包含一監視器週期資訊暫存器(112),而 比較邏輯(1 1 4 )將該監視器週期資訊暫存器(1 1 2 )的內 容與自匯流排/記憶體控制器(1 2 0 )接收的匯流排週期 資訊比較。如杲相符’則可產生一恢後執彳"I緖信號’以便 重新開始一暫停的執行緒。可自該處理器的內部及(或) 外部匯流排取得記億體存取貧訊。 監視器週期資訊暫存器(1 1 2 )可存放用來指定週期 類型及(或)可觸發一執行緒的恢復的位址之詳細資訊。 根據一實施例,監視器週期資訊暫存器(Π 2 )可儲存一 -11 - (8) 1266987 實體位址’且記憶體存取監視器(u 〇 )可監視用來指示 對該實體位址的一實際或可能寫入之任何匯流排週期。此 種週期可以是一明確寫入週期的形式,且(或)可以是對 匯流排主控權的一讀取週期、或另一代理器想要取得一可 快取線的唯一主控權以便該代理器可在無須一外部匯流排 交易的情形下寫到該快取線之一使無效週期。在不同的實 施例中,可將記憶體存取監視器(1 1 〇 )設定成對各種交 易而觸發。 圖2是一超執行緒處理器的一作業實施例之一流程 圖。可參照圖 2所示之流程圖而進一步說明圖1所示 各實施例之作業。根據一實施例,處理器(1 0 0 )的指令 集可包含用來建立監視器交易資訊之一 MONITOR運算 碼(指令)。在處理步驟(200 )中,接收該 MONITOR 運算碼,作爲一第一執行緖(T 1 )的指令序列之一部分。 在處理步驟(210)中,處理器(100)回應該 MONITOR 運算碼,而起動記憶體存取監視器(1 1 〇 )監視所指定記 憶體存取的記憶體存取。可以一默示的或明示的運算元指 定觸發的記憶體存取。因此,執行該 MONITOR運算碼 時,可指定監視位址,這是因爲可預先將該監視位址儲存 在一暫存器或其他的位置,作爲一默示的運算元。記憶體 存取監視器(1 1 〇 )可測試在決定步驟(2 ] 5 )中是否偵測 到所指定的週期。如果並未偵測到所指定的週期’則記憶 體存取監視器(1 1 〇 )可持續監視記憶體存取。如果偵測 -12 - (9) 1266987 到該觸發的週期,則可在處理步驟(22 0 )中設定一待處 理監視事件指示碼。 根據一實施例,該 MONITOR運算碼的執行可觸發 記憶體存取監視器(i〗〇 )的啓動。記憶體存取監視器 (Π 〇 )可開始以與處理器(! 〇〇 )中之其他作業並行之方 式作業。根據一實施例,該 MONITOR指令本身只能以 Μ # % ΪΒ憶體週期資訊來準備記憶體存取監視器 (1 1 〇 ),並啓動記憶體存取監視器(1 1 〇 ),而無須揭露 監視事件。換言之,在執行 MONITOR運算碼之後,可 產生監視事件,但是除非明確地揭示了該等監視事件,否 則可不必承認該等監視事件。 在處理步驟(225 )中,係以一獨立事件之形式來示 出一記憶體等待(m w a i t )之觸發。根據一·實施例,可將 MWAIT運算碼’用來觸發監視事件的承認、及T1的暫 停。使用兩個獨立的指令來準備瞪觸發該執行緖暫停時, 可將更大的程式彈性提供給程式設計師,並可容許更有效 率的程式設計。根據另一實施例,可自亦可準備記憶體存 取監視器(1 10 )的第一運算碼觸發 mwait。不論是明— 種情形5 —個或多個指令可配備記憶體存取監視器 (1 1 〇 )並可起動對監視事件的承認。 根據一實施例,當使用獨立的運算碼來配備記憶體存 取監視器(Π 0 )並觸發對監視事件的承認時,可執行一 測試,以便確保已在決定步驟(2 3 0 )中將該執行緒暫停 -13- (10) 1266987 之前先啓動了記憶體存取監視器(η ο)。此外,藉由測 試一監視事件是否已處於待處理狀態(圖中未示出),可 避免Τ 1的暫停,且可繼續在處理步驟(25 0 )中作業。如 果已起動了監視器(11 0 ),且並未有任何監視事件已處 於待處理狀態,則可在處理步驟(2 3 5 )中暫停τ 1。 當T1暫停時,根據一實施例,處理器(1〇〇)可進入 一與實施方式相關的狀態,而該狀態可讓其他的執行緒更 充分地利用該處理器的資源。根據一實施例,該處理器可 放棄Τ1先前專用的可分割的資源(1 4 0 )及(1 6 0 )的分 割區之全部或部分。根據另一實施例,Μ Ο NIΤ Ο R運算碼 及與該運算碼相關聯的設定値之不同排列可指示該處理器 放棄了哪些資源(在該處理器放棄資源的情形下)。例 如,當一程式設計師期望一較短的等待時,可暫停該執行 緖,但是仍維持其資源分割區。因爲在該執行緒的暫停期 間,其他的執行緒可唯一地使用共用的資源,所以仍然增 強了處理速率。當預期一較長的等待時,放棄與暫停的執 行緒相關聯之所有分割區可讓其他的執行緒具有額外的資 源’因而可能增加其他執行緒的處理速率。取得該額外的 處理速率時’付出了在分別暫停及恢復各執行緒時與移除 及增添分割區相關聯的內務作業之代價。 根據一實施例,Τ 1可保持在一暫停狀態到一監視事 件處於待處理狀態爲止。如前文所述,記憶體存取監視器 (]1 〇 )可獨立作業,以便偵測一信號監視事件(步騾 - 14- (11) 1266987 (2 1 5 - 22 0 ))。如果處理器(1 00 )在決定步騾(240 ) 中偵測到一監視事件係處於待處理狀態,則可在處理步驟 ( 2 5 0 )中恢復T1。該監視事件要喚醒T1時,不需要對 T 1中之指令進行任何發生作用的處理;而是T 1可停留在 暫停狀態,且被起動的記憶體存取監視器(1 1 0 )可將一 事件信號發出到記憶體存取監視器(11 0 )。處理器 (1 0 0 )可處理該事件,並得知應恢復用來指示T 1的該事 件,並執行適當的動作來恢復T 1。 圖1及 2之實施例可在發生一指定的記憶體存取 時提供可讓被一程式暫停的一執行緒恢復之技術。根據一 實施例,其他的事件亦可使T1恢復。例如,一中斷可使 τ1恢復。此種實施方式可使記億體存取監視器(1 1 0 )較 不完美,這是因爲此種方式可能錯失(未偵測到)某些記 憶體存取或應讓執行緒恢復的其他狀況。因此,可偶爾非 必要地喚醒T 1。然而,此種實施方式減少了 τ 1由於一錯 失的事件而永遠被凍結的可能性,因而簡化了硬體設計及 確認。對T1的此種非必要的喚醒可能只是有稍微的不 便,這是因爲可建構一迴圈,以便對T 1再度檢查下列的 情形:τ 1正在等待的狀況是否真的發生了,或者是否不 要再次將T1暫停。 根據一實施例,可以不同的方式配置執行緒/處理器 可分割的資源、複製的資源、以及共用的資源。在某些實 施例中,在共用的資源的兩端可能不是可分割的資源。根 -15- (12) 1266987 據一實施例,可以不嚴格地分割該等執行緖/處 割的資源,而是可讓某些指令跨越各分割區,或 據在該分割區中正在執行的執行緒或正在執行的 數而改變分割區的大小。此外,可將不同的資源 爲共用的、複製的、及執行緒分割的資源。 圖 3 是一超執行緒處理器的一實施例之一 如圖所示,根據一實施例,圖 3除了其他的組 尤其包含一致性相關邏輯(3 5 0 )、一監視器(3 實施例、以及執行緖暫停/恢復及處理器休眠/ ( 3 7 7 )的一特定實施例。根據一實施例,一匯 ( 3 0 0 )包含一匯流排控制器(3 4 0 )、事件‘ (3 4 5 )、 一監視器(3 1 0 )、以及一致性才 (350) 〇 根據一實施例,匯流排介面(3 0 0 )可將指 一前端(3 6 5 ),而該前端(3 6 5 )執行微運算碼 的產生,係自微指令產生 uOP。執行資源(370 端(3 65 )接收各 u〇P,且後端邏輯(3 8 0 ) u〇P 被執行了之後’使該等 退休。根: 例,該前端、後端、及執行資源可支援非循序執 根據一實施例,一 MONITOR運算碼可經 介面(3 0 0 )而進入該處理器,且前端(3 6 5 )可 MONITOR運算碼以供執行。根據一實施例’ (3 7 0 )可產生一特殊的 Μ 0 N 1 丁〇R υ 0 P 以供 理器可分 者是可根 執行緒總 組合指定 方塊圖。 件之外, 1 0 )的一 喚醒邏輯 流排介面 湞測邏輯 目關邏輯 令提供給 i ( uOP ) )可自前 可在該等 一實施 行。 由匯流排 準備好該 執行資源 執行。該 -16- (13) 1266987 等執行單元可以與一儲存作業類似之方式處理該 MONITOR uOP,且位址轉換邏輯(3 7 5 )將監視位址轉換 爲一實體位址,並將該實體位址提供給監視器(3 1 Q )。 監視器(3 1 0 )可與執行緒暫停/恢復及處理器休眠/喚 醒邏輯(3 7 7 )通訊,以便促成執行緒的恢復。當有作用 的執行緒之數目改變時,該執行緒暫停及恢復邏輯可執行 分割並重整資源。 例如,圖 4是用來分割、分享、及複製資源的一程 序的一實施例之一方塊圖。根據一實施例,可根據機器中 有作用的執行緒直之流動,而分割並重整(回收在一起以 供其他執行緒重新使用)分割的資源。根據一實施例,複 製的資源可包括管線的指令提取部分(4 0 5 )中之指令指 標邏輯、管線的更名部分(4 1 5 )中之暫存器更名邏輯、 若干狀態變數(圖中未不出)、以及一中斷控制器(圖中 未示出)。根據一實施例’共用的資源可包括管線的排程 階段(4 2 5 )中之若千排程器、管線的暫存器讀取部分 (430 )及暫存器寫入部分(4〇中之一組暫存器、以及 管線的執彳7部分(4 3 5 )中之右干執彳T資源。此外,一追 蹤快取記憶體(在指令提取部分(5 )中)及一 L1資 料快取記憶體(在 L1快取記憶體(44 0 )中)可以是在 不考慮執行緒執行環境下的根據記憶體存取而存放的共用 的資源。根據另一實施例,可將對執行緒執行環境的考慮 用於快取決定。根據一實施例,分割的資源可包括管線的 ^ 17 > (14) 1266987 佇列階段(4 1 Ο )中之兩個佇列、管線的一退 (4 5 0 )中之一重新排序緩衝區、以及一儲存緩衝 行緒選擇多工邏輯可在各複製的資源及分割的資源 替服務,以便將合理的存取提供兩個執行緒。 爲了舉例說明,於進一步說明圖 3所示處理 實施例之作業時,假設可配合圖3所示之實施例 圖 4所示之分割、分享、及複製。尤其現在將參 所示之流程圖而說明圖 3所示實施例的作業之進 節。假設該處理器是正在一多執行緒模式下執行, 有兩個執行緒正在作用中。 圖 5是用來暫停及恢復一執行緒的執行的一 一實施例之一流程圖。在處理步驟(5 0 0 )中 (3 6 5 )可於執行一第一執行緒(T1 )期間ί MONITOR 運算碼。根據一實施例,前端(3 6 5 ) 一特殊的監視 u〇P。可將該 MONITOR uOP 傳送 資源(3 7 0 )。該監視 u〇P可具有用來指示所要 位址(監視位址)的一相關聯之位址。該相關聯的 形式可以是一明示的運算元或一默示的運算元(亦 自一預定的暫存器或其他儲存位置取得該相關 址)。該相關聯的位址可“指示”該監視位址之 該位址傳達了可決定該監視位址的足夠資訊(可能 其他的暫存器或資訊)。例如,該相關聯的位址可 線性位址,而該具有可能是適當的監視位址之一對 休階段 器。執 之間交 器的一 而使用 照圖 5 一步細 且至少 程序的 ,前端 接收一 可產生 到執行 監視的 位址之 即,將 聯的位 方式爲 要配合 以是~ 應的實 -18- (15) 1266987 體位址。或者,可以虛擬位址之格式提供該監視位址,或 可將該監視位址指示爲一相對位址,或以其他習知的或方 便的位址指定方式來指定該監視位址。如果使用虛擬位址 運算元’則可能需要將一般的保護錯誤認定爲中斷事件。 該監視位址可指示用來監視的任何方便的記憶體單 元。例如,根據一實施例,該監視位址可指示一快取線。 然而,根據另一實施例,該監視位址可指示一快取線的一 部分、與不同處理器的快取線大小可能有不同關係的一特 定的/選擇的大小部分或記憶體單位、或一單一的位址。 該監視位址可指示其中包含該運算元所指定的資料(或更 多的資料)之一單位,或者可特別指示一所需資料單位的 一位址。 使用圖 3之圖示時,根據一實施例,該監視位址可 被提供給位址轉換邏輯(3 7 5 ),並被傳送到監視器 (3 1 0 ),而在監視器(3 1 0 )中可將該監視位址儲存在一 監視位址暫存器(3 3 5 )。執行資源(3 7 0 )回應該 MONITOR運算碼,然後可如處理步驟(510 )所示啓動 監視器(3 1 0 ),且圖 6中示出進一步的細節。根據一 實施例,可防護在該 MONITOR運算碼之後發生的任何 儲存作業,以便確保可處理各儲存作業,且因而在發生任 何執行緒暫停之前先偵測到各儲存作業。根據一實施例, 可能需要在可接受任何後續的指令之前先因監視器 (3 ] 0 )的啓動而進行某些作業。然而,圖中示出處理步 -19 - (16) 1266987 驟(5 1 Ο )係以並行於處理步驟(5 〇 5 )之方式進行,這是 因爲一旦根據一實施例而啓動監視器(3 1 0 )之後,監視 器(3 1 0 )可以並行於其他作業之方式持續作業到一中斷 事件發生爲止。 在處理步驟(5 0 5 )中,可在執行緖 1中接收一 MEMORY WAIT (M WAIT)運算碼。根據一實施例,可針 對揭露的監視事件而執行 MONITOR運算碼。可回應該 MONITOR 運算碼,而在決定步驟(515 )中執行一測 試,以便決定一監視事件是否是待處理的。如果並無任何 監視事件是待處理的,則可在決定步驟(5 20 )中執行一 測試,以便決定該監視器是否在作用中。例如,如果並未 在預先執行一 MONITOR 運算碼的情形下執行 MWAIT,則監視器(310 )可能不是在作用中。如果該監 視器不是在作用中或者一監視事件是待處理的,則可在處 理步驟(5 6 5 )中繼續執行緒 1的執行。 根據一實施例,如果監視器(3 1 〇 )是在作用中且並 無任何監視事件是待處理的’則可在處理步驟(5 2 5 )中 暫停執行緖 1。執行緒暫停/恢復邏輯(3 7 7 )可包含管 線淸除邏輯(3 8 2 ),用以淸光處理器管線,以便在處理 步驟(5 3 0 )淸除所有的指令。一旦已淸光該管線之後, 在處理步騾(5 3 5 )中,分割/重整邏輯(3 8 5 )可使與執 行緒 1唯一相關聯的任何分割的資源被放棄,以便爲其 他的執行緒所使用°可重整這些被放棄的資源以便形成一 -20- (17) 1266987 組較大的資源,以供其餘作用中之執行緖使用。例如,請 參閱圖4所示的兩個執行緒之例子,可自兩個佇列中淸 光與執行緒1相關的所有指令。然後可合倂每一對佇 列,以便將一較大的佇列提供給第二執行緒。同樣地,該 第二執行緒可使用來自暫存器組的更多的暫存器,來自儲 存緩衝益的更多的條目可空下來而供該第二執行緒使用, 且該第二執行緒可使用重新排序緩衝區中更多的條目。在 本質上,這些結構回歸到兩倍大小的單一專用結構。也可 考慮因使用不同數目的處理器的實施例而產生的不同之比 例。 根據一實施例,在決定步驟(5 4 0 ) 、 ( 5 4 5 )、及 (5 5 0 )中,測試各種事件,以便決定是否可恢復執行緒 i。尤其可不以被執行爲執行緒 1的一部分的指令來執 行這些測試。而是可由處理器以並行於該處理器對其他執 行緖的處理之方式來執行這些作業。如將於後文中參照圖 6而進一步詳細說明的,該監視器本身可檢查是否發生 了一監視寫入事件,並可設定一待處理事件指示碼,而指 示該檢查的結果。可經由一事件信號而將該待處理事件指 示碼提供給執行緒暫停/恢復邏輯(3 7 7 )(例如微 碼)。在一實施例中,微碼可在步驟(5 4 0 )中於一適當 的指令邊界上識別該監視事件,這是因爲在處理步驟 (5 05 )中曾以 MWAIlr運算碼揭露了該事件。在決定步 驟(5 4 5 )中,事件偵測邏輯(3 4 5 )可偵測諸如中斷等被 -21 - (18) 1266987 指定爲中斷事件的其他事件。此外,根據一實施例,可定 期使用一或有的定時器來退出該記憶體等待狀態’以便確 保該處理器不會因在決定步驟(5 5 〇)上的某些特地的事 件序列而變爲凍結狀態。如果並無任何這些事件通知要退 出該 m w a i t狀態,則可將執行緒1保持在暫停狀態。 如果執行緒丨恢復了,則根據一實施例,可於偵測 到適當的事件時,再度啓動執行緖暫停/恢復邏輯 (3 7 7 )。仍然可在處理步驟(5 5 5 )中淸除管線,以便自 管線中排淸指令,以便可再度分割資源’而照顧即將被喚 醒的執行緒1。在處理步驟(5 6 0 )中,可重新分割適當 的資源,且可在處理步驟(5 6 5 )中恢復執行緒 1。 圖 6是監視邏輯的啓動及作業的一程序的一實施例 之一流程圖。在處理步驟(6 00 )中,可停止執行緒 i 的前磕指令提取,使執行緒 1的作業不會進一步進入該 機器。在處理步驟(6 0 5 )中,位址轉換邏輯(3 7 5 )可將 相關聯的位址運算元自一線性位址轉換爲一實體位址。在 處理步驟(6 1 0 )中,可增加對寫入被監視的位址之觀 測,而或許強制快取代理器進行將影響到監視器(3丨〇 ) 本身知道的監視位址上儲存的資訊之寫入作業。在處理步 驟(6 1 5 )中,可將用於監視的實體位址較早地或較晚地 儲存在該序列中。 然後,根據一實施例,在處理步驟(62 〇 )中,可起 動該監視益。該監視益的監視匯流排可循環寫到可以是臣七 -22- (19) 1266987 視位址暫存器(3 3 5 )中儲存的監視位址之實體位址。下 文中將參照圖 7而說明監視作業的進一步細節。在起動 該監視器之後,根據一實施例,可在處理步驟(6 2 5 )中 執行一儲存防護作業。該儲存防護作業可協助確保於 MONITOR運算碼完成執行時將處理該機器中之所有儲存 作業。由於在自該機器中撤掉該監視器之前先處理所有的 儲存作業,所以可減少錯誤地進入一記憶體等待 (mwait)狀態的可能性。可將該儲存防護作業用來作爲 一預防措施,且該儲存防護作業可能是一耗時的作業。 該儲存防護作業可以是或有的作業,這是因爲根據一 實施例,可將該監視 mwait機制設計爲一多重退出機 制。換言之,諸如某些中斷、承認、單板系統定時器等的 各種事件也可.能造成自該 mwait狀態。根據一實施例, 可能因被監視的資料値改變了而喚醒該執行緒。因此,根 據一實施例,軟體可再度檢查記憶體中儲存的特定値是否 已改變。根據一實施例,可將其中包括觸發揭露性中斷 (NonMaskable Interrupt ;簡稱 NMI )及系統管理中斷 (System Management Intertupt ;簡稱 SMI)、機器檢查 中斷、以及錯誤信號的某些事件視爲中斷事件,且可不將 諸如關閉電源等的其他事件視爲中斷事件。例如,根據一 實施例,亦可將對A20M接腳的觸發視爲一中斷事件。 在決定步驟(63 0 )中,根據一實施例,該監視器可 持續測試匯流排週期監視機制是否指示對監視位址的一寫 •23- (20) 1266987 入。如果偵測到此種匯流排週期,則可在處 (6 3 5 )中設定待處理監視事件指示碼。在 MWAIT運算碼(圖5中之步驟(5 0 5 ))之後 對待一事件之方式服務該待處理事件指示碼,並 的步驟(5 5 5 - 5 6 5 )中促成執行緒的恢復。此外, 址轉換的事件可促使執行緒:恢復。例如,促使 轉換後備緩衝區(t r a n s 1 a t i ο η I ο 〇 k - a s i d e b u f f e r ) 被淸除的事件可觸發執行緒1的恢復,這是因爲 性位址轉換爲一實體位址的對監視位址所作之轉換 再有效。例如,在與x86 Intel架構相容的處理 對控制暫存器 CRO、CR3、及 CR4、以及某些特 暫存器的寫入可能造成對出 mwait狀態。 圖 7是用來處理監視器作業的一程序的一實 一流程圖。圖 7尤其示出圖 3的監視器(3 1 C 6的處理步驟(620 )之進一步細節。根據一實施 處理步驟(7 0 0 )中,監視器(3 1 0 )可針對一匯流 而自一匯流排控制器(3 4 0 )接收要求及位址資雲只 理步驟(7 1 0 )中,監視器(3 1 0 )可檢查受到影響 排控制器類型及位址。週期比較邏輯(3 2 0 )尤其 該匯流排週期是一指定的週期。根據一實施例,位 電路(3 3 0 )可將匯流排交易位址與監視位址 (3 3 5 )中儲存的監視位址比較,且寫入偵測邏輯 可將來自匯流排控制器(3 4 0 )的週期類型資訊解 理步驟 執行了 ,可以 在圖 5 改變位 一位址 的內容 自一線 :可能不 器中, 定機器 施例之 1 )及圖 例,在 排交易 。在處 的匯流 可決定 址比較 暫存器 (3 25 ) 碼’以 -24- (21) 1266987 便偵測是杏發生了 一寫入。如果發生對監視位址的寫入, 則可在處理步驟(7 2 0 )中設定一待處理監視事件指示 碼。可將〜信號(write DETECTED )提供給執行緒暫停 /恢復邏輯(3 7 7 ),以便告知該事件(且假設已執行 MEMORY WAIT ( MWAIT )而起動了執行緒暫停/恢復邏 輯(3 7 7 ),則將服務該事件)。最後,可在處理步驟 (7 3 0 )中暫停監視器(3丨〇 )。該監視器的暫停可解省電 路’但只要遮蔽或以其他方式不產生假性監視事件,該監 視器的暫停不是絕對必要的。亦可在該時點重定監視事件 指示碼。 在再度執行 MWAIT 之前,對監視事件的服務亦可 掩蔽對另位的監視事件之承認。 在讀取監視位址的情形中’根據一實施例’可啓動一 致性相關邏輯(3 5 0 )。在處理步驟(74 〇 )中,可觸發一 信號(例如 HIT# ),以便不讓另一代理器取得主控權, 因而可在無須執行一致性廣播的情形下進行進一步的寫 入。根據一實施例,監視器(3 1 0 )可保持在非作用狀 態,且回到處理步騾(7 0 0 )’而且可不受讀取該監視位 址的影響。此外’如果一交易不是對該監視位址的一讀取 或寫入,則該監視器可保持在作用狀態,並回到處理步驟 (700 )。 根據一實施例’監視指令可用於所要監視的某些類型 的存取。這些存取可能是被選擇作爲有效率的程式設計技 -25» (22) 1266987 術的指標之某些存取,或者也可針對其他的理由而選擇這 些存取。例如,根據一實施例,記憶體存取必須是被自然 對準的寫回(write-back )記憶體中一可快取的儲存。可 將一被自然對準的單元稱爲開始於可被N整除的一位址 之一個N位元的單元。由於使用了被自然對準的單元, 所以可目fif女存取一單一的快取線(並非存取兩個快取 線’但是在資料被分割於兩個快取線的情形中,可能需要 存取兩個快取線),以便寫到被監視的位址。因此,使用 被自然對準的記憶體位址時,可簡化匯流排監視。 圖8是使用監視記憶體等待以取得一鎖定並監視該 鎖定的一程序的一實施例之一流程圖。一典型的超執行緒 以多執行緒處理器可包含多個執行緖或多個邏輯處理器 (處理器)。多個處理器通常之形式爲若干獨立的實體處 理器,且共用相同的資源。在處理步驟(8 〇2 )中,一處 理器可尋找一鎖定,而其他處理器可能競爭該鎖定。在決 定步驟(804)中,決定另一處理器是否競爭該處理器正 在尋找的鎖定。可將一相競爭的鎖定稱爲一個或多個處理 器等待取得的一鎖定。如果該鎖定並未相競爭,則該處理 器可在處理步驟(8 0 6 )中使用要求該可用的鎖定之主控 權而取得鎖定之傳統方式,而取得該鎖定。 通常’如果一個或多個處理器競爭一鎖定,則可形成 ~ _待彳宁列’以便包含爲了尋找該相競爭的鎖定而等待之 _ ί里器。然而,該等處理器的此種等待通常是“在忙碌狀 -26- (23) 1266987 態中等待”,這是因爲該等在等待中之處理器使用其可用 的資源來諸如存取該相競爭的鎖定之記憶位置。在處理歩 驟(8 0 8 )中,根據一實施例,如果該鎖定相競爭,則可 爲該處理器產生諸如節點 N等的一佇列元件或節點(節 點)。根據一實施例’然後可在處理步驟(8 1 0 )中將該 節點初始化。根據一實施例,該初始化可能不是必要的, 這是因爲該節點可能已被初始化了。在處理步驟(8 1 2 ) 中,然後可將該初始化後的節點連結到或關聯到該相競争 的鎖定。根據一實施例,一旦被關聯之後,然後可將該節 點用來作爲該相競爭的鎖定的一尾端指標。 根據一實施例,在處理步驟(8 1 4 )中,可在該節點 上準備一監視器,以便監視與該相競爭的鎖定相關聯的該 節點,而監視該相競爭的鎖定。對該相競爭的鎖定的監視 可包括:監視該鎖定的位址,以便決定第一處理器是否已 可使用該鎖定 { Μ ο n i t 〇 r (N ; 1 〇 c k) }。根據一實施例,該監 視器的準備可包括:回應前端(3 6 5 )接收到一 MONITOR運算碼,而啓動該監視器;以及前端(3 6 5 ) 產生一特殊的監視 u Ο P。可將該監視 u 〇 p傳送到執行 資源(3 7 0 )。該監視 uO P可具有一用來指示所要監視 的位址(監視位址)的一相關聯之位址。根據一實施例, 該監視位址可包含該節點可被連結到的鎖定之鎖定位址。 該相關聯的位址可“指示”該監視位址之方式爲該位址 傳達了可決定該監視位址的足夠資訊(可能要配合其他的 •TJ - (24) 1266987 暫存器或資訊)。 如圖 3所示,根據一實施例,可將該監視位址提供 給位址轉換邏輯(3 7 5 ),並將該監視位址傳送到該監視 器,且可將該監視位址儲存在該記憶體的一監視位址暫存 器(335)中。執行資源(3 7 0)然後可回應該 MONITOR 運算碼,而以處理步驟(510)中示出且於圖 6中進一 步詳細示出的方式啓動該監視器。根據一實施例,一旦該 監視器被該 MONITOR運算碼啓動之後,該監視器可以 與其他作業並行之方式持續操作,直到一監視事件發生爲 止。 在處理步驟(8 1 6 )中,根據一實施例,可執行記憶 體_待(m w a i t )指令,以便將該處理器置於休眠狀態, 且同時等待該相競爭的鎖定變爲可用。根據一實施例,可 接收 MWAIT運算碼,並傳送該 MWAIT運算碼以供執 行。根據一實施例,該 MWAIT運算碼的執行可揭露各 種監視事件。可回應該 MWAIT 運算碼,而執行一測 試,以便決定一監視事件是否爲待處理的。如果並無任何 監視事件是待處理的,則可執行一測試,以便決定該監視 器是否在作用中。例如,如果無須預先執行一 MONITOR 運算碼即可執行 MWAIT,則該監視器可能不是在作用 中。根據一實施例,如果該監視器不是在作用中,或者如 果一監視事件是待處理的,則可不將該處理器置於休眠狀 態。根據一實施例,監視事件意指當一事件發生時該監視 - 28- (25) 1266987 ^可進入不作用狀態而終止對該節點的監視且可喚醒該處 ί里器的一種事件。例如,監視事件可包括輪到該處理器要 求該鎖定的主控權、及(或)當擁有該鎖定的另一處理器 _ tti該鎖定時該處理器可使用該鎖定。 根據一實施例,在處理步驟(8 1 8 )中,可使用該節 點上的監視記憶體等待機制將該處理器置於休眠狀態。根 據一實施例,如果該監視器是在作用中,且並無任何待處 理的監視事件,則可將該處理器置於休眠狀態,直到發生 監視事件爲止。換言之,該第一處理器可休眠到諸如該處 理器被識別爲可要求該相競爭的鎖定的主控權之第一處理 器爲止。此種識別意指:當在處理步驟(8 2 0 )中發生該 監視事件時,使該監視器成爲不作用狀態,且喚醒該處理 器。 根據一實施例,一監視事件可不限於一個事件,且可 測試各種事件,以便決定是否可終止監視並喚醒該處理 器。如前文中參照圖 6所述的,該監視器本身可檢查是 否發生了一監視事件,並可設定一待處理事件指示碼,而 指示該檢查的結果。可經由一事件信號而將該待處理事件 指示碼提供給處理器休眠/喚醒邏輯(3 7 7 )(例如微 碼)。根據一實施例,微碼可於一適當的指令邊界上識別 該監視事件,這是因爲已以 MWAIT運算碼揭露了該事 件。此外,可使用事件偵測邏輯(3 4 5 )來偵測被指定爲 監視事件的各種事件。此外,根據另一實施例,可定期使 *-29- (26) 1266987 用一或有的定時器來退出該 mwait狀態,以便確保該超 執行緒處理器的正確工作,並檢查可能使該超執行緒處理 器凍結的某些特定的事件序列。如果並無任何事件告知要 退出該 mwait狀態,則該第一處理器可保持在休眠狀 態。 在處理步驟(822 )中,現在已被喚醒的該第一處理 器可要求該鎖定的主控權,且亦可重新要求任何先前被放 棄的資源。先前被放棄的資源意指該第一處理器處於休眠 狀態且等待該鎖定時所放棄的資源。根據一實施例,當該 處理器處於休眠狀態時,處理器休眠/喚醒邏輯(3 7 7 ) 可包含用來排淸處理器管線以便在處理步驟(5 3 0 )中淸 除所有指令之管線淸除邏輯(3 8 2 )。一旦排淸該管線之 後,分割/重整邏輯(385)可使與該第一處理器唯一相 關聯的任何分割的資源被放棄,以便爲其他處理器所使 用。可重整這些被放棄的資源,以便形成一組較大的資 源’而供其他處理器使用。例如,參照圖4所示兩個執 行緒的例子,可自兩個佇列中淸除與執行緒1相關的所 有指令。然後可合倂每一對佇列,以便將一較大的佇列提 供給第二執行緒。同樣地,可使該第二執行緒能使用來自 暫存器組的更多的暫存器,可空出來自儲存緩衝器的更多 條目以供該第二執彳7緒使用,且可使該第二執行緒能使用 該重新排序緩衝區中之更多的條目。在本質上,這些結構 回—到兩倍大小的卓一專用結構。亦可考慮因使用不同數 -30- (27) 1266987 目的處理器的實施例而產生的不同之比例。 根據一實施例,一旦該第一處理器被喚醒或恢復之 後,可於偵測到監視事件時再度啓動處理器休眠/喚醒邏 輯(3 7 7 )。仍然可再度淸除該管線,以便自該管線排淸 指令,而可再度分割先前被放棄的資源,以便照顧即將被 喚醒或最近被喚醒的第一處理器。 圖 9是使用監視記憶體等待來釋出一鎖定並監視該 鎖定的一程序的一實施例之一流程圖。如前文中參照圖 8 所述的,根擄一實施例,可監視諸如節點 N 等的對 應的佇列元件或節點(節點),而使用監視記憶體等待 (監視 mwait )來監視一相競爭的鎖定,並將尋找該相 競爭的鎖定的處理器置於休眠狀態,直到諸如該相競爭的 鎖定變爲可用爲止。在決定步驟(902 )中’針對一鎖定 的釋出而使用監視 mwait來決定該鎖定是否被晶正。如 果該鎖定並未相競爭,則可在處理步驟(904 )中釋出該 鎖定。然而,如果該鎖定相競爭,則在諸如擁有該鎖定的 處理器(釋出的處理器)回應其中包括一個或多個監視事 件的一個或多個事件而釋出該鎖定之前,將無法進行該鎖 定的釋出。 根據一實施例,一監視事件意指尋找該鎖定的處理器 (休眠的處理器)是可要求該相競爭的鎖定的下一(或第 一)處理器。例如,如前文中參照圖8所述的’該釋出 的處理器可發出一儲存 N.nest->Lock,而將尋找該相競 -31 - (28) 1266987 爭的鎖定的休眠的處理器自休眠狀態/ mwait喚醒 (If(N.next!=0){Store to N.next->Lock //waking up the sleeping processor})。換言之,在決定步驟(9〇6)中, 決定該節點是否到達(或移動回到)零(〇 )。如果該節 點已到達零(亦即 N .next! =0),則該釋出的處理器可發 出一儲存 N.nest->Lock訊息,告知該休眠的處理器是可 擁有該鎖定的下一處理器,且在處理步驟(9 1 〇 )中將該 休眠的處理器自休眠狀態喚醒。如果該節點尙未到達零, 則可在處理步驟(9 08 )中不釋出該鎖定。在處理步驟 (9 1 2 )中,該釋出的處理器釋出該鎖定。根據一實施 例,可防護在 MONITOR運算碼之後發生的儲存作業, 以便確保可處理並偵測到各儲存。根據一實施例,在進行 任何後續的指令之前,可能不會因監視器的啓動而需要先 進行某些作業,或者可以與其他作業並行之方式進行某些 作業’直到監視器被 MONITOR運算碼啓動而進行一監 視事件爲止。 圖 1 〇是一系統的一實施例之一方塊圖。根據一實 施例’如圖所示,該系統包含一組的N個超執行緒處理 器,亦即處理器(1005-1 - 1005 -N)。處理器(1〇〇5-1-10 05-N )被耦合到一匯流排(1〇5〇 )。根據一實施例,可 使用一單一的處理器、或若干超執行緒處理器及若干單一 執行緒處理器的一組合。此外,可使用其他習知的或可使 用的系統配置。例如,可以一種點對點之方式連接處理器 -32- (29) 1266987 (1 0 0 5 - 1 - 1 0 0 5 -N),且可將諸如記憶體介面等的部分整 合到每一處理器(1 0 0 5 - 1 - 1 00 5 -N )。 根據一實施例,係將被耦合到匯流排(1 〇 5 〇 )的一記 憶體介面(1 0 1 5 )耦合到一記憶體(1 〇 3 〇 )及一媒體介面 (1 020 )。記憶體(1 03 0 )可包含一可進行多重處理的作 業系統( 1035)、以及一第一執行緒(ι〇4〇)的指令及— 桌一執订緒(1 〇4 5 )的指令。根據一實施例,第―執行緒 (1 〇4 〇 )的指令可包括一閒置迴圈。 根據一實施例,可在多種機器可讀取的媒體中之任一 種機器可讀取的媒體中提供用來執行各種功能或實施例的 適用軟體。根據一實施例,媒體介面(1 〇 2 0 )可提供此種 軟體的一介面。 根據一實施例,媒體介面(1 0 2 0 )可以是一儲存媒體 (例如,一磁碟機、一光碟機、一磁帶機、或一非揮發性 記憶體等的儲存媒體)、或一傳輸媒體(例如,一網路介 面、或其他類比或數位通訊介面)的一介面。媒體介面 (1 02 0 )可自一媒體(例如儲存媒體(1 092 )或傳輸媒體 (1 0 9 5 ))讀取軟體常式。機器可讀取的媒體是可儲存或 至少暫時儲存資訊以供一機器介面讀取的任何媒體。該媒 體可包括信號傳輸(經由導線、光纖、或作爲媒體的空 氣)及(或)諸如各種類型的磁碟及記憶儲存裝置等的實 體儲存媒體(1 092 )。 圖]1是一設計的模擬、擬似、及製造的各種設計 -33- (30) 1266987 表示法或格式的一實施例之一方塊圖。表現一設計的資料 可以若干種方式來代表該設計。首先,如在模擬中是有用 的’可使用一硬體描述語言或在本質上可提供所設計硬體 的預期執行方式的一電腦化模型之另一種功能性描述語言 來代表硬體。可在諸如一電腦記憶體等的一儲存媒體 (1 1 0 0 )中儲存硬體模型(1 1 1 〇 ),因而可使用模擬軟體 (1120)來模擬該模型,其中該模擬軟體(1120)可將一 特定的測試套裝軟體(1 1 3 0 )施加到硬體模型(1 1 1 0 ), 以便決定該硬體模型(1 1 1 0 )是正在執行其預期的功能。 根據一實施例,可以不將模擬軟體(1 120 )記錄、留存、 或存放在該媒體中。 根據一實施例,可在設計過程的某些階段中產生具有 邏輯電路及(或)電晶體閘的一電路層級模型。有時係利 用可程式邏輯而以構成該模型的專用硬體模擬器而以類似 之方式模擬此種模型。在更進一步的程度下,此類磨體可 以是一擬似技術。根據一實施例,可重新設定組態的硬體 涉及用來儲存採用本發明所揭示技術的一模型之一機器可 讀取的媒體。 此外,根據一實施例,大部分的設計在某些階段中可 到達代表該硬體模型中之各裝置的實體配置之一層級的資 料。當可使用傳統的半導體製造技術時,代表硬體模型的 資料可以是指定用來製造積體電路的罩幕的不同罩幕層上 的各種特徵部位的是否存在之資料。代表積體電路的該資 -34- (31) 1266987 料可具有本發明所揭示的技術,這是因爲可模擬或製造該 資料中之電路或邏輯,以便執行這些技術。 根據一實施例,可在任何形式的機器可讀取的媒體中 儲存該資料。用來傳輸此種資訊的經過調變的或以其他方 式產生的一光波或電波(116〇)、或諸如一碟等的〜磁或 光儲存單元(1 1 4〇 )可代表該媒體。描述該設計或該設計 的某一部分的該組位元可代表可將其本身售出或爲其他人 使用以供進一步設計或製造的一物品。 雖然已說明了且在各附圖中釋出了某些貫施例,彳曰是 我們當了解,這些實施例只是舉例而非限制,且本發明的 實施例並不限於所示出及說明的特定結構及配置,這是因 爲對此項技術具有一般知識者在硏究本發明的揭示之後將 可進行各種其他的修改。 【圖式簡單說明】 最後的申請專利範圍特別述及了本發明的特徵。若參 照下文中之詳細說明,並配合各附圖,將可更易於了解本 發明的實施例及其優點,這些附圖有: 圖 1是具有一記憶體存取監視器的一超執行緒處理 器的一實施例之一方塊圖; 圖 2是一超執行緒處理器的一作業實施例之一流程 圖; 圖 3是一超執行緒處理器的一實施例之一方塊圖; -35- (32) 1266987 圖 4是用來分割、分享、及複製資源的一程序的一 實施例之一方塊圖; 圖 5是用來暫停及恢復一執行緒的執行的一程序的 一實施例之一流程圖; 圖 6 是監視邏輯的啓動及作業的一程序的一實施例 之一流程圖; 圖 7 是監視器作業的一程序的一實施例之一流程 圖; 圖 8 是使用監視記憶體等待以取得一鎖定並監視該 鎖定的一程序的一實施例之一流程圖; 圖 9 是使用監視記憶體等待來釋出一鎖定並監視該 鎖定的一程序的一實施例之一流程圖; 圖 1 〇是一系統的一實施例之一方塊圖;以及 圖 11是一設計的模擬、擬似、及製造的各種設計 表示法或格式的一實施例之一方塊圖。 主要元件符號說明 1 〇 〇 超執行緒處理器 1 1 0記憶體存取監視器 1 2 0匯流排/記憶體控制器 1 3 0 ; 3 6 5 前端 1 4 0,1 6 0執行緖/處理器可分割的資源 180複製狀態 - 36- (33) (33)1266987 1 5 0 共用的資源 1 1 2監視器週期資訊暫存器 1 1 4 比較邏輯 3 5 0 —致性相關邏輯 3 1 0 監視器 3 7 7執行緒暫停/恢復及處理器休眠/喚醒邏輯 3 0 0 匯流排介面 3 4 0 匯流排控制器 3 4 5 事件偵測邏輯 3 8 0 後端邏輯 3 7 0 執行資源 3 7 5 位址轉換邏輯 4 0 5指令提取部分 4 1 5 更名部分 4 2 5排程階段 4 3 〇 暫存器讀取部分 44 5暫存器寫入部分 4 3 5 執行部分 440 L1快取記憶體 4 1 0佇列階段 4 5 0退休階段 3 3 5監視位址暫存器 3 8 2管線淸除邏輯 -37 - (34) 1266987
3 8 5 分割/重整邏輯 3 2 0 週期比較邏輯 3 3 0位址比較電路 3 2 5寫入偵測邏輯 1005-1-1005-N 處理器 1 〇 5 0 匯流排 1 〇 1 5記憶體介面 1 0 3 0,1 1 5 0記憶體 1 〇 2 0媒體介面 1 0 3 5 可進行多重處理的作業系統 1 040 第一執行緖 1 0 4 5 第二執行緖 1092儲存媒體 1 〇 9 5 傳輸媒體
1 1 1 〇硬體模型 1100儲存媒體 1120模擬軟體 1 i 3 0測試套裝軟體 1 1 6 0 光波或電波 1 1 4 0磁或光儲存單元 - 38 -
Claims (1)
1266987
拾、申請專利範圍 1 · 一種監視鎖定之方法,包含下列步驟: 監視關聯於一相競爭的鎖定的一節點;以及 將想要取得該相競爭的鎖定之一處理器設定於休眠狀 態,直到一事件發生爲止。 2.如申請專利範圍第1項之方法,其中監視該節 點之步驟包含下列步驟:執行一監視指令以啓動對該節點 的監視,而監視對應於該相競爭的鎖定之一鎖定位址。 3 ·如申請專利範圍第 1項之方法,進一步包含下 列步驟:執行一記憶體等待(mwait )指令,以便將該處 理器置於休眠狀態,直到該事件發生爲止。 4 ·如申請專利範圍第 1項之方法,進一步包含下 列步驟: 當該事件發生時,喚醒該處理器,其中該事件包含該 相競爭的鎖定變爲可使用;以及 該處理器取得該可使用的鎖定。 5 ·如申請專利範圍第 1項之方法,其中該相競爭 的鎖定變爲可使用包含:該處理器是一佇列中取得該相競 爭的鎖定之次一處理器,且該相競爭的鎖定被釋出。 6. 如申請專利範圍第 1項之方法,其中將該處理 器置於休眠狀態之步驟包含下列步驟:該處理器放棄資 源,以供其他處理器使用。 7. 如申請專利範圍第 4項之方法,其中該喚醒步 驟包含下列步驟:停止啓動對該節點的揭示,且該處理器 -39- 1266987 (2) 使用被放棄的資源。 8. 如申請專利範圍第 7 項之方法,其中該放棄步 驟包含下列步驟: 放棄一暫存器組中之複數個暫存器; 放棄一指令佇列中之複數個指令佇列條目; 放棄一儲存緩衝器中之複數個儲存緩衝器條目;以及 放棄一重新排序緩衝區中之複數個重新排序緩衝區條 S。 9. 一種監視鎖定之方法,包含下列步驟:指定與一 佇列元件相關聯的一監視位址,以便監視該佇列元件,其 中該指定步驟包含執行一監視指令及一記憶體等待 (m w a i t )指令。 1 Ο ·如申請專利範圍第 9項之方法,其中該佇列元 件對應於要取得一相競爭的鎖定之一處理器。 1 1 .如申請專利範圍第 1 0 項之方法,其中該處理 器被置於休眠狀態,同時使用監視器/ mwait的一組合 來等待該相競爭的鎖定。 1 2 ·如申請專利範圍第 11項之方法,其中當一事 件發生時,喚醒該處理器,而該事件包含該處理器是一佇 列中取得該相競爭的鎖定之次一處理器且該相競爭的鎖定 被釋出。 1 3 · —種處理器,包含: 一執行單元,用以執行一監視指令及一記憶體等待 (mwait )指令,以便監視與一相競爭的鎖定相關聯的一 -40- 1266987 (3) _想要取得該相競爭的鎖定之一邏輯處理器置於休眠 狀態到一事件發生爲止之一邏輯。 14*如申請專利範圍第 13項之處理器,進一步包 t偵測邏輯,用以偵測該事件的發生,其中該事件包含一 f的事件,而該指定的事件包括該相競爭的鎖定變爲可 使用。 1 5 .如申請專利範圍第 13項之處理器,其中將該 51 _處理器置於休眠狀態包含:該邏輯處理器放棄資源, 以供其他邏輯處理器使用。 1 6.如申請專利範圍第 13項之處理器,其中該邏 __〜步包含當該事件發生時喚醒該邏輯處理器,而該喚 包含:停止啓動對該節點的監視,且該邏輯處理器使用 被放棄的資源。 1 7 .如申請專利範圍第 1 6項之處理器,其中該放 棄包含 : 放棄一暫存器組中之複數個暫存器; 放棄一指令佇列中之複數個指令佇列條目; 放棄一儲存緩衝器中之複數個儲存緩衝器條目;以及 放棄一重新排序緩衝區中之複數個重新排序緩衝區條 巨。 1 8 . —種監視鎖定之系統,包含: 一儲存媒體;以及 被耦合到該儲存媒體的一處理器,該處理器具有·· 一執行單元,用以執行一監視指令及一記憶體等待 -41- 1266987 (4) (mwait )指令,以便監視與一相競爭的鎖定相關聯的一 節點;以及 將想要取得該相競爭的鎖定之一邏輯處理器置於休眠 狀態到一事件發生爲止之一邏輯。 1 9 .如申請專利範圍第 1 8項之系統,進一步包含 偵測邏輯,用以偵測該事件的發生,其中該事件包含一指 定的事件,而該指定的事件包括該相競爭的鎖定變爲可使 用。 2 0 .如申請專利範圍第 1 8項之系統,其中將該邏 輯處理器置於休眠狀態包含:該邏輯處理器放棄資源,以 供其他邏輯處理器使用。 2 1 .如申請專利範圍第 1 8 項之系統,其中該邏輯 進一步包含當該事件發生時喚醒該邏輯處理器,而該喚醒 包含:停止啓動對該節點的監視,且該邏輯處理器使用被 放棄的資源。 2 2· —種機器可讀取的媒體,該機器可讀取的媒體中 儲存有代表指令序列的資料,而當該等指令序列被一機器 執行時,將使該機器執行下列步驟: 監視與一相競爭的鎖定相關聯的一節點;以及 將想要取得該相競爭的鎖定之一處理器置於休眠狀 態,直到一事件發生爲止。 23.如申請專利範圍第 22 項之機器可讀取的媒 體,其中監視該節點之該步驟包含下列步驟:執行一監視 指令以啓動對該節點的監視,而監視對應於該相競爭的鎖 -42- 1266987 (5) 定之一鎖定位址。 24.如申請專利範圍第 22項之機器可讀取的媒 體,其中當該等指令序列被該機器執行時,將進一步使該 機器執行下列步驟:執行一記憶體等待(mwah )指令, 以便將該處理器置於休眠狀態至該事件發生爲止。 2 5.如申請專利範圍第 22 項之機器可讀取的媒 體,其中當該等指令序列被該機器執行時,將進一步使該 機器執行下列步驟: 當該事件發生時,喚醒該處理器,其中該事件包含該 相競爭的鎖定變爲可使用;以及 讓該處理器取得該可使用的鎖定。 2 6·如申請專利範圍桌 2 2 項之機器可讀取的媒 體,其中將該處理器置於休眠狀態之該步驟包含下列步 驟:該處理器放棄資源,以供其他處理器使用。 2 7. —種機器可讀取的記錄媒體,該機器可讀取的記 錄媒體中儲存有代表指令序列的資料,而當該等指令序列 被一機器執行時,將使該機器執行下列步驟:指定與一仔 列元件相關聯的一監視位址,以便監視該佇列元件,其中 該指定步驟包含執行一監視指令及一記憶體等待 (m w a i t )指令。 28. 如申請專利範圍第 27項之機器可讀取的記錄 媒體,其中該佇列元件對應於要取得一相競爭的鎖定之— 處理器。 29. 如申請專利範圍第 28項之機器可讀取的記錄 -43- 1266987 (6) 媒體,其中當該等指令序列被該機器執行時,將進〜步使 該機器執行下列步驟··將該處理益置於休眠狀態,同時使 用監視器/ m w a i t的一組合來等待該相競爭的鎖定。 30.如申請專利範圍第 29項之機器可讀取的記錄 媒體,其中當該等指令序列被該機器執行時,將進一步使 該機器執行下列步驟:當一事件發生時,喚醒該處理器, 而該事件包含該相競爭的鎖定變爲可使用。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/608,708 US7213093B2 (en) | 2003-06-27 | 2003-06-27 | Queued locks using monitor-memory wait |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200525348A TW200525348A (en) | 2005-08-01 |
TWI266987B true TWI266987B (en) | 2006-11-21 |
Family
ID=33540657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW093117562A TWI266987B (en) | 2003-06-27 | 2004-06-17 | Method for monitoring locks, processor, system for monitoring locks, and machine-readable medium |
Country Status (9)
Country | Link |
---|---|
US (3) | US7213093B2 (zh) |
JP (2) | JP2007520769A (zh) |
KR (1) | KR100864747B1 (zh) |
CN (1) | CN100337206C (zh) |
DE (1) | DE112004001133T5 (zh) |
GB (1) | GB2417805B (zh) |
HK (1) | HK1081301A1 (zh) |
TW (1) | TWI266987B (zh) |
WO (1) | WO2005003971A2 (zh) |
Families Citing this family (69)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7213093B2 (en) * | 2003-06-27 | 2007-05-01 | Intel Corporation | Queued locks using monitor-memory wait |
US7236918B2 (en) * | 2003-12-31 | 2007-06-26 | International Business Machines Corporation | Method and system for selective compilation of instrumentation entities into a simulation model of a digital design |
US8607241B2 (en) | 2004-06-30 | 2013-12-10 | Intel Corporation | Compare and exchange operation using sleep-wakeup mechanism |
US20060031201A1 (en) * | 2004-08-06 | 2006-02-09 | Microsoft Corporation | Life moment tagging and storage |
US7590738B2 (en) * | 2004-10-27 | 2009-09-15 | Hewlett-Packard Development Company, L.P. | Method and system for processing concurrent events in a provisional network |
US20070004501A1 (en) * | 2005-06-29 | 2007-01-04 | Christopher Brewer | Multi-core processing in a wagering game machine |
US20070067502A1 (en) * | 2005-09-22 | 2007-03-22 | Silicon Integrated Systems Corp. | Method for preventing long latency event |
US7958510B2 (en) * | 2005-12-30 | 2011-06-07 | Intel Corporation | Device, system and method of managing a resource request |
US8094158B1 (en) * | 2006-01-31 | 2012-01-10 | Nvidia Corporation | Using programmable constant buffers for multi-threaded processing |
US7802073B1 (en) * | 2006-03-29 | 2010-09-21 | Oracle America, Inc. | Virtual core management |
US7882381B2 (en) | 2006-06-29 | 2011-02-01 | Intel Corporation | Managing wasted active power in processors based on loop iterations and number of instructions executed since last loop |
US8276151B2 (en) * | 2006-09-06 | 2012-09-25 | International Business Machines Corporation | Determination of running status of logical processor |
US7899663B2 (en) * | 2007-03-30 | 2011-03-01 | International Business Machines Corporation | Providing memory consistency in an emulated processing environment |
US8140823B2 (en) * | 2007-12-03 | 2012-03-20 | Qualcomm Incorporated | Multithreaded processor with lock indicator |
US8341635B2 (en) | 2008-02-01 | 2012-12-25 | International Business Machines Corporation | Hardware wake-and-go mechanism with look-ahead polling |
US8386822B2 (en) * | 2008-02-01 | 2013-02-26 | International Business Machines Corporation | Wake-and-go mechanism with data monitoring |
US8312458B2 (en) | 2008-02-01 | 2012-11-13 | International Business Machines Corporation | Central repository for wake-and-go mechanism |
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 |
US8316218B2 (en) * | 2008-02-01 | 2012-11-20 | International Business Machines Corporation | Look-ahead wake-and-go engine with speculative execution |
US8612977B2 (en) | 2008-02-01 | 2013-12-17 | International Business Machines Corporation | Wake-and-go mechanism with software save of thread state |
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 |
US8788795B2 (en) | 2008-02-01 | 2014-07-22 | International Business Machines Corporation | Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors |
US8732683B2 (en) | 2008-02-01 | 2014-05-20 | International Business Machines Corporation | Compiler providing idiom to idiom accelerator |
US8640141B2 (en) * | 2008-02-01 | 2014-01-28 | International Business Machines Corporation | Wake-and-go mechanism with hardware private array |
US8516484B2 (en) | 2008-02-01 | 2013-08-20 | International Business Machines Corporation | Wake-and-go mechanism for a data processing system |
US8225120B2 (en) | 2008-02-01 | 2012-07-17 | International Business Machines Corporation | Wake-and-go mechanism with data exclusivity |
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 |
US8250396B2 (en) * | 2008-02-01 | 2012-08-21 | International Business Machines Corporation | Hardware wake-and-go mechanism for a data processing system |
US8171476B2 (en) | 2008-02-01 | 2012-05-01 | International Business Machines Corporation | Wake-and-go mechanism with prioritization of threads |
US8127080B2 (en) | 2008-02-01 | 2012-02-28 | International Business Machines Corporation | Wake-and-go mechanism with system address bus transaction master |
US8086437B2 (en) * | 2008-04-02 | 2011-12-27 | Microsoft Corporation | Modeling and simulating software contention |
US20100262966A1 (en) * | 2009-04-14 | 2010-10-14 | International Business Machines Corporation | Multiprocessor computing device |
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 |
US8886919B2 (en) * | 2009-04-16 | 2014-11-11 | International Business Machines Corporation | Remote update programming idiom accelerator with allocated processor resources |
US8145723B2 (en) * | 2009-04-16 | 2012-03-27 | International Business Machines Corporation | Complex remote update programming idiom accelerator |
CN101876942A (zh) * | 2009-04-30 | 2010-11-03 | 卓望数码技术(深圳)有限公司 | 一种终端软件的测试方法及装置 |
US8156275B2 (en) * | 2009-05-13 | 2012-04-10 | Apple Inc. | Power managed lock optimization |
US8364862B2 (en) * | 2009-06-11 | 2013-01-29 | Intel Corporation | Delegating a poll operation to another device |
US8464035B2 (en) * | 2009-12-18 | 2013-06-11 | Intel Corporation | Instruction for enabling a processor wait state |
US8898671B2 (en) | 2010-07-07 | 2014-11-25 | Panasonic Corporation | Processor that executes a plurality of threads by promoting efficiency of transfer of data that is shared with the plurality of threads |
US8516577B2 (en) * | 2010-09-22 | 2013-08-20 | Intel Corporation | Regulating atomic memory operations to prevent denial of service attack |
US20120144218A1 (en) * | 2010-12-03 | 2012-06-07 | International Business Machines Corporation | Transferring Power and Speed from a Lock Requester to a Lock Holder on a System with Multiple Processors |
WO2012083486A1 (en) * | 2010-12-21 | 2012-06-28 | Intel Corporation | System and method for power management |
US8713262B2 (en) | 2011-09-02 | 2014-04-29 | Nvidia Corporation | Managing a spinlock indicative of exclusive access to a system resource |
CN103136099B (zh) * | 2011-12-02 | 2017-08-25 | 腾讯科技(深圳)有限公司 | 测试软件的方法、模拟终端、后台服务器和系统 |
WO2013101188A1 (en) * | 2011-12-30 | 2013-07-04 | Intel Corporation | Memory event notification |
US8966494B2 (en) * | 2012-03-16 | 2015-02-24 | Arm Limited | Apparatus and method for processing threads requiring resources |
US8943505B2 (en) | 2012-08-24 | 2015-01-27 | National Instruments Corporation | Hardware assisted real-time scheduler using memory monitoring |
US20140075163A1 (en) | 2012-09-07 | 2014-03-13 | Paul N. Loewenstein | Load-monitor mwait |
US9141454B2 (en) * | 2012-12-27 | 2015-09-22 | Intel Corporation | Signaling software recoverable errors |
US9558132B2 (en) * | 2013-08-14 | 2017-01-31 | Intel Corporation | Socket management with reduced latency packet processing |
US10705961B2 (en) | 2013-09-27 | 2020-07-07 | Intel Corporation | Scalably mechanism to implement an instruction that monitors for writes to an address |
KR101979697B1 (ko) * | 2014-10-03 | 2019-05-17 | 인텔 코포레이션 | 어드레스로의 기입들을 모니터링하는 명령어를 구현하는 스케일가능형 메커니즘 |
US9760511B2 (en) * | 2014-10-08 | 2017-09-12 | International Business Machines Corporation | Efficient interruption routing for a multithreaded processor |
US9342384B1 (en) * | 2014-12-18 | 2016-05-17 | Intel Corporation | Function callback mechanism between a central processing unit (CPU) and an auxiliary processor |
US11023233B2 (en) | 2016-02-09 | 2021-06-01 | Intel Corporation | Methods, apparatus, and instructions for user level thread suspension |
US10185564B2 (en) | 2016-04-28 | 2019-01-22 | Oracle International Corporation | Method for managing software threads dependent on condition variables |
US11061730B2 (en) * | 2016-11-18 | 2021-07-13 | Red Hat Israel, Ltd. | Efficient scheduling for hyper-threaded CPUs using memory monitoring |
US10481936B2 (en) | 2017-02-22 | 2019-11-19 | Red Hat Israel, Ltd. | Efficient virtual machine memory monitoring with hyper-threading |
US11068407B2 (en) | 2018-10-26 | 2021-07-20 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction |
US10884740B2 (en) | 2018-11-08 | 2021-01-05 | International Business Machines Corporation | Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads |
US11119781B2 (en) | 2018-12-11 | 2021-09-14 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a fronting load |
US11553337B2 (en) | 2019-12-10 | 2023-01-10 | Winkk, Inc. | Method and apparatus for encryption key exchange with enhanced security through opti-encryption channel |
US11106608B1 (en) | 2020-06-22 | 2021-08-31 | International Business Machines Corporation | Synchronizing access to shared memory by extending protection for a target address of a store-conditional request |
US20220394023A1 (en) * | 2021-06-04 | 2022-12-08 | Winkk, Inc | Encryption for one-way data stream |
US11693776B2 (en) | 2021-06-18 | 2023-07-04 | International Business Machines Corporation | Variable protection window extension for a target address of a store-conditional request |
Family Cites Families (24)
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 |
JPH01300365A (ja) * | 1988-05-30 | 1989-12-04 | Nippon Telegr & Teleph Corp <Ntt> | マルチプロセッサシステムの排他制御方式 |
US4965718A (en) | 1988-09-29 | 1990-10-23 | International Business Machines Corporation | Data processing system incorporating a memory resident directive for synchronizing multiple tasks among plurality of processing elements by monitoring alternation of semaphore data |
JPH05225149A (ja) * | 1992-02-13 | 1993-09-03 | Toshiba Corp | ロック方式 |
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
CN100373331C (zh) | 1996-08-27 | 2008-03-05 | 松下电器产业株式会社 | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 |
JPH10149285A (ja) * | 1996-11-18 | 1998-06-02 | Hitachi Ltd | 命令実行制御方法および情報処理装置 |
US6512591B1 (en) * | 1997-02-19 | 2003-01-28 | Hewlett-Packard Company | Multiple peripheral support for a single physical port in a host-based printing system |
WO1998043193A2 (en) | 1997-03-21 | 1998-10-01 | University Of Maryland | Spawn-join instruction set architecture for providing explicit multithreading |
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 |
US6035374A (en) * | 1997-06-25 | 2000-03-07 | Sun Microsystems, Inc. | Method of executing coded instructions in a multiprocessor having shared execution resources including active, nap, and sleep states in accordance with cache miss latency |
GB2345555A (en) * | 1999-01-05 | 2000-07-12 | Ibm | Controlling device access in a network |
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 |
US6522649B1 (en) * | 2000-04-07 | 2003-02-18 | Omneon Video Networks | Method of distributing video reference signals as isochronous network packets |
JP4253796B2 (ja) * | 2001-11-08 | 2009-04-15 | 富士通株式会社 | コンピュータ及び制御方法 |
US20030126379A1 (en) | 2001-12-31 | 2003-07-03 | Shiv Kaushik | Instruction sequences for suspending execution of a thread until a specified memory access occurs |
US20030126416A1 (en) | 2001-12-31 | 2003-07-03 | Marr Deborah T. | Suspending execution of a thread in a multi-threaded processor |
US7127561B2 (en) | 2001-12-31 | 2006-10-24 | Intel Corporation | Coherency techniques for suspending execution of a thread until a specified memory access occurs |
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 |
US6839816B2 (en) * | 2002-02-26 | 2005-01-04 | International Business Machines Corporation | Shared cache line update mechanism |
US7234143B2 (en) * | 2002-06-20 | 2007-06-19 | Hewlett-Packard Development Company, L.P. | Spin-yielding in multi-threaded systems |
US7213093B2 (en) * | 2003-06-27 | 2007-05-01 | Intel Corporation | Queued locks using monitor-memory wait |
JP4376692B2 (ja) * | 2004-04-30 | 2009-12-02 | 富士通株式会社 | 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ |
US7257679B2 (en) * | 2004-10-01 | 2007-08-14 | Advanced Micro Devices, Inc. | Sharing monitored cache lines across multiple cores |
-
2003
- 2003-06-27 US US10/608,708 patent/US7213093B2/en not_active Expired - Fee Related
-
2004
- 2004-06-16 KR KR1020057025081A patent/KR100864747B1/ko not_active IP Right Cessation
- 2004-06-16 JP JP2006515366A patent/JP2007520769A/ja active Pending
- 2004-06-16 WO PCT/US2004/019373 patent/WO2005003971A2/en active Application Filing
- 2004-06-16 DE DE112004001133T patent/DE112004001133T5/de not_active Ceased
- 2004-06-16 GB GB0519863A patent/GB2417805B/en not_active Expired - Fee Related
- 2004-06-17 TW TW093117562A patent/TWI266987B/zh not_active IP Right Cessation
- 2004-06-28 CN CNB2004100594631A patent/CN100337206C/zh not_active Expired - Fee Related
-
2006
- 2006-03-23 HK HK06103651A patent/HK1081301A1/xx not_active IP Right Cessation
-
2007
- 2007-03-09 US US11/716,377 patent/US7328293B2/en not_active Expired - Fee Related
- 2007-09-20 US US11/903,249 patent/US7640384B2/en not_active Expired - Lifetime
-
2009
- 2009-09-14 JP JP2009211907A patent/JP2010044770A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20060029151A (ko) | 2006-04-04 |
WO2005003971A2 (en) | 2005-01-13 |
CN100337206C (zh) | 2007-09-12 |
US20070162774A1 (en) | 2007-07-12 |
US20040267996A1 (en) | 2004-12-30 |
GB2417805B (en) | 2007-11-21 |
TW200525348A (en) | 2005-08-01 |
KR100864747B1 (ko) | 2008-10-22 |
WO2005003971A3 (en) | 2005-07-14 |
JP2007520769A (ja) | 2007-07-26 |
CN1577282A (zh) | 2005-02-09 |
GB0519863D0 (en) | 2005-11-09 |
US20080022141A1 (en) | 2008-01-24 |
DE112004001133T5 (de) | 2006-05-11 |
GB2417805A (en) | 2006-03-08 |
JP2010044770A (ja) | 2010-02-25 |
US7213093B2 (en) | 2007-05-01 |
HK1081301A1 (en) | 2006-05-12 |
US7328293B2 (en) | 2008-02-05 |
US7640384B2 (en) | 2009-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI266987B (en) | Method for monitoring locks, processor, system for monitoring locks, and machine-readable medium | |
TWI590153B (zh) | 用於多線串處理之方法 | |
RU2233470C2 (ru) | Способ и устройство для блокировки сигнала синхронизации в многопоточном процессоре | |
KR100531433B1 (ko) | 다중스레드 프로세서내의 이벤트 어커런스를 처리하는방법 및 장치 | |
TWI512448B (zh) | 用以啟用處理器等待狀態之指令 | |
JP4642305B2 (ja) | マルチスレッド・プロセッサ内の複数のスレッドに入り、出る方法と装置 | |
KR100617417B1 (ko) | 멀티-스레딩 프로세서에서 스레드의 실행을 정지시키기위한 시스템 및 방법 | |
JP5479416B2 (ja) | スレッドレベルの投機実行を拡張するためのプリミティブ | |
US7127561B2 (en) | Coherency techniques for suspending execution of a thread until a specified memory access occurs | |
US6493741B1 (en) | Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit | |
US7080209B2 (en) | Method and apparatus for processing a load-lock instruction using a relaxed lock protocol | |
GB2441903A (en) | Resuming control of resources by a processor on exiting a sleep mode and disabling an associated monitor. | |
Poenaru et al. | Systems Group, Department of Computer Science, ETH Zurich |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |