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

用于存儲器訪問的方法和裝置與流程

文檔序號:11208717閱讀:354來源:國知局
用于存儲器訪問的方法和裝置與流程

本發(fā)明構(gòu)思涉及一種處理器訪問存儲器的方法和裝置,并且更具體地,涉及一種向量處理器集中來自存儲器的多個數(shù)據(jù)并將多個數(shù)據(jù)分散回存儲器中的方法和裝置。



背景技術(shù):

處理器可以訪問存儲器以讀取操作所必需的數(shù)據(jù)并且將操作的結(jié)果存儲回存儲器中。例如,處理器可以執(zhí)行從存儲器讀取數(shù)據(jù)的加載指令和將數(shù)據(jù)存儲在存儲器中的存儲指令。

在早期處理器技術(shù)中,已經(jīng)使用采用單指令單數(shù)據(jù)(sisd)方法的標(biāo)量處理器,該單指令單數(shù)據(jù)(sisd)方法是用單個指令處理單個數(shù)據(jù)的方法。

然而,隨著智能電話和高清晰度電視的普及,對于能夠處理諸如圖像處理、視覺處理、圖像質(zhì)量處理和圖形渲染等領(lǐng)域的大量數(shù)據(jù)的處理器的必要性增加。因此,已經(jīng)推廣了采用單指令多數(shù)據(jù)(simd)方法的向量處理器,該單指令多數(shù)據(jù)(simd)方法是用單個指令處理多個數(shù)據(jù)的方法。向量處理器是用于以高速對構(gòu)成向量的多個數(shù)據(jù)重復(fù)執(zhí)行相同操作的處理器。向量處理器可以同時從存儲器讀取并且處理多個數(shù)據(jù),以及然后將其結(jié)果存儲回存儲器中。

當(dāng)向量處理器同時從存儲器讀取多個數(shù)據(jù)或?qū)⒍鄠€數(shù)據(jù)存儲在存儲器中時,向量處理器頻繁訪問相同的存儲體。在這種情況下,存儲體沖突導(dǎo)致失速(stall),并且因此系統(tǒng)的性能退化。

因此,為了使向量處理器同時從存儲器中讀取多個數(shù)據(jù)或?qū)⒍鄠€數(shù)據(jù)存儲在存儲器中,可能額外地需要專用硬件來預(yù)測存儲體沖突并且通過基于預(yù)測而調(diào)度向量處理器的存儲器訪問來最小化沖突的發(fā)生。

然而,額外的硬件可能會增加處理器的總體面積并且增加設(shè)計復(fù)雜度。此外,軟件中的復(fù)雜實現(xiàn)可能會導(dǎo)致處理器的另一個性能下降。



技術(shù)實現(xiàn)要素:

本發(fā)明構(gòu)思提供了一種方法和裝置,通過該方法和裝置,處理器以查找表的形式從存儲器中讀取多個數(shù)據(jù),或者以查找表的形式將多個數(shù)據(jù)存儲在存儲器中。

此外,本發(fā)明構(gòu)思提供了一種計算機(jī)可讀記錄介質(zhì),其中,記錄了使計算機(jī)執(zhí)行該方法的程序。本發(fā)明構(gòu)思的實施例的技術(shù)目的不限于上述目的,并且可以從以下實施例中推導(dǎo)出其他目的。

附圖說明

圖1是示出根據(jù)一個實施例的向量處理器從存儲器讀取數(shù)據(jù)和向存儲器寫入數(shù)據(jù)的結(jié)構(gòu)的圖。

圖2是示出根據(jù)一個實施例的向量處理器執(zhí)行集中和分散的方法的圖。

圖3是示出根據(jù)一個實施例的向量處理器的結(jié)構(gòu)的圖。

圖4是示出根據(jù)一個實施例的在主存儲器中生成的多個查找表的圖。

圖5是示出根據(jù)一個實施例的在主存儲器中生成的多個查找表的圖。

圖6a是示出根據(jù)一個實施例的向量處理器的結(jié)構(gòu)的圖。

圖6b是示出根據(jù)一個實施例的向量處理器同步多個查找表的方法的圖。

圖7是示出根據(jù)一個實施例的向量處理器的結(jié)構(gòu)的圖。

圖8a是示出根據(jù)一個實施例的向量處理器執(zhí)行集中的方法的圖。

圖8b是示出根據(jù)一個實施例的向量處理器執(zhí)行集中的方法的圖。

圖9是示出根據(jù)一個實施例的向量處理器執(zhí)行分散的方法的圖。

圖10是示出根據(jù)一個實施例的向量處理器執(zhí)行集中的方法的流程圖。

圖11是示出根據(jù)一個實施例的向量處理器生成多個查找表的方法的流程圖。

圖12是示出根據(jù)一個實施例的向量處理器執(zhí)行分散的方法的流程圖。

圖13是示出根據(jù)一個實施例的向量處理器執(zhí)行集中和分散的方法的流程圖。

具體實施方式

技術(shù)方案

根據(jù)本發(fā)明構(gòu)思的一個方面,提供了一種包括多個存儲體和控制器的裝置,該控制器被配置為生成多個查找表并且通過從多個查找表讀取數(shù)據(jù)來生成向量數(shù)據(jù),在查找表中,在多個存儲體中所存儲的數(shù)據(jù)之中的、對于向量操作必需的數(shù)據(jù)被復(fù)制和存儲。

控制器可以包括:查找表生成單元,被配置為生成多個查找表;和集中單元,被配置為從多個查找表讀取數(shù)據(jù)并且生成向量數(shù)據(jù)。

控制器可以為多個存儲體中的每個生成一個查找表,其中,生成的查找表的數(shù)量與多個存儲體的數(shù)量相同。

控制器可以將多個存儲體劃分成預(yù)定數(shù)量的組,并且為每個組生成一個查找表,以及為每個組所生成的一個查找表可以以交織(interleaving)的形式存儲在包括在組中的多個存儲體中。

控制器可以使用包括多個隨機(jī)生成的索引的索引向量來訪問查找表中的每個,并且讀取在查找表中的每個的索引的位置處所存儲的數(shù)據(jù)。

控制器可以將通過對向量數(shù)據(jù)執(zhí)行預(yù)定向量操作所獲得的結(jié)果向量數(shù)據(jù)劃分成元素,并且在多個查找表中存儲按元素劃分的結(jié)果向量。

控制器可以在查找表中的每個中的預(yù)定索引位置處存儲元素中的每個。

當(dāng)在多個查找表中的任何一個查找表中的第一索引中所存儲的數(shù)據(jù)的值改變時,控制器可以用改變的值來更新在剩余查找表中的每個中的第一索引中所存儲的、其值沒有改變的數(shù)據(jù)。

裝置還可以包括開關(guān)單元(switchingunit),其包括與查找表相對應(yīng)的多個子開關(guān)單元(sub-switchunit),其中,多個子開關(guān)單元可以確定是否允許控制器訪問查找表中的每個的預(yù)定索引位置。

多個子開關(guān)單元可以包括與多個存儲體中的每個相對應(yīng)的多個開關(guān),并且每個開關(guān)可以確定控制器是否可訪問多個存儲體中的每個。

根據(jù)本發(fā)明構(gòu)思的另一方面,提供了一種方法,包括:生成多個查找表,其中,多個存儲體中所存儲的數(shù)據(jù)之中的、對于向量操作必需的數(shù)據(jù)被復(fù)制和存儲;以及通過從查找表讀取數(shù)據(jù)來生成向量數(shù)據(jù)。

生成查找表可以包括為多個存儲體中的每個生成一個查找表,其中,對于每個存儲體,生成的查找表的數(shù)量與多個存儲體的數(shù)量相同。

生成查找表可以包括將多個存儲體劃分成預(yù)定數(shù)量的組并且為每個組生成一個查找表,以及將為每個組所生成的一個查找表以交織的形式存儲在包括在組中的多個存儲體中。

通過從查找表讀取數(shù)據(jù)來生成向量數(shù)據(jù)可以包括:使用包括多個隨機(jī)生成的索引的索引向量來訪問每個查找表,并且讀取在每個查找表中的索引的位置處所存儲的數(shù)據(jù)。

方法還可以包括將通過對向量數(shù)據(jù)執(zhí)行預(yù)定向量操作所獲得的結(jié)果向量數(shù)據(jù)劃分成元素,并且在多個查找表中存儲按元素劃分的結(jié)果向量。

在多個查找表中存儲按元素劃分的結(jié)果向量可以包括將每個元素存儲在每個查找表中的預(yù)定索引位置處。

在多個查找表中存儲按元素劃分的結(jié)果向量可以包括:當(dāng)在多個查找表中的任何一個查找表中的第一索引中所存儲的數(shù)據(jù)的值改變時,用改變的值來更新在每個剩余查找表中的第一索引中所存儲的、其值沒有改變的數(shù)據(jù)。

通過從查找表讀取數(shù)據(jù)來生成向量數(shù)據(jù)可以包括通過讀取存在于每個查找表中允許訪問的預(yù)定索引位置處的數(shù)據(jù)來生成向量數(shù)據(jù),并且在多個查找表中存儲按元素劃分的結(jié)果向量可以包括將結(jié)果向量數(shù)據(jù)存儲在每個查找表中允許訪問的預(yù)定索引位置處。

通過從查找表讀取數(shù)據(jù)來生成向量數(shù)據(jù)和在多個查找表中存儲按元素劃分的結(jié)果向量可以包括確定是否允許訪問每個存儲體。

根據(jù)本發(fā)明構(gòu)思的另一方面,提供了一種計算機(jī)可讀記錄介質(zhì),其中記錄了使計算機(jī)執(zhí)行方法的程序。

本發(fā)明的詳細(xì)描述

在下文中,將參照附圖詳細(xì)描述實施例。由于本說明書中描述的實施例和附圖中所示的配置僅是本發(fā)明構(gòu)思的示例性實施例,并且不代表本發(fā)明構(gòu)思的總體技術(shù)范圍,因此應(yīng)理解,本發(fā)明構(gòu)思涵蓋了在提交本申請時的各種等同物、修改和替代。

圖1是示出根據(jù)一個實施例的向量處理器從存儲器讀取數(shù)據(jù)和向存儲器寫入數(shù)據(jù)的結(jié)構(gòu)的圖。

主存儲器110可以是構(gòu)成計算機(jī)、電視、移動電話、移動設(shè)備等的隨機(jī)存取存儲器(ram),但是本發(fā)明構(gòu)思不限于此。

在下文中,術(shù)語“主存儲器”是指構(gòu)成預(yù)定機(jī)器的存儲器設(shè)備的存儲器的全部或一些區(qū)域。根據(jù)一個實施例的主存儲器110可以具有包括一個或多個存儲體(以下稱為“存儲體(bank)”)的多存儲體結(jié)構(gòu),以最小化存儲器沖突。

向量處理器180可以是能夠同時處理多個數(shù)據(jù)的處理器,并且向量處理器180中的指令可以以單指令多數(shù)據(jù)(simd)或多指令多數(shù)據(jù)(mimd)的形式被處理,但是本發(fā)明構(gòu)思不限于此。

向量處理器180可以從主存儲器110讀取多個數(shù)據(jù),以向量的形式生成多個數(shù)據(jù),對其執(zhí)行向量運(yùn)算,以及將向量運(yùn)算的結(jié)果存儲回主存儲器110中。向量處理器180可以訪問主存儲器110中的多個存儲體120、121、122、123、124、125、126和127,以同時讀取或存儲多個數(shù)據(jù)。

向量處理器180可以包括向量寄存器160。向量寄存器160是可以存儲用于訪問構(gòu)成向量操作的元素(element)的存儲器的地址并且可以通過向量指令進(jìn)行讀取或?qū)懭氲募拇嫫鳌?/p>

向量寄存器160可以被劃分成多個元素。例如,當(dāng)16字節(jié)向量寄存器160存儲8路向量時,向量寄存器160可以由8個元素組成并且一個元素可以具有2個字節(jié)的大小。

盡管圖1中未示出,但是向量處理器180可以包括:用于使用流水線架構(gòu)每個時鐘執(zhí)行操作的向量功能單元,用于從存儲器讀取和存儲數(shù)據(jù)的向量加載/存儲單元,用于存儲存儲器地址和控制信號的標(biāo)量寄存器,以及用于連接寄存器的交叉條(cross-bar)。

根據(jù)一個實施例的向量處理器180可以使用各種方法來訪問主存儲器110,以便從主存儲器110讀取多個數(shù)據(jù)或者將多個數(shù)據(jù)寫入主存儲器110。

例如,向量處理器180可以從主存儲器110順序地讀取多個數(shù)據(jù),同時將存儲器地址遞增1,并且以向量的形式生成多個數(shù)據(jù)。向量處理器180可以使用單位步幅技術(shù)(unitstridetechnique),其使用所生成的向量執(zhí)行向量操作并且將所執(zhí)行的向量操作的結(jié)果順序地存儲回主存儲器110中。

此外,例如,向量處理器180可以從主存儲器110讀取多個數(shù)據(jù),同時將存儲器地址遞增存儲在標(biāo)量寄存器(未示出)中的常數(shù)值,并且以向量的形式生成多個數(shù)據(jù)。向量處理器180可以使用步幅訪問技術(shù)(strideaccesstechnique),其使用所生成的向量執(zhí)行向量操作并且將通過執(zhí)行向量操作所獲得的結(jié)果存儲回主存儲器110中,同時以相同的方法將存儲器地址遞增常數(shù)值。

此外,例如,向量處理器180可以從主存儲器110隨機(jī)讀取數(shù)據(jù),并且以向量的形式生成多個讀取數(shù)據(jù)。向量處理器180可以使用索引的加載和存儲技術(shù),其使用所生成的向量執(zhí)行向量操作,并且將通過執(zhí)行向量操作所獲得的結(jié)果隨機(jī)存儲回主存儲器110中。索引的加載和存儲技術(shù)是使用索引向量在主存儲器110中讀取分散數(shù)據(jù)以生成向量并且將向量操作的結(jié)果存儲回主存儲器110中的技術(shù)。

通常,使用索引向量讀取分散在主存儲器110中的多個數(shù)據(jù)被稱為集中(gather),而使用索引向量將多個數(shù)據(jù)(即向量)分散并且存儲在主存儲器110中被稱為分散。

根據(jù)一個實施例的向量處理器180可以在通過將存儲在索引向量中的多個偏移值添加到基地址計算的存儲器地址處讀取多個數(shù)據(jù),以對其執(zhí)行集中,并且可以以向量的形式在向量寄存器160中存儲多個數(shù)據(jù)。

例如,在執(zhí)行8路向量運(yùn)算的向量處理器180中,可以將8個索引(即存儲有8個數(shù)據(jù)的存儲器的相對地址)存儲在索引向量中,并且向量處理器180可以通過將8個索引添加到基地址來讀取相對應(yīng)的地址的數(shù)據(jù)。8個讀取數(shù)據(jù)以向量的形式存儲在向量寄存器160中。

執(zhí)行分散的處理是集中的逆處理。存儲在向量寄存器160中的向量被劃分為8個元素,并且8個元素被存儲在通過將索引向量的偏移添加到基地址所獲得的存儲器地址處。

然而,當(dāng)向量處理器180在執(zhí)行集中和分散時來同時地讀取或存儲多個數(shù)據(jù)的情況下,向量處理器180可以頻繁地訪問相同的存儲體。在這種情況下,存儲體沖突可能導(dǎo)致失速,并且因此向量處理器的性能和效率可能會顯著退化。

如上所述,向量處理器180需要同時訪問主存儲器110以從主存儲器110讀取多個數(shù)據(jù),并且將多個數(shù)據(jù)存儲在主存儲器110中。因此,為了使向量處理器180同時地訪問主存儲器110,主存儲器110可以具有多存儲體結(jié)構(gòu),并且向量處理器180可能額外需要可以獨(dú)立地控制存儲體的地址的存儲器系統(tǒng)(未示出)。

圖2是示出根據(jù)一個實施例的向量處理器執(zhí)行集中和分散的方法的圖。

向量處理器180可以生成多個查找表(陰影部分)210、220、230、240、250、260、270和280,其中,存儲在主存儲器110中的多個數(shù)據(jù)之中的、對于向量操作必需的數(shù)據(jù)被復(fù)制和存儲。主存儲器110具有包括多個存儲體的多存儲體結(jié)構(gòu)。

向量處理器180可以從生成的查找表210、220、230、240、250、260、270和280集中存儲在查找表中的每個的預(yù)定索引位置處的多個數(shù)據(jù),并且以向量形式生成多個數(shù)據(jù)。

根據(jù)一個實施例的向量處理器180可以分別從查找表210、220、230、240、250、260、270和280集中多個數(shù)據(jù)a、b、c、d、e、f、g和h。多個集中的數(shù)據(jù)a、b、c、d、e、f、g和h可以以向量的形式存儲在向量寄存器160中,并且向量寄存器160中的向量可以是向量操作的操作數(shù)。

向量處理器180可以將存儲在向量寄存器160中的向量劃分成元素,并將按元素劃分的向量分散在查找表210、220、230、240、250、260、270和280中的每個查找表中的預(yù)定索引位置處。作為分散對象的向量寄存器160中的向量可以是通過對集中的和生成的向量數(shù)據(jù)執(zhí)行預(yù)定向量操作所獲得的結(jié)果向量數(shù)據(jù)。

如上所述,當(dāng)在向量處理器180訪問主存儲器110的多個存儲體以執(zhí)行集中和分散的同時發(fā)生存儲體沖突時,向量處理器180的性能顯著退化。在下文中,將參照圖3至圖10詳細(xì)描述根據(jù)一個實施例的向量處理器180使用查找表執(zhí)行集中和分散以減少存儲體沖突的數(shù)量的方法。

圖3是示出根據(jù)一個實施例的向量處理器的結(jié)構(gòu)的圖。

如上所述,主存儲器110可以具有多存儲體結(jié)構(gòu)。為了便于描述,假設(shè)主存儲器110包括8個存儲體120、121、122、123、124、125、126和127,并且向量處理器180執(zhí)行8路向量操作。

在圖3中,示出向量處理器180執(zhí)行8路向量操作并且向量寄存器160存儲8路向量,但本發(fā)明構(gòu)思不限于此。將明顯的是,向量處理器180和向量寄存器160可以處理和存儲n路向量。

根據(jù)一個實施例的向量處理器180可以包括集中單元320和查找表生成單元340。此外,向量處理器180可以包括控制器(未示出),該控制器包括集中單元320和查找表生成單元340。

根據(jù)一個實施例的查找表生成單元340可以生成多個查找表。查找表生成單元340可以為主存儲器110中的存儲體120、121、122、123、124、125、126和127中的每個生成一個查找表,或者可以將預(yù)定數(shù)量的存儲體組合成一個組,并且為每個組生成一個查找表。也就是說,查找表生成單元340可以將主存儲器110中的多個存儲體劃分為n個組,并且為每個組生成一個查找表。n是大于1的整數(shù)。

查找表是指其中當(dāng)前正在主存儲器110中執(zhí)行的向量操作必需的數(shù)據(jù)被復(fù)制并且存儲的表。例如,需要提高8k超高分辨率(uhd)圖像的質(zhì)量,可以以圖像的光柵(raster)順序應(yīng)用16×16高斯濾波器(gaussianfilter)。應(yīng)用16×16高斯濾波器必需的256個高斯系數(shù)可以被分散并且存儲在主存儲器110中。在執(zhí)行圖像質(zhì)量改進(jìn)之前的初始化步驟中,根據(jù)一個實施例的查找表生成單元340可以生成多個查找表,在多個查找表中,分散并且存在于主存儲器110中的用于所有高斯系數(shù)的多個數(shù)據(jù)被復(fù)制并且存儲。

根據(jù)一個實施例的查找表生成單元340可以為8個存儲體120、121、122、123、124、125、126和127生成相同的查找表,如圖4所示。在這種情況下,生成8個查找表,并且8個生成的查找表可以分別存儲在八個存儲體120、121、122、123、124、125、126和127中。

另外,如圖5所示,根據(jù)一個實施例的查找表生成單元340可以將主存儲器110的存儲體分成第一組(包括存儲體0120和存儲體1121)、第二組(包括存儲體2122和存儲體3123)、第三組(包括存儲體4124和存儲體5125)和第四組(包括存儲體6126和存儲體7127),并且為每個組生成一個查找表。在這種情況下,生成4個查找表,并且4個生成的查找表可以被劃分并且存儲在兩個存儲體中。

此外,根據(jù)一個實施例的查找表生成單元340可以將主存儲器110的存儲體分組為第一組(包括存儲體0120、存儲體1121、存儲體2122和存儲體3123),以及第二組(包括存儲體4124、存儲體5125、存儲體6126和存儲體7127),并且為每個組生成一個查找表。在這種情況下,生成兩個查找表。

根據(jù)一個實施例的查找表生成單元340可以考慮存儲查找表的主存儲器110中存儲的空間以及當(dāng)向量處理器180訪問查找表時發(fā)生的存儲體沖突的數(shù)量來確定查找表的數(shù)量。也就是說,由于每個查找表都需要主存儲器110中的存儲空間,并且隨著生成的查找表的數(shù)量增加,存儲體中發(fā)生的沖突的數(shù)量減少,所以在查找表的數(shù)量與存儲體沖突的數(shù)量之間存在權(quán)衡。

換句話說,當(dāng)查找表生成單元340生成與存儲體120、121、122、123、124、125、126和127的數(shù)量相對應(yīng)的查找表,并且集中單元320生成包括與存儲體的數(shù)量相同的數(shù)量的元素的向量時,即使當(dāng)多個數(shù)據(jù)同時被隨機(jī)讀取時,也僅在一個存儲體上執(zhí)行一次訪問。在這種情況下,不存在存儲體沖突,但是存儲查找表的空間最大化。然而,當(dāng)為每個預(yù)定數(shù)量的存儲體生成一個查找表時,可以增加存儲體沖突的數(shù)量,但是可以減少存儲查找表的空間。

當(dāng)向量處理器180的性能很重要時,查找表生成單元340可以生成最大數(shù)量的查找表(即,對于每個存儲體),并且可以將預(yù)定數(shù)量的存儲體分組成一個組,以考慮將存儲查找表的存儲空間為每個組生成一個查找表。當(dāng)查找表生成單元340將預(yù)定數(shù)量的存儲體分成一個組以為每個組生成一個查找表時,查找表可以以交織形式存儲在多個存儲體中。將參照圖5詳細(xì)描述查找表生成單元的處理。

集中單元320可以使用查找表從主存儲器110讀取多個數(shù)據(jù)。多個數(shù)據(jù)可以以向量的形式存儲在向量寄存器160中。集中單元320可以使用包括在訪問多個查找表時隨機(jī)生成的多個索引的索引向量來訪問存在于主存儲器110中的查找表中的每個的索引位置。

例如,集中單元320可以使用包括8個索引的索引向量來生成8路向量。更具體地,集中單元320可以使用通過將存儲在索引向量中的每個偏移添加到基地址所獲得的存儲器地址來訪問查找表中的每個的預(yù)定索引位置以從其讀取數(shù)據(jù)。

集中單元320可以從多個查找表讀取數(shù)據(jù),并且通過在預(yù)定讀取周期之后集中構(gòu)成向量的所有數(shù)據(jù)來生成向量數(shù)據(jù)。

圖4是示出根據(jù)一個實施例的在主存儲器中生成的多個查找表的圖。

根據(jù)一個實施例的主存儲器110具有512kb的大小(從0x800x_0000到0x800x_ffff的范圍),并且存儲體120、121、122、123、124、125、126和127中的每個具有64kb的大小。在圖4中的存儲體120、121、122、123、124、125、126和127的頂部示出的值0x8000x到0x807x分別被稱為存儲體的存儲體的起始地址。

如上所述,可以為8個存儲體中的每個生成查找表,或者可以通過將預(yù)定數(shù)量的存儲體分組成一個組來為每個組生成查找表。查找表生成單元340可以生成多個查找表。

圖4示出對于8個存儲體中的每個生成查找表的情況,而圖5示出為2個存儲體生成一個查找表的情況。

在圖4中,僅示出用于8個存儲體中的存儲體0120、存儲體3123和存儲體7127的查找表410、415和420,并且省略了剩余的查找表。此外,為了便于描述,查找表410、415和420中的每個中的數(shù)據(jù)被示出為具有與每個索引相同的值。

根據(jù)一個實施例的查找表生成單元340可以以二維(2d)數(shù)組的形式生成查找表。也就是說,當(dāng)生成的查找表的數(shù)量為i并且向量操作必需的數(shù)據(jù)的數(shù)量為j時,查找表可以生成為i×j的2d數(shù)組。可以通過不同的頂部地址區(qū)分查找表。

在向量處理器180執(zhí)行向量操作之前,可以在初始化步驟中生成2d數(shù)組。在圖4中,由于為所有8個存儲體120、121、122、123、124、125、126和127生成查找表,因此可以生成8個查找表。由于每個查找表包括256個數(shù)據(jù),因此可以聲明8×256的2d數(shù)組。

根據(jù)一個實施例的向量處理器180可以使用下表1中所示的軟件代碼執(zhí)行集中。將明顯的是,表1中的軟件代碼僅僅是執(zhí)行集中的一個實施例,并且可以以其他形式實現(xiàn)。

【表1】

參照表1中的代碼,“ret”表示通過執(zhí)行集中操作生成的向量。“ret”向量表示包括無符號短類型數(shù)據(jù)的8路向量。也就是說,表1中所示的“i_intr_gather8_uh”函數(shù)可以使用8個索引從8個存儲體讀取數(shù)據(jù)以生成向量。

“_i_src1”表示包括由無符號短類型數(shù)據(jù)組成的8個索引的8路索引向量?!癬i_src1.s0”到“_i_src1.s7”可以表示在其處存在將從每個查找表讀取的多個數(shù)據(jù)的索引位置,并且可以是隨機(jī)生成的索引。

“_i_src2”表示被聲明為無符號字符類型2d數(shù)組的查找表。對查找表中的每個(例如,“_i_src2[0:7]”)只執(zhí)行一次訪問。例如,可以使用“_i_src1.s0”的索引從“_i_src2[0]”的查找表中讀取數(shù)據(jù),并且可以使用“_i_src1.s1”的索引從“_i_src2[1]”的查找表中讀取數(shù)據(jù)。也就是說,可以使用對于每個查找表的不同索引讀取數(shù)據(jù)。也就是說,由于即使當(dāng)使用隨機(jī)生成的索引向量從主存儲器110讀取多個數(shù)據(jù)時,也從不同存儲體讀取8個數(shù)據(jù),因此不會發(fā)生存儲體沖突。

圖5是示出根據(jù)一個實施例的在主存儲器中生成的多個查找表的圖。

也就是說,可以生成用于存儲體0120和存儲體1121的查找表530,可以生成用于存儲體2122和存儲體3123的查找表540,可以生成用于存儲體4124和存儲體5125的查找表550,以及可以生成用于存儲體6126和存儲體7127的查找表560。

四個生成的查找表中的每個被劃分并存儲在兩個存儲體中。例如,查找表530可以被劃分并且存儲在存儲體0120和存儲體121中,并且查找表550可以被劃分并存儲在存儲體4124和存儲體5125中。

根據(jù)一個實施例的查找表可以以交織形式510存儲在多個存儲體中。也就是說,由于位于相鄰存儲器中的數(shù)據(jù)交替地存儲在兩個不同的存儲體中,因此存儲體沖突可能被最小化。例如,{0,2,4,...,252和254}的索引數(shù)據(jù)可以存儲在存儲體0120中,并且索引數(shù)據(jù){1,3,5,...,253和255}可以存儲在存儲體1121中。

根據(jù)一個實施例的向量處理器180可以使用下表2中所示的軟件代碼來執(zhí)行集中操作。將明顯的是,表2中的軟件代碼僅僅是執(zhí)行集中操作的一個實施例,并且可以以其他形式實現(xiàn)。

【表2】

在表2的代碼中,由于變量與表1相同,因此將省略其說明。與表1的區(qū)別在于,通過參照相同的查找表來生成構(gòu)成最終返回的向量“ret”的8個元素之中的2個元素。例如,“ret”的第一元素和第二元素是通過參照查找表530讀取的數(shù)據(jù),并且其第三元素和第四元素是通過參照查找表540讀取的數(shù)據(jù)。

由于當(dāng)生成的查找表的數(shù)量減少時,多個元素參照一個查找表,因此存儲體沖突的數(shù)量增加。然而,如上所述,當(dāng)以交織形式實現(xiàn)存在于多個存儲體中的一個查找表時,可以使存儲體沖突的數(shù)量最小化。

如圖5所示,查找表以交織形式510實現(xiàn),其中,偶數(shù)索引的數(shù)據(jù)存儲在存儲體0120、存儲體2122、存儲體4124和存儲體6126中,而奇數(shù)索引的數(shù)據(jù)存儲在存儲體1121、存儲體3123、存儲體5125和存儲體7127中。當(dāng)調(diào)用的(calling)索引向量是包括{偶數(shù),奇數(shù),偶數(shù),奇數(shù),偶數(shù),奇數(shù),偶數(shù),奇數(shù)}的8路向量時,不發(fā)生存儲體沖突。

圖6a是示出根據(jù)一個實施例的向量處理器的結(jié)構(gòu)的圖。

根據(jù)一個實施例的向量處理器180可以包括集中單元320、查找表生成單元340和分散單元630。由于上面已經(jīng)參照圖3描述了集中單元320和查找表生成單元340,將省略其描述。

分散單元630執(zhí)行與由集中單元320執(zhí)行的處理的逆處理相對應(yīng)的處理。因此,即使下面省略圖2至圖5中描述的集中單元320和查找表生成單元340的內(nèi)容,也可以將內(nèi)容以同樣的方式適用于根據(jù)圖6的實施例的分散單元630。

分散單元630可以將存儲在向量寄存器160中的向量數(shù)據(jù)劃分成元素,并將按元素劃分的向量存儲回多個查找表中。通過對由集中單元320生成的向量數(shù)據(jù)執(zhí)行預(yù)定向量操作所獲得的結(jié)果向量數(shù)據(jù)可以存儲在向量寄存器160中。

根據(jù)一個實施例的分散單元630可以使用下表3中所示的軟件代碼來執(zhí)行分散。將明顯的是,表3中的軟件代碼僅僅是用于執(zhí)行分散操作的一個實施例,并且可以以其他形式實現(xiàn)。

【表3】

參照表3中的代碼,“_intr_scatter8_uh”函數(shù)可以將存儲在向量寄存器160中的向量(8路向量)劃分為元素,并且將按元素劃分的向量存儲在為每個存儲體生成的查找表的預(yù)定位置處?!癬i_src3”表示存儲在向量寄存器160中的向量,并且可以存儲通過執(zhí)行向量操作所獲得的結(jié)果向量?!癬i_src3”表示包括無符號整數(shù)類型數(shù)據(jù)的8路向量。

“_i_src1”表示包括無符號短類型數(shù)據(jù)的8路索引向量。例如,“_intr_scatter8_uh”函數(shù)可以將“_i_src3.s3”存儲在查找表“_i_src2[3]”的“_i_src1.s3”位置。

圖6b是示出根據(jù)一個實施例的向量處理器同步多個查找表的方法的圖。

如上所述,由于查找表生成單元340在初始化步驟中生成多個相同的查找表,因此多個查找表的數(shù)據(jù)可以彼此同步。也就是說,與集中單元320不同,分散單元630可以改變存儲在各個查找表中的每個查找表的預(yù)定索引位置處的值,并且使用改變的值更新存儲在不同查找表的相同索引位置處的值。查找表之間的同步可以由開關(guān)單元745來實現(xiàn),該開關(guān)單元將在下面參照圖7進(jìn)行描述。

換句話說,當(dāng)存儲在向量寄存器160中的向量的元素的值被改變并且存儲在預(yù)定查找表的預(yù)定索引處的值被更新時,分散單元630還可以使用相同值來更新在剩余查找表的預(yù)定索引處存儲的數(shù)據(jù)。

例如,當(dāng)在執(zhí)行向量操作之后,當(dāng)存儲體0120的第十二索引620的值改變?yōu)閤時,剩余存儲體120、121、123、124、125、126和127的每個的第十二索引位置的值也可以使用相同的x來更新。

然而,分散單元630沒有必要在所有情況下都將所有查找表的值改變?yōu)橄嗤担⑶铱梢允褂瞄_關(guān)單元745選擇性地執(zhí)行分散操作,其將在下面參照圖8至圖10描述。

圖7是示出根據(jù)一個實施例的向量處理器的結(jié)構(gòu)的圖。

根據(jù)實施例的向量處理器可以包括集中單元320、分散單元630、開關(guān)單元745和查找表生成單元340。

開關(guān)單元745可以控制集中單元320和分散單元630對每個存儲體的訪問,以確定是否對每個查找表的預(yù)定索引位置執(zhí)行集中和分散。開關(guān)單元745可以包括與每個查找表相對應(yīng)的子開關(guān)單元(未示出),并且子開關(guān)單元可以確定是否允許集中單元320和分散單元630訪問其中存在查找表的存儲體中的預(yù)定索引位置。

每個子開關(guān)單元可以具有用于其中存在多個查找表的每個存儲體的打開/關(guān)閉開關(guān)。也就是說,每個子開關(guān)單元可以包括與存儲體數(shù)量相同數(shù)量的開關(guān),并且開關(guān)可以確定集中單元320和分散單元630是否可以訪問存儲體中的每個。

當(dāng)子開關(guān)單元關(guān)閉用于預(yù)定存儲體的開關(guān)時,集中單元320可能無法從關(guān)閉的存儲體讀取數(shù)據(jù),并且分散單元630也可能無法將數(shù)據(jù)存儲在關(guān)閉的存儲體中。此外,當(dāng)用于預(yù)定存儲體的開關(guān)打開時,集中單元320和分散單元630可以分別在打開的存儲體的預(yù)定索引位置執(zhí)行集中和分散。

例如,當(dāng)主存儲器110中存在8個存儲體時,為每個存儲體生成一個查找表,并且存在8個查找表,開關(guān)單元745可以包括8個子開關(guān)單元,并且每個子開關(guān)單元可以包括與存儲體數(shù)量相同數(shù)量的開關(guān)。當(dāng)需要同步多個相同的查找表時,向量處理器180可以適當(dāng)?shù)卮蜷_開關(guān)單元745中的每個子開關(guān)單元中的開關(guān),并且對多個相同的查找表執(zhí)行分散。下面將參照圖9描述向量處理器180的處理。

此外,當(dāng)向量處理器180從每個查找表集中一個或兩個數(shù)據(jù)來以向量的形式生成數(shù)據(jù)時,向量處理器180可以僅將開關(guān)單元745中每個子開關(guān)單元中的一個或兩個開關(guān)設(shè)置為打開,并且對一個或兩個開關(guān)執(zhí)行集中。下面將參照圖8a和圖8b描述向量處理器180的處理。

圖8a是示出根據(jù)一個實施例的向量處理器執(zhí)行集中的方法的圖。

為了便于描述,假設(shè)對于向量操作必需的數(shù)據(jù)的數(shù)量為8,并且每個查找表以交織形式存儲在兩個存儲體中。例如,查找表850以交織形式存儲在存儲體0120和存儲體1121中。集中單元320可以集中用于每個查找表的兩個數(shù)據(jù)以生成8路向量。

開關(guān)單元745可以包括與查找表相對應(yīng)的4個子開關(guān)單元810、820、830和840。子開關(guān)單元810、820、830和840中的每個可以包括與存儲體120、121、122、123、124、125、126和127的數(shù)量相同數(shù)量的開關(guān)。子開關(guān)單元810、820、830和840中的每個中的左側(cè)最上的開關(guān)可以控制對存儲體0120的訪問,并且其中的右側(cè)最下的開關(guān)可以控制對存儲體7127的訪問。

在子開關(guān)單元810、820、830和840中的每個的開關(guān)之中被設(shè)置為打開的開關(guān)被畫有陰影。在下文中,子開關(guān)單元中的左側(cè)最上的開關(guān)被稱為第一開關(guān),并且開關(guān)按從左到右從上到下的順序編號。也就是說,子開關(guān)單元810、820、830和840中的每個中的右側(cè)最下的開關(guān)是第八開關(guān)。

根據(jù)一個實施例的集中單元320可以使用第一開關(guān)和第二開關(guān)打開的子開關(guān)單元810讀取分別存儲在存儲體0120和存儲體1121中的查找表850的索引0和索引5的數(shù)據(jù)。此外,例如,集中單元320可以使用第五開關(guān)和第六開關(guān)打開的子開關(guān)單元830讀取分別存儲在存儲體4124和存儲體5125中的查找表870的索引4和索引1的數(shù)據(jù)。

圖8b是示出根據(jù)一個實施例的向量處理器執(zhí)行集中的方法的圖。

圖8b示出為存儲體120、121、122、123、124、125、126或127中的每個生成查找表的情況。開關(guān)單元745可以包括與各個查找表相對應(yīng)的8個子開關(guān)單元815、825、835、845、855、865、875和885。子開關(guān)單元815、825、835、845、855、865、875和885中的每個可以包括等于存儲體數(shù)量的8個開關(guān)。

根據(jù)一個實施例的向量處理器180可以將包括在子開關(guān)單元815、825、835、845、855、865、875和885中的每個中的8個開關(guān)之中的僅一個開關(guān)設(shè)置為打開,并且讀取查找表818、828、838、848、858、868、878和888中的每個的預(yù)定索引位置處存在的一個數(shù)據(jù)。

例如,集中單元320可以使用第一開關(guān)打開的子開關(guān)單元815讀取在存儲體0120中的查找表818的索引0處所存儲的數(shù)據(jù),并且可以使用第六開關(guān)打開的子開關(guān)單元865讀取在存儲體5125中的查找表868的索引7處所存儲的數(shù)據(jù)。

圖9是示出根據(jù)一個實施例的向量處理器執(zhí)行分散的方法的圖。

為了便于描述,假設(shè)一個查找表存儲四個數(shù)據(jù),并且該查找表以交織形式存儲在兩個存儲體中。例如,查找表950以交織形式存儲在存儲體0120和存儲體1121中。也就是說,查找表的索引0和2存在于偶數(shù)存儲體120、122、124和126中,其索引1和3存在于奇數(shù)存儲體121、123、125和127中。

根據(jù)一個實施例的分散單元630可以將存儲在向量寄存器160中的向量劃分為元素并且在查找表950、960、970和980中分散并且存儲按元素劃分的向量。

例如,假設(shè)先前存儲在向量寄存器160中的向量是4路向量,并且在執(zhí)行向量操作之后更新向量的所有元素。分散單元630可以將4路向量的第一元素存儲在查找表950中,將第二元素存儲在查找表960中,將第三元素存儲在查找表970中,以及將第四元素存儲在查找表980中。也就是說,四個元素可以分散并且存儲在各個查找表950、960、970和980的不同索引中。

然而,如上所述,可能需要多個查找表的同步。向量處理器180可以適當(dāng)?shù)貙⒋嬖谟谧娱_關(guān)單元910、920、930和940中的每個中的8個開關(guān)設(shè)置為打開,并且對各個查找表中的所有索引位置執(zhí)行分散。

也就是說,可以打開子開關(guān)單元910的第一開關(guān)、第三開關(guān)、第五開關(guān)和第七開關(guān),以將數(shù)據(jù)存儲在查找表950、960、970和980中的每個的索引2中。

此外,可以打開子開關(guān)單元920的第二開關(guān)、第四開關(guān)、第六開關(guān)和第八開關(guān),以將數(shù)據(jù)存儲在查找表950、960、970和980中的每個的索引3中。

此外,可以打開子開關(guān)單元930的第一開關(guān)、第三開關(guān)、第五開關(guān)和第七開關(guān),以將數(shù)據(jù)存儲在查找表950、960、970和980中的每個的索引0中。

此外,可以打開子開關(guān)單元940的第二開關(guān)、第四開關(guān)、第六開關(guān)和第八開關(guān),以將數(shù)據(jù)存儲在查找表950、960、970和980中的每個的索引1中。

結(jié)果,可以更新存儲在查找表950、960、970和980中的每個的索引0至3中的所有數(shù)據(jù)。

將明顯的是,向量處理器180可以僅將子開關(guān)單元910、920、930和940中的每個的開關(guān)中的一些設(shè)置為打開,并且當(dāng)不需要同步查找表時對查找表執(zhí)行分散。例如,盡管圖9中未示出,可以僅打開子開關(guān)單元910的第一開關(guān),以在存儲體0120中所存儲的查找表950的索引2的位置處存儲數(shù)據(jù)。另外,可以僅打開子開關(guān)單元920的第四開關(guān),以在存儲體3123中所存儲的查找表960的索引3的位置處存儲數(shù)據(jù)。另外,可以僅打開子開關(guān)單元930的第五開關(guān),以在存儲體4124中所存儲的查找表970的索引0的位置處存儲數(shù)據(jù)。另外,可以僅打開子開關(guān)單元940的第八開關(guān),以在存儲體7127中所存儲的查找表980的索引1的位置處存儲數(shù)據(jù)。

根據(jù)一個實施例的集中單元320、分散單元630、開關(guān)單元745和查找表生成單元340可以通過生成查找表并且僅擴(kuò)展向量處理器的加載和存儲操作而不改變向量處理器180的結(jié)構(gòu)來實現(xiàn)。因此,根據(jù)實施例的集中單元320、分散單元630、開關(guān)單元745和查找表生成單元340可以以固有形式實現(xiàn),其中,向量處理器180的指令集架構(gòu)(isa)不改變,并且因此可以在不修改向量處理器180的結(jié)構(gòu)或者不需要額外的硬件的情況下實現(xiàn)。

在下文中,將參照圖10至圖13中的流程圖來描述根據(jù)一個實施例的向量處理器180訪問存儲器并且執(zhí)行數(shù)據(jù)集中和分散的方法。圖10至圖13是用于描述圖1至圖9所示的向量處理器180執(zhí)行集和分散的方法的流程圖。因此,即使省略以上關(guān)于圖1至圖9中的向量處理器180所描述的內(nèi)容,內(nèi)容適用于根據(jù)圖10至圖13的實施例的集中和分散方法。

圖10是示出根據(jù)一個實施例的向量處理器執(zhí)行集中的方法的流程圖。

在步驟1020,向量處理器180可以為主存儲器生成多個查找表。查找表是指其中在主存儲器所存儲的數(shù)據(jù)之中的、對于當(dāng)前正在執(zhí)行的向量操作必需的數(shù)據(jù)被復(fù)制并且存儲的表。主存儲器可以具有多存儲體結(jié)構(gòu)。生成的查找表可以存儲在每個存儲體中,或者可以被劃分并且存儲在多個存儲體。

在步驟1030,向量處理器180可以執(zhí)行用于從查找表讀取多個數(shù)據(jù)并且生成向量數(shù)據(jù)的集中。更具體地,根據(jù)一個實施例的向量處理器180可以使用所生成的查找表來執(zhí)行從主存儲器讀取多個數(shù)據(jù)并且將多個數(shù)據(jù)以向量的形式存儲在向量寄存器中的集中操作。

在步驟1030,向量處理器180可以使用包括多個隨機(jī)生成的索引的索引向量訪問存在于主存儲器中的每個查找表的索引位置,以讀取數(shù)據(jù)。

圖11是示出根據(jù)一個實施例的向量處理器生成多個查找表的方法的流程圖。

在步驟1110,向量處理器180可以確定將生成的查找表的數(shù)量。根據(jù)一個實施例的向量處理器180可以考慮存儲查找表的主存儲器中的空間與訪問查找表的向量處理器引起的存儲器沖突的數(shù)量之間的權(quán)衡來確定將生成的查找表的數(shù)量。

在步驟1120,向量處理器180確定是否生成與存儲體的數(shù)量相同數(shù)量的查找表。當(dāng)確定生成的查找表的數(shù)量等于存儲體的數(shù)量時,處理進(jìn)行到步驟1140,否則處理進(jìn)行到步驟1130。

在步驟1130,向量處理器180可以將生成的查找表中的每個劃分并且存儲在多個存儲體中。根據(jù)一個實施例的向量處理器180可以以交織形式將每個查找表劃分并且存儲在多個存儲體中。也就是說,可以將多個數(shù)據(jù)交替地存儲在不同存儲體中,從而可以最小化存儲體沖突。

在步驟1140,向量處理器180可以為每個存儲體生成一個查找表。查找表分別存儲在存儲體中。

圖12是示出根據(jù)一個實施例的向量處理器執(zhí)行分散的方法的流程圖。

由于已經(jīng)參照圖10描述了步驟1020和1030。在圖10中,將省略其描述。

根據(jù)一個實施例的向量處理器180可以執(zhí)行分散,以用于將向量數(shù)據(jù)分散并且存儲在查找表中。

在步驟1230,根據(jù)一個實施例的向量處理器180可以將存儲在向量寄存器中的向量劃分為元素以將元素存儲回查找表中。存儲在向量寄存器中的向量可以對在步驟1030中生成的向量執(zhí)行向量操作,存儲通過執(zhí)行操作所獲得的結(jié)果向量數(shù)據(jù),以及可以在步驟1230將結(jié)果向量數(shù)據(jù)存儲回多個查找表。

在步驟1230,當(dāng)根據(jù)本實施例的向量處理器180更新存儲在預(yù)定查找表的預(yù)定索引中的值以便同步查找表時,存儲在剩余查找表中的每個的預(yù)定索引中的數(shù)據(jù)也可以使用相同值被更新。

圖13是示出根據(jù)一個實施例的向量處理器執(zhí)行集中和分散的方法的流程圖。

由于已經(jīng)參照圖10和圖12描述了步驟1020、1030和1230,將省略其描述。

根據(jù)一個實施例的向量處理器180可以在執(zhí)行集中(步驟1030)或執(zhí)行分散(步驟1230)之前,在步驟1310確定是否允許訪問每個查找表的預(yù)定索引位置。也就是說,向量處理器180可以通過確定存儲在查找表中的每個存儲體是否可訪問來確定要執(zhí)行集中(步驟1030)或要執(zhí)行分散(步驟1230)的查找表的索引位置。

在步驟1030,可以通過讀取在每個查找表中允許訪問的預(yù)定索引位置處存在的數(shù)據(jù)來生成向量數(shù)據(jù)。根據(jù)一個實施例的向量處理器180可以通過讀取在存在于可訪問存儲體中的查找表的預(yù)定位置處所存儲的數(shù)據(jù)來生成向量數(shù)據(jù)。

在步驟1230,向量數(shù)據(jù)可以存儲在每個查找表中允許訪問的預(yù)定索引位置。根據(jù)一個實施例的向量處理器180可以將數(shù)據(jù)存儲在存在于可訪問存儲體中的查找表的預(yù)定位置處。

根據(jù)一個實施例的向量處理器180可以應(yīng)用于執(zhí)行向量操作的大多數(shù)處理器,諸如通用處理器、數(shù)字信號處理處理器(dsp)、應(yīng)用特定指令集處理器(asip)圖形處理單元等等。

同時,方法可以被實現(xiàn)為計算機(jī)可讀記錄介質(zhì)上的計算機(jī)可讀代碼。計算機(jī)可讀記錄介質(zhì)包括存儲由計算機(jī)系統(tǒng)可以讀取的數(shù)據(jù)的所有種類的記錄裝置。例如,計算機(jī)可讀記錄介質(zhì)包括只讀存儲器(rom)、ram、壓縮盤(cd)-rom、磁帶、軟盤、光數(shù)據(jù)存儲裝置等,并且包括以諸如通過互聯(lián)網(wǎng)傳輸?shù)妮d波的形式實現(xiàn)的設(shè)備。

此外,計算機(jī)可讀記錄介質(zhì)可以分發(fā)到經(jīng)由網(wǎng)絡(luò)連接的計算機(jī)系統(tǒng),因此可以以分布式方式存儲和執(zhí)行由處理器可以讀取的代碼。

盡管本發(fā)明構(gòu)思已經(jīng)在其最佳實施例中進(jìn)行了描述,但是鑒于上述描述,對于本領(lǐng)域技術(shù)人員來說,本發(fā)明構(gòu)思的替代、修改和變化是明顯的。也就是說,權(quán)利要求應(yīng)被解釋為包括本發(fā)明構(gòu)思的所有這些替代、修改和變化。因此,包含在說明書和附圖中的所有內(nèi)容應(yīng)被解釋為說明性的并且為非限制性的含義。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1