ccs80中編譯器如何
1. 關於計算機計數系統的概念
1. 計算機系統的構成:
a. 由軟硬體兩大部分組成;
b. 硬體:是指實體部分,通常指主機(MPU、內存及其支持部件)、介面、外設這些看得見摸得著的東西;
c. 軟體:是指程序和相關附件(程序的產品說明、使用說明等),軟體不僅能充分調動硬體的功能而且能局部模仿人類思維,因此軟體也是評價系統好壞的重要標志;
d. 軟體通常分為兩大類:
i. 系統軟體:底層軟體,和相應的硬體緊密相連,通用性較差,基於硬體平台,主要有這幾類:
*1. 標准程序庫:例如開機啟動程序BIOS;
*2. 語言處理程序:特指匯編以及高級語言編譯器;
*3. 操作系統:有批處理、分時、實時等類型;
*4. 服務程序:例如連接、診斷、調試程序等;
*5. 資料庫管理程序:基於操作系統,又低於應用程序;
*6. 網路通信程序等;
ii. 應用軟體:位於最高層次,基於系統軟體,比如游戲軟體、事務管理軟體、文本編輯器等;
舉例:比如游戲里的存檔功能就是調用了操作系統提供的文件寫入功能,因此游戲軟體是基於操作系統的;
2. 計算機系統的層次結構:
a. 三級層次結構:
第三級(最高級) 虛擬機M3(高級語言機器)
實質是編譯器,將高級語言編譯成匯編語言再傳給M2執行,
從外部看上去就是一台可以直接運行高級語言的機器,將M2的功能隱藏了
第二級 虛擬機M2(匯編語言機器)
實質也是編譯器,將匯編語言編譯成機器語言再傳給M1執行,
從外部看上去就是一台可以直接運行匯編語言的機器,將M1的功能隱藏了
第一級(最底層) 實際機器M1(機器語言機器)
可以直接運行機器語言程序
b. 嚴格來講以上虛擬機都屬於翻譯程序,通常翻譯程序可以分為兩類:
i. 編譯型:就像a.中的結構,直接將源程序最終全部翻譯成可直接在M1上運行的機器語言,程序一次性執行;
ii. 解釋型:直接運行源程序,而且是一條一條執行源程序中的語句,只不過是每執行一條就將其翻譯成可直接在M1上運行的機器語言,即翻譯一次執行一次,即使下一次重復執行該語句也必須得走該流程,這種層次結構就只有兩層;
註:該過程同樣也是三層結構的,相當於M3每執行一次高級語言就將其先翻譯成匯編語言,再翻譯成機器語言最後再執行,這種模式更加貼近人的思維,就好像真的在執行高級語言一樣,並且是「一條一條執行高級語言」的;
c. 四級層次結構:就是講第一層再向下分解出一個微程序機器,又因為實際機器和微程序機器都是實際機器,因此將第一層的實際機器改稱為傳統機器以示區別
第一層 傳統機器M1
還是機器語言機器
將每一條機器指令按照不同的部分分解成更小的原子操作,即按照「指令類型+操作數1+操作數2」的形式進行分解,
分解成更小的一組微指令,再將不同類型的微指令傳給相應的M0直接運行,例如一條機器指令(為了方便,用匯編
語言描述)」MOV AL,X;「,將其分解成更小的三條微指令MOV、AL、X,分別為移動指令、尋找寄存器存儲單元的定址
指令和尋找內存存儲單元的定址指令,然後將這三個微指令交由各自相應的微程序機器運行(分別交由移動控制單元、
寄存器定址控制單元和內存定址控制單元來運行),這樣就將實際機器M1分解成了若干更小的微程序機器M0,這更加
體現了分工合作的高效性;
第零層 微程序機器M0
微指令系統
可以直接運行各自的微指令,因此由機器指令分解而來的各條微指令可以看做更小的微程序
d. 五級層次結構:即在M1和M2(即機器機和匯編機之間)還應有一層虛擬機,即操作系統,因為它具有控制並管理計算機全部硬體資源的作用,因此上層虛擬機的很多實現都必須有操作系統支持,比如malloc需要有操作系統的內存映射來支持,但從高級語言角度來看malloc沒有任何意義,操作系統不是翻譯程序,而是上層程序的運行環境;
3. 從層次結構來劃分軟硬體:
a. 以操作系統為分界線,上層虛擬機是軟體的主要研究對象,而下層的傳統機和微程序機是硬體的主要研究對象,組成原理主要的研究對象就是傳統機和微程序機;
b. 軟硬體界線並非一成不變,隨著超大規模集成電路的發展出現了固件,即將軟體永久存於只讀存儲器中;
例如,現在已經實現部分操作系統的固化(固態C盤),這樣就省去了開機時將操作系統載入進內存的時間,MPU可以直接讀操作系統中的內容,相當於一個專門存放操作系統的永久性內存;
4. 計算機系統結構和計算機組成的區別:
a. 計算機系統結構:
i. 即計算機系統的屬性,比如指令系統、數據類型、存儲技術等;
ii. 是一種概念性的結構與功能;
iii. 只在程序員層面上可見,由於計算機系統具有多級層次結構,因此站在不同層次上的程序員所看到的計算機系統結構是不同的;
iv. 例如在C程序員看來完全相同的兩種系統結構,但在匯編程序員看來可能完全不一樣;
b. 計算機組成:
i. 是對於程序員來說是透明的(隱藏的)實現系統結構的硬體細節;
ii. 例如指令系統是一種結構問題,而如何用硬體實現(用什麼電路、用那些器件進行組合)具體的指令系統就是計算機組成問題了;
c. 最為典型的例子:
廠商一般會生產同一系列不同型號的各種計算機,不同型號之間性能以及價格等會有較大的差別,但是這些型號的計算機上面開發的軟體可以相互兼容;
其中同一系列就是指這些計算機的系統結構都是相同的,因此對於程序員來說其看到的系統屬性都是相同的,因此開發的軟體相互都可以兼容(從而使用戶的軟體投資不浪費),而不同型號就是指這些計算機組成互不相同,但是這些不同的組成都實現了相同的體系結構,不同組成使得其運行速度有較大差異,一些方面的性能可能不同,這樣可以針對不同性能需求的用戶提供同一種體系結構的產品;
目錄
(一)計算機發展歷程
(二)計算機系統層次結構
1. 計算機系統的基本組成
2. 計算機硬體的基本組成
3. 計算機硬體和軟體的關系
4. 計算機的工作過程
(三)計算機性能指標
(一)計算機發展歷程
1.世界上第一台電子數字計算機是1946年問世的ENIC(Electronic Numerical Integrator And Computer)。
2.根據計算機採用的電子器件可分為四類:
(1)第一代——電子管計算機
(2)第二代——晶體管計算機
(3)第三代——小、中規模集成電路(SSI,MSI)計算機
(4)第四代——大、超大規模集成電路(LSI,VLSI)計算機
(二)計算機系統層次結構
1. 計算機系統的基本組成
1.1 一個完整的計算機系統包括硬體系統和軟體系統。
1.2 早期的馮·諾依曼機特點:
計算機硬體系統由運算器、存儲器、控制器、輸入設備和輸出設備5大部件組成。
指令和數據以同等地位存放於存儲器內,並可按地址尋訪。
指令和數據均用二進制數表示。
指令由操作碼和地址碼組成,操作碼用來表示操作的性質,地址碼用來表示操作碼在存儲器中的位置。
指令在存儲器內按順序存放。通常,指令是順序執行的,在特定條件下,可根據運算結果或根據設定的條件改變執行順序。
機器以運算器為中心,輸入輸出設備與存儲器間的數據傳送通過運算器完成。
註:現代計算機以存儲器為中心。
2. 計算機硬體的基本組成
2.1 計算機硬體的組成及作用:
運算器(ALU):完成算術運算和邏輯運算,並將運算的中間結果暫存在運算器內。
存儲器:存放數據和程序。
控制器:控制、指揮程序和數據的輸入、運行以及處理運算結果。
輸入設備:將人們熟悉的信息形式轉換為機器能識別的信息形式,常見的有鍵盤、滑鼠等。
輸出設備:將機器運行結果轉換為人們熟悉的信息形式,如列印機輸出、顯示器輸出等。
2.2 計算機軟體的組成:
系統軟體:標准程序庫、語言處理程序、操作系統、服務性程序、資料庫管理系統、計算機網路軟體等。
應用軟體(應用程序):科學計算程序、數據處理程序、過程式控制製程序、事務管理程序、各種APP等。
2.3 說明
中央處理器(CPU):運算器和控制器。
I/O設備:輸入設備和輸出設備。
地址寄存器(MAR):存放欲訪問的存儲單元地址。
數據寄存器(MDR):暫存要從存儲器中讀或者寫的信息。
運算器:包含若干通用寄存器,如累計器(ACC)、乘商寄存器(MO)、操作數寄存器(X)、變址寄存器(IX)、基址寄存器(BR)、程序狀態寄存器(PSW)等。
控制器由程序計數器(PC)、指令寄存器(IR)、控制單元(CU)組成。
3. 計算機硬體和軟體的關系
硬體和軟體是一個完整的計算機系統互相依存的兩大部分,它們的關系主要體現在以下幾個方面。
硬體和軟體互相依存:硬體是軟體賴以工作的物質基礎,軟體的正常工作是硬體發揮作用的唯一途徑。計算機系統必須要配備完善的軟體系統才能正常工作,且充分發揮其硬體的各種功能。
硬體和軟體無嚴格界線: 隨著計算機技術的發展,在許多情況下,計算機的某些功能既可以由硬體實現,也可以由軟體來實現。因此,硬體與軟體在一定意義上說沒有絕對嚴格的界面。
硬體和軟體協同發展:計算機軟體隨硬體技術的迅速發展而發展,而軟體的不斷發展與完善又促進硬體的更新,兩者密切地交織發展,缺一不可。
4. 計算機的工作過程
計算機的工作過程可分為以下幾個過程:
把程序和數據裝入到主存儲器中。
從程序的起始地址運行程序。
用程序的首地址從存儲器中取出第一條指令,經過解碼、執行步驟等控制計算機各功能部件協同運行,完成這條指令功能,並計算下一條指令的地址。
用新得到的指令地址繼續讀出第二條指令並執行,直到程序結束為止;每一條指令都是在取指、解碼和執行的循環過程中完成的。
(三)計算機性能指標
機器字長:計算機進行一次整數運算(即定點整數運算)所能處理的二進制數據的位數。數的表示範圍越大,計算精度越高。
數據通路帶寬:數據匯流排一次所能並行傳送信息的位數。
主存容量:主存儲器所能存儲信息的最大容量,用位元組或字數×字長表示。MAR的位數反映了存儲單元的個數。
如:MAR為16位,則有216 個存儲單元(即64K內存,1K=1024),若MDR為32位,表示存儲容量為64K×32位。
運算速度:
(1)吞吐量和響應時間
吞吐量:系統在單位時間內處理請求的數量,主要取決於主存的存取周期。
響應時間:用戶向計算機發送一個請求,到系統對該請求做出響應並獲得它所需要 的 結果的等待時間。
(2)主頻和CPU時鍾周期
主頻(CPU時鍾頻率):機器內部主時鍾的頻率,即CPU時鍾周期的倒數,常以MHz為單位,1MHz表示每秒1次。
CPU時鍾周期:通常為節拍脈沖或T周期,即主頻的倒數,是CPU中最小的時間單位。
(3)CPI:執行一條指令所需要的時鍾周期數。
(4)CUP執行時間:運行一個程序所花費的時間。
CUP執行時間 = CPU時鍾周期數 / 主頻 = (指令條數 × CPI)/ 主頻
(5)MIPS、MFLOPS、GFLOPS和TFLOPS
MIPS:每秒執行多少百萬條指令。
MIPS = 指令條數 / (執行時間 × 106)= 主頻 / CPI
MFLOPS:每秒執行多少百萬次浮點運算。
GFLOPS:每秒執行多少十億次浮點運算。
TFLOPS:每秒執行多少萬億次浮點運算。