亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用以在擴充寄存器模式下存取擴充寄存器集的中央處理單元及其方法

文檔序號:6471175閱讀:305來源:國知局
專利名稱:用以在擴充寄存器模式下存取擴充寄存器集的中央處理單元及其方法
技術領域
本發(fā)明涉及微處理器,尤其涉及在現(xiàn)有的微處理器架構下,擴充寄存器地址空間的機制。
該X86指令集相對的復雜,而且,其特征在于具有多數(shù)可變的位組長度指令。如

圖1所示的現(xiàn)有X86指令10的格式。在X86指令10,多個可選擇前置字節(jié)12先于1~2個在作業(yè)碼(operation code;opcode)字段14中的作業(yè)碼字節(jié)。一可選擇尋址模式(Mod R/M)字節(jié)16緊接于該作業(yè)碼字節(jié)字段14。一可選擇比例索引基址(scale-index-base;SIB)字節(jié)18緊接于該可選擇尋址模式字節(jié)16。一可選擇位移字段20緊接于該可選擇比例索引基址字節(jié)18。一可選擇立即數(shù)據(jù)域位22緊接于該可選擇位移字段20。該可選擇位移字段20包括一用以計算地址的常數(shù),且該可選擇立即數(shù)據(jù)域位22包括一用以作為操作數(shù)的常數(shù)。
該作業(yè)碼字段14中的1~2個作業(yè)碼字節(jié)定義該X86指令10的基本作業(yè)。該基本作業(yè)通常包括至少一操作數(shù)。由于該X86架構并不支持內(nèi)存對內(nèi)存的傳送,故至少一個操作數(shù)必須作為一寄存器(即寄存器操作數(shù))。一作業(yè)碼字節(jié)組至少三個有效位需用以作為寄存器操作數(shù)。該最精簡的X86指令僅具有一個位組長度且包含一單一作業(yè)碼字節(jié)。須特別說明的是,當該80386及80486均已將X86指令長度增加至15字節(jié)時,該80286仍將X86指令的最大長度設定為10個字節(jié)。
該X86的指令的操作可以通過該前置字節(jié)12加以設定。舉例而言,一前置字節(jié)12可以變更該X86指令的地址或操作數(shù)大小,置換該內(nèi)存尋址內(nèi)定區(qū)段,或指示一處理器執(zhí)行該X86指令,用以在一定時間內(nèi)重復串作業(yè)。須注意的是,一指令操作數(shù)的大小受操作數(shù)的位數(shù)或數(shù)個位的操作數(shù)的寬度(width)所影響。
該可選擇尋址模式字節(jié)16指定所使用的寄存器及內(nèi)存尋址模式。圖2是用以顯示該尋址模式字節(jié)16的字段。如圖2所示,尋址模式字節(jié)16分為三個字段一模式(MOD)字段,一寄存器/作業(yè)碼(REG/OP)字段及一寄存器/內(nèi)存(R/M)字段。該模式字段的內(nèi)容用以判斷該寄存器/內(nèi)存字段及該位移字段20應如何被解釋。該寄存器/作業(yè)碼字段用以指定一寄存器操作數(shù)或保持附加的作業(yè)碼位其中任一者。該寄存器/內(nèi)存字段則用以依據(jù)該模式位欄的內(nèi)容指定一寄存器操作數(shù)或一內(nèi)存操作數(shù)。
該可選擇比例索引基址字節(jié)18是通過比例與索引因素作為32位基址相對尋址之用。圖3是用以顯示該比例索引基址字節(jié)18的字段。如圖3所示,該比例索引基址字節(jié)18分為三個字段一比例字段、一索引字段及一基址字段。該基址字段指出哪一個寄存器包括有一基址值以作為地址計算之用。該索引字段指出哪一個寄存器包括有一索引值以作為地址計算之用,而且,在伴隨著任何位移而將其加至基址值上之前,將該比例字段指定為二次方,也就是說該索引值將被乘上的數(shù)目。
參照一X86架構下的特定寄存器在一作業(yè)碼字節(jié)、該可選擇尋址模式字節(jié)16的寄存器/作業(yè)碼字段、該可選擇尋址模式字節(jié)16的寄存器/內(nèi)存字段或該比例索引基址字節(jié)18的基址與索引字段的最少三個有效位中顯現(xiàn)出來。因此共有四種關于一X86指令中的寄存器的可能。如前所述,該作業(yè)碼字節(jié)中的至少三個有效位得設定一寄存器操作數(shù)。該可選擇尋址模式字節(jié)16的寄存器/作業(yè)碼字段與寄存器/內(nèi)存字段可以設定來源與目的寄存器。該比例索引基址字節(jié)18的基址與索引字段可以用以設定包括有在存取內(nèi)存時用于計算操作數(shù)地址的基址值與索引值的寄存器。須特別說明的是,在特定X86指令中僅會顯現(xiàn)前述四種寄存器中的其中三種。
該X86架構有一顯著的缺點其只有相對較少數(shù)量的通用寄存器。該X86架構目前定義有八個通用的寄存器,即EAX、EBX、ECX、EDX、ESP、EBP、ESI及EDI等寄存器。相較之下,現(xiàn)有的精簡指令集計算(reducedinstruction set computing;RISC)處理器則具有至少32個通用的寄存器。一較大的寄存器集容許儲存更多操作數(shù)至該相對較快速存取的寄存器檔案中,而非儲存于相對較慢速存取的內(nèi)存中?,F(xiàn)今的程序編譯器能夠獲得大量寄存器所帶來的優(yōu)點,以顯現(xiàn)更大量指令層級平行性一增加超純量的執(zhí)行效率。除該X86寄存器有限的數(shù)量外,通過程序編譯器使用X86寄存器往往相當復雜,因為在不同指令中,大部份均有隱藏地使用這些寄存器。
該標準寄存器通過由該指令所組成中央處理器架構被定義為一個通用寄存器。舉例而言,該標準寄存器通過86架構被定義為一通用寄存器,且該指令可以為一X86架構的指令集。該標準寄存器數(shù)量可以少于或等于通過該中央處理單元所定義的通用寄存器數(shù)量,且該擴充寄存器數(shù)量可以大于通過該中央處理單元所定義的通用寄存器數(shù)量。在此情況下,該指令所缺少的該前置部份可以包括寄存器識別訊息,以充分識別從該多數(shù)標準寄存器中所選擇的標準寄存器。然而,當該擴充寄存器數(shù)量超過通過該中央處理單元所定義的通用寄存器數(shù)量時,該寄存器識別訊息可能無法充分的識別從該多數(shù)標準寄存器中所選擇的擴充寄存器。該指令的前置部份包括附加寄存器識別訊息,用以識別從該多數(shù)標準寄存器中所選擇的一個擴充寄存器。包括有該前置部份的指令集的編碼,可以因而識別該通過執(zhí)行核心所存取的至少一個擴充寄存器。
在一個實施例中,該標準寄存器集包括八個通過該X86架構所定義的32位通用寄存器。該八個32位通用寄存器可以包括如EAX、EBX、ECX、EDX、ESP、EBP、ESI及EDI等寄存器。該擴充寄存器集可以包括該標準寄存器的八個寄存器及未被該X86架構所定義的附加寄存器。該執(zhí)行核心得設定為用以提取與執(zhí)行可變長度的X86指令。
該前置部份可以包括一擴充寄存器前置字節(jié),且該擴充寄存器前置字節(jié)可以包括一擴充寄存器鍵字段。而該擴充寄存器鍵字段的內(nèi)容用以指示該擴充寄存器前置字節(jié)是否包括用以存取該至少一個擴充寄存器所需的訊息。舉例而言,該擴充寄存器前置字節(jié),僅在該擴充寄存器鍵字段包含有一預設擴充寄存器鍵值(如該二進制值為0100)時,可以包括用以存取該至少一個擴充寄存器所需的訊息。
該中央處理單元可以包括一個控制寄存器,用以儲存訊息,以指示該擴充寄存器模式是否為總體激活;一旗標寄存器,用以儲存訊息,以指示該擴充寄存器模式是否能通過現(xiàn)行程序設為激活;以及生成單元,用以生成訊號,以指示該中央處理單元的執(zhí)行模式。當該擴充寄存器模式通過現(xiàn)行程序總體地被設為激活時,該訊號可指示該中央處理單元在該擴充寄存器模式下進行作業(yè)。
該標準寄存器集可以包括多個的通過一中央處理器架構(如X86架構)定義的通用寄存器,且該擴充寄存器集的擴充寄存器寬度大于該標準寄存器的寬度。寄存器的寬度是該寄存器中的位數(shù)的總合。該執(zhí)行核心可以在(1)該訊號指示該中央處理單元在一擴充寄存器模式下作業(yè),(2)該指令包括一含有存取該至少一個擴充寄存器所需的訊息的前置部份,以及(3)該前置部份包括一該至少一個擴充寄存器的全部內(nèi)容被存取的指示等情況下,通過存取該至少一個擴充寄存器以響應該指令。如此,指令操作數(shù)大小可以在該中央處理單元在一擴充寄存器模式下作業(yè)時選擇性的被增加。該標準寄存器集可以為該擴充寄存器集的一子集,且該標準寄存器可以形成該擴充寄存器的較低有序(如最少有效)部份。
除上述擴充寄存器鍵字段外,該擴充寄存器前置字節(jié)可以包括一操作數(shù)大小置換位。該操作數(shù)大小置換位值可以做為該至少一個擴充寄存器的全部內(nèi)容是否被存取的指示。須特別說明的是,一指令操作數(shù)大小乃與該操作數(shù)的位數(shù)量或該多個位中的操作數(shù)寬度有關。
須特別說明的是,本發(fā)明容許多種態(tài)樣的設定與形式存在,以下的實施例乃配合圖式作更詳細的揭露,然并非用以限定本發(fā)明的范圍,在不超脫本發(fā)明在權利要求書中所界定的精神與范圍下所作的等效變更均為本發(fā)明所涵蓋。
10 X86指令12 前置字節(jié)14 作業(yè)碼字段16 尋址模式字節(jié)18 比例索引基址字節(jié)20 位移字段22 立即數(shù)據(jù)域位30 計算機系統(tǒng)32 中央處理單元34 北橋電路36 內(nèi)存38 外圍裝置組件互連總線40 南僑電路42 工業(yè)標準架構總線44A 第一裝置44B 第二裝置50 指令快取單元52 執(zhí)行核心54 數(shù)據(jù)快取單元56 接口單元58 譯碼控制單元60 寄存器檔案62 該控制寄存器63 32位寄存器擴充位64 旗標寄存器66 寄存器擴充位70 變遷圖72 32位兼容模式74 32位寄存器擴充模式76 譯碼單元78 執(zhí)行單元80 指令82 前置部份84 標準寄存器集86 擴充寄存器集90 擴充寄存器前置字節(jié)92 擴充寄存器鍵字段94 64位操作數(shù)大小置換位96 字段擴充位98 字段擴充位100 字段擴充位110 標準多媒體擴充寄存器集112 擴充寄存器集114 標準數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器集116 擴充寄存器集120 數(shù)據(jù)結構122 已使用部分124 預先未使用部分126 標準多媒體擴充寄存器集數(shù)據(jù)部分130 標準數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器集數(shù)據(jù)部分
134 儲存區(qū)域135 儲存區(qū)域136 儲存區(qū)域該計算機系統(tǒng)30還包括一連接至該外圍裝置組件互連總線38的第一裝置44A,以及一連接至該工業(yè)標準架構總線42的一第二裝置44B。該裝置44A例如為一調制解調器、一卡或一網(wǎng)絡配接卡等的輸出入裝置。如圖4所示,該裝置44A連接至該工業(yè)標準架構總線42而非該外圍裝置組件互連總線38。該裝置44B例如為一硬盤、一軟盤機或一只讀光驅等外圍裝置。如圖4所示,其連接至該外圍裝置組件互連總線38而非該工業(yè)標準架構總線42。
該中央處理單元32通過該北橋電路34從該內(nèi)存36中提取(或傳送)并執(zhí)行該指令。儲存于該內(nèi)存36的數(shù)據(jù)依據(jù)該指令作業(yè)。該指令與數(shù)據(jù)常駐于該內(nèi)存36的地址中,其中每一地址均為一值,用以識別該內(nèi)存36中的一或多個儲存區(qū)塊。該指令與數(shù)據(jù)的地址在提供至該北橋電路34之前,通過該中央處理單元32加以轉換。在此情況下,該中央處理單元32包括地址轉換硬件,且該內(nèi)存通過該中央處理單元32以轉換虛擬地址置實體地址。
如以下所揭露者,該中央處理單元32包括一設定用以儲存曾經(jīng)被該中央處理單元32存取過的指令與數(shù)據(jù)的內(nèi)部高速緩存(如內(nèi)部快取單元等)。該計算機系統(tǒng)30還可以包括一設定用以儲存曾經(jīng)被該中央處理單元32存取過的指令與數(shù)據(jù)的外部快取單元。我們知道,該儲存于內(nèi)存36的訊息可以儲存于該中央處理單元32的內(nèi)部快取單元或該計算機系統(tǒng)30的外部快取單元。
如圖5所示,其中顯示圖4的該中央處理單元32的一個實施例。該中央處理單元32還可以有其它的實施例。如圖5所示,該中央處理單元32包括一指令快取單元50、一執(zhí)行核心52、一數(shù)據(jù)快取單元54、一接口單元56、一譯碼控制單元58及一寄存器檔案60。該指令快取單元50連接至該執(zhí)行核心52、該譯碼控制單元58及該接口單元56。該執(zhí)行核心52連接至該譯碼控制單元58、該寄存器檔案60及該數(shù)據(jù)快取單元54。該數(shù)據(jù)快取單元54連接至該執(zhí)行核心52、該譯碼控制單元58及該接口單元56。該接口單元56連接至該指令快取單元50、該數(shù)據(jù)快取單元54、該譯碼控制單元58及該圖4中所示的北橋電路34。
該譯碼控制單元58包括一控制寄存器62。該譯碼控制單元58還包括一用以報告與控制該中央處理單元32狀態(tài)的旗標寄存器64。該旗標寄存器64可以為一X86旗標寄存器?,F(xiàn)今的X86處理單元均包括一32位擴充旗標或擴充旗標(EFLA6S)寄存器?,F(xiàn)今的X86處理單元均采用該32位擴充旗標寄存器做為該旗標寄存器64。
一般而言,該中央處理單元32使用與該X86架構兼容的處理單元架構,且還包括一用以支持64位處理的附加架構。該中央處理單元32設定為用以建立一執(zhí)行模式并以儲存于該控制寄存器62與該旗標寄存器64中的指令設為激活作為響應。
在以下所述的內(nèi)容中,一中央處理單元32的操作模式設有內(nèi)定值用以支持不同的可程序選擇的處理單元屬性。在本實施例中,該中央處理單元32的操作模式設有一內(nèi)定操作數(shù)大小。須特別注意的是,一指令操作數(shù)大小受該操作數(shù)中位數(shù)或該位中操作數(shù)寬度的影響。在以下的詳細說明中,一指令的編碼得置換該內(nèi)定操作數(shù)大小。
如圖5所示,該譯碼控制單元58生成一操作模式訊號,用以指示該中央處理單元32處于一操作模式,并提供該操作模式訊號給該執(zhí)行核心52。該執(zhí)行核心52依據(jù)該操作模式訊號(如該中央處理單元32的操作模式)執(zhí)行指令。該中央處理單元32的操作模式包括一32位兼容模式與一32位寄存器擴充模式。在該32位兼容模式與該32位寄存器擴充模式中,該內(nèi)定操作數(shù)大小為32位。在該32位寄存器擴充模式中,指令可以依據(jù)指令編碼置換該內(nèi)定32位操作數(shù)大小為一64位操作數(shù)大小并將在后面詳述說明。此外,在以下的詳細說明中,字段擴充位包括在該32位寄存器擴充模式74的指令編碼中用以增加寄存器的數(shù)量。
該32位寄存器擴充模式通過一在該控制寄存器62中的「32位寄存器擴充」位63及一在該旗標寄存器64中的寄存器擴充位66設為激活。該32位寄存器擴充位63提供一32位寄存器擴充模式設為整體激活。舉例而言,該32位寄存器擴充模式于儲存在該32位寄存器擴充位63中的邏輯值為「1」時為激活,且該32位寄存器擴充模式于儲存在該32位寄存器擴充位63中的邏輯值為「0」時為未激活。該32位寄存器擴充位63最好通過具有相對高速存取或特權等級的程序(如操作系統(tǒng)、基本輸出入系統(tǒng)或管理者模式公用程序等)所編寫。
須特別注意的是,該控制寄存器62在現(xiàn)今的X86架構下所定義的多數(shù)個控制寄存器其中之一,故其存取是利用現(xiàn)有的技術。舉例而言,該32位寄存器擴充位63為現(xiàn)今所定義的32位控制寄存器CRO-CR4中任一個的一位。此外,該控制寄存器32通過現(xiàn)今X86架構的狀態(tài)所定義的特定模型(model-specific)其中之一,且可以通過現(xiàn)存的讀取特定模型寄存器(read model-specific register;RDMSR)及寫入特定模型寄存器(write model-specific register;WRMSR)指令存取之。
該寄存器擴充位66提供該32位寄存器擴充模式的特定處理激活。一應用程序通過該中央處理單元32被現(xiàn)行的執(zhí)行(如現(xiàn)行處理程序)得通過該寄存器擴充位66激活該32位寄存器擴充模式。該32位寄存器擴充模式須在該處理程序通過設定該寄存器擴充位66進入該32位寄存器擴充模式前通過該32位寄存器擴充位63激活。當該32位寄存器擴充模式通過該32位寄存器擴充位63激活時,該現(xiàn)行處理程序可以通過儲存一邏輯值進入「1」至該寄存器擴充位66以進入該32位寄存器擴充模式。只有當該32位寄存器擴充位63與該寄存器擴充位66均設定為譯碼控制單元58生成該執(zhí)行模式訊號用以指示該32位寄存器擴充模式時。該現(xiàn)行處理程序通過儲存一邏輯值「0」至該寄存器擴充位66中以跳出該32位寄存器擴充模式。
以下所揭露的二個新X86指令通過應用程序用以設定與消除該旗標寄存器64中的寄存器擴充位66。一新的「STX」指令儲存一邏輯值「1」至該32位寄存器擴充位63中,以及一新的「CLX」指令儲存一邏輯值「0」至該32位寄存器擴充位63中。該「STX」及該「CLX」隨著該指令的執(zhí)行得實時的取得效果。當該32位寄存器擴充模式未被該32位寄存器擴充位63激活(如于未激活狀態(tài))該「STX」及該「CLX」指令的使用會例外的導致一未定義作業(yè)碼。
承前所述,該操作模式定義一內(nèi)定操作數(shù)大小。若該特定指令的編碼未置換該內(nèi)定操作數(shù)大小,該執(zhí)行核心52則執(zhí)行包含該內(nèi)定操作數(shù)大小的操作數(shù)。另一方面,若該特定指令的編碼置換該內(nèi)定操作數(shù)大小,則該執(zhí)行核心52執(zhí)行包含該置換后操作數(shù)大小的操作數(shù)。
該執(zhí)行核心52從該寄存器檔案60中提取寄存器操作數(shù),且從該數(shù)據(jù)快取單元54中提取內(nèi)存操作數(shù)。若該操作數(shù)可以提取且存在于該數(shù)據(jù)快取單元54中,該數(shù)據(jù)快取單元54提供該內(nèi)存操作數(shù)給該執(zhí)行核心52。若該操作數(shù)不得提取或不存在于該數(shù)據(jù)快取單元54中,該數(shù)據(jù)快取單元54通過該接口單元56與該北橋電路34的該內(nèi)存36中取得該內(nèi)存操作數(shù)并提供該內(nèi)存操作數(shù)給該執(zhí)行核心52。
如圖6所示,其用以顯示圖5的中央處理單元32的該32位兼容模式72與該中央處理單元32的該32位寄存器擴充模式74間的變遷圖70。承前所述,在該32位兼容模式72與該32位寄存器擴充模式74中的內(nèi)定操作數(shù)大小為32位。然而,在該32位寄存器擴充模式中,指令可以依據(jù)指令編碼置換該內(nèi)定32位操作數(shù)大小為一64位操作數(shù)大小。此外,在以下的詳細說明中,字段擴充位包括在該32位寄存器擴充模式74的指令編碼中用以增加寄存器的數(shù)量。
如圖6所示,當該中央處理單元32在該32位兼容模式72下進行操作,該中央處理單元32在總體激活該32位寄存器擴充位63與特定處理激活該寄存器擴充位66均具有一邏輯值「1」時,轉換至該32位寄存器擴充模式74。承前所述,如操作系統(tǒng)、基本輸出入系統(tǒng)或管理者模式公用程序等特權程序可以儲存一邏輯值「1」至該總體激活32位寄存器擴充位63中。正通過該中央處理單元32被執(zhí)行的一應用程序可儲存一邏輯值「1」至該寄存器擴充位66,以進入該32位存器擴充模式74。當該總體激活32位寄存器擴充位63或該特定處理激活該寄存器擴充位66都具有一邏輯值「0」,該中央處理單元32轉換該32位寄存器擴充模式74至該32位兼容模式72。舉例而言,該通過在該32位寄存器擴充模式74下執(zhí)行的中央處理單元32的現(xiàn)行處理程序可以儲存一邏輯值「0」至該寄存器擴充位66中,以離開該32位寄存器擴充模式74而回到該32位兼容模式72。
如圖5所示,須特別說明的是,該中央處理單元32還可以包括一具有傳呼硬件以執(zhí)行從虛擬地址傳呼地址轉換至實體地址的內(nèi)存管理單元。虛擬地址先在通過一地址轉換機制(如一傳呼機制)轉換至用以實際存取內(nèi)存的實體地址所生成的地址。該傳呼硬件包括有一轉換后備緩沖區(qū)(translation look-aside buffer;TLB),用以儲存?zhèn)骱艮D換數(shù)據(jù)。
該指令快取單元50為一用以儲存指令的高速緩存。該執(zhí)行核心52從該指令快取單元50提取指令以執(zhí)行之。該指令快取單元50得使用任何包括有直接對映、叢集結合及完全結合等設定的適當快取結構。若一被請求指令為存在于該指令快取單元50中,該指令快取單元50可以通過與該接口模塊56的溝通而取得該被請求指令。如此的通訊會導致該指令快取單元50中的快取行的填充/替換。此外,該指令快取單元50可以通過與該內(nèi)存管理單元的溝通用以接收從該指令快取單元50所提取的虛擬地址轉換的實體地址。
該執(zhí)行核心52執(zhí)行從該指令快取單元50所提取的指令。該執(zhí)行核心52還從該寄存器檔案60處取得寄存器操作數(shù),且儲存該寄存器檔案60的寄存器結果值。該操作數(shù)大小依據(jù)該中央處理單元32的操作模式而定,且可以通過如下所述的指令加以置換。該執(zhí)行核心52從該數(shù)據(jù)快取單元54處取得內(nèi)存操作數(shù),且如以下所述的提供內(nèi)存結果值給該數(shù)據(jù)快取單元54。
該執(zhí)行核心52可以使用任何適當?shù)募軜嫛Ee例而言,該執(zhí)行核心52可以為一超管線核心(superpipelined core)、超純量核心(superscalar core)或這些核心的組合體。該執(zhí)行核心52可以依據(jù)設計時的選擇使用順序紊亂的推測執(zhí)行或依序的執(zhí)行。
該數(shù)據(jù)快取54設定為用以儲存數(shù)據(jù)的一高速高速緩存。該數(shù)據(jù)快取單元54可以使用任何包括有直接對映、叢集結合及完全結合等設定的適當快取結構。若該內(nèi)存操作數(shù)值并未存在于該數(shù)據(jù)快取單元54中,該數(shù)據(jù)快取單元54可以通過與該接口單元56的溝通而存取該內(nèi)存作數(shù)。如此的通訊會導致該數(shù)據(jù)快取單元54中的快取行的填充/替換。此外,若該數(shù)據(jù)快取單元54使用寫回快取單元策略,被置換的更新快取行會通過與該接口單元56的溝通寫回至內(nèi)存中。該數(shù)據(jù)快取單元54可以與該通過與該內(nèi)存管理單元的溝通用以接收從該數(shù)據(jù)快取單元54所提取的虛擬地址轉換的實體地址。
該接口單元56用以和該北橋電路34溝通(如圖4所示)。為響應來自該指令快取單元50的請求,該接口單元56通過該北橋電路34從該內(nèi)存36取得指令并提供該指令給該指令快取單元50。該接口單元56還如下所述的在該北橋電路34與該數(shù)據(jù)快取單元54間傳送內(nèi)存操作數(shù)。
如圖7所示,為圖5的該執(zhí)行核心52與該寄存器檔案60的實施例。在圖5的實施例中,該執(zhí)行核心52包括一連接至一執(zhí)行單元78與該寄存器檔案60的譯碼單元76。一般而言,該譯碼單元76就從該指令快取單元50(如圖5所示)所提取的指令進行譯碼。如圖7所示,該譯碼單元76用以顯示接收一代表指令80。該指令80最好為一X86架構,且具有一可選擇前置部份82。如下所述,該前置部份82包括存取該至少一個擴充寄存器所需的訊息。
該譯碼單元76用以偵測任何寄存器指令中的原始參考操作數(shù)及來自該寄存器檔案60的請求的操作數(shù)值。該寄存器檔案60傳送該被請求的原始操作數(shù)值至該執(zhí)行單元78。同時(如在相同的時鐘周期間),該被譯碼的指令可以從該譯碼單元76傳送至該執(zhí)行單元78。如此,該被譯碼的指令與該操作數(shù)通常在同一時間(如在相同的時鐘周期間)提供給該執(zhí)行單元78。
該執(zhí)行單元78就該譯碼單元76所提供的指令進行譯碼。該執(zhí)行單元78還可以用以形成內(nèi)存操作數(shù)的地址,且可以提供該內(nèi)存操作數(shù)地址至該數(shù)據(jù)快取單元54(如圖5所示)。承前所述,該數(shù)據(jù)快取單元54可以負責提供內(nèi)存操作數(shù)給該執(zhí)行單元78。該數(shù)據(jù)快取單元54可以提供該內(nèi)存操作數(shù)地址給該內(nèi)存管理單元中的傳呼硬件,用以轉換該虛擬地址至該實體地址。若該內(nèi)存操作數(shù)值未存在于該數(shù)據(jù)快取單元54中,該數(shù)據(jù)快取單元54可以提供該結果及該內(nèi)存部分的對應地址給該接口單元56。該接口單元56通過該北橋電路34儲存該內(nèi)存36的對應內(nèi)存部分。
該執(zhí)行單元78提供任何指令執(zhí)行的結果至寄存器檔案60或數(shù)據(jù)快取單元54(如圖5所示)。若其結果為一將存入一寄存器的值,則由該執(zhí)行單元78將結果提供至寄存器檔案60。若其結果為一將存入內(nèi)存位置的值,則由該執(zhí)行單元78將其結果及對應的內(nèi)存位置地址提供至數(shù)據(jù)快取單元54。若該內(nèi)存位置的內(nèi)容不存在于數(shù)據(jù)快取單元54,則該數(shù)據(jù)快取單元54可將其結果及其對應的內(nèi)存位置地址提供至接口單元56。該接口單元56可以通過北橋電路34儲存其值至對應的內(nèi)存36的內(nèi)存位置。
如圖7所示的實施例,該寄存器檔案60包括一標準寄存器集84與一擴充寄存器集86。該標準寄存器集84包括八個通過該X86架構所定義的32位通用寄存器EAX、EBX、ECX、EDX、ESP、EBP、ESI及EDI等。該擴充寄存器集86可以包括,如八個附加或擴充寄存器。如以下所述,該擴充寄存器集86的擴充寄存器可以為64位寄存器。
該指令80可以為一包括有用以識別該八個X86通用寄存器的寄存器操作數(shù)識別訊息的3個位的X86指令。然而,該擴充寄存器集86的擴充寄存器數(shù)量超過該X86架構所定義的八個通用寄存器。因此該指令80中的寄存器操作數(shù)識別訊息的3個位(用以識別該八個X86通用寄存器被選擇的其中一個)卻不足以識別由該擴充寄存器中被選擇的其中一個。該指令80的前置部份82因此提供額外的寄存器識別訊息,以供識別由該擴充寄存器中被選擇的其中一個。該指令80的編碼包括有該前置部份82,可以識別每一個擴充寄存器。
當該中央處理單元32(如圖5所示)在該32位寄存器擴充模式下操作,且該指令80識別一寄存器原始操作數(shù),然并不包括可選擇前置部份82,該譯碼單元76請求來自該寄存器集60的標準寄存器集84的一對應標準寄存器內(nèi)容。該指令80的執(zhí)行因此通過來自該寄存器檔案60的標準寄存器集84而完成。另一方面,當該中央處理單元32在該32位寄存器擴充模式下操作,且該指令80包括該可選擇前置部份82且參考一寄存器原始操作數(shù),該譯碼單元76請求來自該寄存器集60的擴充寄存器集86的一對應標準寄存器內(nèi)容。該指令80的執(zhí)行因此通過來自該寄存器檔案60的擴充寄存器集86而完成。
該譯碼單元76可以生成并提供一操作數(shù)大小訊號至該執(zhí)行單元78以供該指令80指示該操作數(shù)大小。該譯碼單元76可以接收該譯碼控制單元58所生成的操作模式訊號,并指示該中央處理單元32在操作模式中。當該操作模式訊號指示該中央處理單元32是在該32位寄存器擴充模式下進行操作且該指令80包括有該前置部份82,該譯碼單元76可例如為用以確定指示該指令80的操作數(shù)大小訊號為64位。當該操作模式訊號指示該中央處理單元32是在該32位寄存器擴充模式下進行操作,且該指令80不包括有該前置部份82,該譯碼單元76例如為用以確定指示該指令80的操作數(shù)大小訊號為32位。
當該操作數(shù)大小訊號確定后,該執(zhí)行單元78可以執(zhí)行包含有64位操作數(shù)的操作。該執(zhí)行單元78可以接收從該寄存器檔案60所送的64位擴充寄存器操作數(shù),且可以儲存64位擴充寄存器結果值至該寄存器檔案60。另一方面,當該操作數(shù)大小訊號未被確定,該執(zhí)行單元78可以執(zhí)行包含有32位操作數(shù)的操作。該執(zhí)行單元78可以接收從該寄存器檔案60所送的32位擴充寄存器操作數(shù),且可以儲存32位擴充寄存器結果值至該寄存器檔案60。
該執(zhí)行單元78可以通過前置的「0」填補(pad)接收自該數(shù)據(jù)快取單元54的32位內(nèi)存操作數(shù)值,以形成前方為零的64位操作數(shù)。該執(zhí)行單元78還可以提供該64位內(nèi)存結果值的較低有序(即最少有效)32位給該數(shù)據(jù)快取單元54。另外,該執(zhí)行單元78可以提供該操作數(shù)大小訊號給該數(shù)據(jù)快取單元54,且在該執(zhí)行核心52與該數(shù)據(jù)快取單元54間所傳送的操作數(shù)大小依據(jù)該操作數(shù)大小訊號而定。舉例而言,當該操作數(shù)大小訊號被確定,該執(zhí)行單元78可以從該數(shù)據(jù)快取單元54取得64位內(nèi)存作數(shù),且可以提供64位內(nèi)存結果值給該數(shù)據(jù)快取單元54。另一方面,當該操作數(shù)大小訊號未被確定時,該執(zhí)行單元78可以從該數(shù)據(jù)快取單元54取得32位內(nèi)存操作數(shù),且可以提供32位內(nèi)存結果值給該數(shù)據(jù)快取單元54。
該譯碼單元76還可以依據(jù)該操作模式訊號與該指令80中前置部份82的存在與否生成一例外訊號。當該指令80包括該前置部份82且該操作模式訊號指示該中央處理單元32并非在32位寄存器擴充模式下執(zhí)行操作,該譯碼單元76例如為確定該例外訊號。該被確定的例外訊號會導致一「裝置不存在」的例外情況。
如圖8所示,其中顯示圖7中的該指令80的可選擇前置部份82的實施例。在圖8所示的實施例中,該前置部份82為一包括有一擴充寄存器鍵字段92、一64位操作數(shù)大小置換位94以及三個字段擴充位96、98與100的擴充寄存器前置字節(jié)90。該擴充寄存器鍵字段92占用該擴充寄存器前置字節(jié)90的位4-7字段,且圖8中所示的該擴充寄存器鍵字段92中的一二進制擴充寄存器值「0100」用以識別該擴充寄存器前置字節(jié)90。該譯碼單元76通過該擴充寄存器鍵字段92中的一二進制擴充寄存器值「0100」用以識別該擴充寄存器前置字節(jié)90。當該擴充寄存器鍵字段92中未包括一二進制擴充寄存器值「0100」時,該譯碼單元76就無法辨識該前置為一擴充寄存器前置字節(jié)。
該64位操作數(shù)大小置換位94占用該擴充寄存器前置字節(jié)90的位3字段。該64位操作數(shù)大小置換位94可用以提供該包括如寄存器檔案60(如圖7所示)中被存取的64位寄存器操作數(shù)的擴充寄存器前置字節(jié)90在內(nèi)的指令80(如圖7所示)置換內(nèi)定32位操作數(shù)大小。該字段擴充位96、98與100可用以擴充于一作業(yè)碼中的3個位字段,該指令80的一可選擇尋址模式字節(jié)一可選擇比例索引基址字節(jié)則擴充44個位,因此可替換8個寄存器而允許16個寄存器進行存取。該字段擴充位96、98與100因此可以增加該中央處理單元32(如圖4及圖5所示)中的通用寄存器數(shù)量。
當該該中央處理單元32在32位寄存器擴充模式下執(zhí)行操作,該指令80包括該該擴充寄存器前置字節(jié)90,該擴充寄存器前置字節(jié)90的該擴充寄存器鍵字段92則包括擴充寄存器值「0100」,該擴充寄存器前置字節(jié)90的64位操作數(shù)大小置換位94為一邏輯值「0」,該指令80中的寄存器操作數(shù)大小會包括該內(nèi)定32個位,通過該指令80該32位操作數(shù)可以從該寄存器檔案60中被提取。另一方面,當該64位操作數(shù)大小置換位94的值為一邏輯值「1」,該內(nèi)定32位操作數(shù)大小則通過該指令80而被置換,且通過該指令80該64位操作數(shù)可以從該寄存器檔案60中被提取。
該字段擴充位96、98與100分別占用該擴充寄存器前置字節(jié)90的特定位字段2、1與0。該字段擴充位96例如為用以擴充該可選擇尋址模式字節(jié)寄存器字段由3個位到4個位,并因此形成一擴充寄存器字段。該字段擴充位96可以形成該擴充寄存器字段的最有效位。當該3個位的寄存器字段用以存取該寄存器檔案60中8個不同寄存器的其中之一時,該4個位的擴充寄存器字段則可用以存取該寄存器檔案60中16個不同寄存器的其中之一。
該字段擴充位98例如為用以擴充該可選擇比例索引基址字節(jié)寄存器字段由3個位到4個位,并因此形成一擴充索引字段。該字段擴充位98可以形成該擴充索引字段的最有效位。當該3個位的索引字段用以存取該寄存器檔案60中8個不同寄存器的其中之一時,該4個位的擴充索引字段則可以用以存取該寄存器檔案60中16個不同寄存器的其中之該字段擴充位100例如為用以擴充該可選擇尋址模式字節(jié)寄存器/內(nèi)存字段、該可選擇比例索引基址字節(jié)基址字段或一作業(yè)碼寄存器參考字段由3個位到4個位,并因此形成一擴充字段。該字段擴充位100可以形成該擴充字段的最有效位。當該3個位的字段用以存取該寄存器檔案60中8個不同寄存器的其中之一時,該4個位的擴充字段則可用以存取該寄存器檔案60中16個不同寄存器的其中之一。
如圖9所示,為圖7中的該寄存器檔案60的一實施例,其中該標準寄存器集84為該擴充寄存器集86的子集。承前所述,該標準寄存器集84包括有8個編號由0至7的32位X86寄存器EAX、EBX、ECX、EDX、ESP、EBP、ESI及EDI等。該擴充寄存器集86包括16個編號由0至15的64位寄存器。該標準寄存器集84的編號0至7的32位寄存器分別形成該擴充寄存器集86編號0至7的64位寄存器的較低有序(如最少有效)的32位部份。如圖9所示,該擴充寄存器集86為該標準寄存器集84的超集(superset)。
圖9同時也顯示該擴充寄存器前置字節(jié)90在該寄存器檔案60中的寄存器上的功效。該擴充寄存器前置字節(jié)90的位字段0至2(分別為該字段擴充位100、98與96)用以供該指令80識別該擴充寄存器集86中被選擇的寄存器。當該擴充寄存器前置字節(jié)90的位字段3(如該64位操作數(shù)大小置換位94)被清除(如邏輯值為「0」)時,僅有該擴充寄存器集86中的擴充寄存器的較低有序(如最少有效)32位得被存取。另一方面,當該擴充寄存器前置字節(jié)90的位字段3(即該64位操作數(shù)大小置換位94)被設定(如邏輯值為「1」)時,所有該擴充寄存器集86中的擴充寄存器的32位均可以被存取。
該擴充寄存器最可能產(chǎn)生的意外是當該中央處理單元32在一32位操作系統(tǒng)下執(zhí)行該寄存器檔案60的擴充寄存器集86時,會因此在上下文交換時無法嘗試儲存該擴充寄存器。如圖10與圖11,其中顯示當該中央處理單元32(如圖5所示)包括一32位操作系統(tǒng)時,在上下文交換過程中儲存該擴充寄存器集86的擴充寄存器的內(nèi)容的系統(tǒng)及方法。須特別注意的是,在圖式中該標準多媒體擴充寄存器集110與該標準數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器集114可以以相似于擴充該標準寄存器集84的方法加以擴充(若有該擴充寄存器集112與116或其中任一時也一樣)。在上下文交換期間,該操作系統(tǒng)導致該中央處理單元32停止執(zhí)行一第一程序或工作的指令并開始執(zhí)行一第二程序或工作的指令。該操作系統(tǒng)在上下文交換期間儲存該中央處理單元32的狀態(tài),使得該第一程序或工作只指令執(zhí)行會在稍后被重新初始化。然而,如前述,該32位操作系統(tǒng)可能沒有注意到該擴充寄存器集86中的擴充寄存器,且會因此在上下文交換時無法嘗試儲存該擴充寄存器。
圖10顯示圖7的該寄存器檔案60的另一實施例,其中該寄存器檔案60包括前述的該標準寄存器集84與該擴充寄存器集86。在圖10的實施例中,該寄存器檔案60還包括一個標準多媒體擴充寄存器集110、一擴充多媒體擴充寄存器集112、一標準數(shù)據(jù)流單指令多數(shù)據(jù)擴充或一數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器集114以及一擴充數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器集116。
在上下文交換期間,一典型的32位操作系統(tǒng)儲存該中央處理單元32用以復原在一工作狀態(tài)區(qū)段(task state segment;TSS)中被中斷的程序或工作或明確形成于內(nèi)存36(如圖4所示)中程序的堆棧的狀態(tài)訊息。該工作狀態(tài)區(qū)段包括先于該上下文交換知該EAX、EBX、ECX、EDX、ESP、EBP、ESI及EDI等寄存器,且因而包括有該標準寄存器集84的標準寄存器內(nèi)容。承前所述,該32位操作系統(tǒng)最可能沒注意到該擴充寄存器集86(該擴充寄存器112與116也一樣)的擴充寄存器,且會因此在上下文交換時無法嘗試儲存該擴充寄存器集86的擴充寄存器。
該32位操作系統(tǒng)最有可能使用該有效的X86「FXSAVE」指令,以在上下文交換期間,將該標準多媒體擴充寄存器集110的標準多媒體擴充寄存器和該數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器集114的數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器的內(nèi)容,存儲在該內(nèi)存36中形成的特殊的512字節(jié)數(shù)據(jù)結構中。該32位操作系統(tǒng)最有可能使用該有效的X86「FXRSTOR」指令,用以通過該「FXSAVE」指令儲存在該512字節(jié)數(shù)據(jù)結構中的數(shù)據(jù),來回復該標準多媒體擴充寄存器集110的標準多媒體擴充寄存器與該數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器集114的數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器的內(nèi)容。通常情況下,該「FXSAVE」與該「FXRSTOR」指令通過一微碼(microcode)在該中央處理單元32中被執(zhí)行。在一實施例中,該微碼被擴充用以儲存或回復該擴充寄存器集86、112及/或114的內(nèi)容。因而該32位操作系統(tǒng)執(zhí)行該「FXSAVE」與該「FXRSTOR」指令用以在上下文交換期間儲存與回復該標準多媒體擴充寄存器集110的標準多媒體擴充寄存器與該數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器集114的數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器的內(nèi)容,以使該擴充寄存器集86、該擴充多媒體擴充寄存器集112及該擴充數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器集116的內(nèi)容被儲存或回復。
圖11用以顯示形成于內(nèi)存中用以儲存寄存器內(nèi)容(傳統(tǒng)上,指X86架構下的該標準多媒體擴充寄存器與該標準數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器的內(nèi)容)的一特殊512字節(jié)數(shù)據(jù)結構120。該數(shù)據(jù)結構120包括有一已使用部分122及一預先未使用部分124。一標準多媒體擴充寄存器集數(shù)據(jù)部分126與一標準數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器集數(shù)據(jù)部分130存在于該用以儲存該標準多媒體擴充寄存器集110與該標準數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器集114(如圖10所示)的內(nèi)容的已使用部分122。如圖11所示,該數(shù)據(jù)結構120的該預先未使用部分124用以分別在該儲存區(qū)域134、135與136上下文交換時,儲存該擴充寄存器集86、112與116的內(nèi)容。如此,該32位操作系統(tǒng)執(zhí)行該「FXSAVE」與該「FXRSTOR」指令,用以在上下文交換期間儲存與回復該標準多媒體擴充寄存器與該數(shù)據(jù)流單指令多數(shù)據(jù)擴充寄存器的內(nèi)容,且還可以儲存與回復該擴充寄存器集的內(nèi)容。
權利要求
1.一種用以于擴充寄存器模式下存取擴充寄存器集的中央處理單元,其特征在于,其包括一寄存器檔案,其包括有一標準寄存器集與一擴充寄存器集,其中該標準寄存器集包括多個標準寄存器,且該擴充寄存器集包括多個擴充寄存器;以及一連接至該寄存器檔案的執(zhí)行核心,其中,該執(zhí)行核心設定為通過存取至少一個擴充寄存器以響應一指令,假使該指令包括一具有用以存取該至少一個擴充寄存器的訊息的前置部份。
2.如權利要求1所述的中央處理單元,其特征在于,該標準寄存器數(shù)量小于或者等于中央處理單元架構所定義的通用寄存器數(shù)量,且該擴充寄存器數(shù)量多于該通過中央處理單元架構所定義的通用寄存器數(shù)量。
3.如權利要求1所述的中央處理單元,其特征在于,該缺少前置部份的指令包括足以識別所選的一個標準寄存器的寄存器識別訊息,且該指令的前置部份包括用以識別所選的一個擴充寄存器的附加寄存器識別訊息。
4.如權利要求1所述的中央處理單元,其特征在于,該指令的編碼,包括前置部份,用以識別該執(zhí)行核心所存取的至少一個擴充寄存器。
5.如權利要求1所述的中央處理單元,其特征在于,該執(zhí)行核心設定為用以提取與執(zhí)行可變長度的指令。
6.如權利要求1所述的中央處理單元,其特征在于,該前置部份包括一擴充寄存器前置字節(jié),且該擴充寄存器前置字節(jié)包括一擴充寄存器鍵字段,而該擴充寄存器鍵字段的內(nèi)容用以識別該擴充寄存器前置字節(jié)。
7.如權利要求1所述的中央處理單元,其特征在于,還包括一控制寄存器,用于儲存指示該擴充寄存器模式是否為總體激活的訊息;一旗標寄存器,用于儲存可指示該擴充寄存器模式是否由現(xiàn)行處理程序激活的訊息;以及一生成單元,用以生成指示該中央處理單元的執(zhí)行模式的訊號,其中,若該擴充寄存器模式通過該現(xiàn)行處理程序而設為整體激活,則該訊號指示該中央處理單元在擴充寄存器模式下執(zhí)行作業(yè)。
8.如權利要求1所述的中央處理單元,其特征在于,該擴充寄存器的寬度大于通過該中央處理單元架構所定義的該通用寄存器的寬度,且而存取的寬度由該指令在前置部份中設定。
9.如權利要求1所述的中央處理單元,其特征在于,連接該執(zhí)行核心以接收可指示該中央處理單元操作模式的訊號,且該執(zhí)行核心還可以設定為,響應指示該中央處理單元在擴充寄存器模式下執(zhí)行作業(yè)的信號,存取該至少一個擴充寄存器。
10.如權利要求1所述的中央處理單元,其特征在于,前置部份包括用以存取每個寄存器的訊息,該存取是該指令的操作。
11.一種用以于擴充寄存器模式下存取擴充寄存器集的方法,其特征在于,其包括譯碼一指令;以及存取一標準寄存器及與一擴充寄存器集其中之一,以響應包括在該指令中的前置部份的訊息。
12.如權利要求11所述的方法,其特征在于,該存取還用以響應一指示擴充寄存器模式的操作模式。
13.如權利要求11所述的方法,其特征在于,還包括響應該指令前置部份中的附加訊息而存取一寄存器的寬度。
全文摘要
一包括有一寄存器檔案及一與該寄存器檔案連接的執(zhí)行核心的中央處理單元。該寄存器檔案包括一標準寄存器集及一擴充寄存器集。該標準寄存器集包括多個標準寄存器,且該擴充寄存器集則包括多個擴充寄存器。該執(zhí)行核心用以提取并執(zhí)行指令并接收該中央處理單元操作模式的指示訊號。當該指示訊號指示該中央處理單元操作于一擴充寄存器模式下時,該執(zhí)行核心通過存取至少一之擴充寄存器以響應一指令,該指令包括一前置部份,其中含有用以存取該至少一之擴充寄存器訊息。
文檔編號G06F9/30GK1446332SQ01813910
公開日2003年10月1日 申請日期2001年8月7日 優(yōu)先權日2000年8月11日
發(fā)明者D·S·克理斯特爾 申請人:先進微裝置公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1