0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CPU流水線的問題

FPGA之家 ? 來源:strongerHuang ? 作者:strongerHuang ? 2022-09-22 10:04 ? 次閱讀

為什么有些CPU的主頻更低,但運(yùn)算效率卻更高呢?

比如:51單片機(jī)30M主頻,STM32單片機(jī)20M主頻,執(zhí)行相同一段代碼可能主頻更低的STM32所花的時(shí)間更短。

這里就牽涉到CPU流水線的問題,本文圍繞CPU流水線描述相關(guān)內(nèi)容。

一、早期CPU流水線

1.流水線來源

流水線的概念來源于工業(yè)制造領(lǐng)域,以汽車裝配為例來解釋流水線的工作方式,假設(shè)裝配一輛汽車需要四個(gè)步驟:

1.沖壓:制作車身外殼和底盤等部件;

2.焊接:將沖壓成形后的各部件焊接成車身;

3.涂裝:將車身等主要部件清洗、化學(xué)處理、打磨、噴漆和烘干;

4.總裝:將各部件(包括發(fā)動(dòng)機(jī)和向外采購的零部件)組裝成車;

汽車裝配需要沖壓、焊接、涂裝和總裝四個(gè)工人,最簡單的方法是一輛汽車依次經(jīng)過上述四個(gè)步驟裝配完成之后,下一輛汽車才開始進(jìn)行裝配,最早期的工業(yè)制造就是采用的這種原始的方式,即同一時(shí)刻只有一輛汽車在裝配。

不久之后人們發(fā)現(xiàn),某個(gè)時(shí)段中一輛汽車在進(jìn)行裝配時(shí),其它三個(gè)工人都處于閑置狀態(tài),顯然這是對(duì)資源的極大浪費(fèi),于是思考出能有效利用資源的新方法,即在第一輛汽車經(jīng)過沖壓進(jìn)入焊接工序的時(shí)候,立刻開始進(jìn)行第二輛汽車的沖壓,而不是等到第一輛汽車經(jīng)過全部四個(gè)工序后才開始,這樣在后續(xù)生產(chǎn)中就能夠保證四個(gè)工人一直處于運(yùn)行狀態(tài),不會(huì)造成人員的閑置。這樣的生產(chǎn)方式就好似流水川流不息,因此被稱為流水線。

2.CPU流水線

1989 年推出的 i486 處理器引入了五級(jí)流水線。這時(shí),在 CPU 中不再僅運(yùn)行一條指令,每一級(jí)流水線在同一時(shí)刻都運(yùn)行著不同的指令。這個(gè)設(shè)計(jì)使得 i486 比同頻率的 386 處理器性能提升了不止一倍。

五級(jí)流水線中的取指階段將指令從指令緩存中取出(i486 中的指令緩存為 8KB);

第二級(jí)為譯碼階段,將取出的指令翻譯為具體的功能操作;

第三級(jí)為轉(zhuǎn)址階段,用來將內(nèi)存地址和偏移進(jìn)行轉(zhuǎn)換;

第四級(jí)為執(zhí)行階段,指令在該階段真正執(zhí)行運(yùn)算;

第五級(jí)為退出階段,運(yùn)算的結(jié)果被寫回寄存器或者內(nèi)存。

由于處理器同時(shí)運(yùn)行了多條指令,大大提升了程序運(yùn)行的性能。

二、CPU流水線技術(shù)

CPU流水線技術(shù)是一種將指令分解為多步,并讓不同指令的各步操作重疊,從而實(shí)現(xiàn)幾條指令并行處理,以加速程序運(yùn)行過程的技術(shù)。

指令的每步有各自獨(dú)立的電路來處理,每完成一步,就進(jìn)到下一步,而前一步則處理后續(xù)指令。

a518bba0-3a17-11ed-9e49-dac502259ad0.jpg

采用流水線技術(shù)后,并沒有加速單條指令的執(zhí)行,每條指令的操作步驟一個(gè)也不能少,只是多條指令的不同操作步驟同時(shí)執(zhí)行,因而從總體上看加快了指令流速度,縮短了程序執(zhí)行時(shí)間。

流水線技術(shù)是通過增加計(jì)算機(jī)硬件來實(shí)現(xiàn)的。它要求各功能段能互相獨(dú)立地工作,這就要增加硬件,相應(yīng)地也加大了控制的復(fù)雜性。如果沒有互相獨(dú)立的操作部件,很可能會(huì)發(fā)生各種沖突。例如要能預(yù)取指令,就需增加指令的硬件電路,并把取來的指令存放到指令隊(duì)列緩沖器中,使微處理器能同時(shí)進(jìn)行取指令和分析、執(zhí)行指令的操作。

---來自百度百科

三、流水線與代碼執(zhí)行效果

為什么說同主頻的51單片機(jī)相比STM32執(zhí)行效率低呢?

除了大家認(rèn)為的8位和32位寬度區(qū)別之外,還有一個(gè)就是51單片機(jī)不支持流水線(也可以理解為單流水線),而STM32支持流水線。

Cortex‐M3處理器使用一個(gè) 3 級(jí)流水線。流水線的 3 級(jí)分別是:取指、解碼和執(zhí)行, 如圖:

a53c6ba4-3a17-11ed-9e49-dac502259ad0.png

通過下面一張圖來對(duì)比單流水線和多級(jí)流水線,你就更能明白為什么51單片機(jī)執(zhí)行效率低了。

a55d21dc-3a17-11ed-9e49-dac502259ad0.jpg

四、多級(jí)流水線優(yōu)缺點(diǎn)

并非在所有情況下流水線技術(shù)都起作用??赡苡幸恍┤秉c(diǎn)。如果一條指令流水線能夠在每一個(gè)時(shí)脈周期接納一條新的指令,被稱為完整流水線(fully pipelined)。因流水線中的指令需要延遲處理而要等待數(shù)個(gè)時(shí)脈周期,被稱為非完整流水線。

當(dāng)一名程序員(或者組合者/編譯者)編寫組合代碼(或者匯編碼)時(shí),他們會(huì)假定每個(gè)指令是循序運(yùn)行的。而這個(gè)假設(shè)會(huì)使流水線無效。當(dāng)此現(xiàn)象發(fā)生后程序會(huì)表現(xiàn)的不正常,而此現(xiàn)象就是危害。不過當(dāng)前有提供幾種技術(shù)來解決這些危害像是轉(zhuǎn)發(fā)與延遲等。

1.優(yōu)點(diǎn)

減少了處理器執(zhí)行指令所需要的時(shí)脈周期,在通常情況下增加了指令的輸入頻率(issue-rate)。

一些集成電路,例如加法器或者乘法器,通過添加更多的環(huán)路使其工作得更快,如果以流水線替代,能相對(duì)地減少環(huán)路。

2.缺點(diǎn)

流水線處理器設(shè)計(jì)復(fù)雜度更高、生產(chǎn)成本更高;

流水線的處理器必須在數(shù)據(jù)路徑中添加額外觸發(fā)器。

非流水線處理器有固定指令位寬,流水線處理器的性能更難以預(yù)測,并且不同的程序之間的變化可能更大。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10698

    瀏覽量

    209328
  • 流水線
    +關(guān)注

    關(guān)注

    0

    文章

    112

    瀏覽量

    25464
  • 工業(yè)制造
    +關(guān)注

    關(guān)注

    0

    文章

    398

    瀏覽量

    27995

原文標(biāo)題:為什么CPU流水線會(huì)提高代碼執(zhí)行效率?

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    行云流水線 滿足你對(duì)工作流編排的一切幻想~skr

    流水線模型 眾所周知,DevOps流水線(DevOps pipeline)的本質(zhì)是實(shí)現(xiàn)自動(dòng)化工作流程,用于支持軟件開發(fā)、測試和部署的連續(xù)集成、交付和部署(CI/CD)實(shí)踐。它是DevOps方法論
    的頭像 發(fā)表于 08-05 13:42 ?145次閱讀

    ADS900高速流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADS900高速流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-30 14:11 ?0次下載
    ADS900高速<b class='flag-5'>流水線</b>模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    ADS930高速流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADS930高速流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-30 14:10 ?0次下載
    ADS930高速<b class='flag-5'>流水線</b>模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    ADS5421流水線式模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADS5421流水線式模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-30 11:16 ?0次下載
    ADS5421<b class='flag-5'>流水線</b>式模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    ADS5413 CMOS流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADS5413 CMOS流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-29 13:21 ?0次下載
    ADS5413 CMOS<b class='flag-5'>流水線</b>模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    ADS828流水線式CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADS828流水線式CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-23 09:17 ?0次下載
    ADS828<b class='flag-5'>流水線</b>式CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    固定式的掃碼器在SMT流水線中的使用

    新大陸固定式掃碼器作為一種高效的條碼掃描設(shè)備,廣泛應(yīng)用于各個(gè)行業(yè)中,尤其是在SMT(表面貼裝技術(shù))流水線中有重要的作用。以下是新大陸固定式掃碼器在SMT流水線中的具體使用情況。提高生產(chǎn)效率和質(zhì)量
    的頭像 發(fā)表于 07-03 10:18 ?330次閱讀
    固定式的掃碼器在SMT<b class='flag-5'>流水線</b>中的使用

    RISC-V架構(gòu)的多級(jí)流水線處理

    有的單核RISC-V MCU支持四級(jí)流水線,有的只支持三級(jí)流水線,是不是級(jí)數(shù)越多,帶來的開銷越大,功耗也越高呢?
    發(fā)表于 05-20 16:01

    具有3態(tài)輸出的多級(jí)流水線寄存器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《具有3態(tài)輸出的多級(jí)流水線寄存器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 05-16 09:39 ?0次下載
    具有3態(tài)輸出的多級(jí)<b class='flag-5'>流水線</b>寄存器數(shù)據(jù)表

    牽引機(jī)和挖掘機(jī)裝配流水線自動(dòng)互鎖防呆系統(tǒng)無線通訊應(yīng)用

    在挖掘機(jī)裝配工序中,液壓系統(tǒng)檢測、調(diào)試是其生產(chǎn)工藝中的重要環(huán)節(jié)。液壓檢測過程中需要操作鏟斗、斗桿、動(dòng)臂動(dòng)作,這一過程中流水線挖掘機(jī)因帶動(dòng)偏移易發(fā)生安全事故及機(jī)械損傷故障等情況,需要采用牽引機(jī)鏈條牽引
    的頭像 發(fā)表于 02-26 08:52 ?261次閱讀
    牽引機(jī)和挖掘機(jī)裝配<b class='flag-5'>流水線</b>自動(dòng)互鎖防呆系統(tǒng)無線通訊應(yīng)用

    如何幫助提高CPU分支跳轉(zhuǎn)的正確率

    。 唯一的不同就是在分支判斷的時(shí)候,prog2.c加了likely。我們先看下實(shí)際的結(jié)果如何: 可以看出,加了likely的prog2,明顯用時(shí)變短。原因何在? 為了理解上面的例子,我們先介紹CPU流水線相關(guān)知識(shí): 3.1. CPU
    的頭像 發(fā)表于 12-13 11:25 ?537次閱讀
    如何幫助提高<b class='flag-5'>CPU</b>分支跳轉(zhuǎn)的正確率

    超級(jí)方便的輕量級(jí)Python流水線工具

    Mara-pipelines 是一個(gè)輕量級(jí)的數(shù)據(jù)轉(zhuǎn)換框架,具有透明和低復(fù)雜性的特點(diǎn)。其他特點(diǎn)如下: 基于非常簡單的Python代碼就能完成流水線開發(fā)。 使用 PostgreSQL 作為數(shù)據(jù)處理引擎
    的頭像 發(fā)表于 10-31 11:26 ?542次閱讀
    超級(jí)方便的輕量級(jí)Python<b class='flag-5'>流水線</b>工具

    多周期cpu的設(shè)計(jì)思想是什么?怎樣實(shí)現(xiàn)cpu流水線?

    多周期cpu的設(shè)計(jì)思想是什么?怎樣實(shí)現(xiàn)cpu流水線? 多周期cpu的設(shè)計(jì)思想是針對(duì)傳統(tǒng)的單周期處理器在執(zhí)行每條指令時(shí)需要花費(fèi)大量時(shí)間等待內(nèi)存訪問,而提出來一種新型的處理器設(shè)計(jì)思想。多
    的頭像 發(fā)表于 10-19 16:53 ?2114次閱讀

    單周期cpu和多周期cpu的區(qū)別 多周期cpu流水線的區(qū)別

    單周期cpu和多周期cpu的區(qū)別 多周期cpu流水線的區(qū)別? 單周期CPU和多周期CPU的區(qū)別
    的頭像 發(fā)表于 10-19 16:53 ?1w次閱讀

    流水線ADC結(jié)構(gòu)解析 流水線ADC和其它ADC的比較

    低采樣速率ADC仍然采用逐次逼近(SAR)、積分型結(jié)構(gòu)以及最近推出的過采樣ΣΔADC,而高采樣速率(幾百M(fèi)SPS以上)大多用閃速ADC及其各種變型電路。然而,最近幾年各種各樣的流水線ADC已經(jīng)在速度
    發(fā)表于 09-26 10:24 ?1045次閱讀
    <b class='flag-5'>流水線</b>ADC結(jié)構(gòu)解析 <b class='flag-5'>流水線</b>ADC和其它ADC的比較