欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

寄存器的分配方法和裝置與流程

文檔序號:11154292閱讀:1022來源:國知局
寄存器的分配方法和裝置與制造工藝

本發(fā)明涉及動態(tài)二進(jìn)制翻譯技術(shù)領(lǐng)域,尤其涉及一種寄存器的分配方法和裝置。



背景技術(shù):

近年來,隨著計算機(jī)體系結(jié)構(gòu)的發(fā)展,計算機(jī)軟件的跨平臺性顯得越來越重要,例如,基于X86平臺運行的計算機(jī)軟件,有必要也可以基于先進(jìn)的精簡指令集處理器(Advanced RISC Machines,簡稱ARM)平臺和無互鎖流水線級的微處理器(Million Instructions Per Second,簡稱MIPS)平臺運行。為了實現(xiàn)不同平臺間的軟件移植,通常使用動態(tài)二進(jìn)制翻譯。動態(tài)二進(jìn)制翻譯是一種即時編譯技術(shù),涉及“源”與“目標(biāo)”兩個機(jī)器平臺,它在不需要可執(zhí)行程序的源代碼的情況下,能在運行時動態(tài)地將源機(jī)器平臺的二進(jìn)制代碼轉(zhuǎn)換為與目標(biāo)機(jī)器平臺兼容的二進(jìn)制代碼。

目前,利用中間指令集進(jìn)行動態(tài)二進(jìn)制翻譯是一種常用的方法,流程如下:首先,將“源”機(jī)器平臺代碼翻譯為與體系機(jī)構(gòu)無關(guān)的中間表示,也即微代碼,也稱為微指令;然后,將微代碼進(jìn)行優(yōu)化和寄存器分配;最后,將微代碼翻譯為“目標(biāo)”機(jī)器平臺代碼。其中,寄存器是計算機(jī)存儲體系中處于最上層、訪問速度最快的存儲介質(zhì),寄存器的分配效率和利用率很大程度上決定著動態(tài)二進(jìn)制翻譯虛擬機(jī)的性能。目前,寄存器分配算法有很多,例如:全局寄存器分配算法、圖著色算法、線性掃描算法等,通過寄存器分配算法,為微代碼中的每個輸入操作數(shù)和每個輸出操作數(shù)分配寄存器。

但是,在一些特定場景下,某些輸入操作數(shù)在微指令執(zhí)行結(jié)束之后不再被用到,或者輸入操作數(shù)和輸出操作數(shù)存在明顯的冗余,采用現(xiàn)有的寄存器分配算法,為每個輸入操作數(shù)和每個輸出操作數(shù)均分配一個寄存器,將嚴(yán)重影響了寄存器的利用率,進(jìn)而降低了動態(tài)二進(jìn)制翻譯虛擬機(jī)的性能。



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

本發(fā)明提供一種寄存器的分配方法和裝置,可以減少不必要的寄存器分配次數(shù),提高了寄存器的利用率,進(jìn)而提高了動態(tài)二進(jìn)制翻譯虛擬機(jī)的性能。

本發(fā)明提供的寄存器的分配方法,應(yīng)用于動態(tài)二進(jìn)制翻譯中,包括:

在微指令定義階段,為微指令生成寄存器復(fù)用信息;其中,所述微指令中包括輸入操作數(shù)和輸出操作數(shù);所述寄存器復(fù)用信息用于指示為所述輸出操作數(shù)分配的輸出寄存器復(fù)用為所述輸入操作數(shù)分配的輸入寄存器;

在微指令分析階段,根據(jù)所述寄存器復(fù)用信息,獲得輸出寄存器號以及所述輸出寄存器號復(fù)用的輸入寄存器號;

在微指令寄存器分配階段,將所述輸入寄存器號和所述輸出寄存器號分配為同一個物理寄存器號。

本發(fā)明提供的寄存器的分配裝置,動態(tài)二進(jìn)制翻譯中,包括:

指令定義模塊,用于在微指令定義階段,為微指令生成寄存器復(fù)用信息;其中,所述微指令中包括輸入操作數(shù)和輸出操作數(shù);所述寄存器復(fù)用信息用于指示為所述輸出操作數(shù)分配的輸出寄存器復(fù)用為所述輸入操作數(shù)分配的輸入寄存器;

指令分析模塊,用于在微指令分析階段,根據(jù)所述指令定義模塊生成的所述寄存器復(fù)用信息,獲得輸出寄存器號以及所述輸出寄存器號復(fù)用的輸入寄存器號;

寄存器分配模塊,用于在微指令寄存器分配階段,將所述指令分析模塊獲得的所述輸入寄存器號和所述輸出寄存器號分配為同一個物理寄存器號。

本發(fā)明提供一種寄存器的分配方法和裝置,其中,寄存器的分配方法應(yīng)用于動態(tài)二進(jìn)制翻譯中,包括:在微指令定義階段,為微指令生成寄存器復(fù)用信息,在微指令分析階段,根據(jù)寄存器復(fù)用信息,獲得輸出寄存器號以及輸出寄存器號復(fù)用的輸入寄存器號,在微指令寄存器分配階段,將輸入寄存器號和輸出寄存器號分配為同一個物理寄存器號。本發(fā)明提供的寄存器的分配方法,通過將輸出寄存器復(fù)用輸入寄存器,為可復(fù)用的輸出寄存器和輸入寄存器分配同一個物理寄存器,減少了不必要的寄存器分配次數(shù),提高了寄存器的利用率,進(jìn)而提高了動態(tài)二進(jìn)制翻譯虛擬機(jī)的性能。

附圖說明

為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明實施例一提供的寄存器的分配方法的流程圖;

圖2為本發(fā)明實施例一提供的寄存器的分配裝置的結(jié)構(gòu)示意圖。

具體實施方式

為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。

本發(fā)明實施例提供的寄存器的分配方法和裝置,應(yīng)用于利用中間指令集進(jìn)行動態(tài)二進(jìn)制翻譯過程中的寄存器分配,此處的寄存器,是指計算機(jī)存儲體系中的物理寄存器。

圖1為本發(fā)明實施例一提供的寄存器的分配方法的流程圖。如圖1所示,本實施例提供的寄存器的分配方法,應(yīng)用于動態(tài)二進(jìn)制翻譯中,可以包括:

步驟101、在微指令定義階段,為微指令生成寄存器復(fù)用信息。

其中,微指令中包括輸入操作數(shù)和輸出操作數(shù),輸入操作數(shù)和輸出操作數(shù)表示微指令的操作數(shù)據(jù)。微指令中還可以包括表示微指令操作語義的操作碼。

例如,以加法操作為例,微指令的一種具體形式可以為:

add_i32t0,t1,t2

在上述微指令中,輸入操作數(shù)為t1和t2,輸出操作數(shù)為t0,操作碼為add_i32,該條微指令表示:32位操作數(shù)t1和t2相加,結(jié)果存儲到32位操作數(shù)t0中。

又例如,以移位操作為例,微指令的一種具體形式可以為:

shl_i32t0,t1,t2

在上述微指令中,輸入操作數(shù)為t1和t2,輸出操作數(shù)為t0,操作碼為shl_i32,該條微指令表示:32位操作數(shù)t1左移t2位,結(jié)果存儲到32位操作數(shù)t0中。

微指令需要先進(jìn)行定義,之后才能使用。本步驟就是在微指令定義階段,生成寄存器復(fù)用信息。其中,寄存器復(fù)用信息用于指示為輸出操作數(shù)分配的輸出寄存器復(fù)用為輸入操作數(shù)分配的輸入寄存器。其中,輸出寄存器和輸入寄存器均指在微指令運行過程中為操作數(shù)分配的虛擬寄存器。

例如,以上述加法操作為例,若輸入操作數(shù)t1和t2在加法操作執(zhí)行完成后不會再被用到,則為輸出操作數(shù)t0分配的輸出寄存器完全可以復(fù)用為輸入操作數(shù)t1或者t2分配的輸入寄存器,即,在微指令定義階段,可以生成寄存器復(fù)用信息,用以指示輸出寄存器可以復(fù)用任意一個輸入寄存器。

又例如,以上述移位操作為例,若輸入操作數(shù)t1在移位操作執(zhí)行完成后不會再被用到,則為輸出操作數(shù)t0分配的輸出寄存器完全可以復(fù)用為輸入操作數(shù)t1分配的輸入寄存器,即,在微指令定義階段,可以生成寄存器復(fù)用信息,用以指示輸出寄存器可以復(fù)用為輸入操作數(shù)t1分配的輸入寄存器。

需要說明的是,本實施例對于寄存器復(fù)用信息的具體形式不加以限制。

可選的,作為寄存器復(fù)用信息的一種具體實現(xiàn)方式,寄存器復(fù)用信息可以為復(fù)用序號K,其中,復(fù)用序號K用于指示輸出寄存器復(fù)用第K個輸入寄存器,K為大于等于1的整數(shù)。

例如,以上述加法操作為例,微指令定義的一種具體形式如下:

INDEX_op_add_i32,{“r”,”1”,”r”}

在上述微指令定義中,大括號中的第一個”r”,表示輸出操作數(shù)的類型為寄存器,大括號中的最后一個”r”,表示輸入操作數(shù)的類型為寄存器,大括號中的中間的”1”,則為寄存器復(fù)用信息,用復(fù)用序號K表示,此時K=1,表示為輸出操作數(shù)分配的輸出寄存器可以復(fù)用第1個輸入寄存器。

可選的,作為寄存器復(fù)用信息的另一種具體實現(xiàn)方式,寄存器復(fù)用信息可以為復(fù)用標(biāo)識,其中,復(fù)用標(biāo)識用于指示輸出寄存器復(fù)用任意一個輸入寄存器??蛇x的,復(fù)用標(biāo)識可以用字符表示,例如:s、anyone,等等。

例如,以上述移位操作為例,微指令定義的一種具體形式如下:

INDEX_op_shl_i32,{“r”,”anyone”,”ri”}

在上述微指令定義中,大括號中的第一個”r”,表示輸出操作數(shù)的類型為寄存器,大括號中的最后一個”ri”,表示輸入操作數(shù)的類型為寄存器或者立即數(shù),大括號中的中間的”anyone”,則為寄存器復(fù)用信息,用復(fù)用標(biāo)識表示,表示為輸出操作數(shù)分配的輸出寄存器可以復(fù)用任意一個輸入寄存器。

可選的,微指令具體可以為:加法指令、減法指令、移位指令或者取補指令。需要說明的是,微指令還可以為其他的微指令,本實施例不加以限制。

步驟103、在微指令分析階段,根據(jù)寄存器復(fù)用信息,獲得輸出寄存器號以及輸出寄存器號復(fù)用的輸入寄存器號。

具體地,在微指令運行過程中,為了方便運行,為每個操作數(shù)分配的虛擬寄存器都有編號。

例如,以上述加法操作為例,輸入操作數(shù)為t1和t2,輸出操作數(shù)為t0,共計兩個輸入寄存器和一個輸出寄存器,則,為輸入操作數(shù)t1分配的第一個輸入寄存器為寄存器0,為輸入操作數(shù)t2分配的第二個輸入寄存器為寄存器1,為輸出操作數(shù)t0分配的輸出寄存器為寄存器2。

又例如,以上述移位操作為例,輸入操作數(shù)為t1和t2,輸出操作數(shù)為t0,共計兩個輸入寄存器和一個輸出寄存器,則,為輸入操作數(shù)t1分配的第一個輸入寄存器為寄存器3,為輸入操作數(shù)t2分配的第二個輸入寄存器為寄存器4,為輸出操作數(shù)t0分配的輸出寄存器為寄存器5。

在本步驟中,根據(jù)寄存器復(fù)用信息,可以獲得輸出寄存器號以及輸出寄存器號復(fù)用的輸入寄存器號。

例如,以上述加法操作為例,寄存器復(fù)用信息為復(fù)用序號K=1,則表示為輸出操作數(shù)t0分配的輸出寄存器可以復(fù)用第一個輸入寄存器,則可以得到:輸出寄存器號為寄存器2,輸出寄存器號可以復(fù)用的輸入寄存器號為寄存器0。

又例如,以上述移位操作為例,寄存器復(fù)用信息為復(fù)用標(biāo)識”anyone”,則表示為輸出操作數(shù)t0分配的輸出寄存器可以復(fù)用任意一個輸入寄存器,則可以得到:輸出寄存器號為寄存器5,輸出寄存器號可以復(fù)用的輸入寄存器 號為寄存器3或者寄存器4。

步驟105、在微指令寄存器分配階段,將輸入寄存器號和輸出寄存器號分配為同一個物理寄存器號。

在本步驟中,主要實現(xiàn)在微指令運行過程中物理寄存器的分配,即,通過在步驟103中獲得的可以復(fù)用的輸出寄存器號和輸入寄存器號,實現(xiàn)虛擬寄存器到物理寄存器的映射。

具體地,先為輸入寄存器號分配一個物理寄存器號,然后,將為輸出寄存器號分配的物理寄存器號設(shè)置為輸入寄存器號對應(yīng)的物理寄存器號。

例如,以上述加法操作為例,輸出寄存器號為寄存器2,可以復(fù)用的輸入寄存器號為寄存器0,則,先為寄存器0分配一個物理寄存器號,記為物理寄存器0,為寄存器1分配一個物理寄存器,記為物理寄存器1,然后,將輸入寄存器號和可復(fù)用的輸出寄存器號分配為同一個物理寄存器號,即,直接將寄存器2分配為物理寄存器0,這樣,寄存器0和寄存器2都映射為物理寄存器0,可以避免為寄存器2分配一個新的物理寄存器,減少了不必要的寄存器分配次數(shù),提高了物理寄存器的利用率,進(jìn)而提高了動態(tài)二進(jìn)制翻譯虛擬機(jī)的性能。

又例如,以上述移位操作為例,輸出寄存器號為寄存器5,可以復(fù)用的輸入寄存器號為寄存器3或者寄存器4,則,先為寄存器3分配一個物理寄存器號,記為物理寄存器2,為寄存器4分配一個物理寄存器,記為物理寄存器3,然后,將輸入寄存器號和可復(fù)用的輸出寄存器號分配為同一個物理寄存器號,即,可以直接將寄存器5分配為物理寄存器2或者物理寄存器3,這樣,可以避免為寄存器5分配一個新的物理寄存器,減少了不必要的寄存器分配次數(shù),提高了物理寄存器的利用率,進(jìn)而提高了動態(tài)二進(jìn)制翻譯虛擬機(jī)的性能。

本實施例提供了一種寄存器的分配方法,應(yīng)用于動態(tài)二進(jìn)制翻譯中,包括:在微指令定義階段,為微指令生成寄存器復(fù)用信息,在微指令分析階段,根據(jù)寄存器復(fù)用信息,獲得輸出寄存器號以及輸出寄存器號復(fù)用的輸入寄存器號,在微指令寄存器分配階段,將輸入寄存器號和輸出寄存器號分配為同一個物理寄存器號。本實施例提供的寄存器的分配方法,通過將輸出寄存器復(fù)用輸入寄存器,為可復(fù)用的輸出寄存器和輸入寄存器分配同一個物理 寄存器,減少了不必要的寄存器分配次數(shù),提高了寄存器的利用率,進(jìn)而提高了動態(tài)二進(jìn)制翻譯虛擬機(jī)的性能。

圖2為本發(fā)明實施例一提供的寄存器的分配裝置的結(jié)構(gòu)示意圖,本實施例提供的寄存器的分配裝置,用以執(zhí)行圖1所示實施例提供的寄存器的分配方法。如圖2所示,本實施例提供的寄存器的分配裝置,用于動態(tài)二進(jìn)制翻譯中,可以包括:

指令定義模塊11,用于在微指令定義階段,為微指令生成寄存器復(fù)用信息。其中,微指令中包括輸入操作數(shù)和輸出操作數(shù),寄存器復(fù)用信息用于指示為輸出操作數(shù)分配的輸出寄存器復(fù)用為輸入操作數(shù)分配的輸入寄存器。

指令分析模塊13,用于在微指令分析階段,根據(jù)指令定義模塊11生成的寄存器復(fù)用信息,獲得輸出寄存器號以及輸出寄存器號復(fù)用的輸入寄存器號。

寄存器分配模塊15,用于在微指令寄存器分配階段,將指令分析模塊13獲得的輸入寄存器號和輸出寄存器號分配為同一個物理寄存器號。

可選的,寄存器復(fù)用信息可以為復(fù)用序號K,復(fù)用序號K用于指示輸出寄存器復(fù)用第K個輸入寄存器,其中,K為大于等于1的整數(shù)。

可選的,寄存器復(fù)用信息可以為復(fù)用標(biāo)識,復(fù)用標(biāo)識用于指示輸出寄存器復(fù)用任意一個輸入寄存器。

可選的,微指令具體可以為:加法指令、減法指令、移位指令和取補指令。

本實施例提供了一種寄存器的分配裝置,動態(tài)二進(jìn)制翻譯中,包括:指令定義模塊、指令分析模塊和寄存器分配模塊,其中,令定義模塊用于在微指令定義階段,為微指令生成寄存器復(fù)用信息,指令分析模塊用于在微指令分析階段,根據(jù)寄存器復(fù)用信息,獲得輸出寄存器號以及輸出寄存器號復(fù)用的輸入寄存器號,寄存器分配模塊用于在微指令寄存器分配階段,將輸入寄存器號和輸出寄存器號分配為同一個物理寄存器號。本實施例提供的寄存器的分配裝置,通過將輸出寄存器復(fù)用輸入寄存器,為可復(fù)用的輸出寄存器和輸入寄存器分配同一個物理寄存器,減少了不必要的寄存器分配次數(shù),提高了寄存器的利用率,進(jìn)而提高了動態(tài)二進(jìn)制翻譯虛擬機(jī)的性能。

最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對 其限制;盡管參照前述各實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
曲沃县| 碌曲县| 正安县| 西青区| 四会市| 大方县| 安仁县| 新竹市| 特克斯县| 衡阳市| 云梦县| 两当县| 岚皋县| 满洲里市| 新乡市| 广昌县| 长兴县| 克山县| 兴安盟| 普格县| 安丘市| 藁城市| 瑞安市| 大化| 都昌县| 镇宁| 兰州市| 香港| 汝州市| 科尔| 玛多县| 财经| 泌阳县| 沈丘县| 搜索| 淮阳县| 贵港市| 九龙城区| 宜都市| 德钦县| 穆棱市|