專利名稱:數(shù)據(jù)傳送機制的制作方法
背景典型的計算機處理系統(tǒng)具有使不同的組件之間能夠互相通信的總線。這些組件之間的總線通信允許公共地通過一條數(shù)據(jù)通路的數(shù)據(jù)傳送。一般說來,該數(shù)據(jù)通路使一個數(shù)據(jù)處理代理,例如,中央處理器(CPU)或處理器,與像硬磁盤驅(qū)動器、設(shè)備適配器、等等這樣的其它的組件互連。
附圖的簡要說明
圖1是一個數(shù)據(jù)處理系統(tǒng)的框圖。
圖2是圖1中的數(shù)據(jù)處理系統(tǒng)的詳細框圖。
圖3是圖1中的數(shù)據(jù)處理系統(tǒng)中的讀出過程的流程圖。
圖4是圖1中的數(shù)據(jù)處理系統(tǒng)中的寫入過程的流程圖。
圖5是圖1中的數(shù)據(jù)處理系統(tǒng)的推入操作的流程圖。
圖6是圖1中的數(shù)據(jù)處理系統(tǒng)的拉出操作的流程圖。
說明結(jié)構(gòu)參考圖1,數(shù)據(jù)處理系統(tǒng)10包括一個并行的、基于硬件的多線程網(wǎng)絡(luò)處理器12?;谟布亩嗑€程網(wǎng)絡(luò)處理器12與存儲系統(tǒng)或存儲資源14耦合。存儲系統(tǒng)14包括動態(tài)隨機存儲器(DRAM)14a和靜態(tài)隨機存儲器14b(SRAM)。數(shù)據(jù)處理系統(tǒng)10對于可分成并行的子任務(wù)或函數(shù)的任務(wù)特別有用。尤其是,基于硬件的多線程網(wǎng)絡(luò)處理器12對于基于帶寬而不是基于等待時間的任務(wù)特別有用?;谟布亩嗑€程網(wǎng)絡(luò)處理器12具有若干微引擎或編程引擎16,它們中的每一個都具有若干硬件控制的線程,其中,這些線程同時有效并且獨立地對一個特定的任務(wù)起作用。
每一個編程引擎16在與該程序計數(shù)器相關(guān)的硬件和位置中提供程序計數(shù)器。有效地,相應(yīng)的上下文或線程能夠在每一個編程引擎16上同時有效,雖然在任何一個時間實際上只有一個在運行。
在這個例子中,八個編程引擎16在圖1被示出了。每一個編程引擎16具有處理八個硬件線程或上下文的能力。這八個編程引擎16合包括存儲資源14和總線接口的共享的資源一起運行?;谟布亩嗑€程網(wǎng)絡(luò)處理器12包括一個動態(tài)隨機存儲器(DRAM)控制器18a和一個靜態(tài)隨機存儲器(SRAM)控制器18b。DRAM存儲器14a和DRAM控制器18a通常用于處理大量數(shù)據(jù),例如,處理來自網(wǎng)絡(luò)數(shù)據(jù)包的有效負載的處理。SRAM存儲器14b和SRAM控制器18b被用在用于低等待時間、快速訪問的任務(wù)的網(wǎng)絡(luò)實現(xiàn)中,例如訪問查找表、用于核心處理器20的存儲器,等等。
推入總線26a-26b和拉出總線28a-28b被用來在編程引擎16與DRAM存儲器14a和SRAM存儲器14b之間傳送數(shù)據(jù)。特別地,推入總線26a-26b是單向總線,它將來自存儲資源14的數(shù)據(jù)傳送到編程引擎16,而拉出總線28a-28b將來自編程引擎16的數(shù)據(jù)傳送到存儲資源14。
這八個編程引擎16根據(jù)數(shù)據(jù)的特性訪問DRAM存儲器14a或是SRAM存儲器14b。因此,低等待時間、低帶寬的數(shù)據(jù)存儲在SRAM存儲器14b中并從其中讀取,而那些等待時間對它們不是那么重要的高帶寬數(shù)據(jù),存儲在DRAM存儲器14a中并從其中讀取。編程引擎16可以對DRAM控制器18a或是SRAM控制器18b執(zhí)行存儲器訪問指令。
基于硬件的多線程網(wǎng)絡(luò)處理器12還包括一個用于對基于硬件的多線程網(wǎng)絡(luò)處理器12的其它資源載入微指令控制的核心處理器20,。在這個例子中,核心處理器20是基于XScaleTM的結(jié)構(gòu)。
核心處理器20執(zhí)行通用計算機類型的函數(shù),例如處理協(xié)議、異常事件以及對數(shù)據(jù)包處理的額外支持,其中,在數(shù)據(jù)包處理中,編程引擎16把數(shù)據(jù)包當作像是在邊界條件中那樣的更復(fù)雜的數(shù)據(jù)處理。核心處理器20具有一個操作系統(tǒng)(未示出)。通過操作系統(tǒng)(OS),核心處理器20可以調(diào)用函數(shù)來對編程引擎16進行操作。核心處理器20可以使用任何支持的OS,特別是實時OS。對于作為XScaleTM的結(jié)構(gòu)來實現(xiàn)的核心處理器20來說,可以使用像Microsoft NT實時、VXWorks和μCOS,或能在因特網(wǎng)上使用的免費軟件OS這樣的操作系統(tǒng)。
硬件多線程的優(yōu)點可以通過SRAM或DRAM存儲器的訪問來說明。作為一個例子,來自編程引擎16之一的,一個通過上下文(例如,Thread_0)來請求的SRAM訪問,會使該SRAM控制器18b啟動一個對SRAM存儲器14b的訪問。SRAM控制器18b訪問SRAM存儲器14b,讀取來自SRAM存儲器14b的數(shù)據(jù),并將數(shù)據(jù)返回給請求的編程引擎16。
在SRAM的訪問過程中,如果編程引擎16中的一個僅有單獨的一個可以操作的線程,那么編程引擎便會處于睡眠狀態(tài)直到數(shù)據(jù)從SRAM存儲器14b返回。
通過使用在編程引擎16中間的每一個之內(nèi)的硬件關(guān)聯(lián)對換,該硬件關(guān)聯(lián)對換使得在那同一個編程引擎中,其它具有唯一程序計數(shù)器的上下文能夠運行。因此,在第一個線程,Thread_0,在等待要返回所讀取的數(shù)據(jù)時,另一個線程,例如,Thread_1可以運行。在運行過程中,Thread_1可以訪問DRAM存儲器14a。在Thread_1對DRAM單元進行操作,并且Thread_0正在對SRAM單元進行操作的時候,一個新的線程,例如,Thread_2現(xiàn)在可以在編程引擎16中進行操作。Thread_2可以操作某一數(shù)量的時間,直到它需要訪問存儲器或是執(zhí)行一些其它長等待時間的操作,例如對總線接口進行訪問。因此,同時地,處理器12可以具有總線操作、全部由編程引擎16中的一個完成或?qū)ζ溥M行操作的SRAM操作以及DRAM操作,以及具有一個以上的可以用來處理更多工作的線程。
硬件關(guān)聯(lián)對換也使任務(wù)的完成同步。例如,兩個線程可以命中共享的存儲器資源,例如,SRAM存儲器14b。分開的功能裝置中的每一個,例如,SRAM控制器18b,以及DRAM控制器18a,當他們完成一個來自編程引擎線程或上下文的請求的任務(wù)的時候,報告返回一個通知操作完成的標志。當編程引擎16接收到這個標志的時候,編程引擎16可以決定啟動哪一個線程。
一個用于該基于硬件的多線程處理器12的應(yīng)用的例子是作為網(wǎng)絡(luò)處理器。作為網(wǎng)絡(luò)處理器,該基于硬件的多線程處理器12連接到像媒體訪問控制器(MAC)設(shè)備,例如,10/100BaseT Octal MAC13a或吉比特以太網(wǎng)(未示出)這樣的網(wǎng)絡(luò)設(shè)備??傊鳛榫W(wǎng)絡(luò)處理器,基于硬件的多線程處理器12可以連接到任何類型的通信設(shè)備或是接收或發(fā)送大量數(shù)據(jù)的接口。在網(wǎng)絡(luò)應(yīng)用中運行的計算機處理系統(tǒng)10可以接收網(wǎng)絡(luò)數(shù)據(jù)包并以并行方式處理它們。
編程引擎上下文如上所述,編程引擎16中的每一個都支持八個上下文的多線程運行。這允許一個線程可以正好在另一個線程發(fā)出了存儲器訪問,并且在進行更多工作之前必須等待直到訪問結(jié)束之后開始運行。多線程運行是達到編程引擎16的高效率的硬件運行的關(guān)鍵,因為存儲器的等待時間非常重要。多線程運行允許編程引擎16通過執(zhí)行跨越幾個線程的有效的獨立的工作來隱藏存儲器的等待時間。
這編程引擎16的八個上下文中的每一個,為了允許高效率的上下文對換,具有它自己的寄存器組、程序計數(shù)器、以及上下文具體的局部寄存器。具有一個副本的每一個上下文消除了為每一個上下文對換,將上下文具體的信息傳送到共享存儲器和編程引擎并從它們中傳送上下文具體的信息的需要。快速上下文對換允許上下文執(zhí)行計算當其它上下文等待輸出輸入(I/O),通常是,外部存儲器訪問結(jié)束或是等待來自其它上下文或硬件裝置的信號時執(zhí)行計算。
例如,編程引擎16通過提供八個程序計數(shù)器和八個上下文相關(guān)的寄存器組來運行八個上下文。有許多不同類型的上下文相關(guān)寄存器,例如通用寄存器(GPRs)、交互編程代理寄存器、靜態(tài)隨機存儲器(SRAM)輸入傳送寄存器、動態(tài)隨機存儲器(DRAM)輸入傳送寄存器、SRAM輸出傳送寄存器、DRAM輸出傳送寄存器。也可以使用局部存儲器寄存器。
例如,GPRs被用于通用編程用途。只能在程序控制下讀寫GPRs。該GPRs,當在指令中用作一個信號源的時候,提供操作數(shù)給一個運行數(shù)據(jù)通路(未示出)。當GPRs在指令中用作一個目標的時候,用運行邏輯單元數(shù)據(jù)通路的結(jié)果寫入它。如前所述,編程引擎16也包括IO傳送寄存器。IO傳送寄存器被用于傳送數(shù)據(jù)到編程引擎16并從中讀取以及其外部的位置,例如DRAM存儲器14a和SRAM存儲器14b等,總線的結(jié)構(gòu)參考圖2,基于硬件的多線程處理器12被非常詳細地示出了。DRAM存儲器14a和SRAM存儲器14b分別連接到DRAM存儲器控制器18a和SRAM存儲器控制器18b。DRAM存儲器控制器18a被連接到與編程引擎16a連在一起的拉出總線仲裁器30a和推入總線仲裁器32a。SRAM存儲器控制器18b被連接到與編程引擎16b連在一起的拉出總線仲裁器30b和推入總線仲裁器32b??偩€26a-26b和28a-28b組成了用于在編程引擎16a-16b與DRAM存儲器14a和SRAM存儲器14b之間傳送數(shù)據(jù)的主總線。來自編程引擎16a-16b的任何線程都可以訪問DRAM控制器18a和SRAM控制器18b。
特別地,推入總線26a-26b具有多個像存儲器控制器通道和內(nèi)部讀寄存器(未示出)這樣的存儲器資源,它們經(jīng)由推入仲裁器32a-32b仲裁來使用推入總線26a-26b。任何推入數(shù)據(jù)傳送的目標(例如,編程引擎16)通過對隨推入數(shù)據(jù)一起被驅(qū)動或發(fā)送的Push_ID進行解碼,來識別該數(shù)據(jù)是什么時候被“推入”到它里面的。該拉出總線28a-28b也具有為了使用拉出總線28a-28b而進行仲裁的多個目標(例如,將數(shù)據(jù)寫入不同的存儲器控制器通道或是可寫入的內(nèi)部寄存器)。該拉出總線28a-28b具有一個Pull_ID,例如是在拉出數(shù)據(jù)兩周期之前被驅(qū)動或發(fā)送的。
數(shù)據(jù)函數(shù)分布在編程引擎16之中。DRAM存儲器14a和SRAM存儲器14b的連通是通過命令請求來實現(xiàn)的。一個命令請求可以是一個存儲器請求。例如,命令請求可以將數(shù)據(jù)從位于編程引擎16a中的寄存器傳送到一個共享資源中,例如DRAM存儲器14a、SRAM存儲器14b。命令或請求被發(fā)送到功能單元和共享資源中的每一個。像I/O命令(例如,SRAM的讀出、SRAM的寫入、DRAM的讀出、DRAM的寫入、載入來自接收存儲緩沖器的數(shù)據(jù)、將數(shù)據(jù)傳送到發(fā)送存儲緩沖器)這樣的命令指定在編程引擎16中的上下文相關(guān)源或是目標寄存器。
總之,編程引擎和存儲器資源之間的數(shù)據(jù)傳送指定了用于經(jīng)由推入總線來將數(shù)據(jù)推入到一個數(shù)據(jù)處理代理的存儲器資源,并指定了用于經(jīng)由拉出總線來接收來自該數(shù)據(jù)處理代理的數(shù)據(jù)的存儲器資源,其中,該推入總線具有若干仲裁其使用的信號源,該拉出總線具有若干仲裁其使用的目標。
讀出過程參考圖3,數(shù)據(jù)讀出過程50是由推入總線26a-26b在編程引擎16的讀出階段期間來執(zhí)行的。作為讀出過程50的一部分,編程引擎執(zhí)行(52)一個上下文。編程引擎16發(fā)出(54)一個讀出命令到存儲器控制器18a-18b,而存儲器控制器18a-18b處理(56)關(guān)于存儲器資源中的一個的請求,該存儲器資源也就是DRAM存儲器14a或SRAM存儲器14b。在讀出指令發(fā)出后(54),編程引擎16就檢查(58)該讀出命令所讀出數(shù)據(jù)是否需要來繼續(xù)該程序上下文。如果需要該讀出數(shù)據(jù)來繼續(xù)該程序上下文或線程,就換出該上下文(60)。編程引擎16檢查(62)以保證存儲器控制器18a-18b已經(jīng)完成了該請求。當存儲器控制器已經(jīng)完成了該請求的時候,將該上下文換回進來(64)。
如果不需要該請求來繼續(xù)該上下文的執(zhí)行,編程引擎16檢查(68)存儲器控制器18a-18b是否已經(jīng)完成了該請求。如果存儲器控制器18a-18b還沒有完成該請求,回送發(fā)生并且進行進一步的檢查(58)。如果存儲器控制器18a-18b已經(jīng)完成了該請求,當讀取數(shù)據(jù)已經(jīng)從存儲器資源中獲得的時候,存儲器控制器18a-18b將該數(shù)據(jù)推入(70)到由該讀出命令指定的上下文相關(guān)的輸入傳送寄存器中。存儲器控制器在編程引擎16中設(shè)置一個使發(fā)出該讀出命令的上下文變得有效的信號。編程引擎16讀出(72)在輸入傳送寄存器中的被請求數(shù)據(jù),并繼續(xù)(74)該上下文的執(zhí)行。
寫入過程參考圖4,數(shù)據(jù)寫入過程80是由拉出總線28a-28b在編程引擎16的寫入階段期間來執(zhí)行的。在寫入過程80期間,編程引擎執(zhí)行(82)一個上下文。編程引擎16a將該數(shù)據(jù)載入(84)到輸出傳送寄存器中并發(fā)出(86)一個寫入命令或請求到存儲器控制器18a-18b。將輸出傳送寄存器設(shè)置(88)為只讀狀態(tài)。在將輸出傳送寄存器設(shè)置(88)為只讀狀態(tài)后,編程引擎16檢查來自編程引擎16的寫入命令是否需要該請求來繼續(xù)該程序上下文或線程。如果是,就換出(92)該上下文。
如果不需要該請求來繼續(xù)該上下文或線程,存儲器控制器18a-18b從輸出傳送寄存器中提取或拉出(94)數(shù)據(jù),并用信號來通知(96)編程引擎16對輸出傳送寄存器進行解鎖。然后編程引擎16檢查(98)該上下文是否被換出了。如果是被換出了,將該上下文換回來,而如果不是這樣的話,編程引擎16繼續(xù)(102)該上下文的執(zhí)行。從而,該發(fā)出信號的上下文可以再使用輸出傳送寄存器。該信號也可以用來使該上下文變得有效,如果它在寫入命令中被換出了。
數(shù)據(jù)推入操作參考圖5,發(fā)生在計算機處理系統(tǒng)的推入總線26a-26b中的數(shù)據(jù)推入操作110,被以不同處理周期的方式示出了,例如周期0至周期5。每一個目標,例如,DRAM存儲器14a或SRAM存儲器14b,發(fā)送或驅(qū)動(112)一個Target_#_Push_ID到推入仲裁器中,在這里#表示不同上下文的編號,像上下文#0至上下文#7這樣。該Target_#_Push_ID是從該讀出命令和一個關(guān)于它要推入到推入仲裁器32a-32b中的信息的數(shù)據(jù)差錯位(例如,在Push_ID中,跟在目標后,表示信號源地址遞增的編號)中得到的。至于Push_ID,每一個字母表示一個對特定目標的推入操作。目標的Push_ID“無”表示Push_ID為空值。目標也將該Target_#_Push_Data發(fā)送到推入仲裁器。
Push_ID和Push_Data被登記(114)并入隊(116)到推入仲裁器32a-32b中的先進先出(FIFOs)中,除非確定了確定Target_#_Push_Q_Full信號。這個信號表示,在推入仲裁器32a-32b中,用于那個特定目標的Push_ID和Push_Data FIFOs差不多滿了。載這種情況中,推入仲裁器32a-32b不曾登記一個Push_ID或Push_Data,并且該目標不改變它。這個通道將由推入仲裁器32a-32b占有的Push_ID和Push_Data變換為用于下一個字傳送的那些,或空值如果它沒有其它有效的傳送。由于在Push_Q_Full信號中的等待時間,推入仲裁器32a-32b必須適應(yīng)每個目標正在處理的Push_ID和Push_Data的編號的最壞情況。
推入仲裁器32a-32b可以在每一個周期在所有有效Push_IDs之間進行仲裁(118)并發(fā)送中間Push_ID。仲裁策略可以是循環(huán)的,一個優(yōu)先方案或甚至是可編程的。若干從推入仲裁器32a-32b到目標的數(shù)據(jù)推入并不保證在連續(xù)的周期內(nèi)。推入仲裁器32a-32b發(fā)送(12)中間Push_Data,而Push_ID被發(fā)送(120)到該目標。是由該目標來更新每一個它為每一個它想要推入的數(shù)據(jù)字發(fā)出的Push_ID的目的地址。Push_Data被發(fā)送(122)到該目標。在該目標,從目標得到Push_ID到目標得到Push_Data的時間是通過一個處理周期來調(diào)節(jié)的。
數(shù)據(jù)拉出操作參考圖6,發(fā)生在計算機處理系統(tǒng)的拉出總線28a-28b中的數(shù)據(jù)拉出操作130,被以不同處理周期的方式示出了,(例如周期0至周期7)。每一個目標,例如,DRAM存儲器14a或SRAM存儲器14b,將關(guān)于它要拉出的信息的完整的Target_#_Pull_ID(例如,在Pull_ID中,跟在目標后,表示信號源地址遞增的編號)和長度(從寫命令中得到的)發(fā)送或驅(qū)動(132)到目標。對于Pull_ID,每一個字母表示一個來自例如存儲資源14這樣的特定信號源的拉出操作。信號源的Pull_ID“無”表示Pull_ID為空值。當該目標確定它的Pull_ID的時候,它必須具有供拉出數(shù)據(jù)用的緩沖空間。
Pull_ID被登記(134)并入隊(136)到拉出仲裁器30a-30b中的先進先出(FIFO)中,除非確定了Target#Pull_Q_Full信號。這個信號表示,在拉出仲裁器30a-30b中,用于那個特定目標的Pull_ID的隊差不多滿了。載這種情況中,拉出仲裁器30a-30b不曾登記一個Pull_ID,并且該目標不改變它。這個目標將由拉出仲裁器30a-30b占有的Pull_ID,變換為用于下一個字符組傳送的那些,或空值如果它沒有其它有效的Pull_ID。由于在Pull_Q_Full信號中的等待時間,拉出仲裁器30a-30b必須適應(yīng)每個目標正在處理的Pull_ID的編號的最壞情況。
拉出仲裁器30a-30b可以仲裁(138)當前有效的Pull_ID中的每個周期。仲裁策略可以是循環(huán)的,一個優(yōu)先方案或甚至是可編程的。
拉出仲裁器30a-30b發(fā)送(140)選中的Pull_ID到該信號源。從拉出仲裁器30a-30b發(fā)送Pull_ID到該信號源提供數(shù)據(jù)的時間被調(diào)節(jié)為在三個處理周期內(nèi)。拉出仲裁器30a-30b為每一個新的數(shù)據(jù)條目更新該Pull_ID的“信號地址”字段。該Pull_Data被從該信號源拉出(142)并被發(fā)送到目標。
拉出仲裁器30a-30b也確定(146)一個關(guān)于選中的目標的Target_#_Take_Data。確定該信號是為了在每一個周期一個有效數(shù)據(jù)字被發(fā)送到目標。然而,該確定并不保證是在連續(xù)的處理周期中。拉出仲裁器30a-30b每次僅確定至多一個Target_#_Take_Data信號。
對于在具有不同總線寬度的目標和主導(dǎo)裝置之間的傳送,需要拉出仲裁器30a-30b來進行調(diào)整。例如,SRAM控制器18b可以每個處理周期接收八個字節(jié)的數(shù)據(jù),但是編程引擎16可以每個周期僅輸送四個字節(jié)。假若這樣,拉出仲裁器30a-30b可以用來每個處理周期接收四個字節(jié),將它們合并組裝為八個字節(jié),并將該數(shù)據(jù)發(fā)送到DRAM控制器18a。
其它實施方式可以理解,只要已經(jīng)結(jié)合其中詳細的說明來說明了上面的例子,上述的描述是用來說明而不是限制發(fā)明的范圍,該發(fā)明的范圍由附加的權(quán)利要求的范圍來規(guī)定。其它的方面、優(yōu)點、以及修改是在接下來的權(quán)利要求的范圍內(nèi)的。
權(quán)利要求
1.一種用于在處理代理和存儲資源之間傳送數(shù)據(jù)的方法包括指定這個存儲資源用于使用推入總線將數(shù)據(jù)推入處理代理中,其中,該推入總線具有若干仲裁推入總線的使用的源;以及指定這個存儲資源用于使用拉出總線接收來自處理代理的數(shù)據(jù),其中,該拉出總線具有若干仲裁拉出總線的使用的目標。
2.權(quán)利要求1中的方法,其中,傳送包括在程序代理上建立若干上下文并維持程序計數(shù)器和上下文相關(guān)寄存器。
3.權(quán)利要求2中的方法,其中,在讀出階段,程序代理執(zhí)行上下文并發(fā)出讀出命令到存儲器控制器。
4.權(quán)利要求3中的方法,其中,存儲器控制器處理要發(fā)送到存儲器資源的讀出命令。
5.權(quán)利要求4中的方法,其中,如果需要讀出數(shù)據(jù)來繼續(xù)上下文的執(zhí)行,就換出上下文。
6.權(quán)利要求5中的方法,其中,在存儲器控制器已完成了讀出命令的處理之后,存儲器控制器將數(shù)據(jù)推入到該程序代理的輸入傳送寄存器。
7.權(quán)利要求6中的方法,其中,在數(shù)據(jù)已經(jīng)被推入之后,該程序代理讀出在輸入傳送寄存器中的數(shù)據(jù),并且該程序代理繼續(xù)上下文的執(zhí)行。
8.權(quán)利要求2中的方法,其中,在寫入階段中,該程序代理執(zhí)行一上下文并將數(shù)據(jù)載入程序代理的輸出傳送寄存器。
9.權(quán)利要求8中的方法,其中,程序代理發(fā)出一寫入命令到存儲器控制器,并且輸出傳送寄存器被設(shè)置為只讀狀態(tài)。
10.權(quán)利要求9中的方法,其中,如果需要寫入命令來繼續(xù)上下文的執(zhí)行,就換出上下文。
11.權(quán)利要求10中的方法,其中,存儲器控制器推入來自輸出傳送寄存器的數(shù)據(jù),且存儲器控制器發(fā)送一信號到程序代理來對輸出傳送寄存器進行解鎖。
12.權(quán)利要求11中的方法,其中,如果在輸出傳送寄存器已經(jīng)被解鎖之后,該上下文已經(jīng)被換出,那么就將該上下文換回進去,并且程序代理繼續(xù)該上下文的執(zhí)行。
13.一種系統(tǒng)包括存儲器資源;配置用來在處理代理和存儲器資源之間傳送數(shù)據(jù)的處理代理;用于將數(shù)據(jù)推入處理代理中的推入總線,其具有若干仲裁推入總線的使用的源;用于接收來自處理代理的數(shù)據(jù)的拉出總線,其具有若干仲裁該拉出總線的使用的目標;若干執(zhí)行多個查找處理代理的資源的上下文的微引擎。
14.權(quán)利要求13中的系統(tǒng)進一步包括一用于從存儲器資源到處理代理的數(shù)據(jù)傳送的讀出階段,其中該傳送是單向的。
15.權(quán)利要求13中的系統(tǒng)進一步包括一用于從處理代理到存儲器資源的數(shù)據(jù)的傳送的寫入階段,其中該傳送是單向的。
16.權(quán)利要求13中的系統(tǒng)進一步包括若干程序計數(shù)器和若干上下文相關(guān)寄存器。
17.權(quán)利要求16中的系統(tǒng),其中,上下文相關(guān)寄存器是從包括通用寄存器、交互編程代理寄存器、靜態(tài)隨機訪問存儲器(SRAM)輸入傳送寄存器、動態(tài)隨機訪問存儲器(DRAM)輸入傳送寄存器、SRAM輸出傳送寄存器、DRAM輸出傳送寄存器以及局部存儲器寄存器的組中選擇出來的。
18.權(quán)利要求17中的系統(tǒng),其中,程序代理被配置用來執(zhí)行上下文,并發(fā)出讀出命令到存儲器控制器。
19.權(quán)利要求18中的系統(tǒng),其中,存儲器控制器被配置用來處理要發(fā)送到存儲器資源的讀出命令。
20.權(quán)利要求19中的系統(tǒng),其中,程序代理被配置成如果需要讀出命令來繼續(xù)上下文的執(zhí)行,則將上下文換出來。
21.權(quán)利要求20中的系統(tǒng),其中,在處理了讀出命令之后,該存儲器控制器被配置用來將數(shù)據(jù)推入到程序代理的輸入傳送寄存器,而該程序代理被配置用來讀出輸入傳送寄存器中的數(shù)據(jù)并繼續(xù)上下文的執(zhí)行。
22.權(quán)利要求15中的系統(tǒng),其中,程序代理被配置用來執(zhí)行上下文并將數(shù)據(jù)載入到程序代理的一個輸出傳送寄存器中。
23.權(quán)利要求22中的系統(tǒng),其中,程序代理被配置用來發(fā)出寫入命令到存儲器控制器,且其中,該輸出傳送寄存器被設(shè)置為只讀狀態(tài)。
24.權(quán)利要求23中的系統(tǒng),其中,程序代理被配置成如果需要寫入命令來繼續(xù)上下文的執(zhí)行,則換出上下文。
25.權(quán)利要求24中的系統(tǒng),其中,存儲器控制器被配置用來推入來自輸出傳送寄存器的數(shù)據(jù)并發(fā)送信號到程序代理來對輸出傳送寄存器進行解鎖。
26.一種駐留在計算機可讀介質(zhì)上的計算機程序產(chǎn)品,用于使并行處理器執(zhí)行函數(shù),包括指令使得處理器指定存儲資源用于使用推入總線將數(shù)據(jù)推入處理代理,其中,該推入總線具有若干仲裁該推入總線的使用的源;以及指定存儲資源用于使用拉出總線接收來自處理代理的數(shù)據(jù),其中,該拉出總線具有若干仲裁該拉出總線的使用的目標。
27.權(quán)利要求26中的計算機程序產(chǎn)品進一步包括使處理器在程序代理上建立若干上下文并維持程序計數(shù)器和上下文相關(guān)寄存器的指令。
28.權(quán)利要求26中的計算機程序產(chǎn)品,其中,在讀出階段,程序代理執(zhí)行上下文并發(fā)出讀出命令到存儲器控制器。
29.權(quán)利要求26中的計算機程序產(chǎn)品,其中,存儲器控制器處理要發(fā)送到存儲器資源的讀出命令,并且如果需要讀出數(shù)據(jù)來繼續(xù)上下文的執(zhí)行,就換出上下文。
全文摘要
一種用于在程序主體和存儲資源之間傳送數(shù)據(jù)的方法。該方法包括在一個數(shù)據(jù)處理主體和一個存儲資源之間傳送數(shù)據(jù),指定這個存儲資源用于經(jīng)由一根推入總線將數(shù)據(jù)推入該數(shù)據(jù)處理代理中,并指定這個存儲資源用于經(jīng)由一根拉出總線接收來自該數(shù)據(jù)處理代理的數(shù)據(jù),其中,該推入總線具有若干仲裁其使用的信號源,該拉出總線具有若干仲裁其使用的目標。
文檔編號G06F13/16GK101027634SQ03802115
公開日2007年8月29日 申請日期2003年1月16日 優(yōu)先權(quán)日2002年1月25日
發(fā)明者M·阿迪爾塔, D·伯恩斯坦, M·羅森布魯斯, G·沃里其 申請人:英特爾公司