專利名稱:在數(shù)字信號處理器內(nèi)調(diào)換碼的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是有關(guān)于數(shù)字信號處理,特別是有關(guān)于在嵌入式數(shù)字信號處理系統(tǒng)內(nèi)的碼調(diào)換(code swapping)。
背景技術(shù):
數(shù)字信號處理(Digital Signal Processing;DSP)是有關(guān)于電子信號的數(shù)字表現(xiàn)的檢查與處理。使用數(shù)字信號處理所處理的數(shù)字信號經(jīng)常是真實世界音訊及/或視訊的數(shù)字表現(xiàn)。
數(shù)字信號處理往往涉及在時域、空間域、頻域、自我相關(guān)域及/或小波(wavelet)域內(nèi)檢查數(shù)字信號。在各領(lǐng)域之間轉(zhuǎn)換數(shù)字信號一般是牽涉到精確的數(shù)學(xué)計算。一但表現(xiàn)在所要求的領(lǐng)域內(nèi)時,則數(shù)字信號可能已執(zhí)行了額外的數(shù)學(xué)計算。例如各種濾波可適用于數(shù)字信號。數(shù)字信號亦有可能被提供給各種壓縮/解壓縮以及加密/解密的算法則。
因為數(shù)字信號處理經(jīng)常處理數(shù)字表現(xiàn)的音訊及/或視訊,所以數(shù)字信號處理必須經(jīng)常實時動作。因此,對數(shù)字信號所執(zhí)行的數(shù)學(xué)計算必須僅有少許或不顯著的延遲。這些數(shù)學(xué)計算可能是由一般用途的計算機(jī)系統(tǒng)(例如桌上型計算機(jī)或工作站)或是專門的數(shù)字信號處理器(其英文縮寫亦是DSP)所執(zhí)行。
數(shù)字信號處理器是已被最佳化用以處理數(shù)字信號的特殊用途的微處理器。數(shù)字信號處理器一般是設(shè)計用以實時處理數(shù)字信號,例如透過使用一實時操作系統(tǒng)(real-timeoperating system;RTOS)。實時操作系統(tǒng)是一似乎可以同時處理多項任務(wù)(multiple task)的操作系統(tǒng),例如當(dāng)這些任務(wù)被接收時。實時操作系統(tǒng)一般是依優(yōu)先級處理任務(wù),并且允許高優(yōu)先權(quán)的任務(wù)中斷低優(yōu)先權(quán)的任務(wù)。實時操作系統(tǒng)一般管理存儲器的方式,是將一被特定任務(wù)鎖住的單元存儲器的時間最小化,并且將被鎖住的單元存儲器的大小最小化,并且當(dāng)多項任務(wù)同時存取相同區(qū)塊存儲器的機(jī)會最小化時,允許任務(wù)異步執(zhí)行。
數(shù)字信號處理器一般是用在嵌入式系統(tǒng)內(nèi)。嵌入式系統(tǒng)是一被整合到一較大裝置內(nèi)的特殊用途計算機(jī)。嵌入式系統(tǒng)一般是使用一已為特殊用途而客制化的小型(small-footprint)實時操作系統(tǒng)。數(shù)字信號處理經(jīng)常使用內(nèi)嵌式系統(tǒng)包含一數(shù)字信號處理器以及一實時操作系統(tǒng)。
數(shù)字信號處理器與一般用途計算機(jī)是可使用直接存儲器存取(direct memory access;DMA)存取可用的存儲器,例如使用一DMA驅(qū)動器。DMA允許計算機(jī)系統(tǒng)的各個組件(例如單獨(dú)的微處理器)直接連到可用的存儲器。
數(shù)字信號處理器可能包含一微處理器與一些晶載存儲器(on-chip memory;亦被稱為內(nèi)部或程序存儲器)。數(shù)字信號處理器亦可使用數(shù)字信號處理透過一外部數(shù)據(jù)總線存取的外部存儲器。外部存儲器可能是非揮發(fā)性存儲器(例如閃存、E EP ROM等)。內(nèi)部存儲器是具有許多超越外部存儲器的優(yōu)點(diǎn),例如內(nèi)部存儲器一般較快速且允許多項同時的讀取及/或?qū)懭搿@鐑?nèi)部存儲器可能是由多個內(nèi)部存儲器排(bank)所組成,其中多個內(nèi)部存儲器排中的一個或多個是可能被同時存取。
數(shù)字信號處理器可能被可使用內(nèi)部存儲器的數(shù)量限制。為了數(shù)字信號處理器所發(fā)展的應(yīng)用程序一般必須要求比可用程序存儲器還少的存儲器。為了彌補(bǔ)這種限制,當(dāng)應(yīng)用程序在沒有使用時,外部存儲器可能被用來儲存它們。當(dāng)數(shù)字信號處理器要求時,許多技術(shù)是被用以從外部存儲器將碼轉(zhuǎn)換至內(nèi)部存儲器,而這些技術(shù)經(jīng)常被稱為碼調(diào)換(code swapping)。
本技術(shù)所熟知的碼調(diào)換技術(shù)一般是要求額外的硬件(例如高速緩存(cache)以及存儲器管理單元)以執(zhí)行碼調(diào)換及/或?qū)?shù)字信號處理器的指令集執(zhí)行額外擴(kuò)充。額外的硬件及/或?qū)χ噶罴臄U(kuò)充可能會增加數(shù)字信號處理器的復(fù)雜度及/或成本。因此希望在一沒有要求額外硬件及/或?qū)χ噶罴瘮U(kuò)充的數(shù)字信號處理器內(nèi)執(zhí)行碼調(diào)換。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服上述缺點(diǎn),提供一種在數(shù)字信號處理器內(nèi)調(diào)換碼的方法及系統(tǒng)。
本發(fā)明一種在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,包含測定碼是出現(xiàn)在數(shù)字信號處理器外的一外部存儲器中,或是出現(xiàn)在數(shù)字信號處理器內(nèi)的一內(nèi)部存儲器中;以及當(dāng)碼被測定是出現(xiàn)在該外部存儲器中時,從該外部存儲器將碼復(fù)制到該內(nèi)部存儲器的一調(diào)換范圍區(qū)段內(nèi)。
其中還包含當(dāng)碼被測定是出現(xiàn)在該內(nèi)部存儲器中時,從該內(nèi)部存儲器執(zhí)行碼。
其中碼從該內(nèi)部存儲器被執(zhí)行是依據(jù)以優(yōu)先權(quán)為基準(zhǔn)的排程。
其中還包含當(dāng)碼已被從該外部存儲器復(fù)制到該內(nèi)部存儲器內(nèi)的調(diào)換范圍區(qū)段時,執(zhí)行來自該內(nèi)部存儲器內(nèi)該調(diào)換范圍區(qū)段的碼。
其中碼從該內(nèi)部存儲器被執(zhí)行是依據(jù)以優(yōu)先權(quán)為基準(zhǔn)的排程。
其中碼是一較大應(yīng)用程序的部分的存儲器區(qū)塊碼。
其中一低延遲碼是出現(xiàn)在該內(nèi)部存儲器的一低延遲碼區(qū)段內(nèi),以及一非低延遲碼是出現(xiàn)在外部存儲器內(nèi)。
其中該內(nèi)部存儲器的該低延遲碼區(qū)段是包含該內(nèi)部存儲器的一第一區(qū)段,以及該內(nèi)部存儲器的該調(diào)換范圍區(qū)段是包含該內(nèi)部存儲器的一第二區(qū)段。
其中該內(nèi)部存儲器的該第一區(qū)段的大小與該內(nèi)部存儲器的該第二區(qū)段的大小是可依據(jù)該數(shù)字信號處理器的需求而改變,以使得該內(nèi)部存儲器的該第一區(qū)段與該內(nèi)部存儲器的該第二區(qū)段所組合而成的大小不超出該內(nèi)部存儲器的大小。
其中一或多個存儲器區(qū)塊是執(zhí)行該較大應(yīng)用程序的原本所需,該一或多個該些執(zhí)行該較大應(yīng)用程序原本所需的存儲器區(qū)塊是包含一執(zhí)行查看。
其中當(dāng)該較大應(yīng)用程序執(zhí)行時,是需要一或多個額外存儲器區(qū)塊。
其中該一或多個執(zhí)行該較大應(yīng)用程序原本所需的存儲器區(qū)塊是包含一第一執(zhí)行查看;以及該一或多個額外存儲器區(qū)塊包含一或多個額外執(zhí)行查看。
其中多項執(zhí)行查看可能具有一或多個共同的存儲器區(qū)塊。
其中每一該第一執(zhí)行查看與額外的執(zhí)行查看是依序被復(fù)制到該內(nèi)部存儲器的該調(diào)換范圍區(qū)段,以使得在一下一執(zhí)行查看被復(fù)制到該內(nèi)部存儲器的該調(diào)換范圍區(qū)段的一先前執(zhí)行查看的范圍的前,該先前執(zhí)行查看被從該內(nèi)部存儲器的該調(diào)換范圍區(qū)段移除。
其中該較大應(yīng)用程序是一可執(zhí)行任務(wù),并且每一該些存儲器區(qū)塊的碼是一單元的可執(zhí)行任務(wù),并且該數(shù)字信號處理器可執(zhí)行該可執(zhí)行任務(wù),無論該些單元的可執(zhí)行任務(wù)是位于該外部存儲器內(nèi)或該內(nèi)部存儲器內(nèi),其中當(dāng)單元的可執(zhí)行任務(wù)正被復(fù)制到該內(nèi)部存儲器的該調(diào)換范圍區(qū)段時,另一可執(zhí)行任務(wù)可能被執(zhí)行。
其中該較大應(yīng)用程序是一函數(shù)庫的可執(zhí)行函數(shù),并且每一該些存儲器區(qū)塊的碼是一可執(zhí)行的函數(shù),并且該數(shù)字信號處理器可執(zhí)行該可執(zhí)行函數(shù),無論該函數(shù)庫的可執(zhí)行任務(wù)是位于該外部存儲器內(nèi)或該內(nèi)部存儲器內(nèi),其中當(dāng)一可執(zhí)行函數(shù)正被復(fù)制到該內(nèi)部存儲器的該調(diào)換范圍區(qū)段時,另一可執(zhí)行函數(shù)可能被執(zhí)行。
本發(fā)明一種在數(shù)字信號處理器內(nèi)調(diào)換碼的系統(tǒng),其特征在于,包含該數(shù)字信號處理器外的一外部存儲器,以及該數(shù)字信號處理器內(nèi)的一內(nèi)部存儲器,該內(nèi)部存儲器包含一用以儲存一低延遲碼的低延遲碼區(qū)段以及一用以儲存已從該外部存儲器復(fù)制的碼的調(diào)換范圍區(qū)段。
其中位于該內(nèi)部存儲器的碼是由數(shù)字信號處理器執(zhí)行,位于該外部存儲器的碼是從該外部存儲器被復(fù)制到該內(nèi)部存儲器的該調(diào)換范圍區(qū)段,并且由數(shù)字信號處理器執(zhí)行。
其中將位于該外部存儲器的碼復(fù)制到該內(nèi)部存儲器的該調(diào)換范圍區(qū)段的方式包括一連結(jié)器單元、一直接存儲器存取單元及一實時操作系統(tǒng),其中之一。
其中來自該內(nèi)部存儲器的碼是依據(jù)以優(yōu)先權(quán)為基準(zhǔn)的排程執(zhí)行。
其中位于該外部存儲器的碼是一非低延遲碼。
其中該低延遲碼區(qū)段是包含該內(nèi)部存儲器的一第一區(qū)段,該調(diào)換范圍區(qū)段是包含該內(nèi)部存儲器的一第二區(qū)段。
其中該內(nèi)部存儲器的該第一區(qū)段的大小與該內(nèi)部存儲器的該第二區(qū)段的大小是可依據(jù)該數(shù)字信號處理器的需求而改變,以使得該內(nèi)部存儲器的該第一區(qū)段與該內(nèi)部存儲器的該第二區(qū)段所組合而成的大小不超出該內(nèi)部存儲器的大小。
其中位于該外部存儲器的碼是一存儲器區(qū)塊碼,乃為一較大應(yīng)用程序的部分的碼。
其中執(zhí)行該較大應(yīng)用程序包括一或多個存儲器區(qū)塊,該一或多個存儲器區(qū)塊是包含至少一以上的執(zhí)行查看。
其中多項執(zhí)行查看可能具有一或多個共同的存儲器區(qū)塊。
為進(jìn)一步說明本發(fā)明的具體技術(shù)內(nèi)容,以下結(jié)合實施例及附圖詳細(xì)說明如后,其中圖1是本發(fā)明的一較佳數(shù)字信號處理器執(zhí)行碼調(diào)換的實施例的方塊圖;圖2是本發(fā)明的一較佳碼調(diào)換技術(shù)的示意圖;圖3是本發(fā)明的一較佳碼調(diào)換所使用的“伺候任務(wù)連接”技術(shù)的流程圖;圖4是本發(fā)明的一較佳碼調(diào)換所使用的“伺候函數(shù)呼叫”技術(shù)的流程圖;以及圖5是一可實施本發(fā)明的方法與系統(tǒng)的較佳計算機(jī)系統(tǒng)的方塊圖。
具體實施例方式
本發(fā)明的一些實施例會詳細(xì)描述如下。然而,除了詳細(xì)描述外,本發(fā)明還可以廣泛地在其它的實施例施行,且本發(fā)明的范圍不受限定,其以之后的專利范圍為準(zhǔn)。并且,為提供更清楚的描述及更容易理解本發(fā)明,圖標(biāo)內(nèi)各部分并沒有依照其相對尺寸繪圖,某些尺寸與其它相關(guān)尺度的比例已經(jīng)被夸張;不相關(guān)的細(xì)節(jié)部分也未完全繪出,以求圖標(biāo)的簡潔。
為了清楚說明的理由,特殊的專門術(shù)語是被用于描述本發(fā)明的圖標(biāo)所圖解的較佳實施例中。然而,本發(fā)明不應(yīng)被這些特殊專門術(shù)語所限制,并且所應(yīng)了解的是每一特定組件是包含所有以相同方式操作的技術(shù)均等物。
本發(fā)明的實施例是企圖在一沒有要求額外硬件及/或?qū)?shù)字信號處理器指令集擴(kuò)充的數(shù)字信號處理器中執(zhí)行碼調(diào)換。請參照第一圖,其為本發(fā)明的一較佳數(shù)字信號處理器執(zhí)行碼調(diào)換的實施例的方塊圖。一數(shù)字信號處理器10可能是一設(shè)計用來執(zhí)行數(shù)字信號處理的一般用途計算機(jī),或是一已最佳化用以處理數(shù)字信號的特殊用途微處理器。例如數(shù)字信號處理器10可能是一單微芯片或一單整合電子電路(或稱集成電路(IC))。
本發(fā)明是描述有關(guān)于一特殊用途微處理器的數(shù)字信號處理器,然而所應(yīng)了解的是,本發(fā)明亦可適用于一執(zhí)行數(shù)字信號處理的一般用途計算機(jī)。
數(shù)字信號處理器10可能包含內(nèi)部存儲器13。例如內(nèi)部存儲器13可能是建立在數(shù)字信號處理器微芯片或IC內(nèi)的存儲器。數(shù)字信號處理器10可透過一內(nèi)部總線17與內(nèi)部存儲器13通信。數(shù)字信號處理器10可能具有一提供連接到內(nèi)部存儲器13(例如透過內(nèi)部總線17)的直接存儲器存取(DMA)單元12。DMA單元12可以是由實體電路或是一可在數(shù)字信號處理器10執(zhí)行的軟件組件所組成。
數(shù)字信號處理器10可具有中斷指令集的能力。數(shù)字信號處理器10可執(zhí)行一操作系統(tǒng)(例如一實時操作系統(tǒng)16(real-time operating system;RTOS))。例如RTOS可能是一小型(small-footprint)的操作系統(tǒng)。RTOS 16是與數(shù)字信號處理器10的指令集兼容。
數(shù)字信號處理器10可連接外部存儲器11。外部存儲器11可能位于數(shù)字信號處理器微芯片或IC旁。外部存儲器11可由一外部數(shù)據(jù)總線18連接數(shù)字信號處理器10。一DMA單元可提供數(shù)字信號處理器10對外部存儲器的存取。此DMA單元可能和被用以提供對內(nèi)部存儲器13存取的DMA單元12是相同的DMA單元。
數(shù)字信號處理器10可能具有一連結(jié)器(linker)(未繪出)。連結(jié)器可以是一程序組件(例如一具有組合各種單元碼執(zhí)行所要求的碼的程序、背景程序(daemon)或服務(wù))。連結(jié)器可能藉由放置定義未定義符號的碼而解決未定義符號的參考數(shù)據(jù),例如由獲得碼的起始地址以及碼的長度與碼對未定義符號的連結(jié)(例如由定義未定義符號的碼替換未定義符號)。連結(jié)器亦可重新放置各種單元的碼于一存儲器空間,使得當(dāng)碼在執(zhí)行時,各種單元的碼可以占有與其它單元相關(guān)的正確位置而使得碼成功執(zhí)行。
根據(jù)本發(fā)明的實施例,程序存儲器13可能安排至少兩個區(qū)段。程序存儲器13可被劃分成一低延遲碼區(qū)段14(lowlatency code section)。低延遲碼區(qū)段14的存儲器可能放置對數(shù)字信號處理器緊急的碼。例如這些碼可能是被要求低延遲及/或高頻寬的碼。低延遲碼區(qū)段14可以是固定大小或者是可變大小。例如低延遲碼區(qū)段14可能占有將近內(nèi)部存儲器13的全部的一半。
程序存儲器13亦可被劃分成一調(diào)換范圍區(qū)段15。調(diào)換范圍15的存儲器可放置對數(shù)字信號處理器較不緊急的碼。這些碼可能是比數(shù)字信號處理器緊急碼要求較少頻寬的碼。例如這些碼可能是句柄或是要求使用者互動的函數(shù)。調(diào)換范圍15可以是固定大小或者是可變大小。例如調(diào)換范圍15可能占有將近內(nèi)部存儲器13的全部的一半。
如以上所述,低延遲碼區(qū)段14和調(diào)換范圍15的大小是可變的。例如低延遲碼區(qū)段14的大小和調(diào)換范圍15的大小是可依據(jù)數(shù)字信號處理器10的需求而改變。例如假設(shè)數(shù)字信號處理器10要求額外的低延遲碼區(qū)段14,則一部分原本分配給調(diào)換范圍15的存儲器可能被重新分配給低延遲碼區(qū)段14。又例如假設(shè)數(shù)字信號處理器10要求額外的調(diào)換范圍15,則一部分原本分配給低延遲碼區(qū)段14的存儲器可能被重新分配給調(diào)換范圍15。然而,低延遲碼區(qū)段14與調(diào)換范圍15所組合而成的大小可能不能超出內(nèi)部存儲器13的大小。
調(diào)換范圍15可由RTOS 16控制。數(shù)字信號處理器10可由使用RTOS 16及/或已被程序設(shè)計用以執(zhí)行本發(fā)明的實施例的連結(jié)器,執(zhí)行本發(fā)明實施例的碼調(diào)換。例如一數(shù)字信號處理器可能藉由更新RTOS 16及/或連結(jié)器而轉(zhuǎn)換成用以執(zhí)行本發(fā)明的一或多個實施例。因此,不須修改數(shù)字信號處理器10的指令集,就可實施本發(fā)明的實施例。
如果必要時,RTOS 16則可利用DMA 12從外部存儲器轉(zhuǎn)換(調(diào)換)存儲器區(qū)塊的碼到調(diào)換范圍15。例如一在數(shù)字信號處理器10執(zhí)行的數(shù)字信號處理應(yīng)用程序可能原本要求一些區(qū)塊的碼被調(diào)換到調(diào)換范圍15內(nèi)執(zhí)行。當(dāng)應(yīng)用程序執(zhí)行要求一或多個尚未備妥在調(diào)換范圍15內(nèi)的區(qū)塊的碼時,則所要求的一或多個區(qū)塊的碼可被轉(zhuǎn)換至調(diào)換范圍15內(nèi)(例如可由RTOS 16透過DMA 12執(zhí)行碼調(diào)換)。
緊急DSP碼和位于低延遲碼區(qū)段14內(nèi)的碼是隨時可被執(zhí)行。因此不需請求調(diào)換以執(zhí)行緊急DSP碼。非緊急碼的調(diào)換不需制止數(shù)字信號處理器同時執(zhí)行其它的任務(wù)。例如當(dāng)非緊急碼正在調(diào)換時,緊急碼及/或已出現(xiàn)在調(diào)換范圍15內(nèi)的非緊急碼可能被執(zhí)行以符合其它的任務(wù)。
根據(jù)本發(fā)明的一實施例,一“執(zhí)行查看”技術(shù)可能被用以調(diào)換碼到調(diào)換范圍15內(nèi)。請參照圖2,其為本發(fā)明的一較佳碼調(diào)換技術(shù)的示意圖。
例如執(zhí)行查看技術(shù)可能藉由修改聯(lián)結(jié)器的程序設(shè)計而實施。例如額外的指令集可被加到連結(jié)器以實施執(zhí)行查看技術(shù)。根據(jù)本發(fā)明的一較佳實施例,一執(zhí)行查看是一限定安排的存儲器區(qū)塊駐留在程序存儲器內(nèi)一段特定期間(例如直到一執(zhí)行的應(yīng)用程序結(jié)束)。而包含一特定執(zhí)行查看的存儲器區(qū)塊可能是以一特定順序及/或存儲器位置(例如相對于其它存儲器區(qū)塊)安置。包含一特定執(zhí)行查看的存儲器區(qū)塊可能被連續(xù)安置在程序存儲器內(nèi),或是在他們之間含有一或多個未使用或其它應(yīng)用程序所使用的存儲器間隙(gap)。每一執(zhí)行查看可包含希望執(zhí)行一特殊組件碼的存儲器區(qū)塊。例如一執(zhí)行查看可能包含執(zhí)行一特定應(yīng)用程序全部所需的存儲器區(qū)塊。當(dāng)此組件的碼將被執(zhí)行時,適當(dāng)?shù)膱?zhí)行查看將被加載程序存儲器的調(diào)換范圍區(qū)段內(nèi)。
此外,一特定組件的碼,例如一應(yīng)用程序可能要求連續(xù)多項的執(zhí)行查看,在此情況下,一第一執(zhí)行查看(RV1)可能(例如在時間T1)被加載程序存儲器的調(diào)換范圍區(qū)段內(nèi)。在時間T2,當(dāng)應(yīng)用程序要求不同組(set)的存儲器區(qū)塊時,第一執(zhí)行查看(RV1)可能被從調(diào)換范圍區(qū)段清除,且一第二執(zhí)行查看(RV2)可能在時間T3被加載調(diào)換存儲器內(nèi)。同理,在時間T4,當(dāng)應(yīng)用程序要求不同組的存儲器區(qū)塊時,第二執(zhí)行查看(RV2)可能被從調(diào)換范圍區(qū)段清除,且一第三執(zhí)行查看(RV3)可能在時間T5被加載存儲器內(nèi)。
每一執(zhí)行查看(RV1、RV2以及RV3)可能包含一或多個含有期望執(zhí)行的部分特定組件碼的存儲器區(qū)塊。此使得多項執(zhí)行查看可能包含一或多個相同的存儲器區(qū)塊。例如第一執(zhí)行查看(RV1)和第二執(zhí)行查看(RV2)均含有存儲器區(qū)塊1(B1)以及存儲器區(qū)塊2(B2)。因此,當(dāng)?shù)谝粓?zhí)行查看(RV1)被第二執(zhí)行查看(RV2)替換,且當(dāng)存儲器區(qū)塊3(B3)以及存儲器區(qū)塊4(B4)被存儲器區(qū)塊5(B5)以及存儲器區(qū)塊6(B6)覆寫替換時,存儲器區(qū)塊1(B1)以及存儲器區(qū)塊2(B2)可能依舊留在存儲器內(nèi)。
當(dāng)存儲器區(qū)塊(B1-B6)可能全部駐留在外部存儲器內(nèi)時,其等不需被儲存當(dāng)成執(zhí)行查看。各種執(zhí)行查看在必要時,可能藉由連結(jié)器將其在程序存儲器內(nèi)組合,藉此相較于一次在外部存儲器內(nèi),更加最小化儲存相同存儲器區(qū)塊的需求。此外,每一執(zhí)行查看在外部存儲器內(nèi)可被預(yù)先歸類以加快復(fù)制到程序存儲器中。
如以上所述,連結(jié)器可能被用以組合從外部存儲器到程序存儲器的各種期望的存儲器區(qū)塊以形成所期望的執(zhí)行查看。連結(jié)器在連結(jié)期間可能完成(例如由測定碼)一特定碼組件執(zhí)行的下一階段所要求的定義與符號,并將此信息插入一表格中。此表格則可能在實時程序化DMA控制器的執(zhí)行期間被RT OS或其它軟件使用以完成碼調(diào)換。由連結(jié)器所產(chǎn)生的表格可能駐留在數(shù)據(jù)存儲器且包含RTOS重要的信息,例如一區(qū)塊的大小、區(qū)塊在外部存儲器內(nèi)的起始地址、映像(mapping)到區(qū)域程序存儲器的起始地址以及在一區(qū)塊內(nèi)其它功能的參考資料。例如對每一區(qū)塊而言,下列的項目可能是由連結(jié)器所建立,并且可能駐留在數(shù)據(jù)存儲器內(nèi)區(qū)塊序號5大小1024
在外部存儲器內(nèi)的起始地址0xfff3335在區(qū)域程序存儲器內(nèi)的起始地址0x123ab參考資料get_data,start_counting,decode_my_image參考資料可能是與一定義在可執(zhí)行和可連結(jié)格式(ELF)的值相關(guān)的符號。一符號可能對照一函數(shù)(亦稱功能)(例如get_data)或一任務(wù)(例如decode_my_image)。
當(dāng)要呼叫一函數(shù)或執(zhí)行一任務(wù)時,如果參考資料不是在區(qū)域程序存儲器內(nèi)時,則RTOS可能先檢查參考資料然后使用此表格執(zhí)行碼調(diào)換。
根據(jù)本發(fā)明的一較佳實施例,一“伺候任務(wù)連接”技術(shù)是被用以調(diào)換碼到調(diào)換范圍區(qū)段。請參閱圖3,其為本發(fā)明的一較佳碼調(diào)換所使用的技術(shù)的流程圖。根據(jù)此實施例,單元的可執(zhí)行碼(例如單元的任務(wù))可能被儲存在外部存儲器內(nèi)。然后RTOS可能依據(jù)任務(wù)呼叫而不管此任務(wù)是儲存在外部存儲器內(nèi)或內(nèi)部存儲器內(nèi)(步驟S31)。例如此可能由程序設(shè)計RTOS以識別儲存在外部存儲器內(nèi)的任務(wù)的可執(zhí)行任務(wù)(例如當(dāng)那些儲存在外部存儲器內(nèi)的任務(wù)實際被儲存在程序存儲器內(nèi)時使其顯現(xiàn))。然后測定所呼叫的任務(wù)是否儲存在程序存儲器內(nèi)(步驟S32)。如果此任務(wù)被測定是儲存在程序存儲器內(nèi)時(是,步驟S32),則此任務(wù)可以被執(zhí)行(步驟S33)。如果此任務(wù)不是儲存在程序存儲器內(nèi),而是儲存在外部存儲器內(nèi)時(否,步驟S32),則RTOS可能命令DMA加載所有執(zhí)行此任務(wù)所需的存儲器區(qū)塊至調(diào)換范圍區(qū)段(步驟S34)。例如此步驟可藉由上述的執(zhí)行查看技術(shù)的連結(jié)器而加以實施。然后RTOS執(zhí)行一任務(wù)切換(步驟S35)。任務(wù)切換是當(dāng)RTOS在所要求的存儲器區(qū)塊被加載調(diào)換范圍區(qū)段時,執(zhí)行另一任務(wù)(例如一較高優(yōu)先權(quán)的任務(wù))。除了任務(wù)正加載的存儲器排,有必要執(zhí)行另一位于程序存儲器中的另一存儲器排的任務(wù),其中程序存儲器無法多項存取單一存儲器排。例如當(dāng)加載任務(wù)被加載程序存儲器時,除了即將執(zhí)行任務(wù)所使用程序存儲器的存儲器排,此任務(wù)所加載程序存儲器的存儲器排可能被選取當(dāng)成程序存儲器的一存儲器排。
在所有屬于此任務(wù)的必要區(qū)塊被成功加載程序存儲器內(nèi)后,由DMA控制器可產(chǎn)生中斷以指示RTOS任務(wù)已備妥可以執(zhí)行(步驟S36)。然后執(zhí)行一測定以判斷是否一較高優(yōu)先權(quán)的任務(wù)正在執(zhí)行(步驟S37)。如果測定沒有較高優(yōu)先權(quán)的任務(wù)正在執(zhí)行(否,步驟S37),例如沒有任務(wù)執(zhí)行或一較低優(yōu)先權(quán)的任務(wù)正在執(zhí)行,則正在執(zhí)行的任務(wù)可能被中斷,并且成功加載的任務(wù)可被執(zhí)行(步驟S33)。如果測定一較高優(yōu)先權(quán)的任務(wù)正在執(zhí)行,則成功加載的任務(wù)必須等較高優(yōu)先權(quán)的任務(wù)執(zhí)行完成且沒有其它較高優(yōu)先權(quán)的任務(wù)等候執(zhí)行時,才會被執(zhí)行(步驟S38)。
步驟37及38是源于以優(yōu)先權(quán)為基準(zhǔn)的排程的范例。所應(yīng)了解的是,本發(fā)明的實施例是可利用除了步驟37及38以外其它以優(yōu)先權(quán)為基準(zhǔn)的排程的實施替代步驟37及38。
根據(jù)本發(fā)明的另一較佳實施例,一“伺候函數(shù)呼叫”技術(shù)可被用以調(diào)換碼到調(diào)換范圍區(qū)段內(nèi)。此伺候函數(shù)呼叫技術(shù)是相似于上述的伺候任務(wù)連接技術(shù)。請參閱圖4,其為本發(fā)明的一較佳碼調(diào)換所使用的“伺候函數(shù)呼叫”技術(shù)的流程圖。
根據(jù)此實施例,可執(zhí)行函數(shù)的函數(shù)庫可能儲存在外部存儲器內(nèi)。然后RTOS可依據(jù)函數(shù)呼叫而不管此函數(shù)的函數(shù)庫是儲存在外部存儲器內(nèi)或內(nèi)部存儲器內(nèi)(步驟S41)。然后測定所呼叫函數(shù)的函數(shù)庫是否儲存在程序存儲器內(nèi)(步驟S42)。如果所呼叫函數(shù)的函數(shù)庫被測定是儲存在程序存儲器內(nèi)時(是,步驟S42),則此函數(shù)可從函數(shù)庫被執(zhí)行(步驟S43)。如果所呼叫的函數(shù)不是儲存在程序存儲器內(nèi),而是儲存在外部存儲器內(nèi)時(否,步驟S42),則RTOS可能命令DMA加載所有執(zhí)行此函數(shù)的必要的存儲器區(qū)塊到調(diào)換范圍區(qū)段(步驟S44)。例如可能是整體函數(shù)庫或單獨(dú)的函數(shù)被加載程序存儲器。然后RTOS執(zhí)行一任務(wù)切換(步驟S45)。在執(zhí)行任務(wù)切換中,除了函數(shù)及/或函數(shù)庫加載的存儲器排,有必要執(zhí)行另一位于程序存儲器中的另一存儲器排的任務(wù),其中程序存儲器無法多項存取單一存儲器排。
在所有屬于此函數(shù)及/或函數(shù)庫的必要區(qū)塊被成功加載程序存儲器內(nèi)后,由DMA控制器可產(chǎn)生中斷以指示RTOS函數(shù)已備妥可以執(zhí)行(步驟S46)。然后執(zhí)行一測定以判定是否一較高優(yōu)先權(quán)的任務(wù)正在執(zhí)行(步驟S47)。如果測定沒有較高優(yōu)先權(quán)的任務(wù)正在執(zhí)行(否,步驟S47),則正在執(zhí)行的任務(wù)可能被中斷,并且此函數(shù)可被執(zhí)行(步驟S43)。如果測定一較高優(yōu)先權(quán)的任務(wù)正在執(zhí)行,則此函數(shù)必須等較高優(yōu)先權(quán)的任務(wù)執(zhí)行完成且沒有其它較高優(yōu)先權(quán)的任務(wù)等候執(zhí)行時,才會被執(zhí)行(步驟S48)。
同理,所應(yīng)了解的是,本發(fā)明的實施例是可利用除了步驟47及48以外其它以優(yōu)先權(quán)為基準(zhǔn)的排程的實施替代步驟47及48。
請參閱圖5,其為一可實施本發(fā)明的方法與系統(tǒng)的較佳計算機(jī)系統(tǒng)的方塊圖。本發(fā)明的系統(tǒng)及方法可用軟件應(yīng)用程序的型式在一計算機(jī)系統(tǒng)(例如大型計算機(jī)、個人計算機(jī)、手持式計算機(jī)、服務(wù)器等)執(zhí)行。此軟件應(yīng)用程序可能被儲存在一可由計算機(jī)系統(tǒng)區(qū)域存取的記錄媒體,及/或一可由硬件線路或無線連接網(wǎng)絡(luò)(例如局域網(wǎng)絡(luò)或網(wǎng)際網(wǎng)絡(luò))存取的記錄媒體。
計算機(jī)系統(tǒng)一般參照如系統(tǒng)1000可能包含,例如一中央處理單元1001(CPU)、隨機(jī)存取存儲器1004(RAM)、一列表機(jī)接口1010、一顯示單元1011、一局域網(wǎng)絡(luò)(LAN)資料傳送控制器1005、一LAN接口1006、一網(wǎng)絡(luò)控制器1003、一內(nèi)部總線1002以及一或多個輸入裝置1009(例如一鍵盤、鼠標(biāo)等)。如圖所示,系統(tǒng)1000可能連接一資料儲存裝置(例如經(jīng)由一連接器1007連接一硬盤1008)。
以上所述僅為本發(fā)明的較佳實施例而已,并非用以限定本發(fā)明的申請專利范圍;凡其它為脫離本發(fā)明所揭示的精神下所完成的等效改變或修飾,均應(yīng)包含在下述的申請專利范圍。
權(quán)利要求
1.一種在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,包含測定碼是出現(xiàn)在數(shù)字信號處理器外的一外部存儲器中,或是出現(xiàn)在數(shù)字信號處理器內(nèi)的一內(nèi)部存儲器中;以及當(dāng)碼被測定是出現(xiàn)在該外部存儲器中時,從該外部存儲器將碼復(fù)制到該內(nèi)部存儲器的一調(diào)換范圍區(qū)段內(nèi)。
2.如權(quán)利要求1項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,其中還包含當(dāng)碼被測定是出現(xiàn)在該內(nèi)部存儲器中時,從該內(nèi)部存儲器執(zhí)行碼。
3.如權(quán)利要求2項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,其中碼從該內(nèi)部存儲器被執(zhí)行是依據(jù)以優(yōu)先權(quán)為基準(zhǔn)的排程。
4.如權(quán)利要求2項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,其中還包含當(dāng)碼已被從該外部存儲器復(fù)制到該內(nèi)部存儲器內(nèi)的調(diào)換范圍區(qū)段時,執(zhí)行來自該內(nèi)部存儲器內(nèi)該調(diào)換范圍區(qū)段的碼。
5.如權(quán)利要求4項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,其中碼從該內(nèi)部存儲器被執(zhí)行是依據(jù)以優(yōu)先權(quán)為基準(zhǔn)的排程。
6.如權(quán)利要求1項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,其中碼是一較大應(yīng)用程序的部分的存儲器區(qū)塊碼。
7.如權(quán)利要求6項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,其中一低延遲碼是出現(xiàn)在該內(nèi)部存儲器的一低延遲碼區(qū)段內(nèi),以及一非低延遲碼是出現(xiàn)在外部存儲器內(nèi)。
8.如權(quán)利要求7項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,其中該內(nèi)部存儲器的該低延遲碼區(qū)段是包含該內(nèi)部存儲器的一第一區(qū)段,以及該內(nèi)部存儲器的該調(diào)換范圍區(qū)段是包含該內(nèi)部存儲器的一第二區(qū)段。
9.如權(quán)利要求8項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,其中該內(nèi)部存儲器的該第一區(qū)段的大小與該內(nèi)部存儲器的該第二區(qū)段的大小是可依據(jù)該數(shù)字信號處理器的需求而改變,以使得該內(nèi)部存儲器的該第一區(qū)段與該內(nèi)部存儲器的該第二區(qū)段所組合而成的大小不超出該內(nèi)部存儲器的大小。
10.如權(quán)利要求6項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,其中一或多個存儲器區(qū)塊是執(zhí)行該較大應(yīng)用程序的原本所需,該一或多個該些執(zhí)行該較大應(yīng)用程序原本所需的存儲器區(qū)塊是包含一執(zhí)行查看。
11.如權(quán)利要求10項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,其中當(dāng)該較大應(yīng)用程序執(zhí)行時,是需要一或多個額外存儲器區(qū)塊。
12.如權(quán)利要求11項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,其中該一或多個執(zhí)行該較大應(yīng)用程序原本所需的存儲器區(qū)塊是包含一第一執(zhí)行查看;以及該一或多個額外存儲器區(qū)塊包含一或多個額外執(zhí)行查看。
13.如權(quán)利要求12項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,其中多項執(zhí)行查看可能具有一或多個共同的存儲器區(qū)塊。
14.如權(quán)利要求12項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,其中每一該第一執(zhí)行查看與額外的執(zhí)行查看是依序被復(fù)制到該內(nèi)部存儲器的該調(diào)換范圍區(qū)段,以使得在一下一執(zhí)行查看被復(fù)制到該內(nèi)部存儲器的該調(diào)換范圍區(qū)段的一先前執(zhí)行查看的范圍的前,該先前執(zhí)行查看被從該內(nèi)部存儲器的該調(diào)換范圍區(qū)段移除。
15.如權(quán)利要求10項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,其中該較大應(yīng)用程序是一可執(zhí)行任務(wù),并且每一該些存儲器區(qū)塊的碼是一單元的可執(zhí)行任務(wù),并且該數(shù)字信號處理器可執(zhí)行該可執(zhí)行任務(wù),無論該些單元的可執(zhí)行任務(wù)是位于該外部存儲器內(nèi)或該內(nèi)部存儲器內(nèi),其中當(dāng)單元的可執(zhí)行任務(wù)正被復(fù)制到該內(nèi)部存儲器的該調(diào)換范圍區(qū)段時,另一可執(zhí)行任務(wù)可能被執(zhí)行。
16.如權(quán)利要求10項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,其特征在于,其中該較大應(yīng)用程序是一函數(shù)庫的可執(zhí)行函數(shù),并且每一該些存儲器區(qū)塊的碼是一可執(zhí)行的函數(shù),并且該數(shù)字信號處理器可執(zhí)行該可執(zhí)行函數(shù),無論該函數(shù)庫的可執(zhí)行任務(wù)是位于該外部存儲器內(nèi)或該內(nèi)部存儲器內(nèi),其中當(dāng)一可執(zhí)行函數(shù)正被復(fù)制到該內(nèi)部存儲器的該調(diào)換范圍區(qū)段時,另一可執(zhí)行函數(shù)可能被執(zhí)行。
17.一種在數(shù)字信號處理器內(nèi)調(diào)換碼的系統(tǒng),其特征在于,包含該數(shù)字信號處理器外的一外部存儲器,以及該數(shù)字信號處理器內(nèi)的一內(nèi)部存儲器,該內(nèi)部存儲器包含一用以儲存一低延遲碼的低延遲碼區(qū)段以及一用以儲存已從該外部存儲器復(fù)制的碼的調(diào)換范圍區(qū)段。
18.如權(quán)利要求17項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的系統(tǒng),其特征在于,其中位于該內(nèi)部存儲器的碼是由數(shù)字信號處理器執(zhí)行,位于該外部存儲器的碼是從該外部存儲器被復(fù)制到該內(nèi)部存儲器的該調(diào)換范圍區(qū)段,并且由數(shù)字信號處理器執(zhí)行。
19.如權(quán)利要求18項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的系統(tǒng),其特征在于,其中將位于該外部存儲器的碼復(fù)制到該內(nèi)部存儲器的該調(diào)換范圍區(qū)段的方式包括一連結(jié)器單元、一直接存儲器存取單元及一實時操作系統(tǒng),其中之一。
20.如權(quán)利要求17項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的系統(tǒng),其特征在于,其中來自該內(nèi)部存儲器的碼是依據(jù)以優(yōu)先權(quán)為基準(zhǔn)的排程執(zhí)行。
21.如權(quán)利要求17項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的系統(tǒng),其特征在于,其中位于該外部存儲器的碼是一非低延遲碼。
22.如權(quán)利要求17項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的系統(tǒng),其特征在于,其中該低延遲碼區(qū)段是包含該內(nèi)部存儲器的一第一區(qū)段,該調(diào)換范圍區(qū)段是包含該內(nèi)部存儲器的一第二區(qū)段。
23.如權(quán)利要求22項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的系統(tǒng),其特征在于,其中該內(nèi)部存儲器的該第一區(qū)段的大小與該內(nèi)部存儲器的該第二區(qū)段的大小是可依據(jù)該數(shù)字信號處理器的需求而改變,以使得該內(nèi)部存儲器的該第一區(qū)段與該內(nèi)部存儲器的該第二區(qū)段所組合而成的大小不超出該內(nèi)部存儲器的大小。
24.如權(quán)利要求17項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的系統(tǒng),其特征在于,其中位于該外部存儲器的碼是一存儲器區(qū)塊碼,乃為一較大應(yīng)用程序的部分的碼。
25.如權(quán)利要求24項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的系統(tǒng),其特征在于,其中執(zhí)行該較大應(yīng)用程序包括一或多個存儲器區(qū)塊,該一或多個存儲器區(qū)塊是包含至少一以上的執(zhí)行查看。
26.如權(quán)利要求25項所述的在數(shù)字信號處理器內(nèi)調(diào)換碼的系統(tǒng),其特征在于,其中多項執(zhí)行查看可能具有一或多個共同的存儲器區(qū)塊。
全文摘要
一種在數(shù)字信號處理器內(nèi)調(diào)換碼的方法,此方法包括測定碼是出現(xiàn)在此數(shù)字信號處理器外的一外部存儲器內(nèi),或是出現(xiàn)在此數(shù)字信號處理器內(nèi)的一內(nèi)部存儲器內(nèi),并且當(dāng)碼被測定是出現(xiàn)在此外部存儲器內(nèi)時,將碼從此外部存儲器復(fù)制到此內(nèi)部存儲器的一調(diào)換范圍區(qū)段。
文檔編號G06F9/46GK1838078SQ20061000492
公開日2006年9月27日 申請日期2006年1月16日 優(yōu)先權(quán)日2005年1月19日
發(fā)明者卡利德·高揚(yáng) 申請人:威盛電子股份有限公司