TWI322959B - A method and apparatus for suspending execution of a thread until a specified memory access occurs - Google Patents

A method and apparatus for suspending execution of a thread until a specified memory access occurs Download PDF

Info

Publication number
TWI322959B
TWI322959B TW091137282A TW91137282A TWI322959B TW I322959 B TWI322959 B TW I322959B TW 091137282 A TW091137282 A TW 091137282A TW 91137282 A TW91137282 A TW 91137282A TW I322959 B TWI322959 B TW I322959B
Authority
TW
Taiwan
Prior art keywords
thread
monitoring
doc
address
event
Prior art date
Application number
TW091137282A
Other languages
English (en)
Other versions
TW200305820A (en
Inventor
Rodgers Dion
T Marr Deborah
L Hill David
Kaushik Shiv
B Crossland James
A Koufaty David
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 TW200305820A publication Critical patent/TW200305820A/zh
Application granted granted Critical
Publication of TWI322959B publication Critical patent/TWI322959B/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/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/3009Thread 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/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/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/30079Pipeline control instructions, e.g. multicycle NOP
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)
  • Acyclic And Carbocyclic Compounds In Medicinal Compositions (AREA)

Description

13.22959 捌、聲明事項 □本案係符合專利法第二十條第一項□第一款但書或□第二款但書規 定之期間,其日期為:_ □本案已向下列國家(地區)申請專利,申請日期及案號資料如下: 【格式請依:申請國家(地區);申請日期;申請案號順序註記】 1. 美園;2001/12/31 ; 10/039,579_ 2. _ □主張專利法第二十四條第一項優先權: 【格式請依:受理國家(地區);曰期;案號順序註記】 1. 美國;2001/12/31 ; 10/039,579_ 2. _
3. _ 4. _ 5. _ 6. _ 7. _ 8. _ 9. _ 10. _ □主張專利法第二十五條之一第一項優先權: 【格式請依:申請日;申請案號順序註記】
2. □主張專利法第二十六條微生物: □國内微生物【格式請依:寄存機構;日期;號碼順序註記】 2._ 3._ 口國外微生物【格式請依:寄存國名;機構;日期;號碼順序註記】 □熟習該項技術者易於獲得,不須寄存。 C82654PBY20l505C.doc 2._ 3._ 1322959 ⑴ 坎、發明說明 (發明說明應敘明:發明所屬之技術領域、先前技術、内容'實施方式及圖式簡單說明) 相關申請案 本申請案係相關於申請案編號1 0,039,777 ’其標題為•,暫 停一多重執行緒處理器中一執行緒之執行";申請案編號 10,039,656,其標題為”用以暫停一執行緒的執行直到發生 一特定記憶體存取之同步技術"現為美國專利案號 7,127,561;申請案編號10,039,65〇,其標題為"用以暫停— 執行緒的執行直到發生一特定記憶體存取的指令序列"。所 ®有申請案都係以與本申請案相同的曰期申請。 1 .技術領域 本發明係相關於處理器的範圍。更特別地,本發明係相 關於用以暫時暫停在一多執行緒處理器中一執行緒的處理 之多執行緒處理器及技術。 2.先前技術 一多執行緒處理器能夠同時處理多重不同指令順序。一 鲁主要驅動在-單一處理器中多重指令流的執行的激勵因素 係在於處理器運用所導致的改良。高度平行架構已經發展 多年,但是常常地還是難以從一單一指令流中擷取出足夠 的平行性,以運用該等多重執行單元。同步多執行緒處理 器可以讓多重指令流能夠以該不同執行資源同時執行以 試圖更佳地運用這些資源。多執行緒處理係特別地有利於 遭遇到長等待時間的延遲或經常等待事件發生的程式。當 一執行緒係等待著一待完成的長等待時間的任務或是一特 殊的事件時’可以使用一不同的執行緒。 C82654PBY201505C.doc (2) 1322959
許多不同用以控制當一處理器在執行緒之間的切換的技 術已經提出》例如’某些處理器偵測特別久的等待時間事 件,像是L2快取遺漏’則會切換執行緒以回應這些債測到 的長等待時間事件。在某些狀況下,該等長等待時間事件 的偵測係為有效時,該事件偵測係不可能偵測到在所有的 點都能夠有效率地切換執行緒。特別地,事件基的執行緒 切換可能會無法偵測到在程式中程式員故意要延遲的地 方。 事貫上’經常該程式員係處於決定何時能夠有效率地切 換執行緒以避免浪費的旋轉等待環(spin-wait loops)或其他 消耗資源的延遲技術的位置。因此,允許程式可以控制執 行緒的切換可以促進程式更有效率地操作。明確可以影響 執行緒選擇的程式對該目的是有利的。例如,一"暫停"指 令係描述在美國專利申請案編號09/489,130,於1/21/2000歸 檔。該暫停指令允許一執行緒能夠暫時地停止,直到達到 一計數或是直到一指令已經透過該處理器管線傳送。不同 技術係有助於讓程式員能夠更有效率地利用多執行緒處理 器的資源。 發明内容 下文中描述用以暫停一執行緒的執行,直到一特定記憶 體存取發生的技術。在該下面描述中,許多特定細節像是 邏輯實行、運算碼(opcodes)、制定運算元的方法、資源分割 /共用/複製實行、系統組件的類型及相互關係、及邏輯分割 /整合選擇係在此提出’以提供本發明更詳盡的了解。然 C82654PBY20!505C.doc 1322959 ⑶ 而,熟悉該項技藝者應了解的 定細節下實行之。纟其他案例:,發明可以在沒有該等待 及完全軟體指令順序並沒二控制架冑、間位準電路 明。-般熟悉該項技藝者以”常:細地顯示以防混清本發 過度的驗證下實施適當的功能。 龙有
+构二孜術可以允許一程式員能夠在使得其他執行堵利 用處理資源時’實打—等待機制於一執行緒中…監視可 以*又疋成使得一執行緒可以暫停,直到一特定記憶體存 取。’像是到-特定記憶體位址的寫人發生H —執行 緒可以藉著一特定事件在沒有執行浪費處理器資源的常式 下像疋方疋轉荨待環,來恢復執行。在某些實施例中, 先前專用於該暫停執行緒的分割可以在該執行緒係暫停時 交出。這些及/或其他揭露技術可以便利地改良整體處理器 的傳輸量。 實施方式 圖1說明一具有用以監視記憶體存取的記憶體存取監视 110的多執行緒處理器100的實施例。一”處理器"在某些實施 例中可以當作為一單一積體電路β在其他實施例中,多重 積體電路可以共同形成一處理器,及在尚有其他實施例 中’硬體及軟體常式(例如二元轉換常式)可以共同形成該處 理器。在圖1的實施例中,一匯流排/記憶體控制器120提供 用以到一前端130的執行的指令。該前端130根據指令指標 170來管理來自各種執行緒的指令檢索。指令指標邏輯係被 複製以支援多執行緒。 C82654PBY201505C.doc 1322959 ⑷ _
gllllM 該前端130將指令饋送到執行緒可分割的資源140以進一步 處理。當多執行緒在該處理器100内係活動的時候,該等執 行緒分割資源140包含專用於特定執行緒的邏輯獨立分割。 在實施例中’每個獨立分割只有包含來自該部分所專用 的執行緒的指令。該執行緒分割資源140可以包含例如指令 佇列。當在一單一執行緒模式時,該等執行緒分割資源140 的分割可以組合以形成一專用於該單一執行緒的大分割。 該處理器100也包含複製狀態180 »該複製狀態180包含足 夠以維持一邏輯處理器的背景的狀態變數。以複製狀態 i80,多執行緒能夠無須在狀態變數儲存的競爭來執行。此 外,暫存器配置邏輯會為了每個執行緒複製。該複製狀態 相關的邏輯係以該等是當資源分隔來操作,以準備用以執 行的即將到來的指令。 該等執行緒分割資源140將指令向前傳送到共用資源 00。該共用資源150不考慮其來源執行指令》例如,排程器 及執行單元可以係為不考慮執行緒的共用資源。該等分割 資源140係藉由以在每個活動執行緒上提供連續的進展的 公爭方式,在該等執行緒之間交替使用,將指令從多重執 行緒饋送到該共用資源150。因此’該等共用資源可以在不 考慮該執行緒混合,將該等提供的指令執行於適當的狀態 上。 該等共用資源150係讓其他組的執行緒分割資源160跟隨 在後。該等執行緒分割資源16〇係包含退而不用的資源,像 是一重新排列的緩衝區及相似的東西。因此’該等執行緒 CS2654PBY20lS05Cdoc (5) ^22959 —--4 ;ι_: 分割資源160係確保來自每個執行緒的指令的執行能夠人 適地決定,以及該執行緒的適當狀態能夠適當地更新。 如同上面所提,這係要提供程式員一種無須要求—纪搶 體位置的經常輪詢或指令的均勻執行來實行一旋轉等待淨 的功能性的技術。因此,圖1的處理器100包含該記憒體存 取監視110。該記憶體存取監視110係為可程式化,1 开M有關
—記憶體存取循環的資訊,藉由其資訊以啟動該監視丨i 0來 注意。再者,該監視110包含一監視循環資訊暫存器丨12,其 係與來自該匯流排/記憶體控制器120,由該比較邏輯i 14所 接收到的匯流排循環資訊相比較。假如一匹配係吻合,— 恢復執行緒的信號會產生以重新啟動一暫停執行緒。記憶 體存取資訊可以從該處理器的内部及/或外部匯流排所獲 得。 该監視循環資訊暫存器112係包含制定該循環的類型及/ 或應該會觸發一執行緒的恢復位址的細節。在一實施例 中,該箪視循環資訊暫存器112儲存一實體位址,及該監視 注意任何指示對於該實體位址的真實或可能的寫入的匯流 排循裱。该一循壞可以係為一明顯寫入循環的形式及/或係 為所有權的讀取,或其他的媒介(agent)試圖取得一快取線路 的獨佔所有權的無效循環,使得其能夠在沒有一外部匯流 處理(transaction)下寫入到該線路。在任何範例中該監 視可以程式化以觸發不同實施例中各種的處理。
圖1的實施例的操作可以進一步參考圖2的流程圖來解 釋在一實施例中,該處理器1〇〇的指令組包含一 M〇NIT〇R C82654PBY20l505C.doc -10· 13.22959 ⑹ 運算碼(指令),其設定該監視處理資訊。在方塊200中,該 MONITOR運算碼係接收以作為一第一執行緒(T1)的指令的 序列的部分。如同方塊210所示,回應該MONITOR運算碼, 該處理器100啟動該監視110以監視該特定記憶體存取的記 憶體存取。該觸發的記憶體存取係利用一隱性或顯性的運 算元所制定。因此,執行該MONITOR運算碼可以制定該監 視位址,因為該監視位址能夠事先儲存在一暫存器或其他 位置以作為一隱性運算元。如同方塊2 15所示,該監視測試 該特定循環是否偵測到。假如沒有,該監視會持續監視著 記憶體存取。假如該觸發循環係偵測到,則一監視事件暫 停(pending)指示器係如同方塊220中所示而設定。 該MONITOR運算碼的執行會觸發該監視11〇的啟動。該監 視110係開始與在該處理器中其他操作平行地操作。在一實 施例中,在沒有不遮蔽監視事件下,該MONITOR指令本身 只有以該合適記憶體循環資訊來設定該監視11〇然後啟動 該監視110。換言之’在該實施例中,經過該MONITOR運算 碼執行之後,監視事件累積形成,但是可能無法辨識除非 它們係顯性地不遮蔽(unmasked)。 因此’在方塊225中’ 一記憶體等待的觸發係標示為一獨 立事件。在某些實施例中,一記憶體等待(MWAIT)運算碼可 以用以觸發該監視事件的辨識及T1的暫停。使用兩個獨立 指令以設定並且觸發該執行緒暫停能夠提供給一程式員額 外的彈性而允許更有效率的編寫程式。然而,—另外的實 施例係觸發來自也有設定該監視110的第一運算碼的該記 C82654PBY201505C.doc -11 - 1322959 (7) 、 γρ== 憶體等待。在兩個例子中,一或更多的指令配置於該監視 而啟動監視事件的辨識。 在實施例中,獨立運算碼係用以配置該監視110而觸發該 監視事件的辨識,這係便利於執行一測試以確保在暫停該 執行緒之前已經啟動該監視,其如同方塊230所示》此外, 藉由測試,假如一監視事件係已經暫停(未顯示),T1的暫停 可能會被避免,而操作會繼續在方塊250。假設該監視u〇 已經被啟動,但是沒有監視事件係已經暫停(pending),則τι ^ 會如同方塊235所示一般暫停(suspended)。 在T1暫停之下,該處理器會輸入一實行相關狀態,其允 許其他執行緒能夠更充分地運用該等處理器資源。在某些 實施例中,該處理器會交出一些或所有專屬於該T1的可分 割資源140及160的分割。在其他實施例中,該M〇NIT〇R運算 碼的不同排列(permutati〇ns)或與其有關的設定係指示哪些 資源要被交出’如果有的話。例如,當—程式員期望要一
較短的等待時,該執行緒會被暫停,但是保持它的資源分 割。傳輸量係仍然會增強’因為在該執行緒暫停期間,該 等共用資源係為其他執行緒專門使用。當期望要一較長的 等待時,交出所有與該暫停執行緒有關的分割允許其他執 行緒能夠有額外的資源’便可能增加該等其他執行緒的傳 輸量、然而,當執行緒係各自地暫停及恢復時,該額外傳 輸量係以與移.除與添加分割有關的冗餘工作的代價而產 生0 T1維持在一暫停狀態,直到一 監視事件係暫停(pending) 〇 C826S4PBY20150SC.doc -12- 13.22959 ⑻ ‘ r— 如同前面所討論的’該監視11 o係獨立地操作以偵測及發出 有關監視事件的信號(方塊215-220)。假如在方塊24〇中該處 理器偵測到一監視事件係暫停’則Τ1會恢復執行,如同方 塊250所示。在Τ1中的指令沒有主動的處理需要針對該監視 事件發生以喚醒Τ1。確切地,Τ1維持暫停及該啟動監視u〇 發出一事件的信號給該處理器。該處理器會處理該事件, 辨識該指示Τ1的事件應該恢復,然後執行該適當的動作以 恢復Τ1。 因此,圖1及2的實施例提供當一特定記憶體存取一旦發 生時,允許程式所暫停的執行緒能夠恢復的技術。在一實 施例中,其他事件也會造成Τ1能夠恢復。例如,一中斷就 會造成Τ1恢復。該一實行有助於讓該監視會較為不完美, 因為其會漏失(沒有偵測到)某些記憶體存取或其他應該導 致該執行緒恢復的況狀。結果,Τ1有時候會沒有必要地被 喚醒。然而,該一實行會降低由於一漏失事件、簡化硬體 設計及可行性,Τ1變成永久凍結的該可能性。該T1的非必 要的唤醒只是一個次要的不便,因為一環可以架構成讓Τ i 重複檢查其等待的狀況是否真的發生,如果不是,則再次 將自己暫停。 在某些實施例中,該等執行緒可分割的資源、該等複製 的資源、及該等共用的資源可以不同地安排。在某些實施 例中,或許在該等共用的資源的兩端可能沒有分割的資 源。在某些實施例中,該等可分割的資源並沒有嚴格地分 割,但是卻可以允許某些指令能夠橫跨分割或是可以允許 C82654PBY201 SOSC.doc 13· 1322959 ⑼ 發明g明輯葺 ^ 1' 一 分割能夠根據所執行在分割中的執行緒或是正被執行的執 行緒的總數來變化其大小。此外,資源的不同混合可以標 示成共用、複製、及分割的資源。 圖3說明一多執行緒處理器的實施例的進一步細節。除了 其他的事情之外’圖3的實施例包含一致性相關邏輯35〇、 一監視310的實行、及一執行緒暫停及恢復邏輯377的特定實 行。在圖3的實施例中,一匯流排介面3〇〇包含一匯流排控 制器340、事件偵測邏輯345、一監視3 1〇、及該一致性相關 籲邏輯350。 該匯流排介面300提供指令給一前端365,其執行微運算元 (uOP)產生,產生來自巨指令的u〇ps。執行資源no接收來自 該前端365的u〇Ps,而後端邏輯38〇在執行這些各種u〇psi 後,會將它們退休不用。在一實施例中,失序的執行係為 該前端、後端及執行資源所支援。 各種操作的細節係相對圖5_9進一步討論。簡言之,然而 一 MONITOR運算碼會透過該匯流排介面3〇〇輸入該處理 籲器,然後準備用以供該前端365執行。在一實施例中,一特 殊MONITOR u0P係產生用以供該執行資源37〇的執行。該 MOMTOR u0P係被該等執行單元以類似一儲存操作的方式 對待,利用該監視位址被位址轉換邏輯375轉換成一實體位 址,其係提供給該監視31卜該監視31〇與執行緒及恢復邏輯 377相溝通以導致執行緒的恢復。當該活動執行緒的數目改 變時,該執行緒暫停及恢復邏輯會執行分割及退火(annd) 資源。 C82654PBY201505C.doc • 14- 1322959 (10) _ 明續頁 例如’圖4係根據一實施例說明資源的分割 '複製、及共 用。刀割的資源係根據在該機器中的活動執行緒的衰落(ebb) 動(fl〇W)來分割及退火(annealed)(向後混合(fused back) — 起用以供其他執行緒重新使用)。在圖4的實施例中,複製 資源包含在該管線的指令取得(fetch)部分的指令指標邏 輯、在該管線的重新命名部分的暫存器重新命名邏輯、狀 態邊數(未顯不’但是參考該管線中各種階段),及一中斷控 制益(未顯示,通常係與管線非同步)。在圖4的實施例中的 共用資源包含在該管線的排程階段中的排程器 (schedulers)、在該管線的暫存器讀取及寫入部分中的一池 (pool)的暫存器、在該管線的執行部份中的執行資源。此 外,一追蹤快取區及一 L1資料快取區係為根據記憶體存取 而無關執行緒背景下所植入的(p〇pu丨ated)共用式資源。在其 他實施例中,執行緒背景的考慮係使用在快取決定時。在 圖4的實施例中的分割的資源,包含在該管線的佇列階段中 的仔列、在该官線的退休(retirement)階段中的重新排序緩衝 區、及一儲存緩衝區。執行緒選擇多工邏輯係在該各種複 製及分割資源之間輪流使用以提供對兩者執行緒合理的存 取。 為了示範目的,已假設在圖4中所顯示的分割、共用及複 製係與圖3的實施例相關地運用以進一步描述圖3的處理器 的實施例的操作。特別地,圖3的實施例的操作的進一步細 節現在將會相對於圖5的流程圖討論。該處理器係假設能夠 以至少兩執行緒活動下,以一多執行緒模式執行。 C82654PBY201505C.doc 1322959 (Π) __ 在方塊500中,在執行—第一執行緒(Τ1)期間,該前端365 接收一 M〇NITOR運算碼。在一實施例中,一特殊監視u〇p 係由該前端365所產生β該M〇NIT〇R u〇p係傳送到該執行資 源370。該監視u0P具有—相關位址,其指示將被監視的位 址(該監視位址)。該相關位址係為一顯性運算元或一隱性運 算元的形式(即該相關位址係從該預先決定的暫存器或其 他儲存位置所取得)。马 Λ M ^ & 付)该相關位址"指示"該監視位址,因為 它能夠表達足夠資心決定該監視位址(可能係與其他暫 存盗或資訊有關)。例如,該相關位址係為-線性位址,其 具有-對應實體位M,其係為該合適的監視位址。或者: 該監視位址能夠以虛擬位格式 . ^ θ 飞术扣疋,或是以—相對位 址來私不,或疋以其他已知或 &幻疋址方式來制定。假 如使用虛擬位址運算元,則希望允許 識成中斷(break)事件。 H蒦故障係被辨 該監視位址係指示任何方便用以監視的記憶體單元。例 如,在-實施例中,該監視位址係指示一快取線路。,而, 在另外實施例中,該監視位址係指示一快取線路的一部 分、一特定/選定的大小部份或具有 兴該不冋處理器的快取 線路大小的不同關係的記憶體單元, 〇〇 取一早一位址。該gt 視位址因此會指示一單元,其包含 ^ 田忒運异7C所制定的資 料(及更多資料),或係特別地指示— 要求早兀的資料的位 址〇 在圖3的實施例中’該監視位址係提供給該位址轉換邏輯 375’然後向前傳送給該監視31〇,此處它係儲存在—監視位 C82654PBY20I S0SC.doc •16- (12) r—— 址暫存器335。回應該MONITOR運算碼,該執行資源370接著 會促進及啟動該監視310,其如同方塊510中所示,並且在圖 6中會進一步詳述。這將會相對於圖6在下文進一步討論, 這係便利於阻隔任何在該MONITOR運算碼之後發生的儲存 操作以確保儲存係有處理,因此在任何執行緒暫停發生之 前便摘測到。因此,某些操作由於啟動該監視3 1〇的結果需 要在任何接下來的指令能夠被採用於該實施例中之前發 生°然而,方塊510係說明與方塊505平行地發生,因為該監 視310平行地與其他操作持續操作直到一中斷事件發生,一 旦在該實施例中該MONITOR運算碼啟動該監視3 10。 在方塊505中,一記憶體等待(MWAIT)運算碼係接收於執 行緒1 ’然後傳送給執行。在圖5得實施例中,該MWAIT運 算碼的執行不遮蔽監視事件。回應該MWAIT運算碼,執行 一測試,如同方塊5 15所示,以決定一監視事件是否暫停 (pending)。假如沒有監視事件係暫停,則會執行一測試於方 塊520中以確保該監視係活動的β例如,假如一 mwaIT在先 前沒有執行一 MONITOR就執行,則該監視31〇並不會係活動 的。假如該監視係不活動的或一監視事件係暫停的,則執 行緒1執行係持續進行於方塊580。 假如該監視3 10係活動的且沒有監視事件係暫停,則會如 同方塊525所示執行緒1執行係暫停。該執行緒暫停/恢復邏 輯377包含管線清除邏輯382,其會耗盡該處理器,以便如同 方塊530所示般清除所有指令。一旦該管線已經耗盡,分到 /退火邏輯385會造成任何專門與執行緒1有關的分割資源能 C82654PBY201505C.doc 17 (13) 丄 piiiii 夠交出以供其他執行緒使用,這如同方塊535所示。這些交 出的資源係被退火以形成一組較大的資源,以供該其餘活 動執行緒運用。例如,參考圖4的兩個執行緒的例子,所有 與執彳丁緒1有關的指令係從兩佇列取出。每對的佇列接著會 組合以提供一較大的佇列給該第二執行緒。相似地更多 來自該暫存器池的暫存器係可供該第二執行緒使用更多 來自該儲存緩衝區的項目係為了該第二執行緒釋放,及更 多在該重新排列緩衝區的項目係可供該第二執行緒使用。 Φ本貝上,這些架構係交回到兩倍該大小的單一專用架構。 當然,不同比例係起因於使用不同數目的執行緒的實行。 在方塊540、545及550’各種事件係被測試以決定執行緒1 是否應該恢復《尤其,不是利用如同執行緒丨的部分一般所 被執行的指令執行這些測試。確切地說,這些執行係利用 該處理器所執行,其平行於它的其他執行緒的處理。這將 會以與圖6有關的細節進一步討論,該監視本身會檢查一監 視寫入事件是否已經發生,而如此係利用設定一事件暫停 指示器指示。該事件暫停指示器係經由一 EVEN1^號提供 給該暫停/恢復邏輯377(例如微碼)。在一實施例中,微碼可 以辨識該監視事件在一合適指令邊界上(在方塊54〇中),因 為該事件係利用該MWAIT運算碼來不遮蔽(在方塊5〇5中)。 事件偵測邏輯345可以偵測到其他事件,像是中斷,其係標 記成中斷事件(方塊345) »此外’一隨意計時器係用以週期 地結束該記憶體等待狀態,以確保該處理器不會因為某些 特殊事件序列而變成凍結(方塊55〇) ^假如這些事件沒有發 C82654PBY201505C.doc (14) (14)13.22959 I發明說明"讀賢 出一離開該記憶體等待狀態的信號,則執行緒丨會保持暫 停。 假如執行緒1係恢復,一旦偵測到該合適的事件,該執行 緒/暫停恢復邏輯377會再次地啟動。再次,該管線會被清 除,如同方塊560所示,以耗盡來自該管線的指令,使得資 源能夠再次地分割以調適該即將被喚醒的執行緒卜在方塊 570 ’該等合適的資源係被重新分割,而執行緒"系恢復於 方塊580中。 圖6a說明該監視310的啟動及操作的進一步細節。在方塊 600中’該前端對執行緒1的阻隔係停止以進一步防止執行 緒1操作輸入該機器。在方塊605中,該相關位址運算元係 藉由該位址轉換邏輯375,從作為一線性位址轉換成一實體 位址。在方塊610中,該寫入到該監視的位址的可見性係增 加。通$ ,本操作的目的係用以強迫快取媒介能夠做出寫 入操作,其能夠影響儲存在該監視位址的資訊對於該監視 310本身變得可見。一特定實行的更多細節係針對圖6b討 論。在方塊615中,該用以監視的實體位址係被儲存,雖然 明顯地該位址可以更早或更晚地儲存在該序列中。 接著’如同方塊620中所示,該檢視係被啟動。該監視係 監視用以寫入到該實體位址的匯流排循環,其係為健存在 該監視位址暫存器335中的該監視位址。該監視操竹 的進一 步細節係針對圖7討論於下。在啟動該監視之後,〜μ丄 儲存阻 隔操作係被執行,如同方塊625中所示。該儲存阻眩办 h能夠協 助確保所有儲存在該機器中係在該MONITOR運算 巧元成執 C82654PBY20lS05C.doc -19- (15) _ |f明說轉貧 一、寺候處理。隨著所有儲存從在該M〇NIT〇R係從該機器 月J 。己隐體等待狀態會被錯誤地輸入的可能性會 降低。然而,該儲存阻隐^^ ^ 仔阻^知作係一預防措施,並且可能係 一耗時的操作。 i儲存阻隔係隨意的,因為該實施例的該 m〇nITOR/mwait機制已經設計成一多重結束機制。換言 之各種事件像疋某些中斷、系統爽主機板上的計時器等 等也會造成結束該記憶體等待狀態。因此,在該實施例中 雄.…法保Da /、有β玄執行緒將被喚醒的理由因為該被監視 著的資料值已經改變。於是(也可參見下圖9a_c)’在該實行 中,軟體應該重複檢查儲存在記憶體中的該特定數值是否 已,-里改麦。在一實施例中,某些事件包含〗NTR、NMM SW 中斷的宣告(assertion);機器檢查中斷;及故障係屬於中斷 事件,而其他包含功率下降(powerd〇wn)事件則不是。在一 貫施例中’ s玄A20M接腳的宣告也是屬於一中斷事件。 如同方塊630中所示,該監視持續測試所發生的匯流排循 環是否指示或似乎指示一到該監視位址的寫入。假如偵測 到該一匯流排循環,該監視事件暫停指示器會設定,如同 方塊635中所示。在執行該MWAIT運算碼之後(圖5,方塊 505),該事件暫停指示器係當作一事件,而造成執行緒恢復 於圖5的方塊560-580中。此外’改變位址轉換的事件會導致 執行緒1恢復。例如’造成一轉換側視0〇ok_aside)緩衝區被 清除會觸發執行緒1的恢復’因為該用以產生該監視位址從 一線性到一實體位址的轉換係不在有效的。例如,在一 χ86 C82654PBY20l505C.doc -20· 1322959 ⑽ r-_^ 英代爾架構相容處理器中’寫入到控制暫存器CRO、CR3及 CR4’還有某些特定機器特定暫存器會導致該記憶體等待狀 態的結束。 如上面所記載,圖6b說明寫入到該監視位址的可見性的 增強的進一步細節(在圖6a中的方塊610)。在一實施例中, 该處理器清除來自該處理器的所有内部快取區中與該監視 位址有關的該快取線路,這如同方塊650所示。由於該清除 的結果,所有接下來到該監視位址的寫入抵達該匯流排介 面300 ’讓包含在該匯流排介面300内的該監視310偵測。在 一實施例中,該MONITOR uOP隨後係塑成模式,並且具有 與-快取線路清除CLFLUSH指令相同的故障模式,其係在 一 x86指令集中已存在的指令。該監視u〇p繼續處理該位址 從線性到實體轉換,及如同CLFLUSH—樣多的内部快取的 清除;然而,該匯流排介面會辨識出MONITOR及CLFLUSH 之間的差異,而適當地處理該MONIOTR uOP。 接著,如同方塊655所示,在該匯流排介面300中的該一致 性相關邏輯350會啟動讀取線路產生邏輯355以在該處理器 匯流排上產生一讀取線路處理。到該監視位址的讀取線路 處理係確保在該匯流排上’在處理器中沒有其他快取區會 係以一共用或專用狀態’儲存資料在該監視位址(根據該相 當聞名的MESI協定)。在其他協定中,其他狀態可以使用; 然而,該處理係設計用以降低其他媒介在處理沒有在該監 視3 10觀察下,寫入到該監視位址的可能性。換言之,寫入 或寫入指示的處理接著係會廣播,所以它們能夠讓該監視 C826$4PBY201505C.doc -21 · 1322959 (Π) r - .— 卿說明顧 所情測到》—旦該讀取線路操作完成,該監視3 i 〇會開始監 視在該匯流排上的處理。 當額外處理發生在該匯流排上,該一致性相關邏輯會利 用試圖防止匯流排媒介取得與該監視的位址相關的快取線 路的擁有權來繼續保持該監視位址的可見性。根據一匯流 排協定’這可以在該監視位址的任何讀取的窺探相位的期 間,利用命中產生邏輯360宣告一 ΗΙΤ#信號來完成,如同方 塊660中所不。該HIT#的宣告防止其他快取區移出在該MESI 鲁協疋中的該共用狀態到該專用狀態,然後可能係該修正狀 態。結果,如同方塊665所示,在該選定的一致性領域(該記 憶體部分係保持著一致)中沒有媒介能夠具有在該修正或 專用狀態(或其相等狀態)的資料。該處理器有效地透露出讓 該監視位址的快取線路快取,即使它在該實施例中已經從 内部快取區清除》
現在參考圖7,進一步描述有關在圖&中的方塊62〇的操作 細節。特別地,圖7說明該監視31〇的操作的進一步細節。 在方塊700中,該監視310接收來自一匯流排控制器34〇有關 一匯流排處理的請求及位址資訊。如同方塊71〇中所示,該 監視3 10檢查該匯流排循環的類型及所影響的位址。特別 地,循%比較邏輯320決定該匯流排循環是否係一特定循 核《在一實施例中,一位址比較電路33〇將該匯流排位址與 儲存在該監視位址暫存器335中的監視位址相比較,而寫入 偵測邏輯325會解碼來自該匯流排控制器34〇的循環類型資 訊以偵測-寫入是否已經發生。假如一寫入到該監視位址 C82654PBY20! 505C.doc •22· (18) (18)1322959 係發生,一監視事件暫停指示器係被設定,這如同方塊720 所示。一信號(WRITE DETECTED)係提供給該執行緒暫停/恢 復邏輯377以將該事件傳出信號(以及將會被服務,假設其已 經利用執行MWAIT所啟動)。最後,該監視3 10係被终止,如 同方塊730所示。終止該監視可以節省功率,但是只要虛假 監視事件係被遮蓋或其他沒有產生的話就不是關鍵。該監 視事件指示器也可以在該點上重新設定。典型地,服務該 監視事件也會遮蓋另外監視事件的辨識,直到MWAIT再次 執行。 在對該監視位址的讀取的例子中,該一致性相關邏輯350 係被啟動。如同方塊740所示,一信號(像是HIT#)係被宣告 以防止其他媒介得到能夠允許未來無須一致性廣播的寫入 的所有權。該監視3 10維持著活動,然後在稍後回到方塊 700 ’並且沒有受到該監視位址的讀取的影響。此外,假如 對該監視位址的一處理既非一讀取也不是一寫入,則該監 視維持活動而回到方塊700。 在某些實施例中,該MONITOR指令係受到限制,使得只 有某些類型的存取會受到監視。這些存取係為一些代表有 效率設計程式的技術所選出,或是為了其他理由而選擇。 例如,在一實施例中,該記憶體存取在回寫記憶體中必須 是一快取式儲存’其在本質上係對準的。一本質上對準的 元件係為一 N位元元件,其開始於一可被N所除盡的位址。 由於使用本質上對準的元件,一單一快取線路需要能夠被 存取(而不是兩快取線路,如同在該例中所需要的,此處資 .C82654PBY201505C.doc •23- (19) 1322959 發明說明續貢1 料係分成橫跨兩快取線路),以便寫入到該監視的位址。結 果,使用本質上對準的記憶體位址可以簡化匯流排的查看。 圖8說明一運用所揭露的多執行緒記憶體等待技術的系 統的實施例。在圖8的實施例中,一組的N多執行緒處理器, 處理器805-1到805-N係耦合到一匯流排802。在其他實施例 中,使用一單一處理器或多執行域處理器及單一執行緒處 理器的混合。此外,可以使用其他已知或用其他可用系統 安排。例如,該等處理器可以利用點對點方式連接,及像 • 是該記憶體介面的零件可以整合到每個處理器。 在圖8的實施例中,一搞合到該匯流排的記憶體介面815 係耦合到一記憶體830及一媒體介面820。該記憶體830包含 一多重處理準備作業系統835,及一第一執行緒840的指令及 一第二執行緒845的指令。該等指令830包含一根據本揭露技 術的空閒迴路,其各種版本係表示於圖9a-9c。 該適合用以執行這些不同版本的軟體係以各種機器可讀 式媒體的任何一種來提供。該媒體介面820提供一到該軟體 ® 的介面。該媒體介面820係為一到儲存媒體的介面(例如磁碟 機、光學機、磁帶機、揮發性記憶體、非揮發性記憶體、 或類似物)或係到一傳輸媒體的介面(例如網路介面或其他 數位或類比通訊介面)。該媒體介面820可以從一媒體(例如 儲存媒體792或傳輸媒體795)讀取軟體常式。機器可讀式媒 體係為任何可以儲存,至少暫時儲存用以供一機器介面所 讀取的資訊的媒體。這包含信號傳輸(經由線路、光學元 件、或空氣作為該媒體)及/或實體儲存媒體792,像是各種 C82654PBY201505C.doc •24· (20) 1322959 明說明續頁 類型的磁片及記憶體儲存裝置。. 圖9a根據一實施例說明一空間迴路。名 MONITOR命令係以位址1執行以作為其運 址。該MWAIT命令係執行於方塊910中,在 内。如前面所討論,該MWAIT指令會造成 假設其他狀況係相當符合。當一中斷事件1 中的時候,該常式會前進到方塊920以決定 址的數值是否改變。假如在該監視位址的 則該執行緒的執行會繼續,如同方塊922所 並沒有改變,則一虛假喚醒事件會發生。 假的係指該MWAIT會在沒有發生一記憶體 址的情形下結束。假如該數值沒有改變, 方塊905,即該監視再一次設定的地方。該 許該監視能夠.設計用以允許虛假唤醒事件 圖9b說明另一空閒迴路。圖9b的實施例 以進一步降低該MWAIT指令無法掌握到對 位址的寫入的機會。再次,該流程開始於£ 一起執行的該MONITOR指令作為它的運算, 所示。此外,在方塊930中,該軟體常式讀 的該記憶體數值。在方塊935中,該軟體重 記憶體數值與指示該執行緒應該係空間的 曾改變。假如該數值已經改變,則執行緒 行,如同方塊952所示。假如該數值未曾改 指令會被執行’如同方塊940所示。如上面 方塊905中,該 算元,該監視位 該相同執行緒之 該執行緒暫停, [系發生於方塊915 該儲存在監視位 數值真的改變, 示。假如該數值 該喚醒事件是虛 寫入到該監視位 則該迴路會回到 迴路軟體實行允 〇 添加一額外檢查 該監視的記憶體 面9b係以與位址1 元,如同方塊925 取在該監視位址 複檢查以確保該 數值比較下並未 執行係會繼續進 變,則該MWAIT 所討論,該執行 C826S4PBY20I S0SC.doc •25· (21) (21)1322959 剛卿續貢 緒係會暫停到一中斷事件係發生於方塊945中。再次,然 而,因為虛假中斷事件係允許的,該數值是否已經改變則 會在方塊950中再次檢查。假如該數值未曾改變則該迴路 回到再次啟動該監視以追蹤位址1,其係藉由回到方塊 925。在某些貫施例中,在一虛假喚醒事件之後,在該mwait 指令係執行用以再次暫停該執行緒之前,該M〇NIT〇R指令 不需要再次執行》 圖9c說明運用MONITOR及MWAIT指令的軟體序列的其他 例子。在圖9c的例子中,該迴路不會空閒,除非在該執行 緒内的兩獨立的任務沒有工作可做。當有工作係由一第一 常式來完成的時候,一常數CV1係儲存在工作位置WL1。相 似地,當有工作係由一第二常式來完成的時候,一第二常 數CV2係儲存在工作位置WL2。為了使用一單一監視位址, WL1及WL2係選擇成在該相同快取線路中的記憶體位置。或 者,一單一工作位置也可用以儲存多重任務的狀態指示 器。例如’在一單一位元組或其他單元中的一或更多位元 係每個都代表不同的任務〇 如同方塊955中所示’該監視係設定成監視WL1。在方塊 960中,係測試WL1是否儲存該指示著有工作待完成的常 數。如果是,會執行與WL1有關的工作,如同方塊965所示。 如果不是,在方塊970,會測試WL2是否儲存該指示著有待 完成與WL2有關的工作的CV2。如果是,會執行與WL2有關 的工作,如同方塊975所示。如果不是,該迴路會繼續進行 決定是否合適呼叫一功率管理操作裝置於方塊980中。例 C82654PBY201505C.doc -26· (22) (22)1322959 如,假如已經經過一選擇時間量,則該邏輯處理器可以放 置於一缩減功率消耗狀態(例如一組"c"狀態之一狀態係按 照進階架構電源界面標準(ACPI)規格定義,其發行於1999年 2月8日,可見於本應用的文件歸檀的www.acpi.info)。如果 是,則該功率管理操作裝置係呼叫於方塊985。在該等範例 965、975及985的任一範例中都有工作待完成,該執行緒會 完成該工作,然後在設定該監視於方塊955之後,回送(loop back)以再次做出相同決定。在一其他實,施例中,只要該監 視維持著活動,該來自方塊965、975及985的回送就能夠到 達方塊960。 假如沒有工作可做係在方塊965、975及985中遭遇到,則 執行該MWAIT指令,如同方塊990所示。當如同方塊995所 示,發生一中斷事件的時候,MWAIT所造成的該執行緒暫 停狀態最後會結束。在此處,該迴路回到方塊955以設定該 監視’之後決定WL1或WL2是否指示有工作待處理。假如沒 有工作待處理(例如一虚假喚醒事件的例子)’該迴路將回到 方塊990中的MWAIT,然後再次暫停該執行緒,直到發生一 中斷事件。 圖10說明一處理器的另一實施例,該處理器允許該監視 數值維持快取於該L1快取區。圖1〇中的處理器包含執行單 元1005、一 L1快取區1010、及在該L1快取區與一相容L2快取 區1030之間的寫入組合緩衝區。該寫入組合缓衝區1〇2〇包含 一窺探埠(snoop port) 1044,其經由來自一匯流排1045,由一 匯流排介面1040所接收到操作,確保該内部快取區與其他 CS2654PBY201S05C.A •27- (23) 記憶體的一致性。' 因為影響一致性的處理係經由該窺探埠 10 4 4到達該寫入相人控试^ ’八、、且。綾衝區1020, 一監視可以處在該L1快取 區位準仍然接收足夠資訊以決定一記憶體寫入事件何 時會發生在4匯流排丨045。因此’該對應於該監視位址的 記憶體的線路可以保持在該L1快取區。該監視能夠偵測到 從該等執行單元到該L丨快取區的寫入以及經由該窺探埠 1044從該匯流排1〇45的寫入。 其他可供選擇的實施例支援一兩運算元監視指令。一運
g明說日雄糊 算元指示該記憶體位址,如上面所討論。該第二運算元係 一掩碼(mask) ’其指示不會從該記憶體等待狀態中斷的種種 事件的哪—個應該會從該特定記憶體等待造成一中斷。例 如,儘管有該等中斷係被掩蓋的事實,一掩碼位元指示掩 蓋的中斷應該係允許能夠中斷該記憶體等待(例如允許一 喚醒事件,即使當該EFLAGS位元IF係設定成掩蓋中斷)。根 據推測,在該記憶體等待狀態被中斷之後,所執行的該等 指令之一會不遮蔽該中斷,所以它係被服務。不會中斷該 ® 記憶體等待狀態的其他事件能夠被啟動以中斷該記憶體等 待,或相反地,正常能夠中斷該記憶體等待狀態的事件能 夠被抑制。如同與該第一運算元所討論的,該第二運算元 可以係顯性或隱性。 圖11說明各種用以使用該等揭露技術的設計的模擬、仿 效、及製造的設計的代表或是格式。代表一設計的資料係 以一些方式來表示該設計。首先’其係有用於模擬’ s玄硬 體可以使用一硬體描述語言或其他功能性描述語言來表 C82654PBY20!505C.d〇c •28- 1322959 (24) n==——一
gggllM 示,其基本上能夠提供一期望如何執行該設計硬體的電腦 化模式。該硬體模式111 〇係儲存在一儲存媒體11 〇〇,像是一 電腦記憶體’使得該模式可以使用將一特定測試套件113 〇 施加在該硬體模式1110的模擬軟體1120來模擬,以決定其功 能是否真的如同所需。在某些實施例中,該模擬軟體並沒 有紀錄、抓取、或包含在該媒體内。. 此外,一具有邏輯及/或電晶體閘的電路位準模式可以在 該設計過程的某些階段製造。該模式係為相似地模擬,有 時係藉由使用可程式化邏輯來形成該模式的專用硬體模擬 器。該類型的模擬進一步係為一仿效的技術。在任意範例 中,可重新組態的硬體係為其他包含一儲存著—採用該等 揭露技術的模式的機器可讀式媒體的實施例》 再者,在某些階段大部分的設計會達到代表著在該硬體 模式中各種裝置的實體佈置的資料的位準。在該例中,會 使用常見的半導體製造技術’代表著該硬體模式的資料係 為制定在不同光罩層上用以製造該積體電路的光罩的各種 特徵的存在或不存在的資料。此外,代表該積體電路的資 料能夠實現所揭露的技術’因為在該資料中的電路或邏輯 能夠模擬或製造以執行這些技術。 在本發明的任意表示中,該資料可以利用任何形式的電 腦可讀式媒體來儲存。一光學或電波1160經過調變或其他 方式所產生用以傳輸該資訊’一記憶體1150或—磁性或光 學儲存1140’像是一碟片可以係為該媒體。描述著該設計 或該設計的特定部分的該組位元係一篇論文,其本身可以 C82654PBY20!505C.doc •29· (25) 1322959 賣出或是該其他人用以進一步設計或製造來使用。 因此,用以暫停一執行緒的執行,直到發生一特定記憶 體存取的技術係已揭露。在一定的示範實施例已經描述且 表示在該等伴隨圖式中時,應了解的是該等實施例係只有 用以說明而非限制廣大的本發明,及本發明並非限制於所 表現及描述的該等特定架構及安排,因為各種其他修正有 可能係為一般熟悉該項技藝者利用研讀本發明而出現。 圖式簡單說明 本發明利用範例來說明並且不限於伴隨圖式的圖面。 圖1說明一多執行緒處理器的實施例,其具有一監視,用 以監視記憶體存取。 圖2係根據一實施例,說明圖1的多執行緒處理器的操作 的流程圖。 圖3說明一多執行緒處理器的一實施例的進一步細節。 圖4說明根據一實施例,有關資源的分割、共用、及複製。 圖5係根據一實施例說明一執行緒的暫停及恢復執行的 ®流程圖。 圖6a係根據一實施例說明監視邏輯的啟動及操作的流程 圖。 圖6b係根據一實施例說明寫入的可見性(observability)的 增強的流程圖。 圖7係根據一實施例說明監視操作的流程圖。 圖8係根據一實施例說明一系統。 圖9a-9c說明運用所揭露的處理器指令及技術的軟體序列 C82654PBY201505C.doc -30-

Claims (1)

1322959 fWSlESISI ___ . . v:‘ ·_. .. f 61. 如申請專利範圍第60項之系統,其中該信號指示一快取 命中,及防止該第二快取區儲存資料在該監視位止於一 專用狀態。 62. 如申請專利範圍第58項之系統,其中假如一可供選擇的 事件發生時,該第一處理器係進一步用以恢復該第一執 行緒。 63. 如申請專利範圍第62項之系統,其中該可供選擇的事件 係為一中斷。 64. 如申請專利範圍第62項之系統,其中儲存在該記憶體中 的該第一執行緒包含一迴路,該迴路包含該第一指令及 該第二指令,還有一測試以決定在該監視位址的資料是 否已經改變,如果在該監視位址的資料維持不變的話, 則重新開始該迴路。 65. —種供暫停一執行緒之執行直至一記憶器存取發生時之 電腦可讀取媒體,其代表一處理器,包含: 複數個執行單元,用以允許複數個執行緒的執行,包 含一第一執行緒,該第一執行緒具有一第一指令,其具 有一包含一監視位址的相關位址運算元; 暫停邏輯,用以暫停該第一執行緒的執行; 一監視,用以回應對該監視位址的記憶體存取,造成 該第一執行緒的恢復。 66. 如申請專利範圍第65項之電腦可讀取媒體,其中該監視 用以回應對該監視位址的記憶體存取,只要該記憶體存 取指示對該監視位址有一真實或可能的寫入,便造成恢 C82654PBY201505C.doc •12· 1322959 申請專利範圍續頁 復。 67. 如申請專利範圍第65項之電腦可讀取媒體,其中該監視 用以回應對該監視位址的記憶體存取,如果該第一執行 緒係暫停及監視事件係不遮蔽的,便造成該第一執行緒 的恢復。 68. 如申請專利範圍第65項之電腦可讀取媒體,其中該處理 器尚包含事件偵測邏輯,用以回應除了該記憶體存取之 外的事件,造成該第一執行緒的恢復。 69. 如申請專利範圍第68項之電腦可讀取媒體,其中該處理器尚 包含複數個可分割資源,當多重執行緒係活動的時候,其 係被分割成將每個可分割資源的的一部份專用於該複數個 執行緒的每個活動的一個,其中該暫停邏輯係用以回應暫 停該第一執行緒的執行,交出該複數個分割的任何專用於 該第一執行緒的分割。 C82654PBY201505C.doc -13· 1322959 拾壹、圖式 第091137282號專利申請案 中文圖式替換本(104年5月)
匯流排/記憶體 控制器 120 # r訊 匯循資 視環訊 監循資 112 100
共用資源 (知行單 元的) 150 m 記憶體 存取 監視 m 恢復 執行緒 執行緒可分 割的資源 160 圖 C82654DBY201505C.doc 1322959 實行依賴狀態
8¾¾¾]
圖 2 C82654DBY201505C.doc •2- 1322959
圖 3 C82654DBY201 S05C.doc 1322959
寸® 3 續 式' 圖
C82654DBY201505C.doc 1322959 接收監視運算元及在 執行緒1中的相關位址 yoo : -1 agai 接收在執行緒1中的記憶體等待 運算碼(不遮蔽監視中斷事件) 啟動及操作 監視(圖6) 510 505
τ暫溫一步 交出Τ1分割的資源 .及退火其他執行緒 清除管線
圖 5 C82654DBY201505C.doc 1322959
圖 6A C82654DBY201505C.doc 1322959
圖 6B 圖式續頁I
C82654DBY201505C.doc 1322959 入視址 寫監位 ί圖式續属 接收請求及匯流排 交易岛在址相么黉訊 檢查循環類型及 所影響的位址 設定監視事件 暫停指示器 中止監視 30 ο 址 位取入 視讀寫 監不不 對%.也 監視位址 的讀取 740 宣告信號(例女7,HIT#) 以防止代理程式獲得 在沒有一致性廣播的 情形下進一步寫入的 所有權 7 圖 C82654DBY201505C.doc 1322959 SgSSi
795
C82654DBY201505C.doc 1322959
圖式績_
C82654DBY201505C.doc -10- 1322959 8¾¾¾
圖 9C C82654DBY201505C.doc -11 - 1322959
圖 10 圖式續a C82654DBY20l505C.doc -12- 1045 1322959 ►
1160
1140 圖式續頁!
1150 圖11 C82654DBY20l505C.doc •13· 1322959 陸、(一)、本案指定代表圖為:第_1 __圖 (二)、本代表圖之元件代表符號簡單說明: 100 處 理 器 110 記 憶 體 存 取 監 視 112 監 視 循 環 資 訊 暫存器 114 比 較 邏 輯 120 匯 流 排 /記 ‘憶 體 .控制器 130 前 端 140 、 160 執 行 緒 可 分 割 資源 150 共 用 資 源
柒、本案若有化學式時,請揭示最能顯示發明特徵的化學式:
C82654PBY201505C.doc
TW091137282A 2001-12-31 2002-12-25 A method and apparatus for suspending execution of a thread until a specified memory access occurs TWI322959B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/039,579 US7363474B2 (en) 2001-12-31 2001-12-31 Method and apparatus for suspending execution of a thread until a specified memory access occurs

Publications (2)

Publication Number Publication Date
TW200305820A TW200305820A (en) 2003-11-01
TWI322959B true TWI322959B (en) 2010-04-01

Family

ID=21906217

Family Applications (2)

Application Number Title Priority Date Filing Date
TW097151472A TWI590153B (zh) 2001-12-31 2002-12-25 用於多線串處理之方法
TW091137282A TWI322959B (en) 2001-12-31 2002-12-25 A method and apparatus for suspending execution of a thread until a specified memory access occurs

Family Applications Before (1)

Application Number Title Priority Date Filing Date
TW097151472A TWI590153B (zh) 2001-12-31 2002-12-25 用於多線串處理之方法

Country Status (11)

Country Link
US (2) US7363474B2 (zh)
JP (2) JP4601958B2 (zh)
KR (1) KR100814993B1 (zh)
CN (1) CN100383740C (zh)
AU (1) AU2002364557A1 (zh)
DE (2) DE10297856B4 (zh)
GB (1) GB2400947B (zh)
HK (1) HK1066883A1 (zh)
RU (1) RU2308754C2 (zh)
TW (2) TWI590153B (zh)
WO (1) WO2003058447A2 (zh)

Families Citing this family (137)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7127561B2 (en) * 2001-12-31 2006-10-24 Intel Corporation Coherency techniques for suspending execution of a thread until a specified memory access occurs
US7653912B2 (en) * 2003-05-30 2010-01-26 Steven Frank Virtual processor methods and apparatus with unified event notification and consumer-producer memory operations
US7213093B2 (en) * 2003-06-27 2007-05-01 Intel Corporation Queued locks using monitor-memory wait
US8984199B2 (en) * 2003-07-31 2015-03-17 Intel Corporation Inter-processor interrupts
US20050108711A1 (en) * 2003-11-13 2005-05-19 Infineon Technologies North America Corporation Machine instruction for enhanced control of multiple virtual processor systems
US7310722B2 (en) * 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US7490218B2 (en) * 2004-01-22 2009-02-10 University Of Washington Building a wavecache
US7657882B2 (en) 2004-01-22 2010-02-02 University Of Washington Wavescalar architecture having a wave order memory
US7770179B1 (en) * 2004-01-30 2010-08-03 Xilinx, Inc. Method and apparatus for multithreading on a programmable logic device
US7552042B1 (en) 2004-01-30 2009-06-23 Xilinx, Inc. Method for message processing on a programmable logic device
US7823162B1 (en) 2004-01-30 2010-10-26 Xilinx, Inc. Thread circuits and a broadcast channel in programmable logic
US8984517B2 (en) * 2004-02-04 2015-03-17 Intel Corporation Sharing idled processor execution resources
US7581214B2 (en) * 2004-04-15 2009-08-25 Intel Corporation Live set transmission in pipelining applications
JP4376692B2 (ja) * 2004-04-30 2009-12-02 富士通株式会社 情報処理装置、プロセッサ、プロセッサの制御方法、情報処理装置の制御方法、キャッシュメモリ
US8607241B2 (en) * 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US8074030B1 (en) 2004-07-20 2011-12-06 Oracle America, Inc. Using transactional memory with early release to implement non-blocking dynamic-sized data structure
US7703098B1 (en) 2004-07-20 2010-04-20 Sun Microsystems, Inc. Technique to allow a first transaction to wait on condition that affects its working set
US7206903B1 (en) * 2004-07-20 2007-04-17 Sun Microsystems, Inc. Method and apparatus for releasing memory locations during transactional execution
KR101051703B1 (ko) 2004-08-09 2011-07-25 삼성전자주식회사 서스펜드/리쥼 기능을 갖는 집적 회로 카드 및 집적 회로카드 시스템
US7434009B2 (en) * 2004-09-30 2008-10-07 Freescale Semiconductor, Inc. Apparatus and method for providing information to a cache module using fetch bursts
US7257679B2 (en) 2004-10-01 2007-08-14 Advanced Micro Devices, Inc. Sharing monitored cache lines across multiple cores
US7313673B2 (en) * 2005-06-16 2007-12-25 International Business Machines Corporation Fine grained multi-thread dispatch block mechanism
US9003421B2 (en) * 2005-11-28 2015-04-07 Intel Corporation Acceleration threads on idle OS-visible thread execution units
KR100763200B1 (ko) 2006-02-24 2007-10-04 삼성전자주식회사 인터럽트 가능한 스레드 동기화 방법 및 장치
KR100771877B1 (ko) 2006-07-21 2007-11-01 삼성전자주식회사 오동작 방지용 커맨드 세트 프로토콜 처리 방법 및 장치
US20080022079A1 (en) * 2006-07-24 2008-01-24 Archer Charles J Executing an allgather operation with an alltoallv operation in a parallel computer
US8443341B2 (en) * 2006-11-09 2013-05-14 Rogue Wave Software, Inc. System for and method of capturing application characteristics data from a computer system and modeling target system
US8239657B2 (en) 2007-02-07 2012-08-07 Qualcomm Incorporated Address translation method and apparatus
US8898438B2 (en) * 2007-03-14 2014-11-25 XMOS Ltd. Processor architecture for use in scheduling threads in response to communication activity
US7937532B2 (en) * 2007-03-30 2011-05-03 Intel Corporation Method and apparatus for speculative prefetching in a multi-processor/multi-core message-passing machine
JP4420055B2 (ja) 2007-04-18 2010-02-24 日本電気株式会社 マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法
US8161480B2 (en) 2007-05-29 2012-04-17 International Business Machines Corporation Performing an allreduce operation using shared memory
WO2008155797A1 (ja) 2007-06-20 2008-12-24 Fujitsu Limited 演算装置
US20090006663A1 (en) * 2007-06-27 2009-01-01 Archer Charles J Direct Memory Access ('DMA') Engine Assisted Local Reduction
JP2009110209A (ja) * 2007-10-29 2009-05-21 Panasonic Corp 演算処理装置、プロセッサ、プログラム変換装置およびプログラム
US8725992B2 (en) 2008-02-01 2014-05-13 International Business Machines Corporation Programming language exposing idiom calls to a programming idiom accelerator
US8732683B2 (en) * 2008-02-01 2014-05-20 International Business Machines Corporation Compiler providing idiom to idiom accelerator
US8316218B2 (en) 2008-02-01 2012-11-20 International Business Machines Corporation Look-ahead wake-and-go engine with speculative execution
US8386822B2 (en) * 2008-02-01 2013-02-26 International Business Machines Corporation Wake-and-go mechanism with data monitoring
US8250396B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Hardware wake-and-go mechanism for a data processing system
US8127080B2 (en) 2008-02-01 2012-02-28 International Business Machines Corporation Wake-and-go mechanism with system address bus transaction master
US8612977B2 (en) * 2008-02-01 2013-12-17 International Business Machines Corporation Wake-and-go mechanism with software save of thread state
US8640141B2 (en) * 2008-02-01 2014-01-28 International Business Machines Corporation Wake-and-go mechanism with hardware private array
US8171476B2 (en) * 2008-02-01 2012-05-01 International Business Machines Corporation Wake-and-go mechanism with prioritization of threads
US8516484B2 (en) * 2008-02-01 2013-08-20 International Business Machines Corporation Wake-and-go mechanism for a data processing system
US8145849B2 (en) 2008-02-01 2012-03-27 International Business Machines Corporation Wake-and-go mechanism with system bus response
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
US8225120B2 (en) * 2008-02-01 2012-07-17 International Business Machines Corporation Wake-and-go mechanism with data exclusivity
US8788795B2 (en) * 2008-02-01 2014-07-22 International Business Machines Corporation Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors
US8341635B2 (en) 2008-02-01 2012-12-25 International Business Machines Corporation Hardware wake-and-go mechanism with look-ahead polling
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
US8312458B2 (en) * 2008-02-01 2012-11-13 International Business Machines Corporation Central repository for wake-and-go mechanism
US8422402B2 (en) 2008-04-01 2013-04-16 International Business Machines Corporation Broadcasting a message in a parallel computer
US8281053B2 (en) 2008-07-21 2012-10-02 International Business Machines Corporation Performing an all-to-all data exchange on a plurality of data buffers by performing swap operations
CN101788922B (zh) * 2009-01-22 2013-12-25 国际商业机器公司 基于辅助线程实现事务存储系统的方法和装置
KR101581311B1 (ko) * 2009-03-11 2015-12-31 삼성전자주식회사 플래시 메모리 장치 및 그 제어 방법
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
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
US8082315B2 (en) * 2009-04-16 2011-12-20 International Business Machines Corporation Programming idiom accelerator for remote update
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
GB2484416B (en) * 2009-06-26 2015-02-25 Intel Corp Optimizations for an unbounded transactional memory (utm) system
EP2284693A1 (en) 2009-08-03 2011-02-16 C.R.F. Società Consortile per Azioni Wait instruction
US8695002B2 (en) * 2009-10-20 2014-04-08 Lantiq Deutschland Gmbh Multi-threaded processors and multi-processor systems comprising shared resources
US8447960B2 (en) * 2010-01-08 2013-05-21 International Business Machines Corporation Pausing and activating thread state upon pin assertion by external logic monitoring polling loop exit time condition
US20110173420A1 (en) * 2010-01-08 2011-07-14 International Business Machines Corporation Processor resume unit
US8464035B2 (en) 2009-12-18 2013-06-11 Intel Corporation Instruction for enabling a processor wait state
US9424087B2 (en) 2010-04-29 2016-08-23 International Business Machines Corporation Optimizing collective operations
US8949577B2 (en) 2010-05-28 2015-02-03 International Business Machines Corporation Performing a deterministic reduction operation in a parallel computer
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
US8776081B2 (en) 2010-09-14 2014-07-08 International Business Machines Corporation Send-side matching of data communications messages
US8566841B2 (en) 2010-11-10 2013-10-22 International Business Machines Corporation Processing communications events in parallel active messaging interface by awakening thread from wait state
US8713362B2 (en) 2010-12-01 2014-04-29 International Business Machines Corporation Obviation of recovery of data store consistency for application I/O errors
US8694821B2 (en) * 2010-12-03 2014-04-08 International Business Machines Corporation Generation of standby images of applications
CN102736945B (zh) * 2011-03-31 2016-05-18 国际商业机器公司 一种运行应用程序的多个实例的方法和系统
CN102760176B (zh) * 2011-04-29 2015-02-11 无锡江南计算技术研究所 硬件事务级仿真方法、引擎及系统
US8893083B2 (en) 2011-08-09 2014-11-18 International Business Machines Coporation Collective operation protocol selection in a parallel computer
US8667501B2 (en) 2011-08-10 2014-03-04 International Business Machines Corporation Performing a local barrier operation
US8910178B2 (en) 2011-08-10 2014-12-09 International Business Machines Corporation Performing a global barrier operation in a parallel computer
US8868843B2 (en) 2011-11-30 2014-10-21 Advanced Micro Devices, Inc. Hardware filter for tracking block presence in large caches
US9798548B2 (en) * 2011-12-21 2017-10-24 Nvidia Corporation Methods and apparatus for scheduling instructions using pre-decode data
US9310875B2 (en) 2011-12-22 2016-04-12 Intel Corporation Instruction that specifies an application thread performance state
JP5819184B2 (ja) 2011-12-28 2015-11-18 富士通株式会社 情報処理装置及び情報処理装置の制御方法
WO2013101188A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Memory event notification
US9495135B2 (en) 2012-02-09 2016-11-15 International Business Machines Corporation Developing collective operations for a parallel computer
US8706847B2 (en) 2012-02-09 2014-04-22 International Business Machines Corporation Initiating a collective operation in a parallel computer
US9396020B2 (en) 2012-03-30 2016-07-19 Intel Corporation Context switching mechanism for a processing core having a general purpose CPU core and a tightly coupled accelerator
US9218288B2 (en) 2012-06-15 2015-12-22 International Business Machines Corporation Monitoring a value in storage without repeated storage access
US9256455B2 (en) * 2012-11-20 2016-02-09 Red Hat Isreal, Ltd. Delivery of events from a virtual machine to host CPU using memory monitoring instructions
US9563425B2 (en) * 2012-11-28 2017-02-07 Intel Corporation Instruction and logic to provide pushing buffer copy and store functionality
US9141454B2 (en) * 2012-12-27 2015-09-22 Intel Corporation Signaling software recoverable errors
US10705961B2 (en) 2013-09-27 2020-07-07 Intel Corporation Scalably mechanism to implement an instruction that monitors for writes to an address
EP3074860A4 (en) * 2013-11-25 2017-10-11 Marvell World Trade Ltd. Systems and methods for loop suspension in java programming
US9594660B2 (en) 2014-03-27 2017-03-14 International Business Machines Corporation Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores
US9218185B2 (en) 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US9804846B2 (en) 2014-03-27 2017-10-31 International Business Machines Corporation Thread context preservation in a multithreading computer system
US10102004B2 (en) 2014-03-27 2018-10-16 International Business Machines Corporation Hardware counters to track utilization in a multithreading computer system
US9921848B2 (en) 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9417876B2 (en) 2014-03-27 2016-08-16 International Business Machines Corporation Thread context restoration in a multithreading computer system
US9354883B2 (en) 2014-03-27 2016-05-31 International Business Machines Corporation Dynamic enablement of multithreading
US9552033B2 (en) * 2014-04-22 2017-01-24 Qualcomm Incorporated Latency-based power mode units for controlling power modes of processor cores, and related methods and systems
US9778949B2 (en) * 2014-05-05 2017-10-03 Google Inc. Thread waiting in a multithreaded processor architecture
US9256477B2 (en) * 2014-05-29 2016-02-09 Netapp, Inc. Lockless waterfall thread communication
US9477521B2 (en) 2014-05-29 2016-10-25 Netapp, Inc. Method and system for scheduling repetitive tasks in O(1)
US9304702B2 (en) 2014-05-29 2016-04-05 Netapp, Inc. System and method for parallelized performance data collection in a computing system
GB2529899B (en) * 2014-09-08 2021-06-23 Advanced Risc Mach Ltd Shared Resources in a Data Processing Apparatus for Executing a Plurality of Threads
KR101979697B1 (ko) * 2014-10-03 2019-05-17 인텔 코포레이션 어드레스로의 기입들을 모니터링하는 명령어를 구현하는 스케일가능형 메커니즘
US11080064B2 (en) 2014-10-28 2021-08-03 International Business Machines Corporation Instructions controlling access to shared registers of a multi-threaded processor
US9575802B2 (en) 2014-10-28 2017-02-21 International Business Machines Corporation Controlling execution of threads in a multi-threaded processor
CN107111523B (zh) * 2014-11-11 2020-10-20 瑞萨电子株式会社 命令执行控制系统和命令执行控制方法
WO2016088220A1 (ja) * 2014-12-03 2016-06-09 株式会社日立製作所 計算機及び論理プロセッサの制御方法
CN105843592A (zh) * 2015-01-12 2016-08-10 芋头科技(杭州)有限公司 一种在预设嵌入式系统中实现脚本操作的系统
GB2537115B (en) * 2015-04-02 2021-08-25 Advanced Risc Mach Ltd Event monitoring in a multi-threaded data processing apparatus
US10908909B2 (en) * 2015-06-09 2021-02-02 Optimum Semiconductor Technologies Inc. Processor with mode support
KR102476357B1 (ko) 2015-08-06 2022-12-09 삼성전자주식회사 클럭 관리 유닛과 이를 적용하는 집적 회로 및 시스템 온 칩 및 그 동작 방법
US9916178B2 (en) * 2015-09-25 2018-03-13 Intel Corporation Technologies for integrated thread scheduling
GB2544994A (en) * 2015-12-02 2017-06-07 Swarm64 As Data processing
CN105677487B (zh) * 2016-01-12 2019-02-15 浪潮通用软件有限公司 一种控制资源占用的方法及装置
US11023233B2 (en) 2016-02-09 2021-06-01 Intel Corporation Methods, apparatus, and instructions for user level thread suspension
US11061730B2 (en) * 2016-11-18 2021-07-13 Red Hat Israel, Ltd. Efficient scheduling for hyper-threaded CPUs using memory monitoring
CN108255587B (zh) * 2016-12-29 2021-08-24 展讯通信(上海)有限公司 一种同步多线程处理器
US10353817B2 (en) * 2017-03-07 2019-07-16 International Business Machines Corporation Cache miss thread balancing
US10275254B2 (en) 2017-03-08 2019-04-30 International Business Machines Corporation Spin loop delay instruction
TWI648620B (zh) * 2017-08-07 2019-01-21 慧榮科技股份有限公司 記憶體裝置以及操作指令錯誤處理方法
KR102043538B1 (ko) * 2018-01-18 2019-11-11 주식회사 알티스트 파티셔닝을 적용하여 프로세스를 모니터링하는 컴퓨팅 시스템
CN109508229A (zh) * 2018-09-19 2019-03-22 安徽慧视金瞳科技有限公司 一种多点同时绘制的匹配方法
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
US11086672B2 (en) 2019-05-07 2021-08-10 International Business Machines Corporation Low latency management of processor core wait state
US11231881B2 (en) 2020-04-02 2022-01-25 Dell Products L.P. Raid data storage device multi-step command coordination system
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
CN111857591A (zh) * 2020-07-20 2020-10-30 北京百度网讯科技有限公司 用于执行指令的方法、装置、设备和计算机可读存储介质
CN114489792B (zh) * 2021-03-25 2022-10-11 沐曦集成电路(上海)有限公司 处理器装置及其指令执行方法
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
CN116185891B (zh) * 2023-04-27 2023-07-21 珠海妙存科技有限公司 描述符管理方法

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4491910A (en) * 1982-02-22 1985-01-01 Texas Instruments Incorporated Microcomputer having data shift within memory
JPS59111526A (ja) 1982-12-16 1984-06-27 Fujitsu Ltd 信号処理方式
JPH06105460B2 (ja) 1988-06-07 1994-12-21 富士通株式会社 マルチプロセッサのプロセッサ切換え装置
GB8817911D0 (en) 1988-07-27 1988-09-01 Int Computers Ltd Data processing apparatus
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
US5357617A (en) * 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
JP2866241B2 (ja) * 1992-01-30 1999-03-08 株式会社東芝 コンピュータシステムおよびスケジューリング方法
US5428757A (en) * 1992-04-29 1995-06-27 International Business Machines Corporation Method for reducing translation look aside buffer purges in a multitasking system
US5546593A (en) * 1992-05-18 1996-08-13 Matsushita Electric Industrial Co., Ltd. Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
JP3678759B2 (ja) * 1992-07-21 2005-08-03 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 割込を発生するための装置および割込を発生するための方法
US5493660A (en) * 1992-10-06 1996-02-20 Hewlett-Packard Company Software assisted hardware TLB miss handler
US5584031A (en) * 1993-11-09 1996-12-10 Motorola Inc. System and method for executing a low power delay instruction
US5546037A (en) 1993-11-15 1996-08-13 Cirrus Logic, Inc. NAPNOP circuit for conserving power in computer systems
US5584014A (en) * 1994-12-20 1996-12-10 Sun Microsystems, Inc. Apparatus and method to preserve data in a set associative memory device
JPH08212512A (ja) * 1995-02-03 1996-08-20 Hitachi Ltd 磁気記憶装置及びそれに用いる薄膜磁気ヘッドとその製造方法
JPH08320797A (ja) * 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
JPH096633A (ja) 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムに於ける高性能多重論理経路の動作用の方法とシステム
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
CN1280714C (zh) 1996-08-27 2006-10-18 松下电器产业株式会社 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器
US5961639A (en) * 1996-12-16 1999-10-05 International Business Machines Corporation Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
WO1998043193A2 (en) 1997-03-21 1998-10-01 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
UA55489C2 (uk) * 1997-10-07 2003-04-15 Каналь+ Сосьєте Анонім Пристрій для багатопотокової обробки даних (варіанти)
US6076157A (en) 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6016542A (en) * 1997-12-31 2000-01-18 Intel Corporation Detecting long latency pipeline stalls for thread switching
JP2000010910A (ja) * 1998-06-22 2000-01-14 Nec Corp データ転送制御装置およびデータ転送制御方法ならびに記録媒体
US6920634B1 (en) * 1998-08-03 2005-07-19 International Business Machines Corporation Detecting and causing unsafe latent accesses to a resource in multi-threaded programs
US6505229B1 (en) * 1998-09-25 2003-01-07 Intelect Communications, Inc. Method for allowing multiple processing threads and tasks to execute on one or more processor units for embedded real-time processor systems
US6401155B1 (en) * 1998-12-22 2002-06-04 Philips Electronics North America Corporation Interrupt/software-controlled thread processing
SG65097A1 (en) * 1998-12-28 2001-08-21 Compaq Computer Corp Break event generation during transitions between modes of operation in a computer system
US6535905B1 (en) * 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6341347B1 (en) * 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6351808B1 (en) * 1999-05-11 2002-02-26 Sun Microsystems, Inc. Vertically and horizontally threaded processor with multidimensional storage for storing thread data
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
US6496925B1 (en) * 1999-12-09 2002-12-17 Intel Corporation Method and apparatus for processing an event occurrence within a multithreaded processor
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US6671795B1 (en) * 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US7856633B1 (en) 2000-03-24 2010-12-21 Intel Corporation LRU cache replacement for a partitioned set associative cache
US6931639B1 (en) * 2000-08-24 2005-08-16 International Business Machines Corporation Method for implementing a variable-partitioned queue for simultaneous multithreaded processors
TW461627U (en) * 2000-12-21 2001-10-21 Hon Hai Prec Ind Co Ltd Electrical connector
US6625698B2 (en) * 2000-12-28 2003-09-23 Unisys Corporation Method and apparatus for controlling memory storage locks based on cache line ownership
US6463511B2 (en) * 2000-12-29 2002-10-08 Intel Corporation System and method for high performance execution of locked memory instructions in a system with distributed memory and a restrictive memory model
US7120762B2 (en) * 2001-10-19 2006-10-10 Wisconsin Alumni Research Foundation Concurrent execution of critical sections by eliding ownership of locks
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
US20030126379A1 (en) * 2001-12-31 2003-07-03 Shiv Kaushik Instruction sequences for suspending execution of a thread until a specified memory access occurs

Also Published As

Publication number Publication date
DE10297596B4 (de) 2017-09-07
GB0412867D0 (en) 2004-07-14
AU2002364557A8 (en) 2003-07-24
JP4990829B2 (ja) 2012-08-01
US20030126186A1 (en) 2003-07-03
KR100814993B1 (ko) 2008-03-18
TWI590153B (zh) 2017-07-01
KR20040068993A (ko) 2004-08-02
TW200305820A (en) 2003-11-01
DE10297596T5 (de) 2004-12-02
GB2400947A (en) 2004-10-27
CN100383740C (zh) 2008-04-23
AU2002364557A1 (en) 2003-07-24
HK1066883A1 (en) 2005-04-01
CN1688974A (zh) 2005-10-26
RU2004123622A (ru) 2005-03-27
WO2003058447A2 (en) 2003-07-17
GB2400947B (en) 2005-08-24
JP2006500639A (ja) 2006-01-05
US7363474B2 (en) 2008-04-22
WO2003058447A3 (en) 2004-12-16
RU2308754C2 (ru) 2007-10-20
JP2008165834A (ja) 2008-07-17
DE10297856B4 (de) 2014-07-17
US20080034190A1 (en) 2008-02-07
TW200941340A (en) 2009-10-01
JP4601958B2 (ja) 2010-12-22

Similar Documents

Publication Publication Date Title
TWI322959B (en) A method and apparatus for suspending execution of a thread until a specified memory access occurs
US7127561B2 (en) Coherency techniques for suspending execution of a thread until a specified memory access occurs
TWI266987B (en) Method for monitoring locks, processor, system for monitoring locks, and machine-readable medium
TWI613588B (zh) 在核心間同步運作的方法、微處理器及電腦程式產品
KR100617417B1 (ko) 멀티-스레딩 프로세서에서 스레드의 실행을 정지시키기위한 시스템 및 방법
TWI613593B (zh) 在微處理器中至多核心的微碼傳播
US8266620B2 (en) Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7254697B2 (en) Method and apparatus for dynamic modification of microprocessor instruction group at dispatch
US20030126379A1 (en) Instruction sequences for suspending execution of a thread until a specified memory access occurs
TW201734767A (zh) 用於使用者等級執行緒暫止的方法、設備及指令
CN104216679B (zh) 微处理器及其执行方法
CN108984464A (zh) 微处理器及在微处理器的处理核间同步的方法
CN104360727B (zh) 微处理器及使用其省电的方法
CN104331387B (zh) 微处理器及其配置方法
CN104239273B (zh) 微处理器及其执行方法
Wolff et al. Revisiting Using the Results of Pre-Executed Instructions in Runahead Processors
GB2441903A (en) Resuming control of resources by a processor on exiting a sleep mode and disabling an associated monitor.

Legal Events

Date Code Title Description
MK4A Expiration of patent term of an invention patent