亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

改變代碼生成模式的方法

文檔序號:6537210閱讀:179來源:國知局
專利名稱:改變代碼生成模式的方法
背景技術(shù)
發(fā)明領(lǐng)域本發(fā)明涉及計算機(jī)系統(tǒng),尤其涉及用于提高動態(tài)地將指令從目標(biāo)指令轉(zhuǎn)換到主機(jī)指令集的微處理器的操作效率的方法。
現(xiàn)有技術(shù)的歷史最近,開發(fā)了一種新的微處理器,它將一個簡單但快速的主機(jī)處理器(被稱作“變體主機(jī)(morph host)”)和軟件(被稱作“代碼變體軟件”)組合起來,以便執(zhí)行為“目標(biāo)”處理器設(shè)計的應(yīng)用程序,該目標(biāo)處理器具有與變體主機(jī)處理器的指令集不同的指令集。變體主機(jī)處理器執(zhí)行代碼變體軟件,該軟件將應(yīng)用程序轉(zhuǎn)換成實現(xiàn)原來的目標(biāo)軟件的目的的變體主機(jī)處理器指令。當(dāng)轉(zhuǎn)換目標(biāo)指令時,新的主機(jī)指令被執(zhí)行并被存儲在轉(zhuǎn)換緩沖器中,在那里,它們可以被存取而無須進(jìn)一步轉(zhuǎn)換。雖然程序的開始轉(zhuǎn)換緩慢,但是,一旦轉(zhuǎn)換成功,硬件執(zhí)行程序通常所需的許多步驟就被取消了。新的微處理器已經(jīng)證明,設(shè)計成的功耗很少的簡單的快速處理器能夠以等同于“目標(biāo)”處理器(程序為它而設(shè)計)的速率來執(zhí)行轉(zhuǎn)換的“目標(biāo)”指令。
為了能夠以快速率運行為其他處理器設(shè)計的程序,變體主機(jī)處理器包括許多硬件改進(jìn)。這些改進(jìn)中的一個改進(jìn)是門控存儲緩沖器,它位于主機(jī)存儲器與轉(zhuǎn)換緩沖器之間。第二項改進(jìn)是一套主機(jī)寄存器(除了正常工作的寄存器以外),它們存儲目標(biāo)處理器的已知狀態(tài),指任何序列的目標(biāo)指令在被轉(zhuǎn)換之前存在的狀態(tài)。執(zhí)行各個序列的變體主機(jī)指令時生成的內(nèi)存存儲被放置在門控存儲緩沖器中。如果變體主機(jī)指令的執(zhí)行沒有出現(xiàn)例外,則該序列指令開始時的目標(biāo)狀態(tài)被更新到該序列完成點處的目標(biāo)狀態(tài),內(nèi)存存儲被記住。
讀者將注意到,新的微處理器執(zhí)行處理轉(zhuǎn)換所用的方法,即把由執(zhí)行而生成的效果放置在臨時存儲器中直到執(zhí)行完成轉(zhuǎn)換為止的方法,是推測的一種非??焖儆行У姆椒ā嶋H上,新的微處理器使用相同的線路,用于推測其他操作的結(jié)果。例如,通過臨時保存來自自然轉(zhuǎn)換的指令的一個軟件調(diào)度程序重新安排指令的執(zhí)行結(jié)果,與現(xiàn)有技術(shù)的嘗試相比,可以實現(xiàn)更積極進(jìn)取的重新安排。當(dāng)這種被重新安排的序列的指令執(zhí)行以產(chǎn)生一個正確的結(jié)果時,由執(zhí)行被重新安排的序列產(chǎn)生的內(nèi)存存儲可以被記住,目標(biāo)狀態(tài)可以被更新。如果被重新安排的序列在執(zhí)行時生成例外,那么,處理器的狀態(tài)可以被返回序列開始時的目標(biāo)狀態(tài)并且采用一種更保守的方法來轉(zhuǎn)換序列。
新的微處理器最有利的特點中的一個特點是它鏈接長序列的轉(zhuǎn)換指令的能力。一旦短序列的目標(biāo)指令已被轉(zhuǎn)換并被發(fā)現(xiàn)執(zhí)行沒有例外,就可以鏈接大量這些短序列,以便形成長序列的指令。這使得可以高速執(zhí)行一個轉(zhuǎn)換程序,因為微處理器不需要經(jīng)歷通常由硬件處理器采取的所有步驟(例如,查找每個較短的轉(zhuǎn)換序列)來執(zhí)行指令。甚至可以達(dá)到比可能預(yù)期的更高的速度,因為一旦長序列被鏈接,優(yōu)化器就經(jīng)??梢匀∠麃碜蚤L序列的許多步驟,而不改變產(chǎn)生的結(jié)果。硬件優(yōu)化器從未能夠優(yōu)化足夠長的各個序列的指令,以便允許各模式使重要的優(yōu)化的能夠變得顯而易見。
新的處理器所出現(xiàn)的一個問題涉及只被執(zhí)行很少次數(shù)的那些目標(biāo)應(yīng)用的那些指令。例如,某一特定的應(yīng)用程序所需的初始化操作指令,經(jīng)常是只有當(dāng)該應(yīng)用初次調(diào)用時才被執(zhí)行;終止應(yīng)用程序所需操作的指令,經(jīng)常只是當(dāng)實際上終止程序時才執(zhí)行。但是,新的處理器通常按相同的方式來對待所有的指令。它為目標(biāo)指令解碼,取出執(zhí)行目標(biāo)指令為其設(shè)計的功能的原始主機(jī)指令,進(jìn)行一個很通用的優(yōu)化程序,然后將被轉(zhuǎn)換和被優(yōu)化的指令存儲在轉(zhuǎn)換高速緩沖存儲器中。當(dāng)新的處理器的操作繼續(xù)進(jìn)行時,各個序列的轉(zhuǎn)換指令相互鏈接并被進(jìn)一步優(yōu)化;較長序列的被鏈接指令被存儲在轉(zhuǎn)換緩沖器中。最后,大批轉(zhuǎn)換指令被存儲為特大批的主機(jī)指令。當(dāng)在特定的主機(jī)指令或一套被鏈接指令在執(zhí)行期間發(fā)生例外時,新的處理器履行返回目標(biāo)處理器的最近正確狀態(tài)的進(jìn)程,然后把目標(biāo)指令的單步轉(zhuǎn)換從最近正確狀態(tài)的點提供到例外再次發(fā)生的點。這些轉(zhuǎn)換也被存儲在轉(zhuǎn)換高速緩沖存儲器中。Kelly等人于1998年11月3日授權(quán)的5,832,205號美國專利中詳細(xì)描述了這種新的處理器,該專利已被轉(zhuǎn)讓給本發(fā)明的授讓人。
雖然這個過程創(chuàng)建了快速執(zhí)行的代碼,但是,該過程所擁有的許多效果會限制可達(dá)到的總速度,并可能引起其他不合乎需要的效果。首先,該過程要求大量轉(zhuǎn)換指令的存儲容量。很多時候,一套相同的目標(biāo)指令存在許多不同的轉(zhuǎn)換,因為各個序列從不同的支路被輸入。一旦被存儲,轉(zhuǎn)換指令就占據(jù)這個存儲器,直到為某種肯定的原因被除去為止。其次,如果一系列指令將只被運行一次,則轉(zhuǎn)換和優(yōu)化所需的時間可能比執(zhí)行最初目標(biāo)指令的逐步轉(zhuǎn)換所需的時間要多許多。這引起新的處理器的平均速度的降低。
由于這些原因,原來的處理器被修改,以便包括一個解釋程序(作為代碼變體軟件的一部分),該解釋程序?qū)崿F(xiàn)每個目標(biāo)指令的逐步轉(zhuǎn)換。雖然有許多可能的實施例,但是,解釋程序本質(zhì)上取出一個目標(biāo)指令,為該指令解碼,提供一個主機(jī)過程以便實現(xiàn)目標(biāo)指令的目的,并執(zhí)行該主機(jī)過程。當(dāng)完成解釋和執(zhí)行一個目標(biāo)指令時,解釋程序進(jìn)行到下一個目標(biāo)指令。這個過程實質(zhì)上一步步通過對目標(biāo)指令的解釋和執(zhí)行。當(dāng)每個目標(biāo)指令被解釋和執(zhí)行時,目標(biāo)處理器的狀態(tài)被更新。由解釋程序產(chǎn)生的主機(jī)指令通常是不存儲在轉(zhuǎn)換高速緩沖存儲器中的,因此,在不執(zhí)行鏈接后,可以實行鏈接和進(jìn)一步的優(yōu)化。解釋程序為該序列的目標(biāo)指令的剩余部分繼續(xù)進(jìn)行這個過程。
一般而言,確定直至對任一序列中的指令進(jìn)行了某一數(shù)量的執(zhí)行,所有以前的解釋和執(zhí)行所需的時間才等同于轉(zhuǎn)換和優(yōu)化該序列所需的時間。所以,對于在某一應(yīng)用程序的執(zhí)行過程中很少被使用的指令,經(jīng)常需要使用解釋程序,而不是翻譯程序軟件。這樣,通過只解釋和不轉(zhuǎn)換該序列,只運行一次的一系列指令經(jīng)??梢缘玫礁谩⒏杆俚奶幚?。
為了利用這個優(yōu)點,只要一系列目標(biāo)指令首先被遇到,就可修改被改善的處理器,以便使用該解釋程序。解釋程序軟件與一個計數(shù)器關(guān)聯(lián),該計數(shù)器跟蹤執(zhí)行各個序列的指令的次數(shù)。每當(dāng)遇到該序列時,就可以運行解釋程序,直到已執(zhí)行該序列某些次數(shù)而不產(chǎn)生例外為止。當(dāng)目標(biāo)指令在特定的序列期間已被解釋和執(zhí)行了所選的次數(shù)時,代碼變體軟件從解釋程序轉(zhuǎn)換到翻譯程序及其附帶的優(yōu)化與存儲過程。#當(dāng)發(fā)生這種情況時,將已經(jīng)發(fā)生足夠數(shù)量的執(zhí)行,從而可能再次出現(xiàn)指令的執(zhí)行,被存儲的優(yōu)化轉(zhuǎn)換將會提供總體上速度大大加快的應(yīng)用程序的執(zhí)行。
當(dāng)代碼變體軟件切換到正常的轉(zhuǎn)換過程時,轉(zhuǎn)換被優(yōu)化并被存儲在轉(zhuǎn)換高速緩沖存儲器中。其后,該轉(zhuǎn)換可以被進(jìn)一步優(yōu)化并被鏈接到其他的轉(zhuǎn)換,以便可以獲得從這些過程實現(xiàn)的非常高速度的執(zhí)行。
被改善的處理器的一個特別有用的實施例記錄與解釋程序執(zhí)行目標(biāo)指令的次數(shù)有關(guān)的數(shù)據(jù),該執(zhí)行只在指令中產(chǎn)生支路的各個點處進(jìn)行。解釋程序一步步通過各種目標(biāo)指令,直到產(chǎn)生一個支路。當(dāng)發(fā)生一個支路指令時,記錄有關(guān)該特定支路指令(具有特定內(nèi)存地址的指令)的統(tǒng)計數(shù)字。由于從一個序列的開端直到支路的所有目標(biāo)指令都將只按連續(xù)的順序加以執(zhí)行,因此,在支路的點之前不需要保存記錄,并且取消與轉(zhuǎn)換高速緩沖存儲器的存儲有關(guān)的大量步驟。
而且,如果除特定目標(biāo)指令已被執(zhí)行的次數(shù)以外,解釋程序還被用來收集統(tǒng)計數(shù)字,則可以獲得額外的重要優(yōu)點。例如,如果目標(biāo)指令包括一個支路,則對其分支的指令的地址與支路已被執(zhí)行的次數(shù)可以一起被記錄下來。然后,當(dāng)許多連續(xù)的目標(biāo)指令由解釋程序來執(zhí)行時,將會會建立起分支的歷史和支路地址。這些統(tǒng)計數(shù)字可以被用來確定特定序列的指令是否可能將成為特大批轉(zhuǎn)換指令。通過使用這些統(tǒng)計數(shù)字,特定序列的指令在被執(zhí)行很多次數(shù)之后可以被推測為是一個特大批指令。在進(jìn)行了選擇次數(shù)的解釋之后,該序列可以被轉(zhuǎn)換、被優(yōu)化、通過各種支路被鏈接而不必經(jīng)歷一項分開的鏈接操作,并且這樣被存儲在轉(zhuǎn)換高速緩沖存儲器中。如果推測是正確的,則在處理指令的過程中節(jié)省了大量時間。如果不正確,則操作只產(chǎn)生將代碼變體軟件返回解釋程序的例外。
解釋程序不僅用于為很少使用的序列生成主機(jī)代碼,它也用于處理例外的過程中。只要被修改的處理器在執(zhí)行任何被轉(zhuǎn)換的目標(biāo)應(yīng)用時遇到一個目標(biāo)例外,代碼變體軟件就使目標(biāo)處理器的最近已知的正確狀態(tài)發(fā)生重新運行。然后,使用代碼變體軟件的解釋程序部分(而非翻譯程序部分),來提供主機(jī)指令。解釋程序一步步通過目標(biāo)指令的生成和執(zhí)行。當(dāng)每個目標(biāo)指令被解釋和執(zhí)行時,目標(biāo)處理器的狀態(tài)被更新為最新狀態(tài)。
解釋程序為該序列的目標(biāo)指令的剩余部分繼續(xù)進(jìn)行這個過程,直到再次出現(xiàn)例外。在這一點上,目標(biāo)處理器的狀態(tài)對于解釋的狀態(tài)而言是正確的,以便可以正確、迅速地處理該例外。因為解釋過程是如此簡單,所以,確定目標(biāo)例外的發(fā)生點的過程要大大快于由轉(zhuǎn)換過程執(zhí)行的這種點的確定,這種點經(jīng)歷上述的轉(zhuǎn)換和優(yōu)化過程,然后被存儲在轉(zhuǎn)換高速緩沖存儲器中。
通過將解釋程序與優(yōu)化翻譯程序(用作各個序列的轉(zhuǎn)換指令的動態(tài)編輯器)組合,代碼變體軟件除去許多對新的處理器高速執(zhí)行目標(biāo)應(yīng)用程序的限制。使用解釋程序來處理指令的早期執(zhí)行取消了優(yōu)化在應(yīng)用程序執(zhí)行期間很少被使用的指令的需求,從而提高了運算的速度。將這些很少被使用的指令存儲在轉(zhuǎn)換高速緩沖存儲器中的需求減少了對存儲的要求,并且無需放棄許多轉(zhuǎn)換指令。使用解釋程序來處理例外產(chǎn)生了與使用翻譯程序相同的有用效果,但卻加快了操作,減少了存儲要求。
R.Bedichek等人于同日申請?zhí)峤徊⑥D(zhuǎn)讓給本發(fā)明的授讓人的美國專利申請_______“Method For Integration Of Interpretation And Translation In AMicroprocessor”中詳細(xì)描述了這種改進(jìn)的處理器。
即使解釋程序和翻譯程序的組合用于大大改善獨特的微處理器的操作,在操作過程中也仍然留有一些問題。一般可以將這些問題描述為不能最適宜地使用這兩種功能。由于由任何應(yīng)用程序中的各個序列的指令執(zhí)行的操作的類型非常多,因此,很難確定到哪個點應(yīng)該結(jié)束解釋和開始轉(zhuǎn)換。已經(jīng)被解釋足夠次數(shù)的待轉(zhuǎn)換的過程經(jīng)常不再被使用,所以,代碼只占據(jù)轉(zhuǎn)換高速緩沖存儲器中的空間。其他過程經(jīng)常被再使用。移動轉(zhuǎn)換開始處的點似乎不能解決這個問題。
人們希望提高改進(jìn)的微處理器的運算速度,以便通過修改用于控制使用代碼變體軟件的解釋程序和翻譯程序軟件的處理器,它可以更快速地加以執(zhí)行。
發(fā)明概述所以,本發(fā)明的目的是提供一種更快的微處理器,它可與設(shè)計用于其它微處理器的應(yīng)用程序和操作系統(tǒng)兼容,并且能夠運行這些程序和操作系統(tǒng)。
本發(fā)明的這個目的和其他目的是通過一種方法來實現(xiàn)的,該方法用于確定一個過程,該過程用于將目標(biāo)指令集中的指令轉(zhuǎn)換成主機(jī)指令集中的指令,它包括以下步驟執(zhí)行包括解釋程序和翻譯程序的代碼變體軟件,以提供來自目標(biāo)指令的主機(jī)指令;間歇檢測正在執(zhí)行的是解釋程序還是翻譯程序;如果正在執(zhí)行解釋程序,則增加一個計數(shù),如果正在執(zhí)行翻譯程序,則減少該計數(shù);以及,當(dāng)該計數(shù)達(dá)到一個選擇的最大限度時,從解釋一系列目標(biāo)指令變成轉(zhuǎn)換(翻譯(translate))一系列目標(biāo)指令。
通過參考以下詳細(xì)的描述并結(jié)合附圖,將會更好地理解本發(fā)明的這些和其他的目的與優(yōu)點。在附圖中,相同的元件用相同的符號表示。
附圖簡述

圖1是本發(fā)明的第一個實施例的流程圖。
圖2是本發(fā)明的第二個實施例的流程圖。
詳細(xì)描述本發(fā)明不是只計數(shù)一系列目標(biāo)指令在被轉(zhuǎn)換和優(yōu)化之前被解釋的次數(shù),而是嘗試在該過程中引入某些智能。本發(fā)明通過使用嘗試維持由系統(tǒng)設(shè)計者所選的解釋數(shù)量與轉(zhuǎn)換數(shù)量之間的一種平衡,來實現(xiàn)這一點。
在圖1所示的本發(fā)明基本實施例中,確定與轉(zhuǎn)換目標(biāo)指令中所用的時間數(shù)量形成對比的解釋目標(biāo)指令中所用的時間數(shù)量。如果解釋所用的時間太多,那么,處理器只是切換到轉(zhuǎn)換。當(dāng)代碼變體軟件通過解釋或轉(zhuǎn)換正在將各個序列的目標(biāo)指令轉(zhuǎn)換成各個序列的主機(jī)指令并且正在執(zhí)行那些被轉(zhuǎn)換的序列時,本發(fā)明的過程本質(zhì)上測試在每次解釋與轉(zhuǎn)換過程中所用的時間數(shù)量,以便確定解釋正在使用的時間是否太多了。使用這個新過程允許各項操作由處理器來執(zhí)行,以便確定正在使用的指令轉(zhuǎn)換的方法是否適宜于加速處理器的總體操作。
執(zhí)行測試操作的一個實施例使用定時器來選擇測試正在由代碼變體軟件運行的特殊操作的時間間隔。例如,操作每千分之一秒可以被測試一次,以便確定正在運行的是解釋程序還是翻譯程序。從統(tǒng)計方面來講,在正在使用額外的時間和由解釋程序進(jìn)行轉(zhuǎn)換的時期,測試本身更有可能發(fā)生。向計數(shù)器提供每次詢問的結(jié)果,在每次判斷是解釋程序在運行時,計數(shù)器進(jìn)行上行計數(shù),而當(dāng)每次判斷是翻譯程序在運行時,計數(shù)器作下行計數(shù)。如果計數(shù)達(dá)到最大限度,則不管正在被轉(zhuǎn)換的是什么序列的指令,在下一次執(zhí)行該序列的指令時將軟件操作從解釋切換到轉(zhuǎn)換。這有助于增加正在被執(zhí)行的轉(zhuǎn)換的數(shù)量(與解釋比較)并加速了執(zhí)行。另一方面,只要計數(shù)器沒有達(dá)到最大限度,根據(jù)目標(biāo)指令生成主機(jī)指令的操作就會繼續(xù),而不會發(fā)生變化。
一般而言,這種測試的方法確定與轉(zhuǎn)換對比而言,處理器的軟件執(zhí)行的解釋是否太多了。計數(shù)器被設(shè)置成的最大值可以根據(jù)本發(fā)明來選擇,以便體現(xiàn)被確定為最好地使用處理器所需的解釋操作的數(shù)量。例如,如果需要更多的解釋,則選擇一個較高的最大值;而如果需要更多的轉(zhuǎn)換,則選擇一個較低的最大值。也可以對于解釋和轉(zhuǎn)換有差別地加權(quán)詢問的結(jié)果。例如,發(fā)現(xiàn)正在運行解釋的一項測試可能會使計數(shù)增加1,而發(fā)現(xiàn)正在運行轉(zhuǎn)換的一項測試則可能會使計數(shù)只減少1/2。被加權(quán)以支持過程中的一個過程或另一個過程的其他值可能也根據(jù)系統(tǒng)設(shè)計者所需的結(jié)果來被加以使用。在解釋與轉(zhuǎn)換之間進(jìn)行切換的這種方法與在切換到轉(zhuǎn)換之前就簡單地對某一特定的操作的次數(shù)進(jìn)行解釋相比,要準(zhǔn)確得多。
本發(fā)明的另一個實施例通過使用由執(zhí)行所設(shè)置數(shù)量的指令確定的一個間隔(而非一個時間間隔),來實現(xiàn)測試。這個實施例比使用定時間隔的實施例更可能提供有關(guān)解釋程序正在操作的時間百分比的精確信息,因為它將指令與指令進(jìn)行比較,而不是將指令與時間進(jìn)行比較。這個實施例要求使用一個單一的計數(shù)器來測量由主機(jī)執(zhí)行的指令的數(shù)目。在所設(shè)置數(shù)量的指令已經(jīng)被執(zhí)行之后,代碼變體軟件測試操作過程,以便確定正在運行的是解釋程序還是翻譯程序。過程的剩余部分按與實施例使用定時間隔相同的方式來加以執(zhí)行,以便確定什么時候進(jìn)行測試來確定過程是解釋還是轉(zhuǎn)換。
圖2所示的本發(fā)明的一個高級實施例使用上述專利申請中所揭示的計算方法和測試時間間隔以確定哪個過程正在被執(zhí)行的方法的組合。經(jīng)常采用計數(shù)和間隔測試方法,而轉(zhuǎn)換過程繼續(xù)進(jìn)行。計數(shù)方法計數(shù)每個特殊序列的指令被解釋的次數(shù),并且當(dāng)已無誤地執(zhí)行規(guī)定數(shù)量的序列的解釋時,切換到該序列的轉(zhuǎn)換。計數(shù)方案能夠非常快速地確定密封回路(tight loops)等短過程什么時候已經(jīng)運行了一定的次數(shù)和什么時候應(yīng)該被轉(zhuǎn)換。時間間隔測試方法同時用于確定轉(zhuǎn)換的總體操作是否正在將太多的時間用于解釋。確定何時在轉(zhuǎn)換過程之間進(jìn)行切換的時間間隔測試方法能夠比計數(shù)方法更快速地檢測較長序列的指令什么時候正在被解釋,并因此為這些序列更快地切換到轉(zhuǎn)換。
本發(fā)明的更加高級的實施例可以使用原來的計數(shù)方法和時間間隔測試方法的另一個組合。尤其是,這樣一種實施例可以提供計數(shù)指令被解釋的次數(shù),直到相同的指令已經(jīng)被解釋所選擇的次數(shù)為止。在這個計數(shù)過程中,實現(xiàn)對該序列被解釋的次數(shù)的計數(shù),可以為每個序列保存統(tǒng)計數(shù)字。一旦已達(dá)到最大的計數(shù),代碼變體軟件就變換到轉(zhuǎn)換過程。在相同的時期內(nèi),代碼變體軟件可以繼續(xù)按時間間隔測試主機(jī)處理器正在轉(zhuǎn)換所有指令的模式,以便確定轉(zhuǎn)換過程是否應(yīng)該從解釋被切換到轉(zhuǎn)換。當(dāng)滿足任何一項測試時,代碼變體軟件從解釋特定的序列切換到轉(zhuǎn)換特定的序列。但是,所實現(xiàn)的轉(zhuǎn)換可能不是最佳的,因此迅速被完成。例如,轉(zhuǎn)換過程可能進(jìn)行轉(zhuǎn)換和重新安排,以便支持某一特定支路,而沒有對其他序列的任何鏈接。當(dāng)執(zhí)行適當(dāng)被轉(zhuǎn)換的過程時,軟件也可以使用計數(shù)測試和收集支路統(tǒng)計數(shù)字,但要在較長的時期內(nèi),以便可以導(dǎo)出有關(guān)被轉(zhuǎn)換序列的實際操作的更多知識。這些統(tǒng)計數(shù)字對于確定更多優(yōu)化轉(zhuǎn)換應(yīng)該采取的形式非常有用。或者/此外,代碼變體軟件可以按時間間隔繼續(xù)測試主機(jī)處理器正在轉(zhuǎn)換所有指令的模式,以便確定轉(zhuǎn)換是否應(yīng)該從適度轉(zhuǎn)換過程被切換到更徹底的轉(zhuǎn)換過程(例如,涉及序列鏈接和跨越鏈接序列的優(yōu)化的重大數(shù)量的過程)。如果測試過程在一個測試點(其處,一個最小的轉(zhuǎn)換正在執(zhí)行)達(dá)到最大限度,過程切換到具有更高級的優(yōu)化的轉(zhuǎn)換,該優(yōu)化由更多的累積支路統(tǒng)計數(shù)字控制??梢詫Ρ景l(fā)明的過程進(jìn)行許多修改。從理論上講,沒有理由不能使用測試期間的不同層次來執(zhí)行任何數(shù)量的轉(zhuǎn)換的中間步驟,以便確定是否切換到下一個層次的轉(zhuǎn)換。
雖然上文中已根據(jù)一個較佳實施例描述了本發(fā)明,但是,讀者將理解,在不脫離本發(fā)明的精神和范圍的前提下,本領(lǐng)域中的普通技術(shù)人員可以進(jìn)行各種修改和變化。所以,本發(fā)明應(yīng)該按以下的權(quán)利要求來衡量。
權(quán)利要求
1.用于在計算機(jī)中的各種轉(zhuǎn)換過程之間轉(zhuǎn)換的一種方法,它將指令從目標(biāo)指令集轉(zhuǎn)換到主機(jī)指令集,其特征在于,它包括以下步驟執(zhí)行包括解釋程序和翻譯程序的代碼變體(morphing)軟件,以便從目標(biāo)指令生成主機(jī)指令,按時間間隔檢測正在操作的是解釋程序還是翻譯程序,如果正在操作的是解釋程序,則增加計數(shù),而如果正在操作的是翻譯程序,則減少計數(shù),以及當(dāng)計數(shù)達(dá)到所選的最大限度時,從解釋一系列目標(biāo)指令變成轉(zhuǎn)換一系列目標(biāo)指令。
2.如權(quán)利要求1所述的方法,其特征在于,所述時間間隔是選擇的時間區(qū)間。
3.如權(quán)利要求1所述的方法,其特征在于,所述時間間隔是所選數(shù)量被執(zhí)行的目標(biāo)指令。
4.如權(quán)利要求1所述的方法,其特征在于,檢測解釋程序時所增加的計數(shù)的數(shù)量是可選擇的。
5.如權(quán)利要求1所述的方法,其特征在于,檢測翻譯程序時所減少的計數(shù)的數(shù)量是可選擇的。
6.如權(quán)利要求1所述的方法,其特征在于,它還包括以下步驟對一系列指令被解釋的每一種情況計數(shù),當(dāng)情況的計數(shù)達(dá)到選擇的最大限度時,從解釋一系列目標(biāo)指令變成翻譯一系列目標(biāo)指令。
7.如權(quán)利要求7所述的方法,其特征在于,它還包括以下步驟收集有關(guān)每一系列的指令的統(tǒng)計數(shù)字,以及根據(jù)所收集的統(tǒng)計數(shù)字來優(yōu)化一系列指令的翻譯。
8.如權(quán)利要求1所述的的方法,其特征在于,當(dāng)所述計數(shù)達(dá)到選擇的最大限度時從解釋一系列目標(biāo)指令變成翻譯一系列目標(biāo)指令的步驟包括采用有限最佳方法進(jìn)行翻譯,并且還包括以下步驟在執(zhí)行采用有限最佳方法翻譯的一系列目標(biāo)指令時進(jìn)行測試,以便確定該序列是否應(yīng)該被進(jìn)一步優(yōu)化,以及根據(jù)所述測試再進(jìn)行翻譯和進(jìn)一步優(yōu)化。
9.如權(quán)利要求8所述的方法,其特征在于,在執(zhí)行采用有限最佳方法翻譯的一系列目標(biāo)指令時進(jìn)行的測試步驟包括對一系列指令被執(zhí)行的每一種情況計數(shù),以及當(dāng)所述情況的計數(shù)達(dá)到選擇的最大限度時,出現(xiàn)再翻譯和進(jìn)一步優(yōu)化的步驟。
10.用于優(yōu)化計算機(jī)的執(zhí)行的一種方法,它動態(tài)地將指令從目標(biāo)指令集轉(zhuǎn)換到主機(jī)指令集,其特征在于,它包括以下步驟提供多個指令轉(zhuǎn)換過程,每個指令轉(zhuǎn)換過程為從目標(biāo)指令集轉(zhuǎn)換到主機(jī)指令集的指令提供不同層次的優(yōu)化,提供用于動態(tài)地確定哪個轉(zhuǎn)換過程最好地轉(zhuǎn)換了每個序列的指令的裝置,以及使用被確定為最好地轉(zhuǎn)換了一系列的指令的轉(zhuǎn)換過程,來轉(zhuǎn)換該序列的指令。
11.如權(quán)利要求10所述的方法,其特征在于,所述轉(zhuǎn)換過程包括解釋和翻譯。
12.如權(quán)利要求10所述的方法,其特征在于,所述轉(zhuǎn)換過程包括解釋、采用最小優(yōu)化進(jìn)行的翻譯和采用高級優(yōu)化的翻譯。
13.如權(quán)利要求10所述的方法,其特征在于,用于動態(tài)地確定哪個轉(zhuǎn)換過程最好地轉(zhuǎn)換每個序列的指令的裝置取決于每個序列被特定轉(zhuǎn)換過程轉(zhuǎn)換的次數(shù)。
14.如權(quán)利要求10所述的方法,其特征在于,用于動態(tài)地確定哪個轉(zhuǎn)換過程最好地轉(zhuǎn)換了每個序列的指令的裝置取決于一個轉(zhuǎn)換過程比較另一個轉(zhuǎn)換過程而言被運行的次數(shù)的比率。
15.如權(quán)利要求10所述的方法,其特征在于,用于動態(tài)地確定哪個轉(zhuǎn)換過程最好地轉(zhuǎn)換了每個序列的指令的裝置取決于每個序列被特定轉(zhuǎn)換過程轉(zhuǎn)換的次數(shù),以及取決于一個轉(zhuǎn)換過程比較另一個轉(zhuǎn)換過程而言被運行的次數(shù)的比率。
全文摘要
一種如圖1所示確定某一過程的方法,用來將目標(biāo)指令集中的指令轉(zhuǎn)換成主指令集中的指令。該方法包含下述步驟:執(zhí)行包括解釋程序和翻譯程序的代碼變體軟件以從目標(biāo)指令生成主指令、定期檢測執(zhí)行的是解釋程序還是翻譯程序、如果執(zhí)行的是解釋程序則增大計數(shù)而如果執(zhí)行的是翻譯程序則減小計數(shù),并且當(dāng)計數(shù)值達(dá)到某一選定的最大值時,將對目標(biāo)指令序列的解釋變更成對目標(biāo)指令的翻譯。
文檔編號G06F9/45GK1379874SQ00814344
公開日2002年11月13日 申請日期2000年9月6日 優(yōu)先權(quán)日1999年10月13日
發(fā)明者L·托瓦爾德斯, H·P·安維恩 申請人:全斯美達(dá)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1