有源存儲器件聚集、分散和過濾的制作方法
【專利摘要】實(shí)施例涉及加載和存儲數(shù)據(jù)。一個(gè)方面包括用于在有源存儲器件中傳送數(shù)據(jù)的方法,該有源存儲器件包括存儲器和處理元件。取出并解碼指令用于由該處理元件執(zhí)行。基于確定該指令是聚集指令,處理元件確定要從中聚集數(shù)據(jù)元素的所述存儲器中的多個(gè)源地址以及所述存儲器中的目的地地址。將一個(gè)或多個(gè)聚集的數(shù)據(jù)元素從所述源地址傳送到存儲器中以所述目的地地址開始的連續(xù)位置?;诖_定所述指令是分散指令,確定要從中讀取在連續(xù)位置處的多個(gè)數(shù)據(jù)元素的所述存儲器中的源地址以及用于在不連續(xù)的位置處存儲所述數(shù)據(jù)元素的所述存儲器中的一個(gè)或多個(gè)目的地地址,并傳送所述數(shù)據(jù)元素。
【專利說明】有源存儲器件聚集、分散和過濾
【技術(shù)領(lǐng)域】
[0001]本公開一般涉及計(jì)算機(jī)存儲器,更具體地涉及向/從有源存儲器件中的存儲器傳送數(shù)據(jù)。
【背景技術(shù)】
[0002]計(jì)算機(jī)系統(tǒng)通常需要相當(dāng)大量的高速存儲器(比如隨機(jī)存取存儲器(RAM))來在計(jì)算機(jī)通電和操作時(shí)保持諸如數(shù)據(jù)和程序的信息。由于計(jì)算機(jī)系統(tǒng)具有增加的性能和復(fù)雜性,存儲器件需求持續(xù)增長。
[0003]從主處理器到存儲器件上的位置的通信可以涉及相當(dāng)長的數(shù)據(jù)存取時(shí)間和等待時(shí)間。主處理器訪問存儲器花費(fèi)的時(shí)間可以是例如幾百個(gè)周期,包括意識到數(shù)據(jù)不在高速緩存中(用于存儲器讀取)的時(shí)間、從主處理器的處理器核跨過模塊或其他封裝遍歷到I/o的時(shí)間、在多處理器/共享的存儲器系統(tǒng)中建立到存儲器的通道的仲裁時(shí)間、以及使數(shù)據(jù)進(jìn)或出存儲器單元的時(shí)間。當(dāng)要讀取或?qū)懭氲臄?shù)據(jù)值的存儲器地址散布在存儲器的各個(gè)不連續(xù)的位置時(shí),可能遇到進(jìn)一步的訪問時(shí)間延遲,特別是如果每次存取都需要地址翻譯。
【發(fā)明內(nèi)容】
[0004]示例實(shí)施例包括用于在有源存儲器件中傳送數(shù)據(jù)的方法,該有源存儲器件包括存儲器和處理元件。取出并解碼指令用于由該處理元件執(zhí)行?;诖_定該指令是聚集指令,處理元件確定要從中聚集數(shù)據(jù)元素的所述存儲器中的多個(gè)源地址以及所述存儲器中的目的地地址。將一個(gè)或多個(gè)聚集的數(shù)據(jù)元素從所述多個(gè)源地址傳送到存儲器中以所述目的地地址開始的連續(xù)位置?;诖_定所述指令是分散指令,確定要從中讀取在連續(xù)位置處的多個(gè)數(shù)據(jù)元素的所述存儲器中的源地址以及用于在不連續(xù)的位置處存儲所述數(shù)據(jù)元素的所述存儲器中的一個(gè)或多個(gè)目的地地址。將所述數(shù)據(jù)元素中的一個(gè)或多個(gè)從所述源地址傳送到一個(gè)或多個(gè)目的地地址。
[0005]另外的示例實(shí)施例包括有源存儲器件的處理元件,其包括:加載存儲隊(duì)列,配置為與所述有源存儲器件中的存儲器接口 ;指令緩沖器,耦接到所述加載存儲隊(duì)列,并且配置為接收指令;以及解碼器,耦接到所述指令緩沖器。所述解碼器配置為解碼所述指令,并且基于確定所述指令是聚集指令,所述處理元件配置為:確定要從中聚集數(shù)據(jù)元素的存儲器中的多個(gè)源地址以及存儲器中的目的地地址。處理元件還配置為將一個(gè)或多個(gè)聚集的數(shù)據(jù)元素從所述多個(gè)源地址傳送到存儲器中的以所述目的地地址開始的連續(xù)位置?;诖_定所述指令是分散指令,確定要從中讀取在連續(xù)位置處的多個(gè)數(shù)據(jù)元素的所述存儲器中的源地址,以及在不連續(xù)的位置處存儲所述數(shù)據(jù)元素的所述存儲器中的一個(gè)或多個(gè)目的地地址。將所述數(shù)據(jù)元素中的一個(gè)或多個(gè)從所述源地址傳送到所述一個(gè)或多個(gè)目的地地址。
[0006]進(jìn)一步的示例實(shí)施例包括有源存儲器件,其包括:存儲器以及配置為與所述存儲器通信的處理元件。所述處理元件配置為進(jìn)行包括以下處理的方法:取出并解碼指令,用于由該處理元件執(zhí)行。基于確定該指令是聚集指令,該處理元件確定要從中聚集數(shù)據(jù)元素的所述存儲器中的多個(gè)源地址和所述存儲器中的目的地地址。將一個(gè)或多個(gè)聚集的數(shù)據(jù)元素從所述多個(gè)源地址傳送到所述存儲器中的以所述目的地地址開始的連續(xù)位置?;诖_定所述指令是分散指令,確定要從中讀取在連續(xù)位置處的多個(gè)數(shù)據(jù)元素的所述存儲器中的源地址以及在不連續(xù)的位置處存儲所述數(shù)據(jù)元素的所述存儲器中的一個(gè)或多個(gè)目的地地址。將所述數(shù)據(jù)元素中的一個(gè)或多個(gè)從所述源地址傳送到所述一個(gè)或多個(gè)目的地地址。
[0007]通過本發(fā)明的技術(shù)實(shí)現(xiàn)了另外的特征和優(yōu)點(diǎn)。在此詳細(xì)描述了本發(fā)明的其他實(shí)施例和方面,并且其被認(rèn)為是要求保護(hù)的發(fā)明的一部分。為了更好地理解具有這些優(yōu)點(diǎn)和特征的本發(fā)明,請參見【具體實(shí)施方式】和附圖。
【專利附圖】
【附圖說明】
[0008]在本說明書的結(jié)尾處的權(quán)利要求書中具體指出并明確地聲明了作為發(fā)明的主題。結(jié)合附圖,本發(fā)明的以上和其他特征和優(yōu)點(diǎn)從以下的詳細(xì)描述而顯而易見,附圖中:
[0009]圖1例示根據(jù)實(shí)施例的有源存儲器的系統(tǒng)的框圖;
[0010]圖2例示根據(jù)實(shí)施例的具有有源存儲器的存儲器系統(tǒng)的框圖;
[0011]圖3例示根據(jù)實(shí)施例的具有有源存儲器的存儲器系統(tǒng)的示意圖;
[0012]圖4例示根據(jù)實(shí)施例的有源存儲器件中的處理元件的框圖;
[0013]圖5例示根據(jù)實(shí)施例在有源存儲器件中聚集分散的數(shù)據(jù)的例子;
[0014]圖6例示根據(jù)實(shí)施例在有源存儲器件中分散存儲數(shù)據(jù)的例子;
[0015]圖7例示根據(jù)實(shí)施例在有源存儲器件中在數(shù)據(jù)傳送時(shí)的數(shù)據(jù)過濾的例子;以及
[0016]圖8例示根據(jù)實(shí)施例用于在有源存儲器件中聚集、分散和過濾數(shù)據(jù)的流程圖。
【具體實(shí)施方式】
[0017]一個(gè)實(shí)施例指向有源存儲器件中的數(shù)據(jù)的聚集、存儲和過濾。該有源存儲器件可以是包括連接到邏輯部分和處理元件的多個(gè)存儲器元件(例如芯片)的任何適當(dāng)?shù)拇鎯ζ骷?。在一個(gè)實(shí)施例中,該有源存儲器件包括形成三維(“3D”)存儲器件(例如存儲器立方體(cube))的存儲器的層,其中各列芯片形成與處理元件和邏輯通信的區(qū)塊(vault)。該有源存儲器件可以包括配置為通信至芯片和其他處理元件的多個(gè)處理元件。在一個(gè)實(shí)施例中,處理元件通過互聯(lián)網(wǎng)絡(luò)訪問區(qū)塊中所選擇的地址。另外,互聯(lián)網(wǎng)絡(luò)提供了在有源存儲器件上的處理元件之間以及在處理元件和主處理器之間的通信路徑。每個(gè)區(qū)塊可以具有相關(guān)聯(lián)的存儲器控制器或者邏輯單元,該存儲器控制器或者邏輯單元也耦接到互聯(lián)網(wǎng)絡(luò)。
[0018]實(shí)施例包括可以使用有源存儲器件內(nèi)的多個(gè)位置(例如:存儲在特定地址的數(shù)據(jù))作為操作數(shù)來進(jìn)行一組復(fù)雜的操作的有源存儲器件。此外,提供處理,通過該處理,在有源存儲器件內(nèi)對這些操作數(shù)自治地進(jìn)行指令和操作。具體地,這些指令存儲在有源存儲器件本身內(nèi),并且不由主處理器執(zhí)行。在有源存儲器件中,存儲的指令被提供給處理元件用于由處理元件處理。在一個(gè)實(shí)施例中,處理元件是可編程的引擎,包括:指令緩沖器,具有分支(branching)能力和指令解碼的指令單元,向量、標(biāo)量和掩碼寄存器文件的混合,用于在存儲器和寄存器文件之間移動數(shù)據(jù)的多個(gè)加載/存儲單元,以及用于各種數(shù)據(jù)類型的算術(shù)和邏輯運(yùn)算的多個(gè)執(zhí)行單元。有源存儲器件中還包括:用于將虛擬地址轉(zhuǎn)換為物理地址的地址翻譯能力,用于按序排序在存儲器和處理元件之間的數(shù)據(jù)移動的統(tǒng)一加載/存儲隊(duì)列,以及用于與主處理器通信的處理器通信單元。
[0019]在一個(gè)實(shí)施例中,有源存儲器件配置為在從諸如主處理器或者另一處理元件的外部請求者接收到命令后,將配置信息或指令從有源存儲器件的一部分加載到處理元件。另夕卜,處理元件可以進(jìn)行在執(zhí)行加載的指令的同時(shí)計(jì)算的虛擬-真實(shí)地址翻譯。在一個(gè)例子中,當(dāng)執(zhí)行加載指令時(shí),有源存儲器件訪問來自存儲器位置的操作數(shù),并將該操作數(shù)放置在處理元件中的寄存器中。該存儲器位置的虛擬位置由加載指令產(chǎn)生并且被處理元件翻譯為真實(shí)地址。類似地,當(dāng)執(zhí)行存儲指令時(shí),有源存儲器件在存儲器位置寫入處理元件中的寄存器中的內(nèi)容(例如操作數(shù))。該存儲器位置的虛擬地址由存儲指令產(chǎn)生并且被處理元件翻譯為真實(shí)地址。
[0020]有源存儲器件中的處理元件的實(shí)施例還具有通過互聯(lián)網(wǎng)絡(luò)在有源存儲器件的任意部分中讀取或?qū)懭氩僮鲾?shù)的能力。具體地,處理元件可以使用互聯(lián)網(wǎng)絡(luò)訪問有源存儲器件中的其他區(qū)塊。在一個(gè)實(shí)施例中,處理元件形成池(pooled)并且經(jīng)由互聯(lián)網(wǎng)絡(luò)耦接到區(qū)塊,其中處理元件不是物理地位于區(qū)塊堆疊中。在一個(gè)實(shí)施例中,互聯(lián)網(wǎng)絡(luò)是諸如交叉開關(guān)的耦合器件,配置為將任意的處理元件連接到任意的存儲器區(qū)塊,前提是處理元件和存儲器區(qū)塊耦接到互聯(lián)網(wǎng)絡(luò)。在一個(gè)實(shí)施例中,互聯(lián)網(wǎng)絡(luò)可以耦接多個(gè)有源存儲器件,其中互聯(lián)網(wǎng)絡(luò)提供了分離的器件的處理元件和存儲器區(qū)塊之間的通信路徑。
[0021]在一個(gè)實(shí)施例中,處理元件與存儲器控制器一起作為堆疊的部分而被包括。另外,處理元件可以對讀取的操作數(shù)進(jìn)行復(fù)雜的運(yùn)算和邏輯操作并將得到的結(jié)果寫回存儲器中的位置。該有源存儲器件可以向主處理器返回單個(gè)結(jié)果值或者信號,指示期望的復(fù)雜操作的結(jié)果在有源存儲器件中已經(jīng)準(zhǔn)備好,由此對有源存儲器件進(jìn)行高帶寬處理,并且在有源存儲器件和主處理器之間使用較低帶寬通信。
[0022]有源存儲器件內(nèi)的處理能力可以減少在駐留在單獨(dú)的芯片上的處理器存取存儲器時(shí)將經(jīng)歷的存儲器等待時(shí)間和能量消耗。代替通過較低帶寬通信路徑將數(shù)據(jù)從存儲器放入到單獨(dú)的處理芯片、對數(shù)據(jù)進(jìn)行通常是非常簡單的計(jì)算、然后將處理過的數(shù)據(jù)傳送回到存儲器,主處理器可以配置有源存儲器件內(nèi)的處理元件,然后指示它們執(zhí)行數(shù)據(jù)處理任務(wù)。這可以通過從主處理器向有源存儲器件發(fā)送一個(gè)或多個(gè)命令來實(shí)現(xiàn)。在此情況下,在進(jìn)行數(shù)據(jù)處理的位置和存儲器之間的數(shù)據(jù)移動在其需要從存儲器行進(jìn)到數(shù)據(jù)處理位置的距離方面以及在遍歷存儲器層級的高速緩存的級別的數(shù)量方面都大大減少。
[0023]在一個(gè)實(shí)施例中,有源存儲器件包括在存儲器立方體內(nèi)的無狀態(tài)處理元件。處理元件對于主處理器中的程序而言看起來就像長等待時(shí)間功能單元。處理元件本身是可編程的引擎,包括:指令緩沖器,包括分支能力和指令解碼的指令單元,向量、標(biāo)量和掩碼寄存器文件的混合,用于在存儲器和寄存器文件之間移動數(shù)據(jù)的多個(gè)加載/存儲單元,以及用于各種數(shù)據(jù)類型的算術(shù)和邏輯運(yùn)算的多個(gè)執(zhí)行單元。還包括:用于將程序虛擬地址轉(zhuǎn)換為實(shí)際地址的地址翻譯能力,用于按序排序在存儲器和處理元件之間的數(shù)據(jù)移動的統(tǒng)一加載/存儲隊(duì)列,以及用于與主處理器通信的處理器通信單元。
[0024]圖1例示根據(jù)實(shí)施例的用于在存儲器存儲和取回?cái)?shù)據(jù)的系統(tǒng)的框圖。圖1所示的系統(tǒng)100包括計(jì)算機(jī)處理器(CPU)102、具有存儲器件的存儲器106、以及用于接收和處理來自計(jì)算機(jī)處理器102的要存儲在存儲器106中的數(shù)據(jù)的存儲器控制器104和處理元件108。計(jì)算機(jī)處理器102還可以接口到高速緩存體系110,該高速緩存體系110可以包括多個(gè)高速緩存的層級,其中高速緩存體系Iio的一個(gè)或多個(gè)層級可以包括在計(jì)算機(jī)處理器102內(nèi)和/或在計(jì)算機(jī)處理器102外部。
[0025]存儲器控制器104可以與計(jì)算機(jī)處理器102通信,并且接收來自計(jì)算機(jī)處理器102的寫請求而不使用處理元件108的功能。寫請求包含要被寫到存儲器106的數(shù)據(jù)以及用于標(biāo)識該數(shù)據(jù)將被寫到的存儲器106中的位置的虛擬地址。存儲器控制器104將數(shù)據(jù)存儲在存儲器106內(nèi)的真實(shí)地址。在存儲或取回?cái)?shù)據(jù)時(shí),計(jì)算機(jī)處理器102可以將該虛擬地址映射到存儲器106中的真實(shí)地址處。
[0026]在實(shí)施例中,處理元件108與計(jì)算機(jī)處理器102通信,并且接收來自計(jì)算機(jī)處理器102的命令。該命令可以對應(yīng)于存儲在存儲器106中的指令。該命令還可以包括用于標(biāo)識數(shù)據(jù)將被寫到的存儲器106中的位置的虛擬地址。存儲器控制器104和/或處理元件108將數(shù)據(jù)存儲在存儲器106內(nèi)的真實(shí)地址處。在實(shí)施例中,當(dāng)存儲或取回?cái)?shù)據(jù)時(shí),處理元件108將虛擬地址映射到存儲器106中的真實(shí)地址。每次存儲器106中的數(shù)據(jù)被修改時(shí),對于給定的邏輯地址的真實(shí)地址可能改變。如以下更詳細(xì)描述的,計(jì)算機(jī)處理器102向存儲器106提供命令,其中處理元件108接收該命令并且從存儲器106取出相應(yīng)的指令。該系統(tǒng)100是可以用來進(jìn)行在此所述的處理的配置的一個(gè)例子。盡管已經(jīng)將系統(tǒng)100描繪為僅具有單個(gè)存儲器106、存儲器控制器104、處理元件108或計(jì)算機(jī)處理器102,但是將理解,其他實(shí)施例還將在具有兩個(gè)或多個(gè)存儲器106、存儲器控制器104、處理元件108或計(jì)算機(jī)處理器102的其他系統(tǒng)中操作。在一個(gè)實(shí)施例中,存儲器106、存儲器控制器104、處理元件108和計(jì)算機(jī)處理器102不位于相同的計(jì)算機(jī)內(nèi)。例如,存儲器106、處理元件108和存儲器控制器104可以位于一個(gè)物理位置(例如在存儲器模塊上),而計(jì)算機(jī)處理器102位于另一物理位置(例如,計(jì)算機(jī)處理器102經(jīng)由網(wǎng)絡(luò)訪問存儲器控制器104和/或處理元件108)。另夕卜,在此所述的處理的部分可以跨越存儲器106、存儲器控制器104、處理元件108和計(jì)算機(jī)處理器102中的一個(gè)或多個(gè)。
[0027]圖2是實(shí)現(xiàn)有源存儲器的計(jì)算機(jī)系統(tǒng)200的實(shí)施例的示意圖。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)200包括有源存儲器件202、有源存儲器件203和有源存儲器件204。有源存儲器件202包括存儲器區(qū)塊206、存儲器控制器208和處理元件201。在實(shí)施例中,處理元件210、存儲器區(qū)塊206和存儲器控制器208經(jīng)由互聯(lián)網(wǎng)絡(luò)212耦接并通信。具體地,處理元件210經(jīng)由互聯(lián)網(wǎng)絡(luò)212與存儲器區(qū)塊206、存儲器控制器208和諸如有源存儲器件203和204的其他存儲器件通信?;ヂ?lián)網(wǎng)絡(luò)212還通過處理器鏈路220和222耦接到主處理器224?;ヂ?lián)網(wǎng)絡(luò)212提供用于諸如處理元件、存儲器控制器和存儲器的該器件的各部分之間的通信的快速和高帶寬路徑,以便為有源存儲器提供改進(jìn)的性能和減少的等待時(shí)間。
[0028]有源存儲器件203包括存儲器區(qū)塊226、存儲器控制器228和處理元件230。在實(shí)施例中,處理元件230、存儲器區(qū)塊226和存儲器控制器228全部位于互聯(lián)網(wǎng)絡(luò)212的同一偵牝比如在單個(gè)堆疊內(nèi)。通過將處理元件230定位在與存儲器區(qū)塊226相同的堆疊中,當(dāng)訪問存儲器區(qū)塊226中的位置時(shí),減少了等待時(shí)間,因此進(jìn)一步改進(jìn)性能。在一個(gè)實(shí)施例中,有源存儲器204包括存儲器區(qū)塊214和經(jīng)由互聯(lián)網(wǎng)絡(luò)212耦接到處理元件210和處理元件218的存儲器控制器216。如所示的,處理元件218位于互聯(lián)網(wǎng)絡(luò)212的與存儲器控制器216和存儲器區(qū)塊214不同的另一側(cè)。在實(shí)施例中,有源存儲器件202、203和204包括多層堆疊的可尋址存儲器元件。此外,堆疊的存儲器可以被劃分為存儲器區(qū)塊206、226和214,或者共享共同的存儲器控制器和/或存儲器元件的存儲器件的三維分塊的區(qū)域,并且能夠彼此獨(dú)立地服務(wù)對于其自己的存儲器域的存儲器訪問請求。
[0029]在實(shí)施例中,處理元件、存儲器區(qū)塊和存儲器控制器可以依賴于應(yīng)用而按適當(dāng)?shù)姆绞讲贾谩@?,一個(gè)或多個(gè)諸如處理元件218的處理元件可以被定位在互聯(lián)網(wǎng)絡(luò)212的一側(cè),并且可以作為可用于訪問耦接到互聯(lián)網(wǎng)絡(luò)212的存儲器系統(tǒng)中的任意存儲器的處理元件的池來操作。連成池的處理元件不限于訪問特定存儲器區(qū)塊,因此在接收來自主處理器224的命令時(shí)可以利用一個(gè)或多個(gè)存儲器元件。因而,處理元件218可以配置為訪問每個(gè)存儲器區(qū)塊206、226和214。在另一實(shí)施例中,一個(gè)或多個(gè)諸如處理元件230的處理元件定位為包括存儲器區(qū)塊226和存儲器控制器228的堆疊的一部分。在這樣的配置中,處理元件230配置為訪問存儲器區(qū)塊226而不經(jīng)過互聯(lián)網(wǎng)絡(luò)212。處理元件230也耦接到互聯(lián)網(wǎng)絡(luò)212并且可以訪問存儲器區(qū)塊206和214。在一個(gè)實(shí)施例中,一個(gè)或多個(gè)諸如處理元件210的處理元件位于互聯(lián)網(wǎng)絡(luò)212的與存儲器區(qū)塊206和存儲器控制208的相對側(cè)。在該配置中,處理元件210配置為訪問耦接到互聯(lián)網(wǎng)絡(luò)212的任意存儲器,包括存儲器區(qū)塊226和 214。
[0030]在實(shí)施例中,計(jì)算機(jī)系統(tǒng)可以包括多個(gè)有源存儲器件,比如有源存儲器件202、203和204。此外,每個(gè)有源存儲器件可以包括多個(gè)堆疊,每個(gè)堆疊包括存儲器區(qū)塊、存儲器控制器和相關(guān)聯(lián)的處理元件。在一個(gè)例子中,處理元件的數(shù)量可以大于存儲器區(qū)塊的數(shù)量。在另一實(shí)施例中,存儲器件可以包括比存儲器區(qū)塊要少的處理元件。在實(shí)施例中,處理元件連成池并且可用于訪問該系統(tǒng)中的任意存儲器。例如,一個(gè)存儲器件可以包括16個(gè)存儲器區(qū)塊和存儲器控制器,但是僅包括八個(gè)處理元件。這八個(gè)處理元件被連成池,并且被用作用于訪問耦接到互聯(lián)網(wǎng)絡(luò)的任意存儲器區(qū)塊的資源。在另一例子中,存儲器件可以是無源的,其中該器件由耦接到互聯(lián)網(wǎng)絡(luò)的有源存儲器件的處理元件控制。
[0031]圖3是實(shí)現(xiàn)有源存儲器的示例計(jì)算機(jī)系統(tǒng)300的圖。計(jì)算機(jī)系統(tǒng)300包括電路板302、主處理器304、有源存儲器件306和有源存儲器件308。有源存儲器件306、有源存儲器件308和主處理器304布置在電路板302上。如所示,剖解(explode)有源存儲器件306和308的部分,以示出計(jì)算機(jī)系統(tǒng)300布置的細(xì)節(jié)。有源存儲器件306和308分別經(jīng)由信號路徑324和344與主處理器304通信。如所示,有源存儲器件306按層布置,其中基底層(baselayer) 311包括多個(gè)存儲器控制器310和處理元件312。例如,有源存儲器件306包括放置在基底層311之上的存儲器的層309,其中每個(gè)層309具有多個(gè)存儲器元件。如所示,基底層311還包括互聯(lián)網(wǎng)絡(luò)346,以使能在該器件中的存儲器、存儲器控制器和處理元件之間的高帶寬通信。
[0032]在一個(gè)實(shí)施例中,有源存儲器件306包括多個(gè)存儲器區(qū)塊314、其中每個(gè)存儲器區(qū)塊314包括來自每個(gè)層309的存儲器元件,存儲器區(qū)塊314定位為與存儲器控制器310和處理元件312相鄰。具體地,示例的有源存儲器件306包括16個(gè)存儲器元件的層,其中元件層形成堆疊,包括堆疊316,其中堆疊316包括布置在存儲器控制器318和處理元件320以上的存儲器區(qū)塊322。高帶寬通信路徑326提供在處理元件320和存儲器區(qū)塊322內(nèi)的存儲器位置之間的高帶寬、直接和長度實(shí)質(zhì)上減小(例如與路徑324、344相比)的通信路徑,因此減少對于存儲器訪問的等待時(shí)間和功耗。例如,處理元件320可以接收來自主處理器304的命令,基于該命令從有源存儲器件306內(nèi)加載指令,并且作為加載的指令的部分,訪問在存儲器區(qū)塊314中的一位置處的數(shù)據(jù)并在處理元件320中對該數(shù)據(jù)進(jìn)行復(fù)雜的操作。此外,處理元件320還可以將諸如結(jié)果的數(shù)據(jù)存儲在存儲器區(qū)塊314中并且在執(zhí)行命令之后向主處理器304傳送值或信號。在實(shí)施例中,處理元件320將來自處理元件320中的寄存器的數(shù)據(jù)(例如操作數(shù))存儲或?qū)懙酱鎯ζ鲄^(qū)塊314。作為讀取或存儲操作的部分,處理元件320還配置為將地址從虛擬翻譯為真實(shí)以及從真實(shí)翻譯為虛擬。因此,處理元件320提供指令加載、地址翻譯、復(fù)雜操作以及對于存儲器本地的其他任務(wù),以降低等待時(shí)間、節(jié)省功率并釋放主處理器304來進(jìn)行其他任務(wù)。
[0033]類似地,有源存儲器件308包括布置在基底層331上的多個(gè)存儲器控制器328和處理元件330。在一個(gè)實(shí)施例中,有源存儲器308包括放置在基底層331之上的存儲器件的層329,其中每層329具有多個(gè)存儲器件。基底層331還包括互聯(lián)網(wǎng)絡(luò)346以使能在器件中的存儲器和處理元件之間的高帶寬通信。在一個(gè)實(shí)施例中,有源存儲器件306和有源存儲器件308的互聯(lián)網(wǎng)絡(luò)346耦接,并且允許在分離的器件上的處理元件和存儲器之間的通信。
[0034]在一個(gè)實(shí)施例中,有源存儲器件308包括多個(gè)存儲器區(qū)塊322,其中每個(gè)存儲器區(qū)塊322包括來自每層309的存儲器元件,存儲器區(qū)塊322定位為與存儲器控制器328和處理元件330相鄰。示例的有源存儲器件308包括16個(gè)堆疊,包括堆疊334,其中堆疊344包括布置在存儲器控制器340和處理元件338以上的存儲器區(qū)塊336。高帶寬通信路徑342提供了在處理元件330和存儲器區(qū)塊336內(nèi)的存儲器位置之間的通信。
[0035]圖4繪出作為圖1-3的處理元件中的一個(gè)的實(shí)施例的、耦接到互聯(lián)網(wǎng)絡(luò)402的處理元件400的例子。處理元件400是位于諸如圖1-3的有源存儲器件中的一個(gè)的有源存儲器件中的可編程向量處理元件。在圖4的例子中,處理元件400包括耦接到互聯(lián)網(wǎng)絡(luò)402和指令緩沖器406的加載-存儲隊(duì)列(LSQ) 404。指令緩沖器406還耦接到通道控制單元(IXU) 408和解碼器410。處理器通信單元(P⑶)412提供在處理元件400和主處理器或者其他處理元件之間經(jīng)過互聯(lián)網(wǎng)絡(luò)402的通信接口。LSQ404還耦接到向量計(jì)算寄存器文件(VCR) 414和標(biāo)量計(jì)算寄存器文件(SCR) 416。VCR414和SCR416通過多個(gè)多路復(fù)用器耦接到算術(shù)邏輯單元(ALU) 418和存儲器訪問單元420,其也被稱為加載-存儲單元(LSU) 420。ALU418通過多路復(fù)用器耦接到其自身和LSU420,并且還耦接到VCR414和SCR416。LSU420也可以耦接到其自身、耦接到LSQ404、耦接到有效-真實(shí)地址翻譯單元(ERAT) 422、耦接到VCR414以及耦接到SCR416(未繪出所有連接)。ERAT422還耦接到LSQ404。如將認(rèn)識到的,處理元件400中可以包括許多其他的連接和元件。例如,為了清楚起見,沒有繪出在解碼器410和其他元件之間的連接。另外,圖4中繪出的連接可以被修改或省略,比如繪出的在解碼器410和P⑶412之間的連接。
[0036]處理元件400支持包括對于許多數(shù)據(jù)類型的寬范圍的算術(shù)能力的指令集架構(gòu)。處理元件400的向量處理能力允許時(shí)間上的單指令多數(shù)據(jù)(SMD),同時(shí)也支持空間維度的SMD。指令緩沖器406保持按順序取回并執(zhí)行的經(jīng)歷分支的指令(也稱為“通道指令”)。在一個(gè)實(shí)施例中,每個(gè)通道指令包含用于在處理元件400內(nèi)的各個(gè)單元中執(zhí)行的9個(gè)子指令。通道指令內(nèi)可以包括迭代計(jì)數(shù),允許重復(fù)子指令達(dá)預(yù)定的次數(shù)(例如達(dá)32次)。這有助于時(shí)間上的SMD。IXU408可以管理該迭代計(jì)數(shù)并確定何時(shí)前進(jìn)到下一指令或者重復(fù)執(zhí)行相同的指令。在一個(gè)實(shí)施例中,ALU418的運(yùn)算管線(pipeline)為64位寬,并且依靠與多個(gè)執(zhí)行間隙同時(shí)地并行執(zhí)行小于64位的數(shù)據(jù)類型的能力而支持空間SMD。例如,假設(shè)通道指令包括9個(gè)子指令,子指令的執(zhí)行可以在四個(gè)處理片(slice)中在用于通道控制的IXU408中進(jìn)行,每個(gè)處理片包括ALU418和LSU420。每個(gè)處理片段可以實(shí)現(xiàn)VCR414和SCR416的對,并且它們可以由每對ALU418和LSU420訪問。因而,VCR414、SCR416、ALU418、LSU420和相關(guān)聯(lián)的多路復(fù)用器被繪出為四個(gè)元件的堆疊,以指示在圖4的例子中的4個(gè)處理片段。
[0037]在處理片級別,可以在64位向量元件上以時(shí)間SMD的方式在例如64位的粒度在浮點(diǎn)和定點(diǎn)數(shù)據(jù)類型上發(fā)生計(jì)算,并且在可以是32位、16位或者8位寬的更窄的向量子元件上以時(shí)間和空間SMD的方式發(fā)生計(jì)算。
[0038]在處理元件400內(nèi)的每個(gè)處理片段包括存儲器訪問管線(加載/存儲管線)和運(yùn)算管線。管理作為加載/存儲管線經(jīng)過LSU420的流可以使能每個(gè)向量數(shù)據(jù)元素或子元素一個(gè)地址的計(jì)算,并且便利于從存儲器聚集以及向存儲器分散數(shù)據(jù)。聚集/分散能力通過同時(shí)實(shí)現(xiàn)多個(gè)向量數(shù)據(jù)元素訪問而提供了對存儲在非連續(xù)的存儲器位置中的數(shù)據(jù)的訪問,而不管其在不連續(xù)的存儲器中分開分布。處理元件400提供了進(jìn)行相關(guān)聯(lián)的定點(diǎn)有效地址(即虛擬地址)計(jì)算的能力,以支持聚集-分散功能。經(jīng)過ALU418的運(yùn)算管線可以包括浮點(diǎn)和定點(diǎn)操作的穩(wěn)固的分類以支持各種工作負(fù)荷。
[0039]LSU420可以支持向以及從填充了數(shù)據(jù)的寄存器的例如8、4、2和I字節(jié)的加載和存儲操作,以及4、2和I字節(jié)的加載和存儲操作。
[0040]ALU418可以支持寄存器文件之間的復(fù)制操作,對雙精度(64位)和單精度(32位)的浮點(diǎn)數(shù)據(jù)類型的運(yùn)算、舍入和轉(zhuǎn)換、比較以及最大值和最小值操作,以及對雙字(64位)、字(32位)、半字(16位)和字節(jié)(8位)的定點(diǎn)數(shù)據(jù)類型的運(yùn)算、輪轉(zhuǎn)/移位、比較、邏輯、前導(dǎo)零計(jì)數(shù)和“I”種群計(jì)數(shù)(ones population count)操作。
[0041]在一個(gè)實(shí)施例中,處理元件400內(nèi)的處理片段的計(jì)算模型是利用VCR414和SCR416的向量單指令多數(shù)據(jù)(SMD)模型。VCR414可以支持多維度的寄存器,而SCR416支持單維度的寄存器。例如,VCR414可以包括16個(gè)寄存器項(xiàng),每個(gè)寄存器項(xiàng)具有32個(gè)64位的元素,并且SCR416可以包括16個(gè)寄存器項(xiàng),每個(gè)寄存器項(xiàng)具有I個(gè)64位的元素,盡管可以支持許多其他配置??梢允褂每勺償?shù)量的執(zhí)行間隙,對相等數(shù)量的子元素操作,由此一同取得的子元素合計(jì)達(dá)此例子中的64位的一個(gè)寄存器元素(VCR414或者SCR416)。執(zhí)行間隙的數(shù)量和向量子元素的對應(yīng)數(shù)量依賴于指令的數(shù)據(jù)類型。數(shù)據(jù)類型的例子和各種格式的大小包括:具有雙精度(64位)和單精度(32位)數(shù)據(jù)類型的浮點(diǎn)以及對于雙字(64位)、字(32位)、半字(16位)和字節(jié)(8位)數(shù)據(jù)類型的定點(diǎn)。
[0042]圖5例示根據(jù)實(shí)施例在有源存儲器件中聚集分散的數(shù)據(jù)的例子。諸如圖2中的處理元件210的處理元件可以接收來自諸如圖2的主處理器224的主處理器的聚集指令。在執(zhí)行該聚集指令時(shí),處理元件聚集來自一組存儲器位置的數(shù)據(jù)元素,并將這些數(shù)據(jù)元素組合為以指定的目的地的地址開始的連續(xù)的存儲器位置的序列。在圖5的例子中,數(shù)據(jù)元素A、B、C和D位于不連續(xù)的存儲器位置中,其中數(shù)據(jù)元素B和D處于存儲器區(qū)塊502中,而數(shù)據(jù)元素A和C處于存儲器區(qū)塊504中。響應(yīng)于該聚集指令,處理元件從存儲器區(qū)塊502和504中的各個(gè)位置讀取數(shù)據(jù)元素A、B、C和D,并將數(shù)據(jù)元素A、B、C、D寫到可由發(fā)出該聚集指令的主處理器訪問的存儲器區(qū)域508中的連續(xù)位置506中。
[0043]該主處理器可以提供列表510,該列表510包括要從中聚集數(shù)據(jù)元素的存儲器中的多個(gè)源地址、標(biāo)識連續(xù)的位置506的存儲器開始地址的目的地地址、以及指示對于來自源地址的每個(gè)聚集的數(shù)據(jù)元素將目的地地址遞增多少的步幅大小。步幅大小可以對于所有聚集的數(shù)據(jù)元素是單個(gè)值,或者可以是向量以支持與每個(gè)源地址相關(guān)聯(lián)的不同步幅大小。列表510可以直接發(fā)送到處理元件或者被放置到可由主處理器和處理元件兩者訪問的存儲器中。可以以虛擬或有效地址格式指定列表510中的地址,其中處理元件隨后使用例如圖4的ERAT422將該有效地址格式轉(zhuǎn)換為真實(shí)或物理地址格式,以定位由主處理器請求的數(shù)據(jù)元素。
[0044]當(dāng)列表510未被直接提供給處理元件時(shí),聚集指令可以包括一個(gè)或多個(gè)指針512,該一個(gè)或多個(gè)指針512向處理元件提供更簡潔的表示以在存儲器中定位列表510或者列表510的具體字段。在圖5的例子中,該一個(gè)或多個(gè)指針512包括指向列表510中的源地址I的源地址指針、指向列表510中的目的地地址的目的地地址指針、指向列表510中的步幅大小的步幅指針、以及指示列表510中的源地址的數(shù)量的計(jì)數(shù)。將理解,也可以支持其他格式。例如,一個(gè)或多個(gè)指針512可以簡單地指向列表510的開頭,并且可以可選地包括該計(jì)數(shù)。作為另一替換,可以從列表510中省去步幅大小,并且代替步幅指針,將該步幅大小存儲在一個(gè)或多個(gè)指針512中。一個(gè)或多個(gè)指針512中的地址值可以是被處理元件轉(zhuǎn)換為真實(shí)地址來訪問列表510的有效地址格式。
[0045]進(jìn)一步關(guān)于圖5,將理解,聚集指令可以訪問一個(gè)或多個(gè)存儲器區(qū)塊中的一個(gè)或多個(gè)存儲器芯片,以支持使用單個(gè)聚集指令來聚集任意數(shù)量的數(shù)據(jù)元素。如從圖2將認(rèn)識到的,主處理器224可以向圖2的多個(gè)處理元件210、218和230發(fā)送聚集指令,以進(jìn)行跨過多個(gè)存儲器區(qū)塊或者多個(gè)有源存儲器件的同時(shí)聚集,而不需要主處理器224知道各個(gè)數(shù)據(jù)元素的真實(shí)地址。主處理器224可以讀取存儲在連續(xù)的位置506處的數(shù)據(jù)元素的值并將它們放到圖1的高速緩存體系110中用于進(jìn)一步處理。因?yàn)閿?shù)據(jù)元素存儲在連續(xù)的位置506處,所以相比于每個(gè)數(shù)據(jù)元素進(jìn)行一系列較窄數(shù)據(jù)寬度的操作,可以使用更大數(shù)據(jù)寬度的業(yè)務(wù)(transaction)、比如高速緩存線業(yè)務(wù)來進(jìn)行對數(shù)據(jù)的操作。
[0046]圖6例示根據(jù)實(shí)施例在有源存儲器件中分散地存儲數(shù)據(jù)的例子。類似圖5的例子,諸如圖2中的處理元件210的處理元件可以接收來自諸如圖2的主處理器224的主處理器的存儲指令。該存儲指令可以指定多個(gè)不連續(xù)的位置用于存儲數(shù)據(jù)元素,并且像這樣的存儲指令被稱為分散指令或者分散存儲指令。在執(zhí)行分散指令時(shí),處理元件從來自一組存儲器位置的以指定的源地址開始的連續(xù)存儲器位置讀取數(shù)據(jù)元素,并將這些數(shù)據(jù)元素分散寫到在一個(gè)或多個(gè)目的地地址中標(biāo)識的一個(gè)或多個(gè)不連續(xù)的存儲器位置。在圖6的例子中,數(shù)據(jù)元素A、B、C和D位于存儲器區(qū)域604中的連續(xù)的存儲器位置602中。響應(yīng)于分散指令,處理元件讀取在連續(xù)的存儲器位置602處的數(shù)據(jù)元素A、B、C和D,并將數(shù)據(jù)元素A和D寫到存儲器區(qū)塊606中的各個(gè)位置,將數(shù)據(jù)元素B和C寫到存儲器區(qū)塊608中的各個(gè)位置。在一個(gè)示例實(shí)施例中,存儲器區(qū)域604中的連續(xù)的存儲器位置602可由發(fā)出該分散指令的主處理器訪問。
[0047]該主處理器可以提供列表610,該列表610包括從中讀取連續(xù)的存儲器位置602的源地址、標(biāo)識用于寫入數(shù)據(jù)元素的不連續(xù)的位置的多個(gè)目的地地址、以及標(biāo)識對于每個(gè)數(shù)據(jù)元素源地址遞增多少的步幅大小。步幅大小可以對于所有數(shù)據(jù)元素是單個(gè)值,或者可以是向量以支持與每個(gè)源地址增量相關(guān)聯(lián)的不同步幅大小。該列表610可以直接發(fā)送到處理元件或者被放置在可由主處理器和處理元件兩者訪問的存儲器中。列表610中的地址可以以虛擬或有效地址格式指定,其中處理元件隨后使用例如圖4的ERAT422將有效地址格式轉(zhuǎn)換為真實(shí)或物理地址格式以定位主處理器請求的數(shù)據(jù)元素。
[0048]當(dāng)列表610未被直接提供給處理元件時(shí),分散指令可以包括一個(gè)或多個(gè)指針612,該一個(gè)或多個(gè)指針612向處理元件提供更簡潔的表示以在存儲器中定位列表610或者列表610的具體字段。在圖6的例子中,該一個(gè)或多個(gè)指針612包括指向列表610中的源地址的源地址指針、指向列表610中的目的地地址I的目的地地址指針、指向列表610中的步幅大小的步幅指針、以及指示列表610中的目的地地址的數(shù)量的計(jì)數(shù)。將理解,也可以支持其他格式。例如,一個(gè)或多個(gè)指針612可以簡單地指向列表610的開頭,并且可以可選地包括該計(jì)數(shù)。作為另一替換,可以從列表610中省去步幅大小,并且代替步幅指針,將該步幅大小存儲在一個(gè)或多個(gè)指針512中。一個(gè)或多個(gè)指針612中的地址值可以是被處理元件轉(zhuǎn)換為真實(shí)地址來訪問列表610的有效地址格式。
[0049]進(jìn)一步關(guān)于圖6,將理解,分散指令可以訪問一個(gè)或多個(gè)存儲器區(qū)塊中的一個(gè)或多個(gè)存儲器芯片,以支持使用單個(gè)聚集指令來分散存儲任意數(shù)量的數(shù)據(jù)元素。如從圖2還將認(rèn)識到的,主處理器224可以向圖2的多個(gè)處理元件210、218和230發(fā)送分散指令,以進(jìn)行跨過多個(gè)存儲器區(qū)塊或者多個(gè)有源存儲器件的同時(shí)分散存儲,而不需要主處理器224知道各個(gè)數(shù)據(jù)元素的真實(shí)地址。主處理器224可以將數(shù)據(jù)元素的值從圖1的高速緩存體系110寫到連續(xù)的位置602。因?yàn)閿?shù)據(jù)元素存儲在連續(xù)的位置602處,所以相比于每個(gè)數(shù)據(jù)元素進(jìn)行一系列較窄數(shù)據(jù)寬度的操作,可以使用更大數(shù)據(jù)寬度的業(yè)務(wù)、比如高速緩存線業(yè)務(wù)來進(jìn)行對數(shù)據(jù)的操作。
[0050]圖7例示根據(jù)實(shí)施例在有源存儲器件中的數(shù)據(jù)傳送時(shí)的數(shù)據(jù)過濾的例子。包括由諸如圖4的處理元件400的處理元件使用聚集指令或分散指令而發(fā)起的傳送的數(shù)據(jù)傳送可以包括并入到該指令中以限制所選值的存儲的過濾功能。例如,當(dāng)作為聚集或分散指令的一部分由圖4的處理元件400讀取數(shù)據(jù)值時(shí),圖4的ALU418和/或LSY420可以應(yīng)用過濾標(biāo)準(zhǔn)以阻止某些值被存儲。在圖7的例子中,根據(jù)具有過濾標(biāo)準(zhǔn)的傳送指令706,在存儲器位置702處讀取的數(shù)據(jù)在被存儲到存儲器位置704之前被過濾。該具有過濾標(biāo)準(zhǔn)的傳送指令706可以被格式化以指示:源地址、指示將源地址和目的地地址遞增的量的步幅大小、以及指示用于檢查和過濾的多個(gè)相繼的位置的計(jì)數(shù)。步幅大小可以對于所有源地址和目的地地址是單個(gè)值,或者可以是向量以支持與每個(gè)地址相關(guān)聯(lián)的不同步幅大小。該具有過濾標(biāo)準(zhǔn)的傳送指令706中的計(jì)數(shù)可以被處理元件覆寫以指示在目的地地址儲存儲的值的數(shù)量。該具有過濾標(biāo)準(zhǔn)的傳送指令706可以定義目的地地址和要應(yīng)用的過濾標(biāo)準(zhǔn)。在圖7的例子中,過濾標(biāo)準(zhǔn)配置為將大于10 (>10)的所有值從存儲器位置702傳送到存儲器位置704。過濾標(biāo)準(zhǔn)還可以被定義為傳送處理包括或排除的值。
[0051]盡管僅單個(gè)源地址和目的地地址被包括在圖7的具有過濾標(biāo)準(zhǔn)的示例傳送指令706中,但是將理解,可以包括多個(gè)地址作為相同指令的部分,比如圖5和6中的為聚集和分散指令而提供的例子。該具有過濾標(biāo)準(zhǔn)的傳送指令706允許主處理器使用單個(gè)指令發(fā)起由處理元件對數(shù)據(jù)的選擇性塊傳送。該主處理器還可以通過將具有過濾標(biāo)準(zhǔn)的傳送指令706的實(shí)例發(fā)送到多個(gè)處理元件(比如圖2的處理元件210、218和230)而進(jìn)一步分發(fā)工作量,以進(jìn)行跨過多個(gè)存儲器區(qū)塊或者多個(gè)有源存儲器件的同時(shí)傳送和過濾。
[0052]圖8繪出在諸如圖1-3的有源存儲器件的有源存儲器件中用于聚集、分散和過濾數(shù)據(jù)的示例處理800。圖8所示的塊可以由有源存儲器件中的圖1-4的處理元件中的一個(gè)進(jìn)行。例如,可以由有源存儲器件中的一個(gè)處理元件執(zhí)行各塊,其中該處理元件訪問存儲器的部分(例如與該處理元件共享堆疊的存儲器區(qū)塊)并對從該存儲器訪問的數(shù)據(jù)進(jìn)行操作。為了說明的目的,參考圖4的處理元件400描述該處理元件,其中處理元件400可以是圖2的處理元件210、218或230的實(shí)施例。盡管關(guān)于有源存儲器件描述了圖8,但是將理解,圖8的處理可以在包括與其他配置的存儲器通信的處理元件400的系統(tǒng)中實(shí)現(xiàn),所述其他配置的存儲器例如遠(yuǎn)離處理元件400定位的存儲器。因而,處理元件400不需要位于有源存儲器件內(nèi),并且可以對包括例如位于分離的應(yīng)用存儲器件上的存儲器的位于遠(yuǎn)處的存儲器進(jìn)行聚集/分散/過濾操作。
[0053]在塊802,處理元件400取出并解碼指令用于由處理元件400執(zhí)行??梢詮闹噶罹彌_器406取出該指令并由圖4的解碼器410解碼。
[0054]在塊804,處理元件400確定該指令是否是聚集指令。在塊806,基于確定該指令是聚集指令,處理元件400確定要從中聚集數(shù)據(jù)元素的存儲器中的多個(gè)源地址、步幅大小以及存儲器中的目的地地址。在塊808,應(yīng)用為該指令定義的過濾標(biāo)準(zhǔn),處理元件400將來自多個(gè)源地址的一個(gè)或多個(gè)聚集的數(shù)據(jù)元素傳送到存儲器中以該目的地地址開始的連續(xù)位置。
[0055]所述指令、多個(gè)源地址、目的地地址以及可選的過濾標(biāo)準(zhǔn)可以由與處理元件400通信的主處理器提供,所述主處理器例如圖2的主處理器224??梢砸杂行У刂犯袷綇闹魈幚砥鹘邮斩鄠€(gè)源地址和目的地地址,并且在進(jìn)行向存儲器的加載和存儲操作時(shí),可以由處理元件400使用圖4的ERAT422將其翻譯為真實(shí)地址??梢允褂脕碜灾魈幚砥鞯脑吹刂分羔樢詷?biāo)識存儲器中包含該多個(gè)源地址的位置。類似地,可以使用來自主處理器的目的地地址指針來標(biāo)識存儲器中包含該目的地地址的位置,或者可以直接提供該目的地地址。該多個(gè)源地址標(biāo)識在存儲器中的不連續(xù)的位置。該有源存儲器件可以是三維存儲器立方體,其中該存儲器被劃分為三位分塊的區(qū)域作為存儲器區(qū)塊,并且通過有源存儲器件中的一個(gè)或多個(gè)存儲器控制器訪問該存儲器中的不連續(xù)的位置。
[0056]在塊810,處理元件400確定該指令是否是分散指令。在塊812,基于確定該指令是分散指令,處理元件400確定要從中讀取連續(xù)位置處的多個(gè)數(shù)據(jù)元素的存儲器中的源地址、步幅大小以及用于在不連續(xù)的位置處存儲數(shù)據(jù)元素的存儲器中的一個(gè)或多個(gè)目的地地址。在塊814,應(yīng)用為該指令定義的任何過濾標(biāo)準(zhǔn),處理元件將該數(shù)據(jù)元素中的一個(gè)或多個(gè)從源地址傳送到一個(gè)或多個(gè)目的地地址,。
[0057]在塊816,處理元件400確定該指令是否是除了聚集或分散指令之外的具有過濾標(biāo)準(zhǔn)的傳送指令。在塊818,處理元件400應(yīng)用該過濾標(biāo)準(zhǔn)以根據(jù)過濾標(biāo)準(zhǔn)限制在源地址和目的地地址之間的傳送。處理800繼續(xù)處理來自指令緩沖器406的進(jìn)一步指令。
[0058]本文所使用的術(shù)語僅僅是為了描述特定的實(shí)施例的目的,而不意圖限制本發(fā)明。如此處所使用的,單數(shù)形式“一”、“一個(gè)”和“該”意圖也包括復(fù)數(shù)形式,除非上下文清楚地另外指明。還應(yīng)該理解,當(dāng)在本說明書中使用時(shí),術(shù)語“包括”和/或“包括有”指明所述特征、整體、步驟、操作、元素和/或組件的存在,但不排除一個(gè)或多個(gè)其它特征、整體、步驟、操作、元素、組件和/或它們的組合的存在或添加。
[0059]在以下權(quán)利要求書中的相應(yīng)的結(jié)構(gòu)、材料、行為和所有部件或步驟加功能元素的等價(jià)物也意圖包括用于與明確聲明的其它要求保護(hù)的元素相結(jié)合來執(zhí)行功能的任何結(jié)構(gòu)、材料、或行為。已經(jīng)為了例示和描述的目的給出對本發(fā)明的描述,但并不旨在窮舉或?qū)⒈景l(fā)明限制到公開的形式。對本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,不脫離本發(fā)明的范圍和精神的許多修改和變型將是顯而易見的。選取和描述實(shí)施例以便最佳地說明本發(fā)明的原理及其實(shí)際應(yīng)用,以及使本領(lǐng)域其他普通技術(shù)人員理解對于具有適合于預(yù)期的具體用途的各種修改的各種實(shí)施例理解本發(fā)明。
[0060]在此繪出的流程圖僅僅是一個(gè)例子。不脫離本發(fā)明的精神,可以存在對此圖或其中所述的步驟(或操作)的變化。例如,可以按不同的順序進(jìn)行各步驟,或者可以添加、刪除或修改步驟。所有這些變化被認(rèn)為是要求保護(hù)的本發(fā)明的一部分。
[0061]盡管已經(jīng)描述了本發(fā)明的優(yōu)選實(shí)施例,但是將理解,本領(lǐng)域技術(shù)人員現(xiàn)在以及將來可以做出落在接下來的權(quán)利要求的范圍內(nèi)的各種改進(jìn)和增強(qiáng)。這些權(quán)利要求應(yīng)該被解釋為主張對于首次描述的本發(fā)明的適當(dāng)?shù)谋Wo(hù)范圍。
【權(quán)利要求】
1.一種用于在有源存儲器件中傳送數(shù)據(jù)的方法,該有源存儲器件包括存儲器和處理元件,該方法包括: 取出并解碼指令,用于由該處理元件執(zhí)行;以及 基于確定該指令是聚集指令,該處理元件進(jìn)行: 確定要從中聚集數(shù)據(jù)元素的所述存儲器中的多個(gè)源地址; 確定所述存儲器中的目的地地址;以及 將一個(gè)或多個(gè)聚集的數(shù)據(jù)元素從所述多個(gè)源地址傳送到所述存儲器中的以所述目的地地址開始的連續(xù)位置。
2.如權(quán)利要求1的方法,其中所述指令、所述多個(gè)源地址以及所述目的地地址由與所述處理元件通信的主處理器提供。
3.如權(quán)利要求2的方法,其中以有效地址格式從所述主處理器接收所述多個(gè)源地址和所述目的地地址,并且當(dāng)進(jìn)行向所述存儲器的加載和存儲操作時(shí),由所述處理元件將其翻譯為真實(shí)地址格式。
4.如權(quán)利要求2的方法,其中確定從中聚集數(shù)據(jù)元素的所述存儲器中的多個(gè)源地址還包括從所述主處理器接收源地址指針,該源地址指針標(biāo)識包含所述多個(gè)源地址的、所述存儲器中的位置。
5.如權(quán)利要求1的方法,其中所述多個(gè)源地址標(biāo)識所述存儲器中的不連續(xù)的位置,所述有源存儲器件是三維存儲器立方體,所述存儲器被劃分為三維分塊的區(qū)域作為存儲器區(qū)塊,并且通過所述有源存儲器件中的一個(gè)或多個(gè)存儲器控制器訪問所述存儲器中的不連續(xù)的位置。
6.如權(quán)利要求1的方法,還包括: 基于確定所述指令是分散指令: 確定要從中讀取在連續(xù)位置處的多個(gè)數(shù)據(jù)元素的所述存儲器中的源地址; 確定用于在不連續(xù)的位置處存儲所述數(shù)據(jù)元素的所述存儲器中的一個(gè)或多個(gè)目的地地址;以及 將所述數(shù)據(jù)元素中的一個(gè)或多個(gè)從所述源地址傳送到所述一個(gè)或多個(gè)目的地地址。
7.如權(quán)利要求6的方法,還包括: 標(biāo)識與所述指令相關(guān)聯(lián)的過濾標(biāo)準(zhǔn);以及 應(yīng)用所述過濾標(biāo)準(zhǔn)以根據(jù)所述過濾標(biāo)準(zhǔn)限制在源地址和目的地地址之間的傳送。
8.一種有源存儲器件的處理元件,包括: 加載存儲隊(duì)列,配置為與所述有源存儲器件中的存儲器接口 ; 指令緩沖器,耦接到所述加載存儲隊(duì)列,并且配置為接收指令;以及解碼器,耦接到所述指令緩沖器,所述解碼器配置為解碼所述指令,并且基于確定所述指令是聚集指令,所述處理元件配置為進(jìn)行: 確定要從中聚集數(shù)據(jù)元素的存儲器中的多個(gè)源地址; 確定存儲器中的目的地地址;以及 將一個(gè)或多個(gè)聚集的數(shù)據(jù)元素從所述多個(gè)源地址傳送到存儲器中的以所述目的地地址開始的連續(xù)位置。
9.如權(quán)利要求8的處理元件,其中所述指令、所述多個(gè)源地址以及所述目的地地址由與所述處理元件通信的主處理器提供。
10.如權(quán)利要求9的處理元件,還包括有效-真實(shí)地址翻譯單元,其中以有效地址格式從所述主處理器接收所述多個(gè)源地址和所述目的地地址,并且由所述有效-真實(shí)地址翻譯單元將其翻譯為真實(shí)地址格式。
11.如權(quán)利要求9的處理元件,其中確定從中聚集數(shù)據(jù)元素的存儲器中的多個(gè)源地址還包括從所述主處理器接收源地址指針,該源地址指針標(biāo)識包含所述多個(gè)源地址的、所述存儲器中的位置。
12.如權(quán)利要求8的處理元件,其中基于確定所述指令是分散指令,所述處理元件還配置為進(jìn)行: 確定要從中讀取在連續(xù)位置處的多個(gè)數(shù)據(jù)元素的所述存儲器中的源地址; 確定用于在不連續(xù)的位置處存儲所述數(shù)據(jù)元素的所述存儲器中的一個(gè)或多個(gè)目的地地址;以及 將所述數(shù)據(jù)元素中的一個(gè)或多個(gè)從所述源地址傳送到所述一個(gè)或多個(gè)目的地地址。
13.如權(quán)利要求12的處理元件,其中所述解碼器還配置為標(biāo)識與所述指令相關(guān)聯(lián)的過濾標(biāo)準(zhǔn),并且所述處理元件還配置為應(yīng)用所述過濾標(biāo)準(zhǔn)以根據(jù)所述過濾標(biāo)準(zhǔn)限制在源地址和目的地地址之間的傳送。
14.一種有源存儲器件,包括: 存儲器;以及 處理元件,配置為與所述存儲器通信,所述處理元件配置為進(jìn)行包括以下處理的方法: 取出并解碼指令,用于由該處理元件執(zhí)行;以及 基于確定該指令是聚集指令,該處理元件進(jìn)行: 確定要從中聚集數(shù)據(jù)元素的所述存儲器中的多個(gè)源地址; 確定所述存儲器中的目的地地址;以及 將一個(gè)或多個(gè)聚集的數(shù)據(jù)元素從所述多個(gè)源地址傳送到所述存儲器中的以所述目的地地址開始的連續(xù)位置。
15.如權(quán)利要求14的有源存儲器件,其中所述指令、所述多個(gè)源地址以及所述目的地地址由與所述處理元件通信的主處理器提供。
16.如權(quán)利要求15的有源存儲器件,其中以有效地址格式從所述主處理器接收所述多個(gè)源地址和所述目的地地址,并且當(dāng)進(jìn)行向所述存儲器的加載和存儲操作時(shí),由所述處理元件將其翻譯為真實(shí)地址格式。
17.如權(quán)利要求15多有源存儲器件,其中確定從中聚集數(shù)據(jù)元素的所述存儲器中的多個(gè)源地址還包括從所述主處理器接收源地址指針,該源地址指針標(biāo)識包含所述多個(gè)源地址的、所述存儲器中的位置。
18.如權(quán)利要求14多有源存儲器件,其中所述多個(gè)源地址標(biāo)識所述存儲器中的不連續(xù)的位置,所述有源存儲器件是三維存儲器立方體,所述存儲器被劃分為三維分塊的區(qū)域作為存儲器區(qū)塊,并且通過所述有源存儲器件中的一個(gè)或多個(gè)存儲器控制器訪問所述存儲器中的不連續(xù)的位置。
19.如權(quán)利要求14多有源存儲器件,其中基于確定所述指令是分散指令,所述處理元件還配置為進(jìn)行: 確定要從中讀取在連續(xù)位置處的多個(gè)數(shù)據(jù)元素的所述存儲器中的源地址; 確定用于在不連續(xù)的位置處存儲所述數(shù)據(jù)元素的所述存儲器中的一個(gè)或多個(gè)目的地地址;以及 將所述數(shù)據(jù)元素中的一個(gè)或多個(gè)從所述源地址傳送到所述一個(gè)或多個(gè)目的地地址。
20.如權(quán)利要求19的有源存儲器件,其中所述處理元件還配置為標(biāo)識與所述指令相關(guān)聯(lián)的過濾標(biāo)準(zhǔn),并應(yīng)用所述過濾標(biāo)準(zhǔn)以根據(jù)所述過濾標(biāo)準(zhǔn)限制在源地址和目的地地址之間的傳 送。
【文檔編號】G06F13/28GK103810125SQ201310561131
【公開日】2014年5月21日 申請日期:2013年11月12日 優(yōu)先權(quán)日:2012年11月12日
【發(fā)明者】B.M.弗萊舍, T.W.福克斯, H.M.雅各布森, J.A.卡倫, J.H.莫雷諾, R.奈爾 申請人:國際商業(yè)機(jī)器公司