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

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

1.1.2 CPU很好很強大

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

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

圖1-2 計算機組成結(jié)構(gòu)示意圖

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

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

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

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

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

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

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

當(dāng)一條指令到來時,CPU都會執(zhí)行4個步驟的工作。這4個步驟分別是:

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

② 翻譯指令。控制單元對指令進行解碼,并根據(jù)解碼的結(jié)果將必要的數(shù)據(jù)從RAM中轉(zhuǎn)移到ALU中。

③ 執(zhí)行指令。控制單元指導(dǎo)ALU執(zhí)行必要的邏輯或算術(shù)運算。

④ 存儲結(jié)果。計算結(jié)果被存到RAM中。

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

圖1-3 CPU執(zhí)行指令過程

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

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

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

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

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

主站蜘蛛池模板: 井冈山市| 贵定县| 镇沅| 台南县| 平武县| 临沭县| 元谋县| 桓台县| 理塘县| 南京市| 菏泽市| 古丈县| 探索| 惠来县| 新乐市| 庄河市| 芜湖县| 浦县| 班戈县| 安徽省| 登封市| 封丘县| 宿州市| 鹤壁市| 汉川市| 定安县| 安泽县| 曲阳县| 伊金霍洛旗| 鹤庆县| 房山区| 南郑县| 类乌齐县| 韩城市| 家居| 兴安县| 黎城县| 贞丰县| 溧阳市| 南昌市| 阆中市|