TW200834419A - Method and apparatus for administering a process filesystem with respect to program code conversion - Google Patents
Method and apparatus for administering a process filesystem with respect to program code conversion Download PDFInfo
- Publication number
- TW200834419A TW200834419A TW096136767A TW96136767A TW200834419A TW 200834419 A TW200834419 A TW 200834419A TW 096136767 A TW096136767 A TW 096136767A TW 96136767 A TW96136767 A TW 96136767A TW 200834419 A TW200834419 A TW 200834419A
- Authority
- TW
- Taiwan
- Prior art keywords
- program
- translator
- data structure
- code
- information
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
Description
200834419 九、發明說明 【發明所屬之技術領域] 本發明主要有關於電腦及電腦軟體的領域,詳言之, 有關於可用在例如轉換參照至處理過程檔案系統的程式碼 之譯碼器、仿真器及加速器中之程式碼轉換方法及設備。 【先前技術】 Φ 在整個嵌入式及非嵌入式CPU市場中常見的有指令 集架構(IS A ),其含有多種軟體,能被「加速」以提高 性能或被「轉譯」至各種可能的處理器以提供更好的成本 /性能效益,只要這些處理器能夠透通性存取相關的軟體 。然而,目前主要的CPU架構在時間上鎖定其ISA而無 法提高性能與擴張市場,因此「合成CPU」的共同架構會 有幫助。 常希望能將針對第一類型的電腦處理器(「主體( φ subject)」處理器)而寫的程式碼在第二類型的處理器( 「目標」處理器)上運作。於此,仿真器或轉譯器用來執 行程式碼的轉換,使得主體程式可在目標處理器上運作。 PCT申請案WOOO/2252 1揭露程式碼轉換方法及設備以促 進此類加速、轉譯及共同架構的能力,這些將爲本發明之 實施例所利用。 在某些操作系統中,特別包括類似Unix的操作系統 ,會提供程序檔案系統。可由一程序使用程序檔案系統以 存取有關其他程序及有關於處理器所提中硬體環境的資訊 -5- 200834419 。例如,來自昇陽微系統公司(Sun Microsystems 的所羅斯(Solaris )操作系統提供程序檔案系統, 在稱爲/proc的目錄中之虛擬檔案系統。在程序運 操作系統動態建立/pro c的內容與結構,典型上爲 現存之程序產生並維持一個子目錄。 提供如上述之程序檔案系統可能會使程式碼轉 化。舉三個明顯的例子。第一,若目標操作系統不 • 序檔案系統,但主體編碼參照至程序檔案系統則會 不相容性。 弟一 ’右目標操作系統確實提供程序檔案系統 配置與操作仍可能會與主體編碼所參照的程序檔案 相容。 第三,若目標操作系統確實提供相容的程序檔 ’則可能難以區分轉譯器程序與目標程序檔案系統 他程序。 ® 允許有關於主體程序之資訊整合至目標操作系 序檔案系統的一種作法爲變更目標處理器的操作系 更目標操作系統可改變目標程序檔案系統建構與管 式,並且藉由建立核心(kernel )模組並將其安插 操作系統中來達成,或藉由直接變更目標操作系統 碼來達成。然而,變更目標操作系統爲困難度很高 ,且可能使目標操作系統變得不穩定。 提供關於主體程式碼的轉譯之管理程序檔案系 法,例如當轉譯器爲在此所述之電腦系統中的一部
Inc.) 其包含 作時由 每一個 換複雜 提供程 有固有 ,其之 系統不 案系統 中的其 統的程 統。變 理的方 至目標 的原始 的工作 統的方 分時。 -6 - 200834419 可配置能轉換主體碼至目標碼的轉譯器,而得以辨別出主 體程式中對於主體程序檔案系統的參照,並產生目標碼。 所產生的目標碼能使轉譯器以與主體處理器之預期的行爲 一致之方式參照並提供程序資訊,改善轉譯器操作於其上 之電腦系統的操作。 本發明之較佳實施例使轉譯器能方便地管理主體程序 資訊,而不需變更目標操作系統。這可避免目標操作系統 不穩定,並允許轉譯器在轉譯期間正確地處理潛在不穩定 之主體程序的行爲。 本發明可藉此改善電腦系統的性能,例如當系統正進 行程式碼轉換時。 【發明內容】 根據本發明,提供在所附之申請專利範圍所提出之設 備及方法。本發明之較佳實施例在附屬項中及如下之說明 更爲明顯。 在一範例態樣中,提供一種電腦設備,包含:目標處 理器以及轉譯器程序,其係回應於用於在主體處理器上執 行的已接收之主體碼指令而建立;其中該轉譯器程序配置 成:(a )以有關該已建立之轉譯器程序的資訊塡充程序 資料結構以及(b )回應於已接收的主體碼中對於主體程 序檔案系統中的資訊所作的參照而參照茧步驟(a )之該 程序資料結構。 該轉譯器程序可配置成建立進一步的轉譯器程序’以 200834419 回應於各已接收之主體碼指令,當在主體處理器上執行該 主體碼指令時會建立主體程序。複數個轉譯器程序的各轉 譯器程序可塡充及參照共同的程序資料結構。程序資料結 構適當地包含下列之一或兩者:(a)各轉譯器程序可存 取之目錄以及(b)各轉譯器程序可存取之共享的記憶體 區域。該電腦設備可進一步包含監查器,其配置成檢查轉 譯器程序之狀態,該轉譯器程序之資訊係存在於該程序資 料結構中,以及從該程序資料結構移除有關於不再運作之 轉譯器程序的資訊。 在另一範例態樣中,提供一種關於程式碼轉換之管理 程序檔案系統之方法,該程式碼轉換係將用於在主體處理 器上執行之主體碼程序碼轉換成用於在目標處理器上執行 之目標碼,該方法包含下列步驟:(a )建立轉譯器程序 ,以回應於已接收之主體碼指令,當在主體處理器上執行 該主體碼指令時會建立主體程序、(b)以有關於回應於 該已接收之主體碼而建立之一或更多轉譯器程序的資訊塡 充該轉譯器程序可存取的程序資料結構以及(c )回應於 在已接收的主體碼中對於主體程序檔案系統中的資訊之參 照而參照至於步驟(b)中塡充之該資料結構。 該方法可進一步包含檢查其之資訊儲存於該程序資料 結構中之程序的狀態,以及從該程序資料結構移除有關於 不再運作之轉譯器程序的資訊之步驟,例如藉由週期性執 行檢查其之資訊儲存於該資料結構中之程序的狀態。該方 法可進一步包含下列步驟:(d )記錄對該程序資料結構 -8- 200834419 中之資訊已作出的參照,其係藉由記錄作出該參照之該轉 譯器程序的識別符,以及其之資訊被參照之該轉譯器程序 的識別符。該方法可進一步包含當其之資訊被參照之該轉 譯器程序不再運作時從該程序資料結構移除於步驟(d) 所記錄之該資料的步驟。 在另一態樣中,提供一種電腦可讀取媒體,具有可由 電腦實施以執行管理與將用於在主體處理器上執行之主體 φ 碼程序碼轉換成用於在目標處理器上執行之目標碼有關的 檔案系統之方法,該方法包含下列步驟:(a )建立轉譯 器程序,以回應於已接收之主體碼指令,當在主體處理器 上執行該主體碼指令時會建立主體程序、(b)以有關於 回應於該已接收之主體碼而建立之一或更多轉譯器程序的 資訊塡充該轉譯器程序可存取的程序資料結構以及(c ) 回應於在已接收的主體碼中對於主體程序檔案系統中的資 訊之參照而參照至於步驟(b )中塡充之該資料結構。 • 在又一態樣中,提供一種轉譯器設備,配置成接收用 於在主體處理器上執行之主體碼以及產生用於在目標處理 器上執行之目標碼;其中該轉譯器配置成:(a )以有關 於回應於該已接收之主體碼而建立之一或更多轉譯器程序 的資訊塡充程序資料結構以及(b )回應於在已接收的主 體碼中對於主體程序檔案系統中的資訊之參照而參照至步 驟(a )之該程序資料結構。 提供上述依照根據本發明之用於程式碼轉換的改良架 構之各種實施例可實現之各種態樣及優點之發明內容,作 -9- 200834419 爲幫助熟悉該項技藝者更迅速理解本發明之詳細討論之介 紹,故並非也不意圖以任何方式限制所附之申請專利細圍 的範疇。 【實施方式】 提供下列說明以使熟悉該項技藝者得以製造並使用本 發明,並且提出發明人認爲係最佳實施發明之模式。然而 ,對熟悉該項技藝者而言各種的變更爲顯而易見,因爲已 在此特別界定出本發明之主要原則以提供改善的程式碼轉 換方法。 參照第1圖,主體程式17係意圖在具有主體處理器 3之主體運算平台1上執行。然而,取而代之地目標運算 平台1 〇用來經由執行程式碼轉換之轉譯器單元1 9執行主 體程式1 7。轉譯器單元1 9執行從主體碼1 7至目標碼2 1 的編碼轉換,使得目標碼21可在目標運算平台10上執行 〇 熟悉該項技藝者所熟悉地,主體處理器3具有一組主 體暫存器5。主體記憶體8保持主體碼17及主體操作系 統2等等。類似地,第1圖之範例目標運算平台1 〇包含 具有複數個目標暫存器15的目標處理器13以及記憶體 1 8,該記憶體1 8儲存複數個運算構件,包括目標操作系 統20、主體碼1 7、轉譯器碼1 9及經轉譯的目標碼21。 目標運算平台10典型爲應用微處理器之電腦或其他適合 的電腦。 -10- 200834419 在一實施例中,轉譯器碼19爲將一主體指令集架構 (ISA)的主體碼轉譯成另一 ISA的經轉譯目標碼之仿真 器,有或沒有最佳化。在另〜實施例中,轉譯器1 9作爲 加速器,藉由執行程式碼最佳化而將相同I S A的主體碼轉 譯成目標碼。 轉譯器碼1 9爲實行轉譯器之原始碼經適當編譯的版 本,並與操作系統20 —同在目標處理器13上運作。可理 解到第1圖中所示的結構僅爲範例性,例如根據實施例的 軟體、方法及程序可以操作系統20之內或之下的編碼實 行。主體碼1 7、轉譯器碼1 9、操作系統2 0及記憶體1 8 的儲存機制可爲熟悉該項技藝者已知的任何類型。 根據第1圖的設備中,在運作期間,動態執行程式碼 轉換,以在目標碼21運作的同時在目標架構10上執行。 亦即,轉譯器1 9與經轉譯的目標碼21並行運作。將目標 碼1 7運作經過轉譯器1 9會涉及以交錯的方式執行之兩種 不同的編碼:轉譯器碼1 9及目標碼2 1。因此,根據被轉 譯之程式的已儲存之主體碼1 7在運作期間由轉譯器碼19 來產生目標碼21。 在一實施例中,轉譯器單元19仿真主體架構1的有 關係之部分,如主體處理器3及尤其係主體暫存器5’同 時實際上在目標處理器13上將主體程式17執行爲目標碼 21。在該較佳的實施例中,提供至少一總體暫存器貯存 27 (亦稱爲主體暫存器庫27或一般暫存器庫27)。在多 處理器環境中,根據主體處理器的架構可隨意提供超過〜 -11 - 200834419 個的一般暫存器庫27。由轉譯器19及目標碼2ι的構件 來提供主體狀態的表示。亦即,轉譯器1 9在各種外顯編 程語言裝置(如變數及/或物件)中儲存主體狀態。相反 地’經轉譯的目標碼2 1則在目標暫存器1 5及記憶體位置 1 8 (其係由目標碼21的目標指令操縱)中內顯地提供主 體處理器狀態。例如,總體暫存器貯存2 7的低階表示簡 單地爲一分配的記憶體區域。然而,在轉譯器19的原始 碼中,總體暫存器貯存2 7爲可在較高階存取並操縱之資 料陣列或物件。 「基本區塊」一詞爲熟悉此技藝者所知者。基本區塊 爲具有剛好一進入點與一離開點的一段編碼,其將區塊碼 限制於單一控制路徑。由於此緣故,基本區塊爲控制流之 有用的基礎單位。適當地,轉譯器1 9將主體碼1 7分成複 數個基本區塊,其中各基本區塊爲在單一進入點的第一個 指令到單一離開點(如跳越、呼叫或分支指令)的最後一 個指令之間的序列指令集。轉譯器1 9可選擇這些基本區 塊之一(區塊模式)或選擇一群基本區塊(群區塊模式) 。群區塊適當地包含兩或更多基本區塊,將之一起視爲單 一單位。此外,轉譯器可形成同區塊(iso _bl〇cks ),表 示主體碼之相同但在不同的進入條件下的基本區塊。 在較佳的實施例中,根據主體指令序列產生中間表示 (Intermediate Representation; IR)樹’作爲從原始主體 程式17產生目標碼21的程序之一部分。1R樹爲主體程 式所計算的式子及執行之操作的抽象表示。之後’根據 -12- 200834419 IR樹產生目標碼21。IR節點之集合實際上爲有向無環圖 (Directed Acyclic Graphs ; DAG ),但常俗稱爲「樹」 〇 如熟悉此技藝者可理解地,在一實施例中,使用如 C + +的物件導向編程語言來實行轉譯器19。例如,將IR 節點實行爲C + +物件,以及至其他節點之參照實行爲至對 應那些其他節點之C + +物件的C + +參照。因此,將IR樹 實行爲IR節點物件的集合,含有各種對於互相之參照。 此外,在目前所討論的實施例中,IR之產生係使用 一組抽象暫存器定義,其對應於主體程式17意圖於其上 運作之主體架構的特定特徵。例如,在主體架構上的各實 體暫存器(亦即第1圖之主體暫存器5)有一獨特的一般 暫存器定義。因此,轉譯器中的抽象暫存器定義可實行爲 含有對於IR節點物件(亦即IR樹)之參照的C + +物件。 該組一般暫存器定義參照的所有IR樹之聚集係稱爲作用 IR林(「林」因爲其含有多個一般暫存器根部,各參照 至一 IR樹)。這些IR樹及其他程序適當地形成轉譯器 19的一部分。 第2圖更詳細描繪當在目標運算平台1〇上運作時之 轉譯器19。如前述,轉譯器19的前端包括解碼器單元 191,其解碼主體程式17目前所需之區段,以提供複數個 主體碼區塊171a、171b、171c (其通常含有主體碼的一 基本區塊),並且與各主體區塊及其中所含之主體指令有 關的解碼器資訊1 72,其將協助轉譯器1 9後續的操作。 -13- 200834419 在一些實施例中,在轉譯器19的核心中之IR單元192從 解碼的主體指令產生中間表示(IR ),並可執行與中間表 示有關之最佳化。作爲轉譯器19後端一部分之編碼器 193產生(植生)可由目標處理器13執行的目標碼21。 在此簡單的範例中,產生三個目標碼區塊211a至211c, 以在目標平台10上執行與在主體平台1上執行主體碼區 塊1 7 1 a至1 7 1 c等效的工作。並且,編碼器1 93可針對一 φ 些或全部的目標碼區塊211a至211c產生首碼及/或尾碼 2 1 2,其執行例如設定目標區塊將操作於其中之環境以及 適當時將控制傳回給轉譯器1 9的功能。 第3圖爲描繪本發明之實施例所利用之設備的更詳細 示意圖。在第3圖中所示的範例中,轉譯器1 9配置成執 行Solaris至利納克斯(Linux)的轉譯。然而,將於後詳 述,本發明亦可用在針對最佳化與加速之目的而執行的轉 譯,例如從Linux至Linux或Solaris至Solaris的轉換。 # 在第3圖中所示之Solaris至Linux實施例中,目標 處理器13包含程序檔案系統20a作爲目標操作系統20的 一部分,但將於後詳述,在主體碼1 7對程序檔案系統進 行參照時並非絕對或真的一般地使用目標處理器13之程 序檔案系統20a。 主體碼17包含第一主體可執行檔17a,其可轉譯成 第一目標碼2 1 a。第一主體可執行檔1 7a含有指令,其若 在主體處理器上執行會建立至少一程序。當第一轉譯器程 序1 9a遇到主體可執行檔1 7a中之程序建立指令時,在程 -14- 200834419 序資料結構1 9 0中製造轉譯器程序1 9 a可存取的對應項目 〇 主體碼17可含有指令,當由主體處理器執行時會建 立超過一個程序。第3圖亦顯示第二轉譯器程序i9b。第 二轉譯器程序19b操作以將第二主體可執行檔i7b轉譯成 目標碼21b。 可在轉譯器程序處理第一主體碼區塊之前先初始化程 序資料結構1 90,或替代地在當遇到第一主體碼區塊中之 第一主體碼指令時初始化程序資料結構190。 在範例實施例中,程序資料結構1 9 0包含在目標處理 器13上運作的轉譯器程序可存取的目錄。在其他範例實 施例中,程序資料結構1 9 0可包含在目標處理器1 3上運 作的轉譯器程序可存取之共享區。程序資料結構190含有 程序識別符。 轉譯器程序配置成辨別主體碼1 7中與主體程序檔案 系統有關之特定指令,並且仿真主體程序檔案系統會提供 的所需功能。轉譯器程序使用程序資料結構1 90來達成此 〇 例如,主體可執行檔1 7a可能請求具有在主體程序檔 案系統中有項目之程序的細節。當主體碼在主體處理器上 運作時,典型執行此請求作爲參照主體程序檔案系統中之 資訊的前導。 在其中主體處理器在Solaris下運作的範例實施例中 ’主體可執行檔17a可呼叫功能: -15- 200834419 getdents ( /proc/ ) 回應此指令,轉譯器程序1 9a配置成從程序資料結構 190提供對應的資訊。已初始化程序資料結構19〇並將之 塡充與各已建立之主體程序有關的資訊。例如’轉譯器程 序可建立目錄/tmp/pds以包含程序資訊,並且各轉譯器程 序可以程序資訊塡充此目錄,該程序資訊的形式爲被轉譯 之各主體程序的程序識別符。 • 爲了方便,程序資料結構190可配置成使得儲存在程 序資料結構中的程序識別符直接對應於主體碼程序識別符 。在其他範例實施例中,程序資料結構可針對各程序含有 一檔案,這些檔案包含程序識別符以及與該程序有關的資 訊。 在此範例中的轉譯器程序1 9a可接著執行目標功能: getdents ( /tmp/pds ),其將會從程序資料結構返還 有關的程序識別符。 • 在目前的範例中,其中轉譯器程序轉換Solaris碼以 在Linux處理器上運作,轉譯器程序針對各程序而在目錄 /tmp/pds中建立通訊端口(socket)。爲了方便,轉譯器 程序配置成分配對應於有關的程序識別符之名字給每-個 端口。 一旦獲得有關的程序識別符,主體碼1 7a很有可能將 參照程序之一。例如,轉譯器程序1 9 a可能會遇到主體指 令,例如: open ( /proc / {process_identifier}/ctl ) -16- 200834419 其中{process-identifier}爲主體可執行檔17a預期將 運作之程序的識別符。在範例實施例中, {process_identifier}可爲由第二轉譯器程序19b轉譯之程 序的識別符。若例如遇到並如上述般處置先前主體碼 get dent s ( /pro c/)指令,則主體碼17可預期將運作一程 序。 轉譯器程序認識到該open (亦即開啓)指令與/proc 程序檔案系統有關,並藉由參照至程序資料結構丨90來處 置此指令。然而,在嘗試存取程序資料結構1 90之前,在 一範例實施例中,轉譯器程序1 9 a配置成驗證所參照之程 序仍在運作中。 轉譯§5程序19a無法控制遇到主體getdents ( /proc/ )指令以及回應於先前getdents ( /proc/ )指令而提供之 資訊的主體指令之間的時間長度。此外,轉譯器程序1 9a 當遇到參照至主體程序的主體指令時,無法依賴程序資料 結構190中識別出之主體程序仍在運作中。 例如,在程序資料結構1 90中識別出之程序可能在提 供了其程序識別符之後無預警的故障。因此,在轉譯器程 序1 9 a根據程序資料結構i 90取得程序識別符列表以及後 續使用識別符之間的這段時間中,程序識別符列表可能變 成已過時。 針對在主體碼1 7中每一個對於另一程序之參照,轉 譯器程序可進一步配置成驗證所參照的程序仍在運作中。 在範例實施例中,轉譯器程序1 9a可藉由檢查程序資料結 -17- 200834419 構190中的程序之端口來執行此驗證。 延續上述範例,轉譯器程序19a配置成在繼續到下一 個主體指令之前,驗證open指令所參照的程序仍在運作 中。一旦開啓所參照的程序,主體碼可接著執行額外的工 作,如停止程序。此操作的一點形主體碼指令爲: write ( fd,PCST0P ) •,其中fd爲識別所探究之程序 的檔案描述符。 同樣地,爲使轉譯器程序1 9a可正確地仿真此主體指 令,所探究之程序必須實際上正在運作中。因此,轉譯器 程序19a配置成再次檢查所探究之程序的狀態。若所探究 之程序仍如預期般正在運作,則轉譯器程序1 9a可請求將 所探究之程序轉譯的轉譯器程序執行停止。 在範例實施例中,轉譯器程序1 9a請求轉譯器程序 19b來執行停止。 雖第3圖中所示的範例實施例包含第一轉譯器程序 1 9 a參照至程序資料結構1 9 0以控制在第二轉譯器程序 1 9 b下運作的程序,可有轉譯器程序參照至程序資料結構 中與本身有關的資料之情況。例如,程序資料結構可包含 有關於程序之記憶體映照的資訊,並且轉譯器可遇到主II 指令,例如: open ( /proc/{process_identifier}/map ),其中所探 究之{process_identifier}爲自我參照。 若在任何時候’轉譯器實例確定所參照的程序無預鏊 地停止運作,轉譯器程序可返還錯誤通知。由轉譯器提供 -18- 200834419 的此錯誤通知可與當主體程式在主體處理器上原始運作時 其之預期的行爲一致。 爲了維持程序資料結構1 90中的資訊,轉譯器程序可 配置成監核存在於程序資料結構1 90中的識別符。此監查 可由一轉譯器程序代所有其他程序來執行,或可由各轉譯 器程序執行以分散監查的工作負擔。替代地,可由轉譯器 外的模組來執行監查,其操作以維持針對運作在目標處理 器上之所有轉譯器程序之程序資料結構。此種模組可包含 第3圖中所示之監查器195。 監查器195可認識到在第一轉譯器程序下運作的程序 正參照在第二轉譯器程序下運作的程序。例如,當第一轉 譯器程序遇到諸如write ( fd,PC STOP)的指令時,監查器 195記錄下在第一轉譯器程序下運作的程序正參照在第二 轉譯器程序下運作的程序。若write指令係經由監查器 1 95傳遞至第二轉譯器程序則可很方便地達成此。便利地 ,監查器195可將這些參照記錄在程序資料結構190中。 可使用如上述之端口以及經由第4圖中所示的路徑便 利地傳遞轉譯器程序、監查器及程序資料結構之間的訊息 〇 若所參照的程序仍在運作,第二轉譯器程序從第一轉 譯器程序接收訊息,並通知第一轉譯器程序已正確停止所 參照的程序之確認。亦可經由監查器1 95便利地發送此通 知。監查器195可接著刪除其有關於在第一轉譯器程序下 運作的程序參照在第二轉譯器程序下運作的程序之記錄。 -19- 200834419 此記錄的刪除幫助轉譯器程序及監查器正確處理現存之程 序及不穩定之程序,將於後詳述。 若當接收參照時所參照之程序正在離開’則第二轉譯 器程序拋棄此進入訊息,並且不依照第一轉譯器程序的請 求來執行停止。然而,第二轉譯器程序配置成通知監查器 1 9 5它正在離開的程序中,亦即即將停止運作。這使監查 器接著:從程序資料結構移除所停止的程序之細節、告知 第一轉譯器程序所參照的程序已經離開以及刪除有關於在 第一轉譯器程序下運作的程序參照在第二轉譯器程序下運 作的程序之記錄。從監查器1 95傳送至第一轉譯器程序的 通知允許第一轉譯器程序返還正確的錯誤訊息,向主體碼 確認不會執行write指令。 若在任何時間所參照的程序故障,不會接收到從第一 轉譯器程序所發送的訊息。第一轉譯器程序不知道所參照 的程序已故障,並且一直等到來自第二轉譯器程序的回應 。在這種情況中,監查器1 95可爲第一轉譯器程序解決此 問題。監查器1 95配置成檢查於程序間傳送之訊息的記錄 ,並且檢查記錄在程序資料結構中的程序正在運作中。若 監查器1 95偵測到某一程序不再運作,其從程序資料結構 移除有關於該程序的資訊,並且移除第一程序已參照第二 程序的記錄。監查器1 95可接著返還通知給第一轉譯器程 序以確認所參照的程序已不再運作。從監查器1 95傳送給 第一轉譯器程序的通知允許第一轉譯器程序返還正確的錯 誤訊息,向主體碼確認不會執行write指令,因爲所參照 -20- 200834419 的程序已不再運作。 監查器195可配置成週期性檢查程序資料結構中有關 於已不再運作的程序之訊息記錄,並且移除此些陳舊的記 錄。監查器1 95可在程序間已傳送特定數量的訊息之後替 代地或額外地執行此種檢查。 爲了進一步幫助了解本發明的實施例,提供第5圖之 範例方法圖。在步驟S 1 0 1,回應於已接收之主體碼指令 ,當在主體處理器上執行其時會建立主體程序,建立轉譯 器程序。在步驟S 1 02,已建立的轉譯器程序以關於在步 驟S 1 0 1建立之轉譯器程序的資訊塡充可存取的程序資料 結構。在步驟S103,回應於在已接收之主體碼中對於主 體程序檔案系統中的資訊之參照,參照在步驟S 1 02所塡 充之資料結構。 在此所述之範例實施例對於轉譯器中之程式碼的轉換 特別有用,其中主體與目標處理器並不同。然而,即使主 體與目標處理器在具有相容的程序檔案系統之操作系統下 操作,例如當主體與目標操作系統爲相同類型,轉譯器程 序仍能可能希望存取其他轉譯器程序。 在此所述之範例實施例建立並維持針對轉譯器程序之 程序資料結構,其可使得在主體碼中對於主體程序檔案系 統之參照能被正確地處置。藉由在程序資料結構中週期性 檢查程序狀態並且移除或否則記錄那些不再運作者,轉譯 器能夠正確地處理主體碼中對於已經離開或故障之程序的 參照。 -21 - 200834419 如前述,此對於若欲轉譯之主體碼含有潛在不穩定的 程序特別有用。從轉譯器的觀點來看,爲了區分目標程序 檔案系統中的主體及目標程序而變更目標操作系統並不能 夠正確地分辨並處置不穩定的程序。然而,在此所述之範 例實施例可便利地解決此問題。 範例實施例利用轉譯器來分辨並處置在程式碼轉換期 間對於主體程序檔案系統的參照。轉譯器提供方便的機制 ,以辨識及處置主體碼中與主體程序檔案系統有關之指令 與功能呼叫。然而,應了解到在其他實施例中,可以其他 方式實行辨識及處置此種指令與功能呼叫的機制。例如, 目標處理器可設立一變更的系統目錄或不執行所有的系統 呼叫。當辨識到相關指令時可利用任何適合的機制來打斷 主體程式碼之控制流。可接著將控制流轉移成適合實行本 發明之編碼。 除了在此所述的範例實施例之外,亦可在分離的模組 中實行本發明,如與轉譯器一起使用之硬體模組或類似者 。此模組可提供在此描述與轉譯器程序有關的功能,但以 與執行程式碼轉換之單元在邏輯上分離的實體方式存在。 如上述’轉譯器的實施例對於在目標及主體操作系統爲不 同之環境中執行程式碼轉換特別有用。轉譯器之實施例對 於針對加速或仿真目的而執行程式碼轉換亦特別有用,例 如藉由使用程序資料結構使從特定操作系統的編碼得以轉 換至在相同操作系統下運作但有額外的控制層級者。 在此所用之「轉譯器」及「轉譯器程序」的用語以解 -22- 200834419 讀成涵蓋可在編碼轉換期間操作之相關設備,如仿真器、 加速器或解譯器。詳言之,可使用在此所參照之轉譯器程 序。 本發明之設備及方法的不同特徵在上述實施例中的每 一個中分別加以描述。然而,本發明之發明人完全認爲在 此所述之各實施例的不同態樣可與在此所述之其他實施例 結合。 在此所述之方法有關於程式碼轉換,並且對於提供主 體程式碼至目標碼的動態二源轉換之運作期間的轉譯器特 別有用。本發明亦延伸至操作爲配置程執行在此所界定之 任何方法的電腦系統的一部份之轉譯器設備。並且,本發 明延伸至電腦可讀取儲存媒體,其上記錄有電腦可實行之 指令以執行在此所界定之任何方法。 本發明之至少一些實施例可單獨用專門硬體建構而成 ,並且在此所用之用語,如「模組」或「單元」可包括但 不限於硬體裝置,如場可編程閘極陣列(FPGA )或特定 應用積體電路(ASIC ),其執行特定工作。替代地,本 發明之元件可組態成存在於可定址之儲存媒體上並且組態 成在一或更多處理器上執行。因此,本發明之功能元件在 一些實施例中可包括,例如,構件,如軟體構件、物件導 向軟體構件、類別(class )構件及工作構件、程序、功能 、屬性、程序、子常規、程式碼段、驅動器、軔體、微碼 、電路、資料、資料庫、資料結構、表、陣列及變數。此 外,雖然已參照在此討論之構件、模組及單元來描述較佳 -23- 200834419 實施例,此種功能元件可結合成更少的元件或分成額外的 元件。 熟悉該項技藝者將理解到可組態剛才描述過的範例實 施例之各種順應性修改與變更而不悖離本發明之範疇與精 神。因此,應了解到,在所附之申請專利範圍的範疇內, 可以在此特別描述外的方式施行本發明。 雖已顯示並描述數個較佳的實施例,熟悉該項技藝者 將理解到可對範例實施例作出各種改變與變更而不悖離如 所附之申請專利範圍所界定的本發明之範疇與精神。 請注意與此說明書同時或早於此說明書申請之的與此 申請案有關的所有印刷物與文件,其如此說明書般係受到 公開審閱’並且所有此種印刷物及文件的內容以參考方式 包含於此。 在此說明書(包括任何所附的申請專利範圍、摘要及 圖式)中所揭露的所有特徵及/或如此揭露之任何方法或 程序的所有步驟可以任何結合方式結合,除了其中至少一 些此種特徵及/或步驟爲互斥之結合。 在此說明書(包括任何所附的申請專利範圍、摘要及 圖式)中所揭露的各特徵可由達成相同、等效或類似目的 之替代特徵取代,除非另有所指。因此,除非另有所指, 所揭露的各特徵僅爲等效或類似特徵之上位系列的一個範 例。 本發明不限於上述實施例的細節。本發明延伸至在此 說明書(包括任何所附的申請專利範圍、摘要及圖式)中 -24- 200834419 所揭露的任何新穎的特徵或任何新穎的特徵結合,或至如 此揭露之任何方法及程序的任何新穎的步驟或任何新穎的 步驟結合。 【圖式簡單說明】 包含在此說明書並構成其一部分的附圖描繪目前較佳 實施例並如下般描述: φ 第1圖爲描繪本發明之實施例可應用於其中之設備的 區塊圖; 第2圖爲本發明之實施例所利用的轉譯器單元的示意 圖; 第3圖爲描繪本發明之實施例所利用之設備的區塊圖 y 第4圖爲描繪本發明之一範例實施例利用之通訊通道 的示意圖;以及 • 第5圖爲描繪根據本發明之一範例實施例的管理程序 檔案系統的方法之示意圖。 【主要元件符號說明】 1 :主體運算平台 2 _·主體操作系統 3 :主體處理器 5 :主體暫存器 8 :主體記憶體 -25- 200834419 1 〇 :目標運算平台 1 3 :目標處理器 1 5 :目標暫存器 1 7 :主體程式 17a :第一主體可執行檔 17b :第二主體可執行檔 1 8 :記憶體 1 9 :轉譯器單元 19a :第一轉譯器程序 19b :第二轉譯器程序 20 :目標操作系統 20a :程序檔案系統 21 ·目標碼 2 1 a :第一目標碼 2 1 b :目標碼 27 =總體暫存器儲存 1 7 1 a、1 7 1 b、1 7 1 c :主體碼區塊 172 :解碼器資訊 191 :解碼器單元 192 : IR單元 1 9 3 :編碼器 195 :監查器 211a〜211c :目標碼區塊 212 :首碼及/或尾碼 -26 -
Claims (1)
- 200834419 十、申請專利範圍 1.一種電腦設備,包含: 目標處理器;以及 轉譯器程序,其係回應於用於在主體處理器上執行的 已接收之主體碼指令而建立; 其中該轉譯器程序配置成: (a )以有關該已建立之轉譯器程序的資訊塡充程序 • 資料結構;以及 (b )回應於已接收的主體碼中對於主體程序檔案系 統中的資訊所作的參照而參照至步驟(a )之該程序資料 結構。 2·如申請專利範圍第1項之電腦設備,其中該轉譯器 程序配置成建立進一步的轉譯器程序,以回應於各已接收 之主體碼指令,當在主體處理器上執行該主體碼指令時會 建立主體程序。 # 3·如申請專利範圍第2項之電腦設備,其中各轉譯器 程序爲如申請專利範圍第1項之轉譯器程序。 4·如申請專利範圍第3項之電腦設備,其中各轉譯器 程序塡充並且參照至共同的程序資料結構。 5 _如申請專利範圍第4項之電腦設備,其中該程序資 料結構包含下列之一或兩者··( a )各轉譯器程序可存取 之目錄;以及(b )各轉譯器程序可存取之共享的記憶體 區域。 6.如申請專利範圍第1項之電腦設備,其中該轉譯器 -27- 200834419 程序配置成以針對各轉譯器程序之程序識別符塡充該程序 資料結構,該程序識別符對應於會分配給回應於當在主體 處理器上執行該已接收的主體碼指令時而建立之該些主體 程序者。 7 ·如申請專利範圍第1項之電腦設備,進一步包含配 置成檢查轉譯器程序之狀態的監查器,該轉譯器程序之資 訊係存在於該程序資料結搆中,以及從該程序資料結構移 φ 除有關於不再運作之轉譯器程序的資訊。 8·如申請專利範圍第7項之電腦設備,其中該監查器 配置成週期性檢查轉譯器程序的狀態,其之資訊係存在於 該程序資料結構中。 9.如申請專利範圍第7項之電腦設備,其中該監查器 包含該轉譯器程序的部分。 10·如申請專利範圍第1項之電腦設備,進一步包含 監查器,其中該監查器配置成: • 在該程序資料結構中記錄對資訊已作出之參照。 1 1 ·如申請專利範圍第i 〇項之電腦設備,其中該監查 器配置成記錄作出該參照之該轉譯器程序的識別符,以及 其之資訊被參照的轉譯器程序之關聯的識別符。 12.如申請專利範圍第11項之電腦設備,其中該監查 器配置成在程序資料結構中記錄該些識別符。 13·如申請專利範圍第12項之電腦設備,其中該監查 器配置成當判斷其之資訊被參照之該程序已不再運作時從 該程序資料結構移除其所記錄之該資料。 -28- 200834419 1 4·如申請專利範圍第1項之電腦設備,其中當轉譯 器程序離開時其從該程序資料結構移除有關於本身之資訊 〇 1 5 ·如申請專利範圍第1項之電腦設備,其中該目標 處理器與用於在其上執行該已接收的主體碼之該主體處理 器爲相同類型。 1 6 ·如申請專利範圍第1項之電腦設備,其中該轉譯 器程序配置成產生用於在該目標處理器上執行之目標碼指 令。 1 7 · —種關於程式碼轉換之管理程序檔案系統之方法 ,該程式碼轉換係將用於在主體處理器上執行之主體碼轉 換成用於在目標處理器上執行之目標碼,該方法包含下列 步驟: (a )建立轉譯器程序,以回應於已接收之主體碼指 令,當在主體處理器上執行該主體碼指令時會建立主體程 序; (b)以有關於回應於該已接收之主體碼而建立之一 或更多轉譯器程序的資訊塡充該轉譯器程序可存取的程序 資料結構;以及 (c )回應於在已接收的主體碼中對於主體程序檔案 系統中的資訊之參照而參照至於步驟(b )中塡充之該資 料結構。 1 8 .如申請專利範圍第1 7項之方法,其中於步驟(b )中塡充之該程序資料結構爲轉譯器資料結構。 -29- 200834419 1 9 .如申請專利範圍第1 7項之方法,進一步包含檢查 其之資訊儲存於該程序資料結構中之程序的狀態,以及從 該程序資料結構移除有關於不再運作之轉譯器程序的資訊 之步驟。 20.如申請專利範圍第1 9項之方法,其中週期性執行 檢查其之資訊儲存於該資料結構中之程序的狀態之步驟。 2 1 .如申請專利範圍第1 7項之方法,進一步包含下列 步驟·· (d )記錄對該程序資料結構中之資訊已作出的參照 ,其係藉由記錄作出該參照之該轉譯器程序的識別符,以 及其之資訊被參照之該轉譯器程序的識別符。 2 2.如申請專利範圍第21項之方法,進一步包含當其 之資訊被參照之該轉譯器程序不再運作時從該程序資料結 構移除於步驟(d )所記錄之該資料的步驟。 2 3 .如申請專利範圍第1 7項之方法,進一步包含從該 程序資料結構移除有關於不再運作之程序的資訊。 24.—種電腦可讀取媒體,具有可由電腦實施以執行 如申請專利範圍第1 7項之方法之指令記錄於其上。 25 . —種轉譯器設備,配置成接收用於在主體處理器 上執行之主體碼以及產生用於在目標處理器上執行之目標 碼;其中該轉譯器配置成: (a )以有關於回應於該已接收之主體碼而建立之一 或更多轉譯器程序的資訊塡充程序資料結構;以及 (b )回應於在已接收的主體碼中對於主體程序檔案 -30- 200834419 系統中的資訊之參照而參照至步驟(a )之該程序資料結 構。-31 -
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0619402A GB2442497B (en) | 2006-10-02 | 2006-10-02 | Method and apparatus for administering a process filesystem with respect to program code conversion |
US85454306P | 2006-10-26 | 2006-10-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200834419A true TW200834419A (en) | 2008-08-16 |
TWI447649B TWI447649B (zh) | 2014-08-01 |
Family
ID=37435059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW096136767A TWI447649B (zh) | 2006-10-02 | 2007-10-01 | 關於程式碼轉換之管理程序檔案系統之方法及設備 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8286144B2 (zh) |
EP (1) | EP2069926A1 (zh) |
JP (1) | JP5031032B2 (zh) |
KR (1) | KR101244153B1 (zh) |
CN (1) | CN101558382B (zh) |
GB (1) | GB2442497B (zh) |
TW (1) | TWI447649B (zh) |
WO (1) | WO2008041026A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BRPI1102315A8 (pt) * | 2011-08-04 | 2017-10-10 | Neo Plastic Embalagens Plasticas Ltda | Geomembrana produzida com misturas de polietileno de alta densidade, polietileno linear de baixa densidade e polietileno de baixa densidade |
US20140289280A1 (en) * | 2013-03-15 | 2014-09-25 | Perforce Software, Inc. | System and Method for Bi-directional Conversion of Directed Acyclic Graphs and Inter-File Branching |
WO2015047278A1 (en) | 2013-09-26 | 2015-04-02 | Intel Corporation | Methods and apparatus to validate translated guest code in a dynamic binary translator |
KR102405886B1 (ko) * | 2022-03-17 | 2022-06-08 | 주식회사 넷아스 | 아키텍처 변경을 위한 소스 변환 솔루션 제공 장치 및 방법 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0695891A (ja) | 1992-09-10 | 1994-04-08 | Toshiba Corp | インタフェース方式 |
JPH11345134A (ja) | 1998-06-03 | 1999-12-14 | Hitachi Ltd | オペレーティングシステム |
ATE293808T1 (de) | 1998-10-10 | 2005-05-15 | Transitive Ltd | Programm-kode-umwandlung |
US7103914B2 (en) * | 2002-06-17 | 2006-09-05 | Bae Systems Information Technology Llc | Trusted computer system |
US7127592B2 (en) * | 2003-01-08 | 2006-10-24 | Sun Microsystems, Inc. | Method and apparatus for dynamically allocating registers in a windowed architecture |
US7543284B2 (en) * | 2003-04-22 | 2009-06-02 | Transitive Limited | Partial dead code elimination optimizations for program code conversion |
US7299460B2 (en) * | 2003-05-29 | 2007-11-20 | Nec Corporation | Method and computer program for converting an assembly language program for one processor to another |
GB0316532D0 (en) * | 2003-07-15 | 2003-08-20 | Transitive Ltd | Method and apparatus for partitioning code in program code conversion |
US7805710B2 (en) * | 2003-07-15 | 2010-09-28 | International Business Machines Corporation | Shared code caching for program code conversion |
GB0316531D0 (en) * | 2003-07-15 | 2003-08-20 | Transitive Ltd | Method and apparatus for performing native binding |
JP2005099968A (ja) | 2003-09-24 | 2005-04-14 | Hitachi Ltd | 仮想ファイルシステムを有する計算機システム |
GB2424092A (en) * | 2005-03-11 | 2006-09-13 | Transitive Ltd | Switching between code translation and execution using a trampoline |
JP5448165B2 (ja) * | 2006-10-02 | 2014-03-19 | インターナショナル・ビジネス・マシーンズ・コーポレーション | レジスタ・ウィンドウ・アーキテクチャをサポートするように適合されたコンピュータ・システム、並びに当該コンピュータ・システムを制御する方法及びそのコンピュータ・プログラム |
-
2006
- 2006-10-02 GB GB0619402A patent/GB2442497B/en active Active
-
2007
- 2007-09-28 US US11/906,106 patent/US8286144B2/en active Active
- 2007-10-01 WO PCT/GB2007/050598 patent/WO2008041026A1/en active Application Filing
- 2007-10-01 JP JP2009529782A patent/JP5031032B2/ja active Active
- 2007-10-01 CN CN200780036737.7A patent/CN101558382B/zh active Active
- 2007-10-01 KR KR1020097009184A patent/KR101244153B1/ko active IP Right Grant
- 2007-10-01 TW TW096136767A patent/TWI447649B/zh active
- 2007-10-01 EP EP07804501A patent/EP2069926A1/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
TWI447649B (zh) | 2014-08-01 |
US8286144B2 (en) | 2012-10-09 |
JP5031032B2 (ja) | 2012-09-19 |
EP2069926A1 (en) | 2009-06-17 |
US20080082971A1 (en) | 2008-04-03 |
JP2010506251A (ja) | 2010-02-25 |
KR20090085048A (ko) | 2009-08-06 |
WO2008041026A1 (en) | 2008-04-10 |
GB2442497A (en) | 2008-04-09 |
KR101244153B1 (ko) | 2013-03-14 |
GB2442497B (en) | 2010-03-31 |
CN101558382A (zh) | 2009-10-14 |
GB0619402D0 (en) | 2006-11-08 |
CN101558382B (zh) | 2015-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11599346B2 (en) | Accessing a migrated member in an updated type | |
US10104090B2 (en) | Restrictive access control for modular reflection | |
US11366643B2 (en) | Generating dynamic modular proxies | |
US10719337B2 (en) | Container-based language runtime loading an isolated method | |
US10635472B2 (en) | Import mechanism for hardware intrinsics | |
US10891214B2 (en) | Transferring a debug configuration amongst carrier threads for debugging a carried thread | |
TWI447649B (zh) | 關於程式碼轉換之管理程序檔案系統之方法及設備 | |
US6986143B2 (en) | Reducing the size of generated code used to call common object model objects, while preserving type-checking | |
Grodowitz et al. | OpenSHMEM I/O extensions for fine-grained access to persistent memory storage | |
US20170031660A1 (en) | Methods for utilizing powershell modules in .net applications and devices thereof | |
US11726786B2 (en) | Lazy copying of runtime-managed stack frames | |
US10891213B2 (en) | Converting between a carried thread and a carrier thread for debugging the carried thread | |
US20240012764A1 (en) | Transitioning Between Thread-Confined Memory Segment Views And Shared Memory Segment Views | |
US20210133094A1 (en) | Techniques for accessing off-heap memory | |
JP2009512030A (ja) | オブジェクトグラフの複製 | |
Sterling | A Universal Framework for (nearly) Arbitrary Dynamic Languages |