目錄
1.1計算機發展歷程
1.1.1計算機硬件的發展
1.計算機的四代變化
2.計算機元件的更新換代
1.1.2計算機軟件的發展
1.2計算機系統層次結構
1.2.1計算機系統的組成
1.2.2計算機硬件
1.馮·諾依曼機基本思想
2.計算機的功能部件
(1)輸入設備
(2)輸出設備
(3)存儲器
(4)運算器
(5)控制器
1.2.3計算機軟件
1.系統軟件和應用軟件
2.三個級別的語言
3.各種翻譯程序的概念
4.軟件和硬件的邏輯功能等價性
1.2.4計算機系統的層次結構
1.2.5計算機系統的工作原理
1.“存儲程序”工作方式
2.從源程序到可執行文件
3.指令執行過程的描述
1)取指令:PC→MAR→M→MDR→IR
2)分析指令:OP(IR)→CU
3)執行指令:Ad(IR)→MAR→M→MDR→ACC
1.3計算機的性能指標
1.3.1計算機的主要性能指標
1.機器字長
2.數據通路帶寬
3.主存容量
4.運算速度
(1)吞吐量和響應時間。
(2)主頻和CPU時鐘周期。
(3)CPI
(4)CPU執行時間。
(5)MIPS
(6)FLOPS
5.基準程序
1.3.2幾個專業術語
1.4本章小結
1.1計算機發展歷程
1.1.1計算機硬件的發展
1.計算機的四代變化
從1946年世界上第一臺電子數字計算機問世以來,計算機的發展已經經歷了四代。
1)第一代計算機(1946—1957年)——電子管時代。特點:邏輯元件采用電子管;使用機器語言進行編程;主存儲器用延遲線或磁鼓存儲信息,容量極小;體積龐大,成本高;運算速度較低,一般只有幾千次到幾萬次每秒。
2)第二代計算機(1958—1964年)——晶體管時代。特點:邏輯元件采用晶體管;運算速度提高到幾萬次到幾十萬次每秒;主存儲器使用磁芯存儲器;計算機軟件也得到了發展,開始出現高級語言及其編譯程序,有了操作系統的雛形。
3)第三代計算機(1965-1971年)——中小規模集成電路時代。特點:邏輯元件采用中小規模集成電路;半導體存儲器開始取代磁芯存儲器;高級語言發展迅速,操作系統也進一步發展,有了分時操作系統。
4)第四代計算機(1972年至今)——超大規模集成電路時代。特點:邏輯元件采用大規模集成電路和超大規模集成電路,產生了微處理器;諸如并行、流水線、高速緩存和虛擬存儲器等概念用在了這代計算機中。
2.計算機元件的更新換代
1)摩爾定律。當價格不變時,集成電路上可容納的晶體管數目,約每隔18個月便會增加一倍,性能也將提升一倍。也就是說,我們現在和18個月后花同樣的錢買到的CPU,后者的性能是前者的兩倍。這一定律揭示了信息技術進步的速度。
2)半導體存儲器的發展。1970年,美國仙童半導體公司生產出第一個較大容量的半導體存儲器,半導體存儲器經歷了存儲容量的發展:單芯片1KB、4KB、16KB、64KB、256KB、1MB、4MB、16MB、64MB、256MB和1GB等,現在可以達到1TB。
3)微處理器的發展。自1971年Intel公司開發出第一個微處理器Intel4004至今,微處理器經歷了Intel8008(8位)、Intel8086(16位)、Intel80386(32位)、Pentium(32位)、PentiumIⅢ(64位)、Pentium4(64位)、Corei7(64位)等。這里的32位、64位指的是機器字長,是指計算機進行一次整數運算所能處理的二進制數據的位數。
1.1.2計算機軟件的發展
計算機軟件技術的蓬勃發展,也為計算機系統的發展做出了很大的貢獻。計算機語言的發展經歷了面向機器的機器語言和匯編語言、面向問題的高級語言。其中高級語言的發展真正促進了軟件的發展,它經歷了從科學計算和工程計算的FORTRAN、結構化程序設計的PASCAL到面向對象的C++和適應網絡環境的Java。
與此同時,直接影響計算機系統性能提升的各種系統軟件也有了長足的發展,特別是操作系統,如Windows、UNIX、Linux等。
1.2計算機系統層次結構
1.2.1計算機系統的組成
硬件系統和軟件系統共同構成了一個完整的計算機系統。硬件是指有形的物理設備,是計算機系統中實際物理裝置的總稱。軟件是指在硬件上運行的程序和相關的數據及文檔。計算機系統性能的好壞,很大程度上是由軟件的效率和作用來表征的,而軟件性能的發揮又離不開硬件的支持。對某一功能來說,若其既可用軟件實現,又可用硬件實現,則稱為軟/硬件在邏輯功能上是等價的。在設計計算機系統時,要進行軟/硬件的功能分配。通常來說,一個功能若使用較為頻繁且用硬件實現的成本較為理想,則使用硬件解決可以提高效率。
1.2.2計算機硬件
1.馮·諾依曼機基本思想
馮·諾依曼在研究EDVAC機時提出了“存儲程序”的概念,“存儲程序”的思想奠定了現代計算機的基本結構,以此概念為基礎的各類計算機統稱馮·諾依曼機,其特點如下:
1)采用“存儲程序”的工作方式。
2)計算機硬件系統由運算器、存儲器、控制器、輸入設備和輸出設備5大部件組成。
3)指令和數據以同等地位存儲在存儲器中,形式上沒有區別,但計算機應能區分它們。
4)指令和數據均用二進制代碼表示。
5)指令由操作碼和地址碼組成,操作碼指出操作的類型,地址碼指出操作數的地址。
“存儲程序”的基本思想是:將事先編制好的程序和原始數據送入主存儲器后才能執行,一旦程序被啟動執行,就無須操作人員的干預,計算機會自動逐條執行指令,直至程序執行結束。
2.計算機的功能部件
(1)輸入設備
輸入設備的主要功能是將程序和數據以機器所能識別和接受的信息形式輸入計算機。最常用也最基本的輸入設備是鍵盤,此外還有鼠標、掃描儀、攝像機等。
(2)輸出設備
輸出設備的任務是將計算機處理的結果以人們所能接受的形式或其他系統所要求的信息形式輸出。最常用、最基本的輸出設備是顯示器、打印機。輸入/輸出設備(簡稱I/O設備)是計算機與外界聯系的橋梁,是計算機中不可缺少的重要組成部分。
(3)存儲器
存儲器分為主存儲器(也稱內存儲器或主存)和輔助存儲器(也稱外存儲器或外存)。CPU能夠直接訪問的存儲器是主存儲器。輔助存儲器用于幫助主存儲器記憶更多的信息,輔助存儲器中的信息必須調入主存儲器后,才能為CPU所訪問。
主存儲器的工作方式是按存儲單元的地址進行存取,這種存取方式稱為按地址存取方式。主存儲器的基本組成如圖1.1所示。存儲體存放二進制信息,存儲器地址寄存器(MAR)存放訪存地址,經過地址譯碼后找到所選的存儲單元。存儲器數據寄存器(MDR)用于暫存要從存儲器中讀或寫的信息,時序控制邏輯用于產生存儲器操作所需的各種時序信號。
存儲體由許多存儲單元組成,每個存儲單元包含若干存儲元件,每個存儲元件存儲一位二進制代碼“0”或“1”。因此存儲單元可存儲一串二進制代碼,稱這串代碼為存儲字,稱這串代碼的位數為存儲字長,存儲字長可以是1B(8bit)或是字節的偶數倍。MAR用于尋址,其位數反映最多可尋址的存儲單元的個數,如MAR為10位,則最多有21?=1024個存儲單元,記為1K。MAR的長度與PC的長度相等。MDR的位數通常等于存儲字長,一般為字節的2次冪的整數倍。
注:MAR與MDR雖然是存儲器的一部分,但在現代計算機中卻是存在于CPU中的;另外,后文提到的高速緩存(Cache)也存在于CPU中。
(4)運算器
運算器是計算機的執行部件,用于進行算術運算和邏輯運算。算術運算是按算術運算規則進行的運算,如加、減、乘、除;邏輯運算包括與、或、非、異或、比較、移位等運算。運算器的核心是算術邏輯單元(ArithmeticandLogicUnit,ALU)。運算器包含若干通用寄存器,用于暫存操作數和中間結果,如累加器(ACC)、乘商寄存器(MQ)、操作數寄存器(X)、變址寄存器(IX)、基址寄存器(BR)等,其中前三個寄存器是必須具備的。運算器內還有程序狀態寄存器(PSW),也稱標志寄存器,用于存放ALU運算得到的一些標志信息或處理機的狀態信息,如結果是否溢出、有無產生進位或借位、結果是否為負等。
(5)控制器
控制器是計算機的指揮中心,由其“指揮”各部件自動協調地進行工作。控制器由程序計數器(PC)、指令寄存器(IR)和控制單元(CU)組成。
PC用來存放當前欲執行指令的地址,具有自動加1的功能(這里的"1"指一條指令的長度),即可自動形成下一條指令的地址,它與主存儲器的MAR之間有一條直接通路。
IR用來存放當前的指令,其內容來自主存儲器的MDR。指令中的操作碼OP(IR)送至CU,用以分析指令并發出各種微操作命令序列;而地址碼Ad(IR)送往MAR,用以取操作數。
一般將運算器和控制器集成到同一個芯片上,稱為中央處理器(CPU)。CPU和主存儲器共同構成主機,而除主機外的其他硬件裝置(外存、I/O設備等)統稱外部設備,簡稱外設。
圖1.2所示為馮·諾依曼結構的模型機。CPU包含ALU、通用寄存器組GPRs、標志寄存器、控制器、指令寄存器(IR)、程序計數器(PC)、存儲器地址寄存器(MAR)和存儲器數據寄存器(MDR)。圖中從控制器送出的虛線就是控制信號,可以控制如何修改PC以得到下一條指令的地址,可以控制ALU執行什么運算,可以控制主存儲器是進行讀操作還是寫操作(讀/寫控制信號)。
CPU和主存儲器之間通過一組總線相連,總線中有地址、控制和數據3組信號線。MAR中的地址信息會直接送到地址線上,用于指向讀/寫操作的主存儲器存儲單元;控制線中有讀/寫信號線,指出數據是從CPU寫入主存儲器還是從主存儲器讀出到CPU,根據是讀操作還是寫操作來控制將MDR中的數據是直接送到數據線上還是將數據線上的數據接收到MDR中。
1.2.3計算機軟件
1.系統軟件和應用軟件
軟件按其功能分類,可分為系統軟件和應用軟件。
系統軟件是一組保證計算機系統高效、正確運行的基礎軟件,通常作為系統資源提供給用戶使用。系統軟件主要有操作系統(OS)、數據庫管理系統(DBMS)、語言處理程序、分布式軟件系統、網絡軟件系統、標準庫程序、服務性程序等。
應用軟件是指用戶為解決某個應用領域中的各類問題而編制的程序,如各種科學計算類程序、工程設計類程序、數據統計與處理程序等。在本學科范疇內,編寫諸如操作系統、編譯程序等各種系統軟件的人員稱為系統程序員;利用計算機及所支持的系統軟件來編寫解決具體應用問題的人員稱為應用程序員。
2.三個級別的語言
1)機器語言。也稱二進制代碼語言,需要編程人員記憶每條指令的二進制編碼。機器語言是計算機唯一可以直接識別和執行的語言。
2)匯編語言。匯編語言用英文單詞或其縮寫代替二進制的指令代碼,更容易為人們記憶和理解。使用匯編語言編寫的程序,必須經過長個稱為匯編程序的系統軟件的翻譯,將其轉換為機器語言程序后,才能在計算機的硬件系統上執行。
3)高級語言。高級語言(如C、C++、Java等)可以方便程序設計人員寫出解決問題的處理方案和解題過程的程序。通常高級語言需要經過編譯程序編譯成匯編語言程序,然后經過匯編操作得到機器語言程序,或直接由高級語言程序翻譯成機器語言程序。
3.各種翻譯程序的概念
因為計算機無法直接理解和執行高級語言程序,所以需要將高級語言程序轉換為機器語言程序,通常把進行這種轉換的系統軟件稱翻譯程序。翻譯程序有以下三類:
1)匯編程序(匯編器)。將匯編語言程序翻譯成機器語言程序。
2)解釋程序(解釋器)。將源程序中的語句按執行順序逐條翻譯成機器指令并立即執行。
3)編譯程序(編譯器)。將高級語言程序翻譯成匯編語言或機器語言程序。
4.軟件和硬件的邏輯功能等價性
硬件實現的往往是最基本的算術和邏輯運算功能,而其他功能大多通過軟件的擴充得以實現。對某一功能來說,其既可以由硬件實現,又可以由軟件實現,從用戶的角度來看,它們在功能上是等價的。這一等價性被稱為軟/硬件邏輯功能的等價性。例如,浮點數運算既可以用專門的浮點運算器硬件實現,又可以通過一段子程序實現,這兩種方法在功能上完全等價,不同的只是執行時間的長短而已,顯然硬件實現的性能要優于軟件實現的性能。軟件和硬件邏輯功能的等價性是計算機系統設計的重要依據,軟件和硬件的功能分配及其界面的確定是計算機系統結構研究的重要內容。當研制一臺計算機時,設計者必須明確分配每一級的任務,確定哪些功能使用硬件實現,哪些功能使用軟件實現。軟件和硬件功能界面的劃分是由設計目標、性能價格比、技術水平等綜合因素決定的。
1.2.4計算機系統的層次結構
計算機是一個硬軟件組成的綜合體。因為面對的應用范圍越來越廣,所以必須有復雜的系統軟件和硬件的支持。軟/硬件的設計者和使用者從不同的角度、用不同的語言來對待同一個計算機系統,因此他們看到的計算機系統的屬性對計算機系統提出的要求也就各不相同。計算機系統的多級層次結構的作用,就是針對上述情況,根據從各種角度所看到的機器之間的有機聯系,來分清彼此之間的界面,明確各自的功能,以便構成合理、高效的計算機系統。關于計算機系統層次結構的分層方式,目前尚無統一的標準,這里采用如圖1.3所示的多級層次結構。
CPU可以理解和直接執行的指令類型
1)第1級是微程序機器層,這是一個實在的硬件層,它由機器硬件直接執行微指令。
2)第2級是傳統機器語言層,它也是一個實際的機器層,由微程序解釋機器指令系統。
3)第3級是操作系統層,它由操作系統程序實現。操作系統程序是由機器指令和廣義指令組成的,這些廣義指令是為了擴展機器功能而設置的,是由操作系統定義和解釋的軟件指令,所以這一層也稱混合層。
4)第4級是匯編語言層,這一層由匯編程序支持和執行,借此可編寫匯編語言源程序。
5)第5級是高級語言層,它是面向用戶的,是為方便用戶編寫應用程序而設置的。該層由各種高級語言編譯程序支持和執行。在高級語言層之上,還可以有應用程序層,它由解決實際問題的處理程序組成,如文字處理軟件、多媒體處理軟件和辦公自動化軟件等。
沒有配備軟件的純硬件系統稱裸機。第3層~第5層稱為虛擬機器,簡單來說就是軟件實現的機器。虛擬機器只對該層的觀察者存在,這里的分層和計算機網絡的分層類似,對于某層的觀察者來說,其只能通過該層的語言來了解和使用計算機,而不必關心下層是如何工作的。層次之間的關系緊密,下層是上層的基礎,上層是下層的擴展。軟件和硬件之間的界面就是指令集體系結構(ISA),ISA定義了一臺計算機可以執行的所有指令的集合,每條指令規定了計算機執行什么操作,以及所處理的操作數存放的地址空間和操作數類型。可以看出,ISA是指軟件能感知到的部分,也稱軟件可見部分。
1.2.5計算機系統的工作原理
1.“存儲程序”工作方式
“存儲程序”工作方式規定,程序執行前,需要將程序所含的指令和數據送入主存儲器,一旦程序被啟動執行,就無須操作人員的干預,自動逐條完成指令的取出和執行任務。如圖1.4所示,一個程序的執行就是周而復始地執行一條一條指令的過程。每條指令的執行過程包括:根據PC從主存儲器中取指令、對指令進行譯碼、計算下一條指令地址、取操作數并執行、將結果送回存儲器。程序執行前,先將程序第一條指令的地址存放到PC中,取指令時,將PC的內容作為地址訪問主存儲器。在每條指令執行過程中,都需要計算下一條將執行指令的地址,并送至PC。若當前指令為順序型指令,則下干條指令地址為PC的內容加上當前指令的長度;若當前指令為轉跳型指令,則下一條指令地址為指令中指定的目標地址。當前指令執行完后,根據PC的內容到主存儲器中取出的是下一條將要執行的指令,因而計算機能周而復始地自動取出并執行一條一條的指令。
2.從源程序到可執行文件
在計算機中編寫的C語言程序,都必須被轉換為一系列的低級機器指令,這些指令按照一種稱為可執行目標文件的格式打好包,并以二進制磁盤文件的形式存放起來。以UNIX系統中的GCC編譯器程序為例,讀取源程序文件hello.c,并把它翻譯成一個可執行目標文件hello,整個翻譯過程可分為四個階段完成:
1)預處理階段:預處理器(cpp)對源程序中以字符#開頭的命令進行處理,例如將#include命令后面的.h文件內容插入程序文件。輸出結果是一個以.i為擴展名的源程序hello.i。
2)編譯階段:編譯器(ccl)對預處理后的源程序進行編譯,生成一個匯編語言源程序hello.s。匯編語言源程序中的每條語句都以一種文本格式描述了一條低級機器語言指令。
3)匯編階段:匯編器(as)將hello.s翻譯成機器語言指令,把這些指令打包成一個稱為可重定位目標代碼文件helo.o,它是一種二進制文件,因此用文本編輯器打開會顯示亂碼。
4)鏈接階段:鏈接器(ld)將多個可重定位目標代碼文件和標準庫函數合并為一個可執行目標文件,簡稱可執行文件。本例中,鏈接器將hello.o和標準庫函數printf所在的可重定位目標模塊printf.o合并,生成可執行文件hello。最終生成的可執行文件被保存在磁盤上。
3.指令執行過程的描述
可執行文件中的代碼段是由一條一條機器指令構成的,指令是用0和1表示的一串0/1序列,用來指示CPU完成一個特定的原子操作。例如,取數指令從存儲單元中取出一個數據送到CPU的寄存器中,存數指令將CPU寄存器的內容寫入一個存儲單元,ALU指令將兩個寄存器的內容進行某種算術或邏輯運算后送到一個CPU寄存器中,等等。指令的執行過程在第5章中詳細描述。下面以取數指令(送至運算器的ACC中)為例來說明,其信息流程如下:
1)取指令:PC→MAR→M→MDR→IR
根據PC取指令到IR。將PC的內容送MAR,MAR中的內容直接送地址線,同時控制器將讀信號送讀/寫信號線,主存儲器根據地址線上的地址和讀信號,從指定存儲單元讀出指令,送到數據線上,MDR從數據線接收指令信息,并傳送到IR中。
2)分析指令:OP(IR)→CU
指令譯碼并送出控制信號。控制器根據IR中指令的操作碼,生成相應的控制信號,送到不同的執行部件。在本例中,IR中是取數指令,因此讀控制信號被送到總線的控制線上。
3)執行指令:Ad(IR)→MAR→M→MDR→ACC
取數操作。將IR中指令的地址碼送MAR,MAR中的內容送地址線,同時控制器將讀信號送讀/寫信號線,從主存儲器中讀出操作數,S并通過數據線送至MDR,再傳送到ACC中。每取完一條指令,還需為取下一條指令做準備,計算下一條指令的地址,即(PC)+1→PC。
注:(PC)指程序計數器PC中存放的內容。PC→MAR應理解為(PC)→MAR,即程序計數器中的值經過數據通路送到MAR,也即表示數據通路時括號可省略(因為只是表示數據流經的途徑,而不強調數據本身的流動)。但運算時括號不能省略,即(PC)+1→PC不能寫為PC+1→PC。當題目中(PC)→MAR的括號未省略時,考生最好也不要省略。
1.3計算機的性能指標
1.3.1計算機的主要性能指標
1.機器字長
通常所說的“某16位或32位機器”,其中的16、32指的是機器字長,簡稱字長。字長是指計算機進行一次整數運算(定點整數運算)所能處理的二進制數據的位數,通常與CPU的寄存器位數、ALU有關。因此,字長一般等于通用寄存器的位數或ALU的寬度,字長越長,數的表示范圍越大,計算精度越高。計算機字長通常選定為1字節(8位)的整數倍。
2.數據通路帶寬
數據通路帶寬是指數據總線一次所能并行傳送信息的位數。這里所說的數據通路寬度是指外部數據總線的寬度,它與CPU內部的數據總線寬度(內部寄存器的大小)有可能不同。(注意:各個子系統通過數據總線連接形成的數據傳送路徑稱為數據通路。)
3.主存容量
主存容量是指主存儲器所能存儲信息的最大容量,通常以字節(B)來衡量,也可用字數×字長(如512K×16位)來表示存儲容量。其中,MAR的位數反映了存儲單元的個數,MDR的位數反映了存儲單元的字長。例如,MAR為16位,21?=65536,即表示此存儲體內有65536個存儲單元(可稱為64KB內存,1K=1024),若MDR為32位,則表示存儲容量為64K×32位。
4.運算速度
(1)吞吐量和響應時間。
●吞吐量。指系統在單位時間內處理請求的數量。它取決于信息能多快地輸入內存,CPU能多快地取指令,數據能多快地從內存取出或存入,以及所得結果能多快地從內存送給一臺外部設備。幾乎每步都關系到主存儲器,因此系統吞吐量主要取決于主存儲器的存取周期。
●響應時間。指從用戶向計算機發送一個請求,到系統對該請求做出響應并獲得所需結果的等待時間。通常包括CPU時間(運行一個程序所花費的時間)與等待時間(用于磁盤訪問、存儲器訪問、I/O操作、操作系統開銷等的時間)。
(2)主頻和CPU時鐘周期。
●CPU時鐘周期。機器內部主時鐘脈沖信號的寬度,它是CPU工作的最小時間單位。時鐘脈沖信號由機器脈沖源發出的脈沖信號經整形和分頻后形成。時鐘周期以相鄰狀態單元間組合邏輯電路的最大延遲時間為基準確定。時鐘周期也以指令流水線的每個流水段的最大延遲時間確定。
●主頻(CPU時鐘頻率)。機器內部主時鐘的頻率,即時鐘周期的倒數,它是衡量機器速度的重要參數。對于同一個型號的計算機,其主頻越高,完成指令的一個執行步驟所用的時間越短,執行指令的速度越快。主頻最直觀的理解就是每秒有多少個時鐘周期。(注意:CPU時鐘周期=1/主頻,主頻通常以Hz(赫茲)為單位,10Hz表示每秒10個時鐘周期。)
(3)CPI
即執行一條指令所需的時鐘周期數。不同指令的時鐘周期數可能不同,因此對于一個程序或一臺機器來說,其CPI指該程序或該機器指令集中的所有指令執行所需的平均時鐘周期數,即平均CPI。
●IPS(InstructionsPerSecond),即每秒執行多少條指令,IPS=主頻/平均CPI。
(4)CPU執行時間。
指運行一個程序所花費的時間。CPU執行時間=CPU時鐘周期數/主頻=(指令條數×CPI)÷主頻。表明,CPU的性能(CPU執行時間)取決于三個要素:主頻、CPI和指令條數。主頻、CPI和指令條數是相互制約的。例如,更改指令集可以減少程序所含的指令條數,但同時可能引起CPU結構的調整,從而可能增加時鐘周期的寬度(降低主頻)。
(5)MIPS
即每秒執行多少百萬條指令。MIPS=指令條數÷(執行時間×10)=主頻÷(CPI×10)。
MIPS對不同機器進行性能比較是有缺陷的,因為不同機器的指令集不同,指令的功能也就不同,比如在機器M1上某條指令的功能也許在機器M2上要用多條指令來完成;不同機器的CPI和時鐘周期也不同,因而同一條指令在不同機器上所用的時間也不同。
(6)FLOPS
即每秒執行多少次浮點運算。
●MFLOPS(MillionFLOPS),即每秒執行多少百萬(10?)次浮點運算。·GFLOPS(GigaFLOPS),即每秒執行多少十億(109)次浮點運算。
●TFLOPS(TeraFLOPS),即每秒執行多少萬億(1012)次浮點運算。●PFLOPS(PetaFLOPS),即每秒執行多少千萬億(101?)次浮點運算。
●EFLOPS(ExaFLOPS),即每秒執行多少百京(1018)次浮點運算(1京=1億億=101?)。
●ZFLOPS(ZettaFLOPS),即每秒執行多少十萬京(1021)次浮點運算。
在描述存儲容量、文件大小等時,K、M、G、T通常用2的冪次表示,如1Kb=21b;在描述速率、頻率等時,k、M、G、T通常用10的冪次表示,如1kb/s=103b/s。通常前者用大寫的K,后者用小寫的k,但其他前綴均為大寫,表示的含義取決于所用的場景。
5.基準程序
基準程序(Benchmarks)是專門用來進行性能評價的一組程序,能夠很好地反映機器在運行實際負載時的性能,可以通過在不同機器上運行相同的基準程序來比較在不同機器上的運行時間,從而評測其性能。對于不同的應用場合,應該選擇不同的基準程序。
使用基準程序進行計算機性能評測也存在一些缺陷,因為基準程序的性能可能與某一小段的短代碼密切相關,而硬件系統設計人員或編譯器開發者可能針對這些代碼片段進行特殊的優化,使得執行這段代碼的速度非常快,以至于得不到準確的性能評測結果。
1.3.2幾個專業術語
1)系列機。具有基本相同的體系結構,使用相同基本指令系統的多個不同型號的計算機組成的一個產品系列。
2)兼容。指軟件或硬件的通用性,即運行在某個型號的計算機系統中的硬/軟件也能應用于另一個型號的計算機系統時,稱這兩臺計算機在硬件或軟件上存在兼容性。
3)固件。將程序固化在ROM中組成的部件稱為固件。固件是一種具有軟件特性的硬件,吸收了軟件/硬件各自的優點,其執行速度快于軟件,靈活性優于硬件,是軟/硬件結合的產物。例如,目前操作系統已實現了部分固化(把軟件永恒地存儲于ROM中)。
1.4本章小結
1)計算機由哪幾部分組成?以哪部分為中心?
計算機由運算器、控制器、存儲器、輸入設備及輸出設備五大部分構成,現代計算機通常把運算器和控制器集成在一個芯片上,合稱中央處理器。
在微處理器面世之前,運算器和控制器分離,而且存儲器的容量很小,因此設計成以運算器為中心的結構,其他部件都通過運算器完成信息的傳遞。隨著微電子技術的發展,同時計算機需要處理、加工的信息量也與日俱增,大量I/O設備的速度和CPU的速度差距懸殊,因此以運算器為中心的結構不能滿足計算機發展的要求。現代計算機已發展為以存儲器為中心,使I/O操作盡可能地繞過CPU,直接在I/O設備和存儲器之間完成,以提高系統的整體運行效率。
2)主頻高的CPU一定比主頻低的CPU快嗎?為什么?
衡量CPU運算速度的指標有很多,不能以單獨的某個指標來判斷CPU的好壞。CPU的主頻表示CPU內數字脈沖信號振蕩的速度,主頻和實際的運算速度存在一定的關系,但目前還沒有一個確定的公式能夠定量兩者的數值關系,因為CPU的運算速度還要看CPU的流水線的各方面的性能指標(架構、緩存、指令集、CPU的位數、Cache大小等)。主頻并不直接代表運算速度,因此在一定情況下很可能出現主頻較高的CPU實際運算速度較低的現象。
3)翻譯程序、解釋程序、匯編程序、編譯程序的區別和聯系是什么?
翻譯程序有兩種:一種是編譯程序,它將高級語言源程序一次全部翻譯成目標程序,只要源程序不變,就無須重新翻譯。另一種是解釋程序,它將源程序的一條語句翻譯成對應的機器目標代碼,并立即執行,然后翻譯下一條源程序語句并執行,直至所有源程序語句全部被翻譯并執行。
4)不同級別的語言編寫的程序有什么區別?哪種語言編寫的程序能被硬件直接執行?
機器語言和匯編語言與機器指令對應,而高級語言不與指令直接對應,具有較好的可移植性。其中機器語言編寫的程序可以被硬件直接執行。