嵌入式系統(tǒng)是市場上大多數(shù)電子產(chǎn)品的心臟和核心。這是硬件與軟件相結(jié)合的工程實施。我們被嵌入式系統(tǒng)的世界所包圍,在生物識別門鎖、飛機、汽車、心臟起搏器等方面都有微型計算機。這些資源受限、小巧、智能且功能強大的系統(tǒng)幫助我們完成日常任務。
曾經(jīng)想過我們的身體如何運作、神經(jīng)系統(tǒng)、大腦和多任務處理能力。如果將所有這些功能結(jié)合起來,您將大致了解生物嵌入式系統(tǒng)。我們的大腦隱藏了其內(nèi)部發(fā)生的復雜功能細節(jié),但仍允許我們將其控制到最大潛力。嵌入式系統(tǒng)中使用的處理器或控制器也有同樣的復雜性。它們隱藏了復雜的細節(jié),并為我們提供了一個高級界面來處理。對于抽象級別,可以將高級編程語言中用于添加兩個數(shù)字的代碼如何導致芯片中的寄存器處理位并將輸出返回給用戶的方式聯(lián)系起來。
處理器架構(gòu)
中央處理單元,指微處理器和微控制器,在控制單元 (CU) 和算術(shù)邏輯單元 (ALU)的幫助下執(zhí)行特定任務。由于指令是從 RAM 傳遞的,CPU 在其兩個幫助單元的幫助下通過創(chuàng)建變量并為其分配值和內(nèi)存來進行操作。了解 CPU 在其架構(gòu)的幫助下如何執(zhí)行所有這些操作非常重要。如果您想了解有關(guān)微控制器工作原理的更多信息,可以閱讀這篇微控制器基礎文章。
每個 CPU 都有一個與之關(guān)聯(lián)的內(nèi)存來存儲程序和數(shù)據(jù)。程序和數(shù)據(jù)與 CPU 一起工作以獲得輸出。程序提供指令,而數(shù)據(jù)提供要處理的信息。為了訪問程序和數(shù)據(jù) CPU 使用總線,這些總線是電線,更準確地說,這些是您可能在印刷電路板上看到的電線跡線。這些年來,微控制器和微處理器通過適應各種架構(gòu)而發(fā)展,基于應用或設計要求,微控制器的選擇受其中使用的架構(gòu)類型的影響。讓我們來看看流行的架構(gòu)。
馮諾依曼/普林斯頓建筑
CPU 訪問程序和數(shù)據(jù)的方式說明了 CPU 的體系結(jié)構(gòu)。早些時候,單條總線用于訪問程序和數(shù)據(jù)。這種類型的建筑被稱為馮諾依曼建筑或更簡單的普林斯頓建筑。用于獲取代碼和數(shù)據(jù)的單一總線意味著,它們會相互阻礙并減慢 CPU 的處理速度,因為它們必須等待對方完成獲取。這種限制也稱為馮諾依曼瓶頸條件。
哈佛建筑
為了加快這一進程,哈佛架構(gòu)被提出。在該架構(gòu)中,存在用于數(shù)據(jù)和程序的單獨數(shù)據(jù)總線。所以這意味著這個架構(gòu)提出了使用四總線
一組數(shù)據(jù)總線,攜帶數(shù)據(jù)進出 CPU。
一組用于訪問數(shù)據(jù)的地址總線。
一組數(shù)據(jù)總線,用于將代碼傳送到 CPU 中。
用于訪問代碼的地址總線。
使用單獨的地址總線和數(shù)據(jù)總線意味著 CPU 的執(zhí)行時間較短,但這是以設計架構(gòu)的復雜性為代價的。馮諾依曼架構(gòu)可能聽起來有點懶惰,但它具有設計簡單的優(yōu)勢。
當 CPU 和內(nèi)存單元共享相同的空間或 RAM 和 ROM 與處理單元內(nèi)置(片上)時,哈佛架構(gòu)很容易實現(xiàn),例如在距離以微米和毫米為單位的微控制器中。但是,如果保存代碼的內(nèi)存位于處理單元外部,例如x86 IBM PC中的內(nèi)存,則很難實現(xiàn)相同的架構(gòu)。為主板上的數(shù)據(jù)和地址設置一組單獨的走線會使主板變得復雜且昂貴。讓我們通過一個處理器的例子來理解它。
具有 64 位數(shù)據(jù)總線和 32 位地址總線的處理器將需要大約 100 條總線(其中 96 條用于數(shù)據(jù)和地址總線,而其他一些用于控制信號)來實現(xiàn) Von-Neumann 架構(gòu)。如果使用哈佛架構(gòu)實現(xiàn)相同的結(jié)構(gòu),則雙線走線將花費大約 200 條,并且大量引腳從處理器中出來。出于同樣的原因,我們看不到為 PC 和工作站實現(xiàn)的純哈佛架構(gòu)。取而代之的是,使用改進的哈佛體系結(jié)構(gòu),其中使用帶有 CPU 高速緩存存儲器的存儲器層次結(jié)構(gòu)來分離程序和數(shù)據(jù)。內(nèi)存層次結(jié)構(gòu)根據(jù)進程響應時間的層次結(jié)構(gòu)分離存儲。
指令集架構(gòu)
當程序(代碼)被加載到系統(tǒng)的內(nèi)存(RAM)中時,它由 CPU(指微處理器和微控制器)獲取以對數(shù)據(jù)進行操作,這與我們在訓練狗時發(fā)出指令非常相似某些動作和命令。當這些指令作用于某些晶體管時,它們會從一個邏輯電平變?yōu)榱硪粋€邏輯電平以實現(xiàn)這一目標。所以基本上在指令的幫助下,人類程序員與處理器進行通信。每個 CPU 都有自己的指令集,即基于其架構(gòu)和功能的指令集合。
CPU 以 0 和 1 的組合來理解這些指令,也稱為操作碼。對于人類程序員來說,很難記住與 CPU 相關(guān)的每條指令的 0 和 1 的組合。為了簡化人類程序員的工作,我們提供了這些指令的高級接口,編譯器將它們轉(zhuǎn)換為 0 和 1 的形式以供其處理。同樣在每個CPU的指令集中,它可以理解的指令數(shù)量是有限的。
CPU的性能
您可能聽說過與CPU 性能相關(guān)的 CPU 時鐘頻率這個術(shù)語。CPU 的時鐘頻率通常以 MHz(兆赫茲)或 GHz(千兆赫茲)為單位,例如 25 GHz 時鐘頻率。與時鐘速率相關(guān)的數(shù)字表示 CPU 內(nèi)的時鐘以每秒周期為單位滴答的次數(shù)。時鐘頻率的實用性可以通過以下事實來理解:指令是根據(jù) CPU 的時鐘周期執(zhí)行的,該時鐘周期與 CPU 一次可以運行的程序數(shù)量成正比。
CPU的性能取決于程序中寫入的指令數(shù)量,指令越多,CPU執(zhí)行它們所花費的時間就越多。它還取決于執(zhí)行每條指令的時鐘周期數(shù),某些指令需要比其他指令更多的時鐘周期才能執(zhí)行,因此它們落后于 CPU 的性能。程序中的指令和執(zhí)行每條指令所需的周期彼此成反比。改變一個會影響另一個。這就是 CPU 行業(yè)的分界點。
RISC 和 CISC 指令集架構(gòu)
如上所述,程序的執(zhí)行和 CPU 的性能取決于程序中的指令數(shù)量,其中指令作為指令集的一部分被提交給特定的 CPU,第二個因素是程序中的時鐘周期數(shù)其中每條指令都被執(zhí)行。基于這兩個因素,目前有兩個可用的指令集。其中最早的是復雜指令集計算(CISC),而另一個是精簡指令集計算(RISC)。讓我們詳細討論這些架構(gòu)中的每一個,以了解RIC 和 CISC 架構(gòu)之間的區(qū)別。
復雜指令集計算 (CISC)
CISC 代表復雜指令集計算。CISC的主要目的是減少程序執(zhí)行的指令數(shù)量,這是通過將許多簡單的指令(如地址模式,加載等)組合在一起并形成單個復雜指令來完成的。CISC指令包括一系列簡單指令以及一些需要多個時鐘周期才能執(zhí)行的特殊指令。CISC 指令可以直接在內(nèi)存上工作,而無需寄存器的干預,這意味著它不需要一些基本指令,如加載值和內(nèi)存 (RAM) 的要求。CISC 指令更強調(diào)硬件而不是軟件,這意味著不是將負載放在編譯器上,CISC使用晶體管作為硬件來解碼和執(zhí)行指令。然而,由于指令很復雜并且由多個步驟組成,它們在更多的時鐘周期中執(zhí)行。
一個簡單的類比是當您被告知打開書并閱讀第 3章的第 2頁時。在這一系列活動中,您需要執(zhí)行多個步驟,例如從包里找到這本書,而不是將頁面拖到第 3 章,然后轉(zhuǎn)到第 2章然后開始閱讀。如果將一系列步驟組合在讀取第 44 頁(即第 3 章的第 2 頁碼)的單個指令中,我們將得到一條 CISC 指令。
精簡指令集計算 (RISC)
第一個集成芯片是由 Jack Kilby 在 1958 年設計的,它是一個振蕩器,并在 1970 年第一個商用微處理器由 Intel 推出。雖然在處理器開始時沒有 CISC。但隨著計算需求的繁重,CISC 架構(gòu)變得越來越復雜且難以處理。IBM 由 John Coke對 CISC 架構(gòu)進行了全面重新設計,稱為 RISC 。因此,為了區(qū)分這兩種架構(gòu),引入了術(shù)語RISC 和 CISC。
RISC 代表精簡指令集計算。RISC 的主要動機是在指令的大小和執(zhí)行方面引入統(tǒng)一性。這是通過引入可以作為每個周期一條指令執(zhí)行的簡單指令集來完成的,這是通過將諸如加載和存儲之類的復雜指令分解為不同的指令來完成的,其中每條指令大約需要一個時鐘周期來執(zhí)行。RISC 架構(gòu)包括可以在單個時鐘周期內(nèi)執(zhí)行的相同大小的簡單指令?;?RISC 的機器在將每條指令加載到寄存器時需要比 CISC 更多的 RAM來保存值。每個周期執(zhí)行一條指令使基于 RISC 的機器具有流水線的優(yōu)勢(流水線是在執(zhí)行第一條指令之前加載下一條指令的過程,這提高了執(zhí)行效率)。RISC 體系結(jié)構(gòu)更多地強調(diào)軟件而不是硬件,并且需要用更少的指令編寫更高效的軟件(編譯器、代碼)。由于有多條指令, RISC的實現(xiàn)可能聽起來很困難,但它是由指令的大小和每條指令在單個時鐘周期內(nèi)執(zhí)行的事實證明的。
一個簡單的類比,可以理解何時必須執(zhí)行閱讀本書的每個步驟,方法是找到書,然后找到頁面,然后找到章節(jié),最后開始閱讀。
比較 RISC 與 CISC 架構(gòu)
當我們比較 RISC 和 CISC時,RISC 和 CISC 架構(gòu)之間沒有贏家,這完全取決于應用程序和使用場景。RISC通過考慮每條指令的周期來強調(diào)效率,而CISC通過程序中的指令數(shù)量來強調(diào)效率。為了提高效率,CISC 依賴于幾行代碼,而 RISC 減少了每條指令的執(zhí)行時間。公平地說,在共同基礎上比較基于這兩種架構(gòu)的微控制器和微處理器是不可能的。
以兩個 8 位數(shù)字相乘的指令為例,基于 CISC 的處理器大約需要 70-80 個時鐘周期,而基于 RISC 的處理器大約需要 30-40 個時鐘周期,這使其比 CISC 快 2 倍。此外,與基于 RISC 的 CPU 中的單周期處理相比,基于 CISC 的 CPU 需要更多時鐘周期來執(zhí)行指令流水線化是一項艱巨的任務。
CISC 和 RISC 架構(gòu)在哪里使用?
在處理器和控制器誕生之初,只有CISC 架構(gòu)存在,盡管官方名稱 CISC 并不存在。但是隨著編譯器等軟件的引入,基于 RISC 的架構(gòu)開始發(fā)展。英特爾從一開始就依賴于 CISC 架構(gòu)。蘋果、愛特梅爾等幾家愿意在RISC上冒險的公司。幾年后,由于改進困難,CISC變得有點過時和不受歡迎。然而,英特爾從未離開 CISC 并繼續(xù)為改進而開發(fā)。
目前,RISC 和 CISC 架構(gòu)之間的區(qū)別非常小。ARM 設備、Atmel 基于 AVR的設備(如Arduino、PIC 和幾乎所有智能手機制造商)都使用RISC 架構(gòu),因為它們速度更快、資源消耗更少且能效更高。Intel x86 系列和 8051 控制器中仍然存在純粹基于 CISC 的設備。AMD 等制造商在其第 5代K5系列中使用RISC 和 CISC 的混合體。在應用程序的基礎上,CISC 更適合自動化設備,而 RISC 更適合視頻和圖像處理設備。
評論
查看更多