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

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

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

處理器功能單元組成與CPU的流水線的詳細(xì)解析

GReq_mcu168 ? 2017-12-23 10:48 ? 次閱讀

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

處理器一般由如下功能單元組成:

取指單元

譯碼單元

執(zhí)行單元

Load/store單元(load用于從內(nèi)存中取數(shù)據(jù),而STORE用于存數(shù)據(jù)到內(nèi)存)

例外/中斷單元

電源管理單元

流水線通常由取指、譯碼、執(zhí)行及Load/Store等單元組成。各單元按圖所示的幾個(gè)步驟循環(huán)重復(fù)自身工作。

流水線的含義:

與工廠生產(chǎn)線類似,將一件工作分成若干個(gè)固定的工序進(jìn)行。

cpu流水線技術(shù)是一種將指令分解為多步,并讓不同指令的各步操作重疊,從而實(shí)現(xiàn)幾條指令并行處理,以加速程序運(yùn)行過(guò)程的技術(shù)。指令的每步有各自獨(dú)立的電路來(lái)處理,每完成一步,就進(jìn)到下一步,而前一步則處理后續(xù)指令。(原理和生產(chǎn)流水線一樣)

CPU指令流水線

根據(jù)之前描述的基礎(chǔ),指令進(jìn)入流水線,通過(guò)流水線處理,從流水線出來(lái)的過(guò)程,對(duì)于我們程序員來(lái)說(shuō),是比較直觀的。

I486擁有五級(jí)流水線。分別是:取指(Fetch),譯碼(D1, main decode),轉(zhuǎn)址(D2, translate),執(zhí)行(EX, execute),寫(xiě)回(WB)。某個(gè)指令可以在流水線的任何一級(jí)。

但是這樣的流水線有一個(gè)明顯的缺陷。對(duì)于下面的指令代碼,它們的功能是將兩個(gè)變量的內(nèi)容進(jìn)行交換。

1

2

3

XOR a, b

XOR b, a

XOR a, b

從8086直到386處理器都沒(méi)有流水線。處理器一次只能執(zhí)行一條指令。再這樣的架構(gòu)下,上面的代碼執(zhí)行并不會(huì)存在問(wèn)題。

但是i486處理器是首個(gè)擁有流水線的x86處理器,它執(zhí)行上面的代碼會(huì)發(fā)生什么呢?當(dāng)你一下去觀察很多指令在流水線中運(yùn)行,你會(huì)覺(jué)得混亂,所以你需要回頭參考上面的圖。

1、第一步是第一條指令進(jìn)入取指階段;

2、然后在第二步第一條指令進(jìn)入譯碼階段,同時(shí)第二條指令進(jìn)入取指階段;

3、第三步第一條指令進(jìn)入轉(zhuǎn)址階段,第二條指令進(jìn)入譯碼階段,第三條指令進(jìn)入取指階段。

4、但是在第四步會(huì)出現(xiàn)問(wèn)題,第一條指令會(huì)進(jìn)入執(zhí)行階段,而其他指令卻不能繼續(xù)向前移動(dòng)。

5、第二條xor指令需要第一條xor指令計(jì)算的結(jié)果a,但是直到第一條指令執(zhí)行完成才會(huì)寫(xiě)回。

所以流水線的其他指令就會(huì)在當(dāng)前流水級(jí)等待直到第一條指令的執(zhí)行和寫(xiě)回階段完成。第二條指令會(huì)等待第一條指令完成才能進(jìn)入流水線下一級(jí),同樣第三條指令也要等待第二條指令完成。

這個(gè)現(xiàn)象被稱為流水線阻塞或者流水線氣泡。

常用概念:

1、流水線級(jí)數(shù):流水線的節(jié)拍數(shù)。

2、吞吐率:?jiǎn)挝粫r(shí)間內(nèi)流水線能處理的任務(wù)數(shù)量。

3、最大吞吐率:流水線達(dá)到不間斷流水的穩(wěn)定狀態(tài)后可獲得的吞吐率。

4、加速比:流水方式的工作速度與等效的順序工作方式時(shí)間的比值。

流水線指標(biāo):

1、流水技術(shù)無(wú)助于減少單個(gè)任務(wù)的處理延遲(latency),但有助于提高整體工作負(fù)載的吞吐率

2、多個(gè)不同任務(wù)同時(shí)操作, 使用不同資源

3、潛在加速比= 流水線級(jí)數(shù)

4、流水線的速率受限于最慢的流水段

5、流水段的執(zhí)行時(shí)間如果不均衡,那么加速比就會(huì)降低

6、開(kāi)始填充流水線的時(shí)間和最后排放流水線的時(shí)間降低加速比

低功耗嵌入式領(lǐng)域的ARM7就是采用3級(jí)流水線結(jié)構(gòu)。

處理器功能單元組成與CPU的流水線的詳細(xì)解析

超流水

超流水線技術(shù)是通過(guò)細(xì)化的流水,提高主頻。使得機(jī)器在一個(gè)周期內(nèi)完成一個(gè)甚至多個(gè)操作,其實(shí)質(zhì)是用空間換取時(shí)間。

超流水處理器是相對(duì)于基準(zhǔn)處理器而言的,一般cpu的流水線是基本的指令預(yù)取,譯碼,執(zhí)行和寫(xiě)回結(jié)果四級(jí)。超流水線(superpiplined)是指某型CPU內(nèi)部的流水線超過(guò)通常的5~6步以上,例如Pentium pro的流水線就長(zhǎng)達(dá)14步。將流水線設(shè)計(jì)的步(級(jí))數(shù)越多,其完成一條指令的速度越快,因此才能適應(yīng)工作主頻更高的CPU。這一點(diǎn)我們可以用日常事例來(lái)說(shuō)明,比如有5個(gè)人接力傳送木頭(對(duì)應(yīng)一個(gè)5級(jí)的流水線),超流水是說(shuō)細(xì)化該流水過(guò)程,即由10個(gè)人接力(此時(shí)為10級(jí)流水),顯然完成全部任務(wù)的速度會(huì)快。相當(dāng)于***的一句話:人多力量大(效率高)。

處理器功能單元組成與CPU的流水線的詳細(xì)解析超標(biāo)量

超標(biāo)量是指在CPU中有一條以上的流水線,并且每時(shí)鐘周期內(nèi)可以完成一條以上的指令,這種設(shè)計(jì)就叫超標(biāo)量技術(shù)。 其實(shí)質(zhì)是以空間換取時(shí)間。

CPU架構(gòu)是指在一顆處理器內(nèi)核中實(shí)行了指令級(jí)并行的一類并行運(yùn)算。這種技術(shù)能夠在相同的CPU主頻下實(shí)現(xiàn)更高的CPU吞吐率(throughput)。

處理器功能單元組成與CPU的流水線的詳細(xì)解析


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

    關(guān)注

    68

    文章

    19384

    瀏覽量

    230507
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10890

    瀏覽量

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

    關(guān)注

    0

    文章

    120

    瀏覽量

    25905

原文標(biāo)題:CPU的流水線

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA中的流水線設(shè)計(jì)

    設(shè)計(jì)的算法,如第一條中表述的流水線設(shè)計(jì)就是將組合邏輯系統(tǒng)地分割,并在各個(gè)部分(分級(jí))之間插入寄存,并暫存中間數(shù)據(jù)的方法。針對(duì)處理器中的流水線結(jié)構(gòu)。比如,比如 5—6 個(gè)不同
    發(fā)表于 10-26 14:38

    ARM架構(gòu)系列中的流水線設(shè)計(jì)

    什么是ARM流水線流水線(Pipelining)是 RISC(精簡(jiǎn)指令集)處理器用來(lái)執(zhí)行指令的機(jī)制,通過(guò)獲取指令來(lái)加速執(zhí)行,而其他指令同時(shí)被解碼和執(zhí)行。這反過(guò)來(lái)又允許內(nèi)存系統(tǒng)和處理器
    發(fā)表于 04-11 17:23

    現(xiàn)代RISC中的流水線技術(shù)

    作Stretch計(jì)算機(jī))。后來(lái)的CDC 6600同時(shí)采用了流水線和多功能部件。到了20世紀(jì)80年代,流水線技術(shù)成為RISC處理器設(shè)計(jì)方法中最基本的技術(shù)之一。RISC設(shè)計(jì)方法的大部分技術(shù)
    發(fā)表于 03-01 17:52

    流水線結(jié)構(gòu)的高效SAR快視成像處理器

    流水線結(jié)構(gòu)的高效SAR快視成像處理器
    發(fā)表于 05-08 17:16 ?23次下載

    流水線操作,應(yīng)用處理器,應(yīng)用處理器的結(jié)構(gòu)和原理是什么?

    流水線操作,應(yīng)用處理器,應(yīng)用處理器的結(jié)構(gòu)和原理是什么? 與哈佛結(jié)構(gòu)相關(guān),DSP芯片廣泛采用流水線以減少指令執(zhí)行時(shí)間.從而增強(qiáng)
    發(fā)表于 03-26 15:03 ?1243次閱讀

    CPU流水線的定義

    cpu流水線技術(shù)是一種將指令分解為多步,并讓不同指令的各步操作重疊,從而實(shí)現(xiàn)幾條指令并行處理,以加速程序運(yùn)行過(guò)程的技術(shù)。
    發(fā)表于 12-14 15:29 ?4713次閱讀

    一種針對(duì)可重構(gòu)處理器流水線簡(jiǎn)化編程的設(shè)計(jì)范式

    一種針對(duì)可重構(gòu)處理器流水線簡(jiǎn)化編程的設(shè)計(jì)范式_周君宇
    發(fā)表于 01-07 21:39 ?0次下載

    DSP設(shè)計(jì)中的流水線數(shù)據(jù)相關(guān)問(wèn)題解析

    在航空微電子中心的某預(yù)研項(xiàng)目中,需要開(kāi)發(fā)設(shè)計(jì)某32位浮點(diǎn)通用數(shù)字信號(hào)處理器(DSP)。本系統(tǒng)控制通路部分的設(shè)計(jì)采用超級(jí)哈佛及五級(jí)流水線結(jié)構(gòu)。本文分析了該流水線的設(shè)計(jì)過(guò)程,并對(duì)遇到的數(shù)據(jù)相關(guān)問(wèn)題提出
    發(fā)表于 10-23 10:35 ?0次下載
    DSP設(shè)計(jì)中的<b class='flag-5'>流水線</b>數(shù)據(jù)相關(guān)問(wèn)題<b class='flag-5'>解析</b>

    處理器系列之CPU流水線科普

    1989年推出的i486處理器引入了五級(jí)流水線。這時(shí),在CPU中不再僅運(yùn)行一條指令,每一級(jí)流水線在同一時(shí)刻都運(yùn)行著不同的指令。這個(gè)設(shè)計(jì)使得i486比同頻率的386
    發(fā)表于 01-26 01:18 ?4343次閱讀
    <b class='flag-5'>處理器</b>系列之<b class='flag-5'>CPU</b><b class='flag-5'>流水線</b>科普

    一文讀懂處理器流水線

    本文將討論處理器的一個(gè)重要的基礎(chǔ)知識(shí):流水線。熟悉計(jì)算機(jī)體系結(jié)構(gòu)的讀者一定知道,言及處理器微架構(gòu),幾乎必談其流水線。處理器
    發(fā)表于 04-08 08:16 ?2.3w次閱讀
    一文讀懂<b class='flag-5'>處理器</b><b class='flag-5'>流水線</b>

    自制CPU(三)流水線

    經(jīng)過(guò)上兩篇文章的閱讀,大家應(yīng)該清楚自己的CPU大致是如何處理數(shù)據(jù)的,而又是如何執(zhí)行指令的。我們現(xiàn)在來(lái)在簡(jiǎn)略的說(shuō)一下流水線CPU的設(shè)計(jì)。(源碼在CSDN下載頁(yè),請(qǐng)自取)
    的頭像 發(fā)表于 07-16 09:20 ?5784次閱讀

    FPGA之流水線練習(xí)5:設(shè)計(jì)思路

    流水線的工作方式就象工業(yè)生產(chǎn)上的裝配流水線。在CPU中由5—6個(gè)不同功能的電路單元組成一條指令處理
    的頭像 發(fā)表于 11-29 07:06 ?2609次閱讀

    CPU流水線的問(wèn)題

    1989 年推出的 i486 處理器引入了五級(jí)流水線。這時(shí),在 CPU 中不再僅運(yùn)行一條指令,每一級(jí)流水線在同一時(shí)刻都運(yùn)行著不同的指令。這個(gè)設(shè)計(jì)使得 i486 比同頻率的 386
    的頭像 發(fā)表于 09-22 10:04 ?2035次閱讀

    CPU流水線優(yōu)缺點(diǎn)

    為什么有些CPU的主頻更低,但運(yùn)算效率卻更高呢? 比如:51單片機(jī)30M主頻,STM32單片機(jī)20M主頻,執(zhí)行相同一段代碼可能主頻更低的STM32所花的時(shí)間更短。 這里就牽涉到CPU流水線的問(wèn)題,本文圍繞
    的頭像 發(fā)表于 10-24 14:34 ?4476次閱讀

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

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