專利名稱:將單處理器的軟件程序轉(zhuǎn)換為多處理器的軟件程序的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種將單處理器用的軟件程序轉(zhuǎn)換為多處理器用的軟件程序的方法。
背景技術(shù):
一般來講,為了開發(fā)軟件程序(以下簡稱為“程序”),通過編輯器等編寫源文件并通過編譯器將其編譯成為目標(biāo)文件。而且,目標(biāo)文件通過鏈接器分配和鏈接程序中的函數(shù)或變量的地址,從而產(chǎn)生執(zhí)行形式文件(execute form file),即執(zhí)行形式程序(execute form program)。
根據(jù)操作環(huán)境例如硬件配置等來形成以這種方式生成的軟件程序的源文件。因此,用于單處理器的軟件程序是假設(shè)硬件配置是單處理器而形成的。
此外,在近幾年,在降低硬件成本的背景下,需要通過把由單處理器構(gòu)成的設(shè)備改變?yōu)槎嗵幚砥鳂?gòu)成的設(shè)備來提高處理能力。這提出了對(duì)從用于單處理器的軟件程序到用于多處理器的軟件程序的轉(zhuǎn)換的需求。
為了滿足該需要,在日本已公開專利申請(qǐng)No.7-114516中,描述了一種程序并行方法,其中,根據(jù)包括多個(gè)處理器的硬件配置對(duì)為單處理器形成的源文件進(jìn)行程序并行處理以生成程序的源文件。
然而,常規(guī)的方法存在下述問題。
一般來講,為了將針對(duì)單處理器生成的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序,迄今為止必須把用于單處理器的軟件程序的源文件重新建立為用于多處理器的軟件程序的源文件。為了執(zhí)行該操作,必須確保與用于單處理器的軟件程序相同的操作。因此,在以在多個(gè)處理器之間獨(dú)立處理是可能的方式來理解軟件程序的邏輯之后,需要對(duì)軟件程序結(jié)構(gòu)或執(zhí)行單位(execute unit)完全重新研究并重新構(gòu)建邏輯。
這種情況下,操作者不僅需要完全了解用于單處理器的軟件程序,而且要了解多處理器的硬件配置,能處理這種情況的人是有限的,并且對(duì)于轉(zhuǎn)換操作帶來更多的麻煩。這也會(huì)導(dǎo)致由于復(fù)雜的操作而產(chǎn)生缺陷(bugs)的可能性。
此外,在上述公開出版物所描述的程序并行方法中,在用于單處理器的軟件程序的源文件的基礎(chǔ)上自動(dòng)生成用于多處理器的軟件程序的源文件。所生成的程序不是為了在處理器之間執(zhí)行通信,用于多處理器的軟件程序的源文件是所謂的機(jī)械生成(mechanically prepared)的,和手工編程相比不可避免地描述了冗長的處理。而且,和手工編程相比,源文件在處理速率或所需的存儲(chǔ)空間方面存在缺陷。也存在消除了用于單處理器的原軟件程序的優(yōu)點(diǎn)的可能性。
發(fā)明內(nèi)容
在考慮到背景技術(shù)的缺點(diǎn)的情況下研制了本發(fā)明,本發(fā)明的目的是提供一種將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法,該方法能利用用于單處理器的原軟件程序的優(yōu)點(diǎn),并消除轉(zhuǎn)換操作的麻煩,以及能夠減少為將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序而出現(xiàn)缺陷的可能性。
為了達(dá)到該目的,根據(jù)本發(fā)明的第一方面,提供一種將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法,包括步驟按照目標(biāo)文件單位(object file unit)將源文件分配給每一個(gè)處理器,以便為每一個(gè)處理器生成用來在多處理器上操作運(yùn)行于單一存儲(chǔ)器空間上的軟件的執(zhí)行形式程序。
根據(jù)本發(fā)明的第二方面,將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法還包括步驟以禁止在處理器之間重復(fù)地址的配置,在由每一個(gè)處理器管理的存儲(chǔ)器空間上安裝在第一方面中所述的執(zhí)行形式程序。
根據(jù)本發(fā)明的第三方面,根據(jù)本發(fā)明第一或者第二方面的將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法,還包括步驟開始由作為參照請(qǐng)求器(refer requester)的處理器所擁有的異常處理,以便檢測對(duì)在執(zhí)行形式程序運(yùn)行期間在由其它處理器管理的存儲(chǔ)器空間上配置的變量的參照請(qǐng)求;和將參照請(qǐng)求發(fā)送到適當(dāng)?shù)奶幚砥鳎渲?,接收該參照?qǐng)求的處理器參照該變量,以便將參照結(jié)果返回到讀取請(qǐng)求器,并且作為參照請(qǐng)求器的處理器仿真執(zhí)行來自返回的結(jié)果的變量參照命令,以便從異常處理返回到下一個(gè)命令。
根據(jù)本發(fā)明的第四方面,根據(jù)本發(fā)明第一或者第二方面的將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法,還包括步驟開始由作為寫請(qǐng)求器(write requester)的處理器所擁有的異常處理,以便檢測對(duì)在執(zhí)行形式程序運(yùn)行期間在由其它處理器管理的存儲(chǔ)器空間上配置的變量的寫請(qǐng)求;和將該寫請(qǐng)求發(fā)送到適當(dāng)?shù)奶幚砥?,其中,接收該寫?qǐng)求的處理器寫該變量,并且作為寫請(qǐng)求器的處理器從異常處理返回到下一個(gè)命令。
根據(jù)本發(fā)明的第五方面,根據(jù)本發(fā)明第一或者第二方面的將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法,還包括步驟開始由作為寫請(qǐng)求器的處理器所擁有的異常處理,以便檢測對(duì)在執(zhí)行形式程序運(yùn)行期間在由其它處理器管理的存儲(chǔ)器空間上配置的變量的寫請(qǐng)求;和將該寫請(qǐng)求發(fā)送到適當(dāng)?shù)奶幚砥?,其中,接收該寫?qǐng)求的處理器寫該變量,以便將寫結(jié)果返回到寫請(qǐng)求器,并且作為寫請(qǐng)求器的處理器從異常處理返回到下一個(gè)命令。
根據(jù)本發(fā)明的第六方面,根據(jù)本發(fā)明第一或者第二方面的將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法,還包括步驟開始由作為調(diào)用請(qǐng)求器(call requester)的處理器所擁有的異常處理,以便檢測對(duì)在執(zhí)行形式程序運(yùn)行期間在由其它處理器管理的存儲(chǔ)器空間上配置的函數(shù)的調(diào)用請(qǐng)求;和將該調(diào)用請(qǐng)求發(fā)送到適當(dāng)?shù)奶幚砥?,其中,接收該調(diào)用請(qǐng)求的處理器調(diào)用該函數(shù),以便將調(diào)用結(jié)果返回到調(diào)用請(qǐng)求器,并且作為調(diào)用請(qǐng)求器的處理器仿真執(zhí)行來自返回結(jié)果的函數(shù)調(diào)用命令,以便從異常處理返回到下一個(gè)命令。
根據(jù)本發(fā)明的第七方面,根據(jù)本發(fā)明第三到第六方面的將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法,還包括步驟在處理器之間通信,其中,能夠通過異常處理實(shí)現(xiàn)包括處理請(qǐng)求發(fā)送和處理結(jié)果返回的通信。
根據(jù)本發(fā)明的第八方面,提供一種便攜式電話,其中安裝了根據(jù)第一到第七方面中的任意一方面的方法所轉(zhuǎn)換的用于多處理器的軟件程序。
從上述方面明顯看出,根據(jù)本發(fā)明,當(dāng)將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序時(shí),能提供一種將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法,能利用用于單處理器的原軟件程序的優(yōu)點(diǎn)并消除轉(zhuǎn)換操作的麻煩,以及能夠減少缺陷出現(xiàn)的可能性。
也就是說,根據(jù)本發(fā)明,當(dāng)在多處理器上操作在單存儲(chǔ)器空間上運(yùn)行的軟件時(shí),可以通過構(gòu)成諸如源文件、目標(biāo)文件和庫之類軟件的單元單位而不改變軟件結(jié)構(gòu)或邏輯來考慮處理器的分配。因此,可以減少開發(fā)或論證所需的周期或操作所需的成本。
參考下述實(shí)施例和附圖,本領(lǐng)域的技術(shù)人員將清楚本發(fā)明的上述和許多其它目的,特點(diǎn)和優(yōu)點(diǎn)。其中,以說明性的舉例來表示結(jié)合本發(fā)明的原理的參考實(shí)施例。
圖1是表示用于程序開發(fā)的終端設(shè)備的輪廓的外觀視圖,該終端設(shè)備是根據(jù)本發(fā)明用來執(zhí)行將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法的一個(gè)實(shí)施例的設(shè)備的一個(gè)舉例;圖2是表示圖1所示的用于程序開發(fā)的終端設(shè)備的內(nèi)部構(gòu)成;圖3是表示便攜式電話的輪廓的外觀視圖,該便攜式電話是根據(jù)本發(fā)明通過將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法的一個(gè)實(shí)施例生成的用于多處理器的軟件程序所操作的設(shè)備的一個(gè)例子;圖4是表示圖3所示的便攜式電話的內(nèi)部構(gòu)成的方框圖;圖5是用于生成用于單處理器的軟件程序的執(zhí)行形式文件的過程的說明圖;圖6是用于生成用于多處理器的軟件程序的執(zhí)行形式文件的過程的說明圖;圖7A到7C是表示對(duì)由本實(shí)施例生成的用于多處理器的軟件程序分配地址空間的圖,圖7A是表示圖4所示的一個(gè)PE的存儲(chǔ)器中的具有實(shí)體的存儲(chǔ)器空間的圖,圖7B是表示圖4E所示的另一個(gè)PE的存儲(chǔ)器中具有實(shí)體的存儲(chǔ)器空間的圖,和圖7C是表示圖4所示的由另一個(gè)CPU處理的虛擬存儲(chǔ)器空間的圖;圖8是表示在PE的存儲(chǔ)器中開發(fā)圖6所示的執(zhí)行形式文件的狀態(tài)圖;圖9是表示圖6所示的在PE的存儲(chǔ)器中開發(fā)的其它執(zhí)行文件的狀態(tài)圖;以及圖10是本發(fā)明的實(shí)施例中的退出時(shí)處理的流程圖。
具體實(shí)施例方式
以下將參考附圖詳細(xì)描述本發(fā)明的一個(gè)優(yōu)選實(shí)施例。
圖1是表示用于程序開發(fā)的終端設(shè)備的輪廓的外觀視圖,該終端設(shè)備是根據(jù)本發(fā)明用來執(zhí)行將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法的一個(gè)實(shí)施例的設(shè)備的一個(gè)舉例。
在本實(shí)施例中,通過圖1所示的用于程序開發(fā)的終端設(shè)備10來執(zhí)行從用于單處理器的軟件程序到用于多處理器的軟件程序的轉(zhuǎn)換。
如圖1所示,例如,個(gè)人計(jì)算機(jī)可用在用于程序開發(fā)的終端設(shè)備10方面,該設(shè)備包括例如鼠標(biāo)和鍵盤等輸入裝置13和例如顯示器等顯示裝置14。
圖2是表示圖1所示的用于程序開發(fā)的終端設(shè)備10的內(nèi)部構(gòu)成。
如圖2所示,用于程序開發(fā)的終端設(shè)備10包括控制所有操作的CPU11、存儲(chǔ)應(yīng)用文件和在CPU 11上操作的各種數(shù)據(jù)的存儲(chǔ)裝置12、例如鼠標(biāo)和鍵盤等輸入裝置13和例如顯示器等顯示裝置14。
此外,在存儲(chǔ)裝置12中存儲(chǔ)了作為在CPU 11上操作的各種類型的應(yīng)用文件的編譯器2和鏈接器4。編譯器2和鏈接器4用于生成單處理器或多處理器用的軟件程序。
圖3是表示便攜式電話的輪廓的外觀視圖,該便攜式電話是根據(jù)本發(fā)明通過將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法的一個(gè)實(shí)施例生成的用于多處理器的軟件程序所操作的設(shè)備的一個(gè)例子。
在本實(shí)施例中,將描述將操作單個(gè)便攜式電話的用于處理器單元(以下稱作PE)的單處理器的軟件程序來轉(zhuǎn)換為操作兩個(gè)便攜式電話的用于PE的多處理器的軟件程序的一個(gè)例子。
如圖3所示,便攜式電話20包括天線23、例如按鈕開關(guān)等輸入裝置39、例如LCD等顯示裝置36、例如話筒等送話裝置37和例如揚(yáng)聲器等受話裝置38。
圖4是表示圖3所示的便攜式電話20的內(nèi)部構(gòu)成的方框圖。
如圖4所示,便攜式電話20包括控制整個(gè)操作的控制裝置21、執(zhí)行呼叫的無線發(fā)送/接收等的發(fā)送/接收裝置22、例如按鈕開關(guān)等的輸入裝置39、例如LCD等顯示裝置36、例如話筒等送話裝置37和例如揚(yáng)聲器等受話裝置38。
此外,在本實(shí)施例中,控制裝置21包括兩個(gè)處理器單元PE 26和PE31。本發(fā)明不局限于此,不必說,也能應(yīng)用于包括三個(gè)或多個(gè)PE的設(shè)備。
PE 26包括執(zhí)行與CPU 27通信的PE 28之間和PE 26與PE 31之間的通信裝置、開發(fā)在執(zhí)行時(shí)間由CPU 27操作的程序的存儲(chǔ)器29和由CPU27操作的程序、各種數(shù)據(jù)等以永久方式存儲(chǔ)在其中的永久存儲(chǔ)器30。
PE 31包括執(zhí)行與CPU 32通信的PE 33之間和PE 31與PE 26之間的通信裝置;開發(fā)在執(zhí)行期間由CPU 32操作的程序的存儲(chǔ)器34;和由CPU 32操作的程序、各種數(shù)據(jù)等以非易失方式存儲(chǔ)在其中的非易失性存儲(chǔ)器35。
圖5是用于生成用于單處理器的軟件程序的執(zhí)行形式文件的過程的說明圖。
在本實(shí)施例中,將描述圖5所示的從五個(gè)源文件1a到1e生成一個(gè)執(zhí)行形式文件(執(zhí)行形式程序)5作為用于單處理器的軟件程序的例子。
首先,通過編譯器2編譯各個(gè)源文件1a到1e從而形成目標(biāo)文件3a到3e。通過鏈接器鏈接所有目標(biāo)文件3a到3e從而形成作為用于單處理器的軟件程序的一個(gè)執(zhí)行形式文件5。
接下來,將描述圖5所示的從五個(gè)源文件1a到1e生成兩個(gè)執(zhí)行文件作為用于兩個(gè)PE的多處理器的軟件程序的情況。
圖6是用于生成用于多處理器的軟件程序的執(zhí)行形式文件的過程的說明圖。
在本實(shí)施例中,將描述從與圖5所示的相同的圖6所示的五個(gè)源文件1a到1e生成兩個(gè)執(zhí)行形式文件(執(zhí)行形式程序)作為用于多處理器的軟件程序的情況。
首先,通過編譯器2編譯各個(gè)源文件1a到1e從而生成目標(biāo)文件3a到3e。
接下來,將目標(biāo)文件3a到3e分為與PE相同數(shù)量的組(在本實(shí)施例中如圖4所示PE的數(shù)量是2),并對(duì)每一組通過鏈接器4鏈接。在圖6所示的例子中,鏈接目標(biāo)文件3a到3c以便生成執(zhí)行形式文件6a,鏈接將目標(biāo)文件3d到3e以便生成執(zhí)行形式文件6b。
這里,例如,當(dāng)包括在目標(biāo)文件3a中的函數(shù)參照(refer)在另一組的目標(biāo)文件3d中具有實(shí)體(entity)的函數(shù)或變量時(shí),在鏈接目標(biāo)文件3a、3b和3d過程中不知道沒有實(shí)體的函數(shù)或變量的地址,從而不可能鏈接。為了解決該問題,在本實(shí)施例中,當(dāng)在鏈接期間,在存在函數(shù)或變量的實(shí)體的組中確定地址時(shí),將鏈接期間確定的地址通知實(shí)體不存在、并被參照的組,從而完成鏈接。
將以這種方式完成的、在存儲(chǔ)器29中開發(fā)的和由CPU 27執(zhí)行的執(zhí)行形式文件6a存儲(chǔ)在圖4所示的PE 26的非易失性存儲(chǔ)器30中。將在存儲(chǔ)器34中開發(fā)的和由CPU 32執(zhí)行的執(zhí)行形式文件6b存儲(chǔ)在圖4所示的PE 31的非易失性存儲(chǔ)器35中。
圖7A到7C是表示對(duì)由本實(shí)施例生成的用于多處理器的軟件程序分配地址空間的圖,圖7A是表示圖4所示的PE 26的存儲(chǔ)器29中的具有實(shí)體的存儲(chǔ)器空間的圖,圖7B是表示圖4E所示的另一個(gè)PE 31的存儲(chǔ)器34中具有實(shí)體的存儲(chǔ)器空間的圖,和圖7C是表示圖4所示的由PE 26的CPU 27或PE 31的CPU 32處理的虛擬存儲(chǔ)器空間的圖。
如圖7A到7C所示,每一個(gè)CPU 27和32采用地址0000h到ffffh作為程序執(zhí)行時(shí)的手段(means)、PE 26具有0000h到7fffh,作為在存儲(chǔ)器29中的實(shí)體;PE 31具有8000h到ffffh,作為存儲(chǔ)器34中的實(shí)體。
圖8是表示在PE 26的存儲(chǔ)器29中開發(fā)圖6所示的執(zhí)行形式文件6a的狀態(tài)圖。
在該實(shí)施例中,如圖8所示,執(zhí)行形式文件6a具有函數(shù)A、B、C和變量D、E、F、G的實(shí)體,其中每一個(gè)都是在存儲(chǔ)器29的地址空間中開發(fā)的。
此外,在存儲(chǔ)器29中設(shè)置了數(shù)據(jù)退出時(shí)中斷處理存儲(chǔ)區(qū)(data aborttime interrupt processing storage region)45。在數(shù)據(jù)退出時(shí)中斷處理存儲(chǔ)區(qū)45中,當(dāng)CPU 27要讀(參照)或?qū)憶]有存儲(chǔ)器29中的實(shí)體的地址的變量時(shí),存儲(chǔ)由中斷執(zhí)行的處理,即一種所謂的異常處理。
在數(shù)據(jù)退出時(shí)中斷處理存儲(chǔ)區(qū)45中存儲(chǔ)的中斷處理中,采用在PE 28間的通信裝置與PE 31通信,并對(duì)沒有存儲(chǔ)器29中的實(shí)體的地址的變量執(zhí)行讀或?qū)懀@是引起有該變量的實(shí)體的存儲(chǔ)器34中斷的原因。因此,與其一致,PE 31需要實(shí)際上訪問用于該變量的存儲(chǔ)器34的程序。
而且,在存儲(chǔ)器29中設(shè)置了預(yù)取退出時(shí)中斷處理存儲(chǔ)區(qū)(prefetchabort time interrupt processing storage region)46。在預(yù)取退出時(shí)中斷處理存儲(chǔ)區(qū)46中,當(dāng)CPU 27要調(diào)用沒有存儲(chǔ)器29中的實(shí)體的地址函數(shù)時(shí),存儲(chǔ)由中斷執(zhí)行的處理,即一種所謂的異常處理。
在存儲(chǔ)在預(yù)取退出時(shí)中斷處理存儲(chǔ)區(qū)46中的中斷處理中,采用PE 28間的通信裝置與PE 31通信并對(duì)沒有存儲(chǔ)器29的實(shí)體的地址的函數(shù)執(zhí)行調(diào)用,這是引起有該變量的實(shí)體的存儲(chǔ)器34中斷的原因。因此,與其一致,PE 31需要一個(gè)執(zhí)行形式程序,以便實(shí)際上訪問用于該函數(shù)的存儲(chǔ)器34。
注意,也可以對(duì)存儲(chǔ)在數(shù)據(jù)退出時(shí)中斷處理存儲(chǔ)區(qū)45或預(yù)取退出時(shí)中斷處理存儲(chǔ)區(qū)46中的中斷處理預(yù)先編程,存儲(chǔ)在非易失性存儲(chǔ)器30中并在執(zhí)行時(shí)在存儲(chǔ)器29中開發(fā)。也可以在CPU 27中設(shè)置數(shù)據(jù)退出時(shí)中斷處理存儲(chǔ)區(qū)45或預(yù)取退出時(shí)中斷處理存儲(chǔ)區(qū)46。
圖9是表示圖6所示的在PE 31的存儲(chǔ)器34中開發(fā)的執(zhí)行形式文件6b的狀態(tài)圖。
在本實(shí)施例中,如圖9所示,執(zhí)行形式文件6b具有函數(shù)J、K和變量L、M、N、O、P的實(shí)體,其中每一個(gè)都是在存儲(chǔ)器34的地址空間中開發(fā)的。
此外,數(shù)據(jù)退出時(shí)中斷處理存儲(chǔ)區(qū)50設(shè)置在存儲(chǔ)器34中。在數(shù)據(jù)退出時(shí)中斷處理存儲(chǔ)區(qū)50中,當(dāng)CPU要讀或?qū)憶]有存儲(chǔ)器34中的實(shí)體的地址的變量時(shí),存儲(chǔ)由中斷執(zhí)行的處理,即一種所謂的異常處理。
在存儲(chǔ)在數(shù)據(jù)退出時(shí)中斷處理存儲(chǔ)區(qū)50中的中斷處理中,采用PE 33間的通信裝置與PE 26通信,并對(duì)沒有存儲(chǔ)器34的的實(shí)體的地址變量執(zhí)行讀或?qū)?,這是引起有變量的實(shí)體的存儲(chǔ)器29中斷的原因。因此,與其一致,PE 26需要實(shí)際上訪問用于該變量的存儲(chǔ)器29的程序。
而且,在存儲(chǔ)器34中設(shè)置了預(yù)取退出時(shí)中斷處理存儲(chǔ)區(qū)51。在預(yù)取退出時(shí)中斷處理存儲(chǔ)區(qū)51中,當(dāng)CPU32要調(diào)用沒有存儲(chǔ)器34中的實(shí)體的地址的函數(shù)時(shí),存儲(chǔ)由中斷執(zhí)行的處理,即一種所謂的異常處理。
在存儲(chǔ)在預(yù)取退出時(shí)中斷處理存儲(chǔ)區(qū)51中的中斷處理中,采用PE 33間的通信裝置與PE 26通信,并對(duì)沒有存儲(chǔ)器34中的實(shí)體的地址的函數(shù)執(zhí)行調(diào)用,這是引起有函數(shù)的實(shí)體的存儲(chǔ)器29中斷的原因。因此,與此對(duì)應(yīng),PE 26需要一個(gè)執(zhí)行形式程序,以便實(shí)際上訪問用于該函數(shù)的存儲(chǔ)器29。
注意,也可以對(duì)存儲(chǔ)在數(shù)據(jù)退出時(shí)中斷處理存儲(chǔ)區(qū)50或預(yù)取退出時(shí)中斷處理存儲(chǔ)區(qū)51中的中斷處理預(yù)先編程,存儲(chǔ)在非易失性存儲(chǔ)器35中并在執(zhí)行時(shí)間在存儲(chǔ)器34中開發(fā)。也可以在CPU 32中設(shè)置處理數(shù)據(jù)退出時(shí)中斷處理存儲(chǔ)區(qū)50或預(yù)取退出時(shí)中斷處理存儲(chǔ)區(qū)51。
這里,將進(jìn)一步描述存儲(chǔ)在數(shù)據(jù)退出時(shí)中斷處理存儲(chǔ)區(qū)45、預(yù)取退出時(shí)中斷處理存儲(chǔ)區(qū)46、數(shù)據(jù)退出時(shí)中斷處理存儲(chǔ)區(qū)50或預(yù)取退出時(shí)中斷處理存儲(chǔ)區(qū)51中的中斷處理的退出時(shí)處理。
圖10是本實(shí)施例中的退出時(shí)處理的流程圖。
在每一個(gè)PE中,當(dāng)對(duì)自身沒有實(shí)體的地址有參照請(qǐng)求時(shí)(數(shù)據(jù)的讀取(參照)、寫、對(duì)函數(shù)的調(diào)用),執(zhí)行中斷處理。在中斷處理中,執(zhí)行在PE間的通信,以便要求除自身之外的其它PE執(zhí)行訪問請(qǐng)求(A-1)。當(dāng)在PE中存在實(shí)體時(shí),已經(jīng)接收請(qǐng)求的PE執(zhí)行該請(qǐng)求,并且如果必要將執(zhí)行結(jié)果返回到作為請(qǐng)求器的PE(A-2)。作為請(qǐng)求器的PE由于中斷處理的完成而在中斷前返回到處理(A-3)。
以下將具體描述圖10所示的幾個(gè)例子的操作流程。
當(dāng)在執(zhí)行形式程序運(yùn)行期間對(duì)由其它處理器管理的存儲(chǔ)器空間上配置的變量發(fā)生參照(refer)請(qǐng)求時(shí),開始由作為參照請(qǐng)求器的處理器擁有的異常處理,以便檢測該事件,并將該參照請(qǐng)求發(fā)送至適當(dāng)?shù)奶幚砥?。接收該參照?qǐng)求的處理器參照該變量,以便將參照結(jié)果返回到參照請(qǐng)求器,并且作為參照請(qǐng)求器的處理器仿真執(zhí)行來自返回的結(jié)果的變量參照命令,以便在來自異常處理的中斷前返回到下一個(gè)命令或處理。
此外,當(dāng)在執(zhí)行形式程序運(yùn)行期間對(duì)由其它處理器管理的存儲(chǔ)器空間上配置的變量發(fā)生寫請(qǐng)求時(shí),開始由作為寫請(qǐng)求器的處理器所擁有的異常處理,以便檢測該事件,并將該寫請(qǐng)求發(fā)送至適當(dāng)?shù)奶幚砥?。接收該寫?qǐng)求的處理器寫該變量,以便將寫結(jié)果返回到寫請(qǐng)求器,并且作為寫請(qǐng)求器的處理器在來自異常處理的中斷前返回到下一個(gè)命令或處理。注意,對(duì)于寫,可以省略將寫結(jié)果返回到寫請(qǐng)求器的步驟。
而且,當(dāng)在執(zhí)行形式程序運(yùn)行期間對(duì)由其它處理器管理的存儲(chǔ)器空間上配置的變量發(fā)生調(diào)用請(qǐng)求時(shí),開始由作為調(diào)用請(qǐng)求器的處理器所擁有的異常處理,以便檢測該事件,并將該調(diào)用請(qǐng)求發(fā)送至適當(dāng)?shù)奶幚砥?。接收該調(diào)用請(qǐng)求的處理器請(qǐng)求調(diào)用該變量,以便將調(diào)用結(jié)果返回到調(diào)用請(qǐng)求器,并且作為調(diào)用請(qǐng)求器的處理器仿真執(zhí)行來自返回的結(jié)果的函數(shù)調(diào)用命令,以便在來自異常處理的中斷前返回到下一個(gè)命令或處理。
注意,在上述實(shí)施例中,已經(jīng)描述了將用于便攜式電話的單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法。但是,不必說,本發(fā)明不局限于用于便攜式電話的程序。
如上所述,根據(jù)本發(fā)明,當(dāng)在單一存儲(chǔ)器空間上運(yùn)行的軟件在多處理器上進(jìn)行操作時(shí),可以通過構(gòu)成諸如源文件、目標(biāo)文件和庫之類的軟件的單元單位而不改變軟件結(jié)構(gòu)或邏輯來考慮處理器的分配。因此,可以減少開發(fā)或論證所需的周期或操作所需的成本。
權(quán)利要求
1.一種將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法,包括步驟按照目標(biāo)文件單位將源文件分配給每一個(gè)處理器;和為每一個(gè)處理器生成用來在多處理器上操作運(yùn)行于單一存儲(chǔ)器空間上的軟件的執(zhí)行形式程序。
2.根據(jù)權(quán)利要求1所述的將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法,還包括步驟以禁止在處理器之間重復(fù)地址的方式處理安裝在由每一個(gè)處理器管理的存儲(chǔ)器空間上的執(zhí)行形式程序。
3.根據(jù)權(quán)利要求1或2所述的將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法,還包括步驟開始由作為參照請(qǐng)求器的處理器所擁有的異常處理,以便檢測對(duì)在執(zhí)行形式程序運(yùn)行期間在由其它處理器管理的存儲(chǔ)器空間上配置的變量的參照請(qǐng)求;和將該參照請(qǐng)求發(fā)送到適當(dāng)?shù)奶幚砥?,其中,接收該參照?qǐng)求的處理器參照該變量,以便將參照結(jié)果返回到參照請(qǐng)求器,并且作為參照請(qǐng)求器的處理器仿真執(zhí)行來自返回的結(jié)果的變量參照命令,以便從異常處理返回到下一個(gè)命令。
4.根據(jù)權(quán)利要求1或2所述的將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法,還包括步驟開始由作為寫請(qǐng)求器的處理器所擁有的異常處理,以便檢測對(duì)在執(zhí)行形式程序運(yùn)行期間在由其它處理器管理的存儲(chǔ)器空間上配置的變量的寫請(qǐng)求;和將該寫請(qǐng)求發(fā)送到適當(dāng)?shù)奶幚砥鳎渲?,接收該寫?qǐng)求的處理器寫該變量,并且作為寫請(qǐng)求器的處理器從異常處理返回到下一個(gè)命令。
5.根據(jù)權(quán)利要求1或2所述的將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法,還包括步驟開始由作為寫請(qǐng)求器的處理器所擁有的異常處理,以便檢測對(duì)在執(zhí)行形式程序運(yùn)行期間在由其它處理器管理的存儲(chǔ)器空間上配置的變量的寫請(qǐng)求;和將該寫請(qǐng)求發(fā)送到適當(dāng)?shù)奶幚砥?,其中,接收該寫?qǐng)求的處理器寫該變量,以便將寫結(jié)果返回到寫請(qǐng)求器,并且作為寫請(qǐng)求器的處理器從異常處理返回到下一個(gè)命令。
6.根據(jù)權(quán)利要求1或2所述的將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法,還包括步驟開始由作為調(diào)用請(qǐng)求器的處理器所擁有的異常處理,以便檢測對(duì)在執(zhí)行形式程序運(yùn)行期間在由其它處理器管理的存儲(chǔ)器空間上配置的函數(shù)的調(diào)用請(qǐng)求;和將該調(diào)用請(qǐng)求發(fā)送到適當(dāng)?shù)奶幚砥?,其中,接收該調(diào)用請(qǐng)求的處理器調(diào)用該函數(shù),以便將調(diào)用結(jié)果返回到調(diào)用請(qǐng)求器,并且作為調(diào)用請(qǐng)求器的處理器仿真執(zhí)行來自返回結(jié)果的函數(shù)調(diào)用命令,以便從異常處理返回到下一個(gè)命令。
7.根據(jù)權(quán)利要求3、4或5所述的將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法,還包括步驟在處理器之間通信,其中,能夠通過異常處理實(shí)現(xiàn)包括處理請(qǐng)求發(fā)送和處理結(jié)果返回的通信。
8.一種便攜式電話,安裝了根據(jù)權(quán)利要求1-6中的任意一個(gè)權(quán)利要求的方法所轉(zhuǎn)換的用于多處理器的軟件程序。
全文摘要
一種將用于單處理器的軟件程序轉(zhuǎn)換為用于多處理器的軟件程序的方法。在該方法中,為了生成在多處理器上操作運(yùn)行于在單一存儲(chǔ)器空間上運(yùn)行的軟件的執(zhí)行形式程序,按照目標(biāo)文件單位將源文件分配給每一個(gè)處理器,以便為每一個(gè)處理器生成執(zhí)行形式程序。執(zhí)行形式程序以禁止在處理器之間重復(fù)地址的配置來安裝在由每一個(gè)處理器管理的存儲(chǔ)器空間上。
文檔編號(hào)G06F9/45GK1523493SQ20041000558
公開日2004年8月25日 申請(qǐng)日期2004年2月18日 優(yōu)先權(quán)日2003年2月18日
發(fā)明者桑原賢二, 神田正己, 己 申請(qǐng)人:日本電氣株式會(huì)社