『壹』 CPU怎樣讀取指令
指令都有固定格式,一般先讀第一個位元組判斷是否是前綴,然後讀第2位元組並查表看是否是機器碼,若不是則讀第3個位元組查表,找到指令後繼續讀ModR/M、SIB等參數確定後面還有幾個操作數。如讀取指令mov eax,dword ptr ss:[ebx ecx*4]先讀第一個位元組,查表得到前綴SS,讀第2位元組,發現是mov r,r/m,於是讀第3位元組(ModR/M)得到r=eax,r/m=disp32[--],因此需要讀第4位元組(SIB),得到r/m=[ebx ecx*4]具體可以看Intel Architecture Software Developer』s Manual Volume??2: Instruction Set Reference
『貳』 簡述CPU執行一條指令的過程
幾乎所有的馮·諾伊曼型計算機的CPU,其工作都可以分為5個階段:取指令、指令解碼、執行指令、訪存取數、結果寫回。
1.取指令階段
取指令(Instruction Fetch,IF)階段是將一條指令從主存中取到指令寄存器的過程。
程序計數器PC中的數值,用來指示當前指令在主存中的位置。當一條指令被取出後,PC中的數值將根據指令字長度而自動遞增:若為單字長指令,則(PC)+1àPC;若為雙字長指令,則(PC)+2àPC,依此類推。
2.指令解碼階段
取出指令後,計算機立即進入指令解碼(Instruction Decode,ID)階段。
在指令解碼階段,指令解碼器按照預定的指令格式,對取回的指令進行拆分和解釋,識別區分出不同的指令類別以及各種獲取操作數的方法。
在組合邏輯控制的計算機中,指令解碼器對不同的指令操作碼產生不同的控制電位,以形成不同的微操作序列;在微程序控制的計算機中,指令解碼器用指令操作碼來找到執行該指令的微程序的入口,並從此入口開始執行。
3.執行指令階段
在取指令和指令解碼階段之後,接著進入執行指令(Execute,EX)階段。
此階段的任務是完成指令所規定的各種操作,具體實現指令的功能。為此,CPU的不同部分被連接起來,以執行所需的操作。
4.訪存取數階段
根據指令需要,有可能要訪問主存,讀取操作數,這樣就進入了訪存取數(Memory,MEM)階段。
此階段的任務是:根據指令地址碼,得到操作數在主存中的地址,並從主存中讀取該操作數用於運算。
5.結果寫回階段
作為最後一個階段,結果寫回(Write Back,WB)階段把執行指令階段的運行結果數據「寫回」到某種存儲形式:
結果數據經常被寫到CPU的內部寄存器中,以便被後續的指令快速地存取;
在有些情況下,結果數據也可被寫入相對較慢、但較廉價且容量較大的主存。許多指令還會改變程序狀態字寄存器中標志位的狀態,這些標志位標識著不同的操作結果,可被用來影響程序的動作。
在指令執行完畢、結果數據寫回之後,若無意外事件(如結果溢出等)發生,計算機就接著從程序計數器PC中取得下一條指令地址,開始新一輪的循環,下一個指令周期將順序取出下一條指令。
(2)cpu命令擴展閱讀:
指令的執行過程例子:
開機時,程序計算器PC變為0000H。然後單片機在時序電路作用下自動進入執行程序過程。執行過程實際上就是取出指令(取出存儲器中事先存放的指令階段)和執行指令(分析和執行指令)的循環過程。
例如執行指令:MOV A,#0E0H,其機器碼為「74H E0H」,該指令的功能是把操作數E0H送入累加器。
0000H單元中已存放74H,0001H單元中已存放E0H。當單片機開始運行時,首先是進入取指階段,其次序是:
1. 程序計數器的內容(這時是0000H)送到地址寄存器;
2.程序計數器的內容自動加1(變為0001H);
3.地址寄存器的內容(0000H)通過內部地址匯流排送到存儲器,以存儲器中地址解碼電跟,使地址為0000H的單元被選中;
4.CPU使讀控制線有效;
5.在讀命令控制下被選中存儲器單元的內容(此時應為74H)送到內部數據匯流排上,因為是取指階段,所以該內容通過數據匯流排被送到指令寄存器。至此,取指階段完成,進入解碼分析和執行指令階段。
由於本次進入指令寄存器中的內容是74H(操作碼),以解碼器解碼後單片機就會知道該指令是要將一個數送到A累加器,而該數是在這個代碼的下一個存儲單元。
所以,執行該指令還必須把數據(E0H)從存儲器中取出送到CPU,即還要在存儲器中取第二個位元組。其過程與取指階段很相似,只是此時PC已為0001H。指令解碼器結合時序部件,產生74H操作碼的微操作系列,使數字E0H從0001H單元取出。
因為指令是要求把取得的數送到A累加器,所以取出的數字經內部數據匯流排進入A累加器,而不是進入指令寄存器。至此,一條指令的執行完畢。單片機中PC="0002H",PC在CPU每次向存儲器取指或取數時自動加1,單片機又進入下一取指階段。
這一過程一直重復下去,直至收到暫停指令或循環等待指令暫停。CPU就是這樣一條一條地執行指令,完成所有規定。
『叄』 cpu指令集是什麼
對於CPU指令集,其實對於普通用戶根本沒有去深度研究,這里以通俗易懂的方式來理解cpu指令集的作用和相關知識。
CPU指令集的作用是什麼?
CPU指令集都是存儲在CPU內部的,主要是對CPU運算進行優化、指導的硬程序,有了這些CPU指令集,CPU就能夠更快速高效的工作。系統所安排的每一個命令,都需要CPU根據預先設定好的某一條指令來完成,而這些預先設定好的指令統稱為cpu指令集。
CPU依靠外來的指令「激活」內存指令,來操控與計算電腦。一般來說,預設存儲的指令越多,那麼CPU就越「聰明」,預設存儲的指令越先進,CPU也就越高級,預設的很多指令集中在一起,那麼就是所謂的「指令集」。
cpu指令集越多越好嗎?
CPU指令集的多少,雖然對CPU的效率影響較大,但是對於普通用戶來說,功能幾乎並不會有影響。指令集較少的CPU,例如RISC,也能夠完成所有的功能,不過只是由簡單的指令來構成的,因此在執行的時候,需要花費更長的時間而已。
還記得去年的神U奔騰G4560處理器,相比i3處理器砍掉了三個指令集,即AVX、AVX2、FMA3三個指令集,對於普通家用、游戲玩家來說,沒有任何影響,但是對渲染的設計人員有很大的影響。
總結:
以上就是裝機之家簡單的介紹了CPU指令集的相關知識,其實對於非專業普通用戶來說,根本沒有必要在意CPU指令集這個參數,更多的去關心CPU性能高低即可,關於CPU的性能好壞可以參考一下CPU天梯圖。
『肆』 CPU在取指令階段的操作是什麼
CPU從存儲器或高速緩沖存儲器中取出指令,放入指令寄存器,並對指令解碼。
它把指令分解成一系列的微操作,然後發出各種控制命令,執行微操作系列,從而完成一條指令的執行。
指令是計算機規定執行操作的類型和操作數的基本命令。指令是由一個位元組或者多個位元組組成,其中包括操作碼欄位、一個或多個有關操作數地址的欄位以及一些表徵機器狀態的狀態字以及特徵碼。有的指令中也直接包含操作數本身。
(4)cpu命令擴展閱讀:
CPU工作過程:
提取
第一階段,提取,從存儲器或高速緩沖存儲器中檢索指令(為數值或一系列數值)。由程序計數器指定存儲器的位置。
解碼
CPU根據存儲器提取到的指令來決定其執行行為。在解碼階段,指令被拆解為有意義的片段。根據CPU的指令集架構定義將數值解譯為指令。一部分的指令數值為運算碼,其指示要進行哪些運算。其它的數值通常供給指令必要的信息,諸如一個加法運算的運算目標。
執行
在提取和解碼階段之後,緊接著進入執行階段。該階段中,連接到各種能夠進行所需運算的CPU部件。
寫回
最終階段,寫回,以一定格式將執行階段的結果簡單的寫回。運算結果經常被寫進CPU內部的暫存器,以供隨後指令快速存取。在其它案例中,運算結果可能寫進速度較慢,但容量較大且較便宜的主記憶體中。
某些類型的指令會操作程序計數器,而不直接產生結果。這些一般稱作「跳轉」(Jumps),並在程式中帶來循環行為、條件性執行(透過條件跳轉)和函式。許多指令會改變標志暫存器的狀態位元。
這些標志可用來影響程式行為,緣由於它們時常顯出各種運算結果。例如,以一個「比較」指令判斷兩個值大小,根據比較結果在標志暫存器上設置一個數值。這個標志可藉由隨後跳轉指令來決定程式動向。
在執行指令並寫回結果之後,程序計數器值會遞增,反覆整個過程,下一個指令周期正常的提取下一個順序指令。
參考資料來源:CPU-網路
『伍』 CPU按指令系統如何分類
指令系統按功能分類可分為六大類:
數據傳送指令、數據運算指令、邏輯運算和移位指令、字元串處理指令、控制轉移指令、
處理器控制指令
『陸』 關於cpu的dos命令
沒聽說過。
『柒』 cpu優化命令
你好
Intel的CPU和ARM的CPU都有SIMD指令,可以完成CPU 指令級的並行化。這里邊主要涉及CPU的匯編的知識和一些寄存器的知識。在一些耗時的SLAM優化迭代的場合,經常出現這樣的指令的優化。SSE是Intel x86架構CPU的SIMD指令的簡稱,NEON是ARM CPU的SIMD指令的簡稱。
由於項目的需要,我以前的時候用過一段SSE指令,後來一段時間沒有在接觸過,最近在玩飛機,我們在DJI M100上加了ARM架構的TK1板,在移植slam的代碼的時候,一些SSE的代碼需要轉換為NEON指令。因此這里做了一些兩種SIMD指令的轉化和比較。
『捌』 怎麼用命令獲取CPU核數和主頻等信息
可以使用電腦管家的硬體檢測查看cpu.
1、首先點擊工具箱,打開硬體檢測工具。
2、找到「CPU信息」選項,查看處理器具體型號以及參數。
『玖』 cpu 指令系統是什麼
CPU指令系統是計算機硬體的語言系統,也叫機器語言。
指令系統指機器所具有的全部指令的集合,它描述了計算機內全部的控制信息和「邏輯判斷」能力。
它是軟體和硬體的主要界面,反映了計算機所擁有的基本功能。從系統結構的角度看,它是系統程序員看到的計算機的主要屬性。
因此指令系統表徵了計算機的基本功能決定了機器所要求的能力,也決定了指令的格式和機器的結構。
(9)cpu命令擴展閱讀:
指令系統格式類別:
1、三地址指令:一般地址域中A1、A2分別確定第一、第二操作數地址,A3確定結果地址。下一條指令的地址通常由程序計數器按順序給出。
2、二地址指令:地址域中A1確定第一操作數地址,A2同時確定第二操作數地址和結果地址。
3、單地址指令:地址域中A確定第一操作數地址。固定使用某個寄存器存放第二操作數和操作結果。因而在指令中隱含了它們的地址。
4、零地址指令:在堆棧型計算機中,操作數一般存放在下推堆棧頂的兩個單元中,結果又放入棧頂,地址均被隱含,因而大多數指令只有操作碼而沒有地址域。
5、可變地址數指令:地址域所涉及的地址的數量隨操作定義而改變。如有的計算機的指令中的地址數可少至 0個,多至6個。
參考資料來源:網路-指令系統
『拾』 cpu指令集包括哪些
(1)CISC指令集
CISC指令集,也稱為復雜指令集,英文名是CISC,(Complex Instruction Set Computer的縮寫)。在CISC微處理器中,程序的各條指令是按順序串列執行的,每條指令中的各個操作也是按順序串列執行的。順序執行的優點是控制簡單,但計算機各部分的利用率不高,執行速度慢。其實它是英特爾生產的x86系列(也就是IA-32架構)CPU及其兼容CPU,如AMD、VIA的。即使是現在新起的X86-64(也被成AMD64)都是屬於CISC的范疇。
要知道什麼是指令集還要從當今的X86架構的CPU說起。X86指令集是Intel為其第一塊16位CPU(i8086)專門開發的,IBM1981年推出的世界第一台PC機中的CPU—i8088(i8086簡化版)使用的也是X86指令,同時電腦中為提高浮點數據處理能力而增加了X87晶元,以後就將X86指令集和X87指令集統稱為X86指令集。
雖然隨著CPU技術的不斷發展,Intel陸續研製出更新型的i80386、i80486直到過去的PII至強、PIII至強、Pentium 3,最後到今天的Pentium 4系列、至強(不包括至強Nocona),但為了保證電腦能繼續運行以往開發的各類應用程序以保護和繼承豐富的軟體資源,所以Intel公司所生產的所有CPU仍然繼續使用X86指令集,所以它的CPU仍屬於X86系列。由於Intel X86系列及其兼容CPU(如AMD Athlon MP、)都使用X86指令集,所以就形成了今天龐大的X86系列及兼容CPU陣容。x86CPU目前主要有intel的伺服器CPU和AMD的伺服器CPU兩類。
(2)RISC指令集
RISC是英文「Reced Instruction Set Computing 」 的縮寫,中文意思是「精簡指令集」。它是在CISC指令系統基礎上發展起來的,有人對CISC機進行測試表明,各種指令的使用頻度相當懸殊,最常使用的是一些比較簡單的指令,它們僅占指令總數的20%,但在程序中出現的頻度卻佔80%。復雜的指令系統必然增加微處理器的復雜性,使處理器的研製時間長,成本高。並且復雜指令需要復雜的操作,必然會降低計算機的速度。基於上述原因,20世紀80年代RISC型CPU誕生了,相對於CISC型CPU ,RISC型CPU不僅精簡了指令系統,還採用了一種叫做「超標量和超流水線結構」,大大增加了並行處理能力。RISC指令集是高性能CPU的發展方向。它與傳統的CISC(復雜指令集)相對。相比而言,RISC的指令格式統一,種類比較少,定址方式也比復雜指令集少。當然處理速度就提高很多了。目前在中高檔伺服器中普遍採用這一指令系統的CPU,特別是高檔伺服器全都採用RISC指令系統的CPU。RISC指令系統更加適合高檔伺服器的操作系統UNIX,現在Linux也屬於類似UNIX的操作系統。RISC型CPU與Intel和AMD的CPU在軟體和硬體上都不兼容。
目前,在中高檔伺服器中採用RISC指令的CPU主要有以下幾類:PowerPC處理器、SPARC處理器、PA-RISC處理器、MIPS處理器、Alpha處理器。
(3)IA-64
EPIC(Explicitly Parallel Instruction Computers,精確並行指令計算機)是否是RISC和CISC體系的繼承者的爭論已經有很多,單以EPIC體系來說,它更像Intel的處理器邁向RISC體系的重要步驟。從理論上說,EPIC體系設計的CPU,在相同的主機配置下,處理Windows的應用軟體比基於Unix下的應用軟體要好得多。
Intel採用EPIC技術的伺服器CPU是安騰Itanium(開發代號即Merced)。它是64位處理器,也是IA-64系列中的第一款。微軟也已開發了代號為Win64的操作系統,在軟體上加以支持。在Intel採用了X86指令集之後,它又轉而尋求更先進的64-bit微處理器,Intel這樣做的原因是,它們想擺脫容量巨大的x86架構,從而引入精力充沛而又功能強大的指令集,於是採用EPIC指令集的IA-64架構便誕生了。IA-64 在很多方面來說,都比x86有了長足的進步。突破了傳統IA32架構的許多限制,在數據的處理能力,系統的穩定性、安全性、可用性、可觀理性等方面獲得了突破性的提高。
IA-64微處理器最大的缺陷是它們缺乏與x86的兼容,而Intel為了IA-64處理器能夠更好地運行兩個朝代的軟體,它在IA-64處理器上(Itanium、Itanium2 ……)引入了x86-to-IA-64的解碼器,這樣就能夠把x86指令翻譯為IA-64指令。這個解碼器並不是最有效率的解碼器,也不是運行x86代碼的最好途徑(最好的途徑是直接在x86處理器上運行x86代碼),因此Itanium 和Itanium2在運行x86應用程序時候的性能非常糟糕。這也成為X86-64產生的根本原因。
(4)X86-64 (AMD64 / EM64T)
AMD公司設計,可以在同一時間內處理64位的整數運算,並兼容於X86-32架構。其中支持64位邏輯定址,同時提供轉換為32位定址選項;但數據操作指令默認為32位和8位,提供轉換成64位和16位的選項;支持常規用途寄存器,如果是32位運算操作,就要將結果擴展成完整的64位。這樣,指令中有「直接執行」和「轉換執行」的區別,其指令欄位是8位或32位,可以避免欄位過長。
x86-64(也叫AMD64)的產生也並非空穴來風,x86處理器的32bit定址空間限制在4GB內存,而IA-64的處理器又不能兼容x86。AMD充分考慮顧客的需求,加強x86指令集的功能,使這套指令集可同時支持64位的運算模式,因此AMD把它們的結構稱之為x86-64。在技術上AMD在x86-64架構中為了進行64位運算,AMD為其引入了新增了R8-R15通用寄存器作為原有X86處理器寄存器的擴充,但在而在32位環境下並不完全使用到這些寄存器。原來的寄存器諸如EAX、EBX也由32位擴張至64位。在SSE單元中新加入了8個新寄存器以提供對SSE2的支持。寄存器數量的增加將帶來性能的提升。與此同時,為了同時支持32和64位代碼及寄存器,x86-64架構允許處理器工作在以下兩種模式:Long Mode(長模式)和Legacy Mode(遺傳模式),Long模式又分為兩種子模式(64bit模式和Compatibility mode兼容模式)。該標准已經被引進在AMD伺服器處理器中的Opteron處理器。
而今年也推出了支持64位的EM64T技術,再還沒被正式命為EM64T之前是IA32E,這是英特爾64位擴展技術的名字,用來區別X86指令集。Intel的EM64T支持64位sub-mode,和AMD的X86-64技術類似,採用64位的線性平面定址,加入8個新的通用寄存器(GPRs),還增加8個寄存器支持SSE指令。與AMD相類似,Intel的64位技術將兼容IA32和IA32E,只有在運行64位操作系統下的時候,才將會採用IA32E。IA32E將由2個sub-mode組成:64位sub-mode和32位sub-mode,同AMD64一樣是向下兼容的。Intel的EM64T將完全兼容AMD的X86-64技術。現在Nocona處理器已經加入了一些64位技術,Intel的Pentium 4E處理器也支持64位技術。
應該說,這兩者都是兼容x86指令集的64位微處理器架構,但EM64T與AMD64還是有一些不一樣的地方,AMD64處理器中的NX位在Intel的處理器中將沒有提供。