1 / 115

第五章

第五章. 指令的執行系統. 本章概要. 硬體架構 記憶體規劃 計算電路規劃 指令規劃 硬體電路的控制單元設計 中斷處理 CPU 內部電路設計探討 CPU 的效能評估 高階語言的執行 精簡與複雜指令集電腦. 指令的執行系統概論. 從一開始的 暫存器與 ALU 的硬體電路規劃 ,到 指令的種類、格式,系統的執行步驟設計 ,以及 控制單元的電路設計 ,每一個環節都涉及 CPU 整體的運作,必須仔細的做分析與探討,方能有一個完整而理想的效能 。.

loman
Download Presentation

第五章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第五章 指令的執行系統

  2. 本章概要 硬體架構 記憶體規劃 計算電路規劃 指令規劃 硬體電路的控制單元設計 中斷處理 CPU內部電路設計探討 CPU的效能評估 高階語言的執行 精簡與複雜指令集電腦

  3. 指令的執行系統概論 • 從一開始的暫存器與ALU的硬體電路規劃,到指令的種類、格式,系統的執行步驟設計,以及控制單元的電路設計,每一個環節都涉及CPU整體的運作,必須仔細的做分析與探討,方能有一個完整而理想的效能。

  4. 本章將從一個簡易通用暫存器型式的CPU架構,與一組基本的指令集配合,所建構的教學1號電腦,來說明記憶體的使用概念、指令的執行過程、控制單元的設計原理、組譯技術、精簡與複雜指令集電腦的差異等等設計理念。本章將從一個簡易通用暫存器型式的CPU架構,與一組基本的指令集配合,所建構的教學1號電腦,來說明記憶體的使用概念、指令的執行過程、控制單元的設計原理、組譯技術、精簡與複雜指令集電腦的差異等等設計理念。

  5. 硬體架構 通用暫存器的CPU 教學1號的規格 計算暫存器 特殊暫存器 狀態位元 ALU電路 記憶體規格 輸出入資料 中斷處理

  6. 硬體架構 • 早期CPU的設計,暫存器的數量較少,使用非常簡約,在計算上會使用專門的暫存器,來負責資料送入ALU運算,而且也用這個暫存器負責儲存ALU算出的結果,這個特殊的暫存器稱為累積器(Accumulator),這種CPU也就稱為以累積器為主的CPU。

  7. 教學1號 • 採用通用暫存器型式的CPU架構與其指令群。

  8. 教學1號 • 採用通用暫存器型式的CPU架構與其指令群。 一、計算暫存器: • 有八個一般暫存器,以暫存器檔案(Register File)方式表示,為R0至R7,每個暫存器為16位元,處理整數運算,其中R0的內容值固定為0,而R7為基底暫存器(Base Register)供系統的載入程式重排程式位址使用。

  9. 另有八個浮點暫存器,以暫存器檔案方式表示,為FR8至FR15,每個暫存器亦為16位元,處理實數運算。另有八個浮點暫存器,以暫存器檔案方式表示,為FR8至FR15,每個暫存器亦為16位元,處理實數運算。

  10. 二、特殊暫存器有: • PC(Program Counter)程式計數器,用於標示目前要執行的指令,在記憶體的位址;而PC的內部是16位元,可取得記憶體65536個空間內的指令。 • IR(Instruction Register)指令暫存器,用於從記憶體中讀取指令,並在控制單元中解碼,以得悉指令的要求;因為一個指令的格式是16個位元,所以IR暫存器也是16位元。

  11. AR(Address Register)位址暫存器,標示所要資料在記憶體的位址,所以AR暫存器也是16位元。 • DR(Data Register)資料暫存器,讀取或寫入資料至記憶體,而AR暫存器是16位元,可以取得記憶體65536個空間內的資料。

  12. SP(Stack Pointer)堆疊指標,用於標示目前堆疊內資料存取的記憶體位址,其為16位元。 • RP(Return Pointer)返回指標,用於標示副程式執行完成後,存取返回位址所在的記憶體位址,其為16位元。

  13. OS(Operating System Segment Register)作業系統段暫存器,固定標示系統在記憶體的開始位址,其為16位元。 • PS(Program Segment Register)程式段暫存器,固定標示使用者程式在記憶體的開始位址,其為16位元。

  14. SS(Stack Segment Register)堆疊段暫存器,固定標示堆疊區在記憶體的開始位址,其為16位元。 • RS(Return Address Segment Register)返回位址段暫存器,固定標示返回位址在記憶體的開始位址,其為16位元。 • RMR(Real Memory Address Register)實際記憶體位址暫存器,標示記憶體的正確位址,為32位元,所以總記憶體有4G個空間。

  15. 三、狀態位元: • SB(Program Start Bit)程式開始執行位元,當程式開始執行時SB即設定為1,直到程式執行結束時SB才設為0。 • IEN(Interrupt Enable)中斷允許位元,當有中斷要求時,若IEN為1則允許中斷服務,若IEN為0則不允許中斷服務。

  16. ITR(Interrupt Request)中斷要求位元,若ITR為1即發生中斷要求事件,若ITR為0即沒有任何中斷要求事件。 • INT(Interrupt Flag)中斷旗號,若INT為1即表示目前正在執行中斷服務常式,INT為0即表示目前為一般程式執行。

  17. IF(Input Flag)輸入旗號,若IF為1即表示輸入暫存器有資料進入,CPU需要讀取資料,IF為0即表示輸入暫存器內沒有資料。 • OF(Output Flag)輸出旗號,若OF為1即表示CPU送出資料至輸出暫存器等待外部裝置讀取,OF為0即表示輸出暫存器內己沒有資料。

  18. 四、ALU電路: • 算術電路有整數的加減法、遞增、遞減電路,及浮點的加減法電路,邏輯電路有NOT、AND與OR等運算電路,移位電路有左移與右移運算電路,比較電路有等於或不等於零的電路。

  19. 五、記憶體規格: • 4G*16,即容量有4*173741824個位址空間,而各位址內為16位元。

  20. 教學1號CPU結構圖

  21. 記憶體規劃 系統區 程式區 返回位址區 堆疊區 區段組合定址式 差值移位定址式 直接定址式

  22. 記憶體規劃 • 教學1號的記憶體規格是4G*16,即共有4*173741824個空間,而每個空間有16個位元;所以要指定這個記憶體的所有位址必須是32位元,而要存取任一位址內的資料則是16位元。

  23. 系統在規劃上,將記憶體分成四個區段: • 一、是系統區,由OS作業系統段暫存器所界定,其內容值固定是0000(16進制值);若要取得系統內的指令執行,可由PC程式計數器指定位址,由IR指令暫存器讀取指令;若要取得系統內資料使用,可由AR位址暫存器標示資料位址,由DR資料暫存器存取資料。

  24. 二、是程式區,由PS程式段暫存器所界定,其內容值固定是2000(16進制值);若要取得系統內的指令執行,可由PC程式計數器指定位址,由IR指令暫存器讀取指令;若要取得系統內資料使用,可由AR位址暫存器標示資料位址,由DR資料暫存器存取資料;其方式與系統區段相同,但此時SB程式開始之狀態位元是1,表示目前正在執行的是使用者程式,若SB為0則是在系統區。二、是程式區,由PS程式段暫存器所界定,其內容值固定是2000(16進制值);若要取得系統內的指令執行,可由PC程式計數器指定位址,由IR指令暫存器讀取指令;若要取得系統內資料使用,可由AR位址暫存器標示資料位址,由DR資料暫存器存取資料;其方式與系統區段相同,但此時SB程式開始之狀態位元是1,表示目前正在執行的是使用者程式,若SB為0則是在系統區。

  25. 三、是返回位址區,由RS返回位址段暫存器所界定,其內容值固定是FFFE(16進制值);本區段是用來做呼叫副程式時,儲存其返回位址,若要存取返回位址則要使用RP返回位址指標,以PC存取返回位址;這區段從FFFE:0000至FFFE:FFFF共可存65536筆返回位址,故最多可呼叫65536個副程式或中斷服務常式。三、是返回位址區,由RS返回位址段暫存器所界定,其內容值固定是FFFE(16進制值);本區段是用來做呼叫副程式時,儲存其返回位址,若要存取返回位址則要使用RP返回位址指標,以PC存取返回位址;這區段從FFFE:0000至FFFE:FFFF共可存65536筆返回位址,故最多可呼叫65536個副程式或中斷服務常式。

  26. 四、是堆疊區,由SS堆疊段暫存器所界定,其內容值固定是FFFF(16進制值);本區段是用來做資料存放,若要存取堆疊內資料則要使用SP堆疊指標,以DR存取資料;這區段從FFFF:0000至FFFF:FFFF共可存65536筆資料。四、是堆疊區,由SS堆疊段暫存器所界定,其內容值固定是FFFF(16進制值);本區段是用來做資料存放,若要存取堆疊內資料則要使用SP堆疊指標,以DR存取資料;這區段從FFFF:0000至FFFF:FFFF共可存65536筆資料。

  27. 教學1號的採固定分段設計 • 一般在記憶體的區段分配上,是由作業系統依實際的記憶體大小及要執行的程式與資料情況,做動態調整,所以每個段暫存器可由指令設定其值;但在教學1號是採固定分段設計,故將每個段暫存器設為固定值,同時沒有設計改變段暫存器的指令。

  28. 教學1號的記憶體規劃為四個區段的電路設計 • 首先是系統區,由OS系統段暫存器設定從0000開始,由程式計數器(PC值)標示指令的位址,而由IR指令暫存器讀取指令;資料讀取則由AR位址暫存器指示位址,由DR資料暫存器讀取資料 。 • 第二為程式區,由PS程式段暫存器設定從2000開始指令可由PC程式計數器指示位址,由IR指令暫存器讀取指令;資料讀寫則由AR位址暫存器配合指示位址,由DR資料暫存器負責存取資料。

  29. 第三為返回位址區,由RS返回位址段暫存器設定,位址由FFFE開始,需配合RP返回位址指標,才能正確指示記憶體位址 。 • 第四為堆疊區,由SS堆疊段暫存器設定,位址由FFFF開始,需配合SP堆疊指標,才能正確標示出記憶體位址。

  30. 教學1號的記憶體架構圖

  31. 記憶體管理系統 • 一般電腦的程式段位址與其內的資料是可調整的,但區段的移動變化,必須要注意區段可能造成的重疊及記憶體間隙,如果區段重疊便可能彼此破壞了內容程式或資料,區段隔離太開又會造成部份記憶體無法使用到形成浪費,所以記憶體區段的變動,必須非常仔細,通常屬系統內記憶體管理系統(Memory Management System,MMS)程式負責調配。

  32. 計算電路規劃 整數運算電路 實數運算電路 記憶體存取 輸出入資料 暫存器群

  33. 計算電路規劃 • 在教學1號的計算電路中,亦有算術、邏輯、移位與比較運算等電路;為指令的需求所以僅有簡易的加減法、遞增、遞減,邏輯的NOT、AND、OR運算,一般左右移位及是否為零的比較。

  34. 算術電路有分整數與浮點運算,暫存器也有分整數與實數(浮點)暫存器,各有8個,每個暫存器16位元,但是以暫存器檔案(記憶體架構)型態設計;由多工器選擇所指定的暫存器,進入輸入暫存器(INR1、INR2),然後透過計算電路,將結果值寫入資料暫存器(DR),而資料暫存器值可將結果值,輸入給指定暫存器或記憶體;記憶體內的資料亦可透過資料暫存器,寫給指定暫存器。算術電路有分整數與浮點運算,暫存器也有分整數與實數(浮點)暫存器,各有8個,每個暫存器16位元,但是以暫存器檔案(記憶體架構)型態設計;由多工器選擇所指定的暫存器,進入輸入暫存器(INR1、INR2),然後透過計算電路,將結果值寫入資料暫存器(DR),而資料暫存器值可將結果值,輸入給指定暫存器或記憶體;記憶體內的資料亦可透過資料暫存器,寫給指定暫存器。

  35. 指令規劃 暫存器計算指令 資料搬移指令 跳躍指令

  36. 指令規劃 • 教學1號電腦指令共有29個指令,每個指令都是16位元,可區分成暫存器計算指令、資料搬移指令及跳躍指令共三類。每一類指令先說明其指令格式,然後列出每個指令編碼、名稱及其指令動作。

  37. 暫存器計算指令 • 指令共有16個,都是以暫存器間的計算為主,前6個指令是兩個暫存器的運算ADD、SUB、FADD、FSUB、AND、OR,而後7個指令是單一暫存器動作NOT、INC、DEC、SHL、SHR、CLR、CLC,然後是中斷是否允許控制的2個指令IEN、IDE,最後是程式結束HLT。

  38. 資料搬移指令 • 指令共有8個,主要為暫存器對記憶體或外部裝置做資料存取。 • LD指令是對記憶體讀取資料,其位址是由來源暫存器Rs加上指令位址ADDR之值,而資料讀至目的暫存器Rd;ST指令是將目的暫存器Rd之值,寫入記憶體中,其位址亦是由來源暫存器Rs加上指令位址ADDR之值,這都是在程式段PS中作業。

  39. MOV指令是將來源暫存器Rs之值,寫入目的暫存器Rd中;SET指令是將指令IR0~7之值視做常數,寫入目的暫存器Rd中。MOV指令是將來源暫存器Rs之值,寫入目的暫存器Rd中;SET指令是將指令IR0~7之值視做常數,寫入目的暫存器Rd中。 • PUSH指令是將目的暫存器之值,推入堆疊區中堆疊指標SP所指的位址中,而POP指令是將堆疊區內,堆疊指標SP所指的位址內容值取出,放入目的暫存器中,這兩個指令是在堆疊段SS中作業。

  40. IN是輸入指令,由指令位址標示輸入埠#ADDR,從輸入埠讀取資料至目的暫存器Rd中,OUT是輸出指令,由指令位址標示輸出埠#ADDR,將目的暫存器Rd內資料,由輸出埠寫出,輸出入埠亦在程式段PS中作業。IN是輸入指令,由指令位址標示輸入埠#ADDR,從輸入埠讀取資料至目的暫存器Rd中,OUT是輸出指令,由指令位址標示輸出埠#ADDR,將目的暫存器Rd內資料,由輸出埠寫出,輸出入埠亦在程式段PS中作業。

  41. 跳躍指令 • 一般指令是依順序逐一執行的,也就是程式計數器PC逐次加1,依記憶體位址逐一讀取指令執行,若有指令執行後改變了PC之值,使得下一指令的位址有了改變,這就稱為跳躍指令,教學1號的跳躍指令共有5個。 • JP是直接跳躍指令,即下一指令位址是來源暫存器Rs加上指令位址ADDR之值。

  42. JZ是條件跳躍指令,當目的暫存器Rd的值為零時,就要跳躍,下一指令位址是來源暫存器Rs加上指令位址ADDR之值,若不為零則條件不符,不做跳躍即不改變PC值,這個指令完成後,即做下一指令;JNZ是與JZ指令相反條件的指令,當目的暫存器Rd的值不為零時,就要跳躍,下一指令位址是來源暫存器Rs加上指令位址ADDR之值,為零時則不跳躍,這是在程式段PS中作業。JZ是條件跳躍指令,當目的暫存器Rd的值為零時,就要跳躍,下一指令位址是來源暫存器Rs加上指令位址ADDR之值,若不為零則條件不符,不做跳躍即不改變PC值,這個指令完成後,即做下一指令;JNZ是與JZ指令相反條件的指令,當目的暫存器Rd的值不為零時,就要跳躍,下一指令位址是來源暫存器Rs加上指令位址ADDR之值,為零時則不跳躍,這是在程式段PS中作業。

  43. CALL是呼叫副程式指令,將下一指令轉至副程式開始位址執行,而副程式的開始位址是在來源暫存器Rs加上指令位址ADDR之值,同時將返回位址,依返回位址指標RP存入返回位址區段RS中;RET是返回主程式指令,是將下一指令返回至主程式,即從返回區段中返回位址指標RP所示的位址,取回返回位址放至PC中。CALL是呼叫副程式指令,將下一指令轉至副程式開始位址執行,而副程式的開始位址是在來源暫存器Rs加上指令位址ADDR之值,同時將返回位址,依返回位址指標RP存入返回位址區段RS中;RET是返回主程式指令,是將下一指令返回至主程式,即從返回區段中返回位址指標RP所示的位址,取回返回位址放至PC中。

  44. 硬體電路的控制單元設計 電腦的控制頻率 外部裝置的不同設計概念 外部裝置的大量資料傳遞 控制單元的主要電路 系統運作的指令週期 讀取與解碼指令的階段 計算指令的執行階段 計算指令的控制電路設計 資料搬移指令執行的階段 資料搬移指令的控制電路設計 跳躍指令執行的階段 副程式呼叫 跳躍指令的控制電路設計

  45. 外部裝置的不同設計概念 • 對於CPU與外部裝置的設計,在架構上可分成三種: • 裝置獨立式。 • 裝置分離式。 • 裝置隱含式(記憶體圖示式)。

  46. 裝置獨立式 • CPU與記憶體有專用的匯流排與資料讀寫控制線,而CPU與外部裝置,另有專用的匯流排與資料輸出入控制線,由於每個裝置的處理速度不同,通常有一裝置介面電路或外部裝置處理器,專門負責所有裝置的資料傳送。

  47. 這種設計的CPU可同時對記憶體與外部裝置,做資料傳送,而記憶體與外部裝置在控制上不同,所以指令也不相同,一般記憶體是用存取(LD、ST)或讀寫指令,而外部裝置是用輸入與輸出(IN,OUT)指令,裝置獨立式的問題在於CPU有記憶體的電路,又兼具裝置的電路,會使CPU電路過於繁雜而接腳過多,教學1號即用這種裝置獨立式。這種設計的CPU可同時對記憶體與外部裝置,做資料傳送,而記憶體與外部裝置在控制上不同,所以指令也不相同,一般記憶體是用存取(LD、ST)或讀寫指令,而外部裝置是用輸入與輸出(IN,OUT)指令,裝置獨立式的問題在於CPU有記憶體的電路,又兼具裝置的電路,會使CPU電路過於繁雜而接腳過多,教學1號即用這種裝置獨立式。

  48. 裝置分離式 • CPU與記憶體、外部裝置,共用相同的資料匯流排,但記憶體與裝置的選擇,及資料輸出入的控制線是不同的,由於每個裝置及記憶體的處理速度不同,通常資料的傳送會因裝置不同而影響記憶體的資料傳送。

  49. 這種設計的CPU對記憶體存取時就不能使用外部裝置,反之對裝置資料傳送時就不能記憶體存取,因為共用匯流排,但記憶體與外部裝置在控制上不同,所以指令也不相同,記憶體是用讀寫指令,而外部裝置是用輸出入指令,裝置分離式因共用匯流排,可減少CPU的接腳,CPU也只要一組暫存器對記憶體與外部裝置做資料進出。這種設計的CPU對記憶體存取時就不能使用外部裝置,反之對裝置資料傳送時就不能記憶體存取,因為共用匯流排,但記憶體與外部裝置在控制上不同,所以指令也不相同,記憶體是用讀寫指令,而外部裝置是用輸出入指令,裝置分離式因共用匯流排,可減少CPU的接腳,CPU也只要一組暫存器對記憶體與外部裝置做資料進出。

More Related