專利名稱:管理數(shù)據(jù)移動(dòng)的方法和使用該方法的細(xì)胞寬帶引擎處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種細(xì)胞寬帶引擎處理器,尤其涉及一種在細(xì)胞寬帶引擎處 理器中管理數(shù)據(jù)移動(dòng)的方法和使用該方法的細(xì)胞寬帶引擎處理器。
背景技術(shù):
細(xì)胞寬帶引擎(以下簡(jiǎn)稱為"Cel舊E")處理器是利用并行處理的一類微 處理器。通常, 一個(gè)細(xì)胞寬帶引擎處理器的基本配置包括"強(qiáng)大處理器元件" (以下簡(jiǎn)稱為"PPE")、 8個(gè)"協(xié)處理器元件"(以下簡(jiǎn)稱為"SPE")、存儲(chǔ)流 控制器(以下筒稱為"MFC")、內(nèi)部中斷控制器(以下簡(jiǎn)稱為"IIC")以及 主存。Cd舊E處理器的計(jì)算部件是PPE和SPE。 Cel舊E處理器的構(gòu)成部分采 用高速總線"單元互連總線"(以下筒稱為"EIB,,)連接在一起。8個(gè)SPE兩 兩之間有25.6GB的高速總線可以進(jìn)行數(shù)據(jù)交換,而SPE和主存之間一共只 有25.6GB的總線,SPE之間的總線傳輸和各個(gè)SPE到主存之間的總線傳輸 是可以并發(fā)的。Cel舊E處理器可以應(yīng)用到手持裝置到主計(jì)算機(jī)的各種應(yīng)用中。CellBE處理器為計(jì)算機(jī)的結(jié)構(gòu)體系帶來(lái)飛躍性的改變。CellBE處理器由 于具備八個(gè)SPE,并且這八個(gè)SPE能夠進(jìn)行并行處理,因此顯著地提高了計(jì) 算機(jī)的計(jì)算性能。為了解決Cel舊E處理器中的存儲(chǔ)壁壘問(wèn)題,為Cel舊E處 理器中的每個(gè)SPE都配備了 一個(gè)專用的局部存儲(chǔ),每個(gè)SPE只能直接對(duì)其本 地存儲(chǔ)(以下簡(jiǎn)稱為"LS")進(jìn)行存取。引入本地存儲(chǔ)雖然能夠降低存儲(chǔ)等待, 但是本地存儲(chǔ)的大小通常為256KB,這樣大小的存儲(chǔ)空間由于對(duì)程序二進(jìn)制 尺寸的限制而為開(kāi)發(fā)者帶來(lái)了不便。而且,由于這樣的SPE缺乏高速緩存器, 這會(huì)顯著地降低Cel舊E處理器處理大數(shù)據(jù)量應(yīng)用程序的計(jì)算性能,這些大數(shù) 據(jù)量應(yīng)用程序諸如高性能計(jì)算、數(shù)字媒體、以及財(cái)務(wù)應(yīng)用程序。為了解決上述問(wèn)題,現(xiàn)有的CellBE處理器為SPE增設(shè)了專用的物理高 速緩存器,這雖然提高了計(jì)算性能,但是也使得Cel舊E處理器的架構(gòu)體系更 為復(fù)雜,導(dǎo)致成本的增加。另外一種方法是采用軟高速緩存器,該方法使用 本地存儲(chǔ)的一部分作為軟高速緩存器。這種技術(shù)方案的缺點(diǎn)在于該技術(shù)會(huì)降
低本地存儲(chǔ)的可用空間,并且一旦程序比較大時(shí),該軟高速緩存器將不能使 用。另外,現(xiàn)有技術(shù)的另一個(gè)問(wèn)題是本地存儲(chǔ)對(duì)持久數(shù)據(jù)管理。由于本地存 儲(chǔ)的大小的局限,大多數(shù)持久數(shù)據(jù)必須放到由PPE管理的主存。這樣就存在幾個(gè)與主存進(jìn)行通信的缺點(diǎn)。首先,PPE中的處理可能被OS切斷,并且PPE 和SPE之間的通信開(kāi)銷將會(huì)增加。其次,主存中的數(shù)據(jù)將被換出到硬盤(pán)換區(qū) 中,這樣就會(huì)增加處理的等待。其三,不規(guī)則的數(shù)據(jù)移動(dòng)易于導(dǎo)致高速緩存 器不一致(inconsistent)的問(wèn)題,諸如高速緩存器偽共享(false sharing)問(wèn)題。為了解決至少上述問(wèn)題之一,本發(fā)明提供一種有效的持久數(shù)據(jù)管理方法 以增強(qiáng)軟件管理高速緩存器的性能和適用性。發(fā)明內(nèi)容因此,根據(jù)本發(fā)明一個(gè)方面,提供了 一種在細(xì)胞寬帶引擎處理器中管理 數(shù)據(jù)移動(dòng)的方法,包括從細(xì)胞寬帶引擎處理器的多個(gè)SPE中確定一個(gè)或多 個(gè)空閑SPE,并將所述空閑SPE的LS的起始有效地址和用于命令隊(duì)列的有效 地址通知給所述多個(gè)SPE中的計(jì)算SPE;以及所述空閑SPE基于來(lái)自計(jì)算 SPE的命令隊(duì)列管理與所述計(jì)算SPE的計(jì)算有關(guān)的數(shù)據(jù)的移動(dòng)。根據(jù)本發(fā)明另一個(gè)方面,提供一種細(xì)胞寬帶引擎處理器,包括具有強(qiáng)大 處理器元件(PPE )、多個(gè)協(xié)處理器元件(SPE )、與每個(gè)SPE相關(guān)聯(lián)的存儲(chǔ)流 控制器(MFC)和局部存儲(chǔ)(LS)、內(nèi)部中斷控制器(IIC)以及主存,其特 征在于,在所述細(xì)胞寬帶引擎處理器執(zhí)行應(yīng)用程序時(shí),所述強(qiáng)大處理器元件 用于從所述多個(gè)SPE中創(chuàng)建一個(gè)計(jì)算SPE以及從所述多個(gè)SPE的空閑SPE 中為所述計(jì)算SPE創(chuàng)建一個(gè)管理SPE,并將與所述管理SPE相關(guān)聯(lián)的LS的 起始有效地址和用于命令隊(duì)列的有效地址通知給多個(gè)協(xié)處理器元件中的執(zhí)行 該應(yīng)用程序的計(jì)算SPE,而所述管理SPE的LS中包括用于存儲(chǔ)所述命令隊(duì) 列的部分和用于緩存數(shù)據(jù)的緩沖器部分,并且用于基于來(lái)自計(jì)算SPE的命令 隊(duì)列管理與所述計(jì)算SPE的計(jì)算有關(guān)的數(shù)據(jù)的移動(dòng)。
下面參照附圖^又作為示例詳細(xì)描述本發(fā)明的實(shí)施例,其中圖1所示的是根據(jù)本發(fā)明的在細(xì)胞寬帶引擎處理器中管理數(shù)據(jù)移動(dòng)的方 法的加載數(shù)據(jù)流程圖;圖2所示的是根據(jù)本發(fā)明的在細(xì)胞寬帶引擎處理器中管理數(shù)據(jù)移動(dòng)的方 法的存儲(chǔ)數(shù)據(jù)流程圖;圖3所示的是根據(jù)本發(fā)明的細(xì)胞寬帶引擎處理器的管理SPE和計(jì)算SPE 的架構(gòu)體系的示意圖;具體實(shí)施方式
本發(fā)明一個(gè)方面是提供 一種在細(xì)胞寬帶引擎處理器中管理數(shù)據(jù)移動(dòng)的 方法,包括從細(xì)胞寬帶引擎處理器的多個(gè)協(xié)處理器元件中確定一個(gè)或多個(gè) 空閑SPE為管理SPE并將所述管理SPE的LS的起始有效地址和用于命令隊(duì) 列的有效地址通知給所述多個(gè)SPE中的計(jì)算SPE;以及所述管理SPE基于來(lái) 自計(jì)算SPE的命令隊(duì)列管理與所述計(jì)算SPE的計(jì)算有關(guān)的數(shù)據(jù)的移動(dòng)。圖1所示的是根據(jù)本發(fā)明的在細(xì)胞寬帶引擎處理器中管理數(shù)據(jù)移動(dòng)的方 法加載數(shù)據(jù)的流程圖。首先,當(dāng)在細(xì)胞寬帶引擎處理器中運(yùn)行一個(gè)應(yīng)用程序 時(shí),在后面如圖3所述的PPE中創(chuàng)建一個(gè)用于執(zhí)行該應(yīng)用程序的計(jì)算SPE, 并且將多個(gè)SPE中的空閑SPE創(chuàng)建為用與所述計(jì)算SPE的管理SPE,該管理 SPE用于管理該計(jì)算SPE的數(shù)據(jù)的移動(dòng)(步驟S102 )。如后面參考圖3所述, 每個(gè)SPE都具有一個(gè)Runtime,并且該管理SPE具有用于存儲(chǔ)命令隊(duì)列的部 分和用于緩存數(shù)據(jù)的緩沖器。在PPE創(chuàng)建管理SPE的同時(shí),將所述管理SPE 的LS的起始有效地址和用于命令隊(duì)列的有效地址通知給所述計(jì)算SPE。所述 計(jì)算SPE在執(zhí)行應(yīng)用程序的過(guò)程中或預(yù)先將數(shù)據(jù)加載命令發(fā)送到所述管理 SPE中的命令隊(duì)列中,該命令指示管理SPE將計(jì)算SPE所需的數(shù)據(jù)及時(shí)地加 載到計(jì)算SPE(步驟S103 )。該計(jì)算SPE能夠通過(guò)DMA、郵箱或其它SPE-SPE 通信方法發(fā)出該命令。該數(shù)據(jù)加載命令是一種如下描述的四元數(shù)(SRC, DEST, SIZE, READYBIT—EA),在該四元數(shù)中,各個(gè)元的順序可以有所不同。其中, SRC是數(shù)據(jù)的需要加載的有效地址,在加載階段,通常是該數(shù)據(jù)在主存中的 有效地址,也可以管理SPE中的LS的地址;DEST是數(shù)據(jù)需要存儲(chǔ)的有效地 址,在加載階段,通常是計(jì)算SPE中的有效地址;SIZE是需要移動(dòng)或加載 的數(shù)據(jù)大小,以及READYBIT_EA是準(zhǔn)備好的比特的有效地址,即計(jì)算SPE 在該數(shù)據(jù)已經(jīng)從管理SPE傳送到計(jì)算SPE中時(shí),計(jì)算SPE中的運(yùn)行時(shí)間 (Runtime )該數(shù)據(jù)設(shè)定為有效。所述管理SPE確認(rèn)接收到所述的數(shù)據(jù)加載命 令,并準(zhǔn)備執(zhí)行該數(shù)據(jù)加載命令(步驟S104)。在所述管理SPE確認(rèn)所述命令隊(duì)列中存在所述數(shù)據(jù)加載命令之后,首先 根據(jù)所述四元數(shù)描述的加載命令,確定其本地存儲(chǔ)LS的緩沖器中是否已經(jīng)存 在所要加載的數(shù)據(jù)(步驟S105,是)。如果所要加載的數(shù)據(jù)已經(jīng)緩存在所述 緩沖器中,所述管理SPE則發(fā)出DMA (直接存儲(chǔ)器存取),將所需加載的數(shù) 據(jù)從管理SPE的緩沖器發(fā)送到計(jì)算SPE中的目的地有效地址DEST (步驟 S106)。然后將所述數(shù)據(jù)加載命令從所述命令隊(duì)列中清除掉(步驟S107)然 后結(jié)束加載進(jìn)程(步驟S108)。如果所述管理SPE根據(jù)所述四元數(shù)描述的加載命令,確定其本地存儲(chǔ) LS的緩沖器中沒(méi)有所要加載的數(shù)據(jù)(步驟S105,否),該管理SPE則需要判 斷其緩沖器是否已經(jīng)沒(méi)有空間用于緩存所需要加載的數(shù)據(jù)(步驟S109)。如 果在步驟S109處的判斷結(jié)果為"否",則進(jìn)程前進(jìn)到步驟S113。在步驟S113 處,所述管理SPE基于該四元數(shù)描述的加載命令,發(fā)出DMA (直接存儲(chǔ)器 存取),從而將所需加載的數(shù)據(jù)從所述主存緩存到所述管理SPE的緩沖器。 隨后進(jìn)程前進(jìn)到步驟SI06。另外,如果所述管理SPE在步驟S109處判斷其緩沖器已經(jīng)沒(méi)有空間用 于緩存所需要加載的數(shù)據(jù),則進(jìn)程前進(jìn)到步驟SllO。在步驟S110處,所述 管理SPE利用最近最少使用原則(LRU)找到緩沖器內(nèi)所緩存的最近最少使 用的數(shù)據(jù),并確定該最近最少使用的數(shù)據(jù)的輸入項(xiàng)是否被修改過(guò)。通常,如 果該數(shù)據(jù)未修改過(guò),則將該數(shù)據(jù)被標(biāo)記為"load(加載)",如果該數(shù)據(jù)被修 改過(guò),則標(biāo)記為"store (存儲(chǔ))"。如果在步驟SllO處的判斷結(jié)果為"否", 則進(jìn)程前進(jìn)到步驟S112。在步驟S112處,所述管理SPE基于該四元數(shù)描述 的加載命令,發(fā)出DMA (直接存儲(chǔ)器存取),從而將所需加載的數(shù)據(jù)從所述 主存直接緩存并覆寫(xiě)到所述最近最少使用的數(shù)據(jù)在所述管理SPE的緩沖器中 的地址。隨后進(jìn)程前進(jìn)到步驟S106。此外,如果在步驟S110處,所述管理SPE確定該最近最少使用的數(shù)據(jù) 的輸入項(xiàng)被修改過(guò),例如該最近最少使用的數(shù)據(jù)被標(biāo)記為"store (存儲(chǔ))", 則進(jìn)程前進(jìn)到步驟Slll。在步驟Sill處,發(fā)出DMA (直接存儲(chǔ)器存取), 將所述管理SPE基于該四元數(shù)描述的加載命令,所述管理SPE發(fā)出DMA(直 接存儲(chǔ)器存取),從而將所述修改后的最近最少使用的數(shù)據(jù)從其緩沖器存儲(chǔ)在
所述主存的原始有效地址。隨后進(jìn)程前進(jìn)到步驟S112。圖2所示的是根據(jù)本發(fā)明的在細(xì)胞寬帶引擎處理器中管理數(shù)據(jù)移動(dòng)的方法存儲(chǔ)數(shù)據(jù)的流程圖。與參加圖l所描述的相同,首先,在細(xì)胞寬帶引擎處理器中運(yùn)行一個(gè)應(yīng)用程序時(shí),所述PPE中創(chuàng)建一個(gè)用于執(zhí)行該應(yīng)用程序的計(jì) 算SPE,并且將多個(gè)SPE中的空閑SPE創(chuàng)建為用與所述計(jì)算SPE的管理SPE, 該管理SPE用于管理該計(jì)算SPE的數(shù)據(jù)的移動(dòng)(步驟S102)。所述管理SPE 具有用于存儲(chǔ)命令隊(duì)列的部分和用于緩存數(shù)據(jù)的緩沖器。在PPE創(chuàng)建管理 SPE的同時(shí),所述計(jì)算SPE已經(jīng)獲得所述管理SPE的LS的起始有效地址和 用于命令隊(duì)列的有效地址。所述計(jì)算SPE在執(zhí)行應(yīng)用程序而需要存儲(chǔ)所產(chǎn)生 的數(shù)據(jù)時(shí)將數(shù)據(jù)存儲(chǔ)命令發(fā)送到所述管理SPE中的命令隊(duì)列中,該命令指示 管理SPE將計(jì)算SPE所產(chǎn)生的數(shù)據(jù)緩存到管理SPE緩沖器中或隨后存儲(chǔ)到所 述主存中(步驟S203 )。該計(jì)算SPE能夠通過(guò)DMA、郵箱或其它SPE-SPE 通信方法發(fā)出該命令。該數(shù)據(jù)存儲(chǔ)命令同樣是一種四元數(shù)(SRC, DEST, SIZE, READYBIT—EA),其中,SRC是數(shù)據(jù)的需要存儲(chǔ)的有效地址,在存儲(chǔ)階段, 通常是該數(shù)據(jù)在計(jì)算SPE中的有效地址;DEST是數(shù)據(jù)需要存儲(chǔ)的有效地址, 在存儲(chǔ)階段,通常是主存或管理SPE的緩沖器內(nèi)的有效地址;SIZE是需要移 動(dòng)或存儲(chǔ)的數(shù)據(jù)大小,以及READYBIT一EA是準(zhǔn)備好的比特的有效地址,即 管理SPE中的運(yùn)行時(shí)間(Runtime )將已經(jīng)緩存到緩沖器中的數(shù)據(jù)設(shè)定為有效。 所述管理SPE確認(rèn)接收到所述的數(shù)據(jù)存儲(chǔ)命令,并準(zhǔn)備執(zhí)行該數(shù)據(jù)存儲(chǔ)命令 (步驟S204 )。在所述管理SPE確認(rèn)所述命令隊(duì)列中存在所述數(shù)據(jù)存儲(chǔ)命令之后,首先 根據(jù)所述四元數(shù)描述的加載命令,確定其本地存儲(chǔ)LS的緩沖器中是否已經(jīng)存 在所要存儲(chǔ)的數(shù)據(jù)(步驟S205,是)。如果所要存儲(chǔ)的數(shù)據(jù)已經(jīng)緩存在所述 緩沖器中,所述管理SPE則將所述數(shù)據(jù)存儲(chǔ)命令從所述命令隊(duì)列中清除掉(步 驟S207)然后結(jié)束存儲(chǔ)進(jìn)程(步驟S208)。或者,可以在所要存儲(chǔ)的數(shù)據(jù)已 經(jīng)位于緩沖器中的情況下直接將所要存儲(chǔ)的數(shù)據(jù)覆寫(xiě)到緩沖器中相同數(shù)據(jù)的 地址中。如果所述管理SPE根據(jù)所述四元數(shù)描述的存儲(chǔ)命令,確定其本地存儲(chǔ) LS的緩沖器中沒(méi)有所要存儲(chǔ)的數(shù)據(jù)(步驟S205,否),該管理SPE則需要判 斷其緩沖器是否已經(jīng)沒(méi)有空間用于緩存所需要存儲(chǔ)的數(shù)據(jù)(步驟S209)。如 果在步驟S209處的判斷結(jié)果為"否",則進(jìn)程前進(jìn)到步驟S213。在步驟S213 處,所述管理SPE基于該四元數(shù)描述的存儲(chǔ)命令,發(fā)出DMA (直接存儲(chǔ)器 存取),從而將所需存儲(chǔ)的數(shù)據(jù)從所述計(jì)算SPE緩存到所述管理SPE的緩沖 器。隨后進(jìn)程前進(jìn)到步驟S207。另外,如果所述管理SPE在步驟S209處判斷其緩沖器已經(jīng)沒(méi)有空間用 于緩存所需要存儲(chǔ)的數(shù)據(jù),則進(jìn)程前進(jìn)到步驟S210。在步驟S110處,所述 管理SPE利用最近最少使用原則(LRU)找到緩沖器內(nèi)所緩存的最近最少使 用的數(shù)據(jù),并確定該最近最少使用的數(shù)據(jù)的輸入項(xiàng)是否被修改過(guò)。如果在步 驟S110處的判斷結(jié)果為"否",即該數(shù)據(jù)未修改過(guò),例如該最近最少使用的 數(shù)據(jù)被標(biāo)記為"load"(加載)"則進(jìn)程前進(jìn)到步驟S212。在步驟S212處, 所述管理SPE基于該四元數(shù)描述的存儲(chǔ)命令,發(fā)出DMA(直接存儲(chǔ)器存取), 從而將所需存儲(chǔ)的數(shù)據(jù)從所述計(jì)算SPE直接緩存并覆寫(xiě)到所述最近最少使用 的數(shù)據(jù)在所述管理SPE的緩沖器中的地址。隨后進(jìn)程前進(jìn)到步驟S207。此外,如果在步驟S210處,所述管理SPE確定該最近最少使用的數(shù)據(jù) 的輸入項(xiàng)被修改過(guò),例如該最近最少使用的數(shù)據(jù)被標(biāo)記為"store (存儲(chǔ))", 則進(jìn)程前進(jìn)到步驟S211。在步驟S211處,發(fā)出DMA (直接存儲(chǔ)器存取), 將所述管理SPE基于該四元數(shù)描述的存儲(chǔ)命令,所述管理SPE發(fā)出DMA(直 接存儲(chǔ)器存取),從而將所述修改后的最近最少使用的數(shù)據(jù)從其緩沖器存儲(chǔ)在 所述主存的原始有效地址。隨后進(jìn)程前進(jìn)到步驟S212。本發(fā)明另 一方面提供了 一種運(yùn)行上述數(shù)據(jù)移動(dòng)管理方法的細(xì)胞寬帶引擎 處理器,包括具有強(qiáng)大處理器元件(PPE)、多個(gè)協(xié)處理器元件(SPE)、與每 個(gè)SPE相關(guān)聯(lián)的存儲(chǔ)流控制器(MFC)和局部存儲(chǔ)(LS)、內(nèi)部中斷控制器 (IIC)以及主存,其特征在于,在所述細(xì)胞寬帶引擎處理器執(zhí)行應(yīng)用程序時(shí), 所述強(qiáng)大處理器元件用于從所述多個(gè)SPE中創(chuàng)建一個(gè)計(jì)算SPE以及從所述多 個(gè)SPE的空閑SPE中為所述計(jì)算SPE創(chuàng)建一個(gè)管理SPE,并將與所述管理 SPE相關(guān)聯(lián)的LS的起始有效地址和用于命令隊(duì)列的有效地址通知給多個(gè)協(xié) 處理器元件中的執(zhí)行該應(yīng)用程序的計(jì)算SPE,而所述管理SPE的LS中包括 用于存儲(chǔ)所述命令隊(duì)列的部分和用于緩存數(shù)據(jù)的緩沖器部分,并且用于基于 來(lái)自計(jì)算SPE的命令隊(duì)列管理與所述計(jì)算SPE的計(jì)算有關(guān)的數(shù)據(jù)的移動(dòng)。圖3所示的是根據(jù)本發(fā)明的細(xì)胞寬帶引擎處理器的管理SPE和計(jì)算SPE 的架構(gòu)體系的示意圖。為了簡(jiǎn)便起見(jiàn),其中與本發(fā)明沒(méi)有直接關(guān)系的一些元 件被省略。其中相同的元件采用相同的附圖標(biāo)記來(lái)指代。
如圖3所示,根據(jù)本發(fā)明的細(xì)胞寬帶引擎處理器主要包括強(qiáng)大處理器元件(PPE) 1、計(jì)算協(xié)處理器元件(SPE) 2、管理協(xié)處理器元件(SPE) 3以 及主存4。每個(gè)協(xié)處理器元件都可包括本地存儲(chǔ)(LS) 5和運(yùn)行時(shí)間(以下簡(jiǎn) 稱為"Runtime" )6,該Runtime用于管理各自所屬協(xié)處理器元件中的本地存 儲(chǔ)5和來(lái)自其它協(xié)處理器元件的數(shù)據(jù)存取。所述管理SPE的LS中包括用于 存儲(chǔ)計(jì)算SPE發(fā)送來(lái)的命令的命令隊(duì)列存儲(chǔ)部分以及用于緩存數(shù)據(jù)的數(shù)據(jù)緩 沖器。所述Runtime可以根據(jù)命令隊(duì)列中的數(shù)據(jù)加載命令從主存4中預(yù)取數(shù) 據(jù)以及負(fù)責(zé)將緩存在數(shù)據(jù)緩沖器中的數(shù)據(jù)寫(xiě)入主存4或計(jì)算SPE 2的LS中。 在細(xì)胞寬帶引擎處理器執(zhí)行應(yīng)用程序的過(guò)程中,管理SPE是用于 PPE-SPE以及SPE-SPE數(shù)據(jù)通信的代理。管理SPE負(fù)責(zé)從主存和本地存儲(chǔ)加 載數(shù)據(jù)、負(fù)責(zé)將數(shù)據(jù)存儲(chǔ)在主存和本地存儲(chǔ)、以及負(fù)責(zé)將修改后的數(shù)據(jù)寫(xiě)回 主存和本地存儲(chǔ)。所述運(yùn)行時(shí)間響應(yīng)于來(lái)自其它SPE的數(shù)據(jù)加載和存儲(chǔ)請(qǐng)求在管理SPE中 運(yùn)行。其發(fā)出DMA以便從主存(或本地存儲(chǔ))中加載數(shù)據(jù)并將該數(shù)據(jù)放入 數(shù)據(jù)緩沖器中,并且該運(yùn)行時(shí)間將處理用于其它SPE的數(shù)據(jù)移動(dòng)。所述命令隊(duì)列是計(jì)算SPE和管理SPE之間的通信信道。計(jì)算SPE發(fā)送 其數(shù)據(jù)加載/存儲(chǔ)命令進(jìn)入該命令隊(duì)列,并且該管理SPE從該隊(duì)列中檢索請(qǐng) 求。參見(jiàn)圖3,在所述細(xì)胞寬帶引擎處理器執(zhí)行應(yīng)用程序時(shí),所述PPE創(chuàng)建 用于管理SPE的一個(gè)SPE線程,同時(shí)將與所述管理SPE相關(guān)聯(lián)的LS的起始 有效地址和用于命令隊(duì)列的有效地址通知給所述計(jì)算SPE。當(dāng)計(jì)算SPE需要 執(zhí)行數(shù)據(jù)加載/存儲(chǔ)操作時(shí),該計(jì)算SPE向管理數(shù)據(jù)移動(dòng)SPE發(fā)出請(qǐng)求或命 令。該計(jì)算SPE能夠通過(guò)DMA、郵箱或其它SPE-SPE通信方法發(fā)出該命令。 該數(shù)據(jù)存儲(chǔ)命令是一種四元數(shù)(SRC, DEST, SIZE, READYBIT—EA),其中, SRC是數(shù)據(jù)的需要存儲(chǔ)的有效地址;DEST是數(shù)據(jù)需要存儲(chǔ)的有效地址;SIZE 是需要移動(dòng)或存儲(chǔ)的數(shù)據(jù)大小,以及READYBIT—EA是準(zhǔn)備好的比特的有效 地址Runtime在數(shù)據(jù)準(zhǔn)備好時(shí)將其設(shè)置為有效。SRC 、 DEST以及 READYBIT—EA可以是主存或本地存儲(chǔ)的地址。采用本發(fā)明,使得本發(fā)明的細(xì)胞寬帶引擎處理器在執(zhí)行應(yīng)用程序時(shí)所能 獲得緩沖器的空間顯著大于現(xiàn)有的軟高速緩存器方案,并且不會(huì)降低程序的 可獲得空間。本發(fā)明不會(huì)與SPE的上進(jìn)(upandcoming)技術(shù)產(chǎn)生沖突,也
不需要額外的硬件支持。由于采用本發(fā)明,存儲(chǔ)在管理SPE中的數(shù)據(jù)將不會(huì)被操作系統(tǒng)換出到硬盤(pán)換區(qū),并且計(jì)算SPE中的運(yùn)行程序的存儲(chǔ)流控制 (MFC)能夠被用于PPE-SPE通信,因?yàn)閿?shù)據(jù)的加載和存儲(chǔ)工作是通過(guò)管理 SPE來(lái)執(zhí)行的。由于具備了管理SPE中的緩沖器,可以緩存更多的持久數(shù)據(jù), 因此降低通信的成本,而且由于本地存儲(chǔ)的啟動(dòng)時(shí)間最小化,因此計(jì)算SPE 到PPE數(shù)據(jù)移動(dòng)的等待和輸出會(huì)更好。需要指出的是本發(fā)明并不對(duì)用于數(shù)據(jù)管理的SPE的數(shù)量進(jìn)行限制,并且 實(shí)施方式能夠使用所有可用的SPE或SPE的某些部分。而且一個(gè)管理SPE 能夠?yàn)槎鄠€(gè)SPE服務(wù)。我們也不限制使用其它的緩沖器管理和數(shù)據(jù)預(yù)取技術(shù)。本發(fā)明的描述是為了示例說(shuō)明的目的而提供的,而不旨在是徹底無(wú)遺漏 的,或者局限于所公開(kāi)的實(shí)施例。很多修改和變更對(duì)于本領(lǐng)域的普通技術(shù)人 員將是清楚的。選擇這些實(shí)施例是為了說(shuō)明本發(fā)明的原理及其實(shí)際應(yīng)用,并 且使得本領(lǐng)域的其他普通技術(shù)人員能夠理解本發(fā)明,以便實(shí)現(xiàn)可能適于其他 預(yù)期用途的具有各種修改的各種實(shí)施例。
權(quán)利要求
1. 一種在細(xì)胞寬帶引擎處理器中管理數(shù)據(jù)移動(dòng)的方法,包括從細(xì)胞寬帶引擎處理器的多個(gè)協(xié)處理器元件(SPE)中確定一個(gè)或多個(gè)空閑SPE為管理SPE,并將所述管理SPE的LS的起始有效地址和用于命令隊(duì)列的有效地址通知給所述多個(gè)SPE中的計(jì)算SPE;以及所述管理SPE基于來(lái)自計(jì)算SPE的命令隊(duì)列管理與所述計(jì)算SPE的計(jì)算有關(guān)的數(shù)據(jù)的移動(dòng)。
2. 如權(quán)利要求1所述的方法,其中,所述管理SPE包括位于其LS中的 數(shù)據(jù)緩沖器,所述管理SPE基于來(lái)自計(jì)算SPE的命令隊(duì)列管理與所述計(jì)算 SPE的計(jì)算有關(guān)的數(shù)據(jù)的移動(dòng)包括如下步驟所述管理SPE輪詢所述命令隊(duì)列中是否存在數(shù)據(jù)加載命令; 如果存在數(shù)據(jù)加載命令,則判斷所需加載的數(shù)據(jù)是否已經(jīng)位于所述數(shù)據(jù) 緩沖器內(nèi);如果所述數(shù)據(jù)已經(jīng)位于所述數(shù)據(jù)緩沖器內(nèi),則基于所述計(jì)算SPE進(jìn)行計(jì) 算的需要而發(fā)出DMA命令將該數(shù)據(jù)傳送到位于計(jì)算SPE中的目的地地址, 并從命令隊(duì)列中清除所述加載命令。
3. 如權(quán)利要求2所述的方法,其中,所述管理SPE基于來(lái)自計(jì)算SPE 的命令隊(duì)列管理與所述計(jì)算SPE的計(jì)算有關(guān)的數(shù)據(jù)的移動(dòng)還包括如下步驟如果在所述數(shù)據(jù)緩沖器內(nèi)沒(méi)有所需加載的數(shù)據(jù),則基于所需加載的數(shù)據(jù) 的大小判斷所述數(shù)據(jù)緩沖器是否已經(jīng)充滿;如果所述數(shù)據(jù)緩沖器沒(méi)有充滿,則基于所述加載命令,發(fā)出DMA命令 將所需加載的數(shù)據(jù)從主存加載到所述數(shù)據(jù)緩沖器。
4. 如權(quán)利要求3所述的方法,其中,所述管理SPE基于來(lái)自計(jì)算SPE 的命令隊(duì)列管理與所述計(jì)算SPE的計(jì)算有關(guān)的數(shù)據(jù)的移動(dòng)還包括如下步驟如果所述數(shù)據(jù)緩沖器已經(jīng)充滿,則發(fā)出DMA命令將所需加載的數(shù)據(jù)從 主存加載并覆寫(xiě)到所述數(shù)據(jù)緩沖器中的最近最少使用的緩存數(shù)據(jù)的地址中; 以及如果所述最近最少使用的緩存數(shù)據(jù)是被修改過(guò)的數(shù)據(jù),則在所述覆寫(xiě)步 驟之前發(fā)出DMA命令將所述修改過(guò)的數(shù)據(jù)存儲(chǔ)到所述主存中的原始有效地址。
5. 如前述任意一個(gè)權(quán)利要求所述的方法,所述管理SPE基于來(lái)自計(jì)算.SPE的命令隊(duì)列管理與所述計(jì)算SPE的計(jì)算有關(guān)的數(shù)據(jù)的移動(dòng)還包括如下步 驟所述管理SPE輪詢所述命令隊(duì)列中是否存在數(shù)據(jù)存儲(chǔ)命令; 如果存在數(shù)據(jù)存儲(chǔ)命令,則判斷所需存儲(chǔ)的數(shù)據(jù)是否已經(jīng)位于所述數(shù)據(jù) 緩沖器內(nèi);如果所述數(shù)據(jù)已經(jīng)位于所述數(shù)據(jù)緩沖器內(nèi),則從命令隊(duì)列中清除所述存 儲(chǔ)命令。
6. 如權(quán)利要求5所述的方法,其中,所述管理SPE基于來(lái)自計(jì)算SPE 的命令隊(duì)列管理與所述計(jì)算SPE的計(jì)算有關(guān)的數(shù)據(jù)的移動(dòng)還包括如下步驟如果在所述數(shù)據(jù)緩沖器內(nèi)沒(méi)有所需存儲(chǔ)的數(shù)據(jù),則基于所需存儲(chǔ)的數(shù)據(jù) 的大小判斷所述數(shù)據(jù)緩沖器是否已經(jīng)充滿;如果所述數(shù)據(jù)緩沖器沒(méi)有充滿,則基于所述存儲(chǔ)命令,發(fā)出DMA命令 將所需存儲(chǔ)的數(shù)據(jù)從所述計(jì)算SPE緩存到所述數(shù)據(jù)緩沖器。
7. 如權(quán)利要求6所述的方法,其中,所述管理SPE基于來(lái)自計(jì)算SPE 的命令隊(duì)列管理與所述計(jì)算SPE的計(jì)算有關(guān)的數(shù)據(jù)的移動(dòng)還包括如下步驟如果所述數(shù)據(jù)緩沖器已經(jīng)充滿,則發(fā)出DMA命令將所需存儲(chǔ)的數(shù)據(jù)從 所述計(jì)算SPE緩存并覆寫(xiě)到所述數(shù)據(jù)緩沖器中的最近最少使用的緩存數(shù)據(jù)的 地址中;以及如果所述最近最少使用的緩存數(shù)據(jù)是被修改過(guò)的數(shù)據(jù),則在所述覆寫(xiě)之 前發(fā)出DMA命令將所述修改過(guò)的緩存數(shù)據(jù)存儲(chǔ)到所述主存中的原始有效地 址。
8. —種細(xì)胞寬帶引擎處理器,包括強(qiáng)大處理器元件(PPE)、多個(gè)協(xié)處理 器元件(SPE )、與每個(gè)SPE相關(guān)聯(lián)的存儲(chǔ)流控制器(MFC )和局部存儲(chǔ)(LS )、 內(nèi)部中斷控制器(IIC)以及主存,其特征在于,在所述細(xì)胞寬帶引擎處理器 執(zhí)行應(yīng)用程序時(shí),所述強(qiáng)大處理器元件用于從所述多個(gè)SPE中創(chuàng)建一個(gè)計(jì)算 SPE以及從所述多個(gè)SPE的空閑SPE中為所述計(jì)算SPE創(chuàng)建一個(gè)管理SPE, 并將與所述管理SPE相關(guān)聯(lián)的LS的起始有效地址和用于命令隊(duì)列的有效地 址通知給多個(gè)協(xié)處理器元件中的執(zhí)行該應(yīng)用程序的計(jì)算SPE,而所述管理SPE 的LS中包括用于存儲(chǔ)所述命令隊(duì)列的部分和用于緩存數(shù)據(jù)的緩沖器部分,并 且用于基于來(lái)自計(jì)算SPE的命令隊(duì)列管理與所述計(jì)算SPE的計(jì)算有關(guān)的數(shù)據(jù) 的移動(dòng)。
9. 如權(quán)利要求8所述的細(xì)胞寬帶引擎處理器,其中,在所述命令隊(duì)列中 存在來(lái)自所述計(jì)算SPE的數(shù)據(jù)加載命令并且所需加載的數(shù)據(jù)已經(jīng)位于所述數(shù) 據(jù)緩沖器內(nèi)的情況下,所述管理SPE用于基于所述計(jì)算SPE進(jìn)行計(jì)算的需要 而發(fā)出DMA命令從而將該數(shù)據(jù)傳送到所述計(jì)算SPE中的目的地地址,并從 所述命令隊(duì)列中清除所述加載命令。
10. 如權(quán)利要求9所述的細(xì)胞寬帶引擎處理器,其中,在所述命令隊(duì)列 中存在來(lái)自所述計(jì)算SPE的數(shù)據(jù)加載命令并且所述數(shù)據(jù)緩沖器內(nèi)沒(méi)有所需加 載的數(shù)據(jù)的情況下,所述管理SPE用于在所述數(shù)據(jù)緩沖器的剩余空間足以存 儲(chǔ)所需加載的數(shù)據(jù)時(shí)發(fā)出DMA命令將所需加載的數(shù)據(jù)從主存加載到所述數(shù) 據(jù)緩沖器。
11. 如權(quán)利要求IO所述的細(xì)胞寬帶引擎處理器,其中,在所述命令隊(duì)列 中存在來(lái)自所述計(jì)算SPE的數(shù)據(jù)加載命令并且所述數(shù)據(jù)緩沖器內(nèi)沒(méi)有所需加 載的數(shù)據(jù)的情況下,所述管理SPE用于在所述數(shù)據(jù)緩沖器的剩余空間不足以 存儲(chǔ)所需加載的數(shù)據(jù)時(shí)發(fā)出DMA從而將所需加載的數(shù)據(jù)從主存加載并覆寫(xiě) 到所述數(shù)據(jù)緩沖器中的最近最少使用的緩存數(shù)據(jù)的地址中,并且用于在所述 最近最少使用的緩存數(shù)據(jù)是被修改過(guò)的情況下在進(jìn)行所述覆寫(xiě)之前發(fā)出 DMA命令將所述修改過(guò)的數(shù)據(jù)存儲(chǔ)到所述主存中的原始有效地址。
12. 如前述任意一個(gè)權(quán)利要求所述的細(xì)胞寬帶引擎處理器,其中,在所 述命令隊(duì)列中存在來(lái)自所述計(jì)算SPE的數(shù)據(jù)存儲(chǔ)命令并且所需存儲(chǔ)的數(shù)據(jù)已 經(jīng)位于所述數(shù)據(jù)緩沖器內(nèi)的情況下,所述管理SPE用于從所述命令隊(duì)列中清 除所述存儲(chǔ)命令。
13. 如權(quán)利要求12所述的細(xì)胞寬帶引擎處理器,其中,在所述命令隊(duì)列 中存在來(lái)自所述計(jì)算SPE的數(shù)據(jù)存儲(chǔ)命令并且所述數(shù)據(jù)緩沖器內(nèi)沒(méi)有所需存 儲(chǔ)的數(shù)據(jù)的情況下,所述管理SPE用于在所述數(shù)據(jù)緩沖器的剩余空間足以存 儲(chǔ)所需存儲(chǔ)的數(shù)據(jù)時(shí)發(fā)出DMA命令將所需存儲(chǔ)的數(shù)據(jù)從所述計(jì)算SPE緩存 到所述數(shù)據(jù)緩沖器。
14. 如權(quán)利要求13所述的細(xì)胞寬帶引擎處理器,其中,在所述命令隊(duì)列 中存在來(lái)自所述計(jì)算SPE的數(shù)據(jù)存儲(chǔ)命令并且所述數(shù)據(jù)緩沖器內(nèi)沒(méi)有所需存 儲(chǔ)的數(shù)據(jù)的情況下,所述管理SPE用于在所述數(shù)據(jù)緩沖器的剩余空間不足以 存儲(chǔ)所需存儲(chǔ)的數(shù)據(jù)時(shí)發(fā)出DMA命令將所需存儲(chǔ)的數(shù)據(jù)從所述計(jì)算SPE緩 存并覆寫(xiě)到所述數(shù)據(jù)緩沖器中的最近最少使用的緩存數(shù)據(jù)的地址中,并且用于在所述最近最少使用的緩存數(shù)據(jù)是被修改過(guò)的情況下在進(jìn)行所述覆寫(xiě)之前 發(fā)出DMA命令將所述修改過(guò)的數(shù)據(jù)存儲(chǔ)到所述主存中的原始有效地址。
全文摘要
一種在細(xì)胞寬帶引擎處理器中管理數(shù)據(jù)移動(dòng)的方法,包括從細(xì)胞寬帶引擎處理器的多個(gè)協(xié)處理器元件中確定一個(gè)或多個(gè)空閑SPE為管理SPE,并將所述管理SPE的LS的起始有效地址和用于命令隊(duì)列的有效地址通知給所述多個(gè)SPE中的計(jì)算SPE;以及所述管理SPE基于來(lái)自計(jì)算SPE的命令隊(duì)列管理與所述計(jì)算SPE的計(jì)算有關(guān)的數(shù)據(jù)的移動(dòng)。
文檔編號(hào)G06F13/20GK101398803SQ20071015317
公開(kāi)日2009年4月1日 申請(qǐng)日期2007年9月28日 優(yōu)先權(quán)日2007年9月28日
發(fā)明者寬 馮, 汪文俊, 崢 王, 亮 陳 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司