【計組】計算機的基本概念、組成結(jié)構(gòu)

這學期學校開了《計算機組成原理》這門課,作為四大金剛之一,內(nèi)容還是比較難理解的,很多知識點都需要去反復記憶,所以我結(jié)合自己的理解將大部分內(nèi)容整理出來,才疏學淺,如有錯誤,歡迎大家指正!
以下為本節(jié)目錄:
1 計算機的基本概念
1.1 計算機的軟硬件概念 1.2 計算機的分類
2 計算機的誕生與發(fā)展
2.1 馮 · 諾依曼體系 2.2 計算機發(fā)展歷程 2.3 未來的發(fā)展趨勢
3 計算機系統(tǒng)的組織
3.1 硬件系統(tǒng) 3.2 軟件系統(tǒng) 3.3 計算機系統(tǒng)層次結(jié)構(gòu) 3.4 軟件與硬件的邏輯等價性
4 計算機系統(tǒng)的性能指標
計算機是 20 世紀人類最偉大的發(fā)明之一,是一種能夠存儲程序,通過執(zhí)行程序指令,自動、高速、精確地對各種信息進行復雜運算處理,并輸出運算結(jié)果的一種電子設(shè)備。
誰也不曾想到,當初只是當作軍事計算工具應(yīng)用的電子計算機,在半個世紀中竟然會成為改變社會結(jié)構(gòu),乃至促進人們的工作和生活方式發(fā)生驚人變化的寵兒。
1 計算機的基本概念
1.1 計算機的軟硬件概念
計算機系統(tǒng)由**“硬件”和“軟件”兩部分組成**。
硬件是指看得見摸得著的各種電子元器件。如主機、鍵盤、鼠標等。 軟件看不見摸不著,但在邏輯上,我們確實可以感知到它的存在,它由人們事先編制的具有某種功能的程序組成。比如操作系統(tǒng)、編程語言等。
計算機的軟件通常又分為:系統(tǒng)軟件和應(yīng)用軟件。
系統(tǒng)軟件:又稱為系統(tǒng)程序,主要用來管理整個計算機系統(tǒng),監(jiān)視服務(wù),使系統(tǒng)資源得到合理調(diào)度。它包括:操作系統(tǒng)、語言處理程序、數(shù)據(jù)庫管理系統(tǒng)、網(wǎng)絡(luò)軟件、服務(wù)程序等。 應(yīng)用軟件:又稱為應(yīng)用程序,它是用戶根據(jù)需要事先編制的程序。比如 QQ、微信等。
1.2 計算機的分類
計算機的種類很多,從不同的角度看,有不同的分類。
按照計算機的處理信息的方式,可以分為數(shù)字計算機和模擬計算機。
數(shù)字計算機:通過信號的兩種不同狀態(tài)(1 和 0)來表示信息,可以方便地對數(shù)字信號進行算術(shù)和邏輯運算,具有速度快、精度高、便于存儲等優(yōu)點。通常講的計算機一般是指數(shù)字計算機。 模擬計算機:一般只能處理模擬信號,如連續(xù)變化地電壓、電流和溫度等。這類計算機應(yīng)用鄰域有限,通用性不強。 按照計算機通用性地差異,計算機可以分為專用計算機和通用計算機。
專用計算機:專門為某一問題而設(shè)計的計算機。功能比較單一,對應(yīng)用環(huán)境地適應(yīng)性很差。例如計算導彈彈道的專用計算機。 通用計算機:各行業(yè)和各種環(huán)境都能使用的計算機,一般具有較高的運算速度、較大的內(nèi)存容量。我們平常使用的個人臺式計算機都屬于通用計算機。 按照計算機系統(tǒng)的規(guī)模和處理能力,通用計算機可以分為以下幾類:
微型機 小型機 大型機 超級計算機
2 計算機的誕生與發(fā)展
2.1 馮 · 諾依曼體系
1945 年,被稱為“計算機之父”的美籍匈牙利科學家馮 · 諾依曼在研究 EDVAC 時提出了“存儲程序”的概念。以此概念為基礎(chǔ)的各類計算機稱為馮 · 諾依曼機。它的特點可以歸納如下:
計算機的結(jié)構(gòu)應(yīng)由五大部分組成:運算器、控制器、存儲器、輸入設(shè)備、輸出設(shè)備。 指令和數(shù)據(jù)以同等地位存放在存儲器內(nèi),并可按地址尋訪。 指令和數(shù)據(jù)均用二進制數(shù)表示。 指令由操作碼和地址碼組成,操作碼用來表示操作碼的性質(zhì),地址碼用來表示操作數(shù)在存儲器中的位置。 指令在存儲器內(nèi)按順序存放。
典型的馮 · 諾依曼計算機是以運算器為中心的,如下圖所示。

現(xiàn)代的計算機已轉(zhuǎn)化為以存儲器為中心,如下圖所示。

圖中各部件的功能如下:
運算器用來完成算術(shù)運算和邏輯運算,并將運算結(jié)果暫時存放在運算器內(nèi)。 存儲器用來存放數(shù)據(jù)和程序。 控制器用來控制、指揮程序和數(shù)據(jù)的輸入、運行以及處理運算結(jié)果。 輸入設(shè)備用來將人們熟悉的信息形式轉(zhuǎn)換為機器能識別的信息形式,常見的有鍵盤、鼠標等。 輸出設(shè)備可將機器運算結(jié)果轉(zhuǎn)換為人們熟悉的信息形式,常見的有打印機輸出、顯示器輸出等。
計算機的五大部件在控制器的統(tǒng)一指揮下,有條不紊地自動工作。
由于運算器和控制器在邏輯關(guān)系和電路結(jié)構(gòu)聯(lián)系上十分緊密,尤其在大規(guī)模集成電路制作工藝出現(xiàn)后,這兩大部件往往集成在同一芯片上。因此,通常將它們合起來統(tǒng)稱為中央處理器(Central Processing Unit,CPU)。
把輸入設(shè)備與輸出設(shè)備簡稱為 I/O 設(shè)備(Input/Output Equipment)。
這樣,現(xiàn)代計算機可認為由三大部分組成:CPU、I/O 設(shè)備及主存儲器(Main Memory,MM),如下圖所示。

CPU 與主存儲器合起來又可稱為主機,I/O設(shè)備又可稱為外部設(shè)備。
2.2 計算機發(fā)展歷程
第一代,電子管計算機(1946 - 1957 年) 第二代,晶體管計算機(1958 - 1964 年) 第三代,中小規(guī)模集成電路計算機(1965 - 1971 年) 第四代,大規(guī)模和超大規(guī)模集成電路計算機(1971 年至今)
2.3 未來的發(fā)展趨勢
計算機的發(fā)展趨勢可以用五個字概括:巨、微、多、網(wǎng)、智。
巨型化 微型化 多媒體化 網(wǎng)絡(luò)化 智能化
3 計算機系統(tǒng)的組織
3.1 硬件系統(tǒng)
在馮 · 諾依曼體系中,計算機硬件系統(tǒng)是由運算器、控制器、存儲器、輸入設(shè)備和輸出設(shè)備五大部件組成的。
隨著計算機技術(shù)的發(fā)展,計算機硬件系統(tǒng)的組織結(jié)構(gòu)發(fā)生了許多重大的變化,如運算器和控制器已組合成一個整體,稱為中央處理器(Central Processing Unit,CPU)。
存儲器已成為多級存儲器體系,包含主存、高速緩存和外存三個層次。
下圖是一種計算機硬件系統(tǒng)的簡化結(jié)構(gòu)模型示意圖,其中包含 CPU、存儲器、輸入/輸出(I/O)設(shè)備和接口等部件,各部件之間通過系統(tǒng)總線相連接。

(1)CPU
CPU 是計算機硬件系統(tǒng)的核心部件,由運算部件、寄存器組和控制器組成,它們通過 CPU 內(nèi)部的總線相互交換信息。
運算器
功能:完成算術(shù)運算(定點數(shù)運算、浮點數(shù)運算)和邏輯運算。
基本組成:
主要由 ALU(算術(shù)邏輯單元)構(gòu)成,執(zhí)行算術(shù)、邏輯運算以及移位循環(huán)等操作,是 CPU 功能的主要執(zhí)行操作。 ALU 以累加器為核心,具有多種運算功能。 運算的位數(shù)越多,計算精度就越高,但器件也更復雜。 運算器的數(shù)據(jù)寬度一般是:8 位、16 位、32 位或 64 位。 寄存器組用來存放數(shù)據(jù)信息和控制信息。
控制器
功能:產(chǎn)生控制命令(微命令),控制全機操作。
基本組成:

(2)存儲器
功能:存儲數(shù)據(jù)和數(shù)字化后的程序。
不論是數(shù)據(jù),還是程序,存儲器存儲的全是用 0 或 1 表示的二進制代碼。
存儲器有以下幾個基本概念:
存儲單元:在存儲器中保存一個 n 位二進制數(shù)的 n 個存儲電路,組成一個存儲單元。
存儲元件:能夠存放一位二進制代碼 0 或 1 的器件。存儲器由許多存儲單元組成,每個存儲單元又包含若干個存儲元件。
存儲字:一個存儲單元可以存儲一串二進制代碼,稱這串二進制代碼為一個存儲字。
存儲字長:存儲字(也就是存儲單元存儲的二進制代碼)的位數(shù)稱為存儲字長。
地址:存儲器由許多存儲單元組成,每個存儲單元的編號,稱為地址。
存儲容量:存儲器所有存儲單元的總數(shù)。
存儲容量越大,能存儲的信息越多,常用的單位有 “KB、MB、GB、TB、PB” 等。
這幾個概念比較晦澀,舉個栗子來幫助理解:
我們可以把存儲器看作一棟大樓,那么每個存儲單元就可以看作大樓中的每個房間,每個存儲元件可以看作房間中的一張床位,床位有人值為 1,無人為 0,床位數(shù)相當于存儲字長。為了方便尋找某一個房間,每個房間需要有一個房間編號,這個房間編號就相當于地址。
存儲器用來存儲計算機中的所有信息,一個存儲器無法同時滿足存儲容量大、存取速度快的需求,因此常將存儲器分為主存、外存、緩存三級存儲體系。
主存用來存放 CPU 需要使用的程序和數(shù)據(jù)。主存的每個存儲單元都有固定的地址,CPU 可以按地址直接訪問他們。這樣就要求主存的存取速度很快,但目前由于技術(shù)限制,都只有幾個 G。通常將 CPU 和主存合稱為主機,由于主存在在主機之內(nèi),所以主存又叫做內(nèi)存。 外存位于主機之外,用來存放 CPU 暫不使用的程序和數(shù)據(jù)。CPU 并不直接按地址訪問它們,而是按文件名將它們從外存調(diào)入主存。因此外存的容量很大,但存取速度比主存慢,如磁盤、固態(tài)硬盤和 U 盤都是常用的外存。 高速緩存(Cache)是為了提高 CPU 的訪存速度,它設(shè)置在 CPU 和主存之間,是一個存取速度很快的存儲器,不過容量較小,用來存放 CPU 當前正在使用的程序和數(shù)據(jù)。
(3)輸入/輸出設(shè)備
輸入設(shè)備將各種形式的外部信息轉(zhuǎn)換為計算機能夠識別的代碼形式送入主機。例如鍵盤、鼠標等。
輸出設(shè)備將計算機處理的結(jié)果轉(zhuǎn)換為人們所能識別的形式(字符、圖像、聲音)輸出。例如顯示器、打印機等。
輸入設(shè)備和輸出設(shè)備都與主機傳輸數(shù)據(jù),所以將它倆合稱為輸入/輸出(Input/Output,I/O)設(shè)備。按照邏輯劃分,它們位于主機之外,我們又稱它為外設(shè)。我們經(jīng)常所說的外設(shè)就是它們了。
(4)總線
總線是一組能為多個部件分時共享的信息傳輸線。
根據(jù)傳送信息不同,可分三類:
傳送各種數(shù)據(jù)信息的數(shù)據(jù)總線(Data Bus) 傳送各種地址信息的地址總線(Address Bus) 傳送各種控制信號的控制總線(Control Bus)
(5)接口
外設(shè)的種類、數(shù)量是多變的,為了將標準的系統(tǒng)總線與各類外設(shè)連接,需要在系統(tǒng)總線與 I/O 設(shè)備之間設(shè)置一些接口部件,具有緩沖、轉(zhuǎn)換、連接等功能,這些部件就被稱為接口。

3.2 軟件系統(tǒng)
軟件類別:系統(tǒng)軟件和應(yīng)用軟件。
系統(tǒng)軟件:又稱為系統(tǒng)程序,主要用來管理整個計算機系統(tǒng),監(jiān)視服務(wù),使系統(tǒng)資源得到合理調(diào)度。它包括:操作系統(tǒng)、語言處理程序、數(shù)據(jù)庫管理系統(tǒng)、網(wǎng)絡(luò)軟件、服務(wù)程序等。
應(yīng)用軟件:又稱為應(yīng)用程序,它是用戶根據(jù)需要事先編制的程序。比如 QQ、微信等。
3.3 計算機系統(tǒng)層次結(jié)構(gòu)
早期計算機只有機器語言(用 0、1 代碼表示的語言),程序員必須用機器語言來編寫程序。這樣就要求程序員對他們計算機硬件和指令系統(tǒng)非常熟悉,編程難度相當大。不過編寫的程序計算機可以直接運行。直接執(zhí)行機器語言的機器稱為實際機器 M1。

20 世紀 50 年代開始出現(xiàn)了符號式的程序設(shè)計語言,也就是匯編語言。它用符號 ADD、SUB 等分別來表示加法、減法,并且用符號來表示指令和數(shù)據(jù)所在存儲單元的地址。
相比機器語言,編程難度有所降低,但是沒有機器能夠直接識別匯編語言,每臺機器都需要編寫一套對應(yīng)指令的匯編語言,這樣就導致程序員這對程序員來說簡直是天災(zāi)。
將具有翻譯功能的匯編程序的計算機看做 M2,M2 是在 M1 之上,因為需要匯編程序?qū)R編語言翻譯成對應(yīng)的機器語言。

源程序進入機器 M1 運行前,必須先將高級語言程序翻譯成匯編語言程序(或其他中間語言程序),然后再將其翻譯成機器語言程序;也可以將高級語言程序直接翻譯成機器語言程序。
這些工作都是由虛擬機 M3 來完成的,對程序員來說,它們不需要知道這個翻譯過程,因此降低了編程難度。
由此可得出具有三級層級的計算機系統(tǒng)。

將高級語言翻譯成機器語言的軟件稱為翻譯程序。翻譯程序分為兩種:
編譯程序:將用戶編寫的高級語言程序(源程序)的全部語句一次全部翻譯稱機器語言,然后執(zhí)行此程序。 解釋程序:將源程序的每一條語句翻譯成對應(yīng)于機器語言的一條語句,并且執(zhí)行這條語句,重復這個步驟,直到翻譯完這個程序。
由于軟件的發(fā)展,在實際機器 M1 的基礎(chǔ)上向上延伸構(gòu)成了各級虛擬機器。那么,機器 M1 也可以向下延申形成下一級的微程序機器 M0,機器 M0 是將機器 M1 中的每一條機器指令翻譯成一組微指令,構(gòu)成一個微程序。
機器 M0 也是實際機器,為了區(qū)別于 M1,通常將機器 M1 稱為傳統(tǒng)機器,將 M0 稱為微程序機器。這樣就可以認為計算機系統(tǒng)具有四級層次結(jié)構(gòu)。

在上述四級層次結(jié)構(gòu)的系統(tǒng)中,實際上在實際機器 M1 和虛擬機器 M2 之間還有一級虛擬機器,它是由操作系統(tǒng)構(gòu)成的。
3.4 軟件與硬件的邏輯等價性
軟件的特點
易于實現(xiàn)各種邏輯和運算功能,但是常受到速度指標和軟件容量的制約。
硬件的特點
可以高速實現(xiàn)邏輯和運算功能,但是難以實現(xiàn)復雜功能或計算,受到控制復雜性指標的制約。
計算機中的軟件,理論上都可以 “固化” 或 “硬件化”,以提高執(zhí)行速度。
4 計算機系統(tǒng)的性能指標
1. 基本字長
算術(shù)運算可以分為定點運算和浮點運算兩大類。基本字長就是指處理器參加一次定點運算的操作數(shù)位數(shù)。
一次數(shù)據(jù)操作的基本位數(shù)。 它會影響計算的精度、指令的功能。
一般 4 位、8 位、16 位、32 位、64 位等。
2. 外頻
外頻也叫外部頻率或基頻,有時也稱為系統(tǒng)時鐘頻率,經(jīng)過倍頻系數(shù)放大,用作各部件的工作頻率,如 CPU、內(nèi)存、各類總線等。
3. 常用的 CPU 性能指標
單位換算的簡化關(guān)系:1K = 1000,1M = 1000K,1G = 1000M
(1)CPU 主頻 = 外頻 X 倍頻系數(shù)
CPU 的主頻是 CPU 內(nèi)核的工作頻率,有時也叫 CPU 的時鐘頻率。通常說的某款 CPU 多少 GHZ,說的就是它的主頻。提高上述公式中的任一指標,都可以提高 CPU 的主頻,也就是超頻。
CPU 主頻的高低是決定計算機工作速度的重要因素,不過兩者之間沒有正比關(guān)系。
(2)CPU 執(zhí)行某種運算總時間 = CPU 時鐘周期數(shù) / 主頻 = (指令條數(shù) X CPI) / 主頻
在 CPU 時鐘頻率中,相鄰兩個時鐘脈沖之間的間隔為一個時鐘周期,它與 CPU 完成一步微操作所需的時間是對應(yīng)的。
下面詳細說一下時鐘頻率(主頻)與時鐘周期的關(guān)系:
通過 CPU 的工作方式來看,CPU 分為兩種控制方式:同步控制、異步控制。為了解時鐘頻率與時鐘周期的關(guān)系,我們先看同步控制 CPU 的工作方式,異步控制方式在接下來的章節(jié)會提到。
既然是同步控制 CPU,那就需要一個同步機制,不然你做一樣,我做一樣,沒有統(tǒng)一協(xié)調(diào),豈不亂套?
在計算機中,通過時序發(fā)生器來完成這項工作,它由一個晶體振蕩器和一組計數(shù)倍頻邏輯組成。它不停給芯片其他部件發(fā)送一個連續(xù)的脈沖信號。每一次脈沖到來,芯片內(nèi)的晶體管就改變一次狀態(tài),讓整個芯片完成一定任務(wù)。統(tǒng)一指揮,完成任務(wù)。
電腦中的各種部件就是在時序發(fā)生器發(fā)送的特定時鐘頻率下有條不紊地進行工作的。
如圖,時序發(fā)生器發(fā)出的脈沖信號做出周期變化的最短時間稱之為振蕩周期,也成為 CPU 時鐘周期。正如前面所說,相鄰兩個時鐘脈沖之間的間隔為一個時鐘周期。它是計算機中最基本的、最小的時間單位。
一個震蕩周期內(nèi),晶體管只會改變一次狀態(tài)。那么,更小的時鐘周期就意味著更高的工作頻率。
一秒(1s)內(nèi),震蕩周期的個數(shù)稱為時鐘頻率,稱為主頻。
我們把主頻看作 f,時鐘周期看作 T,可以得出 f = 1 / T。
(3)IPS = 指令條數(shù) / 執(zhí)行時間 X 106 = 主頻 / CPI
CPU 平均每秒執(zhí)行指令的數(shù)量,IPS(Instructions Per Second),常用更大的單位 MIPS 或 GIPS 表示。
(4)CPI = 總時鐘周期數(shù) / 總指令數(shù)
CPU 執(zhí)行程序時,每條指令所需的平均時鐘周期數(shù),CPI(Clock cycles Per Instruction)。
(5)FLOPS = (浮點運算的次數(shù) / 執(zhí)行時間)/ 106
CPU 每秒能夠完成的定點或者浮點運算次數(shù)(非指令數(shù))。高性能計算機主要進行浮點向量運算,一般用每秒能完成的浮點運算次數(shù)(Floating-point Operation Per Second)。比如,天河二號,其實測速度:33.86PFLOPS。
(6)CPU 的功耗 P = C X U2 X f
4. 數(shù)據(jù)通路寬度與數(shù)據(jù)傳輸率
(1)數(shù)據(jù)通路寬度
數(shù)據(jù)總線一次能并行傳輸?shù)臄?shù)據(jù)位數(shù)。數(shù)據(jù)通路寬度分為 CPU 內(nèi)部和 CPU 外部兩種情況:
CPU 內(nèi)部數(shù)據(jù)通路寬度一般與 CPU 的基本字長相同,也等于 CPU 內(nèi)總線的位寬。 CPU 外部數(shù)據(jù)通路寬度等于系統(tǒng)數(shù)據(jù)總線的位寬。
有的 CPU 內(nèi)外的數(shù)據(jù)通路寬度一樣,有的不同。
(2)數(shù)據(jù)傳輸率(Data Transfer Rate,DTR)
也叫比特率,指單位時間內(nèi)信道的數(shù)據(jù)傳輸量,基本單位是 bps。也常常借用帶寬(Bandwidth)一詞來表示數(shù)據(jù)傳輸率。
數(shù)據(jù)傳輸率與傳輸信道的數(shù)據(jù)通路寬度和最大的工作頻率有關(guān),公式如下:
注意:不論何種設(shè)備,理解帶寬概念時,只需要緊緊把握住單位時間內(nèi)傳輸?shù)臄?shù)據(jù)量這一本質(zhì)特性即可。
計算 PCI-E 總線的帶寬時,一般還要考慮編碼方式、單雙工模式和通道路數(shù)等。
結(jié)合這個小節(jié)的內(nèi)容,來舉個栗子:
假設(shè)該 I/O 程序由 2000 條指令構(gòu)成,CPU 每次執(zhí)行該程序可并行輸出 4KB 數(shù)據(jù)。CPU 主頻 3.2GHz,求 I/O 帶寬。
解:
平均 CPI = 15 X 40% + 20 X 30% + 15 X 20% + 10 X 10% = 16
CPU 執(zhí)行這個包含 2000 條指令的程序,所需的時鐘周期總數(shù) = 指令數(shù) X 平均每條指令所需的時鐘周期
程序的時鐘周期數(shù) T = 2000 X 16 = 32000 = 32K 個
CPU 主頻 = 3.2GHz,表明 1 秒鐘能產(chǎn)生 3.2G 個時鐘周期,因此每秒鐘此程序可被執(zhí)行次數(shù) = 每秒鐘的時鐘周期總數(shù) / 程序完整執(zhí)行一次所需的時鐘周期數(shù)
該程序每秒執(zhí)行次數(shù) = f / T = 3.2G / 32K = 105 次
I/O 帶寬指的是單位時間內(nèi)傳輸?shù)目倲?shù)據(jù)量,總數(shù)據(jù)量 = 程序被執(zhí)行的次數(shù) X 每次輸出的數(shù)據(jù)量
I/O 帶寬 = (105 X 4 KB)/ 秒 = 400 MBps(兆字節(jié)/秒)
5. 存儲器容量
存儲器分為內(nèi)存(主存)和外存(輔存)。
(1)內(nèi)存(主存)
存放 CPU 當前需要處理的數(shù)據(jù)和需要執(zhí)行的程序。主存容量越大,可以減少 CPU 反復讀取主存數(shù)據(jù)的次數(shù)和等待時間。
主存的容量取決于主存的編址單元數(shù)和每個編址單元的位數(shù)(寬度)。經(jīng)常用字節(jié)數(shù)表示主存容量:
字節(jié)數(shù)
微型機的主存多按字節(jié)編址,每個編址單元含有 8 位數(shù)據(jù)。因此 1MB = 220,1K = 210。現(xiàn)在家用電腦主存容量可達到 8GB(1G = 230)以上。

(2)外存(輔存)容量
外部存儲器能夠存儲的最大數(shù)據(jù)量,基本單位一般用 B、MB、GB 或者 TB 等來表示常用的外存有硬盤、U 盤等。
計算機中的軟件資源和數(shù)據(jù),如操作系統(tǒng)、編譯程序、數(shù)據(jù)庫管理系統(tǒng)等,它們沒有運行的部分都是保存在外存中,需要時再載入內(nèi)存。
注意:外村容量取決于存儲器自身,與地址總線的位數(shù)無關(guān)。
另注: 本文在開源項目:github.com/MujieJava/JavaStudy 中已收錄,包含計算機基礎(chǔ)技術(shù)文章、資源干貨等,資源持續(xù)更新中...
我是木節(jié),覺得這篇文章對你有幫助的話,可以來個點贊 + 在看,下期再見!



