国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ARM編程模型-指令流水線

這篇具有很好參考價(jià)值的文章主要介紹了ARM編程模型-指令流水線。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

流水線技術(shù)通過(guò)多個(gè)功能部件并行工作來(lái)縮短程序執(zhí)行時(shí)間,提高處理器核的效率和吞吐率,從而成為微處理器設(shè)計(jì)中最為重要的技術(shù)之一。

1. 3級(jí)流水線

到ARM7為止的ARM處理器使用簡(jiǎn)單的3級(jí)流水線,它包括下列流水線級(jí)。
(1)取指令 從寄存器裝載一條指令。
(2)譯碼(decode) 識(shí)別被執(zhí)行的指令,并為下一個(gè)周期準(zhǔn)備數(shù)據(jù)通路的控制信號(hào)。在這一級(jí),指令占有譯碼邏輯,不占用數(shù)據(jù)通路。
(3)執(zhí)行 處理指令并將結(jié)果寫回寄存器。
ARM編程模型-指令流水線,嵌入式系統(tǒng)筆記,arm開發(fā),嵌入式系統(tǒng)
當(dāng)處理器執(zhí)行簡(jiǎn)單的數(shù)據(jù)處理指令時(shí),流水線使得平均每個(gè)時(shí)鐘周期能完成1條指令。但一條指令需要3個(gè)時(shí)鐘周期來(lái)完成,因此有3個(gè)時(shí)鐘周期的延時(shí),但吞吐率是每個(gè)周期一條指令。

對(duì)于3級(jí)流水線,PC寄存器里的值并不是正在執(zhí)行的指令的地址,而是預(yù)取指令的地址,這個(gè)知識(shí)點(diǎn)很重要,后面我們會(huì)詳細(xì)的舉例來(lái)證明。

處理器要滿足高性能的要求,為了滿足這個(gè)要求,需要重新考慮處理器的組織結(jié)構(gòu)。提高性能的方法主要有兩種方法:

1.提高時(shí)鐘頻率。時(shí)鐘頻率的提高,必然引起指令執(zhí)行周期的縮短,所以要求簡(jiǎn)化流水線每一級(jí)的邏輯,流水線的級(jí)數(shù)都要增加。
2.減少每條指令的平均指令周期數(shù)CPI。這就要求重新考慮3級(jí)流水線ARM中多余1個(gè)流水線周期的實(shí)現(xiàn)方法,以便使其占有較少的周期,或者減少因指令相關(guān)造成的流水線停頓,也可以將兩者結(jié)合起來(lái)。

較高性能的ARM核使用了5級(jí)流水線,而且具有分開的指令和數(shù)據(jù)存儲(chǔ)器。在Cortex-A8中有一條13級(jí)的流水線,但是ARM公司沒(méi)有對(duì)其中的技術(shù)公開任何相關(guān)的細(xì)節(jié)。

從經(jīng)典ARM系列到現(xiàn)在Cortex系列,ARM處理器的結(jié)構(gòu)在向復(fù)雜的階段發(fā)展,但沒(méi)改變的是CPU的取址指令和地址關(guān)系,「不管是幾級(jí)流水線,都可以按照最初的3級(jí)流水線的操作特性來(lái)判斷其當(dāng)前的PC位置」。

2. 流水線舉例

為方便理解,下面我們以3級(jí)流水線為例,
1)最佳流水線
ARM編程模型-指令流水線,嵌入式系統(tǒng)筆記,arm開發(fā),嵌入式系統(tǒng)
這是一個(gè)理想的實(shí)例,所有的指令都在寄存器中執(zhí)行,且處理器完全不必離開芯片本身。每個(gè)周期,都有一條指令被執(zhí)行,流水線的容量得到了充分的發(fā)揮。指令周期數(shù) (CPI) = 1。

2)LDR流水線
ARM編程模型-指令流水線,嵌入式系統(tǒng)筆記,arm開發(fā),嵌入式系統(tǒng)
該例中,用6周期執(zhí)行了4條指令 指令周期數(shù) (CPI) = 1.5

與最佳流水線不同,裝載(LDR) 操作將數(shù)據(jù)移進(jìn)片內(nèi)導(dǎo)致了指令/數(shù)據(jù)總線被占用,因此隨后緊跟了內(nèi)部的寫周期( writeback)以完成將數(shù)據(jù)寫回寄存器。

1.數(shù)據(jù)總線在周期1, 2, 3 被使用,周期6是取指,周期4用于數(shù)據(jù)裝載,而周期5是一個(gè)內(nèi)部周期用來(lái)完成載入的數(shù)據(jù)寫回到寄存器中。
2.周期3為執(zhí)行周期:產(chǎn)生地址
3.周器4為數(shù)據(jù)周期:從存儲(chǔ)器中取數(shù)據(jù)(數(shù)據(jù)只有在周期4的末尾出現(xiàn)在內(nèi)核中)
4.周期5寫回周期:通過(guò)數(shù)據(jù)通道中的B總線和ALU將數(shù)據(jù)寫回到寄存器bank 中
5.周期6的執(zhí)行被推遲了,直到周期5寫回完成(使用ALU )。同樣內(nèi)部周期是不需要等待狀體的,但讀寫存儲(chǔ)器時(shí)可能需要。

3)分支流水線
BL指令用于實(shí)現(xiàn)指令流的跳轉(zhuǎn),并存儲(chǔ)返回地址到寄存器R14(LR)中。
ARM編程模型-指令流水線,嵌入式系統(tǒng)筆記,arm開發(fā),嵌入式系統(tǒng)
1.分支指令在其第一周期計(jì)算分支的目的地,同時(shí)在現(xiàn)行PC處完成一次指令預(yù)取,流水線被阻斷。這種預(yù)取在任何情況下都要做的,因?yàn)楫?dāng)判決地址產(chǎn)生時(shí)已來(lái)不及停止預(yù)取。
2.第二個(gè)周期在分支的目標(biāo)地址完成取指,而返回地址則存于R14如果link位已設(shè)置。
3.第三周期完成目標(biāo)地址+4的取指,重新填滿流水線,并且如果跳轉(zhuǎn)是帶鏈接的還要修改R14(減去4)以便簡(jiǎn)單地返回。
4.分支需要三個(gè)時(shí)鐘周期來(lái)執(zhí)行BL,隨后會(huì)涉及調(diào)整階段。

4)中斷流水線
ARM編程模型-指令流水線,嵌入式系統(tǒng)筆記,arm開發(fā),嵌入式系統(tǒng)
「IRQ 中斷的反應(yīng)時(shí)間最小=7周期」

1.周期1: 內(nèi)核被告知有中斷 IRQ在現(xiàn)行指令執(zhí)行完之前不會(huì)被響應(yīng)( MUL and LDM/STM 指令會(huì)有長(zhǎng)的延遲) 解碼階段:中斷被解碼(中斷已使能,設(shè)置了相應(yīng)標(biāo)志位… )。如果中斷被使能和服務(wù),正常的指令將不會(huì)被解碼。

2.周期 2: 此時(shí)總是進(jìn)入ARM狀態(tài). 執(zhí)行中斷 ( 獲取IR向量的地址), 保存 CPSR 于 SPSR, 改變CPSR模式為 IRQ 模式并禁止進(jìn)一步的 IRQ 中斷輸入。

3.周期 3: 保存 PC (0x800C) 于 r14_irq, 從IRQ異常處理向量處取指

4.周期 4: 解碼向量表中的指令; 調(diào)整r14irq 為0x8008

5.周期 4和 5: 無(wú)有用的指令取指, 由于周期 6的跳轉(zhuǎn)

6.周期 6: 取異常處理子程序的第一條指令; 從子程序返回: SUBS pc,lr,#4

這將恢復(fù)工作模式并從響應(yīng)中斷前的下一條指令處取指,如果有多個(gè)中斷,需堆棧保存返回地址。注意最大的FIQ響應(yīng)延遲為 29個(gè)周期(而非Thumb狀態(tài)的28周期!)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-692614.html

到了這里,關(guān)于ARM編程模型-指令流水線的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 計(jì)組高分筆記:【05】中央處理器 「CPU細(xì)節(jié) | 取指周期 | 間址周期 | 執(zhí)行周期 | 中斷周期 | 數(shù)據(jù)通路 | 硬布線控制器 | 微程序控制器 | 指令流水線 | LOAD | STORE」

    計(jì)組高分筆記:【05】中央處理器 「CPU細(xì)節(jié) | 取指周期 | 間址周期 | 執(zhí)行周期 | 中斷周期 | 數(shù)據(jù)通路 | 硬布線控制器 | 微程序控制器 | 指令流水線 | LOAD | STORE」

    CPU由 運(yùn)算器 和 控制器 組成。 注意:n位CPU,指機(jī)器字長(zhǎng)為n,表示一次能夠處理的二進(jìn)制位數(shù)。自然與數(shù)據(jù)總線相等 1.1.1 運(yùn)算器的基本組成 功能:對(duì)數(shù)據(jù)進(jìn)行加工 通用寄存器組 :如AX、BX、CX、DX、SP等,用于存放操作數(shù)(包括源操作數(shù)、目的操作數(shù)及中間結(jié)果)和各種地址

    2024年02月11日
    瀏覽(22)
  • 8位加法器的流水線設(shè)計(jì)(2級(jí)流水、四級(jí)流水)

    8位加法器的流水線設(shè)計(jì)(2級(jí)流水、四級(jí)流水)

    思考:流水線的設(shè)計(jì)是為了提高頻率,在一個(gè)耗時(shí)比較長(zhǎng)的組合邏輯中,加入寄存器, 可以將這個(gè)較長(zhǎng)的組合邏輯分裂幾份,從而提升主頻,缺點(diǎn)是增加了寄存器的資源。 二級(jí)流水線的加法器的設(shè)計(jì)思想如下: 在第一個(gè)周期完成低四位的加法計(jì)算,使用一個(gè)四位加法器即可

    2024年02月11日
    瀏覽(24)
  • jenkins流水線

    jenkins流水線

    1、 二、 三、 四、 五、 六、 ?

    2024年02月05日
    瀏覽(27)
  • 云效-流水線(基本教程)

    云效-流水線(基本教程)

    阿里云效地址: https://accountid-devops.aliyun.com/ 代碼在碼云, 服務(wù)器在騰訊云, 代碼是個(gè)聚合代碼 1. 選擇適合自己的模板 2. 創(chuàng)建碼云鏈接 3. 選擇代碼倉(cāng)庫(kù), 分支即可下一步 4. 部署,主機(jī)部署 5. 保存運(yùn)行(獲取打包路徑) 6. 完善部署命令 按自己的需求進(jìn)行填寫, 包括打包成docker鏡像

    2024年02月09日
    瀏覽(25)
  • 【Jenkins】pipeline流水線

    【Jenkins】pipeline流水線

    流水線既能作為任務(wù)的本身,也能作為jenkinsfile,使用流水線可以讓我們的任務(wù)從ui手動(dòng)操作,轉(zhuǎn)換為代碼化,像docker的dockerfile一樣,從shell命令到配置文件,更適合大型項(xiàng)目,可以讓團(tuán)隊(duì)其他開發(fā)者同事參與進(jìn)來(lái),同時(shí)也可以編輯開發(fā)jenkinswebui不能完成的復(fù)雜的構(gòu)建邏輯,作

    2024年02月09日
    瀏覽(37)
  • Jenkins的流水線詳解

    Jenkins的流水線詳解

    來(lái)源:u.kubeinfo.cn/ozoxBB 什么是流水線 聲明式流水線 Jenkinsfile 的使用 jenkins 有 2 種流水線分為 聲明式流水線 與 腳本化流水線 ,腳本化流水線是 jenkins 舊版本使用的流水線腳本,新版本 Jenkins 推薦使用聲明式流水線。文檔只介紹聲明流水線。 聲明式流水線 在聲明式流水線語(yǔ)

    2024年02月11日
    瀏覽(54)
  • UnityShader(一)渲染流水線

    目錄 一、什么是渲染流水線 二、渲染流程的三個(gè)概念性階段 1.應(yīng)用階段(Application Stage) 一、準(zhǔn)備好場(chǎng)景數(shù)據(jù) 二、粗粒度剔除 三、設(shè)置渲染狀態(tài) 2.幾何階段(Geometry Stage) 3.光柵化階段(Rasterizer Stage) 三、CPU和GPU的通信 1.把數(shù)據(jù)加載到顯存中 2.設(shè)置渲染狀態(tài) 3.調(diào)用Draw Ca

    2024年02月02日
    瀏覽(28)
  • Jenkins流水線怎么做?

    Jenkins流水線怎么做?

    問(wèn)CHAT:Jenkins流水線怎么做? CHAT回復(fù):Jenkins流水線是一種創(chuàng)建、測(cè)試和部署應(yīng)用程序的方法。以下是為Jenkins創(chuàng)建流水線的步驟: 1. 安裝Jenkins:首先你需要在你的服務(wù)器上安裝Jenkins。這個(gè)過(guò)程可能會(huì)根據(jù)你的操作系統(tǒng)有所不同。 2. 安裝必要的插件:為了使流水線工作,你需

    2024年01月24日
    瀏覽(38)
  • CI/CD流水線實(shí)戰(zhàn)

    CI/CD流水線實(shí)戰(zhàn)

    不知道為什么,現(xiàn)在什么技術(shù)都想學(xué),因?yàn)槲矣X(jué)得我遇到了技術(shù)的壁壘,大的項(xiàng)目接觸不到,做的項(xiàng)目一個(gè)字 辣* 。所以,整個(gè)人心浮氣躁,我已經(jīng)得通過(guò)每天的騎行和長(zhǎng)跑緩解這種浮躁了。一個(gè)周末,我再次宅在了家里,學(xué)習(xí)了一下 CICD 。 先分享一下 shigen 的學(xué)習(xí)視頻資源

    2024年02月12日
    瀏覽(45)
  • verilog實(shí)例-流水線(Pipeline)

    verilog實(shí)例-流水線(Pipeline)

    所謂流水線設(shè)計(jì)實(shí)際上是把規(guī)模較大、層次較多的組合邏輯電路分為幾個(gè)級(jí),在每一級(jí)插入寄存器組并暫存中間數(shù)據(jù)。 K級(jí)的流水線就是從組合邏輯的輸入到輸出恰好有K個(gè)寄存器組(分為K 級(jí),每一級(jí)都有一個(gè)寄存器組),上一級(jí)的輸出是下一級(jí)的輸入而又無(wú)反饋的電路。 流

    2024年02月02日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包