專利名稱:具有實時動態(tài)可變指令集的計算機的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機的指令集,更具體地,本發(fā)明涉及具有允許 以最佳存儲器容量展示最佳指令執(zhí)行能力的指令集的計算機的指令 集結(jié)構(gòu)。
背景技術(shù):
一般地,計算機以如下方式執(zhí)行給定程序,即CPU(中央處理單元)讀取并且解碼被翻譯成機器語言并且被存儲在主存儲器中的一個 或者多個指令,隨后生成被提供給諸如運算邏輯單元之類的相應(yīng)硬連 線邏輯的相應(yīng)控制代碼以操作硬連線邏輯。在此, 一個指令由是由OP代碼和一個或者多個操作數(shù)組成的,并且根據(jù)操作數(shù)的數(shù)目指令被分成o-操作數(shù)指令、1-操作數(shù)指令、和2, 3-操作數(shù)指令。Java處理器是采用0-操作數(shù)指令的示例,DSP (數(shù)字信號處理器)是采用1-操作數(shù)指令的示例,而大部分通用計 算機采用2, 3-操作數(shù)指令。同時,根據(jù)指令集的構(gòu)建方式,大部分計算機可被分成具有簡 單且數(shù)量較少的指令集的RISC (精簡指令集計算機)和具有盡可能 直接地對應(yīng)于高級編程語言的大量指令集的CISC (復(fù)雜指令集計算 機)。由于指令集采用不同的方法來有效地處理特定任務(wù)(即,程序), 所以根據(jù)指令集提出了各種計算機。也就是說,當計算機處理特定任 務(wù)時, 一般需要三種資源存儲器、CPU和用于該任務(wù)的時間,因此 計算機有必要根據(jù)每個特定任務(wù)為優(yōu)化資源利用而采取不同的方式。在此,指令集已經(jīng)有了許多改變,從而已經(jīng)開發(fā)出了具有不同規(guī)范的 各種計算機。同樣,用于解碼指令并生成(多個)控制代碼的方法被分成三 種類型。第一種類型是微編碼方法,通過這種方法,根據(jù)事先存儲在CPU的ROM (只讀存儲器)中的內(nèi)容,指令被翻譯成一系列控制代碼。 在第二種類型中,通過用PLA (可編程邏輯陣列)代替ROM進行控制 代碼的翻譯來生成并行控制代碼,相對于微編碼方法而言這樣可以降 低程序總的執(zhí)行時間。此外,第三種類型就是通過軟件的方式將指令 翻譯成控制代碼,其中提供小型微處理器并且通過在該小型微處理器 上運行的翻譯軟件將指令實時地進行翻譯以生成控制代碼。如果采用 軟件方式,那么增強了靈活性但是要比硬件方式需要更多的時間來進 行翻譯。然而,有時候,大部分計算機會處理不適合于被它們處理的指 令集的任務(wù),而不是僅僅處理適合于它們自己的指令集的任務(wù)(程 序)。因此,提出了具有兩種指令集并且利用用于各個指令集的兩個 解碼器生成控制代碼的多指令處理器,和用于通過軟件或者轉(zhuǎn)換器將 未處理的指令集轉(zhuǎn)換成處理過的指令集的指令并且隨后生成控制代 碼的處理器(參見韓國專利NO. 315739,韓國專利NO. 327777,韓國 特許公開專利公開NO. 2001-53241,韓國專利NO. 270947,等等)。 然而,由于實際上要求兩個指令解碼器(ROM或PLA),這些方法會 造成低效率和高成本。此外,在利用軟件的情況下,用于解碼指令的 時間如上所述至少成倍地增加。此外,這些方法不能進行諸如改變僅 僅一些要求的指令的含義(或者生成不同于原始控制代碼的控制代 碼)或者限制執(zhí)行之類的各種修改。同時,還提出了一種EISC (擴展指令集計算機),其利用擴展 寄存器和擴展標志按要求增加了操作數(shù)的長度。然而,這種EISC僅 僅相對于同一 0P代碼改變了操作數(shù)的長度,所以它不能被認為是指 令集的真正改變。因此,仍然存在對被構(gòu)建成能夠以較低成本和較高速度在實時 執(zhí)行中校正或者改變指令集的計算機的需要,例如改變一些要求的指 令的含義或者添加指令。發(fā)明內(nèi)容技術(shù)問題本發(fā)明被設(shè)計成符合以上要求,因此本發(fā)明的目的就是提供具 有動態(tài)可變指令集的計算機,其能實時地改變指令集。技術(shù)方案為了實現(xiàn)以上目的,本發(fā)明提供了一種指令解碼單元,其包括 用于解碼基本指令的基本指令解碼單元,和用于解碼在實時執(zhí)行期間 動態(tài)地改變的指令、并且生成對應(yīng)于動態(tài)地改變的指令的(多個)控 制代碼的動態(tài)解碼單元。也就是說,根據(jù)本發(fā)明的計算機包括CPU (中央處理單元),所 述CPU具有用于從存儲器中取出指令的指令取出單元,用于生成與指令取出單元所取出的指令相對應(yīng)的預(yù)定控制代碼的指令解碼單元,和由所述控制代碼操作的運算邏輯單元,并且所述指令解碼單元包括 基本指令解碼單元,其用于生成對應(yīng)于基本指令集的控制代碼;和動態(tài)指令解碼單元,其用于生成與對應(yīng)于所述基本指令集的指令的所述 控制代碼不同的另一個控制代碼,或者生成對應(yīng)于不存在于所述基本 指令集中的指令的控制代碼,其中存儲在所述動態(tài)指令解碼單元中的 指令或者相應(yīng)的代碼在實時執(zhí)行期間可改變。在此,由于動態(tài)指令解碼單元在實時執(zhí)行期間允許改變并且確保了高速操作,所以動態(tài)指令解碼單元優(yōu)選地是由CAM (內(nèi)容可尋址存儲器)組成的。更詳細地,組成所述動態(tài)指令解碼單元的CAM包括用于存儲改 變的指令集的存儲器裝置陣列,用于將輸入的指令代碼與存儲在所述 存儲器裝置陣列中的改變后的指令集進行比較的比較器,和用于存儲 在比較結(jié)果匹配的情況下要被輸出的控制代碼的代碼寄存器。此外,優(yōu)選地,從所述指令取出單元取出的指令和所述CPU中 的每個模塊(包括所述運算邏輯單元)的狀態(tài)信息一起被輸入至所述 基本指令解碼單元和所述動態(tài)指令解碼單元。同樣,組成所述動態(tài)指 令解碼單元的CAM進一步包括選擇寄存器,所述選擇寄存器用于為了 進行比較而選擇所述輸入指令代碼和所述狀態(tài)信息的特定位。
本發(fā)明的其它目的和方面將通過參考附圖對以下對實施例的描 述變得明顯,其中圖1是示意性地示出了根據(jù)本發(fā)明實施例的計算機的CPU中的 指令解碼單元的框圖;圖2是示出了圖1所示的指令解碼單元的動態(tài)指令解碼單元的 詳細框圖;和圖3是示出了圖2所示的動態(tài)指令解碼單元的每個CAM(內(nèi)容可 尋址存儲器)的框圖。
具體實施方式
下文中將參考附圖對本發(fā)明的優(yōu)選實施例進行詳細描述。在描 述之前,應(yīng)該理解的是,在說明書和所附權(quán)利要求中使用的術(shù)語不應(yīng) 該被解釋為限制于一般意思和字典上的意思,而是應(yīng)該在發(fā)明人被允 許按最適合說明的方式定義術(shù)語的原則的基礎(chǔ)上根據(jù)對應(yīng)于本發(fā)明 技術(shù)方面的意思和想法來解釋。因此,在此提出的描述僅僅是用于說 明的優(yōu)選示例,而不是用于限制本發(fā)明的范圍,所以應(yīng)該理解的是, 在不脫離本發(fā)明精神和范圍的情況下可以做出其它等價物或者修改。圖1是示出了根據(jù)本發(fā)明實施例的計算機的CPU中的指令解碼 單元的框圖。參見圖i,根據(jù)實施例的計算機的指令解碼單元ioo包括基本指令解碼單元IO,動態(tài)指令解碼單元20,和多路復(fù)用器30?;局噶?解碼單元10對包括在基本指令集中的指令進行解碼并且隨后將對應(yīng) 于它們的控制代碼輸出,并且它通常是由ROM或PLA組成。動態(tài)指令 解碼單元20對包括在根據(jù)本發(fā)明的動態(tài)指令集中的指令進行解碼并 且隨后將對應(yīng)于它們的控制代碼輸出,并且在本實施例中它是由CAM 組成。此外,多路復(fù)用器30根據(jù)選擇信號SELECT有選擇地將作為各 個指令解碼單元10和20的指令解碼結(jié)果輸出的控制代碼輸出。同時,參見圖1,就本實施例中布置了兩個并行的指令解碼單元 而言,本實施例的指令解碼單元看起來類似于具有兩個指令集的傳統(tǒng)計算機。但是,本實施例的動態(tài)指令解碼單元20不是用于固定的一 個指令集的解碼單元,而是用于相對于基本指令集補充地添加的或者改變的指令的解碼單元,所以具有本實施例的指令解碼單元ioo的處理器完全不同于傳統(tǒng)多指令集處理器。此外,由于它自己解碼指令并且隨后與基本指令解碼單元IO并行地輸出控制代碼,所以本實施例 的動態(tài)指令解碼單元20完全不同于用于將一個指令集轉(zhuǎn)換成另一個 指令集的轉(zhuǎn)換器(不管它是硬件還是軟件)。此外,在此,本實施例 的動態(tài)指令解碼單元20不同于用于暫時地存儲傳統(tǒng)EISC的擴展操作數(shù)和指示了操作數(shù)被擴展了的擴展標志的擴展寄存器。圖2是示出了圖l所示的動態(tài)指令解碼單元20的詳細框圖。參 見圖2,本實施例的動態(tài)指令解碼單元20包括N個并行的CAM單元 211、 212、…、21N,和選擇器23。對于一個或者多個動態(tài)指令代碼, 每個CAM單元21i存儲它的指令集和對應(yīng)于它們的控制代碼,并且在 控制代碼與要輸入的指令對應(yīng)的選擇信號SELECT 1、 SELECT 2、…、 SELECT N匹配的情況下輸出對應(yīng)的控制代碼。選擇器是一種多路復(fù) 用器,其根據(jù)從多個C雄單元21i輸出的選擇信號,有選擇地將從存 儲了匹配的動態(tài)指令的C認單元輸出的控制代碼輸出。同時,基本指令解碼單元10具有與通常具有一個指令解碼單元 的計算機中的指令解碼單元相同的結(jié)構(gòu),所以在此不再詳細描述。圖3是示出了圖2所示的每個C認單元21i的框圖。在此,例 如,每個CAM單元21i被圖解成存儲一個指令代碼和對應(yīng)的控制代碼。 參見圖3,除了它額外地具有存儲了與C細單元的每個指令對應(yīng)的控 制代碼的代碼寄存器21i9之外,組成本實施例的動態(tài)指令解碼單元 的CAM單元21i基本上具有與通用C認相同的結(jié)構(gòu)。具體地說,每個CAM單元21i包括存儲器裝置21i5,其用于存 儲動態(tài)地改變了的指令;自變量寄存器21il,其用于暫時地存儲輸 入指令代碼和狀態(tài)信息,這將在后面予以詳細描述;選擇寄存器 21i3,其用于從輸入指令代碼和狀態(tài)信息中提取要比較的部分;比較 器21i7,其用于將輸入指令代碼和狀態(tài)信息中被選擇的部分與存儲 在存儲器裝置21i5中的動態(tài)地改變了的指令進行比較從而確定它們之間的一致性;和代碼寄存器21i9,其用于存儲對應(yīng)于存儲在存儲 器裝置21i5中的動態(tài)地改變了的指令的控制代碼。同時,比較器21i7 的位元(bit-unit)結(jié)構(gòu),或者所謂的匹配邏輯(matching logic), 和存儲器裝置21i5具有與通用CAM相同的結(jié)構(gòu),所以在此不對它們 進行詳細描述?,F(xiàn)在將通過參考圖1至3對根據(jù)本實施例如上所述構(gòu)建的指令 解碼代碼100的操作予以詳細描述。首先,指令取出單元(未示出)在取出周期從主存儲器(未示 出)中讀取一個或者多個指令代碼,并且隨后將指令代碼輸入至指令 解碼代碼100。指令代碼是由0P代碼和O或者至少一個操作數(shù)組成。 同時,指示包括運算邏輯單元(未示出)的CPU的每個模塊的當前狀 態(tài)的狀態(tài)信息這時被一起輸入至指令解碼代碼100。獲取的指令代碼 和狀態(tài)信息一起被并行地輸入至基本指令解碼單元10和動態(tài)指令解 碼單元20。因此,不需要傳統(tǒng)轉(zhuǎn)換器執(zhí)行的獨立轉(zhuǎn)換處理。于是,在指令解碼周期,基本指令解碼單元io和動態(tài)指令解碼 單元20并行地同時對指令代碼和狀態(tài)信息進行解碼,隨后輸出對應(yīng) 的控制代碼。具體地說,由ROM或PLA組成的基本指令解碼單元10 根據(jù)通用指令解碼方法對指令進行解碼,并且隨后輸出控制代碼,所 以在此對此不再詳細描述。但是,在本發(fā)明中,在輸入動態(tài)地改變的指令代碼時,對應(yīng)于 代碼的指令可能并不存在于基本指令解碼單元10中,以及,雖然存 在對應(yīng)的指令,但是不同于初始控制代碼的改變的控制代碼應(yīng)該是指 令解碼代碼100的最終輸出。因此,作為動態(tài)指令解碼單元20的輸 出的改變的控制代碼應(yīng)該具有優(yōu)先級。也就是說,在動態(tài)指令解碼單 元20利用輸入指令代碼和狀態(tài)信息對指令進行解碼并且隨后發(fā)現(xiàn)存 在對應(yīng)的指令的情況下,動態(tài)指令解碼單元20將啟動的選擇信號 SELECT與對應(yīng)的改變的控制代碼一起輸出。此外,多路復(fù)用器30將 從動態(tài)指令解碼單元20輸出的控制代碼,輸出為與動態(tài)指令解碼單 元20的啟動的選擇信號SELECT相關(guān)的而與基本指令解碼單元10的 輸出無關(guān)的指令解碼單元100的輸出。同時,如果不存在作為動態(tài)指令解碼單元20的解碼結(jié)果的匹配的指令代碼和狀態(tài)信息,動態(tài)指令 解碼單元20輸出啟動的選擇信號而不輸出控制代碼,并且將從基本指令解碼單元IO輸出的控制代碼輸出為指令解碼單元100的輸出。 下面將詳細描述動態(tài)指令解碼單元20的指令解碼處理。 首先,輸入至動態(tài)指令解碼單元20的每個C認單元21i的指令 代碼和狀態(tài)信息被暫時地存儲在自變量寄存器21il中,并且要被比 較的部分被選擇寄存器21i3提取出來。也就是說,選擇寄存器21i3 是具有與自變量寄存器21il相同尺寸的寄存器。在指令代碼和狀態(tài) 信息中,選擇寄存器21i3將用于比較的位設(shè)置為1,并且還將不用 于比較的位(或者選擇寄存器并不關(guān)心的位)設(shè)置為0,于是從指令 代碼和狀態(tài)信息中提取出希望的部分。這時,如果指令本身是不存在 于基本指令集的附加的指令,那么用于比較的部分可能是0P代碼; 在指令本身是相同的但是特定執(zhí)行應(yīng)該根據(jù)系統(tǒng)中的狀態(tài)信息改變 的情況下,用于比較的部分可能是諸如異?;蛑袛嘈畔⒅惖臓顟B(tài)信 息;或者是操作碼或者操作數(shù)的一部分;或者狀態(tài)信息的一部分。此 外,有時候,它可能是整個指令代碼和狀態(tài)信息,并且這種情況實質(zhì) 上等同于選擇寄存器21i3不存在的情況。同時,存儲器裝置21i5中已經(jīng)存儲了用于基本指令集的改變的 指令代碼和狀態(tài)信息,并且比較器(或者匹配邏輯)21i7將其與選 擇寄存器21i3所選擇的輸入指令代碼和狀態(tài)信息進行比較。如果它 們在比較中匹配,那么選擇信號SELECT被輸出,并且代碼寄存器21i9中存儲的控制代碼被同時輸出。根據(jù)以上處理,對應(yīng)于就基本指令集而言改變的指令的控制代 碼被輸出,并且CPU中的諸如運算邏輯單元(未示出)之類的每個模 塊根據(jù)控制指令被操作,從而改變了的指令被執(zhí)行?,F(xiàn)在對實時動態(tài)地改變指令進行說明。如上所述,存儲器裝置 21i5中存儲了改變的指令,并且對應(yīng)的控制代碼被存儲在代碼寄存 器21i9中。這時,為了實時動態(tài)地改變指令集,需要在實時執(zhí)行期 間訪問存儲器裝置21i5和代碼寄存器21i9并且更新其內(nèi)容。為此, 允許將希望的數(shù)據(jù)輸入至存儲器裝置21i5和代碼寄存 器21i9的特定指令被包括在基本指令集中,隨后利用該特定指令在被解釋(或編譯) 成機器語言的程序代碼中作出必須的改變。在此,編譯器(即軟件) 負責利用高級語言將程序翻譯成機器語言并且還在其中插入要求的 特定指令,這并不是本發(fā)明的主要部分所以在此不再詳細描述。允許基本指令集改變的特定指令可由特定OP代碼和內(nèi)容將被改變的操作數(shù)組成。此外,基本指令解碼單元10的R0M或者PLA存儲了對應(yīng)于該特定指令的控制代碼。這個控制代碼啟動存儲器裝置21i5的寫信號WRITE一麗,其在啟動代碼寄存器2H9的寫信號 WRITE—CR的同時將特定指令的操作數(shù)內(nèi)容輸入至存儲器裝置21i5的 數(shù)據(jù)輸入INPUT—MM,并且將希望的(或者改變的)控制代碼輸入至 代碼寄存器21i9的數(shù)據(jù)輸入INPUT—CR。因此,利用作為基本指令的特定指令來實時動態(tài)地改變指令集是可能的。同時,選擇寄存器21i3的內(nèi)容,即用于提取要在輸入指令代碼 和狀態(tài)信息之間進行比較的部分的選擇碼,可同樣以類似于存儲器裝 置21i5和代碼寄存器21i9的方式被動態(tài)地改變。也就是說,選擇寄 存器21i3的內(nèi)容可以在實時執(zhí)行期間通過啟動選擇寄存器21i3的寫 信號WRITE—MR并且將希望的選擇碼輸入至數(shù)據(jù)輸入INPUT—MR來動態(tài) 地改變。如上所述,根據(jù)本發(fā)明的實施例,可以通過在實時執(zhí)行期間動 態(tài)地改變指令集來優(yōu)化程序代碼的大小和執(zhí)行時間。但是本發(fā)明并不 限于以上實施例,相反,在本發(fā)明的原理和精神范圍內(nèi)可以做出各種 變型。例如,先前的實施例的選擇器23的多路復(fù)用器30可被簡單的 0R門代替;并且選擇寄存器21i3可被排除,于是指令代碼和狀態(tài)信 息被整個地與存儲在存儲器裝置21i5的內(nèi)容進行比較。此外,在先 前的實施例中,動態(tài)指令解碼單元20被說明和解釋成包括N個并行 的C認單元211、 212、…、21N,但是它同樣可以僅僅包括一個C認 單元。因此,本發(fā)明要求保護的權(quán)利應(yīng)該被解釋成包括在所附權(quán)利要 求的等效范圍內(nèi)作出的改變和變型。工業(yè)實用性根據(jù)上面描述的本發(fā)明,可以通過實時動態(tài)地改變指令集同時 優(yōu)化程序代碼的大小和執(zhí)行時間。也就是說,由于基本指令集的一部 分在實時執(zhí)行過程中被動態(tài)地執(zhí)行,所以可以根據(jù)要完成的任務(wù)(或 程序)的性質(zhì)以比具有兩個指令集的處理器或者指令集之間的轉(zhuǎn)換器 更低的成本來優(yōu)化程序代碼的大小和執(zhí)行時間。此外,由于一個指令 代碼可被動態(tài)地完全改變,所以本發(fā)明具有比僅僅擴展了操作數(shù)長度 的EISC更加多樣和靈活的改變。此外,根據(jù)本發(fā)明,可以在工作現(xiàn)場立刻增加要求的功能,所 以本發(fā)明可以有效地用于校正錯誤和改進功能。
權(quán)利要求
1.一種包括CPU(中央處理單元)的計算機,其中所述CPU具有指令取出單元,其用于從存儲器中取出指令;指令解碼單元,用于生成與指令取出單元所取出的指令相對應(yīng)的預(yù)定控制代碼;和運算邏輯單元,其由控制代碼操作,其中所述指令解碼單元包括基本指令解碼單元,其用于生成對應(yīng)于基本指令集的控制代碼;和動態(tài)指令解碼單元,其用于生成與對應(yīng)于基本指令集的指令的控制代碼不同的另一個控制代碼,或者生成對應(yīng)于不存在于基本指令集中的指令的控制代碼,其中存儲在動態(tài)指令解碼單元中的指令或者相應(yīng)的控制代碼在實時執(zhí)行期間可改變。
2. 如權(quán)利要求1所述的計算機,其中動態(tài)指令解碼單元由CAM (內(nèi)容可尋址存儲器)組成。
3. 如權(quán)利要求2所述的計算機,其中組成所述動態(tài)指令解碼單 元的CAM包括存儲器裝置陣列,其用于存儲改變后的指令集;比較 器,其用于將輸入的指令代碼與存儲在所述存儲器裝置陣列中的所述改變后的指令集進行比較;和代碼寄存器,其用于存儲在比較結(jié)果匹 配的情況下要被輸出的控制代碼。
4. 如權(quán)利要求1至3中任意一項所述的計算機,其中從所述指 令取出單元取出的指令代碼和CPU中的每個模塊(包括所述運算邏輯 單元)的狀態(tài)信息一起被輸入至基本指令解碼單元和動態(tài)指令解碼單 元。
5. 如權(quán)利要求4所述的計算機,其中組成所述動態(tài)指令解碼單元的C扁進一步包括選擇寄存器,所述選擇寄存器用于為了進行比較 而選擇輸入指令代碼和狀態(tài)信息的特定位。
全文摘要
計算機在實時執(zhí)行期間允許指令集的動態(tài)改變。該計算機包括CPU(中央處理單元),該CPU具有用于從存儲器中取出指令的指令取出單元,用于生成與指令取出單元取出的指令相對應(yīng)的預(yù)定控制代碼的指令解碼單元,和由控制代碼操作的運算邏輯單元。指令解碼單元包括基本指令解碼單元,其用于生成對應(yīng)于基本指令集的控制代碼;和動態(tài)指令解碼單元,其用于生成與對應(yīng)于基本指令集的指令的控制代碼不同的另一個控制代碼,或者生成對應(yīng)于不存在于基本指令集中的指令的控制代碼。存儲在動態(tài)指令解碼單元的指令或者相應(yīng)的代碼在實時執(zhí)行期間可改變。
文檔編號G06F9/45GK101253480SQ200680031849
公開日2008年8月27日 申請日期2006年8月25日 優(yōu)先權(quán)日2005年8月31日
發(fā)明者任珍赫 申請人:明達爾半導體有限公司