TWI617984B - 雙開機區段切換機制 - Google Patents
雙開機區段切換機制 Download PDFInfo
- Publication number
- TWI617984B TWI617984B TW103109757A TW103109757A TWI617984B TW I617984 B TWI617984 B TW I617984B TW 103109757 A TW103109757 A TW 103109757A TW 103109757 A TW103109757 A TW 103109757A TW I617984 B TWI617984 B TW I617984B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- instruction
- central processing
- processing unit
- opcode
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
- G06F9/441—Multiboot arrangements, i.e. selecting an operating system to be loaded
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本發明揭示一種具有雙開機能力之中央處理單元,其包括一指令記憶體,該指令記憶體進一步包括經組態以個別可程式化之一第一記憶體區域及一第二記憶體區域,其中第一記憶體區域及第二記憶體區域可分別指派至執行指令之一現用記憶體及一非現用記憶體。針對該中央處理單元設定之指令包括允許執行從該一現用記憶體區域至一非現用記憶體區域之一切換之一專用指令,其中藉由在該現用記憶體中執行該專用指令後接著在該現用記憶體中執行一程式流改變指令而實行該切換,於是該非現用記憶體成為新現用記憶體且該現用記憶體成為新非現用記憶體且在該新現用記憶體中繼續執行指令。
Description
此申請案主張2013年3月14日申請之U.S.臨時申請案第61/780,990號之權利,該案之全文以引用的方式併入本文中。
本發明係關於一種雙開機區段切換機制,特定言之一種為一微控制器提供一實時更新之雙開機區段切換機制。
根據各種實施例,提供一機制以允許使用者在不重設主機器件之情況下切換至一新程式碼映像檔。因此,可消除重設一主機器件之需要且可將切換至一新程式碼映像檔之延時降低至幾個CPU週期(例如,當已實行一韌體程式碼更新時)。
根據各種實施例,此適當組態之主機器件可允許一用戶在不暫停應用程式之執行之情況下重新刷新器件且切換至一新程式碼映像檔。舉例而言,若主機器件在諸如一切換模式電源供應器(SMPS)或一馬達控制器之一即時約束應用程式中採用,則此方法可為有益的。此方法亦允許周邊設備在發生切換時繼續運行。馬達控制應用程式及切換模式電源供應器(SMPS)應用程式可尤其得益於在該主機器件之一重新刷新期間之繼續執行及周邊操作。
根據各種實施例,可在一微控制器或處理器內提供一方式以在不重設且對於異常時序具有最小影響之情況下在一器件內切換作為定
期指令流之部分的兩個程式碼映像檔且切換速度儘可能地快。
根據各種實施例,針對一微控制器或處理器之一中央處理單元(CPU)及相關聯機制提供一固有指令(例如,使用助憶BOOTSWP)從而在不需重設該器件之情況下迫使一程式碼映像檔切換。根據一些實施例,該映像檔切換可為暫時的(例如,在一器件重設之後將不選擇新現用映像檔且該器件將回復至其他映像檔)。根據特定實施例,該映像檔切換可為持續的(例如,在一器件重設之後將選擇該新現用映像檔)。
根據各種實施例,一中央處理單元(CPU)可具備雙開機能力。該CPU可包括一指令記憶體,該指令記憶體進一步包括經組態以個別可程式化之一第一記憶體區域及一第二記憶體區域。第一記憶體區域及第二記憶體區域可分別指派至執行指令之一現用記憶體及一非現用記憶體。針對該CPU設定之指令可包括執行從該一現用記憶體區域至一非現用記憶體區域之一切換之一專用指令,其中藉由在該現用記憶體中執行該專用指令後接著在該現用記憶體中執行一程式流改變指令而實行該切換,於是該非現用記憶體成為新現用記憶體且該現用記憶體成為新非現用記憶體且在該新現用記憶體中繼續執行指令。
100‧‧‧系統
101‧‧‧微控制器
102‧‧‧中央處理單元(CPU)
103‧‧‧記憶體
104‧‧‧程式設計器
200‧‧‧區段1
201‧‧‧邏輯頁0
202‧‧‧邏輯頁1
210‧‧‧區段2
211‧‧‧邏輯頁0
212‧‧‧邏輯頁1
220‧‧‧測試區域
230‧‧‧記憶體映射
241‧‧‧實體頁0
242‧‧‧實體頁1
245‧‧‧實體頁0
246‧‧‧實體頁1
250‧‧‧未使用實體頁
260‧‧‧測試頁
270‧‧‧位址轉譯模組
300‧‧‧邏輯區段1
301‧‧‧邏輯頁0
302‧‧‧邏輯頁1
310‧‧‧邏輯區段2
311‧‧‧邏輯頁0
312‧‧‧邏輯頁1
330‧‧‧記憶體映射
341‧‧‧實體頁0
342‧‧‧實體頁1
343‧‧‧實體頁2
344‧‧‧實體頁3
400‧‧‧方法
401‧‧‧步驟
402‧‧‧步驟
403‧‧‧步驟
404‧‧‧步驟
405‧‧‧步驟
406‧‧‧步驟
407‧‧‧步驟
500‧‧‧列表
501‧‧‧指令序列
502‧‧‧指令序列
503‧‧‧指令序列
504‧‧‧指令序列
505‧‧‧指令序列
506‧‧‧標記/目標
圖1根據特定實施例圖解說明一基於微控制器之系統。
圖2根據特定實施例圖解說明一記憶體佈局。
圖3根據特定實施例圖解說明另一記憶體佈局。
圖4根據特定實施例圖解說明執行一記憶體切換之一方法。
圖5根據特定實施例圖解說明用於調用記憶體切換操作之應用程式原始碼。
圖6根據特定實施例描述在一特殊功能暫存器中之一狀態位元。
圖7根據特定實施例描述在一特殊功能暫存器中之一狀態位元。
圖8根據特定實施例描述在一特殊功能暫存器中之一控制/狀態位元。
在應用程式層執行韌體映像檔之一基於軟體之切換很有挑戰性。可在非常具有時效性之應用程式中進行此方法。
特定應用程式(稱為「雙開機」)需從一個程式碼映像檔(現用中)執行,同時更新/重新刷新另一程式碼映像檔(非現用中)。一個組態允許可選擇性地啟動至少兩個分開記憶體區域(區段)。在一個「雙開機」組態中,對非現用區段進行一更新後接著重啟一應用程式,在此期間「雙開機」機制將使先前更新之非現用區段成為新現用區段。接著將從新啟動區段開始程式碼執行。主機器件在檢查一序列號碼(例如,設定於非揮發性記憶體中)之後選擇現用區段。此性質之一重設序列可要求數十毫秒之停機時間,在此期間應用程式不執行或至少不執行全部功能。
存在使用新程式碼重新刷新/更新應用程式同時繼續執行現有應用程式碼(例如,雙開機能力)之一需求。此外,尤其對於非常具有時效性之應用程式而言,存在在沒有與一器件重設相關聯之延遲之情況下切換至更新之程式碼映像檔之一需求。
圖1根據特定實施例圖解說明基於微控制器之系統100。系統100包括微控制器101(其進一步包括中央處理單元(CPU)102及記憶體103)及程式設計器104。系統100可為(例如)一切換模式電源供應器(SMPS)控制器或一馬達控制器。微控制器101可為(例如)在MICROCHIP之dsPIC/PIC24型微控制器系列內之一模組,其具有一處理核心、一或多個暫存器檔案、內建隨機存取記憶體(RAM)、一或多個電源管理模組、整合類比比較器及/或類比至數位轉換器及針對標準輸入/輸出協定(諸如通用串列匯流排及IEEE Std.1149.1(JTAG))之晶片上控制器。
記憶體103可為非揮發性記憶體,諸如快閃記憶體或電可擦除可程式化唯讀記憶體(EEPROM)。程式設計器104可為一外部可附接電腦系統,其提供待儲存於記憶體103中之新指令及/或資料。可經由一串聯連接(諸如一通用串列匯流排(USB)連接)連接程式設計器104。
CPU 102藉由從記憶體103提取指令及/或資料且執行該等指令而執行儲存於記憶體103中之程式。CPU 102可為(例如)一精簡指令集處理器或一複雜指令集處理器。由CPU 102執行之每一指令可包含一運算碼及零或多個運算元。資料及位址可編碼於指令中或可從一或多個暫存器擷取。一指令之結果可儲存於(例如)一暫存器、RAM或記憶體103。
記憶體103可為隨機存取,也就是說可在一單個讀取週期中讀取資料之任何單元。記憶體103可為區塊存取,也就是說對於資料之一位元組之一讀取請求可要求將資料之一區塊(例如,512位元組)內部讀取至一緩衝器中。在一些實施例中,寫入至一空記憶體位置可為立即的(例如,在一單個寫入週期內)。在一些實施例中,寫入至含有資料之一記憶體位置可要求在可進行寫入之前擦除一區塊。
圖2根據特定實施例圖解說明記憶體103之一記憶體佈局。在邏輯上,記憶體103可視為兩個或兩個以上區段200及210及測試區域220。每一區段200或210可包括識別為201、202、211及212之一整數數目之記憶體之鄰接邏輯頁。記憶體映射230圖解說明記憶體103之邏輯頁至實體頁(例如,實體頁241-246)之映射。記憶體映射230可包括未使用實體頁250及測試頁260。微控制器101可進一步包括位址轉譯模組270。
邏輯頁201、202、211及212分別映射至實體頁241、242、245及246中之記憶體且受其支援。
當執行一應用程式時,微控制器101可從現用區段執行指令(且可
讀取資料)。若現用區段為區段200(即,PANEL1),則微控制器101可從邏輯頁201提取一指令,其導致從實體頁241之一記憶體讀取。所提取之指令可為引用邏輯頁202中之一位址之一載入指令。當微控制器101執行載入指令,微控制器101將從邏輯頁202讀取值,其導致從記憶體103之實體頁242之一記憶體讀取。若現用區段為區段210(即,PANEL2),則藉由微控制器101從邏輯頁211之一提取將導致從實體頁245之一讀取。
在特定實施例中,可不使用記憶體103之一部分從而導致一或多個未使用之實體頁250。在特定實施例中,記憶體103之一部分可含有測試指令及/或資料。可藉由映射至實體頁260之邏輯測試區域220識別此測試部分。測試部分可包含用於校準周邊器件、確認系統或組件操作及除錯應用程式碼之常式及/或資料。
在特定實施例中,位址轉譯模組270提供邏輯定址至實體定址之一轉譯。在特定實施例中,位址轉譯模組270可為基於現用區段之一指示符選擇一或多個實體記憶體103庫之一多工器/解多工器。在特定實施例中,位址轉譯模組270可為提供邏輯位址至實體位址轉譯之一轉譯後備緩衝器(TLB)。
圖3根據特定實施例圖解說明記憶體103之一記憶體佈局。在圖3之組態中,邏輯區段300及310如在記憶體映射330中圖解說明映射至記憶體103。邏輯區段300及310可包括識別為301、302、311及312之一整數數目之記憶體之鄰接邏輯頁。記憶體103可包括實體頁341、342、343、344。
記憶體映射330圖解說明邏輯頁之一交錯配置。邏輯頁301映射至第一實體頁(頁341)且邏輯頁302映射至第三實體頁(頁343)。邏輯頁311映射至第二實體頁(頁342)且邏輯頁312映射至第四實體頁(頁344)。因此,在特定實施例中,PANEL1之邏輯頁映射至第一、第
三、等等實體頁,而PANEL2之邏輯頁映射至第二、第四、等等實體頁。
圖4根據特定實施例圖解說明用於實行一記憶體切換之一方法。方法400包括步驟401-407,其等之每一者在下文中更詳細描述。方法400包括實質上連續執行之步驟401、402、404、405、406及407以及平行步驟403。
在步驟401中,一應用程式可載入至區段1中。可藉由微控制器101(例如)從測試區域220執行一初始化常式而實行步驟401。可由程式設計器104實行步驟401。
在步驟402中,微控制器101執行載入至區段1中之應用程式。應用程式可為(例如)從周邊器件讀取輸入且至少部分基於該等輸入判定一馬達控制輸出信號之一馬達控制器程式。當微控制器101從區段1執行應用程式時,可實行步驟403。
在步驟403中,一第二應用程式可載入至區段2中。可藉由微控制器101在一多處理模式中操作而實行步驟403。可由程式設計器104實行步驟403。可在步驟404開始確保在嘗試切換區段之前在區段2中之一完整程式為可用之前完成步驟403。
在步驟404中,微控制器101可執行一或多個指令以啟用區段切換功能性。一或多個指令之此序列可防止一程式因程式化或編譯錯誤所導致之意外切換區段。在特定實施例中,步驟404涉及在一預定時間視窗內將兩個預定值循序寫入至一規定記憶體位置。
在步驟405中,微控制器101可執行含有規定一區段切換操作之一運算碼(即,一OPCODE)之一指令。在步驟405中,微控制器101可更改一狀態暫存器值從而將現用區段改變為一先前非現用區段(例如,在步驟403中載入有第二應用程式之區段2)。在特定實施例中,即使微控制器101隨後重設或關閉,區段2之啟動仍可持續。在特定實
施例中,當發生一隨後重設、電力循環或步驟404及405之執行,區段2之啟動可回復至區段1。在特定實施例中,區段切換操作要求邏輯區段號碼之一運算元從而支援兩個以上邏輯記憶體區段。
在步驟406中,微控制器101可判定步驟405中之區段切換操作是否成功。若是,則微控制器101可繼續執行步驟407。若否,則微控制器101可繼續執行步驟402,藉此返回至在仍為現用之區段(例如,區段1)中之程式。
在特定實施例中,步驟405須緊隨步驟404之執行之後從而防止區段切換操作之意外執行。在特定實施例中,在步驟405與步驟406之間可允許及/或要求一規定數目之指令(或指令週期)。舉例而言,指令可保存當前暫存器狀態及/或恢復一先前暫存器狀態。以此方式,可使用區段切換操作實施允許微控制器101之使用之一背景切換從而允許多處理(例如,虛擬平行處理)。
在特定實施例中,方法400可為可逆以使得步驟401及402在區段2上操作且步驟403及407在區段1上操作。
圖5根據特定實施例圖解說明用於調用記憶體切換操作之應用程式原始碼。列表500包括指令序列501及505,每一者儲存於一不同區段中。指令序列502可實行所需之步驟以啟用區段切換指令。指令序列503可實行區段切換指令。在指令序列503成功執行時,指令序列504可分支至指令序列505之進入點。標記506標示至指令序列505中之進入點。
指令序列502可為經設計以標誌一程式設計器執行一區段切換之意圖之一預定步驟序列。此序列可解鎖一軟體互鎖以確保未錯誤執行區段切換序列。在特定實施例中,執行指令序列502之微控制器101將一第一常數值儲存於暫存器W0中,將第一常數值寫入至一規定位址,將一第二常數值儲存於暫存器W0中,且接著將第二常數值寫入
至規定位址。指令序列503包括BOOTSWP指令。
指令序列503(例如,在特定實施例中之BOOTSWP指令)之執行可經受一軟體互鎖。若成功執行,則微控制器101可設定一狀態旗標(例如,NVMCON.SOFTSWAP)。在實行必要狀態改變以啟動一先前非現用邏輯區段之前,微控制器101亦可從當前現用區段提取指令序列504。區段切換操作一旦完成,微控制器101即可執行指令序列504以將程式控制傳送至指令序列505中之目標506。指令序列504可為一單個字程式流改變指令(PFC)。
若未成功執行,則微控制器可將BOOTSWP指令處理為一兩個週期之功能NOP(即,增量程式計數器兩次但不改變其他程式可存取狀態)。在此情況下,微控制器101可繼續執行指令序列501。
在一成功映像檔切換後,PFC目標將處於新現用區段中。PFC目標須存在於兩個程式碼映像檔中(以防映像檔切換失敗)。程式碼使用SOFTSWAP判定映像檔切換是否成功。當僅發生一軟體切換時,由於未發生典型重設序列因此不再新器件組態。
可取決於應用程式要求在此一BOOTSWP指令(即,在原始或新程式碼映像檔中)之前或之後改變持續的開機序列值。
圖6根據特定實施例描述在一特殊功能暫存器中之一狀態位元。此狀態位元(標記為SOFTSWAP)可為非揮發性記憶體控制暫存器(標記為NVMCON)之位元11。若已使用BOOTSWP指令成功切換記憶體區段,則SOFTSWAP可為可讀作一邏輯「1」之一可讀位元。否則SOFTSWAP可為一邏輯「0」。在特定實施例中,微控制器101可經組態以僅用一個邏輯區段操作(例如,一單開機模式)。
圖7根據特定實施例描述在一特殊功能暫存器中之一狀態位元。此狀態位元(標記為P2ACTIV)可為NVMCON暫存器之位元10。若設定為邏輯「0」,則P2ACTIV可指示邏輯區段1為現用中。若設定為邏輯
「1」,則P2ACTIV可指示邏輯區段2為現用中。
圖8根據特定實施例描述在一特殊功能暫存器中之一控制/狀態位元。此控制/狀態位元(標記為SWAPEN)可為NVMCOM暫存器之位元09。在一些實施例中,SWAPEN可為一控制位元且可要求在待設定之一預定時間視窗內之循序寫入。在特定實施例中,SWAPEN位元須在微控制器101之三個週期中寫入一邏輯「1」兩次從而避免不經意間設定此位元。
在特定實施例中,SWAPEN可為一雙功能控制/狀態位元。在一個操作模式中,SWAPEN位元可為一控制位元直至其成功設定(例如,在第二位元設定操作之後)。一旦成功設定,SWAPEN位元可成為指示是否在互鎖視窗內執行BOOTSWP指令之一狀態位元。若BOOTSWP操作成功,則可清除SWAPEN位元(且可雙態觸變P2ACTIV位元)。若BOOTSWP操作未成功,則SWAPEN位元可保持設定(且可不雙態觸變P2ACTIV位元)。在一些實施例中,應用程式須在切換邏輯區段之任何隨後嘗試之前清除SWAPEN位元。
若微控制器101經組態以按一單開機模式操作,SOFTSWAP及P2ACTIVE可讀作一邏輯「0」。當微控制器101經組態以按一雙開機模式操作時,其用作用於協調雙開機軟切換操作之BOOTSWP指令之互鎖序列之部分。為幫助降低不經意間設定SWAPEN位元之機會,根據一些實施例,其須寫入一邏輯「1」兩次。根據一進一步實施例,第二寫入須發生於第一寫入完成之2個週期內從而成功設定位元。位元將讀作一邏輯「0」直至該點。未符合寫入時序將重設位元週期計數定序器,亦將清除該位元。
根據特定實施例,可使用一互鎖控制暫存器(NVMKEY)啟用區段切換功能性。在此等實施例中,僅當滿足互鎖序列時才可啟用BOOTSWP指令。解鎖序列可與用於允許啟用程式化及/或擦除快閃記
憶體之解鎖序列相同。解鎖序列可包含快速連續設定NVMCON.WR兩次。在一些實施例中,此軟體互鎖要求應用程式碼將0x55其次0xAA寫入至NVMKEY暫存器,其中第二寫入須發生於第一寫入完成之後之2個週期從而成功啟用BOOTSWAP。成功符合寫入時序可打開一1指令週期視窗,在此期間可執行BOOTSWP指令。未符合寫入時序可重設NVMKEY定序器,迫使重啟解鎖序列。NVMKEY暫存器可始終讀作0。
NVMCON.SOFTSWAP位元可為指示在互鎖視窗內執行BOOTSWP指令之一狀態位元。若操作成功,則可設定NVMCON.SOFTSWAP位元(且可雙態觸變P2ACTIV位元)。若操作未成功,則NVMCON.SOFTSWAP位元可保持其先前值(且可不雙態觸變P2ACTIV位元)。可藉由寫入一邏輯「0」清除NVMCON.SOFTSWAP狀態位元,但不可由應用程式碼直接設定該狀態位元。在任何隨後雙開機軟切換操作嘗試之前,應用程式碼可需要清除NVMCON.SOFTSWAP位元以使得狀態不反映一之前成功之SOFTSWAP操作。
在此等實施例中,下列序列可成功解鎖BOOTSWP互鎖:MOV.b #55,W0 MOV.b WREG,NVMKEY MOV.b #AA,W0 MOV.b WREG,NVMKEY BOOTSWP --可在此處執行開機切換指令。
根據一些實施例,微控制器101將支援具有可在成功完成一互鎖序列之後執行之助憶BOOTSWP之一指令。當成功執行BOOTSWP時,微控制器101可:˙在PS記憶體映射內切換現用區段與非現用區段,
˙雙態觸變NVMCON.P2ACTIV位元,及˙設定指示一軟切換已成功發生之NVMCON.SOFTSWAP狀態位元。
根據一些實施例,BOOTSWP指令之後須為指向在(新)現用區段中之程式碼之開始之流控制指令。此流控制指令可具有一清除CPU管線之一副作用。區段切換時序將使得區段將在目標位址預提取開始時在PS內切換。
根據一些實施例,一軟切換將不重新載入組態暫存器,因此原始現用區段的組態暫存器將在區段切換完成之後持續。在一區段切換期間重新載入組態暫存器可進一步延遲執行。
參考在隨附圖式中圖解說明及在下列描述中詳述之例示性且因此非限制實施例更全面解釋本發明及其之各種特徵及優勢。可省略已知程式化技術、電腦軟體、硬體、作業平台及協定之描述以不免不必要地模糊本發明細節。然而應理解,在指示較佳實施例時,僅以圖解之方式而非限制之方式給出詳細描述及特定實施例。熟習此項技術者將從本發明明白在基本發明概念之精神及/或範疇內之各種取代、修改、添加及/或重新配置。
如在本文中所使用,術語「包括」、「包含」、「具有」及其等之任何其他變體旨在涵蓋一非窮盡性包含。舉例而言,包括元件之一列表之一程序、產品、物件或裝置不必要僅限於該等元件而可包含未明確列出或此等程序、產品、物件或裝置固有之其他元件。此外,除非明確相反陳述,「或」指代一包容性或而非一窮盡性或。舉例而言,由以下任何一者滿足一條件A或B:A為真(或存在)且B為假(或不存在)、A為假(或不存在)且B為真(或存在)及A與B皆為真(或存在)。
另外,本文中給出之任何實例或圖解不應以任何方式視為對於其等利用之任何術語之限制或表達其等利用之任何術語之限定。代替
性地,此等實例或圖解將視為相對於一個特定實施例而描述且僅為繪示性的。一般技術者將瞭解此等實例或圖解利用之任何術語涵蓋可在(或不在)本說明書中或別處之其他實施例以及其等之實施方案及調整且所有此等實施例旨在包含於該術語或該等術語之範疇內。指定此等非限制實例及圖解之措辭包含(但不限於):「舉例而言」、「比如」、「例如」、「在一項實施例中」及諸如此類。
Claims (32)
- 一種具有雙開機能力(dual boot capabilities)之中央處理單元,其包括:一指令記憶體,其包括經組態以個別可程式化之一第一記憶體區域及一第二記憶體區域,其中該等第一記憶體區域及第二記憶體區域可分別指派至執行指令之一現用記憶體(active memory)及一非現用記憶體(inactive memory);其中用於該中央處理單元之一指令集包括一運算碼(OPCODE),該運算碼之唯一目的係致使從該一現用記憶體區域(active memory area)至一非現用記憶體區域(inactive memory area)之一切換(swap),其中藉由在該現用記憶體中執行該運算碼後立即接著在該現用記憶體中執行一程式流改變指令(program flow change instruction)而實行該切換,於是該非現用記憶體成為新現用記憶體且該現用記憶體成為新非現用記憶體且在該新現用記憶體中繼續指令之執行。
- 如請求項1之中央處理單元,其中該程式流改變指令係一分支指令(branch instruction)或一跳越指令(jump instruction)。
- 如請求項1之中央處理單元,其進一步包括一控制暫存器(control register),該控制暫存器包括至少一個狀態位元,當已成功執行該運算碼時設定該至少一個位元。
- 如請求項3之中央處理單元,其中當不能成功實行一切換時該運算碼充當一無操作指令(no operation instruction),其中該無操作指令推進(advances)一程式計數器以跳過(skip)該程式流改變指令。
- 如請求項1之中央處理單元,其進一步包括一控制暫存器,該控 制暫存器包括至少一個控制位元,其須經設定以允許從該現用記憶體至該非現用記憶體之一切換。
- 如請求項5之中央處理單元,其中藉由在一預定時間視窗(predetermined time window)內將該至少一個控制位元設定兩次而設定該控制位元。
- 如請求項6之中央處理單元,其中該時間視窗係2個指令週期。
- 如請求項1之中央處理單元,其中當從該現用記憶體執行一程式時該非現用記憶體經組態為可程式化的。
- 如請求項1之中央處理單元,其中在初始化期間,該中央處理單元經組態以至少部分基於從非揮發性記憶體讀取之一區段選擇值(panel select value)將該第一記憶體區域指派至該現用記憶體。
- 如請求項9之中央處理單元,其中在非揮發性記憶體中之該區段選擇值因該運算碼之成功執行而修改。
- 如請求項9之中央處理單元,其中可藉由該運算碼之成功執行後之一軟體指令修改在非揮發性記憶體中之該區段選擇值。
- 如請求項1之中央處理單元,其進一步包括一控制暫存器,該控制暫存器經組態以啟用(enable)或停用(disable)該運算碼。
- 如請求項12之中央處理單元,其中為了允許該運算碼之執行,該控制暫存器必須在一預定時間視窗內以一第一值接著一第二值寫入,其中該第二值係該第一值之倒數(inverse)之一數位值。
- 如請求項13之中央處理單元,其中該時間視窗係2個指令週期。
- 如請求項3之中央處理單元,其進一步包括僅在該控制暫存器中之該至少一個狀態位元已經清除之後使該運算碼為可執行之步驟。
- 如請求項15之中央處理單元,其中在該控制暫存器中之該至少 一個狀態位元不能藉由一指令而設定。
- 一種操作具有雙開機能力之一中央處理單元之方法,其包括:提供一指令記憶體,其具有經組態為個別可程式化之一第一記憶體區域及一第二記憶體區域;指派該第一記憶體區域至一現用記憶體,指令係自該現用記憶體執行,且指派該第二記憶體區域至一非現用記憶體,其中該中央處理單元包括一指令集,其包含一運算碼,當執行時該運算碼之唯一目的係致使自該第一記憶體區域至該第二記憶體區域之一切換,其中該運算碼可經組態為可執行或不可執行;組態該運算碼為可執行;在該現用記憶體中執行該運算碼後接著在該現用記憶體中執行一程式流改變指令,由於該等指令之執行,於是該非現用記憶體成為新現用記憶體且該現用記憶體成為新非現用記憶體且在該新現用記憶體中繼續指令之執行。
- 如請求項17之方法,其中該程式流改變指令係一分支指令或一跳越指令。
- 如請求項17之方法,其進一步包括當已成功執行該運算碼時自動設定一控制暫存器中之至少一個狀態位元之步驟。
- 如請求項19之方法,其進一步包括僅在該控制暫存器中之該至少一個狀態位元已經清除之後使該運算碼為可執行之步驟。
- 如請求項20之方法,其中在該控制暫存器中之該至少一個狀態位元不能藉由一指令而設定。
- 如請求項20之方法,其中當未啟用該運算碼時,該運算碼充當一無操作指令,其中該無操作指令推進(advances)超前一程式計數器以跳過(skip)該程式流改變指令。
- 如請求項17之方法,其進一步包括在執行該運算碼之前在一控 制暫存器中設定一控制位元之步驟,其中設定該控制位元啟用(enable)該運算碼之執行。
- 如請求項23之方法,其進一步包括在執行該運算碼之前,在一預定時間視窗內設定該控制位元至少兩次,於是啟用(enable)該運算碼之執行。
- 如請求項24之方法,其中該預定時間視窗係2個指令週期長。
- 如請求項17之方法,其進一步包括當從該現用記憶體執行一程式時程式化該非現用記憶體之步驟。
- 如請求項17之方法,其中在初始化期間,該中央處理單元至少部分基於從非揮發性記憶體讀取之一區段選擇值將該第一記憶體區域指派至該現用記憶體。
- 如請求項27之方法,其中在非揮發性記憶體中之該區段選擇值因該運算碼之成功執行而修改。
- 如請求項27之方法,其中可藉由該運算碼之成功執行後之一軟體指令修改在非揮發性記憶體中之該區段選擇值。
- 如請求項17之方法,其進一步包括在一預定時間視窗內寫入一第一值至一控制暫存器且接著寫入一第二值至該控制暫存器以啟用該運算碼之步驟,其中該第二值係該第一值之倒數(inverse)之一數位值。
- 如請求項30之方法,其中該時間視窗係2個指令週期。
- 一種具有雙開機能力之中央處理單元,其包括:一指令記憶體,其包括經組態以個別可程式化之一第一記憶體區域及一第二記憶體區域,其中該等第一記憶體區域及第二記憶體區域可分別指派至執行指令之一現用記憶體及一非現用記憶體;其中用於該中央處理單元之一指令集包括具有一運算碼之一 指令,該運算碼之唯一目的係執行從一現用記憶體區域至一非現用記憶體區域之一切換,其中該運算碼可經組態為可執行或不可執行,其中藉由組態該運算碼為可執行且隨後在該現用記憶體中執行該運算碼後立即接著在該現用記憶體中執行一程式流改變指令而實行該切換,於是該非現用記憶體成為新現用記憶體且該現用記憶體成為新非現用記憶體且在該新現用記憶體中繼續指令之執行。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361780990P | 2013-03-14 | 2013-03-14 | |
US61/780,990 | 2013-03-14 | ||
US14/204,208 | 2014-03-11 | ||
US14/204,208 US9858083B2 (en) | 2013-03-14 | 2014-03-11 | Dual boot panel SWAP mechanism |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201447760A TW201447760A (zh) | 2014-12-16 |
TWI617984B true TWI617984B (zh) | 2018-03-11 |
Family
ID=51534018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103109757A TWI617984B (zh) | 2013-03-14 | 2014-03-14 | 雙開機區段切換機制 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9858083B2 (zh) |
EP (1) | EP2972823B1 (zh) |
KR (1) | KR20150129757A (zh) |
CN (1) | CN105190551B (zh) |
TW (1) | TWI617984B (zh) |
WO (1) | WO2014159849A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014201625A1 (en) * | 2013-06-18 | 2014-12-24 | Thomson Licensing | Dual-bank telecommunication apparatus and method of upgrading firmware in dual-bank telecommunication apparatus |
US10140109B2 (en) * | 2014-02-25 | 2018-11-27 | Ford Global Technologies, Llc | Silent in-vehicle software updates |
US9928094B2 (en) | 2014-11-25 | 2018-03-27 | Microsoft Technology Licensing, Llc | Hardware accelerated virtual context switching |
CN106354524B (zh) * | 2015-07-17 | 2021-01-01 | 恩智浦美国有限公司 | 实时更新固件的系统和方法 |
US11513950B2 (en) | 2020-09-08 | 2022-11-29 | Western Digital Technologies, Inc. | Wear leveling in non-volatile memory |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200941344A (en) * | 2008-03-21 | 2009-10-01 | Asustek Comp Inc | Computer system with dual boot-program area and method of booting the same |
US20100223452A1 (en) * | 2009-02-27 | 2010-09-02 | Keicy Chung | Central processing unit capable of multi-boot using desjoint memory spaces |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6324411B1 (en) * | 1997-05-20 | 2001-11-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Background software loading in cellular telecommunication systems |
US7257814B1 (en) * | 1998-12-16 | 2007-08-14 | Mips Technologies, Inc. | Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors |
EP1193586A2 (en) * | 2000-09-27 | 2002-04-03 | John H. Reed, Jr. | Security system for data processing applications |
US20020103990A1 (en) * | 2001-02-01 | 2002-08-01 | Hanan Potash | Programmed load precession machine |
US20020103847A1 (en) * | 2001-02-01 | 2002-08-01 | Hanan Potash | Efficient mechanism for inter-thread communication within a multi-threaded computer system |
US7856632B2 (en) * | 2004-01-29 | 2010-12-21 | Klingman Edwin E | iMEM ASCII architecture for executing system operators and processing data operators |
US7823020B2 (en) * | 2006-08-30 | 2010-10-26 | International Business Machines Corporation | System and method for applying a destructive firmware update in a non-destructive manner |
JP4888556B2 (ja) * | 2007-06-20 | 2012-02-29 | 富士通株式会社 | ユニット間設定同期装置 |
CN101169728A (zh) * | 2007-11-22 | 2008-04-30 | 中兴通讯股份有限公司 | 双引导启动装置及方法 |
US20120137108A1 (en) * | 2008-02-19 | 2012-05-31 | Koch Iii Kenneth Elmon | Systems and methods integrating boolean processing and memory |
US8554745B2 (en) * | 2009-04-27 | 2013-10-08 | Netapp, Inc. | Nearstore compression of data in a storage system |
US20120297177A1 (en) * | 2010-11-15 | 2012-11-22 | Ghosh Anup K | Hardware Assisted Operating System Switch |
CN102567042B (zh) * | 2010-12-14 | 2015-04-15 | 国际商业机器公司 | 利用引导块重定位来管理多个软件镜像的方法和系统 |
KR101754203B1 (ko) * | 2011-01-19 | 2017-07-07 | 삼성전자주식회사 | 파워 게이팅 기반의 재구성가능 프로세서, 이를 위한 컴파일 장치 및 방법 |
CN103339604B (zh) * | 2011-01-31 | 2016-10-26 | 株式会社索思未来 | 程序生成装置、程序生成方法、处理器装置以及多处理器系统 |
JP5655677B2 (ja) | 2011-04-04 | 2015-01-21 | 富士通株式会社 | ハイパーバイザ置き換え方法および情報処理装置 |
KR101844222B1 (ko) * | 2011-05-27 | 2018-04-02 | 엘지전자 주식회사 | 이동 단말기 및 이것의 모드 제어 방법 |
KR101801577B1 (ko) * | 2011-06-28 | 2017-11-27 | 엘지전자 주식회사 | 이동 단말기 및 이것의 디스플레이 제어 방법 |
US8849647B2 (en) * | 2011-10-19 | 2014-09-30 | Lsi Corporation | Dual-firmware for next generation emulation |
KR20150128680A (ko) * | 2013-03-12 | 2015-11-18 | 마이크로칩 테크놀로지 인코포레이티드 | 프로그램 가능한 cpu 레지스터 하드웨어 컨텍스트 스왑 메커니즘 |
-
2014
- 2014-03-11 US US14/204,208 patent/US9858083B2/en active Active
- 2014-03-13 WO PCT/US2014/025329 patent/WO2014159849A1/en active Application Filing
- 2014-03-13 KR KR1020157027088A patent/KR20150129757A/ko active IP Right Grant
- 2014-03-13 CN CN201480014047.1A patent/CN105190551B/zh active Active
- 2014-03-13 EP EP14719941.8A patent/EP2972823B1/en active Active
- 2014-03-14 TW TW103109757A patent/TWI617984B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200941344A (en) * | 2008-03-21 | 2009-10-01 | Asustek Comp Inc | Computer system with dual boot-program area and method of booting the same |
US20100223452A1 (en) * | 2009-02-27 | 2010-09-02 | Keicy Chung | Central processing unit capable of multi-boot using desjoint memory spaces |
Also Published As
Publication number | Publication date |
---|---|
US20140281465A1 (en) | 2014-09-18 |
US9858083B2 (en) | 2018-01-02 |
EP2972823B1 (en) | 2021-04-28 |
EP2972823A1 (en) | 2016-01-20 |
WO2014159849A1 (en) | 2014-10-02 |
CN105190551B (zh) | 2020-06-26 |
CN105190551A (zh) | 2015-12-23 |
TW201447760A (zh) | 2014-12-16 |
KR20150129757A (ko) | 2015-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101738212B1 (ko) | 명령어 에뮬레이션 프로세서, 방법, 및 시스템 | |
US10671391B2 (en) | Modeless instruction execution with 64/32-bit addressing | |
TWI617984B (zh) | 雙開機區段切換機制 | |
TWI515660B (zh) | 韌體變量更新方法 | |
TWI459294B (zh) | Bios程式的更新方法與其電腦系統 | |
US9733950B2 (en) | Boot sequencing for multi boot devices | |
KR101793318B1 (ko) | 명령어 에뮬레이션 프로세서, 방법 및 시스템 | |
EP3289442B1 (en) | Central processing unit with enhanced instruction set | |
TWI524271B (zh) | 模式相依的頻寬負載至較寬暫存器處理器,方法和系統 | |
US20090113196A1 (en) | Method and systems for advanced reprogrammable boot codes and in-application programming of embedded microprocessor systems | |
KR20150130353A (ko) | 핫스왑가능 프로그램 메모리의 운영체제 커널 업데이트 동안의 전환 시간 최소화 | |
JP2007206933A (ja) | 情報処理装置、情報処理装置におけるブートローダ生成方法およびプログラム転送方法 | |
CN112912958A (zh) | 使用内置自测控制器测试只读存储器 | |
US20120017035A1 (en) | Runtime reprogramming of a processor code space memory area | |
US20210132985A1 (en) | Shadow latches in a shadow-latch configured register file for thread storage | |
TW200417926A (en) | Selective interrupt suppression |