一 、CPU架構(gòu)
不同的CPU架構(gòu)通常使用不同的指令集。每種CPU架構(gòu)都有其自己的一組特定的機(jī)器指令,這些指令用于執(zhí)行計(jì)算機(jī)程序。不同的CPU架構(gòu)之間的指令集是不兼容的,這意味著編寫的程序通常需要根據(jù)目標(biāo)CPU的架構(gòu)進(jìn)行編譯或匯編,以確保它們能夠在該CPU上正確運(yùn)行。
一些常見的CPU架構(gòu)包括:
-
x86架構(gòu):這是一種廣泛使用的CPU架構(gòu),英特爾和AMD的“專屬”,常見于個(gè)人計(jì)算機(jī)。Intel從16位微處理器8086開始的整個(gè)CPU芯片系列,系列中的每種型號(hào)都保持與以前的各種型號(hào)兼容,主要有8086,8088(16位),80186,80286(過渡產(chǎn)品),80386,80486以及以后各種型號(hào)的Pentium芯片(32位CPU),通常所說的x86都是指32位CPU
- i386:其實(shí)就是指Intel 80386,是第一個(gè)32位的x86架構(gòu)的處理器,所有intel早期的cpu,amd早期的cpu都支持這種指令集,intel官方文檔里面稱為“IA-32”(安騰)
- AMD64:在原始32位X86指令集的基礎(chǔ)上加入了X86-64擴(kuò)展64位X86指令集,使這款芯片在硬件上兼容原來的32位X86軟件,并同時(shí)支持X86-64的擴(kuò)展64位計(jì)算
- x86-64:AMD比Intel率先制造出了商用的兼容x86的CPU,AMD稱之為AMD64,后來Intel也開始支持AMD64的指令集,但是換了個(gè)名字,叫x86_64,表示是x86指令集的64位擴(kuò)展
-
ARM架構(gòu):ARM是一種低功耗、廣泛應(yīng)用于移動(dòng)端和便攜設(shè)備的CPU架構(gòu)。ARM指令集包括一系列ARM匯編指令,用于執(zhí)行各種操作,包括數(shù)據(jù)處理、分支、加載/存儲(chǔ)等
-
MIPS架構(gòu):MIPS是一種用于嵌入式系統(tǒng)(網(wǎng)關(guān)和機(jī)頂盒)和一些服務(wù)器領(lǐng)域的CPU架構(gòu),其指令集包括一組MIPS匯編指令,用于執(zhí)行各種任務(wù)。
在不嚴(yán)格要求的情況下:
- x86=i386=IA32
- amd64=x86_64=x64!=IA64(純64架構(gòu),不兼容32位,被市場(chǎng)拋棄)
AMD 和 Intel 在它們的CPU中實(shí)現(xiàn)了一些不同的指令集擴(kuò)展。這些擴(kuò)展通常是為了提供更好的性能、安全性或能力。一些著名的擴(kuò)展包括:
- SSE (Streaming SIMD Extensions):基于x86體系架構(gòu)的實(shí)現(xiàn),用于加速多媒體數(shù)據(jù)處理,如圖像處理和音頻處理
- AVX (Advanced Vector Extensions):基于x86體系結(jié)構(gòu)的實(shí)現(xiàn)。它是由Intel首次引入的,用于加速向量化計(jì)算
- AES-NI (Advanced Encryption Standard New Instructions):基于x86和x86-64體系結(jié)構(gòu)的指令集擴(kuò)展,旨在提高加密和解密操作的性能
- AMD64 和 Intel 64:雖然它們都是基于x86的64位擴(kuò)展,但AMD和Intel的64位實(shí)現(xiàn)在某些方面略有不同,盡管它們兼容
- 虛擬化指令集
廠商開發(fā)兼容某種指令集的CPU需要指令集專利持有者授權(quán),典型的例如:Intel授權(quán)AMD,使后者可開發(fā)兼容x86指令集的CPU。
如果從最基本的邏輯角度來對(duì)指令集進(jìn)行分類的話,可以分為兩大類,即所謂的“復(fù)雜指令集CISC”與“精簡(jiǎn)指令集RISC”系統(tǒng),x86是CISC。
二、操作系統(tǒng)和CPU
不同的CPU有不同的指令集,所以同一個(gè)操作系統(tǒng)在不同CPU上運(yùn)行的是不同的“代碼”。
那么,同一個(gè)操作系統(tǒng)為不同cpu要寫好幾遍,也太繁瑣了吧。是的,在高級(jí)編程語言發(fā)明前確實(shí)是這樣的。但是當(dāng)高級(jí)編程語言(特別是C語言)發(fā)明后,操作系統(tǒng)的大部份都是用高級(jí)編程語言寫的。對(duì)于不同的CPU指令集,人們只需要選用相應(yīng)的編譯器(高程程序語言到相應(yīng)CPU指令集的翻譯程序),編譯一下就好了。
三、CPU的位數(shù)和字長(zhǎng)
要設(shè)計(jì)處理器,首先就需要有指令集,規(guī)定處理器相應(yīng)操作,通過指令集去控制處理器實(shí)現(xiàn)相應(yīng)功能,比如說輸入11111111時(shí)CPU就會(huì)去怎么操作(匯編其實(shí)就是用助記符來表示指令集的某一機(jī)器指令)。
軟件(包括操作系統(tǒng))之所以會(huì)有x86和x64的區(qū)分,是因?yàn)樗鼈冃枰c特定的處理器架構(gòu)兼容。不同的處理器架構(gòu)具有不同的指令集和寄存器大小,因此軟件必須根據(jù)目標(biāo)處理器的架構(gòu)進(jìn)行編譯和優(yōu)化。由于x86和x64處理器的寄存器大小和內(nèi)存訪問方式等方面存在差異,編譯器需要根據(jù)目標(biāo)架構(gòu)的特性進(jìn)行優(yōu)化和調(diào)整。因此,相同的代碼在編譯為x86和x64時(shí),生成的機(jī)器碼會(huì)有所不同。在程序進(jìn)行編譯的時(shí)候會(huì)去選擇目標(biāo)平臺(tái)的位數(shù)、操作系統(tǒng)和處理器架構(gòu)等,如果軟件是針對(duì)x86指令集編譯的,它將只能在x86的CPU上運(yùn)行,而無法在x64的CPU上運(yùn)行。
x86和x64使用的是同一套指令集,即x86指令集。x64是x86指令集的64位擴(kuò)展,但它仍然兼容32位的x86指令集。這意味著x64處理器可以運(yùn)行32位的操作系統(tǒng)和應(yīng)用程序,同時(shí)也能夠運(yùn)行64位的操作系統(tǒng)和應(yīng)用程序。
CPU位數(shù)(機(jī)器字長(zhǎng))= CPU中寄存器的位數(shù)
地址總線的位數(shù)決定了CPU的尋址能力,它不一定和CPU位數(shù)相同,比如早期16位的CPU使用的是20位的地址總線,通過段地址的方式來實(shí)現(xiàn)20位的尋址。而現(xiàn)在64位的CPU一般用的也就是40位的地址總線,因?yàn)闆]有那么大的地址尋址的需求。而如果數(shù)據(jù)總線的長(zhǎng)度小于字長(zhǎng)的話,那么會(huì)浪費(fèi)cpu的處理能力,大于字長(zhǎng)的話,傳動(dòng)過來的數(shù)據(jù)cpu一次處理不完,所以一般數(shù)據(jù)總線的長(zhǎng)度等于字長(zhǎng)。文章來源:http://www.zghlxwxcb.cn/news/detail-674814.html
操作系統(tǒng)也有位數(shù),操作系統(tǒng)的位數(shù)是依賴于指令集架構(gòu)的,比如操作系統(tǒng)可能會(huì)寫著"64位操作系統(tǒng),基于x64的處理器"。它是假定操作系統(tǒng)就是工作在x64的處理器上,操作系統(tǒng)里會(huì)去用到64位的寄存器,這也意味著CPU的位數(shù)至少是64,當(dāng)然也可以更大,比如32位操作系統(tǒng)是可以工作在64位的CPU上的。文章來源地址http://www.zghlxwxcb.cn/news/detail-674814.html
到了這里,關(guān)于CPU架構(gòu)和指令集的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!