TW571239B - Branch instruction for multithreaded processor - Google Patents

Branch instruction for multithreaded processor Download PDF

Info

Publication number
TW571239B
TW571239B TW089117902A TW89117902A TW571239B TW 571239 B TW571239 B TW 571239B TW 089117902 A TW089117902 A TW 089117902A TW 89117902 A TW89117902 A TW 89117902A TW 571239 B TW571239 B TW 571239B
Authority
TW
Taiwan
Prior art keywords
content
memory
branch
processor
engine
Prior art date
Application number
TW089117902A
Other languages
English (en)
Inventor
Gilbert Wolrich
Matthew J Adiletta
William Wheeler
Debra Bernstein
Donald Hooper
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of TW571239B publication Critical patent/TW571239B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Image Processing (AREA)
  • Stored Programmes (AREA)
  • Harvester Elements (AREA)
  • Control Of Transmission Device (AREA)
  • Document Processing Apparatus (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Fittings On The Vehicle Exterior For Carrying Loads, And Devices For Holding Or Mounting Articles (AREA)

Description

571239 案號 89117902 年 a 修正 五、發明說明(1) 【發明領域】 本發明係有關於分支指令。 【習知技術說明1
平行處理是計算程序中同時事件的資訊處理之一種高 效率的方式。平行處理要求在電腦中許多程式的同時執 行。相對地,循序處理或串列處理具有所有工作是循序地 完成於單一工作站或者管線計算機具有工作完成於專業工 作站。不管是執行於平行處理、管線或循序處理的電腦程 式碼包括分支,而其中指令亊可以執行於序列中以及從該 序列分支至不同序列的指令。 為讓本發明之上述和其他目的、特徵、和優點能更明 顯易懂,下文特舉較佳實施例,並配合所附圖式,作詳細 說明如下: 【圖式簡單說明】 第1圖係使用運用硬體的多執行緒處理器之通訊系統 的方塊圖。 第2 - 1圖至第2 - 4圖係第1圖的運用硬體的多執行緒處 理器的詳細方塊圖。 第3 - 1圖至第3 - 2圖係使用於第1圖與第2圖的運用硬體 n 的多執行緒處理器中的微程式引擎功能單元的方塊圖。 第4圖係第3圖的微程式引擎中的管線的方塊圖。 第5A圖與第5B圖係顯示用於内容相關指令的示範格式 的圖。 第6圖係顯示一般用途暫存器位址安排的方塊圖。
1057-3413-pf2.ptc 第5頁 2002. 10. 14.006 571239 _案號 89117902_年月日___ 五、發明說明(2) 第7-1圖至第7-2圖係使用於運用硬體的多執行緒處理 器中而用以加強頻寬運算的記憶體控制器的方塊圖。 第7A圖係代表使用於第7圖的SDRAM控制器中的仲裁策 略的流程圖。 第7B圖係顯示最佳化SDRAM控制器的優點的時序圖。 第8 - 1圖至第8 - 2圖係使用於運用硬體的多執行緒處理 器中關於潛伏時間所侷限的運算的記憶體控制器的方塊 圖。 第8A圖係顯示最佳化SRAM控制器的優點的時序圖。 第9 - 1圖至第9 - 6圖係在第1圖的處理器中通訊匯流排 界面的方塊圖。 【符號說明】 1 0〜通訊系統; 1 2〜運用硬體的多執行緒處理器; 13a〜10/100 BaseT 八進位媒體存取控制; 1 3 b〜十億位元乙太網路裝置; 14〜PCI匯流排; 1 6〜記憶體糸統, 1 6 a〜同步動態隨機存取記憶體(S D R A Μ ); 1 6b〜靜態隨機存取記憶體(SRAM ); 1 6 c〜快閃唯讀記憶體; 1 8〜第二匯流排: 2 0〜核心處理器; 22〜功能微程式引擎; 2 2a-22f〜微程式引擎;
1057-3413-pf2.ptc 第6頁 2002. 10. 14.007 571239 五、發明說明(3) 2 4〜P C I匯流排界面; 26a〜同步動態隨機存取記憶體(SDRAM )控制器; 2 6b〜靜態隨機存取記憶體(SRAM )控制器; 2 7〜便條式記憶體; 28〜先進先出匯流排(FIFO Bus: FBUS)界面; 29a〜輸入與輸出FIFOs ; 29b〜輸入與輸出FIFOs ; 3 0〜先進系統匯流排(ASB )轉譯器; 3 2〜内部核心處理器匯流排; 34〜非公開匯流排; 38〜記憶體匯流排; 50〜精簡指令集運算(RISC )核心; 5 2〜十六仟位元組指令快取(1 6 - k i i 〇 b y t e instruction cache ); 54〜八计位元組資料快取(8-kilobyte data cache ); 5 6〜預先擷取資料串緩衝區; 7 0〜控制儲存; 72〜控制器邏輯; 72a-72d 〜程式計數器(Program Counter: PC)單 元 7 3〜指令解碼器; 74〜内容事件切換邏輯 76〜執行盒資料路徑;
第7頁 571239 :ALU 丨 I五、發明說明(4) j 7 6a 〜算術邏輯單元(ar i thme t i c i og i c un i t 1 ' c
I l 76b〜一般罔途暫存器組(generai-DiirDose I - ! register set ); 器堆 j 78〜寫入移轉暫存器堆疊;80〜讀取移轉暫存 卜 \ 90〜位垃與侖令佇列; 9 0s 〜偶 數 储 存 所 佇 列; 90b 〜奇 數 儲 存 所 佇 列; 90c 〜次 序 佇 列 90d 〜高 度 優 先 權 佇 列; 91〜 ^SDRAM 仲 裁 器 b 92〜ASB匯流排界面邏輯; 98〜MEM ASB資料裝置; 97〜引擎; 9 4〜P C I位ϋ 4宁列; 96〜ASB讀取/寫入佇列; 1 0 6〜多工器; I 0 0〜優先權服務控制暫存器; II 0〜SDMM界面; ί 1 2〜匯流排; 115〜程序; 檢查;
11 5a〜對於連鎖微程式引擎記憶體參照要求的 11 5b〜對於ASB匯流排要求的檢查; 571239 I五、發明說明(5) j li5c〜對於PCI匯流排要求的檢查; | 11 5d〜對於高度優先權佇列服務的檢查; i
| I | 115e〜對於相反儲存所要求的檢查; j ί 115ί〜對於次序佇列要求的檢查; ί
I ' I
j 115g〜對於相同儲存所要求的檢查; I
120〜位址與命令佇列; I 120a〜高度優先權佇列; j 1 2 0 b〜S R A Μ完成的佔優勢的記憶體參照功能之讀取仔 j
列; L I 120c〜至SRAM的寫入與非最佳化的讀取之次序佇列;|w ί ί
I 120d〜讀取鎖住失敗佇列; I 122〜ASB匯流排界面邏輯; f 126〜多工器; j 128〜MEM ASB資料裝置; 1 30〜優先權服務控制暫存器; I 131〜SRAM仲裁器; j 138〜解碼器; j
1 138〜命令控制器與位址產生器; I I § 140〜SRAM界面; 142〜鎖住查詢裝置; 182〜傳送FIFO ;
| 183 〜接收FIFO ; I ! 188〜雜凑單元; ! ί 571239 五、發明說明(6) 188b 〜FIFO ; 189〜FBI控制與狀態暫存器; 2 0 0〜推進狀態機構; 2 0 2 ’〜搬走狀態機構; 【較佳實施例的詳細說明】 ιί = ΐ1圖,、通訊系統10包括平行,運用硬體的多热 Γτ^二1 2。€用硬體的多執行緒處理器12被連接至 ::;分割成為平行子工作或函數的工作, F 。特別地’對於頻寬導向而非潛伏ί 多執行緒處理器丨2擁有多微程式引ΪΓ2 母娀程式引擎22具有多硬體控制執 , , 行緒可以被同時地啟動與獨立地活動於:作;體控制執 運闬硬體的多執行緒處理器Η也包括中央控 中央控制器2 〇協助裝載用於運〜鈾、二声的.0, 的其他資源之微程式碼控制多執灯緒處理器12 數,例如管理協定,異常他…腦類型函 中微程式引擎22完成封包的处理的額夕支板,其 況。在-實施例中,處;處理’如同在邊界狀 構(Απ是英國ARM公5Ί的;&運罔St_g 的架 於微程式引統處理處^器2〇可以呼叫函f以運算 業系統,最好是即時作章處李/2〇可以使用任何支援的作 系糸、、先。對於實現為Strong Arm架 571239 五、發明説明⑺ 的核心處理器2 0 ’例如M i c r 〇 s 〇 f t〜n T 鱼 YXWorks輿/zCUS,可於網際網路得 r e a 丄〜ΐ i m e, 統 之類的作業系統可以被使馬c 3""車人體作業系 罔硬體的多執行緒處理器1 ? v 擎22一 ϋ功能微程式弓數,能微程式引 2.如維持硬體中的複數程式計數^^弓⑴ 算,對應:-些執行緒集合可以被同時地啟:於= 微程式引擎22a-22f。 …、母個㉟ 在:實施例中,顯示出六個微程式引擎…―。 -微程式引擎22a—m具有用於處理四個硬體執行緒的; 力。六個微程式引擎22a-22f與包括記憶體系統16及匯流 排界㈣與28的共享資源運算。記憶體系、統16包括同 步動悲隨機存取記憶體(SDRAM )控制器26a與靜態隨機存 取圮fe體(SRAM )控制益26b。SDRAM記憶體16a與SDRAM控 制器26a通常被使用於處理大量的資料,例如,來自網路 封包的網路費兩的處理。SRAM控制器26b與SRAM記憶體16b 被使用在電腦系統的連線作業實現中用於低潛伏時間,快 速存取工作,例如,存取查詢表格,用於核心處理器2 〇的 記憶體等等。
基於資料的特性5六微程式引擎2_2a-22f存取SDRAM 1 6a或SRAM 1 6b。因此,低潛伏時間5低頻寬資料被儲存 於SRAM 1 6b中以及從SRAM 1 6b中被擷取,反之對於潛伏時 間不重要的高頻寬資料被儲存於SDRAM 1 6a中以及從SDRAM 571239 五、發明說明(8) ~ 1 6a中被擷取。微程弍引擎22a-22f可以執行記憶體參照指 令至SDRAM控制器26a或SRAM控制器26b。 硬體多執行緒的優點可以由SRAM或SDRAM記憶體存取 所解釋。I例而言5來自微程式引擎由執行緒〇所要求的 SRiP存取將導致SRAM控制器26b ,開始存取至SRAM記憶體 1 6b。SRAM控制器26b控制對於SRAM匯流排的仲裁5存取 SRAM 16d ’從SRAM 16b擷取資料,以及送回資料至要求的 微程式引擎22a-22f。在SRAM存取期間,假如微程式引 擎,例如微程式引擎2 2 a,僅具有可以運算的單一執行 緒5 ^微程式引擎將是暫停活動直到資料從SRAM 16b被送 回。藉ώ在母一微程式引擎2 2 a - 2 2 f内部使周硬體内容調 換,硬體内容調換賦予其他内容具有唯一程式計數器以執 行於該相同微程式引擎中。因此,在另一執行緒中,例如 執=緒1可、以工作當第一執行緒,亦即,執行緒〇是等待讀 取貝。料的^回。在執行期間5執行緒1可以存記憶 f1!%'當執行緒1運算於SDRAM單元16&上,以及執行緒β =連==SRAM早元18b上時5新執行緒,倒如執行緒2現在 ΐ於u程式引擎22a中。執行緒2可以運算於某些量 ι:到其需要存取記憶體或者完成一些長潛伏時間運 f如做出至匯流排界面的存取。因此,同時地,處理 二2 I = i有ΐ 一微程式引擎22a所完成或運算於其上的 ί二5 3運算,SRAM運算以&SDRM運算以及具有更多 處理資料明的更多工作。 左h各调換也同步工作的完成。I例而言,兩執行
第12頁 571239 五'發明說明(9) ,,者二以命中相同共享資源5例如SRAM 16b。當個別功能單 兀元成來自徵程式引擎執行緒内容的一去所要求的工作 :,這些個別功能單元的每—個,例如FMS界面28, S RAMf制器268與抑錢控制器26b,報告西標示運算完成 =二軚。f微程式引擎接收旗標時$微程式引擎可以決定 細叙13 那 '—執行、绪。 从-或f於連⑺ΐ體的多執行緒處理器1 2的應罔之一實例是 乂孫=處理^ °卩為網路處理器5運羯硬體的多執行緒 ll/ι ^〔接合類似媒體存取控制器裝置的網路裝置,例如 路I置1 3b。通當5冼盔袖私上 緒處理器^以接人「Λ 處理器,運周硬體的多執行 收/傳出大卿:二可類型的通訊裝置或界面, 訊系㈣可以、接收來二二腦系統連線传業應欠用中的通 α亚> + 1 w叹木自裝置13a與13b的複數網路封包並且 哭]9仃/處理那些封包。具有運用硬體的多執行緒處理 W〇i2斜母一網路封包可以獨立地被處理。 ,ρ、於處理器12使甩的另一例子是用於後稿語言 ^^ = SCl^P〇處理器的如刷引擎或者作為闱於儲存子系 ^甬’ΐ ^;例如容錯式獨立磁碟陣列(R A1D )。另外一 :要為相配引擎。例如在安全企業中5電子交易的ώ σσ 。剎,相配引擎的使用而比對在買方與賣方之間的訂 Λ、、 用不統1 0 ’這些與其他平行類型的工作可以被完 取'。 乂理器12包括連接處理器至第二匯流排18的匯流排界 571239 ξ五、發明說明(ίο) " " - I ^ I回28。在一實施例中,匯流排界面28連接處理器12至被塌 I稱為FBUS 18(先進先由匯流排fifobus) 。FBUS界面28“ |是承擔控制與接合處理器12至FBUS 18的責任。FBUS 18是 六十四位元寬先進先虫匯流排,使甩以接合媒體存取控^ 器(MAC )裝置。 、 \ 處理為12包括弟_界面5例如pci匯流排界面24,其 i連接存在於PCI匯流排14上的其他系統組件至處理器12 ^ j PC ί匯流排界面24提供高速資料路徑2 4&至記憶體16,例如 | SDRAM記憶體16a,經甴該路徑,資料可以從SDRAM 169經 過PC ί匯流排i 4快速地被移動,憑藉直接記憶體存取 (direct memory access - DMA )移轉。運用硬體的多執 |行緒處理器12可以使兩DMA通道所以假如DMA移轉的目檁是 I忙碌的,另一的DMA通道可以取得於pci匯流排上而傳送$ 訊至另一目標以維持高處理器12效能。此外5 PCI匯流為f 界面24支援目標與主要運算。目標運算是在匯流排14上的 從動裝置經過讀取與寫入而存取SDRAM的運算,其服務作 為對於目標運算的從動裝置。在主要運算中,處理器核心 I 20直接地送出資料至PCI界面24或者從PCI界面24直接地接 I收資料。 | 每一功能單元22被連接至一或多個内部匯流排。如以 下所說明二内部匯流排是雙數,三十二位元匯流排(換言 之’一匯流排周於讀取以及另一匯流排用於寫入)。運周 硬體的多執行緒處理器1 2也是被構成以致在處理器1 2中的 |内部匯流排的頻寬總和超過内部匯流排連接至處理器12的
571239 五、發明說明(11) 頻寬。處理器1 9白紅〜士 系統匯流雄it内部核心處理器匯流排32 ’例如先進 控制器26:、:…此匯流排連接處理器核心至記憶體 〔ASR.、)鳇缚一/ 說明於下文中的先進系統匯流排 棑架構流排是所謂㉟先進微控制器匯流 心?0 - # i ^ …I;,ϋΜβΑ是舆strong Arm處理器越 二器12也包括連接微程式引擎單元22 流#34 U^:;s ί、h抑轉譯器30與打1^界面Μ的非公開匯 制器26a、26“匯記憶體匯流排38連接記憶體控 _ 被使用於開機運與28以及記憶體系_包括 參日”裳9 ^ ▼夸的快閃唯讀記憶體1 6C。 標以^ ί被運圖曾5Λ~Λ的微程式引擎仏-如包括檢查旗 程式引擎22^/的任Λ可利兩執行緒之仲裁器。來自微 敌圮悻體執行緒可以存取同步動態隨機存 (麵)二、靜態隨機存取記憶體 w26d或者先進先出匯流排( ===❹制咖娜包括為未=的 等級,就:數佇列。佇列不是維持記憶體參照的 #、,及就疋女排記憶體參照以最佳化記憶體。 言,假如執行緒0沒有對於勒行❸的依輟?頻見。舉例而 66 -p ^ ^ ^ I負序I亂地70取它們對於SRAM罝 ϊ ΓΛ Λ 微程式引擎22a_22f發佈記憶體參照 要々一。己fe體控制|§26a與26b。微程式?丨擎一22〒 夠的記憶體參照運算充滿記憶體子系統26&盘⑽以致二己、 憶體子系統26a與261)變成對於處理器12運曾、的 。
第15頁 571239 I五、發明說明(12) j
j 假如記憶體系統16是被本質獨立的記憶體要求所充 I
!滿5處理器12可以完成記憶體參照排序。記憶體參照排序 | j改進可達到的記憶體頻寬。如下文所說明5記億體參照排 i 丨序減少無效時間或者與SRAM 16b的存取一起發生的磁泡。I
\ I 具有至SRAM 16b的記憶體參照,在讀取與寫入之間切換電 | |流方向於信號線上製造磁泡或無效時間$其壻於等待電流 | I 素 穩定於連接SRAM 16b與SRAM控制器26b的導體上。 | I ! ! 那就是,驅動匯流排上電流的驅動器需要穩定於改變 丨 S Ϊ i狀態之前。因此,一讀取跟著一寫入的重複週期可以降級j |最向頻寬°記憶體參照排序允許處理器12安排對於記憶體丨· I的參照以致一長串的讀取可以跟著一長串的寫入。這可以j j被使兩於最小化在管線中的無效時間而有效地達到接近最丨 大值可利用頻寬。參照排序協助維持平行硬體内容執行 |緒。在SDRAM 16a上,參照排序允許從一儲存所至另一儲 |存所的預先充電的隱匿。具體地,假如記憶體系統^ 被j |安排成為一奇數儲存所與一偶數儲存所,當處理器運箕於| I奇數儲存所上時,記憶體控制蒸可以開始預先镇丨 j存所。,如記憶體參照交替於奇數與偶數儲存所之間,預i 先充電是可能的。藉由排序記憶體參照而交替存取至相反 _ j儲存所,處理器ί 2改進SDRAM頻寬。此外,其他最佳化可 j以薇使羯。盩例而言,可以被合併的運算之合併最佳化被、 |合併於記憶體存取之前5藉由檢查位址記憶體的已開啟分j j頁不被再次開啟之開啟分頁最佳化,連接,如下文所將說j I明’與更新機構可以被利周。 ύ M y〜1 FBUS單元 引擎。 1 | FBUS單元 元寫入。 FBUS單元 SDRAM。 至/從微程式 従SDRAM單 讀取至
571239 I五、發明說明(13) ^- j 在用於標示何時服務是被授權的中斷赛样之外,ρδυς ;界面28支援對於MAC裝置支援的每一埠的儀〜'之夕1。 、 1 %盘接收旗 標。FBUS界面28也包括完成從FBUS進來封力/ 义的標頭處理之
禮制器28a。控制器28a設法得到封包標頭托 ξ 1 〇, ^ ^ ^ 、且完成於SRAM | i 〇b中的微程式可編程序的來源/終點/協定 i . ?τ ‘ . ' 、雜湊查詢 I (Hashed lookup )(使用於位址平滑)。如,^ τ… a l , t ^如雜凑不能 成功地解答5封包標頭被送至處理器核心2 ! w υ用於其他處 ί二。FBUS界面28支援以下内部資料異動: (共享匯流排SRAM ) (經由非公開匯流排) (經由MBUS ) FBUS 1 8是一標準工業匯流排並且包括一資料匯流 排,例如用於位址與讀取/寫入的六十四位元寬與旁波帶 j控制。使羯一系列的輸入與輸出FiF0s 29 a - 29b,FBUS界 j面28提供輸入大量資料的能力。來自FiF〇s 29a —29b,微 j =式引擎22a — 22i從接收FIFO擷取資料或者命令SDRAM控制 器2fa從接收FiF〇移動資料進入FBUS界面28,在接收FIFO I中貧料是來自位於匯流排1 8上的裝置。經由直接記憶體存 j ^ ’資料可以被送出經過記憶體控制器26a至SDRAM記憶體 j ) ua。相似地’經由FBUS界面28,微程式引擎可以從SDRAM I 26&移動資料至界面28,輸出至FBUS 18。
第17頁 571239
五、發明說明(14) I
資料函數是被分配於微程式引擎22之中。對SDRAM I
26a、SRAM 26b與FBUS 28的連線是經甴会令要求。命令要 | 求可以是記憶體要求或者FBUS要求。例如,命令要求可以i 從位於微程式引擎22a中的暫存器移動資料至共享資源, I 例如SDRAM位置、SRAM位置,快閃記憶體或者一些MAC位 | 址。会令被送出至每一功能單元與共享資源。然而,共直 j 資源不需要維持資料的局部缓衝。更確切地說,共享資源| 存取位於试私式引擎22a-22r之中的已分配資料。這賦予 ^ 微程式引擎22a-22f具有局部存取資料的能力而不^仲裁 | 在匯流排上的存取與對於匯流排的風險競爭。具有此特 色’用於等待資料内部至微程式引擎22a-22f的拖延是零 週期。 ^ 上兩倍SDRAM的頻寬。
第18頁 例如ASB匯流排30、SRAM匯流播34與SDRAM匯流排38的j 貧料匯流排是有足夠頻寬而連接例如記憶體控制器26a與| 26b的這些共享資源以致沒有内部的瓶頸。因故5為了避 ! 免瓶頸,處理器1 2具有頻寬需求,其中每一功能單元供& 至少兩倍的内部匯流排最大頻寬。舉例而言,丨6a 可以運轉六十四位元寬度匯流排於八十三;萬赫兹。SRA1| 資料匯流排可以具有分開的讀取與寫入匯流排5例如可以[ 是運轉166百萬赫茲的二十一位元寬度讀取匯流排以及一 | 百六十六百萬赫茲的三十二位元寬度寫入匯流排^亦即5 j 在本質上’六十四位元運轉於一百六十六百萬赫茲是實際 571239
I五、發明說明(15) I j有經甴匯流排32至SDR AM控制器26a、至匯流排界面24與至j | SRAM控制|§26b。然而y為了存敌微輕式引擎22a — 22f以及| |移轉位於任何微程式引擎22a-22f中的暫存器,核心處理j 器20經由ASB轉譯器30跨過匯流排34而存取微鋥式引擎 | 22a-22f。ASB轉譯器30可以實際上存在於FBUS界面28,但| 是邏輯上是有區別的。ASB轉譯器30完成在FBUS微程式弓丨| j擎移轉暫存器位置與核心處理器位址(亦即ASB匯流排)| 丨之間的位址轉譯以便心處理器2 〇可以存取屬於微裎式引 1 | 22a-22i的暫存器。 ’…"擎| | 雖然微程式引擎22a - 22f可以使用暫存器組以交換資 j 料如以下所說明,便條式記憶體27也被提供以允許微鞋广1 引擎22a-22ί寫出資料至記憶體而作為其他微程式引擎^ j 取。便條式記憶體2 7是連接至匯流排3 4。 | I 處理器核心20包括精簡指令集運算(RISC )核心50, |
精簡指令集運算(RISC)核心50實現於五級管線而完成〜| 運算元或兩運算元的單一週期位移於單一週期中,提供乘 j 法支援與三十二位元桶形位移支援。此r ί SC核心5 0是榡準 Strong ArmR的架構,但是為了效能原因而被實現於五級 |管線。處理器核心2 0也包括十六仟位元組指令快取 I 5 ί j ( 1 6-ki iobyte instruction cache) 52 5 八仟位元組資 | !料快取(8-ki i〇byte data cache ) 54與預先擷取資料电 | 緩衝區(prefetch stream buf fer ) 56。核心處理器 2〇 完 | 成算術運算平行於記憶體寫入與指令擷取。核心處理器=! 經由ARM所定義的ASB匯流排與其他功能單元接合。ASB匯 |
571239
五、發明說明(16) 流·排是三十二位元雙向匯流排32 微程式引擎: 參照第3圖,微程式引擎22a-22f的範例,例‘奴 引擎22ί,被顯示。微程式引擎22ί包括控制儲存7〇,在八 實現中,其包括1024個三十二位元的字組之隨機存取^ — 體(RAM ) 。RAM儲存微程式(未顯示)。微程式是可= I· 心處理器20所載入。微程式引擎22 ί也包括控制器邏輯核 ?2。控制器邏輯72包括指令解碼器73與程式計數器 (Program Counter: PC)單元?2a-?2d。四個微輕弄上 器72a-72d是保留於硬體中。微程式引擎22f也包括内$ : 件切換邏輯7 4。内容事件邏輯7 4接收來自每一個共直=, 貝 的訊息(例如 5 SEQ_#—EVENT —RESPONSE ; FBI—EVENT—RESPONSE ; SRAM一EVENT一RESPONSE ; 丨 SDRAM—EVENTJESPONSE ;與ASB —EVENT-RESPONSE ) 5 共古 I資源例如SRAM 26a,SDRAM 26b,或處理器核心2〇,控^ I與狀態暫存器等等。這些訊息提供被要求的功能是否已麵 完成的資訊。基於由執行緒所要求的功能是否已經完成與 用信號通知完成,執行緒需要等待該完成信號,以及假如 執行緒被賦予運算的能力,接著執行緒被放置於可適用執 行緒名冊中(未顯示)。微程式引擎22f可以具有四個可 適羯執打緒的最大值。 除了局部至執行申的執行緒的事件信號之外,微程式 引擎22a-22f利用總體的信號發送狀態。具有信號發送^ 態,執行中的執行緒可以播送信號狀態至所有的微程式引
第20頁 571239 ! . >
I五、發明說明(17) S | :; I 擎22a-22f。接收要求可適周(ReceiveReouest ί \ . — ~ \
Avaiiabie)信號,在微程式引擎22a-22i中的任何與所有 | 執行緒可以分支於這些信號發送狀態上。這些信號發送狀 | -ί j態可以被使羯以決定資源的可適用性或者是否資源是到期i |而可以服務。 |
1 内容事件邏輯74具有對於四個執行緒的仲裁。在一實 I I 3 !施例申:伸裁是循環赛機制。其他技術可以被使羯,包括 丨 ί!
優先權排序或者權重公正排序。微程式引擎22 f也包括執 I f 行盒資料路徑76 (execution box data path) 5執行盒 | !資料路徑76包括算術邏輯單元(arithmetic logic unit 9 "; > ί ^ j ) 76a 與一般用途暫存器組(general-purpose register ί set) 76b。算術邏輯單元76a如同移位函數般地完成算術 | 與邏輯函數。暫存器組76b具有相當大數目的一般羯途暫 | 存器。如第6圖所說明,在此實施例中,在第一儲存所 Bank A中有六十四個一般用途暫存器以及六十四個在第二 |
I儲存所Bank ΒΦ。一般用途暫存器是被開窗以至於它是 I
j I 丨相對地與絕對地可尋址的。 丨 j 微程式引擎22f也包括寫入移轉暫存器堆疊78與讀取 j I移轉暫存器堆疊80。這些暫存器78與8 0也是被開窗以至於 L· 它們是相對地與絕對地可尋址的。寫入移轉暫存器堆疊7 8 j |是其中寫入資料至資源是被找出。相似地,讀取移轉暫存 j S器堆疊80是用於從共享資源傳回資料。與資料到達同時發 i a
I生或隨後,來自例如SRAM控制器26a,SDMM控制器26b或 I ^ ν ί I核心處理器2〇的各自共享資源之信號事件將被提供至事件 !
第21頁 571239 五'發明說明(18) 仲裁器74 ’其將接著改變資料是可谪 行緒。移轉暫存器儲存所78與8〇兩;是:;:被送出的執 ,執行盒(EB0X”6。在—實施例;過 态具有六十四個暫存器以及寫入移轉暫 且古s夕轉暫〗子 暫存器。 芥一具有六十四個
參照㈣,微程式引擎資料路獲維持五 u>-stage ffliCro-pipeliile ) 82。此答…I 的查詢82a,暫存器列位址的形成8礼,從g存^ ::: 『賣取82c,ALU移位或比較運算㈣s與結果至暫存哭的-寫=82e。藉由提供寫回資料旁路進入ALU/移位單元了以 及藉由假设暫存器是實現為暫存器列(而非RAM ),微程 =引擎22f可以完成同時發生的暫存器列讀取與寫入,其 元全地隱藏寫入運算。 SDRAM#界胃面26a提供一信號回到要求微程式引擎於讀取 上,其軚不疋否同位錯誤發生於讀取要求上。微程式引擎 微程式碼是作為當微程式引擎使用任何傳回資料時檢查 = RAM 16a鑕取同位旗標。根據檢查旗標5假如它是被設 疋5、於其上的分又的動作清除它。同位旗標只有當sdram i、、6a被賦予檢查的能力5以及sdram !6a是同位保護時才被 廷,。微程式引擎22與pCi單元14是報告同位錯誤的僅有 ,不者。因此’假如處理器核心2 〇或?丨F〇 1 8需要同位保 遵’微程式引擎協助該要求。微程式引擎22a一22f支援條 ,分支。最差,,的條件分支潛伏時間(不包括跳躍)發 二於當分又決疋疋由前一微程式控制指令所指定的條件程 571239 五、發明說明(19) 式碼的結果。潛伏時間顯示於以下第1表中: 丨徼键存查詢 | ί 1 η[ ί 1 rb丨 1 ί π2丨 1 ί ;Μ i 1 bl 丨 ! M \ ! b3 ! b4 ! 暫存器位姑產生 1 I ni cb XX M hi 1 b2 I | b3 暫存器縱列査詢 nl cb XX XX bl b2 |ALU/位移器/cc 1 1 ! I ί I ί nl ! cb 1 XX ! xx bi | 丨! 丨寫西 ί I I m2 i ί nl ! cb j XX I XX ;
!___j 1 i ^ ( j i 1 I I 其中nx是預先分支微程式字組(nl設定cc5 s ) \φ I cb是條件分支 丨
I I bx是後分支微程式字組 I XX是被終止的微程式字組 !
? I j 如第1表所示5直到週期4時η 1的條件碼被設定5以及 !
I
分支決定可以被做岀(在此狀況中導致分支路徑被查詢於 | 週期5中)。微程式引擎帶來2週期分支潛伏時間損失,因 I 為其必須終止在管道中的運算n2與n3 (該2微程式字組直 | 接位於分支後),在分支路徑開始以運算bl裝滿管道之 j 丨前。假如分支不發生,沒有微程式字組被終止以及執行正 |響 !常地繼續。微程式引擎具有幾個機制以減少或消除實際的 I I 【. j分支潛伏時間。 j j 微程式引擎支援被延遲的分支。延遲分支是當微程式i
|引擎允許在分支之後的1或2微程式字組發生於分支生效之 I
第23頁 571239 · =發明說~~~ --- ^ (印分支的效應在時間上是被延遲地)。因此,假如有 i神=作可以被發現而填充在分支微程式字組之後被浪費的 I =丄於是分支潛伏時間可以被隱藏。1週期延遲分支顯 r,此處n2被允岭執行於“之後,但是於“之前: 微错存査詢 I ni 〇 ά cb 3 ϋΓ 4 U 5 bi 6 b2 7 b3 S b4 暫存器拉址產生 nl cb n2 XX bi b2 b3 暫存縱列查詢 1 ni cb n2 XX bi b2 ALU/佐移器/cc 1 ·~-*i ! ! nl cb n2 ! i XX bi 寫回 i nl l cb 1 i n2 -i XX | 、2週期延遲分支顯示於下,此處n2與“兩者被允許完 成在至Μ的分支之珂。要注意的是2週期分支延遲僅被允 許在當條件碼被指定於在分支之前的微程式字組。 1 2 3 4 5 6 7 8 9 微儲存査詢 nl cb n2 n3 bi b2 b3 b4 b5 暫存器拉址產生 ni cb n2 n3 bl b2 b3 b4 暫存器縱列査詢 nl cb n2 n3 bi b2 b3 ALU/位移器/cc nl cb n2 n3 ϊ bi b2 寫13 ϊ i ^ 丨 i ί Ϊ | ! n[ | ! ! | cb I [ ί i n2 !_ n3 bl j i 微程式引擎也支援條件碼估算。假如做出分支決定的 571239 五、發明說明(21) 條件碼是在分支之前設定2或者更多微程式字組,然後1週 期的分支潛伏時間可以被消除,因為分支決定可以在早於 1週期之前被做出。
ί | 2 I 3 | 4 ! 5 ! ί s ί i ! M 7 t i 8 微儲存査詢 ni n2 1 cb | Μ I bl b2 1 b3 b4 暫存器姐妯1生 ηί I n2 ! cb 1 XX i ί i bl b2 b3 暫存器縱列査詢 ni n2 cb XX bi b2 ALU/位移器/cc ni n2 cb XX bi 寫Η \ \ I | ni ί ί n2 | cb M 在此例子申,η 1設定條件碼以及n2不設定條件碼。因 而,分支決定可以於週期4做出(而不是週期5 ),而消除 1週期的分支潛伏時間。在以下的例子中5 1週期分支延遲 與條件碼的提前設定被相互結合而完全地隱藏分支潛伏時 間: 條件碼(cc’ s )被設定於1週期延遲分支之前的2個週 期
第25頁 571239
I五、發明說明(22) ! 1 ! 2 1 3 ! Μ 5 6 ! 7 ! 8 ! 微櫧存查詢 ! ηί : I cb n2 1 I n3 i bl b2 i ! b3 ! i b4 暫存器&址產生 ni. n2 I cb ί n3 bl I 1 1 b2 b3 暫存器縱列査詢 nl n2 cb n3 ! | bi b2 ALU/位移器/cc~ 1 nl n2 cb ί n3 bi 耷Η 1 1 ! j ! ni n2 I cb j ! n3 I 在條件瑪不能被提前設定的狀況T (它們被設定於分
I ?支之前的微程式字組甲)'微程式弓!聲叉援分支猜測面嘗 |試減少1週期的暴露的保留分支潛伏時間。藉由"猜測”分 I支路徑或者循序路徑,在明確地知道哪一路徑被執行之 |前,微程式定序器預先擷取被猜測路徑的1週期。假如猜 |濶正確,1週期的分支潛伏時間被消除如以下所示: ! ! 猜測路徑發生/分支發生
I 2 3 4 5 0 7 8 微儲存査詢 ni cb nl bi b2 b3 b4 b5 暫存器位址產生 ; 1 : n[ cb XX bi b2 b3 b4 暫存器锻列査詢! | ! j nl cb | i XX 1 bl b2 b3 ALU/拉移器/cc ί ί ! ni cb XX ί bl i i b2 j !_i \%m ! i i ! i ! !ni 1 cb丨 i ! 1 Μ | 1 bl ! ! I 假如微程式碼猜測分支不正確地發生,微程式引擎依 然只有浪費i週期
第26頁 571239 五、發明說明(23) 猜測路徑發生/分支不發生
i 丨 < 丨 1 i丨2 _!_L 3 I 4 ; 5 I ί 6 ! 7 8 微儲存査詢 ! η[ ! cb 1 ni χχ ϊ n2 ! n3 j n4 I ! n5 i 暫存器位址1生 ηί cb ni IX ri2 i n3 n4 暫存器縱列査詢 ni cb ni XX n2 n3 AUJ/位移器/cc ni cb ni XX n2 寫运 I ί 1 ni cb ni XX 無論如何,當微程式碼猜測一個分支是不發生時,潛 伏時間損失是不同地分佈: 對於猜測分支不發生/分支是不發生5如下所設定地 不浪費週期。 i ! 2 3 41 51 61 7 g 微儲存査詢 ni cb nl π2 n3 n4 n5 n6 暫存器拉址產生 nl cb ni n2 n3 n4 n5 暫存器縱列査詢 nl cb ni n2 n3 n4 AUJ/拉移器/cc 1 ni i cb ni n2 | n3 寫Μ 1 ! 1 1 ni I 5 ή i 1 i ί ί ! ! cb | ni n2 無論如何,對於猜測分支不發生/分支是發生時有2浪 費的週期。
第27頁 571239 五'發明說明(24)
徽儲存査1旬; !n[ ! cb | ni ;Xa | bi i b2 I :b3 b4 1 暫存器拉址產生丨 1 ni ; cb ! 1 ! M | , 1 xi | 1 bi i j ! b2 I b3 i 暫存縱列査詢| 1 ni ! i ; 1 i 1 丨cb丨 i ! ! xx XX ! 丨 : i bi b2 1 AUJ/位移器/cc : ;ni cb xx | XX bi 寫回 1 nl cb | ! M i 微程式引擎可以結合分支猜測與1週期分支延遲而進 | | 一步地改善結果。對於猜測分支發生與1週期延遲分支/分 |支是發生: j 1 2 3 1 4 5 6 7 8 微儲存査詢 nl cb n2 bi b2 b3 b4 b5 暫存器拉址產生 1 nl cb ! n2 bi b2 | b3 b4 暫存器縱列査詢 1 ! ni cb n2 bl b2 b3 ALUAii 移器/cc [ I nl cb n2 | bl b2 窝回 ! ! 1 ! nl cb n2 bl
! 在以上狀況中,2週期的潛伏時間是藉由n2的執行以 丨及藉甴正碹地猜測分支方向而被隱藏。假如微程式碼猜測 |不正確,如以下所示,對於猜測分支發生1週期延遲分支/ I分支不發生週期的潛伏時間維持浪費。 5
第28頁 571239 π I五、發明說明(25) ! I 2 q i /1 。| -a ί tr- I b 6 j 7 8 ! 9 微儲存査詢 ni cb n2 XX n3 n4 | n5 n5 n7 暫存器位址產生 ni cb n2 XX n3 n4 | n5 n6 暫存i縱列査詢 1 1 I ! Ri i cb 1 :n2 - i Μ ! ! i n3 n4 I ! n5 ALU/妞移器/cc 1 ί 1 1 ni ! ! 1 丨飞 ί f CD S ! n2 i ί ; ! M n3 | ! n4 ί ; l ^ 寫回 1 !; i I S ni j I cb n2 M | \ n3
假如微程式碼正確地猜測分支不發生,然後管線循序 地流通於正常未受到擾亂的狀況。假如微程式碼不正確地 i猜測分支不發生,微程式引擎再次浪費1週期的無產出執 I行,如以下所示5對於猜測分支不發生/分支發生
! 2 3 4 5 6 ; 1 7 8 9 微櫧存査詢 ni cb n2 XX bl b2 b3 b4 b5 暫存器也址產生 nl cb n2 XX bl b2 b3 b4 暫存器縱列査詢 ni cb n2 XX j bl b2 b3 ALU/姐移器/cc 1 nl cb n2 | XX bl b2 窝® E ! ni cb I | n2 XX I bL
其中η X是預先分支微程式字組(η 1設定c c ’ s ) cb是條件分支 bx是後分支微程式字組 XX是被終止的微程式字組
第29頁 571239 I五、發明說明(26)
I I 在跳躍指令的狀況中5招致3額外週期的潛伏時間5 |因為分支位址是未知的直到跳躍位於ALU級中的週期的結 i尾:
i丨2丨3丨4丨δ Γ 3丨7 ..1.…_ !…—.1 — 8 ! 9 u—」 i微儲存査詢 i πί 1 ip ! Μ ί 11 1 Μ ΜΙ ! Ϊ2 j3 |J4 ! 暫存器·位妯1生 ϊ ; ηί 1 jg π XX M | ji ]2 J3 暫存器縱列査詢 nl Μ XX xx ! xx 1 Ji J2 ALU/位移器/cc !_-_! 1 I ni丨 ! ; Ϊ j 11 i XX ! Π n j S & ί ί ^ 8 ί Η 丨窠函 ! : ί ί ! nl. ! id Γ XI I XI Γ_Μ 1_丨丨丨 丨丨丨咕丨 i i
, I 微程式引擎支援各種標準類型的ALU指令,包括完成 ALU運算於一或兩運算元並且放置結果至終點暫存器的邏 輯與算術運算。根據運算的結果,ALU更新所有ALU條件 碼。在内容調換期間,條件碼的數值被遺失。 j 參照第5A圖,顯示内容分支指令BR = CTX與BR! =CTX。 |基於目前執行内容是否為特定内容數字5内容分支指令導 I致處理器,例如微程式引擎2 2 ί,分支至位於特定標籤上
I
!的指令。如第5 Α圖所示,内容分支指令是當分支遮罩攔位 I ' |等於’ 8M或π 9π所決定。内容分支指令可以具有下列格式: I br二ctx「ctx, iabei#],optional—token I — ( ^ I b r!= c t x L c t x, label#」,optionai_token ί 欄位label#是相對應至一指令位址的符號標籤。襴位 I CTX是内容數字。在一實施例中5有效的ctx數值是0、1、 Η ·
第30頁 571239 I五、發明說明(27) | 2或者3。内容分支指令可以具有一選項_記號 I , I loptionaji — toxen) 延遲一(deier one)'的選項—記 j號將導致微程式引擎在完成分支運算之前執行尾隨此指令 j的一個指令。 ; 假如内容是特定數玄,指令br = ctx分支以及假如内容 j不是特定數字5指令br!=ctx分支。 | 參照5B圖,内容調換指令是分支的特殊形式,其導致
5 一個不同的内容(與相關程式計數器)被選擇。内容切換 I或調換同樣地引入一些分支潛伏時間。考慮以下的内容切 丨換: | 丨 ί 2 | 3 ! 4 ! _____________L 」____ 5 I δ | 7 g 9 ! i 微儲存査詢 oi ca br ww nl n2 n3 1 1 n4 n5 n6 暫存器位址產生 oi ca XX nl n2 fnT n4 n5 暫存器縱列査詢 ol ca XX nl n2 n3 n4 ALU/位移器/cc ol ca XX ni 1 n2 n3 II ! ! ! 1 i 1 oi ! j ca 1 i ! ! xx nl n2 b j 其中0X是舊内容流向 br是舊内容中的分支微程式字組 ca是内容重新仲裁(導致内容切換) XX是被終止的微程式字組 ί 在内容切換中5 ” brn 微程式字組被終止以避免控制
j與時序複雜度5其可以藉由儲存正確舊内容程式計數器所
第31頁 571239 p、發明說明(28) j導致。 丨 運作於設定在分支之前的微程式字組的ALU條件瑪的 j條件分支可以選擇〇、1或2週期分支延遲模式。運作於設 j足在條件分支之前的2或更多微程式字組的條件碼可以還 擇0或1週期分支延遲模式。所有其他分支(包括内容重新 j仲裁)可以選擇〇或1週期分支延遲模式。電腦内部結構可 丨以被設計為製作内容#裁微程式字組於先前分支的分支延 1 一
遲窗口之中,跳躍或内容件裁徵程式字組,合法選項。亦 即5在一些實施例中5因為如前文所提及,内容調換不被 允許發生於分支過渡時期,其可能過度地複雜化舊内容程 式計數器的儲存。電腦内部結構也可以被設計為製作分支 於先前分支的分支延遲窗口,跳躍或内容仲裁微程式字組 |是不合法以避免複雜化以及不可預满的分支行為。 I 内容調換指令CTX_ARB調換目前執行於特定微程式引 I擎中的内容移ώ記憶體而使得另一内容執行於該微程式引 擎中。當特定信號被啟動時,内容調換指令CTX一ARB也喚β 醒被調換移出内容。對於内容調換指令的格式是: ctx_arb[參數(parameter )],optional —token I 參數欄位可以具有幾個數值中的一者。假如參數被 , j具體指定為” sram Swap (靜態隨機存取記憶體調換)” s |内容調換指令將調換出目前内容並且喚醒於當執行緒的 j SRAM信號被接收到時。假如參數被具體指定為” sdram、 | Swap (同步動態隨機存取記憶體調換)”,内容調換指令 !將調換出目前内容並且喚醒於當執行緒的SDRAM信號被^ 571239 五、發明說明(29) | |收到時。參數也可以被具體指定為"FBI”以及調換出目前 | !内容並且噢醒於當執行緒的FBI信號被接收到時。FBI信號 丨 I標示一個FBI CSR、便條式記憶體、1TIF0或RFIFO的運算 | I已經完成。 i ϊ « I 參數也可以被具體指定為 !
| seq_numl_change/seq_num2_changeH ,其調換出目前内 | |容並且喚醒於當序列數字的數值改變時。參數也可以被具| 丨體指定為” i nter_thread” 5其調換出目前内容並且唤醒於 S i當執行緒的執行緒之間信號被接收到時,或者 I ” voluntaryπ,假如另一執行緒是準備好執行時將調換出 | 丨目前内容,否則不調換。假如執行緒被調換,自動地重新 | 啟動執行於一些隨後的内容仲裁點。參數可以是 j ” auto_push”,其調換出目前内容並且喚醒於當SRAM移轉 | |讀取暫存器資料已經自動地甴FBus界面被推進時,或者是 ! ί 一” start_receive”5其調換出目前内容並且喚醒於當對 ! |於此執行緒之接收FIFO中的新封包資料是可利用於處理 1 j時。 j 參數也可以是n ki 1 Γ,其防止目前内容或執行緒再次 I執行直到對於執行緒的適當重新啟動位元被設定於 丨 | CTX_ENABLES暫存器中,其調換出目前内容並且喚 !
1 I ί醒於當PC I單元送出DMA移轉已經完成的信號時。 ί
I I j 内容調換指令CTX_ARB可以具有以下選項記號j延遲 j ! 一週期,其具體指定在内容被調換之前$ —指合將被執行丨 丨於此參照之後.。
第33頁 571239 五、發明說明(30) 每一個微輕式 緒執行。對此的一 佈記憶體參照之後 待直到該夢照完成 行5此行為是關鍵 不同地說明,假如 引擎將要閒置於顯 此降低整體計算輪 隱藏記憶體潛伏時 獨立工作。兩種同 SRAM 或SDRAM 參照; 時間點。 一種機制是立 )。在立即同步中 該内容。當相對應 旦傳送信號$當内 内容將被調換回復 動之觀點,在發饰 直到參照完成 第二種機制是 )。在延遲同步中 執行一些其他獨立 進一步的工作被完 佈的參照完成可能
第34頁 引擎22a-22f支援四個内容的多賣 個原因是允許一執行緒於另一u也☆ 開始執行以及在作更多工作二—Ί ^ iF <丽必猜笙 。為了維持微程式引擎的右从 a、 〜欢能歸夢热 性的,因為記憶體潛伏眭問3 g β 』疋顯荖的 只有蕈一執行緒直形式被. 〜^ 、及之鼓5微超夫 著的週期數目而等待參照被年π…八 出量。多重執行緒執行允許;;= 間’藉由跨過幾個執行緒而完成有用 步機制被提供以致於允許執行緒發饰 以及接著當該參照完成時隨後地Χ同步 Ρ 同步(immediate Synchronization ’微程式引擎發佈參照並且立即調換出 ,照被完成時,内容將被傳送信號。、一 容調換事件發生以及是其轉折執行時, 周於執行。因此5從簟一内容的指令流 k體參照之後的微程式字組不被執行 ^遲同步(Delayed Synchronization ’微程式引擎發佈參照,以及接著繼續 於參照的有用工作。一些時間之後,在 成之前,同步執行緒的執行流動至被發 Μ成是必須的。在此時刻,内容調換指 571239 五、發明說明(31) 令被執行5其為一同+ 後當參照已經完成.二將調換出目前執行緒並且在稍 成而繼續執行目^勃二^㉟換回來5威者因為參照已經完 而實現延遲同步》 ^ 使用兩種不同發送彳s號的方案 假如記憶爆表p 3, !· 觸發執行緒的信?虎# f關連於一個移轉暫存蒸,來自被 被設定或清除瞎Γ舉=二於當相對應移轉暫存器有效位元 的-個SRAM讀取將;發送料進入移轉暫存器A 定時。假如記憶體參照广*對於A的有效位元被設 F IF0,代替移轉暫户哭妙1連於移轉FIF0或者接收 SDRAM控制器26a中Γ :二=後ί號被產生於當參照完成於 於微程式引蝥棑表哭ά ^内容只有一個信號狀態被保留 的信號存在’ “匕5此方案中只有-個未完成 •V Γ二:兩遐逋甩運异範例可以闬於設計微控制器微程 U:以ϊ整體微控制器計算輪出以及整體記憶體頻 乂 r二於早一執行緒執行潛伏時間的代價。當系統具 有夕個丨擎而且每—微程式引擎執行多個執行緒於 不相關的育枓封包之上,此範例將是有意義的。 1· 第一 <固乾例是微程式引擎執行潛伏時間應該被最佳化 於整體微控制II計算輸出以及整體記憶體頻寬的代價。此 fe例可以包括具有即時限制的執行緒的執行,亦即,即時 限制表示在—些特定時間内一些工作必須絕對地被完成。 此類限制要求罝〆執行绪執行的最佳化被給早超過其他諸 如記憶體頻寬或整體計算輪出的優先權。即時執行緒將應 571239 五、發明說明(32) ⑺此執订一锢執行緒的覃一斧 不被掌握,因A日挪s ^ π 丨政—式引ν。夕個執行緒將 行緒-多個執杆 & q l六速池執仃豈一即時執 ^ ^考的執仃將?且礙此能力。 兩種範例的編碼式可 體參照與内容切換。在即二:::,,、'員考地差異於發佈記憶 發佈許多記憶嶒炎职、.可狀况中,目標是盡可能快速地 憶體潛伏時間。.者;二取小化ί這些參照所帶來的記 將是完成微程士 :丨照已經盡可能地提早發佈,目標 相對應至及時“:二:f完風平行於參照的許多計算》 〜土丨匕的3丨异流程如下: 1發怖記憶體參照1 2 )發佈記憶體參照2 3 )發傕記憶體參照3 體參照1 '2與3的工作 6 =至圮憶體參照1的完成 照3的工取决於'己憶體參照1並且獨立於記憶體參 :)) =前:工作發佈任何新的記憶體參照 J = 了至圮憶體參照2的完成 參照2與3的工^决於圮恍體筝照1與2 I且獨立於記憶體 1 〇)根據先前的工作發你/壬打 m π s j 1<知筛任何新的記憶體參照 1)同步至圮憶體參照3的完成 丄2)完成取決於所有三個印悟 μ、, #丘二 旁一 u 3己f思體苓照完成的工作
第36頁 1〇彡裉祕先W的二作發镩任侍新的記憶體參照 571239 五、發明說明(33) 相對地,對於u與頻寬的最纟化^^ 法。借同對於徵程式引整钟曾輅十 * ' q的万 社外 击丄丨么窃、t人 '——,π , 1¾ 4正Μ記憶體頻寅的畢 杈少今望-=給予罝一執行緒執行潛伏時間。為* 了拷 到此:目標將是%距地隔開記憶體,、、、-: 二j的焱私a π拏。延將提俣對SRM與卯 憶體參照的一致流動以 ,一 w為知沁 & " 騎取大化1執行緒是可利用沾可 月b I而當另一執行緒被調換出 、 礙。 皮凋,吳出^ ^臧圯憶體潛伏時間的阻 記憶體縱列位娃類型: 用暫J:!第6圖L兩種存在的暫存器位址分隔是本地可使 <為,以及1被所有微程式引擎使罔的總 ”。-般用途暫存器(GPRs :::暫 (A儲存所與請存所),其位一宝 ^儲存所 地相互插A 1Α Λ钟六 …、、一接 子組為根據 所暫ϋίΓμ存所暫存器具有isb=〇,以及β儲存 _人而。1 母—儲存所有能力完成同時讀取盥 寫入兩不同字組於其儲存_部。 ^取與 :過儲存所A與B,暫存器組76b也被組織成為 :二四個窗口勝76b3,對於每一執行緒是相對地3 哭、、因此5執仃緒0將找尋其暫存器〇於77a之上(塹 )τ夯去^ 5執行緒1將找尋其暫存器0於77b之上(暫存器L 執行緒2將找尋其暫存器0於77c之上(暫存器64):一 定址1、將找尋其暫存器0於77d之上(暫存器96 )。相繫 i鱼ΐΐ支援以致於多锢執行緒可以使用完全相同控制儲 子,、位置但是存取暫存器的不同窗口以及完成不.同功能省 571239 I ------—- i五、發明說明(34) j只有使甩雙埠RAMS於微程式引擎22ί中,暫存器窗口定址 |與儲存所定址的使用提供必需的讀取頻寬。 j 這些開窗暫存器不必從内容開關至內容開關儲存資
|料,以致於内容調換縱列或堆疊的正常推進與推出被消 i除。此處的内容切換具有對於從一內容改變至另一内容的 | 〇週期耗兩時間。相對暫存器定垃劃分暫存器儲存所成為 |跨過一般用途暫存器的位址寬度的窗口。相對定址允許存 |取任何相關於窗口起始點的窗口。絕對定址也被支援於此 [架構中,其由藉由提供暫存器的精確位垃,任轲一者的絕 i對暫存器或許可以被任何執行緒所存取。 ! 取決於微程式字組的格式,一般用途暫存器78的定处 i可以發生於兩種模式。兩種模式是絕對輿相對。在絕對模 式中,暫存器位址的定址是被直接地具體指定於7位元來 源欄位中(a 6 - a 0或b 6 - b 0 ): | 7 ί 6 5 4 | 3 I ! 2 I i ; I 0 A GPR: a6 0 ah a4 [ a3 1 a2 ! al 」— aO a5=0 i β GPR: b6 i b5 b4 b3 b2 | bi b0l _ SRAM/ASB: a6 a5 a4 0 a3 a2 al aO a6=is as% a4=0 SDRAM: a6 a5 a4 0 a3 a2 aL aO a6=[> ab=Q, a4=i
1 暫存器位;a:被直接地具體指定於8位元目的欄位中 | (d7-d0 ): ί
第38頁 571239 I五、發明說明(35) 「丨7 1 6 | 5 4 3 | Ξ i m ! i i A GPR: ; ! d7 d6 d5 d4 d3 d2 di dO ! d7=0, d6=0 I 一 B GPR: d7 d6 d5 d4 d3 d2 di dO ! d7=0, d6=l i ^ S啤: ^ i d7 | d6 d5 d4 m d2 i di dO d7=i5 d6=0, d5=〇 麵:!d7 d6 d十4 d3 i i d2!d[ dO I dT=I5 d0=〇, d5=i j ! i ! | 假如<a6:a5> = l,1,<b6:b5> = l,1,<d7:d6> = l,1,接
著較低位元被詮釋為内容相關位址欄位(說明於下文中 )。當非相關A或B來源位址被具體指定於A,B的絕對欄位 中,只有SRAM/ASB與SDRAM位址空間的較低一半可以被定 I址。實際上;讀取絕對SRAM/SDRAM裝置具有有效位址空 |間;無論如何,因為此限制不應羯至目的攔位,寫入 SRAM/SDRAM依然使用完整位址空間。 在相對模式中5定址一個特定位址是在内容空間内韻 由5位元來源攔位(a4-aO與b4-bO)所定義的偏移量:
7 | 6 5 | 4 1 _1_ \ 3 2 1 ο Π j A GPR: a4 0 conte xt a3 a2 ai aO a4=0 B GPR: b4 1 conte At b3 b2 bi bO b4=0 SRAM/ASB: ab4 0 ab3 conte At b2 bl abO ab4=l, ab3=0 SDRAM: ab4 0 ab3 conte Kt b2 bi : abO ab4=l, ab3=i
第39頁 571239 五、發明說明(36) 或者如同甴6位元目的欄位中(d5-d0)所定義 \ ·? -- n D 5 4 3 2 上 〇 A GPR: I; d5 !__! d4 conte xt i d3 d2 ί l di I dO 1 ! d5=0, d4=0 |·Β 搬! d5 μ_J d4 conte xt ! ; 1 d3 ! d2 ! di ! dO i ! ! i d5=0, d4=0 j SRAM/ASB: ! ; 1 j d5 d4 | d3 i Ti^UiUo 1 ! ! d5=i, d4=0, d3=0 ' j SDRAM: d5 d4 d3 conte At I ; d2 dl dO d5=i„ d4=0j d3=l | ‘· 1 |哭 假如<d5:d4> = l5i,則目的位址不定述於一有效暫存 |〜 因此’沒有.目的運算元被寫西。 ! 以下暫存器是可以從微程式引擎與記憶體控制器而被 |全域地存取:
I 雜湊單元暫存器(hash unit registers) I 便條紙與共同暫存器(seratchpad and common Ϊ registers ) I 接收F IFO 與接收狀態F I FO ( re ce i ve F IFO and I receive status FIFO ) 傳輪FIFO (transmit FIFO) 傳輸控制FIFO (transmit control FIFO)
第40頁 571239 五、發明說明(37) — ----一^ 十、微往八^擎不是中斷驅動。每一微程弍流程執行直到 完f以及接著裉據由處理器!2由的其他裝置所傳送信號的 狀態5新流程被選擇。 ^ 參照第7圖5 SDRAM記憶體控制器26a包括記憶體參照 仔列9 0 ’其中記憶體參照要求從不同的微程式引擎· 22a:22 t到達。記憶體控制器26a包括仲裁器91,其選擇微 寿t ^二挲梦货要求的下一個至任何的功能單元。假如微輕 擎的一者正提供參照要求,參照要求將經過位址與命 令L歹W 〇、其後於記憶體控制器2 6 a之中。假如參照要求 具有被最佳化記憶體位元(〇ptimized mem bu ) „ 的=元。又疋,接踵而來的參照要求將被排序進入偶數儲存 或者奇數儲存所符列9 Qb。假如記憶體參照要求 +具有記憶H最佳化位元設定,預設麵是進人次序符列 :DRAM控制器26是在FBUS界面28、核心處理器20與 々士 _面^^之間被分享的資源。SDRAM控制器26也維持用以 ^ m修改—寫入極微運作的狀態機構。SDRAM控制器 26也元成對於來ISDRAM資料的要求的位元組校準。 次序符列9 0 c維持來自料4 3丨敬A , & 抵门/ 订木目破私式引擎的參照要求的次 序。佗同一糸列的奋數血俱勃& _姑彳I π 口 X & 、狄儲存所芩照,其被要求是信 力U .皮傳回$取決於斟於各叙 戽列的/p_ / 1於力數與偶數儲存所的記憶體參照 了歹4的元成c假奶微程式引警” 卉I杜六a b 7田批 八75筆22Γ將記憶體參照排序進入 可數儲存所與偶數儲存所夂 數儲;X~ Α 參及儲存所的一者,例如偶 放鍺存所被耗盡圮憶體參照於奇數 彳曰e f 被簦稱於最後的偶數參昭, =斤之刖,仁疋“號 …、體控制器26a將可理解地 571239 五、發明說明(38) 一 傳送§己憶體要求已經被完成的信號回到微程式引擎,"、 奇數儲存所參照還尚未被支#。此事件將導致連貫姓^ ^ 題。籍甴提锻次序佇列9 〇 c允許微程式引擎具有多俩=〜 體參照突出且只有其最後記憶體參照必須傳送完成的 而避免該狀況。 镜 SDRAM控制器26a也包括高度優先權仵列9〇d。在言 優先權佇列90d中,來自為成是引擎的一者之進來記=度 參照直接地進到高度優先權佇列以及被運曾於士意μ體 中的其他記憶體參照之較高優先權。所有:這 數儲存所佇列90a '奇數儲存所佇列9〇b、次序符列9〇 傳 高度優先權佇列90d,被實現於被本地切割成為四烟=輿 窗口的單一RAM結構,每一窗口具有其所擁有頭與尾於% 標。因為裝填與提出運算是只有單一輸入與單一輪出 們可以被放置進入相同RAM結構而增加rAM結構的^户’它 SDRAM控制器26a也包括核心匯流排界面邏輯,^ 匯流排92。ASB匯流排界面邏輯92接合核心處理器2〇"昼1 SDRAM控制器26a 4SB匯流排是包括32位元資料:徑^28 位元位址路徑的匯流排。經由MEM ASB資料裝置98,例如 緩衝器,資料被存取至與從記憶體。MEM ASB資料裝置98 是兩於寫入資料的佇列。假如有進入資料從核心處理器2 〇 經会AS3界:資料可以被健存進入mem ASB裝詈98以只 隨後仗Μ E M A S B裒置9 8經過S D R A Μ界面11 〇被移除至g d mi記 fe體1 6 a。雖然未被顯示$相同符列結構w以被提供用於 讀取。SDRAM控制器26a也包括從微程式引擎與pC I匯流排
第42頁 571239 五 '發明說明(39) 搬走資料的引擎97。 其他佇列包括PCI位址佇列94與維持一些要 :/寫入佇列96。記憶體要求經由多工器1〇6被送::賣 _副仲裁器91所控制,SD_你斗 1負測母一各列的充實與要求的狀態以及极據儲岑於; 先權服務控制暫存器丨00中的环超 < :、寒4 f子於優 權。 · 柱式化數值而決定優先 触办一旦對多Ϊ器106的控制選擇記憶體參照要求,記愔 -多要求被达至解碼器丨〇 8而被解碼以及位址被產生二 已解碼位谈被送至SDRAM界面n〇而於其中被分解成為㈣ ^位址選通而存取SDRAM Ua以及寫入或讀取資料通過資、 料線路16a的媒介送&資料至匯流排112。在一種履行 中5匯流排1 i 2是實際上兩個分開的匯流排而取代單一匯 流排。分開的匯流排將包括連接至分散微程式引擎 22a-22f的讀取匯流排以及連接至分散微程式引擎22a-22f 的寫入匯流排。 SDRAM控制器2 6a的特徵是當記憶體參照被儲存於佇列 90時,除了最佳化MEM位元可以被設定之外,有一個’’連鎖 位元(chaining bit ) ”。當連鎖位元設定時,允許對於 連續s己憶體参照的特別處理。如先前所提到’仲裁器1 2控 制哪一個微程弍引擎將被選擇而提供記憶體參照要求通過 命令匯流排至侍列90 (寞7圖、。德减位元的言明將控制 仲裁器而具有件裁器選擇先前要求該藤流排的功能單元5 因為連鎖位元的設定標示微程式引擎發佈連鎖要求。
第43頁 571239 五'發明貌明(40) j 當連鎖位元被設定日^ 5連績體參照將被接收於符| 列90中。那些連續參照將代表性地被儲存於次序佇列g〇c S 中5因為連續記憶體參照是來自單一執行緒的多個記憶體j 參照。為了提供同步,記憶體控制器2 6 a只有需要發送信 | 號於連鎖記憶體參照的最後部分被完成時。然而,在最佳j 化記憶體連鎖中(例如,當最佳化MEM位元與連鎖位元被 | 设定得)&記憶體參照可以進入不同儲存所以及可能地完丨 成於發佈完成信號的一個儲存所而在其他儲存所完全地被j 提出之前,因此破壞連貫性。因此5連鎖位元被控制器 11 〇使用而維持來自目前佇列的記憶體彖昭。 參照第7A圖,其顯示在SDRAM控制器26a中的仲裁政策 的λπι叙描述。传裁政策贊同連鎖微程式弓丨擎却情㉒來日夸。 程序11 5由對於連鎖微程式引擎記憶體參照要求的檢查 115a而開始。程序115停留於連鎖要求直到連鎖位元被清 除。程序依序檢查ASB匯流排要求115b、p 心、高度優先權…細d、相反儲二二' 次序符列要求im ’以及相同儲存所要求mg。連鎖要求 被服務完成,而服務1 1 iDb-l 1 5d被服務於循 。只有
當服務11 5a -11 5d被完全地托盡眭, 〜y Z -115g。當先前SDRAM記憶體要走且有處理服務1156 # 鎖微程式引擎記憶體參照要求::=位元設定日;是1 除。由於當ASB是在等待狀態時门/ 丁嚴歹V直到連鎖位-被清
Strong --核心,ASB是比PC/右贫H的f能損失加於 Λ有較同優先權。由於PCI的 571239 I五、發明說明(41) I潛伏時間需求3 pc I是比微程式引擎有較高優先權。然雨 I對於其他匯流件裁優先權可以是不同的。 \ 如第7 B圖申所顯示的是記憶體不具有有效的記憶體最 |佳化與具有有效的記憶體最佳化的典型時序。如所見,有 |效記憶體最佳化的使周最大化匯流排的使用以及因此隱藏 !固有潛伏時間於實際SDRAM裝置内部。在此例子中,非最 I佳化存取可以佔用14週期,然而最佳化存取可以估罔7週
I I | 么 I 參照第8圖5其顯示對於SRAM的記憶體控制器26b。記 憶體控制器26b包括位址與命令佇列1 20。當記憶體控制器 26a (第7圖)具有用於根據奇數與偶數儲存的記憶體最{ 化的仵列,記憶體控制器2 6 b根據記憶體的運算,例如讀 取,,入,而被最佳化。位豉與命令佇列! 2〇包括高度優 先權佇列120a,SRAM完成的佔優勢的記憶體參照功能之, 取佇列120b,以及通常將包括所有至從―的寫入與非最名 化的讀取之次序佇列120c。雖然未被顯示,位址與命令# 列1 2 0也可以包括寫入仔列。 SRAM控制為26b也包括核心匯流排界面邏輯,即asb g
匯流排界面邏m22接合核心處理器2〇至 SDMM控制器26b。ASB匯流排是包括32位元資斜致蔣與28 址路徑的匯流排。經由咖ASB資料裝置128,例女 緩衝1§,賢料被存取至斑從# 一 ^ 窃田私曾! 隐體。MEM ASB資料裝置12丨 以,進入資料從核心處理器2( \ r 經麵界面!22,資料可以被错存進入MEM ASB裝置].2“
第45頁 571239 五、發明說明(42)
5 = 裝置128經過SMM界面140被移除至SRAM 於二广iGD。雖然禾被顯示5相同佇列結構可以被提供羯 二^。SRni控制||26b也包括從微程式引擎與?^匯流誹 *疋貧料的引擎127。 記憶體要求經由多工器126被送至SRM!界面14〇。多工 i j RiM仲裁器i31所控制,SRAM仲裁器、131<貞測每一 蘄六!!充貝興要求的狀態以及根據儲存於優先權服務控制 二存态ί 30中的可程式化數值而決定優先權。一旦對多工 一 6的狂棄彳廷坪§己憶體荟照要求,記 昭 ,碼器被解碼以及位垃被產生。記 :體映射晶片外SRAM (Men〇ry Mapped — chip ) :、擴充ROM (Expansi〇n R0M) qSRAM 控制器26b 可以定 例如16百萬位元組3其中8百萬位元組映射於SRAM °以及8百禺位元保留為特殊功能,包括:經過快閃唯 ^賣記憶體16c的啟動空間;以及對*MAC裝置、i3b的控 制台埠存取與存取至相關(RM〇N )計數器。別^丨被使羯於 本地查詢表格與佇列管理功能。 SRAM控制器26b支援以下異動: 被程式引擎要求(經由非公開匯流排) 至/從SRAM …
核心處理器(經由ASB匯流排) 至/從SRAM SRAM控制蕤26b完成記憶體參照排序以最小化從SRM 界面1 40至§己憶體1 6b的管線中的延遲(泡沫)。控制 器2 6b根據讀取功能作記憶體參照排序。取決於所使用的
第46頁 571239 五、發明說明(43) 記憶體類型,泡沫可以是1或2個週期。 —SRAM控制器26b包括鎖住查詢裝置142,銷# $ ^ $ !42是雳於讀敢鎖住的查詢之8項目位垃內容 < 二一询衣置 體。每-位置包括由隨後讀敗鎖住要求所檢憶 元。位址舆合合伫列氺白妊綠而•及~的有效位 (bd I^kVa;; :取鋇住失敗侍列1 20d 用於保留因為鎖住存在於記憶體的部 彳丁列d〇d被使 吞己憶體爹照要求。亦即,微程式引整一人敗的續取 鐳拉要灰的々培妒,卡 t很々… 有發钸具有讀取 中。記憶體要求將運作於次序符列120。或者;;;= 以及將識別作為讀取鎖住要求。控制謂,取^^b ,置142而決定是否此記憶體位置已經被鎖:取:= 。己fe體位置e>㉟目任何先前讀取鎖 ,體鎖住要求將失敗以及將被儲存於讀取;;;敗: ,。假如,被解開或者假如142顯示沒有鎖住在該位址 成傳統SRAM位址讀w寫入^\^SR/M界面140所使用而完 與位址產生器138將也刪1f。会令控制器 的需求已經結走之J 憶體位置被鎖住。在所著 从 ^ ^ ^ 错由程式中的微程式控制指令的運 你S豆立置被解開。藉由清除在CAM中的有效位元5 古置被H。在解開之後5讀取鎖住失敗佇列120d變成最 =優先權佇列而給予所有排隊的未達到讀取鎖住有一個機 ΐ云發佈記憶體鎖住要束。
571239 五、發明說明(44) 參照第9 51、’其顯示在微輕式引擎22輿?·界面料 j 、FBI)之間的通訊。在網路應周中的FMS界面28可以士 | 成來自FMS 18的輸入封包的標頭處理。邝⑽界面所完2 j 的關鍵功能是封包標頭的選敗5以及在咖中的微裎式可j ^來源/ g—標/協定雜湊查詢。假如雜湊無法成功地解> j 》、,封包標頭被营升至核心處理器28用於更多複雜的處j j FBI 28包括傳迗FIFO 182 5接收FIFO 183,雜湊單元 丨^8以及FBI控制與狀態暫存器189。這四個單元經由時間 |二工存取至bRAM匯流排38而與微程式引擎22通訊,SRAM匯 =排38連接至與微程式引擎由的移轉暫存器冗'8〇。亦 | ^,至與從微程式引擎的所有通訊是經甴移轉暫存器78、 j &。F^US界面28包括推進狀態機構2〇◦,其在⑽鍾不使用 | AM貝枓匯流排(匯流排38的部份)的時間週期期間,推 | ^資料進入移轉暫存!|78、8〇,以及搬走狀態機構2〇2, j八用於從相對應微程式引擎中的移轉暫存器擷取資料。 I ^凑旦元包括一對FIFO 188a、188b :雜湊單元決定 | ^ 8接收FBI—hash要求。雜湊單元i88從呼叫的微程式 弓•華而擷取雜湊鍵。在鍵被擷取與雜湊之後,索引被發送 ^到呼叫的微程式引擎22。在單一fbi_hash要求之下,最 多二個雜凑被完成。匯流排34與38是各自單一方向: 丨 /‘LPush/piill—data 與 Sbus — push/pull—data。每一個 | $$些匯流排需要控制信號,控制信號將提供對於適當的 | 1散程式弓|擎22移轉暫存器之讀取/寫入控制。
第48頁 571239 五、發明說明(45) 一般而言,移轉暫存器需要保護控制它們的内文而保 證項取的正確。特別地5假如寫入移轉暫存器由thread」 所使周而提供資料至SDR AM 1 6a,thread—l必須不覆寫比 暫存為直到標示此暫存器已經被骨升以及可以被再使用的 信號從SDRAM控制器26a傳回。每一個寫入不需要從目的傳 回標示功能已經完成的信號,因為假如執行緒寫入至相同 命$符列於具有多個要求的該目的5完成的次序被保證於 該命令佇列中,因此只有最後的命令需要傳送信號回到執 也、、者。然而$假如執行緒使甩多個命令符列(次序與讀取 )’則這些命令要求必須被打破成為分開的内容工作,以 次序是經由内容調換而維持。標示於本段落開始的例 ;人況疋相關於運算的某分類5其使用未經 器來自FM用於_狀態資訊。為了保護位;^ 从、+二态之上的讀取/寫入決定論,當這些特殊FBi推進運 ^ ^ί恰’ FBi提供特殊PUSh —Pr〇tect:信號。使用未 技術的任何微程式引擎22必制試保護旗標於 ^ !面/對移轉暫存器取得一致意見的微程式引整 右Ξ如旗標未被聲稱,則移轉暫存器可以被微程式、 將要等待N週期。此外齡〜存取暫存為之則5内容 前端保護窗口;^定其Λ 移轉暫存器數目加上 旗標,然後在連續週期是微程式引擎必須測試此 存器而讀取的夸料至咖 速地移動想要從讀取移轉暫 擎的讀取3 >、枓至gpr,以致推進引擎不衝突微程式引 571239 I五、發明說明(46) i
I I
l 雖然太發明已以較佳實施例揭露如上,然其並非用以 I i限定本發明〃任何熟習此技藝者,在不脫離本發明之精神 丨 ί ' ΐΐ I和範圍内5當可作更動與潤飾,因此本發明之保護範圍當 | !視後附之甴請專利範圍所界定者為座。 丨 q V-;
第50頁

Claims (1)

  1. 571239 _案號 89117Q0?_料年7月4日Γ 修正本_ 六、申請專利範圍 1 · 一種多執行緒(m u 11 i t h r e a d )處理方法,包括: 令一處理器執行電腦指令,該電腦指令包括内容分支 指令,其根據目前一内容數字是否符合一指定内容數字而 導致一指令串分支至具有位於一指定標籤上的位址的另一 指令串。 2 ·如申請專利範圍第1項所述之多執行緒處理方法, 其中該内容分支指令具有以下格式 mm br=ctx[ctx, label#], 〇Pti〇na1_token it讀 泰營 br!=ctx[ctx, label#], 〇Ptional—token 。 II 3·如申請專利範圍第2項所述之多執行緒處理方法, I#中該label#是相對應指令位址的一符號標籤,ctx是該 1¾容數字。 f 1 4.如申請專利範圍第3項所述之多執行緒處理方法, g中該内容數字具有〇、1、2戒3的有效數值。 /' -¾ 5·如申請專利範圍第1項所述之多執行緒處理方法, #中該内容分支指令具有一選頊記號(〇Ptional-token )° 6 ·如申請專利範圍第5項所述之多執行緒處理方法, 其中該内容分支指令具有〜選頊記號’在完成該分支運算 之前,其延遲導致該處理器執行在該分支指令以後的指 令。 7 · —種運作處理器的方法,包括: 評估一執行中内容的一内溶:數字而決定該執行中内容 的該内容數字是否符合一指定内容數字;以及 根據評估該執行中内容的該内餐數字而分支至一指定指
    571239 案號 89117902 月 修正 六、申請專利範圍 〇 8. 如申請專利範圍第7項所述之方法,其中分支進一 步地包括: 分支,假如該執行中内容數字符合該指定内容數字。 9. 如申請專利範圍第7項所述之方法,其中該内容數 字具有0、1、2或3的有效數值。 1 0. —種可以執行多個執行緒的處理器,包括: 一暫存器堆疊; 一程式計數器,其用於每一個執行中的内容; 一算術運算單元,其連接至該暫存器堆疊;以及 一程式控制貯存,其儲存内容調換指令而導致該處理 器: 評估一執行中内容的一内容數字而決定該執行中内容 的該内容數字是否符合一指定内容數字;以及 根據評估該執行中内容的該内容數字而分支至一指定 指令。 11.如申請專利範圍第1 0項所述之處理器,其中分支 發生,假如該執行中内容數字符合該指定内容數字。 1 2.如申請專利範圍第1 0項所述之處理器,其中該内 容數字具有0、1、2或3的有效數值。 1 3. —種存在於電腦可讀儲存媒體上而用以導致一處 理器執行電腦指令的多執行緒處理方法,包括令該處理 器: 評估一執行中内容的一内容數字而決定該執行中内容 的該内容數字是否符合一指定内容數字;以及
    1057-3413-pf3.ptc 第52頁 2003.09.25.053 571239 _案號89117902_年月日__ 六、申請專利範圍 根據評估該執行中内容的該内容數字而分支至一指定 指令。 1 4.如申請專利範圍第1 3項所述之多執行緒處理方 法,其中分支發生,假如該執行中内容數字符合該指定内 容數字。 1 5.如申請專利範圍第1 3項所述之多執行緒處理方 法,其中該内容數字具有0、1、2或3的有效數值。
    1057-3413-pf3.ptc 第53頁 2003. 09. 25. 054
TW089117902A 1999-09-01 2000-10-18 Branch instruction for multithreaded processor TW571239B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15196199P 1999-09-01 1999-09-01

Publications (1)

Publication Number Publication Date
TW571239B true TW571239B (en) 2004-01-11

Family

ID=22540994

Family Applications (11)

Application Number Title Priority Date Filing Date
TW089117903A TW559729B (en) 1999-09-01 2000-09-01 Instruction for multithreaded parallel processor
TW089117904A TW475148B (en) 1999-09-01 2000-10-18 Branch instruction for processor architecture
TW089117900A TW486666B (en) 1999-09-01 2000-10-18 Register set used in multithreaded parallel processor architecture
TW089117902A TW571239B (en) 1999-09-01 2000-10-18 Branch instruction for multithreaded processor
TW089117911A TW548584B (en) 1999-09-01 2000-10-18 Fast write instruction for micro engine used in multithreaded parallel processor architecture
TW089117906A TWI221251B (en) 1999-09-01 2000-10-18 Branch instruction for processor
TW089117905A TW569133B (en) 1999-09-01 2000-10-18 Branch instruction for processor
TW089117910A TW486667B (en) 1999-09-01 2000-10-18 Memory reference instructions for micro engine used in multithreaded parallel processor architecture
TW089117901A TWI220732B (en) 1999-09-01 2000-10-18 Local register instruction for micro engine used in multithreaded parallel processor architecture
TW089117912A TW546585B (en) 1999-09-01 2000-10-18 Method of operating a processor and computer program product
TW089117907A TW594562B (en) 1999-09-01 2000-10-18 Branch instruction for processor

Family Applications Before (3)

Application Number Title Priority Date Filing Date
TW089117903A TW559729B (en) 1999-09-01 2000-09-01 Instruction for multithreaded parallel processor
TW089117904A TW475148B (en) 1999-09-01 2000-10-18 Branch instruction for processor architecture
TW089117900A TW486666B (en) 1999-09-01 2000-10-18 Register set used in multithreaded parallel processor architecture

Family Applications After (7)

Application Number Title Priority Date Filing Date
TW089117911A TW548584B (en) 1999-09-01 2000-10-18 Fast write instruction for micro engine used in multithreaded parallel processor architecture
TW089117906A TWI221251B (en) 1999-09-01 2000-10-18 Branch instruction for processor
TW089117905A TW569133B (en) 1999-09-01 2000-10-18 Branch instruction for processor
TW089117910A TW486667B (en) 1999-09-01 2000-10-18 Memory reference instructions for micro engine used in multithreaded parallel processor architecture
TW089117901A TWI220732B (en) 1999-09-01 2000-10-18 Local register instruction for micro engine used in multithreaded parallel processor architecture
TW089117912A TW546585B (en) 1999-09-01 2000-10-18 Method of operating a processor and computer program product
TW089117907A TW594562B (en) 1999-09-01 2000-10-18 Branch instruction for processor

Country Status (10)

Country Link
US (1) US7421572B1 (zh)
EP (7) EP1236092A4 (zh)
CN (7) CN1184562C (zh)
AT (2) ATE475930T1 (zh)
AU (11) AU7340700A (zh)
CA (7) CA2386562A1 (zh)
DE (2) DE60044752D1 (zh)
HK (8) HK1046049A1 (zh)
TW (11) TW559729B (zh)
WO (8) WO2001016713A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI769080B (zh) * 2021-09-17 2022-06-21 瑞昱半導體股份有限公司 用於同步動態隨機存取記憶體之控制模組及其控制方法

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7292586B2 (en) 2001-03-30 2007-11-06 Nokia Inc. Micro-programmable protocol packet parser and encapsulator
US6785793B2 (en) 2001-09-27 2004-08-31 Intel Corporation Method and apparatus for memory access scheduling to reduce memory access latency
US7360217B2 (en) * 2001-09-28 2008-04-15 Consentry Networks, Inc. Multi-threaded packet processing engine for stateful packet processing
US7069442B2 (en) * 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
GB2409062C (en) 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
US7027062B2 (en) * 2004-02-27 2006-04-11 Nvidia Corporation Register based queuing for texture requests
US9038070B2 (en) 2004-09-14 2015-05-19 Synopsys, Inc. Debug in a multicore architecture
GB0420442D0 (en) * 2004-09-14 2004-10-20 Ignios Ltd Debug in a multicore architecture
SE0403128D0 (sv) * 2004-12-22 2004-12-22 Xelerated Ab A method for a processor, and a processor
US8028295B2 (en) 2005-09-30 2011-09-27 Intel Corporation Apparatus, system, and method for persistent user-level thread
US7882284B2 (en) * 2007-03-26 2011-02-01 Analog Devices, Inc. Compute unit with an internal bit FIFO circuit
US7991967B2 (en) * 2007-06-29 2011-08-02 Microsoft Corporation Using type stability to facilitate contention management
US9384003B2 (en) * 2007-10-23 2016-07-05 Texas Instruments Incorporated Determining whether a branch instruction is predicted based on a capture range of a second instruction
US9207968B2 (en) * 2009-11-03 2015-12-08 Mediatek Inc. Computing system using single operating system to provide normal security services and high security services, and methods thereof
CN101950277B (zh) * 2010-09-13 2012-04-25 青岛海信信芯科技有限公司 用于微控制单元的数据传输方法与装置以及数据传输系统
GB2486737B (en) * 2010-12-24 2018-09-19 Qualcomm Technologies Int Ltd Instruction execution
US8880851B2 (en) * 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US8645618B2 (en) * 2011-07-14 2014-02-04 Lsi Corporation Flexible flash commands
EP2798464B8 (en) 2011-12-30 2019-12-11 Intel Corporation Packed rotate processors, methods, systems, and instructions
CN102833336A (zh) * 2012-08-31 2012-12-19 河海大学 分散分布式信息采集与并发处理系统中数据分包处理方法
US10140129B2 (en) * 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
CN103186438A (zh) * 2013-04-02 2013-07-03 浪潮电子信息产业股份有限公司 一种提高磁盘阵列数据重构效率的方法
CN103226328B (zh) * 2013-04-21 2015-06-24 中国矿业大学(北京) 采集次数控制模式下的多线程数据采集系统同步控制方法
US20150127927A1 (en) * 2013-11-01 2015-05-07 Qualcomm Incorporated Efficient hardware dispatching of concurrent functions in multicore processors, and related processor systems, methods, and computer-readable media
KR102254099B1 (ko) 2014-05-19 2021-05-20 삼성전자주식회사 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템
CN103984235B (zh) * 2014-05-27 2016-05-11 湖南大学 基于c/s结构的空间机械臂控制系统软件架构及构建方法
US20160381050A1 (en) 2015-06-26 2016-12-29 Intel Corporation Processors, methods, systems, and instructions to protect shadow stacks
US10394556B2 (en) 2015-12-20 2019-08-27 Intel Corporation Hardware apparatuses and methods to switch shadow stack pointers
US10430580B2 (en) 2016-02-04 2019-10-01 Intel Corporation Processor extensions to protect stacks during ring transitions
US10838656B2 (en) 2016-12-20 2020-11-17 Mediatek Inc. Parallel memory access to on-chip memory containing regions of different addressing schemes by threads executed on parallel processing units
US10387037B2 (en) * 2016-12-31 2019-08-20 Intel Corporation Microarchitecture enabling enhanced parallelism for sparse linear algebra operations having write-to-read dependencies
PL3812900T3 (pl) 2016-12-31 2024-04-08 Intel Corporation Systemy, sposoby i aparaty do obliczania heterogenicznego
CN107329812B (zh) * 2017-06-09 2018-07-06 腾讯科技(深圳)有限公司 一种运行协程的方法和装置
CN112463327B (zh) * 2020-11-25 2023-01-31 海光信息技术股份有限公司 逻辑线程快速切换的方法、装置、cpu芯片及服务器
US20230205869A1 (en) * 2021-12-23 2023-06-29 Intel Corporation Efficient exception handling in trusted execution environments

Family Cites Families (140)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3373408A (en) 1965-04-16 1968-03-12 Rca Corp Computer capable of switching between programs without storage and retrieval of the contents of operation registers
US3478322A (en) 1967-05-23 1969-11-11 Ibm Data processor employing electronically changeable control storage
US3577189A (en) * 1969-01-15 1971-05-04 Ibm Apparatus and method in a digital computer for allowing improved program branching with branch anticipation reduction of the number of branches, and reduction of branch delays
BE795789A (fr) 1972-03-08 1973-06-18 Burroughs Corp Microprogramme comportant une micro-instruction de recouvrement
US3881173A (en) 1973-05-14 1975-04-29 Amdahl Corp Condition code determination and data processing
IT986411B (it) 1973-06-05 1975-01-30 Olivetti E C Spa Sistema per trasferire il control lo delle elaborazioni da un primo livello prioritario ad un secondo livello prioritario
FR2253415A5 (zh) * 1973-12-04 1975-06-27 Cii
US3913074A (en) 1973-12-18 1975-10-14 Honeywell Inf Systems Search processing apparatus
US4130890A (en) 1977-06-08 1978-12-19 Itt Industries, Inc. Integrated DDC memory with bitwise erase
US4392758A (en) 1978-05-22 1983-07-12 International Business Machines Corporation Underscore erase
JPS56164464A (en) 1980-05-21 1981-12-17 Tatsuo Nogi Parallel processing computer
US4400770A (en) 1980-11-10 1983-08-23 International Business Machines Corporation Cache synonym detection and handling means
CA1179069A (en) 1981-04-10 1984-12-04 Yasushi Fukunaga Data transmission apparatus for a multiprocessor system
US4471426A (en) * 1981-07-02 1984-09-11 Texas Instruments Incorporated Microcomputer which fetches two sets of microcode bits at one time
US4454595A (en) 1981-12-23 1984-06-12 Pitney Bowes Inc. Buffer for use with a fixed disk controller
US4477872A (en) 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
US4569016A (en) 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
JPS6014338A (ja) * 1983-06-30 1985-01-24 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 計算機システムにおける分岐機構
US4606025A (en) 1983-09-28 1986-08-12 International Business Machines Corp. Automatically testing a plurality of memory arrays on selected memory array testers
US4808988A (en) 1984-04-13 1989-02-28 Megatek Corporation Digital vector generator for a graphic display system
US4868735A (en) 1984-05-08 1989-09-19 Advanced Micro Devices, Inc. Interruptible structured microprogrammed sixteen-bit address sequence controller
US4742451A (en) 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
US5187800A (en) 1985-01-04 1993-02-16 Sun Microsystems, Inc. Asynchronous pipelined data processing system
US5045995A (en) 1985-06-24 1991-09-03 Vicom Systems, Inc. Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system
US4754398A (en) * 1985-06-28 1988-06-28 Cray Research, Inc. System for multiprocessor communication using local and common semaphore and information registers
US4755966A (en) 1985-06-28 1988-07-05 Hewlett-Packard Company Bidirectional branch prediction and optimization
US4777587A (en) 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
US4847755A (en) 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US4745544A (en) 1985-12-12 1988-05-17 Texas Instruments Incorporated Master/slave sequencing processor with forced I/O
US4724521A (en) 1986-01-14 1988-02-09 Veri-Fone, Inc. Method for operating a local terminal to execute a downloaded application program
US5297260A (en) 1986-03-12 1994-03-22 Hitachi, Ltd. Processor having a plurality of CPUS with one CPU being normally connected to common bus
US5170484A (en) 1986-09-18 1992-12-08 Digital Equipment Corporation Massively parallel array processing system
US4992934A (en) 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
US5073864A (en) 1987-02-10 1991-12-17 Davin Computer Corporation Parallel string processor and method for a minicomputer
US5142683A (en) 1987-03-09 1992-08-25 Unisys Corporation Intercomputer communication control apparatus and method
US4866664A (en) 1987-03-09 1989-09-12 Unisys Corporation Intercomputer communication control apparatus & method
US5189636A (en) 1987-11-16 1993-02-23 Intel Corporation Dual mode combining circuitry
US4816913A (en) 1987-11-16 1989-03-28 Technology, Inc., 64 Pixel interpolation circuitry as for a video signal processor
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
US5220669A (en) 1988-02-10 1993-06-15 International Business Machines Corporation Linkage mechanism for program isolation
DE68913629T2 (de) 1988-03-14 1994-06-16 Unisys Corp Satzverriegelungsprozessor für vielfachverarbeitungsdatensystem.
US5056015A (en) 1988-03-23 1991-10-08 Du Pont Pixel Systems Limited Architectures for serial or parallel loading of writable control store
US5165025A (en) 1988-10-06 1992-11-17 Lass Stanley E Interlacing the paths after a conditional branch like instruction
US5202972A (en) 1988-12-29 1993-04-13 International Business Machines Corporation Store buffer apparatus in a multiprocessor system
US5155854A (en) 1989-02-03 1992-10-13 Digital Equipment Corporation System for arbitrating communication requests using multi-pass control unit based on availability of system resources
US5155831A (en) 1989-04-24 1992-10-13 International Business Machines Corporation Data processing system with fast queue store interposed between store-through caches and a main memory
US5113516A (en) 1989-07-31 1992-05-12 North American Philips Corporation Data repacker having controlled feedback shifters and registers for changing data format
US5168555A (en) 1989-09-06 1992-12-01 Unisys Corporation Initial program load control
US5263169A (en) 1989-11-03 1993-11-16 Zoran Corporation Bus arbitration and resource management for concurrent vector signal processor architecture
DE3942977A1 (de) 1989-12-23 1991-06-27 Standard Elektrik Lorenz Ag Verfahren zum wiederherstellen der richtigen zellfolge, insbesondere in einer atm-vermittlungsstelle, sowie ausgangseinheit hierfuer
US5544337A (en) 1989-12-29 1996-08-06 Cray Research, Inc. Vector processor having registers for control by vector resisters
US5247671A (en) 1990-02-14 1993-09-21 International Business Machines Corporation Scalable schedules for serial communications controller in data processing systems
JPH0799812B2 (ja) 1990-03-26 1995-10-25 株式会社グラフイックス・コミュニケーション・テクノロジーズ 信号符号化装置および信号復号化装置、並びに信号符号化復号化装置
US5390329A (en) 1990-06-11 1995-02-14 Cray Research, Inc. Responding to service requests using minimal system-side context in a multiprocessor environment
JPH0454652A (ja) * 1990-06-25 1992-02-21 Nec Corp マイクロコンピュータ
US5432918A (en) 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
EP0463973A3 (en) * 1990-06-29 1993-12-01 Digital Equipment Corp Branch prediction in high performance processor
US5404482A (en) 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills
US5347648A (en) 1990-06-29 1994-09-13 Digital Equipment Corporation Ensuring write ordering under writeback cache error conditions
DE4129614C2 (de) * 1990-09-07 2002-03-21 Hitachi Ltd System und Verfahren zur Datenverarbeitung
JP2508907B2 (ja) * 1990-09-18 1996-06-19 日本電気株式会社 遅延分岐命令の制御方式
DE69106384T2 (de) 1990-10-19 1995-08-10 Cray Research Inc Skalierbares parallel-vektorrechnersystem.
US5367678A (en) 1990-12-06 1994-11-22 The Regents Of The University Of California Multiprocessor system having statically determining resource allocation schedule at compile time and the using of static schedule with processor signals to control the execution time dynamically
US5394530A (en) 1991-03-15 1995-02-28 Nec Corporation Arrangement for predicting a branch target address in the second iteration of a short loop
EP0522513A2 (en) 1991-07-09 1993-01-13 Hughes Aircraft Company High speed parallel microcode program controller
US5247675A (en) * 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
US5255239A (en) 1991-08-13 1993-10-19 Cypress Semiconductor Corporation Bidirectional first-in-first-out memory device with transparent and user-testable capabilities
US5623489A (en) 1991-09-26 1997-04-22 Ipc Information Systems, Inc. Channel allocation system for distributed digital switching network
US5392412A (en) 1991-10-03 1995-02-21 Standard Microsystems Corporation Data communication controller for use with a single-port data packet buffer
US5392391A (en) 1991-10-18 1995-02-21 Lsi Logic Corporation High performance graphics applications controller
US5557766A (en) 1991-10-21 1996-09-17 Kabushiki Kaisha Toshiba High-speed processor for handling multiple interrupts utilizing an exclusive-use bus and current and previous bank pointers to specify a return bank
US5452437A (en) 1991-11-18 1995-09-19 Motorola, Inc. Methods of debugging multiprocessor system
US5357617A (en) 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
US5442797A (en) 1991-12-04 1995-08-15 Casavant; Thomas L. Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging
JP2823767B2 (ja) 1992-02-03 1998-11-11 松下電器産業株式会社 レジスタファイル
KR100309566B1 (ko) 1992-04-29 2001-12-15 리패치 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치
US5459842A (en) 1992-06-26 1995-10-17 International Business Machines Corporation System for combining data from multiple CPU write requests via buffers and using read-modify-write operation to write the combined data to the memory
DE4223600C2 (de) 1992-07-17 1994-10-13 Ibm Mehrprozessor-Computersystem und Verfahren zum Übertragen von Steuerinformationen und Dateninformation zwischen wenigstens zwei Prozessoreinheiten eines Computersystems
US5274770A (en) 1992-07-29 1993-12-28 Tritech Microelectronics International Pte Ltd. Flexible register-based I/O microcontroller with single cycle instruction execution
US5442756A (en) 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5692167A (en) * 1992-07-31 1997-11-25 Intel Corporation Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US5481683A (en) * 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
US5463746A (en) 1992-10-30 1995-10-31 International Business Machines Corp. Data processing system having prediction by using an embedded guess bit of remapped and compressed opcodes
US5428779A (en) 1992-11-09 1995-06-27 Seiko Epson Corporation System and method for supporting context switching within a multiprocessor system having functional blocks that generate state programs with coded register load instructions
US5450603A (en) 1992-12-18 1995-09-12 Xerox Corporation SIMD architecture with transfer register or value source circuitry connected to bus
ATE188559T1 (de) 1992-12-23 2000-01-15 Centre Electron Horloger Multi-tasking-steuerungsgerät mit geringem energieverbrauch
US5404464A (en) 1993-02-11 1995-04-04 Ast Research, Inc. Bus control system and method that selectively generate an early address strobe
US5448702A (en) 1993-03-02 1995-09-05 International Business Machines Corporation Adapters with descriptor queue management capability
US6311286B1 (en) 1993-04-30 2001-10-30 Nec Corporation Symmetric multiprocessing system with unified environment and distributed system functions
WO1994027216A1 (en) 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
CA2122182A1 (en) 1993-05-20 1994-11-21 Rene Leblanc Method for rapid prototyping of programming problems
US5363448A (en) * 1993-06-30 1994-11-08 United Technologies Automotive, Inc. Pseudorandom number generation and cryptographic authentication
CA2107299C (en) 1993-09-29 1997-02-25 Mehrad Yasrebi High performance machine for switched communications in a heterogenous data processing network gateway
US5446736A (en) 1993-10-07 1995-08-29 Ast Research, Inc. Method and apparatus for connecting a node to a wireless network using a standard protocol
DE69415126T2 (de) 1993-10-21 1999-07-08 Sun Microsystems Inc., Mountain View, Calif. Gegenflusspipelineprozessor
DE69430352T2 (de) 1993-10-21 2003-01-30 Sun Microsystems Inc., Mountain View Gegenflusspipeline
TW261676B (zh) * 1993-11-02 1995-11-01 Motorola Inc
US5450351A (en) 1993-11-19 1995-09-12 International Business Machines Corporation Content addressable memory implementation with random access memory
US6079014A (en) * 1993-12-02 2000-06-20 Intel Corporation Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state
US5487159A (en) 1993-12-23 1996-01-23 Unisys Corporation System for processing shift, mask, and merge operations in one instruction
DE69420540T2 (de) * 1994-01-03 2000-02-10 Intel Corp., Santa Clara Verfahren und Vorrichtung zum Implementieren eines vierstufigen Verzweigungsauflosungssystem in einem Rechnerprozessor
US5490204A (en) 1994-03-01 1996-02-06 Safco Corporation Automated quality assessment system for cellular networks
US5659722A (en) * 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
US5542088A (en) 1994-04-29 1996-07-30 Intergraph Corporation Method and apparatus for enabling control of task execution
US5544236A (en) 1994-06-10 1996-08-06 At&T Corp. Access to unsubscribed features
US5574922A (en) 1994-06-17 1996-11-12 Apple Computer, Inc. Processor with sequences of processor instructions for locked memory updates
FR2722041B1 (fr) 1994-06-30 1998-01-02 Samsung Electronics Co Ltd Decodeur de huffman
US5655132A (en) * 1994-08-08 1997-08-05 Rockwell International Corporation Register file with multi-tasking support
US5640538A (en) 1994-08-22 1997-06-17 Adaptec, Inc. Programmable timing mark sequencer for a disk drive
US5717760A (en) * 1994-11-09 1998-02-10 Channel One Communications, Inc. Message protection system and method
CN1306394C (zh) * 1994-12-02 2007-03-21 现代电子美国公司 有限游程转移预测的方法
US5610864A (en) 1994-12-23 1997-03-11 Micron Technology, Inc. Burst EDO memory device with maximized write cycle timing
US5550816A (en) 1994-12-29 1996-08-27 Storage Technology Corporation Method and apparatus for virtual switching
US5649157A (en) 1995-03-30 1997-07-15 Hewlett-Packard Co. Memory controller with priority queues
JP3130446B2 (ja) * 1995-05-10 2001-01-31 松下電器産業株式会社 プログラム変換装置及びプロセッサ
US5592622A (en) 1995-05-10 1997-01-07 3Com Corporation Network intermediate system with message passing architecture
US5541920A (en) 1995-06-15 1996-07-30 Bay Networks, Inc. Method and apparatus for a delayed replace mechanism for a streaming packet modification engine
KR0180169B1 (ko) * 1995-06-30 1999-05-01 배순훈 가변길이 부호기
US5613071A (en) 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US6061711A (en) * 1996-08-19 2000-05-09 Samsung Electronics, Inc. Efficient context saving and restoring in a multi-tasking computing system environment
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
DE69717369T2 (de) * 1996-08-27 2003-09-11 Matsushita Electric Ind Co Ltd Vielfadenprozessor zur Verarbeitung von mehreren Befehlsströmen unabhängig von einander durch eine flexible Durchsatzsteuerung in jedem Befehlsstrom
JPH10177482A (ja) * 1996-10-31 1998-06-30 Texas Instr Inc <Ti> マイクロプロセッサおよび動作方法
US5857104A (en) 1996-11-26 1999-01-05 Hewlett-Packard Company Synthetic dynamic branch prediction
US6088788A (en) * 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
US6029228A (en) * 1996-12-31 2000-02-22 Texas Instruments Incorporated Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions
US6470376B1 (en) * 1997-03-04 2002-10-22 Matsushita Electric Industrial Co., Ltd Processor capable of efficiently executing many asynchronous event tasks
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US5996068A (en) * 1997-03-26 1999-11-30 Lucent Technologies Inc. Method and apparatus for renaming registers corresponding to multiple thread identifications
US5907702A (en) * 1997-03-28 1999-05-25 International Business Machines Corporation Method and apparatus for decreasing thread switch latency in a multithread processor
US6009515A (en) * 1997-05-30 1999-12-28 Sun Microsystems, Inc. Digital data processing system including efficient arrangement to support branching within trap shadows
GB2326253A (en) * 1997-06-10 1998-12-16 Advanced Risc Mach Ltd Coprocessor data access control
US6385720B1 (en) * 1997-07-14 2002-05-07 Matsushita Electric Industrial Co., Ltd. Branch prediction method and processor using origin information, relative position information and history information
US6243735B1 (en) * 1997-09-01 2001-06-05 Matsushita Electric Industrial Co., Ltd. Microcontroller, data processing system and task switching control method
US5926646A (en) * 1997-09-11 1999-07-20 Advanced Micro Devices, Inc. Context-dependent memory-mapped registers for transparent expansion of a register file
UA55489C2 (uk) * 1997-10-07 2003-04-15 Каналь+ Сосьєте Анонім Пристрій для багатопотокової обробки даних (варіанти)
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6560629B1 (en) * 1998-10-30 2003-05-06 Sun Microsystems, Inc. Multi-thread processing

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI769080B (zh) * 2021-09-17 2022-06-21 瑞昱半導體股份有限公司 用於同步動態隨機存取記憶體之控制模組及其控制方法

Also Published As

Publication number Publication date
EP1236097A4 (en) 2006-08-02
HK1051730A1 (en) 2003-08-15
HK1051728A1 (en) 2003-08-15
EP1236088A4 (en) 2006-04-19
EP1236097A1 (en) 2002-09-04
CN1296818C (zh) 2007-01-24
WO2001016714A1 (en) 2001-03-08
CN1402846A (zh) 2003-03-12
EP1242867A4 (en) 2008-07-30
WO2001018646A1 (en) 2001-03-15
TW486666B (en) 2002-05-11
EP1236094A4 (en) 2006-04-19
TW559729B (en) 2003-11-01
CN1271513C (zh) 2006-08-23
AU7098700A (en) 2001-03-26
CN1390323A (zh) 2003-01-08
DE60038976D1 (de) 2008-07-03
CN100351781C (zh) 2007-11-28
HK1046565A1 (zh) 2003-01-17
WO2001016758A2 (en) 2001-03-08
EP1236094B1 (en) 2010-07-28
WO2001016758A9 (en) 2002-09-12
HK1046049A1 (zh) 2002-12-20
HK1049902B (zh) 2005-08-26
CA2383540A1 (en) 2001-03-08
CN1399736A (zh) 2003-02-26
CN1184562C (zh) 2005-01-12
CN1254739C (zh) 2006-05-03
EP1236094A1 (en) 2002-09-04
CN1387640A (zh) 2002-12-25
CA2383528C (en) 2008-06-17
CA2386558A1 (en) 2001-03-08
AU7099000A (en) 2001-03-26
AU7340400A (en) 2001-03-26
WO2001016714A9 (en) 2002-09-12
ATE475930T1 (de) 2010-08-15
EP1236088B9 (en) 2008-10-08
AU7342900A (en) 2001-03-26
TWI221251B (en) 2004-09-21
WO2001016722A1 (en) 2001-03-08
HK1051247A1 (en) 2003-07-25
EP1236093A1 (en) 2002-09-04
CA2383532A1 (en) 2001-03-08
AU7101200A (en) 2001-03-26
WO2001016715A1 (en) 2001-03-08
CA2383528A1 (en) 2001-03-08
AU7098400A (en) 2001-03-26
TW569133B (en) 2004-01-01
CN1402844A (zh) 2003-03-12
WO2001016715A9 (en) 2002-09-12
HK1046566A1 (zh) 2003-01-17
HK1051729A1 (en) 2003-08-15
WO2001018646A9 (en) 2002-09-12
DE60044752D1 (de) 2010-09-09
CN1402845A (zh) 2003-03-12
EP1242869A1 (en) 2002-09-25
WO2001016698A3 (en) 2002-01-17
TWI220732B (en) 2004-09-01
WO2001016698A2 (en) 2001-03-08
WO2001016716A1 (en) 2001-03-08
EP1236092A1 (en) 2002-09-04
EP1236088A1 (en) 2002-09-04
HK1049902A1 (en) 2003-05-30
TW475148B (en) 2002-02-01
AU7098500A (en) 2001-03-26
AU7340600A (en) 2001-04-10
AU7097900A (en) 2001-03-26
EP1242869B1 (en) 2011-11-16
CA2386558C (en) 2010-03-09
WO2001016713A1 (en) 2001-03-08
TW594562B (en) 2004-06-21
EP1242869A4 (en) 2006-10-25
EP1236093A4 (en) 2006-07-26
TW486667B (en) 2002-05-11
US7421572B1 (en) 2008-09-02
EP1236092A4 (en) 2006-07-26
CA2383531A1 (en) 2001-03-08
AU7098600A (en) 2001-03-26
CN1387642A (zh) 2002-12-25
EP1236088B1 (en) 2008-05-21
TW548584B (en) 2003-08-21
CN100342326C (zh) 2007-10-10
CN100474236C (zh) 2009-04-01
TW546585B (en) 2003-08-11
CA2383526A1 (en) 2001-03-15
EP1242867A2 (en) 2002-09-25
AU7340700A (en) 2001-03-26
CA2386562A1 (en) 2001-03-08
ATE396449T1 (de) 2008-06-15
WO2001016758A3 (en) 2001-10-25

Similar Documents

Publication Publication Date Title
TW571239B (en) Branch instruction for multithreaded processor
US6427196B1 (en) SRAM controller for parallel processor architecture including address and command queue and arbiter
US6668317B1 (en) Microengine for parallel processor architecture
CA2388740C (en) Sdram controller for parallel processor architecture
EP1221105B1 (en) Parallel processor architecture
US7743235B2 (en) Processor having a dedicated hash unit integrated within
WO2001016703A1 (en) Instruction for multithreaded parallel processor

Legal Events

Date Code Title Description
GD4A Issue of patent certificate for granted invention patent
MM4A Annulment or lapse of patent due to non-payment of fees