在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

RISC和CISC的區別 ARM架構簡述

454398 ? 來源:博客園 ? 作者:濟南小老虎 ? 2020-09-30 16:07 ? 次閱讀

基本原理(記住1Byte=8bit):

電子計算機本質上是通過給三極管 (或MOS管用半導體材料如硅和硒制成的) 的基極輸送不同的電壓(大于或小于0.7伏特,再講就深了,今天先不講了),進而控制三極管對電容進行充電和放電,實際是通過控制電子的流動(所以叫做電子計算機,個人理解),抽象出0和1的表示。圖1中紅線標出的內存,每行可以理解為8個電容,由內存控制器控制充放電以及讀取電壓,充電狀態(與地電壓(電勢差)大于3.3V)表示1,放電狀態(電壓小于1.8V)表示0,紅線部分的寬度永遠是8bit,不會變。有專門的的電路對這些電容的充放電狀態進行讀取,比如讀到了某Byte的8個電容是00000110,就表示十進制數字6,(當然也有可能理解為96,比如某些摩托羅拉芯片下,大尾或小尾從左還是從右開始算的區別,超出本文討論范圍)

驅動:

簡單來說,CPU與內存之間通過若干根連線(地址、控制、數據總線)來交互信息,比如把0x00F800C這個內存地址的第2個BIT位寫為1,就會觸發顯卡讀取某些內存地址里的內容并顯示到顯示器上。(實際上顯示設備和內存之間也有連線,實現DMA操作,深了今天不講)。當然為什么寫第2個BIT位就能觸發某種動作,這是人為規定的,叫做架構規范,架構后面通過一系列復雜的電路來實現這個規定,比如intelx86規定內存地址0x00F800C的第2個BIT位寫1可以觸發顯示動作,而ARMv8架構下,雖然同樣都是觸發顯示動作,但不一定是操作這個位。這就是兩種架構的差異。如果你作為程序員,編寫Intelx86架構下的顯卡驅動程序,實際是在編寫程序來操作0x00F800C地址Byte的第2個BIT位。這個特定位是通過將基地址+偏移寫進芯片的datasheet來告知芯片應用者(公司)的。比如這個例子中,0x00F8000是基地址,而C是偏移,用0x00F8000+0x0C來表示實際地址。這是一個極其聰明和有用的規定,這樣做的好處,后面章節會詳細描述。

64位與32位:是指圖1中的綠線和黃線標出的部分,在32位CPU模式下,某個地址是十六進制表示為00F8000C,這里每個數字包含4個二進制bite位,共32位。而64位狀態下,這個數字實際是 0000000000F8000C,有64個bit位。在CPU內部有寄存器,intel 80x86架構的寄存器名稱是ax,bx,cx等,而ARM架構下是r0,r1,r2,r3,r4,r5等,寄存器的寬度也分32位和64位。在ARMv7以及以前的架構中,只有32位。在2013年ARM推出64位架構ARMv8,寄存器是64位寬,相應的寄存器名稱為x0,x1,x2,x3等。在C語言中,64位和32位的差異體現在sizeof(指針)上,實際代表的是內存地址的寬度,注意是圖1中綠線標出的寬度,不是紅線,紅線永遠是8bit寬,不要混淆。

指令集:

CPU讀取硬盤或FLASH的上物理位置從0到4K之間的一段二進制流,這段流稱為程序,這段程序的大小就是4K,CPU把這段程序寫入內存地址0x00000000到0x00001000 (這里0x00001000=4096=4K),之后,CPU內的PC寄存器內寫入0x00000000,表示從內存地址0處開始執行機器指令。本質是讀出該地址后4個地址(指令長度規定,指令周期涉及CPU主頻,再講就深了,后面再開貼)中共4Byte長度的二進制數字,比如讀到了52800e01,這個數字實際上對應的是一套電路編號,執行的操作是add r0,r1,意思是將r0和r1中存放的數字相加,把結果寫進r0,這個過程實際上是調用編號為52800e01的電路來完成的,而這種不同編號的電路的集合,就是所謂的指令集。Intel CPU用的是復雜指令集CISC(Complex Instruction Set Computer),前面說的add r0,r1,這是一個CPU指令,實際對應一套復雜的電路實現(包含若干電阻電容MOS等)。intel80x86系統有300條指令,就表示至少有300套不同的電路來實現這300個功能。 而ARM采用的是精簡指令集RISC(Reduced Instruction Set Computer),有100條指令,實際對應100套不同的電路裝置來實現這100個功能。我們用一個簡單的C語言函數來剖析RISC和CISC的區別:

int test_mul(void)

{

return 6*8;

}

這個函數算出6乘以8,返回結果,我們來看看實際執行時,CISC和RISC的差別(此處為了簡潔明了的闡述我們的問題,實際過程比這個復雜,我們提綱挈領,再講就深了,后面有空再開貼)

(圖2

從圖中可以看出,同樣是實現6乘以8的功能,RISC用加法來實現,把8連續加了6次,也就是說調用了6次add電路來實現的,而CISC直接調用乘法電路,實現了6*8,你可以粗淺地理解為RISC很精簡,沒有乘法電路。當然,隨著CPU技術的發展,RISC和CISC一直在互相學習,取長補短慢慢融合了,目前界限已沒有那么明顯。從例子可以看出,CISC程序編碼簡單。而RISC程序編碼相對復雜,因為電路種類較少,實現同樣的功能需要用僅有的電路來變通實現。C語言編譯器和操作系統共同作用,屏蔽了這種差異中的大部分內容,使得不同芯片環境下,實現相同功能的代碼變得大同小異(記住是大同小異,實際還是有差異)。

理解了RISC和CISC,我們再來談談ARM。在單片機時代,有很多設計以及制造芯片的公司,比如飛利浦,飛思卡爾,意法半導體,ARM,恩智浦等公司,當然,領頭羊還是Intel.這些公司中ARM比較獨特,他依托牛津劍橋科研實力,不做具體的芯片,只設計指令集(電路),這些人很聰明,他們深知,市面上存在多種芯片,但實現原理都是大同小異,所以他們專注于研發各種科學且合理的指令電路的設計,并將自己的設計形成了規范,這個規范就是ARMvX架構,從8位時代的ARMv1,到32位的ARMv7,再到64位的ARMv8又叫ARM64,這些不同的架構規范,后面對應的一整套RISC指令集,也就是電路圖,ARM公司的商業模式是出售指令集授權。比如ARM公司將ARMv4的指令集(電路圖)工藝以及實現樣片等打包授權給賣三星公司,三星拿到的是ARMv3的核心架構設計圖紙,里面包含了RISC 指令集的實現電路圖,三星在這個核架構的基礎上添加自己的外設,比如I2C模塊及引腳、GPU顯示增強模塊及引腳、汽車內網絡CAN模塊及引腳,AI人工智能計算模塊等,將CPU核以及這些外設模塊集成到一塊芯片中,命名為ARM7-S3C44B0X芯片,另一款基于ARMv5架構生產出的芯片產品命名為S5P4418-ARM9等,投放市場出售。

至此,你應該明白了ARM,ARMv7以及ARM7的概念了,ARMv7是架構名,ARM7是基于ARMv3架構生產的一個芯片的產品名稱。到ARM11芯片之后,ARM公司更改了芯片的命名規則,由老的ARMx改為 Cortex系列,簡言之:

Cortex-M系列:M-Profile,即"Microcontroller" -Profile,側重微控制器單片機方面的場合。

Cortex-R系列:R-Profile,即"Real-Time"-Profile,側重于實時系統的場合。

Cortex-A系列: A-Profile,即“Application”-Profile,側重于應用功能的場合。

比如我司生產的Hi3798mv200芯片,大的架構基于ARMv8(又叫ARM64)的,而ARMv8中又有Cortex A53分支,準確表達應該是:華為Hi3798mv200是基于ARMv8的Cortex-A53系列的一款芯片。下面是從wiki百科扣的圖,從中可以窺出ARM家族的架構和產品系列的一斑。

基于統一標準的ARMvX架構標準制造出的芯片,好處非常多,生產芯片的目的是顯然是為了運行應用程序。一個典型的場景是linux操作系統的應用,華為和三星生產了兩款不同的cortex A53芯片,內核架構是相同的,不同的是外設基地址,請參考前面“驅動”章節的描述。Linux操作系統移植到華為和三星的這兩款芯片上,只需要修改相關外設所對應的的頭文件中的基地址就可完成大部分功能的移植(注意是大部分,不是全部),當然這依賴于linux開源系統優秀的設計。基于linux以及android系統之上的應用,也實現了統一,基本不會出現一個app既要開發基于三星芯片的版本,又要開發基于華為芯片的另外一個版本的情況,從而推進了移動互聯網生態鏈的大發展(請對比考慮基于X86 linux和基于armv8 linux的確是需要開發兩套不同的APP版本的情況),ARM統一架構的好處是顯而易見的。Intel顯然已經意識到這種優勢,自己也買了ARM的授權,推出相應的“ARM核”芯片產品。

劃重點,有助于理解,試想這樣一個場景:有四款cpu,分別是1.intel x86_64,2.三星Cortex a57,3.華為Cortex a53,4.博通bcm2837,這4款cpu運行的都是64位linux 4.0,現在有個app要上市,請問這個app需要上架幾個不同版本?答案是兩個,intelx86一個,其他三個同一個。?為什么是兩個?根本原因是前面所說的指令集和驅動。

最后,再來談談我司推出的ARM芯片服務器,從本質上來看,我認為這種服務器在功耗方面與Intel x86系列差別不大,這是數字電路的原理使然,VOH和VOL(請百度)的邏輯電平是一樣的,差別在于電路工藝以及散熱等系統的設計。 我個人粗淺地認為,ARM服務器的優勢有兩點:

1.生態優勢,主要是基于ARM linux 之上的應用產業鏈,前文已有闡述。

2.開源優勢,因為ARM的生態鏈上公司很多,各個公司在商業實踐過程中會產生各種新的改良建議和想法,ARM架構集中了太多的智慧,而Intel實際是在單打獨斗。
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 三極管
    +關注

    關注

    143

    文章

    3627

    瀏覽量

    122480
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10911

    瀏覽量

    213150
  • 服務器
    +關注

    關注

    12

    文章

    9335

    瀏覽量

    86135
  • ARM芯片
    +關注

    關注

    1

    文章

    126

    瀏覽量

    21590
  • 電子計算機
    +關注

    關注

    0

    文章

    16

    瀏覽量

    8225
收藏 人收藏

    評論

    相關推薦

    RISC-V入門:模塊化開放式的ISA CISCRISC代碼區別

    本文是RISC-V基礎知識的入門篇。介紹了開放式架構理念,模塊化ISA的技術描述,以及一些商業RISC-V微處理器實現。 RISC-V開放式指令集
    發表于 07-06 14:52 ?1126次閱讀

    CISC(復雜指令集)與RISC(精簡指令集)的區別  

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

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

    -V指令集架構,為學生和研究人員提供一個更加友好和易于理解的指令集,以便他們更好地學習和研究計算機處理器的設計和開發。 RISC-V與ARM、X86指令集架構
    發表于 11-16 16:14

    ARM Intel RISC CISC 單片機 精髓理解

    ARM intel ADM首先是架構,Intel是X86架構,用的CISC 復雜指令集而ARM(Advanced
    發表于 12-05 15:48

    RISCCISC有什么區別

    RISC vs CISC有什么區別
    發表于 04-02 06:27

    ARMRISC-V架構區別是什么?

    、 Cortex-M處理器等。 ARM架構,更主要的是ARM指令集系統。不同于x86架構的復雜指令集(CISC
    發表于 04-25 09:13

    ARMARM的架構ARM架構區別

    目錄文章目錄目錄ARMARM 的架構x86 架構ARM 架構區別ARM 的技術實現ARMA
    發表于 07-16 06:43

    請問ARMRISC-V架構區別是什么?

    請問ARMRISC-V架構區別是什么?
    發表于 10-28 08:19

    精簡指令集架構RISC與復雜指令集架構CISC有何區別

    精簡指令集架構RISC是什么?復雜指令集架構CISC又是什么?精簡指令集架構RISC與復雜指令集
    發表于 12-23 10:02

    RISC-V開源架構ARM架構什么區別

    很多公司覺得ARM收費太高,決定一起搞RISC-V架構,是不是這種開源的是不是不收費的;那和ARM有啥區別,能發展起來嗎
    發表于 10-30 06:38

    Taking the RISC Out of CISC

    已經有一個模糊的定義之間的RISC(精簡指令集計算機)和CISC(復雜指令集計算)架構的地步,在許多情況下,條款幾乎是毫無意義的。許多現代的RISC處理器比
    發表于 06-12 10:01 ?5次下載
    Taking the <b class='flag-5'>RISC</b> Out of <b class='flag-5'>CISC</b>

    簡述risccisc區別

     我們經常談論有關“PC”與“Macintosh”的話題,但是又有多少人知道以Intel公司X86為核心的PC系列正是基于CISC體系結構,而 Apple公司的Macintosh則是基于RISC體系結構,CISC
    發表于 12-19 11:19 ?2.2w次閱讀

    RISCCISC架構有什么區別

    CISC(復雜指令集計算機)和RISC(精簡指令集計算機)是當前CPU的兩種架構。它們的區別在于不同的CPU設計理念和方法。早期的CPU全部是CIS
    的頭像 發表于 02-07 16:05 ?1.9w次閱讀

    X86架構Arm架構區別

    X86架構ARM架構是主流的兩種CPU架構,X86架構的CPU是PC服務器行業的老大,ARM
    的頭像 發表于 06-16 12:50 ?2.6w次閱讀
    X86<b class='flag-5'>架構</b>與<b class='flag-5'>Arm</b><b class='flag-5'>架構</b>的<b class='flag-5'>區別</b>

    ARM處理器和CISC處理器的區別

    ARM處理器和CISC(復雜指令集計算機)處理器在多個方面存在顯著的區別。這些區別主要體現在架構原理、性能與功耗、設計目標、應用領域以及市場
    的頭像 發表于 09-10 11:10 ?582次閱讀
    主站蜘蛛池模板: 日本色频 | 亚洲狠狠97婷婷综合久久久久 | 六月天色婷婷 | 国产午夜三级 | 亚洲成人黄色网址 | 国内一级特黄女人精品毛片 | 欧美福利视频网 | 日日摸夜夜添免费毛片小说 | 在线看一区二区 | 亚洲色图20p| 色婷婷激情五月 | 天天干夜夜想 | 美女视频很黄很a免费国产 美女视频很黄很暴黄是免费的 | 一级色视频 | www.黄黄黄| 色综合中文字幕 | 开心色xxxx | 亚洲理论片 | 在线一区二区观看 | 四虎最新紧急入口4hu | 国产资源在线免费观看 | 色多多视频在线观看播放 | 久久久久久久成人午夜精品福利 | 免费永久欧美性色xo影院 | 97色偷偷| 亚欧毛片基地国产毛片基地 | 国产香蕉一区二区精品视频 | www.av123| 视频一区二区在线 | 欧美成人69 | 美女bbbb视频 | 色天使色护士 在线视频观看 | 亚洲娇小性色xxxx | 永久在线免费观看 | 夜夜夜夜夜操 | www.日本黄色 | 美女视频大全美女视频黄 | h视频免费网站 | 26uuu影院亚洲欧美综合 | 91精品啪国产在线观看免费牛牛 | 欧美一级免费看 |