電子電路->機器語言與指令集架構/CPU軟核/CPU硬核->匯編語言與與編譯器

1. 1 電子

元件是電子中的基本零件;而器件常由幾個元件組成,有時也指較大的元件。

元件主要包括電阻、電容、電感;器件種類更多,有雙極性晶體三極管、場效應晶體管、可控硅、半導體電阻電容等。

元件對電壓、電流無控制和變換作用;而器件對電壓、電流有控制、變換作用(放大、開關、整流、檢波、振蕩和調制等)。

參考:http://m.elecfans.com/article/589969.html 元件和器件的區(qū)別

1.2 電路

模擬電路:

處理模擬信號的電路,如一交流電壓經運算放大器放大后輸出一個較大的交流電壓,處理的信號是連續(xù)變化的,如交流電流是連續(xù)的正弦波。模擬電路有運算放大器,調制和解調電路,震蕩電路等。

門電路:實現(xiàn)基本邏輯運算(有與門、或門非門、與非門、或非門、與或非門、異或門等幾種)的單元電路。

數字電路:

處理數字信號的電路,電路處理的信號不是0就是1,0代表低電平,1代表高電平,基本組成原件就是門電路。由于它具有邏輯運算和邏輯處理功能,所以又數字邏輯電路。

數字電路根據邏輯功能的不同特點,可以分成兩大類:

一類叫組合邏輯電路(簡稱組合電路),另一類叫做時序邏輯電路(簡稱時序電路)。

組合電路在邏輯功能上的特點是任意時刻的輸出僅僅取決于該時刻的輸入,與電路原來的狀態(tài)無關。

時序電路是任意時刻的輸出不僅取決于當時的輸入信號,而且還取決于電路原來的狀態(tài),或者說,還與以前的輸入有關。有觸發(fā)器、計數器、寄存器等。

?

2.機器語言與譯碼器

機器語言是用二進制代碼表示,計算機能執(zhí)行,機器指令的集合;

機器語言與譯碼器

指令(指令寄存器)=操作碼(譯碼器將操作碼翻譯交給操作控制器)+地址碼(送到地址寄存器);

參考:http://m.elecfans.com/article/666558.html 一文讀懂處理器,內核,芯片三個概念的區(qū)別

參考:http://www.360doc.com/content/15/0929/22/1564981_502326554.shtml? 寄存器和內存的關系

參考:https://blog.csdn.net/alianada/article/details/82142379? 計算機底層是什么東西?

參考:https://www.eefocus.com/mcu-dsp/402521/r0同樣采用ARM架構,蘋果處理器憑啥比別的強?

參考:https://www.cnblogs.com/voidobject/p/3975552.html(轉)處理器架構、指令集和匯編語言,三者有何關系?

參考:https://blog.csdn.net/p312011150/article/details/79612379匯編指令與機器碼的相互轉換

參考:https://blog.csdn.net/dark_tone/article/details/52426886指令到底是什么?機器碼又是什么?

3.指令集架構/微架構

3.1 Intel指令集

Intel有x86,SSE,AVX指令集結構,AMD有x86,x86-64,3D-Now!指令集。

x86泛指一系列基于Intel 8086且向后兼容的指令集

1971年,Intel發(fā)明了世界上第一個商用微處理器—4004,只有45條指令,每秒執(zhí)行5萬條指令,運行速度只有108KHz,甚至比不上1946年世界第一臺計算機ENIAC,但集成度卻要高很多,集成晶體管2300只,重量還不到一盅司。

在Pentium 4 CPU中,SSE2指令一共144條,

SSE3又新增加了13條新指令,一條用于視頻解碼,兩條用于線程同步,其余用于復雜的數學運算

SSE4又新增加了50條有助于編譯、媒體、字符/文本處理和程序指向加速指令。

參考:http://www.360doc.com/content/15/0411/07/21966267_462329844.shtmlIntel CPU 發(fā)展簡史

參考:https://baike.baidu.com/item/指令集/238130指令集

3.2 ARM指令集

ARM有共三種指令集:ARM指令集,Thumb指令集和Thumb-2指令集。其具體使用了什么指令集,芯片采用ARM V?

參考:https://www.cnblogs.com/voidobject/p/3975552.html

操作系統(tǒng)位數/CPU架構位數/指令集位數/向上兼容

操作系統(tǒng)的位數是說其所依賴的指令集的位數。

32位CPU:數據總線(DataBus)有32根,ALU能處理的數據位數。

向下(前)兼容

CPU向前兼容,64位CPU兼容32位指令集,所以64位CPU可以跑32位操作系統(tǒng)。

32位CPU兼容16位指令集,所以32位CPU可以跑16位操作系統(tǒng)。

如何實現(xiàn)向下兼容?

64位cpu是從16位發(fā)展過來的,依然是x86結構,原理和基本指令都是一樣的。

bits?16?????????????????????;?為16?位代碼而編譯 ?

mov?eax,?1??;?機器碼是:66?b8?01?00?00?00?

16位編程使用了32位寄存器,編譯器會自動加上default operand-size override prefix(默認操作數大小覆蓋前綴)。

bits?32?????????????????????;?為32位代碼而編譯 ?

mov?eax,?1??;?機器碼是:?b8?01?00?00?00?

這段代碼的匯編語句是完全一樣的,只不過是為32位代碼而編譯,它們的機器碼就是不一樣的。

操作64位寄存器的低32位,高32位會清0,例如mov eax, 0FFFFFFFCH,則整個寄存器為00000000FFFFFFFCH,高32位會被清0。

參考:https://zhidao.baidu.com/question/329146909.html寄存器如何向下兼容?

參考:http://book.51cto.com/art/201210/359658.htm通用寄存器

參考:https://zhidao.baidu.com/question/2011537345660325628.htmlCPU位數,操作系統(tǒng)位數

指令集是CPU選擇的語言,而微架構是具體的實現(xiàn)。

3.3? 微架構

電腦語言的「指令集架構」 vs. 執(zhí)行語言載具的「處理器核心微架構」

指令集無法決定架構,x86指令集也可以用ARM架構。

指令集版本微架構用途

ARM V1ARM1

ARM V2ARM2,?ARM3

ARM V3ARM6,?ARM7

ARM V4StrongARM,?ARM7TDMI,?ARM9TDMI

ARM V5ARM7EJ,?ARM9E,?ARM10E,?XScale

ARM V6ARM11,?ARM Cortex-M

ARM V7ARM Cortex-A,?ARM Cortex-M,?ARM Cortex-R

ARM V8

ARM V9

?

ARM推出的通用的架構,緩存(cache)就是在內核中的,這些內核又名公版架構。

寒武紀自行開發(fā)的指令集DianNaoYu(電腦語),看似俗得不得了的名稱,卻真正是屬于國產的芯片指令集。計算機這個行業(yè)指令集不值錢,卻掌握著這個行業(yè)的話語權,intel開發(fā)的X86指令集霸占了桌面電腦話語權數十年,AMD不得不向其獲取授權。

https://new.qq.com/omn/20191113/20191113A0II1A00?這么多號稱國產芯片的公司,為什么寒武紀第一個成為獨角獸公司?


3.4? ARM授權模式

?????ARM提供三類CPU授權:

參考:https://blog.csdn.net/weixin_34146805/article/details/85779161 ARM介紹2:授權模式

3.4.1 指令集架構授權

ARM提供指令集以及設計規(guī)范。

2016年,三星發(fā)布了Exynos8 Octa 8890(Octa代表8核),這是三星第一款擁有自研架構的ARM芯片

自研架構=自研微架構≈cortex-A53,A73(公版微架構)

高通,基于ARM v7深度開發(fā)自己的處理器微架構。

蘋果,基于ARMv7開發(fā)Swift微架構。

3.4.2軟核授權

ARM提供CPU設計源代碼,不允許更改,且不能剽竊。

多數廠商選擇直接購買ARM CPU內核設計方案,然后與其它組件(比如GPU、多媒體處理、調制解調器等等)整合,制造出完整的SoC片上系統(tǒng)。

參考:

https://blog.csdn.net/baidu_35679960/article/details/77606930指令集架構、arm內核、SoC、處理器、CPU、GPU等的關系

https://blog.csdn.net/zzx1045917067/article/details/78575259ARM 指令集版本和ARM 版本

3.4.3硬核授權

ARM公司不提供設計源代碼,提供類似于二進制代碼的網表。

4.匯編語言與編譯器

匯編語言:用助記符代替機器指令操作碼,用地址符號或標號代替指令或操作數的地址。

匯編語言和機器語言指令集是一一對應的,不同平臺之間不可直接移植。

指令集架構(ISA):規(guī)定了處理器如何識別這些匯編指令,以及如何與上層交互,區(qū)分軟件和硬件的界限。芯片的軟件部分。指令集中的每一條指令對應著一條匯編指令和固定的實現(xiàn)電路,程序設計最小語言單位。

如add r1, r2, r3,

在XX指令集,1010代表add,所以這條指令的指令碼部分就是1010,

但XX指令集,0000代表add,所以同樣的二進制串在不同的指令集下有不同的解讀。

在不同的匯編語言里它有不同的意思,有可能是代表r1=r2+r3 , 也有可能是代表r3=r2+r1。

參考:https://www.cnblogs.com/voidobject/p/3975552.html

參考:https://blog.csdn.net/qq_34322603/article/details/75276415

參考:https://blog.csdn.net/yangtalent1206/article/details/6247607?utm_source=jiancool

匯編語言和機器語言機器移植性差,因為針對特定指令系統(tǒng),不同的CPU匯編語言機器語言不能通用。

匯編語言機器語言程序結構性差,不便于模塊化設計,也造成可移植性差。

指令集架構是專利,不是版權。

ARM有ARM V1~V8指令集結構,(V8是指指令集版本號,ARM architecture)。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容