了解ARM內(nèi)核的微體系結(jié)構(gòu),包括寄存器文件的說明及其在處理器中的功能。
在本文中,我們將定義什么是微體系結(jié)構(gòu)。我們還將說明什么是ARM寄存器文件以及它在處理器的微體系結(jié)構(gòu)中的位置。
本文旨在為下一篇文章提供基礎(chǔ)信息,在本文中,我們將介紹匯編的基礎(chǔ)知識,并展示一些使用Raspberry Pi編寫的32位ARM內(nèi)核的基本匯編指令。
什么是微架構(gòu)?
微體系結(jié)構(gòu)(有時寫為“微體系結(jié)構(gòu)”)是允許執(zhí)行指令集的數(shù)字邏輯。它是寄存器,存儲器,算術(shù)邏輯單元,多路復(fù)用器和任何其他數(shù)字邏輯塊的組合實(shí)現(xiàn)。所有這些共同構(gòu)成了處理器。
微體系結(jié)構(gòu)與指令集體系結(jié)構(gòu)(ISA)相結(jié)合,構(gòu)成了系統(tǒng)的整體計(jì)算機(jī)體系結(jié)構(gòu)。不同的微體系結(jié)構(gòu)可以實(shí)現(xiàn)相同的ISA,但是需要在功率效率或執(zhí)行速度等方面進(jìn)行權(quán)衡。最基本的處理器將包括一個寄存器文件,一個ALU,系統(tǒng)存儲器和一個控制單元,該控制單元使處理器可以根據(jù)其執(zhí)行的指令來做出決定。
ARM寄存器文件
要對數(shù)據(jù)執(zhí)行操作,需要有一個臨時存儲該數(shù)據(jù)的地方。這就是處理器的注冊文件的用途。寄存器文件是一堆寄存器,用于存儲臨時值并對這些值執(zhí)行操作。在寄存器之外,可以檢索數(shù)據(jù)并將其存儲在計(jì)算機(jī)的內(nèi)存中。雖然這是一個較慢的操作,但是與可用的相對較少的寄存器相比,可以在內(nèi)存中存儲的內(nèi)容更多。寄存器文件通常以SRAM的形式出現(xiàn)。
讓我們以32位ARM內(nèi)核為例。在這種情況下,我們將重點(diǎn)介紹32位ARMV7指令和32位寄存器。
32位或4字節(jié)的數(shù)量對應(yīng)于ARM指令集中的一個字。ARM寄存器文件包含十六個用于執(zhí)行指令的寄存器。還存在狀態(tài)寄存器來存儲有關(guān)操作結(jié)果的信息,并允許處理器根據(jù)該結(jié)果做出決定。
注冊符號
寄存器用字母R和數(shù)字表示。
R0–R3用于存儲臨時值或變量,但在子例程調(diào)用中也起作用。
R4–R12是通用的。
R13或SP是堆棧指針。堆棧指針包含一個內(nèi)存地址,程序可以在該內(nèi)存中存儲以后需要檢索的信息。
R14是鏈接寄存器,與分支指令一起使用以返回程序中的上一個位置。
R15,稱為PC為program?ounter,存儲下一個指令的地址被執(zhí)行。這給PC帶來了巨大的責(zé)任,因?yàn)樗梢钥刂铺幚砥魃蠄?zhí)行的指令。在PC上輸入錯誤的值,您的程序可能會突然停止運(yùn)行;這通常稱為崩潰。
注冊標(biāo)志
所述 current program status register (CPSR),前面提到的,包含大量的標(biāo)記,可以是當(dāng)集的指令執(zhí)行的。
這些標(biāo)志是N,Z,C和V標(biāo)志:
N代表負(fù)數(shù),并在指令結(jié)果為負(fù)數(shù)時使用。
Z,ZERO,當(dāng)結(jié)果為零。
C代表carry并且在進(jìn)位輸出被設(shè)定的指令結(jié)果時。
V代表oveRFlow ,發(fā)生溢出時被設(shè)置。
為了檢查這些標(biāo)志,在編寫匯編代碼時,某些條件后綴(在后面的文章中討論)會附加到指令中。
處理器的一部分:數(shù)據(jù)路徑和控制單元
盡管我們不會詳細(xì)介紹設(shè)計(jì)ARM處理器的細(xì)節(jié)(也許在以后的文章中),但最好能基本了解寄存器文件適合運(yùn)行我們的指令的系統(tǒng)的位置。下面的圖1是處理器的高度簡化框圖。
寄存器文件包含處理器的當(dāng)前狀態(tài),并且ALU和內(nèi)存與該狀態(tài)交互。內(nèi)存分為多個部分。其中包含正在執(zhí)行的指令列表(匯編程序);另一個保存程序?qū)⑹褂玫臄?shù)據(jù)。所有這些組件以及綠色突出顯示的行構(gòu)成了處理器的數(shù)據(jù)路徑。
數(shù)據(jù)路徑包含執(zhí)行正在實(shí)施的ISA中所有指令所需的所有內(nèi)容。但是數(shù)據(jù)路徑如何知道要執(zhí)行哪個操作?
圖1.高度簡化的處理器
數(shù)據(jù)路徑上方是控制單元??刂茊卧忉屧诿總€指令中找到的操作碼(操作碼)和條件碼,以打開或關(guān)閉數(shù)據(jù)路徑內(nèi)的路由。控制單元使處理器能夠根據(jù)當(dāng)前從內(nèi)存中讀取的指令執(zhí)行不同的操作??刂茊卧蛿?shù)據(jù)路徑共同構(gòu)成了CPU或中央處理單元。
添加允許CPU與其他組件交互的內(nèi)存就形成了我們所謂的處理器。
-
ARM
+關(guān)注
關(guān)注
134文章
9027瀏覽量
366435 -
微架構(gòu)
+關(guān)注
關(guān)注
0文章
22瀏覽量
7028
發(fā)布評論請先 登錄
相關(guān)推薦
評論