TWI628594B - 用戶等級分叉及會合處理器、方法、系統及指令 - Google Patents
用戶等級分叉及會合處理器、方法、系統及指令 Download PDFInfo
- Publication number
- TWI628594B TWI628594B TW105105508A TW105105508A TWI628594B TW I628594 B TWI628594 B TW I628594B TW 105105508 A TW105105508 A TW 105105508A TW 105105508 A TW105105508 A TW 105105508A TW I628594 B TWI628594 B TW I628594B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- processor
- user
- level
- instructions
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 230000004044 response Effects 0.000 claims abstract description 49
- 230000015654 memory Effects 0.000 claims description 127
- 230000004888 barrier function Effects 0.000 claims description 41
- 238000003860 storage Methods 0.000 claims description 41
- 238000012545 processing Methods 0.000 claims description 37
- 238000004519 manufacturing process Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 38
- 230000001360 synchronised effect Effects 0.000 description 13
- 238000007667 floating Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 12
- ORQBXQOJMQIAOY-UHFFFAOYSA-N nobelium Chemical compound [No] ORQBXQOJMQIAOY-UHFFFAOYSA-N 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 10
- 239000000872 buffer Substances 0.000 description 9
- 238000013461 design Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000007123 defense Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 239000000543 intermediate Substances 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000011859 microparticle Substances 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 235000012431 wafers Nutrition 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent 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
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一態樣的處理器包含眾多處理器元件、及第一處理器元件。第一處理器元件執行軟體緒的用戶等級分叉指令。第一處理器元件包含解碼器以將用戶等級分叉指令解碼。用戶等級分叉指令會標示至少一指令位址。第一處理器元件也包含用戶等級緒分叉模組。用戶等級緒分叉模組將眾多處理器元件中的各處理器元件配置成平行地執行指令,以回應被解碼的用戶等級分叉指令。揭示其它處理器、方法、系統及指令。
Description
此處所述的實施例大致上關於處理器。特別地,此處所述的實施例大致上關於處理器中的平行處理。
用以增進電腦系統及具有一或更多處理器的其它電子裝置中的性能之一技術是平行處理。平行處理通常意指同時使用一個以上的硬體緒、核心、中央處理單元、處理器、或其它處理器元件以執行程式或多緒。由於有更多的這些處理器元件平行地運轉,所以,平行處理有助於允許程式執行更快。
100‧‧‧處理器
102‧‧‧第一處理器元件
114‧‧‧眾多附加處理器元件
560‧‧‧同質處理器元件
660‧‧‧異質處理器元件
700‧‧‧處理器
800‧‧‧處理器
1100‧‧‧處理器
1200‧‧‧系統
1300‧‧‧系統
1400‧‧‧系統
參考下述說明及用以顯示實施例的附圖,可以最佳地瞭解本發明。在圖式中:圖1是處理器實施例的方塊圖。
圖2是使用用戶等級分叉指令的實施例、以及多用戶等級同步和結束指令的實施例而實施的分叉會合構造的實
例。
圖3是依據會操作以促使緒在同步障壁等待之用戶等級分叉指令之實施例的分叉會合碼的方塊圖。
圖4是依據會操作以促使緒在同步障壁等待之用戶等級分叉指令及分別的用戶等級同步及會合指令之實施例的分叉會合碼的方塊圖。
圖5是適當的同質處理器元件對之舉例說明的實施例之方塊圖。
圖6是適當的異質處理器元件對之舉例說明的實施例之方塊圖。
圖7是執行用戶等級分叉指令的實施例之處理器的舉例說明的實施例之方塊圖。
圖8是執行用戶等級同步及結束指令的實施例之處理器的舉例說明的實施例之方塊圖。
圖9A是方塊圖,顯示有序管線的實施例及暫存器重命名、亂序發布/執行管線的實施例。
圖9B是處理器核心實施例之方塊圖,處理器核心包含耦合至執行引擎單元的前端單元且此二單元都耦合至記憶體單元。
圖10A是單處理器核心、伴隨其對晶粒上互連網路的連接、及其階層2(L2)快取記憶體的區域子集合的實施例之方塊圖。
圖10B是圖10A的部份處理器核心的放大視圖之實施例的方塊圖。
圖11處理器的實施例之方塊圖,處理器具有一個以上的核心、具有集成的圖形和記憶體控制器。
圖12顯示電腦架構的第一實施例之方塊圖。
圖13顯示電腦架構的第二實施例之方塊圖。
圖14顯示電腦架構的第三實施例之方塊圖。
圖15顯示電腦架構的第四實施例之方塊圖。
圖16是根據本發明的實施例之將源指令集中的二進位指令轉換成目標指令集中的二進位指令之軟體指令轉換器的使用之方塊圖。
於此揭示用戶等級分叉指令(例如用戶等級分叉、用戶等級分叉及同步會合指令)、用戶等級同步及結束指令、用以執行指令的處理器、當執行或實行指令時由處理器執行的方法、以及包含有一或更多處理器以執行或實行指令之系統。在下述說明中,揭示眾多特定細節(例如特定指令作業、處理器配置、微架構細節、作業序列、等等)。但是,沒有這些特定細節,仍可實施實施例。在其它情形中,未詳細顯示習知的電路、結構及技術,以免模糊說明的瞭解。
圖1是處理器100的實施例的方塊圖。在某些實施例中,處理器可為一般用途處理器(例如,用於桌上型、膝上型、智慧型手機、或其它型式的電腦中的一般用途微處理器或中央處理單元(CPU))。替代地,處理器可為特
別用途處理器。適合的特定用途處理器的實例包含但不限於圖形處理器、共處理器、網路處理器、通訊處理器、密碼處理器、嵌入式處理器、數位訊號處理器(DPS)、及控制器(例如微控制器)。處理器可具有各種複雜指令集計算(CISC)架構、精簡指令集計算(RISC)架構、超長指令字(VLIW)架構、混合架構、其它型式的架構中的任一、或是具有不同架構的組合。
處理器具有第一處理器元件102及眾多附加處理器元件114。第一處理器元件及附加處理器元件可以藉由一或更多匯流排或其它互連112(例如一或更多環式、環形、網式、等等)而連接或是耦合在一起。如同所示,眾多其它附加處理器元件包含第一附加處理器元件114-1至第N附加處理器元件114-N。附加處理器元件的數目代表適用於特定實施之任何所需數目。舉例而言,附加處理器元件的數目可從2至數佰個數量級,或者,在某些實施例中,從10至約200個,或者,在某些情形中,從20至約200個,或者,在某些情形中,大於10、20、或30,但是,本發明的範圍不侷限於此。關於一實例,可以從約40至約200,但是這並非必要。在某些實施例中,第一處理器元件102及各附加處理器元件114都配置於單一積體電路晶粒上或是其它半導體基底上。替代地,某些或所有附加處理器元件106可以選加地配置於與第一處理器元件不同的晶粒或其它半導體基底上、以及選加地包含於與第一處理器元件相同的積體電路封裝中。在某些實施例中,附加
處理器元件114不代表圖形卡、GPGPU、或其它一般僅經由驅動器、中間體、等等而被存取的分別裝置。
用於第一處理器元件102之適當的處理器元件及各附加處理器元件114之實例包含但不限於核心、硬體緒、緒單元、緒槽、可操作以儲存內容或架構狀態及程式計數器(在此技藝中也稱為指令指標器)的邏輯、可操作以儲存狀態及與碼獨立地相關連之邏輯、以及其它邏輯處理器。核心一詞通常用以意指設於積體電路上的邏輯,其能夠維持獨立架構狀態(例如執行狀態),以及,其中,架構狀態與專用執行及某些其它資源相關連。相對地,硬體緒一詞通常用以意指設於積體電路上的邏輯,其能夠維持獨立架構狀態,以及,其中,架構狀態共用對執行的存取或某些其它資源。當對於二或更多架構狀態,某些執行或某些其它資源被共用,以及其它執行或某些其它資源專用於架構狀態時,則核心與硬體緒等詞之如此用法之間的界線會較不明顯。然而,核心、硬體緒、及其它處理器元件通常被軟體視為個別的邏輯處理器或是處理器元件。一般而言,緒、處理器、或工作負責可被排程於、以及獨立地相關連各核心、硬體緒、或其它處理器元件。
第一處理器元件102具有指令集104。眾多附加處理器元件114中的各附加處理器元件也具有對應的指令集116。第一處理器元件的指令集104可以同於或不同於各附加處理器元件的指令集116(例如可以具有某些重疊的指令及某些未重疊的指令)。指令集是分別的處理器元件
之指令集架構(ISA)的部份以及包含處理器元件可操作以執行之本地指令。指令集的指令可代表巨集指令、機器等級指令、或是組合語言指令。
第一處理器元件的指令集104包含用戶等級分叉指令106。在某些實施例中,用戶等級分叉指令106省略同步及會合功能(例如同步及會合功能由分別的用戶等級同步及會合指令或多個其它指令提供以實施此功能)。在其它實施例中,指令106可為包含有同步及會合功能之用戶等級分叉指令及同步會合指令。各附加處理器元件的指令集116包含用戶等級同步及結束指令118。用戶等級分叉指令以及用戶等級同步及結束指令可為在執行的無特權等級或用戶等級執行之用戶等級指令。各指令集也選加地包含一或更多非用戶等級或特權指令(未顯示),非用戶等級或特權指令是不會在執行的無特權等級或用戶等級執行。相反地,非用戶等級或特權指令僅在被保留用於作業系統、虛擬機管理器、超管理器或其它特權或監督實體之執行的非用戶等級或至少部份特權等級執行(例如在環0)。
在某些實施例中,用戶等級分叉指令106、以及用戶等級同步及結束指令118允許使用者在用戶等級應用或軟體中實施分叉及會合構造。在分叉及會合構造中,軟體的給定部份之執行(例如給定的軟體緒)會分支或分叉成軟體的多個平行執行(例如多個資料平行工作負擔或平行軟體緒),然後,這些多平行執行結束或產生結果及合併或
會合,以及,軟體的給定部份之執行(例如,給定的軟體緒)會恢復。在某些實施例中,用戶等級分叉指令106可操作以指明、限定、或標示要於眾多附加處理器元件114中的各附加處理器元件114上平行執行的軟體的一部份之啟始,以及,用戶等級同步及結束指令118可以操作以指明、限定、或標示軟體的部份之結束。
第一處理器元件具有第一解碼單元108。用戶等級分叉指令可以提供給第一解碼單元108。第一解碼單元可以操作以將用戶等級分叉指令解碼。在某些實施例中,用戶等級分叉指令可以明確地指定或以其它方式標示至少一指令位址。在某些實施例中,指令可以指明或以其它方式標示單一指令位址,所述單一指令位址係代表要在各附加處理器元件上平行地執行的碼的部份之第一或開始指令,各附加處理器元件會在此第一或開始指令開始。在其它實施例中,指令指明眾多潛在地/選擇性地不同的指令位址(例如,指明一或眾多均具有指令位址的向量值之向量暫存器),這些不同的指令位址均由眾多附加處理器元件中不同的附加處理器元件使用(例如,各處理器元件始於不同的指令位址以在資料平行工作負擔的不同部份上平行地工作)。第一處理器元件也具有與解碼單元耦合之用戶等級緒分叉模組110。用戶等級緒分叉模組代表一或更多執行單元或是其它執行邏輯或實施用戶等級分叉指令。在某些實施例中,用戶等級緒分叉模組110可以回應用戶等級分叉指令106(例如回應用戶等級分叉指令被解碼及/或一
或更多從用戶等級分叉指令解碼或以其它方式產生的控制訊號),以在程式控制流中造成分支或分叉。在某些實施例中,回應用戶等級分叉指令,用戶等級緒分叉模組110會操作以配置或以其它方式促使眾多附加處理器元件114中的各附加處理器元件平行地執行指令集或一部份軟體。在某些實施例中,可以配置或以其它方式促使眾多附加處理器元件中的各附加處理器元件在用戶等級分叉指令106所標示的至少一指令位址中之一開始執行。如先前所述般,在某些實施例中,指令會標示單一位址,而在其它實施例中,會標示眾多潛在地/選加地不同的位址(例如,一或更多位址的向量值)。在某些實施例中,用戶等級分叉指令隱含地標示靜態或固定數目的附加處理器元件(例如,可以使用所有可供利用的附加處理器元件)。替代地,用戶等級分叉指令明確地指明或以其它方式標示彈性數目的附加處理器元件,且該數目可以被動態地分配(例如,附加處理器元件的總數之一或更多不會被用以運行平行軟體)。
眾多附加處理器元件114中的各附加處理器元件可以操作以執行用戶等級同步及結束指令118。在某些實施例中,各附加處理器元件具有對應的解碼單元120以將用戶等級同步及結束指令解碼。在某些實施例中,各附加處理器元件114具有對應的用戶等級同步緒結束模組122,用戶等級同步緒結束模組122與對應的解碼單元120耦合。各用戶等級同步緒結束模組122代表用以執行或實施用戶
等級同步及結束指令118之一或更多執行單元或其它執行邏輯。在某些實施例中,回應用戶等級同步及結束指令118(例如,回應指令被解碼及/或一或更多從指令解碼或以其它方式產生的控制訊號),各用戶等級同步緒結束模組122可操作以配置或以其它方式促使其對應的附加處理器元件(其被包含於中)執行對應的緒或執行之同步結束以準備在程式控制流中同步會合或合併。在某些實施例中,當執行用戶等級同步及結束指令118時,各處理器元件114實施同步障壁及同步控制流轉回至在第一處理器元件上執行的軟體的其它部份或軟體緒。在某些實施例中,當執行用戶等級同步及結束指令時,各處理器元件114會停止執行增加的指令,以及等待(例如在同步障壁)直到其它附加處理器元件114中的各附加處理器元件執行對應的用戶等級同步及結束指令(例如到達同步障壁)為止。然後,在某些實施例中,當所有附加處理器元件執行其對應的用戶等級同步及結束指令時,執行程式控制流中的會合或合併,以及,控制流轉回到在第一處理器元件102上執行的軟體的一部份中的適當指令。在一態樣中,在眾多附加處理器元件上的所有平行執行會終止且執行僅在第一處理器元件上繼續。
有利地,用戶等級分叉及用戶等級同步及結束指令代表用戶等級架構機制,其允許使用者、程式人員、或編譯器在用戶等級應用中明確地程式化或實施分叉及會合構造或是語意。分叉及會合構造不需要由軟體運行時間界定,
軟體運行時間涉及對作業系統(或是其它監督系統軟體)管理緒的系統呼叫,此系統呼叫一般傾向於具有高開銷(例如導因於發訊等等),結果大致上傾向於實際受限於相當大的工作負擔或是平行執行的碼的部份(例如粗粒平行處理)。相反地,經由使用這些用戶等級分叉及用戶等級同步及結束指令,可以不需要作業系統或其它監督系統軟體的干預、及/或不需要服從作業系統或其它監督系統軟體,以實施分叉及會合。
此外,在某些實施例中,在附加處理器元件上運行的平行執行(例如,平行軟體緒)不會由作業系統或其它監督系統軟體直接管理。在一態樣中,在附加處理器元件上運行的平行執行(例如,平行軟體緒)可以選擇性地為作業系統或其它監督系統軟體看不見,或是至少實質上看不見(例如,OS可以不知道這些平行執行正在附加處理器元件上運行)。相反地,在某些實施例中,在具有用戶等級分叉指令106之第一處理器元件上運行之軟體的部份或緒已由監督系統軟體排程於第一處理器元件102上(例如作業系統的緒排程器模組),且是可由監督系統軟體看見及管理。結果,用戶等級分叉及用戶等級同步及結束指令會有助於降低一般預期用於此平行執行之開銷量。在一態樣中,假使取代地,緒由對作業系統(或其它監督系統軟體)的呼叫經由軟體運行時間而排程及管理時,用戶等級分叉及用戶等級同步及結束指令選擇性地/潛在地被用以有效率地平行執行比一般實際更小的工作負擔或是碼的部
份(例如,微粒平行處理)。
已顯示及說明處理器100之詳細舉例說明的實施例,但是,可以想到各式各樣的替代實施例。在某些實施例中,處理器可以實施用戶等級分叉指令,但選擇性地不用實施用戶等級同步及結束指令。舉例而言,處理器可以選擇性地具有設有指令集的第一處理器元件102,所述指令集包含用戶等級分叉指令106,但是,附加處理器元件114具有省略所述用戶等級同步及結束指令118之指令集。在其它實施例中,處理器可實施用戶等級同步及結束指令,但是,選擇性地不用實施用戶等級分叉指令。舉例而言,處理器可以選擇性地具有附加處理器元件114,所述附加處理器元件114具有包含所述的用戶等級同步及結束指令118,但是,第一處理器元件102具有選擇性地省略所述的用戶等級分叉指令106之指令集。在某些實施例中,取代用戶等級同步及結束指令,選擇性地實施用戶等級結束指令而無同步功能或能力。舉例而言,分別的指令(例如,具有不同的作業碼)可以用以實施同步功能,以及,可以結合省略同步能力之用戶等級結束指令。習於此技藝且從本揭示得利者將清楚知道其它變異。
為避免模糊說明,顯示及說明簡化的處理器100。但是,處理器可以選擇性地包含其它組件。舉例而言,各式各樣不同的實施例可以包含對圖9-11中任何圖所示及說明之組件的各種不同的組合以及配置。處理器的所有組件可以連接或耦合在一起以允許它們操作。
圖2是使用用戶等級分叉指令206的實施例、以及多用戶等級同步及結束指令218實施之分叉會合構造230的實例。分叉會合構造包含可在第一處理器元件(例如第一處理器元件102)上執行的主軟體緒232。主軟體緒包含用戶等級分叉指令206。在某些實施例中,用戶等級分叉指令明確地指明、或以其它方式標示至少一位址(例如,要在眾多附加處理器元件中的各附加處理器元件上平行地執行之指令集的開始指令之位址)。舉例而言,在各式各樣的實施例中,用戶等級分叉指令具有明確地指明暫存器(例如架構的一般用途暫存器)之欄位,所述暫存器具有明確地指明或以其它方式標示(例如提供至少一偏移給或以其它方式標示)至少一位址之至少一值;或是具有明確地指明或以其它方式標示記憶體位置、隱含地標示暫存器之欄位,所述記憶體位置係具有明確地指明或以其它方式標示至少一位址之值,所述暫存器係具有明確地指明或以其它方式標示至少一位址之至少一值;或者,具有立即性以提供明確地指明或以其它方式標示至少一位址之至少一值。
當被執行時(例如由第一處理器元件執行),用戶等級分叉指令206會促使第一處理器元件在程式控制流中產生、排程、以其它方式配置、或以其它方式造成分支或分叉234,分支或分叉234會啟始多個助手軟體緒236各別在眾多附加處理器元件(例如附加處理器元件114)中不同之一上平行地執行。多個助手軟體緒包含第一助手軟體
緒236-1至第N助手軟體緒236-N,其中,助手軟體緒的數目可為適用於特定實施之任何所需數目(例如,有時從2至約100)。舉例而言,助手軟體緒可代表眾多不同型式的程序或工作負擔,舉例而言,例如圖形、聲音、訊號處理、科學計算、交易、資料庫處理、或各式各樣的其它程序或工作負擔。在某些實施例中,藉由執行在由用戶等級分叉指令所標示之單一指令位址的相同指令235之不同的對應情形,各助手軟體緒開始。舉例而言,用戶等級分叉指令使相同的指令位址儲存在眾多程式計數器(例如暫存器)中的各計數器中,各程式計數器均對應於被用以執行對應的助手軟體緒236之多個附加處理器元件中不同之一。程式計數器在此技藝中也稱為指令指標器。替代地不同的指令位址可由指令標示,不同的指令位址可以儲存在程式計數器中,以及,不同的對應指令可以由不同的處理器元件初始地執行。在各助手軟體緒執行其對應的開始指令235之後,它們可以選擇性地/潛在地執行不同序列的指令(例如採取不同的分支、不同地跳躍或四處移動、作出不同程序呼叫、等等)。有利地,這些平行的助手軟體緒有助於增加資料輸貫量及/或性能。舉例而言,各平行的助手軟體緒會在例如圖形負擔、科學計算工作負擔、等等可平行化或可緒化的工作負擔的不同部份上工作。平行的助手軟體緒可以至少部份平行地執行整體工作負擔的不同部份,而不是主緒需要序列地執行與整體工作負擔有關的所有工作。
在某點時,正平行地執行助手軟體緒236中之一的各處理器元件可以執行用戶等級同步及結束指令218的對應情形。舉例而言,第一助手軟體緒包含第一用戶等級同步及結束指令218-1,以及,第N助手軟體緒包含第N用戶等級同步及結束指令218-N。部份地取決於不同的助手軟體緒執行的不同方式(例如分支、跳躍、等等),可以在不同時間執行這些用戶等級同步及結束指令。在某些實施例中,用戶等級同步及結束指令218可以操作以配置或以其它方式造成同步障壁238。在某些實施例中,為回應執行對應的用戶等級同步及結束指令218,各處理器元件可以停止執行對應的助手軟體緒236的附加指令以及在同步障壁238等待(例如,對應的程式計數器不會前進)直到所有被用以執行助手軟體緒236之其它處理器元件執行它們對應的用戶等級同步及結束指令218為止。然後,當所有其它處理器元件執行它們對應的用戶等級同步及結束指令218時,最後執行的用戶等級同步及結束指令218會在控制流中造成同步合併或會合240而使平行的助手軟體緒236的執行終止、以及促使執行在主緒232中的適當會合位址處隨指令242繼續。
圖3是包含用戶等級分叉及同步會合指令306的實施例之分叉會合碼330的方塊圖,用戶等級分叉及同步會合指令306會操作以配置或以其它方式使主緒332停止執行及在隱含的同步障壁338等待。主緒332會在第一處理器元件(例如處理器元件102)上運行。主緒包含用戶等級
分叉及同步會合指令306。用戶等級分叉及同步會合指令當被執行時會配置或以其它方式在控制流中造成分支或分叉334,其中,眾多平行的助手軟體緒336會各自被啟始以在眾多附加處理器元件(例如附加處理器元件114)中不同之一上運行。在本實施例中,用戶等級分叉及同步會合指令當被執行時也會配置或以其它方式促使執行主軟體緒332的處理器元件停止執行主軟體緒332的增加指令,以及又使執行在隱含的同步障壁338等待,然後在由用戶等級分叉及同步會合指令決定的指令位址發生會合(例如,依原始程式次序,指令350緊隨用戶等級分叉及同步會合指令306)。
在某些實施例中,用戶等級分叉及同步會合指令標示單一指令位址,以及,各平行的助手軟體緒336會在位於用戶等級分叉指令306指明的或以其它方式標示之單一指令位址之相同指令335的對應情形開始執行。各平行的助手軟體緒接著執行潛在不同的增加指令集(例如導因於不同的分支、跳躍、程序呼叫、等等)。替代地,用戶等級分叉指令可以標示多個潛在地/選擇地不同的指令位址,以及,各平行助手軟體緒在選擇地/潛在地不同的指令位址開始執行。最後,各平行助手軟體緒典型上在不同時間執行用戶等級同步及結束指令318的對應情形。各處理器元件當執行對應的用戶等級同步及結束指令時,其會停止執行對應的助手軟體緒之增加的指令,執行又會在正由主軟體緒332觀察的相同的隱含同步障壁338處等待。當各
別及全部其它平行的助手軟體緒執行其對應的用戶等級同步及結束指令時,執行其對應的用戶等級同步及結束指令的最後處理器元件會配置或以其它方式促使控制流中的合併或會合340回至適當的會合位址(例如由用戶等級分叉及同步會合指令決定的會合指令位址)。各平行的助手軟體緒的執行終止。主軟體緒332*的繼續執行會隨著主緒中緊隨在用戶等級分叉及同步會合指令之指令350而繼續。在本實施例中,由於對於用戶等級分叉及同步會合指令而不是被用以產生明確的同步障壁之分別的指令而言,同步障壁是內在的或是固有的,所以,隱含一詞係用於內含的同步障壁。
圖4是包含用戶等級分叉指令406及分別的用戶等級同步及會合指令452的實施例之分叉會合碼430的方塊圖,用戶等級同步及會合指令452會操作以配置或以其它方式使主緒432停止執行及在明確的同步障壁438等待。
主緒432會在第一處理器元件(例如處理器元件102)上運行。主緒包含用戶等級分叉指令406。用戶等級分叉指令當被執行時會配置或以其它方式在控制流中造成分支或分叉434,其中,眾多平行的助手軟體緒436會各自被啟始以在眾多附加處理器元件(例如附加處理器元件114)中不同之一上運行。在本實施例中,用戶等級分叉指令406當被執行時不會促使正執行主軟體緒432的處理器元件停止執行增加的指令或是在同步障壁等待。相反地,處理器元件繼續執行主軟體緒的一或更多增加的指
令,包含在主緒中依原始程式次序緊隨在用戶等級分叉指令406之後的指令450。
主軟體緒也包含用戶等級同步及會合指令452。用戶等級同步及會合指令當被執行時會操作以配置或以其它方式促使執行主軟體緒的處理器元件停止執行主軟體緒的增加的指令以及為繼續執行而在明確的同步障壁438等待。在某些實施例中,用戶等級同步及會合指令452具有不同於用戶等級分叉指令406的作業碼。在某些實施例中,用戶等級同步及會合指令452與用戶等級同步及結束指令418具有相同的作業碼。在其它實施例中,用戶等級同步及會合指令452具有與用戶等級同步及結束指令418不同的作業碼。
在某些實施例中,用戶等級分叉指令可以選擇性地標示單一指令位址,以及,各平行的助手軟體緒436會在位於用戶等級分叉指令406指明的或以其它方式標示之單一指令位址之相同指令435的對應情形開始執行。各平行的助手軟體緒接著執行潛在不同的增加指令集(例如導因於不同的分支、跳躍、程序呼叫、等等)。替代地,用戶等級分叉指令可以標示多個潛在地/選擇地不同的指令位址,以及,各平行助手軟體緒在選擇地/潛在地不同的指令位址開始執行。最後,各平行助手軟體緒典型上在不同時間執行用戶等級同步及結束指令418的對應情形。各處理器元件當執行對應的用戶等級同步及結束指令時,其會停止執行對應的助手軟體緒之增加的指令,執行又會在導
因於用戶等級同步及會合指令452之正由主軟體緒432觀察的相同的隱含同步障壁438處等待。當各別及全部其它平行的助手軟體緒執行其對應的用戶等級同步及結束指令時,執行其對應的用戶等級同步及結束指令的最後處理器元件會配置或以其它方式促使控制流中的合併或會合440同步。各平行的助手軟體緒的執行終止。主軟體緒432*的繼續執行會隨著在用戶等級同步及會合指令決定的適當會合位址之指令繼續進行,舉例而言,在所述適當會合位址之指令可為主緒中依原始程式次序緊隨用戶等級同步及會合指令452之指令454。
如上所述,第一處理器元件(例如,第一處理器元件102)執行用戶等級分叉指令(例如用戶等級分叉指令106),以及眾多附加處理器元件(例如附加處理器元件114)中的各處理器元件可以執行用戶等級同步及結束指令的實施例(例如用戶等級同步及結束指令118)。在某些實施例中,同質處理器元件可以用於第一處理器元件各附加處理器元件。在其它實施例中,第一處理器元件具有相對於各附加處理器元件之異質或不同的設計。
圖5是成對的同質處理器元件560的舉例說明的實施例之方塊圖,成對的同質處理器元件560包含適用於執行包含用戶等級分叉指令的串列緒之第一處理器元件502以及適用於執行包含用戶等級同步及結束指令的眾多平行緒中之一的附加處理器元件514。成對的同質處理器元件可以實質上相同的。舉例而言,各同質處理器元件可以是具
有相同設計之核心、硬體緒、等等。在某些實施例中,第一及附加的處理器元件都具有相同的指令集504,第一及附加的處理器元件都具有相同的架構特點集562(例如架構暫存器、資料型式、等等),以及,第一及附加的處理器元件都具有相同的微架構564。
替代地,不使用同質處理器元件,使用異質處理器元件會有優點。舉例而言,有利於設計或最佳化不同於要執行串列序的處理器元件之要執行平行緒的處理器元件。圖6是成對的異質處理器元件668的舉例說明的實施例之方塊圖,成對的異質處理器元件668包含適用於執行包含用戶等級分叉指令的串列緒之第一處理器元件602以及適用於執行包含用戶等級同步及結束指令的眾多平行緒中之一的附加處理器元件614。
異質處理器元件在不同實施例中以不同方式相異。如同所示,在某些實施例中,第一處理器元件的指令集604選擇性地不同於附加處理器元件之指令集616。舉例而言,這二指令集都包含重疊指令集670,但是,第一處理器元件的指令集選擇性地包含未包含於附加處理器元件的指令集616中的一或更多未重疊指令671,及/或附加處理器元件的指令集包含未包含於第一處理器元件的指令集604中的一或更多未重疊指令672。關於一實例,在某些實施例中,附加處理器元件614(亦即,會執行平行緒及用戶等級同步及結束指令)可以選擇性地排它地專用於執行特權的用戶等級或非特權等級。在這些實施例中,附加
處理器元件可以選擇性地省略包含在第一處理器元件的指令集中的所有特權或是非用戶等級指令。在其它實施例中,指令集可以在不同方式上不同。舉例而言,執行用於平行緒之給定型式的碼時不需要的任何指令可以從附加處理器元件的指令集省略。
如同所示,在某些實施例中,第一處理器元件的微架構664可以選擇性地不同於附加處理器元件的微架構674。舉例而言,在某些實施例中,第一處理器元件的微架構可以選擇性地設計成強調降低指令效能潛候期,而附加處理器元件的微架構可以選擇性地設計成不會如此多地強調降低效能潛候期而是強調增加的輸貫量。舉例而言,為了降低潛候期,可以選擇性地使用亂序執行及/或其它複雜的機制。但是,亂序執行資源及其它這些複雜資源傾向於與設計處理器的能力相競爭,以取得最大的平行輸貫量。舉例而言,當各核心相對較大以容納亂序及/或其它複雜資源時,相對於省略這些資料的較小核心的數目,更少數的較大核心能夠適配於相同尺寸的晶粒上。假使取代地,更多較小核心包含於晶粒上時,則藉由執行更多的緒,而即使這些緒中的各緒具有更高的潛候期,仍可以取得更高的輸貫量。當有很多這些緒時,使緒保持忙碌變成比降低個別緒的潛候期更重要。而且,對於相同的輸貫量,亂序執行資源傾向於消耗更多功率。
因此,在某些實施例中,第一處理器元件的微架構選擇性地為亂序執行微架構,而附加處理器元件的微架構選
擇性地為有序執行微架構、實質有序微架構、或是至少比第一處理器元件的微架構顯著地更有序的微架構。在某些實施例中,第一處理器元件的微架構包含一或更多亂序執行資源675,而附加處理器元件的微架構選擇性地省略(677)這些亂序執行資源。這些亂序資源的實例包含但不限於用以儲存指令直到它們的輸入運算元可供利用為止的保留站、指令緩衝器、或其它指令佇列、用以亂序地發布指令給執行單元的亂序發布單元、用以將指令及它們的結果重排序回至原始的程式次序之重排序緩衝器或其它指令緩衝器或佇列、以及用以將亂序地執行的指令結果依原始程式次序交付給架構狀態之交付單元。在各式各樣的實施例中,第一處理器元件(亦即,用以執行用戶等級分叉指令)具有交付單元但是附加處理器元件(亦即,用以執行用戶等級同步及結束指令)未具有,及/或第一處理器元件可具有重排序緩衝器但是附加處理器元件則未具有,及/或第一處理器元件具有保留站但是附加處理器元件未具有。在某些實施例中,第一處理器元件具有相對低的平均指令性能潛候期,而附加處理器元件具有相對較高的平均指令效能潛候期。
關於另一實例,在某些實施例中,執行具有用戶等級分叉指令之一型式的碼(例如主緒)所需的或相對更有用的、但是執行具有用戶等級同步及結束指令之另一型式的碼(例如助手軟體緒中之一)不需要的或不是如此有用的一或更多微架構資源,可以選擇性地包含於第一處理器元
件602中,但是,可以從附加處理器元件614選擇性地省略。在某些實施例中,不同型式的碼或物件可以用於第一處理器元件及附加處理器元件且它們的微架構會對應地不同。在某些實施例中,附加處理器元件的微架構可以選擇性地包含簡化的緒相互相依性及/或排序資源678,資源678可以選擇性地相對於第一處理器元件的微架構的緒相互相依性及/或排序資源676更簡化。在一態樣中,第一處理器元件及附加處理器元件都需要遵守與存取共用記憶體相關連的排序規則,但是,由於附加處理器元件可以是有序的或是至少比亂序的第一處理器元件更有序,所以,在附加處理器元件內用以強化這些共用記憶體存取排序規則的機構可以簡化。換言之,在亂序的第一處理器元件中通常需要的複雜度可以從有序或是更有序的附加處理器元件中選擇性地省略。舉例而言,用以實施記憶體存取防禦指令的機構(例如儲存防禦指令、載入防禦指令、記憶體防禦指令、等等)在附加處理器元件中可以比在第一處理器元件中選擇性地簡化。在其它實施例中,假使平行碼(例如平行的助手緒)不需要那些資源或是未如同具有那些資源一般多地得利時,則包含於第一處理器元件的微架構中的其它微架構資源可以選擇性地從附加處理器元件的微架構省略。
關於另一實例,在某些實施例中,附加處理器元件(例如包含附加處理器元件614)可以共用未由第一處理器元件602共用的資源,及/或附加處理器元件(例如包
含附加處理器元件614)可以比第一處理器元件602更大程度地共用資源。關於一實例,在某些實施例中,較大數目的附加處理器元件614共用解碼器,而較少數目的第一處理器元件602共用解碼器。舉例而言,在各式各樣的實施例中,從1至約10、或從1至約5個第一處理器元件602可以共用解碼器,而從10至300、或從20至300、或從50至300個附加處理器元件614可以共用解碼器。在某些實施例中,附加處理器元件614可以利用具有已解碼的指令之快取記憶體,以及,由於附加處理器元件在大部份的情形中大部份執行相同或類似的指令,所以,已解碼的指令已經存在於快取記憶體中,以致於解碼器可由數目上比通常實際上用於執行更多異質碼的第一處理器元件還多的附加處理器元件使用。
關於另一實例,在某些實施例中,相較於共用最低階層或階層1(L1)快取記憶體之第一處理器元件602的數目,數目更多的附加處理器元件614可以共用最接近執行單元之最低階層或階層1(L1)快取記憶體。舉例而言,在各式各樣的實施例中,從1至8、或是從1至4個第一處理器元件602可以共用L1快取記憶體,而10個以上或是20個以上的附加處理器元件可以共用L1快取記憶體。
圖7是用以執行用戶等級分叉指令706的實施例之處理器700的舉例說明的實施例之方塊圖。處理器包含第一處理器元件702以及眾多附加處理器元件714,眾多附加處理器元件714包含第一附加處理器元件714-1至第N附
加處理器元件714-N。第一處理器元件具有指令提取單元781。舉例而言,提取單元會根據用以從第一處理器元件的程式計數器783提取之下一指令的標示,從記憶體提取用戶等級分叉指令。用戶等級分叉指令代表巨集指令、組合語言指令、機器碼指令、或第一處理器元件的指令集的其它指令或控制訊號。在某些實施例中,用戶等級分叉指令可以明確地指明(例如經由一或更多欄位或是位元集合),或是以其它方式標示(例如隱含地標示)至少一指令位址。先前所述之標示指令位址的不同方式是適當的。
提取單元可以提供用戶等級分叉指令給解碼單元708。解碼單元可以將用戶等級分叉指令解碼。解碼單元可以輸出反應、代表、及/或從相對較高階的用戶等級分叉指令導出之一或更多相對較低階的指令或控制訊號(例如,一或更多微指令、微作業、微碼登入點、已解碼指令或控制訊號、等等)。在某些實施例中,解碼單元包含一或更多輸入結構(例如埠、互連、介面)以接收用戶等級分叉指令、與其耦合之指令辨認及解碼邏輯以辨認及解碼用戶等級分叉指令、以及與其耦合之一或更多輸出結構(例如埠、互連、介面)以輸出較低階指令或控制訊號。可以使用各種不同的機構以實施解碼單元,所述各種不同的機構包含但不限於微碼唯讀記憶體(ROM)、查詢表、硬體實施、可編程邏輯陣列(PLA)、及其它適合實施解碼單元的機構。
用戶等級緒分叉模組710與解碼單元708耦合。用戶
等級緒分叉模代表一或更多用以執行或實行用戶等級分叉指令之執行單元。用戶等級緒分叉模可以接收代表及/或從用戶等級分叉指令導出之一或更多已解碼的或以其它方式轉換的指令或控制訊號。用戶等級分叉指令及/或處理器包含特定或特別的邏輯(例如電晶體、積體電路、或其它可能與韌體(例如儲存於非依電性記憶體中的指令)及/或軟體結合的硬體),其會操作以執行用戶等級分叉指令(例如,為回應自用戶等級分叉指令解碼的一或更多指令或控制訊號)。回應用戶等級分叉指令及/或因用戶等級分叉指令的結果(例如,回應自指令解碼的一或更多指令或控制訊號),用戶等級分叉模組可以操作以將眾多附加處理器元件714的各附加處理器元件配置成從用戶等級分叉指令所標示的一或更多指令位址開始,平行地執行指令。
在某些實施例中,為回應指令,用戶等級緒分叉模組可以將一或更多指令位址786儲存在第一處理器元件及各附加處理器元件都可存取的一或更多儲存位置785。如同所示,在某些實施例中,選擇性地儲存指令位址786-1至786-N以用於要被用於平行處理之各附加處理器元件714-1至714-N。如先前所述般,在某些實施例中,儲存相同的單一位址以用於各附加處理器元件,或者,在其它實施例中,儲存潛在地/選擇性地不同的指令位址(例如,來自向量暫存器的不同的資料元件)以用於各附加處理器元件。各附加處理器元件可以存取一或更多指令位址786及
在該指令位址開始平行處理。在某些實施例中,各附加處理器元件可以拷貝或儲存此指令位址至對應的程式計數器中或指令指標器中。替代地,為回應用戶等級分叉指令,用戶等級緒分叉模組可以操作以將此位址直接儲存至各程式計數器或指令指標器中。
第一處理器元件也具有架構狀態784。在某些實施例中,架構狀態784包含例如一般用途暫存器、緊縮資料暫存器、浮點暫存器、狀態暫存器等一或更多架構暫存器的內容或值、以及可能第一處理元件的其它架構狀態。在某些實施例中,為回應指令,用戶等級緒分叉模組會將某些或全部架構狀態784的一或更多拷貝作為架構狀態787儲存在一或更多儲存位置785中。在一實施例中,架構狀態包含如先前所述的處理器的一或更多組架構暫存器之值或內容。如同所示,在某些實施例中,將架構狀態787-1至787-N的不同對應的拷貝選擇性地儲存用於要被用於平行處理之各附加處理器元件714-1至714-N。接著,各附加處理器元件存取一或更多組架構狀態及在平行處理中使用該架構狀態。在某些實施例中,各附加處理器元件可以將此架構狀態選擇性地拷貝或儲存在對應於各附加處理器元件之本地儲存器中,舉例而言,本地儲存器可為複製的架構暫存器組、一或更多快取記憶體(例如暫存器快取記憶體)、或其它本地儲存裝置。
不同型式的儲存位置785適用於不同的實施例。適當的儲存位置的實例包含但不限於第一處理器元件的一或更
多暫存器、附加處理器元件的一或更多暫存器、由第一處理器元件與各附加處理器元件共用的記憶體中的記憶體位置、等等、以及其組合。在某些實施例中,儲存位置可代表由第一處理器元件與被用以實行平行處理控制資料結構之各附加處理器元件共用之使用者可定址的記憶體空間中的一或更多記憶體位置。在某些實施例中,此平行處理控制資料結構與作業系統使用的程序呼叫堆疊分開。在某些實施例中,此平行處理控制資料結構可以由第一處理器元件及各附加處理器元件存取以及可用以在第一處理器元件與各附加處理器元件之間傳遞特定實施所需之各種不同型式的控制及資料。替代地,可以取代地選擇性使用各種其它型式的儲存位置。
在某些實施例中,在儲存一或更多指令位址及一或更多組架構狀態之後,為回應指令,用戶等級緒分叉模組會發送一或更多控制訊號以致動或初始化各附加處理器元件平行處理。替代地,在其它實施例中,由於可以根據其它準則(例如,程式化於程式計數器或儲存位置785中的值,程式化於儲存位置785中的架構狀態、等等)而推論此附加的作業,所以,可以選擇性地省略此附加的作業。在某些實施例中,不需要來自作業系統的介入、及不需要服從作業系統來初始這些附加處理器元件以執行平行處理。
在某些實施例中,用戶等級分叉指令也選擇性地對在第一處理器元件上執行的緒或其它碼施加同步障壁,但這
並非必要(例如,可以選擇性地使用分別的用戶等級同步及會合指令)。如同所示,在這些實施例中,第一處理器元件可以選擇性地包含同步會合模組782。同步會合模組可以與解碼單元耦合。在某些實施例中,為回應用戶等級分叉指令,同步會合模組可以操入以凍結程式計數器783或以其它方式促使程式計數器停止增量。這會促使緒及/或第一處理器元件所作之另外的指令的執行停止。如同所示,同步會合模組可以與同步障壁結構788相耦合。眾多附加處理器元件也各自耦合同步障壁結構。各附加處理器元件當其執行用戶等級同步及結束指令時會更新同步障壁結構中的對應狀態。關於一實例,同步障壁結構可為計數器,每當眾多附加處理器元件中之一執行其用戶等級同步及結束指令時,計數器會增量或減量。關於另一實例,同步障壁結構包含具有用於各附加處理器元件之不同的對應位元之暫存器,當各附加處理器元件執行其用戶等級同步及結束指令時,可以依特定實施的需求,將對應位元設定或清除。同步會合模組782可以觀察同步障壁結構中的狀態,以及,當狀態標示所有的附加處理器元件執行它們對應的用戶等級同步及結束指令時,促使程式計數器783恢復增量。提取單元接著提取附加的指令,當緒或碼的其它部份繼續由第一處理器元件執行時,所述附加的指令會被解碼或執行。
圖8是用以執行用戶等級同步及結束指令818的實施例之處理器800的舉例說明的實施例之方塊圖。處理器包
含附加處理器元件814以執行用戶等級同步及結束指令。處理器也包含第一處理器元件802(舉例而言,非限定地,其先前已執行用戶等級同步及結束指令(例如指令706))。附加處理器元件具有指令提取單元881,提取單元881會根據用以從附加處理器元件的程式計數器883提取之下一指令的標示,(例如從記憶體)提取用戶等級同步及結束指令。用戶等級同步及結束指令代表巨集指令、組合語言指令、機器碼指令、或附加處理器元件的指令集的其它指令或控制訊號。
提取單元可以提供用戶等級同步及結束指令給解碼單元808。解碼單元可以將用戶等級同步及結束指令818解碼。解碼單元可以輸出反應、代表、及/或從相對較高階的用戶等級同步及結束指令導出之一或更多相對較低階的指令或控制訊號(例如,一或更多微指令、微作業、微碼登入點、已解碼指令或控制訊號、等等)。使用與此處所述的其它解碼器相同的方式,實施解碼單元。
用戶等級同步緒結束單元或模組890與解碼單元808的輸出耦合。用戶等級同步緒結束模組代表用以執行或實行用戶等級同步及結束指令之一或更多執行單元。用戶等級同步緒結束模組可以接收代表及/或從用戶等級同步及結束指令導出之一或更多已解碼或以其它方式轉換的指令或控制訊號。用戶等級同步緒結束模組及/或處理器可以包含特定的或特別的邏輯(例如電晶體、積體電路、或其它可能與韌體(例如儲存於非依電性記憶體中的指令)及
/或軟體結合的硬體),其會操作以執行用戶等級同步及結束指令(例如,為回應自用戶等級同步及結束指令解碼的一或更多指令或控制訊號)。回應用戶等級同步及結束指令或因用戶等級同步及結束指令(例如,為回應從指令解碼的一或更多指令或控制訊號),用戶等級同步緒結束模組可以操作以配置、促使、或造成附加處理器元件停止執行附加指令、以及在同步障壁等待直到所有其它附加處理器元件(例如由相同的用戶等級分叉指令初始化的那些附加處理器元件)執行其對應的用戶等級同步及結束指令及/或到達同步障壁為止。在某些實施例中,這包含同步緒結束模組,同步緒結束模組傳送或以其它方式提供訊號891給程式計數器883以凍結或停止程式計數器,以致於附加指令不會被提取或處理。在某些實施例中,這包含同步緒結束模組,同步緒結束模組傳送或以其它方式提供訊號892給選加的同步障壁結構888以標示附加處理器元件正執行它的用戶等級同步及會合指令及/或達到同步障壁。如先前所述,實施障壁結構的不同方式是可能的,舉例而言,具有不同的位元用於眾多附加處理器元件中的不同附加處理器元件之暫存器、用以增量或減量的計數器、等等。
在某些實施例中,假使附加處理器元件是已由給定的用戶等級分叉指令致動之所有附加處理器元件中最後一個到達同步障壁的,則用戶等級同步緒結束模組可以操作,以在各附加處理器元件執行對應的用戶等級同步及結束指
令之後,將控制傳回至第一處理器元件上的緒。舉例而言,在某些實施例中,最後一個到達障壁的附加處理器元件之同步緒結束模組可以選擇性地傳送或以其它方式提供訊號893給第一處理器元件,以標示所有附加處理器元件到達障壁以及會合將完成及第一處理器元件上的緒的執行將恢復。在其它實施例中,當所有被致動的附加處理器元件到達同步障壁時,第一處理器元件選擇性地觀察同步障壁中的狀態,或是從同步障壁接收訊號。
附加處理器元件具有架構狀態884。架構狀態包含先前述及的架構狀態型式,例如一般用途暫存器、緊縮資料暫存器、浮點暫存器、狀態暫存器、指令指標器、等等。如同所示,在某些實施例中,架構狀態包含一或更多所謂的固著旗標(例如固著錯誤旗標)894。舉例而言,這些固著旗標包含固著浮點狀態或錯誤旗標,例如除以0旗標、無效作業旗標、不正常旗標、等等。關於一特定實例,固著旗標包含x86處理器中的MXSCR暫存器中的固著浮點錯誤旗標。這些旗標是相對固著的,意指一旦它們被設定,則它們一般不會被清除,假使適當時,會直到可能的錯誤條件被完全研究及解決為止。固著旗標與例如進位旗標、溢位旗標、零旗標、及其它算術旗標等非固著旗標是相反的。
在某些實施例中,為回應用戶等級同步及結束指令,用戶等級等步緒結束模組會操作以將附加處理器元件遭遇的錯誤條件資訊及/或一或更多錯誤條件的標示傳送給第
一處理器元件。在某些實施例中,錯誤條件資訊相關連及/或包含或標示固著旗標894中之一或更多。傳輸或標示這些固著旗標或錯誤條件資訊給第一處理器元件有助於允許第一處理器元件分析固著旗標或是其它錯誤條件資訊,以及於適當處採取適當動作。在不同實施例中,以不同方式傳輸或標示此錯誤條件資訊。在某些實施例中,各附加處理器元件將分別的此資訊組傳輸給第一處理器元件。在其它實施例中,合併的或結合的此資訊組可以傳輸給第一處理器元件。舉例而言,當各附加處理器元件執行其用戶等級同步及結束指令時,其會將此錯誤條件資訊直接傳送給第一處理器元件。代表性地,第一處理器元件將資訊吸收至其對應的架構暫存器中,然後,據此處理錯誤條件資訊。
關於另一實例,當各附加處理器元件執行其同步及結束指令時,其會發訊(897)或以其它方式傳輸此錯誤條件資訊給附加處理器元件及第一處理器元件可存取的儲存位置885。不同型式的儲存位置適用於不同實施例。適合的儲存位置實例包含但不限於附加處理器元件的一或更多暫存器、第一處理器元件的一或更多暫存器、第一處理器元件與附加處理器元件共用的記憶體中的一或更多記憶體位置、等等、及其組合。在某些實施例中,儲存位置代表可由第一處理器元件及各附加處理器元件共用、以及可用以實施平行處理控制資料結構之使用者可定址的記憶體空間中的一或更多記憶體位置。在某些實施例中,此平行處
理控制資料結構可以與作業系統使用的程序呼叫堆疊分開。在某些實施例中,此平行處理控制資料結構可以由第一處理器元件及各附加處理器元件存取,以及可用以在第一處理器元件與各附加處理器元件之間傳遞特定實施所需之各種不同型式的控制和資料。替代地,可以選擇性地、取代地使用各種其它型式的儲存位置。
任一組此錯誤條件資訊可以儲存在用於各附加處理器元件的儲存位置885中,或者,此錯誤條件資訊的單一結合或合併組可以維持在或儲存在儲存位置中。舉例而言,假使給定的固著錯誤條件被設定於任何附加處理器元件中時,則錯誤條件資訊的合併或結合組可以設定給定的固著錯誤條件旗標。換言之,維持單組累積的錯誤條件資訊,代表任何附加處理器元件中任何的錯誤條件且此單組累積的錯誤條件資訊可以傳輸給第一處理器元件。這些僅是一些說明的實例。也可以想到傳輸錯誤條件資訊的其它方式。在某些實施例中,為回應用戶等級同步及結束指令,附加處理器元件也將執行的結果保留或儲存(896)於例如共用的用戶記憶體空間等儲存位置885中。
處理器核心可以以不同方式實施、用於不同目的、及在不同處理器中。舉例而言,這些核心的實施包含:1)用於一般用途的計算之一般用途的有序核心;2)用於一般用途的計算之高性能的一般用途的亂序核心;3)主要
用於圖形及/或科學(輸貫量)計算之特別用途的核心。不同處理器的實施包含:1)CPU,包含用於一般用途的計算之一或更多一般用途的有序核心及/或用於一般用途的計算之一或更多一般用途的亂序核心;以及,2)共處理器,包含一或更多主要用於圖形及/或科學(輸貫量)計算之特別用途的核心。這些不同的處理器導致不同的電腦系統架構,包含:1)共處理器與CPU在不同的晶片上;2)共處理器在與CPU相同封裝中的不同晶片上;3)共處理器與CPU在相同晶粒上(在此情形中,此共處理器有時稱為特別用途邏輯,例如集成的圖形及/或科學(輸貫量)邏輯、或是特別用途的核心);以及,4)系統晶片,在相同晶粒上包含所述CPU(有時稱為應用核心或是應用處理器)、上述共處理器、及其它功能。在說明舉例說明的處理器及電腦架構之後,接著說明舉例說明的核心架構。
圖9A是方塊圖,顯示根據本發明的實施例之舉例說明的有序管線及舉例說明的暫存器重命名、亂序發布/執行管線。圖9B是方塊圖,顯示根據本發明的實施例之要包含於處理器中之舉例說明的有序架構核心及舉例說明的暫存器重命名、亂序發布/執行架構核心。圖9A-B中的實線框顯示有序管線及有序核心,而選加的虛線框顯示暫存
器重命名、亂序發布/執行管線及核心。假定有序態樣是亂序態樣的子集合,將說明亂序態樣。
在圖9A中,處理器管線900包含提取級902、長度解碼級904、解碼級906、分配級908、重命名級910、排程(也稱為發送或發布)級912、暫存器讀取/記憶體讀取級914、執行級916、寫回/記憶體寫入級918、例外處理級922、及交付級924。
圖9B顯示處理器核心990,其包含耦合至執行引擎單元950的前端單元930,引擎單元950及前端單元930都耦合至記憶體單元970。核心990可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心、或是混合或替代核心型式。又另一選項,核心990可為特別用途核心,例如,網路或通訊核心、壓縮引擎、共處理器核心、一般用途計算圖形處理單元(GPGPU)核心、圖心核心、等等。
前端單元930包含耦合至指令快取單元934的分支預測單元932,指令快取單元934耦合至指令轉譯旁看緩衝器(TLB)936,指令轉譯旁看緩衝器(TLB)936耦合至指令提取單元938,指令提取單元938耦合至解碼單元940。解碼單元940(或解碼器)將指令解碼,以及產生從原始指令解碼、或是以其它方式反應原始指令、或是從原始指令導出之一或更多微作業、微碼進入點、微指令、其它指令、或其它控制訊號,以作為輸出。可以使用各種不同的機構以實施解碼單元940。適當機構的實例包含但
不限於查詢表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一實施例中,核心990包含微碼ROM或儲存微碼以用於某些巨集指令的媒體(例如,在解碼單元940中或者是在前端單元930內)。解碼單元940耦合至執行引擎單元950中的重命名/分配器單元952。
執行引擎單元950包含耦合至退出單元954的重命名/分配器單元952及一或更多排程器單元956的集合。排程器單元956代表任何數目的不同排程器、包含保留站、中央指令窗、等等。排程器單元956耦合至實體暫存器檔案單元958。各實體暫存器檔案單元958代表一或更多實體暫存器檔案,不同的實體暫存器檔案儲存一或更多不同的資料型式,例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如指令指標器,指令指標器是要被執行的下一指令之位址)、等等。在一實施例中,實體暫存器檔案單元958包括向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可以提供架構向量暫存器、向量遮罩暫存器、及一般用途暫存器。實體暫存器檔案單元958由退出單元954重疊以顯示實施暫存器重命名及亂序執行的各種方式(例如,使用再排序緩衝器和退出暫存器檔案;使用未來檔案、歷史緩衝器、及退出暫存器檔案;使用暫存器映射及暫存器庫;等等)。退出單元954及實體暫存器檔案單元958耦合至執行簇960。執行簇960包含一或更多執行單元962
及一或更多記憶體存取單元964的集合。執行單元962執行多種作業(例如,偏移、加法、減法、乘法)及對各種型式的資料(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行。雖然某些實施例包含多個專用於特定指令或功能集的執行單元,但是,其它實施例可以僅包含都執行所有功能之多個執行單元或是一執行單元。由於某些實施例產生用於某些型式的資料/作業之分別的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,這些管線均具有它們自已的排程器單元、實體暫存器單元、及/或執行簇-以及,在分別的記憶體存取管線的情形中,實施某些實施例,其中,僅有此管線的執行簇具有記憶體存取單元964),所以,排程器單元956、實體暫存器檔案單元958、及執行簇960顯示為可能是複數的。也應瞭解,在使用分別的管線之情形中,這些管線中之一或更多可以是亂序發布/執行而其餘的為有序。
記憶體存取單元964的組耦合至記憶體單元970,記憶體單元970包含資料轉譯旁看緩衝器(TLB)單元972,資料TLB單元972耦合至資料快取單元974,資料快取單元974耦合至階層2(L2)快取單元976。在一舉例說明的實施例中,記憶體存取單元964包含載入單元、儲存位址單元、及儲存資料單元,各單元均耦合至記憶體單元970中的資料TLB單元972。指令快取單元934又耦合至記憶體單元970中的階層2(L2)快取單元976。L2
快取單元976耦合至一或更多其它等級的快取記憶體以及最後耦合至主記憶體。
舉例而言,舉例說明的暫存器重命名、亂序發布/執行核心架構可以實施如下所述的管線900:1)指令提取938執行提取及長度解碼級902和904;2)解碼單元940執行解碼級906;3)重命名/分配器單元952執行分配級908及重命名級910;4)排程器單元956執行排程級912;5)實體暫存器檔案單元958及記憶體單元970執行暫存器讀取/記憶體讀取級914;執行簇960執行執行級916;6)記憶體單元970及實體暫存器檔案單元958執行寫回/記憶體寫入級918;7)牽涉例外處理級922的多種單元;及8)退出單元954及實體暫存器檔案單元958執行交付級924。
核心990支援一或更多指令集(例如,x86指令集(具有添加更新的版本之某些延伸);加州Sunnyvale的MIPS Technologies公司之MIPS指令集;加州Sunnyvale的ARM Holdings公司的ARM指令集(具有例如NEON等選加的延伸)),包含此處所述的指令。在一實施例中,核心990包含邏輯以支援緊縮資料指令集延伸(例如,AVX1、AVX2),藉以允許使用緊縮資料來執行由很多多媒體應用所使用的作業。
應瞭解,核心可支援多緒化(執行二或更多平行組的作業或緒),以及以包含時間切片多緒化、同時多緒化(其中,單一實體核心提供用於各緒之邏輯核心,實體核
心是同時多緒的)等等的各種方式、或者其組合,來如此執行(例如,在Intel®的混合緒化技術中之時間切片提取及解碼和之後的同時多緒化)。
雖然在亂序執行的背景下說明暫存器重命名,但是,應瞭解,在有序架構中可使用暫存器重命名。雖然所示的處理器之實施例也包含分別的指令及資料快取單元934/974以及共用的L2快取單元976,但是,替代的實施例可以具有用於指令及資料之單一內部快取記憶體,例如階層1(L1)內部快取記憶體、或多等級內部快取記憶體。在某些實施例中,系統包含內部快取記憶體及核心和/或處理器之外部的外部快取記憶體的結合。替代地,所有快取記憶體可以是在核心及/或處理器的外部。
圖10A-B是方塊圖,顯示更特定舉例說明的有序核心架構,其中,核心是晶片中數個邏輯區塊(包含相同型式及/或不同型式的其它核心)中之一。邏輯區塊視應用而經由高頻寬互連網路(例如環式網路)與某些固定的功能邏輯、記憶體I/O介面、及其它需要的I/O邏輯通訊。
圖10A是根據本發明的實施例之單一處理器核心、以及其對晶粒上互連網路1002的連接及其區域子集合的階層2(L2)快取記憶體1004之方塊圖。在一實施例中,指令解碼器1000支援具有緊縮資料指令集延伸的x86指令集。L1快取記憶體1006允許對快取記憶體的低潛候期
存取進入純量及向量單元。雖然在一實施例中(為了簡化設計),純量單元1008及向量單元1010使用分別的暫存器組(分別地,純量暫存器1012及向量暫存器1014)以及在它們之間傳輸的資料被寫至記憶體並接著從階層1(L1)快取記憶體1006讀回,但是,本發明的替代實施例可以使用不同的方式(例如,使用單一暫存器組或是包含允許資料在二暫存器檔案之間傳輸而不用被寫入及讀回的通訊路徑)。
L2快取記憶體的區域子集合1004是全區L2快取記憶體的部份,全區L2快取記憶體是被分割成分別的區域子集合,每一處理器核心一區域子集合。各處理器核心對其自己的區域子集合L2快取記憶體1004具有直接存取路徑。由處理器核心讀取的資料儲存在其L2快取子集合1004中,以及,可以與其它存取它們自己的區域L2快取子集合之處理器核心平行地被快速存取。由處理器核心寫入的資料儲存在它自己的L2快取子集合1004中及於需要時從其它子集合湧入。環式網路確保用於共用資料的相干性。環式網路是雙向的,以允許例如處理器核心、L2快取記憶體及其它邏輯區塊等代理器在晶片內彼此通訊。各環式資料路徑是每一方向1012位元寬。
圖10B是根據本發明的實施例之圖10A中的處理器核心之部份擴充視圖。圖10B包含L1快取記憶體1004之L1資料快取記憶體1006A部份、以及與向量單元1010及向量暫存器1014有關的更多詳節。具體而言,向量單
元1010是16位元寬的向量處理單元(VPU)(請參見16寬的ALU 1028),其執行整數、單精度浮動、及雙精度浮動指令中之一或更多。VPU以拌和單元1020支援拌和暫存器輸入、以數值轉換單元1022A-B支援數值轉換、以及以記憶體輸入上的複製單元1024支援複製。寫入遮罩暫存器1026允許預測結果向量寫入。
圖11是根據本發明的實施例之具有一個以上的核心、具有整合記憶體控制器及具有整合的圖形之處理器1100的方塊圖。圖11中的粗線框顯示具有單核心1102A、系統代理器1110、一或更多匯流排控制器單元1116組的處理器1100,而選加的虛線框顯示具有多核心1102A-N、系統代理器單元1110中的一或更多整合的記憶體控制器單元1114的組、以及特別用途的邏輯1108之替代處理器1100。
因此,處理器1100的不同實施包含:1)具有特定用途的邏輯1108之CPU是整合的圖形及/或科學(輸貫量)邏輯(包含一或更多核心),核心1102A-N是一或更多一般用途核心(例如,一般用途的有序核心、一般用途的亂序核心、二者的組合);2)設有核心1102A-N的共處理器是大數目的主要用於圖形及/或科學(輸貫量)之特定用途核心;以及,3)設有核心1102A-N的共處理器是大數目的之一般用途的有序核心。因此,處理器1100可
為一般用途的處理器、共處理器或特定用途的處理器,舉例而言,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(一般用途的圖形處理單元)、高輸貫量多整合核心(MIC)共處理器(包含30或更多的核心)、嵌入式處理器、等等。處理可以實施於一或更多晶片中。使用例如BiCMOS、CMOS、或NMOS等多種製程技術中的任何技術,處理器1100可以是部份及/或實施在一或更多基底上。
記憶體階層包含在核心內的一或更多階層的快取、一或更多共用快取單元1106組、及耦合至整合記憶體控制器單元1114組之外部記憶體(未顯示)。共用快取單元1106的組可以包含例如階層2(L2)、階層3(L3)、階層4(L4)、或其它階層快取等一或更多中級快取、最後階層快取(LLC)、及/或其組合。雖然在一實施例中,環式互連單元1112將整合圖形邏輯1108、共用快取單元1106的組、及系統代理單元1110/整合的記憶體控制器單元1114互連,但是,替代實施例可以使用任何數目的已知技術來互連這些單元。在一實施例中,在一或更多快取單元1106與核心1102-A-N之間維持相干性。
在某些實施例中,一或更多核心1102A-N能夠多緒化。系統代理器1110包含那些協調及作業核心1102A-N之組件。系統代理器單元1110可以包含例如電力控制單元(PCU)及顯示單元。PCU可以是或包含調節核心1102A-N及整合圖形邏輯1108的電力狀態所需的邏輯及
組件。顯示單元是用於驅動一或更多外部連接的顯示器。
以架構指令集的觀點而言,核心1102A-N可以是同質的或異質的;亦即,核心1102A-N中的二或更多核心能夠執行相同的指令集,而其它核心能夠僅執行指令集的子集合或不同的指令集。
圖12-21是舉例說明的電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式各樣的其它電子裝置等領域中熟知的其它系統設計及配置也是適合的。一般而言,能夠包含此處所揭示的處理器及/或其它執行邏輯的眾多種類的系統或電子裝置通常是適合的。
現在參考圖12,其顯示根據本發明的一實施例之系統1200的方塊圖。系統1200可以包含耦合至控制器集線器1220之一或更多處理器1210、1215。在一實施例中,控制器集線器1220包含圖形記憶體控制器集線器(GMCH)1290及輸入/輸出集線器(IOH)1250(可以在分開的晶片上);GMCH 1290包含記憶體及圖形控制器,記憶體1240及共處理器1245耦合至記憶體及圖形控制器;IOH 1250將輸入/輸出(I/O)裝置1260耦合至
GMCH 1290。替代地,記憶體及圖形控制器中之一或二者整合於處理器之內(如此處所述般),記憶體1240及共處理器1245直接耦合至處理器1210,以及,控制器集線器1220與IOH 1250在單一晶片中。
在圖12中以虛線顯示增加的處理器1215之選加本質。各處理器1210、1215包含此處所述的處理核心中之一或更多且可為處理器1100的某版本。
舉例而言,記憶體1240可以是動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或是二者的組合。對於至少一實施例而言,控制器集線器1220經由例如前側匯流排(FSB)等多點匯流排、例如快速路徑互連(QPI)等點對點介面、或是類似連接1295而與處理器1210、1215通訊。
在一實施例中,共處理器1245是特別用途的處理器,例如高輸貫量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。在一實施例中,控制器集線器1220包含整合圖形加速器。
以包含架構、微架構、熱、耗電特徵、等等度量計量範圍的觀點而言,實體資源1210、1215之間有各種差異。
在一實施例中,處理器1210執行控制一般型式的資料處理作業的指令。嵌入於指令內的可為共處理器指令。處理器1210將這些共處理器指令視為應由附接的共處理器1245執行的型式。因此,處理器1210在共處理器匯流
排或是其它互連上發佈這些共處理器指令(或是代表共處理器指令的控制訊號)給共處理器1245。共處理器1245接受及執行收到的共處理器指令。
現在參考圖13,其顯示根據本發明的實施例之第一更特定的舉例說明的系統1300的方塊圖。如圖13中所示般,多處理器系統1300是點對點互連系統,以及包含經由點對點互連1350耦合的第一處理器1370和第二處理器1380。各處理器1370及1380可以是某版本的處理器1100。在本發明的一實施例中,處理器1370和1380分別是處理器1210和1215,而共處理器1338是共處理器1245。在另一實施例中,處理器1370及1380分別是處理器1210和共處理器1245。
處理器1370和1380顯示為分別包含整合記憶體控制器(IMC)單元1372和1382。處理器1370也包含點對點介面(P-P)1376和1378作為其匯流排控制器單元的一部份;類似地,第二處理器1380包含P-P介面1386和1388。處理器1370、1380使用P-P介面電路1378、1388而經由點對點(P-P)介面1350交換資訊。如圖13所示,IMC 1372及1382將處理器耦合至各別記憶體,亦即記憶體1332和記憶體1334,它們可以是本地附接至各別處理器的主記憶體的部份。
處理器1370、1380使用點對點介面電路1376、1394、1386、1398,經由個別的P-P介面1352、1354而均可以與晶片組1390交換資訊。晶片組1390經由高性能
圖形介面1339,選擇地與共處理器1338交換資訊。在一實施例中,共處理器1338是特定用途處理器,例如高輸貫量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。
共用的快取記憶體(未顯示)可以包含在任一處理器中或二處理器的外部、但經由P-P互連與處理器連接,以致於假使處理器處於低電力模式中時,任一或二處理器的本地快取資訊可以儲存在共用的快取記憶體中。
晶片組1390可以經由介面1396而耦合至第一匯流排1316。在一實施例中,第一匯流排1316可以是週邊元件互連(PCI)匯流排,或是例如PCI快速匯流排或其它第三代I/O互匯流排等匯流排,但是,本發明的範圍不侷限於此。
如圖13中所示般,各式各樣的I/O裝置1314與匯流排橋接器1318耦合至第一匯流排1316,匯流排橋接器1318耦合第一匯流排1316至第二匯流排1320。在一實施例中,例如共處理器、高輸貫量MIC處理器、GPGPU、加速器(例如圖形加速器或是數位訊號處理(DSP)單元)、現場可編程閘陣列、或是任何其它處理器等一或更多增加的處理器1315耦合至第一匯流排1316。在一實施例中,第二匯流排1320可以是低接腳數(LPC)匯流排。在一實施例中,各種裝置可以耦合至第二匯流排1320,舉例而言,包含鍵盤及/或滑鼠1322、通訊裝置1327及例如碟片驅動器或其它大量儲存裝置等包含指令/
碼及資料1330的儲存單元1328。此外,音訊I/O 1324可以耦合至第二匯流排1320。注意,其它架構是可能的。舉例而言,取代圖13的點對點架構,系統可以實施多點匯流排或其它此類架構。
現在參考圖14,其顯示根據本發明的實施例之第二更特定舉例說明的系統1400之方塊圖。圖13及14中類似的元件帶有類似的代號,以及,圖13的某些態樣在圖14中被省略,以免模糊圖14的其它態樣。
圖14顯示處理器1370、1380分別包含整合的記憶體及/I/O控制邏輯(CL)1372和1382。因此,CL 1372、1382包含整合記憶體控制器單元及包含I/O控制邏輯。圖14顯示不僅記憶體1332、1334耦合至CL 1372、1382,I/O裝置1414也耦合至控制邏輯1372、1382。舊制I/O裝置1415耦合至晶片組1390。
現在參考圖15,其顯示根據本發明的實施例之SoC 1500的方塊圖。圖11中類似的元件帶有類似的代號。而且,虛線框是關於更多進階的SoCs的選加特點。在圖15中,互連單元1502耦合至:應用處理器1510,包含一或更多核心1102A-N組及共用快取單元1106;系統代理器單元1110;匯流排控制器單元1116;整合記憶體控制器單元1114;包含整合圖形邏輯、影像處理器、音訊處理器、以及視訊處理器之一或更多共處理器1520的組;靜態隨機存取記憶體(SRAM)單元1530;直接記憶體存取(DMA)單元1532;以及用於耦合至一或更多外部顯示
器的顯示單元1540。在一實施例中,共處理器1520包含特定用途的處理器,例如網路或通訊處理器、壓縮引擎、GPGPU、高輸貫量MIC處理器、嵌入式處理器、等等。
此處揭示的機構實施例可以以硬體、軟體、韌體或這些實施方式的結合來實施。本發明的實施例可以實施成在可編程系統上執行的電腦程式或程式碼,可編程系統包括至少一處理器、儲存系統(包含依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
例如圖13中所示的碼1330等程式碼可以應用至輸入指令以執行此處所述的功能和產生輸出資訊。輸出資訊可以以已知方式應用至一或更多輸出裝置。為了此應用,處理系統包含具有例如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器等處理器之任何系統。
程式碼可以以高階程式或物件導向的程式語言實施,以與處理系統通訊。假使需要時,程式碼也可以以組合或機器語言來實施。事實上,此處所述的機構在範圍上不侷限於任何特定的程式語言。在任何情形中,語言可以是編譯或解譯的語言。
至少一實施例的一或更多態樣可以由儲存在機器可讀取的媒體上之代表指令實施,代表指令代表處理器內各種邏輯,代表指令由機器讀取時促使機器製造邏輯以執行此處所述的技術。稱為「IP核心」的這些代表可以儲存在實
體的、機器可讀取的媒體並供應至各式各樣的客戶或製造設施,而載入至真正地製造邏輯的製造機器或處理器。
此機器可讀取的儲存媒體包含但不限於由機器或裝置製造或形成的物件之非暫時性、實體配置,包括例如硬碟等儲存媒體、包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、及磁光碟等任何其它型式的碟片、例如唯讀記憶體(ROM)、例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)等隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹拭可編程唯讀記憶體(EEPROM)等半導體裝置、相位改變記憶體(PCM)、磁性或光學卡、或適用於儲存電子指令的任何其它型式的媒體。
因此,本發明的實施例也包含含有指令或含有設計資料之非暫時的、實體的機器可讀取的媒體,所述設計資料是例如硬體說明語言(HDL),其界定此處所述的結構、電路、裝置、處理器及/或系統特徵。這些實施例也意指程式產品。
在某些情形中,指令轉換器可以用以將指令從源指令集轉換至標的指令集。舉例而言,指令轉換器可以將指令轉譯(例如,使用靜態二進位轉譯、包含動態編譯的動態二進位轉譯)、變形、模仿、或其它方式轉換至由核心處
理的一或更多其它指令。指令轉換器可以以軟體、硬體、韌體、或其結合來實施。指令轉換器可以是在處理器上、不在處理器上、或部份在處理器上及部份不在處理器上。
圖16是方塊圖,根據本發明的實施例,對比使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令。在顯示的實施例中,指令轉換器是軟體指令轉換器,但是,指令轉換器可以替代地以軟體、韌體、硬體、或其各種結合來實施。圖16顯示高階語言1602的程式,其可以使用x86編譯器1604編譯以產生x86二進位碼1606,二進位碼1606可以由具有至少一x86指令集核心1616的處理器原地執行。具有至少一x86指令集核心1616的處理器代表藉由共容地執行或其它方式地處理下述而能夠與具有至少一x86指令集核心的英特爾處理器執行實質上相同功能的任何處理器:(1)英特爾x86指令集核心的指令集的實質部份,或是(2)以在具有至少一x86指令集核心的英特爾處理器上運行為目的之應用或其它軟體的物件碼版本,以便取得與具有至少一x86指令集核心的英特爾處理器實質上相同的結果。x86編譯器1604代表可以操作以產生x86二進位碼1606(例如,物件碼)之編譯器,x86二進位碼1606藉由或不藉由增加的鏈結處理,都可以在具有至少一x86指令集核心1616的處理器上執行。類似地,圖16顯示高階語言1602的程式,使用替代指令集編譯器1608,可以將其編譯以產生替代指令集二進位碼1610,替代指令集二進位碼
1610可以由不具有至少一x86指令集核心1614的處理器(例如,具有執行例如加州Sunnyvale的MIPS Technologies公司的MIPS指令集及/或加州Sunnyvale的ARM Holdings公司的ARM指令集之核心的處理器)原地執行。指令轉換器1612用以將x86二進位碼1606轉換成可以由不具有x86指令集核心1614的處理器原地執行的碼。由於能夠如此執行的指令轉換器難以製造,所以,此轉換的碼不太可能與替代指令集二進位碼1610相同;但是,所述轉換的碼將完成一般作業及由來自替代指令集的指令組成。因此,指令轉換器1612代表軟體、韌體、硬體或其組合,其經由仿真、模擬或任何其它處理而允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進位碼1606。
圖2-6中任一圖說明的組件、特點、及細節也可選擇地用於圖1、7、及8中的任一圖中。此外,用於此處任何裝置之此處所述的組件、特點、及細節也可選擇地用於及/或應用至在實施例中由及/或與此裝置執行的任何方法。此處所述的任何處理器可以包含在此處揭示之任何電腦系統中(例如圖12-15)。在某些實施例中,電腦系統包含互連、與互連耦合的處理器、及與互連耦合的動態隨機存取記憶體(DRAM)。替代地,取代DRAM,可以使用不需要更新之其它型式的依電性記憶體、或是可以使用快閃記憶體。
在說明及申請專利範圍中,使用「耦合」及/或「連
接」等詞與它們的衍生。這些詞並非要作為彼此的同義字。相反地,在實施例中,「連接」可用以表示二或更多元件是彼此直接實體及/或電接觸。「耦合」意指二或更多元件是彼此直接實體及/或電接觸。但是,「耦合」也意指二或更多元件彼此未直接接觸但仍然彼此協力或交互作用。舉例而言,解碼單元可以經由一或更多介入的單元,模組或其他的組件而與緒排程器模組及/或同步模組相耦合。在圖式中,使用箭頭以顯示連接及耦合。
在說明及/或申請專利範圍中,使用「邏輯」、「單元」、「模組」、或「組件」等詞。這些詞均被用以意指硬體、韌體、軟體、或其各式各樣的組合。在舉例說明的實施例中,這些詞均意指積體電路、特定應用積體電路、類比電路、數位電路、程式化的邏輯裝置、包含指令的記憶體裝置、等等、及其各種組合。在某些實施例中,這些包含至少某些硬體(例如電晶體、閘、其它電路組件、等等)。
使用「及/或」等詞。如同此處所使用般,「及/或」意謂一或另一或是二者(例如,A及/或B意指A或B或是A及B)。
在上述說明中,揭示眾多特定細節,以助於完整瞭解本發明的實施例。但是,不用這些特定細節中的某些細節,仍可實施其它實施例。本發明的範圍並非由上述特定實例決定而是僅由下述申請專利範圍決定。在其它情形中,以方塊圖形式及/或無細節地,顯示習知的電路、結
構、裝置、及作業,以免模糊說明之瞭解。在被視為適當處,在多個圖中,除非另外指明,否則,會重複代號、或代號的尾部,以標示選加地具有類似的或是相同的特徵之對應的或類似的元件。
某些作業可以由硬體組件執行以及可以以機器可執行的或電路可執行的指令具體實施,這些指令被用以促使及/或造成依執行作業的指令編程的機器、電路或硬體組件(例如處理器、處理器的部份、電路、等等)。作業也可以由硬體及軟體的結合選擇性地執行。處理器、機器、電路、或硬體包含特定的或特別的電路或其它邏輯(例如,可能與韌體及/或軟體相結合之硬體),可操作以執行及/或處理機器指令及儲存結果以回應指令。
某些實施例包含製造物品(例如,電腦程式產品),製造物品包含機器可讀取的媒體。媒體包含機構,機構提供、儲存可由機器讀取的形式之資訊。機器可讀取的媒體提供及於其上儲存指令或指令序列,假使及/或由機器執行時,這些指令或指令序列可操作以促使機器執行此處所揭示的一或更多作業、方法、或技術及/或造成執行此處所揭示的一或更多作業、方法、或技術的機器。
在某些實施例中,機器可讀取的媒體包含非暫時的機器可讀取的儲存媒體。舉例而言,非暫時的機器可讀取的儲存媒體包含軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹拭及可編程ROM
(EPROM)、電可抹拭及可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、非依電性記憶體、非依電性資料儲存裝置、非暫時記憶體、非暫時資料儲存裝置、等等。非暫時機器可讀取的儲存媒體未由暫時傳播的訊號組成。在某些實施例中,儲存媒體包含實體媒體,實體媒體是包含固態物質。
適當的機器實例包含但不限於一般用途處理器、特別用途處理器、數位邏輯電路、積體電路、等等。適當的機器之又其它實例包含電腦系統或是包含處理器、數位邏輯電路、或積體電路之其它電子裝置。這些電腦系統或電子裝置的實例包含但不限於桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、易網機、智慧型電話、行動電話、伺服器、網路裝置(例如路由器及交換機)。行動網際網路裝置(MID)、媒體播放器、智慧型電視、桌上型易網機、機上盒、及電動玩具控制器。
舉例而言,在本說明書中述及的「一實施例」、「實施例」、「一或更多實施例」、「某些實施例」係表示特定特點包含在本發明的實施中但非必要。類似地,在說明中,為了使揭示流暢及助於瞭解各式各樣的發明態樣,各式各樣的特點群聚於單一實施例、圖式、或其說明中。但是,本揭示的方法不應被解釋成反應本發明要求比各申請專利範圍項中載述的特點還多的特點。相反地,如後述申請專利範圍所反應般,發明的態樣少於單一揭示的實施例
之所有特點。因此,跟隨在詳細說明之後的申請專利範圍於此併入實施方式一節中,以各項述申請專利範圍依據它自己作為本發明的分別實施例。
下述實例關於其它實施例。在一或更多實施例中的任意處可以使用實例中的特點。
實例1是處理器或其它裝置,包含:眾多處理器元件;以及第一處理器元件,用以執行軟體緒的用戶等級分叉指令。第一處理器元件包含:解碼器,用以將用戶等級分叉指令解碼。用戶等級分叉指令會標示至少一指令位址。第一處理器元件也包含用戶等級緒分叉模組,用以將眾多處理器元件中的各處理器元件配置成平行地執行指令,以回應被解碼的用戶等級分叉指令。
實例2包含實例1之處理器,其中,解碼器會將會選擇性地標示單一指令位址的用戶等級分叉指令解碼,以及,其中,用戶等級緒分叉模組會將選擇性的單一指令位址儲存在眾多程式計數器中各別對應於眾多處理器元件中不同之一的各別程式計數器中,以回應被解碼的用戶等級分叉指令。
實例3包含實例1之處理器,其中,解碼器會將選擇性地標示眾多不同指令位址之用戶等級分叉指令解碼,以及,其中,用戶等級緒分叉模組會選擇性地將眾多不同指令位址中不同之一儲存在各別對應於眾多處理器元件中不
同之一的眾多程式計數器中之各別程式計數器中,以回應被解碼的用戶等級分叉指令。
實例4包含實例1至3中任一實例之處理器,其中,用戶等級緒分叉模組會選擇性地提供第一處理器元件的架構狀態之複製給眾多處理器元件中的各處理器元件,以回應被解碼的用戶等級分叉指令。
實例5包含實例4之處理器,其中,提供架構狀態之複製給眾多處理器元件中的各處理器元件選擇性地包含將架構狀態的複製儲存在各別對應於該眾多處理器元件中的不同之一的眾多記憶體位置中的各別記憶體位置中。
實例6包含實例1至5中任一實例之處理器,其中,為回應被解碼的用戶等級分叉指令,用戶等級緒分叉模組會將眾多處理器元件中的各處理器元件配置成平行地執行該指令,而不用監督系統軟體介入。
實例7包含實例1至6中任一實例之處理器,其中,為回應被解碼的用戶等級分叉指令,用戶等級緒分叉模組會選擇性地促使第一處理器元件停止執行軟體緒的指令、以及選擇性地在同步障壁等待。
實例8包含實例1至6中任一實例之處理器,其中,為回應被解碼的用戶等級分叉指令,用戶等級緒分叉模組選擇性地不促使第一處理器元件停止執行軟體緒的指令。
實例9包含實例1至8中任一實例之處理器,其中,眾多處理器元件中之各處理器元件會執行對應的用戶等級同步及結束指令,以及,其中,眾多處理器元件中之各處
理器元件包含:解碼器,用以將用戶等級同步及結束指令解碼;以及,用戶等級同步緒結束模組,為回應被解碼的對應的用戶等級同步及結束指令,會促使包含它的對應的處理器元件停止執行增加的指令、一直等待直到眾多處理器元件中的各處理器元執行對應的用戶等級同步及結束指令為止;以及,在眾多處理器元件中的各處理器元件執行對應的用戶等級同步及結束指令之後,將控制轉回至要於第一處理器元件上執行之軟體緒的第二指令。
實例10包含實例9之處理器,其中,為回應被解碼的對應的用戶等級同步及結束指令,各用戶等級同步緒結束模組會傳輸與一或更多旗標相關連的一或更多錯誤條件的標示給第一處理器元件。
實例11包含實例1至10中任一實例之處理器,其中,第一處理器元件選擇性地具有指令集,所述指令集包含也包含於眾多處理器元件中的各處理器元件中的指令集中的指令。
實例12包含實例1至11中任一實例之處理器,其中,第一處理器元件比眾多處理器元件中的各處理器元件具有更低的平均指令效能潛候期。
實例13包含實例1至11中任一實例之處理器,其中,第一處理器元件具有微架構,指令執行在微架構中比在眾多處理器元件中的各處理器元件的微架構中是更亂序的。
實例14包含實例1至11中任一實例之處理器,其
中,第一處理器元件具有交付單元以依原始程式次序將被亂序地執行之指令的結果交付給架構狀態,以及,其中,眾多處理器元件中的各處理器元件未具有交付單元。
實例15包含實例1至11中任一實例之處理器,其中,為回應被解碼的用戶等級分叉指令,用戶等級緒分叉模組會將眾多處理器元件中選擇性的至少20個處理器元件中的各處理器元件配置成平行地執行指令,以及,其中,眾多處理器元件中的至少20個處理器元件都共用單一解碼器。
實例16包含實例1至11中任一實例之處理器,又包含:分支預測單元,用以預測分支;指令預提取單元,與分支預測單元相耦合,指令預提取單元用以提取包含用戶等級分叉指令之複數指令;階層1(L1)指令快取記憶體,與指令預提取單元耦合,L1指令快取記憶體用以儲存指令;L1資料快取記憶體,用以儲存資料;階層2(L2)快取記憶體,用以儲存資料及指令;指令提取單元,與解碼單元、L1指令快取記憶體、及L2快取記憶體相耦合,用以從L1指令快取記憶體及L2快取記憶體中之一提取用戶等級分叉指令,以及提供用戶等級分叉指令給解碼單元;暫存器重命名單元,用以將暫存器重命名;排程器,用以將從用戶等級分叉指令解碼之一或更多作業排程用於執行;以及,交付單元。
實例17是一種在處理器中的方法,包含:在第一處理器元件接收軟體緒的用戶等級分叉指令。用戶等級分叉
指令標示至少一指令位址。方法也包含:以第一處理器元件將眾多附加處理器元件中的各附加處理器元件配置成平行地執行指令,以回應用戶等級分叉指令。眾多附加處理器元件中的各附加處理器元件會在用戶等級分叉指令所標示的至少一指令位址的指令位址處,開始執行指令。
實例18包含實例17之方法,其中,接收包含接收標示單一指令位址的用戶等級分叉指令,以及,其中,配置包含將單一指令位址儲存在眾多程式計數器中各別對應於眾多附加處理器元件中不同之一的各別程式計數器中。
實例19包含實例17之方法,其中,接收包含接收標示眾多指令位址的用戶等級分叉指令,以及,其中,配置包含將眾多不同指令位址中的各指令位址儲存在各別對應於眾多附加處理器元件中不同之一的眾多程式計數器中之不同之一中。
實例20包含實例17至19中任一實例之方法,其中,配置包含儲存第一處理器元件的架構狀態的複製以用於眾多附加處理器元件中的各附加處理器元件。
實例21包含實例17至20中任一實例之方法,其中,配置包含第一處理器元件配置眾多附加處理器元件中的各附加處理器元件以平行地執行指令而不用監督系統軟體介入。
實例22包含實例17至21中任一實例之方法,又包含:為回應執行用戶等級分叉指令,第一處理器元件停止執行軟體緒的指令、及在同步障壁等待。
實例23包含實例17至22中任一實例之方法,又包含:回應執行對應的用戶等級同步及結束指令,眾多附加處理器元件中的各處理器元件停止執行增加的指令、一直等待直到眾多附加處理器元件中的各附加處理器元件執行對應的用戶等級同步及結束指令為止、以及在眾多附加處理器元件中的各附加處理器元件執行對應的用戶等級同步及結束指令之後,將控制轉回至軟體緒的第二指令。
實例24包含實例23之方法,又包含:回應執行對應的用戶等級同步及結束指令,眾多附加處理器元件中的各附加處理器元件將錯誤條件傳輸給第一處理器元件。
實例25包含實例17至24中任一實例之方法,又包含:眾多附加處理器元件中的各附加處理器元件將包含在第一處理器元件的指令集中的指令解碼。
實例26包含實例17至25中任一實例之方法,又包含:在第一處理器元件中亂序地執行指令,以及,在眾多附加處理器元件中的各附加處理器元件中有序地執行指令。
實例27是用以處理指令的電腦系統或其它系統,包含:互連;處理器,與互連耦合,處理器包括眾多處理器元件以及第一處理器元件,第一處理器元件用以執行軟體緒的用戶等級分叉指令,用戶等級分叉指令會標示至少一指令位址,第一處理器元件會將眾多處理器元件中的各處理器元件配置成平行地執行指令,以回應用戶等級分叉指令;以及,動態隨機存取記憶體(DRAM),與互連耦
合,所述DRAM儲存包含至少一用戶等級分叉指令之碼。
實例28包含實例27的系統,其中,第一處理器元件具有微架構,指令執行在所述微架構中比在眾多處理器元件中的各處理器元件的微架構中是更亂序的,以及,其中,回應被解碼的用戶等級分叉指令,第一處理器元件會將眾多處理器元件中的至少20個處理器元件中的各處理器元件配置成平行地執行指令。
實例29一種製造物件,包含非暫時的機器可讀取的儲存媒體,非暫時的機器可讀取的儲存媒體儲存用戶等級分叉指令,用戶等級分叉指令會標示至少一指令位址,以及,用戶等級分叉指令假使由處理器的第一處理器元件執行時會促使第一處理器元件執行包括下述的作業:將眾多附加處理器元件中的各附加處理器元件配置成平行地執行指令,以回應用戶等級分叉指令,其中,眾多附加處理器元件中的各附加處理器元件會在用戶等級分叉指令所標示的至少一指令位址的指令位址處,開始執行指令,以及,其中,眾多附加處理器元件中的各附加處理器元件具有比第一處理器元件的亂序指令執行管線更有序的指令執行管線。
實例30包含實例29的製造物件,又包含用戶等級同步及結束指令,假使由眾多附加處理器元件中的各附加處理器元件執行時會促使附加處理器元件執行包括下述的作業:停止執行增加的指令、以及在同步障壁等待直到眾多
附加處理器元件中的各附加處理器元件到達同步障壁為止。
實例31是處理器或其它裝置,用以執行或操作以執行實例17至26中任一實例之方法。
實例32是處理器或其它裝置,包含用於執行實例17至26中任一實例之方法的機構。
實例33是處理器,包含用於執行實例17至26中任一實例之方法的模組及/或單元及/或邏輯及/或電路及/或機構之任何組合。
實例34是製造物件,包含:選擇性非暫時的機器可讀取的媒體,選擇性地儲存或以其它方式提供指令,假使及/或當由處理器、電腦系統、電子裝置、或其它機器執行時,所述指令會操作以促使機器執行實例17至21中任一實例之方法。
實例35是電腦系統或其它電子裝置,包含:匯流排或其它互連;實例1至16中任一實例的處理器,與互連耦合;以及,互連耦合之一或更多組件,係選自選擇性的動態隨機存取記憶體(DRAM)、選擇性的靜態RAM、選擇性的快閃記憶體、選擇性的圖形控制器或晶片、選擇性的影像卡、選擇性的無線通訊晶片、選擇性的無線收發器、選擇性的全球行動通訊系統(GSM)天線、選擇性的共處理器(例如CISC共處理器)、選擇性的語音裝置、選擇性的語音輸入裝置、選擇性的語音輸出裝置、選擇性的影像輸入裝置(例如攝影機)、選擇性的網路介面、選
擇性的通訊介面、選擇性的持久記憶體(例如選擇性的相變記憶體、憶阻器、等等)及其組合。
實例36是處理器或其它裝置,用以執行(例如具有組件以執行或操作以執行)實質上如此處所述的任何用戶等級分叉指令。
實例37是處理器或其它裝置,用以執行(例如具有組件以執行或操作以執行)實質上如此處所述的任何用戶等級同步及結束指令。
實例38是電腦系統或其它電子裝置,包含具有用以將第一指令集的指令解碼之解碼單元的處理器。處理器也具有一或更多執行單元。電子裝置也包含與處理器耦合的儲存裝置。儲存裝置會儲存第一指令,第一指令可為實質上如此處揭示的任何指令(例如用戶等級分叉指令或用戶等級同步及會合指令),以及會具有第二指令集。儲存裝置也會儲存用以將第一指令轉換成第一指令集的一或更多指令之指令。第一指令集的一或更多指令當由處理器執行時會促使處理器執行第一指令指定的作業。
實例39是實質上如此處所述的處理器或其它裝置。
實例40是處理器或其它裝置,會操作以執行實質上如此處所述的任何方法。
Claims (25)
- 一種處理器,包括:眾多處理器元件;以及第一處理器元件,用以執行軟體緒的用戶等級分叉指令,該第一處理器元件包含:解碼器,用以將該用戶等級分叉指令解碼,其中,該用戶等級分叉指令會標示至少一指令位址;以及用戶等級緒分叉模組,用以將該眾多處理器元件中的各處理器元件配置成平行地執行指令,以回應被解碼的該用戶等級分叉指令,其中,被配置成平行地執行該指令的該眾多處理器元件包含下列其中之一者:要被該用戶等級分叉指令標示的一彈性數量的該眾多處理器元件;以及該處理器的所有該眾多處理器元件。
- 如申請專利範圍第1項之處理器,其中,該解碼器會將會標示單一指令位址的該用戶等級分叉指令解碼,以及,其中,該用戶等級緒分叉模組會將該單一指令位址儲存在眾多程式計數器中各別對應於該眾多處理器元件中不同之一的各別程式計數器中,以回應被解碼的該用戶等級分叉指令。
- 如申請專利範圍第1項之處理器,其中,該解碼器會將會標示眾多不同指令位址之該用戶等級分叉指令解碼,以及,其中,該用戶等級緒分叉模組會將該眾多不同指令位址中不同之一儲存在各別對應於該眾多處理器元件中不同之一的眾多程式計數器中之各別程式計數器中,以回應被解碼的該用戶等級分叉指令。
- 如申請專利範圍第1項之處理器,其中,該用戶等級緒分叉模組會提供該第一處理器元件的架構狀態之複製給該眾多處理器元件中的各處理器元件,以回應被解碼的該用戶等級分叉指令。
- 如申請專利範圍第4項之處理器,其中,提供該架構狀態之複製給該眾多處理器元件中的各處理器元件,包括將該架構狀態的複製儲存在各別對應於該眾多處理器元件中的不同之一的眾多記憶體位置中的各別記憶體位置中。
- 如申請專利範圍第1項之處理器,其中,回應被解碼的該用戶等級分叉指令,該用戶等級緒分叉模組會將該眾多處理器元件中的各處理器元件配置成平行地執行該指令,而不用監督系統軟體介入。
- 如申請專利範圍第1項之處理器,其中,回應被解碼的該用戶等級分叉指令,該用戶等級緒分叉模組會促使該第一處理器元件執行下述:停止執行該軟體緒的指令;以及在同步障壁等待。
- 如申請專利範圍第1項之處理器,其中,回應被解碼的該用戶等級分叉指令,該用戶等級緒分叉模組不會促使該第一處理器元件停止執行該軟體緒的指令。
- 如申請專利範圍第1項之處理器,其中,該第一處理器元件具有指令集,該指令集包含也包含於該眾多處理器元件中的各處理器元件中的指令集中的指令。
- 如申請專利範圍第1項之處理器,其中,該第一處理器元件比該眾多處理器元件中的各處理器元件具有更低的平均指令效能潛候期。
- 如申請專利範圍第1項之處理器,其中,該第一處理器元件具有微架構,指令執行在該微架構中比在該眾多處理器元件中的各處理器元件的微架構中是更亂序的。
- 如申請專利範圍第1項之處理器,其中,該第一處理器元件具有交付單元以依原始程式次序將被亂序地執行之指令的結果交付給架構狀態,以及,其中,該眾多處理器元件中的各處理器元件未具有交付單元。
- 如申請專利範圍第1項之處理器,其中,回應被解碼的該用戶等級分叉指令,該用戶等級緒分叉模組會將該眾多處理器元件中的至少20個處理器元件中的各處理器元件配置成平行地執行該些指令,以及,其中,該眾多處理器元件中的至少20個處理器元件都共用單一解碼器。
- 一種處理器,包括:眾多處理器元件;以及第一處理器元件,用以執行軟體緒的用戶等級分叉指令,該第一處理器元件包含:解碼器,用以將該用戶等級分叉指令解碼,其中,該用戶等級分叉指令會標示至少一指令位址;以及用戶等級緒分叉模組,用以將該眾多處理器元件中的各處理器元件配置成平行地執行指令,以回應被解碼的該用戶等級分叉指令,其中,該眾多處理器元件中之各處理器元件會執行對應的用戶等級同步及結束指令,以及,其中,該眾多處理器元件中之各處理器元件包括:解碼器,用以將該用戶等級同步及結束指令解碼;以及,用戶等級同步緒結束模組,為回應被解碼的該對應的用戶等級同步及結束指令,會促使包含它的該對應的處理器元件執行下述:停止執行增加的指令;一直等待直到該眾多處理器元件中的各處理器元件執行該對應的用戶等級同步及結束指令為止;以及在該眾多處理器元件中的各處理器元件執行該對應的用戶等級同步及結束指令之後,將控制轉回至要於該第一處理器元件上執行之該軟體緒的第二指令。
- 如申請專利範圍第14項之處理器,其中,回應被解碼的該對應的用戶等級同步及結束指令,各用戶等級同步緒結束模組會傳輸與一或更多旗標相關連的一或更多錯誤條件的標示給該第一處理器元件。
- 一種處理器,包括:眾多處理器元件;以及第一處理器元件,用以執行軟體緒的用戶等級分叉指令,該第一處理器元件包含:分支預測單元,用以預測分支;指令預提取單元,與該分支預測單元相耦合,該指令預提取單元用以預提取包含該用戶等級分叉指令之複數指令;階層1(L1)指令快取記憶體,與該指令預提取單元耦合,該L1指令快取記憶體用以儲存指令;L1資料快取記憶體,用以儲存資料;階層2(L2)快取記憶體,用以儲存資料及指令;指令提取單元,與該L1指令快取記憶體、及該L2快取記憶體相耦合,用以從該L1指令快取記憶體及該L2快取記憶體中之一提取該用戶等級分叉指令,以及提供該用戶等級分叉指令給解碼器;該解碼器用以將該用戶等級分叉指令解碼,其中,該用戶等級分叉指令用以標示至少一指令位址;暫存器重命名單元,用以將暫存器重命名;排程器,用以將從該用戶等級分叉指令解碼之一或更多作業排程用於執行;用戶等級緒分叉模組,用以將該眾多處理器元件中的各處理器元件配置成平行地執行指令,以回應被解碼的該用戶等級分叉指令;以及交付單元。
- 一種在處理器中的方法,包括:在第一處理器元件接收軟體緒的用戶等級分叉指令,其中,該用戶等級分叉指令標示至少一指令位址;以及,以該第一處理器元件將眾多附加處理器元件中的各附加處理器元件配置成平行地執行指令,以回應該用戶等級分叉指令,其中,該眾多附加處理器元件中的各附加處理器元件會在該用戶等級分叉指令所標示的至少一指令位址的指令位址處,開始執行指令,其中,被配置成平行地執行該指令的該眾多附加處理器元件包含下列其中之一者:被該用戶等級分叉指令標示的一彈性數量的該眾多附加處理器元件;以及該處理器包含之一組完整的該眾多附加處理器元件。
- 如申請專利範圍第17項之方法,其中,接收包括接收標示單一指令位址的該用戶等級分叉指令,以及,其中,配置包括將該單一指令位址儲存在眾多程式計數器中各別對應於該眾多附加處理器元件中不同之一的各別程式計數器中。
- 如申請專利範圍第17項之方法,其中,接收包括接收標示眾多指令位址的該用戶等級分叉指令,以及,其中,配置包括將該眾多不同指令位址中的各指令位址儲存在各別對應於該眾多附加處理器元件中不同之一的眾多程式計數器中之不同之一中。
- 如申請專利範圍第17項之方法,又包括:該眾多附加處理器元件中的各處理器元件為回應執行對應的用戶等級同步及結束指令,而執行下述:停止執行增加的指令;一直等待直到該眾多附加處理器元件中的各附加處理器元件執行該對應的用戶等級同步及結束指令為止;以及在該眾多附加處理器元件中的各附加處理器元件執行該對應的用戶等級同步及結束指令之後,將控制轉回至該軟體緒的第二指令。
- 如申請專利範圍第17項之方法,又包括:在該第一處理器元件中亂序地執行指令;以及在該眾多附加處理器元件中的各附加處理器元件中有序地執行指令。
- 一種用以處理指令的系統,包括:互連;處理器,與該互連耦合,該處理器包括眾多處理器元件以及第一處理器元件,該第一處理器元件用以執行軟體緒的用戶等級分叉指令,該用戶等級分叉指令會標示至少一指令位址,該第一處理器元件會將該眾多處理器元件中的各處理器元件配置成平行地執行指令,以回應該用戶等級分叉指令,其中,被配置成平行地執行該指令的該眾多處理器元件包含下列其中之一者:要被該用戶等級分叉指令標示的一彈性數量的該眾多處理器元件;以及該處理器具有的所有該眾多處理器元件;以及動態隨機存取記憶體(DRAM),與該互連耦合,該DRAM儲存包含至少一用戶等級分叉指令之碼。
- 如申請專利範圍第22項之系統,其中,該第一處理器元件具有微架構,指令執行在該微架構中比在該眾多處理器元件中的各處理器元件的微架構中是更亂序的,以及,其中,為回應被解碼的該用戶等級分叉指令,該第一處理器元件會將該眾多處理器元件中的至少20個處理器元件中的各處理器元件配置成平行地執行該些指令。
- 一種製造物件,包括非暫時的機器可讀取的儲存媒體,該非暫時的機器可讀取的儲存媒體儲存用戶等級分叉指令,該用戶等級分叉指令會標示至少一指令位址,以及,該用戶等級分叉指令假使由處理器的第一處理器元件執行時會促使該第一處理器元件執行包括下述的作業:將眾多附加處理器元件中的各附加處理器元件配置成平行地執行指令,以回應該用戶等級分叉指令,其中,該眾多附加處理器元件中的各附加處理器元件會在該用戶等級分叉指令所標示的至少一指令位址的指令位址處,開始執行指令,以及,其中,該眾多附加處理器元件中的各附加處理器元件具有比該第一處理器元件的亂序指令執行管線更有序的指令執行管線,其中,被配置成平行地執行該指令的該眾多附加處理器元件包含下列其中之一者:要被該用戶等級分叉指令標示的一彈性數量的該眾多附加處理器元件;以及該處理器的一組完整的該眾多附加處理器元件。
- 如申請專利範圍第24項之製造物件,又包括用戶等級同步及結束指令,假使由該眾多附加處理器元件中的各附加處理器元件執行時會促使該附加處理器元件執行包括下述的作業:停止執行增加的指令;以及在同步障壁等待直到該眾多附加處理器元件中的各附加處理器元件到達該同步障壁為止。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/671,475 | 2015-03-27 | ||
US14/671,475 US9747108B2 (en) | 2015-03-27 | 2015-03-27 | User-level fork and join processors, methods, systems, and instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201702866A TW201702866A (zh) | 2017-01-16 |
TWI628594B true TWI628594B (zh) | 2018-07-01 |
Family
ID=56975369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105105508A TWI628594B (zh) | 2015-03-27 | 2016-02-24 | 用戶等級分叉及會合處理器、方法、系統及指令 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9747108B2 (zh) |
EP (1) | EP3274816B1 (zh) |
JP (1) | JP6708335B2 (zh) |
KR (2) | KR20230020590A (zh) |
CN (1) | CN107408036B (zh) |
TW (1) | TWI628594B (zh) |
WO (1) | WO2016160125A1 (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016118607A1 (en) | 2015-01-20 | 2016-07-28 | Ultrata Llc | Distributed index for fault tolerant object memory fabric |
US11579774B2 (en) * | 2015-01-20 | 2023-02-14 | Ultrata, Llc | Object memory data flow triggers |
US9971542B2 (en) | 2015-06-09 | 2018-05-15 | Ultrata, Llc | Infinite memory fabric streams and APIs |
US10698628B2 (en) | 2015-06-09 | 2020-06-30 | Ultrata, Llc | Infinite memory fabric hardware implementation with memory |
US9886210B2 (en) | 2015-06-09 | 2018-02-06 | Ultrata, Llc | Infinite memory fabric hardware implementation with router |
US10248337B2 (en) | 2015-12-08 | 2019-04-02 | Ultrata, Llc | Object memory interfaces across shared links |
EP3387548B1 (en) | 2015-12-08 | 2023-08-02 | Ultrata LLC | Memory fabric operations and coherency using fault tolerant objects |
WO2017100281A1 (en) | 2015-12-08 | 2017-06-15 | Ultrata, Llc | Memory fabric software implementation |
US10241676B2 (en) | 2015-12-08 | 2019-03-26 | Ultrata, Llc | Memory fabric software implementation |
US10387154B2 (en) * | 2016-03-14 | 2019-08-20 | International Business Machines Corporation | Thread migration using a microcode engine of a multi-slice processor |
US10318356B2 (en) * | 2016-03-31 | 2019-06-11 | International Business Machines Corporation | Operation of a multi-slice processor implementing a hardware level transfer of an execution thread |
US10387152B2 (en) * | 2017-07-06 | 2019-08-20 | Arm Limited | Selecting branch instruction execution paths based on previous branch path performance |
GB2569273B (en) | 2017-10-20 | 2020-01-01 | Graphcore Ltd | Synchronization in a multi-tile processing arrangement |
GB2569269B (en) * | 2017-10-20 | 2020-07-15 | Graphcore Ltd | Synchronization in a multi-tile processing arrangement |
GB2569274B (en) | 2017-10-20 | 2020-07-15 | Graphcore Ltd | Synchronization amongst processor tiles |
CN109117260B (zh) * | 2018-08-30 | 2021-01-01 | 百度在线网络技术(北京)有限公司 | 一种任务调度方法、装置、设备和介质 |
EP3674939A1 (en) * | 2018-12-31 | 2020-07-01 | SafeNet, Inc. | Method, system and device for managing an execution of a program relating to part or all of a first application |
US11157283B2 (en) * | 2019-01-09 | 2021-10-26 | Intel Corporation | Instruction prefetch based on thread dispatch commands |
KR20210003370A (ko) | 2019-07-02 | 2021-01-12 | 삼성전자주식회사 | 하드웨어 로직을 이용하여 통신 오버헤드를 감소시킨 스토리지 장치 |
GB2595303B (en) * | 2020-05-22 | 2024-04-17 | Advanced Risc Mach Ltd | Profiling of sampled operations processed by processing circuitry |
FR3121249B1 (fr) * | 2021-03-29 | 2024-03-08 | Vitesco Technologies | Procédé d’implémentation d’un module logiciel défini par un graphe orienté non cyclique non imbriqué en environnement multi-cœur |
US11830123B2 (en) | 2021-05-14 | 2023-11-28 | Nvidia Corporation | Accelerated processing via a physically based rendering engine |
US11908064B2 (en) * | 2021-05-14 | 2024-02-20 | Nvidia Corporation | Accelerated processing via a physically based rendering engine |
US11704860B2 (en) | 2021-05-14 | 2023-07-18 | Nvidia Corporation | Accelerated processing via a physically based rendering engine |
US11853764B2 (en) | 2021-05-14 | 2023-12-26 | Nvidia Corporation | Accelerated processing via a physically based rendering engine |
US11875444B2 (en) | 2021-05-14 | 2024-01-16 | Nvidia Corporation | Accelerated processing via a physically based rendering engine |
US20220391264A1 (en) * | 2021-06-03 | 2022-12-08 | Nvidia Corporation | Techniques for efficiently synchronizing multiple program threads |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5499349A (en) * | 1989-05-26 | 1996-03-12 | Massachusetts Institute Of Technology | Pipelined processor with fork, join, and start instructions using tokens to indicate the next instruction for each of multiple threads of execution |
US20030014473A1 (en) * | 2001-07-12 | 2003-01-16 | Nec Corporation | Multi-thread executing method and parallel processing system |
US20070006231A1 (en) * | 2005-06-30 | 2007-01-04 | Hong Wang | Mechanism for instruction set based thread execution on a plurality of instruction sequencers |
TWI466061B (zh) * | 2008-01-16 | 2014-12-21 | Via Tech Inc | 記憶體系統、記憶體存取方法以及圖形處理系統 |
TWI473016B (zh) * | 2008-07-16 | 2015-02-11 | Sisvel Internat S A | 用以處理多視圖視訊位元串流之方法與裝置及電腦可讀媒體 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5812811A (en) * | 1995-02-03 | 1998-09-22 | International Business Machines Corporation | Executing speculative parallel instructions threads with forking and inter-thread communication |
JP2000305795A (ja) | 1999-04-20 | 2000-11-02 | Nec Corp | 並列処理装置 |
US6651163B1 (en) * | 2000-03-08 | 2003-11-18 | Advanced Micro Devices, Inc. | Exception handling with reduced overhead in a multithreaded multiprocessing system |
CN1842770A (zh) * | 2003-08-28 | 2006-10-04 | 美普思科技有限公司 | 一种在处理器中挂起和释放执行过程中计算线程的整体机制 |
US7321965B2 (en) | 2003-08-28 | 2008-01-22 | Mips Technologies, Inc. | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
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 |
DE112005003401T5 (de) | 2005-01-19 | 2007-12-20 | Intel Corporation, Santa Clara | Datenkommunikationsverfahren und -Vorrichtung |
CN101546255A (zh) * | 2005-04-12 | 2009-09-30 | 松下电器产业株式会社 | 处理器 |
US8010969B2 (en) | 2005-06-13 | 2011-08-30 | Intel Corporation | Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers |
DE102007025397B4 (de) * | 2007-05-31 | 2010-07-15 | Advanced Micro Devices, Inc., Sunnyvale | System mit mehreren Prozessoren und Verfahren zu seinem Betrieb |
CN101344843B (zh) * | 2007-07-10 | 2012-11-21 | 北京简约纳电子有限公司 | 一种指令级并行处理方法 |
JP2011090592A (ja) * | 2009-10-26 | 2011-05-06 | Sony Corp | 情報処理装置とその命令デコーダ |
US8667253B2 (en) * | 2010-08-04 | 2014-03-04 | International Business Machines Corporation | Initiating assist thread upon asynchronous event for processing simultaneously with controlling thread and updating its running status in status register |
US8561070B2 (en) * | 2010-12-02 | 2013-10-15 | International Business Machines Corporation | Creating a thread of execution in a computer processor without operating system intervention |
EP2662771A4 (en) * | 2011-01-07 | 2014-05-21 | Fujitsu Ltd | PLANNING PROCESS AND MULTI-CORE PROCESSOR SYSTEM |
US9213551B2 (en) * | 2011-03-11 | 2015-12-15 | Oracle International Corporation | Return address prediction in multithreaded processors |
US9582287B2 (en) | 2012-09-27 | 2017-02-28 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
US9053025B2 (en) | 2012-12-28 | 2015-06-09 | Intel Corporation | Apparatus and method for fast failure handling of instructions |
US9542193B2 (en) * | 2012-12-28 | 2017-01-10 | Intel Corporation | Memory address collision detection of ordered parallel threads with bloom filters |
US9361116B2 (en) | 2012-12-28 | 2016-06-07 | Intel Corporation | Apparatus and method for low-latency invocation of accelerators |
US20140189333A1 (en) | 2012-12-28 | 2014-07-03 | Oren Ben-Kiki | Apparatus and method for task-switchable synchronous hardware accelerators |
US9417873B2 (en) | 2012-12-28 | 2016-08-16 | Intel Corporation | Apparatus and method for a hybrid latency-throughput processor |
US10140129B2 (en) | 2012-12-28 | 2018-11-27 | Intel Corporation | Processing core having shared front end unit |
US10346195B2 (en) | 2012-12-29 | 2019-07-09 | Intel Corporation | Apparatus and method for invocation of a multi threaded accelerator |
EP3005078A2 (en) * | 2013-05-24 | 2016-04-13 | Coherent Logix Incorporated | Memory-network processor with programmable optimizations |
US20150007196A1 (en) | 2013-06-28 | 2015-01-01 | Intel Corporation | Processors having heterogeneous cores with different instructions and/or architecural features that are presented to software as homogeneous virtual cores |
-
2015
- 2015-03-27 US US14/671,475 patent/US9747108B2/en active Active
-
2016
- 2016-02-05 CN CN201680012362.XA patent/CN107408036B/zh not_active Expired - Fee Related
- 2016-02-05 WO PCT/US2016/016700 patent/WO2016160125A1/en active Application Filing
- 2016-02-05 KR KR1020237003774A patent/KR20230020590A/ko not_active Application Discontinuation
- 2016-02-05 EP EP16773615.6A patent/EP3274816B1/en active Active
- 2016-02-05 KR KR1020177023685A patent/KR102496402B1/ko active IP Right Grant
- 2016-02-05 JP JP2017539015A patent/JP6708335B2/ja active Active
- 2016-02-24 TW TW105105508A patent/TWI628594B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5499349A (en) * | 1989-05-26 | 1996-03-12 | Massachusetts Institute Of Technology | Pipelined processor with fork, join, and start instructions using tokens to indicate the next instruction for each of multiple threads of execution |
US20030014473A1 (en) * | 2001-07-12 | 2003-01-16 | Nec Corporation | Multi-thread executing method and parallel processing system |
US20070006231A1 (en) * | 2005-06-30 | 2007-01-04 | Hong Wang | Mechanism for instruction set based thread execution on a plurality of instruction sequencers |
TWI466061B (zh) * | 2008-01-16 | 2014-12-21 | Via Tech Inc | 記憶體系統、記憶體存取方法以及圖形處理系統 |
TWI473016B (zh) * | 2008-07-16 | 2015-02-11 | Sisvel Internat S A | 用以處理多視圖視訊位元串流之方法與裝置及電腦可讀媒體 |
Non-Patent Citations (2)
Title |
---|
Prof. Lazowska,"Operating Systems Section 01- Processes ,Loaders, Fork, and Exec", https://courses.cs.washington.edu/courses/cse451/04wi/section/ab/notes/fork/, 2004/01/09 * |
Prof. Lazowska,"Operating Systems Section 01- Processes ,Loaders, Fork, and Exec", https://courses.cs.washington.edu/courses/cse451/04wi/section/ab/notes/fork/, 2004/01/09。 |
Also Published As
Publication number | Publication date |
---|---|
EP3274816B1 (en) | 2020-03-25 |
TW201702866A (zh) | 2017-01-16 |
CN107408036A (zh) | 2017-11-28 |
US9747108B2 (en) | 2017-08-29 |
WO2016160125A1 (en) | 2016-10-06 |
KR102496402B1 (ko) | 2023-02-06 |
KR20230020590A (ko) | 2023-02-10 |
US20160283245A1 (en) | 2016-09-29 |
JP2018509687A (ja) | 2018-04-05 |
JP6708335B2 (ja) | 2020-06-10 |
EP3274816A4 (en) | 2018-11-07 |
CN107408036B (zh) | 2021-08-31 |
EP3274816A1 (en) | 2018-01-31 |
KR20170130383A (ko) | 2017-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI628594B (zh) | 用戶等級分叉及會合處理器、方法、系統及指令 | |
US12020031B2 (en) | Methods, apparatus, and instructions for user-level thread suspension | |
CN108027807B (zh) | 基于块的处理器核拓扑寄存器 | |
JP6526609B2 (ja) | プロセッサ | |
CN108027771B (zh) | 基于块的处理器核复合寄存器 | |
JP6240964B2 (ja) | 装置、方法、およびシステム | |
US20230106990A1 (en) | Executing multiple programs simultaneously on a processor core | |
US20170371660A1 (en) | Load-store queue for multiple processor cores | |
CN108885586B (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、***和指令 | |
US11243775B2 (en) | System, apparatus and method for program order queue (POQ) to manage data dependencies in processor having multiple instruction queues | |
TWI751222B (zh) | 處理器及其處理器架構 | |
JP6450705B2 (ja) | 永続コミットプロセッサ、方法、システムおよび命令 | |
US20170371659A1 (en) | Load-store queue for block-based processor | |
CN112817738A (zh) | 用于修改可执行图以实施与新任务图关联的工作负载的技术 | |
US20170147345A1 (en) | Multiple operation interface to shared coprocessor | |
Poss et al. | Apple-CORE: Microgrids of SVP Cores--Flexible, General-Purpose, Fine-Grained Hardware Concurrency Management | |
CN112817739A (zh) | 用于修改可执行图以实施不同工作负载的技术 | |
US20150074378A1 (en) | System and Method for an Asynchronous Processor with Heterogeneous Processors | |
Natvig et al. | Multi‐and Many‐Cores, Architectural Overview for Programmers | |
Fasiku et al. | A review of architectures-Intel single core, Intel dual core and AMD dual core processors and the benefits | |
Sing et al. | Reconfigurable Embedded Multiprocessor Architecture with ARISE interface using FPGA |