两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種向量計(jì)算裝置的制作方法

文檔序號(hào):11653945閱讀:181來(lái)源:國(guó)知局
一種向量計(jì)算裝置的制造方法

本發(fā)明涉及一種向量運(yùn)算裝置,用于根據(jù)向量運(yùn)算指令執(zhí)行向量運(yùn)算,能夠很好地解決當(dāng)前計(jì)算機(jī)領(lǐng)域越來(lái)越多的算法包含大量向量運(yùn)算的問(wèn)題。



背景技術(shù):

當(dāng)前計(jì)算機(jī)領(lǐng)域有越來(lái)越多的算法涉及到向量運(yùn)算,以人工神經(jīng)網(wǎng)絡(luò)算法為例,多種神經(jīng)網(wǎng)絡(luò)算法中都含有大量的向量運(yùn)算。在神經(jīng)網(wǎng)絡(luò)中,輸出神經(jīng)元的運(yùn)算表達(dá)式為y=f(wx+b),其中w是矩陣,x、b是向量,計(jì)算輸出向量y的過(guò)程為矩陣w與向量x相乘,加上向量b,然后對(duì)得到的向量進(jìn)行激活函數(shù)運(yùn)算(即對(duì)向量中的每個(gè)元素進(jìn)行激活函數(shù)運(yùn)算)。因此,向量運(yùn)算成為目前各種計(jì)算裝置在設(shè)計(jì)之初都需要考慮的一個(gè)重要問(wèn)題。

在現(xiàn)有技術(shù)中,一種進(jìn)行向量運(yùn)算的已知方案是使用通用處理器,該方法通過(guò)通用寄存器堆和通用功能部件來(lái)執(zhí)行通用指令,從而執(zhí)行向量運(yùn)算。然而,該方法的缺點(diǎn)之一是單個(gè)通用處理器多用于標(biāo)量計(jì)算,在進(jìn)行向量運(yùn)算時(shí)運(yùn)算性能較低。而使用多個(gè)通用處理器并行執(zhí)行時(shí),通用處理器之間的相互通訊又有可能成為性能瓶頸。

在另一種現(xiàn)有技術(shù)中,使用圖形處理器(gpu)來(lái)進(jìn)行向量計(jì)算,其中,通過(guò)使用通用寄存器堆和通用流處理單元執(zhí)行通用simd指令來(lái)進(jìn)行向量運(yùn)算。然而,上述方案中,gpu片上緩存太小,在進(jìn)行大規(guī)模向量運(yùn)算時(shí)需要不斷進(jìn)行片外數(shù)據(jù)搬運(yùn),片外帶寬成為了主要性能瓶頸。

在另一種現(xiàn)有技術(shù)中,使用專門定制的向量運(yùn)算裝置來(lái)進(jìn)行向量計(jì)算,其中,使用定制的寄存器堆和定制的處理單元進(jìn)行向量運(yùn)算。然而,目前已有的專用向量運(yùn)算裝置受限于寄存器堆,不能夠靈活地支持不同長(zhǎng)度的向量運(yùn)算。



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

(一)要解決的技術(shù)問(wèn)題

本發(fā)明的目的在于,提供一種向量運(yùn)算裝置,解決現(xiàn)有技術(shù)中存在的受限于片間通訊、片上緩存不夠、支持的向量長(zhǎng)度不夠靈活等問(wèn)題。

(二)技術(shù)方案

本發(fā)明提供一種向量運(yùn)算裝置,用于根據(jù)向量運(yùn)算指令執(zhí)行向量運(yùn)算,包括:

存儲(chǔ)單元,用于存儲(chǔ)向量;

寄存器單元,用于存儲(chǔ)向量地址,其中,向量地址為向量在存儲(chǔ)單元中存儲(chǔ)的地址;

向量運(yùn)算單元,用于獲取向量運(yùn)算指令,根據(jù)向量運(yùn)算指令在寄存器單元中獲取向量地址,然后,根據(jù)該向量地址在存儲(chǔ)單元中獲取相應(yīng)的向量,接著,根據(jù)獲取的向量進(jìn)行向量運(yùn)算,得到向量運(yùn)算結(jié)果。

(三)有益效果

本發(fā)明提供的向量運(yùn)算裝置,將參與計(jì)算的向量數(shù)據(jù)暫存在高速暫存存儲(chǔ)器上(scratchpadmemory),使得向量運(yùn)算過(guò)程中可以更加靈活有效地支持不同寬度的數(shù)據(jù),提升包含大量向量計(jì)算任務(wù)的執(zhí)行性能,本發(fā)明采用的指令具有精簡(jiǎn)的格式,使得指令集使用方便、支持的向量長(zhǎng)度靈活。

附圖說(shuō)明

圖1是本發(fā)明提供的向量運(yùn)算裝置的結(jié)構(gòu)示意圖。

圖2是本發(fā)明提供的指令集的格式示意圖。

圖3是本發(fā)明實(shí)施例提供的向量運(yùn)算裝置的結(jié)構(gòu)示意圖。

圖4是本發(fā)明實(shí)施例提供的向量運(yùn)算裝置執(zhí)行向量點(diǎn)積指令的流程圖。

圖5為本發(fā)明實(shí)施例提供的向量運(yùn)算單元的結(jié)構(gòu)示意圖。

具體實(shí)施方式

本發(fā)明提供一種向量計(jì)算裝置,包括存儲(chǔ)單元、寄存器單元和向量運(yùn)算單元,存儲(chǔ)單元中存儲(chǔ)有向量,寄存器單元中存儲(chǔ)有向量存儲(chǔ)的地址向 量運(yùn)算單元根據(jù)向量運(yùn)算指令在寄存器單元中獲取向量地址,然后,根據(jù)該向量地址在存儲(chǔ)單元中獲取相應(yīng)的向量,接著,根據(jù)獲取的向量進(jìn)行向量運(yùn)算,得到向量運(yùn)算結(jié)果。本發(fā)明將參與計(jì)算的向量數(shù)據(jù)暫存在高速暫存存儲(chǔ)器上,使得向量運(yùn)算過(guò)程中可以更加靈活有效地支持不同寬度的數(shù)據(jù),提升包含大量向量計(jì)算任務(wù)的執(zhí)行性能。

圖1是本發(fā)明提供的向量運(yùn)算裝置的結(jié)構(gòu)示意圖,如圖1所示,向量運(yùn)算裝置包括:

存儲(chǔ)單元,用于存儲(chǔ)向量,在一種實(shí)施方式中,該存儲(chǔ)單元可以是高速暫存存儲(chǔ)器,能夠支持不同大小的向量數(shù)據(jù);本發(fā)明將必要的計(jì)算數(shù)據(jù)暫存在高速暫存存儲(chǔ)器上(scratchpadmemory),使本運(yùn)算裝置在進(jìn)行向量運(yùn)算過(guò)程中可以更加靈活有效地支持不同寬度的數(shù)據(jù)。

寄存器單元,用于存儲(chǔ)向量地址,其中,向量地址為向量在存儲(chǔ)單元中存儲(chǔ)的地址;在一種實(shí)施方式中,寄存器單元可以是標(biāo)量寄存器堆,提供運(yùn)算過(guò)程中所需的標(biāo)量寄存器,標(biāo)量寄存器不只存放向量地址,還存放有標(biāo)量數(shù)據(jù)。當(dāng)涉及到向量與標(biāo)量的運(yùn)算時(shí),向量運(yùn)算單元不僅要從寄存器單元中獲取向量地址,還要從寄存器單元中獲取相應(yīng)的標(biāo)量。

向量運(yùn)算單元,用于獲取向量運(yùn)算指令,根據(jù)向量運(yùn)算指令在所述寄存器單元中獲取向量地址,然后,根據(jù)該向量地址在存儲(chǔ)單元中獲取相應(yīng)的向量,接著,根據(jù)獲取的向量進(jìn)行向量運(yùn)算,得到向量運(yùn)算結(jié)果,并將向量運(yùn)算結(jié)果存儲(chǔ)于存儲(chǔ)單元中。向量運(yùn)算單元包含包括向量加法部件、向量乘法部件、大小比較部件、非線性運(yùn)算部件和向量標(biāo)量乘法部件,并且,向量運(yùn)算單元為多流水級(jí)結(jié)構(gòu),其中,向量加法部件和向量乘法部件處于第一流水級(jí),大小比較部件處于第二流水級(jí),非線性運(yùn)算部件和向量標(biāo)量乘法部件處于第三流水級(jí)。這些單元處于不同的流水級(jí),當(dāng)連續(xù)串行的多條向量運(yùn)算指令的先后次序與相應(yīng)單元所在流水級(jí)順序一致時(shí),可以更加高效地實(shí)現(xiàn)這一連串向量運(yùn)算指令所要求的操作。向量運(yùn)算單元負(fù)責(zé)裝置的所有向量運(yùn)算,包括但不限于向量加法操作、向量加標(biāo)量操作、向量減法操作、向量減標(biāo)量操作、向量乘法操作、向量乘標(biāo)量操作、向量除法(對(duì)位相除)操作、向量與操作和向量或操作,向量運(yùn)算指令被送往該運(yùn)算單元執(zhí)行。

根據(jù)本發(fā)明的一種實(shí)施方式,向量運(yùn)算裝置還包括:指令緩存單元,用于存儲(chǔ)待執(zhí)行的向量運(yùn)算指令。指令在執(zhí)行過(guò)程中,同時(shí)也被緩存在指令緩存單元中,當(dāng)一條指令執(zhí)行完之后,如果該指令同時(shí)也是指令緩存單元中未被提交指令中最早的一條指令,該指令將背提交,一旦提交,該條指令進(jìn)行的操作對(duì)裝置狀態(tài)的改變將無(wú)法撤銷。在一種實(shí)施方式中,指令緩存單元可以是重排序緩存。

根據(jù)本發(fā)明的一種實(shí)施方式,向量運(yùn)算裝置還包括:指令處理單元,用于從指令緩存單元獲取向量運(yùn)算指令,并對(duì)該向量運(yùn)算指令進(jìn)行處理后,提供給所述向量運(yùn)算單元。其中,指令處理單元包括:

取指模塊,用于從指令緩存單元中獲取向量運(yùn)算指令;

譯碼模塊,用于對(duì)獲取的向量運(yùn)算指令進(jìn)行譯碼;

指令隊(duì)列,用于對(duì)譯碼后的向量運(yùn)算指令進(jìn)行順序存儲(chǔ),考慮到不同指令在包含的寄存器上有可能存在依賴關(guān)系,用于緩存譯碼后的指令,當(dāng)依賴關(guān)系被滿足之后發(fā)射指令。

根據(jù)本發(fā)明的一種實(shí)施方式,向量運(yùn)算裝置還包括:依賴關(guān)系處理單元,用于在向量運(yùn)算單元獲取向量運(yùn)算指令前,判斷該向量運(yùn)算指令與前一向量運(yùn)算指令是否訪問(wèn)相同的向量,若是,將該向量運(yùn)算指令存儲(chǔ)在一存儲(chǔ)隊(duì)列中,待前一向量運(yùn)算指令執(zhí)行完畢后,將存儲(chǔ)隊(duì)列中的該向量運(yùn)算指令提供給所述向量運(yùn)算單元;否則,直接將該向量運(yùn)算指令提供給所述向量運(yùn)算單元。具體地,向量運(yùn)算指令訪問(wèn)高速暫存存儲(chǔ)器時(shí),前后指令可能會(huì)訪問(wèn)同一塊存儲(chǔ)空間,為了保證指令執(zhí)行結(jié)果的正確性,當(dāng)前指令如果被檢測(cè)到與之前的指令的數(shù)據(jù)存在依賴關(guān)系,該指令必須在存儲(chǔ)隊(duì)列內(nèi)等待至依賴關(guān)系被消除。

根據(jù)本發(fā)明的一種實(shí)施方式,向量運(yùn)算裝置還包括:輸入輸出單元,用于將向量存儲(chǔ)于存儲(chǔ)單元,或者,從存儲(chǔ)單元中獲取向量運(yùn)算結(jié)果。其中,輸入輸出單元可直接存儲(chǔ)單元,負(fù)責(zé)從內(nèi)存中讀取向量數(shù)據(jù)或?qū)懭胂蛄繑?shù)據(jù)。

根據(jù)本發(fā)明的一種實(shí)施方式,用于本發(fā)明裝置的指令集采用load/store結(jié)構(gòu),向量運(yùn)算單元不會(huì)對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行操作。本指令集采用精簡(jiǎn)指令集架構(gòu),指令集只提供最基本的向量運(yùn)算操作,復(fù)雜的向量 運(yùn)算都由這些簡(jiǎn)單指令通過(guò)組合進(jìn)行模擬,使得可以在高時(shí)鐘頻率下單周期執(zhí)行指令。另外,本指令集同時(shí)采用定長(zhǎng)指令,使得本發(fā)明提出的向量運(yùn)算裝置在上一條指令的譯碼階段對(duì)下一條指令進(jìn)行取指。

圖2是本發(fā)明提供的指令集的格式示意圖,如圖2所示,向量運(yùn)算指令包括一操作碼和至少一操作域,其中,操作碼用于指示該向量運(yùn)算指令的功能,向量運(yùn)算單元通過(guò)識(shí)別該操作碼可進(jìn)行不同的向量運(yùn)算,操作域用于指示該向量運(yùn)算指令的數(shù)據(jù)信息,其中,數(shù)據(jù)信息可以是立即數(shù)或寄存器號(hào),例如,要獲取一個(gè)向量時(shí),根據(jù)寄存器號(hào)可以在相應(yīng)的寄存器中獲取向量起始地址和向量長(zhǎng)度,再根據(jù)向量起始地址和向量長(zhǎng)度在存儲(chǔ)單元中獲取相應(yīng)地址存放的向量。

指令集包含有不同功能的向量運(yùn)算指令:

向量加法指令(va)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址處分別取出兩塊指定大小的向量數(shù)據(jù),在向量運(yùn)算單元中進(jìn)行加法運(yùn)算,并將結(jié)果寫(xiě)回至高速暫存存儲(chǔ)器的指定地址;

向量加標(biāo)量指令(vas)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),從標(biāo)量寄存器堆的指定地址取出標(biāo)量數(shù)據(jù),在標(biāo)量運(yùn)算單元中將向量的每一個(gè)元素加上該標(biāo)量值,并將結(jié)果寫(xiě)回至高速暫存存儲(chǔ)器的指定地址;

向量減法指令(vs)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址處分別取出兩塊指定大小的向量數(shù)據(jù),在向量運(yùn)算單元中進(jìn)行減法運(yùn)算,并將結(jié)果寫(xiě)回至高速暫存存儲(chǔ)器的指定地址;

標(biāo)量減向量指令(ssv)。根據(jù)該指令,裝置從標(biāo)量寄存器堆的指定地址取出標(biāo)量數(shù)據(jù),從高速暫存存儲(chǔ)器的指定地址取出向量數(shù)據(jù),在向量計(jì)算單元中用該標(biāo)量減去向量中的相應(yīng)元素,并將結(jié)果寫(xiě)回高速暫存存儲(chǔ)器的指定地址;

向量乘法指令(vmv)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址分別取出指定大小的向量數(shù)據(jù),在向量計(jì)算單元中將兩向量數(shù)據(jù)對(duì)位相乘,并將結(jié)果寫(xiě)回高速暫存存儲(chǔ)器的指定地址;

向量乘標(biāo)量指令(vms)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),從標(biāo)量寄存器堆的指定地址取出指定大 小的標(biāo)量數(shù)據(jù),在向量寄存單元中進(jìn)行向量乘標(biāo)量運(yùn)算,并將結(jié)果寫(xiě)回高速暫存存儲(chǔ)器的指定地址;

向量除法指令(vd)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出分別取出指定大小的向量數(shù)據(jù),在向量運(yùn)算單元中將兩向量對(duì)位相除,并將結(jié)果寫(xiě)回至高速暫存存儲(chǔ)器的指定地址;

標(biāo)量除向量指令(sdv)。根據(jù)該指令,裝置從標(biāo)量寄存器堆的指定位置取出標(biāo)量數(shù)據(jù),從高速暫存存儲(chǔ)器的指定位置取出指定大小的向量數(shù)據(jù),在向量計(jì)算單元中用標(biāo)量分別除以向量中的相應(yīng)元素,并將結(jié)果寫(xiě)回至高速暫存存儲(chǔ)器的指定位置;

向量間與指令(vav)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出分別取出指定大小的向量數(shù)據(jù),在向量運(yùn)算單元中將兩向量對(duì)位相與,并將結(jié)果寫(xiě)回至高速暫存存儲(chǔ)器的指定地址;

向量?jī)?nèi)與指令(vand)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在向量運(yùn)算單元中向量中每一位相與,并將結(jié)果寫(xiě)回至標(biāo)量寄存器堆的指定地址;

向量間或指令(vov)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出分別取出指定大小的向量數(shù)據(jù),在向量運(yùn)算單元中將兩向量對(duì)位相或,并將結(jié)果寫(xiě)回至高速暫存存儲(chǔ)器的指定地址;

向量?jī)?nèi)或指令(vor)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在向量運(yùn)算單元中向量中每一位相或,并將結(jié)果寫(xiě)回至標(biāo)量寄存器堆的指定地址;

向量指數(shù)指令(ve)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在向量運(yùn)算單元中向量中對(duì)每一元素進(jìn)行指數(shù)運(yùn)算,并將結(jié)果寫(xiě)回至標(biāo)量寄存器堆的指定地址;

向量對(duì)數(shù)指令(vl)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在向量運(yùn)算單元中向量中對(duì)每一元素進(jìn)行對(duì)數(shù)運(yùn)算,并將結(jié)果寫(xiě)回至標(biāo)量寄存器堆的指定地址;

向量大于判定指令(vgt)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器中的指定地址分別取出指定大小的向量數(shù)據(jù),在向量運(yùn)算單元中將兩向量數(shù)據(jù)對(duì)位比較,前者大于后者在輸出向量相應(yīng)位中置1,否則置0,并將結(jié) 果寫(xiě)回至高速暫存存儲(chǔ)器的指定地址;

向量等于判定指令(veq)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器中的指定地址分別取出指定大小的向量數(shù)據(jù),在向量運(yùn)算單元中將兩向量數(shù)據(jù)對(duì)位比較,前者等于后者在輸出向量相應(yīng)位中置1,否則置0,并將結(jié)果寫(xiě)回至高速暫存存儲(chǔ)器的指定地址;

向量非指令(vinv)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),將該向量按位取非,并將結(jié)果存回至高速暫存存儲(chǔ)器的指定地址;

向量選擇合并指令(vmer)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址分別取出指定大小的向量數(shù)據(jù),包括選擇向量和被選擇向量一以及被選擇向量二。向量計(jì)算單元根據(jù)選擇向量的元素為1或0從被選擇向量一或被選擇向量二中選取相應(yīng)元素作為輸出向量里該位置的元素,并將結(jié)果寫(xiě)回至高速暫存存儲(chǔ)器的指定位置;

向量最大值指令(vmax)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),從中選出最大的元素作為結(jié)果,并將結(jié)果寫(xiě)回至標(biāo)量寄存器堆的指定地址;

標(biāo)量擴(kuò)展指令(stv)。根據(jù)該指令,裝置從標(biāo)量寄存器堆的指定地址取出標(biāo)量數(shù)據(jù),在向量運(yùn)算單元中,將標(biāo)量擴(kuò)展成指定長(zhǎng)度的向量,并將結(jié)果寫(xiě)回至標(biāo)量寄存器堆;

標(biāo)量替換向量指令(stvpn)。根據(jù)該指令,裝置從標(biāo)量寄存器堆的指定地址取出標(biāo)量,從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在向量計(jì)算單元中將向量中的指定位置的元素替換成該標(biāo)量值,并將結(jié)果寫(xiě)回至高速暫存存儲(chǔ)器的指定地址;

向量替換標(biāo)量指令(vpnts)。根據(jù)該指令,裝置從標(biāo)量寄存器堆的指定地址取出標(biāo)量,從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在向量計(jì)算單元中用向量中的指定位置的元素替換該標(biāo)量值,并將結(jié)果寫(xiě)回至標(biāo)量寄存器堆的指定地址;

向量檢索指令(vr)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在向量計(jì)算單元中根據(jù)指定位置取出向量中的相應(yīng)元素作為輸出,并將結(jié)果寫(xiě)回至標(biāo)量寄存器堆的指定地址;

向量點(diǎn)積指令(vp)。根據(jù)該指令,裝置分別從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在向量計(jì)算單元中將兩向量進(jìn)行點(diǎn)積運(yùn)算,并將結(jié)果寫(xiě)回至標(biāo)量寄存堆得指定地址;

隨機(jī)向量指令(rv)。根據(jù)該指令,裝置在向量計(jì)算單元中生成范圍從0到1的服從均勻分布的隨機(jī)向量,并將結(jié)果寫(xiě)回至高速暫存存儲(chǔ)器的指定地址;

循環(huán)移位指令(vcs)。根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在向量計(jì)算單元中將該向量按照指定步長(zhǎng)進(jìn)行循環(huán)移位,并將結(jié)果寫(xiě)回至高速暫存存儲(chǔ)器的指定地址;

向量加載指令(vload)。根據(jù)該指令,裝置從指定外部源地址載入指定大小的向量數(shù)據(jù)至高速暫存存儲(chǔ)器的指定地址;

向量存儲(chǔ)指令(vs)。根據(jù)該指令,裝置將高速暫存存儲(chǔ)器的指定地址的指定大小的向量數(shù)據(jù)存至外部目的地址處;

向量搬運(yùn)指令(vmove)。根據(jù)該指令,裝置將高速暫存存儲(chǔ)器的指定地址的指定大小的向量數(shù)據(jù)存至高速暫存存儲(chǔ)器的另一指定地址處。

為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。

圖3是本發(fā)明實(shí)施例提供的向量運(yùn)算裝置的結(jié)構(gòu)示意圖,如圖3所示,裝置包括取指模塊、譯碼模塊、指令隊(duì)列、標(biāo)量寄存器堆、依賴關(guān)系處理單元、存儲(chǔ)隊(duì)列、重排序緩存、向量運(yùn)算單元、高速暫存器、io內(nèi)存存取模塊;

取指模塊,該模塊負(fù)責(zé)從指令序列中取出下一條將要執(zhí)行的指令,并將該指令傳給譯碼模塊;

譯碼模塊,該模塊負(fù)責(zé)對(duì)指令進(jìn)行譯碼,并將譯碼后指令傳給指令隊(duì)列;

指令隊(duì)列,考慮到不同指令在包含的標(biāo)量寄存器上有可能存在依賴關(guān)系,用于緩存譯碼后的指令,當(dāng)依賴關(guān)系被滿足之后發(fā)射指令;

標(biāo)量寄存器堆,提供裝置在運(yùn)算過(guò)程中所需的標(biāo)量寄存器;

依賴關(guān)系處理單元,該模塊處理處理指令與前一條指令可能存在的存儲(chǔ)依賴關(guān)系。向量運(yùn)算指令會(huì)訪問(wèn)高速暫存存儲(chǔ)器,前后指令可能會(huì)訪問(wèn) 同一塊存儲(chǔ)空間。為了保證指令執(zhí)行結(jié)果的正確性,當(dāng)前指令如果被檢測(cè)到與之前的指令的數(shù)據(jù)存在依賴關(guān)系,該指令必須在存儲(chǔ)隊(duì)列內(nèi)等待至依賴關(guān)系被消除。

存儲(chǔ)隊(duì)列,該模塊是一個(gè)有序隊(duì)列,與之前指令在數(shù)據(jù)上有依賴關(guān)系的指令被存儲(chǔ)在該隊(duì)列內(nèi)直至存儲(chǔ)關(guān)系被消除;

重排序緩存,指令在執(zhí)行過(guò)程中,同時(shí)也被緩存在給模塊中,當(dāng)一條指令執(zhí)行完之后,如果該指令同時(shí)也是重排序緩存中未被提交指令中最早的一條指令,該指令將背提交。一旦提交,該條指令進(jìn)行的操作對(duì)裝置狀態(tài)的改變將無(wú)法撤銷;

向量運(yùn)算單元,該模塊負(fù)責(zé)裝置的所有向量運(yùn)算,包括但不限于向量加法操作、向量加標(biāo)量操作、向量減法操作、向量減標(biāo)量操作、向量乘法操作、向量乘標(biāo)量操作、向量除法(對(duì)位相除)操作、向量與操作和向量或操作,向量運(yùn)算指令被送往該運(yùn)算單元執(zhí)行;

高速暫存器,該模塊是向量數(shù)據(jù)專用的暫存存儲(chǔ)裝置,能夠支持不同大小的向量數(shù)據(jù);

io內(nèi)存存取模塊,該模塊用于直接訪問(wèn)高速暫存存儲(chǔ)器,負(fù)責(zé)從高速暫存存儲(chǔ)器中讀取數(shù)據(jù)或?qū)懭霐?shù)據(jù)。

圖4是本發(fā)明實(shí)施例提供的向量運(yùn)算裝置執(zhí)行向量點(diǎn)積指令的流程圖,如圖4所示,執(zhí)行向量點(diǎn)積指令(vp)的過(guò)程包括:

s1,取指模塊取出該條向量點(diǎn)積指令,并將該指令送往譯碼模塊。

s2,譯碼模塊對(duì)指令譯碼,并將指令送往指令隊(duì)列。

s3,在指令隊(duì)列中,該向量點(diǎn)積指令需要從標(biāo)量寄存器堆中獲取指令中四個(gè)操作域所對(duì)應(yīng)的標(biāo)量寄存器里的數(shù)據(jù),包括向量vin0的起始地址、向量vin0的長(zhǎng)度、向量vin1的起始地址、向量vin1的長(zhǎng)度。

s4,在取得需要的標(biāo)量數(shù)據(jù)后,該指令被送往依賴關(guān)系處理單元。依賴關(guān)系處理單元分析該指令與前面的尚未執(zhí)行結(jié)束的指令在數(shù)據(jù)上是否存在依賴關(guān)系。該條指令需要在存儲(chǔ)隊(duì)列中等待至其與前面的未執(zhí)行結(jié)束的指令在數(shù)據(jù)上不再存在依賴關(guān)系為止。

s5:依賴關(guān)系不存在后,該條向量點(diǎn)積指令被送往向量運(yùn)算單元。向量運(yùn)算單元根據(jù)所需數(shù)據(jù)的地址和長(zhǎng)度從數(shù)據(jù)暫存器中取出需要的向量, 然后在向量運(yùn)算單元中完成點(diǎn)積運(yùn)算。

s6,運(yùn)算完成后,將結(jié)果寫(xiě)回至高速暫存存儲(chǔ)器的指定地址,同時(shí)提交重排序緩存中的該向量點(diǎn)積指令。

圖5為本發(fā)明實(shí)施例提供的向量運(yùn)算單元的結(jié)構(gòu)示意圖,如圖5所示,向量運(yùn)算單元內(nèi)包含向量加法運(yùn)算單元、大小比較單元、非線性運(yùn)算單元、向量標(biāo)量乘法單元等。并且,向量運(yùn)算單元為多流水級(jí)結(jié)構(gòu),其中,向量加法部件和向量乘法部件處于流水級(jí)1,大小比較部件處于流水級(jí)2,非線性運(yùn)算部件和向量標(biāo)量乘法部件處于流水級(jí)3。這些單元處于不同的流水級(jí),當(dāng)連續(xù)串行的多條向量運(yùn)算指令的先后次序與相應(yīng)單元所在流水級(jí)順序一致時(shí),可以更加高效地實(shí)現(xiàn)這一連串向量運(yùn)算指令所要求的操作。

以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
监利县| 黑水县| 六安市| 安溪县| 巴彦县| 库尔勒市| 塔城市| 保山市| 库尔勒市| 镇远县| 冷水江市| 凌海市| 鄂伦春自治旗| 冷水江市| 浪卡子县| 三河市| 樟树市| 苍梧县| 常熟市| 中阳县| 武宁县| 杨浦区| 房产| 衡阳市| 邳州市| 邵阳市| 茶陵县| 西城区| 南皮县| 万盛区| 永胜县| 嘉黎县| 马龙县| 汝南县| 封开县| 民权县| 井陉县| 绥中县| 湖口县| 石首市| 闵行区|