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 PDF

Info

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
Application number
TW093117562A
Other languages
English (en)
Other versions
TW200525348A (en
Inventor
Per Hammarlund
James Crossland
Anil Aggarwal
Shivnandan Kaushik
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW200525348A publication Critical patent/TW200525348A/zh
Application granted granted Critical
Publication of TWI266987B publication Critical patent/TWI266987B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation 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項之機器可讀取的記錄 媒體,其中當該等指令序列被該機器執行時,將進一步使 該機器執行下列步驟:當一事件發生時,喚醒該處理器, 而該事件包含該相競爭的鎖定變爲可使用。
TW093117562A 2003-06-27 2004-06-17 Method for monitoring locks, processor, system for monitoring locks, and machine-readable medium TWI266987B (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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