新四季網

直接從內存執行自身指令的微處理器的裝置和方法

2023-05-01 09:18:11 1

專利名稱:直接從內存執行自身指令的微處理器的裝置和方法
技術領域:
本發明是與計算機系統中指令處理相關的領域,尤指一種允許微處理器直接從內存執行應用程式的裝置,而應用程式是使用自身微指令(native micro instruction)。
背景技術:
微處理器執行應用程式是為了自動化某些任務,像是調節咖啡機內的加熱組件的溫度,或由自動收款機來控制錢的分布,或依據操作者於桌上型計算機上所輸入的公式來處理報表上的數目。
早期微處理器的用來寫入應用程式的程序指令,是各個特殊微處理器分別使用其特有的程序指令。舉例來說,英特爾(Intel)於早期公元1970年所生產的微處理器4004具有46個指令,程式設計師可從這46個指令來選擇寫入的應用程式,而這些被寫入到4004的程序,只能執行在4004上。
從早期公元1970年開始,已經發展出數百種不同的微處理器設計。而當許多微處理器都是獨創設計,一些製造商試著發展兼容化微處理器(clone microprocessor)來壟斷部分市場,而兼容化微處理器能夠執行編碼到執行於不同微處理器的應用程式。在公元1979年執行現存的應用的重要性在此技藝中漸漸普及,當美國國防部(Department of Defenses,DoD)證實大部分的投資在MIL-STD-1750應用程式的發行,軍用標準證明(documenting)概念性16位微處理器的高階設計組件將用於未來空運及武器系統中。MIL-STD-1750被指定為指令集結構(instruction set architecture(ISA)),因為除了說明微處理器的結構上的特徵(architectural features)像是可尋址內部緩存器(addressable internal registers)的種類及數量,它也可以精確地證明一套程序指令來執行於概念性的微處理器。如此可隨著已發展於軍事的結構標準(architectural standard),製造商可任意設計符合執行1750結構的微處理器,並使用設計和製造技術充分運用它們的產品到某些所需的組件。例如一製造商能用這種方式實施1750結構,使其增大1750微處理器的速度,而另一個製造商能運用它們的產品以增大它的電阻至電磁放射信號。尚有另一個製造商能調整它們的產品來降低產品的成本。不管用什麼組件來加強特殊設計的實施,每一個1750微處理器的實施能夠執行依據1750 ISA編碼的應用程式。
在公元1980年期間這個趨勢爆發於商業市場上,當桌上型計算機開始大量生產到商業社會上。當特殊應用程式受到大眾的喜愛,使用者開始挑戰企業以提供已改善及更專業的精進微處理器,而這些微處理器更能執行這些熱門的軟體應用。接著微處理器的設計者已開始著重於提供更快速、更健全、可靠度佳、更省電以及成本低的微處理器設計,而這些微處理器設計能夠執行新的軟體以及現存的應用程式(legacyapplication)。隨著今日桌上型計算機工業的發展,或許受到最廣大使用的指令集結構是為32位指令集結構。32位指令集結構、或x86指令集結構證明數百種程序指令,其能用於各種廣泛的尋址形式於今日桌上型計算機內數據的處理。今日許多不同的製造商生產可兼容x86的微處理器,而每一個可兼容x-86的微處理器的設計就如同1750微處理器,修改成強調如複雜性、電力、速度、或成本的特殊特徵。
為了實施符合特殊指令集結構的實體微處理器,今日設計者使用的許多技術完全清楚呈現給應用程式編碼人員。然而應用程式編碼人員會關注於符合微處理器提供內部緩存器(internal register)的型式和數量,以及依據說明書微處理器能夠執行指令集結構的指令,他/她無意識到有多少符合的功能被提供。硬體和內部邏輯電路組件用應用程式的指令集結構文件證明,一般指定為結構資源。而用微處理器設計所提供的硬體和邏輯電路來實施這些結構資源,在某種程度上認為一些特殊設計方面通常稱為自身資源。舉例來說,用x86指令集結構文件證明8個內部結構緩存器,而這些緩存器能用x86巨指令明確地規定。熟知此技藝者通曉今日可兼容x86的微處理器有數百種可用於不同目的的自身緩存器。雖然今日微處理器中的自身資源有創意,但執行這些自身資源和所規定的使用方式不易見於應用程式編碼人員,他/她明確地規定於應用程式內,這是因為他/她的應用依據特殊指令集結構使用巨指令編碼,且巨指令不用來尋址或執行自身緩存器及其它資源。
接著今日微處理器使用依據特殊指令集結構(ISA)的巨指令所編碼的內存來執行程序。這些巨指令命令各種微處理器的結構資源、功能、和組件特徵的使用。但隨著從內存快提巨指令的脈衝周期,今日的微處理器轉譯巨指令成自身指令的對應序列。自身指令用於有效地利用微處理器內的自身資源,來執行巨指令所規定的結構性操作。例如巨指令所規定兩個結構緩存器的內容交換可能被轉譯成三個自身指令的序列第一個自身指令檢索第一個結構緩存器的內容並存放這些內容到自身緩存器,而第二個自身指令移動第二個結構緩存器的內容到第一個結構緩存器,第三個自身指令移動自身緩存器的內容到第二個結構緩存器。
但用來運用今日微處理器中的結構資源的功能會被程序化且使用巨指令來執行,而這些不能稱作自身資源的運用。但從產品測試工程師或應用程式編碼人員的觀點來看,微處理器設計中自身資源和結構資源間的差異在於有點人工化,畢竟緩存器就是緩存器。至於對應用程式編碼人員來說,自身緩存器和結構緩存器間的差異在於結構緩存器可通過由應用程式的使用明確地規定,而自身緩存器不能明確地規定。但從測試工程師的角度來看,不管緩存器是否為自身或結構,若緩存器表示失敗的模式,微處理器的部分必須被貼標籤作為失敗部分。
還有少量的建構自我測試(built in self test)製成微處理器的組件,所有使用巨指令的其它應用和測試程序必須發展,因為今日微處理器只能從寫入巨程序代碼的內存來執行程序。接下來在使用複雜和難以理解的巨程序代碼序列時,任何應用程式或自身資源測試程序必須間接地規定自身資源。由於複雜度限制自身資源測試程序的發展,使得警告數目的不足會造成之後一些著名微處理器設計的大量分布,主要是因為在這些設計中可理解的自身資源測試程序被應用到產品後,便不能被用來診斷異常,應用程式編碼人員須從運用所需的自身資源來完全排除。
某些微處理器設計的自身結構逐漸普及於此技藝中,自身指令的結構也有效、快速地運用自身結構來執行某些功能或某些運算。因此,有需要發展一種微處理器,其自身資源可經由自身指令的序列所組成的例行程序而運用在應用程式階級。這些自身例行程序的使用,也需要能兼容於現存的多重作業作業系統和應用軟體的相互配合,以包含用於操作在中斷、異常、作業交換和其它形式轉換到今日公開應用的程控。此外,也需要一種微處理器的裝置,其允許由內存所檢索的自身指令來繞過(bypass)巨指令轉譯功能,通過此用應用程式來明確規定自身資源。

發明內容
本發明相對於其它應用,可以解決這些相關問題和現有技術的缺點。本發明提供一卓越的技術,其提供應用程式,用以讓微處理器可執行嵌入自身指令的序列。在一個實施例中,一執行自身指令的裝置用於微處理器,而自身指令的執行經由外部總線(external instruction bus)直接送到微處理器。這個裝置包含指令轉譯邏輯電路(instruction translation logic)和旁路邏輯電路(bypass logic)。指令轉譯邏輯電路檢索經由外部指令總線所提供的巨指令,並將每一個巨指令轉譯成用來執行的結合的巨指令。若第一個巨指令的第一個形式被檢索,指令轉譯邏輯電路命令微處理器能成為自身旁路模式並用可控制緩存器內的第一個位來指示。而旁路邏輯電路結合到指令轉譯邏輯電路,旁路邏輯電路可控制緩存器內的第一個位來決定自身旁路模式是否已被執行,並用自身旁路模式檢測封包(wrapper)巨指令,還有根據封包(wrapper)巨指令的檢測,使指令轉譯邏輯電路不致能並且提供微處理器所執行的自身指令,以繞過上述指令轉譯邏輯電路。
本發明的一實施例提供允許一微指令從外部指令總線到管線微處理器內的執行邏輯電路。本裝置具有一轉譯器和旁路邏輯電路。本轉譯器由巨指令總線檢索巨指令,本轉譯器亦能轉譯每一個巨指令到相連結的微指令,而相連結的微指令被經由微指令總線提供至執行邏輯電路。本旁路邏輯電路連結到轉譯器,並安排微指令至執行邏輯電樂。本旁路邏輯電路包含一個模式檢測器以及自身指令路線邏輯電路(native instructionrouting logic)。本模式檢測器檢測一個自身旁路模式,亦可檢測一個封包巨指令,還能命令轉譯器停止指令轉譯。自身指令路線邏輯電路連接於模式檢測器,而自身指令路線邏輯電路可由巨指令總線檢索封包巨指令,以及提供微指令到微指令總線,通過此繞過轉譯器。
本發明的一實施例提供直接將儲存內存中的多數自身指令送到微處理器的方法。本方法包含致能微處理器中的自身指令旁路模式,嵌入對應的多數封包指令的多數自身指令,並將對應的多數封包指令送到微處理器,以及在微處理器內檢測自身指令旁路模式並由對應的多數封包指令提取多數自身指令。


本發明的這些和其它目的、特徵、和優點透過以下說明和圖示更易於明了圖1是為現有技術的微處理器的方塊圖,其說明微處理器結構資源和自身資源間的區別;圖2是為流程圖,其說明圖1的微處理器內的自身緩存器如何間接地運用到巨指令的執行;圖3是為根據本發明微處理器的方塊圖,其依據能夠直接從內存執行自身指令的本發明;圖4是為微處理器的方塊圖,其說明轉譯圖3的微處理器內的階段邏輯電路;圖5是為微處理器的方塊圖,其依據本發明由程序所組合的自身指令直接使用到執行微處理器內的自身資源;圖6是為流程圖,其依據本發明說明一標的自身指令的序列用於直接規定微處理器內特殊自身緩存器的測試;圖7是為可替代實施例的微處理器的方塊圖,其依據執行應用程式所組成的自身指令的本發明,應用程式的執行兼容於現存的作業系統和特徵的同時執行;以及圖8是為流程圖,其說明自身旁路指令序列如何用來直接規定在圖7微處理器內的自身緩存器,由現存的作業系統所作的中斷處理。
具體實施例方式
考慮到現有技術,今日微處理器如何組成結構資源和自身資源。幾個現有技術的案例將在圖1和圖2討論,這些案例說明關於為了執行和測試上述兩種資源的程序所衍生出來的問題。從一個測試觀點來看,微處理器產品化之後,為了測試自身資源的設計的程序特別困難,因為這些程序使用了無法直接指定自身資源的巨指令來編碼。但從一個應用程式設計的觀點來看,運算法的發展不能有效、迅速地執行自身資源,因為這些資源無法出現於巨指令階層。依據現有技術的討論,本發明的詳細說明將在圖3到圖8討論。而本發明通過由提供可使自身指令的程序可直接地從內存執行的裝置,據而讓程式設計師能明確規定和使用自身資源,以克服今日微處理器的限制。
請參照圖1,方塊圖100表示一採用現有技術的微處理器110,其說明微處理器110內的結構資源118和自身資源119間的區別。方塊圖100描繪微處理器110從一內存101提取巨指令。巨指令是包含於內存101內的指定位置(specific locations)102或稱為地址102,而巨指令可經由一指令總線103送到微處理器110。
微處理器110包含連結到一巨指令總線112的指令提取邏輯電路111,而所提取的巨指令經由巨指令總線112送到一指令轉譯邏輯電路113。今日微處理器110內的指令轉譯邏輯電路113包含一轉譯器114以及一可控制只讀存儲器(ROM)115。此外,一般可控制只讀存儲器115中的一小部分包含自我測試(BIST,built in self test)微指令116。根據所接收到的巨指令,指令轉譯邏輯電路113經由一自身指令總線117發送自身指令到微處理器110內的結構資源118和自身資源119,而自身指令也被稱為自身程序代碼、微指令、或微程序代碼。
執行於微處理器110的應用程式使用巨指令編碼,而巨指令為符合一特定指令集結構(particular instruction set architecture(ISA))的程序指令。一個指令集結構說明(documents)微處理器的高階設計,像是一概念性微處理器內的結構資源(architectural resources)118。而指令集結構也說明(documents)一個用來執行這些資源118的巨指令的集合。而一般在一指令集結構中所指定的結構資源118包含概念性微處理器的特徵(例如管線、平行處理(parallelism)、與編輯器間的互動(compiler interaction))、概念性微處理器必須提供的功能(例如數學運算(arithmetic operations)、字符串運算(string operations)、概念性微處理器的應用程式環境(例如32位操作數、應用程式保護機制)、執行環境(例如一般或特殊目的的緩存器的形式與數量、以及內存模式)以及指令集本身(instruction setreference itself)。指令集參考文件(instruction set reference)詳細地說明適用於此指令集結構的巨指令、巨指令的格式、以及它們如何在概念性微處理器上操作。或許桌上型計算機產業中最為人所熟知的指令集結構為英特爾(Intel)32位指令集結構,一般被稱為x86指令集結構。x86指令集結構適用於與x86結構兼容的任何微處理器。
然而相較於概念性的微處理器,微處理器的設計者努力開發和生產具有一個或多個市場利基的實體實體微處理器。為了闡述這個觀點,這些年來已有許多不同符合x86指令集結構的實體微處理器產生,而這些微處理器是由不同的公司製作。儘管這些微處理器的間都有差異,但熟知此技藝者通曉每一個符合x86指令集結構的微處理器能夠執行用x86指令集結構的巨指令編碼的程序。持續採用一特殊的指令集結構能讓微處理器的製造商開發和生產改良的微處理器,而改良的微處理器能夠執行現存的應用軟體,如此可讓製造商保有市場的部分佔有率的同時持續採用此領域內新的技術發展。
然而,一指令集結構對一特定微處理器實施例110所做的控制,只擴展到可用來執行符合此指令集結構的巨指令的特徵、功能、和資源。因此,符合上述特殊指令集結構的微處理器110必須執行那些特徵、功能、資源。但是確切地說,如何實作那些特徵、功能、資源是不在此指令集結構的控制的下。據此,不同的微處理器的實施例,其中各個微處理器都符合一特定的指令集結構,可對於如何實作此特定的指令集結構做相當顯著的改變。舉例來說,一個符合此特定指令集結構的微處理器可依循節省電力的方向進行實作,另一個實作此特定指令集結構的微處理器可最大化處理量,而另有一個符合此特定的指令集結構的微處理器是以降低複雜度或降低成本的方向實作。
除了一指令集結構所指定的結構資源118之外,一般已知的微處理器110可使用一些自身資源119來實作此指令集結構,其中上述的自身資源1 19是以加強此微處理器110所強調的特性和壓抑其它不需要特性的方式實作上述的指令集結構。舉例來說,雖然x86指令集結構規定,於執行x86巨指令時僅能運用八個結構緩存器,但是大部分今日已知兼容x86的微處理器110皆擁有超過100個自身緩存器(native registers)119。所有用來達到不同目的的自身緩存器119皆無法提供給應用軟體程式設計師。於已知的微處理器的實施例110中,是執行獨特的自身指令以使用這些和其它自身緩存器119。而這些自身指令是用來直接及有效率地運用此微處理器實施例110中的自身緩存器119,以達到此特定指令集結構的一最佳因此在操作上,指令提取邏輯電路(instruction fetch logic)111檢索內存103中的巨指令102,而這些巨指令102相繼依序地經由巨指令總線112送到指令轉譯邏輯電路113。指令轉譯邏輯電路113轉譯各個巨指令並且產生一個或更多相關的本身指令,而上述本身指令執行的結果是相同於使用規定的結構資源118完成規定的結構操作。為了完成結構操作,自身指令常常命令幾個自身資源119,以執行某些次操作(sub-operation)。自身指令經由本身指令總線117送到微處理器110中的執行邏輯電路(execution logic)118、119。
總結上述的討論,巨指令102從內存101提取之後,轉譯成相對應的自身指令,而後微處理器110中的執行邏輯電路118、119執行上述的自身指令。
如上述所說明,今日指令轉譯邏輯電路113利用一轉譯器114和一可控制只讀存儲器(只讀存儲器)115,以將所提取的巨指令轉譯成對應的自身指令序列。舉例來說,一個特定巨指令可通過由轉譯器114更易於檢測和操作,以轉譯成一對應的特定自身指令序列。相對地,實作一巨指令所定義的操作的一自身指令序列,可通過由將上述的自身指令序列儲存於此可控制只讀存儲器115內,並且當由巨指令總線112接收此巨指令時提取此自身序列的方式更有效率地執行。通過由一個接替(handoff)信號協調巨指令的轉譯,轉譯器114和可控制只讀存儲器115同時運作。一般來說轉譯器114會啟動上述的接替信號。然而,對今日微處理器110內有效率地轉譯巨指令成微指令的技術和裝置做更深入討論已經超越本發明的範圍。上述已足供說明於一般的微處理器110同時採用轉譯器114和可控制只讀存儲器115的方式。
上述的自我測試微程序代碼116為在微處理器110初始化(如開啟或重新設定)時自動化地發送到自身指令總線117的一微指令序列。自我測試微程序代碼116被用於測試微處理器110內的結構資源118和本機資源119。自我測試微程序代碼116發展於微處理器110產品化前,因此每製造一片微處理器晶片時,即燒錄到可控制只讀存儲器115內因此修正自我測試微程序代碼116也必須要修改微處理器晶片110的設計。關於初始測試,從微處理器110的觀點來看,實際上測試結構資源118和測試自身資源119沒有真正的區別,若這些資源118、119任一發生故障,都將會導致微處理器110的故障。
關於測試方面,當其測試設計已經量產後,結構資源118和本機資源119仍然有兩個重要的差別會嚴重妨礙微處理器110的測試。首先,被燒錄到可控制只讀存儲器115的自我測試微程序代碼116的數量通常比能檢測標示此微處理器110嚴重錯誤所需要的自身指令來得少。此是因為在一現代微處理器中,邏輯電路所佔用了一大部分的晶片面積,在典型的微處理器內,電路區域被分配到實施基本和主要功能的邏輯電路。用在實施輔助功能的電路區域,如自我測試功能等的分配優先度是處在一個低等級。結果自我測試用的微程序代碼116幾乎無法提供自身資源119的複雜診斷測試;燒入至只讀存儲器115的測試只讓一測試者做出關於此微處理器110某部分的高階好/壞的決定。
測試結構資源118和自身資源119間的第二個重要區別在於一旦微處理器設計110生產後,唯一可進行對自身資源119的補充測試的方式是使用巨指令所發展出的測試程序。然而巨指令碼不允許程式設計師指定自身資源119作為測試的用。因此,為了測試一指定的自身資源119,必須產生一巨指令的序列達到直接地已指定的結構操作,以間接地運用上述指定的自身資源119。由於不能利用巨指令明確地指定欲使用的自身資源119,故可謹慎地說今日的診斷和其它應用程式極為難發展且更不易了解。如何使用微處理器110內的自身資源119以執行一結構性規定操作的一例子,更詳細地在圖2中討論。
請參考圖2,其是為一計時圖200以說明於圖1微處理器110內如何間接地通過一個巨指令的執行以運用自身緩存器119。計時圖200描述指令通過微處理器110的過程中所牽涉的二個欄位一個命名為「巨指令總線」的欄位和另一個命名為「自身指令總線」的欄位。巨指令總線的欄位描述用快取指令邏輯電路111從內存101所檢索的巨指令是經由巨指令總線112將此巨指令送到指令轉譯邏輯電路113。自身指令總線說明指令轉譯邏輯電路113所產生的自身指令是被送到自身指令總線117。而指令處理過程的描述是採用微處理器脈衝信號的周期。在此欲說明指令前後的不相干指令是被標記為「***」。
在第一個周期期間,內容為「ADD[EAX],FFFFFFFFh」的一加法巨指令,其經由巨指令總線112送到指令轉譯邏輯電路113。更具體地說,加法巨指令有一個巨運算碼「ADD」,可命令此微處理器110來執行兩個操作數相加的結構性功能。第一個操作數包含在數據存儲器(未圖標)中的一位置內,而數據存儲器的地址由結構緩存器118「EAX」的內容來規定。第二個操作數「FFFFFFFFh」送到加法巨指令的一立即(immediate)區域內。此外,此巨運算碼也命令微處理器110,由第一個運算碼被檢索的內存位置來存放二個運算碼的總和。
雖然加法的巨指令規定兩個運算碼的一非常直覺的運算,而微處理器110執行此運算需要三個特定的次運算。首先,必須從數據存儲器檢索第一操作數。接著相加二個操作數以產生總和。最後,總和必須存放回上述數據存儲器中的位置。
據此,在第二個周期期間,指令轉譯邏輯電路113提供一內容為「LDNR1,[EAX]」第一個自身指令。更具體地說,一個自身運算碼LD命令微處理器110,以執行由數據存儲器加載第一個操作數的自身功能。第一個運算碼的地址是存在結構緩存器118[EAX]內。但為了使第一操作數可用於加法的運作,第一個微指令命令上述的第一操作數置放於一標示為「NR1」的自身緩存器119中。
在第三個周期期間,指令轉譯邏輯電路經由自身指令總線117發布一內容為「ADD NR1,NR1,FFFFFFFFh」的第二個自身指令。更具體地說,一個自身運算碼「ADD」命令微處理器110,以用一個立即操作數「FFFFFFFFh」加總自身緩存器119「NR1」的內容。另外,此第二個微指令亦命令其總和寫回到自身緩存器119「NR1」。
在第三個周期期間,一內容為「ST[EAX],NR1」第三個自身指令是經由自身指令總線117發布到執行邏輯電路118、119。第三個自身指令命令微處理器110進行自身儲存的操作,以存放自身緩存器119「NR1」的內容到結構緩存器118「EAX」的內容所規定的內存中的位置。
需要三個脈衝周期執行指令轉譯邏輯電路113所產生的自身指令,以完成加法巨指令所規定的結構操作。這巨指令到對應的微指令的一對多對應是很常見的,多數巨指令皆需要產生幾個自身指令以完成此巨指令所規定的操作。實際上,一些巨指令的轉譯需要產生數百個微指令。
另外,值得注意的是自身緩存器119「NR1」只用來作為第一個操作數以及總和的暫時性儲藏。雖然今日微處理器110內的自身緩存器119一般用來行使這樣的目的,但應用程式編碼人員從未被告知會使用到一自身緩存器119,因為他或她僅在巨指令階層觀測程序的執行。程式設計師亦不能利用那特殊緩存器以加速某些算法的執行。
從一個測試的觀點來看,須測試微處理器110內所有的邏輯電路資源結構資源118和自身資源119的做法是可理解的。正如圖2的例子所說明,微處理器被生產後,唯一能測試自身緩存器119的手段是是透過巨指令的執行。如現有所述,巨指令不明確指出其所運用的自身資源119。據此,產生測試微處理器110內自身資源119的診斷程序通常需要大量技巧知道何時及如何使用特定自身資源119以完成某些結構功能的知識,以及寫出通常為相當複雜巨程序代碼序列以創造出獨立測試一特定自身資源119功能的條件的技巧。
結果,今日的自身資源測試程序看起來似乎相當複雜與神秘,由於複雜性圍繞著透過使用巨指令的自身資源測試的發展,讓這些測試程序常常發生錯誤。熟悉此技術者通曉,自身資源測試程序的發展成為繼續困擾產業的問題。
從應用程式員的觀點來看,熟悉此技術者通曉,於應用程式的一部分中提供使用一個特定微處理器的自身資源可得到許多好處(如執行速度、內存的效率)。
本發明通過由提供能直接從內存執行自身指令的微處理器以克服上述的問題。因此,在某一微處理器設計已被委託生產之後,可開發簡單明了又容易理解的測試程序來完整地測試自身資源。這是因為上述測試程序內的自身指令可明確地指定所使用的自身資源。此外,開發可利用一微處理器設計內的特定自身資源的應用程式以達成由一特定系統結構所不能提供的額外處理能力與其它好處。本發明將於圖3到圖8的描述中詳細討論。
請參考圖3,其是為根據本發明的一方塊圖300,其描述微處理器310能直接從內存301執行自身指令304。方塊圖300描述微處理器310由內存301檢索巨指令302,而巨指令302經由外部指令總線303送到微處理器310。而相對於今日微處理器,依據本發明的微處理器310還能從內存301經由外部指令總線303檢索自身指令304。
微處理器310包括提供一輸出端到一巨指令總線312的指令提取邏輯電路311。指令提取邏輯電路310是邏輯規則、邏輯電路、裝置、微程序代碼(亦即微指令或本身指令),或邏輯規則、邏輯電路、裝置、微程序代碼的一組合、或從內存301檢索指令302、304的等效元素。於此指令提取邏輯電路311中提取指令302、304的元素可被其它邏輯電路、微程序代碼等共享以執行其它的功能。所提取的巨指令和自身指令經由巨指令總線312送到轉譯階段邏輯電路323,而轉譯階段邏輯電路323包括邏輯規則、邏輯電路、裝置、微程序代碼(如微指令或自身指令)、或邏輯規則、邏輯電路、裝置、微程序代碼的一組合、或用來轉譯已提取指令302、304的等效元素。用於執行轉譯階段邏輯電路323中轉譯指令302、304的元素可被其它邏輯電路、微程序代碼等共享以執行其它的功能。在轉譯階段邏輯電路323內,指令發送到指令轉譯邏輯電路313和旁路邏輯電路321。旁路邏輯電路321經由一旁路信號組322結合到指令轉譯邏輯電路313,而指令轉譯邏輯電路313包括轉譯器314和可控制只讀存儲器315。另外,可控制只讀存儲器315的一小部分包含自我測試自身指令316。轉譯階段邏輯電路323經由自身指令總線317發布自身指令到微處理器310內的結構資源318和自身資源319。
依據本發明的微處理器310結構上相似於今日微處理器,其中通過由提供自身資源319來實作一指令集結構。除了由指令集結構指定的那些結構資源318的外,自身資源319是以強調此微處理器的設計310的某些特性的方式以實作此指令集結構。但除了提供這些自身資源319的外,依據本發明的微處理器310提供在轉譯階段邏輯電路323內的旁路邏輯電路321,旁路邏輯電路321的目的是為了從巨指令總線312將從內存301檢索的自身指令304傳送到自身指令總線317,通過此徊避指令轉譯邏輯電路313所執行的功能。
在應用程式正常施行的期間,指令提取邏輯電路311由內存303檢索巨指令302。已檢索的巨指令經由巨指令總線312連續地送到轉譯階段邏輯電路323。指令轉譯邏輯電路313轉譯每個巨指令並產生一個或更多對應的自身指令,使用此巨指令規定的結構資源318來施行完成所規定的結構操作。且相似於傳統微處理器的操作,依據本發明的微處理器310內的自身指令經常運用自身資源319以進行某些次級操作。自身指令因而經由自身指令總線317送到微處理器310中的施行邏輯電路318、319。因此,在一種正常操作方式下,巨指令302從內存301快取,而巨指令302解碼成對應的自身指令,且自身指令用施行邏輯電路318、319來執行。
微處理器310內的轉譯器314和可控制只讀存儲器315經由接替信號「HANDOFF」的使用來調節巨指令302的轉譯。另外,當微處理器310初始化時,可控制只讀存儲器315內的自我測試微程序代碼316自動地發布到自身指令總線317。自我測試微程序代碼316進行微處理器110內的結構資源318和自身資源319的測試。自我測試程序代碼316是在微處理器310量產前進行開發並且在每片微處理器晶片310製作時燒入可控制只讀存儲器315,而非得改變微處理器310的設計始能修改自我測試程序代碼316。
但依據本發明的微處理器310的操作,不受限於經由自我測試微程序代碼316所進行的高階自身資源測試。這是因為除了能夠執行自我測試微程序代碼316之外,執行一特殊巨指令、或一自身旁路巨指令將令此微處理器310切換到一自身旁路模式,於上述的自身旁路模式中,通過以由內存301提取的自身指令304直接避開上述的指令轉譯邏輯電路313而傳送到本身指令總線317以於上述的執行邏輯電路318、319中執行。對於診斷測試程序或應用程式而言,這是一個強而有力的特點,因為這項增加的能力允許開發的程序以自身微程序代碼進行編碼。相較於現有僅能用間接的方式,今後將能開發可明確地指定其所運用的自身資源319的測試程序和診斷工具。另外,在一特定的微處理器設計中,此後將可開發能運用某些強力自身資源的程序。
當執行一自身旁路巨指令後,旁路邏輯電路321經由旁路信號小組322關閉了可控制只讀存儲器315和轉譯器314的功能。此時,程序的控制權是轉移到包含一自身指令304序列的某一部分內存301,而指令提取邏輯電路311經由外部指令總線303檢索上述的自身指令304並且依序將他們送到巨指令總線312。當自身轉譯邏輯電路313被關閉後,旁路邏輯電路321直接地發送所檢索的微指令到自身指令總線317。這時在操作管線中,由結構邏輯電路318和自身邏輯電路319來執行本機指令,依據本發明的微處理器310的操作會和今日微處理器呈現相同的方式。還有在旁路模式下,微處理器310直接地從內存301來執行自身指令304,據此,當此微處理器310被製造後,一樣能開發和修改這些自身指令的序列。
除了直接由內存301執行微程序代碼304之外,本發明能讓微處理器產品測試工程師和應用程式編碼人員開發簡單明了及容易理解的測試程序代碼。不再需要複雜和模糊的巨指令序列以測試指定的自身邏輯電路裝置319,通過由通過外部指令總線303送到微處理器310的自身指令304能明確地指出其所運用的自身邏輯電路319。
另一個特殊的旁路巨指令是自身旁路回復巨指令,其可命令微處理器310將程序的控制權回復到一包含巨程序代碼的特定的內存位置。當在自身指令序列的結尾檢測到自身旁路回復巨指令後,旁路邏輯電路321經由旁路信號組322令指令轉譯邏輯電路313回復正常運作。當回復正常運作後,指令轉譯邏輯電路313恢復對上述指定內存位置所檢索的巨指令進行解碼。
現在請參考圖4,其是為一說明圖3的微處理器內的轉譯階段邏輯電路的方塊圖400。方塊圖400顯示一巨指令總線401,其將從內存(未圖標)所檢索的指令發送到旁路邏輯電路420、一指令長度解碼器411、一轉譯器412和一可控制只讀存儲器413。在旁路邏輯電路420內,指令被送到模式檢測邏輯電路421和自身指令發送邏輯電路423。模式檢測器421提供包括旁路信號小組的二個信號旁路致能信號(BYPASS EN)424和旁路失能信號(DISABLE)422。其中上述的旁路失能信號422發送到長度解碼器411、轉譯器412和可控制只讀存儲器413。而上述的旁路致能信號424送到一多任務器414以作為控制信號。由自身指令路由器423、轉譯器412、和可控制只讀存儲器413所輸出的自身指令是傳送到多任務器414,之後此多任務器414將自身指令輸出到一自身指令總線415。
在一種正常操作模式下,一應用程式的巨指令是經由巨指令總線401所提供。由於巨指令通常都不符合一固定長度的標準,長度解碼器411評估經由總線401的字節串流,以決定在各個巨指令所佔用的位組長度。在各個巨指令所佔用的位組長度經由一長度信號(LEN)送到轉譯器412,因此轉譯器412由巨指令總線401檢索此長度信號所指定的字節數量。如果轉譯器412欲解碼一個已檢索的巨指令,轉譯器412所執行的轉譯工作是將此巨指令轉換成相關的自身指令,之後上述的自身指令會從轉譯器412送到多任務器414。如果已檢索的巨指令利用可控制只讀存儲器413來解碼,那麼轉譯器412是透過一接替信號HO命令可控制只讀存儲器,以進行將此巨指令轉譯成相關自身指令的工作。在這種情況下,是自上述的可控制只讀存儲器413輸出自身指令到多任務器414。
在正常運行期間,模式檢測器421監測上述巨指令總線401所經過的指令,以檢測一旁路巨指令。如果檢測到一自身旁路巨指令,那麼模式檢測器421可發出上述的旁路致能信號424和旁路失能信號422。在一個較佳實施例中,旁路失能信號422禁止長度解碼器411、轉譯器412和可控制只讀存儲器413,對自身旁路巨指令的後的指令字節進行指令轉譯的功能。而旁路致能信號424可對自身旁路巨指令的後的指令,令自身指令路由器423能發送自身指令至多任務器414。
轉譯器412將自身旁路巨指令解碼成無條件躍遷自身指令(unconditional jump native instruction),其命令程序的控制權轉移到含有一自身指令序列的一內存地址。在另一個較佳實施例中,內存地址由結構緩存器(未圖標)的內容所指定。在一個可兼容x86的較佳實施例中,內存地址由EAX緩存器(未圖標)的內容所指定。因此,在自身旁路巨指令的轉譯工作上,上述的無條件躍遷自身指令是經由總線415送到執行邏輯電路(未圖標)。當執行此無條件躍遷自身指令時,目標內存地址將提供至提取邏輯電路(未圖標)。此提取邏輯電路因而轉移程控權到上述的含有一自身指令序列的目標內存地址。
在旁路模式執行期間,自身指令路由器423檢索總線401的自身指令,並將這些自身指令輸出到多任務器414。旁路致能信號424命令多任務器414來選擇自身指令路由器串流(output stream)以傳輸至自身指令總線415。在另一個較佳實施例中,所有自身指令皆為一固定長度的字節。在一個特定的實施例中,自身指令的長度皆為四個字節。
在微處理器310執行自身指令的脈衝期間,通過此繞過指令轉譯,模式檢測邏輯電路421持續檢視接踵而來的字節流(byte stream),以檢測一自身旁路回復巨指令,通過此命令微處理器返回到正常操作模式。當檢測到一自身旁路回復巨指令時, 模式檢測器421通過由終止旁路致能信號424來表明旁路操作的結束。因此,指令轉譯的工作恢復,且轉移程控權被轉移到含有一回復內存地址的一個巨指令以供微處理器310執行。在一個較佳實施例中,上述的回覆內存地址是自身旁路巨指令的後的巨指令地址。在另一個實施例中,上述的回覆內存地址在結構緩存器中規定。
現在請參考圖5,其依據本發明的一方塊圖500,其說明自身指令組成的程序如何直接地用來執行微處理器503內的自身資源。方塊圖500顯示一結合到測試轉接器502的一自動化微處理器測試器501,而依據本發明,此測試轉接器502提供一個測試插座504以測試一微處理器503。一個外部內存總線505允許微處理器503從一測試內存510存取測試程序。為了特定的測試,內存510的內容通過由自動化的測試器501通過測試程序總線506加載。
為了測試之用,一微處理器樣品(microprocessor sample)503連接到測試插座504,經由測試插座504,測試轉接器502提供所有微處理器503需要用來操作的信號(未圖標)。另外,每個特定功能的測試期間,所有微處理器的信號通過由測試轉接器502被監測。一般來說,在自動化測試器501的控制之下,個別的測試程序通過測試程序總線506下載到測試內存510中。於下載個別的測試程序到測試內存510之後,並命令測試中的微處理器503提取和執行在內存510中的指令,以測試此微處理器中的特定結構資源和自身資源。然而在此之前的技術中,並不能使用明確指定其所運用的自身資源的巨程序代碼序列於上述的個別測試程序中。但依據本發明,自身指令的測試程序序列目前能直接從內存510執行。
方塊圖500說明從控制權自一巨指令序列轉移到自身測試程序和再將控制權轉回到此巨指令序列的過程。當微處理器503在執行此巨指令序列中的程序代碼,微處理器503在選定的內存位置511上遇到一自身旁路巨指令NBRANCH。NBRANCH指令的執行導致控制權轉移到包含一自身測試序列中第一自身指令的一旁路目標內存位置513。接著執行在此自身指令序列中的自身指令時,微處理器503在內存位置514上檢測一個自身旁路回復巨指令XRET,而XRET指令的執行會將程控權轉回到一旁路回復地址512,使微處理器503恢復將巨指令轉譯到自身指令的模式。
通過由提供進入到一自身施行模式的能力,依據本發明的微處理器503能詳盡地和全面地再生產時利用較現有技術直接且不複雜的測試程序進行測試。
現在提到圖6,其是為依據本發明的一計時圖600,其說明如何利用一樣品自身指令序列以直接測試在本發明所提供的微處理器310內的特定自身緩存器319。計時圖600描述關於微處理器310的指令處理流程的二個相關欄位一個欄位命名為「巨指令總線」和另一個欄位命名為「自身指令總線」。巨指令總線欄位描述巨指令通過由快取指令邏輯電路311從內存301檢索,且經由巨指令總線312送到指令轉譯邏輯電路313。而自身指令總線欄位說明由轉譯階段邏輯電路323產生的自身指令是傳送到自身指令總線317。而指令的流程描述是以此處理器脈衝信號的周期來表示。在所描述指令前後的不相干指令被標記為「***」。
在第一周期期間,一個內容為「MOV EAX,TST1」的搬移巨指令送到巨指令總線312。更明確地說,上述的搬移巨指令有一個巨運算碼「MOV」,其命令微處理器310來搬移一個立刻供應的內存地址「TST1」到結構緩存器「EAX」。因為這是在正常操作模式期間遇到指令,而指令轉譯邏輯電路313將此搬移巨指令解碼並且解譯為所對應的自身加載指令,其指令內容為「LD EAX,TST1」。更確切地說,自身加載指令具有一命令微處理器310加載一立即值TST1到結構緩存器EAX的自身運算碼「LD」。
在第二周期期間,指令轉譯邏輯電路313提供上述的自身加載指令到自身指令總線317,通過此命令微處理器310來存放一自身指令序列的內存地址到結構緩存器EAX。另外,在第二周期期間,一第二搬移巨指令「MOV EBX,OUTBFR」送到巨指令總線312。而第二搬移巨指令命令微處理器310將一輸出緩衝區內存位置「OUTBFR」的內容置放到結構緩存器EBX,因為第二搬移巨指令是在正常操作模式期間所遇到的指令。指令轉譯邏輯電路313將第二可移動的指令解碼成內容為「LD EBX,OUTBFR」的相對應的第二自身加載指令。更確切地說,此自身加載指令具有一個命令微處理器310以將一立即值OUTBFR加載到結構緩存器EBX的自身運算碼「LD」。
在第三周期期間,指令轉譯邏輯電路313發布第二自身加載指令到自身總線317,通過此命令微處理器310將此輸出緩衝區的內存地址儲存到緩存器EBX。另外在第三周期期間,一個自身旁路巨指令「NBRANCH」被送到巨指令總線312。在一較佳實施例中,NBRANCH命令微處理器31-分支到在緩存器EAX中所指定的內存地址。因此旁路邏輯電路321檢測此自身旁路巨指令,且經由旁路信號組322命令微處理器310進入一個自身旁路模式。據此,指令轉譯邏輯電路313將NBRANCH解碼成內容為「JMP[EAX]」的無條件躍遷自身指令,其命令程控權轉移到緩存器EAX所指定的內存地址。當產生躍遷自身指令,轉譯階段323內的分支預測邏輯電路(未圖標)命令指令提取邏輯電路(未圖標)開始自位置TST1檢索指令字節。
在第四周期期間,躍遷自身指令被發布到微指令總線317,而且在第四周期期期間,從內存位置TST1所檢索的第一自身指令經由巨指令總線312送到旁路邏輯電路321。第一自身指令「LD T1,0」命令微處理器310將0加載到明確指定的自身緩存器T1。因此,由於指令轉譯功能已被關閉,旁路邏輯電路321直接地發送第一自身指令到微指令總線317,通過此第一自身指令已明確地規定對自身緩存器T1的測試。
在第五至第一百周期期間,在所明確地和直接地指定的自身緩存器319上操作的自身指令是從內存301所檢索,並且通過由旁路邏輯電路321發送到微指令總線317。例如,在第五周期期間經由巨指令總線313所送出的自身指令「ST[EBX],T1」命令微處理器3 10將自身緩存器T1的內容輸出到輸出緩衝區。在第六周期期間,一自身指令「NOT T1」命令微處理器310對自身緩存器T1的內容進行補碼(complement)的邏輯運算。且在第七周期期間,另一自身指令「ST[EBX],T1」則命令微處理器310將T1的補碼內容輸出到輸出緩衝區。依據本發明,繼續執行直接來自內存的自身指令,直到第1000周期。
在第1001周期期間,旁路邏輯電路321檢測到一個自身分支回復巨指令XRET,因此旁路邏輯電路321經由旁路信號組322命令指令轉譯邏輯電路313開啟功能,以重新解碼來自巨指令總線312的巨指令。因此,指令轉譯邏輯電路313將XRET解碼成內容為為「JMP[EAX+1]」的無條件躍遷自身指令,命令微處理器310將程控權轉移到跟隨在內存301中旁路巨指令NBRANCH的後的下一個巨指令「NEXT MAC」。在這個周期期間,分支預測邏輯電路命令指令提取邏輯電路開始自上述的回覆內存位置提取巨指令。
通過由本發明,運用可理解的自身指令以產生應用程式。今後所發展的程序可更簡單,由於不需要轉譯,因而執行的速度更快。
並且正如圖6所說明,在微處理器310已被委託生產之後,可使用微程序代碼能產生自身資源程序。這是特別有利的,因為允許微指令明確地指定所使用的自身資源。據此,依據本發明,產生可測試和發揮在微處理器310內的自身資源319優勢的應用程式,將不再需要在此以前所需專門技術的水平。
現在請參考圖7,其是為依據本發明的一方塊圖700,其說明一個微處理器710的另一實施例,用來執行由自身指令所組成的應用程式,其中上述應用程式的執行可與其共同執行的現存作業系統兼容。本發明的發明者已經觀察到許多今日應用程式將得益於本發明所描述的應用,特別是那些多半在一多任務作業系統環境之下,控制權經常會被中斷且轉移到如Windows XPTM的類作業系統軟體的應用程式,其中上述的作業系統軟體是用來服務系統中斷、例外、工作切換和其它類似的狀況。且因為巨指令所命令的操作經常會使用到自身資源,透過本發明中所提供的技術,應用程式通過以依據本發明所提供的自身指令的旁路技術,可完全兼容地於現存的多任務作業系統中執行。因此,在含有自身指令的應用程式的施行期間,提供允許中斷、例外、其它工作轉換的形式的一機制,以令此應用程式隨後的執行及交出控制權皆不會受到不利影響。此外,從中斷回復控制權到使用自身旁路模式指令的一應用程式時,此應用程式應被告知於上述中斷執行時對自身資源所造成的可能影響。
另一微處理器710包括提供輸出端到巨指令總線712的指令提取邏輯電路711,且指令提取邏輯電路711是邏輯規則、邏輯電路、裝置、或微程序代碼(例如微指令或自身指令),或邏輯規則、邏輯電路、裝置、微指令碼的一組合、或用來從內存702提取指令702、704、705的等效元素。在指令提取邏輯電路711中用來提取指令702,704,705的元素可能與用來執行其它作用的其它電路、微指令等所共享。所提取的巨指令702、705和自身指令704是經由巨指令總線712送到轉譯階段邏輯電路723。轉譯階段邏輯電路723包括邏輯規則、邏輯電路、裝置、或微指令(例如微指令或自身指示)、或邏輯規則、邏輯電路、裝置、微指令的一組合、或用於轉譯所提取的指令702、704、705到一對應的自身指令序列的等效元素。在轉譯階段邏輯電路723中用來執行轉譯指令702、704、705的元素可能與用來執行其它作用的其它邏輯電路、為指令碼等共享。在轉譯階段邏輯電路723內,指令被發送到指令轉譯邏輯電路713和旁路邏輯電路721。旁路邏輯電路721經由旁路信號組722「BYPASS」被結合到指令轉譯邏輯電路713。指令轉譯邏輯電路713包括轉譯器714和可控制只讀存儲器715。可控制只讀存儲器715包含建立自我測試自身指令716。轉譯階段邏輯電路723經由自身指令總線717發布自身指令到微處理器中的結構資源718和自身資源719。另一微處理器710也包含一控制緩存器73 1、一機器特殊緩存器733、和一旗標緩存器735。一控制緩存器73 1包含一旁路致能位「BE」732。機器特殊緩存器733包含一設定旁路位「BY」734。旗標緩存器735具有一個旁路位「BO」736。通過由旁路邏輯電路721可經由總線724存取緩存器731、733、735。微處理器710具有經由中斷總線738連接到內部和外部程序中斷資源及事件的中斷/例外/轉換(int/exc/switch)邏輯電路737,而這個中斷/例外/轉換邏輯電路737經由總線740將上述事件轉送到轉譯邏輯電路723,而上述的中斷/例外/轉換邏輯電路737是透過總線739以存取緩存器731、733、735。
在圖7中所提供的微處理器710實施例是關於自身指令容易融入於一多任務作業系統環境中執行的一應用程式。其對於在圖3、圖5、圖6所描述的自身旁路技術的區別,是圖7所說明的自身旁路實施例使用一旁路致能巨指令705以令微處理器710進入到一自身指令旁路模式(nativeinstruction bypass mode)。在一較佳的實施例中,旁路致能巨指令為一種令此微處理器710符合的指令集結構所提供的巨指令無效或備用的一種形式。在微處理器710進入自身指令旁路模式之後,再通過由指令轉譯邏輯電路723解釋一封包(wrapper)巨指令705的所有後續的案例,作為自身指令的封包。在另一個與x86結構兼容的實施例中,封包巨指令705包括一個x86加載有效地址LEA指令,其自身指令被編入到LEA指令的32位置換領域。自身旁路致能巨指令的第二種形式(未顯示於程序流程圖)命令微處理器710退出自身指令旁路模式。當不在自身旁路指令模式中,依據指令集結構的結構規格轉譯封包巨指令705所有案例。應用程式可讀取機器特殊緩存器733中的設定旁路位734位,通常且在製造期間進行設定以指示微處理器710中所提供的自身旁路特徵。
在提供自身旁路特徵的一個微處理器710中,通過由機器特殊緩存器733中的設定旁路位734指出,當轉譯階段邏輯電路檢測到無效/備用指令705的第一種形式,旁路邏輯電路721設定在控制緩存器731中的旁路致能位732,來表明已至能自身旁路模式。當處在自身旁路模式中,旁路邏輯電路721檢測封包巨指令704,從內部移除自身指令,並將此自身指令發送到自身指令總線717,通過此繞過指令轉譯邏輯電路713所執行的功能。所有其它被檢索的巨指令702經由巨指令總線712依序送到轉譯階段邏輯電路723。指令轉譯邏輯電路713轉譯每個巨指令702並產生一個或更多對應的自身指令,其使用所規定的結構資源718來完成所規定的結構操作。相似於傳統微處理器的操作,依據本發明的微處理器710內的自身指令經常利用自身資源719,以進行規定結構操作的某些次級操作。自身指令因而經由自身指令總線717送到微處理器710中的施行邏輯電路718、719。因此,在圖7微處理器710中所執行的應用程式可能組合巨指令702和封包巨指令704內的自身指令,以儘可能利用所需的自身資源719,如附加的緩存器(additional registers)、自身資源尋址協議(native resource addressing conventions)等。
微處理器710內的轉譯器714和可控制只讀存儲器715通過接替信號HANDOFF的使用以協調巨指令702的轉譯。另外,當微處理器710初始化時,可控制只讀存儲器715內的自我測試微程序代碼716會自動地發布到自身指令總線717。
當轉譯封包巨指令704時,旁路邏輯電路721通過旁路信號組722關閉可控制只讀存儲器715和轉譯器714。當指令轉譯邏輯電路713的功能被關閉時,旁路邏輯電路721從其對應的封包巨指令704中內部移除內嵌的自身指令並且直接地發送上數自身指令到自身指令總線717。
中斷和其它工作控制轉移事件(在此以後指中斷)經由總線738通知上述的中斷/例外/轉換邏輯電路737。總線740用來通知中斷到指令轉譯邏輯電路713。作為中斷處理的一部分,控制緩存器731中的旁路致能位732狀態是732檢查以確定微處理器710是否在自身旁路模式中。如果是那樣,在旗標緩存器735中的旁路位736處理中斷前,會保存這個狀態。旗標緩存器735是微處理器內的結構緩存器,而微處理器的狀態在工作控制轉移期間保存且在控制回復期間復原。在一個x86結構的較佳實施例中,旗標緩存器735包括在一個與x86兼容的微處理器中的延伸旗標(EFLAGS)緩存器,以及旁路位736亦含有對應至延伸旗標緩存器的位31。如果中斷發生在用當旁路致能位732被設定(亦即指示啟動旁路模式)時,那麼中斷/例外/轉換邏輯電路737在處理中斷前設定旗標緩存器735中的旁路位736。另外,清除旁路致能位732,通過此不能執行自身旁路模式。在控制權自中斷返回的前,如果在一中斷服務例行程序或其它應用程式中遇到一封包巨指令704,然後指令轉譯階段723將依據所控制指令集結構的結構規格來解釋封包巨指令704。這樣,應用程式可使用嵌入自身指令而不會對服務這些事件的作業系統模式或其它被轉移控制權的應用程式造成問題。
從中斷事件回復到執行自身旁路模式的應用程式前,中斷/例外/轉換邏輯電路738會檢查在旗標緩存器735中已恢復的旁路位736的狀態。如果旁路位736已被設置來指示現有自身旁路模式的執行,則旁路致能位732被設置來重新啟動旁路模式。之後控制權返回到應用程式而隨後所遇到的封包巨指令704再次被解釋為自身指令的封包。處於自身旁路模式的應用程式亦可檢查旁路位736的狀態,以判定是否已經發生能改變於中斷發生前所使用的任何自身資源的狀態或內容的中斷。因為在結構上不指定自身資源的內容將於中斷事件中保留,一中斷處理例程或自其它程序獲得控制權的其它應用程式可能改變處於旁路模式的應用程式所使用的自身資源狀態。在一個可替代的較佳實施例中,旗標緩存器735包括微處理器710內的一自身緩存器,處於自身旁路模式的一應用程式的自身指令將可清除上述自身緩存器的內容。依據一個可替代的較佳實施例中,在從中斷回復時,中斷/例外/轉換邏輯電路737設置這個自身緩存器735的數值到一個非零值,通過此提供上述的自身旁路應用程式判定是否已經發生中斷的手段。在一個較佳實施例中,旗標緩存器735包括含有一具有一旁路位736的結構旗標緩存器和一自身緩存器,其中上述的自身緩存器可依據上述的操作情況,提供二個指示到一個已經發生中斷的自身旁路應用程式。
現在提到圖8,其是說明於一現存作業系統處理一中斷時,一個自身旁路指令序列如何應用在圖7標出的微處理器710內自身緩存器的一計時圖800。計時圖800描述關於通過微處理器710指令流程的二個欄位一個欄位命名為「巨指令總線」和另一個欄位命名為「自身指令總線」。巨指令總線欄位描述通過由快取邏輯電路711從內存701已檢索的巨指令,是經由此欄位所指示的某巨指令總線712送到指令轉譯邏輯電路713。自身指令總線展示由轉譯階段邏輯電路723所產生的自身指令是提供到此欄位所指示的某自身指令總線717。而指令的流程描述是關於微處理器脈衝信號的周期。在某個指令前後的非相關的巨指令被標記為「***」,而非相關的自身指令則標記為「+++」。
在第2周期期間,被提供到巨指令總線712的一旁路啟動巨指令的一第一形式是被標記為旁路啟動第一巨指令(BYPASSEN MACRO.1)。更具體來說,上述旁路啟動巨指令的第一形式命令具有旁路特徵的微處理器710進入一自身指令旁路模式。旁路啟動巨指令的第一形式所使用的時機是於一具有嵌入自身指令的應用程式跟隨著一個或更多封包指令時。因此,轉譯階段邏輯電路723發布一個旁路啟動巨指令以於下一個脈衝周期中透過設定上述的可控制緩存器731的旁路致能位732,令此微處理器710進入自身指令旁路模式。
在第3周期期間,內容為「LDT1,0」的一第一封包巨指令被提取轉譯。依據本發明,上述第一封包巨指令嵌入一第一自身指令「LDT1,0 」到一個在指令集結構內現有的巨指令的一欄位中。因為此微處理器710是處在自身旁路模式中,旁路邏輯電路721從第一封皮巨指令內部檢索上述第一自身指令「LDT1,0」和在接下來的脈衝周期期間發布上述的第一自身指令到自身指令總線717,通過此繞過封包指令的轉譯。
在第4周期期間,內容為「ST[EBX],T1」的第二個封包巨指令被提取轉譯。因為此微處理器710仍然處在自身旁路模式中,旁路邏輯電路721從第二封包巨指令內部檢索一第二自身指令ST[EBX],T1,和在接下來的脈衝周期期間發布此第二自身指令到自身指令總線717。
在第5周期期間,內容為「WRAP[NOT T1]」的第三封包巨指令被提取轉譯。因為此微處理器仍然處在自身旁路模式中,旁路邏輯電路721從第三封包巨指令內部檢索一第三自身指令「NOT T1」,和發布此第三自身指令到自身指令總線717。這時,中斷/例外/轉換邏輯電路737檢測到一中斷事件發生並且程控權被導向到一於1001-1004脈衝周期所執行的巨指令序列的中斷服務例行程序。在轉移程控權之前,微處理器710設定上述旗標緩存器735中的旁路位736,儲存此旗標緩存器735的狀態,另外清除在可控制緩存器731中的旁路致能位732,通過此可拒絕進入自身旁路模式。
接著第1001周期,進行轉譯此中斷服務例行程序內的一第一巨指令。因此,轉譯階段邏輯電路723將這第一巨指令轉譯成一相對應的一第一自身指令,並在下個脈衝周期期間發布此第一自身指令到自身指令總線717。
在第1002周期,一第四個封包巨指令「WRAP[XXXX]」被轉譯。且因為無法進入自身旁路模式,轉譯階段邏輯電路723將第四個封包巨指令轉譯成依據指令集結構所指定的相對應的一自身封包指令,並在下個周期期間發布上述的對應的自身封包指令到自身指令總線717。
在第1003周期,一個回復巨指令「RETURN」被轉譯。因此,轉譯階段邏輯電路723將此回復巨指令「RETURN」轉譯成一個自身回復指令並且在下個周期期間將它發布到自身指令總線717。
在第1004周期,上述的自身回復指令被執行並導致程控權返回到在第5周期期間所中斷執行的指令。在轉移控制權的前,中斷/例外/轉換邏輯電路737檢查在旗標緩存器735中恢復的旁路位736,並決定現有執行的自身旁路模式。因此,再設定控制緩存器731的旁路致能位732,且控制權交回到正使用自身旁路模式的應用程式。
在第5周期期間完成第三封包指令的轉譯。
在第6周期期間,一第五封包指令「WRAP[ST[EBX],T1]」被轉譯。因為此微處理器710已經回復到自身旁路模式,從第五封包指令內部檢索出一第五個自身指令「ST[EBX,T1]」和在下個周期期間提供上述的第五個自身指令到自身指令總線717。
在第7周期期間,一旁路致能巨指令的一第二形式,一旁路啟動第二巨指令(BYPASEN MACRO.2)被轉譯。因此,轉譯階段邏輯電路723產生一個旁路失效自身指令並在下個周期期間發布它到本身指令總線717,如此造成上述的旁路致能位732會被清除,因而此微處理器710退出自身指令旁路模式。
應用程式的產生是使用由本發明所提供的易懂自身指令。據此,因為不需要轉譯的緣故,今後的程序可更簡單緊緻並且其執行速度更快。本發明提供給應用程式的優點是允許直接使用自身資源、尋址模式與其指令語法等。此外應用程式員可依據本發明使用自身旁路模式以含混模糊其程序代碼片段,讓想竊取程序的行動失敗。
本發明的具體實施例已敘述如前,但本發明並未受限於此。但以上所述的,僅為本發明的較佳實施例,不能以之限制本發明的範圍,其是為提供予熟習此項技術者使用或製造本發明之用。大凡依本發明申請專利範圍所做的均等變化及修飾,仍將不失本發明的要義所在,亦不脫離本發明的精神和範圍,故都應視為本發明的進一步實施狀況。
權利要求
1.一個用來執行自身指令的微處理器內的裝置,其中自身指令經由外部指令總線直接送到微處理器,其特徵在於,該裝置包含指令轉譯邏輯電路,用以檢索由外部指令總線所送入的巨指令,及用以轉譯每一個該巨指令成為相對應的可執行的自身指令,其中若檢索到第一巨指令的第一個形式,該指令轉譯邏輯電路會命令微處理器來執行自身旁路模式,並且使用可控制緩存器內的第一位來指示;以及旁路邏輯電路,其是連接到該指令轉譯邏輯電路,其用以存取該可控制緩存器內的該第一位,以決定是否讓該本機旁路模式執行,並用以檢測封包巨指令,且根據該封包巨指令的檢測結果使得該指令轉譯邏輯電路被不致能,並是用以提供該微處理器可以執行的該自身指令,通過此繞過該指令轉譯邏輯電路。
2.如權利要求1所述的裝置,其特徵在於,所述該自身指令是嵌入至該封包指令,並經由該內存被傳送到該外部指令總線。
3.如權利要求1所述的裝置,其特徵在於,所述該微處理器使用旗標緩存器內的一第二位,以指出中斷事件的發生。
4.如權利要求3所述的裝置,其特徵在於,更包含一中斷/例外/轉換邏輯電路,於該中斷事件發生且轉換控制到一個中斷事件服務例行程序的前,清除該可控制緩存器內的該第一位,通過此使該本機旁路模式不致能,並使用該旗標緩存器內的該第二位,通過此指出該中斷事件的發生。
5.如權利要求1所述的裝置,其特徵在於,所述該旁路邏輯電路包含一個自身指令路由器,其連結到模式檢測邏輯電路,其是用以接收該封包巨指令,移除該封包巨指令內的自身指令,以及發送該自身指令到自身指令總線。
6.如權利要求1所述的裝置,其特徵在於,若檢索到該第一巨指令的第二形式,該指令轉譯邏輯電路會命令該微處理器去使該自身旁路模式不致能,並清除該可控制緩存器內的該第一位來指示此狀況。
7.一個允許微指令直接由外部指令總線送到管線微處理器內的執行邏輯電路的裝置,其特徵在於,所述該裝置包含一轉譯器,由巨指令總線接收巨指令,並將每一個該巨指令轉譯成相對應的微指令,而該相對應的微指令是經由微指令總線被送到執行邏輯電路;以及一旁路邏輯電路,連結到該轉譯器,並是用以發送微指令到該執行邏輯電路,而該旁路邏輯電路包含一模式檢測器,用以檢測自身旁路模式與封包巨指令,也用以讓該轉譯器終止指令轉譯;以及一自身指令路徑邏輯電路,連結到該模式檢測器,由該巨指令總線接收該封包指令,並送出該微指令到該微指令總線,通過此繞過該轉譯器。
8.如權利要求7所述的裝置,其特徵在於,所述該微指令被嵌入該封包巨指令內。
9.如權利要求7所述的裝置,其特徵在於,所述該模式檢測器通過由評估一可控制緩存器內的該第一位的狀態,來檢測該自身旁路模式。
10.如權利要求9所述的裝置,其特徵在於,所述該第一位是被使用來作為轉譯該第一巨指令的一第一型式的結果。
11.如權利要求10所述的裝置,其特徵在於,所述該第一位是被清除以作為轉譯該第一巨指令的一第二型式的結果。
12.如權利要求11所述的裝置,其特徵在於,所述該第一巨指令包含符合管線微處理器的現存指令集結構中的一個無效巨指令或備用的巨指令。
13.如權利要求7所述的裝置,其特徵在於,所述管線微處理器使用位於旗標緩存器內的一第二位,以指示中斷事件的發生。
14.如權利要求13所述的裝置,其特徵在於,更包含一中斷/例外/轉換邏輯電路,於該中斷事件發生時並且於轉換控制到一個中斷事件服務例行程序的前,清除該可控制緩存器內的該第一位,通過此使該本機旁路模式被不致能,並使用該旗標緩存器內的該第二位,以指出該中斷事件的發生。
15.一個直接送出內存中所儲存的複數個自身指令到微處理器以供執行的方法,其特徵在於,該方法包含執行該微處理器的一自身旁路模式;嵌入複數個自身指令至相對應的複數個封包指令,並送出對應的複數個封包指令到微處理器;以及在微處理器內檢測該自身指令旁路模式,並由對應的複數個封包指令內取出複數個自身指令。
16.如權利要求15所述的方法,其特徵在於,所述該執行方法包含檢測既不是無效巨指令也不是備用巨指令的一巨指令的第一型式;以及使用可控制緩存器內的一個位,以指示該微處理器是位於該自身指令旁路模式。
17.如權利要求15所述的方法,其特徵在於,所述該嵌入步驟包含編碼對應的複數個封包指令的領域內的每一複數個自身指令,其中每一對應的該些封包指令包含一個有效巨指令以外的巨指令。
18.如權利要求15所述的方法,其特徵在於,更包含在中斷事件檢測的下,使用一個旗標緩存器內的一個位,且使該自身指令旁路模式被不致能;以及返回到中斷事件,評估該旗標緩存器內的該位,並再次致能自身旁路模式。
全文摘要
本發明所揭示的裝置包括指令轉譯邏輯電路和旁路邏輯電路。指令轉譯邏輯電路檢索經由外部指令總線所提供的巨指令,並將每個巨指令轉譯成所連接的自身指令。若第一巨指令的第一形式被檢索,指令轉譯邏輯電路命令微處理器來致能一個自身旁路模式,並用可控制緩存器內的第一位來指示。旁路邏輯電路結合到指令轉譯邏輯電路,而旁路邏輯電路接收可控制緩存器內的第一位,以決定自身旁路模式是否已經致能,並且根據頓封包巨指令的檢測,使指令轉譯邏輯電路被不致能,並通過由微處理器的執行以提供自身指令,通過此繞過指令轉譯邏輯電路。
文檔編號G06F9/318GK1632744SQ20051000465
公開日2005年6月29日 申請日期2005年1月21日 優先權日2004年1月21日
發明者G·葛蘭·亨利, 阿塔羅·馬丁-笛-尼可拉斯, 泰瑞·帕德斯 申請人:智權第一公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀