TWI321749B - Method, apparatus, article of manufacture and system to provide user-level multithreading - Google Patents

Method, apparatus, article of manufacture and system to provide user-level multithreading Download PDF

Info

Publication number
TWI321749B
TWI321749B TW094110320A TW94110320A TWI321749B TW I321749 B TWI321749 B TW I321749B TW 094110320 A TW094110320 A TW 094110320A TW 94110320 A TW94110320 A TW 94110320A TW I321749 B TWI321749 B TW I321749B
Authority
TW
Taiwan
Prior art keywords
thread
shared resource
shared
register
user
Prior art date
Application number
TW094110320A
Other languages
English (en)
Other versions
TW200602971A (en
Inventor
Edward T Grochowski
Hong Wang
John Shen
Perry H Wang
Jamison D Collins
James P Held
Partha Kundu
Raya Leviathan
Tin-Fook Ngai
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 TW200602971A publication Critical patent/TW200602971A/zh
Application granted granted Critical
Publication of TWI321749B publication Critical patent/TWI321749B/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
    • 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/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel

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)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Description

1321749 (1) 九、發明說明 【發明所屬之技術領域】 本發明之實施例有關電腦系統之領域,尤其,本發明 之實施例有關一種提供使用者層級多線程之方法以及系統 【先前技術】 B 多線程係程式或作業系統於一時間執行超過一序列指 令的能力’用於程式或系統服務之各使用者請求係當作具 有個別身分之線程而保持聯繫;當程式代表該線程之初始 請求而工作且受到其他請求所中斷時,則代表該線程之工 作狀態會保持聯繫,直到該工作完成爲止。 電腦處理之型式包含單一指令流,單一資料流,其係 包含單一指令流之習知串列之Von Neumann電腦;第二處 理型式爲單一指令流,多資料流方法(SIMD ),此處理設 φ 計可包含多算術邏輯處理器及單一控制處理器,各該等算 術邏輯處理器在鎖定步驟中執行運算於資料上且藉控制處 理器使同步;第三型式爲多指令流,單一資料流(MISD) 處理,其包含透過執行不同指令流之線性陣列處理器來處 理相同的資料流流程;第四處理型式爲多指令流,資料流 (MIMD)處理’其利用多處理器,各執行其本身之指令 流以處理供給至各該等處理器之資料流,因此,MIMD處 理器可具有若千的指令處理單元,多指令序列器以及若千 資料流。 -5- (2) 1321749 ‘現今之多線程微處理器所採用的程式化模型相同於傳 ’統的共享記憶體多處理器:多線程係程化化’彷如其運轉 於獨立的C PU上;線程間之通訊係透過主記憶體而執行 ,以及線程產生/破壞/排程則藉作業系統予以執行;多線 程並不以其中程式規劃者可直接接達線程之架構性可見方 式來提供。 φ 【發明內容】及【'實施方式】 揭示一種提供使用者層級多線程之方法及系統,根據 本技術之該方法包含接收程式化指令而經由指令組合架構 (ISA)來執行一或更多個共享資源線程(shreds );—或 更多個指令指標經由該I S A予以建構;以及該一或更多個 共享資源線程同時地以一微處理器執行,其中該微處理器 包含多指令序列器。 在下文說明中,用於解說之目的,將陳明特定之術語 •:然而,將呈明顯於熟習本項技藝之人士的是,該等特定 之細節並不需要,緊隨著之詳細說明的若干部分將以電腦 記憶體內之資料位元上運算的算式及符號表示之字眼予以 呈現,該等算式之說明及表示爲該等熟習於資料處理技藝 者所使用之手段,而可更有效地表達其工作之內容於其他 熟習於該技藝的人士;此處,算式大致地視爲將產生所企 望結果之前後一致的運算順序,該等運算需要實際數量之 實體調處,通常,雖非必要,但該等數量可採取能予以儲 存,轉移,組合,比較,及其他調處之電性或磁性信號的 -6- (3) 1321749 形式;已證實便利的是,爲共同使用之緣故,有時候稱該 等信號爲位元,數値,元件,符號,字元,術語,數字, 或類似物。 然而,應注意的是,所有該等及相似的術語將相關連 於適當之實體數量且僅係應用於該等數量之便利標記;除 非特定地陳述,否則將明顯於下文討論,應理解的是,在 整個說明中,利用諸如"處理"或”計算"或"決定"或"顯示· φ 或類似者之術語的討論將適用於電腦系統或相似之電子計 算裝置之動作及過程,其調處及轉換表示爲電腦系統暫存 器及記憶體內之實體(電子)數量的資料爲相似地表示爲 電腦系統記憶體或暫存器或其他該等資訊儲存,傳輸或顯 示裝置內之實體數量的資料。 在本文中所提供之本發明實施例亦有關一種用以執行 該等運算之裝置,此裝置可特定地建構用於所需之目的, 或其可包含一通用型電腦,可選擇性地藉儲存於電腦中之 φ 電腦程式予以啓動或再組態,此一電腦程式可儲存於可電 腦讀取之儲存媒體中,諸如但未受限於任一型式之碟片, 含軟性磁碟,光碟’ C D — RO Μ,及磁光碟,僅讀記憶體( ROM ),隨機存取記億體(RAM) ,EPROM > EEPROM, 磁卡或光學卡’或任一型式之適用於儲存電子指令且各耦 合於電腦系統匯流排之媒體。 此處所提出之該等算式及顯示並非固有地相關於任一 特殊之電腦或其他裝置;種種通用型系統可根據本文中之 教示,藉程式而得以使用’或可證實能便利地建構更特定 (4) 1321749 之裝置來執行所需的方法,許多該等系統所需之結構將出 _ 現於下文說明中:此外,本發明之一實施例並未參照任一 特定之程式化語言而描述,將理解的是,可使用許多程式 化語言來實施如本文中所描述之本發明實施例的教示。 如整個此說明書中所使用之"使用者",說明了諸如應 用程式,非特權碼,及類似軟體之使用者層級軟體;使用 者層級軟體不同於作業系統或類似之特權軟體,根據本發 φ 明一實施例,下文說明將應用於如上述之MIMD處理器》 第1圖描繪根據本發明一實施例之使用本發明方法及 裝置之代表性電腦系統100的方塊圖;電腦系統包含處理 器105,晶片組1 10提供系統100有記憶體及I/O功能, 更特定地,晶片組1 00包含一圖形及記憶體控制器插座( GMCH ) 1 15 ’該GMCH 1 1 5扮演一與處理器1 0 5通訊之控 制器且進一步扮演一用於主記憶體1 2 0之控制器,根據本 發明一實施例之處理器1 〇 5允許多線程擴充至使用者層級 φ 。GMCH 115亦提供一界面於耦合至該處之高級圖形埠( AGP )控制器125,晶片組110進一步包含一執行若干 I/O功能之I/O控制器插座(ICH) 135,該ICH 135耦合 於一系統管理匯流排(SM匯流排)140。 I C Η 1 3 5耦合於週邊組件互連(p C I )匯流排1 5 5,超 級丨/0 ( "SID")控制器170耦合於丨CH 135以提供連接性 於諸如鍵盤及滑鼠175之輸入裝置,通用型I/O (GPIO) 匯流排195耦合於ICH 135,USB埠200如圖示地耦合於 ICH 135 ’諸如印表機,掃描器,搖桿等之USB裝置可在 (5) 1321749 此匯流排上添加於該系統架構,積體驅 ’ IDE)匯流排205耦合於1CH 135以連接 於電腦系統,ICH 135在單一實體組件內 PCI裝置。 包含於處理器1 〇5中的是指令組架構 ISA)爲諸如處理器105之微處理器的抽 狀態元件(暫存器)以及操作於該等狀態 φ 該指令組架構藉提供該微處理器之行爲的 規劃者與微處理器設計者而作用爲軟體與 在矽晶片上有效電晶體之數目中的進 引進於通用型微處理器之內,多線程可以 實施:晶片層級之微處理器(CMP)及同 器(SMT),兩者均可使用爲處理器105< 第2圖描繪根據本發明一實施例之代 多處理器;在諸如處理器2 00之晶片層級 φ 重CPU芯210至2U程體於一單一矽晶 CPU芯210至213能完成獨立線程220至 使若干資源(諸如快取記憶體)會由超過 至2 1 3所共享。 第3圖描繪根據本發明一實施例之同 器300;在一同時多線程處理器300中, 能完成多線程之執行,CPU芯310可藉共 粒性之CPU資源而軟體化爲兩個或更多 常決定那一個線程而逐一時脈地隨各資源 動器電子裝置( IDE驅動器210 邏輯地呈現爲多 ί,指令組架構( 象模型,其包含 元件上的指令, 抽象規格於程式 硬體間之邊界。 階已使多線程能 以兩種不同方式 時多線程之處理 ) 表性的晶片層級 多處理器中,多 片20 0之上,各 2 23之執行,即 —個 CPU 芯 2 1 0 時多線程的處理 單一CPU 芯 310 享具有極細微顆 個的處理器(通 來處理)。 -9- (6) 1321749 第4圖描繪根據本發明一實施例之代表性的非對稱多 '處理器400 ;處理器105可爲諸如多處理器4 0 0之非對稱 多處理器;可建立一其中CPU芯410至427具有不同的 微架構但具有相同的ISA之晶片層級多微處理器400,例 如少數的高性能CPU芯410至41 1可以與大量的低功率 CPU芯420至427相積體,此型式之設計可達成高總計之 輸貫量以及高標量之性能,該兩型式之CPU芯可呈軟體 φ 化爲習知之共享記億體線程,或爲共享資源線程,或兩者 之某一組合;指令組架構(ISA)爲諸如處理器105之微 處理器的抽象模型,其包含狀態元件(暫存器)以及在該 等狀態元件上操作之指令,該ISA藉提供該微處理器之行 爲的抽象規格於程式規劃者與微處理器設計者而作用爲軟 體與硬體間之邊界,此程式化模型使應用程式能直接地控 制多重非對稱CPU芯。 φ 共享記憶體程式化模型 先前技術之多線程微處理器採用相同於先前技術之共 享記憶體多處理器系統的程式化模型,該裎式化模型係如 下述,微處理器提供多線程之執行於作業系統,該作業系 統利用該等線程而同時運轉多重應用("方法")及/或同 時運轉多重線程自單一應用("多線程"):在該兩例子中 ,該等線程呈軟體化爲獨立的CPU,主記憶體由所有線程 所共享以及線程間之通訊透過主記億體執行;在CPU內 之硬體資源亦可共享,但該共享係藉微架構而由軟體所隱 -10- (7) 1321749 藏。 雖然傳統的共享記憶體多處理器程式化模型係藉許多 作業系統及應用程式而寬廣地受到瞭解及支援,但該模型 具有若干缺點,例如: 1 )線程間之通訊係經由主記憶體而執行且因.此極爲 緩慢’雖快取法可減輕若千該特徵,但快取線常必須通過 一 CPU芯至另一 CPU芯來助成共享; • 2 )線程間之同步係利用以記憶體爲主的信號通知而 執行,且因此極爲緩慢; 3) 產生,破壞,懸置,及重續線程需作業系統之介 入,因而極緩慢;以及 4) 微處理器販售商無法提供最有效的多線程,因爲 c PU多線程中之改善將由上述記憶體特徵及作業系統特 徵所沖淡。 Φ多線程架構擴充 針對有關先前技術系統之上述理由。本發明之方法及 系統透過多線程架構之擴充來擴展處理器架構以便包含架 構性可見的多線程,提供多重同時線程之執行,多指令指 標,及某一應用狀態(暫存器)之多重拷貝於單一處理元 件;多線程之執行可區別於現有之共享記憶體線程,且可 稱爲Shred或共享資源線程。 此多線程架構之擴充(在下文中稱爲"MAX"之實例) 將包含現有架構之能力以及額外地支援各具有其自身之指 -11 - (8) (8)1321749 令指標,通用暫存器’ FP暫存器’分支暫存器’述語暫 存器,及若干應用暫存器之多重同時共享資源線程;共享 資源線程間之通訊係透過除了共享記憶體之外的共享暫存 器執行,因爲本發明之多線程架構擴充將保證極微小的接 達於共享暫存器,故將減少信號通知之需;此外,本發明 之多線程架構擴可使用於諸如Intel®之32位元架構,或 亦於Intel®之64位元架構,或甚至16位元之架構。 習知之共享記憶體多處理器線程與根據本發明一實施 例之共享資源線程間之比較顯示於下表中: 操作 共享記憶體多處理 器線程 多線程架構擴充之共享資源 線程 產生, 破壞 作業系統呼叫 非特權指令 通訊 共享記憶體 共享暫存器及記憶體 同步 記憶體之信號通知 暫存器及記憶體之信號通知 ,共享暫存器保證極微小的 更新。 系統狀態 用於各線程之獨特 的系統狀態 用於所有線程之共享的系統 狀態 第1表 應注意的是’本發明之多線程架構擴充基本地相異於 先則技術之架構擴充;雖然先前技術之架構擴充提供更多 -12- (9) (9)1321749 的指令及更多的暫存器(狀態)’但多線程架構擴充提供 更多的執行單位。 應用及系統狀態 程式規劃者可見之CPU狀態可分爲兩類;應用狀態 及系統狀態’應用狀態由應用程式及作業系統使用及控制 ,而系統狀態則由作業系統排外地控制。 第5圖描繪根據本發明一實施例之用以提供使用者層 級多線程之代表性的執行環境,該執行環境6 0 0包含其應 用狀態槪述於下表中之暫存器:
-13- (10)1321749
3 2位元架構之應用狀 名稱 寬度 m 通用暫存器 EAX,EBX,ECX,EDX, 32位元 605 EBP,ESI,EDI, ESP 浮點暫存器 STO-7 80位元 625 分段暫存器 CS,DS,ES,FS,GS,SS 1 6位元 6 10 旗標暫存器 EFLAGS 3 2位元,若干 6 15 位元爲應用 指令指標 EIP 3 2位元 620 FP控制及狀態暫存器 CW 6 2 6, 1 6位元, 6 2 6 - 6 3 1 SW 62 7, 1 6位元, TW628 1 6位元, FP作業碼629, 1 1位元, 指令指標6 3 0, 4 8位元, 運算元指標6 3 1 48位元 MMX暫存器 MM0-7 6 4位元,亦稱 635 ST0-7 SSE暫存器 XMM0-7 1 2 8位元 640 MXCSR暫存器 MXCSR 32位元 第2表 -14- (11) 1321749 使用者層級多線程暫存器650至665將更詳細地描述 如下。 3 2位元架構之系統狀態槪述如下:
3 2位元架構之系統狀態 號碼 寬度 控制暫存器 626 CRO-C R4 32位元 旗標暫存器 6 15 子集 EFLAGS 3 2位元,子集 記憶體管理暫存器 GDTR,IDTR 48位元 局部描述表暫存器,任務 暫存器 LDTR.TR 1 6位元 除錯暫存器 DR0-DR7 32位元 模型特定暫存器 650 D SR0-NSRN 64位元 包含用於時戳計數 器,APIC,機器檢查, 記憶體型式範圍, 性能監看之暫存器 共享暫存器 655 SH0-SH7 32位元 共享資訊線程控制暫存器 660 SC0-SC4 32位元
-15- (12)1321749 用於各共享資源線程,該應用狀態分爲兩類;每共享 資源線程之應用狀態及共享之應用狀態,此處所描繪之 MAX程式化模型提供該每共享資源線程之應用狀態的特有 例,而共享之應用狀態則共享於多共享資源線程之中;僅 存在有一拷貝之系統狀態且相對應於既定線程之所有共享 資源線程將共享相同的系統狀態,應用及狀態之大略畫分 係呈現於下表中: 狀態 型式 通用暫存器(可程式化子集) 浮點暫存器(可程式化子集) SSE暫存器(可程式化子集) 指令指標 旗標(應用子集) 預共享資源線程之私用狀態 通用暫存器(可程式化子集) 共享於多共享資源線程中,私 浮點暫存器(可程式化子集) SSE暫存器(可程式化子集) 共享暫存器(新) 旗標(應用子集) 記憶體管理暫存器 位址轉譯(TLB) 目前之特權層級 控制暫存器 用於各線程 主記憶體 共享於多線程中 第4表 -16- (13) 1321749 ’本發明之多線程架構擴充提供大多數應用狀態之可程 式化共享或私用,使得軟體可選擇最佳的分隔;程式化係 藉位元向量執行,使得個別的暫存器可選擇爲共享的或私 用的;硬體再命名者可以如位元向量所指定地從一共享地 或私用地配置暫存器。 MAX之總儲存要求比先前技術同時多線程處理器及晶 φ 片層級多處理器之總儲存要求更小;在MAX中,僅複製 每共享資源線程之私用應用狀態,然而在實施傳統之共享 記憶體之多處理器程式化模型之同時多線程處理器或晶片 層級多處理器中,必須複製整個應用及系統狀態。 共享資源線程/線程階組 各共享記憶體線程包含多重共享資源線程,該等共享 資源線程及共享記億體線程形成兩層級階組;在一選擇性 φ實施例中,三層級之階組可由群集之共享記憶體MAX處 理器所建立,該等群集利用訊息傳遞通訊,作業系統處置 線程之排程而應用程式處置共享資源線程之排程;就任一 既定之共享資源線程視其他共享資源線程爲當地或遠距而 言,該等共享資源線程爲非均勻的,每共享資源線程之應 用狀態係複製用於各共享資源線程,共享之應用及系統狀 態係共通於當地共享資源線程且複製用於各共享記憶體線 程,該記億體狀態僅具有一拷貝。 第6圖描繪根據本發明一實施例之共享資源線程與共 -17- 1321749 (Μ) 享記憶體線程間之代表性關係;每共享資源線程之應用狀 態510係複製用於各共享資源線程,共享之應用及系統狀 態520則共通於當地共享資源線程且複製用於各共享記憶 體線程,該記億體狀態53 0僅具有一拷貝。 因爲系統狀態520共享於MAX程式化模型中之多重 共享資源線程之間,所以該等多重共享資源線程屬於相同 過程:本發明之多線程架構擴充打算由多線程應用,程序 Φ 庫,及虛機器所使用,MAX程式化模型會在其共享資源線 程上給與此型式之軟體空前程度之控制及無法以上述共享 記憶體之多處理器程式化模型予以達成之性能潛力。 無需保護檢查於共享資源線程之間,因爲其均運轉於 相同的特權層級處且共享相同的位址轉譯;因此,可免除 傳統之保護機制於共享資源線程間的通訊期間。 由於共享之系統狀態,故MAX程式化模型不能使用 來運轉不同的過程於相同的線程上;爲此緣故,MAX及先 •前技術之共享記憶體程式化模型將共存於相同的系統內。 因爲既定之CPU將提供有限數目之實體共享資源線 程,故軟體會以相似於硬體線程虛擬化之方式來虛擬有效 之共享資源線程之數目;該虛擬化將造成有限數目之目前 運轉的實體共享資源線伴隨有潛在無限數目之虛線程。 系統呼叫 作業系統呼叫可以以習知方式藉由從應用程式轉移控 制至作業系統及執行上下文切換而處理;具有MAX架構 -18- (15) 1321749 ,一主要差異在於,當在任一共享資源線程上呼叫作業系 統時,將懸置相關於一即定線程之所有共享資源線程之執 行,該作業系統負責儲存及恢復屬於同一線程之所有共享 資源線程之狀態。 由於額外之狀態,上下文切換架空會增加,該上下文 切換之記憶體印跡將成比例於線程之數目而成;然而,該 上下文切換之時間並不會增加太多,因爲各共享資源線程 φ 可以與其他的共享資源線程倂行地儲存/恢復其狀態,該 上下文切換機制可以利用多重序列器而允許倂行狀態之儲 存及恢復,該作業系統本身使用多重共享資源線程。 因爲呼叫作業系統之成本會增加,所以由作業系統執 行之某些功能將移往該應用程式,此功能包含某些例外及 中斷之線程維護及處理。 執行系統呼叫之選擇性實施例係以線程漸呈便宜而上 下文切換漸呈昂貴之觀察結果爲基礎;在此實施例中,線 φ程專用於運轉作業系統以及第二線程專用於運轉應用程式 ,當應用程式共享資源線程執行系統呼叫時,其傳送訊息 至作業系統共享資源線程(經由共享記憶體)且等待回應 訊息;在此方式中,訊息傳遞及等待機制將取代習知之控 制轉移動及上下文切換機制,無需改變各線程之位址轉譯 ,好處在於藉一共享資源線程傳送至作業系統之訊息並不 會擾動到其他當地之共享資源線程。 例外 -19- (16) 1321749 在先前技術架構中,例外會懸置應用程式的執行及引 用作業系統例外處置器;在MAX程式化模型下,此行爲 係不企望的,因爲懸置一共享資源線程而引用作業系統會 造成所有的共享資源線程(相關於既定線程)亦將懸置。 爲解決此問題,本發明引入新的使用者層級例外機制 而給與應用程式第一機會來服務許多型式之例外,該使用 者層級例外機制係以少許之例外型式係最終地藉應用本身 φ 予以服務之觀察結果爲基礎。 用於使用者層級之例外機制,如何報告以對抗一例外 係不同於如何服務一例外,該等例外可分爲三類: 1 ·報告於應用程式及藉應用程式服務之例外,例如 由零畫分之例外係報告於造成例外之應用且亦藉該應用予 以服務,無需或不企望作業系統涉入; 2 .報告於應用程式且接著必須呼叫作業系統服務之 例外,由應用所產生之尋頁缺失必須報告於該應用,且該 φ應用程式必須呼叫作業系統而在該頁中調換;以及 3 ·必須報告於作業系統且藉該作業系統服務之例外 ,爲安全之緣故,硬體中斷必須報告於該作業系統,系統 呼叫(軟體中斷)必須明確地報告於該作業系統。 下表描繪在各該三類中之例外,"在快取失誤上之載 入例外”及”微細顆粒式時計"之例外型式係提供爲相關於本 發明一實施例之例外型式。 -20- (17) (17)1321749 例外 報告於 藉…服務 由零,溢流,邊界,FP例外所畫分 應用 應用 對齊檢查 應用 應用 無效作業碼 應用 應用 在快取失誤上之載入例外 應用 應用 微細顆粒式時計 應用 應用 堆疊分段缺失 應用 系統 一般保護 應用 系統 尋頁缺失 應用 系統 雙缺失 應用 系統 裝置無效 應用 系統 硬體中斷 系統 系統 非可遮罩之中斷 系統 系統 軟體中斷(ΙΝΤη) 系統 系統 第5表· 報告於應用程式之例外係選擇性地處理於該應用內, 或傳遞至用於處理之作業系統;在後之例子中,應用程式 執行系統呼叫而明確地請求服務自該作業系統以回應一例 外(諸如尋頁缺失),此不同於操作系統隱性地代表應用 來執行該等服務之傳統方式。爲避免複式之例外,提供特 別的規定以確保中繼該等例外至作業系統的應用碼本身並 不會蒙受額外的例外;使用者層級之例外機制保留最小數 -21 - (18) 1321749 目之CPU暫存器於影子暫存器組之中以及保留處理器向 ‘量於固定之位置。 虛機器 多線程架構擴充之虛機器及本實施例施加限制於彼此 ,因爲無論何時軟體意圖接達正虛擬化之資源時,虛機器 會產生例外,且例外之處理具有有效的性能影響於該等共 Φ 享資源線程。 在一虛機器中,執行特權指令或接達於特權處理器狀 態會產生例外,該例外必須報告於於虛機器監看器且藉其 處理;在MAX中,藉作業系統(及虛機器監看器)服務 之例外會造成相關連於一既定之線程的所有共享資源線程 懸置’該虛機器監看器充分了解該多重共享資源線程之存 在,則虛機器架構可使產生於非特權指令及處理器資源上 之例外的數目最小化。 死結(Deadlock) 在MAC架構中之死結避免係相當複雜的,因爲共享 資源線程可由其他當地的共享資源線程所懸置;若一共享 資源線程遭受〇s服務之例外或系統呼叫而使所有當地的 共享資源線程懸置時,應用軟體可確保死結將不會發生。 當地(共享資源線程間)之通訊及同步係有別於遠距 (線程間)之通訊及同步,當地之通訊係利用共享暫存器 6 55 (描繪於第5圖中)或共享記憶體執行,遠距通訊則 -22- (19) 1321749 利用共享記憶體執行;當地之資料同步利用極小的暫存器 更新,暫存器信號通知’或記憶體信號通知而執行’遠距 之資料同步則利用記億體信號通知執行。 當地及遠距兩者之共享資源線程控制(產生’破壞) 係利用MAX指令執行’共享資源線程控制並未呼叫作業 系統以用於等待或產額’因爲此可具有懸置所有共享資源 線程於一既定線程上之非故意的效應;使用於線程維護之 φ 作業系統呼叫可以以呼叫使用者層級共享資源線程之程序 庫予以置換,然後,該共享資源線程之程序庫視需要地呼 叫作業系統以產生或破壞線程。 共享資源線程及纖維程 共享資源線程相異於先前技術作業系統中所實施之纖 維程’差異將槪述於下表中:
-23- (20) (20)1321749 特徵 纖維程 共享資源線程 產生 一線程可產生多重纖維程 一線程可產生多重共享資源線程 同時性 一線程可在時間中任一瞬時運轉 一纖維程 一線程可同時運轉多重共享資源線程 排程 纖維程係藉軟體利用合作之多任 共享資源線程係藉硬體利用同時多線程或 務機制予以排程 晶片層級多重處理予以排程 狀態 各纖維程具有其本身私用之應用 各共享資源線程具有其本身私用之應用狀 狀態 態 狀態儲存 目前運轉之纖維程的狀態係儲存 各目前運轉之實際共享資源線程之狀態係 於暫存器中,非主動性之纖維程狀 執行於晶片上暫存器中,非主動性之虛共 態係儲存於記憶體中 享資源線程之狀態係儲存於記億體中。 狀態管理 作業系統儲存/恢復目前運轉之纖 作業系統儲存/恢復所有共享資源線程之 維程狀態於一上下文切換之上。 應用狀態於一上下文切換之上。 第6表 硬體實施 支援多線程架構擴充的微處理器之實施可採取晶片層 級多處理器(CMP )及同時多線程處理器(SMT )之形式 ,先前技術之CM P及SMT處理器試圖從軟體來隱藏CPU 資源之共享,然而,當藉多線程架構擴充之本發明實施例 實施時,處理器將暴露共享爲部分之架構。 爲實施MAX處理器爲晶片層級多處理器,使用廣播 機制來保持系統狀態之多重拷貝於CPU芯間之同步中, -24- (21) 1321749 快速通訊匯流排引入用於共享之應用及系統狀態,因爲晶 片上通訊相對於離晶記憶體爲快,所以該等通訊匯流排會 在共享記億體之多處理器上給與MAX處理器其性能之優 點。 實施MAX處理器爲同時的多線程處理器係可行的, 因爲硬體早已提供必要的資源共享,故可幾乎整個地以微 碼來實施MAX於多線程的32位元處理器之上。 B 根據一實施例,本發明之方法及系統允許多重共享資 源線程中之系統呼叫及例外(報告於〇 S )之優先序,使 得在時間中之任一瞬時僅服務一共享資源線程之請求;一 請求之優先序及選擇係必要的,因爲系統狀態僅能在一時 間處置一 〇 S服務請求,例如假設共享資源線程1及共享 資源線程2同時地執行系統呼叫,則優先序裝置將確定僅 執行共享資源線程1之系統呼叫,而共享資源線程2之系 統呼叫則尙未開始執行;爲公平考量起見,優先序裝置採 φ用輪轉(round-robin)選擇演算,雖然亦可使用其他的選 擇演算。 可標量性(S c ο 1 a b i 1 i t y ) MAX程式化模型之可標量性由下列決定: 1)可儲存/恢復於上下文切換上之狀態數量; 2 )在上下文切換期間由懸置相關連於既定線程之所 有共享資源線程所造成之並列中的減少;及 3 )共享資源線程間之通訊。 -25- (22) 1321749 當共享資源線程之數目增加時,必須儲存/恢復於— '上下文切換之狀態數目會增加,且懸置所有共享資源線程 之結果所損失之潛在的並列亦會增加,該兩因子將限制共 享資源線程之實際數目。 共享資源線程間之通訊亦將限制可標量性,因爲此通 訊係利用晶片上資源來執行;相對地,傳統之共享記憶體 多處理器之可標量性則由離晶通訊所限制。 共享之分類, 在共享資源線程之架構,實施’及軟體使用中之不同 自由度的分類將呈現於下表中:
-26- (23)1321749 屬性 選用1 選用2 選用3 指令組架構 均勻,所有共享資源 線程實施相同的指令 組架構 非均勻,共享資源線 程實施不同的指令組 架構 微架構性實施 對稱,所有共享資源 線程運轉在相同的硬 體微架構上 非對稱,共享資源線 程運轉於不同的硬體 微架構上 應用並列 順序的一傳統之順 序碼 並列之平行碼 共享資源線程之產生 程式規劃者產生,共 享資源線程係明確地 由程式規劃者所產生 編譯之共享資源線程 由編譯器自動地產生 固定功能,共享資源 線程專用於諸如廢料 收集之指定功能 架構正確性 架構性,所有共享資 源線程助成程式之架 構正確性 提示,某些共享資源 線程架構正確性而其 他共享資源線程僅促 成性能 輸入/輸出 計算,共享資源線程 僅執行計算 I/O,共享資源線程執 行除了計算外之輸入 輸出 第7表 兩個不同型式之MAX架構係區分爲:均勻的及非均 勻的;均勻的共享資源線程相似於均勻的多處理器,其中 -27- (24) 1321749 所有的共享資源線程執行相同的指令組;非均勻的共享資 源線程亦係可行於相似於非均勻多處理器的方式中,例如 非均勻的共享資源線程可建構於下列之間: • 32位元處理器與網路處理器之間, • 32位元處理器與64位元處理器之間。 相似地,爲本發明基礎之微架構可爲對稱的或非對稱 的’後者情況之實例將爲晶片層級之多處理器,含少許大 φ 的高性能CPU芯及許多小的,低功率Cpu芯,諸如第4 圖中所描繪。 使用模型 下表槪述用於本發明多線層架構擴充之實施例的若干 使用模型:
-28- (25)1321749 使用模型 分類 說明 好處 預提取 勻勻ISA,順序碼,編 譯器產生的,提示,計 算 協助者線程在主線程 之前預提取記億體位 置,該協助者線程係 由編譯器產生。 藉耗費於快取失誤中 之有效時間來增加標 量碼速度。 用於習知線程之置換 勻勻丨SA,順序碼,程 式規劃者產生的,架 構的,計算 該等共享資源線程係 使用以取代習知之共 享記憶體線程,程序 庫提供線程服務以取 代作業系統。 增加線程碼速度,線 程原線呈更快之若干 大小的等級。 用於編譯器之專用執 行資源 均勻的ISA,順序碼編 譯器產生的,架構的, 計算 編譯器從標量來源碼 產生多重共享資源線 程 編譯器具有直接控制 於共享資源線程上 用於經管理之運轉時 間環境的專用線程 均勻的ISA,固定功能 ,架構的,計算 共享資源線程係專用 於經管理之運轉時間 功能,例如正好及時 轉譯及廢料收集可利 用專用之共享資源線 程執行。 轉譯及廢料收集之共 享資源線程本質地呈 開放性的。 並列程式化語言 均勻的ISA,並列碼, 程序規畫者產生的, 架構的,計算 程式規劃者產生並列 碼,該並列碼轉譯爲 多重共享資源線程 線程原線足夠快而使 用爲指令。 具有積體之I/O性能 的CPU 非均勻的ISA,並列碼 ,程式規劃者產生的, 架構的,輸入/輸出 I/O功能直接地藉應 用程式執行,例如圖 形及網路處理 使1/0功能性能直接 積體,例如圖形及網 路處理 同時的多重1SA CPU 非均勻ISA,非對稱 UARCH,程式規劃者 產生的,架構的,計算 單一 CPU實施多重 ISA,例如32位元架 構及64位元架構,各 ISA有效於程式規劃 者爲共享資源線程。 令人感興趣的可能性 ,但似乎無用 之多處理器 ----- 均勻的ISA,非對稱的 UARCH,架構的,計算 CMP實施爲芯之混 合物,例如高性能及 低功率 達成良好的標量及輸 貫量性能。 第8表 -29- (26) 1321749 預提取 在預提取使用模型中,主線程會產生一或更多個協助 者線程,使用而從主記憶體預提取快取線;協助者線程係 產生以回應於主線程上之快取失誤,因爲主記億體之接達 需要數百至上千個時脈來完成,故標量碼之執行將在主記 憶體接達之期間有效地停止,除非使架構上之配置在失誤 於快取記憶體的載入上故障且前進至主記億體爲止。 用於習知線程之置換 共享資源線程可藉多線程之應用而當作習知線程之高 性能置換物;使用者層級軟體程序庫係配置以執行先前藉 作業系統所執行之共享資源線程管理功能(產生,破壞等 )’該程序庫視需要地使用共享資源線程之指令以及呼叫 作業系統來請求額外的線程;呼叫軟體程序庫會比呼叫作 業系統更快,因爲無需上下文切換。 用於編譯器之專用的執行資源 編譯器可以以相同於其使用諸如暫存器之其他處理器 資源之方式來使用該等共享資源線程,例如該編譯器可檢 視處理器爲具有8個整數暫存器,8個浮點暫存器,8個 SSE暫存器’及4個共享資源線程;因爲處理共享資源線 程爲資源,故編譯器可以以類似於暫存器配置之方式來配 置共享資源線程;當具備暫存器時,若應用程式需要超過 於硬體所提供之虛共享資源線程時,則需某種機制以溢出 -30- (27) 1321749 /塡滿共享資源線程於一支援儲存。在先前技術之架構中 ,控制之流程通常並不視爲處理器資源,因爲僅只存在一 資源而已。 專用於經管理之運轉時間環境的線程 在一經管理之運轉時間的環境中,共享資源線程專用 於諸如廢料收集,正好及時編譯,及輪廓化之功能;該等 φ 共享資源線程執行該等功能主要地是"開放性的",因爲該 等共享資源線程配置爲部分之指令組架構(ISA),該ISA 爲可見於程式規劃者或編譯器撰寫者之處理器之一部分, 且該I S A作用爲軟體與硬體間之界限之故。 並列程式化語言 MAX直接支援並列程式化語言及硬體說明語言,例如 之HDL·或Verilog (硬體描述語言)編譯器可直接地產生 # 用於多重共享資源線程之碼,因爲該來源碼係明確地並列 的。 線程之輪廓化可藉晶片層級的多處理器而引導至支援 多線程之語言,該支援係透過呼叫作業系統及運轉時間程 序庫而提供,用於多線程之語言支援將移至主資料流之通 用型程式化語言之內。
具有積體I/O功能之CPU
共享資源線程係使用於實施諸如網路共處理器之I/O -31 - (28) 1321749 功能’與實施爲一共享資源線程之網路共處理器間的一重 要差異在於該網路共處理器係呈現爲部分之CPU而非爲 I/O裝置。 在先前技術之系統中,當應用程式需要I/O時,該應 用程式利用API (應用程式界面)來呼叫作業系統,然後 作業系統可呼叫裝置驅動器而傳送請求至丨/0裝置,該 作業系統負責隊列或序列化來自多重應用程式之I / 0請求 i ’而確保該I/O裝置在一時間僅處理一(或有限數目) 之請求;此係必要的,因爲I / 0裝置之狀態係全盤於系 統’而C PU狀態則時間多工化於多重應用之間。 在實施爲均勻共享資源線程的1/◦裝置中,I/O裝 置之狀態係處理爲c P U之應用狀態的擴充,該應用程式 直接控制CPU之應用程式及I/O裝置狀態兩者,該應用 狀態及丨/0狀態藉作業系統而儲存/恢復於上下文切換之 上,該丨/〇裝置係建構使得其狀態可時間多工化於若干 Φ 應用之間而無反效果0
同時的多重ISA CPU 64位元架構界定爲包含32位元架構之應用架構以及 透過熟知爲"無縫式”之機制所設定的新的64位元指令組 :與32位兀架構指令組之可相容性使64位元架構之處理 器能運轉現有的32位元架構之應用以及新的64位元架構 之應用。 在目前之界定之下,64位元架構之CPU可及時在任 -32- (29) 1321749 一瞬時運轉6 4位元架構之線程或3 2位元架構之線程; 兩個ISA間之切換係經由64位元架構br.ia (分支至 位元架構)及32位元架構jmpe (跳越至64位元架構) 指令而完成;該32位元架構之暫存器映像於64位元架 之暫存器上,使得僅需該狀態之一拷貝。 可產生其中超過一指令組之架構正在時間中之任一 時運轉的多重ISA CPU,此可藉使用一用於64位元架 φ 〖SA之共享資源線程以及一用於32位元架構ISA之第二 享資源線程予以完成;當具有均勻之共享資源線程時, 應用狀態必須配置於6 4位元架構之共享資源線程及3 2 元架構之共享資源線程兩者皆有,該64位元架構之共 資源線程與3 2位元架構之共享資源線程將同時地運轉。 已描述本發明方法及系統而透過上述多線程架構擴 來提供使用者層級多線程,現將提供用於3 2位元系統 實施例如下。 32位元架構實施例 雖然參照IA — 3 2架構予以描述;但讀者應理解的 ,此處所述之方法及系統可應用於諸如IA — 64架構之 他架構’此外,讀者可直接翻閱第5圖以瞭解根據本發 一實施例之代表性的執行環境,少數之指令將添加於伴 有若干暫存器650至660的IA— 32ISA以促成使用者層 多線程之能力於IA — 3 2。 該多線程架構充包含下列狀態: 在 32 之 構 瞬 構 共 的 位 享 充 之 是 其 明 隨 級 -33- (30) 1321749 •—模型特定暫存器 6 50 ( MAX_SHRED_ENABLE ), 其係由作業系統或BIOS使用以致能該等擴充/使該等擴充 失能; •在CPU ID擴充特性資訊中之三位元,其指示是否 處理器實施現有之該等擴充及實際共享資源線程之數目; •複製大部分的應用狀態(EAX,EBX等),使得各 共享資源線程具有其本身私用之應用狀態的拷貝; • ·—組共享之暫存器SH0至SH7 655,其可使用於共 享資源線程間之通訊及同步;以及 •—組控制暫存器SCO至SC4 660,使用於共享資源 線程管理。 該多線程架構擴充包含下列指令: •共享資源線程之產生/破壞:forkshred, haltshred, k i 11 s h r e d, joinshred, getshred ; •通訊:mov至/自共享暫存器655,同步mov至/自 鲁共享暫存器655; •同步(信號通知):cmPxshgsh,xaddsh,xchgsh; .發訊:signalshred ; •變遷至/自多重共享資源線程之模式:entermsm, e X i t m s m ; •狀態管理:shsave,shrestore ;以及 •其餘的:mov至/自共享資源線程之控制暫存器。 此外,1 A — 3 2機制配置有下列功能: • IA - 32例外機制將退出多重共享資源線程之模式及 -34- (31) (31)1321749 儲存所有共享資源線程之狀態於一例外之上(當可應用時 ): • IA- 32 IRET指令恢復所有共享資源線程之狀態及 回到多重共享資源線程之模式(當可應用時):以及 •引進使用者層級例外機制。 組態 模型特定暫存器(M S R ) 6 5 0係使用於致能該多線程 架構擴充,該M S R將描述如下: 暫存器位址 (十六進) 暫存器位址 (十進) 暫存器名稱欄及旗標 共享的 /獨特 的 位元說明 1F0H 496 MAX.SHRED.ENABLE 共享的 位元〇致能多線程架構擴 充,在重設時初始化爲〇,作 業系統或BIOS必須藉寫 入1於此暫存器內而明確 地致能MAX。 第9表 諸如共享資源線程M S R 6 5 0之模型特定暫存器僅在特 權層級〇寫入及讀取,若未致能多線程架構擴充時,則遺 留代碼(legacy code)之執行將受限於共享資源線程號碼 0 ° -35- (32) 1321749 初始EAX値 有關處理器所提供之資訊 1H EAX形式資訊(型式,族,模型,及步進ID) EBX 位元7-0:標記索引 位元15-8 : CLFLUSH行大小(値.8=位元組中之快取記憶體之行大小 位元23-16 :每個實體處理器之邏輯處理器的數目 位元32-24 :當地之APIC ID ECX擴充之特性資訊 EDX特性資訊 第10表
φ CPUID ΙΑ — 32 CPUID指令係修正而送回一指示,β卩,處理 器支援伴隨有所提供之實際共享資源線程之數目計數的多 線程架構擴充之指示,此係藉添加三位元(NSH RED )於 ECX中所送回之擴充的特性資訊而完成,由CPUID指令 所送回之資訊提供於下表中: -36- (33) 1321749 初始EAX値 有關處理器所提供之資訊 1H EAX形式資訊(型式,族,模型,及步進ID) EBX 位元7-0 :標記索引 位元15-8 : CLFLUSH行大小(値.8=位元組中之快取記憶體之行大小 位元23-16 :每個實體處理器之邏輯處理器的數目 位元32-24 :當地之APIC ID ECX擴充之特性資訊 EDX特性資訊 第11表
在ECX暫存器中所送回之擴充的特性資訊具有下列 形式: -37- (34) 1321749 位元# 助憶 說明 18 : 16 NSHRED 三位元指示硬體所支援之實體共享資源 線程的數目。 000 :1個共享資源線程/線程 00 1 :2個共享資源線程/線程 0 10 :4個共享資源線程/線程 0 11 :8個共享資源線程/線程 100 :16個共享資源線程/線程 10 1 :32個共享資源線程/線程 110 保留 111 :保留 第12表
若並未致能該多線程架構擴充時(透過 MAX_SHRED 鲁-ENABLE MSR),則擴充的特性資訊將回到用於NSHRED 之0 0 0的値。 架構狀態 該多線程架構擴充安置所有狀態爲三種類之一: •私用於各共享資源線程 •共享於當地之共享資源線程之中 •共享於所有共享資源線程 -38- (35) 1321749 分解該ΙΑ — 32狀態爲各種類係顯示於第2表上方, 共享資源線程之私用狀態係每共享資源線程複製一次,共 享資源線程之私用狀態完全地私用於各共享資源線程;特 定地,該架構並不提供從另一共享資源線程分別讀取或寫 入一共享資源線程之私用暫存器的指令,該架構並不提供 shave及shrestore指令來集合性地寫入及讀取所有共享資 源線程之私用狀態於記憶,而是該等指令僅執行於單一之 φ 共享資源線程的模式中;該共享資源線程之共享的狀態係 顯示於上述第3表之中》 一組共享暫存器SH0至SH 7 65 5係使用於共享資源線 程間之通訊及同步,該等暫存器65 5透過MOV指令而寫 入於共享暫存器及透過MOV指令而讀取自共享暫存器: SH0至SH7暫存器655儲存32位元整數値;根據一實施 例,8 0位元浮點6 2 5及1 2 8位元S S E資料6 4 0係透過主 記憶體而共享。 φ 配置一組共享資源線程控制暫存器SCG至SC4 660 ’ 該等暫存器界定如下: -39- (36)1321749 暫存器 名稱 說明 SCO 共享資源線程運 轉暫存器 SCO含有一具有每共資源線程1位元之位元向量,位元0相 對應於共享資源線程〇,位元1相對應於共享資源線程1等, 各位元指示是否相關連之共享資源線程目前係運轉或暫停, 當透過MAX_SHRED_ENABLE MSR,使多線程架構擴充失能 時,則SCO含有指示僅共享資源線程0爲主動之1的値。 SCI 中斷共享資源線 程運轉暫存器 當從多重共享資源線程之模式變遷至單一共享資源線程之 模式時,將SCO之內容拷貝至SCI之內,以及當從 單一共享資源線程之模式變遷至多重共享資源之模式時, 拷貝SCI之內容至SCO之內。 SC2 共享資源線程狀 態儲存/恢復指 標 SC2指出記憶體中之共享資源線程狀態儲存/恢復區,此記 憶體區係使用於儲存及恢復上下文切換上之所有運轉之共 享資源線程之狀態。 SC3 共享暫存器空白 /塡滿位元 SC3含有空白/塡滿位元用於共享暫存器,位元0相對應於 共享暫存器〇,位元1相對應於共享暫存器1等。 SC4 使用者層級中斷 表基礎位址 SC4指出用於使用者層級中斷表之基礎位址。 第13表 記億體狀態由所有共享資源線程所共享,EFLAGS暫 存器6 1 5之分解顯示於下表中: -40- (37) 1321749
位元 型式 複製 助憶 說明 0 狀態 Y CF 進位旗標 2 狀態 Y PF 配類旗標 4 狀態 Y AF 輔助進位旗標 6 狀態 Y ZF 零旗標 7 狀態 Y SF 正負號旗標 8 系統 Y TF 陷阱旗標 9 系統 N IE 中斷致能旗標 10 控制 Y DF 方向旗標 11 狀態 Y OF 溢流旗標 13:12 系統 N I0PL I / 〇特權層級 14 系統 N NT 多套任務 16 系統 N RF 重續旗標 17 系統 N VM 虛8 6模式 18 系統 N AC 對齊檢查 19 系統 N VIF 虛中斷旗標 2 0 系統 N VIP 虛中斷未決 2 1 系統 N ID ID旗標 第14表 標示"Y"之旗標係以每共享資源線程爲基礎而複製; 標示”N "之旗標則具有一由所有共享資源線程所共享之拷 貝。 -41 - (38) 1321749 32位元EFLAGS暫存器615含一組群之狀態旗標, 一控制旗標,及一組群之系統旗標;隨著處理器105之初 始化(藉確定RESET接腳或INIT接腳)’EFLAGS暫存 器615之狀態爲00000002H;此暫存器615之位元1,3, 5,15,及22至31係保留,軟體不應利用或依據任一該 等位元之狀態。 該EFLAGS暫存器615中之若干旗標可利用特殊目 φ 的指令直接修正,並未存在有允許直接檢驗或修正整個暫 存器之指令;然而,可利用下列指令來移動旗標之組群至 及自程序堆疊或 EAX 暫存器:LAHF,SAHF,PUSHF, PUSHFD,POPF,及 POPED;在已轉移 EFLAGS 暫存器 615之內容至程序堆疊或EAX暫存器之後,可利用處理 器之位元調處指令(BT,BTS,BTR,及BTC)來檢驗及 修正該等旗標。 當懸置一任務(利用處理器之多任務化設施),處理 •器將自動地儲存EFAGS暫存器615之狀態於任務狀態分 段(T S S )中以用於將懸罝之任務;當答應新的任務時, 則處理器將以來自該新任務之TSS的資料載入該EFLAGS 暫存器615。 當執行呼叫中斷或例外處置器之程序時,處理器會自 動儲存EFLAGS暫存器615之狀態於程序堆疊之上:當 中斷或例外藉一任務切換來處置時,則EFLAGS暫存器 之狀態將儲存於TSS中以用於將懸置之任務。 -42- (39) 1321749 共享資源線程之產生/破壞 共享資源線程可利用f 0 r k s h r e d指令來產生,各式爲
forkshred imml6,目的 IP forkshred rl6 ,目的 IP 提供兩種格式,一具有共享資源線程數字爲立即運算 元,以及第二格式具有共享資源線程數字爲暫存器運算元 φ ;針對該兩形式,目的IP指定爲立即運算元,其値係相 對於代碼分段之開始(標稱地0 ),無關目前之IP。 forkshred imm 16,目的IP之編碼法相似於具有共享 資源線程數字取代16位元選擇器及目的IP取代16/32位 元偏置之for jump指令。 該forkshred指令將設定適當之運轉元於SCO且開始 執行於指定之位址;不似 Unix fork ()之系統呼叫, forkshred指令不拷貝根源共享資源線程之狀態,新的共 •享資源線程開始執行於一伴隨有所有其他私用暫存器之目 前値的更新EIP ;期望地,新的共享資源線程應藉載入 ESP及檢索來自共享資源線程之暫存器或記憶體的輸入參 數而初始其堆疊,該forkshred指令並不自動地傳遞參數 〇 若目的之共享資源線程正運轉時,forkshred將產生 #SNA (共享資源線程無效)例外,此係如下文所示之使用 者層級之例外:軟體將確定其並未嘗試起始一早已運轉之 共享資源線程,或選擇性地提供SSNA處置器以暫停現有 -43- (40) 1321749 的共享資源線程及返回以再執行f0rk Shred,#GP ( 0 )之 例外會生於若共享資源線程數字大於硬體所支援之共享資 源線程的最大數字時。 爲終止目前之共享資源線程之執行,係利用 haltshred指令,該haltshred清除目前共享資源線程之運 位元於SCO中且終止目前共享資源線程之執行,該共享資 源線程之私用狀態將維持,即使當暫停時;因爲並沒有機 φ 制存在以用於一共享資源線程接達另一共享資源線程之私 用狀態’故無法獲悉一經暫停之共享資源線程的私用狀態 :然而,當共享資源線程經由forkshred而再開始執行時 ,該狀態將持續且呈可見。 爲更早地終止另一共享資源線程之執行,係引進 haltshred指令,格式爲: killshred imml6 killshred rl6 φ 根據一實施例,該共享資源線程數字爲16位元暫存 器或立即運算元;killshred清除特定共享資源線程之運轉 位元於SCO中且終止該共享資源線程之執行;當暫停時, 將維持該共享資源線程之私用狀態。 若目的之共享資源線程並未運轉時,將不提及地忽略 該killshred;此行爲對於避免killshred與正常地終止共 孚資源線程間之競爭而百係必要的;在執行killshred之 後,軟體會保證該目的共享資源線程不再運轉,共享資源 線程允許制裁本身以取代執行haltshred;若共享資源線 -44- (41) 1321749 程數字大於硬體所支援之共享資源線程的最大數字時,則 #GP(〇)例外會發生。 爲等待直到一指定之共享資源線程已終止爲止(如清 除之SCO位元所示),引進joinshred指令,格式爲 joinshred imml6 joinshred r 1 6 若目的共享資源線程並未運轉時,則joinshred立即 φ 返回,此行爲避免joinshred與正常終止之共享資源線程 間之競爭,軟體會保證目的共享資源線程不再運轉;共享 資源線程執行joinshred於本身係合法的,若共享資源線 程數字大於硬體所支援之共享資源線程的最大數字時, #GP ( 0 )例外會發生,該joinshred指令並不自動地傳遞 返回値,爲了使共享資源線程決定其本身之共享資源線程 數,係引進getshred指令,格式爲 getshred r 3 2 φ 該getshred轉回目前共享資源線程之數字,getshred 可用以接達由共享資源線程數字所索引之記憶體陣列, getshred 〇將擴充16位元共享資源線程數字以寫入目的 地暫存器之所有位元。 用於所有共享資源線程之產生/破壞指令,該共享資 源線程數字可指定爲暫存器或立即運算元;期望的是,立 良P形式之執行可以比暫存器形式之執行更快,因爲該共享 資源線程數字將有用於解碼時間而非執行時間。具有該立 即形式,編譯器可指定該等共享資源線程數字;具有該暫 -45 - (42) (42)1321749 存器形式,則可利用運轉時之指定。 下表將呈現共享資源線程之產生/破壞指令之槪述: 指令 說 明 forkshred imm 16, target 在 指 定 的 位 址開始共享資源線 IP 程 之 執 行 forkshred r16 , target IP h alt s h e d 終 止 W一 刖 的 共享資源線程 killshred i m m 1 6 終 止 特 定 的 共享資源線程 killshred r 1 6 joinshred i m m 1 6 等 待 直 到 該 特定之共享資源線 joinshred r 1 6 程 終 止 爲 止 getshred r32 轉 回 巨 刖 共 享資源線程之數字 第15表 該等 forkshred,haltshred,killshred,joinshred,及 getshred指令可在任一特權層級處執行,haltshred爲特權 指令,然而現有之丨A — 32 hit指令係特權的。 可能地,killshred或 haltshred的執行會造成零運轉 之共享資源線程,此狀態(具有〇於SCO中)係相異於現 有的IA— 32暫停狀態,SC0 = 0爲合法狀態,但卻無用, 除非產生使用者層級之時計中斷爲止。 通訊 -46- (43) 1321749 共享資源線程透過現有的共享記憶體以及透過用於此 目的所特定引進之一組暫存器而相互通訊,共享暫存器 SHO至SH7 655可由屬於相同線程之所有當地之共享資源 線程予以接達,該等SHO至SH7暫存器6 55可使用以傳 遞輸入之參數至共享資源線程,通訊自共享資源線程轉回 値,及執行信號通知操作,軟體協定指定特定的共享暫存 器655於各目的。 P 各共享暫存器655具有相對應之空白/塡滿位元於 SC3中,爲寫入及讀取該等共享暫存器655,係使用MOV 至共享暫存器及MOV自共享暫存器655,該等格式槪述如 下: m 〇 v r32,shO 至 s h 7 m ov shO 至 sh7,r 3 2 該等指令編碼法相似於現有的MOV至/自控制暫存器 660及MOV至/自除錯暫存器之指令,該MOV至/自共享 φ暫存器的指令可執行於任一特權層級,該等指令假定軟體 利用額外的指令而明確地執行同步,mov至/自共享暫存 器並不檢驗也不修正SC3中之空白/塡滿位元的狀態。 期望的是,MOV至共享暫存器655及MOV自共享暫 存器6 55的特徵比載入及儲存於共享記憶體之特徵更低, 硬體實施可能冒險性地讀取共享暫存器655及窺探其他共 享資源線程之寫入,硬體必須確保當寫入於共享暫存器 655時強力定序的等效物:在一選擇性實施例中,可產生 障礙指令以用於接達共享暫存器6 5 5。 -47- (44) 1321749 一架構特性將保持共享暫存器定序與記憶體定序彼此 分開,所以若共享資源線程寫入於共享暫存器655且接著 寫入於記憶體時,則並不保證該共享暫存器655之內容將 可在見到共享記憶內容之前見到,此界定之理由在於使共 享暫存器65 5中之環路計數器能高速接達/更新而不會產 生不必要的記憶體障礙;若軟體需要障礙於共享暫存器 655及記憶體兩者之上時,軟體必須執行共享暫存器信號 φ 通知連同記憶體信號通知,該記憶體信號通知除了扮演障 礙之外係冗餘的。 爲提供迅速通訊以及同步,將使用同步的mov至/自 共享暫存器指令,該等指令槪述如下: syncmov r 3 2 > s h 0 -s h 7 syncmov sh0-s h 7 > r 3 2 該指令編碼法使現有的MOV至/自控制暫存器660與 MOV至/自除錯暫存器指令並列,同步的m〇v至共享暫存 φ 器655相似於其不同步之配對,除了其將等待直到空白/ 塡滿位元在寫入共享暫存器65 5之前指示空白爲止;在寫 入共享暫存器655之後,該空白/塡滿位元將設定於塡滿 ;同步的mov自共享暫存器655相似於其不同步之配對, 除了其將等待直到空白/塡滿位元在讀取自共享暫存器65 5 之前指示塡滿爲止;在讀取自該共享暫存器655之後,該 空白/塡滿將將清除爲空白。 如下文所述,空白/塡滿位元可藉移動至SC3而初始 化,同步的MOV至/自共享暫存器之指令可執行於任一特 -48- (45) 1321749 權層級,該共享暫存器之通訊指令係槪述如下。 指令 說明 m 〇 v r 3 2 , shO-sh7 移動自共享暫存器 m o v sh〇-sh7,r32 移動至共享暫存器 syncmov r32,sh〇-sh7 同步移動自共享暫存器 syncmov shO — sh7,r32 同步移動至共享暫存器 φ 第16表 同步 一組同步根源操作於共享暫存器65 5之上,該同步根 源相似於現有的信號通知指令,除了其操作於共享暫存器 6 5 5之上而非記憶體之外,該等指令如下所示:
•49- (46) (46)1321749 指令 說明 cmpxchgsh shO-s h 7,r 3 2 比較共享暫存器與r32,若相等,則 設定ZF.及載入r32於共享暫存器 之內,否則清除2F及載入共享暫存 器於ΕΑΧ之內。 xaddsh shO — sh7,r32 調換共享暫存器與r32,然後添加 r32於共享暫存器,此指令可使用於 LOCK前置以致能極微小的操作。 X c h gs h sh〇-sh7,r32 調換共享暫存器與「32,此指令一直 極微小。 第17表 該等同步根據係執行於任一特權層級,該等指令並不 檢驗也不修正SC 3中之空白/塡滿位元的狀態。 進入/退出多重共享資源線程之模式 MAX架構提供一切換於多重共享資源線程與單一共享 資源線程模式之間的機制,單一共享資源線程模式使處理 器能藉暫停除了一共享資源線程外之所有共享資源線程之 執行而以一定序的形式執行上下文切換’ sco指示目前操 作模式如下·‘ .真正含有單一的"1"於任一位元位置之SCO表示單 一共享資源線程模式, -50- (47) (47)1321749 •含有除了單一的” Γ’之外的任何數於任一位元位置 之SCO表示多重共享資源線程模式。 爲執行上下文切換,必須: 1) 藉切換至單一共享資源線程模式而懸置除了一共 享資源線程外之所有共享資源線程 2) 儲存該共享資源線程之狀態 3) 載入新的共享資源線程之狀態 4) 藉切換至多重共享資源線程模式而恢復所有共享 資源線程之執行 entermsm及exitmsm指令分別使用於切換至多重共享 資源線程及單一共享資源線程模式,entermsm使用於進入 多重共享資源線程模式,所有共享資源線程之狀態必須在 此指令之執行前予以載入;entermsm拷貝 SCI中新的共 享資源線程之運轉向量至SCO之內,然後,entermsm起 始該特定的共享資源線程》 可能地’ SCI之內容會造成entermsm執行之後沒有 額外的共享資源線程運轉;在此例中,處理器將維持於單 —共享資源模式中;亦係可能地,執行entermsm之結果 ’使其上執行 entermsm之共享資源線程不再運轉。 exitmsm使用於退出多重共享資源線程模式,exitmsm拷 貝SCO中之目則共享資源線程之執行向量於sci之內, 清除除了一相對應於執行exitmsm之共享資源線程外之所 有SCO運轉位兀’暫停除了執行exitmsm之共享資源線程 外之所有共享資源線程,該等操作係執行爲極微小的操作 -51 - (48) /49 ’ SC〇狀態指示單一的共享資源線程模式 eXltmSm可執行於任一特權層級》 狀態管理 ί曰令(shsare及 shrestore)使用於 之共享資源線程之狀態,而分別寫入所有 私> 用狀態的內容至記憶體及讀取所有共享 % 狀態的內容自記憶體,格式爲: shsave m 1 6 3 8 4 shrestore m 16384 記憶體儲存區之位址係指定爲指令中2 對齊於16位元組之邊界上,該記憶體儲存 組而允許用於進一步之擴充,該記憶體儲在 暫存器而擴充現有之FXSAVE/FXREST0R^ 享資源線程之記億體儲存區係界定如下: ;entermsm 及 存及恢復收集 享資源線程之 源線程之私用 .位移。該位址 區爲16K位元 :區藉添加整數 丨式,用於各共 -52- (49) 1321749
偏置 暫存器 0-1 FCW 2-3 FSW 4 ~ 5 FTW 6-7 FOP 8-11 FIP 12-13 CS 14-15 保留 16-19 FPU DP 20-2 1 DS 22-23 保留 24-27 MXCSR 28-3 1 MSCSR.MASK 32-159 ST0-ST7 160-287 XMM0-XMM7 288-351 EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP 352-359 ES,FS,GS,SS 370-367 ΕΙΡ 368-371 EFLAGS 第18表
所有共享資源線程的內容儲存/恢復於藉下式所獲得 之位址: -53- (50) 1321749 位址=5 1 2x (共享資源線程之數字)+ (基礎位址) 該記億體儲存區包含目前運轉之共享資源線程的EIP 及ESP,Shsave寫入目前的EIP及ESP至記憶體;爲避免 分支,Shrestore指令並不溢寫目前共享資源線程之EIP 或ESP;當執行爲部分之IRET時,該Shrestore功能將溢 寫目前共享資源線程之EIP及ESP。
Shsave及Shrestore可執行於任一特權層級,但僅當 φ 於單一共享資源線程模式中之時,若當於多重共享資源線 程模式中之時企圖Shsave及Shrestore時,則會發生#GP (〇 )例外;實施例係開放以使用所有現行之硬體資源, 並列地執行Shsave/ Shrestore儲存/載入操作。
Shrestore將無條件地從記憶體下載所有共享資源線 程之狀態,爲確保共享資源線程的私用狀態不會從一任務 至下一任務中漏失,此係必要的;Shsave可無條件地或有 條件地儲存所有共享資源線程至記憶體,若該私用狀態並 •未修正時,則實施可維護非架構性可見之壞比(dirty bit )而跨越若干或所有的Shsave儲存操作。
Shsave及Shrestore指令僅儲存及恢復共享資源線程 之私用狀態,作業系統則負責儲存及恢復共享暫存器655 移動至/自共享資源線程控制暫存器660 指令係提供以寫入及讀取共享資源線程控制暫存器 SC0-SC4 660,該等格式槪述如下: -54- (51) 1321749 m o v r 3 2,s c Ο - s c 4 mo v sc〇-sc4,r3 2 該等指令編碼相似於現有之MOV至/自控制暫存器 660及MOV至/自除錯暫存器之指令,該等MOV至/自控 制暫存器之指令可執行於任一特權層級,安全裝置藉寫入 於共享資源線程控制暫存器而配置,以確保除了安全裝置 本身之外,有毒的應用程式無法影響任何過程。 應用程式利用forkshred及joinshred而非直接調處 SCO之內谷,exitmsm可以以極微小之方式從多重共享資 源線程模式變遷至單一共享資源線程模式;利用πιον自 SCO而讀取目前共享資源線程之運轉狀態且接著利用mov 至SCO而寫入共享資源線程之運轉狀態將給與所企望之結 果,因爲該共享資源線程之運轉狀態可改變於讀取與寫入 之間。 φ作業系統例外 MAX具有若干用於IA— 32例外機制之表示,首先, 使用者層級例外機制使若干型式之例外能直接報告於產生 該等例外之共享資源線程,此機制描述如下文。 然後,修正IA- 32例外機制而在需要上下文切換之 例外的存在中適當地處置多重共享資源線程;具有先前技 術丨A - 32例外機制之一問題在於該機制係界定以自動儲 存及恢復確實—運轉線程之 CS,EIP,SS,ESP,及 EFLAGS 〇 -55- (52) 1321749 擴充現有的ΙΑ - 32例外機制而包含該等entermsm, exitmsm,shsave,及shrestore指令之功能,當發生中斷 或例外而需上下文切換時,該例外機制將執行下述: 1 )藉執行exitmsm而退出多重共享資源線程模式, 該exitmsm暫停所有共享資源線程,除了 一造成該中斷或 例外之共享資源線程之外,作業系統則利用造成該中斷或 例外之該共享資源線程而進入; > 2 )藉執行Shsave於SC2所給定之起始位址而儲存所 有共享資源線程之目前狀態於記憶體;及 3)如目前所界定地執行該IA_32上下文均換。 爲轉回至多重共享資源線程之程式,修正的I RET指 令將執行下述: 1) 如目前所界定地執行該IA - 32上下文切換;
2) 藉執行Shrestore於SC2所給定之起始位址而從 記憶體恢復所有共享資源線程之目前狀態,此將溢寫該IA φ — 32上下文切換中所儲存之EIP及ESP;以及 3) 藉執行entermsm而進入多重共享資源線程模式, 依據SCI之狀態,entermsm之執行會使處理器停留於單一 共享處理器模式中。 需作業系統來建立共享資源線程狀態之儲存/恢復區 於記憶體中且在執行IRET之前載入其位址於SC2之內, 亦需該作業系統來儲存/恢復SCI,SC3及SC4之狀態。
針對多重共享資源線程而言,可能同時遭遇種種需要 作業系統服務之例外,因爲MAX在一時間僅能報告一 〇 S -56- (53) 1321749 例外,硬體必須使多重共享資源線程上之該等0 S例外呈 優先序,確實地報告一例外,且設定所有其他共享資源線 程之狀態於其中尙未執行產生該例外之指令的點β 使用者層級之例外 MAX引進使用者層級之例外之機制而使若干型式之例 外能完全地在應用程式內處理,無需作業系統介入,特權 _ 層級變遷,或上下文切換。 當使用者層級之例外發生時,下一個欲執行之指令的 EIP將推至堆疊上且處理器向量將推至特定的處置器;使 用者層級例外處置器執行其任務且然後經由現有的RET指 令轉回。根據一實施例,並無機制配置供遮掩使用者層級 之例外用,因爲假設應用僅在準備應用而服務時才會發生 使用者層級之例外。 兩個指令配置以產生第一兩個使用者層級之例外·· • signalshred及forkshred,該等將描述於下文中。 發訊方式 signalshred指令使用以傳送信號至特定的共享資源線 程,該格式爲:
signalshred imml6,目的 IP signalshred rl6 ,目的 IP 目的共享資源線程可指定爲暫存器或立即運算元,該 signalshred imml6,目的IP指令編碼法相似於現有之具有 -57- (54) 1321749 共享資源線程數字取代16位元選擇器及目的IP取代 16/32位元偏置之far jump指令;關於far jump (遠處跳 越),signalshred之目的IP係指定相關於代碼分段的開 始(標稱地0 )而非相關於目的之IP。 回應於signalshred,目的共享資源線程將下一個欲執 行之指令的EIP推至堆疊上且將向量推至指定之位址;共 享資源線程可傳送信號至本身,其中效應相同於執行近處 φ 呼叫指令,若目的共享資源線程並未運轉時,則可不提及 地忽略signalshred,若該共享資源線程之數字大於硬體所 支援之共享資源線程之最大數字時,則#GP(0)例外會發 生。 signalshred指令可執行於任一特權層級,signalshred 指並不自動地傳遞參數到目的共享資源線程,無機制配置 以成塊一 signalshred ;因此,軟體需在發出signalshred 之前實施一成塊機制或提供可巢套之signalshred處置器 共享資源線程無效(SNA) 若程式企圖起始一早已運轉之共享資源線程時, forkshred會產生#SNA例外;軟體#SNA處置器可執行 killshred於現有的共享資源線程之上且轉回至forkshred 指令。 該#SNA例外藉由將forkshred指令之EIP推至堆疊上 且向量化的SC4 + 0所給定之位址而處理,在SC4 + 0處之 -58- (55〉 1321749 代碼應分支至實際處置器,例外向量則設置於SC4+16, SC4 + 32等,軟體將保留記憶體直至SC4 + 4095以涵蓋256 個可能的使用者層級之例外,在記憶體SC4機制中之中斷 表則在隨後時間以清除機制予以置換。 懸置/重續及共享資源線程虛擬化 多線程架構擴充允許使用者層級之軟體利用如下之指 φ 令未懸置或重續共享資源線程,爲懸置共享資源線程: 1 )初始化該共享資源線程狀態之儲存區於記憶體中 ’此係藉懸置動作之應用程式所建立之記憶體區,其係相 異於指標爲SC2之上下文切換之共享資源線程狀態區; 2) 傳送信號至指向於懸置處置器之共享資源線程, 此係經由signalshred目的共享資源線程,懸置處置器IP 而完成; 3) 懸置處置器利用現有之mov,pusha,及fxsave指 φ令而儲存共享資源線程之私用狀態於記憶體; 4) 懸置處置器執行haltshred;以及 5) 原始代碼執行joinshred而等待,直到共享資源線 程已暫停爲止。 可能的是’該共享資源線程早已在懸置動作時已暫停 :在此例中’係忽略signalshred,不引用懸置處置器,且 jo in shred並不等待,在記憶體中之共享資源線程之狀態儲 存區將保留其初始値,該値必須指出將立即執行 halt shred之虛設的共享資源線程;爲重續共享資源線程 -59- (56) 1321749 ,將執行反向操作: 1 )分岔一共享資源線程以指向重續處置器,此係經 由fo rkshred目的共享資源線程,重續處置器丨P而完成; 2) 重續處置器利用現有之mov’P〇Pa,及fxrestor 指令而恢復共享資源線程之私用狀態自記憶體;以及 3) 該重續處置器經由現有之RET指令而轉回到共享 資源線程。 _ 當重續一早已暫停之線程時,重續處置器將RET至虛 設共享資源線程而立即執行haltshred ’該懸置/重續能力 開啓了共享資源線程虛擬化之可行性:在執行forkshred 之前,軟體可選擇而以相同的共享資源線程數字來懸置任 一現有之共享資源線程;在執行Join shred之後,軟體可 選擇而以相同的共享資源線程數字來重續現有的共享資源 線程;因爲懸置/重續順序並非再進入的,故爲確保僅一 懸置/重續在任一既定時間執行於任一既定之共享資源線 φ程,軟體關鍵部分係必要的;利用該等機制,應用程式可 產生其本身之先佔的共享資源線程之排程器。 在MAX之選擇性實施例中,存在一指令而利用第一 有效之共享資源線程來分岔(allocforkshred r32),其中 Γ32係寫入有經配置之共享資源線程數字(在forkshred中 ,r32指定分岔之共享資源線程數字);allocforkshred亦 轉回一旗標以指示是否存在有任何有效的硬體共享資源線 程。 在另一實施例中,等待共享資源線程之指令利用共享 -60- (57〉 1321749 暫存器來提供等待同步(waitshred shO — sh7,imm) ’該 等待指令提供等待功能當作指令,若無此指令時,必須使 用環路,諸如: loop: m〇v eax > shO Hi eax > mask j z loop 在另一實施例中,joinshred獲得位元遮罩(bitmask φ )而在多重共享資源線程上待待;若無此位元遮罩,則 joinshred將等待一共享資源線程終止。多重joinshred需 在多重共享資源線程上等待〃 在一選擇性實施例中,不使用 killshred,而利用 joinshred 所緊隨的 signalshred 來取代 killshred,該 signalshred 處理器包含haltshred指令。 在又一實施例中,可組合forkshred及signalshred; 關於是否共享資源線程目前正運轉或暫停,該forkshred 0及signalshred僅相異於其行爲;若允許signalshred起始 —暫停之共享資源線程,則signalshred可潛在地置換 forkshred » 第7圖描縮根據本發明一實施例之使用者層級多線程 的代表性方法之流程圖;假定一應用或軟體程式初始下列 方法,該下列方法並不結合任一特定程式來描述,而是取 代地爲藉上述之指令及架構所達成之使用者層級多線程的 一實施例:此外,下列方法係結合諸如多處理器之微處理 器的ISA而執行,不論是否爲16,32,64,128或更高的 -61 - (58) 1321749 位元架構;多處理器(諸如處理器105)初始化共享暫存 器中之値,例如上文表3之該等暫存器(處理方塊7 05 ) ,處理器105執行forkshred指令而產生共享資源線程( 處理方塊710),同時操作係由處理器105執行,主要( 根源)共享資源線程由處理器105執行(處理方塊715 ) ,結合共享資源線程操作係執行而等待新的目的共享資源 線程以完成執行(處理方塊7 30 ),同時,新的目的共享 φ 資源線程將初始化其堆疊,檢索來自共享暫存器及/或記 憶體之輸入參數(處理方塊720)以及執行(處理方塊 721),目前之目的共享資源線程之執行係利用haltshred 指令終止(處理方塊72 3 ),處理器105從其中儲存該共 享資源線程之結果的該等暫存器轉回執行結果至程式或應 用(處理方塊735),一旦所有經執行之資料轉回時,該 方法完成(處理方塊799 ) 揭示一種提供使用者層級多線程之方法以及系統,雖 φ然本發明之實施例已就特定實例及子系統予以描述,但將 呈明顯於該等熟習於本項技術之一般人士的是,本發明之 實施例並未受限於該等特定之實例或子系統,而是亦可擴 充至其他實施例,本發明之實施例包含如下文申請專利範 圍中所指定之所有該等其他的實施例。 【圖式簡單說明】 本發明之實施例將從下文結合附圖之詳細說明而更完 全地瞭解及理解,其中 -62- (59) 1321749 第1圖描繪根據本發明一實施例之利用本發明方法及 裝置之代表性電腦系統的方塊圖; 第2圖描繪根據本發明一實施例之代表性的晶片層級 多處理器; 第3圖描繪根據本發明一實施例之代表性的同時多線 程之處理器; 第4圖描繪根據本發明一實施例之代表性的非對稱多 φ 處理器; 第5圖描繪根據本發明一實施例之用以提供使用者層 級多線程代表性執行環境; 第6圖描繪根據本發明一實施例之共享資源線程與共 享記憶體線程間之代表性關係:以及 第7圖描繪根據本發明一實施例之使用者層級多線程 之代表性方法的流程圖。 φ 【主要元件之符號說明】 100 :電腦系統 105 , 300 :處理器 11 〇 :晶片組 11 5 :圖形及記憶體控制插座 1 2 0 :主記憶體 125 :高級圖形埠(AGP)控制器 135 : I/O控制器插座(ICH ) 140 :系統管理匯流排(SM Bus ) -63- (60)1321749
155 : 170 : 175: 2 00 : 195 : 2 10: 2 0 5 : 220 -400 : 6 00 : 6 5 0 - 7 05 > 方塊 週邊組件互連(PCI )匯流排 超級I / 0 ( _' S I D ")控制器 鍵盤及滑鼠 USB埠 通用型I/O ( GPIO )匯流排 IDE驅動器 積體驅動器電子裝置(I D E )匯流排 213,310,410-427: CPU 芯 2 2 3 :線程 非對稱多處理器 執行環境 660,615 :暫存器 710 , 715 , 720 , 721 , 723 , 730 , 735 , 799 :
-64-

Claims (1)

1321749 » * 97. 3,7 'Π 年月曰修正 十、申請專利範圍 附件从: 第941 1 0320號專利申請案 中文申請專利範圍替換本 民國97年3月7日修正 1· 一種提供使用者層級多線程之方法,包含: 遭遇一非特權使用者層級之程式化指令;
產生第一共享資源線程(shred )以回應該程式化指令 ’該第一共享資源線程係與第一應用狀態的第一私用部分 相關聯,並與至少一第二共享資源線程共享該第一應用狀 態的第二共享部分,其中該第一應用狀態係爲第一線程的 一私用應用狀態,其中產生該第一共享資源線程無需作業 系統之介入而執行:以及 與至少該第二共享資源線程同時地執行該第一共享資 源線程’以回應該程式化指令。 2. 如申請專利範圍第1項之方法,其中一應用狀態 φ 的該第一私用部分係與複數個暫存器中的至少一者相關聯 ’該複數個暫存器包括通用暫存器、浮點暫存器、MMX 暫存器、分段暫存器、旗標暫存器、指令指標、控制及狀 態暫存器、SSE暫存器、和MXCSR暫存器。 3. 如申請專利範圍第1項之方法,其中該第一線程 包括第一作業系統產生之線程,以執行第一處理。 4.如申請專利範圍第3項之方法,更包含: 產生第二作業系統產生之線程以執行第二處理,以回 應一特權非使用者層級程式化指令,該第二作業系統產生
1321749 之線程係與第二應用狀態相關聯;以及 產生第三共享資源線程,以回應遭遇與該第 關聯之第二非特權使用者層級程式化指令,其中 享資源線程係與該第二應用狀態的一共享部分和 分相關聯, 其中該第二作業系統產生之線程和該第三共 程並未共享該第一應用狀態的一部分。 5·如申請專利範圍第1項之方法,其中該 資源線程和該第二共享資源線程係共享一目前特 及共享一共同位址轉譯。 6.如申請專利範圍第1項之方法,更包含 非特權使用者層級程式化指令,該程式化指令編 資源線程。 7.如申請專利範圍第1項之方法,更包含 一共享資源線程和該第二共享資源線程之間通訊 8 ·如申請專利範圍第1項之方法,更包含 至少該第一和第二共享資源線程之間的一系統狀 9.如申請專利範圍第7項之方法,其中該 由一或多個共享暫存器而執行。 10·如申請專利範圍第1項之方法,更包含 第一共享資源線程和該第二共享資源線程而無需 統之介入,以回應一使用者層級程式化指令。 11.如申請專利範圍第7項之方法,其中該 由一使用者層級共享資源線程發訊指令而執行。 二處理相 該第三共 一私用部 享資源線 第一共享 權層級以 -接收~ 碼一共享 :在該第 〇 • 共享在 護。 通訊係經 :排程該 該作業系 通訊係經 1321749 12.如申請專利範圍第11項之方法,更包含:將該 第一應用狀態的至少該第一私用部分儲存在一記憶體中, 以回應一上下文切換請求之接收。 13. 如申請專利範圍第1項之方法,更包含:藉使用 者層級例外處置器碼來處理該第一共享資源線程之執行期 間所產生之例外,無需該作業系統之介入。 14. 如申請專利範圍第13項之方法,更包含:
接收來自一應用程式的該例外;以及 決定是否報告該例外至該作業系統。 15. 如申請專利範圍第1項之方法,其中該共享資源 線程用以執行輸入/輸出(I/O )操作。 16. 如申請專利範圍第1項之方法,其中該第一和第 二共享資源線程用以執行運算功能。 17. —種提供使用者層級多線程之裝置,包含: 執行資源,用以執行複數個指令; 該等執行資源用以接收一非特權使用者指令; 該等執行資源進一步用以與至少一第二共享資源線程 同時地執行第一共享資源線程(shred),以回應該經接收 之指令;以及 一共享暫存器,可由一使用者層級指令而定址,該共 享暫存器可由至少該第一共享資源線程和該第二共享資源 線程直接地存取,以提供該第一共享資源線程和該第二共 享資源線程之間的通訊。 18.如申請專利範圍第17項之裝置,其中該共享暫 -3- 1321749 存器包含致能一作業系統或BIOS之第一暫存器,以致能 用於使用者層級多線程之多線程架構延伸。 19. 如申請專利範圍第17項之裝置,其中該共享暫 存器包含自動地更新以同步化該第一和第二共享資源線程 之間的資料之第一暫存器。 20. 如申請專利範圍第〗7項之裝置,其中該等執行 資源包括能夠同時地執行多個共享資源線程之一或多個處 理器核心。 21_如申請專利範圍第17項之裝置,其中該共享暫 存器用以保持該第一共享資源線程和該第二共享資源線程 之間所共旱之一狀態的至少一部分。 - 22·如申請專利範圍第17項之裝置,其中該第一共 享資源線程和該第二共享資源線程係共享一目前特權層級 以及共享一共同位址轉譯。 23·如申請專利範圍第17項之裝置,更包含用以執 • 行一使用者層級指令以產生該第一共享資源線程之邏輯。 24·如申請專利範圍第17項之裝置,其中該共享暫 存器包含第一暫存器,其用來作爲信號通知之暫存器,用 以同步化該第一和第二共享資源線程之間的資料。 2 5.如申請專利範圍第1 7項之裝置,更包含:—組 暫存器’用以共享該第一共享資源線程和該第二共享資源 線程之間的一系統狀態。 26.如申請專利範圍第17項之裝置,更包含:未包 括該共享暫存器的一組暫存器,用以保持一狀態的一私用 -4- 1321749 部分係與該第一共享資源線程相關聯。 27.如申請專利範圍第17項之裝置,更包含:一使 用者層級例外機構,用以報告一例外至該第一共享資源線 程。 2 8.如申請專利範圍第1 7項之裝置,更包含:一例 外機構,用以報告一例外至一作業系統。 29.如申請專利範圍第27項之裝置,更包含:
用以偵測與該第一共享資源線程相關聯的第一例外以 及與該第二共享資源線程相關聯的第二例外之機構; 其中該例外機構包括一優先序裝置,用以排定該第一 和第二例外之優先順序; 且其中該例外機構進一步用以一次僅報告該等優先之 第一和第二例外之一者至該作業系統。 3 〇 · —種提供使用者層級多線程之製品,包含:
包括資料之一機器可存取媒體,當由一機器存取該資 料時,致使該機器執行以下操作,包含: 接收使用者層級程式化指令,以執行複數個使用者層 級之執行線程,其中該複數個使用者層級之執行線程的各 個係與一0S產生線程的一私用狀態相關聯,並與該〇s 產生線程共享一系統狀態;以及 在該機器中的一處理器之多個指令排序器上,同時地 執行該複數個使用者層級之執行線程。 3 1 .如申請專利範圍第3 0項之製品,其中該私用狀 態係與複數個暫存器中的至少一者相關聯,該複數個暫存 -5- 1321749 器包括通用暫存器、浮點暫存器、MMX暫存器、分段暫 存器、旗標暫存器、指令指標、控制及狀態暫存器、SSE 暫存器、和MXCSR暫存器。
3 2 .如申請專利範圍第3 0項之製品,其中該私用狀 態包括一應用狀態的一私用部分,且其中該複數個使用者 層級之執行線程亦用以共享該應用狀態的一共享部分,該 應用狀態的該共享部分係與複數個暫存器中的至少一者相 關聯,該複數個暫存器包括控制暫存器、旗標暫存器、記 憶體管理暫存器、局部描述表暫存器、任務暫存器、除錯 暫存器、模型特定暫存器、共享暫存器、和共享資訊線程 控制暫存器。 3 3 .如申請專利範圍第3 0項之製品,其中該機器可 存取媒體更包括資料,其致使該機器執行以下操作,包含 共享該複數個使用者層級之執行線程之間的一狀態;
儲存該狀態在一或多個暫存器中。 34.如申請專利範圍第30項之製品,其中該複數個 使用者層級之執行線程共享一目前特權層級以及共享一共 同位址轉譯。 35. 如申請專利範圍第3 0項之製品,其中該使用者 層級程式化指令包括:一指令,以產生該複數個使用者層 級之執行線程中的一或多個。 36. 如申請專利範圍第30項之製品,其中該機器可 -6- 1321749 1 · 存取媒體更包括資料,其致使該機器執行以下操作,包含 :在該複數個使用者層級之執行線程之間通訊。 37.如申請專利範圍第3 0項之製品,其中該機器可 存取媒體更包括資料,其致使該機器執行以下操作,包含 :共享在該複數個使用者層級之執行線程之間的一系統狀 態。
38.如申請專利範圍第30項之製品,其中該機器可 存取媒體更包括資料,其致使該機器執行以下操作,包含 :經由一或多個共享暫存器,在該複數個使用者層級之執 行線程之間通訊。 39.如申請專利範圍第3 0項之製品,其中一應用程 式直接地控制該複數個使用者層級之執行線程,包括排程 該複數個使用者層級之執行線程,且其中該機器所執行的 —作業系統排程該OS產生線程。 40.如申請專利範圍第30項之製品,其中該機器可 φ 存取媒體更包括資料,其致使該機器執行以下操作,包含 將該複數個使用者層級之執行線程與該OS產生線程 相關聯;以及 當經由該複數個執行線程之一者接收一上下文切換請 求時,懸置屬於該〇S產生線程的該複數個使用者層級之 執行線程。 41.如申請專利範圍第40項之製品,其中該機器可 存取媒體更包括資料,其致使該機器執行以下操作,包含 1321749 :當接收該上下文切換請求時,儲存與該複數個使用者層 級之執行線程相關聯的一或多個執行線程狀態。 42. 如申請專利範圍第30項之製品,其中該機器可 存取媒體更包括資料,其致使該機器執行以下操作,包含 :報告一或多個例外至該複數個使用者層級之執行線程的 第一使用者層級線程。 43. 如申請專利範圍第42項之製品,其中該機器可 φ 存取媒體更包括資料,其致使該機器執行以下操作,包含 報告來自一應用程式的該一或多個例外;以及 決定是否報告該一或多個例外至一作業系統。 44·如申請專利範圍第43項之製品,其中該機器可 存取媒體更包括資料,其致使該機器執行以下操作,包含 :優先報告該一或多個例外至該作業系統;其包含:
經由該複數個使用者層級之執行線程的不同使用者層 級線程’同時地接收該一或多個例外;以及 當懸置該一或多個例外的其他例外之例外處理時,根 據該優先報告而服務該一或多個例外中之一者。 45.如申請專利範圍第3〇項之製品,其中該複數個 使用者層級之執行線程係執行輸入/輸出(I/O )功能和運 算功能。 46·—種提供使用者層級多線程之系統,包含: 一微處理器,包括複數個使用者層級多線程之暫存器 其中該等暫存器可由複數個使用者層級線程之各個中的 -8- 1321749 一或多個使用者層級指令而定址,並用以支援該等使用者 層級線程之間的通訊;以及 耦接至該微處理器的記憶體,該記憶體用以儲存該一 或多個使用者層級指令; 其中該微處理器進一步用以同時地執行該等使用者層 級線程。
47. 如申請專利範圍第46項之系統,其中該複數個 使用者層級多線程之暫存器更包含:複數個共享之共享資 源線程暫存器,用以幫助複數個共享資源線程之間的通訊 ,以及用以幫助該複數個共享資源線程之間的同步化。 48. 如申請專利範圍第47項之系統,其中該複數個 使用者層級多線程之暫存器更包含:複數個共享資源線程 控制暫存器,用以管理該複數個共享資源線程。 4 9 ·如申請專利範圍第4 8項之系統,其中該微處理 器: 接收程式化指令,以根據指令組合架構(ISA )執行 一或多個共享資源線程; 經由該ISA而組態一或多個指令排序器;以及 同時地執行該一或多個共享資源線程。 50.如申請專利範圍第46項之系統,其中該記憶體 係來自包括DRAM、快閃記憶體、和EEPROM之複數個記 億體裝置。 51. —種提供使用者層級多線程之裝置,包含: 一處理器,能夠用於使用者層級多線程,包括: -9- 1321749 第一組資源,用以保持藉由第一使用者層級指令 產生的第一共享資源線程之每個共享資源線程(shred)應 用狀態; 第二組資源,其包括該第一組資源的複製,用以 保持藉由第二使用者層級指令產生的第二共享資源線程之 每個共享資源線程應用狀態;以及
第三組資源,由該第一共享資源線程和該第二共 享資源線程所共享,用以保持一共享應用狀態,該共享應 用狀態係由一特權層級軟體實體產生之線程而共享; 其中該第一、第二、和第三組資源對另一特權層 級軟體實體產生之線程係爲私用的;以及 執行資源,用以同時地執行該第一共享資源線程 和該第二共享資源線程。 52.如申請專利範圍第51項之裝置,其中:該第一 組資源、該第二組資源、和該第三組資源包括暫存器,且 φ 其中該第一使用者層級指令和該第二使用者層級指令係爲 指令組合架構(ISA )指令,用以產生一共享資源線程, 其係分別地與第一使用者軟體實體和第二使用者軟體實體 相關聯》 53.如申請專利範圍第52項之裝置,更包含:一硬 體再命名器’用以基於一位元向量來配置該第一組暫存器 作爲私用暫存器,以及配置該第三組暫存器作爲共享暫存 器。 54.如申請專利範圍第51項之裝置,其中由該特權 -10- 1321749 層級軟體實體線程所共享的該應用狀態未與其他特權層級 軟體實體線程共享,且其中該特權層級軟體實體係爲一作 業系統(os)。
55.如申請專利範圍第51項之裝置,其中該第二組 資源係爲該第一組資源的拷貝,且其中該第一組資源包括 選自一群組的資源之組合,該群組係由通用暫存器、浮點 暫存器、SSE暫存器、指令指標、和旗標所組成,且其中 該第三組資源包括選自一群組的資源之組合,該群組係由 通用暫存器、浮點暫存器、共享通訊暫存器、旗標、記憶 體管理暫存器、位址轉譯表、特權層級、和控制暫存器所 組成。
-11 -
TW094110320A 2004-03-31 2005-03-31 Method, apparatus, article of manufacture and system to provide user-level multithreading TWI321749B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/816,103 US9189230B2 (en) 2004-03-31 2004-03-31 Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution

Publications (2)

Publication Number Publication Date
TW200602971A TW200602971A (en) 2006-01-16
TWI321749B true TWI321749B (en) 2010-03-11

Family

ID=34964349

Family Applications (1)

Application Number Title Priority Date Filing Date
TW094110320A TWI321749B (en) 2004-03-31 2005-03-31 Method, apparatus, article of manufacture and system to provide user-level multithreading

Country Status (6)

Country Link
US (7) US9189230B2 (zh)
JP (8) JP4949231B2 (zh)
CN (2) CN102779024B (zh)
DE (1) DE112005000706B4 (zh)
TW (1) TWI321749B (zh)
WO (1) WO2005098624A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI569205B (zh) * 2012-08-31 2017-02-01 威盛電子股份有限公司 一種微處理器及其操作方法

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9189230B2 (en) 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
US7810083B2 (en) * 2004-12-30 2010-10-05 Intel Corporation Mechanism to emulate user-level multithreading on an OS-sequestered sequencer
US8719819B2 (en) * 2005-06-30 2014-05-06 Intel Corporation Mechanism for instruction set based thread execution on a plurality of instruction sequencers
US8010969B2 (en) 2005-06-13 2011-08-30 Intel Corporation Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers
US20070079294A1 (en) * 2005-09-30 2007-04-05 Robert Knight Profiling using a user-level control mechanism
US8028295B2 (en) 2005-09-30 2011-09-27 Intel Corporation Apparatus, system, and method for persistent user-level thread
US8205200B2 (en) * 2005-11-29 2012-06-19 Intel Corporation Compiler-based scheduling optimization hints for user-level threads
US8079035B2 (en) * 2005-12-27 2011-12-13 Intel Corporation Data structure and management techniques for local user-level thread data
US8973094B2 (en) * 2006-05-26 2015-03-03 Intel Corporation Execution of a secured environment initialization instruction on a point-to-point interconnect system
US7406407B2 (en) * 2006-06-01 2008-07-29 Microsoft Corporation Virtual machine for operating N-core application on M-core processor
US7773090B1 (en) * 2006-06-13 2010-08-10 Nvidia Corporation Kernel mode graphics driver for dual-core computer system
US8468526B2 (en) * 2006-06-30 2013-06-18 Intel Corporation Concurrent thread execution using user-level asynchronous signaling
US8607228B2 (en) 2006-08-08 2013-12-10 Intel Corporation Virtualizing performance counters
US8028290B2 (en) 2006-08-30 2011-09-27 International Business Machines Corporation Multiple-core processor supporting multiple instruction set architectures
US7768518B2 (en) * 2006-09-27 2010-08-03 Intel Corporation Enabling multiple instruction stream/multiple data stream extensions on microprocessors
US8190982B2 (en) * 2006-09-29 2012-05-29 University Of Connecticut Error-tolerant multi-threaded memory systems with reduced error accumulation
US8689215B2 (en) * 2006-12-19 2014-04-01 Intel Corporation Structured exception handling for application-managed thread units
US8161284B1 (en) 2006-12-28 2012-04-17 Perftech, Inc. System, method and computer readable medium for message authentication to subscribers of an internet service provider
US8074274B2 (en) * 2006-12-29 2011-12-06 Intel Corporation User-level privilege management
US9003410B2 (en) * 2007-01-30 2015-04-07 Hewlett-Packard Development Company, L.P. Abstracting a multithreaded processor core to a single threaded processor core
US20080229062A1 (en) * 2007-03-12 2008-09-18 Lorenzo Di Gregorio Method of sharing registers in a processor and processor
US20080320475A1 (en) * 2007-06-19 2008-12-25 Microsoft Corporation Switching user mode thread context
US8966488B2 (en) * 2007-07-06 2015-02-24 XMOS Ltd. Synchronising groups of threads with dedicated hardware logic
US7743193B2 (en) 2007-10-31 2010-06-22 Tpk Touch Solutions Inc. Logic gateway circuit for bus that supports multiple interrupt request signals
US7996663B2 (en) * 2007-12-27 2011-08-09 Intel Corporation Saving and restoring architectural state for processor cores
US8321840B2 (en) * 2007-12-27 2012-11-27 Intel Corporation Software flow tracking using multiple threads
US8359589B2 (en) * 2008-02-01 2013-01-22 International Business Machines Corporation Helper thread for pre-fetching data
US8707016B2 (en) * 2008-02-01 2014-04-22 International Business Machines Corporation Thread partitioning in a multi-core environment
US8601241B2 (en) * 2008-02-01 2013-12-03 International Business Machines Corporation General purpose register cloning
US8775778B2 (en) * 2008-02-01 2014-07-08 International Business Machines Corporation Use of a helper thread to asynchronously compute incoming data
US7559061B1 (en) 2008-03-16 2009-07-07 International Business Machines Corporation Simultaneous multi-threading control monitor
US20100153934A1 (en) * 2008-12-12 2010-06-17 Peter Lachner Prefetch for systems with heterogeneous architectures
US9785462B2 (en) 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
US8356130B2 (en) 2009-08-14 2013-01-15 Advanced Micro Devices, Inc. Mechanism for recording undeliverable user-level interrupts
US9367462B2 (en) * 2009-12-29 2016-06-14 Empire Technology Development Llc Shared memories for energy efficient multi-core processors
US9141422B2 (en) 2010-05-18 2015-09-22 Microsoft Technology Licensing, Llc Plug-in task scheduler
WO2012046302A1 (ja) * 2010-10-05 2012-04-12 富士通株式会社 マルチコアプロセッサシステム、監視制御方法、および監視制御プログラム
US9292470B2 (en) * 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9336180B2 (en) * 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US8671309B2 (en) * 2011-07-01 2014-03-11 Intel Corporation Mechanism for advanced server machine check recovery and associated system software enhancements
US10083152B1 (en) 2012-01-27 2018-09-25 Open Invention Network Llc Virtualized multicore systems with extended instruction heterogeneity
US20140095847A1 (en) * 2012-09-28 2014-04-03 Doron Orenstein Instruction and highly efficient micro-architecture to enable instant context switch for user-level threading
CN104375887B (zh) * 2013-08-16 2019-06-25 联想(北京)有限公司 一种信息处理方法及电子设备
CN104461730B (zh) * 2013-09-22 2017-11-07 华为技术有限公司 一种虚拟资源分配方法及装置
CN103473134B (zh) * 2013-09-23 2016-08-17 哈尔滨工程大学 一种异构多核处理器的依赖任务调度方法
US9898330B2 (en) * 2013-11-11 2018-02-20 Intel Corporation Compacted context state management
US9921848B2 (en) * 2014-03-27 2018-03-20 International Business Machines Corporation Address expansion and contraction in a multithreading computer system
US9218185B2 (en) * 2014-03-27 2015-12-22 International Business Machines Corporation Multithreading capability information retrieval
US9223574B2 (en) * 2014-03-27 2015-12-29 International Business Machines Corporation Start virtual execution instruction for dispatching multiple threads in a computer
US9213569B2 (en) * 2014-03-27 2015-12-15 International Business Machines Corporation Exiting multiple threads in a computer
US9621650B2 (en) * 2014-09-30 2017-04-11 Google Inc Mobile application state identifier framework
US9569127B2 (en) 2014-12-29 2017-02-14 International Business Machines Corporation Computer instructions for limiting access violation reporting when accessing strings and similar data structures
US9703721B2 (en) 2014-12-29 2017-07-11 International Business Machines Corporation Processing page fault exceptions in supervisory software when accessing strings and similar data structures using normal load instructions
US9747108B2 (en) * 2015-03-27 2017-08-29 Intel Corporation User-level fork and join processors, methods, systems, and instructions
US9734000B2 (en) * 2015-06-18 2017-08-15 Microsoft Technology Licensing, Llc Seamless transitions between applications and devices
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US11120106B2 (en) * 2016-07-30 2021-09-14 Endgame, Inc. Hardware—assisted system and method for detecting and analyzing system calls made to an operating system kernel
US10437593B2 (en) * 2017-04-27 2019-10-08 Nvidia Corporation Techniques for comprehensively synchronizing execution threads
CN108171862B (zh) * 2018-01-08 2021-03-09 北京值得买科技股份有限公司 一种发号方法及发号器
GB2580327B (en) * 2018-12-31 2021-04-28 Graphcore Ltd Register files in a multi-threaded processor
US11194815B1 (en) * 2019-02-11 2021-12-07 Amazon Technologies, Inc. Constrained query execution
CN110597606B (zh) * 2019-08-13 2022-02-18 中国电子科技集团公司第二十八研究所 一种高速缓存友好的用户级线程调度方法
US11080051B2 (en) * 2019-10-29 2021-08-03 Nvidia Corporation Techniques for efficiently transferring data to a processor
DE102020127704A1 (de) 2019-10-29 2021-04-29 Nvidia Corporation Techniken zum effizienten transferieren von daten an einem prozessor
US20210157512A1 (en) * 2021-02-02 2021-05-27 Intel Corporation Flexible configuration of storage device with translation language set
CN113485811A (zh) * 2021-07-23 2021-10-08 平安科技(深圳)有限公司 计算任务管理方法、装置、计算机设备及存储介质

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH087867B2 (ja) 1987-07-06 1996-01-29 セイコーエプソン株式会社 光記憶再生装置
JP2973480B2 (ja) 1990-06-29 1999-11-08 日本電気株式会社 通信レジスタ多重化方式
JPH0464864A (ja) 1990-07-03 1992-02-28 Akira Sato 風呂釜における湯の逆流防止装置
JPH05204656A (ja) * 1991-11-30 1993-08-13 Toshiba Corp スレッド固有データ保持方法
JPH0623459A (ja) 1992-07-08 1994-02-01 Sumitomo Electric Ind Ltd ばね成形性に優れた鋼線の製造方法。
US5485626A (en) 1992-11-03 1996-01-16 International Business Machines Corporation Architectural enhancements for parallel computer systems utilizing encapsulation of queuing allowing small grain processing
US5414740A (en) 1992-12-17 1995-05-09 International Business Machines Corporation Synchronous communication system having multiplexed information transfer and transition phases
JP3585510B2 (ja) * 1993-07-20 2004-11-04 株式会社東芝 プログラム実行管理装置及びプログラム実行管理方法
US5481706A (en) 1993-11-01 1996-01-02 International Business Machines Corporation System and method for creating thread-safe shared libraries
GB2290395B (en) * 1994-06-10 1997-05-28 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5638525A (en) 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
US5845129A (en) * 1996-03-22 1998-12-01 Philips Electronics North America Corporation Protection domains in a single address space
US5991790A (en) * 1996-07-01 1999-11-23 Sun Microsystems, Inc. Generation and delivery of signals in a two-level, multithreaded system
JP2970553B2 (ja) * 1996-08-30 1999-11-02 日本電気株式会社 マルチスレッド実行方法
US6418460B1 (en) 1997-02-18 2002-07-09 Silicon Graphics, Inc. System and method for finding preempted threads in a multi-threaded application
US6463527B1 (en) 1997-03-21 2002-10-08 Uzi Y. Vishkin Spawn-join instruction set architecture for providing explicit multithreading
US6324623B1 (en) * 1997-05-30 2001-11-27 Oracle Corporation Computing system for implementing a shared cache
US6658447B2 (en) 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US6233599B1 (en) 1997-07-10 2001-05-15 International Business Machines Corporation Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers
US6009522A (en) 1997-09-30 1999-12-28 Micron Electronics, Inc. Attachment or integration of a BIOS device into a computer system using the system memory data bus
US6223208B1 (en) * 1997-10-03 2001-04-24 International Business Machines Corporation Moving data in and out of processor units using idle register/storage functional units
US6438679B1 (en) * 1997-11-03 2002-08-20 Brecis Communications Multiple ISA support by a processor using primitive operations
US6079010A (en) * 1998-03-31 2000-06-20 Lucent Technologies Inc. Multiple machine view execution in a computer system
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6330584B1 (en) 1998-04-03 2001-12-11 Mmc Networks, Inc. Systems and methods for multi-tasking, resource sharing and execution of computer instructions
GB2338094B (en) 1998-05-27 2003-05-28 Advanced Risc Mach Ltd Vector register addressing
US6378067B1 (en) * 1998-10-12 2002-04-23 Idea Corporation Exception reporting architecture for SIMD-FP instructions
US6243860B1 (en) * 1998-10-30 2001-06-05 Westinghouse Electric Company Llc Mechanism employing a memory area for exchanging information between a parent process and a child process compiled during execution of the parent process or between a run time compiler process and an application process
US6622155B1 (en) * 1998-11-24 2003-09-16 Sun Microsystems, Inc. Distributed monitor concurrency control
JP3604029B2 (ja) 1999-01-12 2004-12-22 日本電気株式会社 マルチスレッドプロセッサ
JP3790653B2 (ja) 1999-04-19 2006-06-28 松下電器産業株式会社 共有メモリアクセス管理装置
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
EP1050798A1 (en) * 1999-05-03 2000-11-08 STMicroelectronics SA Decoding instructions
US6507862B1 (en) 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor
US7051329B1 (en) 1999-12-28 2006-05-23 Intel Corporation Method and apparatus for managing resources in a multithreaded processor
US7480706B1 (en) * 1999-12-30 2009-01-20 Intel Corporation Multi-threaded round-robin receive for fast network port
US6567091B2 (en) 2000-02-01 2003-05-20 Interactive Silicon, Inc. Video controller system with object display lists
US6952751B1 (en) 2000-04-07 2005-10-04 Advanced Micro Devices, Inc. Method and apparatus for extending legacy computer systems
US20020069402A1 (en) * 2000-10-05 2002-06-06 Nevill Edward Colles Scheduling control within a system having mixed hardware and software based instruction execution
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
GB2372348B (en) * 2001-02-20 2003-06-04 Siroyan Ltd Context preservation
US6976155B2 (en) * 2001-06-12 2005-12-13 Intel Corporation Method and apparatus for communicating between processing entities in a multi-processor
JP3702815B2 (ja) * 2001-07-12 2005-10-05 日本電気株式会社 プロセッサ間レジスタ継承方法及びその装置
US6954846B2 (en) * 2001-08-07 2005-10-11 Sun Microsystems, Inc. Microprocessor and method for giving each thread exclusive access to one register file in a multi-threading mode and for giving an active thread access to multiple register files in a single thread mode
US8769508B2 (en) * 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
US20030126416A1 (en) * 2001-12-31 2003-07-03 Marr Deborah T. Suspending execution of a thread in a multi-threaded processor
US7398374B2 (en) * 2002-02-27 2008-07-08 Hewlett-Packard Development Company, L.P. Multi-cluster processor for processing instructions of one or more instruction threads
US7313676B2 (en) * 2002-06-26 2007-12-25 Intel Corporation Register renaming for dynamic multi-threading
US7519800B2 (en) * 2003-03-27 2009-04-14 Hewlett-Packard Development Company, L.P. Apparatus and method for enforcing homogeneity within partitions of heterogeneous computer systems
US7376954B2 (en) * 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
US7707389B2 (en) 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
US9189230B2 (en) 2004-03-31 2015-11-17 Intel Corporation Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution
US7260702B2 (en) * 2004-06-30 2007-08-21 Microsoft Corporation Systems and methods for running a legacy 32-bit x86 virtual machine on a 64-bit x86 processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI569205B (zh) * 2012-08-31 2017-02-01 威盛電子股份有限公司 一種微處理器及其操作方法

Also Published As

Publication number Publication date
JP2012160202A (ja) 2012-08-23
DE112005000706T5 (de) 2007-02-15
US20130111194A1 (en) 2013-05-02
US20180225117A1 (en) 2018-08-09
CN1938686A (zh) 2007-03-28
JP2007531167A (ja) 2007-11-01
JP2017027627A (ja) 2017-02-02
JP2012094175A (ja) 2012-05-17
US20180321936A1 (en) 2018-11-08
JP2014112438A (ja) 2014-06-19
US20180307484A1 (en) 2018-10-25
US9442721B2 (en) 2016-09-13
WO2005098624A1 (en) 2005-10-20
JP2015015041A (ja) 2015-01-22
JP2014222533A (ja) 2014-11-27
CN102779024A (zh) 2012-11-14
TW200602971A (en) 2006-01-16
CN1938686B (zh) 2012-06-13
US9952859B2 (en) 2018-04-24
US9189230B2 (en) 2015-11-17
US20050223199A1 (en) 2005-10-06
JP2018200735A (ja) 2018-12-20
US10585667B2 (en) 2020-03-10
US10635438B2 (en) 2020-04-28
US10613858B2 (en) 2020-04-07
CN102779024B (zh) 2016-09-28
US10628153B2 (en) 2020-04-21
US20180225118A1 (en) 2018-08-09
US20160216971A1 (en) 2016-07-28
JP4949231B2 (ja) 2012-06-06
DE112005000706B4 (de) 2011-02-17

Similar Documents

Publication Publication Date Title
TWI321749B (en) Method, apparatus, article of manufacture and system to provide user-level multithreading
US10521357B1 (en) Computing in parallel processing environments
Waterman et al. The RISC-V instruction set manual volume II: Privileged architecture version 1.7
US7849297B2 (en) Software emulation of directed exceptions in a multithreading processor
US9032404B2 (en) Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor
US7676664B2 (en) Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US7870553B2 (en) Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
EP2430533A1 (en) Diagnose instruction for serializing processing
TW202305609A (zh) 用於多租戶可縮放加速器的高效尋頁錯失處置的方法與設備
GB2491292A (en) Power-saving suspension of instruction stream in processor
Case What’s next for Microprocessor Design
CN114489793A (zh) 通过应用直接编程的用户定时器
CN116893894A (zh) 同步微线程化

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees