<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 處理器系列之PowerPC指令集

處理器系列之PowerPC指令集

作者: 時(shí)間:2018-01-12 來(lái)源:網(wǎng)絡(luò ) 收藏

 

本文引用地址:http://dyxdggzs.com/article/201801/374368.htm

  加載和存儲指令

  所有加載和存儲指令的執行都使用 GPR 或者 GPR 和指令中的立即字段作為存儲器訪(fǎng)問(wèn)的地址說(shuō)明符。用指令生成的數據有效地址來(lái)更新基址寄存器(也就是 RA)是大部分加載和存儲指令的一個(gè)可選項。

  有用于以下方面的指令:

  字節、半字、字和雙字大小。

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

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

  特殊的存儲器訪(fǎng)問(wèn)指令包括:

  多字加載/存儲

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

  字符串指令

  這些指令可以操作最長(cháng) 128 字節的字符串。

  內存同步指令

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

  lwarx (加載字并預留變址)

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

  stwcx (存儲字條件變址)

  stdcx (存儲雙字條件變址)

  棧

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

  需要為 C/C++ 提供接口的匯編語(yǔ)言程序必須遵循同樣的標準來(lái)保持約定。

  高速緩存管理指令

   體系結構包含了面向應用級高速緩存訪(fǎng)問(wèn)的高速緩存管理指令。高速緩存指令在表 9 中列出。

  表 9. 高速緩存管理指令

    

 

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

  自修改代碼

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

  存儲修改的指令。

  執行 dcbst 指令,強制包含有修改過(guò)的指令的高速緩存行進(jìn)行存儲。

  執行 sync 指令,確保 dcbst 完成。

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

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

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

  計時(shí)器

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

  保持代碼的兼容性

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

  盡可能使用 C 代碼。

  當今的 C 編譯器在很多情況下可以生成與直接手寫(xiě)的匯編代碼在性能上相當的代碼。作為 Book I 代碼,C 代碼將保證代碼的兼容性。

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

  盡量不要在 C 中嵌入相關(guān)的匯編指令,因為它們將更難被發(fā)現。分離開(kāi)那些已知會(huì )包含設備相關(guān)寄存器或指令的代碼。這些通常是啟動(dòng)次序和設備驅動(dòng)程序,不過(guò)也可能包括浮點(diǎn)代碼(包括 long long 類(lèi)型)。保持假定和依賴(lài)全部歸檔。

  使用處理器版本寄存器(PVR),但只在適當的時(shí)候用。

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

  結束語(yǔ)

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

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

  不過(guò),這對應用程序二進(jìn)制在 PowerPC 體系結構家族樹(shù)的分支中自由地遷移來(lái)說(shuō)是一個(gè)非常有意義的機會(huì )。


上一頁(yè) 1 2 3 4 下一頁(yè)

關(guān)鍵詞: 處理器 PowerPC

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>