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 PDF

Info

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
Application number
TW096136767A
Other languages
English (en)
Other versions
TWI447649B (zh
Inventor
James William Walker
Ryan Jason Cocks
Original Assignee
Transitive Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Transitive Ltd filed Critical Transitive Ltd
Publication of TW200834419A publication Critical patent/TW200834419A/zh
Application granted granted Critical
Publication of TWI447649B publication Critical patent/TWI447649B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45537Provision 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)

  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 -
TW096136767A 2006-10-02 2007-10-01 關於程式碼轉換之管理程序檔案系統之方法及設備 TWI447649B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 インターナショナル・ビジネス・マシーンズ・コーポレーション レジスタ・ウィンドウ・アーキテクチャをサポートするように適合されたコンピュータ・システム、並びに当該コンピュータ・システムを制御する方法及びそのコンピュータ・プログラム

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