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

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

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

RISC和CISC是不同的晶體管預(yù)算理念

strongerHuang ? 來源:半導(dǎo)體行業(yè)觀察 ? 作者:半導(dǎo)體行業(yè)觀察 ? 2022-05-13 15:21 ? 次閱讀

關(guān)于RISC和CISC處理器的區(qū)別,大多數(shù)人會(huì)認(rèn)為是一些特性、指令,或者是晶體管數(shù)量的差異。但實(shí)際上兩者之間的差別不能簡(jiǎn)單的一概而論。

少量指令并不意味著RISC

首先,我們需要摒棄一些非常明顯的誤解。因?yàn)镽ISC的意思是簡(jiǎn)化指令集計(jì)算機(jī)(Reduced Instruction Set Computer),所以很多人認(rèn)為RISC處理器只是一個(gè)沒有多少指令的CPU。如果是這樣的話,那么6502處理器將是有史以來最RISCy的處理器之一,它只有56條指令。甚至英特爾8086也可以算作RISC處理器,因?yàn)樗挥?1條指令。即使是后來的Intel 80286也只有大約100條指令。 像AVR這樣簡(jiǎn)單的8位RISC處理器有78條指令。如果您看看最早的32位RISC處理器之一,比如PowerPC 601(1993年發(fā)布),它有273個(gè)指令。 MIPS32指令集來源于伯克利的原始RISC處理器,它也有200多條指令。 我們可以將其與CISC 32位處理器(如80386)進(jìn)行比較,后者只有略多于170條指令。差不多時(shí)間亮相的MIPS R2000處理器在大約有92條指令。

For the curios:

x86 instruction listings

Pentium instruction set

6502 Instruction Set

MIPS R2000 InstructionSet

古玩: x86指令列表 奔騰指令集 6502指令集 MIPS R2000指令集 也就是說,類似x86指令集、奔騰指令集、6502指令集、MIPS R2000指令集一開始都具有很少指令集,但它們都不是RISC處理器。

少數(shù)晶體管并不意味著RISC

CISC和RISC處理器之間的晶體管數(shù)量的分界點(diǎn)是多少?根本沒有。6502有4528個(gè)晶體管。第一個(gè)ARM處理器有25000個(gè)晶體管。 或者這個(gè)有趣的小事實(shí)。摩托羅拉68060被認(rèn)為是那個(gè)時(shí)代最具代表性的CISCy的處理器之一,它只有250萬個(gè)晶體管,比1994年發(fā)布的IBM PowerPC 601的280萬個(gè)晶體管還要少。 如果你看一下幾乎同時(shí)發(fā)布的RISC和CISC處理器,沒有明顯的趨勢(shì)表明RISC處理器比CISC處理器有更少的晶體管和更少的指令。

547ba7ac-d266-11ec-bce3-dac502259ad0.png

上世紀(jì)90年代初流行的RISC和CISC處理器晶體管和指令的比較 所以讓我們得出結(jié)論,我們不能根據(jù)晶體管或指令數(shù)量區(qū)分RISC或CISC芯片。但是問題仍然存在,到底是什么是RISC微處理器或CISC微處理器?

RISC和CISC是不同的晶體管預(yù)算理念

當(dāng)你的老板告訴你“這里,有一百萬個(gè)晶體管,給我做一個(gè)快速的處理器!”,那么你就有很多方法可以實(shí)現(xiàn)這個(gè)目標(biāo)。對(duì)于相同數(shù)量的晶體管,RISC和CISC的設(shè)計(jì)者將會(huì)做出不同的選擇。 伯克利的David A. Patterson廣為人所知的可能是他在1980年發(fā)表的論文《簡(jiǎn)化指令集計(jì)算機(jī)的案例》中推廣了RISC處理器的思想。 Patterson在這篇論文中概述的并不是芯片制造的詳細(xì)藍(lán)圖,而更像是哲學(xué)指導(dǎo)方針。 在現(xiàn)實(shí)世界的程序中,添加這個(gè)指令會(huì)提高多少性能?硬件方面的影響是什么?我們是否需要存儲(chǔ)大量復(fù)雜的狀態(tài),這使得上下文切換和無序執(zhí)行更加復(fù)雜,因?yàn)樾枰鎯?chǔ)大量的狀態(tài)? 一個(gè)設(shè)計(jì)良好的簡(jiǎn)單指令的組合能以相當(dāng)?shù)男阅芡瓿赏瑯拥墓ぷ鲉? 我們是否可以利用現(xiàn)有的算術(shù)邏輯單元(ALUs)和CPU上的其他資源來添加這條指令,或者我們需要添加很多新東西? 如果不添加這條指令,這些晶體管的其他用途是什么?更多的緩存嗎?更好的分支預(yù)測(cè)嗎? 重要的是要理解這些規(guī)則適用于給定的晶體管預(yù)算。如果你有更多的晶體管,你可以添加更多的指令,甚至更復(fù)雜的指令。 然而,RISC的哲學(xué)優(yōu)先考慮保持指令集的簡(jiǎn)單。這意味著RISC設(shè)計(jì)者首先會(huì)嘗試通過其他方法來提高性能,而不是添加如下指令:

使用晶體管增加更多的緩存

更多的CPU寄存器

更好的管道

更好的分支預(yù)測(cè)

超標(biāo)量體系結(jié)構(gòu)的體系結(jié)構(gòu)

添加更多的指令解碼器

亂序執(zhí)行

Macro-operation融合

壓縮指令

因此,設(shè)計(jì)一個(gè)好的RISC指令集(ISA)的一個(gè)關(guān)鍵目標(biāo)是使設(shè)計(jì)不妨礙未來的微架構(gòu)優(yōu)化。 這與CISC設(shè)計(jì)者設(shè)計(jì)CPU的方式不同。為了能夠提供更好的性能,那么CISC設(shè)計(jì)者將添加引入更多狀態(tài)以跟蹤狀態(tài)寄存器等復(fù)雜指令。

CISC設(shè)計(jì)理念的問題

問題是CISC的設(shè)計(jì)師沒有超前思考。將來你的晶體管預(yù)算可能會(huì)增加。突然之間,你有了所有這些好的晶體管,可以用來創(chuàng)建無序(OoO)超標(biāo)標(biāo)量處理器邏輯。這意味著您在每個(gè)時(shí)鐘周期解碼多個(gè)指令,并將它們放在一個(gè)指令隊(duì)列中。然后,OoO邏輯會(huì)找出哪些指令不相互依賴,以便它們可以并行運(yùn)行。 如果您是軟件開發(fā)人員,您可以考慮函數(shù)式編程(functional programming)和命令式編程(imperative programming)之間的區(qū)別。為了獲得短期性能收益而改變?nèi)謹(jǐn)?shù)據(jù)可能很誘人。然而,一旦你并行運(yùn)行,而全局狀態(tài)被多個(gè)函數(shù)改變了,這可能會(huì)在多個(gè)線程中并行運(yùn)行,這絕對(duì)是一場(chǎng)噩夢(mèng)。 函數(shù)式編程喜歡只依賴于輸入而不依賴全局?jǐn)?shù)據(jù)的純函數(shù)。這些函數(shù)可以很容易地并行運(yùn)行。同樣的機(jī)制也適用于CPU。不依賴于全局狀態(tài)(如狀態(tài)寄存器)的匯編代碼指令可以更容易地并行或流水線運(yùn)行。 RISC-V就是這種思想的一個(gè)很好的例子。RISC-V沒有狀態(tài)寄存器。比較和跳轉(zhuǎn)指令合二為一。除非運(yùn)行額外的計(jì)算來確定是否發(fā)生了溢出,否則無法用狀態(tài)寄存器捕獲整數(shù)溢出。 這應(yīng)該會(huì)給你一些關(guān)于RISC和CISC區(qū)別的線索。

一個(gè)RISC處理器設(shè)計(jì)的優(yōu)先級(jí)

如果10條新指令對(duì)微架構(gòu)沒有顯著影響,那么RISC設(shè)計(jì)者添加10條新指令不一定會(huì)有問題。如果一條指令要求在CPU中表示更多的全局狀態(tài),那么RISC設(shè)計(jì)人員將會(huì)非常不愿意添加一條指令。 這種哲學(xué)的最終結(jié)果是,從歷史上看,在RISC處理器上添加管道和超標(biāo)量架構(gòu)比CISC處理器更容易,因?yàn)槿藗儽苊饬颂砑又噶睿瑥亩霠顟B(tài)管理或控制邏輯,這使得添加這些微架構(gòu)創(chuàng)新變得困難。 這就是為什么RISC-V團(tuán)隊(duì)更喜歡進(jìn)行宏操作(macro-operation)融合,而不是添加支持復(fù)雜尋址模式或整數(shù)溢出檢測(cè)的指令。 RISC的理念導(dǎo)致了不斷出現(xiàn)的特殊設(shè)計(jì)選擇,這讓我們能夠討論在比較RISC和CISC處理器時(shí)所觀察到的更具體的差異。讓我們看看這些。

現(xiàn)代RISC和CISC處理器的特點(diǎn)

某些設(shè)計(jì)選擇不斷出現(xiàn)在許多不同的RISC處理器上。通常情況下,RISC處理器傾向于使用固定長(zhǎng)度的32位指令。也有一些例外,比如AVR,它使用固定長(zhǎng)度的16位指令。相比之下,Intel x86處理器的指令長(zhǎng)度為1到15字節(jié)。摩托羅拉68k處理器,另一個(gè)著名的CISC設(shè)計(jì),有2到10字節(jié)長(zhǎng)的指令(16位到80位)。

54895a14-d266-11ec-bce3-dac502259ad0.png

對(duì)于匯編程序員來說,變長(zhǎng)指令實(shí)際上非常方便。我的第一臺(tái)電腦是Amiga 1000,它有一個(gè)摩托羅拉68k處理器,所以它向我介紹了68k組裝,坦白說非常整潔。它有將數(shù)據(jù)從一個(gè)內(nèi)存位置移動(dòng)到另一個(gè)內(nèi)存位置的指令,或者可以將數(shù)據(jù)從寄存器A1給出的地址移動(dòng)到另一個(gè)寄存器A2給出的內(nèi)存位置。 ; 68k Assembly code
MOVE.B 4, 12 ; mem[4] → mem[12]
MOVE.B (A1), (A2) ; mem[A1] → mem[A2] 這樣的指令使CPU易于編程,但這意味著沒有辦法將支持的每條指令都放在32位內(nèi),因?yàn)楸硎就暾脑吹刂泛湍康牡刂穼⒅幌?4位。因此,通過使用變長(zhǎng)指令,我們可以很容易地在任何指令中包含完整的32位內(nèi)存地址。 然而,這種便利是有代價(jià)的。變長(zhǎng)指令更難以流水線處理,如果你想讓一個(gè)超標(biāo)標(biāo)量處理器并行解碼兩條或多條指令,你很難做到這一點(diǎn),因?yàn)槟悴恢烂織l指令在哪里開始和結(jié)束,直到你解碼它們。

54b9593a-d266-11ec-bce3-dac502259ad0.png

使用超標(biāo)量處理器,可以有多個(gè)指令解碼器并行工作。 RISC處理器傾向于避免使用可變長(zhǎng)度指令,因?yàn)檫@不符合RISC不添加指令的理念,這也使得添加更高級(jí)的微架構(gòu)優(yōu)化變得更加困難。 固定長(zhǎng)度的指令會(huì)造成不便。您不能將內(nèi)存地址放入任何操作中,只能放入特定的操作,如加載和存儲(chǔ)指令。

54c786b8-d266-11ec-bce3-dac502259ad0.png

在RISC處理器中的算術(shù)邏輯單元(ALU)只能從寄存器而不是內(nèi)存中獲取輸入。

加載/存儲(chǔ)體系結(jié)構(gòu)

機(jī)器代碼指令必須對(duì)正在執(zhí)行的信息進(jìn)行編碼,例如它是在執(zhí)行ADD、SUB還是MUL。它還必須對(duì)輸入的信息進(jìn)行編碼。輸入寄存器和輸出寄存器是什么。一些指令需要對(duì)要加載數(shù)據(jù)的地址進(jìn)行編碼。在RISC-V指令中是這樣編碼的:

54f3c700-d266-11ec-bce3-dac502259ad0.png

上圖顯示了如何使用32位字中的每一位為RISC-V指令集編碼一條指令 我們執(zhí)行的特定指令稱為操作碼(上圖黃色),它消耗7位。我們指定的每個(gè)寄存器輸入或輸出都需要5位。從這里應(yīng)該很清楚,擠入一個(gè)32位地址是不可能的。即使是一個(gè)較短的地址也是困難的,因?yàn)槟阈枰粊碇付ㄔ诓僮髦惺褂玫募拇嫫?。?duì)于CISC處理器,這不是一個(gè)問題,因?yàn)槟梢宰杂傻厥褂贸^32位的指令。 這種緊湊的空間要求使得RISC處理器具有我們所說的加載/存儲(chǔ)架構(gòu)。只有專用的加載和存儲(chǔ)指令,如RISC-V上的LW和SW,才能用于訪問內(nèi)存。 對(duì)于CISC處理器,如68k,幾乎任何操作,如ADD、SUB、AND和OR,都可以使用內(nèi)存地址作為操作數(shù)(參數(shù))。在下面的例子中,4(A2)計(jì)算到一個(gè)內(nèi)存地址,我們使用它來讀取一個(gè)操作數(shù)(參數(shù))到ADD指令。最終的結(jié)果也存儲(chǔ)在那里(在68k上destination是右參數(shù))。 ; 68k assembly
ADD.L D3, 4(A2) ; D3 + mem[4 + A2] → mem[4 + A2] 典型的RISC處理器(如基于RISC- v指令集的處理器)需要將加載(LW)和存儲(chǔ)(SW)作為單獨(dú)的指令進(jìn)行存儲(chǔ)。 # RISC-V assembly
LW x4, 4(x2) # x4 ← mem[x2+4]
ADD x3, x4, x3 # x3 ← x4 + x3
SW x3, 4(x2) # x3 → mem[x2+4] 你不需要通過結(jié)合地址寄存器(A0到A7)來計(jì)算地址。你可以直接指定一個(gè)內(nèi)存地址,比如400: ; 68k assembly
ADD.L 400, D4 ; mem[400] + D4 → D4 但即使是這樣一個(gè)看似簡(jiǎn)單的操作也需要多個(gè)RISC指令。 # RISC-V assembly
LW x2, 400(x0) # x3 ← mem[x0 + 400]
ADD x4, x4, x3 # x4 ← x4 + x3 在很多RISC設(shè)計(jì)中,x0寄存器總是0,這意味著即使你只對(duì)絕對(duì)內(nèi)存地址感興趣,你也可以始終使用偏移加基寄存器的形式。雖然這些偏移量看起來與您在68k上所做的非常相似,但它們的限制要大得多,因?yàn)槟偸切枰m合一個(gè)32位字。使用68k,可以給ADD.L一個(gè)完整的32位地址。你不能用RISC-V LW和SW。獲得完整的32位地址是相當(dāng)麻煩的。假設(shè)您希望從32位地址:0x00042012加載數(shù)據(jù),則必須分別加載上面的20位和下面的12位,以形成一個(gè)32位地址。 # RISC-V assembly
LUI x3, 0x42 # x3[31:12] ← 0x42 put in upper 20-bits
ADDI x3, x3, 0x12 # x3 ← x3 + x3 + 0x12

LW x4, 0(x3) # x4 ← mem[x3+0] 實(shí)際上這可以簡(jiǎn)化為:LUI x3, 0x42 LW x4, 0x12(x3) 我記得當(dāng)我從68k組裝轉(zhuǎn)到PowerPC(蘋果以前使用的RISC處理器)時(shí),這讓我很惱火。當(dāng)時(shí)我認(rèn)為RISC意味著一切都將變得更容易。我發(fā)現(xiàn)x86很麻煩,很難處理。然而,對(duì)于匯編編碼員來說,RISC不像68k那樣方便地使用CISC指令集。幸運(yùn)的是,有一些簡(jiǎn)單的技巧可以使這個(gè)過程在RISC處理器上變得更容易。RISC-V定義了一些偽指令,以簡(jiǎn)化匯編代碼的編寫。使用LA (load address)偽指令,我們可以像這樣編寫前面的代碼: # RISC-V assembly with pseudo instructions
LI x3, 0x00042012 # Expands to a LUI and ADDI
LW x4, 0(x3) 總而言之:雖然加載/存儲(chǔ)體系結(jié)構(gòu)使編寫匯編代碼變得更麻煩,但它允許我們保持每個(gè)指令為32位長(zhǎng)。這意味著創(chuàng)建一個(gè)可以并行解碼多個(gè)指令的超標(biāo)標(biāo)量微體系結(jié)構(gòu)需要更少的晶體管來實(shí)現(xiàn)。流水線化每條指令變得更容易,因?yàn)樗鼈冎械拇蠖鄶?shù)可以適合經(jīng)典的5步RISC流水線。

RISC處理器有很多寄存器

使用像68k這樣的高級(jí)CISC處理器,您可以用一條指令做很多事情。假設(shè)您想將數(shù)字從一個(gè)數(shù)組復(fù)制到另一個(gè)數(shù)組。下面是一個(gè)使用指針的C語言例子: // C code
int data[4] = {4, 8, 1, 2, -1};
int *src = data;
while (*xs > 0)
*dst++ = *src++; 如果你在68k處理器上將指針src存儲(chǔ)在地址寄存器A0中,將指針dst存儲(chǔ)在地址寄存器A1中,你可以在一條指令中復(fù)制并向前移動(dòng)每個(gè)指針4個(gè)字節(jié): ; 68k assembly
MOVE.L (A0)+,(A1)+ ; mem[A1++] → mem[A2++] 這只是一個(gè)例子,但是一般來說,您可以使用CISC指令做更多的事情。這意味著您需要更少的代碼。因此,RISC設(shè)計(jì)者意識(shí)到他們的代碼會(huì)變得臃腫。因此,RISC的設(shè)計(jì)者們分析了真實(shí)的代碼,提出了一種方案,可以在不使用復(fù)雜指令的情況下減少代碼的大小。他們發(fā)現(xiàn)很多代碼只是用來加載和存儲(chǔ)內(nèi)存中的數(shù)據(jù)。通過添加大量寄存器,可以將臨時(shí)結(jié)果保存在寄存器中,而無需將它們寫入內(nèi)存。這將減少需要執(zhí)行的加載和存儲(chǔ)指令的數(shù)量,從而減少代碼的RISC代碼大小。 因此,MIPS、SPARC、Arm(64位)和RISC-V處理器有32個(gè)通用寄存器。我們可以對(duì)比一下原來的x86,它只有8個(gè)通用寄存器。

552adef2-d266-11ec-bce3-dac502259ad0.png

復(fù)雜性的RISC/CISC視角

我在這個(gè)故事中想要說明的是,RISC處理器并不比CISC處理器差。區(qū)別在于RISC和CISC的設(shè)計(jì)者選擇增加復(fù)雜性。 CISC設(shè)計(jì)人員將復(fù)雜性放在指令集體系結(jié)構(gòu)(ISA)中,而RISC設(shè)計(jì)人員寧愿將復(fù)雜性添加到他們的微體系結(jié)構(gòu)中,但正如我一直強(qiáng)調(diào)的,他們不希望指令集在微架構(gòu)中強(qiáng)加復(fù)雜性。 讓我來比較一下MIPS R4000,摩托羅拉68040和英特爾486,以強(qiáng)調(diào)理念上的差異。它們都有大約120萬個(gè)晶體管,幾乎同時(shí)發(fā)布(1989年至1991年)。 RISC處理器(R4000)是64位的,其他是32位的。 R4000有8級(jí)pipeline ,允許比6級(jí)pipeline 的68040和5級(jí)pipeline 的486更高的時(shí)鐘頻率。 更長(zhǎng)的pipeline 給R4000從100-200 Mhz遠(yuǎn)遠(yuǎn)超過68040的40Mhz和486DX2得到66Mhz (100Mhz在一個(gè)更晚的模型)。 最終在1993/1994年出現(xiàn)了速度更快的CISC處理器,如68060和Pentium。但與此同時(shí)出現(xiàn)了MIPS R8000,它是一種可以并行解碼4條指令的超標(biāo)量結(jié)構(gòu)。奔騰處理器每個(gè)時(shí)鐘周期只能解碼2條指令。 所以我們可以看到RISC的設(shè)計(jì)者們是如何喜歡花哨的微架構(gòu)而不是花哨的指令的。 “但是現(xiàn)代CISC處理器有復(fù)雜的微架構(gòu)!” 您可能會(huì)抗議說,今天的CISC處理器有復(fù)雜的微架構(gòu)。他們所做的。一個(gè)現(xiàn)代的Intel或AMD處理器有多個(gè)解碼器、微操作緩存、高級(jí)分支預(yù)測(cè)器、無序(OoO)執(zhí)行引擎。然而,這并不奇怪。記住我關(guān)于晶體管預(yù)算理念的關(guān)鍵點(diǎn):今天每個(gè)人都有很多晶體管可以使用,所以所有高端芯片都將有很多先進(jìn)的微架構(gòu)功能。他們可以負(fù)擔(dān)得起他們的預(yù)算。 關(guān)鍵在于:這些復(fù)雜的微體系結(jié)構(gòu)特性中的許多都是由復(fù)雜的CISC指令集強(qiáng)加的。例如,為了使pipelines 工作,x86處理器將其冗長(zhǎng)復(fù)雜的指令分解成微操作。微操作很簡(jiǎn)單,行為更像RISC操作,因此它們可以更容易地流水線化。

557f162a-d266-11ec-bce3-dac502259ad0.png

問題是把CISC指令分解成更簡(jiǎn)單的微觀操作并不容易。因此,許多現(xiàn)代的超標(biāo)標(biāo)量x86處理器對(duì)簡(jiǎn)單指令有3個(gè)指令解碼器,對(duì)復(fù)雜指令有1個(gè)解碼器。由于您不知道每條指令從哪里開始和結(jié)束,CISC處理器不得不進(jìn)行一場(chǎng)涉及許多晶體管的復(fù)雜的猜謎游戲。 RISC處理器避免了這種復(fù)雜性,可以將所有浪費(fèi)的晶體管用于添加更多的解碼器或進(jìn)行其他優(yōu)化,如使用壓縮指令或宏操作融合(將非常簡(jiǎn)單的指令組合成更復(fù)雜的指令)。

55ca5810-d266-11ec-bce3-dac502259ad0.png

在不同的CPU設(shè)計(jì)中,指令可以以不同的方式組合或分割。 如果你將蘋果的M1處理器(這是一個(gè)基于RISC的處理器)與AMD和英特爾的處理器做比較,你會(huì)注意到它有更多的指令解碼器。CISC的設(shè)計(jì)人員試圖通過添加微操作緩存來緩解這個(gè)問題。有了微操作緩存,CISC處理器就不必克服障礙,也不必一遍又一遍地解碼相同的復(fù)雜指令。然而,增加這一功能顯然會(huì)消耗晶體管的成本。它不是免費(fèi)的。因此,你正在把你的晶體管預(yù)算浪費(fèi)在微架構(gòu)的復(fù)雜性上,這只是因?yàn)镮SA的復(fù)雜性。

Arm vs RISC-V設(shè)計(jì)理念

比較現(xiàn)代RISC和CISC處理器的一個(gè)問題是,RISC基本上贏了。沒有人再從頭開始設(shè)計(jì)CISC處理器了。Intel和AMD的x86處理器今天之所以流行,主要是因?yàn)橄蚝蠹嫒荨? 如果你今天讓一個(gè)設(shè)計(jì)團(tuán)隊(duì)坐下來,告訴他們從頭開始設(shè)計(jì)一個(gè)高性能處理器,那么你最終不會(huì)得到傳統(tǒng)的CISC設(shè)計(jì)。 然而,這并不意味著在RISC社區(qū)中,有多少設(shè)計(jì)師傾向于CISC或RISC的方向上沒有差異?,F(xiàn)代的Arm處理器和基于RISC-V的處理器就是這種對(duì)比的有趣例子。 Arm的設(shè)計(jì)者更愿意添加復(fù)雜的指令來提高性能。請(qǐng)記住,不是Arm不是RISC設(shè)計(jì)。當(dāng)你的晶體管預(yù)算增長(zhǎng),增加更復(fù)雜的指令是公平的。。 RISC-V的設(shè)計(jì)者更熱衷于將ISA的復(fù)雜性保持在最低程度,而不是增加微架構(gòu)的復(fù)雜性,從而通過使用壓縮指令和宏操作融合等技巧來提高性能。我在這里討論這些設(shè)計(jì)選擇:RISC-V微處理器的天才。 Arm和RISC-V的不同選擇不是隨意的,而是受到非常不同的目標(biāo)和市場(chǎng)的很大影響。Arm越來越多地進(jìn)入高端市場(chǎng)。請(qǐng)記住,蘋果的Arm芯片正在與x86芯片展開正面競(jìng)爭(zhēng),不久,英偉達(dá)也會(huì)這樣做。 RISC-V的目標(biāo)是成為一個(gè)更廣泛的架構(gòu),用于從鍵盤到人工智能加速器、從gGPU到專門的超級(jí)計(jì)算機(jī)的任何東西。這意味著RISC-V意味著靈活性,您添加的指令越復(fù)雜,您施加的復(fù)雜性就越小,從而減少了為特定用例定制芯片的自由。

審核編輯 :李倩

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

    關(guān)注

    1

    文章

    31

    瀏覽量

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

    關(guān)注

    44

    文章

    2216

    瀏覽量

    45963

原文標(biāo)題:RISC和CISC,究竟有何不同?

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    晶體管的輸出特性是什么

    晶體管的輸出特性是描述晶體管在輸出端對(duì)外部負(fù)載的特性表現(xiàn),這些特性直接關(guān)系到晶體管在各種電路中的應(yīng)用效果和性能。晶體管的輸出特性受到多種因素的影響,包括輸入信號(hào)、電源電壓、溫度以及
    的頭像 發(fā)表于 09-24 17:59 ?388次閱讀

    NMOS晶體管和PMOS晶體管的區(qū)別

    NMOS晶體管和PMOS晶體管是兩種常見的金屬氧化物半導(dǎo)體場(chǎng)效應(yīng)晶體管(MOSFET)類型,它們?cè)诙鄠€(gè)方面存在顯著的差異。以下將從結(jié)構(gòu)、工作原理、性能特點(diǎn)、應(yīng)用場(chǎng)景等方面詳細(xì)闡述NMOS晶體管
    的頭像 發(fā)表于 09-13 14:10 ?1800次閱讀

    CMOS晶體管和MOSFET晶體管的區(qū)別

    CMOS晶體管和MOSFET晶體管在電子領(lǐng)域中都扮演著重要角色,但它們?cè)诮Y(jié)構(gòu)、工作原理和應(yīng)用方面存在顯著的區(qū)別。以下是對(duì)兩者區(qū)別的詳細(xì)闡述。
    的頭像 發(fā)表于 09-13 14:09 ?1086次閱讀

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

    RISC(Reduced Instruction Set Computer)和CISC(complex instruction set computer)是當(dāng)前CPU的兩種架構(gòu)。 它們的區(qū)別
    發(fā)表于 07-30 17:21

    晶體管處于放大狀態(tài)的條件是什么

    晶體管是一種半導(dǎo)體器件,廣泛應(yīng)用于電子設(shè)備中。它具有三個(gè)主要的引腳:基極(B)、發(fā)射極(E)和集電極(C)。晶體管的工作原理是通過控制基極和發(fā)射極之間的電流,來控制集電極和發(fā)射極之間的電流。晶體管
    的頭像 發(fā)表于 07-18 18:15 ?1158次閱讀

    PNP晶體管符號(hào)和結(jié)構(gòu) 晶體管測(cè)試儀電路圖

    PNP晶體管是一種雙極性晶體管,用于電子電路中放大、開關(guān)和控制電流的器件。與NPN晶體管相對(duì)應(yīng),PNP晶體管的結(jié)構(gòu)特點(diǎn)在于其三個(gè)不同的半導(dǎo)體區(qū)域:正極(P型)、負(fù)極(N型)、正極(P型
    的頭像 發(fā)表于 07-01 17:45 ?1847次閱讀
    PNP<b class='flag-5'>晶體管</b>符號(hào)和結(jié)構(gòu) <b class='flag-5'>晶體管</b>測(cè)試儀電路圖

    如何提高晶體管的開關(guān)速度,讓晶體管快如閃電

    咱們今天講講電子世界的跑步選手——晶體管。這小東西在電子產(chǎn)品里就像是繼電賽跑的選手,開關(guān)的速度決定了電子設(shè)備的快慢。那么,如何才能提高晶體管的開關(guān)速度呢?來一探究竟。如果把晶體管比作一名運(yùn)動(dòng)員,要想
    的頭像 發(fā)表于 04-03 11:54 ?608次閱讀
    如何提高<b class='flag-5'>晶體管</b>的開關(guān)速度,讓<b class='flag-5'>晶體管</b>快如閃電

    什么是達(dá)林頓晶體管?達(dá)林頓晶體管的基本電路

    達(dá)林頓晶體管(Darlington Transistor)也稱為達(dá)林頓對(duì)(Darlington Pair),是由兩個(gè)或更多個(gè)雙極性晶體管(或其他類似的集成電路或分立元件)組成的復(fù)合結(jié)構(gòu)。通過這種結(jié)構(gòu),第一個(gè)雙極性晶體管放大的電流
    的頭像 發(fā)表于 02-27 15:50 ?4595次閱讀
    什么是達(dá)林頓<b class='flag-5'>晶體管</b>?達(dá)林頓<b class='flag-5'>晶體管</b>的基本電路

    晶體管的偏置定義和方式

    晶體管的偏置是指為了使晶體管正常工作,需要給晶體管的基極或發(fā)射極加上適當(dāng)?shù)碾妷?,從而?b class='flag-5'>晶體管的工作點(diǎn)處于穩(wěn)定的狀態(tài)。
    的頭像 發(fā)表于 02-05 15:00 ?1777次閱讀
    <b class='flag-5'>晶體管</b>的偏置定義和方式

    晶體管Ⅴbe擴(kuò)散現(xiàn)象是什么?

    晶體管并聯(lián)時(shí),當(dāng)需要非常大的電流時(shí),可以將幾個(gè)晶體管并聯(lián)使用。因?yàn)榇嬖赩BE擴(kuò)散現(xiàn)象,有必要在每一個(gè)晶體管的發(fā)射極上串聯(lián)一個(gè)小電阻。電阻R用以保證流過每個(gè)晶體管的電流近似相同。電阻值R
    發(fā)表于 01-26 23:07

    如何根據(jù)管腳電位判斷晶體管

    晶體管是一種常用的電子器件,用于放大和控制電信號(hào)。判斷晶體管的一種常見方法是根據(jù)管腳電位來識(shí)別晶體管的類型和狀態(tài)。本文將詳細(xì)介紹如何根據(jù)管腳電位來判斷晶體管,分為以下幾個(gè)部分進(jìn)行闡述:
    的頭像 發(fā)表于 01-09 17:29 ?1962次閱讀

    FET晶體管電路設(shè)計(jì)參數(shù)

    與作為電流控制器件的雙極晶體管不同,場(chǎng)效應(yīng)晶體管是電壓控制的。這使得FET電路的設(shè)計(jì)方式與雙極晶體管電路的設(shè)計(jì)方式大不相同。
    的頭像 發(fā)表于 01-09 15:38 ?819次閱讀

    晶體管是如何工作的?BJT和MOSFET晶體管區(qū)別

    晶體管的工作原理就像電子開關(guān),它可以打開和關(guān)閉電流。一個(gè)簡(jiǎn)單的思考方法就是把晶體管看作沒有任何動(dòng)作部件的開關(guān),晶體管類似于繼電器,因?yàn)槟憧梢杂盟鼇泶蜷_或關(guān)閉一些東西。當(dāng)然了晶體管也可以
    發(fā)表于 11-29 16:54 ?651次閱讀
    <b class='flag-5'>晶體管</b>是如何工作的?BJT和MOSFET<b class='flag-5'>晶體管</b>區(qū)別

    使用晶體管作為開關(guān)

    晶體管作為現(xiàn)代電子技術(shù)的核心組件之一,尤其是雙極結(jié)型晶體管(BJT),在眾多應(yīng)用中扮演著開關(guān)的重要角色。這篇文章將深入探討如何在共射極配置下使用NPN型BJT晶體管作為開關(guān),并闡明其在切斷區(qū)和飽和區(qū)的工作原理。
    的頭像 發(fā)表于 11-28 11:15 ?1228次閱讀
    使用<b class='flag-5'>晶體管</b>作為開關(guān)

    如何選擇分立晶體管?

    來至網(wǎng)友的提問:如何選擇分立晶體管?
    發(fā)表于 11-24 08:16