www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]對(duì) PowerPC 體系結(jié)構(gòu)家族樹的所有分支來說,PowerPC 體系結(jié)構(gòu)和應(yīng)用級(jí)編程模型是通用的。PowerPC 體系結(jié)構(gòu)是一種精減指令集計(jì)算機(jī)(Reduced Instruction Set Computer,RISC

對(duì) PowerPC 體系結(jié)構(gòu)家族樹的所有分支來說,PowerPC 體系結(jié)構(gòu)和應(yīng)用級(jí)編程模型是通用的。

PowerPC 體系結(jié)構(gòu)是一種精減指令集計(jì)算機(jī)(Reduced Instruction Set Computer,RISC)體系結(jié)構(gòu),定義了 200 多條指令。PowerPC 之所以是 RISC,原因在于大部分指令在一個(gè)單一的周期內(nèi)執(zhí)行,而且通常只執(zhí)行一個(gè)單一的操作(比如將內(nèi)存加載到寄存器,或者將寄存器數(shù)據(jù)存儲(chǔ)到內(nèi)存)。

PowerPC 體系結(jié)構(gòu)分為三個(gè)級(jí)別(或者說是“book”)。通過對(duì)體系結(jié)構(gòu)以這種方式進(jìn)行劃分,為實(shí)現(xiàn)可以選擇價(jià)格/性能比平衡的復(fù)雜性級(jí)別留出了空間,同時(shí)還保持了實(shí)現(xiàn)間的代碼兼容性。

Book I. 用戶指令集體系結(jié)構(gòu)

定義了通用于所有 PowerPC 實(shí)現(xiàn)的用戶指令和寄存器的基本集合。這些是非特權(quán)指令,為大多數(shù)程序所用。

Book II. 虛擬環(huán)境體系結(jié)構(gòu)

定義了常規(guī)應(yīng)用軟件要求之外的附加的用戶級(jí)功能,比如高速緩存管理、原子操作和用戶級(jí)計(jì)時(shí)器支持。雖然這些操作也是非特權(quán)的,但是程序通常還是通過操作系統(tǒng)調(diào)用來訪問這些函數(shù)。

Book III. 操作環(huán)境體系結(jié)構(gòu)

定義了操作系統(tǒng)級(jí)需要和使用的操作。其中包括用于內(nèi)存管理、異常向量處理、特權(quán)寄存器訪問、特權(quán)計(jì)時(shí)器訪問的函數(shù)。Book III 中詳細(xì)說明了對(duì)各種系統(tǒng)服務(wù)和功能的直接硬件支持。

從最初的 PowerPC 體系結(jié)構(gòu)的開發(fā)開始,就根據(jù)特定的市場(chǎng)需求而發(fā)生分支。當(dāng)前,PowerPC 體系結(jié)構(gòu)家族樹有兩個(gè)活躍的分支,分別是PowerPC AS體系結(jié)構(gòu)和 PowerPC Book E體系結(jié)構(gòu)。PowerPC AS 體系結(jié)構(gòu)是 IBM 為了滿足它的 eServer pSeries UNIX 和 Linux 服務(wù)器產(chǎn)品家族及它的 eServer iSeries 企業(yè)服務(wù)器產(chǎn)品家族的具體需要而定義的(參閱 參考資料中的鏈接以獲得更多資料)。PowerPC Book E 體系結(jié)構(gòu),也被稱為 Book E,是 IBM 和 Motorola 為滿足嵌入式市場(chǎng)的特定需求而合作推出的。PowerPC AS 所采用的原始 PowerPC 體系結(jié)構(gòu)與 Book E 所采用的擴(kuò)展之間的主要區(qū)別大部分集中于 Book III 區(qū)域中。

在這些衍生的體系結(jié)構(gòu)中還有一些適當(dāng)?shù)膽?yīng)用級(jí)擴(kuò)展,這些擴(kuò)展大部分與具體應(yīng)用的場(chǎng)合相關(guān),但是 PowerPC AS 和 PowerPC Book E 共享在 PowerPC 體系結(jié)構(gòu)的 Book I 中定義的基本指令集。雖然三種體系結(jié)構(gòu)主要在操作系統(tǒng)級(jí)別上表現(xiàn)出不同,但它們?cè)诤艽蟪潭壬暇邆鋺?yīng)用級(jí)的兼容性。

PowerPC 最初定義了同時(shí)對(duì) 32 位和 64 位實(shí)現(xiàn)的支持,可以讓 32 位的應(yīng)用程序運(yùn)行于 64 位系統(tǒng)之上。在 IBM pSeries 和 iSeries 服務(wù)器上使用的 PowerPC AS 系統(tǒng)現(xiàn)在只提供體系結(jié)構(gòu)的 64 位實(shí)現(xiàn),新的 64 位應(yīng)用程序和遺留的 32 位的應(yīng)用程序可以運(yùn)行于同一個(gè)系統(tǒng)之上。PowerPC Book E 體系結(jié)構(gòu)同時(shí)有 32 位實(shí)現(xiàn)和 64 位實(shí)現(xiàn),64 位實(shí)現(xiàn)也完全兼容 32 位 PowerPC 應(yīng)用程序。這兩種體系結(jié)構(gòu)都具備與 PowerPC Book I 指令和寄存器的完全兼容性,同時(shí)提供了對(duì)內(nèi)存管理、異常和中斷、計(jì)時(shí)器支持和調(diào)試支持等各方面的系統(tǒng)級(jí)擴(kuò)展。

POWER 的自然歷史

POWER 和 PowerPC 微處理器有著漫長(zhǎng)而傳奇的歷史,最初是 IBM 801,其后是 POWER、RS64 和 PowerPC 芯片系列(這些并不是線性發(fā)展的)。每個(gè)芯片家族都對(duì)計(jì)算世界有自己強(qiáng)有力的影響,從游戲控制臺(tái)到主機(jī),從數(shù)字手表到高端工作站,到處都得到了應(yīng)用。欲了解全部歷史,請(qǐng)閱讀“ 人類的 POWER:IBM 的芯片制造歷史”。

最初的 PowerPC 體系結(jié)構(gòu)仍是 PowerPC AS 和 PowerPC Book E 的主要組成部分,并仍保持了其完整性,表現(xiàn)出了令人信服的應(yīng)用級(jí)兼容性。

PowerPC 應(yīng)用程序編程模型

當(dāng)用到不只一種類型的 PowerPC 處理器時(shí),開發(fā)人員應(yīng)時(shí)刻謹(jǐn)記處理器處理內(nèi)存的方式存在一些差異。

PowerPC 存儲(chǔ)模型

PowerPC 體系結(jié)構(gòu)本身支持字節(jié)(8 位)、半字(16 位)、字(32 位) 和雙字(64 位) 數(shù)據(jù)類型。

PowerPC 實(shí)現(xiàn)還可以處理最長(zhǎng) 128 字節(jié)的多字節(jié)字符串操作。32 位 PowerPC 實(shí)現(xiàn)支持 4-gigabyte 的有效地址空間,而 64 位 PowerPC 實(shí)現(xiàn)支持 16-exabyte 的有效地址空間。所有存儲(chǔ)都可以字節(jié)尋址。

對(duì)于錯(cuò)位數(shù)據(jù)訪問來說,不同的產(chǎn)品家族提供了不同的校準(zhǔn)支持,有一些是以處理異常的方式,其他的是通過硬件中的一步或者多步操作來處理訪問。

最高位字節(jié)在最前(Big-endian)還是最低位字節(jié)在最前(little-endian)?

PowerPC、PowerPC AS 以及早期的 IBM PowerPC 4xx 家族大部分是字節(jié)排列順序最高位在最前的機(jī)器,這就意味著對(duì)半字、字以及雙字訪問來說,最重要的字節(jié)(most-significant byte,MSB)位于最低的地址。各實(shí)現(xiàn)對(duì)最低位在最前的字節(jié)排列順序方式的支持不同。PowerPC 和 PowerPC AS 提供了最小限度的支持,而 4xx 家族為最低位字節(jié)在最前的存儲(chǔ)提供了更為健壯的支持。Book E 是字節(jié)排列順序無關(guān)的,因?yàn)?Book E 體系結(jié)構(gòu)完全支持這兩種訪問方法。

PowerPC 應(yīng)用級(jí)寄存器

PowerPC 的應(yīng)用級(jí)寄存器分為三類:通用寄存器(general-purpose register,GPR)、浮點(diǎn)寄存器(floating-point register [FPR] 和浮點(diǎn)狀態(tài)和控制寄存器 [Floating-Point Status and Control Register,F(xiàn)PSCR])和專用寄存器(special-purpose register,SPR)。讓我們來分別看一下這三類寄存器。

通用寄存器(GPR)

用戶指令集體系結(jié)構(gòu)(Book I)規(guī)定,所有實(shí)現(xiàn)都有 32 個(gè) GPR(從GPR0 到 GPR31)。GPR 是所有整數(shù)操作的源和目的,也是所有加載/存儲(chǔ)操作的地址操作數(shù)的源。GPR 還提供對(duì) SPR 的訪問。所有 GRP 都是可用的,只有一種情況例外:在某些指令中,GPR0 只是代表數(shù)值 0,而不會(huì)去查找 GPR0 的內(nèi)容。

浮點(diǎn)寄存器(FPR)

Book I 規(guī)定,所有實(shí)現(xiàn)都有 32 個(gè) FPR(從 FPR0 到 FPR31)。FPR 是所有浮點(diǎn)操作的源和目的操作數(shù),可以存放 32 位和 64 位的有符號(hào)和無符號(hào)整數(shù),以及單精度和雙精度浮點(diǎn)數(shù)。FPR 還提供對(duì) FPSCR 的訪問。

注意,嵌入式微處理器實(shí)現(xiàn)時(shí)經(jīng)常不提供對(duì)浮點(diǎn)指令集的直接硬件支持,或者只是提供一個(gè)附加浮點(diǎn)硬件的接口。很多嵌入式應(yīng)用程序很少或者根本不需要浮點(diǎn)算法,而當(dāng)需要的時(shí)候,對(duì) PowerPC 浮點(diǎn)指令執(zhí)行進(jìn)行軟件仿真就足夠了。在嵌入式微處理器中,硬件中省去浮點(diǎn)(支持)而為實(shí)現(xiàn)帶來的芯片面積和功率的減少是至關(guān)重要的。[!--empirenews.page--]

浮點(diǎn)狀態(tài)和控制寄存器(FPSCR)捕獲浮點(diǎn)操作的狀態(tài)和異常結(jié)果,F(xiàn)PSCR 還具有控制位,以支持特定的異常類型和對(duì)四種舍入模式之一的選擇。對(duì) FPSCR 的訪問要通過 FPR。

專用寄存器(SPR)

SPR 給出處理器核心內(nèi)部資源的狀態(tài)并對(duì)其進(jìn)行控制。不需要系統(tǒng)服務(wù)的支持就可以由應(yīng)用程序讀寫的 SPR 包括計(jì)數(shù)寄存器(Count Register)、鏈接寄存器(Link Register)和整型異常寄存器(Integer Exception Register)。需要系統(tǒng)服務(wù)的支持才可以由應(yīng)用程序讀寫的 SPR 包括時(shí)基(Time Base)和其他各種可能支持的計(jì)時(shí)器。

指令地址寄存器(Instruction Address Register,IAR)

這個(gè)寄存器就是程序員們所熟知的 程序計(jì)數(shù)器或者 指令指針。它是當(dāng)前指令的地址。這實(shí)際上是一個(gè)偽寄存器,用戶只能通過“branch and link”指令才能直接使用這個(gè)寄存器。IAR 主要是由調(diào)試器使用,顯示將要被執(zhí)行的下一條指令。

鏈接寄存器(Link Register,LR)

這個(gè)寄存器存放的是函數(shù)調(diào)用結(jié)束處的返回地址。某些轉(zhuǎn)移指令可以自動(dòng)加載 LR 到轉(zhuǎn)移之后的指令。每個(gè)轉(zhuǎn)移指令編碼中都有一個(gè) LK 位。如果 LK 為 1,轉(zhuǎn)移指令就會(huì)將程序計(jì)數(shù)器移為 LR 中的地址。而且,條件轉(zhuǎn)移指令 bclr 轉(zhuǎn)移到 LR 中的值。

定點(diǎn)異常寄存器(Fixed-Point Exception Register,XER)

這個(gè)寄存器存放整數(shù)運(yùn)算操作的進(jìn)位以及溢出信息。它還存放某些整數(shù)運(yùn)算操作的進(jìn)位輸入以及加載和存儲(chǔ)指令( lswx 和 stswx )中傳輸?shù)淖止?jié)數(shù)。

計(jì)數(shù)寄存器(Count Register,CTR)

這個(gè)寄存器中存放了一個(gè)循環(huán)計(jì)數(shù)器,會(huì)隨特定轉(zhuǎn)移操作而遞減。條件轉(zhuǎn)移指令 bcctr 轉(zhuǎn)移到 CTR 中的值。

條件寄存器(Condition Register,CR)

這個(gè)寄存器分為八個(gè)字段,每個(gè)字段 4 位。很多 PowerPC 指令將指令的第 31 位編碼為 Rc 位,有一些指令要求 Rc 值等于 1。當(dāng) Rc 等于 1 且進(jìn)行整數(shù)操作時(shí),CR 字段 0 被設(shè)置來表示指令操作的結(jié)果:相等(Equal, EQ),大于(Greater Than, GT),小于(Less Than, LT),以及和溢出(Summary Overflow, SO)。當(dāng) Rc 等于 1 且進(jìn)行浮點(diǎn)操作時(shí),CR 字段 1 被設(shè)置用來表示 FPSCR 中異常狀態(tài)位的狀態(tài):FX、FEX、VX 和 OX。任何一個(gè) CR 字段都可以是整數(shù)或者浮點(diǎn)比較指令的目標(biāo)。CR 字段 0 還被設(shè)置用來表示條件存儲(chǔ)指令( stwcx 或者stdcx ) 的結(jié)果。還有一組指令可以操縱特定的 CR 位、特定的 CR 字段或者整個(gè) CR,通常為了測(cè)試而將幾個(gè)條件組合到同一個(gè)位中。

處理器版本寄存器(Processor Version Register,PVR)

PVR 是一個(gè) 32 位只讀寄存器,標(biāo)識(shí)處理器的版本和修訂級(jí)別。處理器版本由 PowerPC 體系結(jié)構(gòu)過程分配。修訂級(jí)別由實(shí)現(xiàn)定義。需要有特權(quán)才能訪問 PVR,所以應(yīng)用程序只能在操作系統(tǒng)函數(shù)的幫助下才可以確定處理器版本。

PowerPC 應(yīng)用級(jí)指令集

表 1 列出了不同的指令類別以及每類的指令類型。

表 1. 指令類別

 

 

指令解析

所有指令的編碼長(zhǎng)度都是 32 位。PowerPC 的位編號(hào)方式與大部分其他定義相反:第 0 位是最重要的位,第 31 位是最不重要的位。指令首先由一個(gè)字段中較高的 6 位進(jìn)行解碼,這 6 位稱為 主要操作碼(primary opcode)。其余 26 位包含的字段分別是操作數(shù)說明、立即(immediate)操作數(shù)以及擴(kuò)展的操作碼(opcode),而且這些還可能是保留的位或字段。表 2 列出了 PowerPC 定義的基本指令格式。

表 2. PowerPC 指令格式

 

D-form

這一指令格式提供至多兩個(gè)寄存器作為源操作數(shù),一個(gè)立即源,至多兩個(gè)寄存器作為目的操作數(shù)。這一指令格式的一些變種使用部分目的和源寄存器操作數(shù)說明符作為立即字段或作為擴(kuò)展的操作碼。

X-form

這一指令格式提供至多兩個(gè)寄存器作為源操作數(shù),至多兩個(gè)目的操作數(shù)。這一指令格式的一些變種使用部分目的和源寄存器操作數(shù)說明符作為立即字段或作為擴(kuò)展的操作碼。

A-form

這一指令格式提供至多三個(gè)寄存器作為源操作數(shù),以及一個(gè)目的操作數(shù)。這一指令格式的一些變種使用部分目的和源寄存器操作數(shù)說明符作為立即字段或作為擴(kuò)展的操作碼。

BD-form

條件轉(zhuǎn)移指令使用的是這一指令格式。BO 指令字段指定了條件的類型;BI 指令字段指定了以哪個(gè) CR 位作為條件;BD 字段用作轉(zhuǎn)移位置。AA 位指定了轉(zhuǎn)移是絕對(duì)轉(zhuǎn)移還是相對(duì)轉(zhuǎn)移。換名話說,轉(zhuǎn)移目標(biāo)地址是立即字段的值,還是立即字段的值與轉(zhuǎn)移地址的和。LK 位指定了下一個(gè)順序指令的地址是否作為子例程調(diào)用的返回地址保存在鏈接寄存器中。

I-form

無條件轉(zhuǎn)移指令使用這一指令格式。由于是無條件的,BD 格式中的 BO 和 BI 字段改變?yōu)榱硗獾霓D(zhuǎn)移位置,以構(gòu)成 LI 指令字段。同 BD 格式一樣,這一指令格式也支持 AA 和 LK 位。

如前所述,這些指令格式各有其變種。不過,這些格式是對(duì)大部分 PowerPC 指令集編碼結(jié)構(gòu)的最好描述。

轉(zhuǎn)移指令

PowerPC 為控制流程提供了一組指令,包括:

條件和無條件轉(zhuǎn)移指令。

“遞減計(jì)數(shù)和如果是零或者非零時(shí)轉(zhuǎn)移”的能力。

絕對(duì)轉(zhuǎn)移和相對(duì)轉(zhuǎn)移。

使用鏈接寄存器或計(jì)數(shù)寄存器來指定轉(zhuǎn)移目標(biāo)地址的轉(zhuǎn)移指令。

所有的轉(zhuǎn)移指令都具備保存后繼順序指令地址的能力,包括到鏈接寄存器的轉(zhuǎn)移。條件寄存器 32 位中的任意一位都可以指定為條件轉(zhuǎn)移的條件,并可以指定 CR 位是否必須為 0 或 1 時(shí)轉(zhuǎn)移條件才成立。[!--empirenews.page--]

條件寄存器指令

PowerPC 提供了一組用于對(duì) CR 的特定位執(zhí)行布爾操作和對(duì) CR 字段進(jìn)行拷貝的指令。它允許組合多個(gè)轉(zhuǎn)移條件,這樣可以減少代價(jià)高昂的條件轉(zhuǎn)移的數(shù)量。表 3 列出了 PowerPC CR 邏輯指令。

表 3. PowerPC CR 邏輯指令

 

整數(shù)運(yùn)算指令

很多指令用于執(zhí)行運(yùn)算操作,包括 add、substract、negate、compare、multiply 和 divide。很多格式用于立即值、溢出檢測(cè)以及進(jìn)位和借位。各實(shí)現(xiàn)中 multiply 和 divide 的執(zhí)行是不同的,因?yàn)檫@些通常是多周期指令。表 4 列出了 PowerPC 整數(shù)運(yùn)算指令。

表 4. PowerPC 整數(shù)運(yùn)算指令

 

 

邏輯、循環(huán)和移位指令

PowerPC 提供了一組完整的邏輯操作(指令),還支持對(duì)符號(hào)的擴(kuò)展以及對(duì) GPR 中前置零的統(tǒng)計(jì)。表 5 列出了 PowerPC 邏輯指令。

表 5. PowerPC 邏輯指令

 

PowerPC 提供了一組健壯而強(qiáng)大的循環(huán)和移位操作(指令),如表 6 所列。

表 6. PowerPC 循環(huán)和移位指令

 

浮點(diǎn)指令

PowerPC 提供了一組健壯的浮點(diǎn)運(yùn)算、比較和轉(zhuǎn)換操作(指令)。與軟件支持一道,PowerPC 浮點(diǎn)運(yùn)算完全符合 ANSI/IEEE 標(biāo)準(zhǔn) 754-1985 規(guī)范。在所有運(yùn)算和比較操作中都支持單精度和雙精度浮點(diǎn)格式。

雖然浮點(diǎn)數(shù)以雙精度格式存儲(chǔ)于 FPR 中,但是,有一組單精度運(yùn)算指令,可以執(zhí)行運(yùn)算操作并將最終結(jié)果舍入為單精度,同時(shí)檢測(cè)進(jìn)行單精度操作時(shí)可能會(huì)發(fā)生的異常(比如指數(shù)溢出、下溢和失去精度)。

一組 Load Floating-point Single指令可以訪問存儲(chǔ)器中的字,并在將其放入目標(biāo) FPR 前把單精度值轉(zhuǎn)換為雙精度值。

一組 Store Floating-point Single指令可以將源 FPR 中的源操作數(shù)在存儲(chǔ)到存儲(chǔ)器中目標(biāo)字之前轉(zhuǎn)換為單精度格式。

可以啟用或禁用具體種類的浮點(diǎn)異常來支持設(shè)陷(trapping) 環(huán)境。表 7 列出了基本的和可選的 PowerPC 浮點(diǎn)指令集。

表 7. PowerPC 浮點(diǎn)指令

 

 

FPSCR 處理指令

表 8 列出了基本的 PowerPC FPSCR 處理指令集。

表 8. PowerPC FPSCR 處理指令集

 

加載和存儲(chǔ)指令

所有加載和存儲(chǔ)指令的執(zhí)行都使用 GPR 或者 GPR 和指令中的立即字段作為存儲(chǔ)器訪問的地址說明符。用指令生成的數(shù)據(jù)有效地址來更新基址寄存器(也就是 RA)是大部分加載和存儲(chǔ)指令的一個(gè)可選項(xiàng)。

有用于以下方面的指令:

字節(jié)、半字、字和雙字大小。

在 GPR 或 FPR 與存儲(chǔ)器之間移動(dòng)數(shù)據(jù)。

在 GPR 或 FPR 與存儲(chǔ)器之間移動(dòng)數(shù)據(jù)。

特殊的存儲(chǔ)器訪問指令包括:

多字加載/存儲(chǔ)

即 lmw 和 stmw ,可以操作最多 31 個(gè) 32 位字。

字符串指令

這些指令可以操作最長(zhǎng) 128 字節(jié)的字符串。

內(nèi)存同步指令

這些用于實(shí)現(xiàn)內(nèi)存同步。CR 的第 2 位(EQ 位) 設(shè)置用來記錄存儲(chǔ)操作的成功完成。內(nèi)存同步指令包括:lwarx / ldarx 執(zhí)行加載并設(shè)置處理器內(nèi)部的預(yù)留位,編程模型不必明確了解這些行為。如果設(shè)置了預(yù)留位,相應(yīng)的存儲(chǔ)指令 stwcx. /stdcx. 執(zhí)行條件存儲(chǔ),并清除預(yù)留位。

lwarx (加載字并預(yù)留變址)

ldarx (加載雙字并預(yù)留變址)

stwcx (存儲(chǔ)字條件變址)

stdcx (存儲(chǔ)雙字條件變址)

PowerPC 體系結(jié)構(gòu)沒有關(guān)于本地存儲(chǔ)器的棧的概念。體系結(jié)構(gòu)沒有定義壓入或者彈出指令,也沒有定義專門的棧指針寄存器。不過,有一個(gè)軟件標(biāo)準(zhǔn)可用于 C/C++ 程序,這個(gè)標(biāo)準(zhǔn)叫做嵌入式應(yīng)用程序二進(jìn)制接口( Embedded Application Binary Interface,EABI),它定義了棧寄存器和內(nèi)存的約定。EABI 將 GPR1 預(yù)留為棧指針,GPR3 到 GPR7 用于函數(shù)參數(shù)傳遞,GPR3 用于函數(shù)返回值。

需要為 C/C++ 提供接口的匯編語言程序必須遵循同樣的標(biāo)準(zhǔn)來保持約定。

高速緩存管理指令

PowerPC 體系結(jié)構(gòu)包含了面向應(yīng)用級(jí)高速緩存訪問的高速緩存管理指令。高速緩存指令在表 9 中列出。

表 9. 高速緩存管理指令

 

當(dāng)將高速緩存處理代碼移植到不同的 PowerPC 實(shí)現(xiàn)時(shí)要當(dāng)心。雖然高速緩存指令可能是跨不同實(shí)現(xiàn)而通用的,高速緩存的組織和大小可能會(huì)有變化。例如,假定高速緩存大小以對(duì)其進(jìn)行刷新的代碼,在用于其他大小的高速緩存時(shí)可能需要進(jìn)行修改。而且,各實(shí)現(xiàn)的高速緩存初始化可能不同。有一些實(shí)現(xiàn)提供了自動(dòng)清除高速緩存標(biāo)簽的硬件,而其他實(shí)現(xiàn)需要使用軟件循環(huán)來使高速緩存標(biāo)簽無效。[!--empirenews.page--]

自修改代碼

雖然編寫自修改代碼不是一個(gè)工業(yè)標(biāo)準(zhǔn),但有些情況下它是必不可少的。下面的序列介紹了執(zhí)行代碼修改用到的指令:

存儲(chǔ)修改的指令。

執(zhí)行 dcbst 指令,強(qiáng)制包含有修改過的指令的高速緩存行進(jìn)行存儲(chǔ)。

執(zhí)行 sync 指令,確保 dcbst 完成。

執(zhí)行 icbi 指令,使將要存放修改后指令的指令高速緩存行無效。

執(zhí)行 isync 指令,清除所有指令的指令管道,那些指令在高速緩存行被設(shè)為無效之前可能早已被取走了。

現(xiàn)在可以運(yùn)行修改后的指令了。當(dāng)取這個(gè)指令時(shí)會(huì)發(fā)生指令高速緩存失敗,結(jié)果就會(huì)從存儲(chǔ)器中取得修改后的指令。

計(jì)時(shí)器

大部分實(shí)現(xiàn)都提供了一個(gè) 64 位時(shí)基,可以通過兩個(gè) 32 位寄存器讀取,或者通過一個(gè) 64 位寄存器讀取。各實(shí)現(xiàn)的計(jì)時(shí)器增量不同,SPR 數(shù)和訪問時(shí)基的指令也不同。所以,跨實(shí)現(xiàn)移植計(jì)時(shí)器代碼時(shí)要當(dāng)心。另外的計(jì)時(shí)器可能也不同,但大多數(shù)實(shí)現(xiàn)都提供了至少一種遞減的可編程計(jì)時(shí)器。

保持代碼的兼容性

需要在多個(gè)實(shí)現(xiàn)上進(jìn)行編程的 PowerPC 用戶通常會(huì)問及保持代碼兼容性的技巧。下面的建議將有助于盡量減少移植問題:

盡可能使用 C 代碼。

當(dāng)今的 C 編譯器在很多情況下可以生成與直接手寫的匯編代碼在性能上相當(dāng)?shù)拇a。作為 Book I 代碼,C 代碼將保證代碼的兼容性。

盡可能避免使用處理器相關(guān)的匯編指令。

盡量不要在 C 中嵌入處理器相關(guān)的匯編指令,因?yàn)樗鼈儗⒏y被發(fā)現(xiàn)。分離開那些已知會(huì)包含設(shè)備相關(guān)寄存器或指令的代碼。這些通常是啟動(dòng)次序和設(shè)備驅(qū)動(dòng)程序,不過也可能包括浮點(diǎn)代碼(包括 long long 類型)。保持假定和依賴全部歸檔。

使用處理器版本寄存器(PVR),但只在適當(dāng)?shù)臅r(shí)候用。

跨差別較小的實(shí)現(xiàn)的通用代碼還好,PVR 可以用于做出判斷。但是,在需要進(jìn)行較大修改的情況下(例如,PowerPC AS 相對(duì)于 Book E MMU 代碼),建議使用單獨(dú)的代碼庫(code base)。

結(jié)束語

PowerPC AS 和 PowerPC 都支持最初的 PowerPC 體系結(jié)構(gòu)中定義的應(yīng)用級(jí)基礎(chǔ)設(shè)施,同時(shí)為它們的具體目標(biāo)市場(chǎng)提供了最佳的優(yōu)化。

就其兩種操作模式之一而言,PowerPC AS 實(shí)質(zhì)上與最初的 PowerPC 相同,而 PowerPC Book E 在它的 Book III 級(jí)別的定義中,已經(jīng)走向了不同的方向,為低價(jià)格、低功率以及體系結(jié)構(gòu)靈活的嵌入式應(yīng)用進(jìn)行了最優(yōu)化。當(dāng)然,在 32 位的實(shí)現(xiàn)上還不能用雙字整數(shù)指令,在大部分嵌入式實(shí)現(xiàn)中浮點(diǎn)指令也只是通過軟件仿真提供支持。

不過,這對(duì)應(yīng)用程序二進(jìn)制在 PowerPC 體系結(jié)構(gòu)家族樹的分支中自由地遷移來說是一個(gè)非常有意義的機(jī)會(huì)。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉