九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
計(jì)算機(jī)體系結(jié)構(gòu).指令集架構(gòu)

計(jì)算機(jī)體系結(jié)構(gòu).指令集架構(gòu)

微結(jié)構(gòu)與ISA

微結(jié)構(gòu)(Microarchitecture)對應(yīng)的是底層硬件如何實(shí)現(xiàn)指令執(zhí)行的,那么指令集架構(gòu)(Instruction Set Architecture)對應(yīng)的是程序員所看到的程序的模樣。

具體指令是如何被處理器一步一步完成執(zhí)行任務(wù)的,這交給了微結(jié)構(gòu)。而到底有哪些指令可供使用、指令是什么格式、哪些通用寄存器可以用,以及這些指令在程序員看來是要如何執(zhí)行的,就是ISA的范疇了。

因此程序員在某個ISA上寫的程序,這個程序的每一步執(zhí)行了什么操作,最終結(jié)果如何,程序員是知道的。而程序員不知道的是,每一步到底是如何被處理器完成的。

比如一個加法操作“add A,B,C”,在程序員的視角看來,就是將寄存器A和B里的數(shù)相加的結(jié)果存放在寄存器C中,之后程序員就可以把寄存器C作為A和B相加的結(jié)果來繼續(xù)使用。

而在微結(jié)構(gòu)的視角(假設(shè)為亂序執(zhí)行),則是處理器讀取到了一條指令,通過譯碼邏輯得知這是一條加法指令,這條指令需要寄存器A和B里的數(shù)據(jù)作為輸入,因此要檢查有沒有正在執(zhí)行的指令要寫入寄存器A和B(即尋找寄存器A和B的重命名寄存器),并為其結(jié)果寄存器C進(jìn)行寄存器重命名,同時在重排序緩存(ROB)中為該指令申請一個位置,然后送入指令隊(duì)列(即保留站),并不斷檢查寄存器A和B里的數(shù)據(jù)是否可用,該指令會等待直到源數(shù)據(jù)可用,且加法運(yùn)算單元空閑時,則該指令的操作碼以及寄存器A和B的數(shù)據(jù)(或來自寄存器堆,或來自旁路,或來自尚未退休指令的ROB項(xiàng))會送入加法運(yùn)算單元,當(dāng)加法運(yùn)算單元完成后將結(jié)果通過總線寫回到該指令對應(yīng)的ROB項(xiàng)中,并修改該項(xiàng)的狀態(tài)為已完成,退休(retire)邏輯每拍檢查若干ROB的項(xiàng),按照程序順序完成指令的執(zhí)行,即將其結(jié)果寫回寄存器堆,并回收ROB項(xiàng)和重命名寄存器。

  • 若有指令在退休時被發(fā)現(xiàn)有例外,則要沖刷流水線,進(jìn)入例外處理。
  • 若運(yùn)行期間來了中斷,則需要保存現(xiàn)場去處理中斷。
  • 若在此之前有一個讀操作讀取數(shù)據(jù)到A(或B)且未命中緩存,則該指令需要一直等待,而該指令之后的指令由于亂序可能先于這個加法操作完成執(zhí)行。
  • 若該指令運(yùn)行在錯誤的分支預(yù)測路徑上,則分支結(jié)果出來后該指令會被取消掉。

不同的微結(jié)構(gòu)下,如何完成這條指令的執(zhí)行,通常是不一樣的。但程序員并不需要知道內(nèi)部是如何完成的,只需要知道這條指令可以將寄存器A和B的數(shù)據(jù)相加并存入寄存器C就可以了。這就是ISA了。

ISA到底是什么

微結(jié)構(gòu)負(fù)責(zé)實(shí)現(xiàn)每條指令是如何完成執(zhí)行任務(wù)的,而ISA則可以描述指令序模型(instruction sequencing model),有兩種指令序模型:

  • 基于順序的控制流(sequential control-flow)的指令序,對應(yīng)經(jīng)典的馮諾伊曼架構(gòu)??刂屏骷軜?gòu)下有單一的程序計(jì)數(shù)器(PC),其決定了指令的獲取、執(zhí)行和提交的順序。此時的指令是在PC的指揮下一條一條順序執(zhí)行的。目前大多數(shù)ISA都是基于控制流的。
  • 基于數(shù)據(jù)流(data-flow execution)的指令序,對應(yīng)數(shù)據(jù)流架構(gòu)(Dataflow Architecture)。其在邏輯上沒有PC的存在,指令的執(zhí)行并不是按照程序所寫明的順序,而是按照數(shù)據(jù)依賴關(guān)系。
    • 雖然學(xué)術(shù)上有不少對數(shù)據(jù)流架構(gòu)的討論,但是商業(yè)上并沒有純粹數(shù)據(jù)流架構(gòu)的通用處理器,不過在數(shù)字信號處理、網(wǎng)絡(luò)路由、數(shù)據(jù)倉庫等領(lǐng)域則有【1】。
    • 從某種意義上來說,處理器核內(nèi)部的亂序執(zhí)行結(jié)構(gòu)也是一種數(shù)據(jù)流架構(gòu),此時指令只要滿足了數(shù)據(jù)依賴,就可以送去執(zhí)行了,這恰恰打亂了順序的指令流【2】。

ISA涵蓋的內(nèi)容,包括但不限于以下幾點(diǎn):

  • 指令格式:定長或變長;每個位的含義(操作碼,寄存器編號,立即數(shù)等);操作數(shù)的個數(shù);
  • 尋址訪存:尋址范圍(地址空間);尋址模式;尋址粒度(單比特/字節(jié)/64比特等);訪存方式(如load/store結(jié)構(gòu),專門的IO指令);地址對齊;
  • 數(shù)據(jù)類型:8/16/32/64位整數(shù),浮點(diǎn);有/無符號;復(fù)雜數(shù)據(jù)類型(BCD碼、字符串、鏈表);
  • 寄存器:通用寄存器數(shù)量以及每個寄存器含義、寬度;整數(shù)、浮點(diǎn)、向量寄存器;大小端;特殊用途寄存器(如標(biāo)志寄存器、架構(gòu)相關(guān)的寄存器如MIPS的協(xié)處理器寄存器);

通常ISA都會包含以下三類指令:

  • 運(yùn)算指令:算術(shù)運(yùn)算(加減乘除),邏輯運(yùn)算(與或非),移位運(yùn)算,向量運(yùn)算等;
  • 分支指令:條件分支指令,非條件分支指令(如函數(shù)調(diào)用、無條件跳轉(zhuǎn))等;
  • 訪存指令:load/store結(jié)構(gòu);尋址模式(寄存器尋址、基址尋址等);IO指令等;

此外還有:

  • 架構(gòu)相關(guān)指令:原子操作(如ll/sc);內(nèi)存柵欄;緩存相關(guān)的指令;TLB相關(guān)的指令;等
  • 復(fù)雜操作指令:FFT、三角函數(shù)、平方根;等
  • 其他特殊用途:虛擬化指令;例外和中斷(有哪些例外,是否是精確例外);核心態(tài)/用戶態(tài);訪存權(quán)限檢查、禁止運(yùn)行位等安全方面;非對齊訪存;功耗管理;延遲槽;特殊寄存器的訪問;等

最后說一句,在匯編層面還有一些“偽指令”,其只對匯編器有用,不會被翻譯成機(jī)器碼。MIPS中的“.set“指令會影響匯編器如何將匯編翻譯成機(jī)器碼:“.set mips16”使匯編器進(jìn)入MIPS 16模式;“.set mips3”則告訴匯編器下面的指令是MIPS IV(64位指令集,兼容32位指令)中的指令【3】。還有一些“偽指令”,只有匯編器認(rèn)識,CPU不認(rèn)識,在編譯的時候會被匯編器翻譯成 CPU 認(rèn)識的匯編指令,完成相應(yīng)的功能,如“l(fā)i”指令通常會被翻譯成“l(fā)ui”和“ori”。

CISC 和 RISC

Complex Instruction Set Computer,即CISC,復(fù)雜指令集計(jì)算機(jī)。
Reduced Instruction Set Computer,即RISC,精簡指令集計(jì)算機(jī)。

籠統(tǒng)的對比一下CISC和RISC,不完全正確,但能反應(yīng)其本質(zhì)上的差別:

對比 CISC(x86) RISC(ARM,MIPS,etc)
訪存模式 多種尋址模式 load/store
指令寬度 變長 定長
操作數(shù)來源 內(nèi)存或寄存器 寄存器
IO通信 專用的IO指令和IO地址空間 內(nèi)存映射
訪存對齊 不需要 需要
數(shù)據(jù)類型 多而復(fù)雜 少而簡潔
寄存器堆 相對更小 相對更大
設(shè)計(jì)原則 功能多樣的復(fù)雜指令集 功能完備的精簡指令集

可見RISC更加簡潔,因此單從架構(gòu)優(yōu)勢上來說,普遍認(rèn)為RISC更優(yōu)于CISC:

  • RISC的定長指令寬度以及相對規(guī)整的指令格式,簡化了譯碼邏輯,也使得指令之間相關(guān)性的判斷也更容易,比較容易實(shí)現(xiàn)多發(fā)射結(jié)構(gòu),此外也能節(jié)省面積、降低功耗
  • RISC只有簡單的數(shù)據(jù)類型,同樣可以簡化硬件的實(shí)現(xiàn)
  • RISC的load/store訪存模式,簡化了指令相關(guān)性的判斷,簡化了訪存操作的處理,也使得其他指令只能操作寄存器,從而可以更快地執(zhí)行完成
  • RISC可以用更簡單的邏輯實(shí)現(xiàn),比如譯碼結(jié)構(gòu),節(jié)省下來的面積可以使得寄存器堆更大,從而容納更多的指令進(jìn)行亂序執(zhí)行,提高性能。同時更多的寄存器也可以降低編譯器的復(fù)雜性,使優(yōu)化工作更容易進(jìn)行
  • RISC的每條指令只執(zhí)行很簡單的操作,大多可以在一拍內(nèi)完成,因此主頻可以做到很高,流水線的吞吐量可以接近每拍完成1條指令(多發(fā)射則更多)

總的來說,由于RISC更加簡單化,因此微結(jié)構(gòu)的實(shí)現(xiàn)可以更加高效,指令的執(zhí)行效率更容易通過流水線、多發(fā)射、亂序執(zhí)行等技術(shù)來提高。對于CISC所擁有的復(fù)雜指令,比如FFT,RISC則是通過軟件來實(shí)現(xiàn)。這種復(fù)雜指令的使用場景也非常少,因此RISC也符合“常用的做得快,少用的只要對”的原則【4】。

自從1985年以后,所有的ISA都是RISC結(jié)構(gòu)。如今唯一的CISC就是x86指令集,而實(shí)際上其微結(jié)構(gòu)的實(shí)現(xiàn)也融合了RISC的優(yōu)點(diǎn)。

部分指令集簡述

x86指令集

x86指令集在個人電腦的市場占有率上毫無疑問是王者,其創(chuàng)立者為Intel??梢哉fx86指令集是目前世界上最流行的指令集了,也被認(rèn)為是現(xiàn)存唯一的CISC指令集。

Intel主導(dǎo)下的x86架構(gòu),并不一直是處理器架構(gòu)做得最好的,歷史上出現(xiàn)過的Alpha等RISC處理器其架構(gòu)設(shè)計(jì)就比同時代的x86更優(yōu),1976年喬布斯和沃茲尼亞克推出的使用8位6502處理器的Apple II計(jì)算機(jī)也擊敗過x86架構(gòu)【5】。但x86的兼容性(Compatibility)做得最好,其他如Alpha過于追求更先進(jìn)的技術(shù),甚至Alpha指令集代與代之間完全不兼容,從而淡出了市場,而x86的兼容性,使得即使在如今64位時代下,其仍能運(yùn)行16位乃至8位的程序。顯然如果客戶每次升級處理器,都需要重寫一遍程序的話,那絕對是受不了的。

而在兼容性之外,還有Intel和AMD本身的實(shí)力,足以下很多功夫在其他方面(工藝、架構(gòu))上來提高性能,以彌補(bǔ)架構(gòu)上的差距。同時,x86架構(gòu)也逐漸吸取了RISC架構(gòu)的優(yōu)勢,在處理器內(nèi)部,通過復(fù)雜的譯碼邏輯,將變長的復(fù)雜指令轉(zhuǎn)換成定長的、簡潔的微碼,隨后再流水執(zhí)行。這樣帶來的缺點(diǎn)就是x86的譯碼邏輯相對于純正的RISC來說要復(fù)雜很多,但這也許并不全是壞處。

說起指令集兼容性的重要性,有一件事十分典型,即x86從32位發(fā)展到64位時。首先是Intel與惠普聯(lián)合推出了IA-64指令集,但其與32位的x86不兼容,因此難以推廣。隨后AMD推出了x86-64架構(gòu),是在32位的基礎(chǔ)上增加了64位擴(kuò)展,很快占據(jù)了市場。之后IA-64徹底失敗,Intel也接納了x86-64作為x86架構(gòu)在64位時代的版本。

x86架構(gòu)處理器的兩大廠商,即Intel和AMD,只是提供處理器,并不生產(chǎn)整機(jī)。因此Intel和AMD都與IBM達(dá)成了合作,搭上了IBM這班飛速發(fā)展的快車。此外微軟的操作系統(tǒng)也是長期支持x86架構(gòu)??偟膩砜?,x86處理器芯片有Intel和AMD,電腦整機(jī)有IBM,操作系統(tǒng)有微軟,在這幾大廠商的聯(lián)合下,使得x86指令集架構(gòu)占據(jù)了絕大部分的個人電腦市場。其他整機(jī)廠商,如1984年成立的DELL所推出的第一臺計(jì)算機(jī)Turbo PC也是基于Intel 8088處理器【6】。

此外讓人津津樂道的,也有AMD和Intel之間的競爭。進(jìn)入20世紀(jì)后,更明確說是2006年之后,Intel幾乎是壓制AMD,后者也不得不在價格和性能上妥協(xié)來避免直接競爭。但在20世紀(jì)前,AMD不見得比Intel差到哪去,相反在x86最初的二十年里,AMD的實(shí)力絲毫不輸于Intel,甚至更強(qiáng)。而AMD之所以落后則是有多方面原因,包括領(lǐng)導(dǎo)的不力、方向性的錯誤、Intel的不正當(dāng)競爭【7】。最近幾年隨著銳龍架構(gòu)的興起,AMD也逐漸跟上了Intel的腳步,而Intel則飽受工藝研發(fā)的痛苦,被困在14nm工藝長達(dá)5年之久,不斷滯后了先前承諾的10nm計(jì)劃。

關(guān)于x86指令集的更詳細(xì)內(nèi)容,可以移步Intel和AMD提供的開發(fā)手冊了?!?】【9】

ARM

ARM,即Advanced RISC Machine,或更早些時候的Acorn RISC Machine,是一系列RISC架構(gòu)處理器。如果說x86統(tǒng)治了個人電腦(Personal Computer,即PC)市場,那么ARM則是統(tǒng)治了移動設(shè)備市場,主要是手機(jī)、平板以及嵌入式系統(tǒng)。這得益于RISC架構(gòu)的優(yōu)勢,其簡潔性可以很容易的實(shí)現(xiàn)低功耗需求,降低設(shè)計(jì)難度和散熱性要求,同時具備良好的擴(kuò)展性可以滿足眾多需求。

英國計(jì)算機(jī)公司Acorn Computers于1978年在劍橋成立,其在1980s推出了Acorn RISC Machine architecture,用于自家的PC。Acorn的第一款基于ARM的產(chǎn)品是一種協(xié)處理器模塊,用于BBC Micro系列計(jì)算機(jī),而BBC系列計(jì)算機(jī)也用于開發(fā)用于芯片設(shè)計(jì)的仿真軟件,以及用于ARM2開發(fā)的CAD工具。

在1980s末期,Apple Computer公司和VLSI Technology公司開始和ARM合作開發(fā)新的架構(gòu)。1990年Acorn將芯片設(shè)計(jì)團(tuán)隊(duì)獨(dú)立出去,成立了Advanced RISC Machines Ltd,其母公司則為ARM Holdings,與Apple和VLSI共同開發(fā)處理器核。在1992年推出了ARM6架構(gòu),而Apple使用了基于ARM6的ARM610作為Apple Newton PDA的基礎(chǔ)。Acorn在破產(chǎn)前一直在銷售基于ARM的PC,而ARM Holdings則在銷售芯片架構(gòu)設(shè)計(jì)【10】。

ARM并不生產(chǎn)芯片,而是出售芯片設(shè)計(jì),供其他廠商使用。ARM架構(gòu)的授權(quán)方式主要有兩類:核心級授權(quán)和架構(gòu)級授權(quán)【11】:

  • 前者只提供處理器核,可以和其他模塊組合在一起形成可用的芯片。該授權(quán)下主要有兩種級別,一種是提供門級網(wǎng)表(gate netlist)以及一些仿真模型和測試程序,因此無法修改核心架構(gòu),使用這種授權(quán)模式的有三星的Hummingbird和Exyno、蘋果的A4、A5和A5X等。另外一種是提供HDL級的處理器核架構(gòu),此時相當(dāng)于有了源代碼,廠家可以自行修改,進(jìn)行個性化開發(fā),使用這種授權(quán)模式的有蘋果、高通、華為、三星、博通、Xilinx等等。
  • 后者則是指令集授權(quán),可以使用ARM的ISA,內(nèi)核可以自行設(shè)計(jì),但仍需服從ARM架構(gòu)。使用這種授權(quán)模式的有高通、蘋果等。

MIPS、Alpha、Power、SPARC

比較知名的RISC,除了ARM外,簡單介紹一下四種:【12】

  • MIPS(Microprocessor without Interlocked Piped Stages Architecture)是一種十分簡潔的RISC架構(gòu),其出身可謂是名門之家,由斯坦福大學(xué)的Hennessy教授領(lǐng)導(dǎo)的研究小組研制開發(fā)。由于MIPS是經(jīng)典的RISC架構(gòu),且廣泛用于體系結(jié)構(gòu)領(lǐng)域的教學(xué)上,如Patterson和Hennessy的系列著作《計(jì)算機(jī)體系結(jié)構(gòu)·量化研究方法》就主要以MIPS為例。如今除了ARM外,再說其RISC基本上就是MIPS了。我國的龍芯也是基于MIPS指令集,拓展了自己的指令后形成了LoongISA。
  • Power是IBM開發(fā)的RISC指令集。IBM于1980年推出了全球第一臺基于RISC的原型機(jī),而1980年也是IBM在PC市場上稱霸的起步時期,但I(xiàn)BM卻選擇了RISC用于高性能領(lǐng)域,其成功也證明了RISC比CISC在高性能上更具優(yōu)勢。Power架構(gòu)在超算、金融等高端服務(wù)器領(lǐng)域表現(xiàn)十分成功,至今IBM仍在迭代發(fā)展Power架構(gòu)。
  • Alpha是一種64位的RISC指令集架構(gòu),由DEC公司設(shè)計(jì)開發(fā),被用于DEC自己的工作站和服務(wù)器中。Alpha是一款優(yōu)秀的處理器,它不僅是最早跨過GHz的企業(yè)級處理器,而且還是最早計(jì)劃采用雙核,甚至是多核架構(gòu)的處理器。2001年,康柏收購DEC之后,逐步將其全部64位服務(wù)器系列產(chǎn)品轉(zhuǎn)移到Intel的安騰處理器架構(gòu)之上。2004年,惠普收購康柏,從此Alpha架構(gòu)淡出了人們的視野。
  • SPARC(Scalable Processor ARChitecture),是由Sun公司在1985年設(shè)計(jì)的指令集架構(gòu),是一種非常有代表性的高性能RISC架構(gòu)。Oracle收購Sun公司之后,SPARC架構(gòu)歸Oracle所有。2017年9月,Oracle公司宣布正式放棄硬件業(yè)務(wù),也包括了收購自Sun的SPARC處理器。

RISC-V

RISC-V是一個開源的指令集架構(gòu),遵循RISC的設(shè)計(jì)原則,即力求簡潔性,同時保持開放性。這個開源項(xiàng)目于2010年起源于伯克利,隨后一直發(fā)展至今。

RISC-V最大的意義在于其開源性?,F(xiàn)有的ISA基本上都十分昂貴,如ARM的授權(quán)。此外,設(shè)計(jì)CPU也是一個很復(fù)雜、很費(fèi)錢的工作,不僅需要有經(jīng)驗(yàn)的架構(gòu)設(shè)計(jì)人員,還需要不斷的經(jīng)歷仿真、驗(yàn)證、流片測試,而這則是普通公司難以承受的。

RISC-V自誕生之日起就是為了解決這些問題,提供一個開源的、廣泛應(yīng)用的、經(jīng)過驗(yàn)證的指令集。經(jīng)過若干年的開發(fā),RISC-V具備了完整的軟件工具鏈,以及若干開源的處理器架構(gòu)設(shè)計(jì)。2016年,RISC-V基金會成立,作為一個非盈利組織,負(fù)責(zé)維護(hù)RISC-V指令集手冊和架構(gòu)文檔,并推動RISC-V持續(xù)發(fā)展。許多著名科技公司,如谷歌、惠普、Oracle、西部數(shù)據(jù)等,都是RISC-V基金會的創(chuàng)始會員,越來越多的芯片公司也開始使用或計(jì)劃使用RISC-V架構(gòu)。此外,許多體系結(jié)構(gòu)領(lǐng)域的教材,如Patterson和Hennessy的系列著作《計(jì)算機(jī)體系結(jié)構(gòu)·量化研究方法》,其作者本身也大力支持RISC-V架構(gòu),因此后續(xù)越來越多的教材也將以RISC-V為例。而隨著物聯(lián)網(wǎng)時代的加速到來,有一個統(tǒng)一的、通用的、開源的指令集架構(gòu)是很有意義的?!?3】

然而RISC-V的野心太大,無論是PC的王者Intel,還是移動設(shè)備的霸主ARM,都不會任由其發(fā)展下去。目前的形勢下,正在興起的物聯(lián)網(wǎng)、AI則是RISC-V主要的發(fā)展方向【14】。

如何設(shè)計(jì)指令集

胡老師的書中提出了四點(diǎn)指令集設(shè)計(jì)原則【4】:

  • 兼容性:指令集架構(gòu)更新不能扔掉歷史包袱,而設(shè)計(jì)的時候也要為未來留出空間。
  • 通用性:功能上要完備,能夠支持各種軟件,如網(wǎng)絡(luò)應(yīng)用、科學(xué)計(jì)算、操作系統(tǒng)等等。
  • 高效性:即簡潔、規(guī)整,便于CPU的優(yōu)化、編譯器的實(shí)現(xiàn)。
  • 安全性:滿足安全需求。

只有這四點(diǎn)是不夠的,或者說這四點(diǎn)只是針對通用處理器的指令集設(shè)計(jì)而言。

而在設(shè)計(jì)一個專用處理器的ISA的時候,常常在各方面都會面臨多種選擇,最重要的是清楚不同設(shè)計(jì)下的優(yōu)勢和劣勢,根據(jù)實(shí)際的需求選擇設(shè)計(jì)方案。盡管真正從零開始設(shè)計(jì)一個ISA的機(jī)會并不多,但通過這種分析可以對指令集架構(gòu)有更好的了解。此外目前 RISC-V架構(gòu) 的發(fā)展提供了更多接觸指令集設(shè)計(jì)的機(jī)會。從2014年逐漸發(fā)展起來的深度學(xué)習(xí)處理器,也出現(xiàn)了許多面向深度學(xué)習(xí)處理的指令集架構(gòu)。

  • 運(yùn)算類型:即指令集實(shí)現(xiàn)的功能。復(fù)雜指令越多,其單條指令能完成的功能越多,因此可以減少程序的存儲空間,提高內(nèi)存利用率,編譯器的實(shí)現(xiàn)更簡單,但也降低了編譯優(yōu)化的空間。此外復(fù)雜指令需要更復(fù)雜的硬件邏輯支持,包括譯碼邏輯、功能單元等。
  • 語義鴻溝:即可讀性。指令集越復(fù)雜,提供的指令種類越多,其可讀性越好,而越精簡的指令集,其許多功能需要軟件實(shí)現(xiàn),可讀性就更差。
  • 指令格式:變長的指令格式可以減少程序本身所需的存儲空間,但會增加譯碼的復(fù)雜度;定長的指令格式常常需要更大的空間存儲指令,但其譯碼更加簡單,不僅更容易譯碼單條指令,而且更容易實(shí)現(xiàn)同時譯碼多條指令,支持更多指令同時發(fā)射。定長的指令常常也有更加統(tǒng)一的指令格式,如最高若干位通常表示操作碼,這才是降低譯碼復(fù)雜度的主要原因。
  • 寄存器堆:寄存器堆越大,實(shí)現(xiàn)的復(fù)雜度就越高,對芯片設(shè)計(jì)的要求也更高,需要處理訪問時間、功耗、面積等各方面的問題。但越大的寄存器堆可以支持更多的指令在流水線中,提供更多的亂序空間,同時降低了編譯優(yōu)化的難度。此外越大的寄存器堆,就需要在指令中占據(jù)更多的位來對寄存器編碼。
  • 尋址模式:尋址模式越多,對編程越友好,可以增加可讀性,但會加大芯片設(shè)計(jì)的難度,也會影響編譯器的實(shí)現(xiàn)。
  • 其他方面:如何處理例外和中斷;是否需要/如何保證精確例外;是否需要虛擬內(nèi)存;是否需要對齊訪存;是否需要向量部件;需要支持哪些數(shù)據(jù)類型;使用什么存儲模型;等等

參考資料

[1] WiKiPedia.Dataflow architecture[EB/OL].(2019-03-05)[2019-05-04].https://en.wikipedia.org/wiki/Dataflow_architecture

[2] Onur Mutlu.Dataflow[EB/OL].(2013-10-31)[2019-05-04].https://www.archive.ece.cmu.edu/~ece740/f13/lib/exe/fetch.php?media=onur-740-fall13-module5.2.1-dataflow-part1.pdf

[3] adaptiver.set偽指令(mips)[EB/OL].[2019-05-04].https://blog.csdn.net/adaptiver/article/details/6760220

[4] 胡偉武.計(jì)算機(jī)體系結(jié)構(gòu)(第2版)[M].清華大學(xué)出版社:北京,2017:55-71.

[5] Gary Anthes.Timeline: A brief history of the x86 microprocessor[EB/OL].(2008-06-05)[2019-05-05].https://www.computerworld.com/article/2535019/timeline–a-brief-history-of-the-x86-microprocessor.html

[6] Smithsonian.PC’S Limited Microcomputer[EB/OL].[2019-05-05].https://americanhistory.si.edu/collections/search/object/nmah_1321866

[7] Graham Singer.The Rise and Fall of AMD[EB/OL].(2012-11-21)[2019-05-07].https://www.techspot.com/article/599-amd-rise-and-fall/page1.html

[8] Intel.Intel? 64 and IA-32 Architectures Software Developer Manuals[EB/OL].[2019-05-07].https://software.intel.com/en-us/articles/intel-sdm#combined

[9] AMD.Developer Guides, Manuals & ISA Documents[EB/OL].[2019-05-07].https://developer.amd.com/resources/developer-guides-manuals/

[10] David Chisnall.Understanding ARM Architectures[EB/OL].(2010-8-23)[2019-05-07].https://www.informit.com/articles/article.aspx?p=1620207

[11] WiKiPedia.ARM architecture[EB/OL].(2019-03-03)[2019-05-07].https://en.wikipedia.org/wiki/ARM_architecture#History

[12] 胡振波.ISA眾生相[EB/OL].(2018-05-23)[2019-05-07].http://book.51cto.com/art/201805/574072.htm

[13] 胡振波.RISC-V架構(gòu)與嵌入式開發(fā)快速入門[M].人民郵電出版社:北京,2019:19-23.

[14] 半導(dǎo)體行業(yè)觀察.RISC-V未來將面臨怎樣的挑戰(zhàn)?[EB/OL].(2019-03-10)[2019-05-07].https://www.chainnews.com/articles/711647751312.htm

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
ARM和MIPS架構(gòu)
RISC-V、ARM與x86之間有什么區(qū)別?
RISC-V技術(shù)概述
計(jì)算機(jī)體系結(jié)構(gòu)的一知半解
RISC-V科普:理解開源ISA架構(gòu)
RISC與CISC比較
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服