專利名稱:使用指令字段規定擴展功能的微處理器的制作方法
技術領域:
本發明涉及微處理器領域,尤其涉及用于擴展現有的微處理器結構內的微處理器功能的機構。
為了與用于以前的80×86各代產品--8086/8,80286,80386和80486所開發的大量軟件維持兼容性,微處理器制造商繼續開發執行×86指令的新產品。維持軟件兼容性迫使在較新的產品中有許多結構上的妥協。為了保持較早產品的功能,硬件經常被簡單地修改或為了增加容量和性能而被擴展。經常擴展以增加容量和性能的一個領域是存儲器尋址模型。
早期的×86微處理器使用分段來實現一個存儲器尋址模型。在分段中,一個存儲器地址由使用兩個部分的一條指令規定一個段和在段內的一個偏移量。段選擇器存儲在一個段寄存器中并且說明該段位于主存儲器中的什么地方(如果處理器運行在無保護模式下)或者指向存儲在主存儲器中的段描述符表的一個段描述符。段描述符包含關于段的信息,包括它的基地址。基地址加上偏移量形成物理地址。有能力進入存儲器的每條×86指令有一個缺省的段寄存器,從該寄存器取出它的段數據。×86結構定義了六個段寄存器CS,DS,SS,ES,FS和GS。CS是用于代碼(指令)存儲的缺省的段寄存器。DS是用于不處理堆棧值的指令的缺省的段寄存器。對于堆棧存取,SS是缺省的段寄存器。ES是用于字符串處理指令的缺省的段寄存器。通過加上一個段代換前綴字節到指令,缺省的段可以被代換而采用用于一個特定指令的另一個段寄存器。段代換前綴字節是指令的一個字段。如這里使用的,術語“指令字段”指的是形成一個指令的字節內的一個或多個字節。
從80386開始,特別的分頁電路被加到分段地址產生硬件以允許分頁存儲器系統的實現。程序設計員開發了使用分頁存儲器系統的操作系統。分頁存儲器系統在任何給定的時間提供加載較小程序的部分到主存儲器的能力并且同時提供用于程序運行的附加的內置保護檢查。有關分頁結構和在×86結構中分段的附加的信息可以從1987年由在舊金山的SYBEX,Inc.的Crawford等人的出版物“編程80386”中找到。在這里結合參考了這個出版物的所有部分。
當實現這樣的分頁存儲器系統時一般不使用存儲器分段。存儲器分段不能被“關斷”,但可以通過一個“平板”存儲器模型的使用而被有效地禁止。通過使所有的段寄存器指向同樣的存儲器段而創建一個平板存儲器模型(即使所有的存儲器段重疊)。通過在所有的段寄存器存儲同樣的段信息完成這種重疊。使用分頁機構的程序設計員一般實現平板存儲器模型。
平板存儲器模型在段寄存器的使用上有很大的影響。保持冗余的段地址信息使得80286微處理器增加的兩個通用的段寄存器FS和GS實際上是沒用的。(其他的段寄存器由80×86指令不明顯的引用,但僅僅是在一定程度上有用的,因為它們包含冗余的信息)。此外,操作系統可以檢測使用這些寄存器用于其他有用的目的的企圖并且可以產生一個例外。由于這些寄存器被用于地址產生,加載一個不適當值的段寄存器可以使一個程序破壞由另一個程序使用的存儲空間,或操作系統本身。在平板存儲器模型下對于明確的參照段寄存器的一個建設性的使用是需要的。
根據本發明的微處理器可以解決上面概述的大部分問題。微處理器被配置以檢測在平板存儲器模式中被執行的指令代碼序列中段代換前綴的存在,并且使用前綴值或存儲在相關的段寄存器中的值以控制內部和/或外部功能。此外,該微處理器可以被配置以發信號通知下面的指令的正常執行的變化或修改。展示的許多實施例有益地使用段代換前綴以擴展微處理器的性能或容量。透明的和不透明的實施例均被考慮。該微處理器可以被配置以提供許多有用的功能而不改變×86結構。因此,當實現透明的實施例時與×86結構的較早的裝置的向后兼容性可以被有益的維持。當實現不透明實施例時,向后兼容性可以不被維持但×86結構仍然不被修改。因此,因為一些編碼被仔細地對待,代碼可以容易地進入實現新功能的處理器,而指令組的所有特性是不改變的。
概括地說,本發明考慮的微處理器包括一個地址轉換單元,多個段寄存器,一個第一控制單元,一個配置寄存器,以及一個第二控制單元。地址轉換單元被配置以從一個邏輯地址和一個段值產生一個物理地址。緊緊耦合到地址轉換單元的至少多個段寄存器中的一個存儲前面提到的段值。第一控制單元被配置以檢測一個表示多個段寄存器中的一個的指令字段并傳送一個信號到表示多個段寄存器中的一個的地址轉換單元。配置寄存器存儲一個表示系統的一個地址轉換模式的值。最后,第二控制單元被配置以完成一個取決于存儲在配置寄存器中的值并且還取決于來自第一控制單元的信號的功能。本發明還考慮了包含上述微處理器和主存儲器的一個計算機系統。
本發明還進一步考慮的一個微處理器包括一個地址轉換單元,多個段寄存器,一個第一控制單元,一個第二控制單元,以及一個配置寄存器。地址轉換單元被配置以從一個邏輯地址和一個段值產生一個物理地址。段寄存器被耦合到地址轉換單元,其中至少多個段寄存器中的一個存儲段值。也耦合到地址轉換單元的第一控制單元被配置以檢測一個表示多個段寄存器中的一個的指令字段并且傳送一個信號到表示所述多個段寄存器中的一個的地址轉換單元。配置寄存器存儲一個表示微處理器的地址轉換模式的值。耦合到配置寄存器和段寄存器的第二控制單元被配置以完成一個取決于存儲在配置寄存器中的值并且還取決于段值的功能。此外本發明考慮的一個計算機系統包括了上述的微處理器和一個主存儲器。
根據閱讀下面的詳細描述以及根據參照的附圖,本發明的其他目的和優點將變得明顯,其中
圖1是包含一個80×86微處理器的計算機系統的方框圖。
圖2是說明圖1的地址轉換單元的方框圖,它包括產生在實模式下運行的80×86微處理器中實際存儲器地址的結構。
圖3是說明圖1的地址轉換單元的方框圖,它包括產生在保護模式下運行的80×86微處理器中實際存儲器地址的結構。
圖4是一個包括一個高速緩沖存儲器控制器的微處理器的一部分的方框圖,該控制器通過段寄存器選擇信息被有選擇地允許操作。
圖5是一個包括一個數據預取單元的微處理器的一部分的方框圖,該預取單元通過段寄存器選擇信息被有選擇地允許操作。
圖6是一個包括一個分支預測單元的微處理器的一部分的方框圖,該分支預測單元通過段寄存器選擇信息接收控制信息。
盡管本發明對于各種修改和改變的形式是容許的,這里的特定實施例在附圖中作為例子示出并且將在這里詳細地描述。然而,應該理解那里的附圖和詳細的描述并不試圖限制本發明為公開的特定的形式,而是相反,本發明是包括了適合由附加的權利要求書所定義的本發明的精神和范圍的所有的修改、等效和替換。
現在來看圖1,展示了包括一個微處理器101的計算機系統100的方框圖。在一個實施例中,微處理器101實現80×86微處理器結構。微處理器101被耦合到一個外部高速緩沖存儲器單元102和一個主存儲器104。在一些實施例中,不包括外部高速緩沖存儲器單元102。外部高速緩沖存儲器單元102被用于加速最新存取的數據和不存儲在微處理器101的內部高速緩沖存儲器中的指令的傳送。微處理器101包括一個協調從微處理器101的內部單元到外部高速緩沖存儲器單元102和/或主存儲器104的信息傳送的總線接口單元106。內部高速緩沖存儲器單元108存儲由取出單元110和執行單元112使用的指令和數據信息。在一個實施例中,內部高速緩沖存儲器單元108包括一個統一的指令和數據高速緩沖存儲器。在另一個實施例中,分開的指令和數據高速緩沖存儲器被配置到內部高速緩沖存儲器單元108中。
在討論本發明的獨一無二的特征之前將描述微處理器101的單元。取出單元110從內部高速緩沖存儲器單元108取出指令并且將指令送到指令譯碼單元114。指令譯碼單元114對于傳遞到執行單元112的接收的指令譯碼。駐留在寄存器的操作數被指令譯碼單元114取出并且當指令被傳遞到執行單元112時提供指令。一旦操作數是可獲得的則執行單元112被配置以執行指令。如本領域的那些技術人員所理解的,有時×86指令具有的操作數根據一個偏移量,或根據寄存器和偏移量的某些結合存儲在一個寄存器特定的地址的存儲器中。為了檢索存儲在存儲器中的操作數,執行單元112傳送段寄存器標識信息和一個計算的偏移量到地址轉換單元116。段寄存器標識信息或者由段代換前綴字節或者由用于相關的指令的缺省段寄存器產生。根據微處理器101的轉換模式,地址轉換單元116通過分段方法以及選擇地通過上面描述的分頁方法轉換地址。
在一個實施例中,轉換的地址繞過地址轉換單元116到內部高速緩沖存儲器單元。在另一個實施例中,一個高速緩沖存儲器存取由執行單元112開始并且使用來自地址轉換單元116的轉換地址完成。在另外一個實施例中,內部高速緩沖存儲器單元108采用一個未轉換的地址尋址。在這個實施例中,當一個高速緩沖存儲器的丟失發生,或當高速緩沖存儲器線路被從內部高速緩沖存儲器單元108除去并返回到主存儲器104時,地址轉換單元116被存取。
總的來說,地址轉換單元116被配置以接收段寄存器標識信息和一個偏移量并且轉換這個信息為物理地址。如果平板的尋址模式是有效的,由于段寄存器每個包含同樣的值,所以段寄存器標識信息是不重要的。因此,通過解釋傳送到地址轉換單元116的段標識信息,特征可以加到微處理器101。以這種方式加上的特征可以是透明的,使得利用這些特征所寫的代碼將正確地運行在實現×86結構但不實現加上的特征的處理器上并且使得不知道特征的所寫的代碼將正確地運行在實現加上的特征的處理器上。以這種方式加上的特征也可以是不透明的,使得利用特征的所寫的代碼可以不正確地運行在不實現特征的處理器上并且使得不知道特征的代碼可以不運行在實現特征的處理器上。此外,通過使用存儲在選擇的段寄存器內(即由段寄存器代換前綴規定的段寄存器)的值以控制一個特征,特征可以以不透明方式加上。當存儲的值被使用時,因為地址轉換單元116被配置以忽略(當完成轉換時)用于控制特征的段寄存器的部分,特征是不透明的。由于這個功能不是80×86結構的一部分,由存儲在一個段寄存器中的值控制的增加的特征是不透明的。在詳細討論地址轉換單元116之后,正如下面將要展示的,許多不同的特征要被考慮。
圖2詳細地展示了用于實模式物理地址產生的情況下圖1的地址轉換單元116。在這個模式中,地址轉換單元116產生20位物理地址。地址轉換單元116提供段寄存器標識信息和一個16位偏移量值。多路復用器204使用段寄存器選擇信息以提供段寄存器中的一個的內容到移位寄存器206。(8086/8微處理器僅有所示六個段寄存器中的四個CS,DS,ES和SS)。然后移位寄存器206向左移動這個值四個二進制位的位置,形成一個存儲器段的20位基地址。加法器208加上16位偏移量到20位段基地址,得到一個用于在存儲器中定位的20位物理地址。
圖3詳細地展示了用于保護模式物理地址產生的情況下圖1的地址轉換單元116。保護模式在8086/8微處理器中是不能利用的。如同在實模式中,地址轉換單元116提供段寄存器標識信息和一個偏移量值。然而,在保護模式中段寄存器包含一個到駐留在主存儲器中的存儲器段信息的兩個表中的一個的索引。該表包含關于地址的轉換的信息,包括段的基地址和段的大小。
從80286微處理器開始,加上了兩個通用段寄存器(FS和GS),使得段寄存器的總數達到六個。關于六個存儲器段的信息可以被加載到六個段寄存器。一般地與每個段寄存器有關的投影寄存器存儲來自有關段描述符的數據,包括段的基地址。在80286中,段基地址是24位長。在80386和80486中,段基地址是32位長。多路復用器304使用段寄存器標識信息以提供相應的存儲器段的基地址中的一個的內容。加法器306加上偏移量到段基地址,得到用于在存儲器中定位的一個物理地址(假定分頁電路308被禁止)。在80286中,偏移量是16位長,而物理地址是24位長。在80386和80486中,偏移量可以是16或32位長,而物理地址是32位長。如果分頁電路308是允許的,根據分頁算法由加法器306形成的地址也再次被轉換。分頁算法使用由加法器306形成的地址的高位比特以索引到包含頁面表的地址的一個頁面目錄。頁面表的地址被加到來自加法器306的位的第二范圍以找到一個特定的頁面目錄的入口。存儲在這里的信息被用于轉換由加法器306形成的地址到一個物理地址。
在平板尋址方式中,分頁算法被用于轉換并且由加法器306產生的地址如上所述與邏輯地址相同。因此,段寄存器用得非常少。特別少使用的是段寄存器FS和GS,它們不是用于×86指令的缺省的段寄存器。因此,有關FS和GS寄存器的段寄存器代換字節可以被用于允許微處理器101的擴展的特征。另外,規定對于一個指令的缺省的段寄存器的段寄存器代換字節可以用于另一個實施例中。應該注意當平板存儲器尋址無效時這另一個實施例也可以被使用。
圖4是一個包括一個高速緩沖存儲器控制單元404的微處理器101的一部分的方框圖。高速緩沖存儲器控制單元404被配置在內部高速緩沖存儲器單元108內并且被耦合到執行單元112和一個控制寄存器402。高速緩沖存儲器控制單元404使用由執行單元112提供的段寄存器標識信息,以及使用在控制寄存器402中的一個使能位400的內容被選擇地使能。當使能位400被設置時,高速緩沖存儲器控制器404選擇地存儲與指令有關的數據,該指令在內部高速緩沖存儲器單元108中產生段寄存器標識信息。這種高速緩沖存儲器能力選擇是除了×86結構的結構的高速緩沖存儲器能力選擇以外如在頁面表入口的PCD位中所體現的。在一個實施例中,數據被存儲除非FS寄存器被用于相關指令的一個段寄存器代換前綴字節規定。其他的實施例可以使用其他的段寄存器代換用于這個功能。
在另一個實施例中,存儲在選擇的段寄存器內的值被傳送到高速緩沖存儲器控制單元404。因此一個特定的地址的高速緩沖存儲器能力是由傳送的值確定的。
如果使能位400被清除,段寄存器標識信息不用于確定一個特定的地址的高速緩沖存儲器能力。在另一個實施例中,用于一個地址的高速緩沖存儲器特性被傳送到外部高速緩沖存儲器102(如圖1所示)。
在另一個實施例中,高速緩沖存儲器控制器404被配置以選擇地存儲在連續寫入或寫回模式中的一個行。當使能位400被設置,高速緩沖存儲器控制器404選擇地存儲與在一個連續寫入或寫回模式的內部高速緩沖存儲器單元108中產生的段寄存器標識信息的指令相關的數據。這種模式選擇是除了×86結構的結構連續寫入選擇以外如在頁面表入口的PWT位所體現的。在一個實施例中,數據被以寫回模式存儲除非FS段寄存器被用于相關指令的一個段寄存器代換前綴字節規定。其他的實施例可以使用其他的段寄存器代換前綴字節用于這個功能。在另一個實施例中,存儲在選擇的段寄存器內的值被傳送到高速緩沖存儲器控制單元404。因此一個特定的地址的連續寫入或寫回模式被傳送的值確定。如果使能位400被清除,段寄存器標識信息不用于確定一個特定的地址的連續寫入或寫回模式。在另一個實施例中,用于一個地址的連續寫入或寫回特性被傳送到外部高速緩沖存儲器102(如圖1所示)。
高速緩沖存儲器控制單元404具有根據與一條指令相關的段寄存器標識信息的一個特定的值實現一個高速緩沖存儲器刷新或高速緩沖存儲器清除操作的另一個實施例。高速緩沖存儲器刷新操作導致包含高速緩沖存儲器刷新操作的地址的一個高速緩沖存儲器界被從高速緩沖存儲器中除去。如果該行相對于主存儲器修改,修改的值被寫回到主存儲器。一個高速緩沖存儲器清除操作類似于刷新操作在于一個修改的高速緩沖存儲器界被寫回到主存儲器。然而,高速緩沖存儲器清除操作并不從高速緩沖存儲器除去行。與立刻影響整個高速緩沖存儲器的×86結構的INVD和WBINVD指令不同,這些操作影響一個單個的高速緩沖存儲器界。GS段代換前綴字節被用于引起在這個實施例中一個刷新操作,以及ES段代換前綴字節被用于引起一個清除操作。其他的實施例可以使用其他的段寄存器代換前綴字節用于這些功能,或可以使用在選擇的段寄存器中存儲的值以規定這些功能。如果使用存儲在選擇的段寄存器中的值,那么該值與段標識值一起被傳送到高速緩沖存儲器控制單元404。
在另一個實施例中,高速緩沖存儲器控制單元404實現基于FS段寄存器代換前綴字節的使用的一個推測的丟失行填充功能。在這個實施例中,如果FS段代換前綴字節被規定用于一個特定的指令和相關于指令丟失內部高速緩沖存儲器單元108的地址,則包含地址的高速緩沖存儲器界被從主存儲器取出,即使指令被執行單元112推測地執行。有時,一個特定的指令可以表現出對于微處理器101是推測的,即使地址是正確的并且在不久的將來被程序所要求。如果一個程序編制器或編譯程序知道這種情況,它會規定對于指令的一個高速緩沖存儲器丟失被推測地取出到內部高速緩沖存儲器108。當用于本文中的指令執行時,術語“推測”意味著在知道指令在一個程序中被指令的連續執行的請求之前一個指令被執行。
高速緩沖存儲器控制器404的另一個實施例被配置以分配一個高速緩沖存儲器界用于如果ES段寄存器代換前綴字節包括在存儲指令中,則存儲丟失內部高速緩沖存儲器108的指令。如果使能位400沒有設置,那么丟失內部高速緩沖存儲器108的存儲指令被寫到主存儲器而不取出相關的高速緩沖存儲器界到內部高速緩沖存儲器108。如果使能位400被設置,那么如果存儲指令包括ES段寄存器代換前綴字節,丟失內部高速緩沖存儲器108的存儲指令將導致相關的數據字節的一個高速緩沖存儲器界填充發生。如果不包括ES段寄存器代換前綴字節,則高速緩沖存儲器界填充將不發生并且存儲的數據將被寫到主存儲器。在另一個實施例中,丟失高速緩沖存儲器的存儲指令將導致一個高速緩沖存儲器界被分配但相關的數據字節將不從存儲器取出。由存儲指令提供的數據字節將被存儲到高速緩沖存儲器界。然而,高速緩沖存儲器界的其他數據字節在內部高速緩沖存儲器108中被標記為無效,直到附加的存儲指令使得其他數據字節變得有效。在另一個可供選擇的實施例中,其他的數據字節被設置為零。高速緩沖存儲器控制單元404的一個附加的實施例被配置以使用存儲在選擇的段寄存器中的值來規定上面提到的推測的丟失行填充功能。
在一個實施例中,控制寄存器402是出現在80386和以后的微處理器中的控制寄存器0。使能位400是控制寄存器0的位31,分頁位。當位31被設置時,分頁被使能。
圖5是一個包括數據預取單元500的微處理器101的一部分的方框圖。數據預取單元500耦合到執行單元112和控制寄存器402。通過使用由執行單元112提供的段寄存器標識信息和使用在控制寄存器402中的使能位400的內容,數據預取單元500被選擇地使能。當使能位400被設置時,數據預取單元500預取在由指令說明的地址開始的主存儲器104(如圖1所示)的連續的字節組中存儲的高速緩沖存儲器界有關的數據。高速緩沖存儲器界由內部高速緩沖存儲器單元108存儲。如果使能位400沒有設置,那么數據預取單元保持空閑。在一個實施例中,如果FS段寄存器代換被用于一個指令,數據預取單元500開始預取。由數據預取單元500取出的連續的高速緩沖存儲器界的數量可以根據不同的實施例而變化。在另一個實施例中,在選擇的段寄存器中存儲的值的控制下數據預取開始。此外,用于取出的連續高速緩沖存儲器界的數量可以由在選擇的段寄存器中存儲的值規定。
在另一個實施例中,數據預取單元500實現其他的預取方案。應該注意許多預取方案適合于數據預取單元500,包括基于預取方案和其他“智能”預取方案的進步。各種“智能”預取方案是公知的。
圖6是一個包括包含在取出單元110中的分支預測單元600的微處理器101的一部分的方框圖。分支預測單元600耦合到執行單元112和一個控制寄存器402。分支預測單元600實現在取出單元110內體現的,并且作為另一個可供選擇的方案的分支預測方案。另一個可供選擇的方案通過由執行單元112提供的段寄存器標識信息和在控制寄存器402中的使能位400的內容而被使能。如果使能位400沒有設置,則使用分支預測單元600的分支預測方案。如果使能位400被設置,則分支預測單元600的分支預測方案被使用,除了在分支指令包括FS或GS段寄存器代換前綴字節之前立即有一個空操作指令的情況。在這種情況下,使用另一個可供選擇的分支預測方案。
在一個實施例中,如果一個先前的空操作包括FS段寄存器代換前綴字節,另一個可供選擇的分支預測方案是預測被采用的分支,或者如果GS段寄存器代換前綴字節被包括,另一個可供選擇的分支預測方案是預測不被采用的分支。在這個應用的上下文中,術語“空操作”并不是指×86結構的NOP指令。“空操作”是一個不改變一個寄存器或存儲器,而引用一個存儲器單元的一條指令,使得一個段寄存器代換前綴字節可以與指令一起被包括。一個示范的空操作指令是一條將零加到一個存儲器單元的內容的指令。此外,存儲在選擇的段寄存器中的值可以被用于使能或禁止另一個可供選擇的分支預測方案。
對于段寄存器標識信息的上述使用是透明的使用,除了使用存儲在選擇的段寄存器中(代替一個特別的段代換前綴字節的存在)的值以控制一個特征的實施例。不透明的使用也被考慮,如下所述。
兩個示范性的不透明的使用可以在執行單元112內實現。首先,一個段寄存器代換字節可以被用于創建不修改狀態標志的指令。例如,ADD指令修改狀態標志。通過使用段寄存器代換前綴字節,一個使用存儲器操作數的ADD指令被修改為不修改狀態標志的ADD指令。在一個實施例中,FS段寄存器代換前綴字節說明ADD指令將不修改狀態標志。這個功能允許用于取決于由一個特定的操作產生的狀態標志的分支的調度。許多指令可以在分支指令與取決于是否指令不修改狀態標志的指令之間執行。
幫助分支指令調度的另一個實施例是實現狀態標志的多種設置。在這種方式中,條件的多種設置可以被同時保留。段寄存器代換前綴字節可以與修改狀態標志的指令一起使用以說明多個狀態標志設置中的哪一個要修改。這樣緊接著一個分支指令之前的空操作指令使用段寄存器代換前綴字節以說明多個狀態標志設置中的哪一個是分支指令應該使用的以確定分支方向。如果相對于一條指令不包括任何段寄存器代換前綴字節,則狀態標志的缺省設置是相關于指令的。另一個實施例使用存儲在選擇的段寄存器內的值以選擇要被一個特定的指令使用的狀態標志的設置。
段寄存器代換前綴字節的另一個不透明的使用可以在指令譯碼單元114內體現。如上所述,指令譯碼單元114讀取作為一個指令的操作數規定的寄存器并與指令一起傳送該值到執行單元112。在這個實施例中,段寄存器代換前綴字節用于選擇存儲數據的多個寄存器存儲單元中的一個。每個寄存器存儲單元包括×86寄存器的所有補充。在這種方式中,結構的寄存器組可以擴展而不改變指令編碼。在本領域的熟練的技術人員應該理解,一個較大的寄存器組允許較多操作數值保留在寄存器(可以快速存取)中并且因此對于存儲器的存取(一般要求一個較長的時間周期)減少了。在一個實施例中,沒有任何段寄存器代換前綴字節規定寄存器的第一個存儲單元,一個說明FS段寄存器的段寄存器代換前綴字節規定寄存器的第二個存儲單元,一個說明GS段寄存器的段寄存器代換前綴字節規定寄存器的第三個存儲單元,以及一個說明ES段寄存器的段寄存器代換前綴字節規定寄存器的第四個存儲單元。在另一個實施例中,存儲在選擇的段寄存器內的值用于選擇來自許多寄存器存儲單元的合適的寄存器存儲單元。
應該注意許多其他不透明的使用可以被創建用于段寄存器代換前綴字節。本發明考慮了通過段寄存器代換前綴字節的使用實現的透明和不透明的功能。此外要注意盡管上述實施例是80×86微處理器,在任何微處理器結構中實現的任何微處理器可以從結構的相似的擴展中得到好處。
在1993年10月29日由Witt等人申請的系列號08/146,382的共同未決的、共同轉讓的專利申請,名稱為“高性能超標量微處理器”中可以找到關于微處理器的其他部分的方面。此外,在1995年1月25日由Tran等人申請的系列號08/377865的共同未決的、共同轉讓的專利申請,名稱為“高性能超標量指令調整單元”中可以找到信息。在這里結合參考了公開的整個上述兩個申請。
一旦完全理解了上述公開的申請,本發明的各種變化和修改對于本領域的那些技術人員將變得很明顯。下列權利要求將被解釋以試圖包括所有這些變化和修改。
權利要求
1.一個微處理器包括一個地址轉換單元,配置成從一個邏輯地址和一個段值產生一個物理地址;多個段寄存器,耦合到所述地址轉換單元,其中至少所述多個段寄存器之一存儲所述段值;一個第一控制單元,耦合到所述地址轉換單元,其中所述第一控制單元被配置以檢測一個表示所述多個段寄存器之一的指令字段并傳送一個信號到表示所述多個段寄存器的所述之一的所述地址轉換單元;一個配置寄存器,用于存儲一個表示所述微處理器的地址轉換模式的值;以及一個第二控制單元,耦合到所述配置寄存器和所述第一控制單元,其中所述第二控制單元被配置以完成一個取決于存儲在所述配置寄存器的所述值和進一步取決于來自所述第一控制單元的所述信號的功能。
2.如權利要求1所述的微處理器,其中所述第二控制單元是一個高速緩沖存儲器控制單元。
3.如權利要求2所述的微處理器,其中所述高速緩沖存儲器控制單元被配置以忽略與包括所述指令字段的指令有關的數據字節。
4.如權利要求3所述的微處理器還包含一個耦合到所述高速緩沖存儲器控制單元的總線接口單元。
5.如權利要求4所述的微處理器,其中所述總線接口單元被配置以傳送一個信號到表示所述忽略功能的一個外部高速緩沖存儲器單元。
6.如權利要求2所述的微處理器,其中所述高速緩沖存儲器控制單元被配置以根據包括一個與包含所述指令字段的指令有關的地址的高速緩沖存儲器界執行一個高速緩沖存儲器刷新操作。
7.如權利要求2所述的微處理器,其中所述高速緩沖存儲器控制單元被配置以根據包括一個與包含所述指令字段的指令有關的地址的高速緩沖存儲器界執行一個高速緩沖存儲器清除操作。
8.如權利要求2所述的微處理器,其中所述高速緩沖存儲器控制單元還被配置以請求與包含所述指令字段的指令有關的一個地址有關的數據字節,盡管所述指令是推測的。
9.如權利要求2所述的微處理器,其中所述高速緩沖存儲器控制單元被配置以存儲與包含在連續寫入模式下所述指令字段的指令有關的數據字節。
10.如權利要求2所述的微處理器,其中所述高速緩沖存儲器控制單元被配置以存儲與包含在寫回模式下所述指令字段的指令有關的數據字節。
11.如權利要求2所述的微處理器,其中所述高速緩沖存儲器控制單元被配置,如果所述存儲指令在所述相關的數據高速緩沖存儲器中丟失,從主存儲器傳送與一個存儲指令相關的數據字節到一個相關的數據高速緩沖存儲器。
12.如權利要求2所述的微處理器,其中所述高速緩沖存儲器控制單元被配置以分配用于與所述存儲指令相關的數據字節在相關的數據高速緩沖存儲器內的高速緩沖存儲器界。
13.如權利要求1所述的微處理器,其中所述第二控制單元是一個數據預取單元。
14.如權利要求13所述的微處理器,其中所述數據預取單元被配置以預取與包含所述指令字段的指令相關的地址開始的連續的高速緩沖存儲器界。
15.一個微處理器包括一個地址轉換單元,配置成從一個邏輯地址和一個段值產生一個物理地址;多個段寄存器,耦合到所述地址轉換單元,其中至少所述多個段寄存器之一存儲所述段值;一個第一控制單元,耦合到所述地址轉換單元,其中所述第一控制單元被配置以檢測一個表示所述多個段寄存器之一的指令字段并傳送一個信號到表示所述多個段寄存器的所述之一的所述地址轉換單元;一個配置寄存器,用于存儲一個表示所述微處理器的地址轉換模式的值;以及一個第二控制單元,耦合到所述配置寄存器和所述多個段寄存器,其中所述第二控制單元被配置以完成一個取決于存儲在所述配置寄存器的所述值和進一步取決于所述段值的功能。
16.如權利要求15所述的微處理器,其中所述第二控制單元是一個高速緩沖存儲器控制單元。
17.如權利要求16所述的微處理器,其中所述高速緩沖存儲器控制單元被配置以根據所述段值忽略與包含所述指令字段的指令相關的數據字節。
18.如權利要求17所述的微處理器還包含一個耦合到所述高速緩沖存儲器控制單元的總線接口單元。
19.如權利要求18所述的微處理器,其中所述總線接口單元被配置以傳送一個信號到表示所述忽略功能的一個外部高速緩沖存儲器單元。
20.如權利要求16所述的微處理器,其中所述高速緩沖存儲器控制單元被配置以根據所述段值根據包括一個與包含所述指令字段的指令有關的地址的高速緩沖存儲器界執行一個高速緩沖存儲器刷新操作。
21.如權利要求16所述的微處理器,其中所述高速緩沖存儲器控制單元被配置以根據所述段值根據包括一個與包含所述指令字段的指令有關的地址的高速緩沖存儲器界執行一個高速緩沖存儲器清除操作。
22.如權利要求16所述的微處理器,其中所述高速緩沖存儲器控制單元還被配置以請求與包含所述指令字段的指令有關的一個地址有關的數據字節,盡管所述指令是推測的。
23.如權利要求16所述的微處理器,其中所述高速緩沖存儲器控制單元被配置以存儲與包含在連續寫入模式下所述指令字段的指令有關的數據字節。
24.如權利要求16所述的微處理器,其中所述高速緩沖存儲器控制單元被配置以存儲與包含在寫回模式下所述指令字段的指令有關的數據字節。
25.如權利要求16所述的微處理器,其中所述高速緩沖存儲器控制單元被配置,如果所述存儲指令在所述相關的數據高速緩沖存儲器中丟失,從主存儲器傳送與一個存儲指令相關的數據字節到一個相關的數據高速緩沖存儲器。
26.如權利要求16所述的微處理器,其中所述高速緩沖存儲器控制單元被配置以分配用于與所述存儲指令相關的數據字節在相關的數據高速緩沖存儲器內的一個高速緩沖存儲器界。
27.如權利要求15所述的微處理器,其中所述第二控制單元是一個數據預取單元。
28.如權利要求27所述的微處理器,其中所述數據預取單元被配置以根據所述段值預取與包含所述指令字段的指令相關的地址開始的連續的高速緩沖存儲器界。
29.一個計算機系統包括一個主存儲器;以及一個微處理器耦合到所述主存儲器,其中所述微處理器包含一個地址轉換單元,配置成從一個邏輯地址和一個段值產生一個物理地址;多個段寄存器,耦合到所述地址轉換單元,其中至少所述多個段寄存器之一存儲所述段值;一個第一控制單元,耦合到所述地址轉換單元,其中所述第一控制單元被配置以檢測一個表示所述多個段寄存器之一的指令字段并傳送一個信號到表示所述多個段寄存器的所述之一的所述地址轉換單元;一個配置寄存器,用于存儲一個表示所述計算機系統的地址轉換模式的值;以及一個第二控制單元,耦合到所述配置寄存器和所述第一控制單元,其中所述第二控制單元被配置以完成一個取決于存儲在所述配置寄存器的所述值和進一步取決于來自所述第一控制單元的所述信號的功能。
30.如權利要求29所述的計算機系統還包括一個耦合在所述主存儲器和所述微處理器之間的外部高速緩沖存儲器單元。
31.一個計算機系統包括一個主存儲器;以及一個微處理器,耦合到所述主存儲器,其中所述微處理器包含一個地址轉換單元,配置成從一個邏輯地址和一個段值產生一個物理地址;多個段寄存器,耦合到所述地址轉換單元,其中至少所述多個段寄存器之一存儲所述段值;一個第一控制單元,耦合到所述地址轉換單元,其中所述第一控制單元被配置以檢測一個表示所述多個段寄存器之一的指令字段并傳送一個信號到表示所述多個段寄存器的所述之一的所述地址轉換單元;一個配置寄存器,用于存儲一個表示所述計算機系統的地址轉換模式的值;以及一個第二控制單元,耦合到所述配置寄存器和所述多個段寄存器,其中所述第二控制單元被配置以完成一個取決于存儲在所述配置寄存器的所述值和進一步取決于所述段值的功能。
32.如權利要求31所述的計算機系統還包括一個耦合在所述主存儲器和所述微處理器之間的外部高速緩沖存儲器單元。
33.一個微處理器包括一個地址轉換單元,配置成從一個邏輯地址和一個段值產生一個物理地址;多個段寄存器,耦合到所述地址轉換單元,其中至少所述多個段寄存器之一存儲所述段值;一個第一控制單元,耦合到所述地址轉換單元,其中所述第一控制單元被配置以檢測一個表示所述多個段寄存器之一的指令字段并傳送一個信號到表示所述多個段寄存器的所述之一的所述地址轉換單元;一個配置寄存器,用于存儲一個表示所述微處理器的地址轉換模式的值;以及一個執行單元,用于執行指令,其中所述執行單元被配置以接收所述信號并根據所述信號修改所述指令的執行。
34.如權利要求33所述的微處理器,其中所述執行單元被配置以根據執行一個指令的結果修改一組狀態標志。
35.如權利要求34所述的微處理器,其中所述執行單元被配置以當執行一個包含所述指令字段的指令時使狀態標志的所述設置不變。
36.如權利要求34所述的微處理器,其中所述執行單元包括表示執行一個指令的結果的狀態標志的多種設置。
37.如權利要求36所述的微處理器,其中所述執行單元被配置以根據執行包含所述指令字段的指令的結果選擇狀態標志的所述多種設置之一來修改,并且其中所述執行單元被配置以根據所述指令字段選擇狀態標志的所述多種設置中的所述一個。
38.一個微處理器包括一個地址轉換單元,配置成從一個邏輯地址和一個段值產生一個物理地址;多個段寄存器,耦合到所述地址轉換單元,其中至少所述多個段寄存器之一存儲所述段值;一個第一控制單元,耦合到所述地址轉換單元,其中所述第一控制單元被配置以檢測一個表示所述多個段寄存器之一的指令字段并傳送一個信號到表示所述多個段寄存器的所述之一的所述地址轉換單元;一個配置寄存器,用于存儲一個表示所述微處理器的地址轉換模式的值;以及一個執行單元,用于執行指令,其中所述執行單元被配置以接收所述段值并根據所述段值修改所述指令的執行。
39.如權利要求38所述的微處理器,其中所述執行單元被配置以根據執行一個指令的結果修改一組狀態標志。
40.如權利要求39所述的微處理器,其中所述執行單元被配置以根據所述段值當執行一個包含所述指令字段的指令時使狀態標志的所述設置不變。
41.如權利要求39所述的微處理器,其中所述執行單元包括表示執行一個指令的結果的狀態標志的多種設置。
42.如權利要求41所述的微處理器,其中所述執行單元被配置以根據執行包含所述指令字段的指令的結果選擇狀態標志的所述多種設置之一來修改,并且其中所述執行單元被配置以根據所述段值選擇狀態標志的所述多種設置中的所述一個。
43.一個計算機系統包括一個主存儲器;以及一個微處理器,耦合到所述主存儲器,其中所述微處理器包含一個地址轉換單元,配置成從一個邏輯地址和一個段值產生一個物理地址;多個段寄存器,耦合到所述地址轉換單元,其中至少所述多個段寄存器之一存儲所述段值;一個第一控制單元,耦合到所述地址轉換單元,其中所述第一控制單元被配置以檢測一個表示所述多個段寄存器之一的指令字段并傳送一個信號到表示所述多個段寄存器的所述之一的所述地址轉換單元;一個配置寄存器,用于存儲一個表示所述微處理器的地址轉換模式的值;以及一個執行單元,用于執行指令,其中所述執行單元被配置以接收所述信號并根據所述信號修改所述指令的執行。
44.如權利要求4 3所述的計算機系統還包括一個耦合在所述主存儲器和所述微處理器之間的外部高速緩沖存儲器單元。
45.一個計算機系統包括一個主存儲器;以及一個微處理器,耦合到所述主存儲器,其中所述微處理器包含一個地址轉換單元,配置成從一個邏輯地址和一個段值產生一個物理地址;多個段寄存器,耦合到所述地址轉換單元,其中至少所述多個段寄存器之一存儲所述段值;一個第一控制單元,耦合到所述地址轉換單元,其中所述第一控制單元被配置以檢測一個表示所述多個段寄存器之一的指令字段并傳送一個信號到表示所述多個段寄存器的所述之一的所述地址轉換單元;一個配置寄存器,用于存儲一個表示所述微處理器的地址轉換模式的值;以及一個執行單元,用于執行指令,其中所述執行單元被配置以接收所述段值并根據所述段值修改所述指令的執行。
46.如權利要求45所述的計算機系統還包括一個耦合在所述主存儲器和所述微處理器之間的外部高速緩沖存儲器單元。
47.一個微處理器包括一個地址轉換單元,配置成從一個邏輯地址和一個段值產生一個物理地址;多個段寄存器,耦合到所述地址轉換單元,其中至少所述多個段寄存器之一存儲所述段值;一個第一控制單元,耦合到所述地址轉換單元,其中所述第一控制單元被配置以檢測一個表示所述多個段寄存器之一的指令字段并傳送一個信號到表示所述多個段寄存器的所述之一的所述地址轉換單元;一個配置寄存器,用于存儲一個表示所述微處理器的地址轉換模式的值;以及一個第二控制單元,配置成接收所述信號并根據所述信號修改指令的譯碼。
48.如權利要求47所述的微處理器,其中所述第二控制單元被配置以從多個寄存器存儲單元之一選擇一個與指令相關的寄存器值,并且其中所述第二控制單元根據所述指令字段選擇所述多個寄存器存儲單元的所述之一。
49.一個微處理器包括一個地址轉換單元,配置成從一個邏輯地址和一個段值產生一個物理地址;多個段寄存器,耦合到所述地址轉換單元,其中至少所述多個段寄存器之一存儲所述段值;一個第一控制單元,耦合到所述地址轉換單元,其中所述第一控制單元被配置以檢測一個表示所述多個段寄存器之一的指令字段并傳送一個信號到表示所述多個段寄存器的所述之一的所述地址轉換單元;一個配置寄存器,用于存儲一個表示所述微處理器的地址轉換模式的值;以及一個第二控制單元,配置成接收所述段值并根據所述段值修改指令的譯碼。
50.如權利要求49所述的微處理器,其中所述第二控制單元被配置以從多個寄存器存儲單元之一選擇一個與指令相關的寄存器值,并且其中所述第二控制單元根據所述段值選擇所述多個寄存器存儲單元的所述之一。
51.一個計算機系統包括一個主存儲器;以及一個微處理器,耦合到所述主存儲器,其中所述微處理器包含一個地址轉換單元,配置成從一個邏輯地址和一個段值產生一個物理地址;多個段寄存器,耦合到所述地址轉換單元,其中至少所述多個段寄存器之一存儲所述段值;一個第一控制單元,耦合到所述地址轉換單元,其中所述第一控制單元被配置以檢測一個表示所述多個段寄存器之一的指令字段并傳送一個信號到表示所述多個段寄存器的所述之一的所述地址轉換單元;一個配置寄存器,用于存儲一個表示所述計算機系統的地址轉換模式的值;以及一個第二控制單元,配置成接收所述信號并根據所述信號修改指令的譯碼。
52.如權利要求51所述的計算機系統還包括一個耦合在所述主存儲器和所述微處理器之間的外部高速緩沖存儲器單元。
53.一個計算機系統包括一個主存儲器;以及一個微處理器,耦合到所述主存儲器,其中所述微處理器包含一個地址轉換單元,配置成從一個邏輯地址和一個段值產生一個物理地址;多個段寄存器,耦合到所述地址轉換單元,其中至少所述多個段寄存器之一存儲所述段值;一個第一控制單元,耦合到所述地址轉換單元,其中所述第一控制單元被配置以檢測一個表示所述多個段寄存器之一的指令字段并傳送一個信號到表示所述多個段寄存器的所述之一的所述地址轉換單元;一個配置寄存器,用于存儲一個表示所述計算機系統的地址轉換模式的值;以及一個第二控制單元,配置成接收所述段值并根據所述段值修改指令的譯碼。
54.如權利要求53所述的計算機系統還包括一個耦合在所述主存儲器和所述微處理器之間的外部高速緩沖存儲器單元。
55.根據一個表示多個段寄存器之一的指令字段操作一個控制單元的方法包括檢測與一個特殊指令相關的所述指令字段的存在;傳遞一個表示所述多個段寄存器的所述之一的值到所述控制單元;根據所述值操作所述控制單元。
56.如權利要求55所述的方法還包括如果所述指令字段沒有被檢測則以缺省方式操作所述控制單元。
57.如權利要求55所述的方法還包括通過一個存儲在控制寄存器的值使能所述控制單元。
58.根據一個表示多個段寄存器之一的指令字段操作控制單元的方法包括檢測與一個特殊指令相關的所述指令字段的存在;傳遞一個存儲在所述多個段寄存器的所述之一的值到所述控制單元;根據所述值操作所述控制單元。
59.如權利要求58所述的方法還包括如果所述指令字段沒有被檢測則以缺省方式操作所述控制單元。
60.如權利要求58所述的方法還包括通過一個存儲在控制寄存器的值使能所述控制單元。
全文摘要
提供了一個微處理器,以透明和/或不透明的方式擴展了實現的結構的功能和/或性能。該微處理器被配置以檢測被以平板存儲器模式執行的指令代碼序列中段代換前綴的存在,并且使用前綴值以控制內部和/或外部功能。另外,微處理器可以被配置以發信號通知下面的指令的正常執行的改變或修改。許多實施例示出了使用段代換前綴來擴展微處理器的性能或容量。當實現透明的實施例時與x86結構的較老裝置的向后兼容性可以被保持。
文檔編號G06F9/318GK1187255SQ96194492
公開日1998年7月8日 申請日期1996年6月7日 優先權日1996年6月7日
發明者德魯·J·杜頓, 戴維·S·克里斯蒂 申請人:高級微型器件公司