The present invention provides a platform for MIPS data access method and device, wherein, the MIPS platform data access method comprises the following steps: acquiring visit input parameters in the compiler save macros; according to the input parameters to obtain the attribute to store access data set; among them, the memory is set includes: data type and number of bytes if the data to be accessed; not aligned according to the stored attribute set selection and the stored attribute set corresponding to the MIPS instruction, the access data from memory to be loaded into the registers or the access to data from the register to memory storage. The data access method of MIPS platform provided by the invention, when the data is not homogeneous, by storing attribute data set to access the data to select the corresponding MIPS command, to avoid the waste of memory system, improve the compiler and runtime efficiency.
【技術(shù)實現(xiàn)步驟摘要】
MIPS平臺數(shù)據(jù)訪問方法和裝置
本專利技術(shù)涉及計算機數(shù)據(jù)訪問領(lǐng)域,尤其涉及一種無互鎖流水線級的微處理器(MillionInstructionsPerSecond,簡稱MIPS)平臺數(shù)據(jù)訪問方法和裝置。
技術(shù)介紹
在MIPS平臺下,對不同數(shù)據(jù)類型的數(shù)據(jù)進行訪問都有其相應(yīng)的訪問指令,例如:lh指令表示從內(nèi)存中加載一個雙字節(jié)整型對齊數(shù)據(jù)并符號擴展到整個寄存器中,lw指令表示從內(nèi)存中加載一個四字節(jié)整型對齊數(shù)據(jù)并符號擴展到整個寄存器中。其中,對齊數(shù)據(jù)是指數(shù)據(jù)在內(nèi)存中的起始地址能夠被數(shù)據(jù)的數(shù)據(jù)類型對應(yīng)的字節(jié)數(shù)整除,反之,不對齊數(shù)據(jù)是指數(shù)據(jù)在內(nèi)存中的起始地址不能夠被數(shù)據(jù)的數(shù)據(jù)類型對應(yīng)的字節(jié)數(shù)整除。通常情況下,數(shù)據(jù)在內(nèi)存中都是對齊的,但是,當(dāng)數(shù)據(jù)不對齊時,就可能出現(xiàn)使用錯誤的指令對不對齊數(shù)據(jù)進行訪問的情況,例如:錯誤的使用lw指令來加載雙字節(jié)對齊的整型數(shù)據(jù)。一旦使用了錯誤指令訪問了不對齊數(shù)據(jù),則,或者硬件拋出異常導(dǎo)致程序中斷執(zhí)行,或者交給操作系統(tǒng)處理,而操作系統(tǒng)在處理過程中由于涉及上下文切換必然大幅影響程序的執(zhí)行效率。在現(xiàn)有技術(shù)中,為了防止使用錯誤指令訪問不對齊數(shù)據(jù),常用的方法是:在編譯器中為數(shù)據(jù)增加編譯器屬性,編譯器根據(jù)編譯器屬性通過填充內(nèi)存等方式強制讓數(shù)據(jù)進行對齊,然后,使用與對齊數(shù)據(jù)相對應(yīng)的指令訪問已對齊的數(shù)據(jù)。具體實現(xiàn)方式如下,定義結(jié)構(gòu)體:#pragmapack(2)structtest_t{inta;charb;shortc;chard;}其中,a為四字節(jié)整型數(shù)據(jù),b、d為單字節(jié)字符型數(shù)據(jù),c為雙字節(jié)整型數(shù)據(jù)。由于結(jié)構(gòu)體聲明前增加了#pragmapack(2), ...
【技術(shù)保護點】
一種MIPS平臺數(shù)據(jù)訪問方法,其特征在于,包括:獲取編譯器中訪存宏指令的輸入?yún)?shù),所述訪存宏指令指示將待訪問數(shù)據(jù)從內(nèi)存中加載到寄存器中,或者將所述待訪問數(shù)據(jù)從寄存器中存儲至內(nèi)存中;根據(jù)所述輸入?yún)?shù)獲取所述待訪問數(shù)據(jù)的存儲屬性集;其中,所述存儲屬性集包括:數(shù)據(jù)類型和字節(jié)數(shù);若所述待訪問數(shù)據(jù)不對齊,則根據(jù)所述存儲屬性集選擇與所述存儲屬性集相對應(yīng)的MIPS指令,將所述待訪問數(shù)據(jù)從內(nèi)存中加載到寄存器中或者將所述待訪問數(shù)據(jù)從寄存器中存儲至內(nèi)存中。
【技術(shù)特征摘要】
1.一種MIPS平臺數(shù)據(jù)訪問方法,其特征在于,包括:獲取編譯器中訪存宏指令的輸入?yún)?shù),所述訪存宏指令指示將待訪問數(shù)據(jù)從內(nèi)存中加載到寄存器中,或者將所述待訪問數(shù)據(jù)從寄存器中存儲至內(nèi)存中;根據(jù)所述輸入?yún)?shù)獲取所述待訪問數(shù)據(jù)的存儲屬性集;其中,所述存儲屬性集包括:數(shù)據(jù)類型和字節(jié)數(shù);若所述待訪問數(shù)據(jù)不對齊,則根據(jù)所述存儲屬性集選擇與所述存儲屬性集相對應(yīng)的MIPS指令,將所述待訪問數(shù)據(jù)從內(nèi)存中加載到寄存器中或者將所述待訪問數(shù)據(jù)從寄存器中存儲至內(nèi)存中。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述輸入?yún)?shù)包括:第一寄存器和第一整數(shù)常量,所述第一寄存器存儲待訪問數(shù)據(jù),所述第一整數(shù)常量指示待訪問數(shù)據(jù)的字節(jié)數(shù);所述根據(jù)所述輸入?yún)?shù)獲取所述待訪問數(shù)據(jù)的存儲屬性集,包括:根據(jù)所述第一寄存器的名稱獲得所述待訪問數(shù)據(jù)的數(shù)據(jù)類型;根據(jù)所述第一整數(shù)常量的取值獲得所述待訪問數(shù)據(jù)的字節(jié)數(shù)。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述輸入?yún)?shù)包括:第一寄存器、第二寄存器、第一整數(shù)常量和第二整數(shù)常量;其中,所述第一寄存器存儲待訪問數(shù)據(jù),所述第二寄存器存儲待訪問數(shù)據(jù)在內(nèi)存中的起始地址,所述第一整數(shù)常量指示待訪問數(shù)據(jù)的字節(jié)數(shù),所述第二整數(shù)常量指示待訪問數(shù)據(jù)在內(nèi)存中的偏移地址;所述訪存宏指令指示將待訪問數(shù)據(jù)從內(nèi)存中加載到寄存器中,或者將所述待訪問數(shù)據(jù)從寄存器中存儲至內(nèi)存中,包括:所述訪存宏指令指示將所述待訪問數(shù)據(jù)從所述第二寄存器和所述第二整數(shù)常量指示的內(nèi)存地址中加載到所述第一寄存器中,或者將所述待訪問數(shù)據(jù)從所述第一寄存器中存儲至所述第二寄存器和所述第二整數(shù)常量指示的內(nèi)存地址中。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述存儲屬性集選擇與所述存儲屬性集相對應(yīng)的MIPS指令,將所述待訪問數(shù)據(jù)從內(nèi)存中加載到寄存器中,包括:若所述存儲屬性集為整型和八字節(jié),則選擇uld指令將所述待訪問數(shù)據(jù)從內(nèi)存中加載到寄存器中;或者,若所述存儲屬性集為浮點型和八字節(jié),則根據(jù)預(yù)先獲取到的浮點寄存器運行模式將所述待訪問數(shù)據(jù)從內(nèi)存中加載到寄存器中。5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述存儲屬性集還包括擴展方式;所述根據(jù)所述存儲屬性集選擇與所述存儲屬性集相對應(yīng)的MIPS指令,將所述待訪問數(shù)據(jù)從內(nèi)存中加載到寄存器中,包括:若所述存儲屬性集為整型、雙字節(jié)和零擴展,則選擇ulhu指令將所述待訪問數(shù)據(jù)從內(nèi)存中加載到寄存器中;或者,若所述存儲屬性集為整型、雙字節(jié)和符號擴展,則選擇ulh指令將所述待訪問數(shù)據(jù)從內(nèi)存中加載到寄存器中;或者,若所述存儲屬性集為整型、四字節(jié)和零擴展,則選擇ulwu指令將所述待訪問數(shù)據(jù)從內(nèi)存中加載到寄存器中;或者,若所述存儲屬性集為整型、四字節(jié)和符號擴展,則選擇ulw指令將所述待訪問數(shù)據(jù)從內(nèi)存中加載到寄存器中。6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述存儲屬性集選擇與所述存儲屬性集相對應(yīng)的MIPS指令,將所述待訪問數(shù)據(jù)從寄存器中存儲至內(nèi)存中,包括:若所述存儲屬性集為整型和雙字節(jié),則選擇ush指令將所述待訪問數(shù)據(jù)從寄存器中存儲至內(nèi)存中;或者,若所述存儲屬性集為整型和四字節(jié),則選擇usw指令將所述待訪問數(shù)據(jù)從寄存器中存儲至內(nèi)存中;或者,若所述存儲屬性集為整型和八字節(jié),則選擇usd指令將所述待訪問數(shù)據(jù)從寄存器中存儲至內(nèi)存中;或者,若所述存儲屬性集為浮點型和八字節(jié),則根據(jù)預(yù)先獲取到的浮點寄存器運行模式將所述待訪問數(shù)據(jù)從寄存器中存儲至內(nèi)存中。7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:若所述待訪問數(shù)據(jù)對齊,則根據(jù)所述存儲屬性集選擇與所述存儲屬性集相對應(yīng)的MIPS指令,將所述待訪問數(shù)據(jù)從內(nèi)存中加載到寄存器中或者將所述待訪問數(shù)據(jù)從寄存器中存儲至內(nèi)存中。8.根據(jù)權(quán)利要求1至7任一所述的方法,其特征在于,編譯器中設(shè)置有訪存宏指令控制開關(guān);該方法還包括:設(shè)置所述...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:余銀,黃文軍,彭飛,
申請(專利權(quán))人:龍芯中科技術(shù)有限公司,
類型:發(fā)明
國別省市:北京,11
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。