TWI243333B - Architecture to support multiple concurrent execution contexts on a processor - Google Patents
Architecture to support multiple concurrent execution contexts on a processor Download PDFInfo
- Publication number
- TWI243333B TWI243333B TW092114904A TW92114904A TWI243333B TW I243333 B TWI243333 B TW I243333B TW 092114904 A TW092114904 A TW 092114904A TW 92114904 A TW92114904 A TW 92114904A TW I243333 B TWI243333 B TW I243333B
- Authority
- TW
- Taiwan
- Prior art keywords
- thread
- processing
- threads
- register
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 claims description 48
- 238000012545 processing Methods 0.000 claims description 41
- 230000008569 process Effects 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 5
- 230000008014 freezing Effects 0.000 claims 5
- 238000007710 freezing Methods 0.000 claims 5
- 230000003321 amplification Effects 0.000 claims 3
- 238000003199 nucleic acid amplification method Methods 0.000 claims 3
- 230000003416 augmentation Effects 0.000 claims 2
- 238000003672 processing method Methods 0.000 claims 1
- 239000002689 soil Substances 0.000 claims 1
- 210000002784 stomach Anatomy 0.000 claims 1
- 238000005516 engineering process Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 239000000463 material Substances 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 5
- KDYFGRWQOYBRFD-UHFFFAOYSA-N succinic acid Chemical compound OC(=O)CCC(O)=O KDYFGRWQOYBRFD-UHFFFAOYSA-N 0.000 description 4
- 230000004888 barrier function Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 206010011469 Crying Diseases 0.000 description 1
- ATJFFYVFTNAWJD-UHFFFAOYSA-N Tin Chemical compound [Sn] ATJFFYVFTNAWJD-UHFFFAOYSA-N 0.000 description 1
- 239000002253 acid Substances 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 125000004106 butoxy group Chemical group [*]OC([H])([H])C([H])([H])C(C([H])([H])[H])([H])[H] 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000001037 epileptic effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000008267 milk Substances 0.000 description 1
- 210000004080 milk Anatomy 0.000 description 1
- 235000013336 milk Nutrition 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
- Power Sources (AREA)
Description
Ϊ243333 敌、發明說明: 【發明所屬之技術領域】 :發明係關於同時控制和支援多個硬體本文 令隹加槿ΓΪ 稱作指令集架構。該指 見二:2 分’―部分為在該電腦上執行程式之可 ::ΠΓ為架構可見狀態;另—部分為改變此狀態 可為電腦執行之指令。架構可見狀態大體 常狀態··-種狀態主要用於組態電腦且該狀態通 ”系統相關’另—種狀態用於電腦上執行之應用 Γ步而言’在後—種狀態中,存在一子集(亦稱作 又),母-運作於該電腦上之應用程式皆可採用該子集 ^子集專門用於該應用程式。本文包括一指示接下來將 又出哪一指令的指#,其亦稱作程式計數器。 【先前技術】 通常,一電腦之中央處理器(CPU)僅執行一個本文。因 此’在一典型電腦上,一次僅一個程式能夠發出指令。為 支援多程式同時運作,一作業系統通常僅運作每一程式一 j &時間,咸時間段被稱作一時間片(通常為幾毫秒),暫 停茲程式之執行,將該程式之本文保存到CPU之外的一儲 存位置,將另一程式之文本載入CPU,開始運作新程式直 至新程式之時間片期滿,然後重複此過程。此乃吾人習知 之多任務處理。 【發明内容】 一電腦之CPU中可執行多個本文,此一技術允許硬體發
85797.DOC -6 - .1243333 將r夕個私式〈指令且不受作業系統之干涉’且亦無需 文1本文保存或再儲存至cpu外面的存儲位置。每一本 ^目關指令皆實質上獨立執行且不直接影響執行來自任 二它本文之指令,除非藉由共享資源。單一CPU可支援 =多本文指令且不受作業系統干涉之能力已習知為硬 =執仃緒技術。該名稱(硬體多執行緒技術)來源於將 CPU執行之每―本文稱作-執行緒。 =多執行緒技術可用於:制CPU中極短暫的非活動 县!和需花費很長時間方可完成之作業效果(亦即,一很 本_飞争時間)’或増加單—時鐘周期内發出之指令數目。 :_、:作心—電腦上的應用程式映射入若干基本上同時執 =❹映射人―單―任務或-組順序執行之任務更自 …、時,亦可使用硬體多執行緒技術。 明=CPU内執行多本文之電腦中’本文發出指令之方法 本^冋。孩些技術包括:固定旋轉方案、當目前執行之 又^到-中斷狀態(例如,快取失誤)時轉換本文之方案 影響)之方本Γ均能夠同時發出指令(僅受必須資源之可用性 家族係以英國劍橋ARM有限公司開發的一系列 :二广構為基礎。該指令集架構類型習知為ARMISA且 理個版本和變型。綱似的特徵之-係使用協處 一:仃包含在正常指令流中的指令。某些標準協處理器 :::控制和組態該電腦。亦存在—種設備,其專門用 万、木構能力的自訂協處理器。-協處理器具有其自身
85797.DOC 1243333 的和指令集。—協處理11之所有或某些狀態可為-執 ::;專用本文之-部分。在arm ISA中’協處理器架構 、、目同,但均可作為該處理器之部分來實施。通常,— 個或士個用於組態和控制該電腦之標準協處理器實施為該 處理器之一部分。 w 【實施方式】 圖1闡述一通用微處理器100,除其他元件外,其主要包 括構成用糸單一執行緒(本文)102之執行本文的狀態、一包 括一組怨和控制狀態丨14之整合協處理器丨、一指令快取 (ache) 120、一男料快取(Dcachey 3〇和一記憶體管理單元 (MMU)14G。該微處理器連接至如下裝置:—記憶體⑽、 一協處理器160、一協處理器17〇以及在一電腦系統中常見 的其他裝置190;其中,協處理器160包含作為執行本文162 一部分的一協處理器特有狀態及該協處理器1 6〇所獨有的 組態與控制狀態166 ;協處理器170包含作為執行本文172 一部分的一協處理器特有狀態和該協處理器1 7〇所獨有的 組態與控制狀態176。指令快取(Icache)l20保存一系列由微 處理器100執行之指令。在ARM架構中,指令快取12〇亦保 存一系列用於整合協處理器11 〇、協處理器Γ6〇及協處理器 170的指令。 圖2闡述圖1之經過修改而支援硬體多執行緒之微處理器 。如圖2所述,處理器200包括一指令快取(icache) 220、一 資料快取(Dcache) 230、一記憶體管理單元(MMU) 240和一 包括組態與控制狀態2 14之整合協處理器2 1 0。此外,該處
85797.DOC 1243333 理咨200連接至一協處理器260、一協處理器27〇、記憶體28〇 及其他裝置290。 孩處理器200因具有兩個執行本文(執行緒〇本文2〇2和執 仃緒1本文204)而不同於處理器1〇〇。處理器2〇〇將執行緒組 悲與控制狀及邏輯2 1 6加至整合協處理器2 1 〇中,並且允 許組態與控制狀態214逐執行緒複製處理器1〇〇之組態與控 制狀態U4之某些部分。同樣,協處理器26〇包含兩個協處 理器特有之本文:執行緒〇協處理器本文262和執行緒丨協處 理器本文264。此外,協處理器26〇之組態與控制狀態266 逐執行緒複製協處理器160之組態與控制狀態166之某些部 分執行緒。 雖然圖2展示一帶有兩個本文之實施例,但上述技術不僅 限於此實施例。本技術之實施例可支援任一數量之本文。 此外,在某些實施例中,協處理器26G可實施為—整合協處 理器。上述技術可應用於使用任一方案自多本文發出指令 之硬體。 2論狀態214及216相關之狀態和邏輯是否在同-電路塊 中貫施’應汪意:執行緒組態與控制狀態216可位於一不同 於組態與控制狀態214其餘部分的架構協處理器内。藉由將 ㈣行緒組態與控制狀態216放置於—架構不同的協處理 ^内加除執行緒管理軟體外’自執行程式之角度,主處理 冓可保持不變。藉由執行緒組態與控制狀態2 W提供 二 舉例而言):開始、停止和恢復所有或個別 執仃.·者,向母-執行緒分配優先權及在執行緒之間分配资
85797.DOC 1243333 源。當每一執行緒需要獨立控制納入組態與控制狀態2 μ 中的組態與控制狀態114之某一功能時,需要針對每一執行 緒複製該功能。為維持與處理器100之架構相容性,每一執 行緒之相關獨立狀態可全部映射至處理器1〇〇内同樣的位 置和暫存ϋ中,並且本實施例可藉由判定哪—執行緒發出 ㈣令來決定-特定指令讀取或寫人哪—執行緒之狀態。 -實施例可在逐執行緒基礎上複製並藉由上述機制存取組 怎此制狀毖114〈怨樣實例包括:用於記憶體映射表的基 本指標 ' 軟體處理識別碼、記憶體轉換啟動及除錯特性啟 動。 在特疋只施例中,執行緒〇本文2〇2和執行緒丄本文2⑴ 均可包括受ARM架構(例如,使用者/監督常式、叫和叫 支援的模式所需的全部本文,其包括:程式計數器、咖 和膽。在-替代實施例中,執料丨本文2q何僅包括用 來支援ARM架構之使用者模式所需之本文。在此 =中,僅有—執料能夠在任_料時間在除使模 式外的任—模式中執行,且每當任-執行料人除使用者 模=任一模式,所有的使用者模式執行緒均被暫停。 = 包含執行緒〇和執行緒1所用之指令。同樣, 駕料快取23G包含執行㈣執行緒i所用 :包含執和執行緒1所用之轉換和許可資二 b透過依…而定的不同執行階 ==:每-取自指令一指令= P 相的關聯,以使每—指令使用本文202或本
85797.DOC -10- 1243333 文2〇4之合適本文,被授予適當許可並使用來自MMU 240 <正確的位址轉換,並且存取和操作資料快取22〇、記情 秦和其他裝置2辦的合適資料。在-實施例中,^ 執行緒皆配備-位址空間識別碼(Asm),用以指出哪此位 址轉換和許可適用於每一執行緒’使被賦予相同位址空間 硪別碼的執行绪共享同-組位址轉換和許可。此外,處理 器和外部協處理器可保證發給協處理器⑽的指令 使用協處理11260中的合適本文:或執行_發出指令所用 本又262或執行⑹發出指令所用本文糾。在執行—來自於 一,行緒的指令之整個過程中,因執行該執行緒而產生之 錯誤均報告至該引發錯誤的執行緒。 協處理器270僅有-協處理器特有本文奶並無任何設計 用來支援硬體多執行緒技術的狀態或邏輯。因此,此等執 :緒必須共享協處理器2?〇。在一共享協處理器"Ο之方法 一,協處理器270永久性分配給執行緒之一,藉此,當另外 -執行緒試圖使用協處理器27叫,其接收到_錯誤信號。 在另一方法中,協處理器27〇可由作 ; J田作茉系統或即時執行程式 刀配給-執行緒或另外一執行緒,藉此,當任何一個 使用協處理器270之許可的執行緒企圖使用該協處 謂;均接收到一錯誤信號。在另—方法中,協處理器 一一可同時被兩個執行緒使用’由軟體以下列方法負音確保 母一執行緒不干擾另—執行緒對該協處理器27〇的使用·或 :協處理器270内逐執行緒分配資源,或藉由軟體協定協調 哪-執行绪使用協處理器27。之哪—資源且何 ;
85797.DOC 1243333 等資源。本實施例可支 —、— 杈任—或所有該些機制。 特疋貫施例藉由—逐執行绪 —存取,該暫存器中具有對靡、人罗、吕里對“處理备之 元。每一勤"接— 、μ万;系統中每一協處理器的一位 戈 仃、’、精由執行緒組態與控制狀態216之同一位址 或作為同一協處理哭 1"址 每—執扞㈣、士/口 存取該暫存器。該實施例確保 行緒上的奸“身的暫存器。運作在所有執 ❹ ““周哪一執行緒存取哪些協處理器。對於一 與處理器200支援同 于於 緒均可設定指示其存取處理器而言,每一執行 -個本文之協處理器二以“。對於-僅具有 哭 DD 13,除非軟體協定允許共享協處理 ΓΓ —個執行緒設以於該協處理器的位元。 :::行,使用或存取-協處理器時,由於在該暫存 ::…緒拷貝内沒有設定相關的位元,因此會發出—錯 誤信號。 η仅Α 鲭 :執行緒可藉由讀取執行緒組態與控制狀態216中的— =器來查詢^份。協處理器加藉由傳回該請求執行緒 緒識別碼來響應該,,讀取,,。—執行緒亦可讀取執行 、’者邮且怨與控制狀態216中的—暫存器來決定受系統支援的 硬m執行緒數量。一執行 者了猎由寫入執行緒組態與控制 白勺―暫存器纟中斷或暫停其本身的執行,其中— :斷本身執行之執行緒被稱作一滚結執行緒。一執行緒亦 可精由窝入執行緒組態與控制狀態216中的-暫存器來迫 使另fu丁緒脫離滚結狀態。一;東結執行緒亦可組態當於 生一執行緒外部事件(諸如,—計時器或— ι/〇裝置中斷㈣
85797.DOC -12- 1243333 脫離凍結狀態並恢復執行。 在一貫犯例中,在一支援η個執行緒之處理器2〇〇中,可 藉由通常駐存於執行緒組態與控制狀態216中的一可寫暫 存器内的位元來控制該η個執行緒。對於該被支援的η個執 行緒’其位元標示為U和Do。當寫入㈣,位元 Fx凍結執行緒X。當寫入〖時,位元Rx將執行緒又轉變為運 作狀態。應當特別注意:向暫存器之合適位元而非該位元 •^内容寫入1可控制該執行緒係運作還係凍結。因此,向該 暫存R -位7C寫入0並無效果。此乃意味著多個執行緒可 同時或幾乎同時使用該暫存器且無需考慮其他執行緒正在 做什麼。 另《施例中,實施用來將一執行緒轉變為滚結狀能 之唯一機制係使執行緒自己寫入一協處理器或記憶體㈣ 暫存器。所有執行緒均可藉由寫入同一暫存器中的同一位 -來實施此步驟,且該實施例將該執行,,寫入,,的執行緒而 非其他執行緒置於滚結狀態。在該實施例中,該執行緒藉 ::中斷而脫峨狀態。在一類似實施例中,藉由發送 執行,,者重设信號而將該執行緒設為凍結狀態。 在—實施例中,處理器在已重設後僅具有—_行執 订緒T。’而时其他執行緒均;m該執行緒上 =可判定該執行緒為第—執行緒並且執行—初始化例行 吊:’使系統進入—可允許具有多個作用中執行緒之狀能 二:後’該軟體解;東其他執行緒。然後。運作於每一其二 仃绪上的軟體檢查該執行緒的執行緒識別碼並據此判定
85797.DOC -13 - 1243333 =執=緒非需運作的第—執行緒,並相應地不重新執行初 卜&式在4貝訑例中,當每一執行緒重設後第一次執 I丁時,其均在相同的位址上開始執行,並且若初始化軟體( ,開機程式碼」)不知道該處理器細支援硬體多執行緒技 術’其仍可正確執行。 在另貝她例中,處理器200—旦脫離重設即刻開始執行 所有執仃緒,並且運作於每—執行緒上的軟體根據該執行 =之執行緒識別碼㈣該執行緒應該進行系統初始化的哪 :邵分(若存在)。在該實施例中,為正確執行初始化,初 始化程式碼必須知曉該處理器扇支援硬體多執行緒技術。 在另-實施例中’處理器2叫重設後僅執行執行緒T。 ’且所有其他執行緒均;東結。作為初始化之-_分,運作 於第-執行緒上的軟體在解; 東其他執行緒前改變開機程式 碼或改變獲取開機程式碼之位置。在該實施例中,僅第—
執行緒運作的初始化程式碼需要知曉處理器的硬體多計 緒性質。 T 實施方案可有選擇性地將外部或内部中斷傳送至特定執 仃緒。孩傳送可由該實施方案固^或可程式規劃。, :個中斷可引導至-個以上執行緒或者所有執行緒。在i 每一硬體本又包括所有ARM模式之完整狀態之ARM架構 實施例中,多個執行緒可同時處理獨立的中斷。無論㈣ ’若-中斷被傳送至-束結執行緒且啟動該執行緒:該: 斷之感測,則該執行緒將會解康。 可實施-機制’使-執行緒產生一中斷且將該中斷傳送 85797.DOC -14- 1243333 二订緒。此一方法可允許執行緒藉由中斷相互聯 繫。可允許-執行緒向其自身傳送中斷。此外,可實施一 允許-執行緒同時向所有執行緒傳送—中斷之機制。、 亦:貫施一可使執行緒重設其他執行緒之機制。該機制 或可重設—執料輕持此執行料結、重設-執行緒並 允^執仃緒立即開始執行,或可允許該 命令選擇該些作業中哪一作業發生。 田可貝犯-機制,允許—執行緒檢測該執行緒所接收到的 取後/人重叹疋否為系統第一次啟動時發生的一整個系统 重設,或為—由該執行緒自己或某—其他執行緒向該執行 緒發送的一個別重設。 圖3展7F替代貫施例,其中每—執行緒均配備有分離的 指令快取和資料快取。處理器谓包括一指♦快取(Icache) 320、322、-資料快取(Dcache)33()、如和用於每一執行 緒0和執行緒1之一本文3〇2、3〇4、一記憶體管理單元 (MMU) 340、-具有—組態與控制狀態314和—執行緒組賤 與控制狀態316之整合協處理。此外,該處理器· 連接至記憶體3 8 0及其他裝置3 9 〇。 如同圖2所示之處理器2〇〇,處理器3〇〇連接至一協處理哭 及一協處理器270。如上文所指出,該處理器3〇〇因具有 用^每一執行緒的分離指令快取和資料快取(例如,執行緒 〇指令快取320、執行緒丨指令快取322、執行緒〇資料快取幻〇 和執行緒1資料快取332)而不同於處理器2⑻。 在圖3之實施例中,該執行緒特有狀態可擴展超出處理器
85797.DOC -15- 1243333 2 Ο 0之需要並包括用於獨立組態及控制每—執行緒产人快 取320和322之狀態資訊。額外的狀態資訊可為組態與控制 狀悲3 14之一部分,並可藉由前面所述逐執行緒暫存器過載 技術使其架構上不可見。該額外狀態資訊亦可為執=緒組 態與控制狀態316之一部分,在此狀況下,無需努力使該资 訊架構上不可見。逐執行緒指令和資料快取之組態與控制 元件亦可同時存在於組態與控制狀態314和執行緒組態與 控制狀態3 1 6中。 雖然圖2和圖3所給出之例子僅支援兩個本文,但上文所 述I技術可支援具有多於兩個本文之實施例。此外,該技 術支援具有少於或多於圖2和圖3所示協處理器之實施:。 菽技術亦支援具有更複雜記憶體分層之實施例。 一使用-可支援多執行緒技術之處理器之方案實例為如 圖4所不障礙(barder)同步情況。擴增該處理器以包括 一邏輯,該邏輯可在—特定執彳 心”…〜土 - 或執行緒轉變至運 错所有執料或_組執行緒進q結狀態 =功=可用不同方式規定該組執行緒。舉例而 兀 =其中每-執行緒組的每一執行緒 的暫存器規定該些執行緒。 ^ 動 .上f:存器可處理該實施例。為達成此目的,所包括之 轉變至運作錢。 ^、、° _行射。隨後自 在障礙同步之實例 而並列執行緒乃、丁2 中,初始時’申列執行緒T。正在運作 、丁3則藉由已將合適之數值寫入其暫
85797.DOC -16- 1243333 2之:元而束結。正在運作的串列執行緒τ。執行任務。 來㈣ΐ串列執行緒Τ〇已完成其任務時’該串列執行緒Τ〇 列鈾Λ楮由自我凍結或藉由一並列執行緒將τ。凍結)而並 τ 、Τ2、Τ3被激活(同樣’或藉由自我激活或藉由 1:其广舌)。然後,並列執行緒 執行L且在'成任務後再次返回;東結狀態。當所有並列 :1 Τ2、Τ3被凍結時’該串列執行緒To重新激活。 —執行障礙同步實例的偽碼之實例示於表β :
ThreadO^ ^ ^ , Threadl ^ ^ 為並列工作者執行緒 在此只例中初始狀態為:串列執行緒運 執行緒凍結。
ThreadO : 在此處插入串列工作____ TCNTL- (1<< 16)丨㈣〃;東結_列執㈣,運作並列 執行緒 /當並列執行绪完成時,吾人將到達此處,因為並列執 行緒將自行;東結,及
//本發明將自動噢醒丁hread〇 go to ThreadO
Threadx: //料所有並列工作者的程式碼皆與此 相同 ’:在串列執行緒使吾人開始之前,此處不會開始執行 //.............在此處插入並列工作...........
85797.DOC -17- 1243333 //共享資料緩衝區(N為該緩衝區的尺寸) //若 producerPtr==consumerPtr,貝1J 該緩衝區係空的 int buffer [N] int producerPtr=0; //生產者將寫入的下一位置 int consumerPtr=0; //消費者將讀取的下一位置 //用於消費者執行緒的程式碼 tmp= (1<< (16 + my一thread一ID )) | (1<< producer一ID) consumer: while producerPtr==consumerPtr //緩衝區是否已滿? TCNTL=tmp //自我凍結,唤醒生產者 //-----------在緩衝區的消費者資料[consumerPtr] consumerPtr= (consumerPtr + 1) % N //前進至下一資料項 TCNTL= 1<< producer—ID //保證生產者已醒 go to consumer //用於生產者執行緒的程式碼 tmp = (1 << (1 6 + my」hread_ID )) | (1<< consumer—ID) producer:
succ =(producerPtr + 1) % N while succ = consumerPtr //自我康結,唤酸消費者 TCNTL = tmp //..............將資料寫入緩衝區[succ].............…… producerPtr = succ TCNTL 二 1« consumer—ID //前進至下一資料項 85797.DOC -19- 1243333 go to producer / /保證消費者已醒 表2 肖費者和生產者程式碼中的迴圈極少執行,其疒 在僅為防止一模糊競賽。多個消費者_生產者配對可同 作且互不影響。 、延 ”圖式及說明書中已闡述本發明多個實施例。然而,應瞭 解可對d些貝施例做各種修改。一個或多個執行绪可專 用::特定任務,或-個或多個執行緒僅可在中斷時_唤醒 έ、—:中辦並且死憶體模塊可統-,以使所有任 t 4 部分。因此,該些及其他實施例均屬 万;下列申請專利範圍。 ’ 【圖式簡單說明】 =二:支援硬體多執行緒技術之通用電腦之方塊圖。 為—支援硬體多執行緒技術之通用 圖3為-適於以不同於圖2所示方式支援硬體= 鬼圖 術《通用電腦之方塊目。 執仃,.者技 圖4為—要求在一多執行緒處理器 作之方案方塊圖。 丁串列和並列工 圖5為-消費者·生產者並列方案方 止過運作^運作-多執料處理器 ^案要求防 衝區。 上執仃的共享資料缓 在各圖式中,相同的參考 【圖式代表符號說明】 ,π目同的元件。 100 處理器
85797.DOC -20. 本文 整合協處理器 組態和控制 指令快取 資料快取 記憶體管理單元 外部協處理器 協處理器本文 協處理器組態和控制 外部協處理器 協處理器本文 協處理器組態和控制 記憶體 其他裝置 處理器 執行緒0本文 執行緒1本文 整合協處理器 組態與控制 執行緒組態與控制 指令快取 資料快取 記憶體管理單元 外部協處理器 -21 - 執行緒0協處理器本文 執行緒1協處理器本文 協處理器組態與控制 外部協處理器 協處理器本文 協處理器組態與控制 記憶體 其他裝置 處理器 執行緒0本文 執行緒1本文 整合協處理器 組態與控制 執行緒組態與控制 執行緒0指令快取 執行緒1指令快取 執行緒0資料快取 執行緒1資料快取 記憶體管理單元 執行緒0協處理器本文 執行緒1協處理器本文 協處理器組態和控制 協處理器本文 協處理器组態與控制 -22-
Claims (1)
- Ι2γΆ〇4號專利申 πτίη 拾、申請專利範圍: L:—…-S • 一種提供多執行緒電腦處理之方法,該方法包括· 將:暫存器專用於控制多個處理執行緒 ,.告,母—該處理執行緒皆可存取該暫存器; 乍及4 f由向該暫存器之一個或多個特定位元窝一 預疋值而促使一處理執行緒運作;及 ”藉由向該暫存器之—個或多個其他特定位 罘二預定值來凍結該處理執行緒。 ’’’’ 2·如申請專利範圚第β之方法 器暫存器。 存為為—協處理 3. 4. 5. 如_凊專利範圍第1項$ + 2丄、 矛負乏万法,其中該第一預定值為"i,,。 如申睛專利範圍第3項士女、、土 上丄、 矛員又万法,其中該第二預定值為”;r。 如申睛專利範園第4項乏女、、土 ㈣万法,其中若該第-預定值或堯 〜疋值為G ’則該處理執行緒繼續運作或保持;東释 狀態。 、 6·如申請專利範圍第i項之 、 、<万法,其中向該暫存器之該一 或多個其他特定位元耷 胃入一不同於該第二預定值的數 不影響該處理執行緒之; 東結或運作。 7·如申請專利範圍第1 、 闺罘1負艾万法,該方法進一步包括: 初始化一處理器; 初始化η個處理執行緒; 致使第一處理執行緒運作; 凍結η-1個處理執行緒; 接受一執行任務; 85797-931008.DOC ί243333 在該第-處理執行緒上執行該任務;及 任=有一额外任務,接受該额外任務並同時執行該則 如^請專利範園第7项之方法,其中若該额外任務 —執行緒運作,目j今女、、土 —』 "法已括·致使一第二處理執行緒 9 並同時在孩第二處理執行緒上執行該額外任務。 :申請專利範園第7項之方法,其中該處理器至少包括一 二個處理執行緒中每—處理執行绪皆可存取之資源。 .如申請專利範圍第9項之方法,其中該處理器至少包括一 該_處理執行緒中僅—個處理執行緒 請專利範圍第1項之方法,該方法進一步包括^該 ”執行緒並響應―中斷致使-第二處理執行緒運作。 種排列iL組態用於提供的多執行緒電腦處理之系統, 該系統包括: 口口一專門用於控制多處理執行緒之運作和康結之暫存 器’該處理執行緒之每一執行緒皆可存取該暫存器;及 一處理器,該處理器組態用來致使一處理執行緒運作 來.應孩暫存器之一個或多個特定位元内寫入一第一預 疋值,並且凍結該處理執行緒來響應該暫存器之一個戈 夕個其他特定位元内寫入一第二預定值。 2 13 ·如申叫專利範圍第12項之系統,該系統進一步包括一尸 處理器,其中該暫存器包括一該協處理器之暫存器。切 14·如申請專利範圍第丨2項之系統,其中該處理器之組態可 使向该暫存器之一個或多個其他特定位元寫入除第一 85797-931008.DOC -2- I243333 定值外的數值不影響該處理執行 15.如申請專利範園第12項之手统. 、,,a系扁,其中該處理器組態用來 不刀始化η個處理執行緒; 致使第一處理執行緒運作; 滚結η-1個處理執行緒,· 接受一執行任務; j該第-處理執行緒上執行該任務;及 :有-料任務,接受該額外任務制時執行該額夕 任務。 16.如申請專利範圍第15 其中孩處理器組態用身 使弟一處理執行绪運作,祐0 *、、 並且§孩額外任務要求另 一執行緒運作時同時在命裳— ^ f在邊弟一處理執行緒上執行該額外 任務。 17·如申請專利範圍第㈣之系、统,其中該處理器至少包括 u.zr/理執t緒中每—處理執行緒皆可存取之資源。 叫利把園弟15項之系統,其中該處理器至少包括 —該η個處理執行緒中僅—個處理執行緒可存取之資源。 以如申請專-利範圍第12項之系 、‘、 & 丹Τ该處理器組態用來 凍結該處理執行緒並致使一 1又弟一處理執行緒運作來響應 一中斷。 20. -種用於提供多執行緒電腦處理之架構擴增方法,該架 構擴增包括下列步驟·· 知-暫存器專門用於控制多處理執行緒之運作和滚 結,該處理執行緒中每一執行緒皆可存取該暫存器; 85797-931008.DOC 1243333 藉由向該暫存器之一個或多個特定位元寫入一第一 預定值來致使一處理執行緒運作;及 藉由向該暫存器之一個或多個其他特定位元寫入一 第二預定值來凍結該處理執行緒。 21. 如申請專利範圍第20項之架構擴增方法,其中該暫存器 為一協處理器暫存器。 22. 如申請專利範圍第20項之架構擴增方法,其中向該暫存 器之一個或多個其他特定位元寫入除第二預定值外的數 值不影響該處理執行緒之凍結或運作。 23. 如申請專利範圍第20項之架構擴增方法,該架構擴增進 一步包括下列步驟: 初始化一處理器; 初始化η個處理執行緒; 致使一第一處理執行緒運作; 凍結η-1個處理執行緒; 接受一執行任務; 在該第一處理執行緒上執行該任務;及 若有一—額外任務,接受該額外任務並同時執行該額外 任務。 24. 如申請專利範圍第23項之架構擴增方法,其中該架構擴 增進一步包括致使一第二處理執行緒運作,並且當該額 外任務要求運作另一執行緒時同時在該第二處理執行緒 上執行該額外任務。 25. 如申請專利範圍第23項之架構擴增方法,其進一步包括 85797-931008.DOC -4- 1243333 至少一該η個處理執行緒中每一處理執行緒皆可存取之 資源。 26. 如申請專利範圍第23項之架構擴增方法,其進一步包括 至少一該η個處理執行緒中僅一個處理執行緒可存取之 資源。 27. 如申請專利範圍第23項之架構擴增方法,其進一步包括 凍結該處理執行緒並致使一第二處理執行緒運作來響應 一中斷。 85797-931008.DOC1243333 第092114904號專利申請案 中文圖式替換頁(93年10月)85797.DOC
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/162,428 US20030225816A1 (en) | 2002-06-03 | 2002-06-03 | Architecture to support multiple concurrent threads of execution on an arm-compatible processor |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200405204A TW200405204A (en) | 2004-04-01 |
TWI243333B true TWI243333B (en) | 2005-11-11 |
Family
ID=29583601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW092114904A TWI243333B (en) | 2002-06-03 | 2003-06-02 | Architecture to support multiple concurrent execution contexts on a processor |
Country Status (8)
Country | Link |
---|---|
US (1) | US20030225816A1 (zh) |
EP (1) | EP1573532B1 (zh) |
CN (1) | CN100347673C (zh) |
AU (1) | AU2003240975A1 (zh) |
HK (1) | HK1078144A1 (zh) |
MY (1) | MY160949A (zh) |
TW (1) | TWI243333B (zh) |
WO (1) | WO2003102773A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI808506B (zh) * | 2016-02-09 | 2023-07-11 | 美商英特爾股份有限公司 | 用於使用者等級執行緒暫止的方法、處理器及系統 |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040225840A1 (en) * | 2003-05-09 | 2004-11-11 | O'connor Dennis M. | Apparatus and method to provide multithreaded computer processing |
US7594089B2 (en) * | 2003-08-28 | 2009-09-22 | Mips Technologies, Inc. | Smart memory based synchronization controller for a multi-threaded multiprocessor SoC |
US7418585B2 (en) * | 2003-08-28 | 2008-08-26 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7711931B2 (en) * | 2003-08-28 | 2010-05-04 | Mips Technologies, Inc. | Synchronized storage providing multiple synchronization semantics |
US7870553B2 (en) | 2003-08-28 | 2011-01-11 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
US7849297B2 (en) | 2003-08-28 | 2010-12-07 | Mips Technologies, Inc. | Software emulation of directed exceptions in a multithreading processor |
US9032404B2 (en) | 2003-08-28 | 2015-05-12 | Mips Technologies, Inc. | Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor |
US7836450B2 (en) | 2003-08-28 | 2010-11-16 | Mips Technologies, Inc. | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts |
DE602004017879D1 (de) * | 2003-08-28 | 2009-01-02 | Mips Tech Inc | Integrierter mechanismus zum suspendieren und endznem prozessor |
US7475296B2 (en) * | 2004-05-20 | 2009-01-06 | International Business Machines Corporation | Serviceability and test infrastructure for distributed systems |
US7937709B2 (en) * | 2004-12-29 | 2011-05-03 | Intel Corporation | Synchronizing multiple threads efficiently |
US8079031B2 (en) | 2005-10-21 | 2011-12-13 | Intel Corporation | Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric |
US8201179B2 (en) * | 2006-05-04 | 2012-06-12 | Oracle America, Inc. | Multi-threaded shared state variable control |
US7721148B2 (en) * | 2006-06-29 | 2010-05-18 | Intel Corporation | Method and apparatus for redirection of machine check interrupts in multithreaded systems |
US8056087B2 (en) * | 2006-09-25 | 2011-11-08 | International Business Machines Corporation | Effective use of a hardware barrier synchronization register for protocol synchronization |
DE102006048379B4 (de) * | 2006-10-12 | 2008-11-06 | Infineon Technologies Ag | Verfahren zur Durchsatzsteuerung einer elektronischen Schaltung sowie entsprechende Durchsatzsteuerung und zugehörige Halbleiterschaltung |
US8898438B2 (en) * | 2007-03-14 | 2014-11-25 | XMOS Ltd. | Processor architecture for use in scheduling threads in response to communication activity |
US7853950B2 (en) * | 2007-04-05 | 2010-12-14 | International Business Machines Corporarion | Executing multiple threads in a processor |
US8181185B2 (en) * | 2007-05-31 | 2012-05-15 | Intel Corporation | Filtering of performance monitoring information |
WO2009153977A1 (ja) * | 2008-06-19 | 2009-12-23 | パナソニック株式会社 | マルチプロセッサ |
US7930519B2 (en) * | 2008-12-17 | 2011-04-19 | Advanced Micro Devices, Inc. | Processor with coprocessor interfacing functional unit for forwarding result from coprocessor to retirement unit |
CN101923382B (zh) * | 2009-06-16 | 2013-01-16 | 联想(北京)有限公司 | 一种计算机系统的节能方法及计算机系统 |
US8832712B2 (en) * | 2009-09-09 | 2014-09-09 | Ati Technologies Ulc | System and method for synchronizing threads using shared memory having different buffer portions for local and remote cores in a multi-processor system |
US10169072B2 (en) * | 2009-09-23 | 2019-01-01 | Nvidia Corporation | Hardware for parallel command list generation |
CN102629192A (zh) * | 2012-04-20 | 2012-08-08 | 西安电子科技大学 | 用于片上多核并发多线程处理器的指令包及其操作方法 |
US9465618B2 (en) | 2014-01-08 | 2016-10-11 | Oracle International Corporation | Methods and systems for optimally selecting an assist unit |
CN105843592A (zh) * | 2015-01-12 | 2016-08-10 | 芋头科技(杭州)有限公司 | 一种在预设嵌入式系统中实现脚本操作的系统 |
CN104899039B (zh) * | 2015-06-12 | 2018-12-25 | 百度在线网络技术(北京)有限公司 | 用于在终端设备上提供截屏服务的方法和装置 |
US10503541B2 (en) * | 2017-12-04 | 2019-12-10 | Beijing Panyi Technology Co., Ltd. | System and method for handling dependencies in dynamic thread spawning for a multi-threading processor |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5669002A (en) * | 1990-06-28 | 1997-09-16 | Digital Equipment Corp. | Multi-processor resource locking mechanism with a lock register corresponding to each resource stored in common memory |
US5968157A (en) * | 1997-01-23 | 1999-10-19 | Sun Microsystems, Inc. | Locking of computer resources |
US6212544B1 (en) * | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
CN1228557A (zh) * | 1998-03-06 | 1999-09-15 | 刘殷 | 计算机处理器多线程指令级并行技术 |
US6507862B1 (en) * | 1999-05-11 | 2003-01-14 | Sun Microsystems, Inc. | Switching method in a multi-threaded processor |
US7120783B2 (en) * | 1999-12-22 | 2006-10-10 | Ubicom, Inc. | System and method for reading and writing a thread state in a multithreaded central processing unit |
-
2002
- 2002-06-03 US US10/162,428 patent/US20030225816A1/en not_active Abandoned
-
2003
- 2003-05-30 EP EP03731480.4A patent/EP1573532B1/en not_active Expired - Lifetime
- 2003-05-30 CN CNB038186217A patent/CN100347673C/zh not_active Expired - Fee Related
- 2003-05-30 AU AU2003240975A patent/AU2003240975A1/en not_active Abandoned
- 2003-05-30 WO PCT/US2003/017221 patent/WO2003102773A2/en not_active Application Discontinuation
- 2003-06-02 TW TW092114904A patent/TWI243333B/zh not_active IP Right Cessation
- 2003-06-03 MY MYPI20032055A patent/MY160949A/en unknown
-
2005
- 2005-10-21 HK HK05109420.6A patent/HK1078144A1/zh not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI808506B (zh) * | 2016-02-09 | 2023-07-11 | 美商英特爾股份有限公司 | 用於使用者等級執行緒暫止的方法、處理器及系統 |
Also Published As
Publication number | Publication date |
---|---|
EP1573532A2 (en) | 2005-09-14 |
CN1685315A (zh) | 2005-10-19 |
TW200405204A (en) | 2004-04-01 |
EP1573532B1 (en) | 2015-06-24 |
AU2003240975A1 (en) | 2003-12-19 |
CN100347673C (zh) | 2007-11-07 |
MY160949A (en) | 2017-03-31 |
WO2003102773A2 (en) | 2003-12-11 |
US20030225816A1 (en) | 2003-12-04 |
WO2003102773A3 (en) | 2005-06-30 |
HK1078144A1 (zh) | 2006-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI243333B (en) | Architecture to support multiple concurrent execution contexts on a processor | |
TW406241B (en) | Thread switch control in a multithreaded processor system | |
TWI637316B (zh) | 多核心微處理器動態重新配置 | |
US8332559B2 (en) | Power managed lock optimization | |
JP5795820B2 (ja) | プロセッサ、方法、システム、及び、プログラム | |
US9069605B2 (en) | Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention | |
TW554287B (en) | Method and apparatus for managing resources in a multithreaded processor | |
CN108701040B (zh) | 用户级别线程暂停的方法、设备、和指令 | |
JP5823987B2 (ja) | 第1の処理回路と第2の処理回路との間で作業負荷を切り替えるためのデータ処理装置および方法 | |
TWI613593B (zh) | 在微處理器中至多核心的微碼傳播 | |
EP2187316B1 (en) | Gated storage system and synchronization controller and method for multiple multi-threaded processors | |
KR100880470B1 (ko) | 스레드 라이브록 유닛 | |
CN104679582B (zh) | 对于显示设备的命令调度 | |
CN109997113B (zh) | 用于数据处理的方法和装置 | |
JP2010044770A (ja) | モニタメモリ待機を用いたキューされたロック | |
US20080040524A1 (en) | System management mode using transactional memory | |
JP2006500639A (ja) | 指定されたメモリアクセスが発生するまでスレッドの実行をサスペンドする方法及び装置 | |
TWI454905B (zh) | 在多核心平台中之受限制的啓動技術 | |
KR20140127341A (ko) | 휴대용 컴퓨팅 디바이스에서 요청들을 스케쥴링하기 위한 방법 및 시스템 | |
KR20070121836A (ko) | 운영 체계 서비스의 투명한 지원을 위한 방법 및 제품 | |
JP4785142B2 (ja) | データ処理装置 | |
WO2016123413A1 (en) | Synchronization in a multi-processor computing system | |
US20150339178A1 (en) | Processing system and method of operating a processing system | |
US11243800B2 (en) | Efficient virtual machine memory monitoring with hyper-threading | |
TWI306198B (zh) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |