TW201706856A - 具有增強指令集之中央處理單元 - Google Patents
具有增強指令集之中央處理單元 Download PDFInfo
- Publication number
- TW201706856A TW201706856A TW105113680A TW105113680A TW201706856A TW 201706856 A TW201706856 A TW 201706856A TW 105113680 A TW105113680 A TW 105113680A TW 105113680 A TW105113680 A TW 105113680A TW 201706856 A TW201706856 A TW 201706856A
- Authority
- TW
- Taiwan
- Prior art keywords
- volatile memory
- integrated circuit
- instruction
- segment
- protection
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
- Advance Control (AREA)
Abstract
本發明提供一種積體電路,該積體電路具有:一主控處理核心,其具有與一非揮發性記憶體耦合之一中央處理單元;及一從屬處理核心,其獨立於該主控處理核心而操作且具有與揮發性程式記憶體耦合之一中央處理單元,其中該主控中央處理單元經組態以將程式指令傳送至該從屬處理核心之該非揮發性記憶體中,且其中該等程式指令之一傳送係藉由在該主控處理核心之該中央處理單元內執行一專屬指令而執行。
Description
本申請案主張共同擁有的2015年4月30日申請之美國臨時專利申請案第62/154,927號及2015年7月22日申請之美國臨時專利申請案第62/195,692號之優先權,該等案出於所有目的而以引用方式併入本文中。
本發明係關於中央處理單元(CPU),特定言之係關於具有一數位信號處理單元(DSP)之微控制器。本發明進一步係關於多處理器積體電路裝置,特定言之係關於具有多個處理器之微控制器。
嵌入式系統通常包括一中央處理單元(CPU)、記憶體及複數個周邊裝置以形成一單晶片系統或一單晶片微控制器。更先進系統包括一個以上CPU。此外,一CPU可經增強以具有數位信號處理能力,諸如由本申請案之受讓人製造之dsPIC核心。圖1展示此一處理核心之一方塊圖。如可見,此核心具有典型數位信號處理能力,諸如一X資料RAM及一單獨Y資料RAM及一DSP引擎,該DSP引擎與該等RAM及一暫存器檔案耦合,使得該等RAM兩者可被並行存取。展示此處理核心之其他典型元件。另外,此習知DSP微控制器在圖1之底部處展示透過系統匯流排與該核心耦合之某些周邊裝置。圖2展示該核心之暫
存器,諸如該暫存器檔案之工作暫存器及該DSP引擎之累加器以及其他典型DSP暫存器。圖3展示圖1之方塊圖之DPS引擎之一更詳細方塊圖。如圖1至圖3中所展示之處理核心係包括數位信號處理能力之一單處理核心。該處理核心可在多核心裝置中用作核心之一者。
存在對此一處理核心之一改良指令集的需要,特定言之在該處理核心用於一多核心裝置中時,諸如,舉例而言在其核心之至少一者中包括信號處理能力之一雙核心微控制器。
多處理器核心微控制器可被設計成具有完全分離的核心且各核心可依一不同系統時脈操作。因此,為提供在兩個或更多個核心之間通信之能力,一特定通信介面係必需的。特定言之,需要一種用來在一多處理器裝置上之處理器記憶體之間移動程式碼保護資料之構件。解決方案必須完全可組態,且在矽使用方面係有效的。
在一多處理器微控制器之一主從組態中,需要對一雙核心從屬處理器程式載入/驗證方法的支援,同時在將程式載入至從屬設備中之後維持程式碼保護。
根據一實施例,一種積體電路可包括:一主控處理核心,其具有與一非揮發性記憶體耦合之一中央處理單元;及一從屬處理核心,其獨立於該主控處理核心而操作且具有與揮發性程式記憶體耦合之一中央處理單元;其中該主控中央處理單元經組態以將程式指令傳送至該從屬處理核心之該非揮發性記憶體中;且其中該等程式指令之一傳送係藉由在該主控處理核心之該中央處理單元內執行一專屬指令而執行。
根據一進一步實施例,該專屬指令具有定義一源位址之一第一運算元及定義一目的地位址之一第二運算元,其中該目的地位址係在該指令之執行之後自動遞增。根據一進一步實施例,該專屬指令導致
一資訊字組傳送至一緩衝器中,且其中該資訊係從該緩衝器寫入至該揮發性程式記憶體中。根據一進一步實施例,該指令導致該非揮發性記憶體輸出該資訊,由此該資訊被該緩衝器捕捉。根據一進一步實施例,該資訊係一24位元字組。根據一進一步實施例,該積體電路包括複數個從屬處理核心且該專屬指令具有定義一目標從屬處理單元之一第三運算元。根據一進一步實施例,儲存於該第一運算元中之該源位址可視需要在該指令之執行之後自動遞增。根據一進一步實施例,該源位址係與該主控處理核心相關聯之一周邊裝置之一特殊功能暫存器。根據一進一步實施例,該周邊裝置係一串列通信周邊設備。根據一進一步實施例,該周邊裝置係一並列輸入埠。根據一進一步實施例,該主控處理核心進一步可操作以執行驗證儲存於該非揮發性程式記憶體中之一資訊之一進一步指令。根據一進一步實施例,該進一步指令導致一第一資訊傳送至該緩衝器中,且其中比較該緩衝器之內容與儲存於該揮發性記憶體中之一第二資訊。根據一進一步實施例,該進一步指令包括應用於該非揮發性記憶體以輸出該第一資訊之一第一位址及應用於該揮發性記憶體以輸出該第二資訊之一第二位址。根據一進一步實施例,該進一步指令進一步驗證與該第一資訊及該第二資訊相關聯之錯誤校正碼(ECC)。根據一進一步實施例,可從該非揮發性記憶體讀取與該非揮發性記憶體相關聯之ECC且單獨產生與該源相關聯之ECC。根據一進一步實施例,該第一處理核心之該非揮發性記憶體包括由一保護方案定義之一程式碼保護,且其中該從屬處理核心之該揮發性程式記憶體具有取決於該保護方案之一設定之一程式碼保護。根據一進一步實施例,該保護方案定義該非揮發性記憶體之複數個段(segment),且其中在該保護方案中,各段具有一保護設定。根據一進一步實施例,該非揮發性記憶體之各保護設定具有一讀取操作之一設定及一程式化或擦除操作之一設定。根據一進一步實施例,該保
護方案提供預定義數目個安全性等級,其中各安全性等級定義各段之一保護設定。根據一進一步實施例,該揮發性程式記憶體之該程式碼保護相同於該非揮發性記憶體之該等段之一者之該程式碼保護。根據一進一步實施例,一暫存器儲存該非揮發性記憶體之哪段經選擇以提供該揮發性記憶體之該程式碼保護設定。根據一進一步實施例,該非揮發性記憶體之一讀取操作之一設定適用於該揮發性記憶體之讀取操作及寫入操作。根據一進一步實施例,在一段被保護時,取決於一保護設定,從一個段執行之一指令無法對一不同段進行操作。根據一進一步實施例,在一段被保護時,取決於一保護設定,從一個段執行之一讀取指令僅可對一不同段之一預定義區域進行操作。根據一進一步實施例,該預定義區域儲存中斷向量。根據一進一步實施例,該非揮發性記憶體包括一啟動段及一通用段。根據一進一步實施例,該非揮發性記憶體進一步包括一測試段。
根據另一實施例,一種提供用於一多核心積體電路處理裝置(其包括:一第一處理核心,其具有與一非揮發性記憶體耦合之一第一中央處理單元;及一第二處理核心,其獨立於該第一處理核心而操作且具有與揮發性程式記憶體耦合之一第二中央處理單元)中之一處理核心之韌體之方法可包括:在該第一中央處理單元內執行一專屬指令,該專屬指令導致資料寫入至該從屬處理核心之該非揮發性記憶體中。
根據該方法之一進一步實施例,該專屬指令具有定義一源位址之一第一運算元及定義一目的地位址之一第二運算元,其中該目的地位址係在該指令之執行之後自動遞增。根據該方法之一進一步實施例,在該專屬指令之執行時,將一資訊字組從該非揮發性記憶體傳送至一緩衝器中,且將該資訊從該緩衝器寫入至該揮發性程式記憶體中。根據該方法之一進一步實施例,該方法可進一步包括在一迴圈中重複該專屬指令。根據該方法之一進一步實施例,該積體電路包括複
數個從屬處理核心且該專屬指令具有定義一目標從屬處理單元之一第三運算元。根據該方法之一進一步實施例,儲存於該第一運算元中之該源位址可視需要在該指令之執行之後自動遞增。根據該方法之一進一步實施例,該方法可進一步包括由該主控處理核心執行驗證儲存於該非揮發性程式記憶體中之一資訊之一進一步指令。根據該方法之一進一步實施例,該進一步指令導致一第一資訊傳送至該緩衝器中,且其中比較該緩衝器之內容與儲存於該揮發性記憶體中之一第二資訊。根據該方法之一進一步實施例,該進一步指令包括應用於該非揮發性記憶體以輸出該第一資訊之一第一位址及應用於該揮發性記憶體以輸出該第二資訊之一第二位址。根據該方法之一進一步實施例,該進一步指令進一步驗證與該第一資訊及該第二資訊相關聯之錯誤校正碼(ECC)。根據該方法之一進一步實施例,可從該非揮發性記憶體讀取與該非揮發性記憶體相關聯之ECC且單獨產生與該源相關聯之ECC。根據該方法之一進一步實施例,該第一處理核心之該非揮發性記憶體包括由一保護方案定義之一程式碼保護,且其中該從屬處理單元之該揮發性程式記憶體具有取決於該保護方案之一設定之一程式碼保護。根據該方法之一進一步實施例,該保護方案定義該非揮發性記憶體之複數個段,且其中在該保護方案中,各段具有一保護設定。根據該方法之一進一步實施例,該非揮發性記憶體之各保護設定具有一讀取操作之一設定及一程式化或擦除操作之一設定。根據該方法之一進一步實施例,該保護方案提供預定義數目個安全性等級,其中各安全性等級定義各段之一保護設定。根據該方法之一進一步實施例,該揮發性程式記憶體之該程式碼保護相同於該非揮發性記憶體之該等段之一者之該程式碼保護。根據該方法之一進一步實施例,一暫存器儲存該非揮發性記憶體之哪段經選擇以提供該揮發性記憶體之該程式碼保護設定。根據該方法之一進一步實施例,該非揮發性記憶體之一讀取操作
之一設定適用於該揮發性記憶體之讀取操作及寫入操作。根據該方法之一進一步實施例,在一段被保護時,取決於一保護設定,從一個段執行之一指令無法對一不同段進行操作。根據該方法之一進一步實施例,在一段被保護時,取決於一保護設定,從一個段執行之一讀取指令僅可對一不同段之一預定義區域進行操作。根據該方法之一進一步實施例,該預定義區域儲存中斷向量。根據該方法之一進一步實施例,該非揮發性記憶體包括一啟動段及一通用段。根據該方法之一進一步實施例,該非揮發性記憶體進一步包括一測試段。
400‧‧‧雙核心或多核心處理裝置
410‧‧‧主控微控制器/核心/主控設備/主控單元/主控裝置
412‧‧‧主控中央處理單元(CPU)/處理器/主控核心
414‧‧‧隨機存取記憶體
416‧‧‧快閃記憶體/主控快閃記憶體
418‧‧‧緩衝器/比較器單元/PRAM存取單元
420‧‧‧從屬單元/核心/從屬裝置
422‧‧‧從屬中央處理單元/處理器/從屬單元/從屬核心
424‧‧‧RAM
426‧‧‧專屬程式隨機存取記憶體(PRAM)/程式記憶體/從屬PRAM
428‧‧‧PRAM包裝器單元/PRAM存取單元
428a‧‧‧多工器
428b‧‧‧多工器
428c‧‧‧存取邏輯/存取控制及資料驗證邏輯
430‧‧‧專屬匯流排或通信介面
440‧‧‧從屬單元
450‧‧‧從屬單元
700‧‧‧程式碼保護方案
圖1展示其中一單CPU具有數位處理能力之一微控制器之一方塊圖;圖2展示根據圖1之CPU之各種暫存器;圖3展示根據圖1之一CPU之一DSP引擎之特定部件;圖4展示根據一實施例之一雙核心微控制器;圖5展示根據各項實施例之一雙核心或多核心微控制器;圖6展示可如何根據一些實施例存取程式RAM之細節;圖7展示快閃記憶體之分段;及圖8至圖11展示具有各個安全性等級之表。
如圖4及圖5中所展示,一雙核心或多核心處理裝置400可被設計成具有:一主控微控制器410,其具有一主控中央處理單元(CPU)412;及一或多個從屬單元420,各具有一從屬中央處理單元422,其中各從屬中央處理單元422之一核心設計可大致相同於或類似於該主控CPU 412之核心設計。然而,根據其他實施例,從屬CPU 422可不同於主控CPU 412。該主控微控制器具有它自己的一組周邊裝置,如圖4中所展示。一從屬單元420可具有或可不具有它自身的一組周邊裝
置且因此,自行形成一微控制器。因此,各主控裝置及從屬裝置形成或多或少完全獨立的處理裝置且可與一專屬匯流排或通信介面430通信。圖4及圖5展示具有一主控微控制器410及一單個從屬微控制器420之此一設計。提供允許兩個核心410與420之間的通信之一通信介面430。各處理器412、422可被設計成如所展示之一哈佛(Harvard)架構。然而,根據各項實施例之原理可容易轉化成一范紐曼架構。該主控單元包括例如用作程式記憶體之快閃記憶體416及用作資料記憶體之隨機存取記憶體414,各記憶體與主控核心412耦合。
如圖4及圖5中所展示,從屬單元420可被設計成不具有快閃記憶體。取而代之,提供一專屬程式隨機存取記憶體426。歸因於此記憶體為揮發性之事實,該記憶體將根據各項實施例透過主控設備410而載入。此設計選擇具有避免由快閃記憶體技術提供之一瓶頸之優點。快閃記憶體通常慢於RAM 424。因此,將不存在讀取延遲且從屬設備可依一較高執行速度操作,其可非常有利於某些高速應用,舉例而言,諸如SMPS應用。如上述,一個以上從屬單元420可根據各項實施例實施。若兩個核心係相同的,則主控核心412可被設計成包含無法在從屬單元422中實施或在該從屬單元中不起作用之額外指令。此等額外指令允許資料從快閃記憶體416或從一外部源傳送至從屬裝置420之PRAM 426中。例如,根據一實施例,多個核心可實施在一單晶片裝置內且各核心可具有一指派的組態暫存器,其中此一暫存器之位元之一者可定義各自單元是一主控設備或一從屬設備。可存在允許僅將該等核心之一者設定為一主控設備之邏輯。一旦已設定此位元,則可允許執行額外指令。在其他單元(從屬設備)中,可不執行此等指令,例如,該等指令可被解譯為非法運算碼。
用來供主控單元410存取PRAM 426之控制邏輯可位於如圖4中所展示具有緩衝器/比較器單元418之主控單元中。替代地,一類似單元
可配置在如圖5中所展示具有PRAM包裝器(wrapper)單元428之從屬單元420內。任一單元被設計成將PRAM之存取唯一地授予主控單元410或從屬單元420。其他實施例可將該邏輯之一些部分放置於該主控核心內且將其他部分放置於該從屬核心中或將該邏輯配置於兩個單元外。類似地,通信介面430可在任一單元內或完全在兩個單元外。可由如圖5中用虛線所指示的通信介面430提供對PRAM存取單元418或428之額外控制。圖5亦用虛線展示額外從屬單元440及450。所有單元可透過一匯流排及各從屬單元中之相關聯包裝器單元428而連接。因此,實施例不限於一雙核心實施方案。熟習此項技術者將認知,其他實施方案係可能的。
圖6展示從屬側處之一例示性介面之一方塊圖。在此例示性實施例中,主從介面形成通信介面430。兩個多工器428a、428b分別授予對程式RAM 426之資料及位址匯流排的存取。展示連接至主控單元410、從屬核心422及PRAM 426之額外存取邏輯428c。在此實施例中,通信介面430控制該等多工器以賦予對主控單元410的存取,同時從屬處理器保持於一重設狀態。一旦PRAM 426已載入從屬韌體,多工器428a、428b將隨即經控制以將存取回授至從屬單元420且CPU 422將從重設中釋放。存取控制及資料驗證邏輯428c可分配可來自主控單元410或從屬單元420之讀取及寫入及啟用信號。如圖6中所展示之介面可在主控單元410與PRAM 426之間提供一唯寫路徑。在此一實施方案中,存取控制及資料驗證邏輯428c可經組態以執行經寫入資料之一驗證。例如,根據一項實施例,該存取控制及資料驗證邏輯在與主控單元410耦合時可依兩種不同模式進行操作。在一第一模式中,該存取控制及資料驗證邏輯提供用於將從屬韌體寫入至PRAM 426中之邏輯信號,其中資料位元組係依任何合適方式例如連續地寫入至PRAM 426中。在一第二模式中,單元428c可提供一驗證功能。取代
寫入經傳輸資料,單元428c比較由主控單元410提供之資料與PRAM 426之內容以驗證該資料已被正確地程式化。關於該PRAM之主/從介面之其他實施例係可能的。
因此,根據各項實施例,可提供用於一多核心裝置(特定言之一雙核心微控制器)之一從屬處理器載入/驗證方法。此提供相對於習知多核心裝置之一改良效率及效能,尤其針對在核心內使用一DSP引擎之嚴密控制迴圈應用(例如SMPS應用)。然而,一處理核心無須設計成包含一DSP引擎。根據各項實施例之原理適用於僅包含一習知CPU之一處理核心。此外,一相關聯C編譯器之效率及效能將藉由此一改良指令集而改良。
根據各項實施例,一新的雙(多)核心架構包含用來載入及驗證從屬核心程式RAM(PRAM)之專屬CPU指令。隨著特定言之對基於DSP之應用之效能需求增大,改良CPU處理量(特定言之DSP引擎處理量)之需要變得明顯:例如,存在對增大的速度的需要。根據一項實施例,一雙核心裝置以針對將快閃記憶體用作其程式記憶體之主控單元410的100MHz(例如,依0.75MIP/MHz)且針對將PRAM用作其程式記憶體之從屬單元420的120MHz(例如,依0.9MIP/MHz)為目標。如上文所提及,對從屬單元420中之程式記憶體426之PRAM選擇允許此單元更有效地且依一更高速度運行。此外,根據一些實施例,亦可需要減小DSP之硬體上下文切換之延時。最後,根據其他實施例,可能需要ISA改良來改良DSP演算法效率。根據一些實施例,編譯器效率之增加可運用位元欄位指令及具有一更靈活暫存器利用率之一更快除法器而實現。
此等改良之一些可藉由在既有設計最小變更之情況下新增新指令及能力而實現。其他改良可藉由使用相同的反覆非復原演算法使除法運算加速而實現。以下改良可獨立實施。因此,各項實施例可使用
此等改良之全部或一子集。
概括而言,CPU改良可包括:提供一些或所有以下DSP改良之雙核心支援指令:載入及驗證從屬核心程式RAM(PRAM);經擴展以包含DSP累加器、狀態及DSP引擎組態之硬體上下文切換;資料極限(界限檢驗)指令;累加器32位元資料載入/儲存指令;及DSP正規化指令。可實現之編譯器效率增加係:位元欄位指令及除法指令改良。
根據各項實施例,具有DSP功能之一雙核心微控制器可包括其中新增PRAM載入指令(LDSLV)及驗證指令(VFSLV)以促進從屬程式初始化之一從屬核心。當與使用習知程式空間可見性(PSV)定址或TBLWTx指令比較時,此等指令被設計為作為移動來自PRAM之一記憶體映射影像之資料之一更快替代物。該等指令僅在CPU被例示為如上文所提及之一主控設備(CPU_IS_MASTER=1)時啟用。在被停用時,該等指令將被視為非法運算碼。
使用獨特指令來載入/驗證PRAM之另一優點係其藉由無須將PRAM重新映射至主控位址空間中且保持既有PSV CPU指令流(且僅使從屬設備窺探經過的位址及資料)而簡化設計及驗證。根據一項實施例,一既有MOV指令可用一控制旗標增強以啟用一從屬PRAM捕捉功能。然而,更有利的是,產生獨特指令(類似於MOV運算碼但係亦確證至從屬設備之一信號以告知該從屬設備將PRAM切換至主控時脈域中並載入PRAM的指令),此係因為其允許就如何初始化PRAM為一使用者增加更佳清晰度(及一點安全性,因為此等op不可能會被意外執行)。
根據一些實施例之LDSLV指令不同於其他資料移動指令,因為它可在2個循環中將一整個指令字組(I字組)從PS(快閃記憶體)移動至PS(保存PRAM)。各讀取將從快閃記憶體提取一24位元字組且接著實現該字組至目標從屬PRAM的寫入。一習知dsPIC/PIC24 CPU架構不
具有用來從快閃記憶體移動大於16位元之資料值之構件,因此資料不移動經過主控CPU而是被從屬設備捕捉(在可用於快閃記憶體資料匯流排上時)。因此,此等新指令的獨特之處在於它們能夠移動寬於執行它們之處理器之自然資料寬度之資料(作為一單個實體)。
從屬設備將使用經捕捉資料以將該資料寫入至指定的PRAM位址(LDSLV),或比較該資料與指定的PRAM位址(VFSLV)之內容。LDSLVNFSLV指令依一相同方式操作,但VFSLV確證信號cpu_slave_pram_verify_en以指示將對照PRAM內容比較從主控快閃記憶體讀取之資料(而非載入至PRAM中)除外。
此等指令可允許將資料從一預定義源(包含主控裝置410之快閃記憶體416)傳送至程式RAM(PRAM)426中。為此目的,主控裝置410可提供專屬指令以傳送並驗證經傳送資料。例如:
- 一載入從屬指令LDSLV,其將一資料字組從主控快閃記憶體影像416移動至一從屬PRAM包裝器或緩衝器418/428中,其中該資料字組連同一目標位址一起被捕捉。此一指令將定義:一間接源位址,其例如具有或不具有後遞增功能;一間接目的地位址,其具有後遞增功能;及一文字,其將定義複數個從屬設備之哪個係目的地。然而,在一雙核心(單從屬設備)實施方案中,亦可省略文字。在源上具有後遞增功能之選項允許LDSLV/VFSLV在執行之後自動遞增至下一源位址,以為後續LDSLV/VFSLV反覆作準備。此在從一REPEAT迴圈內執行時尤其有用。在不使用後遞增選項時,相同指令可用來將一相同資料區塊寫入於目的地PRAM 426中(亦稱為區塊填充(blockfill))。替代地,源位址可指向一主控周邊裝置之一n位元(例如,24位元)特殊功能暫存器,例如快閃控制器程式化資料暫存器。根據其他實施例,源亦可能係一並列輸入埠、一串列接收緩衝器等。一些實施例可能僅能夠使用映射至程式位址空間中之一n位元暫存器(例如,一24位元暫存
器)。因此,藉由將外部資料引導至該24位元特殊功能暫存器,可將該資料間接寫入至從屬裝置420之PRAM 426中。然而,該後遞增功能可能係用來將程式資料從主控快閃記憶體416中傳送出來至從屬PRAM 426中之主要功能。在一項實施例中,主控快閃記憶體416及從屬PRAM 426可被組織成相同且各資料字組讀取可藉由一適當邏輯428直接傳送至PRAM 426中。然而,在一些實施例中,PRAM 426可依不同於快閃記憶體416之一方式進行組織。例如,快閃記憶體416可依24位元字組進行組織,而PRAM 426可依48位元字組進行組織。在此一實施方案中,可提供一緩衝器418/428,其儲存來自快閃記憶體416之一第一讀取且將該經儲存資料連同一後續讀取一起寫入至PRAM 426中。根據一些實施例,在此,限制可能不是源快閃記憶體資料之寬度,而是LDSLV/VFSLV操作僅可對一單個n位元值(例如,一24位元值)起作用之事實。因此,即使源快閃記憶體係48位元寬,在此一實施例中,仍僅可移動一24位元值。其他實施例可不限於此一值。根據各種記憶體之特定設計選擇,其他傳送機構可能適用。此外,錯誤校正編碼(ECC)可在快閃記憶體416及PRAM 426中實施。根據一實施例,關於錯誤校正,即使快閃記憶體及PRAM兩者具有相同於ECC之字組寬度,仍不複製ECC同位資料。而是,在載入該ECC同位資料時,其總是在PRAM包裝器內重新產生。根據一些實施例,此可歸因於重新使用既有PSV模型之限制,該既有PSV模型僅可利用核心中之既有24位元資料路徑。再者,其他實施例可不面臨此一限制。
- 一驗證從屬設備指令VFSLV,其從主控快閃記憶體影像讀取(例如)一24位元資料字組並比較資料與PRAM 426之內容。因此,一比較器可經提供以執行儲存於該快閃記憶體中及該PRAM中之資料之實際比較。雖然根據一些實施例,該快閃記憶體可針對ECC功能設計成此額外資訊係不可讀的,但來自RAM之ECC資料可係可讀的。比較
機構(例如,一緩衝器及相關聯比較器)可裝配有用來從經讀取快閃記憶體資料產生ECC資料之邏輯。因此,根據一些實施例,此指令可對主控資料重新計算ECC同位並與經儲存PRAM ECC作比較用於完整驗證,且在一不良比較之情況下亦可標記一(「固著」)驗證錯誤(在MSI巨集中)。
- LDSLV/VFSLV指令可經設計以在一REPEAT迴圈內執行;在一些實施例中,該等指令可使用既有資料管線以使傳送從(至多)3循環(存取時間)快閃記憶體加速至1字組/循環。一第一執行可需要一個以上循環(例如5個循環),以便填裝該資料管線且處置資料對準。然而,任何後續傳送可在一單個循環中完成。最後一個指令或包裝可需要例如3個循環以展開該資料管線。取決於待傳送至PRAM中之程式之大小,重複迴圈內之單循環傳送使傳送顯著地加速。其他實施例通常可在一單循環內執行各指令。
- 在根據一些實施例依從屬設備雙面板模式操作時:LDSLV/VFSLV指令僅可在從屬設備停用時可存取作用中PRAM;且LDSLV/VFSLV指令可總是可存取非作用中PRAM。雙面板模式適用於將PRAM分成兩個單獨區塊之一些裝置。在此模式中,PRAM控制使得從屬設備可在「非作用中」面板被主控設備(重新)載入的同時,繼續從「作用中」面板執行(可假定具有一新PRAM影像,其已在一裝置更新期間重新程式化至快閃記憶體中)。一旦完成,主控設備隨即發信號給從屬設備:其可切換面板(即時使用專屬指令,例如BOOTSWP指令)。此係一非常專業化的「線上更新」(Live Update)方案,其可在一些實施例中實施且被設計成允許從屬設備在一軟體更新經由快閃記憶體重新傳遞至該裝置中的同時保持執行(例如,一SMPS內控制迴圈)。依100KHz或更大頻率運行此等迴圈之應用不希望與一全裝置重設相關聯之停機時間(毫秒),因此希望能夠載入新PRAM程式碼,隨
後在無需一重設的情況下瞬時調換至該PRAM程式碼。針對此等實施例之韌體可需要一智慧型交遞,此係因為字面上BOOTSWP所做的僅係切換PRAM面板。在該裝置正常地(在某個未來時間)重設時,該新PRAM程式碼將正常地載入至「作用中」面板中。
程式碼實例:
實例1:LDSLV:從快閃記憶體進行PRAM載入
實例1中所展示之程式碼片段(code snippet)示範可如何在應用初始化期間使用LDSLV指令以載入從屬設備#0之PRAM。
實例2:VFSLV:從快閃記憶體進行PRAM驗證
實例2中所展示之程式碼片段示範可如何在應用初始化期間使用VFSLV指令以驗證從屬設備#0之PRAM內容。
實例3:LDSLV:從快閃記憶體進行PRAM區塊填充
實例3中所展示之程式碼片段示範可如何使用LDSLV指令以對從屬設備#0之PRAM進行區塊填充(即,用一恆定值載入)。在此情況下,該常數係源自將暫存器間接位址用於LDSLV(無後遞增)之快閃記憶體。
實例4:LDSLV:從NVMDATAL進行PRAM載入
替代地,區塊填充運算碼值可係源自NVM控制器24位元NVMDATAL暫存器之一變數。該NVMDATAL暫存器位於PS內且在該NVM控制器未經啟用以用於快閃記憶體程式化/擦除(即,NVMCON.WREN=0)時變為一24位元r/w暫存器。每當快閃記憶體程式化/擦除被啟用(即,NVMCON.WREN=1)時,該暫存器皆係唯寫的。任何指令運算碼可載入至NVMDATAL中且隨後載入至PRAM中。VFSLV指令可依相同方式用來確認LDSLV操作之成功。此方法亦可用來用源自裝置外部之資料載入PRAM之全部或部分,從而移除如實例4中所展示首先將該資料程式化至主控快閃記憶體中之需要。
根據一些實施例,額外指令可在具有DSP引擎之一CPU中實施。此等額外指令未必需要上文所提及之載入/驗證指令之實施。此外,該等指令無需一多核心設計,但亦可在包括一CPU及整合的DSP引擎之一單核心裝置中實施。
因此,根據一些實施例,一第一類型之指令可係一16位元資料界限檢驗及限制功能可新增強制資料限制(FLIM/FLIM.v)指令以使16位元資料界限檢驗及限制操作加速。此一指令比較一目標帶正負號值
與保存於各自W暫存器中之一上限及下限。若該目標值大於上限或小於下限,則用該目標帶正負號值載入超限暫存器。因此,可用用戶可選擇上限及下限定義一飽和函數。此一指令可在兩個版本中實施:
FLIM:對一CPU之工作暫存器之任意者執行上文所提及之功能且設定狀態位元以指示結果
FLIM.v:設定狀態位元以指示結果;將超過極限之帶正負號值保存至可用於抗飽和(anti-windup)演算法之Wn中。因此,此指令執行相同於FLIM之功能,但亦將過衝(或下衝)值儲存於一指明的暫存器中,如以下實例5之程式碼片段中所展示。
實例5:
一第二額外指令係經新增以使基於DSP累加器之界限檢驗及限制操作加速之一累加器最大及最小指令(MAXAB/MINAB):此等指令比較目標累加器中之一帶正負號值與保存於另一累加器中之一上限(MAXAB)或下限(MINAB)。若極限累加器值大於上限(MAXAB)或小於下限(MINAB),則將該極限累加器複製至該目標累加器中。再者,此等指令可在兩個實施方案中實施:
MAXAB/MINAB:執行如上所述之功能且設定狀態位元以指示
結果
MAXAB.v/MINAB.v:執行相同於上文之功能且設定狀態位元以指示結果。此外,此等指令將超過極限之帶正負號值保存至Wn或記憶體(可用於抗飽和演算法)中,其類似於FLIM.v指令但用40位元累計器值進行操作。
實例6:
在執行兩種類型之指令時,該等指令可被設計成隨後如上述片段中所展示般執行。此等指令自動設定指示已達到一最大或最小極限之各自旗標。根據一項實施例,該最小極限指令可被設計成在未達到極限的情況下,如同一無操作指令般執行,藉此不影響狀態暫存器之旗標。因此,如上文所展示,分支指令僅需執行一次。若該最大極限指令觸發一旗標,則該最小極限指令將不重設該旗標,此係因為該最
小極限指令將如同一nop指令般執行。以下分支指令將正確地執行。此功能可僅需在MINAB(.v)指令之前執行MAXAB(.v)指令。
可實施亦無需一雙核心或多核心設計之進一步指令。根據一些實施例,一32位元載入/儲存累加器指令(LAC.d/SAC.d)可經新增以使中間結果之移動加速,其中解析度不會損失:既有載入/儲存累加器(LAC/SAC)指令移動16位元資料;習知dsPIC核心中不存在用於移動1.31累加器資料的直接構件。根據各項實施例,經擴展以移動32位元資料之指令可包括:LAC.d:將32位元值從記憶體讀取,(視需要)移位,接著正負號擴展至累加器A或B中
SAC.d:將累加器A或B之LS 32位元(視需要)移位,接著儲存至記憶體中
根據一些實施例,此等可被實施為單指令字組,其等可在2個循環中執行。
根據其他實施例,一累加器正規化(NORM)指令可經新增以使既有正規化序列加速(使用FBCL指令)。既有CPU ISA透過使用多個指令(包含尋找第一位元清除剩餘(FBCL))支援累加器資料正規化:6指令、5循環操作(至多僅16位元移位)。
一些實施例可實施僅使用1指令字組且在1個循環中執行之一NORM指令。該指令使目標累加器在任一方向上自動正規化達至多16位元。其可針對>16位元的正規化而級聯:接著可新增來自各反覆之指數;此導致3指令、3循環操作然而,一NORM指令之其他實施方案可能能夠在一單反覆中使整個累加器正規化。
根據一些實施例,位元欄位指令(BFINS/BFEXT)經新增以改良編
譯器效率。編譯碼常常需要將多個位元插入一目標字組內或擷取一目標字組內的多個位元:位元欄位偏移及寬度係不變恆定值
BFINS:將一位元欄位從一CPU W暫存器或從一文字值寫入至一目標字組中
BFEXT:從一目標字組讀取一位元欄位並將該位元欄位載入至CPU W暫存器中
所有位元欄位指令係2個字組、2循環操作:在不具有位元欄位之情況下,整個操作需要約7個字組、7個循環來完成;在具有位元欄位之情況下,整個操作需要約4個字組、4個循環來完成。
根據一些實施例,一除法改良提供一可中斷、非復原除法指令套組(相同於一習知dsPIC):執行時間現對於所有除法指令而言係7個循環(P33E:19個循環)(包含REPEAT指令之1個循環)且與使用原始除法REPEAT計數之既有應用程式碼完全回朔相容。
此外,根據一些實施例,一替代除法指令集可經提供以改良編譯器暫存器分配效率:既有(32/16位元)除法指令:被除數依Wm+1:Wm、除數依Wn及餘數:商依W1:W0
在一替代除法指令集中:被除數依Wm+1:Wm、除數依Wn及餘數:商依Wm+1:Wm;其中保留W1:W0。
概括而言,可(特定言之)對包括一CPU及一DSP引擎之一dsPIC核心提供以下額外指令。僅第一指令LDSLV及VFSLV經具體設計以用於多核心裝置,所有其他指令可視需要依任何組實施:LDSLV,VFSLV:載入及驗證從屬PRAM
FLIM{.v}:帶正負號16位元資料值界限檢驗及限制
MAXAB{.v},MINAB{.v}:累加器1.31資料值界限檢驗及限制
LAC.d,SAC.d:累加器32位元載入及儲存
NORM:累加器正規化
BFIN,BFEXT:位元欄位插入及擷取
DIVx2:保留W1:W0之替代除法指令集
根據如圖7中所展示之進一步實施例,可提供針對一雙(多)核心處理器之一程式碼保護方案。此保護方案特定言之對一雙核心微處理器中之從屬處理器有利。根據其他實施例,此概念亦可適用於一單核心處理器或微控制器。圖7展示一例示性程式碼保護方案700。快閃記憶體可被分成若干段,各段具有它自己關於其他段之存取之規則。例如,僅可在該裝置或一熔斷機構之程式化期間組態之組態暫存器可經提供以設定存取保護方案。圖7展示快閃記憶體被劃分成一使用者快閃記憶體分割區及一測試快閃記憶體分割區。然而,其他實施例可僅提供一單個分割區或甚至更多分割區。該使用者快閃記憶體分割區被分段為一啟動段及一通用段。此外,可提供中斷向量表IVT及AIVT之更小段,該等段可被包含於該啟動段中或可具有取決於當前設定之保護等級之一單獨保護。圖7展示不同位置處之一中斷向量表IVT及一替代中斷向量表AIVT。然而,其他實施例可將此兩個表整合至可位於該啟動段BS前方或位於任何其他合適位置處之一個段VS中。最後,可提供一組態段,其包括僅可在該裝置例如藉由整合的電路內程式功能而程式化時寫入之各種裝置組態暫存器。根據一各自實施方案,該等段之配置可能不同。該保護方案允許各種不同設定,其中可不同地保護各段。特定言之,可根據一特定設定限制從一個段至另一段之存取。此外,可根據一安全性設定限制至一段中之向量化。
若根據一些實施例實施,則測試位址空間含有快閃記憶體之一些特殊區段,該等區段皆在程式空間之上(最高位址)半部中,該程式空間可例如係一24位元程式空間。在此一實施例中,組態段(通常一單區段或更小區段)駐存於使用者快閃記憶體位址空間(該24位元程式空間之下半部)內:
- 一個測試區段經保留以供工廠使用(即,僅可在私人測試模式中寫入且依其他方式總是受保護)且含有裝置ID資訊、裝置校準資料之「熔斷(fuse)」值等。此區段通常亦含有客戶可唯一寫入(無法擦除)之「客戶OTP」資料之一單列資料。
- 在如上文所述之雙啟動(雙面板)裝置中,另一測試區段經保留以用於啟動(操作)模式熔斷值。除非使用者擦除整個裝置(晶片擦除),否則此區段受保護。
- 一或多個測試區段經保留以在裝置測試期間使用,且隨後由開發工具用來保存Debug Exec。此等區段可在公共測試模式(如同排錯模式)中寫入。
- 組態區段含有用來選擇使用者選項之所有使用者可程式化「熔斷」。其具有(使用者定義)基於選定程式碼保護等級之寫入權限。
所有「熔斷」資料由快閃控制器作為裝置重設序列之一部分被自動讀取並載入至特殊裝置組態暫存器中。
如上文所提及,各段可具有其自身用來防止來自另一段之讀取/寫入存取(後文稱為「外部」存取)之存取規則。此外,特定言之,可在一高安全性設定中限制至一段中之向量化。一表可取決於執行哪種類型之操作而定義各段之設定,其中不同操作可具有不同安全性設定,如將在圖10中更詳細展示。該安全性可被單獨分成讀取及寫入/擦除保護,其中例如一寫入保護位元可用來單獨設定該寫入保護。該實施方案可根據各項實施例而變化。圖8展示具有針對啟動段之三個不同保護等級之一實施例。圖10展示具有針對通用段之三個不同保護等級之一實施例。類似表可用於其他段。各保護等級提供針對從段外部對不同段之一讀取存取之單獨保護。另外,各等級可設定寫入保護是否被設定。在圖8中針對該啟動段所展示之實施例及圖10中針對該通用段所展示之實施例中,一第一等級不提供通常適用於所有經存取
段之讀取保護。若一寫入保護依此模式係作用中的,則該寫入保護將應用於所有段,該等段接著無法從各自段「外部」程式化或擦除。
一第二等級被展示為標準等級。圖8展示針對該啟動段之保護。在此設定中,該啟動段無法從「外部」讀取或寫入且取決於寫入保護設定,無法由該啟動段內執行之動作寫入。圖10展示針對該通用段之設定。在此,該啟動段以及該通用段可執行該通用段內之讀取操作。若未設定寫入保護位元,則僅允許寫入至該通用段。來自測試段內之任何操作將不允許對該通用段之讀取或寫入存取。
第三等級被展示為高保護等級。在此設定中,對於該啟動段,除標準設定保護以外,亦可限制至該啟動段中之向量化。因此,此額外保護可防止向量表之任何修改。然而,對於該啟動段,該保護可相同於該標準設定。
圖10展示該通用段之高安全性設定,禁止來自外部之任何存取。換言之,該通用段僅可從該通用段內存取。甚至可藉由設定各自保護位元來禁止來自該通用段GS內之一寫入存取。
圖11更詳細展示根據另一實施例之具有一更詳細表之一實施例,其具有應用模式中的安全性操作。該等操作被列於最左行下方,且在對應列中展示對GS、BS、CS及VS之對應影響。定義各種操作。第一行(至段中之PC重新計數)係關於至另一段中之一程式計數器重新計數(rollover)。第二行(至段之PFC)係關於任何類型之程式流變更,諸如一跳越或分支指令之執行及其對各個段之效應。下一行(來自IVT或AIVT之向量)係關於至一特定段中之向量化。下一行(表讀取/PSV)係關於對一段之PSV或表讀取指令存取。下一行(頁擦除)係關於將影響一各自段之一頁擦除功能。下一行(列程式)係關於一記憶體列之程式化。在以下列中展示其他動作。因此,不同保護設定可適用於不同類型之動作。某些動作(諸如讀取操作及寫入操作)可在一個段內執行但
影響其他段。根據各項實施例之保護方案允許選擇性地保護此等動作。諸如由一中斷導致之一些動作本身可能並非來自一特定段,且因此圖11中之表無法區分從中執行該等動作之段。圖11中之表展示藉由在各自表單元中展示一「OK」而允許動作或藉由展示一「No」或「0’s」而禁止動作,其中後者指示操作將產生一「0」讀取。關於圖11之一些實例係:
-從段GS執行一TBLRD/PSV將允許CPU查看來自段GS之資料而不管段GS安全性等級為何,但若段BS之安全性被設定為「無」,則將僅允許CPU查看來自段BS之資料。段CS如段VS般係總是可讀的。
- 若段GS之寫入保護被啟用及/或段GS之安全性係「高」,則嘗試以段GS為目標之使用在段BS中執行之程式碼之一頁擦除將失效。如下文所論述,應注意,段CS具有稱為「增強」之一額外安全性等級。
如圖11中所展示,可根據不同設定保護各種不同動作,其中可單獨保護讀取動作及寫入動作。然而,其他實施方案無法區分讀取與寫入。另外,圖11展示對於組態段CS,可實施一額外安全性等級,其可允許一單獨的中間保護等級。
根據一些實施例,從屬PRAM 426可例如藉由如上文所提及之組態暫存器之一熔斷電路分配給啟動段(BS)或通用段(GS)位址空間。根據另一實施例,該從屬PRAM可僅繼承主控段GS安全性。
因此,從屬PRAM 426將呈現指派給快閃記憶體416之對應主控快閃記憶體段之安全性等級。LDSLV/VFSLV指令執行現經實施使得其對從中執行該指令且各自PRAM段被指派至其之各自快閃記憶體執行段係敏感的。因此,在執行此一指令時,應用相關聯程式碼保護安全性等級。因此,LDSLV/VFSLV在PRAM內被視為一讀取功能。程式化或頁擦除功能及其相關聯安全性規則僅適用於快閃記憶體。因此,
在使用在PRAM中執行一讀取或寫入之LDSLV/VFSLV指令時,針對快閃記憶體416之BS/GS讀取的已定義規則亦將適用於從屬PRAM存取,使得:LDSLV/VFSLV將在從主控設備之BS內執行的情況下工作,且從屬PRAM被指派給:(1)BS(而不管段安全性等級為何);(2)GS,且GS不處於「高」安全性等級。
LDSLV/VFSLV將在從主控設備之BS內執行的情況下工作且從屬PRAM被指派給:(1)GS(而不管段安全性等級為何);(2)BS,且BS處於「無」安全性等級。
若不滿足前文所提及之條件,則LDSLV/VFSLV執行將不具有效應。再者,根據其他實施例,其他條件可適用。上述條件僅係實例。假設將滿足快閃記憶體存取程式碼保護規則(針對源資料讀取)。
圖9展示類似於圖8中所展示之啟動段之一擴展碼保護方案。再者,類似表可用於其他段。若PRAM 426被指派給主控快閃記憶體416之啟動段,則因此可藉由將主控BS設定為任何安全性等級(即,除「無」以外之一等級)而保護該啟動段不受段GS中之不可信程式碼影響。相反地,若該PRAM被指派給該主控設備之段GS,則亦可藉由將主控GS設定為「高」安全性而保護該段GS不受BS中之不可信程式碼影響。
400‧‧‧雙核心或多核心處理裝置
410‧‧‧主控微控制器/核心/主控設備/主控單元/主控裝置
412‧‧‧主控中央處理單元(CPU)/處理器/主控核心
414‧‧‧隨機存取記憶體
416‧‧‧快閃記憶體/主控快閃記憶體
418‧‧‧緩衝器/比較器單元/PRAM存取單元
420‧‧‧從屬單元/核心/從屬裝置
422‧‧‧從屬中央處理單元/處理器/從屬單元/從屬核心
426‧‧‧專屬程式隨機存取記憶體(PRAM)/程式記憶體/從屬PRAM
430‧‧‧專屬匯流排或通信介面
Claims (50)
- 一種積體電路,其包括:一主控處理核心,其具有與一非揮發性記憶體耦合之一中央處理單元;一從屬處理核心,其獨立於該主控處理核心而操作且具有與揮發性程式記憶體耦合之一中央處理單元;其中該主控中央處理單元經組態以將程式指令傳送至該從屬處理核心之該非揮發性記憶體中;且其中該等程式指令之一傳送係藉由在該主控處理核心之該中央處理單元內執行一專屬指令而執行。
- 如請求項1之積體電路,其中該專屬指令具有定義一源位址之一第一運算元及定義一目的地位址之一第二運算元,其中該目的地位址係在該指令之執行之後自動遞增。
- 如請求項1之積體電路,其中該專屬指令導致一資訊字組傳送至一緩衝器中,且其中該資訊係從該緩衝器寫入至該揮發性程式記憶體中。
- 如請求項3之積體電路,其中該指令導致該非揮發性記憶體輸出該資訊,由此由該資訊被該緩衝器捕捉。
- 如請求項3之積體電路,其中該資訊係一24位元字組。
- 如請求項2之積體電路,其中該積體電路包括複數個從屬處理核心且該專屬指令具有定義一目標從屬處理單元之一第三運算元。
- 如請求項2之積體電路,其中儲存於該第一運算元中之該源位址可視需要在該指令之執行之後自動遞增。
- 如請求項2之積體電路,其中該源位址係與該主控處理核心相關 聯之一周邊裝置之一特殊功能暫存器。
- 如請求項8之積體電路,其中該周邊裝置係一串列通信周邊設備。
- 如請求項8之積體電路,其中該周邊裝置係一並列輸入埠。
- 如請求項3之積體電路,其中該主控處理核心進一步可操作以執行驗證儲存於該非揮發性程式記憶體中之一資訊之一進一步指令。
- 如請求項11之積體電路,其中該進一步指令導致一第一資訊傳送至該緩衝器中,且其中比較該緩衝器之內容與儲存於該揮發性記憶體中之一第二資訊。
- 如請求項12之積體電路,其中該進一步指令包括應用於該非揮發性記憶體以輸出該第一資訊之一第一位址及應用於該揮發性記憶體以輸出該第二資訊之一第二位址。
- 如請求項12之積體電路,其中該進一步指令進一步驗證與該第一資訊及該第二資訊相關聯之錯誤校正碼(ECC)。
- 如請求項14之積體電路,其中可從該非揮發性記憶體讀取與該非揮發性記憶體相關聯之該ECC且單獨產生與該源相關聯之該ECC。
- 如請求項1之積體電路,其中該第一處理核心之該非揮發性記憶體包括由一保護方案定義之一程式碼保護,且其中該從屬處理單元之該揮發性程式記憶體具有取決於該保護方案之一設定之一程式碼保護。
- 如請求項16之積體電路,其中該保護方案定義該非揮發性記憶體之複數個段,且其中在該保護方案中,各段具有一保護設定。
- 如請求項17之積體電路,其中該非揮發性記憶體之各保護設定 具有一讀取操作之一設定及一程式化或擦除操作之一設定。
- 如請求項17之積體電路,其中該保護方案提供預定義數目個安全性等級,其中各安全性等級定義各段之一保護設定。
- 如請求項19之積體電路,其中該揮發性程式記憶體之該程式碼保護相同於該非揮發性記憶體之該等段之一者之該程式碼保護。
- 如請求項20之積體電路,其中一暫存器儲存該非揮發性記憶體之哪段經選擇以提供該揮發性記憶體之該程式碼保護設定。
- 如請求項18之積體電路,其中該非揮發性記憶體之一讀取操作之一設定適用於該揮發性記憶體之讀取操作及寫入操作。
- 如請求項17之積體電路,其中在一段被保護時,取決於一保護設定,從一個段執行之一指令無法對一不同段進行操作。
- 如請求項17之積體電路,其中在一段被保護時,取決於一保護設定,從一個段執行之一讀取指令僅可對一不同段之一預定義區域進行操作。
- 如請求項24之積體電路,其中該預定義區域儲存中斷向量。
- 如請求項17之積體電路,其中該非揮發性記憶體包括一啟動段及一通用段。
- 如請求項26之積體電路,其中該非揮發性記憶體進一步包括一測試段。
- 一種提供用於一多核心積體電路處理裝置中之一處理核心之韌體之方法,該多核心積體電路處理裝置包括:一第一處理核心,其具有與一非揮發性記憶體耦合之一第一中央處理單元;及一第二處理核心,其獨立於該第一處理核心而操作且具有與揮發性程式記憶體耦合之一第二中央處理單元,該方法包括:在該第一中央處理單元內執行一專屬指令,該專屬指令導致 資料寫入至該從屬處理核心之該非揮發性記憶體中。
- 如請求項28之方法,其中該專屬指令具有定義一源位址之一第一運算元及定義一目的地位址之一第二運算元,其中該目的地位址係在該指令之執行之後自動遞增。
- 如請求項28之方法,其中在該專屬指令之執行時,將一資訊字組從該非揮發性記憶體傳送至一緩衝器中,且將該資訊從該緩衝器寫入至該揮發性程式記憶體中。
- 如請求項30之方法,其進一步包括在一迴圈中重複該專屬指令。
- 如請求項29之方法,其中該積體電路包括複數個從屬處理核心且該專屬指令具有定義一目標從屬處理單元之一第三運算元。
- 如請求項29之方法,其中儲存於該第一運算元中之該源位址可視需要在該指令之執行之後自動遞增。
- 如請求項28之方法,其進一步包括由該主控處理核心執行驗證儲存於該非揮發性程式記憶體中之一資訊之一進一步指令。
- 如請求項34之方法,其中該進一步指令導致一第一資訊傳送至該緩衝器中,且其中比較該緩衝器之內容與儲存於該揮發性記憶體中之一第二資訊。
- 如請求項35之方法,其中該進一步指令包括應用於該非揮發性記憶體以輸出該第一資訊之一第一位址及應用於該揮發性記憶體以輸出該第二資訊之一第二位址。
- 如請求項35之方法,其中該進一步指令進一步驗證與該第一資訊及該第二資訊相關聯之錯誤校正碼(ECC)。
- 如請求項37之方法,其中可從該非揮發性記憶體讀取與該非揮發性記憶體相關聯之該ECC且單獨產生與該源相關聯之該ECC。
- 如請求項28之方法,其中該第一處理核心之該非揮發性記憶體 包括由一保護方案定義之一程式碼保護,且其中該從屬處理單元之該揮發性程式記憶體具有取決於該保護方案之一設定之一程式碼保護。
- 如請求項39之方法,其中該保護方案定義該非揮發性記憶體之複數個段,且其中各段在該保護方案中具有一保護設定。
- 如請求項40之方法,其中該非揮發性記憶體之各保護設定具有一讀取操作之一設定及一程式化或擦除操作之一設定。
- 如請求項40之方法,其中該保護方案提供預定義數目個安全性等級,其中各安全性等級定義各段之一保護設定。
- 如請求項42之方法,其中該揮發性程式記憶體之該程式碼保護相同於該非揮發性記憶體之該等段之一者之該程式碼保護。
- 如請求項43之方法,其中一暫存器儲存該非揮發性記憶體之哪段經選擇以提供該揮發性記憶體之該程式碼保護設定。
- 如請求項41之方法,其中該非揮發性記憶體之一讀取操作之一設定適用於該揮發性記憶體之讀取操作及寫入操作。
- 如請求項29之方法,其中在一段被保護時,取決於一保護設定,從一個段執行之一指令無法對一不同段進行操作。
- 如請求項29之方法,其中在一段被保護時,取決於一保護設定,從一個段執行之一讀取指令僅可對一不同段之一預定義區域進行操作。
- 如請求項47之方法,其中該預定義區域儲存中斷向量。
- 如請求項29之方法,其中該非揮發性記憶體包括一啟動段及一通用段。
- 如請求項49之方法,其中該非揮發性記憶體進一步包括一測試段。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201562154927P | 2015-04-30 | 2015-04-30 | |
| US201562195692P | 2015-07-22 | 2015-07-22 | |
| US15/141,823 US10983931B2 (en) | 2015-04-30 | 2016-04-29 | Central processing unit with enhanced instruction set |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| TW201706856A true TW201706856A (zh) | 2017-02-16 |
Family
ID=55963480
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW105113680A TW201706856A (zh) | 2015-04-30 | 2016-05-02 | 具有增強指令集之中央處理單元 |
Country Status (7)
| Country | Link |
|---|---|
| US (2) | US10983931B2 (zh) |
| EP (1) | EP3289442B1 (zh) |
| JP (1) | JP2018514868A (zh) |
| KR (1) | KR20170140225A (zh) |
| CN (1) | CN107548492B (zh) |
| TW (1) | TW201706856A (zh) |
| WO (1) | WO2016176593A1 (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI715371B (zh) * | 2019-12-25 | 2021-01-01 | 新唐科技股份有限公司 | 一次性可編程記憶體裝置及其容錯方法 |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111679787B (zh) * | 2016-04-27 | 2023-07-18 | 慧荣科技股份有限公司 | 闪存装置、闪存控制器及闪存存储管理方法 |
| US10019314B2 (en) | 2016-04-27 | 2018-07-10 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
| CN109983063B (zh) | 2016-11-04 | 2022-03-08 | 株式会社Lg化学 | 热固性组合物 |
| JP2020510951A (ja) * | 2017-06-12 | 2020-04-09 | サンディスク テクノロジーズ エルエルシー | マルチコアオンダイメモリマイクロコントローラ |
| KR102032146B1 (ko) | 2018-04-11 | 2019-10-15 | 경희대학교 산학협력단 | 소자 결점을 보완하기 위한 구간 선형 정류 유닛을 사용하는 인공신경망 시스템 |
| CN111382429B (zh) * | 2018-12-27 | 2022-12-27 | 华为技术有限公司 | 指令的执行方法、装置及存储介质 |
| CN109886416A (zh) * | 2019-02-01 | 2019-06-14 | 京微齐力(北京)科技有限公司 | 集成人工智能模块的系统芯片及机器学习方法 |
| CN109870921B (zh) * | 2019-03-26 | 2022-04-01 | 广东美的制冷设备有限公司 | 驱动控制电路与家电设备 |
Family Cites Families (29)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5167028A (en) * | 1989-11-13 | 1992-11-24 | Lucid Corporation | System for controlling task operation of slave processor by switching access to shared memory banks by master processor |
| US5226138A (en) * | 1990-11-27 | 1993-07-06 | Sun Microsystems, Inc. | Method for selectively transferring data instructions to a cache memory |
| US6327648B1 (en) * | 1994-12-09 | 2001-12-04 | Cirrus Logic, Inc. | Multiprocessor system for digital signal processing |
| US7272703B2 (en) * | 1997-08-01 | 2007-09-18 | Micron Technology, Inc. | Program controlled embedded-DRAM-DSP architecture and methods |
| ITMI981564A1 (it) * | 1998-07-09 | 2000-01-09 | St Microelectronics Srl | Memoria non volatile in grado di eseguire un programma autonomamente |
| US6260082B1 (en) * | 1998-12-23 | 2001-07-10 | Bops, Inc. | Methods and apparatus for providing data transfer control |
| GB2365545B (en) * | 1999-12-23 | 2004-06-02 | Ibm | Data processing system with master and slave processors |
| US6691216B2 (en) | 2000-11-08 | 2004-02-10 | Texas Instruments Incorporated | Shared program memory for use in multicore DSP devices |
| US6895479B2 (en) | 2000-11-15 | 2005-05-17 | Texas Instruments Incorporated | Multicore DSP device having shared program memory with conditional write protection |
| JP2002185430A (ja) * | 2000-12-13 | 2002-06-28 | Sony Corp | 受信装置及び方法 |
| US6349056B1 (en) | 2000-12-28 | 2002-02-19 | Sandisk Corporation | Method and structure for efficient data verification operation for non-volatile memories |
| US7007172B2 (en) * | 2001-06-01 | 2006-02-28 | Microchip Technology Incorporated | Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection |
| US7571287B2 (en) * | 2003-03-13 | 2009-08-04 | Marvell World Trade Ltd. | Multiport memory architecture, devices and systems including the same, and methods of using the same |
| CN1301473C (zh) * | 2003-09-17 | 2007-02-21 | 中兴通讯股份有限公司 | 多处理器系统共享引导模块的方法 |
| US7325122B2 (en) * | 2004-02-20 | 2008-01-29 | International Business Machines Corporation | Facilitating inter-DSP data communications |
| JP4575059B2 (ja) * | 2004-07-21 | 2010-11-04 | 株式会社日立製作所 | ストレージ装置 |
| US7917753B2 (en) * | 2005-05-16 | 2011-03-29 | Texas Instruments Incorporated | Transferring control between programs of different security levels |
| US20070150895A1 (en) | 2005-12-06 | 2007-06-28 | Kurland Aaron S | Methods and apparatus for multi-core processing with dedicated thread management |
| US20080235493A1 (en) | 2007-03-23 | 2008-09-25 | Qualcomm Incorporated | Instruction communication techniques for multi-processor system |
| GB2466695B (en) * | 2007-06-18 | 2011-11-23 | Fujitsu Ltd | Processor and prefetch support program |
| WO2009090502A1 (en) * | 2008-01-16 | 2009-07-23 | Freescale Semiconductor, Inc. | Processor based system having ecc based check and access validation information means |
| US20110087922A1 (en) * | 2009-10-09 | 2011-04-14 | National Tsing Hua University | Test method and tool for master-slave systems on multicore processors |
| US8478974B2 (en) | 2010-06-23 | 2013-07-02 | Assured Information Security, Inc. | Method and system for reducing an impact of malware during a booting sequence |
| US8904190B2 (en) | 2010-10-20 | 2014-12-02 | Advanced Micro Devices, Inc. | Method and apparatus including architecture for protecting sensitive code and data |
| US9021170B2 (en) * | 2011-06-29 | 2015-04-28 | Texas Instruments Incorporated | System and method for improving ECC enabled memory timing |
| US9195581B2 (en) * | 2011-07-01 | 2015-11-24 | Apple Inc. | Techniques for moving data between memory types |
| GB2503470B (en) | 2012-06-27 | 2014-08-13 | Nordic Semiconductor Asa | Memory protection |
| US9858229B2 (en) | 2014-09-30 | 2018-01-02 | International Business Machines Corporation | Data access protection for computer systems |
| RU2580016C1 (ru) * | 2014-10-17 | 2016-04-10 | Закрытое акционерное общество "Лаборатория Касперского" | Способ передачи управления между областями памяти |
-
2016
- 2016-04-29 EP EP16722012.8A patent/EP3289442B1/en active Active
- 2016-04-29 KR KR1020177030823A patent/KR20170140225A/ko not_active Withdrawn
- 2016-04-29 JP JP2017554326A patent/JP2018514868A/ja active Pending
- 2016-04-29 US US15/141,823 patent/US10983931B2/en active Active
- 2016-04-29 CN CN201680024293.4A patent/CN107548492B/zh active Active
- 2016-04-29 WO PCT/US2016/030159 patent/WO2016176593A1/en not_active Ceased
- 2016-05-02 TW TW105113680A patent/TW201706856A/zh unknown
-
2019
- 2019-01-17 US US16/250,274 patent/US10776292B2/en active Active
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI715371B (zh) * | 2019-12-25 | 2021-01-01 | 新唐科技股份有限公司 | 一次性可編程記憶體裝置及其容錯方法 |
| US11397535B2 (en) | 2019-12-25 | 2022-07-26 | Nuvoton Technology Corporation | One-time programmable memory device and fault tolerance method thereof |
Also Published As
| Publication number | Publication date |
|---|---|
| US20190188163A1 (en) | 2019-06-20 |
| US10776292B2 (en) | 2020-09-15 |
| US20160321202A1 (en) | 2016-11-03 |
| WO2016176593A1 (en) | 2016-11-03 |
| EP3289442B1 (en) | 2023-04-19 |
| KR20170140225A (ko) | 2017-12-20 |
| CN107548492B (zh) | 2021-10-01 |
| EP3289442A1 (en) | 2018-03-07 |
| CN107548492A (zh) | 2018-01-05 |
| US10983931B2 (en) | 2021-04-20 |
| JP2018514868A (ja) | 2018-06-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TW201706856A (zh) | 具有增強指令集之中央處理單元 | |
| CN104102325B (zh) | 存储器控制电路 | |
| US9465750B2 (en) | Memory protection circuit, method and processing unit utilizing memory access information register to selectively allow access to memory areas by virtual machines | |
| US9733950B2 (en) | Boot sequencing for multi boot devices | |
| BR102020019667A2 (pt) | método e aparelho para criptografia de memória total multichave baseada em derivação de chave dinâmica | |
| US9715601B2 (en) | Secure access in a microcontroller system | |
| CN101261577A (zh) | 微处理器以及在微处理器中存储数据的方法 | |
| GB2514882A (en) | Instruction emulation processors, methods, and systems | |
| KR100604877B1 (ko) | 내장 시스템의 메모리 어드레스의 매핑을 제어하는 장치와방법 | |
| KR20150139931A (ko) | 더 넓은 레지스터에의 모드 의존형 부분 폭 로드 프로세서들, 방법들, 및 시스템들 | |
| TW201947397A (zh) | 多核心系統的記憶體池分配 | |
| CN105144096A (zh) | 最小化在可热插拔程序存储器中的操作系统内核更新期间的切换时间 | |
| CN107851015B (zh) | 向量操作数位大小控制 | |
| US20150317152A1 (en) | Patching of Program Code Executed from One Time Programmable Memory | |
| CN105190551B (zh) | 具有存储器区域交换机制的双引导系统 | |
| KR20100087309A (ko) | 개선된 마이크로프로세서 또는 마이크로컨트롤러 | |
| US12131159B2 (en) | ISA opcode parameterization and opcode space layout randomization | |
| US20200409707A1 (en) | Method and apparatus for efficient programmable instructions in computer systems | |
| US20120017035A1 (en) | Runtime reprogramming of a processor code space memory area | |
| TWI517166B (zh) | 非揮發性記憶體裝置 | |
| JP6603100B2 (ja) | メモリ制御装置及びメモリ制御方法 | |
| JP2008140124A (ja) | データ処理装置 | |
| KR20090128672A (ko) | 다중 부팅 모드를 지원하는 장치 및 방법 | |
| JP2005157537A (ja) | メモリアクセス監視装置 | |
| JP2006048488A (ja) | 命令処理装置及び半導体装置 |