TWI446258B - N位元微處理器裝置及其操作方法 - Google Patents
N位元微處理器裝置及其操作方法 Download PDFInfo
- Publication number
- TWI446258B TWI446258B TW097146020A TW97146020A TWI446258B TW I446258 B TWI446258 B TW I446258B TW 097146020 A TW097146020 A TW 097146020A TW 97146020 A TW97146020 A TW 97146020A TW I446258 B TWI446258 B TW I446258B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- bit
- indirect
- register
- data
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 15
- 230000015654 memory Effects 0.000 claims description 206
- 230000006870 function Effects 0.000 claims description 29
- 238000012545 processing Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 2
- 230000000694 effects Effects 0.000 description 18
- 238000012360 testing method Methods 0.000 description 8
- 230000003247 decreasing effect Effects 0.000 description 7
- PBGKNXWGYQPUJK-UHFFFAOYSA-N 4-chloro-2-nitroaniline Chemical compound NC1=CC=C(Cl)C=C1[N+]([O-])=O PBGKNXWGYQPUJK-UHFFFAOYSA-N 0.000 description 3
- 101100013508 Gibberella fujikuroi (strain CBS 195.34 / IMI 58289 / NRRL A-6831) FSR1 gene Proteins 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- DIDLWIPCWUSYPF-UHFFFAOYSA-N microcystin-LR Natural products COC(Cc1ccccc1)C(C)C=C(/C)C=CC2NC(=O)C(NC(CCCNC(=N)N)C(=O)O)NC(=O)C(C)C(NC(=O)C(NC(CC(C)C)C(=O)O)NC(=O)C(C)NC(=O)C(=C)N(C)C(=O)CCC(NC(=O)C2C)C(=O)O)C(=O)O DIDLWIPCWUSYPF-UHFFFAOYSA-N 0.000 description 2
- 101100496108 Mus musculus Clec2h gene Proteins 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- MKZGVLPHKXXSSG-UHFFFAOYSA-N ethyl n-[4-[benzyl(2-phenylethyl)amino]-2-[4-(trifluoromethyl)phenyl]-1h-imidazo[4,5-c]pyridin-6-yl]carbamate Chemical compound N=1C(NC(=O)OCC)=CC=2NC(C=3C=CC(=CC=3)C(F)(F)F)=NC=2C=1N(CC=1C=CC=CC=1)CCC1=CC=CC=C1 MKZGVLPHKXXSSG-UHFFFAOYSA-N 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/35—Indirect addressing
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
本申請案之技術領域係關於微處理器或微控制器。
微控制器一般構成一晶片上之一系統並包括一微處理器與複數個周邊組件。存在具有8位元、16位元及32位元架構之多種此類微控制器。藉由微晶片技術公司製造的例如8位元微控制器之現有微控制器提供撓性架構。此類微控制器包括其中分離程式與多個資料記憶體之一哈佛架構(Harvard architecture)。此類型之微控制器進一步包括允許存取該資料記憶體之一明確庫系統。一般而言,該資料記憶體係劃分為複數個庫且一庫選擇暫存器界定哪一庫經當前選擇並可存取。為存取其他庫,該庫選擇暫存器必須經重新程式化。因此,即使一庫方案僅允許存取一界定記憶體庫,此等控制器仍包含強迫至一預定庫的切換之指令。此提供改良及有效的性能而不管一般存取限制。
然而,在存取記憶體中仍存在困難。因此,需要一改良微控制器架構。
依據一具體實施例,一種n位元微處理器裝置可包括一n位元中央處理單元(CPU);複數個特殊功能暫存器與通用暫存器,其係記憶體映射至複數個庫,該等暫存器具有橫跨所有庫可藉由該CPU存取的至少兩個16位元間接記憶體位址暫存器;一庫存取單元,其用於將該CPU與該複數個庫之一耦合;一資料記憶體,其係與該CPU耦合;以及一程式記憶體,其係與該CPU耦合,其中該等間接位址暫存器係可運行以存取該資料記憶體或程式記憶體且其中於該等間接記憶體位址暫存器之每一者中的一位元指示對該資料記憶體或對該程式記憶體之一存取。
依據另一具體實施例,n=8。依據另一具體實施例,該n位元微處理器可進一步包括至少一個虛擬暫存器,其中將資料寫入至該虛擬暫存器引起使用該等間接記憶體位址暫存器之一者對該資料記憶體或對該程式記憶體之一間接存取。依據另一具體實施例,將該至少一虛擬暫存器映射至每一記憶體庫。依據另一具體實施例,該n位元微處理器可進一步包括一虛擬暫存器,其中從該虛擬暫存器讀取資料引起使用該等間接記憶體位址暫存器之一者對該資料記憶體或對該程式記憶體之一間接存取。依據另一具體實施例,可將該至少一個虛擬暫存器映射至每一記憶體庫。依據另一具體實施例,在該微處理器裝置中可以不實體實施該虛擬暫存器。依據另一具體實施例,該資料記憶體可係8位元寬並且該程式記憶體可係14位元寬。依據另一具體實施例,一資料記憶體位址之一額外位元可界定用於一除錯模式中之一擴展記憶體位址範圍。依據另一具體實施例,於該間接位址暫存器中之該位元可係最高有效位元。
依據另一具體實施例,一種用於操作一n位元微處理器裝置之方法可包括以下步驟:提供一n位元中央處理單元(CPU);提供複數個特殊功能暫存器與通用暫存器,其係記憶體映射至複數個庫;提供至少兩個16位元間接記憶體位址暫存器,其係橫跨所有庫可藉由該CPU存取;提供一庫存取單元,其係用於將該CPU與該複數個庫之一耦合;提供一資料記憶體,其係與該CPU耦合;提供一程式記憶體,其係與該CPU耦合;以及使用一間接位址暫存器來實行一間接定址以存取該資料記憶體或程式記憶體,其中於該等間接記憶體位址暫存器之每一者中的一位元指示分別對該資料記憶體或對該程式記憶體之一存取。
依據另一具體實施例,n=8。依據另一具體實施例,該方法可進一步包括藉由將資料寫入至至少一個虛擬暫存器而產生一間接記憶體寫入存取之步驟,其中該間接記憶體存取使用該等間接記憶體位址暫存器之一。依據另一具體實施例,可將該虛擬暫存器記憶體映射至所有記憶體庫。依據另一具體實施例,該方法可進一步包括藉由從至少一個虛擬暫存器讀取資料而產生一間接記憶體讀取存取之步驟,其中該間接記憶體讀取存取使用該等間接記憶體位址暫存器之一。依據另一具體實施例,可將該虛擬暫存器記憶體映射至所有記憶體庫。依據另一具體實施例,在該微處理器裝置中可以不實體實施該虛擬暫存器。依據另一具體實施例,該資料記憶體可係8位元寬並且該程式記憶體可係14位元寬。依據另一具體實施例,一資料記憶體位址之一額外位元可界定用於一除錯模式中之一擴展記憶體位址範圍。依據另一具體實施例,於該間接位址暫存器中之該位元可係該最高有效位元。
熟習此項技術者可從下面的圖式、說明及申請專利範圍來輕易地瞭解本揭示內容之其他技術優點。本申請案之各種具體實施例只可獲得一部分提出的優點。沒有一優點對具體實施例是決定性的。
圖1顯示包括但不限於與依據一具體實施例存取哈佛類型架構中之程式及資料記憶體相關的一微處理器或微控制器之一中央處理單元的不同功能單元。一指令暫存器110可儲存可藉由一控制邏輯130解碼之一提取指令。可提供複數個間接定址暫存器150,每一暫存器儲存一位址。即使在圖1中個別地顯示,此等及其他特殊功能暫存器仍係一特殊功能暫存器區塊185之部分。為實行一間接定址存取,實行對於特殊功能暫存器區塊185中之一專屬特殊功能暫存器的讀取或寫入。若執行此一間接定址存取,則控制邏輯130控制在輸入側接收來自間接位址暫存器150之一位址的一多工器140。依據一具體實施例,該等間接位址暫存器具有一預定位元(例如最高有效位元),其藉由控制邏輯130來解碼以決定是否實行對程式記憶體120或對資料記憶體160的一間接存取。
在一8位元架構中,該資料記憶體係8位元寬。依據該哈佛架構,該程式記憶體與該資料記憶體分離且可具有不同大小。例如,在一具體實施例中,該程式記憶體可為14、15或16個位元寬。因此,可解碼包含(例如)一8位元直接位址之指令。某指令可含有可與另一暫存器組合以實行(例如)相對定址之甚至更多的位址位元。
可將該資料記憶體160劃分為可藉由7或8個位元解碼之複數個庫。可將每一庫視為一暫存器檔案。依據一具體實施例,資料記憶體含有每一者具有256個可定址記憶體位置(導致4096位元組之總記憶體)之總共16個庫。依據另一具體實施例,可提供具有128個可定址記憶體位置之16個庫。依據各種具體實施例之其他組態係可行的。該中央處理單元可進一步包含與一工作暫存器180耦合之一算術邏輯單元170(ALU)。工作暫存器180係區塊185之複數個特殊功能暫存器之一者。如以上說明,可將資料記憶體160劃分為複數個庫1...n。除某些定址模式外,指令一般僅存取選定記憶體庫。因此,如藉由資料記憶體160與特殊功能暫存器區塊185之間的箭頭指示將來自特殊功能暫存器區塊185之某些重要的特殊功能暫存器記憶體映射至所有記憶體庫1...n。依據各種具體實施例,可將未映射至所有記憶體庫之特殊功能暫存器映射至於個別不同記憶體位置處的一單一記憶體庫。依據各種具體實施例,根本不可將一些特殊功能暫存器映射至記憶體。
即使某些特殊功能暫存器至所有記憶體庫之映射限制每一記憶體庫中之可存取自由RAM,仍可避免許多另外必要的庫切換序列存取重要的特殊功能暫存器。例如,一微控制器可具有12個特殊功能暫存器,例如映射至所有記憶體庫之工作暫存器180。因此,依據一具體實施例,每一記憶體庫可根據每一記憶體庫之大小而具有244或116個自由記憶體位置。依據各種具體實施例,其他組態係可行的。
依據一具體實施例,增強型微控制器可含有一8位元ALU 170與工作暫存器180(WREG)。該ALU 170可為一通用算術單元。其在該工作暫存器180中之資料與任何暫存器檔案之間實行算術及布林函數(Boolean function)。該ALU 170可為8位元寬且能夠進行加、減、移位及邏輯運算。除非另外提及,否則算術運算本質上可為2補數。WREG 180可為用於ALU運算之一8位元工作暫存器。該WREG暫存器180係可定址且可經直接寫入或讀取。依據一具體實施例,WREG 180係映射至所有16個庫(其位址可為(例如)09h)之12個共同SFR之一者。該算術及邏輯單元170能夠在2運算元或一單一運算元上執行算術或邏輯運算。所有單一運算元指令在該WREG暫存器180或給定檔案暫存器上運算。對於2運算元指令,該等運算元之一者係該WREG暫存器180且另一者係一檔案暫存器或一8位元立即常數。根據所執行的指令,該ALU 170可影響狀態(STATUS)暫存器190中之進位(C)、數字進位(DC)或零(Z)位元的值。該等C與DC位元在減法中分別運算為一借位及數字借位位元。影響此等狀態位元之範例係如下文更詳細說明之SUBLW與SUBWF的此類指令。
如圖1中顯示該狀態暫存器190可含有:ALU之算術狀態(例如進位/借位、數字進位/借位及零旗標);RP<1:0>:表示下兩庫選擇;用於直接定址之位元;IRP:表示用於間接定址之庫選擇暫存器位元;逾時位元及電源切斷位元。
依據一具體實施例,該增強型微控制器包括一庫選擇暫存器(BSR)以便維持向後相容性,亦可維持位元RP<1:0>。在RP<1:0>與BSR<1:0>之間可存在全雙向鏡射:改變該一暫存器,因此自動改變另一者。因此,RP<1:0>與BSR<1:0>指向相同實體記憶體。
即使該增強型微控制器含有多個全間接位址暫存器150(檔案選擇暫存器(FSR)),仍亦可維持用於向後相容性之位元IRP(其係FSR0H<0>之直接、雙向鏡射)。改變FSR0H<0>,因此自動改變IRP,且反之亦然。IRP與FSRH0h<0>指向相同實體記憶體。
依據一具體實施例,該狀態暫存器190橫跨所有庫係共同的且可定位於03h。如下文更詳細說明,實施除TO與PD外用於所有狀態位元之於中斷時的快速內文保存。像任何其他暫存器,該狀態暫存器可為用於任何指令之目的地。若該狀態暫存器係用於影響Z、DC或C位元之一指令的目的地,則依據裝置邏輯設定或清除此等位元。此外,該等TO與PD位元係不可寫入的。因此,採用該狀態暫存器190作為目的地之一指令的結果可不同於預計結果。例如,指令CLRF STATUS將清除除TO與PD外的所有位元,並接著藉由裝置邏輯來自動設定該Z位元。此使得該狀態暫存器190為"000u u100"(其中u=未改變)。該等C與DC位元在減法中分別運算為一借位及數字借出位元。
該狀態暫存器190因此可含有以下位元:
IRP:間接暫存器庫選擇位元(用於向後相容性鏡射FSR0H<0>)1=庫2,3(100h-1FFh);0=庫0,1(00h-FFh)
RP<1:0>:暫存器庫選擇位元(用於向後相容性鏡射BSR<1:0>)00=庫0(00h-7Fh);01=庫1(80h-FFh);10=庫2(100h-17Fh);11=庫3(180h-1FFh)
TO:逾時位元(未在中斷時自動保存)1=電力開啟後,CLRWDT指令或SLEEP指令;0=發生一監視器計時器逾時;
PD:電源切斷位元(未在中斷時自動保存)1=電力開啟後或藉由該CLRWDT指令;0=藉由該SLEEP指令的執行
Z:零位元:1=算術或邏輯運算之結果為零;0=算術或邏輯運算之結果不為零。
DC:數字進位/借位位元(ADDWF、ADDLW、SUBLW、SUBWF指令):1=發生來自結果之第4低階位元的執行;0=沒有來自該結果之第4低階位元的執行。
C:進位/借位位元(ADDWF、ADDLW、SUBLW、SUBWF指令):1=發生來自結果之最高有效位元的執行;0=沒有發生自該結果之最高有效位元的執行。
對於借位,可反轉極性。藉由將第二運算元之2補數相加來執行減法。對於旋轉(RRF、RLF)指令,此位元係以來源暫存器之高或低階位元載入。
增強型微控制器核心可直接或間接定址其暫存器檔案(庫)或資料記憶體。依據一具體實施例,在該資料記憶體中映射包含程式計數器(PC)與工作暫存器(WREG)之所有特殊功能暫存器。該增強型微控制器核心具有一正交(對稱)指令集,其使得使用任何定址模式對任何暫存器執行任何運算可行。此對稱本質及"特殊最佳情況"之缺乏使得採用該增強型微控制器核心程式化簡單而有效。此外,顯著減少用於一使用者之學習曲線。
依據一具體實施例,可在該核心中實現以下區塊:程式計數器;指令解碼;ALU;唯讀記憶體(ROM)鎖存器/IR鎖存器;FSR與位址產生邏輯;工作暫存器;WREG;於STATUS中之狀態位元;中斷定向控制;採用快速內文保存;庫選擇暫存器BSR。
以下區塊可不被視為該CPU之部分:堆疊;重設產生電路(監視器計時器(WDT)、電力開啟重設(POR)、斷電重設(BOR)等);程式記憶體;周邊裝置;RAM;RAM位址控制;Q時脈產生器及控制;中斷致能及旗標;中斷控制暫存器;組態位元;裝置ID字元;ID位置;時脈驅動器。
如以上說明,依據一具體實施例,以下暫存器可橫跨所有16個庫係共同的:INDF0(用於間接定址且不可為一實體暫存器);INDF1(用於間接定址且不可為一實體暫存器);PCL(PC LSB);STATUS;FSR0L(間接記憶體位址0,LSB);FSR0H(間接記憶體位址0,MSB);FSR1L(間接記憶體位址1,LSB);FSR1H(間接記憶體位址1,MSB);WREG,工作暫存器;BSR(庫選擇暫存器);PCLATH(用於程式計數器PC<14:8>之寫入緩衝器);中斷控制暫存器INTCON。
依據一具體實施例,該微處理器或微控制器可進一步包括可與某些特殊功能暫存器115耦合之一中斷控制單元105。在一中斷或任何其他引起的內文切換之發生(例如軟體截獲)時,自動保存選自映射至所有記憶體庫之該等特殊功能暫存器之以下暫存器的內容:STATUS(除TO與PD外);BSR,PCLATH,WREG,FSR0(FSR0H與FSR0L兩者)以及FSR1(FSR1H與FSR1L兩者)。在從中斷之一返回時,將該等暫存器自動復原至其預中斷值。
為此目的,如圖1中顯示,該微處理器或微控制器核心可具有將儲存以上提及之暫存器之內容之暫存器115之至少一額外集。然而,依據其他具體實施例,可提供一堆疊、額外資料記憶體等,以在一內文切換時儲存此等暫存器之內容。
如圖2中顯示,該程式計數器PC由兩個序連8位元暫存器PCL 230及PCH 240組成。其定址程式記憶體中的字元,且依據一具體實施例係(例如)15個位元寬。因此,其可用於定址最多至32kW。在資料記憶體160中映射PCL 230(PC之低位元組)。因此,其橫跨所有庫係共同的,且定位(例如)於位址02h。正像任何其他暫存器,PCL 240係可讀取與可寫入的。任何時間藉由一指令修改PCL 230,無論對PCL 230之一寫入或一讀取修改寫入,該CPU均需要執行一強迫NOP,以便在新位址擷取該指令。PCH 240係該PC之高位元組且未直接可定址。因為在資料或程式記憶體中不可映射PCH,所以將暫存器PCLATH 220(PC高鎖存器)用作保持用於該PC之高位元(PCH<6:0>)的鎖存器。依據一具體實施例,將PCLATH 220映射進資料記憶體中。因此,其橫跨所有庫係共同的,且可定位於位址0Ah。PCLATH 220僅藉由該暫存器之顯示負載來更新。因此,依據一具體實施例,沒有其他指令對其更新。可設計更新PCLATH 220,不需自動更新PCH 240之增強型微控制器。PCH 240僅按GOTO、CALL及CALLW指令,採用PCLATH 220的內容來更新。除非藉由GOTO、CALL、RETURN、RETLW、RETFIE或Branch指令修改;藉由一中斷響應修改;由於目的地藉由一指令寫入至PCL,否則在Q1之上升邊緣上每一指令提取後,該PC增加1。
"跳躍"在跳躍位址係等效於一強迫NOP循環。如圖2中顯示,用於不同指令之PC 230、240及PCLATH 220的運算如下:
對PCL 230之讀取指令:PCL 230→資料匯流排200→ALU 170或目的地。
對PCL 230之寫入指令:8位元資料→資料匯流排200→PCL 230。
對PCL 230之讀取修改寫入指令:對PCL 230進行讀取寫入修改運算之任何指令。讀取:PCL 230→資料匯流排200→ALU 170;寫入:8位元結果→資料匯流排→PCL230。
RETURN指令:TOS→PC<14:0>230、240。
此外,圖3顯示一提取指令210與其對程式計數器230、240之效應。圖3應用以下指令:
GOTO指令:在2字元指令(運算碼)210中提供一目的地位址。運算碼<7:0>PCL<7:0>230;運算碼<10:8>PCH<2:0>240;PCLATH<6:3>220PCH<6:3>240。
CALL指令:在指令210中提供一11位元目的地位址。將當前位址(PC+1)推入至堆疊。運算碼<7:0>PCL<7:0>230;運算碼<10:8>PCH<2:0>240;PCLATH<6:3>220PCH<6:3>240。
圖4顯示用於以下指令之組態:
BRA指令:在指令210中提供一9位元、帶正負號的偏移。運算碼<8:0>+PC(+1)→PC。
圖5顯示用於以下指令之組態:
BRW指令:在WREG 180中提供一8位元不帶正負號的偏移。PC(+1)+WREGPC。
圖6顯示用於以下指令之組態:
CALLW指令:在WREG 180中提供一8位元目的地位址。將當前位址(PC+1)推入至堆疊。WREG<7:0>PCL<7:0>;PCLATH<6:0>PCH<6:0>。
為致能一測試記憶體區域,該程式計數器230、240可具有一隱藏第16位元,PC<15>。當設定PC<15>時,從一測試區域提取該等指令。在使用者模式中,PC<15>始終為0並不可在軟體中修改。在測試模式中,PC<15>預設至0,但可藉由一"負載組態"命令來設定。其可藉由一"重設PC"命令來清除。該測試記憶體存取可採用一電路內除錯器(ICD)而如下表現:
ICD_v1:強迫PC<15>為高以提取ICD向量,但在執行第一指令(GOTO ICD_ROUTINE)後返回至0。此後直到現有的除錯執行,強迫PC<14:11>至"1111b"而未影響PCLATH。ICD_v2:若該ICD除錯執行係在使用者記憶體中,則其跟隨ICD_V1。若該除錯執行係在測試記憶體中,則強迫PC<15>為高以提取該ICD向量並在icd_return返回至零。
依據各種具體實施例之增強型微控制器裝置可支持一堆疊記憶體15個位元寬及16個位元深(如圖7中顯示)。在正常運算期間,假定堆疊310為16個字元深。在正常模式中,未將直接使用者存取提供至該堆疊310。該堆疊並非程式或資料記憶體空間之部分。當執行一CALL或CALLW指令或確認一中斷請求時,將全PC(程式計數器)推入至該堆疊上。在RETURN、RETLW或RETFIE指令將該PC值推離該堆疊。PCLATH未受到CALL或RETURN類型指令的任何者之影響。
藉由15位元RAM及4位元堆疊指標,該堆疊310運算為16個字元。在1111b/0000b後增加/減少該指標將引起其環繞至0000b/1111b。在一CALL類型指令期間,增加該堆疊指標並將該PC之內容載入至該堆疊310。在一RETURN類型指令期間,將指向之內容傳輸至該PC並接著減少該堆疊指標。在所有重設後將該堆疊指標初始化至"1111b"。第一呼叫將引起該指標繞至0000b。
當在1111b/0000b後增加/減少該堆疊指標時發生一堆疊溢位/欠位事件且在新位址進行至/自該堆疊的資料傳輸。在第一呼叫上不應發生溢位事件。在第16次連序呼叫時,該堆疊指標將具有一值1111b。第17次連序呼叫將引起該堆疊指標環繞至0000b並在此位置載入該PC。此構成一溢位事件。當已爆出該堆疊足夠的時間以到達0000b時,進一步爆出將引起0000b處之內容傳輸至該PC並減少該堆疊指標。該堆疊指標將繞至1111b,此並未構成一欠位事件。僅在下一連序爆出,當嘗試來自1111b之資料傳輸時,才發生一欠位事件。在使用者模式中,一堆疊溢位或欠位將在PCON暫存器中設定該適當位元(STOF或STUF)並引起軟體重設。
當在ICD模式中時,該堆疊可具有兩個片段。正常使用者模式堆疊仍係16字元深,但亦可提供一分離ICD堆疊。在ICD模式中,可以存取該堆疊與該堆疊指標之頂部。在ICD模式中,該堆疊之頂部(TOS)係可讀取與可寫入的。兩暫存器位置(TOSH與TOSL)將定址藉由該堆疊指標(STKPTR)指向之堆疊RAM位置。在一CALL類型指令後,軟體可藉由讀取TOSH與TOSL暫存器而讀取該推入值。可將此等值放置在軟體堆疊界定之一使用者上。寫入至該TOS暫存器將引起該PC在下一RETURN類型指令採用新值進行更新。
STKPTR暫存器含有該堆疊指標值。如先前說明,STKPTR僅在ICD模式中係可存取的。在ICD模式中,可透過該STKPTR暫存器來存取該堆疊指標。使用者可讀取並寫入該等堆疊指標值。在所有重設後將該堆疊指標初始化至"1111b"。在ICD模式中,在溢位/欠位事件上並未應用自動軟體重設。然而,仍將設定於PCON暫存器中之堆疊溢位(STOF)或欠位(STUF)位元,從而允許堆疊條件之軟體驗證。因為在欠位/溢位上不執行一重設,所以將不重設該堆疊指標(STKPTR)。在一溢位/欠位上,該堆疊指標將環繞並接著重新開始正常運算。使用者必須明確地清除溢位(STOF)或欠位(STUF)位元,且其將再次在隨後的溢位/欠位上經自動設定。堆疊溢位/欠位事件僅可藉由使用堆疊指標硬體修改該堆疊指標之一指令而引起。
此包含:CALL、TRAP;RETURN、RETFIE、RETLW;任何中斷及ICD截獲。透過ALU修改該堆疊指標之指令(僅ICD模式)並未引起堆疊欠位/溢位條件,且因此未設定(STOF)或(STUF)位元。範例係(僅ICD模式):INCF STKPTR;DECFSTKPTR;ADDWF STKPTR。
當重設一裝置時,將該重設向量(0h)載入該PC。將該堆疊指標初始化至"1111b"且堆疊暫存器之頂部(TOS)為"0000h"。第二推入增加該堆疊指標並接著將當前PC載入為堆疊位準。在第16次連序呼叫時,該堆疊指標將具有一值1111b。該第17次連序呼叫將引起該堆疊指標環繞至0000b並在此位置載入該PC。此構成一溢位事件。RETURN爆出將複製指向該PC之堆疊內容並接著減少該堆疊指標。當已爆出該堆疊足夠次以到達0000b時,進一步爆出將引起0000b處之內容傳輸至該PC並減少該堆疊指標。該堆疊指標將繞至1111b,此並未構成一欠位事件。僅在下一連序爆出,當嘗試來自1111b之資料傳輸時,才發生一欠位事件。在除錯(ICD)模式中,一特殊指令將引該STKPTR增加。該PC未載入至TOS。由使用者決定保證TOS在執行該INCF STKPTR指令(此指令因此等效於一PUSH指令)前採用適當資料進行載入。該DECF STKPTR指令將減少該堆疊指標,該PC未採用TOS值進行載入。
如圖8中顯示,15位元程式計數器400能夠定址一32k x 14位元程式記憶體空間。該程式記憶體空間430主要含有用於執行之指令;然而,亦可儲存並存取資料表(使用舊版程式記憶體讀取/寫入基礎架構以及與間接定址相關聯之新的功能性,更詳細細節參見FSR區段)。亦存在於正常運算期間隱藏之一第16PC位元,且在設定時,可以定址保留用於組態位元、裝置ID以及測試記憶體440之記憶體的另一32k x 14。僅將此位元設定在測試模式或程式化模式中。如圖8中顯示,該重設向量係在"0000h"且中斷向量係在"0004h"。
依據一具體實施例,該增強型微控制器可定址最多至2048位元組之資料記憶體160及通用RAM。該資料記憶體位址匯流排係11個位元寬。將資料記憶體分割為128位元組之16個庫,其每一者含有通用暫存器(GPR)及特殊功能暫存器(SFR)。如圖9中顯示,藉由該庫選擇暫存器(BSR<3:0>)來選擇該庫。該BSR暫存器可存取16個以上的庫;然而,此僅可在ICD模式中受到允許此以考量該等ICD暫存器之更大資料空間。(在ICD模式32中,可存取庫)。亦可將位元BSR0與BSR1分別映射進該STATUS暫存器中作為RP0與RP1。此將考量與現有裝置之向後相容性。至BSR0/1之讀取或寫入將影響RP0/1且反之亦然。圖10顯示一範例資料記憶體映射。
當該核心與一ICD模組操作或在另一具體實施例中時,可將庫之總數目擴展至32而用於4096個總位址。此將允許ICD暫存器映射進該資料空間中且未使用該使用者記憶體映射之任何者。此將僅在致能該ICD模組時受到致能。使用者將不存取大於庫15之任何庫。依據各種具體實施例之其他組態係可行的。
圖11顯示係其中於該指令中之該資料記憶體位址係由另一暫存器決定的定址資料記憶體之一模式的間接定址方案之一具體實施例。此可用於資料/程式記憶體中之資料表或堆疊。該檔案選擇暫存器(FSR)960之值係用作資料記憶體位址。該增強型微控制器具有用於間接定址之兩個16位元暫存器對960。因此稱為檔案選擇暫存器對的此等係:FSR0H與FSR0L;以及FSR1H與FSR1L。該等FSR 960係16位元暫存器並因此允許最多至65,536位置之定址。於此等檔案選擇暫存器960中之一單一位元965可用於決定是否實行對資料記憶體160或程式記憶體120的存取。為此目的,邏輯單元930將檔案選擇暫存器960之內容轉遞至用於存取個別記憶體之程式記憶體位址910或RAM位址920。
非間接定址透過多工器940使用一提取指令950之個別內容"檔案"。接著透過RAM位址920實行庫存取,其中藉由該個別庫存取暫存器提供該庫位址用以形成一全位址920。如圖11中顯示,提供檔案選擇暫存器960用於間接定址。對於間接定址,多工器940之輸出透過該個別檔案選擇暫存器960之內容提供"檔案"位址。若選擇間接定址,則由每一檔案選擇暫存器960之數字965指示的位元15係用於決定是否實行透過程式記憶體位址910對程式記憶體120的存取或透過資料位址920對資料記憶體160的存取。透過個別選擇信號(未顯示)控制多工器940來起始間接定址。
當FSRn<15>等於0時,定址資料記憶體160。當FSRn<15>為1時,定址程式記憶體120。將資料記憶體160映射進此位址空間(0000h至7FFFh)之前半部中。若FSRn<15>為0,則FSRn<10:0>指向資料記憶體位置000h至7FFh。在此情況下,忽略FSRn<11:14>。將程式記憶體120映射進此位址空間(8000h至FFFFh)之上半部中。若FSRn<15>為1,則FSRn<14:0>指向程式記憶體位址0000h至7FFFh。總之:8000h及更高之位址指向程式記憶體。8000h以下之位址指向資料記憶體,其中僅下11個位元用於位址解碼。
此外,存在未經實體實施之虛擬暫存器INDF0與INDF1(見圖10)。讀取或寫入至此等暫存器啟動間接定址,其中於對應FSR暫存器中之值係資料的位址。若經由一FSR間接讀取檔案INDF0(或INDF1)本身,則讀取所有"0"(設定零位元)。同樣地,若間接寫入INDF0(或INDF1),則操作將等效於一NOP且未影響該等STATUS位元。間接寫入至程式記憶體空間(FSRn<15>=1)將沒有效應並將導致一NOP的等效物受到執行。自程式記憶體空間(FSRn<15>=1)之間接讀取將引起程式記憶體位置的前8個位元傳輸至目的地暫存器,EEDATH/PMDATH將採用上6個位元進行更新。依據各種具體實施例,可實施其他機制以引起間接定址。
圖12顯示如用於該資料記憶體之任何庫n中的依據一具體實施例之所有特殊功能暫存器之概述。
圖13A與B顯示其中使用如以上說明的架構之該等增強型指令在下文中詳細說明的指令集。
ADDFSR將文字加至FSRn:
語法:ADDFSR n,k
運算元:
運算:FSR(n)+k→FSR(n)n
受影響之狀態:無
編碼:11 0001 0nkk kkkk
說明:將帶正負號的6位元文字"k"加至藉由"n"明確指示之該FSR的內容。FSRn係限於範圍0000h至FFFFh。超過此等邊界對其增加/減少將引起其環繞。請注意,8000h及更大之位址指向程式記憶體。8000h以下之位址指向資料記憶體,其中僅下11個位元用於位址解碼。
字元:1
循環:1
Q循環活動:
範例:ADDFSR 1,23h
在指令前FSR1=0FFh
在指令後FSR1=0122h
ADDWFC將WREG與CARRY位元加至f:
語法:ADDWFC f{,d}
運算元:
運算:(WREG)+(f)+(C)→dest
受影響之狀態:C,DC,Z
編碼:11 1101 dfff ffff
說明:將WREG、CARRY旗標與資料記憶體位置"f"相加。若"d"為"0",則將結果放置在WREG中。若"d"為"1",則將結果放置在資料記憶體位置"f"中。
循環:1
Q循環活動:
範例:ADDWFC REG,0
在指令前 CARRY位元=1
REG=02h
WREG=4Dh
在指令後 CARRY位元=0
REG=02h
WREG=50h
ASRF算術右移:語法:ASRFf{,d}
運算元:
運算:(f<7>)→dest<7>
(f<7:1>)→dest<6:0>,
(f<0>)→C,
受影響之狀態:C,Z
編碼:11 0111 dfff ffff
說明:將暫存器"f"之內容透過CARRY旗標向右移位一位元。MSb保持未改變。若"d"為"0",則將結果放置在WREG中。若"d"為"1",則將結果向後儲存在暫存器"f"中。
字元:1
循環:1
Q循環活動:
範例:ASRF REG、0
在指令前 REG=1110 0110
C=1
在指令後 REG=1110 0110
WREG=1111 0011
C=0
BRA相對分支:
語法:BRA k
運算元:
運算:(PC)+k→PC
受影響之狀態:無
編碼:11 001k kkkk kkkk
說明:將2補數數字"k"加至該PC。因為該PC已增加以提取下一指令,所以新位址將為PC+1+k。此指令係一雙循環指令。
字元:1
循環:2
Q循環活動:
範例:0023h BRA 005h
在指令前 PC=位址(0023h)
在指令後 PC=位址(0029h)
BRW與WREG的相對分支:
語法:BRW
運算元:無
運算:(PC)+(WREG)→PC
受影響之狀態:無
編碼:00 0000 0000 1011
說明:將WREG(不帶正負號)之內容加至PC。因為該PC已增加以提取下一指令,所以新位址將為PC+1+(WREG)。此指令係一雙循環指令。將WREG之內容對待為一不帶正負號的數字。
字元:1
循環:2
Q循環活動:
範例:0024h BRW
在指令前 PC=位址(0024h)
WREG=85h
在指令後 PC=位址(00AAh)
CALLW採用WREG子程序呼叫:
語法:CALLW
運算元:無
運算:(PC)+1→TOS,
(WREG)→PC<7:0>,
(PCLATH<6:0>)→PC<14:8>
受影響之狀態:無
編碼:00 0000 0000 1010
說明:採用WREG子程序呼叫。首先,將返回位址(PC+1)推入至該返回堆疊。接著,將WREG之內容載入至PC<7:0>中,且PCLATH之內容載入至PC<14:8>中。CALLW係一雙循環指令。
字元:1
循環:2
Q循環活動:
範例:0025h CALLW
在指令前 PC=位址(0025h)
WREG=1Ah
PCLATH=10h
在指令後 TOS=位址(0026h)
PC=101Ah
WREG=1Ah
PCLATH=10h
LSLF邏輯左移:
語法:LSLF f{,d}
運算元:
運算:(f<7>)→C
(f<6:0>)→dest<7:1>
0→dest<0>
受影響之狀態:C,Z
編碼:11 0101 dfff ffff
說明:將暫存器"f"之內容透過CARRY旗標向左移位一位元。將"0"移位至該LSb中。若"d"為"0",則將結果放置在WREG中。若"d"為"1",則將結果向後儲存在暫存器"f"中。
字元:1
循環:1
Q循環活動:
範例:LSLF REG,0
在指令前 REG=1110 0110
C=0
在指令後 REG=1110 0110
WREG=1100 1100
C=1
LSRF邏輯右移:
語法:LSRF f{,d}
運算元:
運算:0→dest<7>
(f<7:1>)→dest<6:0>,
(f<0>)→C,
受影響之狀態:C,Z
編碼:11 0110 dfff ffff
說明:將暫存器"f"之內容透過CARRY旗標向右移位一位元。將"0"移位至該MSb中。若"d"為"0",則將結果放置在WREG中。若"d"為"1",則將結果向後儲存在暫存器"f"中。
字元:1
循環:1
Q循環活動:
範例:LSRF REG,0
在指令前 REG=1110 0110
C=1
在指令後 REG=1110 0110
WREG=0111 0011
C=0
MOVIW以前/後增加/減少將INDFn移動至WREG
語法:MOVIW++/--FSRn++/--
運算元:
運算:INDFn→WREG
將前/後增加/減少運算應用至FSRn。
受影響之狀態:Z(僅在目的地為WREG的情況下)
編碼:00 0000 0001 0nmm
說明:此指令係用於移動間接暫存器(INDFn)之一者與WREG之間的資料。在此移動前/後,藉由對其前/後增加/減少而更新指標(FSRn)。FSRn係限於範圍0000h至FFFFh。超過此等邊界對其增加/減少將引起其環繞。請注意,大於7FFFh之位址指向程式記憶體。8000h以下之位址指向資料記憶體,其中僅下11個位元用於位址解碼。FSRn上之增加/減少運算將不影響任何STATUS位元。此指令可僅在00h之一值移動至WREG的情況下影響Z旗標。
字元:1
循環:1
Q循環活動:
範例:MOVIW FSR0++
在指令前 FSR0=22h
WREG=FFh
(22h)=12h
(23h)=33h
在指令後 FSR0=23h
WREG=12h
(22h)=12h
(23h)=33h
範例:MOVIW++FSR0
在指令前 SR0=22h
WREG=FFh
(22h)=12h
(23h)=33h
在指令後 FSR0=23h
WREG=33h
(22h)=12h
(23h)=33h
MOVIW索引間接定址將INDFn移動至WREG
語法:MOVIW[k]FSRn
運算元:
運算:(FSRn+k)→WREG
在藉由FSRn+k指向之位置與WREG之間移動資料。
受影響之狀態:Z(僅在目的地為WREG的情況下)
編碼:11 1111 0nkk kkkk
說明:此指令係用於移動藉由FSRn+k指向之位置與WREG之間的資料。FSRn未採用k更新。該可定址範圍係限於0000h至FFFFh。超過此等邊界之索引將引起一位址環繞。請注意,8000h及更高之位址指向程式記憶體。8000h以下之位址指向資料記憶體,其中僅下11個位元用於位址解碼。位址計算(將k加至FSRn)將不影響任何STATUS位元。此指令可僅在00h之一值移動至WREG的情況下影響該Z旗標。
字元:1
循環:1
Q循環活動:
範例MOVIW[5]FSR0
在指令前 FSR0=22h
WREG=FFh
(22h)=12h
(27h)=39h
在指令後 FSR0=22h
WREG=39h
(22h)=12h
(27h)=39h
範例MOVIW[-5]FSR0
在指令前 FSR0=22h
WREG=FFh
(1Dh)=17h
(22h)=12h
在指令後 FSR0=22h
WREG=17h
(1Dh)=17h
(22h)=12h
MOVLB將文字移動至BSR
:語法:MOVLBk
運算元:
運算:k→BSR
受影響之狀態:無
編碼:00 0000 0010 kkkk
說明:將四位元文字"k"載入至該庫選擇暫存器(BSR)中。
字元:1
循環:1
Q循環活動:
MOVLP將文字移動至PCLATH:
語法:MOVLP k
運算元:
運算:k→PCLATH
受影響之狀態:無
編碼:11 0001 1kkk kkkk
說明:將七位元文字"k"載入至該PCLATH暫存器中。
字元:1
循環:1
Q循環活動:
MOVWI索引間接移動:
語法:MOVWI[k]FSRn
運算元:
運算:WREG→(FSRn+k)
在WREG與藉由FSRn+k指向之位置之間移動資料。
受影響之狀態:Z(僅在目的地為WREG的情況下)
編碼:11 1111 1nkk kkkk
說明:此指令係用於移動WREG與藉由FSRn+k指向之位置之間的資料。FSRn未採用k更新。該可定址範圍係限於0000h至FFFFh。超過此等邊界之索引將引起一位址環繞。請注意,8000h及更高之位址指向程式記憶體。8000h以下之位址指向資料記憶體,其中僅下11個位元用於位址解碼。位址計算(將k加至FSRn)將不影響任何STATUS位元。
字元:1
循環:1
Q循環活動:
範例:MOVWI[3]FSR0
在指令前 FSR0=22h
WREG=FFh
(22h)=12h
(25h)=56h
在指令後 FSR0=22h
WREG=FFh
(22h)=12h
(25h)=FFh
範例:MOVWI[-1]FSR0
在指令前 FSR0=22h
WREG=FFh
(21h)=56h
(22h)=12h
在指令後 FSR0=22h
WREG=FFh
(21h)=FFh
(22h)=12h
Q循環活動:
MOVWI以前/後增加/減少將WREG移動至INDFn
語法:MOVWI++/--FSRn++/--
運算元:
運算:WREG→INDFn
將前/後增加/減少運算應用至使用的FSR。
受影響之狀態:Z(僅在目的地為WREG的情況下)
編碼:00 0000 0001 1nmm
說明:此指令係用於移動WREG與該等間接暫存器(INDFn)之一者之間的資料。在此移動前/後,藉由對其前/後增加/減少而更新該指標(FSRn)。FSRn係限於範圍0000h至FFFFh。超過此等邊界對其增加/減少將引起其環繞。請注意,8000h及更高之位址指向程式記憶體。8000h以下之位址指向資料記憶體,其中僅下11個位元用於位址解碼。FSRn上之增加/減少運算將不影響任何STATUS位元。
字元:1
循環:1
Q循環活動:
範例:MOVWI FSR0--
在指令前 FSR0=22h
WREG=FFh
(21h)=56h
(22h)=12h
在指令後 FSR0=21h
WREG=FFh
(21h)=56h
(22h)=FFh
範例:MOVWI--FSR0
在指令前 FSR0=22h
WREG=FFh
(21h)=56h
(22h)=12h
在指令後 FSR0=21h
WREG=FFh
(21h)=FFh
(22h)=12h
RESET軟體重設:
語法:RESET
運算元:無
運算:執行nMCLR。重設藉由一MCLR重設影響之所有暫存器及旗標。設定PCON.nSWRST旗標。
受影響之狀態:所有
編碼:00 0000 0000 0001
說明:此指令提供藉由軟體執行一MCLR重設的一方式。
字元:1
循環:1
Q循環活動:
範例:重設
在指令後 Registers(暫存器):重設值
Flags*=重設值
SUBWFB採用借位從f減去WREG:
語法:SUBWFB f{,d}
運算元:
運算:(f)-(WREG)-(B)→dest
受影響之狀態:C,DC,Z
編碼:11 1011 dfff ffff
說明:從暫存器"f"減去WREG與BORROW旗標(CARRY)(2補數方法)。若"d"為"0",則將結果儲存在WREG中。若"d"為"1",則將結果向後儲存在暫存器"f"中。
字元:1
循環:1
範例1:SUBWFB REG,1
在指令前 REG=19h(0001 1001)
WREG=0Dh(0000 1101)
C=1(因此B=0)
在指令後 REG=0Ch(0000 1100)
WREG=0Dh(0000 1101)
C=1(無借位)
DC=0(指示一數字借位)
範例2:SUBWFB REG,0
在指令前 REG=1Bh(0001 1011)
WREG=1Ah(0001 1010)
C=0(因此B=1)
在指令後 REG=1Bh(0001 1011)
WREG=00h
C=1(無借位)
DC=1(無數字借位)
Z=1結果為零
105...中斷控制單元
110...指令暫存器
115...特殊功能暫存器
120...程式記憶體
130...控制邏輯
140...多工器
150...間接定址暫存器
160...資料記憶體
170...算術邏輯單元
180...工作暫存器
185...特殊功能暫存器區塊
190...狀態暫存器
200...資料匯流排
220...暫存器PCLATH
230...PCL
240...PCH
400...程式計數器
430...程式記憶體空間
440...測試記憶體
910...程式記憶體位址
920...RAM位址
930...邏輯單元
940...多工器
960...檔案選擇暫存器(FSR)
藉由參考下列結合附圖之說明可獲得對本揭示內容及其優點的更完全瞭解,其中相同參考數字指示相同特徵,且其中:
圖1顯示依據一具體實施例之微控制器架構的一方塊圖。
圖2顯示一程式計數器與其至一內部匯流排之耦合的一具體實施例。
圖3至6顯示根據經執行之指令於該程式計數器上之不同運算。
圖7顯示一堆疊與控制邏輯之一具體實施例。
圖8顯示一程式記憶體映射與堆疊之一具體實施例。
圖9顯示一庫選擇暫存器之一具體實施例。
圖10顯示該資料記憶體中之一記憶體庫之結構的一具體實施例。
圖11顯示針對間接記憶體存取之一存取方案。
圖12係顯示依據一具體實施例之特殊功能暫存器概述的一表。
圖13A與B係顯示依據一具體實施例之一微處理器或微控制器之指令集的一表。
雖然已參考該揭示內容的範例性具體實施例來描述、說明及定義此揭示內容的具體實施例,但此類參考並不暗示該揭示內容上之一限制,且不暗指此類限制。正如熟習相關技術且受益於此揭示內容者所知,可在形式及功能上對所揭示之標的進行相當大的修改、變更及等效改變。此揭示內容所描述與說明的具體實施例僅係範例,並非該揭示內容之範疇的詳盡說明。
105...中斷控制單元
110...指令暫存器
115...特殊功能暫存器
120...程式記憶體
130...控制邏輯
140...多工器
150...間接定址暫存器
160...資料記憶體
170...算術邏輯單元
180...工作暫存器
185...特殊功能暫存器區塊
190...狀態暫存器
Claims (20)
- 一種n位元微處理器裝置,其包括:一n位元中央處理單元(CPU);複數個特殊功能暫存器與通用暫存器,其係記憶體映射至複數個記憶體庫,該等暫存器包括至少兩個16位元間接記憶體位址暫存器,其可藉由橫跨所有記憶體庫之該CPU存取;一庫存取單元,用於將該CPU與該複數個記憶體庫之一耦合;一資料記憶體,其係與該CPU耦合;以及一程式記憶體,其係與該CPU耦合,其中該等間接記憶體位址暫存器係可運行以存取該資料記憶體或程式記憶體,且其中於該等間接記憶體位址暫存器之每一者中之一位元指示對該資料記憶體或對該程式記憶體之一存取。
- 如請求項1之n位元微處理器裝置,其中n=8。
- 如請求項1之n位元微處理器裝置,進一步包括至少一個虛擬暫存器,其中將資料寫入至該至少一虛擬暫存器引起使用該等間接記憶體位址暫存器之一對該資料記憶體或對該程式記憶體之一間接存取。
- 如請求項3之n位元微處理器裝置,其中將該至少一個虛擬暫存器映射至每一記憶體庫。
- 如請求項1之n位元微處理器裝置,進一步包括至少一虛擬暫存器,其中從該至少一虛擬暫存器讀取資料引起使 用該等間接記憶體位址暫存器之一者對該資料記憶體或對該程式記憶體之一間接存取。
- 如請求項5之n位元微處理器裝置,其中將該至少一虛擬暫存器係映射至每一記憶體庫。
- 如請求項5之n位元微處理器裝置,其中該微處理器裝置包含兩個虛擬暫存器及四個8位元暫存器,該等8位元暫存器形成兩個16位元間接記憶體位址暫存器。
- 如請求項1之n位元微處理器裝置,其中該資料記憶體係8位元寬且該程式記憶體係14位元寬。
- 如請求項8之n位元微處理器裝置,其中一資料記憶體位址之一個額外位元界定用於一除錯模式中之一擴展記憶體位址範圍。
- 如請求項8之n位元微處理器裝置,其中於該間接記憶體位址暫存器中之該位元係最高有效位元。
- 一種用於操作一n位元微處理器裝置之方法,其包括以下步驟:提供一n位元中央處理單元(CPU);提供複數個特殊功能暫存器與通用暫存器,其係記憶體映射至複數個記憶體庫,提供至少兩個16位元間接記憶體位址暫存器,其可藉由橫跨所有庫之該CPU存取;提供一庫存取單元,用於將該CPU與該複數個記憶體庫之一耦合;提供一資料記憶體,其係與該CPU耦合; 提供一程式記憶體,其係與該CPU耦合;以及使用該等間接記憶體位址暫存器之一者來實行一間接定址,以存取該資料記憶體或程式記憶體,其中於該等間接記憶體位址暫存器之每一者中之一位元指示分別對該資料記憶體或對該程式記憶體之一存取。
- 如請求項11之方法,其中n=8。
- 如請求項11之方法,進一步包括藉由將資料寫入至至少一個虛擬暫存器而產生一間接記憶體寫入存取之步驟,其中該間接記憶體存取使用該等間接記憶體位址暫存器之一。
- 如請求項13之方法,其中將該至少一虛擬暫存器記憶體映射至所有記憶體庫。
- 如請求項11之方法,進一步包括藉由從至少一個虛擬暫存器讀取資料而產生一間接記憶體讀取存取之步驟,其中該間接記憶體讀取存取使用該等間接記憶體位址暫存器之一。
- 如請求項15之方法,其中將該至少一虛擬暫存器記憶體映射至所有記憶體庫。
- 如請求項15之方法,其中該微處理器裝置包含兩個虛擬暫存器及四個8位元暫存器,該等8位元暫存器形成兩個16位元間接記憶體位址暫存器。
- 如請求項11之方法,其中該資料記憶體係8位元寬且該程式記憶體係14位元寬。
- 如請求項18之方法,其中一資料記憶體位址之一個額外 位元界定用於一除錯模式中之一擴展記憶體位址範圍。
- 如請求項18之方法,其中於該間接記憶體位址暫存器中之該位元係最高有效位元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US99157007P | 2007-11-30 | 2007-11-30 | |
US12/147,647 US7996651B2 (en) | 2007-11-30 | 2008-06-27 | Enhanced microprocessor or microcontroller |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200935301A TW200935301A (en) | 2009-08-16 |
TWI446258B true TWI446258B (zh) | 2014-07-21 |
Family
ID=40676959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097146020A TWI446258B (zh) | 2007-11-30 | 2008-11-27 | N位元微處理器裝置及其操作方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7996651B2 (zh) |
EP (1) | EP2215544B1 (zh) |
KR (1) | KR101564693B1 (zh) |
CN (1) | CN101868780B (zh) |
ES (1) | ES2396800T3 (zh) |
PL (1) | PL2215544T3 (zh) |
TW (1) | TWI446258B (zh) |
WO (1) | WO2009073532A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262595B (zh) * | 2011-07-29 | 2014-04-02 | 航天恒星科技有限公司 | 一种微处理器扩展寻址方法 |
US9195497B2 (en) | 2012-03-21 | 2015-11-24 | Microchip Technology Incorporated | Microcontroller with context switch |
WO2014159123A1 (en) * | 2013-03-12 | 2014-10-02 | Microchip Technology Incorporated | Programmable cpu register hardware context swap mechanism |
US20160170466A1 (en) * | 2014-12-15 | 2016-06-16 | Jefferson H. HOPKINS | Power saving multi-width processor core |
US9946482B2 (en) * | 2015-07-14 | 2018-04-17 | Microchip Technology Incorporated | Method for enlarging data memory in an existing microprocessor architecture with limited memory addressing |
US10255073B2 (en) * | 2016-05-12 | 2019-04-09 | Microchip Technology Incorporated | Microcontroller with variable length move instructions using direct immediate addressing or indirect register offset addressing |
US11630757B1 (en) * | 2022-02-02 | 2023-04-18 | Snabb IP LLC | System and method for developing, testing and debugging software for microcontrollers |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58112152A (ja) | 1981-12-24 | 1983-07-04 | Nec Corp | 半導体集積回路 |
JPS6414648A (en) | 1987-07-08 | 1989-01-18 | Mitsubishi Electric Corp | Arithmetic processor |
JP3141146B2 (ja) * | 1993-07-27 | 2001-03-05 | 三菱電機株式会社 | ワンチップマイクロコンピュータ |
US5653735A (en) * | 1995-06-28 | 1997-08-05 | Pacesetter, Inc. | Implantable cardiac stimulation device having an improved backup mode of operation and method thereof |
US6055211A (en) | 1997-07-03 | 2000-04-25 | Microchip Technology Incorporated | Force page zero paging scheme for microcontrollers using data random access memory |
US6192463B1 (en) * | 1997-10-07 | 2001-02-20 | Microchip Technology, Inc. | Processor architecture scheme which uses virtual address registers to implement different addressing modes and method therefor |
US5987583A (en) | 1997-10-07 | 1999-11-16 | Microchip Technology Inc. | Processor architecture scheme and instruction set for maximizing available opcodes and address selection modes |
US6029241A (en) * | 1997-10-28 | 2000-02-22 | Microchip Technology Incorporated | Processor architecture scheme having multiple bank address override sources for supplying address values and method therefor |
US6708268B1 (en) | 1999-03-26 | 2004-03-16 | Microchip Technology Incorporated | Microcontroller instruction set |
US20020032829A1 (en) * | 2000-06-28 | 2002-03-14 | Z-World, Inc. | Microprocessor memory device controller |
US6735664B1 (en) * | 2000-10-18 | 2004-05-11 | Advanced Micro Devices, Inc. | Indirect addressing method and device incorporating the same |
US6728856B2 (en) | 2001-06-01 | 2004-04-27 | Microchip Technology Incorporated | Modified Harvard architecture processor having program memory space mapped to data memory space |
US6704601B1 (en) * | 2001-08-09 | 2004-03-09 | Pacesetter, Inc. | Implantable medical stimulation device having reconfigurable memory |
US20030056071A1 (en) * | 2001-09-18 | 2003-03-20 | Triece Joseph W. | Adaptable boot loader |
KR100960095B1 (ko) * | 2003-10-23 | 2010-05-31 | 마이크로칩 테크놀로지 인코포레이티드 | 마이크로컨트롤러 명령어 셋트 |
-
2008
- 2008-06-27 US US12/147,647 patent/US7996651B2/en active Active
- 2008-11-26 PL PL08857235T patent/PL2215544T3/pl unknown
- 2008-11-26 CN CN200880116717.5A patent/CN101868780B/zh active Active
- 2008-11-26 WO PCT/US2008/084921 patent/WO2009073532A1/en active Application Filing
- 2008-11-26 KR KR1020107009584A patent/KR101564693B1/ko active IP Right Grant
- 2008-11-26 ES ES08857235T patent/ES2396800T3/es active Active
- 2008-11-26 EP EP08857235A patent/EP2215544B1/en active Active
- 2008-11-27 TW TW097146020A patent/TWI446258B/zh active
Also Published As
Publication number | Publication date |
---|---|
US20090144511A1 (en) | 2009-06-04 |
TW200935301A (en) | 2009-08-16 |
CN101868780A (zh) | 2010-10-20 |
EP2215544A1 (en) | 2010-08-11 |
KR101564693B1 (ko) | 2015-10-30 |
CN101868780B (zh) | 2014-08-13 |
US7996651B2 (en) | 2011-08-09 |
ES2396800T3 (es) | 2013-02-27 |
PL2215544T3 (pl) | 2013-05-31 |
KR20100087309A (ko) | 2010-08-04 |
EP2215544B1 (en) | 2012-10-10 |
WO2009073532A1 (en) | 2009-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI479411B (zh) | 微處理器或微控制器裝置及其操作方法 | |
US10719318B2 (en) | Processor | |
TWI446258B (zh) | N位元微處理器裝置及其操作方法 | |
JP6274672B2 (ja) | 装置および方法 | |
KR20010043826A (ko) | 마이크로 컨트롤러 명령어 집합 | |
TWI556166B (zh) | 不讀取進位旗標地完成執行之旋轉指令 | |
EP0465248B1 (en) | Pseudo-linear bank switching memory expansion | |
KR20000076310A (ko) | 리스크 구조를 갖는 8 비트 마이크로콘트롤러 | |
JPH08505483A (ja) | 高速プログラマブルロジックコントローラ | |
JP2004086837A (ja) | データ処理装置 | |
US5655135A (en) | System for write protecting a bit that is hardware modified during a read-modify-write cycle | |
TWI339354B (en) | Microcontroller instruction set | |
KR100897857B1 (ko) | 마이크로컨트롤러 명령어 셋트 | |
WO2023170373A1 (en) | Sub-vector-supporting instruction for scalable vector instruction set architecture | |
SJÖDIN et al. | 5. MOS Technology 6502 | |
JPH03186935A (ja) | データ処理装置 |