日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

半導(dǎo)體裝置的操作方法和半導(dǎo)體系統(tǒng)與流程

文檔序號(hào):11063383閱讀:897來(lái)源:國(guó)知局
半導(dǎo)體裝置的操作方法和半導(dǎo)體系統(tǒng)與制造工藝

技術(shù)領(lǐng)域

本發(fā)明構(gòu)思涉及一種半導(dǎo)體裝置的操作方法和半導(dǎo)體系統(tǒng)。



背景技術(shù):

在計(jì)算機(jī)編程中,源代碼是包括用編程語(yǔ)言(源語(yǔ)言)編寫的指令的計(jì)算機(jī)程序或軟件的文本文件版本。編譯器是將源代碼變換為另一計(jì)算機(jī)語(yǔ)言(目標(biāo)語(yǔ)言)的目標(biāo)代碼的計(jì)算機(jī)程序。例如,目標(biāo)代碼典型地具有被稱為對(duì)象代碼的二進(jìn)制形式。在編譯器理論中,循環(huán)優(yōu)化是通過(guò)減少與循環(huán)有關(guān)的開(kāi)銷從而增加執(zhí)行速度的處理。因此,任何循環(huán)或迭代需要被優(yōu)化以減少通過(guò)編譯源代碼而生成的目標(biāo)代碼的執(zhí)行時(shí)間。例如,可將基于遞推鏈(CR)的循環(huán)簡(jiǎn)化技術(shù)應(yīng)用在目標(biāo)代碼內(nèi)以簡(jiǎn)化循環(huán),并可因此減少目標(biāo)代碼的執(zhí)行時(shí)間。然而,在特定環(huán)境下可能不能應(yīng)用這項(xiàng)技術(shù)。因此,需要不基于CR的優(yōu)化循環(huán)的技術(shù)。



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

發(fā)明構(gòu)思的示例性實(shí)施例提供一種半導(dǎo)體裝置的操作方法、計(jì)算機(jī)可讀記錄介質(zhì)和半導(dǎo)體系統(tǒng),即使當(dāng)循環(huán)的迭代次數(shù)被除在循環(huán)中的歸納變量之外的變量影響時(shí),其也能夠優(yōu)化循環(huán)。

根據(jù)本發(fā)明構(gòu)思的一個(gè)示例性實(shí)施例,提供一種半導(dǎo)體裝置的操作方法,包括:從由編譯器生成的原始中間表示(IR)搜索循環(huán)代碼;確定循環(huán)代碼是否滿足預(yù)定條件;當(dāng)確定循環(huán)代碼滿足所述預(yù)定條件時(shí),使用與編譯器分離的解釋器計(jì)算循環(huán)代碼;將計(jì)算循環(huán)代碼的結(jié)果存儲(chǔ)到解釋器的解釋器框架中;使用用于訪問(wèn)所述結(jié)果的訪問(wèn)代碼替代原始IR中的循環(huán)代碼以生成更新的IR。

根據(jù)本發(fā)明構(gòu)思的一個(gè)示例性實(shí)施例,提供一種半導(dǎo)體裝置的操作方法,包括:編譯器編譯源代碼以生成中間表示(IR);在原始IR中搜索循環(huán)代碼;生成擴(kuò)展IR(EIR)代碼,其中,EIR代碼與包括在循環(huán)代碼中的IR代碼對(duì)應(yīng)并且包括與IR代碼的算符對(duì)應(yīng)的擴(kuò)展算符,與編譯器分離的解釋器通過(guò)執(zhí)行擴(kuò)展算符來(lái)計(jì)算EIR代碼,使用用于訪問(wèn)計(jì)算EIR代碼的結(jié)果的訪問(wèn)代碼替代原始IR中的循環(huán)代碼,以生成更新的IR;編譯器編譯更新的IR。

根據(jù)本發(fā)明構(gòu)思的一個(gè)示例性實(shí)施例,提供一種半導(dǎo)體裝置的操作方法,包括:通過(guò)使用編譯器執(zhí)行第一編譯,生成包括關(guān)于虛擬寄存器的虛擬寄存器信息的原始中間表示(IR),在原始IR中搜索循環(huán)代碼,生成擴(kuò)展IR(EIR)代碼,其中,EIR代碼與包括在循環(huán)代碼中的IR代碼對(duì)應(yīng)且包括關(guān)于與虛擬寄存器獨(dú)立地被分配至存儲(chǔ)器的解釋器框架的解釋器框架信息;使用訪問(wèn)解釋器框架并且與編譯器分離地執(zhí)行的解釋器計(jì)算EIR代碼;將作為計(jì)算EIR代碼的結(jié)果的結(jié)果值存儲(chǔ)到解釋器框架中;使用用于訪問(wèn)所述結(jié)果值的訪問(wèn)代碼替代原始IR中的循環(huán)代碼,以生成更新的IR;使用編譯器對(duì)更新的IR執(zhí)行第二編譯。

根據(jù)本發(fā)明構(gòu)思的一個(gè)示例性實(shí)施例,提供一種包括指令的計(jì)算機(jī)可讀記錄介質(zhì),所述指令使處理器:從由編譯器生成的中間表示(IR)搜索循環(huán)代碼;確定循環(huán)代碼是否滿足預(yù)定的條件的集合,生成與編譯器分離地計(jì)算循環(huán)代碼的解釋器架構(gòu)和解釋器框架,其中,解釋器架構(gòu)包括計(jì)算循環(huán)代碼的解釋器,解釋器框架用于存儲(chǔ)從循環(huán)代碼的計(jì)算獲得的中間值;使用解釋器計(jì)算循環(huán)代碼,將作為計(jì)算循環(huán)代碼的結(jié)果的結(jié)果值存儲(chǔ)到解釋器框架中,并使用用于訪問(wèn)結(jié)果值的訪問(wèn)代碼替代IR中的循環(huán)代碼。

根據(jù)本發(fā)明構(gòu)思的一個(gè)示例性實(shí)施例,提供一種半導(dǎo)體系統(tǒng),包括:編譯器,用于從源代碼生成原始中間表示(IR);解釋器,用于接收擴(kuò)展IR(EIR)代碼,其中,EIR代碼與包括在原始IR中的循環(huán)代碼中的IR代碼對(duì)應(yīng),并且使用與IR代碼的算符對(duì)應(yīng)的擴(kuò)展算符,其中,解釋器通過(guò)執(zhí)行EIR代碼來(lái)計(jì)算循環(huán)代碼,并使用用于訪問(wèn)計(jì)算循環(huán)代碼的結(jié)果的訪問(wèn)代碼替代原始IR中的循環(huán)代碼。

根據(jù)本發(fā)明構(gòu)思的一個(gè)示例性實(shí)施例,提供一種優(yōu)化計(jì)算機(jī)程序的方法,包括:將源代碼編譯為原始中間表示(IR);確定原始IR中的循環(huán)代碼是否滿足條件;當(dāng)所述確定的步驟確定循環(huán)代碼滿足所述條件時(shí),執(zhí)行循環(huán)代碼以生成結(jié)果值,使用用于訪問(wèn)所述結(jié)果值的訪問(wèn)代碼替代原始IR中的循環(huán)代碼以生成更新的IR,并將更新的IR編譯為目標(biāo)代碼;當(dāng)循環(huán)代碼不滿足所述條件時(shí),將原始IR編譯為目標(biāo)代碼。

附圖說(shuō)明

從下面結(jié)合附圖的具體實(shí)施方式中,發(fā)明構(gòu)思的示例性實(shí)施例將被更加清楚地理解。

圖1是示出根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的半導(dǎo)體裝置的操作方法的示意圖。

圖2是示出根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的解釋器架構(gòu)的示意圖。

圖3是示出根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的擴(kuò)展中間表示(EIR)代碼的示意圖。

圖4至圖11是示出根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的操作方法的示意圖。

圖12是示出根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的操作方法的流程圖。

圖13是示出根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的半導(dǎo)體裝置的操作方法的流程圖。

圖14是可適用根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的半導(dǎo)體裝置的操作方法和半導(dǎo)體系統(tǒng)的示例性電子系統(tǒng)的框圖。

圖15至圖17是示出可適用根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的半導(dǎo)體裝置的操作方法的示例性半導(dǎo)體系統(tǒng)的示意圖。

具體實(shí)施方式

圖1是示出根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的半導(dǎo)體裝置的操作方法的示意圖。

參照?qǐng)D1,半導(dǎo)體系統(tǒng)1接收源代碼并輸出目標(biāo)代碼,并且半導(dǎo)體系統(tǒng)1包括前端50、解釋器架構(gòu)100和后端150。在一個(gè)實(shí)施例中,半導(dǎo)體系統(tǒng)1包括一個(gè)或多個(gè)處理器和半導(dǎo)體存儲(chǔ)器。在一個(gè)實(shí)施例中,前端50、解釋器架構(gòu)100和后端150是存儲(chǔ)在存儲(chǔ)器中的可由一個(gè)或多個(gè)處理器執(zhí)行的計(jì)算機(jī)程序。在另一實(shí)施例中,前端50、解釋器架構(gòu)100和后端150中的各個(gè)分別由多個(gè)處理器中的不同處理器實(shí)施,或者由單個(gè)處理器實(shí)施。

源代碼是用編程語(yǔ)言編寫的代碼。例如,源代碼可用可被編譯的語(yǔ)言(諸如,C語(yǔ)言)編寫。然而,發(fā)明構(gòu)思不限于任何特定的編程語(yǔ)言的源代碼。

目標(biāo)代碼是具有可被計(jì)算機(jī)系統(tǒng)執(zhí)行的形式(例如,二進(jìn)制形式)的代碼。例如,目標(biāo)代碼可以是對(duì)象代碼或機(jī)器代碼。目標(biāo)代碼根據(jù)目標(biāo)平臺(tái)(例如,目標(biāo)代碼將被執(zhí)行的平臺(tái))的類型可以以各種方式被表示。

前端50通過(guò)分析源代碼生成原始中間表示(IR)20。原始IR 20可是程序的內(nèi)部表示或中間表示。原始IR 20與源代碼不同且可從源代碼獲得。在一個(gè)實(shí)施例中,前端50管理符號(hào)表和數(shù)據(jù)結(jié)構(gòu),其中,數(shù)據(jù)結(jié)構(gòu)將源代碼中的符號(hào)表的各種符號(hào)映射為諸如位置、類型和范圍的信息。在一個(gè)實(shí)施例中,前端50管理包括用于源代碼中的每個(gè)標(biāo)識(shí)符的與關(guān)于源代碼中的標(biāo)識(shí)符的聲明或外觀的信息關(guān)聯(lián)的入口的數(shù)據(jù)結(jié)構(gòu),且數(shù)據(jù)結(jié)構(gòu)由編譯器使用以編譯源代碼。

解釋器架構(gòu)100接收由前端50生成的原始IR 20。解釋器架構(gòu)100從原始IR 20搜索循環(huán)代碼,計(jì)算循環(huán)代碼的結(jié)果值,并輸出通過(guò)使用訪問(wèn)結(jié)果值的訪問(wèn)代碼替代循環(huán)代碼而獲得的更新的IR 22。例如,如果循環(huán)代碼重復(fù)地執(zhí)行用于返回值的函數(shù)并將該值加到變量,則循環(huán)代碼的結(jié)果值可以是變量的最終值。

解釋器架構(gòu)100使用解釋器110來(lái)計(jì)算或執(zhí)行循環(huán)代碼。解釋器110通過(guò)執(zhí)行與原始IR 20對(duì)應(yīng)的擴(kuò)展IR(EIR)10來(lái)計(jì)算循環(huán)代碼,且EIR 10可以是用于解釋器區(qū)域中的處理的表示,其中,解釋器區(qū)域不同于編譯器區(qū)域(諸如,前端50和后端150)。稍后將參照?qǐng)D2和圖3詳細(xì)地描述EIR 10。

后端150從由前端50生成的原始IR 20或者從由解釋器架構(gòu)100生成的更新的IR 22收集程序信息,并優(yōu)化原始IR 20或更新的IR 22。例如,原始IR 20或者更新的IR 22的優(yōu)化可包括諸如內(nèi)聯(lián)展開(kāi)、死碼刪除、循環(huán)變換和寄存器分配的處理。在一個(gè)實(shí)施例中,內(nèi)聯(lián)擴(kuò)展使用被調(diào)用的函數(shù)的函數(shù)體替代函數(shù)名(function name)。在一個(gè)實(shí)施例中,死碼刪除移除被確定為不影響程序結(jié)果的代碼。循環(huán)變換的示例包括將循環(huán)代碼分解為多個(gè)更小的循環(huán)、將更小的循環(huán)合并為單個(gè)更大的循環(huán)、將內(nèi)部的循環(huán)與外部的循環(huán)進(jìn)行交換、重構(gòu)循環(huán)代碼以在多處理器系統(tǒng)上有效運(yùn)行等。后端150從優(yōu)化的IR 20或IR 22生成目標(biāo)代碼(例如,機(jī)器代碼),并輸出目標(biāo)代碼。例如,目標(biāo)代碼可從更新的IR代碼22或者從原始IR代碼20生成。

圖2是示出根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的解釋器架構(gòu)的示意圖。

參照?qǐng)D2,解釋器架構(gòu)100包括解釋器110、EIR代碼列表120、解釋器框架(IF)130和映射表(MT)140。

解釋器110計(jì)算循環(huán)代碼。循環(huán)代碼被包括在由前端50生成的原始IR 20中。在一個(gè)實(shí)施例中,解釋器110解釋與原始IR 20對(duì)應(yīng)的EIR 10,而不是直接解釋原始IR 20。為此,解釋器110可包括:包括擴(kuò)展算符的擴(kuò)展算符集合114。擴(kuò)展算符是包括在原始IR 20中的代碼(例如,EIR 10的代碼或算符)。稍后將參照?qǐng)D8詳細(xì)地描述擴(kuò)展算符集合114。

解釋器110可接收EIR 10,具體地,可接收包括EIR代碼的EIR代碼列表120。也就是,解釋器110可接收多個(gè)EIR代碼,并可最終通過(guò)順序地執(zhí)行多個(gè)EIR代碼來(lái)計(jì)算循環(huán)代碼。稍后將參照?qǐng)D3詳細(xì)地描述EIR 10的結(jié)構(gòu)。

解釋器110生成作為計(jì)算或執(zhí)行循環(huán)代碼的結(jié)果的結(jié)果值30。結(jié)果值30可存儲(chǔ)到解釋器框架130中,并可被用于生成訪問(wèn)代碼以替代原始IR 20的循環(huán)代碼。例如,在與解釋器框架130對(duì)應(yīng)的虛擬寄存器(VR)230中,可生成訪問(wèn)代碼作為存儲(chǔ)結(jié)果值的代碼。在一個(gè)示例性實(shí)施例中,虛擬寄存器230代表在連續(xù)的存儲(chǔ)器位置中邏輯上實(shí)施的一個(gè)或多個(gè)域。稍后將參照?qǐng)D10詳細(xì)地描述訪問(wèn)代碼。

在一個(gè)示例性實(shí)施例中,與編譯器分離地執(zhí)行解釋器110。更具體地說(shuō),包括解釋器110的解釋器架構(gòu)100可響應(yīng)于從原始IR 20中發(fā)現(xiàn)可計(jì)算的循環(huán)代碼而被執(zhí)行,其中,可計(jì)算的循環(huán)代碼是可被結(jié)果值替代的循環(huán)代碼。換句話說(shuō),如果沒(méi)有從原始IR 20發(fā)現(xiàn)可計(jì)算的循環(huán)代碼,則在編譯時(shí)間期間包含解釋器110的解釋器架構(gòu)100不被執(zhí)行。在一個(gè)實(shí)施例中,當(dāng)解釋器不被執(zhí)行時(shí),原始IR 20直接轉(zhuǎn)到后端150。

可計(jì)算的循環(huán)代碼可以是滿足預(yù)定的條件的集合的循環(huán)代碼。在一個(gè)示例性實(shí)施例中,通過(guò)確定以下項(xiàng)中的至少一項(xiàng)來(lái)確定從原始IR 20中發(fā)現(xiàn)的循環(huán)代碼是否滿足預(yù)定的條件的集合:從原始IR 20中發(fā)現(xiàn)的循環(huán)代碼是否是最內(nèi)層的循環(huán)、該循環(huán)代碼是否被設(shè)置為沒(méi)有任何分支代碼的單個(gè)基本塊、以及該循環(huán)代碼是否包括單個(gè)預(yù)編譯頭塊和單個(gè)退出塊。在一個(gè)示例性實(shí)施例中,通過(guò)確定循環(huán)代碼是否不包括任何存儲(chǔ)器訪問(wèn)代碼(例如,訪問(wèn)存儲(chǔ)器的指令)或者函數(shù)調(diào)用代碼(例如,調(diào)用函數(shù)的指令),來(lái)確定從原始IR 20中發(fā)現(xiàn)的循環(huán)代碼是否滿足預(yù)定的條件的集合。在一個(gè)示例性實(shí)施例中,如果循環(huán)代碼包括存儲(chǔ)器訪問(wèn)代碼或函數(shù)調(diào)用代碼,則不滿足條件。

在一個(gè)示例性實(shí)施例中,解釋器110在編譯時(shí)間期間計(jì)算循環(huán)代碼。也就是,可在編譯器的前端50和后端150之間插入解釋器110。更具體地說(shuō),解釋器110可接收由前端50生成的原始IR 20,使用訪問(wèn)代碼替代在原始IR20內(nèi)的與循環(huán)代碼對(duì)應(yīng)的IR代碼以生成更新的IR 22(替代的IR),并可因此輸出替代的IR 22。可由編譯器在后端150處理替代的IR 22。結(jié)果,可生成目標(biāo)代碼。當(dāng)不能執(zhí)行上面描述的優(yōu)化時(shí),可由編譯器在后端150通過(guò)編譯原始IR 20來(lái)生成目標(biāo)代碼。

將參照?qǐng)D2在下文中描述解釋器框架130和映射表140。

解釋器框架130是解釋器110用來(lái)計(jì)算循環(huán)代碼的存儲(chǔ)空間。也就是,解釋器110將值寫入解釋器框架130,或者從解釋器框架130讀取值,且該值可以是用于計(jì)算EIR代碼的變量的初始值、中間值(用于在計(jì)算期間使用)和最終值(通過(guò)計(jì)算獲得的)。

解釋器框架130與由編譯器使用的虛擬寄存器230區(qū)分開(kāi)來(lái)。在一個(gè)示例性實(shí)施例中,解釋器框架130與虛擬寄存器被獨(dú)立地分配至存儲(chǔ)器。例如,存儲(chǔ)器可包括代表虛擬寄存器230的第一部分和代表解釋器框架130的與第一部分不同的第二部分。如果IR代碼包括虛擬寄存器信息,則與IR代碼對(duì)應(yīng)的EIR代碼可包括關(guān)于被分配以與在IR代碼中使用的虛擬寄存器對(duì)應(yīng)的解釋器框架的解釋器框架信息。

解釋器框架130可包括多個(gè)單位框架,且單位框架可具有預(yù)定大小。在一個(gè)示例性實(shí)施例中,單位框架具有4字節(jié)大小,但發(fā)明構(gòu)思不限于此。

如果單位框架的大小是4字節(jié)且將被解釋器110處理的操作數(shù)的大小是8或16字節(jié),則多個(gè)連續(xù)的單位框架可被匹配給單個(gè)值或者單個(gè)虛擬寄存器。例如,如果解釋器框架110包括互相連續(xù)的第一單位框架和第二單位框架,則第一單位框架和第二單位框架可被匹配給單個(gè)值或者單個(gè)虛擬寄存器。

映射表140存儲(chǔ)解釋器框架130與虛擬寄存器230之間的映射關(guān)系。稍后將參照?qǐng)D7詳細(xì)地描述映射表140的結(jié)構(gòu)。在一個(gè)示例性實(shí)施例中,映射表140被存儲(chǔ)到存儲(chǔ)器空間或可被解釋器110訪問(wèn)的存儲(chǔ)空間中。

圖3是示出根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的EIR代碼的示意圖。

圖3示出原始IR 20和EIR 10兩者的實(shí)施例。

原始IR 20由編譯器在前端50生成且包括具有算符(OPR)24和虛擬寄存器信息(或者虛擬寄存器編號(hào)(VRN))26的IR代碼。編譯器使用虛擬寄存器230來(lái)處理用于計(jì)算原始IR 20的變量的初始值、中間值(用于在計(jì)算期間使用)和最終值(通過(guò)計(jì)算獲得的)。

EIR 10被生成為與原始IR 20對(duì)應(yīng),并包括具有擴(kuò)展算符(EOPR)14和解釋器框架信息(或者解釋器框架編號(hào)(IFN))16的EIR代碼。解釋器110使用解釋器框架(IF)130來(lái)處理用于計(jì)算EIR 10的變量的初始值、中間值(用于在計(jì)算期間使用)和最終值(通過(guò)計(jì)算獲得的)。

在一個(gè)示例性實(shí)施例中,EIR 10包括原始IR 20的原始版本。也就是,EIR 10可包括IR 12。

如上面參照?qǐng)D2描述的,可由映射表140管理虛擬寄存器230與解釋器框架130之間的映射關(guān)系。

圖4至圖11是示出根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的操作方法的示意圖。

圖4以C語(yǔ)言形式示出將通過(guò)根據(jù)圖1的示例性實(shí)施例的操作方法處理的源代碼300。

參照?qǐng)D4,源代碼初始化整數(shù)類型變量m和n,源代碼包括作為循環(huán)代碼的“while”語(yǔ)句,且包括返回變量n的值的代碼。變量m可以是歸納變量,而變量n可以是局部變量。歸納變量可以是在循環(huán)的每次迭代增加或減少固定量的變量。

值得注意的是,“while”語(yǔ)句包括循環(huán)條件“m<n”,變量m是值在“while”循環(huán)中增加的歸納變量,且變量n的值在“while”循環(huán)中變量m的影響下變化。也就是,圖4的源代碼包括歸納變量m和非歸納變量n,“while”循環(huán)的迭代次數(shù)不僅受歸納變量m的影響,也受非歸納變量n的影響。換句話說(shuō),“while”循環(huán)的迭代次數(shù)由歸納變量m和非歸納變量n兩者來(lái)確定。

基于遞歸鏈(CR)的循環(huán)簡(jiǎn)化方法不能應(yīng)用于循環(huán)代碼的迭代次數(shù)受除歸納變量之外的變量所影響的情況。例如,基于遞歸鏈(CR)的循環(huán)簡(jiǎn)化方法不能應(yīng)用于圖4中描述的循環(huán)代碼。然而,根據(jù)發(fā)明構(gòu)思的一個(gè)實(shí)施例,即使當(dāng)循環(huán)代碼的迭代次數(shù)被除在循環(huán)代碼中的歸納變量之外的變量所影響時(shí),也可通過(guò)使用結(jié)果值替代循環(huán)代碼而有效地減少與循環(huán)對(duì)應(yīng)的目標(biāo)代碼的執(zhí)行時(shí)間。

圖5示出可包括通過(guò)編譯圖4的源代碼而獲得的原始IR 20或IR代碼的IR 310。

參照?qǐng)D5,“v100”、“v101”、“v102”和“v103”指示VRN,其中,VRN代表已被分配至存儲(chǔ)器的虛擬寄存器230,“Mul”(例如,乘法算符)、“Sub”(例如,減法算符)、“Add”(例如,加法算符)和“BLT”(例如,小于分支(branch on less than)算符)代表在原始IR 20中使用的算符。

通常,一旦由前端50生成原始IR 20的代碼,則后端150將虛擬寄存器230映射到真實(shí)的存儲(chǔ)器空間,并生成最終的目標(biāo)代碼。然而,在發(fā)明構(gòu)思的一個(gè)示例性實(shí)施例中,從圖5的原始IR 20的代碼之中首先搜索可計(jì)算的循環(huán)代碼。然后,如果在圖5的原始IR 20的代碼之中存在可計(jì)算的循環(huán)代碼,則通過(guò)刪除可計(jì)算的循環(huán)代碼并插入訪問(wèn)可計(jì)算的循環(huán)代碼的結(jié)果值的訪問(wèn)代碼而獲得更新的IR 22,且更新的IR 22被傳輸?shù)胶蠖?50。例如,循環(huán)代碼被從原始IR 20移除,并被訪問(wèn)代碼替代以生成更新的IR 22。

參照?qǐng)D5,以標(biāo)簽“L1:”開(kāi)始的循環(huán)是最內(nèi)層的循環(huán),該循環(huán)被設(shè)置為單個(gè)基本塊,并包括單個(gè)預(yù)編譯頭塊和單個(gè)退出塊。因?yàn)橐詷?biāo)簽“L1:”開(kāi)始的循環(huán)不包括存儲(chǔ)器訪問(wèn)代碼或函數(shù)調(diào)用代碼,所以以標(biāo)簽“L1:”開(kāi)始的循環(huán)與可由解釋器架構(gòu)100計(jì)算的可計(jì)算的循環(huán)代碼對(duì)應(yīng)。在一個(gè)實(shí)施例中,當(dāng)循環(huán)代碼是一個(gè)或多個(gè)外部循環(huán)內(nèi)的最內(nèi)部的循環(huán)時(shí)或者當(dāng)循環(huán)代碼不位于另一循環(huán)之中時(shí),循環(huán)代碼是最內(nèi)層的循環(huán)。在一個(gè)實(shí)施例中,當(dāng)循環(huán)代碼不包括多個(gè)分支時(shí),循環(huán)代碼具有單個(gè)退出塊。在一個(gè)實(shí)施例中,當(dāng)循環(huán)代碼分支到不多于一個(gè)標(biāo)簽時(shí),循環(huán)代碼具有單個(gè)預(yù)編譯頭塊。

因此,原始IR 20被轉(zhuǎn)變成為可由解釋器110處理的EIR 10。原始IR 20的轉(zhuǎn)變包括分配與虛擬寄存器v100、v101、v102或v103對(duì)應(yīng)的解釋器框架130,以及為算符Mul、Sub、Add或BLT選擇擴(kuò)展算符。

參照?qǐng)D6,“F[i]”表示解釋器框架130。為了方便起見(jiàn),解釋器框架130在圖6中被示出為由從0逐漸增加的索引i所代表,但是,解釋器框架130的結(jié)構(gòu)不限于圖6所示的結(jié)構(gòu),而是可根據(jù)解釋器框架130的預(yù)期用途而變化。

為將圖5的原始IR 20的VRN轉(zhuǎn)變?yōu)镮FN,解釋器框架F[0]、F[1]、F[2]和F[3]可被分配以分別與虛擬寄存器v100、v101、v102和v103對(duì)應(yīng)。因?yàn)樘摂M寄存器v104和v105未在圖5的原始IR 20中被使用,所以沒(méi)有解釋器框架針對(duì)虛擬寄存器v104和v105被分配。

參照?qǐng)D7,映射表140包括VRN列和IFN列,并存儲(chǔ)虛擬寄存器230與解釋器框架130之間的映射關(guān)系,即,虛擬寄存器v100、v101、v102和v103與解釋器框架F[0]、F[1]、F[2]和F[3]之間的映射關(guān)系。在圖7中示出了示出虛擬寄存器230與解釋器框架130之間的映射關(guān)系的映射表140,但是示出虛擬寄存器230與解釋器框架130之間的映射關(guān)系的數(shù)據(jù)的形式不限于圖7中示出的形式,而是可以變化。

參照?qǐng)D8,解釋器110包括核112和擴(kuò)展算符集合114。在一個(gè)實(shí)施例中,核112是多核處理器的處理核。

核112解釋EIR 10并使用包括在EIR 10的代碼中的算符和操作數(shù)計(jì)算循環(huán)代碼。

擴(kuò)展算符集合114與包括在原始IR 20中的算符對(duì)應(yīng)并包括可由解釋器110計(jì)算的擴(kuò)展算符。例如,原始IR 20的算符“Mul”、“Div”(例如,除法算符)、“Add”、“Sub”、“Mov”(例如,移動(dòng)算符)、“Const”和“BLT”可分別與EIR 10的擴(kuò)展算符“IMul”、“IDiv”、“IAdd”、“ISub”、“IMov”、“IConst”和“IBLT”對(duì)應(yīng)。

在本示例性實(shí)施例中,EIR 10的算符通過(guò)它們?cè)贗R 20的各自對(duì)應(yīng)的算符的名稱的前端添加字符“I”來(lái)命名,但發(fā)明構(gòu)思不限于此。也就是,EIR 10的算符可以除在此闡述的方式之外的各種方式來(lái)命名。例如,EIR 10的算符可具有與它們?cè)贗R 20的各自對(duì)應(yīng)的算符相同的名稱。

圖9示出可與EIR 10對(duì)應(yīng)的EIR 320,其中,EIR 10依次與圖5的原始IR 20對(duì)應(yīng)。

參照?qǐng)D5和9,原始IR 20的VRN“v100”、“v101”、“v102”和“v103”被分別轉(zhuǎn)變?yōu)镋IR 10的IFR“F[0]”、“F[1]”、“F[2]”和“F[3]”,原始IR 20的算符“Mul”、“Add”、“Sub”和“BLT”被分別轉(zhuǎn)變成為EIR 10的擴(kuò)展算符“IMul”、“IAdd”、“ISub”和“IBLT”。

解釋器110計(jì)算EIR 10,從而生成原始IR 20的循環(huán)代碼的最終結(jié)果值30。

圖10示出了根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的訪問(wèn)代碼。

作為用于替代原始IR 20的循環(huán)代碼的代碼的訪問(wèn)代碼,包括用于訪問(wèn)由解釋器110獲得的結(jié)果值30的代碼。更具體地說(shuō),如果通過(guò)使用圖9的EIR 10計(jì)算原始IR 20的循環(huán)代碼而獲得的結(jié)果值30為“10000”,則解釋器110將“10000”的結(jié)果值存儲(chǔ)到與虛擬寄存器v103對(duì)應(yīng)的解釋器框架F[3]中。

此后,循環(huán)代碼被從原始IR 20中刪除,訪問(wèn)代碼330被插入到原始IR 20中。在本示例性實(shí)施例中,訪問(wèn)代碼330為“v103MovConst 10000”,該訪問(wèn)代碼是用于將常數(shù)值“10000”存儲(chǔ)到虛擬寄存器v103中的代碼,但發(fā)明構(gòu)思不限于此。訪問(wèn)代碼330的形式不限于圖10中示出的形式,而是可以變化。

更具體地說(shuō),如圖11的左部所示,從原始IR 20中刪除循環(huán)代碼,且如圖11的右部所示,作為替代,插入用于將結(jié)果值w2存儲(chǔ)到存儲(chǔ)器中的代碼“str w2,[x20,#60]”。

根據(jù)發(fā)明構(gòu)思的一個(gè)實(shí)施例,可通過(guò)使用結(jié)果值替代循環(huán)代碼而有效地減少與循環(huán)對(duì)應(yīng)的目標(biāo)代碼的執(zhí)行時(shí)間。此外,如上面已經(jīng)提到的,即使當(dāng)循環(huán)代碼的迭代次數(shù)受除歸納變量之外的變量所影響時(shí),使用結(jié)果值替代循環(huán)代碼也是可行的。

圖12是示出根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的操作方法的流程圖。

參照?qǐng)D12,確定關(guān)于循環(huán)代碼是否可計(jì)算(S1201)。更具體地說(shuō),可通過(guò)確定以下項(xiàng)中的至少一項(xiàng)來(lái)確定循環(huán)代碼是否可計(jì)算:循環(huán)代碼是否是最內(nèi)層的循環(huán)、循環(huán)代碼是否被設(shè)置為沒(méi)有任何分支代碼的單個(gè)基本塊、以及循環(huán)代碼是否包括單個(gè)預(yù)編譯頭塊和單個(gè)退出塊。

此后,確定循環(huán)代碼是否包括可計(jì)算的指令(S1203)。例如,可通過(guò)檢查循環(huán)代碼是否包括任何存儲(chǔ)器訪問(wèn)代碼或函數(shù)調(diào)用代碼來(lái)執(zhí)行該確定。

此后,確定包括在循環(huán)代碼中的歸納變量的初始值(S1205)。在一個(gè)示例性實(shí)施例中,確定歸納變量的初始值包括將歸納變量的初始值存儲(chǔ)到解釋器框架130中。

此后,初始化解釋器架構(gòu)100(S1207)。在一個(gè)示例性實(shí)施例中,初始化解釋器架構(gòu)100包括映射虛擬寄存器230和解釋器框架130,并將解釋器框架130初始化為任意的常數(shù)值。

此后,使用解釋器架構(gòu)100的解釋器110計(jì)算(例如,解釋)循環(huán)代碼(S1209),將通過(guò)計(jì)算獲得的結(jié)果值30存儲(chǔ)到解釋器框架130中,并從IR 20中刪除循環(huán)代碼(S1211)。刪除循環(huán)代碼可包括使用用于訪問(wèn)結(jié)果值30的訪問(wèn)代碼替代原始IR 20中的循環(huán)代碼。

圖13是示出根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的操作半導(dǎo)體裝置的方法的流程圖。

參照?qǐng)D13,將EIR 10的EIR代碼添加到解釋器架構(gòu)100(S1301),并確定解釋器架構(gòu)100是否支持EIR代碼。如果解釋器架構(gòu)100不支持EIR代碼,則輸出錯(cuò)誤消息,并終止解釋器架構(gòu)100的操作(S1303)。

當(dāng)檢查EIR代碼而確定解釋器架構(gòu)100支持它們時(shí),將循環(huán)代碼的所有IR代碼添加到解釋器架構(gòu)100(S1305)。例如,該方法可嘗試將多個(gè)EIR代碼添加到解釋器架構(gòu)100,并假設(shè)它們都被支持,然后該方法將進(jìn)行到步驟S1307。

此后,初始化解釋器框架130(S1307),且確定EIR代碼是否可計(jì)算(S1309)。如果EIR代碼由于,例如,初始化失敗,而不可計(jì)算,則輸出錯(cuò)誤消息,并終止解釋器架構(gòu)100的操作(S1317)。

此后,使用解釋器110處理循環(huán)代碼中的每個(gè)EIR代碼(S1311),同時(shí)確定是否滿足循環(huán)代碼的退出條件(S1313)。

響應(yīng)于確定滿足循環(huán)代碼的退出條件(即,循環(huán)的迭代已經(jīng)完成),獲得作為計(jì)算循環(huán)代碼的結(jié)果的結(jié)果值30(S1315)。

根據(jù)發(fā)明構(gòu)思的一個(gè)實(shí)施例,通過(guò)使用結(jié)果值替代循環(huán)代碼,可有效地減少與循環(huán)對(duì)應(yīng)的目標(biāo)代碼的執(zhí)行時(shí)間。此外,如上面已經(jīng)提到的,即使當(dāng)循環(huán)代碼的迭代次數(shù)被除歸納變量之外的變量所影響時(shí),使用結(jié)果值替代循環(huán)代碼也是可行的。

圖14是可適用根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的半導(dǎo)體裝置的操作方法和半導(dǎo)體系統(tǒng)的示例性電子系統(tǒng)的框圖。

參照?qǐng)D14,電子系統(tǒng)1100包括控制器1110、輸入/輸出(I/O)裝置1120、存儲(chǔ)裝置1130、接口1140和總線1150??刂破?110、I/O裝置1120、存儲(chǔ)裝置1130和/或接口1140可經(jīng)由總線1150互相連接??偩€1150可以是經(jīng)其而傳輸數(shù)據(jù)的路徑。例如,可由控制器1110可執(zhí)行前端50、解釋器架構(gòu)100和后端150的功能。例如,控制器1110可執(zhí)行圖12或圖13的一個(gè)或多個(gè)步驟。例如,控制器1110可被用于實(shí)施半導(dǎo)體裝置系統(tǒng)1的全部或部分。

控制器1110可包括微處理器、數(shù)字信號(hào)處理器、微控制器和執(zhí)行與微處理器、數(shù)字信號(hào)處理器或微控制器相似的功能的邏輯元件中的至少一個(gè)。I/O裝置1120的示例包括鍵區(qū)、鍵盤、顯示裝置等。存儲(chǔ)裝置1130可存儲(chǔ)數(shù)據(jù)和/或命令。接口1140將數(shù)據(jù)傳輸?shù)酵ㄐ啪W(wǎng)絡(luò)或從通信網(wǎng)絡(luò)接收數(shù)據(jù)。接口1140可以是有線的或無(wú)線的接口。接口1140的示例包括天線、有線的或無(wú)線的收發(fā)機(jī)等。

盡管未特別示出,但是半導(dǎo)體系統(tǒng)1100還可包括用于提高控制器1110的操作的操作存儲(chǔ)器,諸如,高速動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)和/或靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)。

半導(dǎo)體裝置1110可適用于個(gè)人數(shù)字助理(PDA)、便攜式計(jì)算機(jī)、網(wǎng)絡(luò)平板、無(wú)線電話、移動(dòng)電話、數(shù)字音樂(lè)播放器、存儲(chǔ)卡或能夠在無(wú)線環(huán)境中傳輸和/或接收信息的任何類型的電子產(chǎn)品。

圖15至圖17是示出可適用根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的半導(dǎo)體裝置的操作方法的示例性半導(dǎo)體系統(tǒng)的示意圖。

更具體地說(shuō),圖15示出平板計(jì)算機(jī)1200,圖16示出筆記本計(jì)算機(jī)1300,圖17示出智能電話1400。根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的半導(dǎo)體裝置中的至少一個(gè)可在平板計(jì)算機(jī)1200、筆記本計(jì)算機(jī)1300和智能電話1400中被使用。

根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的半導(dǎo)體裝置還可在除在此闡述的裝置之外的各種集成電路(IC)裝置中被使用。

也就是,根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的半導(dǎo)體裝置(例如,1)的示例包括平板計(jì)算機(jī)1200和筆記本計(jì)算機(jī)1300,但發(fā)明構(gòu)思不限于此。

根據(jù)發(fā)明構(gòu)思的示例性實(shí)施例的半導(dǎo)體系統(tǒng)可被設(shè)置為計(jì)算機(jī)、超級(jí)移動(dòng)個(gè)人計(jì)算機(jī)(UMPC)、工作站、上網(wǎng)本計(jì)算機(jī)、PDA、便攜式計(jì)算機(jī)、無(wú)線電話、移動(dòng)電話、電子書(shū)、便攜式多媒體播放器(PMP)、便攜式游戲機(jī)、導(dǎo)航裝置、黑盒子、數(shù)碼相機(jī)、3維電視機(jī)、數(shù)字錄音機(jī)、數(shù)字音頻播放器、數(shù)字圖片記錄儀、數(shù)字圖片播放器、數(shù)字視頻錄像機(jī)或數(shù)字視頻播放器。

可將上面描述的方法存儲(chǔ)到作為可保持并存儲(chǔ)由指令執(zhí)行裝置使用的指令的有形裝置的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是,例如,但不限于,電存儲(chǔ)裝置、磁存儲(chǔ)裝置、光存儲(chǔ)裝置、電磁存儲(chǔ)裝置、半導(dǎo)體存儲(chǔ)裝置或前述內(nèi)容的任何適當(dāng)?shù)慕M合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的示例的非詳盡列表包括以下項(xiàng):便攜式計(jì)算機(jī)軟磁盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦除可編程只讀存儲(chǔ)器(EPROM或閃存)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、便攜式致密盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能盤(DVD)、記憶棒、軟盤、機(jī)械編碼裝置(諸如,穿孔卡或在具有記錄在其上的指令的凹槽中的凸起結(jié)構(gòu))和前述內(nèi)容的任何適當(dāng)?shù)慕M合。

前述內(nèi)容是發(fā)明構(gòu)思的示例性實(shí)施例的示例,且不被解釋為限制于此。盡管已描述了一些示例性實(shí)施例,但是本領(lǐng)域技術(shù)人員將容易地理解,在實(shí)質(zhì)上不脫離本發(fā)明構(gòu)思的情況下,在示例實(shí)施例中進(jìn)行許多修改。因此,所有這樣的修改意在被包括在本發(fā)明構(gòu)思的范圍內(nèi)。

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