專利名稱:虛擬多工微處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種虛擬多工微處理器,特別涉及一種可以同時(shí)執(zhí)行多組獨(dú)立軟件程序,且程序之間彼此不互相干擾的多工微處理器或微控制器。
現(xiàn)有的微處理器(Central Processing Unit’CPU)或微控制器(micro-controller)是許多電子控制系統(tǒng)的心臟,許多復(fù)雜的運(yùn)算及控制都是由軟件程序配合控制器來執(zhí)行,以達(dá)到所需的功能。因此軟件及控制器的功能與復(fù)雜度決定了整個(gè)控制系統(tǒng)的研究開發(fā)周期及制作成本,隨著集成電路技術(shù)的進(jìn)步,控制器的運(yùn)算速度亦不斷提高。然而,在許多固定的運(yùn)用上,所須實(shí)現(xiàn)的速度并不會(huì)隨之提高,故而在相同的應(yīng)用速度要求下,,如何利用微控制器速度的進(jìn)步來降低系統(tǒng)的成本包含軟件和硬件的研究開發(fā)或硬件的制作成本成為一個(gè)很重要的課題。
圖1所示為傳統(tǒng)的CPU結(jié)構(gòu)圖;傳統(tǒng)的微處理器CPU內(nèi)部大致由程序計(jì)數(shù)器14(Program Counter)、堆疊15(Stack)、邏輯運(yùn)算單元18(Arithmetic Logic Unit′ALU)、寄存器(Register)等構(gòu)成。使用者下達(dá)指令至CPU執(zhí)行時(shí),是執(zhí)行由程序計(jì)數(shù)器14所指到在程序貯存集13(InstructionROM)中的指令開始執(zhí)行,程序貯存集13中貯存了各種指令的組合(即稱為程序),每次執(zhí)行時(shí),CPU依程序計(jì)數(shù)器的值至指令貯存集13中,取出對應(yīng)執(zhí)行的指令放入指令寄存器12(Instruction Register)中,再由指令解碼器11(Instruction Decoder)解出指令中所包含的常數(shù)(Literal)、直接位址或寄存器位址(Register Address)等信號(hào),分別送至工作寄存器16(Working Register)、程序計(jì)數(shù)器14及寄存器集19(Register File)中使用,而邏輯運(yùn)算單元18則是對來自工作寄存器16及寄存器集19的數(shù)據(jù)執(zhí)行運(yùn)算后,將結(jié)果送至數(shù)據(jù)總線(DATA BUS)或送回工作寄存器16,并依運(yùn)算結(jié)果更改狀態(tài)寄存器17(StatusRegister)的值,在指令執(zhí)行期間,程序計(jì)數(shù)器14會(huì)自動(dòng)加一,以準(zhǔn)備執(zhí)行指令貯存集13內(nèi)的下一個(gè)指令。若有中斷或副程序呼叫發(fā)生時(shí),程序計(jì)數(shù)器的值會(huì)推入堆疊15中,而將新的執(zhí)行位址載入程序計(jì)數(shù)器14,其后若執(zhí)行副程序返回的指令,則由堆疊中取回程序計(jì)數(shù)器14的值,由中斷或呼叫的下一個(gè)指令繼續(xù)執(zhí)行。因CPU中的程序計(jì)數(shù)器14、堆疊15、寄存器等數(shù)據(jù)都代表了一個(gè)程序執(zhí)行時(shí)的狀態(tài),故當(dāng)另一個(gè)程序要執(zhí)行時(shí)(如中斷的發(fā)生或程序間的切換),程序必須要把目前各寄存器的狀態(tài)儲(chǔ)存,才能開始執(zhí)行另一個(gè)程序,而若有多個(gè)程序要同時(shí)執(zhí)行時(shí),儲(chǔ)存狀態(tài)的工作便會(huì)占去CPU大部分的時(shí)間,程序間的相互影響會(huì)使得多工方式變得非常復(fù)雜。
為此,本發(fā)明的主要目的即是提供一種微處理器設(shè)計(jì),它將微處理器視為多個(gè)使用。于軟件的層次中,多組程序可以彼此不互相干擾地在一個(gè)虛擬多工的CPU中執(zhí)行,且不須額外的多工程序,因此軟件的研究開發(fā)可以很容易地累積與共用。而硬件方面亦可因集成電路技術(shù)的進(jìn)步,直接降低系統(tǒng)的成本,或提高其效能。
本發(fā)明的目及技術(shù)手段特點(diǎn)為1,本發(fā)明系利用分時(shí)多工的技術(shù),于工作時(shí)間內(nèi)畫分為多個(gè)區(qū)段,而于該區(qū)段中能同時(shí)執(zhí)行多個(gè)程序,并由時(shí)段控制器(Time slice controller)對時(shí)段加以分配。
2,本發(fā)明系修改關(guān)于寄存器等記憶單元的結(jié)構(gòu),使之可以依據(jù)不同的時(shí)段傳出或讀入相對的寄存器內(nèi)容,使各段程序在其所屬的時(shí)段都能看能各別的寄存器,且不須額外軟件的執(zhí)行,即可達(dá)到共用的效果。
3,本發(fā)明所包括有程序計(jì)數(shù)器、寄存器、堆疊,系采用多時(shí)段的設(shè)計(jì),并均由時(shí)段控制器所控制。
4,本發(fā)明的時(shí)段控制器系以分散的方式至各需要時(shí)段的元件中,如一般寄存器、程序計(jì)數(shù)器等,并直接由前述元件自行產(chǎn)生。
以下將結(jié)合附圖對本發(fā)明的結(jié)構(gòu)設(shè)計(jì)與操作原理以及發(fā)明特征,作一詳細(xì)說明,其中圖1為傳統(tǒng)的CPU結(jié)構(gòu)圖;圖2為本發(fā)明時(shí)段控制器輸出的Sa、Sb實(shí)例圖;圖3A為傳統(tǒng)寄存器的示意圖及其時(shí)序圖;圖3B為本發(fā)明多時(shí)段寄存器的示意圖;圖3C為本發(fā)明多時(shí)段寄存器的實(shí)施例圖;圖4A為傳統(tǒng)堆疊的實(shí)施例圖;圖4B為本發(fā)明多時(shí)段堆疊的實(shí)施例方塊圖;圖4C為傳統(tǒng)堆疊控制邏輯的實(shí)施例圖;圖4D為本發(fā)明多時(shí)段堆疊控制邏輯的實(shí)施例圖;圖5A為傳統(tǒng)程序計(jì)數(shù)器的示意圖;圖5B為本發(fā)明程序計(jì)數(shù)器的示意圖;圖6為本發(fā)明的完整實(shí)施例圖。
圖號(hào)說明11 指令解碼器12 指令寄存器
13指令貯存集14程序計(jì)數(shù)器141 邏輯電路142 寄存器15堆疊151 控制邏輯1511 位址寄存器1512 邏輯電路152 存儲(chǔ)器16工作寄存器17狀態(tài)寄存器18邏輯運(yùn)算單元19寄存器集21多時(shí)段指令寄存器22多時(shí)段程序計(jì)數(shù)器221 邏輯電路222 多時(shí)段寄存器23堆疊231 控制邏輯2311 多時(shí)段位址寄存器2312 邏輯電路232 存儲(chǔ)器24多時(shí)段工作寄存器25多時(shí)段狀態(tài)寄存器26多時(shí)段寄存器集27時(shí)段控制器為了更方便地闡明本發(fā)明與傳統(tǒng)結(jié)構(gòu)之間的差異,特將附圖作出如上安排,并以比較的方式,分別描述如后圖2所示為本發(fā)明時(shí)段控制器輸出的Sa、Sb實(shí)例圖;圖中以四個(gè)時(shí)段(S0、S1、S2、S3)為例,該四個(gè)時(shí)段分別指定給四個(gè)程序(P0、P1、P2、P3),而以如圖6所示的時(shí)段控制器27來產(chǎn)生Sel信號(hào),來代表目前的CPU資源作不同分配,圖中以Sa、Sb為兩種分配方式,其中Sa的分配方式為S0、S1、S2及S3都有相同的運(yùn)算速度,而Sb中的S0則有三倍于S1、S2及S3的速度,在Sel信號(hào)產(chǎn)生后,所有共用的寄存器都會(huì)依Sel信號(hào)啟動(dòng)相對應(yīng)的寄存器內(nèi)容。
以下將針對一般寄存器、程序計(jì)數(shù)器、堆疊等單元的修改,作一詳細(xì)說明,而各附圖中各電路方塊的右上角,出現(xiàn)有三角形的黑色部位,即表示其受時(shí)段控制器所控制。
圖3A所示為傳統(tǒng)寄存器的示意圖及其時(shí)序圖;其中R/_W信號(hào)是用來決定本周期時(shí)讀出或?qū)懭氲膭?dòng)作,en信號(hào)是作為啟動(dòng)寄存器(如指令寄存器12、工作寄存器16、狀態(tài)寄存器17等),而Data為讀出或?qū)懭氲臄?shù)據(jù),以附圖中的時(shí)序而言,該R/_W信號(hào)為低(LOW)且en信號(hào)為高(HIGH)時(shí),即為數(shù)據(jù)寫入寄存器的動(dòng)作,而當(dāng)R/_W信號(hào)為高(HIGH)且en信號(hào)為低(LOW)時(shí),即為數(shù)據(jù)讀出寄存器的動(dòng)作。
如圖3B所示為本發(fā)明多時(shí)段寄存器的示意圖;其中除原有的信號(hào)外(如前述的R/_W、en及Data),另多了一組Sel信號(hào),再如圖3C所示,該Sel信號(hào)系來自時(shí)段控制器,此寄存器(如圖6所示多時(shí)段指令寄存器21、多時(shí)段工作寄存器24、多時(shí)段狀態(tài)寄存器25及多時(shí)段寄存器集26)即依據(jù)此Sel信號(hào)決定應(yīng)啟動(dòng)何組寄存器內(nèi)容給此時(shí)段所屬的程序,因此各時(shí)段的程序皆可以利用到各別的寄存器。
圖4A所示,為傳統(tǒng)堆疊的實(shí)施例圖;在傳統(tǒng)的CPU中,堆疊15可用于直接提供程序使用,或用于程序中的付程序呼叫時(shí)儲(chǔ)存程序計(jì)數(shù)器14的內(nèi)容,是由推入(push)、讀出堆疊(pop)及不動(dòng)作(NOP)等控制信號(hào)所決定,其特性為先進(jìn)后出,亦即數(shù)據(jù)推入堆疊15后,依次儲(chǔ)存于堆疊15的底部,讀出時(shí)則自堆疊15的頂端依次讀出;在本例中真正的數(shù)據(jù)是經(jīng)由控制邏輯151存入存儲(chǔ)器152中,如圖4C所示該控制邏輯151中包含有一位址寄存器1511及一邏輯電路1512,當(dāng)使用者下達(dá)推入、讀出堆疊或不動(dòng)作的指令后,該邏輯電路151即依照控制信號(hào)的型式輸出R/-W信號(hào)至存儲(chǔ)器152,同時(shí)至位址寄存器1511找出該欲讀寫的存儲(chǔ)器152位址,即能將數(shù)據(jù)讀/寫于存儲(chǔ)器152中。
同樣,本發(fā)明將堆疊23的內(nèi)容分為多組指定給多段程序使用,因此多了一組來自時(shí)段控制器的sel信號(hào),來選擇啟動(dòng)各時(shí)段所屬的堆疊23單元(如圖4B所示),因此各時(shí)段也得到各自的堆疊23空間;在本例中真正的數(shù)據(jù)是經(jīng)由控制邏輯231存入存儲(chǔ)器232中,如圖4D所示該控制邏輯231中包含有一位址寄存器2311及一邏輯電路2312,與傳統(tǒng)控制邏輯151的不同點(diǎn),在于該位址寄存器1511改為多時(shí)段位址寄存器2311,當(dāng)使用者下達(dá)推入、讀出堆疊或不動(dòng)作的指令后,該邏輯電路2312即依照控制信號(hào)的型式輸出R/-W信號(hào)至存儲(chǔ)器,同時(shí)至多時(shí)段位址寄存器2311找出該欲讀寫的存儲(chǔ)器232位址,但必須要先獲得時(shí)段控制器27所傳送的sel信號(hào),使此時(shí)段得到自己的堆疊23空間,即能將數(shù)據(jù)讀/寫于存儲(chǔ)器232中。
圖5A所示為傳統(tǒng)程序計(jì)數(shù)器的示意圖;程序計(jì)數(shù)器14系用來決定程序中的下一個(gè)應(yīng)執(zhí)行的程序碼在存儲(chǔ)器中的位址,因此當(dāng)在切換程序時(shí),程序計(jì)數(shù)器14的內(nèi)容應(yīng)該被保留,如圖所示,該寄存器142為程序計(jì)數(shù)計(jì)14的寄存器,它儲(chǔ)存著目前程序碼的執(zhí)行位址,而邏輯電路141則是將寄存器142的內(nèi)含值加一,以備在周期結(jié)束時(shí)將下一個(gè)執(zhí)行位址存入寄存器142內(nèi),另一方面,堆疊15則是當(dāng)付程序呼叫(CALL)或付程序返回(RETURN)時(shí),將寄存器142的值推入或讀出。
圖5B所示,為本發(fā)明程序計(jì)數(shù)器的示意圖;由于多時(shí)段程序計(jì)數(shù)器22包括有多時(shí)段寄存器222及邏輯電路221,因此本發(fā)明于此部份,是將寄存器引用前述的多時(shí)段寄存器及前述的堆疊,均由時(shí)段控制器27的sel信號(hào)所控制。
因此就本發(fā)明的整體而言,本發(fā)明可以把前述圖1的傳統(tǒng)微處理器結(jié)構(gòu)依寄存器、堆疊及程序計(jì)數(shù)器,改變多時(shí)段的控制,以達(dá)到各時(shí)段分別有自己的寄存器及程序執(zhí)行狀態(tài),而彼此不互相影響,而達(dá)到CPU分時(shí)共用,且不加額外的軟件負(fù)擔(dān),故而不同的程序模組可以很方便地加入CPU的執(zhí)行中。
圖6所示,為本發(fā)明的完整實(shí)施例圖;本發(fā)明微處理器內(nèi)部依上述原理,將寄存器修改為多時(shí)段寄存器(如指令寄存器21、工作寄存器24、狀態(tài)寄存器25及寄存器集26),程序計(jì)數(shù)器14修改為多時(shí)段程序計(jì)數(shù)器22、堆疊15亦改為多時(shí)段堆疊23,而前述的各多時(shí)段單元,是由時(shí)段控制器27產(chǎn)生控制的Sel信號(hào);執(zhí)行程序時(shí),是由時(shí)段產(chǎn)生器27將各時(shí)段加以分配,使于此時(shí)段的程序執(zhí)行,能擁有自己的寄存器、程序計(jì)數(shù)器及堆疊,而其它加入執(zhí)行的程序,同樣也擁有各自的寄存器、程序計(jì)數(shù)器及堆疊,如此程序的執(zhí)行將不相互影響,以分時(shí)多工的方式,達(dá)到總線共用、硬件結(jié)構(gòu)共用的目的,進(jìn)而能使各程序能獨(dú)立執(zhí)行。
由前述可見,本發(fā)明虛擬多工微處理器的結(jié)構(gòu),能安排不同的程序在微處理機(jī)內(nèi)獨(dú)立執(zhí)行且彼此不互相干擾,以達(dá)到減化程序復(fù)雜度,進(jìn)而縮短開發(fā)時(shí)程、降低開發(fā)費(fèi)用、生產(chǎn)成本及降低軟硬件代價(jià),提供較佳效能,確具有產(chǎn)業(yè)利用價(jià)值。
權(quán)利要求
1.一種可以同時(shí)執(zhí)行多組獨(dú)立軟件程序,且程序之間彼此互不干擾的虛擬多工微處理器或微控制器,其特征在于,它包括產(chǎn)生一控制信號(hào)并使所有共用的寄存器啟動(dòng)相對應(yīng)寄存器內(nèi)容的時(shí)段控制器,執(zhí)行程序指令運(yùn)算的邏輯運(yùn)算單元,用以解出程序相對應(yīng)控制碼的指令解碼器,依時(shí)段控制器以指示目前各程序執(zhí)行位址的多時(shí)段程序計(jì)數(shù)器,寄存各程序執(zhí)行時(shí)所需的數(shù)據(jù)、可為各程序?qū)倩蚬灿?、并由時(shí)段控制器所控制的多時(shí)段寄存器,由時(shí)段控制器所控制并儲(chǔ)存相對應(yīng)時(shí)段的多時(shí)段程序計(jì)數(shù)器內(nèi)含值的多時(shí)段堆疊,其中的時(shí)段控制器以分時(shí)方式劃分成多個(gè)時(shí)段向其中的多時(shí)段程序計(jì)數(shù)器、多時(shí)段寄存器以及多時(shí)段堆疊輸出一代表對目前微處理器資源作不同分配的控制信號(hào),使于此時(shí)段的程序執(zhí)行,擁有自身的寄存器、程序計(jì)數(shù)器以及堆疊,各程序的執(zhí)行不致相互影響,并保持?jǐn)?shù)據(jù)總線共用與硬件結(jié)構(gòu)共用。
2.按照權(quán)利要求1所述的虛擬多工微處理器或微控制器,其特征在于,所述時(shí)段控制器是以分散的方式至各需要時(shí)段的元件中,如一般寄存器、程序計(jì)數(shù)器等,并為直接由前述元件自行產(chǎn)生的。
3.按照權(quán)利要求1所述的虛擬多工微處理器或微控制器,其特征在于,所述多時(shí)段程序計(jì)數(shù)器內(nèi)部設(shè)有多個(gè)程序寄存器或堆疊,且啟動(dòng)時(shí)受所述時(shí)段控制器產(chǎn)生的控制信號(hào)控制。
全文摘要
本發(fā)明涉及一種虛擬多工微處理器(Virtual-multitasked CPU),特別涉及一種可以同時(shí)執(zhí)行多組獨(dú)立軟件程序,且程序間彼此不互相干擾的多工微處理器或微控制器,它包括有一邏輯運(yùn)算單元、多時(shí)段程序計(jì)數(shù)器、寄存器、堆疊、時(shí)段控制器及一些周邊電路。通過本發(fā)明的構(gòu)思,將能安排不同的程序在微處理機(jī)內(nèi)獨(dú)立執(zhí)行且彼此不互相干擾,以達(dá)到減化程序復(fù)雜度,進(jìn)而縮短開發(fā)時(shí)程、降低開發(fā)費(fèi)用、生產(chǎn)成本及降低軟硬件代價(jià),提供較佳效能。
文檔編號(hào)G06F15/00GK1156859SQ9610121
公開日1997年8月13日 申請日期1996年2月7日 優(yōu)先權(quán)日1996年2月7日
發(fā)明者李桓端, 施炳煌 申請人:凌陽科技股份有限公司