專利名稱:并行處理器體系結構的sdram控制器的制作方法
背景技術:
本發(fā)明涉及一種存儲器的控制器,尤其是并行處理器用這種控制器。
并行處理是計算處理中并發(fā)事件信息處理的有效形式。與串行處理相反,并行處理要求計算機中同時執(zhí)行許多程序。在并行處理的情況下,并行操作涉及同時做一件以上的事情。與在某一站串行執(zhí)行全部任務的串行范例或在專門站執(zhí)行任務的流水式機器有所不同,并行處理配備多個站,每個站能執(zhí)行全部任務。也就是說,通常全部站或多個站對問題的相同或共同要素進行同時且獨立的工作。有些問題適合采用并行處理解決。
并行處理任務中所用的存儲系統(tǒng)可能是無效率的。
發(fā)明概述根據本發(fā)明的一個方面,一種隨機存取存儲器的存儲控制器包含保持來自多個微控制單元的存儲器指針的地址和命令隊列。存儲控制器還包含保持來自計算機總線的存儲器指針的第1讀/寫隊列和保持來自核心處理器的存儲器指針的第2讀/寫隊列。該存儲控制器還包含具有仲裁器的控制邏輯,該仲裁器檢測每一隊列的滿員程度和待處理存儲器指針的狀態(tài),以便從其中一個隊列選擇一存儲器指針。
根據本發(fā)明的又一方面,該控制器具有對鏈接位作出響應的控制邏輯,該鏈接位在設定時允許對鄰接存儲器指針專門處理。該鏈接位還控制仲裁器,使仲裁器選擇先前請求總線的功能單元。鏈接位的肯定將會控制仲裁器,使其當經過優(yōu)化的存儲位也設定時保持來自當前隊列的存儲器指針。
本發(fā)明的一個或多個方面可提供以下一個或多個優(yōu)點。
控制器當經優(yōu)化存儲位設定時使用存儲器指針分類。存儲器指針分類基于可使某一存儲組對另一存儲組隱藏預充電的存儲組指針。具體來說,若存儲器系統(tǒng)組織成奇數存儲組和偶數存儲組,而存儲控制器工作于奇數存儲組,存儲控制器便可啟動對偶數存儲組的預充電。若存儲器指針在奇數和偶數存儲組間交替,就能預充電。
此外,還可用其他優(yōu)化。舉例來說,可采用歸并優(yōu)化、開放頁面優(yōu)化、鏈接以及刷新機制,在歸并優(yōu)化場合,可歸并的操作在存儲器存取前歸并,而開放頁面優(yōu)化場合則通過檢查地址使存儲器的開放頁面不再開放。
此控制器的另一特征在于,當隊列中存放一存儲器指針時,除可設定的經優(yōu)化存儲位以外,該控制器還用A鏈接位@。該鏈接位當設定時便允許對鄰接存儲器指針專門處理。鏈接位的肯定將會控制仲裁器,使仲裁器選擇先前請求存儲器總線的功能單元。
附圖簡要說明
圖1是采用基于硬件的多線程處理器的通信系統(tǒng)的框圖。
圖2是圖1中基于硬件的多線程處理器的具體框圖。
圖3是圖1和圖2中基于硬件的多線程處理器所用的微引擎功能單元的框圖。
圖3A是圖3中微引擎流水線的框圖。
圖3B是表示環(huán)境切換指令格式的示意圖。
圖3C是表示通用寄存器地址安排的框圖。
圖4是基于硬件的多線程處理器中所用的強化帶寬操作用存儲控制器的框圖。
圖4A是表示圖4中SDRAM控制器的仲裁策略的流程圖。
圖4B是說明對SDRAM控制器進行優(yōu)化的好處的時序圖。
圖5是基于硬件的多線程處理器中所用的等待時間有限的操作用存儲控制器的框圖。
圖5A是表示對SRAM控制器進行優(yōu)化的好處的時序圖。
圖6是圖1中處理器的通信總線接口的框圖。
說明體系結構參照圖1,通信系統(tǒng)10包括一并行、基于硬件的多線程處理器12。該基于硬件的多線程處理器12與諸如PCI總線14這種總線、存儲器系統(tǒng)16和第二總線18連接。系統(tǒng)10對可分解為并行子任務或功能的任務尤其有用。具體來說,硬件多線程處理器12對那些面向帶寬的任務而非面向等待時間的任務有用。硬件多線程處理器12具有多重微引擎22,分別配備可對一任務同時作用和獨立工作的多重硬件控制的線程。
硬件多線程處理器12還包括一中央控制器20,該控制器有助于對硬件多線程處理器12的其他資源加載微碼控制,并執(zhí)行其他通用計算機類型功能,諸如處理協(xié)議、異常以及微引擎在邊界狀態(tài)等條件下傳出數據分組進行更為細節(jié)處理場合對分組處理的額外支持。一實施例中,處理器20是一基于StrongArmT(Arm是英國Arm有限公司的商標)的體系結構。通用微處理器20具有一操作系統(tǒng)。通過該操作系統(tǒng),處理器20可調用功能在微引擎22a~22f上操作。處理器20可利用任何得到支持的操作系統(tǒng),最好用實時操作系統(tǒng)。對按Strong Arm結構實現的核心處理器來說,可用諸如微軟NT實時、VXWorks和μCUS這種操作系統(tǒng)和可從互聯(lián)網得到的免費件操作系統(tǒng)。
硬件多線程處理器12還包含多個功能微引擎22a~22f。這些功能微引擎(微引擎)22a~22f分別在硬件及其關聯(lián)狀態(tài)方面保持多個程序計數器。實際上,各微引擎22a~22f中可同時使相應的多組線程工作,而任何時候僅一個真正操作。
一實施例中,存在6個微引擎22a~22f,如圖所示,每一微引擎22a~22f能處理4個硬件線程。6個微引擎22a~22f以包括存儲器系統(tǒng)16以及總線接口24和28在內的共用資源進行工作。存儲器系統(tǒng)16包含同步動態(tài)隨機存取存儲器(SDRAM)的控制器26a和靜態(tài)隨機存取存儲器(SRAM)的控制器26b。SDRAM存儲器16a和SDRAM控制器26a通常用于處理大量數據,例如處理來自網絡數據分組的網絡有效負載。SRAM控制器26b和SRAM存儲器16b在網絡實施例當中實現較小等待時間、迅速存取任務,例如存取查找表、核心處理器20的存儲器等。
6個微引擎22a~22f根據數據特性存取SDRAM16a或SRAM16b。因此,對SRAM存入并讀取短等待時間且小帶寬的數據,而對SDRAM則存入并讀取等待時間不重要的大帶寬數據。微引擎22a~22f可對SDRAM控制器26a或SRAM控制器26b執(zhí)行存儲器指針指令。
可通過SRAM或SDRAM的存儲器存取說明硬件多線程的優(yōu)點。舉例來說,一線程0所請求的微引擎對SRAM的存取會使SRAM控制器26b啟動對SRAM存儲器16b的存取。SRAM控制器控制對SRAM總線的仲裁,對SRAM16進行存取,從SRAM16b讀取數據,并使數據返回至提出請求的微引擎22a-22b。SRAM存取期間,若微引擎(例如22a)僅具有一個可運作的線程,該微引擎會休眠直到從SRAM返回數據。通過采用每一微引擎22a~22f內的硬件環(huán)境對換,該硬件環(huán)境對換能使具有獨特程序計數器的其他環(huán)境在該相同微引擎中執(zhí)行。因此,第一線程(例如線程0)等待所讀出數據返回的同時,另一線程例如線程1可起作用。執(zhí)行期間,線程1可存取SDRAM存儲器16a。線程1在SDRAM單元上運作,線程0在SRAM單元上運作的同時,新線程例如線程2可在微引擎22a中現場運作。線程2可運作一些時間直到該線程需要存取存儲器或執(zhí)行某些其他長等待時間操作,諸如對總線接口進行存取。因此,處理器12可同時使總線運作、SRAM運作和SDRAM運作均得到完成,或由一個微引擎22a在其上運作,全部完成或正在工作的總線操作、SRAM操作和SDRAM操作,并且使另一個線程可用于處理數據通路中更多的工作。
硬件環(huán)境對換還使任務完成同步。舉例來說,2個線程會同時命中相同的共用資源例如SRAM。諸如FBUS(F總線)接口28、SRAM控制器26a和SDRAM26b等每一個獨立功能單元當其完成其中一個微引擎線程環(huán)境所請求的任務時,便回報一通知完成運作的標志。微引擎收到該標志,便能判斷開通哪一線程。
利用硬件多線程處理器的一個例子是用作網絡處理器。作為網絡處理器,硬件多線程處理器12作為與諸如媒體存取控制器(例如10/100BaseT8進制MAC13a或千兆位以太網13b)這種網絡裝置的接口。通常作為一網絡處理器,硬件多線程處理器12可作為與任何類型通信設備的接口或收發(fā)大量數據的接口。在聯(lián)網應用中起作用的通信系統(tǒng)10可從設備13a和13b接收多個網絡數據分組,以并行方式處理這些數據分組??刹捎糜布嗑€程處理器12獨立處理各網絡數據分組。
處理器12的另一應用例是一附錄處理器用打印引擎或作為存儲子系統(tǒng)(即RAID磁盤存儲器)的處理器。再一應用是作為配對引擎。舉例來說,在證券業(yè)中,電子交易的出現要求用電子配對引擎來搓合買方和賣方的報單。可在系統(tǒng)10上完成上述和其他并行任務。
處理器12包括一將該處理器與第2總線18連接的總線接口28。一實施例中,總線接口28將處理器12與所謂的FBUS18(FIFO總線)連接。FBUS接口28負責控制處理器12和形成該處理器與FBUS18的接口。FBUS18是64位寬的FIFO總線,用于形成與媒體存取控制器(MAC)設備的接口。
處理器12包括一第二接口(例如PCI總線接口24),該接口將駐留PCI總線14上的其他系統(tǒng)組成部分與處理器12連接。PCI總線接口24提供一至存儲器16(例如SDRAM存儲器16a)的高速數據通路24a。通過該通路,數據可從SDRAM16a通過直接存儲器存取(DMA)的傳送經PCI總線14轉移。硬件多線程處理器12支持圖像傳送。硬件多線程處理器12能用多個DMA通道,因而若DMA傳送的一個目標忙,另一DMA通道便可接管PCI總線對另一目標傳送信息,以維持處理器12高效。此外,PCI總線接口還支持目標和主機操作。目標操作是總線14上的從屬裝置通過對該操作起從屬作用的讀和寫存取SDRAM場合的操作。主機操作中,處理器核心20直接對PCI接口24收、發(fā)數據。
每一功能單元連接1條或多條內部總線。下文將說明,內部總線是32位的雙總線(即1條總線用于讀,另1條用于寫)。硬件多線程處理器12結構上還做成處理器12中內部總線帶寬之和大于處理器12所接外部總線的帶寬。處理器12包含內部核心處理器總線,例如ASB總線(高級系統(tǒng)總線Advancedsystem Bus),該總線將處理器核心接到存儲控制器26a、26b和ASB譯碼器30,后文將說明。ASB總線是配合Strong Arm處理器核心用的所謂AMBA總線的子集。處理器12還包含將微引擎單元接到SRAM控制器26b、ASB變換器30和FBUS接口28的專用總線34。存儲器總線38將存儲控制器26a、26b接到總線接口24、28和包含用于引導操作等的快速擦寫ROM16c的存儲器系統(tǒng)16。
參照圖2,每一微引擎22a~22f包含仲裁器,檢查標志以判定可提供的工作線程。來自任一微引擎22a~22f的任何線程都可訪問SDRAM控制器26a、SRAM控制器26b或FBUS接口28。存儲控制器26a和26b分別包含多個隊列,以存放待處理的存儲器指針請求。這些隊列保持存儲器指針的次序或者安排存儲器指針來優(yōu)化存儲器帶寬。舉例來說,若線程0相對線程1獨立或者無關,線程1和0便沒有理由無法不按順序完成其存儲器指針指向SRAM單元。微引擎22a~22f對存儲控制器26a和26b發(fā)布存儲器指針請求。微引擎22a~22f以足夠的存儲器指針操作充滿存儲器子系統(tǒng)26a和26b,使得該存儲器子系統(tǒng)26a和26b成為處理器12運作的瓶頸。
若存儲器子系統(tǒng)16充滿本質上獨立的存儲器請求,處理器12便可進行存儲器指針分類。該存儲器指針分類改善能達到的存儲器帶寬。如下文所述,存儲器指針分類減少存取SRAM時所出現的空載時間或空泡。通過存儲器指針指向SRAM,在讀寫之間對信號線電流方向的切換,產生等待SRAM16b與SRAM控制器26b連接的導體上的電流穩(wěn)定的空泡或空載時間。
也就是說,在總線上驅動電流的驅動器需要在狀態(tài)變化前穩(wěn)定。因此,讀后接著寫的重復周期會使峰值帶寬下降。存儲器指針分類允許組織指針指向存儲器,使得長串的讀出后面接著長串的寫入。這可用于使流水線的空載時間最少,以有效達到接近最大可用帶寬。指針分類有助于保持并行硬件環(huán)境線程。對于SDRAM,指針分類使一存儲組對另一存儲組可隱藏預充電。具體而言,若存儲器系統(tǒng)166組織成奇數存儲組和偶數存儲組,而處理器在奇數存儲組上工作,存儲控制器便可在偶數存儲組啟動預充電。若存儲器指針在奇數和偶數存儲組之間交替變化,便可預充電。通過安排存儲器指針的順序交替訪問相對存儲組,處理器12改善SDRAM的帶寬。此外,還可采用其他優(yōu)化。舉例來說,可采用可歸并的運作在存儲器存取前歸并場合的歸并優(yōu)化、通過檢查地址不重新打開存儲器開放頁面場合的開放頁面優(yōu)化、將在下面說明的鏈接以及刷新機制。
FBUS接口28支持MAC裝置所支持的各端口用的收和發(fā)標志,還支持表明業(yè)務何時得到保證的中斷標志。FBUS接口28還包含對來自FBUS18的輸入數據組首部進行處理的控制器28a??刂破?8a提取該分組的首部,并且在SRAM中進行可微編程源/宿/協(xié)議散列查找(用于地址平滑)。如果散列未成功分辨,將分組首部送到處理器核心20進行附加處理。FBUS接口28支持下列內部數據事務FBUS單元(共用總線SRAM) 至/來自微引擎FBUS單元(經專用總線)從SDRAM單元寫入FBUS單元(經MBUS)讀出至SDRAMFBUS18是標準業(yè)界總線,其中包含例如64位寬的數據總線、地址邊帶控制和讀/寫控制。FBUS接口28能用一系列輸入輸出FIFO29a~29b輸入大量數據。微引擎22a~22f從FIFO29a~29b取得數據,命令SDRAM控制器26a將來自己從總線18上的裝置得到數據的接收FIFO的數據移入FBUS接口28。該數據可通過存儲控制器26a,經直接存儲器存取送到SDRAM存儲器16a。同樣,微引擎能將從SDRAM26a至接口28的數據經FBUS接口28移出到FBUS18。
在微引擎之間分配數據功能。經由命令請求連接SRAM26a、SDRAM26b和FBUS28。命令請求可以是存儲器請求或FBUS請求。例如,命令請求能將數據從位于微引擎22a的寄存器移到共用資源,例如移到SDRAM位置、SRAM位置、快速擦寫存儲器或某MAC地址。這些命令送出到每一功能單元和共用資源。然而,共用資源不需要保持數據的局部緩存。反之,共用資源存取位于微引擎內部的分布數據。這使微引擎22a~22f可局部存取數據,而不是對總線上存取的仲裁,冒爭用總線的風險。利用此特征,等待數據內部到達微引擎22a~22f的阻塞周期為0。
連接這些資源(例如存儲控制器26a和26b)的例如ASB總線30、SRAM總線34和SDRAM總線38等數據總線具有足夠的帶寬,使得無內部阻塞。因此,為了避免阻塞,處理器12具有每一功能單元配備內部總線最大帶寬至少2倍的帶寬要求。例如,SDRAM可以83MHz運作于64位寬總線。SRAM數據總線可具有讀寫分開的總線,例如可以是運作于166MHz的32位寬讀出總線和運作于166MHz的32位寬寫入總線。也就是說,運作于166Mhz的64位實際上是SDRAM帶寬的2倍。
核心處理器20也可存取共用資源。核心處理器20經總線32直接與SDRAM控制器26a、總線接口24和SRAM控制器26b通信。然而,為了訪問微引擎22a~22f和任一微引擎22a~22f的傳送寄存器,核心處理器24經ASB變換器30在總線34上存取微引擎22a~22f。ASB變換器30可在實體上駐留于FBUS接口28,但邏輯上不同。ASB變換器30進行FBUS微引擎?zhèn)魉图拇嫫魑恢门c核心處理器地址(即ASB總線)之間的地址變換,以便核心處理器20能訪問屬于微引擎22a~22c的寄存器。
雖然如下文所述微引擎22可用寄存器組交換數據,但還提供便箋存儲器27,使微引擎能將數據寫到該存儲器,供其他微引擎讀取。便箋式存儲器27連接總線34。
處理器核心20包含在5級流水線實現的RISC核心50,該流水線進行在單個周期內對1個操作數或2個操作數的單周期移位,提供乘法支持和32位滾筒型移位支持。此RISC核心50具有標準Strong ArmT體系結構,但由于性能上的原因,用5級流水線實現。處理器核心20還包含16K字節(jié)指令快速緩存器52、8K字節(jié)數據快速緩存器54和預讀取流緩存器56。核心處理器20執(zhí)行與存儲器寫入和指令讀取并行的算術運算。核心處理器20經ARM規(guī)定的ASB總線與其他功能單元形成接口。ASB總線是32位雙向總線32。
微引擎參照圖3,示出微引擎22a~22f中一示范例,例如微引擎22f。微引擎包含控制存儲器70,在一實施例中該存儲器包含這里達1024字(每字32位)的RAM。該RAM存儲一微程序。該微程序可由核心處理器20加載。微引擎22f還包含控制器邏輯72。該控制器邏輯包含指令譯碼器73和程序計數器(PC)單元72a~72d。按硬件維持4個微程序計數器72a~72d。微引擎2f還包含環(huán)境事件切換邏輯74。該環(huán)境事件邏輯74從例如SRAM26a、SDRAM26b或處理器核心20、控制及狀態(tài)寄存器等共用資源的每一個接收消息(例如序號#事件響應SEQ_#_EVENT_RESPONSE、FBI事件響應FBI_EVENT_RESPONSE、SRAM事件響應SRAM_EVENT_RESPONSE、SDRAM事件響應SDRAM_EVENT_RESPONSE和ASB事件響應ASB_EVENT_RESPONSE)。這些消息提供有關請求的功能是否完成的信息。根據線程請求的功能是否完成和信號傳送是否完成,線程需要等待該完成信號,如果線程能工作,便將該線程放到可用線程列表(未示出)。微引擎22a可具有最多例如4個可用線程。除執(zhí)行線程局部所有的事件信號外,微引擎22還用全局的信令狀態(tài)。借助該信令狀態(tài),執(zhí)行線程可對全部微引擎22廣播信號狀態(tài)。接收請求可行信號后,微引擎中的全部任何線程可按這些信令狀態(tài)分支。可用這些信令狀態(tài)判定資源的可用性或資源提供服務是否適當。
環(huán)境事件邏輯74具有對4個線程的仲裁。一實施例中,仲裁是一循環(huán)機制??捎冒▋?yōu)先級排隊或加權合理排隊在內的其他技術。微引擎22f還包括一執(zhí)行框(EBOX)數據通路76,其中包含算術邏輯單元76a和通用寄存器組76b。算術邏輯單元76a執(zhí)行算術和邏輯功能以及移位功能。寄存器組76b具有數量較多的通用寄存器。圖3B中將說明,此實施例中,第1組(組A)具有64個通用寄存器,第2組(組B)也具有64個。這些通用寄存器形成窗口(后文將說明),以便其可相對尋址和絕對尋址。
微引擎22f還包含寫傳送寄存器堆棧78和讀傳送堆棧80。這些寄存器也形成窗口,以便其可相對尋址和絕對尋址。資源的寫入數據位于寫傳送寄存器堆棧78。讀寄存器堆棧80則用于從共用資源返回的數據。分別來自例如SRAM控制器26a、SDRAM控制器26b或核心處理器20之類共用資源的事件信號,與數據的到達串行或并行提供給環(huán)境事件仲裁器74,提醒線程數據可用或數據已發(fā)送。傳送寄存器組78和80都通過數據通路連接執(zhí)行框(EBOX)76。一實施例中,讀傳送寄存器具有64個寄存器,寫傳送寄存器也有64個。
如圖3A所示,微引擎數據通路維持5級微流水線82。該流水線包含查找微指令字82a、形成寄存器文件地址82b、從寄存器文件讀操作數82c、ALU或移位或比較運算82d和結果寫回寄存器82e。通過提供回寫數據旁路至ALU/移位器單元,假定按寄存器文件而非RAM實現寄存器,微引擎可執(zhí)行寄存器文件同時讀寫,完全隱藏寫操作。
SDRAM接口26a在讀數據上對提出請求的微引擎送回一表明是否在讀請求上出現奇偶差錯的信號。微引擎采用任何送回的數據時,微引擎的微碼負責校驗SDRAM讀奇偶標志。校驗該標志時,如果設定該標志,分支動作將其消除。僅在啟用SDRAM供校驗時發(fā)送奇偶標志,SDRAM受奇偶性防護。微引擎和PCI單元是通知奇偶差錯的唯一請求者。因此,如果處理器核心20或FIFO要求奇偶性保護,微引擎就按請求幫助。微引擎22a~22f支持條件分支。分支判決結果是先前微控制指令設定條件碼時,出現條件分支執(zhí)行時間(不包含轉移)最壞的情況。表1示出該等待時間如下|1|2|3|4|5|6|7|8|------------------+----+----+----+----+----+----+----+----+微存儲查找|n1|cb|n2|XX|b1|b2|b3|b4|寄存器地址生成 | |n1|cb|XX|XX|b1|b2|b3|寄存器文件查找 | | |n1|cb|XX|XX|b1|b2|ALU/shifter/cc | | | |n1|cb|XX|XX|b1|寫回 | | |m2| |n1|cb|XX|XX|其中,nx是預分支微字(n1設定為cc)cb是條件轉移bx是后分支微字xx是異常微字如表1所示,直到周期4才設定條件碼n1,能進行分支判決,這在本例中使用周期5上查找分支路徑。微引擎由于必須在分支路徑用操作b1填充流水線前吸收流水線中操作n2和n3(緊接分支后的2個微字),帶來2個周期的分支等待時間損失。如果不進行分支,就不吸收微字,按常規(guī)繼續(xù)執(zhí)行。微引擎有若干機制用于減少或消除有效分支等待時間。
微引擎支持延遲分支。延遲分支是微引擎允許在分支后實施分支前出現1個或2個微字的情況(即分支作用在時間上“延遲”)。因此,如果能找到有用的工作填補分支微字后所浪費的周期,就能隱去分支等待時間。下面示出延遲1周期的分支,其中允許在cb后、b1前執(zhí)行n2|1|2|3|4|5|6|7|8|------------------+----+----+----+----+----+----+----+----+微存儲查找|n1|cb|n2|XX|b1|b2|b3|b4|寄存器地址生成 | |n1|cb|n2|XX|b1|b2|b3|寄存器文件查找 | | |n1|cb|n2|XX|b1|b2|ALU/shifter/cc | | | |n1|cb|n2|XX|b1|寫回| | | | |n1|cb|n2|XX|下面示出2周期的延遲分支,其中n2和n3都允許在分支到b1出現前完成。注意,僅分支前在微字設定條件碼時,允許2周期分支延遲。
|1|2|3|4|5|6|7|8|9|------------------+----+----+----+----+----+----+----+----+----+微存儲查找|n1|cb|n2|n3|b1|b2|b3|b4|b5|寄存器地址生成 | |n1|cb|n2|n3|b1|b2|b3|b4|寄存器文件查找 | | |n1|cb|n2|n3|b1|b2|b3|ALU/shifter/cc | | | |n1|cb|n2|n3|b1|b2|寫回| | | | |n1|cb|n2|n3|b1|微引擎也支持條件碼估值。如果分支前判決分支的條件碼設定2個或多個微字,則由于能早1周期進行分支判決,能消除1周期的等待時間如下|1|2|3|4|5|6|7|8|------------------+----+----+----+----+----+----+----+----+微存儲查找|n1|n2|cb|XX|b1|b2|b3|b4|寄存器地址生成 | |n1|n2|cb|XX|b1|b2|b3|寄存器文件查找 | | |n1|n2|cb|XX|b1|b2|ALU/shifter/cc | | | |n1|n2|cb|XX|b1|寫回| | | | |n1|n2|cb|XX|此例中,n1設定條件碼,n2不設定條件碼。因此,可在周期4而不是周期5進行分支判決,以消除1周期的分支等待時間。下面的例子中,將1周期延遲與條件碼提早設定加以組合,以完全隱去分支等待時間|1|2|3|4|5|6|7|8|------------------+----+----+----+----+----+----+----+----+微存儲查找|n1|n2|cb|n3|b1|b2|b3|b4|寄存器地址生成 | |n1|n2|cb|n3|b1|b2|b3|寄存器文件查找 | | |n1|n2|cb|n3|b1|b2|ALU/shifter/cc | | | |n1|n2|cb|n3|b1|寫回| | | | |n1|n2|cb|n3|其中,在1周期延遲分支前的2周期設定條件碼cc。
在不能提前設定條件碼的情況下(即條件碼設定在分支前的微字中時),微引擎支持試圖減少1周期留下的暴露分支等待時間的分支猜測。通過“猜測”分支路徑或串行路徑,微定序器在確切知道執(zhí)行何路徑前預先取得猜測路徑1。猜測如果正確,就消除1周期分支等待時間如下|1|2|3|4|5|6|7|8|------------------+----+----+----+----+----+----+----+----+微存儲查找|n1|cb|n1|b1|b2|b3|b4|b5|寄存器地址生成 | |n1|cb|XX|b1|b2|b3|b4|寄存器文件查找 | | |n1|cb|XX|b1|b2|b3|ALU/shifter/cc | | | |n1|cb|XX|b1|b2|寫回| | | | |n1|cb|XX|b1|其中猜測進行分支而且也進行分支。如果微碼猜測進行的分支不正確,微引擎仍然浪費1周期|1|2|3|4|5|6|7|8|------------------+----+----+----+----+----+----+----+----+微存儲查找|n1|cb|n1|XX|n2|n3|n4|n5|寄存器地址生成 | |n1|cb|n1|XX|n2|n3|n4|寄存器文件查找 | | |n1|cb|n1|XX|n2|n3|ALU/shifter/cc | | | |n1|cb|n1|XX|n2|寫回| | | | |n1|cb|n1|XX|其中猜測進行分支但不進行分支。
然而,微碼猜測不進行分支時,有差異地分配等待時間損失。
對猜測不進行分支而且也不進行分支而言,不存在浪費周期,如下所示
|1|2|3|4|5|6|7|8|------------------+----+----+----+----+----+----+----+----+微存儲查找|n1|cb|n1|n2|n3|n4|n5|n6|寄存器地址生成 | |n1|cb|n1|n2|n3|n4|n5|寄存器文件查找 | | |n1|cb|n1|n2|n1|b4|ALU/shifter/cc | | | |n1|cb|n1|n2|n3|寫回| | | | |n1|cb|n1|n2|然而,對猜測不進行分支但進行分支而言,存在2個浪費周期如下|1|2|3|4|5|6|7|8|------------------+----+----+----+----+----+----+----+----+微存儲查找|n1|cb|n1|XX|b1|b2|b3|b4|寄存器地址生成 | |n1|cb|XX|XX|b1|b2|b3|寄存器文件查找 | | |n1|cb|XX|XX|b1|b2|ALU/shifter/cc | | | |n1|cb|XX|XX|b1|寫回| | | | |n1|cb|XX|XX|微引擎可組合分支猜測和1周期分支延遲,以進一步改善結果。對猜測進行分支加上1周期延遲分支而且也進行分支而言,其結果為|1|2|3|4|5|6|7|8|------------------+----+----+----+----+----+----+----+----+微存儲查找|n1|cb|n2|b1|b2|b3|b4|b5|寄存器地址生成 | |n1|cb|n2|b1|b2|b3|b4|寄存器文件查找 | | |n1|cb|n2|b1|b2|b3|ALU/shifter/cc | | | |n1|cb|n2|b1|b2|寫回 | | | | |n1|cb|n2|b1|上述情況下,通過執(zhí)行n2和正確猜測分支方向,隱去2周期分支等待時間。如果微碼猜測不正確,仍暴露1周期等待時間如下|1|2|3|4|5|6|7|8|9|------------------+----+----+----+----+----+----+----+----+----+微存儲查找|n1|cb|n2|XX|n3|n4|n5|n6|n7|寄存器地址生成 | |n1|cb|n2|XX|n3|n4|n5|n6|寄存器文件查找 | | |n1|cb|n2|XX|n3|n4|n5|ALU/shifter/cc | | | |n1|cb|n2|XX|n3|n4|寫回| | | | |n1|cb|n2|XX|n3|
其中,猜測進行分支加上1周期延遲分支但不進行分支。
如果微碼正確猜測不進行分支,流水線按常規(guī)不受干擾的情況順序進行。微碼錯誤猜測不進行分支,微引擎又暴露1周期非生產性執(zhí)行如下|1|2|3|4|5|6|7|8|9|------------------+----+----+----+----+----+----+----+----+----+微存儲查找 |n1|cb|n2|XX|b1|b2|b3|b4|b5|寄存器地址生成 | |n1|cb|n2|XX|b1|b2|b3|b4|寄存器文件查找 | | |n1|cb|n2|XX|b1|b2|b3|ALU/shifter/cc | | | |n1|cb|n2|XX|b1|b2|寫回| | | | |n1|cb|n2|XX|b1|其中,猜測不進行分支但進行分支,而且nx是預分支微字(n1設定為cc)cb是條件轉移bx是后分支微字xx是異常微字在轉移指令的情況下,由于直到ALU級中存在轉移的周期結束才知道分支地址,造成3個額外周期的等待時間如下|1|2|3|4|5|6|7|8|9|------------------+----+----+----+----+----+----+----+----+----+微存儲查找|n1|jp|XX|XX|XX|j1|j2|j3|j4|寄存器地址生成 | |n1|jp|XX|XX|XX|j1|j2|j3|寄存器文件查找 | | |n1|jp|XX|XX|XX|j1|j2|ALU/shifter/cc | | | |n1|jp|XX|XX|XX|j1|寫回| | | | |n1|jp|XX|XX|XX|環(huán)境切換參照圖3B,其中示出環(huán)境切換指令的格式。環(huán)境切換是促使選擇不同環(huán)境(及其相關聯(lián)PC)的特殊分支形式。環(huán)境切換也引入一些分支等待時間??紤]以下的環(huán)境切換
|1|2|3|4|5|6|7|8|9|------------------+----+----+----+----+----+----+----+----+----+微存儲查找|o1|ca|br|n1|n2|n3|n4|n5|n6|寄存器地址生成 | |o1|ca|XX|n1|n2|n3|n4|n5|寄存器文件查找 | | |o1|ca|XX|n1|n2|n3|n4|ALU/shifter/cc | | | |o1|ca|XX|n1|n2|n3|寫回| | | | |o1|ca|XX|n1|n2|其中,ox是舊環(huán)境流br是舊環(huán)境中分支微字ca是環(huán)境再仲裁(致使環(huán)境切換)nx是新環(huán)境流XX是異常微字環(huán)境切換中,致使“br”微字異常,以避免保留正確舊環(huán)境PC會造成的控制和定時復雜性。
按照分支前在微字上設定的ALU條件碼操作的條件分支可選擇0、1或2周期分支延遲模式。所有其他分支(包括環(huán)境再仲裁)可選擇0或1周期分支延遲模式。可設計體系結構使環(huán)境仲裁微字在前置分支的分支延遲窗內、轉移或使該微字為非法任選項。也就是說,某些實施例中,由于如上所述原因,其會造成保存舊環(huán)境PC過度復雜,流水線中分支轉換時不允許發(fā)生環(huán)境切換。還可設計體系結構,使在前置分支的分支延遲窗內的分支、轉換或者環(huán)境仲裁微字非法,以免分支行為復雜且不可預測。
每一微引擎22a~22f支持4個環(huán)境的多線程執(zhí)行。其原因之一是使1個線程可正好在另一線程發(fā)布存儲器指針后開始執(zhí)行,并且必須等待直到該指針完成后才進行更多工作。由于存儲器等待時間顯著,此性能對維持微引擎硬件有效執(zhí)行至關重要。換句話說,若僅支持一個線程執(zhí)行,微引擎就會閑置大量周期,等待指針返回,從而使總的計算吞吐量減少。多線程執(zhí)行通過跨越多個線程執(zhí)行有用的獨立工作,使微引擎可隱去存儲器等待時間。提供2種同步機制,以便使線程可發(fā)布SRAM或SDRAM指針,并且在完成該訪問時,接著與下一個時間點同步。
一種機制是立即同步。立即同步中,微引擎發(fā)布指針,并且立即換出該環(huán)境。相應的指針完成時便發(fā)信號通知該環(huán)境。一旦發(fā)信號,便換回環(huán)境,以便當出現環(huán)境對換事件且輪到其運作時執(zhí)行。因此,從單一環(huán)境指令流的角度看,微字在發(fā)出存儲器指針后要到指針完成才得以執(zhí)行。
第2種機制是延遲同步。延遲同步中,微引擎發(fā)布指針后,繼續(xù)執(zhí)行一些其他與指針無關的有用工作。過些時間,變成需要線程執(zhí)行流與所發(fā)布指針的完成同步后再進一步工作。這時,執(zhí)行同步微字,換出當前線程,并且在過一些時間完成指針時將其換回,或者由于已經完成指針而繼續(xù)執(zhí)行當前線程。用以下2種不同信令方案實現延遲同步。
若存儲器指針與傳送寄存器關聯(lián),在設定或消除相應傳送寄存器有效位時便產生觸發(fā)線程的信號。舉例來說,設定寄存器A有效位時,便發(fā)出在傳送寄存器A中存數據這種SRAM讀出的信號。若存儲器指針與傳送FIFO或接收FIFO關聯(lián),而不是與傳送寄存器關聯(lián),在SDRAM控制器26a中完成訪問時產生信號。微引擎調度器中僅保持每一環(huán)境一種信號狀態(tài),因而此方案中只能存在一個待處理信號。
至少有2種可設計微控制器微程序的一般操作范例。一種是優(yōu)化總體的微控制器計算吞吐量和總體的存儲器帶寬,其代價是花費一個線程執(zhí)行等待時間。當系統(tǒng)具有對非相關數據分組執(zhí)行每一微引擎多線程的多重微引擎時,此范例會有意義。
第2種范例是以總體的微引擎計算吞吐量和總體存儲器帶寬的代價來優(yōu)化微引擎執(zhí)行等待時間。此范例涉及以實時約束執(zhí)行線程,該約束支配按某規(guī)定時間必須絕對完成的某工作。這種約束要求給單一線程執(zhí)行的優(yōu)化比諸如存儲器帶寬或總體計算吞吐量之類其他考慮高的優(yōu)先級。實時線程隱含僅執(zhí)行一個線程的單一微引擎。目標是使單一實施線程盡快執(zhí)行,而多線程的執(zhí)行妨礙此性能,所以不處理多線程。
在發(fā)布存儲器指針和環(huán)境切換方面,這2種范例的編碼方式顯著不同。在實時情況下,目標是盡快發(fā)布盡量多的存儲器指針,以便使這些指針所帶來的存儲器等待時間最短。已盡量提早發(fā)布盡量多的指針,目標是微引擎與指針盡可能并行執(zhí)行盡量多的計算。與實時優(yōu)化時相對應的計算流是o)發(fā)布存儲器指針1o)發(fā)布存儲器指針2o)發(fā)布存儲器指針3
o)進行與存儲器指針1、2、3無關的工作o)與存儲器指針1的完成同步o)進行取決于存儲器指針1且與存儲器指針2和3無關的工作o)根據前面的工作發(fā)布新存儲器指針o)與存儲器指針2的完成同步o)進行取決于存儲器指針1和2且與存儲器指針3無關的工作o)根據前面的工作發(fā)布新存儲器指針o)與存儲器指針3的完成同步o)進行取決于全部3個指針完成的工作o)根據前面的工作發(fā)布新存儲器指針反之,對吞吐量和帶寬的優(yōu)化則采取不同方法。對微引擎計算吞吐量和總體存儲器帶寬而言,不考慮單線程執(zhí)行等待時間。為了實現這點,目標是對每一線程在微程序上均勻分隔存儲器指針。這將給SRAM和SDRAM的控制器提供均勻的存儲器指針流,并且使總可獲得一線程的概率最大,以隱去換出另一線程時帶來的存儲器等待時間。
寄存器文件地址類型參照圖3C,所存在的2個寄存器地址空間是局部可存取寄存器和全部微引擎均可存取的全局可存取寄存器。通用寄存器(GRP)做成2個分開組(A組和B組),其地址逐字交錯,使得A組寄存器具有LSB=0,B組寄存器具有LSB=1。每組可進行本組內2個不同字的同時讀寫。
整個組A和組B上,寄存器集合76b也組織成每一線程具有可相對尋址的32個寄存器的4個窗76b0~76b3。因此,線程0在77a(寄存器0)找到其寄存器0,線程1在77b(寄存器32)找到其寄存器0,線程2在77c(寄存器64)找到其寄存器0,線程3在77d(寄存器96)找到其寄存器0。支持相對尋址,以便多線程能準確使用相同的控制存儲器和位置,但訪問不同的寧寄存器窗,并執(zhí)行不同功能。寄存器窗尋址和寄存器組尋址的使用,僅在以微引擎22f中以雙端口RAMS提供必要的讀帶寬。
這些開窗的寄存器不需要保存環(huán)境切換之間的數據,從而消除環(huán)境對換文件或堆棧的常規(guī)推入和推出。這里環(huán)境切換對從一環(huán)境到另一環(huán)境的變化具有0周期的開銷。相對寄存器尋址將寄存器組劃分成跨越通用寄存器集合地址寬度的窗。相對尋址允許訪問相對于窗起始點的任何窗。此體系結構內也支持絕對尋址,其中,通過提供寄存器的準確地址,任何線程可訪問任一絕對寄存器。
通用寄存器48的尋址可出現2種方式,取決于微字格式。這2種方式是絕對方式和相對方式。絕對方式中,在7位源段(a6~a0或b6~b0)直接指定寄存器地址的尋址7 6 5 4 3 2 1 0+…+…+…+…+…+…+…+…+A GPR |a6|0|a5|a4|a3|a2|a1|a0| a6=0B GPR |b6|1|b5|b4|b3|b2|b1|b0| b6=0SRAM/ASB|a6|a5|a4|0|a3|a2|a1|a0| a6=1,a5=0,a4=0SDRAM |a6|a5|a4|0|a3|a2|a1|a0| a6=1,a5=0,a4=1在8位宿段(d7~d0)直接指定寄存器地址7 6 5 4 3 2 1 0+…+…+…+…+…+…+…+…+A GPR |d7|d6|d5|d4|d3|d2|d1|d0| d7=0,d6=0B GPR |d7|d6|d5|d4|d3|d2|d1|d0| d7=0,d6=1SRAM/ASB|d7|d6|d5|d4|d3|d2|d1|d0| d7=1,d6=0,d5=0SDRAM |d7|d6|d5|d4|d3|d2|d1|d0| d7=1,d6=0,d5=1若<a6a5>=1,1,<b6b5>=1,1或<d7d6>=1,1,低端位便變換成環(huán)境相對地址字段(下文說明)。當A、B絕對字段指定非相對A或B源地址時,僅能對SRAM/ASB和SDRAM地址空間的低端半部分尋址。實際上,讀絕對方式的SRAM/SDRAM具有有效地址空間。但由于該限制不適用宿段,寫SRAM/SDRAM可用全地址空間。
相對方式中,在按5位源段(a4~a0或b4~b0)規(guī)定的環(huán)境空間內偏置指定地址的尋址7 6 5 4 3 2 1 0+…+…+…+…+…+…+…+…+A GPR |a4|0|環(huán)境|a2|a1|a0| a4=0B GPR |b7|1|環(huán)境|b2|b1|b0| b4=0SRAM/ASB|ab4|0|ab3|環(huán)境|b1|ab0| ab4=1,ab3=0
SDRAM |ab4|0|ab3|環(huán)境|b1|ab0| ab4=1,ab3=1或者在按6位宿段(d5~d0)規(guī)定的環(huán)境空間內偏置指定地址的尋址7 6 5 4 3 2 1 0+…+…+…+…+…+…+…+…+A GPR |d5|d4|環(huán)境d2|d1|d0| d5=0,d4=0B GPR |d5|d4|環(huán)境|d2|d1|d0| d5=0,d4=1SRAM/ASB|d5|d4|d3|環(huán)境|d1|d0| d5=1,d4=0,d3=0SDRAM |d5|d4|d3|環(huán)境|d1|d0| d5=1,d4=0,d3=1如果<d5d4>=1,1,則宿地址找不到有效寄存器,因而不回寫宿操作數。
從微引擎和存儲控制器可全局存取以下寄存器散列單元寄存器便箋和共用寄存器接收FIF0和接收狀態(tài)FIFO發(fā)送FIFO發(fā)送控制FIFO不中斷驅動微引擎。執(zhí)行每一微流直到完成為止,根據處理器12中其他裝置用信號通知的狀態(tài)選擇一新流。
參照圖4,SDRAM存儲控制器26a包含存儲器指針隊列90,其中存儲器指針請求從各微引擎22a~22f到達。存儲控制器26a包括一仲裁器91,該仲裁器選擇下一微引擎指針請求至任何功能單元。設一個微引擎提出訪問請求,該請求會來到SDRAM控制器26a內部的地址和命令隊列90。若該訪問請求具有稱為A經優(yōu)化存儲位@的位集合,便將進入的指針請求分類為偶數組隊列90a或奇數組隊列90b。若存儲器指針請求沒有存儲器優(yōu)化位集合,系統(tǒng)設定就轉入一排序隊列90c。SDRAM控制器26是一FBUS接口28、核心處理器20和PCI接口24所共用的資源。SDRAM控制器26還維持一用于執(zhí)行讀出-修改-寫入自動操作的狀態(tài)機。SDRAM控制器26還對SDRAM的數據請求進行字節(jié)對準。
命令隊列90c保持來自微引擎的指針請求的排序。根據一系列奇數和偶數組指針,可要求信號僅在指向偶數組和奇數組兩者的存儲器指針序列完成時返回信號。若微引擎22f將存儲器指針分類成奇數組指針和偶數組指針,并且存儲器指針在奇數組前漏出其中一個組(例如偶數組),但在最后的偶數指針上信號肯定,便可想象存儲控制器26a可返回信號通知微引擎已完成存儲器請求,即使奇數組指針不提供服務也這樣。這種現象可造成一相干問題。通過提供排序隊列90c使微引擎可讓多個待處理存儲器指針中僅最后的存儲器指針通知完成,從而可避免上述情況。
SDRAM控制器26a還包含高優(yōu)先級隊列90d。高優(yōu)先級隊列90d中,來自一個微引擎的輸入存儲器指針直接進入高優(yōu)先級隊列,并且以高于其他隊列中其他存儲器指針的優(yōu)先級進行工作。偶數組隊列90a、奇數組隊列90b、命令隊列90c和高優(yōu)先級隊列90d,所有這些隊列都在一個RAM結構中實現。該結構邏輯上分成4個不同的窗,各窗分別具有其本身首部和尾部指針。由于填入和漏出操作僅是單一輸入和單一輸出,可將它們置于同一RAM結構以提高RAM結構密度。
SDRAM控制器26a還包括核心總線接口邏輯即ASB總線92。ASB總線接口邏輯92形成核心處理器20與SDRAM控制器26a的接口。ASB總線是一包含32位數據通路和28位地址通路的總線。通過MEM ASB數據設備98(例如緩存器)對存儲器存取數據。MEM ASB數據設備98是一寫數據隊列。若有從核心處理器20經ASB接口92進入的數據,該數據可存入MEM ASB設備98,接著通過SDRAM接口110從MEM ASB設備98移至SDRAM存儲器16a。雖然未示出,但可對讀出提供相同的隊列結構。SDRAM控制器26a還包括一引擎97從微引擎和PCI總線拉進數據。
附加隊列包括保持若干請求的PCI地址隊列94和ASB讀/寫隊列96。存儲器請求經復用器106送至SDRAM接口110。復用器106由SDRAM仲裁器91控制,該仲裁器檢測各隊列滿員程度和請求狀態(tài),并根據優(yōu)先級業(yè)務控制寄存器100存放的可編程值,從所檢測的情況判定優(yōu)先級。
一旦對復用器106的控制選擇一存儲器指針請求,就將此存儲器指針請求送至一譯碼器108對其進行譯碼,并生成一地址。該經過解碼的地址送至SDRAM接口110,將其分解成行地址和列地址選通信號來存取SDRAM16a,并通過將數據送至總線112的數據線16a讀出或寫入數據。一實施例中,總線112實際上是2條分開的總線,而不是單一總線。該分開的總線會包含連接分布式微引擎22a~22f的讀出總線和連接分布式微引擎22a~22f的寫入總線。
SDRAM控制器26a其特征在于,在隊列90中存儲存儲器指針時,除可設定該經優(yōu)化存儲位外,還有A鏈接位@。該鏈接位當其設定時允許對鄰接存儲器指針專門處理。如上文所述,仲裁器12控制選擇哪一微引擎在命令總線上將存儲器指針請求提供給隊列90(圖4)。對鏈接位的肯定將控制仲裁器使之選擇先前請求該總線的功能單元,這是因為對鏈接位的設定表明微引擎發(fā)出一鏈接請求。
設定鏈接位時,會按隊列90接收鄰接存儲器指針。由于鄰接存儲器指針是來自單一線程的多存儲器指針,這些鄰接指針通常按排序隊列90c存儲。為了提供同步,存儲控制器26a僅需要在完成時在鏈接存儲器指針未端給出信號。但經優(yōu)化存儲器鏈接中,(例如經優(yōu)化存儲位和鏈接位設定時)存儲器指針便會進入不同組,并且在其他組充分露出前有可能對發(fā)布信號A完成@的其中一個存儲組完成,這樣就破壞相干性。因此,控制器110用鏈接位保持來自當前隊列的存儲器指針。
參照圖4A,示出SDRAM控制器26a中仲裁策略的流程表示。仲裁策略優(yōu)待鏈接微引擎存儲器請求。處理過程115通過鏈接微引擎存儲器指針請求的檢查115a開始進行。過程115停留于鏈接請求,直到使鏈接位清零。過程對后面接著PCI總線請求115c、高優(yōu)先級隊列業(yè)務115d、相對組請求115e、排序隊列請求115f和相同組請求115g的ASB總線請求115b進行檢查。對鏈接請求提供完整的業(yè)務,而對業(yè)務115b~115d則按循環(huán)順序提供。僅當業(yè)務115a~115d完全漏出時,該過程才進行業(yè)務115e~115g的處理。當先前SDRAM存儲器請求對鏈接位設定時,設定所鏈接的微引擎存儲器指針請求。當設定鏈接位時,仲裁引擎便再次僅對相同隊列服務,直到鏈接位清零。ASB處于等待狀態(tài)時對Strong Arm核心帶來嚴重性能損失,故ASB優(yōu)先級高于PCI。因為PCI的等待時間要求,PCI優(yōu)先級高于微引擎。但就其他總線而言,該仲裁優(yōu)先級可能不同。
如圖4B所示,示出的是不具有有效存儲器優(yōu)化和具有有效存儲器優(yōu)化的典型存儲器定時。可以知道,對有效存儲器優(yōu)化的利用使總線應用程度最大,從而隱去實際SDRAM裝置內固有的等待時間。本例中,非優(yōu)化存取可用14周期,而優(yōu)化存取則可用7周期。
參照圖5,其中示出SRAM的存儲控制器26b。該存儲控制器26b包括一地址及命令隊列120。存儲控制器26a(圖4)具有一基于奇數和偶數分組的存儲器優(yōu)化隊列,存儲控制器26b則根據存儲器操作類型(即讀出或寫入)優(yōu)化。地址及命令隊列120包括一高優(yōu)先級隊列120a、一作為SRAM執(zhí)行的主導存儲器指針功能的讀隊列120b、以及一通常包括要非優(yōu)化的全部SRAM讀寫的排序隊列120c。盡管未圖示,地址及命令隊列120也可包括一寫隊列。
SRAM控制器26b還包括核心總線接口邏輯即ASB總線122。ASB總線接口邏輯122形成核心處理器20與SRAM控制器26b的接口。ASB總線是一包括32位數據通路和28位地址通路的總線。通過MEM ASB數據設備128(例如緩存器)對存儲器存取數據。MEM ASB數據設備128是一寫數據隊列。若有從核心處理器20通過ASB接口122的進入數據,該數據可存入MEM ASB設備128,接著通過SRAM接口140從MEM ASB設備128移至SRAM存儲器16b。雖未圖示,但可提供相同的隊列結構用于讀出。SRAM控制器26b還包括一引擎127從微引擎和PCI總線拉進數據。
存儲器請求經復用器126送至SDRAM接口140。復用器126由SDRAM仲裁器131控制,該仲裁器檢測各隊列滿員程度和請求狀態(tài),并根據優(yōu)先級業(yè)務控制寄存器130存放的可編程值,從所檢測的情況判定優(yōu)先級。一旦對復用器126的控制選擇一存儲器指針請求,就將此存儲器指針請求送至一譯碼器138對其進行譯碼,并生成一地址。SRAM單元保持對經存儲器映射的離片SRAM和擴展ROM的控制。SRAM控制器26b可對例如16M字節(jié)尋址,而例如用于SRAM16b的8M字節(jié)映射保留用于專用功能,其中包括通過快速擦寫ROM16的引導空間;MAC器件13a、13b用的控制臺端口存取訪問;以及對關聯(lián)(RMON)計數器的存取。SRAM用于局部查找表和隊列管理功能。
SRAM控制器26b支持下列事務微引擎請求 (經專用總線) 至/自SRAM核心處理器 (經ASB總線) 至/自SRAM。
SRAM控制器26b進行存儲器指針分類以使SRAM接口140至存儲器16b的流水線中延遲(空泡)最少。SRAM控制器26b根據讀功能進行存儲器指針分類。一個空泡可以是1周期或者2周期,取決于所用存儲器件的類型。
SRAM控制器26b包括一鎖定查找器件142,是一8輸入項地址內容可尋址存儲器用于對讀出鎖定的查找。每一位置包括一由后續(xù)讀出-鎖定請求檢查的有效位。地址及命令隊列120還包括一讀出鎖定失效隊列120d。該隊列120d用于保持因存儲器一部分存在鎖定而失效的讀存儲器指針請求。也就是說,其中一個微引擎所發(fā)布的存儲器請求所具有的讀出鎖定請求在地址及控制隊列120中處理。該存儲器請求將對排序隊列120c或讀隊列120b運作,并將其識別為讀出鎖定請求??刂破?6b將存取鎖定查找器件142以判斷該存儲位置是否已經鎖定。若此存儲位置根據任何先前的讀出鎖定請求而被鎖定,該存儲鎖定請求將失效,并將存入讀出鎖定失效隊列120d。若解鎖或者142表示該地址未鎖定,SRAM接口140就將用該存儲器指針的地址對存儲器16b進行常規(guī)的SRAM地址讀/寫請求。命令控制器及地址發(fā)生器138也會將該鎖定輸入鎖定查找器件142,以便后續(xù)讀出鎖定請求將發(fā)現該存儲位置被鎖定。鎖定需要結束后通過對程序中微控制指令的運作來使存儲位置解鎖。通過對CAM中有效位清零將該位置解鎖。解鎖后,讀出鎖定失效隊列120d變成最高優(yōu)先級隊列,給丟失的全部排隊的讀出鎖定一次機會發(fā)出一存儲器鎖定請求。
如圖5A所示,示出的是沒有有效存儲器優(yōu)化和具有有效存儲器優(yōu)化的靜態(tài)隨機存取存儲器的典型時序??梢灾?,分組讀寫改善消除死周期的周期時間。
參照圖6,示出的是微引擎22和FBUS接口邏輯(FBI)之間的通信。網絡應用中的FBUS接口28可對來自FBUS18的來向數據分組進行首部處理。FBUS接口28所進行的一項關鍵功能是對數據分組首部的提取和對SRAM中可微編程源/宿/協(xié)議散列查找。若該散列不能成功分辨,數據分組首部就提升至核心處理器28用于更為高級的處理。
FBI 28包含發(fā)送FIFO 182、接收FIFO 183、散列單元188以及FBI控制及狀態(tài)寄存器189。這4個單元通過對微引擎中與傳送寄存器78、80連接的SRAM總線28的時間復用存取與微引擎22通信。也就是說,全部對微引擎的收發(fā)通信都通過傳送寄存器78、80。FBUS接口28包括一用于在SRAM不用SRAM數據總線(部分總線38)的時間周期期間將數據推入傳送寄存器的推狀態(tài)機200以及一用于從相應微引擎中的傳送寄存器當中讀取數據的拉狀態(tài)機202。
散列單元包括一對FIFO 18a、188b。該散列單元判定FBI 28收到一FBI散列請求。散列單元188從進行調用的微引擎22當中取得散列鍵。讀取該鍵并散列后,將索引號送回進行調用的微引擎22。在單個FBI散列請求下,進行多達3次散列??偩€34和38均為單向SDRAM推/拉數據總線以及S總線推/拉數據總線。上述總線每一條需要對適當微引擎22的傳送寄存器提供讀/寫控制的控制信號。
傳送寄存器通常要求保護其環(huán)境控制以保證讀出的正確性。具體來說,若線程1用寫傳送寄存器對SDRAM 16a提供數據,線程1必須等到SDRAM控制器16a返回的信號表明該寄存器已提升并可重新使用才重寫此寄存器。每次寫均不需要表明已經完成該功能的目的地所返回的信號,其原因在于若該線程用多個請求對該目的地的相同命令隊列寫入,該命令隊列內確保完成命令,因而僅最后的命令需要將信號傳回該線程。但若該線程采用多個命令隊列(排序和讀出),這些命令請求就必需分解成獨立的環(huán)境任務,以便通過環(huán)境對換保持排序。本節(jié)開頭提出的特例涉及對FBUS狀態(tài)信息采用FBI至傳送寄存器的非請求型推(PUSH)的某類操作。為了保護傳送寄存器的讀/寫判定,FBI當設定這些專用FBI推操作時提供一專用的推保護信號。
采用FBI非請求型推方法的任何微引擎22必須在存取傳送寄存器同意的FBUS接口/微引擎前測試該保護標志。若該標志并非肯定,該微引擎便可存取傳送寄存器。若該標志肯定,則存取寄存器前環(huán)境應等待N周期。根據所推的傳送寄存器個數加上前端保護窗,確定先驗的此計數?;舅枷胧牵⒁姹仨殰y試此標志,然后以連續(xù)周期快速將希望從所讀傳送寄存器讀出的數據移到GPR,因而推引擎不與微引擎讀出沖突。
其他實施例應理解,雖然結合詳細說明描述了本發(fā)明,但上述描述用于說明,并非限定本發(fā)明范圍,該范圍由所附權利要求的范圍限定。其他方而、優(yōu)點和修改均在以下權利要求書范圍內。
權利要求
1.一種隨機存取存儲器用控制器,其特征在于,包括一保持來自多個微控制功能單元的存儲器指針的地址和命令隊列;一保持來自計算機總線的存儲器指針的第1讀/寫隊列;一保持來自核心處理器的存儲器指針的第2讀/寫隊列;一包含仲裁器的控制邏輯,該仲裁器檢測每一隊列的滿員程度和待處理存儲器指針的狀態(tài),以便從其中一個隊列選擇一存儲器指針。
2.如權利要求1所述的控制器,其特征在于,控制邏輯進一步根據優(yōu)先級業(yè)務控制寄存器中存儲的可編程值選擇其中一個隊列以提供下一存儲器指針。
3.如權利要求1所述的控制器,其特征在于,地址和命令隊列包括保持來自高優(yōu)先級任務的存儲器指針的高優(yōu)先級隊列。
4.如權利要求1所述的控制器,其特征在于,地址和命令隊列包括偶數組隊列;奇數組隊列;其中,微引擎將存儲器指針分類為奇數組指針和偶數組指針。
5.如權利要求1所述的控制器,其特征在于,地址和命令隊列包括一排序隊列,而且控制器檢查經過優(yōu)化的存儲器指針位,若設定該位,便將進入的指針請求分類為偶數組隊列或奇數組隊列。
6.如權利要求5所述的控制器,其特征在于,地址和命令隊列包括一排序隊列,而且若存儲器指針請求未設定存儲器優(yōu)化位,便將該存儲器指針存入該排序隊列。
7.如權利要求1所述的控制器,其特征在于,地址和命令隊列在單一存儲器結構中實施,并且包括一保存存儲器指針的排序隊列;一保存存儲器指針的偶數組隊列一保存存儲器指針的奇數組隊列;一保存存儲器指針的高優(yōu)先級隊列,而且該存儲器結構分區(qū)為4個不同隊列區(qū),每區(qū)具有其本身的首部及尾部指針。
8.如權利要求7所述的控制器,其特征在于,地址和命令隊列進一步包括一插入隊列控制邏輯和移出隊列仲裁邏輯,對隊列當中存儲器指針的插入和移出進行控制。
9.如權利要求1所述的控制器,其特征在于,進一步包括一命令控制器和地址生成器,響應來自從其中一個所述隊列當中選定的存儲器指針的地址,生成地址和命令以控制存儲器接口。
10.如權利要求9所述的控制器,其特征在于,進一步包括一存儲器接口,響應所生成的地址和命令以產生存儲器控制信號。
11.如權利要求1所述的控制器,其特征在于,該控制邏輯響應一鏈接位,該鏈接位設定時,允許對鄰接的存儲器指針進行專門處理。
12.如權利要求1所述的控制器,其特征在于,鏈接位的肯定將控制仲裁器,使該仲裁器因表明微引擎發(fā)出過鏈接請求的鏈接位設定而選擇先前請求該總線的功能單元。
13.如權利要求1所述的控制器,其特征在于,控制邏輯響應一經過優(yōu)化的存儲位和鏈接位,而且鏈接位的肯定當經過優(yōu)化的存儲位也設定時,控制仲裁器以保存來自當前隊列的存儲器指針。
14.如權利要求1所述的控制器,其特征在于,仲裁器具有一對所鏈接的微引擎提供存儲器指針的仲裁策略。
15.如權利要求14所述的控制器,其特征在于,仲裁器具有一為鏈接請求提供服務直到鏈接位清零為止的仲裁策略。
16.如權利要求1所述的控制器,其特征在于,仲裁器具有一通過對所鏈接的微引擎檢查存儲器指針請求來起動的仲裁策略。
17.如權利要求16所述的控制器,其特征在于,該仲裁策略使所鏈接的存儲器請求能夠得到完全的服務。
18.如權利要求16所述的控制器,其特征在于,當鏈接位設定時,仲裁引擎便對該同一隊列再次提供服務,直到該鏈接位清零為止。
全文摘要
說明一種并行、基于硬件的多線程處理器。該處理器包括一協(xié)調各系統(tǒng)功能的通用處理器和支持多硬件線程的多個微引擎。該處理器還包括具有第1存儲控制器和第2存儲控制器的存儲控制系統(tǒng),前者存儲控制器根據存儲器指針是指向偶數存儲組還是指向奇數存儲組對存儲器指針進行分類,后者存儲器根據存儲器指針是讀指針還是寫指針對存儲器指針進行優(yōu)化。
文檔編號G06F13/16GK1387644SQ00815245
公開日2002年12月25日 申請日期2000年8月18日 優(yōu)先權日1999年8月31日
發(fā)明者M·J·阿迪萊塔, W·維勒, G·沃爾里奇, B·伯瑞斯 申請人:英特爾公司