TWI619076B - 中央處理單元及用於在其中執行內文切換之方法 - Google Patents

中央處理單元及用於在其中執行內文切換之方法 Download PDF

Info

Publication number
TWI619076B
TWI619076B TW103108548A TW103108548A TWI619076B TW I619076 B TWI619076 B TW I619076B TW 103108548 A TW103108548 A TW 103108548A TW 103108548 A TW103108548 A TW 103108548A TW I619076 B TWI619076 B TW I619076B
Authority
TW
Taiwan
Prior art keywords
context
register
cpu
interrupt
text
Prior art date
Application number
TW103108548A
Other languages
English (en)
Other versions
TW201502993A (zh
Inventor
麥可I 卡索伍德
布萊恩 克里斯
大衛 米基
約瑟夫 凱尼洛普洛洛斯
Original Assignee
微晶片科技公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 微晶片科技公司 filed Critical 微晶片科技公司
Publication of TW201502993A publication Critical patent/TW201502993A/zh
Application granted granted Critical
Publication of TWI619076B publication Critical patent/TWI619076B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Hardware Redundancy (AREA)

Abstract

本發明揭示一種中央處理單元(CPU),該中央處理單元具有一中斷單元,其用於執行中斷指令;複數個內文定義暫存器組,其中每一暫存器組具有相同數目個CPU暫存器;一切換單元,其用於耦合該CPU內之一所選擇暫存器組,其中該切換單元在發生一例外狀況後旋即切換至該複數個內文定義暫存器組中之一預定暫存器組;及一控制暫存器,其經組態以控制由一指令起始之對該複數個內文定義暫存器中之一暫存器組之選擇且進一步可操作以指示一當前所使用內文。

Description

中央處理單元及用於在其中執行內文切換之方法 相關申請案的交叉參考
本申請案主張於2013年3月12日提出申請之美國臨時申請案第61/777,887號之權益,該美國臨時申請案之全文併入本文中。
本發明係關於中央處理單元(CPU),特定而言係關於微處理器或微控制器中所使用之CPU。
大部分CPU提供中斷一當前指令執行以執行一所謂中斷常式之一中斷功能。自一當前執行切換至此一例外狀況或中斷常式通常導致與中斷內文切換相關聯之一延時,該延時在某些CPU中可舉例而言高達28個CPU循環長。因此,需要對中斷之一經改良處置。
根據一實施例,一中央處理單元(CPU)可包括一中斷單元,其用於執行中斷指令;複數個內文定義暫存器組,其中每一暫存器組具有相同數目個CPU暫存器;一切換單元,其用於耦合該CPU內之一所選擇暫存器組,其中該切換單元在發生一例外狀況後旋即切換至該複數個內文定義暫存器組中之一預定暫存器組;及一控制暫存器,其經組態以控制由一指令起始之對該複數個內文定義暫存器中之一暫存器組之選擇且進一步可操作以指示一當前所使用內文。
根據又一實施例,該控制暫存器可包括指示一當前內文之一第一位元欄位及指示由該指令選擇之一最近內文之一第二位元欄位。根據又一實施例,該CPU可操作以執行用於起始一內文切換之一指令。根據又一實施例,該指令可寫一專用內文交換指令。根據又一實施例,該控制暫存器可係僅可讀的。根據又一實施例,該控制暫存器可係可讀且至少部分可寫入且該指令係應用於該控制暫存器以用於改變該控制暫存器之內容以起始一內文切換之一移動資料指令。根據又一實施例,該中斷單元可包括一中斷控制器,該中斷控制器可操作以指派複數個優先級至複數個中斷來源。根據又一實施例,該複數個暫存器組中之每一者可指派至一中斷級以使得在發生一中斷後旋即由該切換單元取決於該中斷級而選擇該複數個內文定義暫存器組中之一各別暫存器組。根據又一實施例,一未指派中斷級可預設至該複數個內文定義暫存器組中之一預設暫存器組。根據又一實施例,在發生具有一未指派中斷級之一中斷後,將不起始內文切換。根據又一實施例,若一暫存器組經指派至已經指派至另一暫存器組之一優先級,則該CPU可操作以將具有一最低編號之該暫存器組指派至該所選擇優先級且解除指派該各別另一暫存器組。根據又一實施例,該CPU可進一步包括用於將該等中斷級指派至該複數個暫存器組中之一者之一熔絲欄位。 根據又一實施例,該控制暫存器可在已執行一內文切換之後用一新內文更新。
根據另一實施例,一種用於在包括複數個內文定義暫存器組之一中央處理單元(CPU)中執行一內文切換之方法,其中每一暫存器組具有相同數目個CPU暫存器,可包括以下步驟:在發生一例外狀況後旋即自動切換至該複數個內文定義暫存器組中之一預定暫存器組,其中可進一步藉由執行一指令來手動起始對該複數個內文定義暫存器中之一暫存器組之選擇;及在一內文控制暫存器中指示一當前所使用內 文。
根據該方法之又一實施例,內文控制暫存器可包括指示一當前內文之一第一位元欄位及指示由該指令選擇之一最近內文之一第二位元欄位。根據該方法之又一實施例,該方法可進一步包括:執行用於起始一內文切換之一指令。根據該方法之又一實施例,該指令可係一專用內文交換指令。根據該方法之又一實施例,該控制暫存器可係僅可讀的。根據該方法之又一實施例,該控制暫存器可係可讀且至少部分可寫入且該指令係應用於該內文控制暫存器以用於改變該內文控制暫存器之內容以起始一內文切換之一移動資料指令。根據該方法之又一實施例,該方法可進一步包括:指派複數個優先級至複數個中斷來源。根據該方法之又一實施例,該複數個暫存器組中之每一者可指派至一中斷級以使得在發生一中斷後旋即由該切換單元取決於該中斷級而選擇該複數個內文定義暫存器組中之一各別暫存器組。根據該方法之又一實施例,一未指派中斷級可預設至該複數個內文定義暫存器組中之一預設暫存器組。根據該方法之又一實施例,在發生具有一未指派中斷級之一中斷後,將不起始內文切換。根據該方法之又一實施例,若一暫存器組經指派至已經指派至另一暫存器組之一優先級,則該CPU可操作以將具有一最低編號之該暫存器組指派至該所選擇優先級且解除指派該各別另一暫存器組。根據該方法之又一實施例,該方法可進一步包括:提供用於將該等中斷級指派至該複數個暫存器組中之一者之一熔絲欄位。根據該方法之又一實施例,該方法可進一步包括:在已執行一內文切換之後用一新內文更新該內文控制暫存器。
110‧‧‧中央處理單元
120‧‧‧中斷控制器
130‧‧‧預設內文/內文/預設暫存器組/區塊
135a‧‧‧暫存器
135b‧‧‧暫存器
135n‧‧‧暫存器
140‧‧‧暫存器組/記憶體區塊/區塊/暫存器組區塊
150‧‧‧控制暫存器
160‧‧‧內文切換控制單元/切換單元
CCTX[2:0]‧‧‧位元欄位
MCTX[2:0]‧‧‧位元欄位
WREG0‧‧‧工作暫存器/暫存器內文
WREG1‧‧‧工作暫存器/暫存器內文
WREG2‧‧‧工作暫存器/暫存器內文
WREG3‧‧‧工作暫存器/暫存器內文
WREG4‧‧‧工作暫存器/暫存器內文
WREG5‧‧‧工作暫存器/暫存器內文
WREG6‧‧‧工作暫存器/暫存器內文
WREG7‧‧‧工作暫存器/暫存器內文
WREG8‧‧‧工作暫存器/暫存器內文
WREG9‧‧‧工作暫存器/暫存器內文
WREG10‧‧‧工作暫存器/暫存器內文
WREG11‧‧‧工作暫存器/暫存器內文
WREG12‧‧‧工作暫存器/暫存器內文
WREG13‧‧‧工作暫存器/暫存器內文
WREG14‧‧‧工作暫存器/暫存器內文
WREG15‧‧‧堆疊指標/暫存器
圖1展示一實施例之一方塊圖;圖2展示一內文狀態暫存器之一實施例;圖3展示繪示一CPU之一實施例之另一方塊圖; 圖4展示根據一實施例之一時序圖;圖5A及圖5B展示一特殊功能指令之一實施例;圖6展示一熔絲欄位之一實例;圖7展示繪示例示性例外狀況處理之一流程圖;且圖8展示繪示例示性例外狀況處理之另一流程圖。
在執行一主指令序列(主程式)期間,一內文由預定數目個CPU暫存器定義。CPU暫存器經定義為通常形成與算術邏輯單元及其他處理邏輯耦合且由指令用作用以執行基本資料及位址處理之主要來源或目的地之一暫存器檔案或暫存器組之CPU內之彼等暫存器。因此,控制周邊之功能之通用記憶體及其他特殊功能暫存器通常不視為一當前內文之一部分,除非其配合上文說明。微處理器或微控制器之某些實施例使用由一記憶體組形成之一暫存器檔案,其中所有特殊功能暫存器經記憶體映射至資料記憶體。一旦選擇一記憶體組,一記憶體組內之所有記憶體位置形成可定義一內文之通用或特殊功能暫存器。然而,通常在此等實施方案中,僅一暫存器子組視為一內文。其他實施例使用專用數目個CPU暫存器,舉例而言,16或32個暫存器,該專用數目個CPU暫存器並非資料記憶體之一部分且用作CPU指令之主要來源及/或目的地。此等暫存器中之某些或全部亦可經記憶體映射至資料記憶體。
諸如中斷之例外狀況非同步發生且因此其發生無法預測。副常式通常同步執行,換言之,確切知曉在主程式中何處將執行一副常式呼叫。一般而言,內文定義暫存器之內容在執行一例外狀況期間不應變更以一旦已執行該例外狀況允許不受干擾執行主程式。否則,可發生CPU之不可預測行為。上述情形針對副常式之執行亦可為真實。因此,內文需要在執行一服務常式之前或在一副常式之某些情形中加以 保存且在CPU傳回至主指令序列之執行之前還原。
根據各種實施例,可提供一可程式化CPU暫存器硬體內文交換機制。本發明區分一自動內文切換及一手動內文切換。術語「自動」此處係指內文交換自動起始而無需執行任何專用指令之事實。換言之,一中斷信號不僅導致例外狀況而且導致內文切換。相反,一「手動內文切換」係一專用指令或由一控制暫存器中之一或多個特定位元之設定起始。因此,一「手動」內文切換係藉由由CPU執行之一或多個指令起始。然而,實際內文切換經執行而無需執行與藉助於一指令序列之暫存器之一傳統保存/還原相反地執行任何指令。因此,在兩種方法中,執行一零額外負荷內文切換。零額外負荷應理解為不需要額外時間來執行內文切換。因此,舉例而言在一「自動」內文切換期間,在分支至中斷服務常式所需之轉變時間期間執行內文切換。在一「手動」切換中,內文切換僅需要執行各別指令所需之時間。在某些實施例中,此一指令可具有用以執行實際切換之一足夠長執行時間。此可取決於硬體且因此在某些實施例中此一指令可不如其他指令快速地執行。
根據某些實施例,可提供一專用CPU指令,舉例而言用助憶符「CTXTSWP(W)」編碼之一指令,其允許使用者使用軟體在CPU暫存器內文之間交換。各種實施例可經設計以亦藉助硬體操作,舉例而言,基於中斷之內文切換。
根據某些實施例,CPU暫存器內文依賴於中斷優先級且因此係使用者可程式化。暫存器內文在當所選擇中斷觸發時之例外狀況處理期間通透地切換且內文在ISR傳回期間通透地復原。不需要由一使用者程式提供之額外程式步驟。因此,執行自動保存當前內文,而無需藉助個別指令保存暫存器內容。因此移除與中斷內文切換相關聯之所有延時,此舉例而言可避免某些實施例(舉例而言,某些習用微處理器) 中之高達28個或28個以上CPU循環。
在通常具有高優先權中斷(其含有極其少作用程式碼)之應用程式中,內文交換延時支配總執行時間、限制各別裝置輸送量。根據各種實施例,可提供效能之一有效提升而無需一較快速裝置時脈速度。因此,根據各種實施例,一手段經提供以在由硬體(基於中斷)內文切換使用之前初始化內文,或用於一裝置模擬系統以在除錯期間檢視/改變內文。此外,將一特定內文指派至一優先級允許針對具有不改變內文或僅影響在主程式中未使用之暫存器之中斷服務常式之某些優先級不挑選任何內文切換。
因此,各種實施例允許初始化內文(通常在使用作為硬體中斷內文之前),使得一除錯程式能夠讀取一除錯模式內之內文/寫入至一除錯模式內之內文,且允許程式碼使用未指派供與中斷一起使用之內文來加速進入及結束程序或程序庫呼叫。如上文所提及,在某些處理器中,可避免高達28個循環之額外負荷且可提供內文資料持續性。若內文係專用的,則此特徵消除對保存/還原區域變數之需求。
根據諸多習用處理器,一內文可需要經初始化或檢視,及/或可需要使用軟體交換。此導致中斷傳回能夠鑑別硬體控制內文切換與軟體控制內文切換之能力(以支援任意中斷嵌套)。
根據某些實施例,舉例而言在根據由申請者製造之dsPIC33系列微控制器之一數位信號控制器中,可提供高達4個額外CPU暫存器內文(W0至W14)。根據某些實施例,此可藉由新增4組影子暫存器來進行,如下文將更詳細闡釋。此外,根據其他實施例,可提供更多或更少內文。一堆疊指標(W15)及所有其他CPU暫存器可保持為所有內文共有。根據各種實施例,內文可透過硬體或軟體交換。
在一硬體內文交換中,內文舉例而言藉助於熔絲指派至一中斷優先級(IPL)且在例外狀況處理期間通透地交換。此可藉由自動交換 當前內文之內容與儲存於相關聯影子暫存器中之內文之內容來零額外負荷執行。
在一軟體內文交換中,內文使用一自中斷傳回(RETFIE)指令來通透地交換。此外,此指令在指令需要執行時導致零額外負荷之一內文交換而無論何者結束服務常式且傳回至主程式如何。根據某些實施例,內文亦可使用一專用CPU指令(舉例而言,使用助憶符「CTXTSWP(W)」之一指令)來手動交換。內文係持續的,亦即,其在交換出時保留。根據某些實施例,僅當前作用內文可經記憶體映射至資料記憶體中之一特殊功能暫存器空間中。因此,當前作用內文可操縱而非作用內文無法變更。
針對具有通常簡稱中斷服務常式(ISR)之應用程式,例如,切換模式電源供應器(SMPS)應用程式,中斷進入/結束額外負荷已變成一限制效能因素。保存/還原CPU暫存器可計及高達30%之總ISR執行時間。基於一中斷優先級(IPL)之通透內文交換准許在相同時脈速度下較高效能(或較低電力來維持相同輸送量)。
根據各種實施例,可提供一成本有效CPU內文交換解決方案,該方案:-能夠藉由具有零或低額外負荷而顯著改良裝置效能;-藉由不引入新資料危險且與嵌套中斷一起工作而易於理解及使用;-自一裝置計時角度可管理;-容易整合至現有Dev工具中;及-完全回溯相容。
圖1展示根據一實施例之一微處理器或微控制器之一方塊圖。展示與一中斷控制器120連接之一中央處理單元(CPU)110,該中斷控制器可經設計以控制/管理複數個內部及/或外部中斷來源。圖1進一步繪 示包括暫存器135a至135n之一預設內文130以及透過一內文切換控制單元160與CPU 110耦合之額外暫存器組140。一般而言,一中央處理單元認為由一或多個暫存器、控制邏輯、算術邏輯單元、指令解碼器、程式計數器及各種輸入/輸出介面組成。雖然圖1展示CPU 110為一單個區塊,但應理解圖1中所示之元件中之某些或全部可視為實際CPU之部分。
如上文所提及,一內文可由複數個預定義暫存器之內容定義。 舉例而言,圖1展示包含暫存器135a至135n之一內文130。一內文中包含之暫存器之數目可依據處理器設計而變化。在某些處理器設計中,僅最小量之暫存器定義一實際內文。因此,僅處理器可用之一暫存器子組定義內文。若一使用者在執行一副常式或中斷服務常式期間操縱其他暫存器,則使用者必須確保各別其他暫存器藉助於各別負載加以保存且儲存指令。然而,其他實施例可包含所有可用CPU暫存器來定義一內文。圖1另外展示用於提供複數個額外暫存器組之一記憶體區塊140。每一額外暫存器組能夠儲存一內文之整個內容。換言之,每一額外暫存器組具有與當前內文一樣多之暫存器。舉例而言,如圖1中所示,每一額外暫存器組具有n個暫存器。額外暫存器組140可實施於一專用記憶體空間中。根據一項實施例,可實施四個額外內文暫存器組。因此,區塊130及140提供五個不同內文。一內文切換意指自一當前暫存器組(其可位於區塊130或140中)至其他非作用四個暫存器組中之一者之一切換。因此,各別內文內容在一切換後旋即保持不變更。根據某些實施例,僅作用內文亦經記憶體映射至資料記憶體。因此,當前作用內文亦可透過資料記憶體存取。
圖1展示內文切換控制單元160,其由一控制暫存器150控制以選擇內文中之一者,舉例而言,預設內文130或額外暫存器組區塊140中之暫存器組中之一者。此外,中斷控制器120處置所有內部及/或外部 中斷且亦可認為係實際CPU之部分。中斷控制器可為CPU 110提供一或多個中斷信號以產生具有不同優先級之中斷。根據一實施例,每一優先級可經指派至一特定暫存器組,預設暫存器組130或額外暫存器組140中之一者。因此,每當發生一中斷時,切換單元160經控制以自動選擇一相關聯內文暫存器組。另外,CPU可具有導致一所謂手動內文切換之一專用指令或可允許寫入至控制暫存器150以執行手動內文切換。
圖2展示呈一內文狀態暫存器形式之控制暫存器150之一實例。 根據某些實施例,此一暫存器可係僅可讀。暫存器150可提供兩個單獨位元欄位CCTX[2:0]及MCTX[2:0]。根據一實施例之每一位元欄位具有三個位元,允許定義高達8個不同內文。取決於所實施之內文暫存器組之數目可使用更多或更少位元。位元欄位CCTX[2:0]指示當前所選擇內文而位元欄位MCTX[2:0]指示已經手動設定之最近內文。因此,取決於CPU之當前狀態,此等位元欄位之內容可不同。位元欄位CCTX[2:0]係每當發生一內文切換(無論自動或是手動起始)時更新。 位元欄位MCTX[2:0]係僅在當執行用於切換一內文之一各別指令時之一手動內文切換期間更新。
圖3展示典型16位元微控制器之一更詳細方塊圖。然而,根據各種實施例之內容可實施於較高或較低微處理器或微控制器中。圖3中所示之CPU之實施例係具有習用微控制器元件及數位信號控制器能力之一混合信號微控制器。因此,CPU之方塊圖展示不認為係內文之一部分之各種暫存器。此處,內文由工作暫存器WREG0至WREG14形成。另外,提供四個內文區塊,每一者包含15個暫存器用於形成一內文。WREG 15係堆疊指標且如同狀態暫存器不認為係一內文之一部分。如可見,某些暫存器不僅可用於此裝置之兩個操作模式,亦即,當操作為一微控制器或作為一數位信號控制器時。
圖4展示內文可舉例而言使用可程式化熔絲與一中斷優先級相關聯。然而,控制暫存器可用於使各種影子暫存器組與一中斷優先級動態相關聯。在圖4中之時序圖之頂部上,指示順序循環。在循環1之開始處,藉由確證中斷請求信號int_request來開始一例外狀況處理。在循環1期間,舊的或當前內文仍作用以使得當前執行指令仍可使用恰當內文。在相同時間期間,檢查是否當前中斷優先級與一新內文相關聯。在循環2期間,若需要,則根據中斷優先級將內文切換至一新內文。如在插入無操作指令之循環2及3期間亦可看到,暫存器WREG15之內容經推動至堆疊。在循環4中發生中斷服務常式之第一指令之執行。
根據某些實施例,可使用一指令來手動交換內文。此提供用以使用除中斷(例如,程式庫呼叫)外之內文之一手段,其中應僅使用未指派至IPL之內文。此外,此提供用以在由例外狀況處理使用之前初始化內文之一手段,其中應停用中斷。此外,此為開發工具提供內文可觀測性及可控制性,諸如在內電路模擬器或除錯程式(及測試,儘管其現在係全掃描)中。根據各種實施例,指令MCTXI及CCTXI可在CTXTSWP(W)執行期間更新。
圖5展示使用保留於一工作暫存器W中之一常值或一數值規定目標內文之可能內文交換指令之一實例。
另外,一自中斷傳回指令RETFIE可選擇性地傳回至適當內文:若取消堆疊之IPL與一內文相關聯,則交換至彼內文否則傳回以手動交換MCTXI暫存器中識別之內文。
此方法結合例外狀況處理操作確保在嵌套例外狀況及/或呼叫時之內文一致性,其中內文既自動又手動切換。根據某些實施例,一手 動內文切換需要執行原始程式碼以提供各別功能,舉例而言,在上文所揭示實施例中,一個指令必須有CPU執行以驅使一內文切換。一自動內文切換不需要執行任何程式碼以致使實際切換,此乃因在發生一中斷時自動執行內文切換。在任一情形中,一旦切換已執行,控制暫存器即經更新展示個別所選定內文。
以下使用由申請者製造之一dsPIC33系列微控制器之架構來闡述如圖3中所示之一項實施例之一特定實施方案。除了預設內文0外,基於參數NUM_ALT_CPU_CONTEXTS之值,高達4個CPU暫存器內文(內文1至4)可實體化至CPU核心。若NUM_ALT_CPU_CONTEXTS=0,則僅內文0存在於裝置內。每一額外內文由WREG0至WREG14組成且持續。亦即,每當CPU離開每一內文時彼內文之內容不改變。所有內文內之暫存器WREG0至WREG14在重設期間清除,且未經初始化暫存器重設亦適用於任何作用內文。無任何其他CPU暫存器包含於額外內文內。可在任何內文中執行PUSH/POP.s指令。內文可透過硬體(自動化)或藉由使用軟體(手動)切換:
‧硬體內文切換係自動化且為使用者通透。當一內文與一特定中斷優先級(IPL)相關聯時,在對處於彼位準處之任何中斷之例外狀況處理期間進入內文。在執行中斷ISR之RETFIE指令期間結束內文。硬體內文切換不涉及任何額外負荷。
‧軟體內文切換係在使用者控制下使用一CTXTSWP(W)指令。根據一實施例,指令之執行係以滿足一軟體連鎖為條件。
根據一實施例,內文狀態暫存器(CTXTSTAT)係定位於位址0x005A處之一唯讀暫存器,其含有當前內文識別符(CCTXI[2:0])及手動內文識別符(MCTXI[2:0])狀態欄位。CCTXI[2:0]欄位向使用者指示哪一CPU W暫存器內文當前在使用中。此欄位每當W暫存器內文改變時更新,透過基於自動中斷之硬體切換或由於藉由執行一 CTXTSWP(W)指令引起之一內文改變。MCTXI[2:0]欄位向使用者指示由於藉由執行一CTXTSWP(W)指令引起之一內文改變而最近選擇哪一CPU W-暫存器內文。MCTXI[2:0]欄位由RETFIE指令用於在不存在任何基於自動化中斷之內文切換之情況下追蹤手動(軟體)內文切換。
每一額外內文係與由FALTREF熔絲內之一3位元熔絲(CTXTn[2:0])欄位中之值定義之一CPU中斷優先級(IPL)相關聯。熔絲位元欄位經分配至如表1及圖6中所示之每一內文。
根據某些實施例,可不支援用於設陷之內文切換。當CTXTn[2:0]熔絲欄位經抹除(CTXTn[2:0]=3’b111)時,無IPL與對應內文相關聯。
應注意,經程式化至CTXTn熔絲欄位中之3位元值係(IPL-1)以便確保在FALTREG熔絲經抹除時不分配任何替代內文。舉例而言,為使內文1與IPL 6相關聯,使用者將使3’b101程式化至CTXT1[2:0]中。未指派至一額外內文之所有IPL位準將始終使用當前內文(亦即,內文將不改變)。另一選擇係,根據某些實施方案,未經指派IPL位準可自動指派至一預設內文,舉例而言,第一內文定義暫存器組。
若一使用者無意地將1個以上額外內文指派至相同IPL,則CPU中 之硬體將優先排序指派以使得使用具有最低編號之內文(例如,若CTXT1=CTXT2=3’b110,則內文1將經指派至IPL7且內文2將解除指派)。儘管此情景認為錯誤(且因此不推薦),但未使用(未指派)內文將保持可用於供軟體內文切換使用。在例外狀況處理期間,CPU將比較CTXTn欄位與CPU正對其作出回應(亦即,在移動至之程序中)之IPL。若存在一匹配,則CPU將在例外狀況處理期間通透地切換至選定內文。若不存在一匹配,則CPU將繼續使用當前內文。新(或現有)內文將在相關聯ISR開始時立即可用。例外狀況處理堆疊傳回IPL(如正常一樣)。當前作用內文經指示在CTXTSTAT暫存器中在當前內文識別符欄位(CTXTSTAT.CCTXI[2:0])中。此暫存器每當CPU切換至另一內文時更新。在執行一RETFIE指令期間,傳回IPL係如正常取消堆疊(連同傳回PC及剩餘SRL位元),且與指派至替代內文之IPL進行比較。若發現一匹配,則RETFIE將切換回至所指派內文。若未發現任何匹配,則RETFIE將切換至手動內文識別符狀態暫存器(CTXTSTAT.MCTXI[2:0])中定義之內文。切換至保留於MCTXI[2:0]中之手動內文准許基於軟體及中斷兩者之內文切換欲應用程式碼一起使用。在RETFIE執行期間,CPU將通透地切換至所選擇內文(若需要)。 新(或現有)內文將在下一指令之執行開始時立即可用,且CTXTSTAT.CCTXI[2:0]將對應地更新。
圖7中展示支援2個額外CPU內文之一裝置之一程式碼流程實例(無軟體內文切換)。內文1(C1)經指派至IPL6,且內文2(C2)經指派至IPL3。
當一內文未指派至一IPL,或與彼IPL相關聯之中斷停用時,使用者可藉由執行CTXTSWP(W)指令(其將不影響CPU IPL)中之一者來透過軟體進行挑選以切換內文。根據一項實施例,CTXTSWP(W)指令可係PWRSAV運算碼之一子解碼。CTXTSWP指令使用一常值數值來 判定目標內文。CTXTSWPW指令使用暫存器直接定址,其中目標內文經定義於一W暫存器之LSB中。根據一特定實施例,CTXTSWP(W)指令之執行可經受一軟體聯鎖。當成功執行時,指令將在兩個循環中切換至由指令運算元定義之內文且用新內文數值更新手動內文識別符(CTXTSTAT.MCTXI[2:0])及當前內文識別符(CTXTSTAT.CCTXI[2:0])暫存器欄位。新內文將在下一指令之執行開始時立即可用(亦即,無一危險)。在無錯誤報告(亦即,無效應)之情況下,指令將停用且執行作為一2循環FNOP,一使用者應嘗試: ‧切換至不支援之一內文 或 ‧切換至當前作用內文 或 ‧在不支援額外內文之一裝置上執行指令(亦即,NUM_ALT_CPU_CONTEXTS=0)
圖8展示一混合硬體及手動軟體內文切換之一實例。透過軟體(手動切換)切換內文主要意欲用作用以初始化指派至一IPL之內文(在與彼IPL相關聯之所有中斷停用時)之一手段。預期,初始化軟體將把作用內文傳回至預設內文0(儘管此不需要,前提係所選擇內文在程式碼中之別處不使用)。然而,可能將某些內文指派至基於IPL之硬體切換,且使其他內文供與在應用程式運行時間執行期間使用一CTXTSWP(W)指令之軟體切換一起使用。手動內文識別符(CTXTSTAT.MCTXI[2:0])用於追蹤任何手動切換內文以使得若一RETFIE指令未發現傳回(取消堆疊)IPL係與一替代內文相關聯,其將傳回至CTXTSTAT.MCTXI[2:0]中保留之最後知曉之手動升級內文編號。在重設時,CTXTSTAT.MCTXI[2:0]=3’b000。如上文所論述,預期若軟體內文切換不用於應用程式主程式碼內,則使用者應在初始 化之後確保CTXTSTAT.MCTXI[2:0]=3’b000(預設內文)。
例外狀況未被CTXTSWP(W)指令抑制。若一例外狀況應到達任一CTXTSWP(W)執行循環之CPU(Q1)處,則指令將在例外狀況處理之第一循環期間完成。若一例外狀況應在CTXTSWP(W)指令之前或之後到達,則例外狀況處理將如正常繼續進行。
根據另一特定實施例,若滿足軟體聯鎖(亦即,在CTXTSWP(W)之循環1期間確證nvm_cpu_op_unlock),則內文交換及CXTXSTAT暫存器更新將在中斷或設陷處置程式向量擷取開始時完成。例外狀況處理將如正常向量化且處置程式將傳回至依循CTXTSWP(W)指令之位址。若例外狀況應係處於經指派至另一內文之一IPL之一中斷(指派至CTXTSWP(W)之內文及基於IPL之使用在同時使用時必須互斥),則內文將在例外狀況處理期間再次切換。然而,基於IPL內文改變將在任何軟體驅動內文改變之後發生,以使得相關聯ISR RETFIE指令將傳回至正確內文(亦即,剛由CTXTSWP(W)指令選擇之內文。)
根據又另一實施例,若不滿足軟體聯鎖,則CTXTSWP(W)將執行作為一2~FNOP且內文將不改變。例外狀況處理將如正常向量化且處置程式將傳回至依循CTXTSWP(W)指令之位址。
根據此特定實施例之CPU可支援介於0與4之間額外CPU暫存器內文。如圖3中所示之一CPU暫存器內文經定義為WREG0至WREG14。 額外內文中不包含任何其他CPU暫存器。內文切換係在例外狀況處理及RETFIE期間或透過一CTXTSWP(W)指令之執行達成。
CTXTSWP(W)指令將在2個循環中切換至指令運算元中定義之內文。新內文將在下一指令之執行時立即可用。CTXTSWP(W)指令亦將用新選擇內文數值更新CTXTSTAT.MCTXI[2:0]暫存器欄位。
根據一特定實施例存在關於CTXTSWP(W)指令之某些使用考量因素:1.應注意SR並非額外內文之一部分。因此,當使用 CTXTSWP(W)來切換CPU暫存器內文時,使用者將需要手動保存/還原SRL暫存器。2.與其中傳回內文係由堆疊式CPU IPL數值隱含定義之硬體內文切換不同,CTXTSWP(W)指令不保存任何記錄。因此在使用CTXTSWP(W)指令時追蹤CPU內文係使用者責任。
在取消堆疊SR(在第2循環中)之後,RETFIE指令將檢查取消堆疊之IPL[2:0]數值。若IPL[2:0]係與一CPU暫存器內文相關聯,則傳回指令將切換至彼內文。若IPL[2:0]不與一CPU暫存器內文相關聯,則傳回指令將切換至手動內文識別符(CTXTSTAT.MCTXI[2:0])暫存器欄位中保留之內文編號。此結合例外狀況處理操作確保在嵌套例外狀況及/或呼叫時之內文一致性,其中內文既自動又手動切換。在上述兩個情形中,當前內文識別符(CTXTSTAT.CCTXI[2:0])暫存器欄位相應地更新。手動內文識別符(CTXTSTAT.MCTXI[2:0])暫存器欄位之狀態不受影響。新內文將在下一指令之執行開始時立即可用(無RAW危險)。舊內文之內容以任何方式不受切換影響。
根據另一實施例,可不需要用於執行內文切換之任何特定指令,此乃因在根據某些實施例之一手動內文切換中,一內文切換由控制暫存器中之各別位元之手動設定執行。在此一實施例中,控制暫存器必須可讀且至少部分可寫入。在兩種方法中,無任何額外負荷指令需要執行以實際上如舉例而言在具有額外負荷習用中斷服務常式中一般保存內文暫存器之內容。
所提及之各種實施例可與其他實施例之各種特徵組合。各種實施例中所闡述之任何特徵不必具有一排他性特性,除非說明書中提及。因此,特徵之各種組合可實施於如各種實施例中所揭示之一處理單元中。
110‧‧‧中央處理單元
120‧‧‧中斷控制器
130‧‧‧預設內文/內文/預設暫存器組/區塊
135a‧‧‧暫存器
135b‧‧‧暫存器
135n‧‧‧暫存器
140‧‧‧暫存器組/記憶體區塊/區塊/暫存器組區塊
150‧‧‧控制暫存器
160‧‧‧內文切換控制單元/切換單元

Claims (25)

  1. 一種中央處理單元(CPU),其包括:一中斷單元,其用於執行中斷指令;複數個內文定義暫存器組,其中每一暫存器組具有相同數目個CPU暫存器;一切換單元,其用於耦合該CPU內之一所選擇暫存器組,其中該切換單元在發生一例外狀況後或執行一內文切換指令後旋即切換至該複數個內文定義暫存器組中之一預定暫存器組;及一內文狀態暫存器,其與該切換單元耦合,該切換單元包括指示一當前內文之一第一位元欄位及指示由該內文切換指令選擇之一最近內文之一第二位元欄位。
  2. 如請求項1之CPU,其中該內文狀態暫存器係僅可讀的。
  3. 如請求項1之CPU,其中該內文狀態暫存器係可讀的且至少部分可寫入,且該指令係應用於該內文狀態暫存器以用於改變該內文狀態暫存器之內容以起始一內文切換之一移動資料指令。
  4. 如請求項1之CPU,其中該中斷單元包括一中斷控制器,該中斷控制器可操作以指派複數個優先級至複數個中斷來源。
  5. 如請求項4之CPU,其中一未指派中斷級預設至該複數個內文定義暫存器組中之一預設暫存器組。
  6. 如請求項4之CPU,其中在發生具有一未指派中斷級之一中斷後,將不起始內文切換。
  7. 如請求項4之CPU,其中若一暫存器組經指派至已經指派至另一暫存器組之一優先級,則該CPU可操作以將具有一最低編號之該暫存器組指派至該所選擇優先級且解除指派該各別另一暫存器組。
  8. 如請求項4之CPU,其進一步包括用於將該等中斷級指派至該複數個暫存器組中之一者之一熔絲欄位。
  9. 如請求項1之CPU,其中該內文狀態暫存器在已執行一內文切換之後用一新內文更新。
  10. 如請求項1之CPU,其中該內文切換指令包括識別一經挑選內文之一常值。
  11. 如請求項1之CPU,其中該內文切換指令識別一暫存器,該暫存器儲存識別一經挑選內文之資訊。
  12. 一種用於在包括複數個內文定義暫存器組之一中央處理單元(CPU)中執行一內文切換之方法,其中每一暫存器組具有相同數目個CPU暫存器,該方法包括:在發生一例外狀況後旋即自動切換至該複數個內文定義暫存器組中之一預定暫存器組,其中可進一步藉由執行一內文切換指令而手動起始對該複數個內文定義暫存器中之一暫存器組之選擇;及指示在一內文狀態暫存器之一第一位元欄位中的一當前所使用內文及一第二位元欄位中由該指令選擇之一最近內文。
  13. 如請求項12之方法,其進一步包括:執行該內文切換指令,從而起始一內文切換。
  14. 如請求項13之方法,其中該內文切換指令係一專用內文交換指令。
  15. 如請求項14之方法,其中該內文狀態暫存器係僅可讀的。
  16. 如請求項12之方法,其中該內文切換指令包括識別一經挑選內文之一常值。
  17. 如請求項12之方法,其中該內文切換指令識別一暫存器,該暫存器儲存識別一經挑選內文之資訊。
  18. 如請求項13之方法,其中該內文狀態暫存器係可讀的且至少該第二位元欄位可寫入,且該內文切換指令係應用於該內文狀態暫存器的該第二位元欄位以用於改變該內文狀態暫存器之內容以起始一內文切換之一移動資料指令。
  19. 如請求項12之方法,該方法進一步包括:指派複數個優先級至複數個中斷來源。
  20. 如請求項19之方法,其中該複數個暫存器組中之每一者可指派至一中斷級,以使得在發生一中斷後旋即由該切換單元取決於該中斷級而選擇該複數個內文定義暫存器組中之一各別暫存器組。
  21. 如請求項20之方法,其中一未指派中斷級預設至該複數個內文定義暫存器組中之一預設暫存器組。
  22. 如請求項20之方法,其中在發生具有一未指派中斷級之一中斷後,當前內文定義暫存器組定義該當前內文。
  23. 如請求項20之方法,其中若一暫存器組經指派至已經指派至另一暫存器組之一優先級,則該CPU可操作以將具有一較低編號之該暫存器組指派至該所選擇優先級且解除指派該各別另一暫存器組。
  24. 如請求項20之方法,其進一步包括:提供用於將該等中斷級指派至該複數個暫存器組中之一者之一熔絲欄位。
  25. 如請求項12之方法,其中在已執行一內文切換之後,用在該第一位元欄位中之一新內文更新該內文狀態暫存器。
TW103108548A 2013-03-12 2014-03-12 中央處理單元及用於在其中執行內文切換之方法 TWI619076B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361777887P 2013-03-12 2013-03-12
US61/777,887 2013-03-12
US14/200,417 US9619231B2 (en) 2013-03-12 2014-03-07 Programmable CPU register hardware context swap mechanism
US14/200,417 2014-03-07

Publications (2)

Publication Number Publication Date
TW201502993A TW201502993A (zh) 2015-01-16
TWI619076B true TWI619076B (zh) 2018-03-21

Family

ID=50442635

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103108548A TWI619076B (zh) 2013-03-12 2014-03-12 中央處理單元及用於在其中執行內文切換之方法

Country Status (6)

Country Link
US (1) US9619231B2 (zh)
EP (1) EP2972842B1 (zh)
KR (1) KR20150128680A (zh)
CN (1) CN105144100B (zh)
TW (1) TWI619076B (zh)
WO (1) WO2014159123A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014108747A1 (en) * 2013-01-10 2014-07-17 Freescale Semiconductor, Inc. Integrated circuit processor and method of operating a integrated circuit processor
US9858083B2 (en) * 2013-03-14 2018-01-02 Microchip Technology Incorporated Dual boot panel SWAP mechanism
US9928094B2 (en) * 2014-11-25 2018-03-27 Microsoft Technology Licensing, Llc Hardware accelerated virtual context switching
US20160170466A1 (en) * 2014-12-15 2016-06-16 Jefferson H. HOPKINS Power saving multi-width processor core
US10802866B2 (en) * 2015-04-30 2020-10-13 Microchip Technology Incorporated Central processing unit with DSP engine and enhanced context switch capabilities
JP2017037370A (ja) * 2015-08-06 2017-02-16 富士通株式会社 計算機、プロセス制御方法およびプロセス制御プログラム
GB2547912B (en) * 2016-03-02 2019-01-30 Advanced Risc Mach Ltd Register access control
US10496573B2 (en) * 2017-03-31 2019-12-03 Intel Corporation Context-sensitive interrupts
US10572265B2 (en) 2017-04-18 2020-02-25 International Business Machines Corporation Selecting register restoration or register reloading
US10963261B2 (en) 2017-04-18 2021-03-30 International Business Machines Corporation Sharing snapshots across save requests
US10489382B2 (en) * 2017-04-18 2019-11-26 International Business Machines Corporation Register restoration invalidation based on a context switch
US10649785B2 (en) 2017-04-18 2020-05-12 International Business Machines Corporation Tracking changes to memory via check and recovery
US11010192B2 (en) 2017-04-18 2021-05-18 International Business Machines Corporation Register restoration using recovery buffers
US10838733B2 (en) 2017-04-18 2020-11-17 International Business Machines Corporation Register context restoration based on rename register recovery
US10552164B2 (en) 2017-04-18 2020-02-04 International Business Machines Corporation Sharing snapshots between restoration and recovery
US10545766B2 (en) 2017-04-18 2020-01-28 International Business Machines Corporation Register restoration using transactional memory register snapshots
US10782979B2 (en) 2017-04-18 2020-09-22 International Business Machines Corporation Restoring saved architected registers and suppressing verification of registers to be restored
US10540184B2 (en) 2017-04-18 2020-01-21 International Business Machines Corporation Coalescing store instructions for restoration
US10564977B2 (en) 2017-04-18 2020-02-18 International Business Machines Corporation Selective register allocation
US10740108B2 (en) 2017-04-18 2020-08-11 International Business Machines Corporation Management of store queue based on restoration operation
CN109117253B (zh) * 2017-06-26 2022-05-24 阿里巴巴集团控股有限公司 一种微内核调度的方法和装置
JP2019219984A (ja) * 2018-06-21 2019-12-26 ルネサスエレクトロニクス株式会社 メモリモジュール
TWI703500B (zh) * 2019-02-01 2020-09-01 睿寬智能科技有限公司 可縮短內文交換時間之方法及其半導體裝置
CN110928574A (zh) * 2019-11-20 2020-03-27 深圳市汇顶科技股份有限公司 微控制器、中断处理芯片、设备及中断处理方法
WO2023038618A1 (en) * 2021-09-08 2023-03-16 Zeku, Inc. System and method for triggering a zero-cycle context switch

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060101252A1 (en) * 2004-09-21 2006-05-11 Tomisawa Shin-Ichiro Information processing apparatus and context switching method
US20090183163A1 (en) * 2006-08-24 2009-07-16 Naotaka Maruyama Task Processing Device
TW200935301A (en) * 2007-11-30 2009-08-16 Microchip Tech Inc Enhanced microprocessor or microcontroller
TW201028863A (en) * 2008-11-06 2010-08-01 Via Tech Inc System and method for GPU synchronization and method for managing an external fence write to a GPU context

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3825902A (en) * 1973-04-30 1974-07-23 Ibm Interlevel communication in multilevel priority interrupt system
US5640582A (en) * 1992-05-21 1997-06-17 Intel Corporation Register stacking in a computer system
TW200511111A (en) * 2003-07-30 2005-03-16 Koninkl Philips Electronics Nv Microcontroller with an interrupt structure having programmable priority levels with each priority level associated with a different register set
US20080307208A1 (en) * 2007-06-07 2008-12-11 Fujitsu Limited Application specific processor having multiple contexts
US8825926B2 (en) * 2009-04-13 2014-09-02 Microchip Technology Incorporated Processor with assignable general purpose register set

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060101252A1 (en) * 2004-09-21 2006-05-11 Tomisawa Shin-Ichiro Information processing apparatus and context switching method
US20090183163A1 (en) * 2006-08-24 2009-07-16 Naotaka Maruyama Task Processing Device
TW200935301A (en) * 2007-11-30 2009-08-16 Microchip Tech Inc Enhanced microprocessor or microcontroller
TW201028863A (en) * 2008-11-06 2010-08-01 Via Tech Inc System and method for GPU synchronization and method for managing an external fence write to a GPU context

Also Published As

Publication number Publication date
US20150019847A1 (en) 2015-01-15
CN105144100A (zh) 2015-12-09
EP2972842A1 (en) 2016-01-20
US9619231B2 (en) 2017-04-11
WO2014159123A1 (en) 2014-10-02
EP2972842B1 (en) 2020-05-20
KR20150128680A (ko) 2015-11-18
TW201502993A (zh) 2015-01-16
CN105144100B (zh) 2019-12-31

Similar Documents

Publication Publication Date Title
TWI619076B (zh) 中央處理單元及用於在其中執行內文切換之方法
JP3787167B2 (ja) フラッシュメモリ
US7334161B2 (en) Breakpoint logic unit, debug logic and breakpoint method for a data processing apparatus
KR102629722B1 (ko) 이동 프리픽스 명령어
JP2008047145A (ja) デュアルスレッドプロセッサ
TWI746530B (zh) 向量預測指令
KR20130012126A (ko) 예외 이벤트 처리 장치 및 방법
EP2972809A1 (en) Boot sequencing for multi boot devices
KR20150019349A (ko) 다중 쓰레드 실행 프로세서 및 이의 동작 방법
KR101849110B1 (ko) 다음-명령-타입 필드
TWI617984B (zh) 雙開機區段切換機制
JP2006092042A (ja) 情報処理装置及びコンテキスト切り替え方法
JP6874262B2 (ja) ベクトル被演算子ビットサイズの制御
JP2005228294A (ja) ネスト状割込みシステムの割込み優先順位制御
US7278014B2 (en) System and method for simulating hardware interrupts
US20030037227A1 (en) Processor enabling exception handling to be set by program
JP4444305B2 (ja) 半導体装置
KR102379886B1 (ko) 벡터 명령 처리
US7434039B2 (en) Computer processor capable of responding with comparable efficiency to both software-state-independent and state-dependent events
JP2005275703A (ja) プロセッサ及びコンテキスト切り替え方法
KR101646768B1 (ko) 이퀄-모델 프로세서를 위한 인터럽트 처리장치 및 처리방법과 그 처리장치를 포함하는 프로세서
TW200417926A (en) Selective interrupt suppression
JP4703735B2 (ja) コンパイラ、コード生成方法、コード生成プログラム
JP5866697B2 (ja) 複数のコンディションフラグを有するcpu
JPS6220032A (ja) 情報処理装置