TWI574152B - 具有上下文切換之微控制器 - Google Patents
具有上下文切換之微控制器 Download PDFInfo
- Publication number
- TWI574152B TWI574152B TW102109903A TW102109903A TWI574152B TW I574152 B TWI574152 B TW I574152B TW 102109903 A TW102109903 A TW 102109903A TW 102109903 A TW102109903 A TW 102109903A TW I574152 B TWI574152 B TW I574152B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- register
- context
- registers
- mapped
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
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)
Description
本申請案主張2012年3月21日提交之美國臨時申請案第61/613,802號之權利,該案之全文以引用之方式併入本文中。
本發明係關於一種微控制器,特定言之,本發明係關於一種具有自動上下文切換能力之微控制器。
微控制器一般為一單晶片上之系統且包括一微控制器核心或中央處理單元及複數個周邊組件。各種此等微控制器具有8位元、16位元及32位元架構。既有微控制器(諸如由Applicant Microchip Technology公司製造之8位元微控制器)提供一靈活架構,其中可用複數個族,各族具有一不同複雜性。此等微控制器可例如包括一Harvard架構,其中使程式及資料記憶體分離。此類型之微控制器可進一步包括允許存取至資料記憶體且無需一複雜解碼電路之一特定記憶體庫系統。一般而言,資料記憶體被分為複數個記憶體庫且一記憶體庫選擇暫存器界定記憶體庫之何者當前被選擇且可用。為存取其他記憶體庫,必須重新程式化該記憶體庫選擇暫存器。即使此一記憶體庫方案僅允許存取至一單一界定之記憶體庫,但此等控制器可包含使一切換強加於一預定記憶體庫之指令。不管一般存取如何,此均提供改良及強大效能。
根據一產品調色板,可提供如上文所提及之一8位元族中之不同族之微控制器。例如,一基線族可僅提供允許以非常低之成本製造此等裝置之基本功能。例如,此一基線產品無法支援中斷,其中更高級之族可具有此等功能。中斷功能可添加不允許以非常低之成本製造此等裝置之重要電路。
如上文所提及,諸多微控制器設計(特定言之,8位元微控制器)具有一減少功能且因此具有簡化架構以節省寶貴之矽片空間且允許一減小晶片大小並因此允許每晶圓之更高數目個晶片。例如,根據Applicant Microchip Technology公司之產品線,諸多所謂之基線8位元微控制器之程式碼執行因缺乏中斷功能而受限制。
圖1展示具有可與一記憶體庫機構存取之一資料記憶體之此一習知微控制器之一簡化方塊圖。一程式記憶體110儲存形成一可執行程式之複數個指令。程式計數器115可經設計以具有例如用於定址一2k線性程式記憶體之11個位元。可在執行子常式時提供一堆疊120以儲存程式計數器值。所展示之實例性微控制器為用儲存於程式記憶體110中之12位元指令字組操作之一8位元Harvard型微控制器。因此,一中央8位元資料匯流排105可用於耦合該微控制器內之各種功能元件,諸如(例如)計時器單元0及外部埠B 130。資料記憶體125與此匯流排105耦合且自位址多工器140接收例如一8位元位址。對於直接定址,位址多工器140組合來自由指令暫存器135供應之位址資料及由特殊功能暫存器145供應之位址資料之一位址。因此,在直接定址模式中,指令暫存器135供應後5個位元且特殊功能暫存器145供應前3個位元。因此,根據一實施例,特殊功能暫存器145充當能夠選擇8個不同記憶體庫之一者之一記憶體庫選擇暫存器。在間接定址中,特殊功能暫存器145提供具有全部位元0至7之一完整位址。藉由存取特殊功能暫存器INDF(其係一虛擬暫存器且因此不被實體地實施)而實施間接定
址。對此暫存器INDF之任何讀取或寫入存取促成一間接存取經由特殊功能暫存器145而施加至資料記憶體125。因此,執行一間接資料記憶體存取以取代讀取或寫入暫存器INDF。
根據此類型之架構,指令暫存器135直接自程式記憶體110接收一指令且例如透過另一內部8位元匯流排而與一指令解碼及控制單元180耦合。指令解碼及控制單元180進一步與由單元175提供之某一內部功能耦合。例如,此功能單元175可包含一裝置重設計時器、一通電重設、一監視計時器、一內部RC時鐘等等。可整合其他功能及/或可省略某些功能。計時產生單元185可提供內部計時信號且亦可與單元175耦合。圖1中所展示之習知8位元微控制器核心具有與一狀態暫存器150耦合之一算術邏輯單元160(ALU)。ALU 160進一步與一工作暫存器165耦合且一方面透過多工器155而自指令暫存器135及8位元資料匯流排接收資料且另一方面自工作暫存器165接收資料。因此,圖1僅展示一所謂之基線微控制器核心之一些基本結構。
圖2展示提供更多功能之一微控制器核心之另一方塊圖之一實例。一般而言,類似元件具有相同元件符號。圖2中所展示之資料記憶體225可與如圖1中所展示之記憶體相同。然而,一不同元件符號用於指示此資料記憶體225被不同映射,如下文更詳細所解釋。此資料記憶體現包括由其上不映射特殊功能暫存器之複數個順序記憶體庫組成之一線性記憶體區塊。提供一額外記憶體庫選擇暫存器(BSR)210,其中此暫存器可透過一專用指令而存取且因此可不被記憶體映射。此暫存器210之內容提供由自指令暫存器135接收後5個位元之位址多工器220提供之一位址之前3個位元。特殊功能暫存器FSR 145現可為一8位元暫存器,不論當前選定之記憶體庫如何,該8位元暫存器均可用於間接定址整個線性資料記憶體。在其他實施例中,此暫存器可受限制以藉由將位元7永久設定為「1」而存取形成線性資料記憶體之前4
個記憶體庫。然而,此暫存器自身不再提供記憶體庫選擇功能。僅藉由將一各自記憶體庫編號寫入至未經記憶體映射之記憶體庫選擇暫存器210而實現記憶體庫選擇。因此,即使選擇該線性記憶體區塊內之一記憶體庫,該專用指令亦允許改變為任何其他記憶體庫。低成本微控制器核心之其他內部結構係可行的且可與各種實施例中所揭示之特定實施例組合,如下文更詳細所解釋。
如上文所提及,歸因於核心邏輯之增大,諸多低成本微控制器核心無法提供一中斷功能。可將一簡單中斷邏輯250添加至上文所提及之架構(如圖2中所展示),例如,可提供一單一中斷輸入INT以可自各種源開始一中斷,其中軟體必須處理中斷相關任務之識別及管理。若實施此一簡單中斷邏輯250,則一中斷服務常式碼必須與主線碼共用共同特殊功能暫存器。因此,需要在進入一中斷常式時手動保存諸如暫存器245、165及150之某些暫存器。某些微控制器(例如Applicant之微控制器系列PIC16F1xxx)提供一自動保存且使用所謂之影子暫存器來恢復上下文暫存器之功能。影子暫存器為僅用於保存當前上下文之特殊功能暫存器。影子暫存器在每次開始一中斷時被覆寫,且在自中斷常式返回之後,影子暫存器之內容寫回至各自上下文暫存器。然而,雖然此係一改良,但當添加中斷能力時,需要一更進一步改良之自動上下文切換以防止需要手動地儲存且恢復此等暫存器且允許進一步使用所保存之上下文。
根據一實施例,一種微處理器或微控制器裝置可包括一中央處理單元(CPU);一資料記憶體,其與該CPU耦合,其中該資料記憶體被分為複數個記憶體庫,其中一記憶體庫選擇暫存器判定記憶體庫之何者當前與該CPU耦合;及一第一組之特殊功能暫存器及一第二組之特殊功能暫存器,其中在發生一上下文切換之後,選擇該第一組或該
第二組之特殊功能暫存器作為該CPU之作用中上下文暫存器且選擇另一組之特殊功能暫存器作為非作用中上下文暫存器,其中該等作用中上下文暫存器之至少一些暫存器被記憶體映射至該資料記憶體之兩個以上記憶體庫,且其中該等非作用中上下文暫存器之全部暫存器被記憶體映射至該資料記憶體內之至少一記憶體位置。
根據另一實施例,非作用中上下文暫存器之全部暫存器可被記憶體映射至複數個記憶體庫之僅一個記憶體庫。根據另一實施例,作用中上下文暫存器之至少一些暫存器可被記憶體映射至資料記憶體之全部記憶體庫。根據另一實施例,上下文暫存器可包括一工作暫存器、一狀態暫存器、用於界定一間接位址之一檔案選擇暫存器及一記憶體庫選擇暫存器。根據另一實施例,僅作用中上下文暫存器之該狀態暫存器及該檔案選擇暫存器可被記憶體映射至資料記憶體之全部記憶體庫且該工作暫存器及該記憶體庫選擇暫存器為未經記憶體映射之暫存器。根據另一實施例,非作用中上下文暫存器可被記憶體映射至資料記憶體之最後記憶體庫。根據另一實施例,裝置可進一步包括與CPU耦合之一中斷單元,其中由一中斷誘發上下文切換。根據另一實施例,可軟體誘發上下文切換。根據另一實施例,裝置可包括四個記憶體庫。根據另一實施例,非作用中上下文暫存器可僅被記憶體映射至第四記憶體庫。
根據另一實施例,一種操作一微處理器或微控制器裝置(其包括:一中央處理單元(CPU);一資料記憶體,其與該CPU耦合,其中該資料記憶體被分為複數個記憶體庫;一第一組及一第二組之特殊功能暫存器,其中該第一組或該第二組之特殊功能暫存器形成一作用中上下文且另一組形成一非作用中上下文)之方法可包括以下步驟:選擇該第一組或該第二組之暫存器作為一作用中上下文且選擇另一組之暫存器作為一非作用中上下文,其中該等作用中上下文暫存器之至少
一些暫存器被記憶體映射至該資料記憶體之兩個以上記憶體庫,且其中該等非作用中上下文暫存器之全部暫存器被記憶體映射至該資料記憶體內之至少一記憶體位置;在發生一上下文切換之後,在分別作為作用中上下文及非作用中上下文之該第一組與該第二組之暫存器之間進行切換。
根據方法之另一實施例,非作用中上下文暫存器之全部暫存器可被記憶體映射至複數個記憶體庫之僅一個記憶體庫。根據方法之另一實施例,方法可進一步包括由一中斷誘發上下文切換。根據方法之另一實施例,可軟體誘發上下文切換。根據方法之另一實施例,裝置可包括四個記憶體庫。根據方法之另一實施例,非作用中上下文暫存器可僅被記憶體映射至第四記憶體庫。根據方法之另一實施例,作用中上下文之至少一些暫存器可被記憶體映射至資料記憶體之全部記憶體庫。根據方法之另一實施例,上下文暫存器可包括一工作暫存器、一狀態暫存器、用於界定一間接位址之一檔案選擇暫存器及一記憶體庫選擇暫存器。根據方法之另一實施例,僅作用中上下文暫存器之該狀態暫存器及該檔案選擇暫存器被記憶體映射至資料記憶體之全部記憶體庫,且該工作暫存器及該記憶體庫選擇暫存器為未經記憶體映射之暫存器。根據方法之另一實施例,非作用中上下文暫存器被記憶體映射至資料記憶體之最後記憶體庫。根據方法之另一實施例,方法可進一步包括藉由透過作用中上下文選擇各自記憶體庫且存取非作用中上下文暫存器而存取非作用中上下文之暫存器。根據方法之另一實施例,方法可包括產生複數個中斷,其中在發生一中斷之後,發生一上下文切換,其中執行一中斷常式,且其中該中斷常式在該中斷常式之前一執行期間使用儲存於選定暫存器組中之值。
105‧‧‧匯流排
110‧‧‧程式記憶體
115‧‧‧程式計數器
120‧‧‧堆疊
125‧‧‧資料記憶體
130‧‧‧外部埠B
135‧‧‧指令暫存器
140‧‧‧位址多工器
145‧‧‧特殊功能暫存器(FSR)
150‧‧‧狀態暫存器
155‧‧‧多工器
160‧‧‧算術邏輯單元(ALU)
165‧‧‧工作暫存器
175‧‧‧單元
180‧‧‧指令解碼及控制單元
185‧‧‧計時產生單元
210‧‧‧記憶體庫選擇暫存器(BSR)
220‧‧‧位址多工器
225‧‧‧資料記憶體
245‧‧‧暫存器
250‧‧‧中斷邏輯
300‧‧‧循環緩衝器
310‧‧‧指示符
310'‧‧‧指示符
330‧‧‧指示符
330'‧‧‧指示符
410‧‧‧緩衝器/暫存器組
420‧‧‧緩衝器/暫存器組
430‧‧‧雙向多工器
440‧‧‧雙向多工器
450‧‧‧資料記憶體
4501至450n‧‧‧記憶體庫
圖1展示一習知微控制器之一方塊圖;
圖2展示另一習知微控制器之一方塊圖;圖3展示一可調換影子暫存器組之一實施例;圖4展示用於提供一雙重暫存器組之一循環緩衝器之另一實施例;圖5展示根據各種實施例之一記憶體映射;圖6及圖7展示一詳細特殊功能摘要表;及圖8展示根據各種實施例之中斷優先順序。
上文所提及微控制器中之基線CPU通常不具有中斷能力。將中斷添加至CPU呈現特定缺陷及限制。根據各種實施例之上下文切換克服此等缺陷之諸多者。
當具有中斷能力之一裝置導向至其中斷服務常式(ISR)時,必須保存及恢復各種暫存器之值或上下文以允許程式在返回至主線碼之後自其被停止之位置重新開始。必須在該裝置每次導向至ISR時重新初始化其他暫存器。根據各種實施例之上下文切換允許此等關鍵暫存器之一複本維持用於各主線及ISR執行碼且允許在使用時調換該複本。根據各種實施例,提供將一循環緩衝器添加至上下文暫存器以允許在進入及退出ISR時調換所含值。
根據各種實施例,例如圖3或圖4中所展示,可將一上下文切換機構添加至一基本處理器邏輯以提供中斷能力及相關聯之上下文切換。因此,可藉由提供一額外組之暫存器(其中添加一調換功能)而改良如圖1或圖2中所展示之一架構。因此,並非將當前上下文保存至一影子暫存器組中,而是提供一整體第二組之暫存器且在一中斷之執行期間使用此第二組。因此,提供一中斷上下文且該中斷上下文之內容保持儲存於相關聯之中斷上下文暫存器中,同時由常規上下文暫存器以相同方式維持一「正常」上下文。特定言之,可藉由使用一循環緩
衝器而實施此類型之雙倍暫存器組,該循環緩衝器使用環繞一資料區塊以提供該循環緩衝器功能之各自指示符。如下文更詳細所解釋。
圖3展示可用於提供上下文切換功能之一循環緩衝器之一實例性實施例。循環緩衝器300可經設計以給用於儲存作用中及非作用中上下文之兩個暫存器組提供儲存容量。例如,一上下文可包括4個、8個或16個暫存器,因此,循環緩衝器300將提供8個、16個或32個記憶體位置或暫存器。循環緩衝器300可至少部分地被記憶體映射至主資料記憶體225中。例如,循環緩衝器300之上半部分可用作為主上下文且下半部分可用作為中斷上下文。無論何時,該兩個上下文之僅一者係「作用中的」,而另一上下文係「非作用中的」。因此,循環緩衝器之上半部分之某些暫存器可被記憶體映射至全部記憶體庫,其中下半部分之全部暫存器可僅被記憶體映射至一單一記憶體庫,較佳為最後記憶體庫。因此,作用中暫存器組至記憶體庫之記憶體映射無需與非作用中暫存器組至記憶體庫之記憶體映射相同。當作用中上下文可被部分映射至全部記憶體庫或選定數目個記憶體庫時,「非作用中」上下文之全部暫存器被記憶體映射至一單一記憶體庫,較佳為最後記憶體庫。作用中上下文之某些暫存器可完全不被記憶體映射,而是被硬連線或映射至一特定暫存器以執行一特定功能。因此,在微控制器之操作期間,作用中上下文之經記憶體映射之暫存器將在全部記憶體庫中可存取,而其他未經記憶體映射之暫存器僅可透過專用指令而使用。例如,一記憶體庫選擇暫存器僅可透過一特定指令而使用。一工作暫存器可被記憶體映射或不根據各種實施例。某些上下文暫存器(例如一狀態暫存器STATUS及/或一檔案選擇暫存器FSR)可被記憶體映射至全部記憶體庫。然而,一非作用中上下文之全部暫存器被記憶體映射至至少一單一「記憶體位置」。該等暫存器無需被記憶體映射至作用中上下文之各自暫存器之相同位置,其將使該等作用中暫存器無法用
在該記憶體庫中。此外,無需根據其他實施例而將此等暫存器全部放置於相同記憶體庫中或定位於最後記憶體庫中。
可藉由如圖3中所展示之指示符310、320而提供根據此實施例之記憶體映射。因此,指示符310指向當前作用中上下文之一第一暫存器,而指示符330指向非作用中上下文之第一暫存器。可根據預定關係而記憶體映射其他暫存器。因此,記憶體映射未必連續。一表可經界定以記憶體映射各暫存器。此一表亦可用於界定作用中上下文之未經記憶體映射之暫存器。類似地,非作用中上下文之全部暫存器可藉由一表而記憶體映射至一單一記憶體庫。如圖3中所展示,自A至B之一上下文切換導致:指示符310'現指向下半部分,而指示符330'現指向循環緩衝器300之上半部分。可僅藉由將一常數值添加至各自位址指示符而提供此功能。藉由環繞緩衝器300之最大可能位址而實現一循環緩衝器功能,因此,在正常操作期間,將選擇由緩衝器300之上半部分界定之上下文作為作用中上下文(如相對於圖3之左側上之參考符號A所展示),而緩衝器300之下半部分之上下文僅被記憶體映射至最後記憶體庫。在進入一中斷常式之後,根據如圖3之右側上所展示之參考符號B而定位上下文指示符。指示符310'現指向緩衝器300之下半部分。因此,現將選擇緩衝器300之下半部分暫存器作為作用中上下文。因此,一中斷常式之重新進入現提供與由一中斷常式之前一執行留下之上下文相同之上下文,其中非作用中上下文可透過最後記憶體庫而完全使用。
圖4展示提供一類似功能之另一實施例。此處,給一正常上下文及一中斷上下文分別提供兩個緩衝器410及420。提供雙向多工器430及440以將某些暫存器記憶體映射至資料記憶體450之各種記憶體庫450i。例如,多工器430之第一I/O可將暫存器組410之某些暫存器記憶體映射至全部記憶體庫4501...450n,而第二I/O將全部暫存器僅映射至
記憶體庫450n。第二多工器440執行逆向功能,如圖4中所展示。因此,選擇暫存器組410或暫存器組420作為主暫存器組。可提供額外電路以提供至未經記憶體映射之暫存器之連接或未經記憶體映射之暫存器之選擇。
圖5展示根據一實施例之一基線微控制器中之記憶體映射之一實施方案。此處,例如,資料記憶體僅給四個記憶體庫提供記憶體空間,其中各記憶體庫包括32個暫存器。因此,可僅由5個位元完全定址各記憶體庫。此允許一減小指令大小,例如僅使用12個位元。如圖5中所展示,一上下文可僅由有限數目個選定特殊功能暫存器組成。根據圖5,一上下文具有四個暫存器:工作暫存器W、狀態暫存器STATUS、間接位址暫存器FSR及記憶體庫選擇暫存器BSR。如圖中可見,根據此實施例,該四個作用中上下文暫存器之兩者(即,工作暫存器W及記憶體庫選擇暫存器BSR)完全未被記憶體映射。另外兩者(狀態暫存器STATUS及檔案選擇暫存器FSR)被分別記憶體映射至位址03h及04h處之全部記憶體庫。最後記憶體庫「011」含有非作用中上下文。如圖所展示,非作用中工作暫存器I_W儲存於位址01h處,非作用中狀態暫存器I_STATUS儲存於位址06h處,非作用中檔案選擇暫存器儲存於位址07h處,及非作用中記憶體庫選擇暫存器I_BSR儲存於位址08h處。在圖5之實施例中,位址0Ch至位址0Fh處之暫存器被記憶體映射至全部記憶體庫,而各記憶體庫在記憶體位置10h至1Fh處具有分離之通用暫存器。此外,對於全部記憶體庫,位址00h至0Bh處之特殊功能暫存器之記憶體映射不相同。對於該等位址,僅記憶體庫「000」及「010」具有一相同記憶體映射。根據其他實施例,可選擇其他暫存器或更多暫存器用於一上下文。
圖6及圖7僅展示經記憶體映射之前12個特殊功能暫存器之一更詳細列表。再者,一上下文由四個暫存器(工作暫存器W、記憶體庫
選擇暫存器BSR、狀態暫存器STATUS及檔案選擇暫存器FSR)組成。根據此實施例,亦僅兩個暫存器(作用中上下文之STATUS及FSR)被記憶體映射至各自位址03h、04h處之全部記憶體庫(如圖6及圖7中所展示),而未經記憶體映射之四個暫存器W、TRIS、OPTION及BSR仍被提供至「全部記憶體庫」(如圖6及圖7之表中所展示)。非作用中上下文僅被記憶體映射至線性化位址61h、66h、67h及68h處之最後記憶體庫。
根據各種實施例,可給具有如上文所解釋之增強中斷功能之一基線微控制器提供額外指令。例如,可將一返回指令、一自中斷返回之指令及一移動文字至BSR之指令添加至此一微控制器核心以進一步支援中斷及其他上下文切換功能。根據各種實施例,可因此添加重要特殊功能暫存器之上下文切換以不僅用於中斷服務常式進入及退出且用於由軟體控制之其他事件。
根據各種實施例,可將三個新指令添加至一基線微控制器:MOVLB--移動文字至BSR暫存器:此指令藉由將一常數值寫入至一記憶體庫選擇暫存器而直接控制該記憶體庫選擇暫存器以藉此促成一記憶體庫切換。一12位元操作碼可使用12'h010至12'h017。
RETURN--自CALL返回:此指令自一子常式調用返回,其中基線僅提供使一位元組自最後程式位置返回至工作暫存器中之RETLW。一12位元操作碼可使用12'h01E。
RETFIE--自中斷返回:此指令自一中斷返回,其中如上文所提及,習知基線裝置不具有中斷。一12位元操作碼可使用12'h01F。
中斷上下文切換根據各種實施例實施如下:當自中斷服務常式執行時,使用選定SFR之第二複本(上下文)。例如,根據各種實施例,可基於改良微控制器裝置而調換FSR暫存器、STATUS暫存器、BSR暫存器及W暫存器。雖然已自先前技術裝置(諸如PIC16F1xxx線)
獲知使用所謂之影子暫存器來保存一當前上下文且在進入及退出一服務常式之後恢復該上下文,各種實施例允許調換可在各種記憶體庫之一者中實施之一第二暫存器組。因此,發生一真上下文切換,其中使用該第二上下文暫存器組之內容,而非在一各自觸發之後使用主上下文暫存器組。因此,一中斷常式可使用此等暫存器之一組完全不同之值且無需首先初始化此等暫存器。類似地,透過切換機構而處理主程式之值。
可存在兩個暫存器調換觸發源:
-基於中斷之導向
-自中斷指令返回
各上下文可由其各自源觸發。此實施例使用兩個上下文。根據另一實施例,可存在四個上下文:Interrupt0、Interrupt1、Interrupt2及Main。
根據各種實施例,已可經由如圖7中所展示之I_W暫存器、I_STATUS暫存器、I_FSR暫存器及I_BSR暫存器而在特殊功能暫存器之記憶體庫3中看見一非作用中上下文。
可藉由預設而啟用根據各種實施例之中斷功能。在習知基線裝置上,任何中斷源均會導致裝置重設。設定GIE位元會導致裝置代以導向位址0x004以允許執行一中斷服務常式(ISR)。
自中斷返回(RETFIE)指令用於自ISR返回且設定GIE位元以啟用後續中斷。當裝置自ISR執行時,由CPU使用一次級組之W暫存器、STATUS暫存器、FSR暫存器及BSR暫存器。此等暫存器仍定址於相同位置處,但保存供ISR內部使用之持久獨立值。此允許此等暫存器之內容不受主線執行中之中斷影響。可經由I_W暫存器、I_STATUS暫存器、I_FSR暫存器及I_BSR暫存器而在SFR映射之記憶體庫3中看見其他上下文暫存器之內容。當自ISR執行時,該等暫存器將展示主線上
下文,且反之亦然。
根據一實施例,可用四個中斷源;計時器TMR0、類比轉數位轉換器ADC、比較器及管腳改變上之中斷。使用一INTEI_REG暫存器中之xxIE位元來啟用中斷。可使用選項暫存器OPTION之RAWU位元來啟用管腳改變上之中斷以允許RAIF位元起作用。若在如圖6中所展示之CM1CON0暫存器及CM2CON0暫存器中啟用中斷產生,則可使用比較器中斷旗標。
INTCON之GIE位元啟用至中斷服務常式之導向。當設定WUR位元時,任何啟用中斷源將導致睡眠中之裝置喚醒且重設。此功能類似於傳統基線操作。
圖8係根據內部程式化之不同優先順序之一可能實施方案。此處,提供三個控制位元:指示一低電力模式之「In Sleep」、啟用中斷之「GIE」及用於指示一喚醒重設之「WUR」。圖8中之表展示根據此等位元之不同設定值之相關聯功能。因此,可根據各自設定值而導致一裝置重設操作、一導向操作或一繼續操作。
300‧‧‧循環緩衝器
310‧‧‧指示符
310'‧‧‧指示符
330‧‧‧指示符
330'‧‧‧指示符
Claims (22)
- 一種微控制器裝置,其包括:一中央處理單元(CPU);一資料記憶體,其與該CPU耦合,其中該資料記憶體被分為複數個記憶體庫,其中一記憶體庫選擇暫存器判定記憶體庫之何者當前與該CPU耦合;及一第一組之特殊功能暫存器及一第二組之特殊功能暫存器,其中在發生一上下文切換之後,選擇該第一組或該第二組之特殊功能暫存器作為該CPU之作用中上下文暫存器且選擇另一組之特殊功能暫存器作為非作用中上下文暫存器,其中該等作用中上下文暫存器之至少一些暫存器被記憶體映射至該資料記憶體之兩個以上記憶體庫,且其中該等非作用中上下文暫存器之全部暫存器被記憶體映射至該資料記憶體內之至少一記憶體位置。
- 如請求項1之裝置,其中該等非作用中上下文暫存器之全部暫存器被記憶體映射至該複數個記憶體庫之僅一個記憶體庫。
- 如請求項1之裝置,其中該等作用中上下文暫存器之至少一些暫存器被記憶體映射至該資料記憶體之全部記憶體庫。
- 如請求項1之裝置,其中該上下文暫存器包括一工作暫存器、一狀態暫存器、用於界定一間接位址之一檔案選擇暫存器及一記憶體庫選擇暫存器。
- 如請求項4之裝置,其中僅該等作用中上下文暫存器之該狀態暫存器及該檔案選擇暫存器被記憶體映射至該資料記憶體之全部記憶體庫,且該工作暫存器及該記憶體庫選擇暫存器為未經記憶體映射之暫存器。
- 如請求項1之裝置,其中該等非作用中上下文暫存器被記憶體映射至該資料記憶體之最後記憶體庫。
- 如請求項1之裝置,其進一步包括與該CPU耦合之一中斷單元,其中由一中斷誘發該上下文切換。
- 如請求項1之裝置,其中軟體誘發該上下文切換。
- 如請求項1之裝置,其中該裝置包括四個記憶體庫。
- 如請求項9之裝置,其中該等非作用中上下文暫存器僅被記憶體映射至第四記憶體庫中。
- 一種操作一微處理器或微控制器裝置之方法,該微處理器或微控制器裝置包括:一中央處理單元(CPU);一資料記憶體,其與該CPU耦合,其中該資料記憶體被分為複數個記憶體庫;一第一組及一第二組之特殊功能暫存器,其中該第一組或該第二組之特殊功能暫存器形成一作用中上下文暫存器且另一組形成一非作用中上下文暫存器,該方法包括以下步驟:選擇該第一組或該第二組之暫存器作為一作用中上下文暫存器且選擇另一組之暫存器作為一非作用中上下文暫存器,其中該等作用中上下文暫存器之至少一些暫存器被記憶體映射至該資料記憶體之兩個以上記憶體庫,且其中該等非作用中上下文暫存器之全部暫存器被記憶體映射至該資料記憶體內之至少一記憶體位置;在發生一上下文切換之後,在分別作為作用中上下文暫存器及非作用中上下文暫存器之該第一組與該第二組之暫存器之間進行切換。
- 如請求項11之方法,其中該等非作用中上下文暫存器之全部暫存器被記憶體映射至該複數個記憶體庫之僅一個記憶體庫。
- 如請求項11之方法,其進一步包括由一中斷誘發該上下文切換。
- 如請求項11之方法,其中軟體誘發該上下文切換。
- 如請求項11之方法,其中該裝置包括四個記憶體庫。
- 如請求項15之裝置,其中該等非作用中上下文暫存器僅被記憶體映射至第四記憶體庫中。
- 如請求項11之方法,其中該作用中上下文之至少一些暫存器被記憶體映射至該資料記憶體之全部記憶體庫。
- 如請求項11之方法,其中該上下文暫存器包括一工作暫存器、一狀態暫存器、用於界定一間接位址之一檔案選擇暫存器及一記憶體庫選擇暫存器。
- 如請求項18之方法,其中僅該等作用中上下文暫存器之該狀態暫存器及該檔案選擇暫存器被記憶體映射至該資料記憶體之全部記憶體庫且該工作暫存器及該記憶體庫選擇暫存器為未經記憶體映射之暫存器。
- 如請求項11之方法,其中該非作用中上下文暫存器被記憶體映射至該資料記憶體之最後記憶體庫。
- 如請求項11之方法,其進一步包括藉由透過該等作用中上下文暫存器選擇各自記憶體庫且存取該等非作用中上下文暫存器而存取該等非作用中上下文暫存器之該等暫存器。
- 如請求項11之方法,其產生複數個中斷,其中在發生一中斷之後,發生一上下文切換,其中執行一中斷常式,且其中該中斷常式在該中斷常式之前一執行期間使用儲存於選定之該第一或第二組之暫存器中之值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261613802P | 2012-03-21 | 2012-03-21 | |
US13/830,377 US9195497B2 (en) | 2012-03-21 | 2013-03-14 | Microcontroller with context switch |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201351139A TW201351139A (zh) | 2013-12-16 |
TWI574152B true TWI574152B (zh) | 2017-03-11 |
Family
ID=49213440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102109903A TWI574152B (zh) | 2012-03-21 | 2013-03-20 | 具有上下文切換之微控制器 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9195497B2 (zh) |
EP (1) | EP2828740B1 (zh) |
JP (1) | JP6143841B2 (zh) |
KR (1) | KR20140135796A (zh) |
CN (1) | CN104303143B (zh) |
TW (1) | TWI574152B (zh) |
WO (1) | WO2013142450A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10297003B2 (en) * | 2015-09-21 | 2019-05-21 | Qualcomm Incorporated | Efficient saving and restoring of context information for context switches |
CN105868003B (zh) * | 2016-03-25 | 2019-08-13 | 浙江大学 | 一种基于tms320c6747的任务上下文切换优化方法 |
CN117555599B (zh) * | 2024-01-10 | 2024-04-05 | 睿思芯科(成都)科技有限公司 | 加快关键数据访问速度的芯片设计方法、系统及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW589580B (en) * | 2000-01-07 | 2004-06-01 | Motorola Inc | Device and method for performing high-speed low overhead context switch |
US20090144481A1 (en) * | 2007-11-30 | 2009-06-04 | Microchip Technology Incorporated | Enhanced Microprocessor or Microcontroller |
TW201118587A (en) * | 2009-11-16 | 2011-06-01 | Via Tech Inc | Universal serial bus host control method and universal serial bus host controller utilizing the same |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5115506A (en) | 1990-01-05 | 1992-05-19 | Motorola, Inc. | Method and apparatus for preventing recursion jeopardy |
US6134653A (en) * | 1998-04-22 | 2000-10-17 | Transwitch Corp. | RISC processor architecture with high performance context switching in which one context can be loaded by a co-processor while another context is being accessed by an arithmetic logic unit |
GB2402785B (en) * | 2002-11-18 | 2005-12-07 | Advanced Risc Mach Ltd | Processor switching between secure and non-secure modes |
WO2004046925A1 (en) * | 2002-11-18 | 2004-06-03 | Arm Limited | Security mode switching via an exception vector |
US8689215B2 (en) * | 2006-12-19 | 2014-04-01 | Intel Corporation | Structured exception handling for application-managed thread units |
US7996651B2 (en) | 2007-11-30 | 2011-08-09 | Microchip Technology Incorporated | Enhanced microprocessor or microcontroller |
-
2013
- 2013-03-14 US US13/830,377 patent/US9195497B2/en active Active
- 2013-03-19 JP JP2015501841A patent/JP6143841B2/ja active Active
- 2013-03-19 EP EP13713695.8A patent/EP2828740B1/en active Active
- 2013-03-19 KR KR1020147027368A patent/KR20140135796A/ko active IP Right Grant
- 2013-03-19 CN CN201380025205.9A patent/CN104303143B/zh active Active
- 2013-03-19 WO PCT/US2013/032876 patent/WO2013142450A1/en active Application Filing
- 2013-03-20 TW TW102109903A patent/TWI574152B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW589580B (en) * | 2000-01-07 | 2004-06-01 | Motorola Inc | Device and method for performing high-speed low overhead context switch |
US20090144481A1 (en) * | 2007-11-30 | 2009-06-04 | Microchip Technology Incorporated | Enhanced Microprocessor or Microcontroller |
TW201118587A (en) * | 2009-11-16 | 2011-06-01 | Via Tech Inc | Universal serial bus host control method and universal serial bus host controller utilizing the same |
Also Published As
Publication number | Publication date |
---|---|
WO2013142450A1 (en) | 2013-09-26 |
CN104303143B (zh) | 2018-07-24 |
KR20140135796A (ko) | 2014-11-26 |
US20130254476A1 (en) | 2013-09-26 |
TW201351139A (zh) | 2013-12-16 |
JP6143841B2 (ja) | 2017-06-07 |
CN104303143A (zh) | 2015-01-21 |
EP2828740A1 (en) | 2015-01-28 |
JP2015511049A (ja) | 2015-04-13 |
EP2828740B1 (en) | 2024-04-24 |
US9195497B2 (en) | 2015-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170097826A1 (en) | System, Method, and Apparatus for Improving Throughput of Consecutive Transactional Memory Regions | |
JP6143872B2 (ja) | 装置、方法、およびシステム | |
US7590774B2 (en) | Method and system for efficient context swapping | |
US9672037B2 (en) | Arithmetic branch fusion | |
EP3855318B1 (en) | Apparatus and method for configuring sets of interrupts | |
US9317285B2 (en) | Instruction set architecture mode dependent sub-size access of register with associated status indication | |
KR20100101090A (ko) | 개선된 마이크로프로세서 또는 마이크로컨트롤러 | |
US20110082999A1 (en) | Data processing engine with integrated data endianness control mechanism | |
US20120042136A1 (en) | Alignment control | |
TWI483179B (zh) | 微控制器及用於在一微控制器中執行指令之方法 | |
TWI574152B (zh) | 具有上下文切換之微控制器 | |
CN105190551B (zh) | 具有存储器区域交换机制的双引导系统 | |
KR20100087309A (ko) | 개선된 마이크로프로세서 또는 마이크로컨트롤러 | |
US20190190536A1 (en) | Setting values of portions of registers based on bit values | |
JP2000231550A (ja) | マイクロプロセッサ | |
TWI339354B (en) | Microcontroller instruction set | |
US20120159083A1 (en) | Systems and Methods for Processing Memory Transactions | |
EP3323039A1 (en) | A method for enlarging data memory in an existing microprocessor architecture with limited memory addressing | |
US20210132985A1 (en) | Shadow latches in a shadow-latch configured register file for thread storage | |
KR20030068809A (ko) | 에이알엠7 계열 마이크로 컨트롤러에서의 콘텍스트 스위치방법 |