官术网_书友最值得收藏!

  • 代碼揭秘
  • 左飛
  • 2730字
  • 2018-12-27 13:20:11

1.1.2 CPU很好很強大

1946年,大科學家馮·諾依曼教授發表了名為《電子計算機裝置邏輯結構初探》的論文,并設計出了第一臺“存儲程序”式計算機EDVAC(埃德瓦克),即離散變量自動電子計算機(The Electronic Discrete Variable Automatic Computer)。馮·諾依曼在論文中提出了其著名的“馮諾依曼體系結構”,從而為現代計算機體系結構奠定了基礎。馮·諾依曼體系結構理論的要點有二:首先,電子計算機應采用二進制0和1直接模擬開關電路通、斷兩種狀態,用于表示數據或計算機指令;其次,“程序存儲,順序執行”。在馮·諾依曼的設計中,計算機硬件應當由控制器、運算器、存儲器、輸入設備和輸出設備5大部分組成。

半個多世紀過去了,盡管計算機技術已經今非昔比,但現代計算機仍然普遍采用這種體系結構設計和制造。如圖1-2所示是現代計算機組成結構示意圖。從圖中我們可以看到,馮·諾依曼當初設想的計算機5大組成設備仍然完整地保留著。其中,輸入設備和輸出設備就是圖中的外設,它的種類繁多,用以實現不同的功能,如顯示器、鍵盤、鼠標、打印機、擴音器、麥克風等。因為外設種類繁多,所以連接的線纜和端口也是多種多樣的。常用的連接線包括PCI總線、火線、USB線纜等;常用的端口包括串口、并口和USB端口等。

圖1-2 計算機組成結構示意圖

存儲器在現代計算機中主要包括:硬盤、光存儲設備(CD或者DVD等)、RAM、ROM和CMOS等。

如果按照存儲位置而言,計算機存儲器是有內外之分的,也就是說,存儲器可以分為內存(內部存儲器)和外存(外部存儲器)兩種。其中,位于主板以外的存儲器即為外部存儲器,例如硬盤、磁帶和光存儲設備都屬于外存;位于主板以內的存儲器即為內部存儲器。內存通常等同于主存儲器(主存),但還有其他形式。廣義上的內部存儲器應該包括RAM、ROM和CMOS等,其中ROM(只讀存儲器)和CMOS(互補金屬氧化物半導體)用來存儲計算機啟動時所需的引導信息,存儲在它們上面的數據在計算機掉電后不會丟失。

這里所講的內存主要是指RAM(隨機存儲器)。RAM分為兩類,即DRAM(動態隨機存儲器)和SRAM(靜態隨機存儲器)。其中,DRAM又包括很多具體的類型,如SDRAM、DDR SDRAM和RDRAM等。準確地說,DRAM才是用來作為計算機中主存使用的RAM,而這里所說的主存就是指使用DRAM來實現的內存。

除了主存以外,內存的另外一種重要形式就是緩存(Cache)。由于SRAM的速度比DRAM要快很多,但容量較小,且價格比較昂貴,因此一般都用來作為緩存(Cache)使用。

控制器和運算器從狹義上可以理解為中央處理器中的控制單元(Control Unit)和算術邏輯單元(ALU)。因為在計算機的其他芯片中也可能存在控制器和運算器,如顯示卡。這里所說的控制器和運算器就是指CPU上的控制單元和算術邏輯單元。

CPU(中央處理器)是計算機的核心。當程序運行時,具體的指令就存儲在主存中,當CPU需要執行指令時,它就會從主存中取出將要執行的指令。從RAM中取出指令并翻譯它們的意思,然后將它們分別派送到下一個處理單元中,這就是控制單元所需要完成的工作。

CPU中的另外一個器件——算術邏輯單元則執行簡單的算術計算和邏輯計算功能。

當一條指令到來時,CPU都會執行4個步驟的工作。這4個步驟分別是:

① 獲取指令。控制單元從RAM中取出指令。

② 翻譯指令。控制單元對指令進行解碼,并根據解碼的結果將必要的數據從RAM中轉移到ALU中。

③ 執行指令。控制單元指導ALU執行必要的邏輯或算術運算。

④ 存儲結果。計算結果被存到RAM中。

為了使讀者更好地理解CPU執行一條指令的具體過程,下面以一條加法指令為例來進行說明。假設A和B是兩個數字,現在要求A與B的和R。圖1-3演示了CPU執行這條指令的具體過程。首先,控制單元從RAM中取出指令,并對指令進行了翻譯。然后,控制單元指導ALU進行加法運算,并告訴ALU從RAM中取出數字并分別存入兩個寄存器中。ALU將寄存器1和寄存器2中的數字經累加器操作后得到結果R,并將R存儲到RAM中。整個加法過程就執行完畢了。

圖1-3 CPU執行指令過程

CPU好比一個永遠喂不飽的饕餮,它的處理速度極快,然而主存的速度盡管要比外存快得多,但相比于計算機的處理速度而言,主存顯然是慢的。由于主存無法以期望的速度向CPU傳遞數據,以至于計算機系統產生了“瓶頸”。如果不能找到有效化解或緩解CPU高處理能力和主存低傳輸速度之間矛盾的方法,那么單純提高CPU的處理速度就是徒勞無益的。

為了提高CPU的利用率,從而提升計算機的整體運作效率,人們設計了緩存這一結構。回到圖1-2中,我們發現微處理器中除了有CPU之外,還有一個重要的部件,那就是緩存(Cache)。緩存是一個特殊的高速內存,前面已經講過,緩存通常是使用SRAM制成的。緩存的目的是為了給出逼近最快存儲器的速度,同時以比較便宜的半導體存儲器的價格提供一個大的存儲容量。注意這里的所謂大的存儲容量是相對于CPU中的寄存器而言的,而更快的速度則是相對主存而言的。換句話說,緩存提供了3種特質:最大程度上逼近寄存器的速度,但又較寄存器而言容量更大,以及較寄存器而言價格更加便宜(盡管緩存的單位價格要比主存貴許多)。

盡管我們已經分析了緩存的諸多特點,但事實上仍然存在兩個疑問困擾著讀者。首先,盡管緩存要比主存快得多,但它的相對容量卻比主存低很多,那么這種小容量、高速度的存儲器怎樣破除計算機性能上的瓶頸呢?其次,緩存是通過什么途徑來緩解CPU高處理能力和主存低傳輸速度之間矛盾的呢?

其實,上述兩個疑問歸根結底可以轉化為一個問題——那就是緩存的設計原理。這其實涉及調度和映射的問題。簡而言之,就是為了加快處理器執行指令的速度,科學家們設計了緩存這個結構用以存儲那些最近被使用的數據。緩存之所以能夠加快計算機的運行速度,主要在于被稱為“訪問局部性”的原理,這個原理的主要內容是認為計算機中剛剛被用過的數據很有可能會被再次用到。這是因為在程序執行過程中,處理器訪問存儲器中的指令和數據傾向于成簇。程序通常包含許多迭代循環和子程序,一旦進入了一個循環或者子程序,就需要重復訪問一小組指令。同樣,對于表和數組的操作,包含存取一簇簇的數據。在一長段時間內,使用的簇是變動的;而在一小段時間內,處理器主要訪問存儲器中的固定簇。這就是設計緩存的基本原理。如果讀者對這一解釋不能完全接受,那么也不要緊,這些問題在本書的后續內容中將有十分詳盡的論述,到那時相信讀者就會明白其中的道理了。

此外還需補充說明的是,緩存是有分級結構的。一級緩存,或稱主要緩存,通常與CPU做在一起,這樣做的目的是為了給CPU提供最快的數據訪問速度。除了一級緩存以外,還有一個稍慢一點的緩存,即二級緩存,或稱輔助緩存,它位于主存和CPU之間,當然有時候它也可能位于CPU之上。如果CPU在緩存中無法找到將要處理的數據,那么它就會直接從主存中取得數據。CPU與存儲區域之間的物理距離也反映出讀取數據和指令的快慢,從一級緩存中獲得數據要比從二級緩存中獲取數據快;同樣,從二級緩存中獲取數據要比從主存中獲取數據快。

主站蜘蛛池模板: 古浪县| 和硕县| 威远县| 遂川县| 长子县| 潜山县| 延长县| 三亚市| 虎林市| 辽阳市| 志丹县| 梅河口市| 沽源县| 嘉禾县| 财经| 大余县| 昌宁县| 浠水县| 广安市| 扎赉特旗| 英德市| 崇信县| 东乡| 邳州市| 江津市| 亳州市| 阳新县| 蓝田县| 宁远县| 高邮市| 基隆市| 溆浦县| 米易县| 许昌市| 获嘉县| 金山区| 水富县| 龙里县| 巧家县| 临澧县| 德州市|