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

一種用于執(zhí)行向量超越函數(shù)運(yùn)算的裝置和方法與流程

文檔序號(hào):12863465閱讀:218來(lái)源:國(guó)知局
一種用于執(zhí)行向量超越函數(shù)運(yùn)算的裝置和方法與流程

本發(fā)明涉及一種計(jì)算裝置,該裝置可以根據(jù)指令對(duì)一組向量數(shù)據(jù)進(jìn)行各種超越函數(shù)運(yùn)算,能夠以較高的效率得到高精確度的超越函數(shù)計(jì)算結(jié)果。本發(fā)明裝置及方法在進(jìn)行針對(duì)向量的超越函數(shù)運(yùn)算上有著區(qū)別于傳統(tǒng)方法的顯著優(yōu)勢(shì)。



背景技術(shù):

超越函數(shù),包括但不限于指數(shù)運(yùn)算、對(duì)數(shù)運(yùn)算和三角函數(shù)運(yùn)算。這類運(yùn)算區(qū)別于傳統(tǒng)的四則運(yùn)算,不是有限多項(xiàng)式的形式,變量之間的關(guān)系也不能用有限次的加、減、乘、除、乘方、開(kāi)方來(lái)等價(jià)。其運(yùn)算難度和代價(jià)遠(yuǎn)遠(yuǎn)大于傳統(tǒng)的加減乘除。而當(dāng)前的計(jì)算機(jī)領(lǐng)域中,確實(shí)存在著許多對(duì)一整列向量數(shù)據(jù)甚至矩陣數(shù)據(jù)進(jìn)行超越函數(shù)運(yùn)算的要求,例如許多機(jī)器學(xué)習(xí)算法中就需要對(duì)大量數(shù)據(jù)進(jìn)行指數(shù)和對(duì)數(shù)運(yùn)算。因此,就要求有一種能夠針對(duì)向量數(shù)據(jù)高效實(shí)現(xiàn)各種超越函數(shù)計(jì)算的裝置和方法。

在現(xiàn)有技術(shù)中,一種最常用的實(shí)現(xiàn)向量超越函數(shù)計(jì)算的方案是使用通用處理器。該方法通過(guò)通用寄存器堆和通用功能部件來(lái)執(zhí)行通用指令,從而執(zhí)行矩陣運(yùn)算。然而,因?yàn)橥ㄓ锰幚砥鞑](méi)有專門用于計(jì)算超越函數(shù)的運(yùn)算部件,必須采用泰勒展開(kāi)的形式用高次多項(xiàng)式來(lái)逼近得到激活函數(shù)的結(jié)果,需要多條指令的執(zhí)行才能夠完成整個(gè)運(yùn)算。同時(shí),通用處理器面向標(biāo)量運(yùn)算,在實(shí)現(xiàn)對(duì)于向量數(shù)據(jù)的超越函數(shù)運(yùn)算時(shí)需要逐個(gè)執(zhí)行,這就進(jìn)一步降低了運(yùn)算效率。

在另一種現(xiàn)有技術(shù)中,使用圖形處理器(gpu)來(lái)針對(duì)向量數(shù)據(jù)進(jìn)行超越函數(shù)運(yùn)算,其中,通過(guò)使用通用寄存器堆和通用流處理單元執(zhí)行通用simd指令來(lái)進(jìn)行運(yùn)算。該方案雖然解決了通用處理器串行計(jì)算的問(wèn)題,但仍需要采用泰特展開(kāi)的方式使用高次多項(xiàng)式來(lái)計(jì)算得到高精度的結(jié)果。 同時(shí),gpu片上緩存太小,在進(jìn)行大規(guī)模超越函數(shù)運(yùn)算時(shí)需要不斷進(jìn)行片外數(shù)據(jù)搬運(yùn),片外帶寬成為了主要性能瓶頸。

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

綜上所述,現(xiàn)有的不管是通用處理器、還是圖形處理器或者其他的定制計(jì)算裝置都無(wú)法進(jìn)行靈活高效的向量超越函數(shù)運(yùn)算,并且這些現(xiàn)有技術(shù)在處理矩陣乘運(yùn)算問(wèn)題時(shí)存在著代碼量大,速度慢,效率低,片上緩存不夠,支持的向量規(guī)模不夠靈活等問(wèn)題。



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

本發(fā)明旨在提供一種用于解決向量超越函數(shù)運(yùn)算任務(wù)的裝置和方法,能夠根據(jù)指令快速、靈活執(zhí)行針對(duì)不同長(zhǎng)度的向量數(shù)據(jù)的各種超越函數(shù)計(jì)算,即對(duì)于向量x,針對(duì)其中的每一個(gè)元素xi快速計(jì)算出相應(yīng)的超越函數(shù)值yi=f(xi),其中f可以是各種超越函數(shù),包括但不限于指數(shù)函數(shù)、對(duì)數(shù)函數(shù)、三角函數(shù)和反三角函數(shù)。

根據(jù)本發(fā)明一方面,提供了一種向量超越函數(shù)運(yùn)算裝置,該裝置包括:

存儲(chǔ)單元,用于存儲(chǔ)向量運(yùn)算指令相關(guān)的向量數(shù)據(jù);

寄存器單元,用于存儲(chǔ)向量運(yùn)算指令相關(guān)的標(biāo)量數(shù)據(jù);

控制單元,用于對(duì)向量運(yùn)算指令進(jìn)行譯碼,并控制向量運(yùn)算指令的運(yùn)算過(guò)程;

超越函數(shù)計(jì)算單元,用于對(duì)向量運(yùn)算指令進(jìn)行超越函數(shù)計(jì)算;

其中,所述超越函數(shù)計(jì)算單元包括預(yù)處理部分和迭代計(jì)算部分,其中預(yù)處理部分對(duì)輸入向量數(shù)據(jù)進(jìn)行預(yù)處理,使其處于cordic算法能夠處理的范圍之內(nèi),所述迭代計(jì)算部分利用cordic算法對(duì)經(jīng)過(guò)預(yù)處理的輸入向量數(shù)據(jù)進(jìn)行迭代運(yùn)算,得到結(jié)果向量數(shù)據(jù)。

優(yōu)選地,所述超越函數(shù)計(jì)算單元利用硬件實(shí)現(xiàn)。

優(yōu)選地,所述存儲(chǔ)單元為高速暫存存儲(chǔ)器。

優(yōu)選地,所述寄存器單元所存儲(chǔ)的標(biāo)量數(shù)據(jù)包括向量運(yùn)算指令相關(guān)的輸入向量數(shù)據(jù)起始地址、輸出向量數(shù)據(jù)存儲(chǔ)地址、輸入向量數(shù)據(jù)長(zhǎng)度;其中,所述輸入向量數(shù)據(jù)的起始地址以及輸出向量數(shù)據(jù)存儲(chǔ)地址為所述存儲(chǔ)單元中的地址。

優(yōu)選地,所述超越函數(shù)計(jì)算單元還包括后處理部分,其用于對(duì)所述迭代計(jì)算部分輸出結(jié)果向量數(shù)據(jù)進(jìn)行后處理。

優(yōu)選地,所述控制單元包括:

指令隊(duì)列模塊,用于對(duì)譯碼后的向量運(yùn)算指令進(jìn)行順序存儲(chǔ),并獲取向量運(yùn)算指令相關(guān)的標(biāo)量數(shù)據(jù)。

優(yōu)選地,所述控制單元包括:

依賴關(guān)系處理單元,用于在超越函數(shù)計(jì)算單元獲取當(dāng)前向量運(yùn)算指令前,判斷當(dāng)前向量運(yùn)算指令與之前未執(zhí)行完的運(yùn)算指令是否存在依賴關(guān)系。

優(yōu)選地,所述控制單元包括:

存儲(chǔ)隊(duì)列模塊,用于在當(dāng)前向量運(yùn)算指令與之前未執(zhí)行完的運(yùn)算指令存在依賴關(guān)系時(shí),暫時(shí)存儲(chǔ)當(dāng)前向量運(yùn)算指令,并且在該依賴關(guān)系消除時(shí),將暫存的向量運(yùn)算指令送往超越函數(shù)計(jì)算單元。

優(yōu)選地,所述裝置還包括:

指令緩存單元,用于存儲(chǔ)待執(zhí)行的向量運(yùn)算指令;

輸入輸出單元,用于將向量運(yùn)算指令相關(guān)的向量數(shù)據(jù)存儲(chǔ)于存儲(chǔ)單元,或者,從存儲(chǔ)單元中獲取向量運(yùn)算指令的運(yùn)算結(jié)果。

優(yōu)選地,所述向量運(yùn)算指令包括操作碼和操作域;

所述操作碼用于指示執(zhí)行何種超越函數(shù);

所述操作域包括立即數(shù)和/或寄存器號(hào),指示向量運(yùn)算相關(guān)的標(biāo)量數(shù)據(jù),其中寄存器號(hào)用于指向所述寄存器單元地址。

根據(jù)本發(fā)明第二方面,提供了一種向量超越函數(shù)運(yùn)算裝置,包括:

取指模塊,用于從指令序列中取出下一條要執(zhí)行的向量運(yùn)算指令,并將該向量運(yùn)算指令傳給譯碼模塊;

譯碼模塊,用于對(duì)該向量運(yùn)算指令進(jìn)行譯碼,并將譯碼后的向量運(yùn)算指令傳送給指令隊(duì)列模塊;

指令隊(duì)列模塊,用于暫存譯碼后的向量運(yùn)算指令,并從向量運(yùn)算指令或標(biāo)量寄存器獲得向量指令運(yùn)算相關(guān)的標(biāo)量數(shù)據(jù);獲得所述標(biāo)量數(shù)據(jù)后,將所述向量運(yùn)算指令送至依賴關(guān)系處理單元;

標(biāo)量寄存器堆,包括多個(gè)標(biāo)量寄存器,用于存儲(chǔ)向量運(yùn)算指令相關(guān)的標(biāo)量數(shù)據(jù);

依賴關(guān)系處理單元,用于判斷所述向量運(yùn)算指令與之前未執(zhí)行完的運(yùn)算指令之間是否存在依賴關(guān)系;如果存在依賴關(guān)系,則將所述向量運(yùn)算指令送至存儲(chǔ)隊(duì)列模塊,如果不存在依賴關(guān)系,則將所述向量運(yùn)算指令送至超越函數(shù)計(jì)算單元;

存儲(chǔ)隊(duì)列模塊,用于存儲(chǔ)與之前運(yùn)算指令存在依賴關(guān)系的向量運(yùn)算指令,并且在所述依賴關(guān)系解除后,將所述向量運(yùn)算指令送至超越函數(shù)計(jì)算單元;

超越函數(shù)計(jì)算單元,用于根據(jù)接收到向量運(yùn)算指令對(duì)輸入向量數(shù)據(jù)進(jìn)行超越函數(shù)計(jì)算;

高速暫存存儲(chǔ)器,用于存儲(chǔ)輸入向量數(shù)據(jù)和輸出向量數(shù)據(jù);

輸入輸出存取模塊,用于直接訪問(wèn)所述高速暫存存儲(chǔ)器,負(fù)責(zé)從所述高速暫存存儲(chǔ)器中讀取輸入向量數(shù)據(jù)和寫(xiě)入輸出向量數(shù)據(jù)。

優(yōu)選地,所述超越函數(shù)計(jì)算單元包括:

預(yù)處理模塊,用于對(duì)輸入向量數(shù)據(jù)進(jìn)行預(yù)處理,將所述輸入向量數(shù)據(jù)轉(zhuǎn)換至cordic能夠處理的范圍之內(nèi);

迭代計(jì)算模塊,用于對(duì)預(yù)處理后的輸入向量數(shù)據(jù)進(jìn)行cordic計(jì)算,得到超越函數(shù)運(yùn)算結(jié)果;

后處理模塊,用于對(duì)所述運(yùn)算結(jié)果進(jìn)行后處理,得到輸出向量數(shù)據(jù)。

優(yōu)選地,所述超越函數(shù)計(jì)算單元由硬件實(shí)現(xiàn)。

根據(jù)本發(fā)明一方面,提供了一種向量超越函數(shù)運(yùn)算方法,該方法包括:

取值模塊從指令序列中取出下一條要執(zhí)行的向量運(yùn)算指令,并將該向量運(yùn)算指令傳給譯碼模塊;

譯碼模塊對(duì)該向量運(yùn)算指令進(jìn)行譯碼,并將譯碼后的向量運(yùn)算指令傳送給指令隊(duì)列模塊;

指令隊(duì)列模塊暫存譯碼后的向量運(yùn)算指令,并從向量運(yùn)算指令或標(biāo)量寄存器獲得向量指令運(yùn)算相關(guān)的標(biāo)量數(shù)據(jù);獲得所述標(biāo)量數(shù)據(jù)后,將所述向量運(yùn)算指令送至依賴關(guān)系處理單元;

依賴關(guān)系處理單元判斷所述向量運(yùn)算指令與之前未執(zhí)行完的運(yùn)算指令之間是否存在依賴關(guān)系;如果存在依賴關(guān)系,則將所述向量運(yùn)算指令送至存儲(chǔ)隊(duì)列模塊,如果不存在依賴關(guān)系,則將所述向量運(yùn)算指令送至超越函數(shù)計(jì)算單元;

存儲(chǔ)隊(duì)列模塊存儲(chǔ)與之前運(yùn)算指令存在依賴關(guān)系的向量運(yùn)算指令,并且在所述依賴關(guān)系解除后,將所述向量運(yùn)算指令送至超越函數(shù)計(jì)算單元;

超越函數(shù)計(jì)算單元根據(jù)接收到向量運(yùn)算指令,通過(guò)輸入輸出存取模塊從高速暫存存儲(chǔ)器取出輸入向量數(shù)據(jù),然后對(duì)輸入向量數(shù)據(jù)進(jìn)行超越函數(shù)運(yùn)算,并通過(guò)輸入輸出存取模塊將運(yùn)算結(jié)果寫(xiě)入高速暫存存儲(chǔ)器。

優(yōu)選地,所述超越函數(shù)計(jì)算單元對(duì)輸入向量數(shù)據(jù)進(jìn)行預(yù)處理,將所述輸入向量數(shù)據(jù)轉(zhuǎn)換至cordic能夠處理的范圍之內(nèi);之后對(duì)預(yù)處理后的輸入向量數(shù)據(jù)進(jìn)行cordic計(jì)算,得到超越函數(shù)運(yùn)算結(jié)果;最后對(duì)所述運(yùn)算結(jié)果進(jìn)行后處理,得到輸出向量數(shù)據(jù)。

本發(fā)明提供的向量超越函數(shù)運(yùn)算裝置,能夠硬件實(shí)現(xiàn)超越函數(shù)運(yùn)算指令的精簡(jiǎn)指令運(yùn)算,其可通過(guò)一條指令實(shí)現(xiàn)一完整的向量超越函數(shù)運(yùn)算。本發(fā)明通過(guò)將參與計(jì)算的向量數(shù)據(jù)暫存在高速暫存存儲(chǔ)器上(scratchpadmemory),使得向量運(yùn)算過(guò)程中可以更加靈活有效地支持不同寬度的數(shù)據(jù),同時(shí)超越函數(shù)運(yùn)算單元通過(guò)硬件實(shí)現(xiàn),能夠更加高效地實(shí)現(xiàn)各種超越函數(shù)運(yùn)算,提升包含大量超越函數(shù)計(jì)算任務(wù)的算法執(zhí)行性能。

本發(fā)明可以應(yīng)用于以下場(chǎng)景中(包括但不限于):數(shù)據(jù)處理、機(jī)器人、電腦、打印機(jī)、掃描儀、電話、平板電腦、智能終端、手機(jī)、行車記錄儀、導(dǎo)航儀、傳感器、攝像頭、云端服務(wù)器、相機(jī)、攝像機(jī)、投影儀、手表、耳機(jī)、移動(dòng)存儲(chǔ)、可穿戴設(shè)備等各類電子產(chǎn)品;飛機(jī)、輪船、車輛等各類交通工具;電視、空調(diào)、微波爐、冰箱、電飯煲、加濕器、洗衣機(jī)、電燈、燃?xì)庠?、油煙機(jī)等各類家用電器;以及包括核磁共振儀、b超、心電圖儀等各類醫(yī)療設(shè)備。

附圖說(shuō)明

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

圖2是本發(fā)明提供的向量運(yùn)算指令集的格式示意圖。

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

圖4是本發(fā)明實(shí)施例提供的裝置執(zhí)行超越函數(shù)運(yùn)算的流程圖。

具體實(shí)施方式

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

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

圖1是本發(fā)明提供的向量超越函數(shù)計(jì)算裝置的結(jié)構(gòu)示意圖,如圖1所示,所述裝置包括:

存儲(chǔ)單元,用于存儲(chǔ)向量數(shù)據(jù),在一種實(shí)施方式中,該存儲(chǔ)單元可以是高速暫存存儲(chǔ)器(scratchpadmemory),能夠支持不同大小的向量數(shù)據(jù);本發(fā)明將必要的計(jì)算數(shù)據(jù)暫存在高速暫存存儲(chǔ)器上,使得本裝置在進(jìn)行超越函數(shù)運(yùn)算的過(guò)程中可以更加靈活有效地支持不同寬度的數(shù)據(jù)。高速暫存存儲(chǔ)器可以通過(guò)各種不同存儲(chǔ)器件如sram、dram、edram、憶阻器、3d-dram和非易失存儲(chǔ)等實(shí)現(xiàn)。

寄存器單元,用于存儲(chǔ)向量運(yùn)算指令相關(guān)的標(biāo)量數(shù)據(jù),包括輸入向量數(shù)據(jù)的起始地址以及長(zhǎng)度,輸出向量數(shù)據(jù)的存儲(chǔ)地址,也可用于存儲(chǔ)其他運(yùn)算過(guò)程中用到的標(biāo)量數(shù)據(jù),其中,輸入向量數(shù)據(jù)的起始地址和輸出向量數(shù)據(jù)的存儲(chǔ)地址為所述存儲(chǔ)單元中存儲(chǔ)的地址;

控制單元,對(duì)向量運(yùn)算指令進(jìn)行譯碼,并控制向量運(yùn)算指令的運(yùn)算過(guò)程;在一種實(shí)施方式中,控制單元讀取準(zhǔn)備好的向量運(yùn)算指令,對(duì)其進(jìn)行譯碼生成控制信號(hào),發(fā)送給裝置中的其他單元,其他單元根據(jù)得到的控制信號(hào)執(zhí)行相應(yīng)的操作。

超越函數(shù)計(jì)算單元,該單元根據(jù)控制單元的控制實(shí)現(xiàn)對(duì)指定向量數(shù)據(jù)的指定超越函數(shù)計(jì)算。該單元是向量運(yùn)算單元,同時(shí)對(duì)所有輸入的向量數(shù)據(jù)進(jìn)行相同的運(yùn)算,即對(duì)向量中的每一個(gè)元素執(zhí)行相同的超越函數(shù)運(yùn)算。需要注意的是,本單元是定制的超越函數(shù)計(jì)算單元,采用不同于傳統(tǒng)泰勒展開(kāi)的方法來(lái)實(shí)現(xiàn)超越函數(shù)計(jì)算。定制的超越函數(shù)計(jì)算單元的硬件電路使用坐標(biāo)旋轉(zhuǎn)數(shù)字計(jì)算(coordinaterotationdigitalcomputer,cordic)算法,該硬件電路對(duì)輸入的向量數(shù)據(jù)進(jìn)行預(yù)處理,將其轉(zhuǎn)換至cordic算法能夠處理的范圍之內(nèi),并對(duì)cordic算法的計(jì)算結(jié)果進(jìn)行后處理,如輸出結(jié)果的符號(hào)變換及相應(yīng)四則運(yùn)算等。本發(fā)明中將超越函數(shù)計(jì)算單元的預(yù)處理和后處理全部硬件化,因此提供了一個(gè)更加完備的硬件運(yùn)算模塊,進(jìn)一步提高了整個(gè)運(yùn)算過(guò)程的速度。

超越函數(shù)計(jì)算單元需要進(jìn)行三個(gè)階段的運(yùn)算,包括預(yù)處理、cordic計(jì)算和后處理。首先是預(yù)處理模塊,cordic方法雖然可以很高效地計(jì)算各種超越函數(shù)值,但都僅適用于有限的輸入范圍,因此,本發(fā)明中通過(guò)硬件電路將將輸入數(shù)據(jù)轉(zhuǎn)換至cordic可以處理的范圍內(nèi),之后cordic計(jì)算電路對(duì)預(yù)處理后的數(shù)據(jù)進(jìn)行計(jì)算相應(yīng)計(jì)算,計(jì)算結(jié)構(gòu)輸出至后處理電路進(jìn)行處理后輸出。

在一實(shí)施例中,超越函數(shù)計(jì)算單元包括預(yù)處理模塊、迭代計(jì)算模塊和后處理模塊,預(yù)處理模塊將輸入的向量數(shù)據(jù)轉(zhuǎn)化至合理的可計(jì)算域范圍內(nèi),迭代計(jì)算模塊利用cordic算法計(jì)算轉(zhuǎn)化后數(shù)據(jù)的超越函數(shù)值,后處理模塊將得到的超越函數(shù)值進(jìn)行后處理,其中預(yù)處理模塊、迭代計(jì)算模塊和后處理模塊都采用硬件實(shí)現(xiàn)。

在一實(shí)施例中,所述超越函數(shù)計(jì)算單元通過(guò)以下硬件電路實(shí)現(xiàn)(包括但不限于):fpga、cgra、專用集成電路asic、模擬電路和憶阻器等。

根據(jù)本發(fā)明的一種實(shí)施方式,所述向量超越函數(shù)計(jì)算裝置還包括:指令緩存單元,用于存儲(chǔ)待執(zhí)行的矩陣運(yùn)算指令。指令在執(zhí)行過(guò)程中,同時(shí)也被緩存在指令緩存單元中,當(dāng)一條指令執(zhí)行完之后,該指令將被提交。

根據(jù)本發(fā)明的一種實(shí)施方式,所述向量超越函數(shù)計(jì)算裝置的控制單元還包括:指令隊(duì)列模塊,用于對(duì)譯碼后的矩陣運(yùn)算指令進(jìn)行順序存儲(chǔ),并在獲得矩陣運(yùn)算指令所需的標(biāo)量數(shù)據(jù)后,將其送至依賴關(guān)系處理模塊。

根據(jù)本發(fā)明的一種實(shí)施方式,所述向量超越函數(shù)計(jì)算裝置的控制單元還包括:依賴關(guān)系處理單元,用于在超越函數(shù)計(jì)算單元獲取指令前,判斷該運(yùn)算指令與之前未執(zhí)行完的運(yùn)算指令是否存在依賴關(guān)系,即是否訪問(wèn)相同的矩陣存儲(chǔ)地址,若是,將該矩陣運(yùn)算指令存儲(chǔ)在存儲(chǔ)隊(duì)列模塊中,待前一矩陣運(yùn)算指令執(zhí)行完畢后,將存儲(chǔ)隊(duì)列模塊中的該矩陣運(yùn)算指令提供給所述超越函數(shù)計(jì)算單元;否則,直接將該矩陣運(yùn)算指令提供給所述超越函數(shù)計(jì)算單元。具體地,矩陣運(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í)施方式,所述向量超越函數(shù)計(jì)算裝置的控制單元還包括:存儲(chǔ)隊(duì)列模塊,該模塊包括一個(gè)有序隊(duì)列,與之前指令在數(shù)據(jù)上有依賴關(guān)系的指令被存儲(chǔ)在該有序隊(duì)列內(nèi)直至依賴關(guān)系被消除,在依賴關(guān)系消除后,其將運(yùn)算指令提供給超越函數(shù)計(jì)算單元。

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

根據(jù)本發(fā)明的一種實(shí)施方式,本發(fā)明的指令設(shè)計(jì)采用精簡(jiǎn)化的方式,一條指令可以完成一次完整的向量超越函數(shù)計(jì)算。

在本發(fā)明執(zhí)行向量超越函數(shù)運(yùn)算的過(guò)程中,所述向量超越函數(shù)計(jì)算裝置取出指令進(jìn)行譯碼,然后送至指令隊(duì)列存儲(chǔ),根據(jù)譯碼結(jié)果,獲取指令中的各個(gè)參數(shù),這些參數(shù)可以是直接寫(xiě)在指令的操作域中,也可以是根據(jù)指令操作域中的寄存器號(hào)從指定的寄存器中讀取。這種使用寄存器存儲(chǔ)參 數(shù)的好處是無(wú)需改變指令本身,只要用指令改變寄存器中的值,就可以實(shí)現(xiàn)大部分的循環(huán),因此大大節(jié)省了在解決某些實(shí)際問(wèn)題時(shí)所需要的指令條數(shù)。在獲取了全部操作數(shù)之后,依賴關(guān)系處理單元會(huì)判斷指令實(shí)際需要使用的數(shù)據(jù)與之前運(yùn)算指令中的數(shù)據(jù)是否存在依賴關(guān)系,這決定了這條指令是否可以被立即發(fā)送至超越函數(shù)計(jì)算單元中執(zhí)行。一旦發(fā)現(xiàn)與之前運(yùn)算指令中的數(shù)據(jù)之間存在依賴關(guān)系,則該條指令必須等到它依賴的指令執(zhí)行完畢之后才可以送至運(yùn)算單元執(zhí)行。在定制的超越函數(shù)計(jì)算單元中,該條指令將快速執(zhí)行完畢,并將結(jié)果,即生成的隨機(jī)向量寫(xiě)回至指令提供的地址,該條指令執(zhí)行完畢。

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

有下列幾種向量超越函數(shù)運(yùn)算指令:

指數(shù)運(yùn)算指令(exp),根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在超越函數(shù)計(jì)算單元中對(duì)向量進(jìn)行指數(shù)計(jì)算,即y=exp(x)并將計(jì)算結(jié)果寫(xiě)回至指令中指定的高速暫存存儲(chǔ)器的地址。

對(duì)數(shù)運(yùn)算指令(log),根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在超越函數(shù)計(jì)算單元中對(duì)向量進(jìn)行對(duì)數(shù)計(jì)算,即y=log(x)并將計(jì)算結(jié)果寫(xiě)回至指令中指定的高速暫存存儲(chǔ)器的地址。

正弦運(yùn)算指令(sin),根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在超越函數(shù)計(jì)算單元中對(duì)向量進(jìn)行正弦計(jì)算,即y=sin(x)并將計(jì)算結(jié)果寫(xiě)回至指令中指定的高速暫存存儲(chǔ)器的地址。

余弦運(yùn)算指令(cos),根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在超越函數(shù)計(jì)算單元中對(duì)向量進(jìn)行余弦計(jì)算,即y=cos(x)并將計(jì)算結(jié)果寫(xiě)回至指定的高速暫存存儲(chǔ)器的地址。

正切運(yùn)算指令(tan),根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在超越函數(shù)計(jì)算單元中對(duì)向量進(jìn)行正切計(jì)算,即y=tan(x)并將計(jì)算結(jié)果寫(xiě)回至指定的高速暫存存儲(chǔ)器的地址。

余切運(yùn)算指令(cot),根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在超越函數(shù)計(jì)算單元中對(duì)向量進(jìn)行余切計(jì)算,即y=cot(x)并將計(jì)算結(jié)果寫(xiě)回至指定的高速暫存存儲(chǔ)器的地址。

反正弦運(yùn)算指令(arcsin),根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在超越函數(shù)計(jì)算單元中對(duì)向量進(jìn)行反正弦計(jì)算,即y=arcsin(x)并將計(jì)算結(jié)果寫(xiě)回至指定的高速暫存存儲(chǔ)器的地址。

反余弦運(yùn)算指令(arccos),根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在超越函數(shù)計(jì)算單元中對(duì)向量進(jìn)行反余弦計(jì)算,即y=arccos(x)并將計(jì)算結(jié)果寫(xiě)回至指定的高速暫存存儲(chǔ)器的地址。

反正切運(yùn)算指令(arctan),根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在超越函數(shù)計(jì)算單元中對(duì)向量進(jìn)行反正切計(jì)算,即y=arctan(x)并將計(jì)算結(jié)果寫(xiě)回至指定的高速暫存存儲(chǔ)器的地址。

反余切運(yùn)算指令(arccot),根據(jù)該指令,裝置從高速暫存存儲(chǔ)器的指定地址取出指定大小的向量數(shù)據(jù),在超越函數(shù)計(jì)算單元中對(duì)向量進(jìn)行反余切計(jì)算,即y=arccot(x)并將計(jì)算結(jié)果寫(xiě)回至指令中指定的高速暫存存儲(chǔ)器的地址。

通用cpu不提供這種類型的機(jī)器指令,它們通常是由高層的庫(kù)函數(shù)來(lái)實(shí)現(xiàn)的,每個(gè)庫(kù)函數(shù)都包含了多條機(jī)器指令,本發(fā)明通過(guò)硬件結(jié)構(gòu)實(shí)現(xiàn)了上述向量超越函數(shù)指令。

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

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

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

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

指令隊(duì)列模塊,該模塊用于暫存從譯碼模塊獲得的指令,并從指令或標(biāo)量寄存器獲得指令運(yùn)算相應(yīng)的數(shù)據(jù),包括向量數(shù)據(jù)的起始地址和大小以及一些標(biāo)量常數(shù)。獲得數(shù)據(jù)后,指令被送至依賴關(guān)系處理單元;

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

依賴關(guān)系處理單元,該單元用于處理指令與前一條指令可能存在的存儲(chǔ)依賴關(guān)系。矩陣運(yùn)算指令會(huì)訪問(wèn)高速暫存存儲(chǔ)器以獲取運(yùn)算向量,前后指令可能會(huì)訪問(wèn)同一塊存儲(chǔ)空間。為了保證指令執(zhí)行結(jié)果的正確性,當(dāng)前指令如果被檢測(cè)到與之前的指令的數(shù)據(jù)存在依賴關(guān)系,該指令被送至存儲(chǔ)隊(duì)列模塊內(nèi)等待至依賴關(guān)系被消除。即檢測(cè)本條指令的輸入數(shù)據(jù)的存儲(chǔ)區(qū)間與之前沒(méi)有執(zhí)行完畢的指令的輸出數(shù)據(jù)的存儲(chǔ)區(qū)間是否有重疊,存儲(chǔ)區(qū)間是由起始地址和數(shù)據(jù)長(zhǎng)度決定的。如果有重疊,則說(shuō)明本條指令實(shí)際上是需要之前指令的執(zhí)行結(jié)果作為輸入的,因此必須等到那條指令執(zhí)行完畢后,這條指令才能開(kāi)始執(zhí)行。在這個(gè)過(guò)程中,指令實(shí)際被暫存在存儲(chǔ)隊(duì)列模塊中。

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

超越函數(shù)計(jì)算單元,該單元負(fù)責(zé)超越函數(shù)計(jì)算操作,包括但不限于指數(shù)運(yùn)算、對(duì)數(shù)運(yùn)算、三角函數(shù)運(yùn)算和反三角函數(shù)。實(shí)際上,所有常見(jiàn)的超越函數(shù)基本包含在指數(shù)、對(duì)數(shù)、三角、反三角運(yùn)算以及他們的四則組合中。超越函數(shù)的計(jì)算通過(guò)cordic方法實(shí)現(xiàn),該方法是一種迭代計(jì)算的方法,對(duì)于某超越函數(shù)f(x),一次迭代可以算出結(jié)果中的一位精度,所以對(duì)于16位精度的結(jié)果要求,則最多只需要迭代16次,即可算出該結(jié)果。同時(shí)超越函數(shù)計(jì)算模塊同時(shí)還包括預(yù)處理和后處理的部分,預(yù)處理是將輸入數(shù) 據(jù)轉(zhuǎn)換至合理的計(jì)算區(qū)間內(nèi),即將輸入數(shù)據(jù)轉(zhuǎn)換至cordic算法能夠處理的計(jì)算范圍內(nèi),后處理則根據(jù)超越函數(shù)本身的不同對(duì)cordic的計(jì)算結(jié)果進(jìn)行后處理,如對(duì)輸出數(shù)據(jù)的符號(hào)的變換以及一些四則運(yùn)算。現(xiàn)有技術(shù)中預(yù)處理和后處理通常由軟件完成,在本裝置中全部由硬件電路實(shí)現(xiàn);

高速暫存存儲(chǔ)器,該存儲(chǔ)器是矩陣數(shù)據(jù)專用的暫存存儲(chǔ)裝置,能夠支持不同大小的矩陣數(shù)據(jù);其用于存儲(chǔ)待運(yùn)算的向量數(shù)據(jù)和運(yùn)算結(jié)果;

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

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

s1,取指模塊取出該條向量超越函數(shù)運(yùn)算指令,并將該指令送往譯碼模塊。

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

s3,在指令隊(duì)列模塊中,從指令立即數(shù)或寄存器中獲取所需的標(biāo)量數(shù)據(jù),即指令操作域?qū)?yīng)的數(shù)據(jù),包括輸入向量地址、輸入向量長(zhǎng)度、輸出向量地址以及超越函數(shù)運(yùn)算所需的常數(shù)。

s4,在取得需要的標(biāo)量數(shù)據(jù)后,指令隊(duì)列模塊將該指令送往依賴關(guān)系處理單元。

s5,依賴關(guān)系處理單元分析該指令與前面尚未執(zhí)行結(jié)束的指令在數(shù)據(jù)上是否存在依賴關(guān)系。如果存在依賴關(guān)系,則將該條指令送入存儲(chǔ)隊(duì)列模塊中等待至其與前面的未執(zhí)行結(jié)束的指令在數(shù)據(jù)上不再存在依賴關(guān)系為止,并由存儲(chǔ)隊(duì)列模塊將其送往超越函數(shù)計(jì)算單元。如果不存在依賴關(guān)系,則直接將該條指令送往超越函數(shù)計(jì)算單元;

s6,超越函數(shù)計(jì)算單元根據(jù)向量存儲(chǔ)地址和長(zhǎng)度通過(guò)輸入輸出單元從高速暫存器中取出運(yùn)算數(shù)據(jù)中所需要的一部分向量數(shù)據(jù)。

s7,超越函數(shù)計(jì)算單元中的預(yù)處理模塊將輸入數(shù)據(jù)變換至坐標(biāo)旋轉(zhuǎn)數(shù)字計(jì)算算法cordic能夠計(jì)算的收斂域內(nèi)。

s8,超越函數(shù)計(jì)算單元中的迭代計(jì)算模塊并行地計(jì)算出所取出的一部分向量數(shù)據(jù)的超越函數(shù)值。

s9,轉(zhuǎn)步驟s6,超越函數(shù)計(jì)算單元繼續(xù)取出向量數(shù)據(jù)的下一部分進(jìn)行計(jì)算,直至完成全部輸入向量數(shù)據(jù)的超越函數(shù)計(jì)算。

s10,運(yùn)算完成后,將運(yùn)算結(jié)果向量通過(guò)輸入輸出單元寫(xiě)回至高速暫存存儲(chǔ)器的向量輸出地址中。

綜上所述,本發(fā)明提供向量超越函數(shù)計(jì)算裝置,并配合相應(yīng)的指令,能夠很好地解決當(dāng)前計(jì)算機(jī)領(lǐng)域越來(lái)越多的針對(duì)向量的超越函數(shù)的計(jì)算任務(wù),包括目前表現(xiàn)十分出色的人工神經(jīng)網(wǎng)絡(luò)算法。相比于已有的傳統(tǒng)解決方案,本發(fā)明可以具有指令精簡(jiǎn)、使用方便、支持的向量長(zhǎng)度靈活、片上緩存充足等優(yōu)點(diǎ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