国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

如何在32個(gè)處理器中編輯并且翻譯64固定的點(diǎn)進(jìn)位計(jì)算

發(fā)布時(shí)間:2010-11-17 12:41    發(fā)布者:designer
介紹嵌式32位CPU在編譯器中解決64位運(yùn)算的方法,并列舉一個(gè)加法運(yùn)算的例子,給出可供參考的指令模板。包括32位RISC體系嵌入式CPU層次結(jié)構(gòu)和編譯器后端結(jié)構(gòu)。

1 概述  

在信息化飛速發(fā)展的今天,計(jì)算機(jī)已成為人們學(xué)習(xí)和工作不可缺少的工具,我國業(yè)已取得了電腦生產(chǎn)大國的地位;但是,作為計(jì)算機(jī)的核心——CPU的設(shè)計(jì)與制造,卻成了幾代計(jì)算機(jī)工作者的未了習(xí)愿,也給國家的安全帶來了隱憂。順應(yīng)潮流,中芯微系統(tǒng)公司于2001年推出了國內(nèi)第一顆實(shí)用化的32位CPU(方舟一號(hào)),主頻達(dá)到166MHz。下一代方舟CPU將采用0.18μm工藝,超流水結(jié)構(gòu),主頻能達(dá)到600MHz以上,在嵌入式CPU領(lǐng)域走到國際前列。  

傳統(tǒng)的32位計(jì)算機(jī)處理64位運(yùn)算通常是設(shè)計(jì)具體的邏輯電路實(shí)現(xiàn)。隨著SoC(System on Chip)的出現(xiàn),芯片上集成各種功能部件越來越多,特別對(duì)于嵌入式系統(tǒng),片上能利用的空間就列加有限,這也要求將部分功能用軟件來實(shí)現(xiàn)。對(duì)于64位長字運(yùn)算軟件實(shí)現(xiàn)的方法通常有兩種:一是設(shè)計(jì)系統(tǒng)軟件供操作系統(tǒng)內(nèi)核調(diào)用;二是在相關(guān)的編譯器中設(shè)計(jì)指令模板來解決。前者執(zhí)行效率高,但每使用一次就要編譯一次;后者只需編譯一次,總的效率要高于前者。因此,實(shí)際采用在編譯器中設(shè)計(jì)指令模板予以解決。  

2 32位RISC體系嵌入式CPU層次結(jié)構(gòu)描述  

圖1是一個(gè)集成了DSP(數(shù)字信號(hào)處理器)嵌入式CPU的層次圖。



從圖1可看到,編譯器在整個(gè)CPU結(jié)構(gòu)中處于ASIC硬件電路之下和操作系統(tǒng)之上,擔(dān)負(fù)著將高級(jí)的、抽象的表達(dá)式轉(zhuǎn)化為相對(duì)低級(jí)的表達(dá)式,最終生成系統(tǒng)指令集。  

3 CPU編譯器后端結(jié)構(gòu)  

CPU編譯器分為前端和后端:前端主要完成詞法/語法分析并生成語法樹,這里不再論述;后端是編譯的主體部分,它將語法樹轉(zhuǎn)換成不間語言,在此不間語言基礎(chǔ)上進(jìn)行各種編譯優(yōu)化,最終生成匯編指令代碼。編譯后端在進(jìn)行優(yōu)化的過程中要跟具體的目標(biāo)機(jī)的機(jī)器描述文件多次匹配,生成RTL語言(Register Transfer Language)—GNU CC的中間語言。  

機(jī)器描述文件由各種與目標(biāo)機(jī)有關(guān)的指令模板、功能模板、C語言形式的預(yù)處理函數(shù)等構(gòu)成。本文涉及到的64位運(yùn)算就是由RTL和指令模板多次匹配后生成匯編指令來解決的,過程如圖2所示。  

限于篇幅,這里僅舉64位加法運(yùn)算的部分例子,其它運(yùn)算與此類似。  

4 64位加法運(yùn)算指令板  

① RTL識(shí)別指令模板,第一次匹配。  
(define_insn “adddi3”)  
[(set(match_operand:DI 0 "register_operand" "=r")  
(plus:DI (match_operand:DI 1“register_operand”“0”)  
(match_operand:DI 2 "register_operand"“r”)))  
(clobber(reg:SI 6))]//6號(hào)寄存器作進(jìn)位使用  
"")  

② 將64位加法分解成高32位和低32位運(yùn)算,第二次匹配。  
(define_split  
[(set(match_operand:DI 0 "register_operand"“=r”)  
(plus:DI (match_operand:DI 1“register_operand”“0”)  
(match_operand:DI 2 “register_operand”“r”)))  
(clobber(reg:SI 6))]  
"reload_complete"  
“{  
[(const_int 0)] //寄存器使用前清零  
rtx low,high; //rtx為一種處理表達(dá)式的數(shù)據(jù)類型  
low[0]=gen_lowpart(Simode,operands[0]);  
low=gen_lowpart(Simode,operands);  
low=gen_lowpart(Simode,operands);  
high[0]=gen_rtx(REG,Simode,REGNO(operands[0]-1);  
high=gen_rtx(REG,Simode,REGNO(operands-1);  
high=gen_rtx(REG,Simode,REGNO(operands-1);  
//由于方舟CPU地址存儲(chǔ)方式采用的是Big-Endian,即字節(jié)中的最高有效位具有最低序號(hào),所以高位硬寄存器號(hào)要減1。  
emit_insn(gen_addsi3_set_carry(low[0],low,low)) //低32位加并設(shè)置進(jìn)位  
emit_insn(gen_addsi3_use_carry(high[0],high,high)); //高32位加并處理進(jìn)位  
DONE;



  
}  

③ 處理低32位加。  
(define_insn "addsi_set_carry"  
[(set(match_operand:SI 0 (match_operand:SI1 "register_operand" "r")  
(match_operand:SI 2  
"register_operand"“r”))) (clobber(reg:SI6))] //以下判斷是否有進(jìn)位。有,則6號(hào)寄存器置1(set(reg:SI6)  
(itu:SI(plus:SI(match_dup 1)match_dup 2))(match_dup 1)))]  
""  
"add\t%0,%1,%2" //生成低32位匯編模板  
)  

④處理高32位加。  
(define_insn "addi3_use_carry"  
(define_insn "adddi3_use_carry"  
[(set(match_operand:SI 0 "register_operand"“=r”)  
(plus:SI(plus:SI(match_operand:SI 1 "register_operand" "r"))  
(reg:SI 6)))  
(clobber(reg:SI 6))]  
“”  
"add%0,%1,%2;add\t%0,%0,r6" //生成高32位帶進(jìn)位加匯編模板  
)  
在機(jī)器描述文件中,DI為64位機(jī)器方式,SI為32位方式。該文件由機(jī)器描述處理程序進(jìn)行格式轉(zhuǎn)換,它將調(diào)用編譯內(nèi)部一套專門的函數(shù)和數(shù)據(jù)結(jié)構(gòu)作為接口,生成gen_開頭的預(yù)處理函數(shù)對(duì)指令模板作進(jìn)一步的處理,再生成由insn_開頭的函數(shù)對(duì)模板作匹配后生成匯編代碼。  
結(jié)語  
在方舟二號(hào)CPU上測試的結(jié)果達(dá)到了64運(yùn)算的要求,相關(guān)的指令代碼如下:  
……  
132 r18,[r15,4]  
132 r19,[r15,8]  
add r16,r16,r18  
add r17,r17,r19  
add r17,r17,r6  
……  
用SPEC95進(jìn)行定點(diǎn)運(yùn)算測試,可達(dá)280MIPS以上,收到了較好的預(yù)期結(jié)果。
本文地址:http://m.qingdxww.cn/thread-40059-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • 深度體驗(yàn)Microchip自動(dòng)輔助駕駛應(yīng)用方案——2025巡展開啟報(bào)名!
  • 更佳設(shè)計(jì)的解決方案——Microchip模擬開發(fā)生態(tài)系統(tǒng)
  • 利用模擬開發(fā)工具生態(tài)系統(tǒng)進(jìn)行安全電路設(shè)計(jì)
  • 我們是Microchip
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)在線工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲一区二区精品视频 | 91视频观看免费 | 91在线操 | 免费国产一区二区三区 | 青青青国产在线观看免费网站 | 非洲黑人高清一级毛片 | 日韩永久在线观看免费视频 | 久久免费视频网站 | 亚洲精品成人久久久影院 | 成人a在线观看 | 成人精品亚洲 | 国产欧美一区二区三区视频 | 日本高清在线免费观看 | 天天爽夜夜春 | www.日本在线视频 | 精品国产一区二区三区久久久狼 | 亚洲欧洲精品成人久久曰影片 | 欧美一区二区三区影院 | 久久久久久免费播放一级毛片 | 欧美日韩一区二区三区麻豆 | 91精选视频| 四虎影视永久免费观看地址 | 红纸鹤免费高清在线观看 | h视频免费在线 | 亚洲一区在线视频观看 | 国产在线视频网 | 97免费在线观看 | 午夜向日葵在线视频观看下载 | 91亚洲精品在看在线观看高清 | 成品人app软件大全下载免费版 | 亚洲日本视频在线 | 另类视频在线 | 暴雨夜被公侵犯078在线观看 | 国产免费爽爽视频免费可以看 | 日韩一区二区三区四区区区 | 亚洲国产高清在线 | h视频网站在线观看 | 中国美女大战黑人国产 | h视频在线免费看 | 亚洲91在线视频 | 在线a人片免费观看不卡 |