亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于對直接存儲器存取引擎進行編程的方法和裝置的制作方法

文檔序號:6583684閱讀:119來源:國知局
專利名稱:用于對直接存儲器存取引擎進行編程的方法和裝置的制作方法
技術(shù)領(lǐng)域
本申請一般涉及一種改進的數(shù)據(jù)處理裝置和方法,并且更具體地涉及一種用于可
編程直接存儲器存取引擎的裝置和方法。
背景技術(shù)
可從國際商用機器公司獲得的Cell寬帶引擎(CBE)(即一種多核處理器架構(gòu))描 述了一種存儲器流程控制器(MFC),該存儲器流程控制器對于每個協(xié)同處理單元(SPU)是 特定的。這種存儲器流程控制器的主要目的是保持和處理來自MFC的相關(guān)聯(lián)的SPU或者來 自電源處理器元件(PPE)或其它設備的直接存儲器存取(DMA)命令的隊列。MFC的DMA引 擎執(zhí)行DMA命令。這允許SPU與MFC的DMA傳輸并行地連續(xù)執(zhí)行。 這使得在PPE或其它SPU上的軟件能夠訪問MFC資源和控制SPU。在PPE或其它 SPU上的特權(quán)軟件還將地址變換信息提供給MFC用于DMA傳輸。DMA傳輸相對于系統(tǒng)存儲 是相關(guān)的(coherent)。系統(tǒng)存儲的屬性(地址變換和保護)由Pc)WerPC 架構(gòu)的頁表和段
表來管理。 為了排列和監(jiān)視DMA命令、監(jiān)視SPU事件、執(zhí)行經(jīng)由郵箱的處理器間通信和信號通
知、訪問諸如衰減計(定時器)的輔助資源和其它功能的目的,MFC支持信道和相關(guān)聯(lián)的存
儲器映射輸入/輸出(匪IO)寄存器。除了支持DMA傳輸、信道和匪IO寄存器夕卜,MFC還支
持總線帶寬保留特征以及對系統(tǒng)中的SPU和其它處理單元之間的操作進行同步。 然而,目前的DMA引擎需要太多在主機處理器(host processor) (PPE或SPU)上
運行的軟件的管理,限制了主機處理器的性能和從復雜數(shù)據(jù)結(jié)構(gòu)訪問所需數(shù)據(jù)的總的等待時間。

發(fā)明內(nèi)容
在一個說明性實施例中,提供一種在數(shù)據(jù)處理系統(tǒng)中,用于對作為單線程處理器 操作的直接存儲器存取引擎進行編程的方法。說明性實施例從主機處理器接收與直接存儲 器存取引擎相關(guān)聯(lián)的局部存儲器中的程序。說明性實施例從主機處理器接收在直接存儲器 存取引擎中的請求,以執(zhí)行位于局部存儲器中的程序。說明性實施例通過直接存儲器存取 引擎并且在沒有主機處理器干預的情況下執(zhí)行所述程序。響應于所述程序完成執(zhí)行,通過 直接存儲器存取引擎,說明性實施例將完成通知發(fā)送到主機處理器,該通知指示該程序已 經(jīng)完成執(zhí)行。 在其它說明性實施例中,提供一種包括計算機可用或可讀介質(zhì)的計算機程序產(chǎn) 品,該計算機可用或可讀介質(zhì)具有計算機可讀程序。當在計算設備上執(zhí)行時,所述計算機可 讀程序使計算設備執(zhí)行上面關(guān)于方法的說明性實施例概述的操作之一或操作的組合。
在另一說明性實施例中,提供一種系統(tǒng)/裝置。所述系統(tǒng)/裝置可以包括一個或 多個處理器以及連接到該一個或多個處理器的存儲器。該存儲器可以包括指令,當該指令 由該一個或多個處理器執(zhí)行時,使該一個或多個處理器執(zhí)行上面關(guān)于方法的說明性實施例描述的操作之一或操作的組合。 本公開的這些和其它的特征和優(yōu)點將在下面的本公開的示例實施例的詳細說明 中描述,由此本公開這些和其它的特征和優(yōu)點將對本領(lǐng)域技術(shù)人員是顯而易見的。


當結(jié)合附圖閱讀時,通過參考下面的說明性實施例的具體說明,將最好地理解本 發(fā)明及其優(yōu)選的使用模式和另外的目的和優(yōu)點,其中 圖1是數(shù)據(jù)處理系統(tǒng)的示例性框圖,本公開的各方面可以在該數(shù)據(jù)處理系統(tǒng)中實 現(xiàn); 圖2是根據(jù)本公開的示例性實施例的典型存儲器流程控制(MFC)單元200的示例 性框圖; 圖3圖示根據(jù)說明性實施例,通過將儲存在存儲器中的數(shù)據(jù)傳輸?shù)酱鎯ζ髦械牟?同位置或傳輸?shù)骄植看鎯?,修改在鏈?linked list)中的數(shù)據(jù)的當前處理的示例。
圖4圖示根據(jù)一個說明性實施例,通過使用增強的直接存儲器存取(DMA)引擎,將 儲存在存儲器中的數(shù)據(jù)傳輸?shù)酱鎯ζ髦械牟煌恢没騻鬏數(shù)骄植看鎯?,傳輸或修改在鏈?中的數(shù)據(jù)的處理的示例。 圖5描述根據(jù)一個說明性實施例,通過與增強的直接存儲器存取(DMA)引擎相互 作用的主機處理器執(zhí)行的示例操作;以及 圖6描述根據(jù)一個說明性實施例,通過與主機處理器相互作用的增強的直接存儲 器存取(DMA)引擎執(zhí)行的示例操作。
具體實施例方式
說明性實施例提供了一種用于增強的直接存儲器存取(DMA)引擎的機制,所述直 接存儲器存取引擎包括復雜指令集。來自協(xié)同處理單元(SPU)的DMA請求可以被編碼到寫 入DMA指令集的程序中,該程序修改鏈表中的數(shù)據(jù),如傳輸數(shù)據(jù)、分析數(shù)據(jù)、重新格式化數(shù) 據(jù)、在數(shù)據(jù)中建立的遍歷(traversing)數(shù)據(jù)結(jié)構(gòu)等。隨后,整個DMA指令集可以被DMA引 擎執(zhí)行而不會被主機處理器干涉。 本領(lǐng)域技術(shù)人員應當理解,本公開可以被實施為系統(tǒng)、方法或計算機程序產(chǎn)品。因 而,本公開可以采用以下的形式完全硬件的實施方式、完全軟件的實施方式(包括固件、 駐留軟件、微代碼等)或者軟件和硬件結(jié)合的實施方式,所有這些實施方式在這里通稱為 "電路"、"模塊"或"系統(tǒng)"。因此,本公開可以采用嵌入任何有形介質(zhì)的表達的計算機程序 產(chǎn)品的形式,該表達具有在介質(zhì)中體現(xiàn)的計算機可用程序編碼。 可以采用一個或多個計算機可用或計算機可讀介質(zhì)的任何組合。計算機可用或 計算機可讀介質(zhì)例如可以是但不限于電子的、磁的、光學的、電磁的、紅外的或半導體的系 統(tǒng)、裝置、設備,或者傳播介質(zhì)。計算機可讀介質(zhì)的更具體的示例(非窮舉列表)包括具 有一個或多個布線的電連接、便攜計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器 (ROM)、可擦除可編程只讀存儲器(EPR0M或閃存)、光纖、便攜致密盤只讀存儲器(CDR0M)、 光學存儲設備、如支持互聯(lián)網(wǎng)或內(nèi)部網(wǎng)絡的傳輸介質(zhì)、或者磁存儲設備。應當注意,計算機 可用或計算機可讀介質(zhì)還可以是紙張或其它可在上面打印程序的合適的介質(zhì),由于程序可
5以經(jīng)由例如對紙張或其它介質(zhì)的光學掃描來電子地捕獲,然后編譯、解釋或者另外以合適 的方式處理,如果需要,隨后儲存在計算機存儲器中。在本文獻的上下中,計算機可用或計 算機可讀介質(zhì)可以是由指令執(zhí)行系統(tǒng)、裝置或設備使用或與之連接的任何介質(zhì),該介質(zhì)可 以包含、儲存、通信、傳播或傳輸程序。計算機可用介質(zhì)可以包括以基帶或作為載波的一部 分的形式的傳播數(shù)據(jù)信號,該數(shù)據(jù)信號具有隨其體現(xiàn)的計算機可用程序代碼。計算機可用 程序代碼可以用任何適當?shù)慕橘|(zhì)傳輸,包括但不限于無線、有線、光纖電纜、射頻(RF)等。
用于執(zhí)行本公開的操作的計算機程序代碼可以用一種或多種編程語言的任何組 合進行編寫,這些語言包括面向?qū)ο笳Z言(如JaVa 、 Smalltalk . C++等)和傳統(tǒng)程序編 程語言(如"C"編程語言)或者類似的編程語言。程序代碼可以在用戶計算機上全部地執(zhí) 行,在用戶計算機上部分地執(zhí)行,作為獨立軟件包在用戶計算機上部分地執(zhí)行,以及在遠程 計算機上部分地執(zhí)行或在遠程計算機或服務器上全部地執(zhí)行。在后面情況中,遠程計算機 可以通過任何類型的網(wǎng)絡連接到用戶計算機,所述網(wǎng)絡包括局域網(wǎng)(LAN)、廣域網(wǎng)(WAN), 或者可以(例如,通過使用因特網(wǎng)服務提供商的因特網(wǎng))與外部計算機建立連接。
下面將參照根據(jù)本發(fā)明說明性實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的 流程圖示和/或框圖來描述說明性實施例。應當理解,流程圖示和/或框圖的每個塊,以及 流程圖示和/或框圖中的塊的組合可以由計算機程序指令來實現(xiàn)。這些計算機程序指令可 以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器以產(chǎn)生機器,使得 經(jīng)由計算機或其它可編程數(shù)據(jù)處理裝置的處理器的執(zhí)行的指令創(chuàng)建用于實現(xiàn)在流程圖和/ 或框圖的一個或多個塊中指定的功能/動作的部件。 這些計算機程序指令也可以存儲在計算機可讀介質(zhì)中,該計算機可讀介質(zhì)可以指 導計算機或其它可編程數(shù)據(jù)處理裝置以特定的方式運行,使得儲存在計算機可讀介質(zhì)中的 指令產(chǎn)生制造品,該制造品包括實現(xiàn)流程圖和/或框圖的一個或多個塊的功能/動作的指 令部件。 計算機程序指令也可以加載到計算機或其它可編程數(shù)據(jù)處理裝置上,使得在計算 機或其它可編程裝置上執(zhí)行一系列的操作步驟,以產(chǎn)生計算機實現(xiàn)的處理,使得在計算機 或其它可編程裝置上執(zhí)行的指令提供了用于實現(xiàn)在流程圖和/或框圖的一個或多個塊中 執(zhí)行的功能/動作的處理。 附圖中的流程圖和框圖示出了根據(jù)本發(fā)明的各種實施例的系統(tǒng)、方法和計算機程 序產(chǎn)品可能實施的架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個塊可以表示一個模 塊、段或部分代碼,其包括了用于實現(xiàn)(各)指定邏輯功能的一個或多個可執(zhí)行指令。還應 當注意的是,在一些可選實施方式中,塊中表明的功能可以以沒有在附圖表明的次序發(fā)生。 例如,取決于涉及的功能,連續(xù)示出的兩個塊實際上可以基本同時執(zhí)行,或者有時塊可以以 相反的順序執(zhí)行。還應當注意的是,框圖和/或流程圖示的每個塊,以及框圖和/或流程圖 示中的各塊的組合可以由執(zhí)行特定功能或動作的專用的基于硬件的系統(tǒng),或者專用的硬件 和計算機指令的組合來實施。 說明性實施例可以在許多不同類型的數(shù)據(jù)處理環(huán)境中使用,這些數(shù)據(jù)處理環(huán)境包 括分布數(shù)據(jù)處理環(huán)境、單一數(shù)據(jù)處理裝置等。為了提供描述說明性實施例的特定組件和功 能的內(nèi)容,下文提供了圖l和2作為示例環(huán)境,其中可以實現(xiàn)說明性實施例的各方面。盡管 關(guān)于圖l和2的描述將主要集中在可編程直接存儲器存取(DMA)引擎的單一數(shù)據(jù)處理裝置實現(xiàn)上,但這僅是示例,并不旨在明示或暗示關(guān)于本公開的特征的任何限制。相反地,說明 性實施例旨在包括分布數(shù)據(jù)處理環(huán)境和實施例,其中可以編程DMA引擎以在沒有主機處理 器干預的情況下執(zhí)行指令。 現(xiàn)在參照附圖,特別是參照圖l-2,提供了數(shù)據(jù)處理環(huán)境的示意圖,其中可以實現(xiàn) 本公開的說明性實施例。應當理解,圖l-2僅作為示例,并不旨在明示或暗示關(guān)于其中可以 實現(xiàn)本公開的各方面或?qū)嵤├沫h(huán)境的任何限制。在不背離本公開的精神和范圍的情況 下,可以對描述的環(huán)境作出許多修改。 現(xiàn)在參照附圖,圖1是數(shù)據(jù)處理系統(tǒng)的示例性框圖,其中可以實現(xiàn)本公開的各方 面。圖1所示的示例性數(shù)據(jù)處理系統(tǒng)是CELL寬帶引擎(CBE)數(shù)據(jù)處理系統(tǒng)的示例。盡管 在本公開的優(yōu)選實施例的描述中采用了 CBE,但是本發(fā)明不限于此,這在本領(lǐng)域技術(shù)人員閱 讀下面的描述時將是顯而易見的。 如圖1所示,CBE 100包括具有處理器(PPU) 116和其Ll高速緩存112和L2高速 緩存113的電源處理器元件(PPE),以及多個協(xié)同處理器元件(SPE) 120-134,每個協(xié)同處理 元件具有其自己的協(xié)同處理單元(SPU) 140-154、存儲器流程控制155-162、局部存儲器或 存儲(LS) 163-170、以及總線接口單元(BIU單元)180-194,該總線接口單元可以例如是組 合直接存儲器存取(DMA)引擎、存儲器管理單元(匪U)和總線接口單元。還提供了高帶寬 內(nèi)部元件互連總線(EIB)196、總線接口控制器(BIC)197和存儲器接口控制器(MIC)198。
CBE 100可以是片上系統(tǒng)(system-on-a-chip),使得圖1所示的每個元件可以提 供在單個微處理器芯片上。此外,CBE 100是異種(heterogeneous)處理環(huán)境,在該異種處 理環(huán)境中,每個SPU可以從系統(tǒng)中的每個其它的SPU接收不同的指令。此外,用于SPU的指 令集與PPU的指令集不同。 SPE 120-134彼此耦合,并且經(jīng)由EIB 196耦合到L2高速緩存114。此外,SPE 120-134經(jīng)由EIB 196耦合到MIC 198和BIC 197。 MIC 198提供到共享存儲器199的通信 接口。 BIC 197提供在CBE IOO和其它外部總線及設備之間的通信接口。
PPE IIO是雙線程PPE 110。這種雙線程PPE 110禾P8個SPE 120-134的組合使 CBE 100能夠同時處理10個線程和超過128個未完成的存儲器請求。PPE 110用作處理大 部分計算工作量的其它8個SPE 120-134的控制器。例如,PPE 110可用于運行常規(guī)操作 系統(tǒng),而SPE 120-134進行矢量浮點代碼的執(zhí)行。 SPE 120-134包括協(xié)同處理單元(SPU) 140_154、存儲器流程控制單元155_162、局 部存儲器或存儲160-174和接口單元180-194。在一個示例性實施例中,局部存儲器或存儲 160-174包括對于PPE 110可見并且可以由軟件直接尋址的256KB指令和數(shù)據(jù)存儲器。
PPE 110可以為SPE 120-134加載小程序或線程,將各SPE鏈接在一起以處理復雜 操作中的每個步驟。例如,并入CBE 100的機頂盒可以記載用于讀取DVD、視頻和音頻解碼 和顯示的程序,并且數(shù)據(jù)將從一個SPE排出到另一 SPE,直到其最后在輸出顯示上終止。在 4GHz,每個SPE 120-134為具有類似性能等級的PPE 110給出理論上32GFL0P的性能。
存儲器流程控制單元(MFC) 155-162起到用于SPU到剩余的系統(tǒng)和其它元件的接 口的作用。MFC 155-162為主存儲和局部存儲160-174之間的數(shù)據(jù)傳輸、保護和同步提供主 要的機制。邏輯上,MFC用于處理器中的每個SPU。 一些實現(xiàn)方式可以在多個SPU之間共享 單個MFC的資源。在這種情況下,為MFC限定的所有功能程序(facility)和命令必須表現(xiàn)為獨立于用于每個SPU的軟件。共享MFC的效果限制于依賴于實施的功能程序和命令。
圖2是根據(jù)本公開的示例性實施例的典型的存儲器流程控制(MFC)單元200的示 例性框圖。在該示例性實施例中,MFC 200具有兩個到協(xié)同處理單元(SPU)的接口210和 212、兩個到總線接口單元(BIU)220的接口 214和216、以及兩個到可選的SL 1高速緩存 230的接口 222和224。 SPU接口 210和212是SPU信道接口 210和SPU局部存儲接口 212。 SPU信道接口 210允許SPU訪問MFC功能程序和發(fā)布MFC命令。SPU局部存儲接口 212由 MFC 200使用以訪問SPU中的局部存儲。 一個到BIU 220的接口 216允許存儲器映射1/ O(匪IO)訪問MFC功能程序。這個接口 216還允許其它處理器發(fā)布MFC命令。使用匪IO發(fā) 布的命令稱為MFC代理(proxy)命令。 到SL 1高速緩存的接口222和224主要用于數(shù)據(jù)傳輸。 一個接口 222由MFC 200 使用以訪問在主存儲中的地址轉(zhuǎn)換表,而另一個接口 224用于在主存儲和局部存儲之間數(shù) 據(jù)的傳輸。 如圖2所示,在典型MFC中的主單元包括存儲器映射輸入/輸出(匪IO)接口 240、 MFC寄存器250和DMA引擎260。匪IO接口 240將SPU的MFC功能程序映射到系統(tǒng)的真實 地址空間。這允許從系統(tǒng)中的任何處理器或任何設備來訪問MFC功能程序。此外,匪IO接 口 240可以配置為將SPU的局部存儲映射到真實地址空間。這允許從系統(tǒng)中的任何處理器 或任何設備直接訪問局部存儲,從而實現(xiàn)局部存儲至局部存儲的傳輸,以及1/0設備直接 訪問SPU的局部存儲域的能力。 MFC寄存器單元250包含大部分MFC功能程序。對于本公開尤其重要的是,MFC寄 存器單元250包括SPU局部存儲限制寄存器功能程序。使用該功能程序,特權(quán)軟件可以對 SPE的局部存儲的大小設置限制,如將在下面更詳細的描述的。 數(shù)據(jù)的同步和傳輸通常上是MFC 200內(nèi)的DMA引擎260的職責。DMA引擎260可 以在SPU的局部存儲和主存儲區(qū)域之間移動數(shù)據(jù)??蛇x地,數(shù)據(jù)可以緩存在SL l高速緩存 中。 通過將DMA命令請求通過命令隊列270和280之一排列到MFC, SPE和電源處理器 元件(PPE)指令MFC 200執(zhí)行這些DMA操作。由SPE發(fā)布的命令排列到MFC SPU命令隊列 270。由PPE發(fā)布的命令排列到MFC代理命令隊列280。 MFC使用存儲器映射單元(匪U) 290 執(zhí)行所有的MFC地址轉(zhuǎn)換和DMA傳輸所需的MFC訪問保護檢查。 MFC命令提供了主要的方法,該方法使得在SPU中執(zhí)行的代碼能夠訪問主存儲,并 且保持與系統(tǒng)中的其它處理器和設備的同步。還提供管理可選高速緩存的命令。MFC命令 可以由SPU上運行的代碼來發(fā)布,也可以由在另一處理器或設備(如PPE)上運行的代碼來 發(fā)布。在相關(guān)聯(lián)的SPU上運行的代碼執(zhí)行一系列的信道指令來發(fā)布MFC命令。在其它處理 器或設備上運行的代碼執(zhí)行一系列的存儲器映射輸入/輸出(匪IO)傳輸以將MFC命令發(fā) 布到SPE。所發(fā)布的命令被排列到命令隊列270和280之一。 通常,可以使用MFC寄存器單元250的匪IO寄存器,或者通過由相關(guān)聯(lián)的SPU執(zhí) 行的信道指令來排列命令。匪IO方法旨在由PPE使用以控制主存儲和代表SPE的相關(guān)聯(lián)的 局部存儲之間的數(shù)據(jù)傳輸。傳輸數(shù)據(jù)的MFC命令稱為MFC DMA命令。MFC DMA命令的數(shù)據(jù) 傳輸方向總是SPE的觀點(perspective)參照。因此,認為將數(shù)據(jù)傳輸?shù)絊PE (從主存儲到 局部存儲)的命令是取得命令,而認為將數(shù)據(jù)從SPE輸出(從局部存儲到主存儲)的命令是存放命令。 傳輸數(shù)據(jù)的命令稱為MFC DMA命令。這些命令轉(zhuǎn)換成局部存儲域和主存儲域之間 的DMA傳輸。每個MFC可以典型地同時支持多個DMA傳輸,并且能夠保持和處理多個MFC 命令。每個MFC DMA數(shù)據(jù)傳輸命令請求涉及局部存儲地址(LSA)和有效地址(EA)。局部 存儲地址可以僅直接尋址其相關(guān)聯(lián)的SPU的局部存儲區(qū)域。有效地址具有更普通的應用, 這是由于如果所有的SPU局部存儲區(qū)域混入真實地址空間,有效地址可以引用包括所有的 SPU局部存儲區(qū)域的主存儲。 重新參照圖1和2,使用上面的架構(gòu),操作系統(tǒng)在PPE IIO上運行,其目的是控制 和配合(orchestrate) SPE 120-134的操作。在執(zhí)行操作系統(tǒng)時,PPE IIO將要在每個SPE 120-134上運行的程序、或部分程序(例如線程)初始化。當PPE 110使SPE 120-134執(zhí)行上 下文切換,即改變由SPE 120-134正在執(zhí)行的程序或部分程序時,PPE 110將SPE 120-134 初始化以執(zhí)行新的程序或部分程序。這種初始化例如可以涉及在多個SPU控制寄存器(即, 圖2中的MFC寄存器單元250)中設置值,該寄存器儲存用于控制SPE 120-134的各種操作 特性的值。 通過本發(fā)明,在SPE 120-134中提供功能程序,用于限定局部存儲163-170的大小 限制。該功能程序是特權(quán)功能程序,即該功能程序僅能夠由在PPE 110或SPE 120-134上 運行的特權(quán)軟件訪問。尤其是,該功能程序僅可以由在PPE 110上運行的操作系統(tǒng)或其它 特權(quán)軟件寫入。該功能程序可以由PPE 110以及SPE 120-134本身(例如存儲器流程控制 器(MFC))上運行的操作系統(tǒng)或其它特權(quán)軟件讀取,以訪問局部存儲163-170。
具體地,本公開的功能程序包括局部存儲限制寄存器(LSLR),該局部存儲限制寄 存器可以是MFC寄存器單元250中的匪IO寄存器,和用于寫入以及從LSLR讀取的對應電 路的一部分。PPE 110可以經(jīng)由匪I0接口 240將值寫入該LSLR,從而控制與SPE 120-134 相關(guān)聯(lián)的局部存儲的大小。例如,該值可以是來自基址的用于為局部存儲識別最大可訪問 地址的偏移值、實際最大可訪問地址本身、實際容量值等。每個SPE 120-134可以包含這種 LSLR,并且每個LSLR可以用相同或不同值編程。也就是說,LSLR對每個SPE是唯一的,并 且包含多個SPE的系統(tǒng)可以在每個SPE中具有不同的值。 每次在SPE 120-134中上下文切換時,PPE 110具有為那個SPE設置儲存在LSLR 中的值的能力。LSLR的默認值可以是局部存儲163-170的最大大小。上下文切換是正在 由SPE 120-134的SPU 140-154執(zhí)行的程序或部分程序(例如線程)中的任何變化。這 允許PPE 110設置容易受到局部存儲163-170的大小影響的程序或部分程序的局部存儲 163-170的大小。 儲存在LSLR中的大小限制值與局部存儲163-170的每個訪問共同使用,無論該訪 問是來自與局部存儲163-170相關(guān)聯(lián)的SPU 140-154,或者來自外部處理器(即PPE 110 或其它SPE 120-134)。如果從SPU 140-150訪問局部存儲163-170,則利用局部存儲地址。 如果從外部設備(如PPE 110或另一SPU 140-154)訪問局部存儲163-170,則將有效地址 轉(zhuǎn)換成局部存儲地址,然后該局部存儲地址用于訪問局部存儲163-170。對于下面的公開目 標,為了避免關(guān)于正在使用的是哪個地址的任何混淆,術(shù)語"請求地址"將用于指在訪問請 求中接收的局部存儲地址或有效地址,這取決于正在試圖訪問局部存儲的是哪個單元(即 相關(guān)聯(lián)的SPU或外部設備)。然而,應當注意,在任何情況下,最終與在LSLR中儲存的大小限制值比較的地址是局部存儲地址,該局部存儲地址由SPU140-150提供,或者是有效地址轉(zhuǎn)換的結(jié)果。 作為使用大小限制值限定局部存儲的大小的一個示例,當與局部存儲(例如,局部存儲163)相關(guān)聯(lián)的SPU(例如,SPU 140)使用請求地址訪問局部存儲163時,將對應于請求地址的局部存儲地址與儲存在LSLR中的局部存儲限制大小值比較。如果局部存儲地址小于局部存儲限制大小,則局部存儲地址用于訪問局部存儲163的適當部分。如果局部存儲地址等于或大于局部存儲限制容大小,則局部存儲地址相對于局部存儲限制大小的模數(shù)(模)用于訪問局部存儲163的適當部分。實際上,當達到局部存儲限制大小時,局部存儲163繞回到開始的地址,并且訪問預先儲存在局部存儲163中的指令/數(shù)據(jù)。
本領(lǐng)域技術(shù)人員應當理解,圖1-2中的硬件可以依據(jù)實現(xiàn)方式變化。除了圖1-2所示的硬件或者作為替代,可以使用其它的外部硬件或外圍設備(如閃存、等效的非易失性存儲器或光盤驅(qū)動器等)。同樣,在不背離本公開的精神和范圍的情況下,除了前面提到的對稱多處理(SMP)系統(tǒng)外,說明性實施例的處理可以應用到多處理器數(shù)據(jù)處理系統(tǒng)。
此外,數(shù)據(jù)處理系統(tǒng)100可以采取多種不同的數(shù)據(jù)處理系統(tǒng)的任何一種的形式,這些數(shù)據(jù)處理系統(tǒng)包括客戶端計算設備、服務器計算設備、桌面計算機、膝上型計算機、電話或其它通信設備、個人數(shù)字助理(PDA)等。在一些說明性示例中,例如,數(shù)據(jù)處理系統(tǒng)100可以是便攜計算設備,該便攜計算設備配置有閃存,以提供用于儲存操作系統(tǒng)文件和/或用戶生成數(shù)據(jù)的非易失存儲器。本質(zhì)上,數(shù)據(jù)處理系統(tǒng)ioo可以是任何已知的或今后開發(fā)的數(shù)據(jù)處理系統(tǒng)而沒有架構(gòu)上的限制。 說明性示例提供了一種用于增強的、包括復雜指令集的直接存儲器存取(DMA)引擎的機制。來自協(xié)同處理單元(SPU)的DMA請求可以被編碼在程序中,該程序?qū)懭胄薷脑阪湵碇械臄?shù)據(jù)的DMA指令集中。整個DMA指令集隨后可以由DMA引擎執(zhí)行而沒有主機處理器的干予頁(intervention)。 圖3圖示了根據(jù)說明性實施例,通過將儲存在存儲器中的數(shù)據(jù)傳輸?shù)酱鎯ζ髦械牟煌恢没蚓植看鎯?,在鏈表中修改?shù)據(jù)的當前處理的示例。當數(shù)據(jù)傳輸?shù)酱鎯ζ鲿r,主機處理器302(如協(xié)同處理器單元(SPU)、電源處理器元件(PPE)等)與直接存儲器存取(DMA)引擎304相互作用,以便將存儲器306內(nèi)的鏈表中的數(shù)據(jù)傳輸?shù)酱鎯ζ?06內(nèi)的另一位置或局部存儲。偽代碼(pseudo code)308描述了主機處理器302和DMA引擎304之間的相互作用的示例。在偽代碼308中,在步驟310,主機處理器302設置數(shù)據(jù)的當前指針等于headptr。 headptr是到鏈表中第一元素的指針。在步驟312,主機處理器302然后設置存儲器中數(shù)據(jù)的預期的位置等于的第一位置指針。 在步驟314,主機處理器302執(zhí)行do函數(shù),其中主機處理器302在步驟316請求從當前指針到存儲器中的位置的記錄傳輸。在步驟318, DMA引擎304將數(shù)據(jù)從當前指針移動到存儲器中的位置,并且將完成狀態(tài)通知(post)回主機處理器302。在步驟320,主機處理器302等待來自DMA引擎304的完成狀態(tài),并且一旦接收到完成狀態(tài),就從現(xiàn)在儲存在存儲器中的記錄中得到下一指針。主機處理器302然后在步驟322使當前指針等于下一指針,并且在步驟324使存儲器中的位置等于下一位置。持續(xù)進行do函數(shù),直到在步驟326下一指針指示結(jié)尾。 在步驟318,一旦DMA引擎304將完成狀態(tài)通知回主機處理器302,來自鏈表的數(shù)據(jù)現(xiàn)在處于存儲器306中的一系列數(shù)據(jù)緩沖器中。主機處理器302的相互作用可以由DMA完成命令上的中斷來驅(qū)動。然而,驅(qū)動通過主機處理器302的數(shù)據(jù)傳輸?shù)奶幚碚埱蠖鄠€主機循環(huán)。 圖4示出了根據(jù)一個說明性實施例,通過使用增強的直接存儲器存取(DMA)引擎,將儲存在存儲器中的數(shù)據(jù)傳輸?shù)酱鎯ζ髦械牟煌恢没蚓植看鎯?,傳輸或修改在鏈表中的?shù)據(jù)的處理的示例。在該示例中,當數(shù)據(jù)傳輸?shù)酱鎯ζ鲿r,主機處理器402(如協(xié)同處理器單元(SPU)、電源處理器元件(PPE)等)可以將程序儲存在局部存儲407中,該局部存儲407可以是在增強的DMA引擎404內(nèi)的或者可由增強的DMA引擎直接訪問(如虛線框所示)的存儲器。偽代碼408描述了主機處理器402和增強的DMA引擎404之間的相互作用的示例。
在偽代碼408中,在步驟410,主機處理器402將程序412儲存在局部存儲407或存儲器406中,并且在步驟411用參數(shù)初始化DMA引擎404內(nèi)的寄存器。主機處理器402初始化的參數(shù)可以是頭部指針(headptr)和第一位置指針。headptr和第一位置指針可以指向局部存儲407中的局部存儲器地址(LSA)或存儲器406中的有效地址(EA)。因此,不是如在傳統(tǒng)DMA引擎操作中的僅訪問存儲器406,本說明性實施例的DMA引擎404使用如由主機處理器402初始化的LSA或EA訪問局部存儲407和存儲器406。 DMA引擎404然后可以使用豐富的指令集加載、儲存或移動數(shù)據(jù)到存儲器406和局部存儲407,或者從存儲器406和局部存儲407加載、儲存或移動數(shù)據(jù),DMA引擎404使用該指令集編程。
程序412在步驟414將數(shù)據(jù)的當前指針設置成等于headptr,并且在步驟416將存儲器中的數(shù)據(jù)預期的位置指針設置成等于第一位置指針,該程序412將由增強的DMA引擎404全部執(zhí)行,并且沒有受到主機處理器402的干預。在步驟418,增強的DMA引擎404執(zhí)行do功能。在步驟420,增強的DMA引擎404將數(shù)據(jù)從由當前指針指示的地址移動到由預期的位置指針指示的地址,然后在步驟422從當前儲存在存儲器中的記錄獲得下一指針。增強的DMA引擎404然后在步驟424使當前指針等于下一指針,并且在步驟426使預期的位置指針等于下一位置。持續(xù)進行do功能,直到在步驟428下一指針指向結(jié)尾。如果在步驟428下一指針指向結(jié)尾,則增強的DMA引擎404在步驟430將完成狀態(tài)通知回主機處理器402。 在步驟432,不由增強的DMA引擎404執(zhí)行程序412,直到偽代碼408中主機處理器402請求增強的DMA引擎404執(zhí)行局部存儲407中的程序412。然后,主機處理器402在步驟434等待來自增強的DMA引擎404的完成狀態(tài),并且來自鏈表的數(shù)據(jù)現(xiàn)在處于存儲器406的一系列數(shù)據(jù)緩沖器中。主機處理器402的相互作用可以再次由DMA完成命令上的中斷來驅(qū)動。然而,通過單獨執(zhí)行程序412的增強的DMA引擎404,主機處理器402現(xiàn)在可以在正在處理程序412的同時處理其它任務。也就是說,主機處理器402需要為驅(qū)動數(shù)據(jù)傳輸做非常少的事情,并且可以集中精力在數(shù)據(jù)處理上,該數(shù)據(jù)處理在鏈表中的數(shù)據(jù)在存儲器406中可獲得后是必要的。 為了使增強的DMA引擎404執(zhí)行程序412,增強的DMA引擎404需要豐富的指令集。例如,可以編程增強的DMA引擎404以執(zhí)行如下指令
條件分支;
比較; 力B、減、乘、除、旋轉(zhuǎn)、移位、邏輯和、邏輯或、邏輯異或、或邏輯反轉(zhuǎn);
11
開始臨界的;
浮點加、浮點乘、浮點除、或浮點比較;加載中間值;從存儲器加載值;
值儲存到存儲器;
從存儲加載值;
將港
值儲存到存儲;數(shù)據(jù)從存儲器移動到存儲;數(shù)據(jù)從存儲移動到存儲器;
完成和返回狀態(tài);獲得傳輸狀態(tài);
原子鎖定(atomic locking)操作,如測試和設置、加載和保存
儲存條件的,或
段(section)/結(jié)束臨界段;
同步(sync),該同步確保在下一指令開始前所有先前的指令已經(jīng)完成;
eieio,其確保在主存儲器中以由程序指定的順序執(zhí)行禁止高速緩存的存儲訪
問;或者 在處理器架構(gòu)中執(zhí)行的其它指令,如在指令架構(gòu)中包括的那些指令,如在復雜指令集計算機(CISC)架構(gòu)、減少的指令集計算(RISC)架構(gòu)、非常長的指令語言(VLIW)架構(gòu)、最小指令集計算機(MISC)結(jié)構(gòu)、明確并行指令計算(EPIC)架構(gòu)單個指令、多個數(shù)據(jù)(SIMD)架構(gòu)等中的那些指令。 同步指令提供了排序功能,其確保所有指令在同步指令完成前開始,并且在同步
指令完成前沒有隨后的指令開始。當同步指令完成時,在同步指令完成前所有的存儲訪
問開始。作為同步指令使用的示例,以下的代碼使得處理器等待直到數(shù)據(jù)高速緩存塊刷新
(flush) (dcbf)指令的結(jié)果寫入主存儲器 #Assume that GPR 4holds 0x00003000. dcbf 1,4 sync #Wait for memory to be updated. eieio指令提供了排序功能,其確保在eieio指令訪問存儲器之后的任何加載或儲存之前,所有加載和存儲指令先于eieio指令在主存儲器中完成而開始。如果eieio指令從程序中省略,并且存儲器位置是唯一的,則到主存儲器的訪問可以以任何次序執(zhí)行。作為eieio指令使用的示例,以下的代碼確保,如果存儲器位置處于禁止高速緩存的存儲器中,在提取位置CC的內(nèi)容或更新位置DD的內(nèi)容之前,在主存儲器中完成從位置AA的加載和到位置BB的存儲 load word and zero(lwz)r4, AA (rl) store (stw) r4, BB (rl) eieio lwz r5, CC(rl) stw r5, DD(rl)
12
應當注意,如果AA、BB、CC和DD的存儲器位置沒有在禁止高速緩存的存儲器中,則eieio指令不會對指令訪問存儲器的次序產(chǎn)生影響。 為了執(zhí)行這些指令,增強的DMA引擎404可以包括功能程序以便利指令的執(zhí)行,DMA引擎404由該指令編程,例如 指向要執(zhí)行的下一指令的指針,該指令可以是兩個存儲器之一的; 用于可能具有特定用途的中間結(jié)果的一組寄存器; 用于過程參數(shù)和中間結(jié)果的堆棧; —組數(shù)據(jù)緩沖器;或者 指示各種狀態(tài)和條件的一組標志。 也可以編程增強的DMA引擎404以支持某些預定的子例程,從而實現(xiàn)分散、聚集、跨距訪問、或其它通用數(shù)據(jù)傳輸范例。 在另一說明性實施例中,支持多個同時命令的增強的DMA引擎(如圖4的增強的DMA引擎404)通過為增強的DMA引擎能夠支持的每個命令包括一組程序計數(shù)器和一組專用狀態(tài)組,可以改進它們的支持。通過為每個由增強的DMA引擎支持的DMA命令項提供專用狀態(tài)和程序計數(shù)器組,增強的DMA引擎本質(zhì)上作為多線程處理器工作,其以并行或交叉存取的方式來同時處理一個或多個程序。因此,DMA引擎可以支持前面提到的若干組功能程序,以便便利指令的執(zhí)行,用該指令編程DMA引擎。作為多線程處理器工作在異種處理系統(tǒng)(如圖1的數(shù)據(jù)處理系統(tǒng)100)中是尤其有利的,該異種處理系統(tǒng)的特征是一個或多個處理器優(yōu)化成運行單個的、長的運行線程。在該說明性實施例中,DMA命令項成為輕量線程并且增強的DMA引擎成為多線程處理器。具有大量存儲器訪問的輕量線程可以由單個線程處理器派生(fork)到增強的DMA引擎,以便不用線程切換事件打擊(thrash)單線程處理器。
因此,說明性實施例提供了用于增強的直接存儲器存取(DMA)引擎的機制,該引擎包括復雜的指令集并且可以作為單線程處理器或多線程處理器工作。來自主機處理器的DMA請求被編碼到寫入DMA指令集的程序中。整個DMA指令集然后由DMA引擎用有限的主機處理器監(jiān)督(supervision)來執(zhí)行,主機處理器可以為驅(qū)動數(shù)據(jù)傳輸做非常少的事情,并且可以集中精力在數(shù)據(jù)處理上,該數(shù)據(jù)處理在鏈表中的數(shù)據(jù)在存儲器中可獲得后是必要的。 圖5描述了根據(jù)一個說明性實施例,通過與增強的直接存儲器存取(DMA)引擎相互作用的主機處理器執(zhí)行的示例操作。在操作開始時,主機處理器將程序儲存在局部存儲或存儲器中,用于傳輸或修改數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)(步驟502)。主機處理器用參數(shù)初始化增強的DMA引擎內(nèi)的寄存器,該參數(shù)指向局部存儲中的局部存儲地址(LSA)或存儲器中的有效地址(EA)(步驟504)。然后主機處理器請求增強的DMA引擎執(zhí)行程序(步驟506)。最后,主機處理器等待由增強的DMA引擎返回的完成狀態(tài)(步驟508),隨后結(jié)束處理。
圖6描述了根據(jù)一個典型實施例,通過與主機處理器相互作用的增強的直接存儲器存取(DMA)引擎執(zhí)行的示例操作。在操作開始時,增強的DMA引擎從主機處理器接收請求,以執(zhí)行位于局部存儲或存儲器中的程序(步驟602)。然后增強的DMA引擎執(zhí)行傳輸或修改數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)的程序(步驟604)。由增強的DMA引擎執(zhí)行的程序中的指令可以包括一個或多個上述的指令。 一旦增強的DMA引擎執(zhí)行全部程序時,增強的DMA引擎將完成狀態(tài)通知回請求主機處理器(步驟606),隨后結(jié)束處理。
因此,說明性實施例提供了用于增強的直接存儲器存取(DMA)引擎的機制,該引
擎包括復雜指令集并且可以作為單線程處理器或多線程處理器工作。來自主機處理器的
DMA請求編碼到寫入DMA指令集的程序中。全部DMA指令集然后由DMA引擎用有限的主機
處理器監(jiān)督來執(zhí)行,主機處理器為驅(qū)動數(shù)據(jù)傳輸做非常少的事情,并且可以集中精力在數(shù)
據(jù)處理上,該數(shù)據(jù)處理在數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)在局部存儲或存儲器中可獲得后是必要的。 如上所述,應當理解,說明性實施例可以采取完全硬件實施例、完全軟件實施例、
或包含硬件和軟件元件的實施例的形式。在一個示例實施例中,說明性實施例的機制在軟
件或程序代碼中實現(xiàn),該軟件或程序代碼包括但不限于固件、駐留軟件、微代碼等。 適用于儲存和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括至少一個通過系統(tǒng)總線
直接或間接耦合到存儲器元件的處理器。存儲器元件可以包括在程序代碼的實際執(zhí)行期間
使用的局部存儲器、大容量存儲、以及高速緩沖存儲器,上述存儲器為至少一些程序代碼提
供臨時存儲,以便減少在代碼執(zhí)行期間必須從大容量存儲取回代碼的次數(shù)。 輸入/輸出或I/0設備(包括但不限于鍵盤、顯示器、指示設備等)可以直接或通
過介入1/0控制器耦合到系統(tǒng)。網(wǎng)絡適配器也可以耦合到系統(tǒng),使得數(shù)據(jù)處理系統(tǒng)能夠通
過介入的私人或公共網(wǎng)絡耦合到其它數(shù)據(jù)處理系統(tǒng)或遠程打印機或存儲設備。調(diào)制解調(diào)
器、線纜調(diào)制解調(diào)器和以太網(wǎng)卡正是幾個目前可用的網(wǎng)絡適配器的類型。 已經(jīng)為了闡釋和說明的目的對本公開進行了描述,該描述不旨在窮舉或?qū)⒈景l(fā)明
限制成所公開的形式。許多修改和變化對于本領(lǐng)域技術(shù)人員是顯而易見的。選擇和描述了
實施例以便最好地解釋本發(fā)明的原理、實際應用,并且使本領(lǐng)域技術(shù)人員能夠理解本發(fā)明
的各種實施例,這些實施例具有適合可預見的特定用途的各種修改。
權(quán)利要求
一種用于在數(shù)據(jù)處理系統(tǒng)中,對作為單線程處理器操作的直接存儲器存取引擎進行編程的方法,所述方法包括從主機處理器接收與所述直接存儲器存取引擎相關(guān)聯(lián)的局部存儲或存儲器中的程序;從所述主機處理器接收在所述直接存儲器存取引擎中的請求,以使用一組參數(shù)執(zhí)行位于所述局部存儲或存儲器中的所述程序;通過所述直接存儲器存取引擎并且在沒有主機處理器干預的情況下執(zhí)行所述程序;以及響應于所述程序完成執(zhí)行,通過所述直接存儲器存取引擎,將完成通知發(fā)送到所述主機處理器,所述通知指示所述程序已經(jīng)完成執(zhí)行。
2. 根據(jù)權(quán)利要求1所述的方法,還包括從所述主機處理器接收參數(shù)組,所述主機處理器用到數(shù)據(jù)結(jié)構(gòu)的指針和第一位置指針 初始化所述直接存儲器存取引擎內(nèi)的寄存器,其中所述到數(shù)據(jù)結(jié)構(gòu)的指針指向局部存儲中 的局部存儲地址或存儲器中的有效地址中的至少一個,并且其中所述第一位置指針指向局 部存儲中的局部存儲地址或存儲器中的有效地址中的至少一個;將要存取的數(shù)據(jù)的當前指針設置為等于所述到數(shù)據(jù)結(jié)構(gòu)的指針;將數(shù)據(jù)預期的位置設置為等于所述第一位置指針;以及使用所述當前指針和所述預期的位置指針對數(shù)據(jù)執(zhí)行多個指令之一。
3. 根據(jù)權(quán)利要求1所述的方法,其中所述主機處理器在所述直接存儲器存取引擎正在 執(zhí)行所述程序的時間期間能夠執(zhí)行其它指令。
4. 根據(jù)權(quán)利要求1所述的方法,其中所述主機處理器是協(xié)同處理單元。
5. 根據(jù)權(quán)利要求4所述的方法,其中所述協(xié)同處理單元駐留在異種多核處理器內(nèi)的協(xié) 同處理元件內(nèi)。
6. 根據(jù)權(quán)利要求5所述的方法,其中所述異種多核處理器包括8個協(xié)同處理元件和一 個電源處理器元件。
7. 根據(jù)權(quán)利要求1所述的方法,其中所述直接存儲器存取引擎編程為支持某些預定的 子例程,以實現(xiàn)分散訪問、聚集訪問或跨距訪問的至少一個。
8. 根據(jù)權(quán)利要求1所述的方法,其中所述直接存儲器存取引擎用從指令集選擇的至少 一個指令編程,以修改數(shù)據(jù)結(jié)構(gòu)內(nèi)的數(shù)據(jù),所述指令集包括條件分支、比較、加、減、乘、除、 旋轉(zhuǎn)、移位、邏輯和、邏輯或、邏輯異或、邏輯反轉(zhuǎn)、浮點加、浮點乘、浮點除、以及浮點比較。
9. 根據(jù)權(quán)利要求1所述的方法,其中所述直接存儲器存取引擎用從指令集選擇的至少 一個指令編程,以修改數(shù)據(jù)結(jié)構(gòu)內(nèi)的數(shù)據(jù),所述指令集包括加載中間值、從存儲器加載值、 將值儲存到存儲器、從存儲加載值、將值儲存到存儲、將數(shù)據(jù)從存儲器移動到存儲、以及將 數(shù)據(jù)從存儲移動到存儲器。
10. 根據(jù)權(quán)利要求1所述的方法,其中所述直接存儲器存取引擎用從指令集選擇的至少一個指令編程,以修改數(shù)據(jù)結(jié)構(gòu)內(nèi)的數(shù)據(jù),所述指令集包括完成和返回狀態(tài)、獲得傳輸 狀態(tài)、原子鎖定、段/結(jié)束臨界段、同步和eieio。
11. 一種包括計算機可記錄介質(zhì)的計算機程序產(chǎn)品,所述計算機可記錄介質(zhì)具有在其 上記錄的計算機可讀程序,其中所述計算機可讀程序當在計算設備上執(zhí)行時,使得計算設備實現(xiàn)權(quán)利要求1-10的任一方法。
12. —種裝置,包括 直接存儲器存取引擎;耦合到所述直接存儲器存取引擎的局部存儲;以及耦合到所述直接存儲器存取引擎的存儲器,其中所述局部存儲或所述存儲器從主機處 理器接收包括指令的程序,所述指令在由所述直接存儲器存取引擎執(zhí)行時,使得所述直接 存儲器存取引擎從所述主機處理器接收請求,以使用一組參數(shù)來執(zhí)行位于所述局部存儲或所述存儲器 中的程序;在不受主機處理器干預的情況下,執(zhí)行所述程序;以及響應于所述程序完成執(zhí)行,將完成通知發(fā)送到所述主機處理器,所述通知指示所述程 序已經(jīng)完成執(zhí)行。
13. 根據(jù)權(quán)利要求12所述的裝置,其中所述指令還使得所述處理器 從所述主機處理器接收參數(shù)組,所述主機處理器用到數(shù)據(jù)結(jié)構(gòu)的指針和第一位置指針初始化所述直接存儲器存取引擎內(nèi)的寄存器,其中所述到數(shù)據(jù)結(jié)構(gòu)的指針指向局部存儲中 的局部存儲地址或存儲器中的有效地址中的至少一個,并且其中所述第一位置指針指向局 部存儲中的局部存儲地址或存儲器中的有效地址中的至少一個;將要存取的數(shù)據(jù)的當前指針設置為等于所述到數(shù)據(jù)結(jié)構(gòu)的指針; 將數(shù)據(jù)預期的位置設置為等于所述第一位置指針;以及 使用所述當前指針和所述預期的位置指針對數(shù)據(jù)執(zhí)行多個指令之一。
14. 根據(jù)權(quán)利要求12所述的裝置,其中所述主機處理器在所述直接存儲器存取引擎正 在執(zhí)行所述程序的時間期間能夠執(zhí)行其它指令。
15. 根據(jù)權(quán)利要求12的裝置,其中所述直接存儲器存取引擎編程為支持某些預定的子 例程,以實現(xiàn)分散訪問、聚集訪問或跨距訪問的至少一個。
16. 根據(jù)權(quán)利要求12的裝置,其中所述直接存儲器存取引擎用從指令集選擇的至少一 個指令編程,以修改數(shù)據(jù)結(jié)構(gòu)內(nèi)的數(shù)據(jù),所述指令集包括條件分支、比較、加、減、乘、除、旋 轉(zhuǎn)、移位、邏輯和、邏輯或、邏輯異或、邏輯反轉(zhuǎn)、浮點加、浮點乘、浮點除、以及浮點比較。
17. 根據(jù)權(quán)利要求12的裝置,其中所述直接存儲器存取引擎用從指令集選擇的至少一 個指令編程,以修改數(shù)據(jù)結(jié)構(gòu)內(nèi)的數(shù)據(jù),所述指令集包括加載中間值、從存儲器加載值、將 值儲存到存儲器、從存儲加載值、將值儲存到存儲、將數(shù)據(jù)從存儲器移動到存儲、以及將數(shù) 據(jù)從存儲移動到存儲器。
18. 根據(jù)權(quán)利要求12的裝置,其中所述直接存儲器存取引擎用從指令集選擇的至少一個指令編程,以修改數(shù)據(jù)結(jié)構(gòu)內(nèi)的數(shù)據(jù),所述指令集包括完成和返回狀態(tài)、獲得傳輸狀態(tài)、 原子鎖定、段/結(jié)束臨界段、同步和eieio。
全文摘要
提供一種用于對作為單線程處理器工作的直接存儲器存取引擎進行編程的機制。從主機處理器接收與直接存儲器存取引擎相關(guān)聯(lián)的局部存儲器中的程序。從主機處理器接收在直接存儲器存取引擎中的請求,該請求指示要執(zhí)行位于局部存儲器中的程序。在不受主機處理器干預的情況下,直接存儲器存取引擎執(zhí)行程序。響應于所述程序完成執(zhí)行,直接存儲器存取引擎將完成通知發(fā)送到主機處理器,該通知指示程序已經(jīng)完成執(zhí)行。
文檔編號G06F9/312GK101763245SQ200910222068
公開日2010年6月30日 申請日期2009年11月13日 優(yōu)先權(quán)日2008年12月23日
發(fā)明者布拉德·W·邁克爾, 布賴恩·K·弗拉赫斯, 查爾斯·R·約翰斯, 約翰·S·利伯蒂 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1