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

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

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

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

strongerHuang ? 來(lái)源:嵌入式專(zhuān)欄 ? 作者:strongerHuang ? 2022-06-24 09:41 ? 次閱讀

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

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

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

早期CPU流水線(xiàn)

1.流水線(xiàn)來(lái)源

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

1.沖壓:制作車(chē)身外殼和底盤(pán)等部件; 2.焊接:將沖壓成形后的各部件焊接成車(chē)身; 3.涂裝:將車(chē)身等主要部件清洗、化學(xué)處理、打磨、噴漆和烘干; 4.總裝:將各部件(包括發(fā)動(dòng)機(jī)和向外采購(gòu)的零部件)組裝成車(chē);

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

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

2.CPU流水線(xiàn)

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

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

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

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

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

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

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

CPU流水線(xiàn)技術(shù)

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

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

877c6e6e-f356-11ec-ba43-dac502259ad0.jpg

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

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

流水線(xiàn)與代碼執(zhí)行效果

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

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

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

878eac3c-f356-11ec-ba43-dac502259ad0.png

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

879c9716-f356-11ec-ba43-dac502259ad0.jpg

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

并非在所有情況下流水線(xiàn)技術(shù)都起作用,可能有一些缺點(diǎn)。如果一條指令流水線(xiàn)能夠在每一個(gè)時(shí)脈周期接納一條新的指令,被稱(chēng)為完整流水線(xiàn)(fully pipelined)。因流水線(xiàn)中的指令需要延遲處理而要等待數(shù)個(gè)時(shí)脈周期,被稱(chēng)為非完整流水線(xiàn)。

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

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

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

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

2.缺點(diǎn)

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

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

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

審核編輯 :李倩

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

    關(guān)注

    68

    文章

    10810

    瀏覽量

    210878
  • 流水線(xiàn)
    +關(guān)注

    關(guān)注

    0

    文章

    118

    瀏覽量

    25582
  • 焊接
    +關(guān)注

    關(guān)注

    38

    文章

    3031

    瀏覽量

    59536

原文標(biāo)題:ARM流水線(xiàn)如何提高代碼執(zhí)行效率

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CPU主頻是什么意思

    CPU主頻,作為計(jì)算機(jī)處理器性能的一個(gè)重要指標(biāo),承載著豐富的技術(shù)內(nèi)涵與實(shí)際應(yīng)用價(jià)值。以下是對(duì)CPU主頻的詳細(xì)解析,包括其定義、用途、技術(shù)原理、影響因素以及在多個(gè)領(lǐng)域的實(shí)際應(yīng)用。
    的頭像 發(fā)表于 09-26 15:50 ?691次閱讀

    CPU時(shí)鐘周期與主頻的關(guān)系和區(qū)別

    CPU時(shí)鐘周期與主頻是計(jì)算機(jī)體系結(jié)構(gòu)中兩個(gè)緊密相連且至關(guān)重要的概念,它們之間既存在關(guān)系又有所區(qū)別。以下將詳細(xì)闡述CPU時(shí)鐘周期與主頻的關(guān)系和區(qū)別。
    的頭像 發(fā)表于 09-26 15:46 ?1083次閱讀

    提高高開(kāi)關(guān)頻率下更高負(fù)載的效率應(yīng)用報(bào)告

    電子發(fā)燒友網(wǎng)站提供《提高高開(kāi)關(guān)頻率下更高負(fù)載的效率應(yīng)用報(bào)告.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 09:33 ?0次下載
    提高高開(kāi)關(guān)頻率下<b class='flag-5'>更高</b>負(fù)載的<b class='flag-5'>效率</b>應(yīng)用報(bào)告

    CPU主要參數(shù)有哪些

    CPU(Central Processing Unit,中央處理器)是計(jì)算機(jī)系統(tǒng)的核心部件,負(fù)責(zé)執(zhí)行程序指令、處理數(shù)據(jù)和進(jìn)行邏輯運(yùn)算CPU的參數(shù)繁多,其中一些關(guān)鍵參數(shù)對(duì)于理解和選擇
    的頭像 發(fā)表于 09-10 11:51 ?953次閱讀

    使用TPS25961獲得性能更高、空間更小、成本更低的保護(hù)功能

    電子發(fā)燒友網(wǎng)站提供《使用TPS25961獲得性能更高、空間更小、成本更低的保護(hù)功能.pdf》資料免費(fèi)下載
    發(fā)表于 09-09 09:31 ?0次下載
    使用TPS25961獲得性能<b class='flag-5'>更高</b>、空間更小、成本<b class='flag-5'>更低</b>的保護(hù)功能

    有沒(méi)有參數(shù)和THS4521差不多,功耗更低的高速運(yùn)放?

    有沒(méi)有參數(shù)和THS4521差不多,功耗更低的高速運(yùn)放?
    發(fā)表于 09-06 06:07

    cpu運(yùn)算器和控制器的作用是什么

    CPU運(yùn)算器和控制器是計(jì)算機(jī)的核心組成部分,它們共同完成計(jì)算機(jī)的各種運(yùn)算和控制任務(wù)。下面我們將詳細(xì)介紹運(yùn)算器和控制器的作用。 運(yùn)算器的作用
    的頭像 發(fā)表于 06-30 11:15 ?1731次閱讀

    cpu控制器負(fù)責(zé)什么運(yùn)算

    、設(shè)計(jì)和實(shí)現(xiàn)等方面的內(nèi)容。 CPU控制器的功能 CPU控制器是計(jì)算機(jī)系統(tǒng)中最重要的組件之一。它的主要功能包括: 1.1 指令執(zhí)行:CPU控制器負(fù)責(zé)執(zhí)行程序中的指令。這些指令包括算術(shù)運(yùn)算
    的頭像 發(fā)表于 06-30 11:14 ?746次閱讀

    cpu控制器和運(yùn)算器組成的部件有哪些

    CPU(中央處理器)是計(jì)算機(jī)的核心部件,負(fù)責(zé)執(zhí)行程序指令和處理數(shù)據(jù)。CPU主要由控制器和運(yùn)算器組成,這兩個(gè)部件共同完成計(jì)算機(jī)的運(yùn)算任務(wù)。下面詳細(xì)介紹
    的頭像 發(fā)表于 06-30 11:01 ?1470次閱讀

    什么是cpu主頻和外頻,它們之間關(guān)系如何

    主頻主頻是指CPU內(nèi)部的時(shí)鐘頻率,也被稱(chēng)為時(shí)鐘速度或運(yùn)行頻率。它決定了CPU的工作速度和處理器能夠完成的每秒操作數(shù)量。主頻越高,
    的頭像 發(fā)表于 02-03 16:50 ?3638次閱讀

    提高系統(tǒng)效率的幾個(gè)誤解解析

    中斷任務(wù)特別多的話(huà),這個(gè)沒(méi)退出來(lái),后面又接踵而至,一會(huì)兒系統(tǒng)就將崩潰了。如果任務(wù)數(shù)量多很頻繁的話(huà),CPU的 很大精力都用在進(jìn)出中斷的開(kāi)銷(xiāo)上,系統(tǒng)效率極為低下,如果改用查詢(xún)方式反而可極大提高
    發(fā)表于 01-15 07:29

    一文了解CPU高速緩存

    CPU的核心功能包括數(shù)據(jù)運(yùn)算和指令控制。CPU運(yùn)算的數(shù)據(jù)和執(zhí)行的指令全部存儲(chǔ)在CPU的寄存器中,這些數(shù)據(jù)和指令又都來(lái)自于
    的頭像 發(fā)表于 01-02 16:01 ?1464次閱讀
    一文了解<b class='flag-5'>CPU</b>高速緩存

    影響CPU性能的高低的因素是什么

    根據(jù)以上公式,可以反向推算出 CPU 的外頻。如 CPU 主頻為 3.2GHz,倍頻為 24 時(shí),外頻為 3200MHz÷24=133MHz。
    發(fā)表于 12-08 12:19 ?1930次閱讀

    瑞芯微RK3568J如何“調(diào)節(jié)主頻”,實(shí)現(xiàn)功耗降低?一文教會(huì)您!

    ,在overdrive模式下處理器主頻可調(diào)節(jié)至更高,芯片使用壽命會(huì)縮短。根據(jù)仿真結(jié)果,連續(xù)工作在1.8GHz@1.05V和105°C時(shí),RK3568J芯片使用壽命會(huì)降至3年以下。 如需運(yùn)行在高
    發(fā)表于 12-01 09:48

    CPU技術(shù)路線(xiàn)、分類(lèi)及運(yùn)行原理

    CPU按用途可分為桌面、服務(wù)器、移動(dòng)端CPU和嵌入式CPU。桌面CPU主要應(yīng)用于個(gè)人計(jì)算機(jī)(臺(tái)式機(jī)、筆記本電腦)。服務(wù)器CPU主要用于服務(wù)器
    發(fā)表于 11-27 10:02 ?1757次閱讀
    <b class='flag-5'>CPU</b>技術(shù)路線(xiàn)、分類(lèi)及運(yùn)行原理