經(jīng)過上兩篇文章的閱讀,大家應(yīng)該清楚自己的CPU大致是如何處理數(shù)據(jù)的,而又是如何執(zhí)行指令的。我們現(xiàn)在來在簡略的說一下流水線CPU的設(shè)計。(源碼在CSDN下載頁,請自取)
流水線CPU的基本數(shù)據(jù)通路和單周期沒有什么太大區(qū)別,而且也是每個時鐘周期都有一條指令執(zhí)行結(jié)束。但是他又和多周期CPU一樣一條指令需要多個時鐘周期完成。而同時使這兩條條件同時滿足的就是流水線技術(shù)了。先上一張圖
由于在多周期CPU中,比如我們正在第三級執(zhí)行第五條指令的執(zhí)行操作,對于整個數(shù)據(jù)通路來講,其它幾級都是空閑狀態(tài),那我們?yōu)榱颂岣逤PU的工作效率,就讓他提前后邊指令的其他幾級操作。這樣一來,我們的CPU就像工廠內(nèi)的流水線一樣,每一級都在工作,大大提升了他的工作效率。
在設(shè)計中,流水線CPU甚至?xí)榷嘀芷贑PU更好實(shí)現(xiàn)。由于數(shù)據(jù)是一級一級向下流,我們都無需進(jìn)行狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移來控制,只需要讓數(shù)據(jù)與他的控制信號同步流向器件。每一個時鐘周期數(shù)據(jù)都是從上一級流向下一級。而對應(yīng)的寄存器就是在每個時鐘上升沿都讀出舊數(shù)據(jù),寫入新數(shù)據(jù)。
但是在流水線CPU中,分支跳轉(zhuǎn)語句變成了一個難點(diǎn),當(dāng)指令發(fā)現(xiàn)是分支跳轉(zhuǎn)指令時,輸出branch信號,后等待ALU輸出比較值是否相等。如果相等,進(jìn)行跳轉(zhuǎn)。但是跳轉(zhuǎn)時,我們的流水線已將后三條指令讀入并操作了一部分了。這時我們便需要清空存儲器。或者我們也可以當(dāng)檢測到branch信號時CPU停止讀入指令,直到判斷結(jié)果輸出時在進(jìn)行跳轉(zhuǎn)。、
流水線CPU是非常好用的CPU,在我們后續(xù)的程序編寫的時候基本上都會使用流水線CPU,偶爾也會用多周期CPU。
-
FPGA
+關(guān)注
關(guān)注
1630文章
21802瀏覽量
606369
發(fā)布評論請先 登錄
相關(guān)推薦
工業(yè)讀碼器解決方案在自動化流水線上掃描條碼的應(yīng)用
![工業(yè)讀碼器解決方案在自動化<b class='flag-5'>流水線</b>上掃描條碼的應(yīng)用](https://file1.elecfans.com/web1/M00/F5/78/wKgZoWc9nZCADyp7AADqG3PTA1Y961.png)
SMT流水線布局優(yōu)化技巧
工業(yè)流水線的智能助手——智能計數(shù),效率倍增
![工業(yè)<b class='flag-5'>流水線</b>的智能助手——智能計數(shù),效率倍增](https://file1.elecfans.com/web1/M00/F4/6D/wKgZoWcrMFeACKO-AA9CI0bY1No890.png)
行云流水線 滿足你對工作流編排的一切幻想~skr
ADS900高速流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表
![ADS900高速<b class='flag-5'>流水線</b>模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
ADS930高速流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表
![ADS930高速<b class='flag-5'>流水線</b>模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
ADS5421流水線式模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表
![ADS5421<b class='flag-5'>流水線</b>式模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
ADS5413 CMOS流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表
![ADS5413 CMOS<b class='flag-5'>流水線</b>模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
ADS5237流水線式模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表
![ADS5237<b class='flag-5'>流水線</b>式模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
ADS828流水線式CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表
![ADS828<b class='flag-5'>流水線</b>式CMOS模數(shù)轉(zhuǎn)換器數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
ADS805流水線模數(shù)轉(zhuǎn)換器ADC數(shù)據(jù)表
![ADS805<b class='flag-5'>流水線</b>模數(shù)轉(zhuǎn)換器ADC數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
固定式的掃碼器在SMT流水線中的使用
![固定式的掃碼器在SMT<b class='flag-5'>流水線</b>中的使用](https://file1.elecfans.com/web2/M00/F8/61/wKgaomaEtNmAJZCrAAC4wszpH9E107.png)
RISC-V架構(gòu)的多級流水線處理
具有3態(tài)輸出的多級流水線寄存器數(shù)據(jù)表
![具有3態(tài)輸出的多級<b class='flag-5'>流水線</b>寄存器數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
牽引機(jī)和挖掘機(jī)裝配流水線自動互鎖防呆系統(tǒng)無線通訊應(yīng)用
![牽引機(jī)和挖掘機(jī)裝配<b class='flag-5'>流水線</b>自動互鎖防呆系統(tǒng)無線通訊應(yīng)用](https://file1.elecfans.com//web2/M00/C1/DC/wKgaomXb4OCAPmK6AAOWXYLV7d0410.png)
評論