衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ARMv7-A架構學習筆記:通用寄存器與流水線

嵌入式那些事 ? 來源:嵌入式那些事 ? 2023-10-16 16:33 ? 次閱讀

世界上有很多種體系結構的處理器,比較知名的處理器體系結構有:ARM、x86、RISC-V、mips、LoongArch、PowerPC等。不論是哪一種架構的處理器,其處理器核心都會自帶一定數量的寄存器,這些寄存器在處理器核心的運行過程中發揮著基礎而又重要的作用。

ARM體系結構是一種基于指令加載和存儲的體系結構。在這種體系結構下,所有的數據處理都需要在通用寄存器中完成,而不能直接在內存中完成。因此,這種體系結構的處理器核心處理數據的過程為:首先把待處理數據從內存加載到通用寄存器,然后進行處理,最后把結果寫入內存中。

通用寄存器

ARM架構提供了16個32位通用寄存器(R0-R15)用于軟件使用。其中R0-R12是普通寄存器,R13、R14和R15在程序的運行過程中通常用作固定的用途。

R13:又叫堆棧指針寄存器(Stack pointer)SP,SP通常用于保存堆棧地址,在使用入棧和出棧指令時,SP中的堆棧地址會自動的更新。堆棧主要用于保存局部變量,保存函數間調用的關鍵寄存器。對于根本不需要進行堆棧操作的程序,SP可以當做普通寄存器來存儲數據。

R14:又叫鏈接寄存器(Link register)LR,LR主要用于存放函數的返回地址,即當函數返回時,知道自己該回到哪兒去繼續運行。通常鏈接寄存器是和BL/BLX/CALL指令搭配使用,這幾個指令被調用后,默認會自動將當前調用指令的下一條指令地址保存到LR寄存器當中。

R15:又叫程序計數器(Program Counter)PC,PC主要用于存放CPU取指的地址。ARMv7架構同時支持ARM指令集和Thumb指令集。在ARM指令集中,當CPU正在執行A指令時,PC的值為當前指令A地址+8;在Thumb指令集中,由于Thumb指令集為16位,當CPU正在執行A指令時,PC的值為當前指令A地址+4。但是當手動向PC賦值時,CPU就會跳轉到賦值所代表的地址處去運行。記住PC存放的是取指地址,不是當前CPU運行地址。

備注:在ARM狀態下,PC指向的地址bit[1:0]總是為0,因此PC指向的地址都是4字節對齊。ARMv7架構的處理器支持混合編碼即同時支持ARM指令集和Thumb指令集,因此為了區分Thumb指令集和ARM指令集,ARM將PC指向地址的bit[0]位作為標志位。如果PC指向的地址bit[0]位為1,表示當前是Thumb指令集;如果PC指向的地址bit[0]位為0,表示當前是ARM指令集。

三級流水線

為了增加處理器指令流的速度,ARM使用了多級流水線技術。多級流水線技術是一種將指令的執行分解成多個步驟,并讓不同指令的各步驟重疊的一種準并行處理實現技術。經典的三級流水線結構將指令的執行分成取指,譯碼和執行這三個階段。

可以將指令的執行過程看成工廠加工產品的過程,當沒有采用流水線時只有一個工人A,工人A先對指令取指,然后對指令譯碼,最后執行指令,然后再次對指令取指周而復始。工人A在同一個時間只能干一件事,指令的執行也就只有等工人A對指令完成取指和譯碼之后才能進行。工廠老板一看,這產品的生產效率太低,就又請了工人B和工人C,現在工人A只負責取指,工人B只負責譯碼,工人C只負責執行,這樣三條流水線同時工作,每時每刻都有指令在被取指,譯碼和執行,產品的生產效率大大的提高了。三級流水線示意圖如下圖所示:

02ec848a-6bfb-11ee-939d-92fbcf53809c.png

ARMv7-A架構學習_3級流水線

上圖是ARM指令集的三級流水線結構,每條指令的地址間隔為4字節,當CPU在t3時間段開始執行add r0,r1,#3指令時,PC的值為0x00000008,即PC此時指向cmp r0,#9指令處。記住PC存放的是取指地址,不是當前CPU運行地址。結合上圖對于Thumb指令集的PC值分析也是比較簡單的。

采用多級流水線技術后,并沒有加速單條指令的執行,每條指令的步驟并沒有減少,只是多條指令的不同操作步驟同時執行,因而從總體上看加快了指令流速度,縮短了程序執行時間。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19372

    瀏覽量

    230438
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9117

    瀏覽量

    368216
  • 寄存器
    +關注

    關注

    31

    文章

    5358

    瀏覽量

    120775
  • 流水線
    +關注

    關注

    0

    文章

    120

    瀏覽量

    25903
  • RISC-V
    +關注

    關注

    45

    文章

    2306

    瀏覽量

    46291

原文標題:ARMv7-A 那些事 - 2.通用寄存器與流水線

文章出處:【微信號:嵌入式那些事,微信公眾號:嵌入式那些事】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    使用流水線寄存器實現最佳時序性能方案

    本篇博文描述的是通過將 URAM 矩陣配置為使用流水線寄存器來實現最佳時序性能的方法
    的頭像 發表于 07-26 16:01 ?6463次閱讀
    使用<b class='flag-5'>流水線</b><b class='flag-5'>寄存器</b>實現最佳時序性能方案

    基于FPGA的移位寄存器流水線結構FFT處理

    基于FPGA的移位寄存器流水線結構FFT處理
    發表于 08-18 00:04

    【夢翼師兄今日分享】 流水線設計講解

    用到流水線。本節,夢翼師兄和大家一起初步地學習流水線流水線基本概念流水線的設計,就是指對延時較大的組合邏輯插入
    發表于 12-05 11:53

    FPGA中的流水線設計

    )片內 sram 的讀操作,因為 sram 的讀操作本身就是兩極流水線,除非下一步操作依賴讀結果,否則使用流水線是自然而然的事情。4)組合邏輯太長,比如(a+b)*c,那么在加法和乘法之間插入
    發表于 10-26 14:38

    流水線寄存器問題

    圖中的DFG(Data Flow Graph)節點已經標出了傳輸延遲,求該電路中流水線寄存器的最佳放置位置?求問大神解答這個題
    發表于 11-20 11:02

    ARM架構系列中的流水線設計

    當前階段解碼。它的吞吐量幾乎是 ARM 7 的兩倍。核心頻率高于ARM 9。流水線的階段數量可能會根據每個周期處理的指令集增加或減少(在大多數情況下,階段傾向于增加以提高效率)。基本ARM微架構圖5某
    發表于 04-11 17:23

    ARM模式、寄存器流水線等基礎知識學習

    此模式) ;異常發生之后,CPU必須要立刻做出響應,關于異常后面會詳細講解。四、ARM寄存器Cortex A系列ARM處理共有40個32位寄存器,其中33個為
    發表于 08-17 15:39

    基于ROB重命名的方法的RISC-V超標量處理中寫回/提交流水線寄存器應該寫些什么信息?

    關于這個流水線寄存器感覺沒什么必要。一些提交用到的信息(目的寄存器的寫信號,內存的寫信號,要寫的數據,寫的地址等等)都在ROB中了;提交的時候是通過寫指針來訪問ROB的,對于存指針的寄存器
    發表于 04-06 10:47

    ARM體系結構參考手冊ARMv7-AARMv7-R版本

    提前(AOT)編譯的特定支持。 ·決定處理如何運行的模式和狀態,包括當前的執行特權和安全性。 ·例外模式。 ·內存模型,定義內存排序和內存管理: -ARMv7-A架構配置文件定義虛擬內存系統
    發表于 08-12 07:46

    什么是流水線技術

    什么是流水線技術 流水線技術
    發表于 02-04 10:21 ?3936次閱讀

    Verilog基本功之:流水線設計Pipeline Design

    第一部分什么是流水線 第二部分什么時候用流水線設計 第三部分使用流水線的優缺點 第四部分流水線加法器舉例 一. 什么是流水線
    發表于 09-25 17:12 ?6512次閱讀

    關于ARM流水線的資料和分析

    流水線設計就是將組合邏輯系統地分割,并在各個部分(分級)之間插入寄存器,并暫存中間數據的方法。目的是提高數據吞吐率(提高處理速度)。
    發表于 07-08 14:41 ?5次下載
    關于ARM<b class='flag-5'>流水線</b>的資料和分析

    各種流水線特點及常見流水線設計方式

    按照流水線的輸送方式大體可以分為:皮帶流水裝配線、板鏈線、倍速鏈、插件線、網帶線、懸掛線及滾筒流水線這七類流水線
    的頭像 發表于 07-05 11:12 ?7430次閱讀
    各種<b class='flag-5'>流水線</b>特點及常見<b class='flag-5'>流水線</b>設計方式

    什么是流水線 Jenkins的流水線詳解

    jenkins 有 2 種流水線分為聲明式流水線與腳本化流水線,腳本化流水線是 jenkins 舊版本使用的流水線腳本,新版本 Jenkin
    發表于 05-17 16:57 ?1099次閱讀

    具有3態輸出的多級流水線寄存器數據表

    電子發燒友網站提供《具有3態輸出的多級流水線寄存器數據表.pdf》資料免費下載
    發表于 05-16 09:39 ?0次下載
    具有3態輸出的多級<b class='flag-5'>流水線</b><b class='flag-5'>寄存器</b>數據表
    杭州百家乐西园| 宝马会百家乐娱乐城| 绥棱县| 678百家乐博彩娱乐场开户注册| 百家乐官网的路单怎样看| 太阳城招聘| 百家乐投注平台信誉排名| 百家乐官网赌博是否违法| 金矿百家乐的玩法技巧和规则| 大发888安装包| 百家乐的桌子| 澳门百家乐官网才能| 博彩网站排名| 威尼斯人娱乐城平台| 太阳城百家乐网址--| 四方百家乐官网的玩法技巧和规则| 百家乐官网怎么看单| tt娱乐城网址| 大发888皇家赌场| 正品百家乐的玩法技巧和规则 | 百家乐官网玩法说明| 永利娱乐城提款| 大发888客户端下载| 91百家乐的玩法技巧和规则 | 百家乐官网走势图解| 宝马会娱乐城返水| 六合彩| 爱玩棋牌官方下载| 太阳城巴黎左岸| 威尼斯人娱乐城信誉怎样| 百家乐三路法| 百家乐破解策略| 百家乐牌路分析仪| 百家乐知识技巧玩法| 克拉克百家乐官网试玩| 百家乐官网策略详解| 百家乐官网游戏类型| 慈溪市| 百家乐官网庄闲机率分析| 百家乐官网庄河闲的赌法| 百家乐官网庄闲收益率|