RM新时代网站-首页

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

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

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

簡單講講RISC-V指令集CPU的參數(shù)

冬至配餃子 ? 來源:天奇工作室 ? 作者:LRC ? 2022-08-07 14:55 ? 次閱讀

第二代CPU新鮮出爐。

下面簡單講講該CPU的參數(shù)。

poYBAGLvYTWAJ5kKAACYFY2VAk8677.png

CPU芯片封裝全貌

本次CPU采用32位RISC-V指令集架構(gòu)(一代是自己瞎編指令集)。指令集就是程序指令的集合,指引硬件如何設(shè)計、如何運行。不同指令集的CPU運行的程序是不同的,相同的指令集的CPU則基本可以兼容為此指令集編寫的程序。目前主流的指令集有電腦中的x86和手機中的ARMRISC-V作為一種新興的指令集架構(gòu),它汲取了之前的指令集的架構(gòu)的優(yōu)缺點,有著先天的優(yōu)勢。此外,它不同于老牌指令集架構(gòu),沒有需要為前代軟件兼容的困擾,可以說是無病一身輕,整個架構(gòu)輕盈簡單卻又高效。

poYBAGLvYVCAMttnAADYkAZcp_s051.png

第二級流水線

采用6級流水線設(shè)計(一代是單周期設(shè)計,可以理解成一級流水線)。流水線設(shè)計是CPU設(shè)計的一大難點,開始設(shè)計之初我曾考慮是否真的要直接上5級經(jīng)典流水線(一位學(xué)長曾勸我再改進一次單周期CPU),最后竟然還多設(shè)計出了1級流水線。我先解釋一下流水線是什么。CPU中有很多部件(這些部件不一定有很清楚的邊界并且不一定是處于一個集中的位置),例如譯碼器(將指令翻譯成控制信號)、寄存器組(存放數(shù)據(jù)),ALU(計算單元)和存儲控制單元(控制讀取和寫入數(shù)據(jù))等等。單周期CPU執(zhí)行一條指令需要一個周期,在這整個周期中執(zhí)行指令需要分別用到上面所說的所有部件,用是都要用,但是在本周期的一個時間段中至多只能用到一個單元,那么這段時間中總有別的單元被閑置了,而這些單元是線性排布的,在用寄存器組之前必須先經(jīng)過譯碼器解碼,經(jīng)過ALU之前必須從寄存器組中讀取數(shù)據(jù)……比如說:一個時鐘周期是1s。譯碼占0.2s,從寄存器中讀數(shù)占0.2s,計算占0.4s,寫回數(shù)據(jù)占0.2s,加起來一共是1s。

如果我們每周期只用一個單元,讓多個指令依次使用這些單元,那么就可以極大提高CPU的執(zhí)行速度,這就是流水線技術(shù)。那么時鐘周期就縮短至0.4s(與耗時最長的那一步時間齊平),其中譯碼占0.2s,從寄存器中讀數(shù)占0.2s,計算占0.4s,寫回數(shù)據(jù)占0.2s。我們發(fā)現(xiàn)時鐘周期可以變短了,也就是頻率變高了,處理速度變快了。

其實聽起來也沒那么難嘛?考慮一下這個問題。假設(shè)第一條指令是把A寄存器中的數(shù)值和B寄存器的數(shù)值加起來放到C的寄存器里,第二條指令是把B寄存器的數(shù)值和C的寄存器的數(shù)值加起來放到A的寄存器中。那么第二個指令開始執(zhí)行到ALU(計算單元)的前端的時候就會發(fā)現(xiàn)第二條指令要用的C的數(shù)值呢?哦,前一條指令還沒算出C的數(shù)值,那怎么辦?那第二條指令還不能執(zhí)行。什么時候能執(zhí)行?第一條指令算好的時候。第一條指令什么時候算好?不知道……反正一堆麻煩。而且大多數(shù)真實情況是前面有十幾條指令要用C的數(shù)值,并且指令可能各不相同,有的是做做加法,有的可能是做做除法(異常耗時),有的甚至拿C寄存器的數(shù)值作為地址訪問內(nèi)存。你們可以想想這個問題要怎么解決。

pYYBAGLvYWmAWTN4AAG-Fnnl8i0271.png

端口寫入讀取寄存器組

第二條指令要等第一條指令。這種情況又被叫作沖突(hazard),沖突又被分為寄存器沖突和結(jié)構(gòu)沖突(好像是這兩個詞,意思領(lǐng)會到就行),這種屬于寄存器沖突。剛才說到,第二條指令不能等第一條指令,那么我們需要一種特殊的信號控制無指令的單元,這種信號叫作空泡(bubble)。那么回過來想,雖然用了流水線,但是因為各種沖突,指令可能也不能好好執(zhí)行幾個。相反,可能由于這復(fù)雜的控制電路和更高的電路運行頻率,功耗變高了,芯片面積變大了,好像適得其反。那么我們就要講到第二代CPU的第二個亮點。

亂序執(zhí)行。什么第二個指令不能執(zhí)行?那第三個能嗎?第三個可以!那就先執(zhí)行第三個。這就是亂序執(zhí)行的全部邏輯。看起來也很簡單,但做起來確實不太容易。當時設(shè)計之初也在考慮是否要實現(xiàn)亂序執(zhí)行,因為流水線的難度已經(jīng)很大了,亂序執(zhí)行再加下去難度簡直要爆炸,但是我轉(zhuǎn)念一想,如果流水線沒有亂序執(zhí)行,就像高樓沒有電梯(原諒我貧窮的比喻),發(fā)揮不出任何優(yōu)勢。最后還是硬著頭皮上了,竟然也成了……

poYBAGLvYYGARMRDAAEZvNT3m1c192.png

CPU保留站(解決沖突的,亂序執(zhí)行的重要位置)

除了上述所講的亮點之外,還有一些先進之處。例如寄存器重命名、保留站、FIFO隊列等等。之后會再細講。


審核編輯:劉清

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

    關(guān)注

    134

    文章

    9084

    瀏覽量

    367380
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5336

    瀏覽量

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

    關(guān)注

    68

    文章

    10854

    瀏覽量

    211574
  • RISC-V
    +關(guān)注

    關(guān)注

    45

    文章

    2270

    瀏覽量

    46128
收藏 人收藏

    評論

    相關(guān)推薦

    RISC-V指令集概述

    RISC-V就是RISC的第五代指令集架構(gòu)。而RISC-V目標就是“成為一種完全開放的指令集架構(gòu),可被任何學(xué)術(shù)機構(gòu)或商業(yè)組織自由使用”。
    發(fā)表于 11-30 23:30

    什么是RISC-V?以及RISC-V和ARM、X86的區(qū)別

    是開放的,任何人都可以使用它來開發(fā)處理器芯片和其他硬件,而無需支付任何許可或使用費用。RISC-V的設(shè)計簡單,易于擴展和自定義,可以在各種應(yīng)用場景和市場中使用。 什么是指令集架構(gòu)? 指令集
    發(fā)表于 11-16 16:14

    RISC-V指令集位寬的幾點學(xué)習(xí)心得

    于各種計算系統(tǒng),從簡單的嵌入式設(shè)備到復(fù)雜的高性能服務(wù)器。 總結(jié) 綜上所述,RISC-V指令集并非僅限于32位和64位。實際上,RISC-V提供了多種位寬選擇,包括32位、64位和12
    發(fā)表于 10-31 22:05

    RISC-V和arm指令集的對比分析

    RISC-V和ARM指令集是兩種不同的計算機指令集架構(gòu),它們在多個方面存在顯著的差異。以下是對這兩種指令集的詳細對比分析: 一、設(shè)計理念 RISC-
    發(fā)表于 09-28 11:05

    RISC-V指令集的特點總結(jié)

    RISC-V 保持了 RISC(Reduced Instruction Set Computer)架構(gòu)的核心原則,即提供一個簡潔的指令集,使得芯片設(shè)計更為簡單、高效。 優(yōu)勢:簡潔的設(shè)
    發(fā)表于 08-30 22:05

    CISC(復(fù)雜指令集)與RISC(精簡指令集)的區(qū)別  

    Instruction Set Computers,復(fù)雜指令集計算)和RISC(Reduced Instruction Set Computers)是兩大類 主流的CPU
    發(fā)表于 07-30 17:21

    RISC-V基礎(chǔ)整數(shù)指令集

    軟件異常來進行模擬。在這方面,最接近RISC-V的ISA可能是Tensilica Xtensa,它是專為嵌入式應(yīng)用設(shè)計的。它的指令集包含有80條基礎(chǔ)指令。并且它的指令集旨在被用戶根據(jù)自
    發(fā)表于 07-27 22:25

    RISC-V指令集說明哪里有?

    RISC-V指令集說明哪里有?匯編指令文檔哪有?
    發(fā)表于 04-30 17:44

    有沒有RISC-V指令集文檔分享一下?

    有沒有RISC-V指令集文檔分享一下?了解一下他的匯編指令
    發(fā)表于 03-30 11:48

    什么是RISC-V?RISC-V指令集的優(yōu)勢

    CPU 支持的所有指令指令的字節(jié)級編碼就是這個 CPU指令集架構(gòu)(Instruction Set Architecture,ISA),
    發(fā)表于 03-05 10:31 ?835次閱讀
    什么是<b class='flag-5'>RISC-V</b>?<b class='flag-5'>RISC-V</b><b class='flag-5'>指令集</b>的優(yōu)勢

    RISC-V開放架構(gòu)設(shè)計之道|閱讀體驗】匯編語言和擴展指令集

    RISC-V開放架構(gòu)設(shè)計之道|閱讀體驗】匯編語言和擴展指令集 匯編語言 將C語言翻譯成可執(zhí)行的機器語言的重要步驟包括編譯過程,匯編過程,鏈接過程。 函數(shù)調(diào)用約定過程分為六個階段: 1)將參數(shù)存放
    發(fā)表于 02-03 13:29

    RISC-V開放架構(gòu)設(shè)計之道|閱讀體驗】RISC-V基礎(chǔ)整數(shù)指令集

    第2章 RV32I:RISC-V基礎(chǔ)整數(shù)指令集 本章重點講解構(gòu)成RISC-V基礎(chǔ)整數(shù)指令集的基本指令
    發(fā)表于 01-31 21:10

    RISC-V開放架構(gòu)設(shè)計之道|閱讀體驗】RV64指令集設(shè)計的思考以及與流水線設(shè)計的邏輯

    ,RISC-V指令集體系結(jié)構(gòu)可以擴展出支持浮點運算的指令集、支持向量運算的指令集和支持安全計算的指令集等。
    發(fā)表于 01-29 10:09

    RISC-V開放架構(gòu)設(shè)計之道|閱讀體驗】RISC-V基礎(chǔ)整數(shù)指令集RV32I

    本書第二至十章都是講RISC-V指令集,最后第十一章講了RISC-V的未來可選擇擴展。本篇梳理學(xué)習(xí)基礎(chǔ)指令集RV32I。 RV32I指令集
    發(fā)表于 01-28 11:41

    RISC-V開放架構(gòu)設(shè)計之道|閱讀體驗】 RISC-V設(shè)計必備之案頭小冊

    ,最基礎(chǔ)的RV32已經(jīng)是完全不變化。以此來規(guī)避在過去指令集設(shè)計中的錯誤。 然后開始了在RISC-V中應(yīng)該如何編寫匯編代碼,書中大致講了將c語言編譯成計算機執(zhí)行的機器語言程序的重要步驟,并對每個步驟進行了簡單的描述
    發(fā)表于 01-22 16:24
    RM新时代网站-首页