slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
第五章 PowerPoint Presentation
Download Presentation
第五章

Loading in 2 Seconds...

play fullscreen
1 / 115

第五章 - PowerPoint PPT Presentation


  • 74 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '第五章' - loman


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

第五章

指令的執行系統

slide2

本章概要

硬體架構

記憶體規劃

計算電路規劃

指令規劃

硬體電路的控制單元設計

中斷處理

CPU內部電路設計探討

CPU的效能評估

高階語言的執行

精簡與複雜指令集電腦

slide3
指令的執行系統概論
  • 從一開始的暫存器與ALU的硬體電路規劃,到指令的種類、格式,系統的執行步驟設計,以及控制單元的電路設計,每一個環節都涉及CPU整體的運作,必須仔細的做分析與探討,方能有一個完整而理想的效能。
slide4
本章將從一個簡易通用暫存器型式的CPU架構,與一組基本的指令集配合,所建構的教學1號電腦,來說明記憶體的使用概念、指令的執行過程、控制單元的設計原理、組譯技術、精簡與複雜指令集電腦的差異等等設計理念。本章將從一個簡易通用暫存器型式的CPU架構,與一組基本的指令集配合,所建構的教學1號電腦,來說明記憶體的使用概念、指令的執行過程、控制單元的設計原理、組譯技術、精簡與複雜指令集電腦的差異等等設計理念。
slide5

硬體架構

通用暫存器的CPU

教學1號的規格

計算暫存器

特殊暫存器

狀態位元

ALU電路

記憶體規格

輸出入資料

中斷處理

slide6
硬體架構
  • 早期CPU的設計,暫存器的數量較少,使用非常簡約,在計算上會使用專門的暫存器,來負責資料送入ALU運算,而且也用這個暫存器負責儲存ALU算出的結果,這個特殊的暫存器稱為累積器(Accumulator),這種CPU也就稱為以累積器為主的CPU。
slide8
教學1號
  • 採用通用暫存器型式的CPU架構與其指令群。
slide9
教學1號
  • 採用通用暫存器型式的CPU架構與其指令群。

一、計算暫存器:

  • 有八個一般暫存器,以暫存器檔案(Register File)方式表示,為R0至R7,每個暫存器為16位元,處理整數運算,其中R0的內容值固定為0,而R7為基底暫存器(Base Register)供系統的載入程式重排程式位址使用。
slide10
另有八個浮點暫存器,以暫存器檔案方式表示,為FR8至FR15,每個暫存器亦為16位元,處理實數運算。另有八個浮點暫存器,以暫存器檔案方式表示,為FR8至FR15,每個暫存器亦為16位元,處理實數運算。
slide11
二、特殊暫存器有:
  • PC(Program Counter)程式計數器,用於標示目前要執行的指令,在記憶體的位址;而PC的內部是16位元,可取得記憶體65536個空間內的指令。
  • IR(Instruction Register)指令暫存器,用於從記憶體中讀取指令,並在控制單元中解碼,以得悉指令的要求;因為一個指令的格式是16個位元,所以IR暫存器也是16位元。
slide12
AR(Address Register)位址暫存器,標示所要資料在記憶體的位址,所以AR暫存器也是16位元。
  • DR(Data Register)資料暫存器,讀取或寫入資料至記憶體,而AR暫存器是16位元,可以取得記憶體65536個空間內的資料。
slide13
SP(Stack Pointer)堆疊指標,用於標示目前堆疊內資料存取的記憶體位址,其為16位元。
  • RP(Return Pointer)返回指標,用於標示副程式執行完成後,存取返回位址所在的記憶體位址,其為16位元。
slide14
OS(Operating System Segment Register)作業系統段暫存器,固定標示系統在記憶體的開始位址,其為16位元。
  • PS(Program Segment Register)程式段暫存器,固定標示使用者程式在記憶體的開始位址,其為16位元。
slide15
SS(Stack Segment Register)堆疊段暫存器,固定標示堆疊區在記憶體的開始位址,其為16位元。
  • RS(Return Address Segment Register)返回位址段暫存器,固定標示返回位址在記憶體的開始位址,其為16位元。
  • RMR(Real Memory Address Register)實際記憶體位址暫存器,標示記憶體的正確位址,為32位元,所以總記憶體有4G個空間。
slide16
三、狀態位元:
  • SB(Program Start Bit)程式開始執行位元,當程式開始執行時SB即設定為1,直到程式執行結束時SB才設為0。
  • IEN(Interrupt Enable)中斷允許位元,當有中斷要求時,若IEN為1則允許中斷服務,若IEN為0則不允許中斷服務。
slide17
ITR(Interrupt Request)中斷要求位元,若ITR為1即發生中斷要求事件,若ITR為0即沒有任何中斷要求事件。
  • INT(Interrupt Flag)中斷旗號,若INT為1即表示目前正在執行中斷服務常式,INT為0即表示目前為一般程式執行。
slide18
IF(Input Flag)輸入旗號,若IF為1即表示輸入暫存器有資料進入,CPU需要讀取資料,IF為0即表示輸入暫存器內沒有資料。
  • OF(Output Flag)輸出旗號,若OF為1即表示CPU送出資料至輸出暫存器等待外部裝置讀取,OF為0即表示輸出暫存器內己沒有資料。
slide19
四、ALU電路:
  • 算術電路有整數的加減法、遞增、遞減電路,及浮點的加減法電路,邏輯電路有NOT、AND與OR等運算電路,移位電路有左移與右移運算電路,比較電路有等於或不等於零的電路。
slide20
五、記憶體規格:
  • 4G*16,即容量有4*173741824個位址空間,而各位址內為16位元。
slide22

記憶體規劃

系統區

程式區

返回位址區

堆疊區

區段組合定址式

差值移位定址式

直接定址式

slide23
記憶體規劃
  • 教學1號的記憶體規格是4G*16,即共有4*173741824個空間,而每個空間有16個位元;所以要指定這個記憶體的所有位址必須是32位元,而要存取任一位址內的資料則是16位元。
slide24
系統在規劃上,將記憶體分成四個區段:
  • 一、是系統區,由OS作業系統段暫存器所界定,其內容值固定是0000(16進制值);若要取得系統內的指令執行,可由PC程式計數器指定位址,由IR指令暫存器讀取指令;若要取得系統內資料使用,可由AR位址暫存器標示資料位址,由DR資料暫存器存取資料。
slide25
二、是程式區,由PS程式段暫存器所界定,其內容值固定是2000(16進制值);若要取得系統內的指令執行,可由PC程式計數器指定位址,由IR指令暫存器讀取指令;若要取得系統內資料使用,可由AR位址暫存器標示資料位址,由DR資料暫存器存取資料;其方式與系統區段相同,但此時SB程式開始之狀態位元是1,表示目前正在執行的是使用者程式,若SB為0則是在系統區。二、是程式區,由PS程式段暫存器所界定,其內容值固定是2000(16進制值);若要取得系統內的指令執行,可由PC程式計數器指定位址,由IR指令暫存器讀取指令;若要取得系統內資料使用,可由AR位址暫存器標示資料位址,由DR資料暫存器存取資料;其方式與系統區段相同,但此時SB程式開始之狀態位元是1,表示目前正在執行的是使用者程式,若SB為0則是在系統區。
slide26
三、是返回位址區,由RS返回位址段暫存器所界定,其內容值固定是FFFE(16進制值);本區段是用來做呼叫副程式時,儲存其返回位址,若要存取返回位址則要使用RP返回位址指標,以PC存取返回位址;這區段從FFFE:0000至FFFE:FFFF共可存65536筆返回位址,故最多可呼叫65536個副程式或中斷服務常式。三、是返回位址區,由RS返回位址段暫存器所界定,其內容值固定是FFFE(16進制值);本區段是用來做呼叫副程式時,儲存其返回位址,若要存取返回位址則要使用RP返回位址指標,以PC存取返回位址;這區段從FFFE:0000至FFFE:FFFF共可存65536筆返回位址,故最多可呼叫65536個副程式或中斷服務常式。
slide27
四、是堆疊區,由SS堆疊段暫存器所界定,其內容值固定是FFFF(16進制值);本區段是用來做資料存放,若要存取堆疊內資料則要使用SP堆疊指標,以DR存取資料;這區段從FFFF:0000至FFFF:FFFF共可存65536筆資料。四、是堆疊區,由SS堆疊段暫存器所界定,其內容值固定是FFFF(16進制值);本區段是用來做資料存放,若要存取堆疊內資料則要使用SP堆疊指標,以DR存取資料;這區段從FFFF:0000至FFFF:FFFF共可存65536筆資料。
slide28
教學1號的採固定分段設計
  • 一般在記憶體的區段分配上,是由作業系統依實際的記憶體大小及要執行的程式與資料情況,做動態調整,所以每個段暫存器可由指令設定其值;但在教學1號是採固定分段設計,故將每個段暫存器設為固定值,同時沒有設計改變段暫存器的指令。
slide29
教學1號的記憶體規劃為四個區段的電路設計
  • 首先是系統區,由OS系統段暫存器設定從0000開始,由程式計數器(PC值)標示指令的位址,而由IR指令暫存器讀取指令;資料讀取則由AR位址暫存器指示位址,由DR資料暫存器讀取資料 。
  • 第二為程式區,由PS程式段暫存器設定從2000開始指令可由PC程式計數器指示位址,由IR指令暫存器讀取指令;資料讀寫則由AR位址暫存器配合指示位址,由DR資料暫存器負責存取資料。
slide30
第三為返回位址區,由RS返回位址段暫存器設定,位址由FFFE開始,需配合RP返回位址指標,才能正確指示記憶體位址
  • 第四為堆疊區,由SS堆疊段暫存器設定,位址由FFFF開始,需配合SP堆疊指標,才能正確標示出記憶體位址。
slide32
記憶體管理系統
  • 一般電腦的程式段位址與其內的資料是可調整的,但區段的移動變化,必須要注意區段可能造成的重疊及記憶體間隙,如果區段重疊便可能彼此破壞了內容程式或資料,區段隔離太開又會造成部份記憶體無法使用到形成浪費,所以記憶體區段的變動,必須非常仔細,通常屬系統內記憶體管理系統(Memory Management System,MMS)程式負責調配。
slide33

計算電路規劃

整數運算電路

實數運算電路

記憶體存取

輸出入資料

暫存器群

slide34
計算電路規劃
  • 在教學1號的計算電路中,亦有算術、邏輯、移位與比較運算等電路;為指令的需求所以僅有簡易的加減法、遞增、遞減,邏輯的NOT、AND、OR運算,一般左右移位及是否為零的比較。
slide35
算術電路有分整數與浮點運算,暫存器也有分整數與實數(浮點)暫存器,各有8個,每個暫存器16位元,但是以暫存器檔案(記憶體架構)型態設計;由多工器選擇所指定的暫存器,進入輸入暫存器(INR1、INR2),然後透過計算電路,將結果值寫入資料暫存器(DR),而資料暫存器值可將結果值,輸入給指定暫存器或記憶體;記憶體內的資料亦可透過資料暫存器,寫給指定暫存器。算術電路有分整數與浮點運算,暫存器也有分整數與實數(浮點)暫存器,各有8個,每個暫存器16位元,但是以暫存器檔案(記憶體架構)型態設計;由多工器選擇所指定的暫存器,進入輸入暫存器(INR1、INR2),然後透過計算電路,將結果值寫入資料暫存器(DR),而資料暫存器值可將結果值,輸入給指定暫存器或記憶體;記憶體內的資料亦可透過資料暫存器,寫給指定暫存器。
slide36

指令規劃

暫存器計算指令

資料搬移指令

跳躍指令

slide37
指令規劃
  • 教學1號電腦指令共有29個指令,每個指令都是16位元,可區分成暫存器計算指令、資料搬移指令及跳躍指令共三類。每一類指令先說明其指令格式,然後列出每個指令編碼、名稱及其指令動作。
slide38
暫存器計算指令
  • 指令共有16個,都是以暫存器間的計算為主,前6個指令是兩個暫存器的運算ADD、SUB、FADD、FSUB、AND、OR,而後7個指令是單一暫存器動作NOT、INC、DEC、SHL、SHR、CLR、CLC,然後是中斷是否允許控制的2個指令IEN、IDE,最後是程式結束HLT。
slide39
資料搬移指令
  • 指令共有8個,主要為暫存器對記憶體或外部裝置做資料存取。
  • LD指令是對記憶體讀取資料,其位址是由來源暫存器Rs加上指令位址ADDR之值,而資料讀至目的暫存器Rd;ST指令是將目的暫存器Rd之值,寫入記憶體中,其位址亦是由來源暫存器Rs加上指令位址ADDR之值,這都是在程式段PS中作業。
slide40
MOV指令是將來源暫存器Rs之值,寫入目的暫存器Rd中;SET指令是將指令IR0~7之值視做常數,寫入目的暫存器Rd中。MOV指令是將來源暫存器Rs之值,寫入目的暫存器Rd中;SET指令是將指令IR0~7之值視做常數,寫入目的暫存器Rd中。
  • PUSH指令是將目的暫存器之值,推入堆疊區中堆疊指標SP所指的位址中,而POP指令是將堆疊區內,堆疊指標SP所指的位址內容值取出,放入目的暫存器中,這兩個指令是在堆疊段SS中作業。
slide41
IN是輸入指令,由指令位址標示輸入埠#ADDR,從輸入埠讀取資料至目的暫存器Rd中,OUT是輸出指令,由指令位址標示輸出埠#ADDR,將目的暫存器Rd內資料,由輸出埠寫出,輸出入埠亦在程式段PS中作業。IN是輸入指令,由指令位址標示輸入埠#ADDR,從輸入埠讀取資料至目的暫存器Rd中,OUT是輸出指令,由指令位址標示輸出埠#ADDR,將目的暫存器Rd內資料,由輸出埠寫出,輸出入埠亦在程式段PS中作業。
slide42
跳躍指令
  • 一般指令是依順序逐一執行的,也就是程式計數器PC逐次加1,依記憶體位址逐一讀取指令執行,若有指令執行後改變了PC之值,使得下一指令的位址有了改變,這就稱為跳躍指令,教學1號的跳躍指令共有5個。
  • JP是直接跳躍指令,即下一指令位址是來源暫存器Rs加上指令位址ADDR之值。
slide43
JZ是條件跳躍指令,當目的暫存器Rd的值為零時,就要跳躍,下一指令位址是來源暫存器Rs加上指令位址ADDR之值,若不為零則條件不符,不做跳躍即不改變PC值,這個指令完成後,即做下一指令;JNZ是與JZ指令相反條件的指令,當目的暫存器Rd的值不為零時,就要跳躍,下一指令位址是來源暫存器Rs加上指令位址ADDR之值,為零時則不跳躍,這是在程式段PS中作業。JZ是條件跳躍指令,當目的暫存器Rd的值為零時,就要跳躍,下一指令位址是來源暫存器Rs加上指令位址ADDR之值,若不為零則條件不符,不做跳躍即不改變PC值,這個指令完成後,即做下一指令;JNZ是與JZ指令相反條件的指令,當目的暫存器Rd的值不為零時,就要跳躍,下一指令位址是來源暫存器Rs加上指令位址ADDR之值,為零時則不跳躍,這是在程式段PS中作業。
slide44
CALL是呼叫副程式指令,將下一指令轉至副程式開始位址執行,而副程式的開始位址是在來源暫存器Rs加上指令位址ADDR之值,同時將返回位址,依返回位址指標RP存入返回位址區段RS中;RET是返回主程式指令,是將下一指令返回至主程式,即從返回區段中返回位址指標RP所示的位址,取回返回位址放至PC中。CALL是呼叫副程式指令,將下一指令轉至副程式開始位址執行,而副程式的開始位址是在來源暫存器Rs加上指令位址ADDR之值,同時將返回位址,依返回位址指標RP存入返回位址區段RS中;RET是返回主程式指令,是將下一指令返回至主程式,即從返回區段中返回位址指標RP所示的位址,取回返回位址放至PC中。
slide45

硬體電路的控制單元設計

電腦的控制頻率

外部裝置的不同設計概念

外部裝置的大量資料傳遞

控制單元的主要電路

系統運作的指令週期

讀取與解碼指令的階段

計算指令的執行階段

計算指令的控制電路設計

資料搬移指令執行的階段

資料搬移指令的控制電路設計

跳躍指令執行的階段

副程式呼叫

跳躍指令的控制電路設計

slide46
外部裝置的不同設計概念
  • 對於CPU與外部裝置的設計,在架構上可分成三種:
  • 裝置獨立式。
  • 裝置分離式。
  • 裝置隱含式(記憶體圖示式)。
slide47
裝置獨立式
  • CPU與記憶體有專用的匯流排與資料讀寫控制線,而CPU與外部裝置,另有專用的匯流排與資料輸出入控制線,由於每個裝置的處理速度不同,通常有一裝置介面電路或外部裝置處理器,專門負責所有裝置的資料傳送。
slide48
這種設計的CPU可同時對記憶體與外部裝置,做資料傳送,而記憶體與外部裝置在控制上不同,所以指令也不相同,一般記憶體是用存取(LD、ST)或讀寫指令,而外部裝置是用輸入與輸出(IN,OUT)指令,裝置獨立式的問題在於CPU有記憶體的電路,又兼具裝置的電路,會使CPU電路過於繁雜而接腳過多,教學1號即用這種裝置獨立式。這種設計的CPU可同時對記憶體與外部裝置,做資料傳送,而記憶體與外部裝置在控制上不同,所以指令也不相同,一般記憶體是用存取(LD、ST)或讀寫指令,而外部裝置是用輸入與輸出(IN,OUT)指令,裝置獨立式的問題在於CPU有記憶體的電路,又兼具裝置的電路,會使CPU電路過於繁雜而接腳過多,教學1號即用這種裝置獨立式。
slide49
裝置分離式
  • CPU與記憶體、外部裝置,共用相同的資料匯流排,但記憶體與裝置的選擇,及資料輸出入的控制線是不同的,由於每個裝置及記憶體的處理速度不同,通常資料的傳送會因裝置不同而影響記憶體的資料傳送。
slide50
這種設計的CPU對記憶體存取時就不能使用外部裝置,反之對裝置資料傳送時就不能記憶體存取,因為共用匯流排,但記憶體與外部裝置在控制上不同,所以指令也不相同,記憶體是用讀寫指令,而外部裝置是用輸出入指令,裝置分離式因共用匯流排,可減少CPU的接腳,CPU也只要一組暫存器對記憶體與外部裝置做資料進出。這種設計的CPU對記憶體存取時就不能使用外部裝置,反之對裝置資料傳送時就不能記憶體存取,因為共用匯流排,但記憶體與外部裝置在控制上不同,所以指令也不相同,記憶體是用讀寫指令,而外部裝置是用輸出入指令,裝置分離式因共用匯流排,可減少CPU的接腳,CPU也只要一組暫存器對記憶體與外部裝置做資料進出。
slide51
裝置隱含式
  • CPU與記憶體、外部裝置,共用相同的位址與資料匯流排,且相同的控制線;每個裝置編排在記憶體的位址內,以不同的位址區別是記憶體或外部裝置。
slide53
外部裝置的大量資料傳遞
  • 如果單純以鍵盤、滑鼠裝置的資料傳送,一般資料會透過介面電路直接與CPU互相傳送;但是磁碟、網路、影音播放,就不是單純的將裝置透過介面與CPU做資料傳送;因為CPU主要的功能是對記憶體內的指令做讀取執行,而CPU對外部裝置傳送資料的速度很慢,會嚴重影響CPU的效能。
slide55
CPU控制要輸入的資料群(譬如讀取磁碟檔案、擷取影音資料等),先從外部裝置到介面電路,再放至記憶體的這個緩衝區,而不經過CPU;同樣的有資料群要輸出(譬如列印資料,存檔至磁碟、播放影音),CPU會將資料放入緩衝區中,由介面電路讀取送出。或是另外採用視訊晶片與視訊記憶體,專門處理影音資料。CPU控制要輸入的資料群(譬如讀取磁碟檔案、擷取影音資料等),先從外部裝置到介面電路,再放至記憶體的這個緩衝區,而不經過CPU;同樣的有資料群要輸出(譬如列印資料,存檔至磁碟、播放影音),CPU會將資料放入緩衝區中,由介面電路讀取送出。或是另外採用視訊晶片與視訊記憶體,專門處理影音資料。
slide56
在現代的電腦中,外部裝置的大量資料傳遞,CPU已將控制工作轉移給介面電路(南橋晶片電路、北橋晶片電路或使用I/O處理器)執行,CPU本身仍繼續做其指令執行的工作,讓資料傳送的工作由介面電路去做,形成分離的處理。在現代的電腦中,外部裝置的大量資料傳遞,CPU已將控制工作轉移給介面電路(南橋晶片電路、北橋晶片電路或使用I/O處理器)執行,CPU本身仍繼續做其指令執行的工作,讓資料傳送的工作由介面電路去做,形成分離的處理。
slide57
同步計數器(Synchronous Counter,SC)的主要功能,是控制所有動作的時序;由t0、t1、t2至t15不斷的反覆計數,所有CPU的指令動作,都會隨著內頻的脈波,依序的動作,而這個計數器從電源開機就開始計數,直到關機為止。
slide58
指令暫存器的解碼電路,分成四個部份,其中第一部份是IR8~11轉碼為A0至A3,表示目的暫存器,第二部份是IR4~7轉碼為B0至B3,表示來源暫存器,第三部份是IR0~3解碼為C0至C15,表示計算指令,而第四部份是IR12~15解碼為D0至D15,表示資料搬移與跳躍指令。指令暫存器的解碼電路,分成四個部份,其中第一部份是IR8~11轉碼為A0至A3,表示目的暫存器,第二部份是IR4~7轉碼為B0至B3,表示來源暫存器,第三部份是IR0~3解碼為C0至C15,表示計算指令,而第四部份是IR12~15解碼為D0至D15,表示資料搬移與跳躍指令。
slide59
狀態正反器有5個,SB是程式開始位元,SB=1表示使用者程式開始執行;IEN是允許中斷位元,IEN=1表示允許發生中斷時,可以立即處理;ITR是中斷要求位元,ITR=1表示有中斷要求發生;IF是輸入旗號位元,IF=1表示有資料在輸入暫存器,要求CPU讀入;OF是輸出旗號位元,OF=1表示有資料在輸出暫存器,要求外部裝置讀取。控制電路是由所有指令的動作要求,所設計而成。狀態正反器有5個,SB是程式開始位元,SB=1表示使用者程式開始執行;IEN是允許中斷位元,IEN=1表示允許發生中斷時,可以立即處理;ITR是中斷要求位元,ITR=1表示有中斷要求發生;IF是輸入旗號位元,IF=1表示有資料在輸入暫存器,要求CPU讀入;OF是輸出旗號位元,OF=1表示有資料在輸出暫存器,要求外部裝置讀取。控制電路是由所有指令的動作要求,所設計而成。
slide60
系統運作的指令週期
  • 當電腦一開機,系統啟動,CPU就開始讀取與執行指令的運作了,無論是系統的指令、應用程式的指令或使用者要求執行的程式指令,在機械碼而言,對CPU的執行都是一樣的,這種指令的運作,一直要到關機為止。
slide61
每一個指令的執行過程是一樣的,首先是從記憶體讀取指令至CPU的指令暫存器(IR),然從進入控制單元解碼,知道指令的要求動作後,即進入指令的執行,每個的指令有不同的執行要求,最後將結果寫入暫存器或記憶體中,接著是檢查是否有中斷事件要處理,若沒有則讀取下一指令執行,若有則轉至中斷服務常式(常駐程式)處理,在中斷服務常式的最後指令,會回到原程式下一指令執行。每一個指令的執行過程是一樣的,首先是從記憶體讀取指令至CPU的指令暫存器(IR),然從進入控制單元解碼,知道指令的要求動作後,即進入指令的執行,每個的指令有不同的執行要求,最後將結果寫入暫存器或記憶體中,接著是檢查是否有中斷事件要處理,若沒有則讀取下一指令執行,若有則轉至中斷服務常式(常駐程式)處理,在中斷服務常式的最後指令,會回到原程式下一指令執行。
slide62
檢查是否需要中斷處理,是每一個指令完成後必要的動作,因為中斷的事件發生,可能來自於系統或外部裝置,其發生時間與次數都不一定,所以隨時要檢查是否有中斷處理要求。檢查是否需要中斷處理,是每一個指令完成後必要的動作,因為中斷的事件發生,可能來自於系統或外部裝置,其發生時間與次數都不一定,所以隨時要檢查是否有中斷處理要求。
slide63
同時指令若尚未處理完成就去處理中斷,這樣會造成指令在中斷處理完成後,要重做或繼續做完這個指令的問題,使得若中斷事件發生頻率過高,及任何時刻發生中斷事件都要立即處理,在設計上造成很大的困擾。同時指令若尚未處理完成就去處理中斷,這樣會造成指令在中斷處理完成後,要重做或繼續做完這個指令的問題,使得若中斷事件發生頻率過高,及任何時刻發生中斷事件都要立即處理,在設計上造成很大的困擾。
slide64
譬如一個較需要長時間來完成的指令ADD R3,M[100],M[200],將記憶體位址100與200的資料相加存入R3,這個指令讀取兩次記憶體又有一個加法運算,執行時間會比較久。
slide65
倘若這指令執行時,不斷的發生中斷要求,甚至三、四個中斷同時要求,那這個指令若一產生中斷就放棄或暫停,立即處理中斷問題,很可能這個指令永遠執行不完,或程式的執行緩慢難挨,尤其在多程式、多使用者或多個裝置使用時,特別明顯,所以現在都採用指令執行完成後,才處理中斷問題的策略。倘若這指令執行時,不斷的發生中斷要求,甚至三、四個中斷同時要求,那這個指令若一產生中斷就放棄或暫停,立即處理中斷問題,很可能這個指令永遠執行不完,或程式的執行緩慢難挨,尤其在多程式、多使用者或多個裝置使用時,特別明顯,所以現在都採用指令執行完成後,才處理中斷問題的策略。
slide66
包含中斷檢查的指令週期
  • 這種從開機,就週而復始的執行到關機的相同動作,稱為指令週期(Instruction Cycle),其中指令執行的階段是以教學1號的三種指令規劃之。
slide67
暫存器設定的控制電路設計
  • 接著是暫存器設定指令,一個是MOV指令,將某一暫存器的值移至另一暫存器中,另一個是SET指令,是將暫存器的值設成指令的常數。
stack
堆疊(Stack)的觀念與設計
  • 堆疊(Stack)的設計在資料結構的應用上是很普遍的,它是規劃一段記憶體區域做為存放資料的地方,而堆疊區的資料存放方式是設定一個堆疊基底(Stack Base),由堆疊基底開始存放資料(教學1號的位址在FFFF:0000),然後利用堆疊指標(Stack Pointer)指示目前己經堆在堆疊中資料的位址。
slide74

堆疊已滿

  • 在執行PUSH指令時,通常要先檢查堆疊區是否已滿了?如果己滿了就不能執行PUSH指令再存資料,在教學1號的設計中,堆疊可由FFFF:0000至FFFF:FFFF共65536個位址,而資料存至FFFF:FFFF就滿了,堆疊區段SS為FFFF,且堆疊指標SP為FFFF,再存入資料後SP為0000即堆疊己存滿,但一般為了分辨堆疊是滿了還是空了,通常SP為FFFF時,即禁止再使用PUSH指令存資料。
slide75
堆疊已空
  • 同樣的POP指令是取出堆疊資料,若堆疊資料已經沒有了(空了),就禁止POP指令再來取資料,這時的SP為0000表示堆疊已空,在執行POP指令前必須先檢查;這個檢查動作在返回位址區段也有,但在教學1號中即交由系統檢查而不另設檢查電路。
push pop
PUSH與POP指令的執行控制電路設計
  • 堆疊的PUSH與POP指令的執行控制電路設計,PUSH指令的運算碼是D5,在t3時讀取暫存器資料並組合實際的記憶體位址,t4時將資料存入DR,且堆疊指標加1,最後於t5時將資料存入堆疊中;POP指令的運算碼是D6,在t3時先將堆疊指標減1,指示到所要資料的位址,在t4時組合出實際的記憶體位址,t5時取出堆疊內資料,t6時將資料存入指定暫存器。
slide77
輸出入指令的設計
  • 由於CPU的內部執行速度很快,而外部裝置相對的執行速度就慢很多,在彼此互傳資料的過程中,通常需要相互連繫,才不會造成資料傳送時遺失或錯誤。
slide78
若外部裝置有資料輸入時使用輸入旗號(Input Flag, IF),當輸入暫存器(INPR)有外部裝置傳入資料時,會設定IF=1,表示輸入暫存器內有資料要讀取,若CPU讀取輸入暫存器內資料後,會設定IF=0,表示可以再輸入資料。
slide79
若CPU有資料要輸出時使用輸出旗號(Output Flag, OF),當CPU有資料要輸出至輸出暫存器(OUTR)時,會設定OF=1,表示輸出暫存器內有資料要輸出,若外部裝置讀取輸出暫存器內資料後,會設定OF=0,表示CPU可以再輸出資料。
slide80
輸出入資料的控制電路
  • CPU要讀取外部裝置資料,是在確定輸入旗號IF=1,表示外部裝置己將資料輸入,再在t3時做外部載入至輸入暫存器INPR的確認動作,t4時將資料存至所指定的暫存器中,同時設定IF=0,告知外部裝置可送下一筆資料。
slide81
若CPU要將資料輸出,先確定OF=0,表示輸出暫存器OUTR的資料已送出,可送下一筆資料,在t3時讀取要送出的暫存器資料,t4時將資料放至資料暫存器DR,t5時由資料暫存器傳至輸出暫存器OUTR,同時設定OF=1,告知外部裝置來取資料,若外部裝置己取得資料,則設OF=0。若CPU要將資料輸出,先確定OF=0,表示輸出暫存器OUTR的資料已送出,可送下一筆資料,在t3時讀取要送出的暫存器資料,t4時將資料放至資料暫存器DR,t5時由資料暫存器傳至輸出暫存器OUTR,同時設定OF=1,告知外部裝置來取資料,若外部裝置己取得資料,則設OF=0。
slide83
跳躍指令的執行階段
  • 跳躍指令就是在程式執行時,會改變指令執行的順序,共有五個指令,首先是直接跳躍指令JP(JUMP),直接標示下一指令的位址;其次是條件跳躍指令JZ(Jump Zero)在暫存器為0時跳躍,與JNZ(Jump Not Zero)在暫存器不為0時跳躍;最後是呼叫副程式指令CALL及返回主程式指令RET(Return) 。
slide84
直接跳躍JP指令,在t3時讀取暫存器,t4時計算跳躍位址直接設定程式計數器值PC。直接跳躍JP指令,在t3時讀取暫存器,t4時計算跳躍位址直接設定程式計數器值PC。
slide85
零值跳躍JZ指令,在t3時讀取條件暫存器值,t4時用比較電路(cmp)檢查條件暫存器是否為0,同時讀取位址暫存器值,t5時若條件暫存器為0,則計算跳躍位址存入直接設定程式計數器值PC。零值跳躍JZ指令,在t3時讀取條件暫存器值,t4時用比較電路(cmp)檢查條件暫存器是否為0,同時讀取位址暫存器值,t5時若條件暫存器為0,則計算跳躍位址存入直接設定程式計數器值PC。
slide86
非零值跳躍JNZ指令,在t3時讀取條件暫存器值,t4時用比較電路(cmp)檢查條件暫存器是否為0,同時讀取位址暫存器值,t5時若條件暫存器不為0,則計算跳躍位址存入直接設定程式計數器值PC。非零值跳躍JNZ指令,在t3時讀取條件暫存器值,t4時用比較電路(cmp)檢查條件暫存器是否為0,同時讀取位址暫存器值,t5時若條件暫存器不為0,則計算跳躍位址存入直接設定程式計數器值PC。
slide87
呼叫副程式CALL指令,在t3時組合存放返回位址的記憶體位址,同時讀取副程式位址暫存器,t4時將主程式下一指令位址存入記憶體,同時返回位址指標RP加1,t5時計算副程式開始位址,存入程式計數器值PC。呼叫副程式CALL指令,在t3時組合存放返回位址的記憶體位址,同時讀取副程式位址暫存器,t4時將主程式下一指令位址存入記憶體,同時返回位址指標RP加1,t5時計算副程式開始位址,存入程式計數器值PC。
  • 返回主程式RET指令,在t3時將返回位址指標RP減1,t4時組合存放返回位址的記憶體位址,t5時讀取返回主程式的位址至程式計數器值PC。
slide88
副程式的呼叫
  • 在討論跳躍指令的電路前,先說明呼叫副程式與返回主程式的指令意義,基本上呼叫副程式CALL指令也是一種跳躍指令,即改變了程式執行的順序,由一個程式跳到另一個程式執行,但在跳至另一程式執行時必先儲存原程式的下一指令位址又稱返回位址,以便於返回指令RET能回到原程式的下一指令繼續執行。
slide89
所以呼叫副程式的設計,是由CALL指令做呼叫副程式的動作,而在主程式要轉到副程式執行時,必須將未來要返回到主程式的返回位址先紀錄起來,而這種紀錄返回位址的方式,一般有三種:所以呼叫副程式的設計,是由CALL指令做呼叫副程式的動作,而在主程式要轉到副程式執行時,必須將未來要返回到主程式的返回位址先紀錄起來,而這種紀錄返回位址的方式,一般有三種:
slide90
堆疊方式
  • 第一種是目前電腦普遍使用的堆疊方式。記憶體有一區段是專用於存放返回位址,當主程式要轉至副程式執行時,CALL指令會將返回位址用堆疊的方式,堆入返回位址區段中;相反的若要從副程式回到主程式時,就至返回位址區中取出返回位址,這是RET指令的動作。
slide91
跳躍指令的控制電路設計
  • 在電路控制設計上, JP指令在t3時直接讀取Rs暫存器值,並在t4時計算跳躍位址(Rs暫存器值加ADDR指令位址值)設定至PC程式計數器,改變下一個指令位址。JZ指令是在Rd為0時跳躍,JNZ指令是在Rd不為0時跳躍,在t3時取出Rd,於t4時讀取Rs暫存器值同時檢查Rd是否為0,t5時比較器確定Rd是否為0,並計算跳躍位址決定PC值。
slide92
副程式呼叫的控制電路設計
  • CALL指令是呼叫副程式,在t3時先取得儲存返回位址的記憶體區段位址,t4時儲存返回位址,遞增返回位址指標RP,t5時計算副程式開始位址,設定PC值至副程式執行。RET指令是返回原程式,在t3時遞減返回位址指標,組合先前返回位址在區段中的實際位址,讀取返回位址設定至PC,返回原程式。
slide93

中斷處理

沒有中斷要求的指令執行

中斷程序

中斷所需要的控制電路

狀態暫存器

暫存器與狀態的保存

中斷的指令執行

slide94
中斷處理
  • 在指令週期中,每一個指令執行完成後,都會檢查是否有中斷要求?有可能程式正在複雜或關鍵區執行,為避免執行錯誤、死結或當機,而設定禁止中斷要求;一般而言,程式若遇到中斷要求,就必須停止下一指令的執行,進入中斷處理,在執行完成中斷服務常式後,才回到原程式繼續執行下去。
slide95
沒有中斷要求的指令執行
  • 指令的執行完成後,會檢查是否發生中斷要求?如果沒有任何中斷需求,即清除同步計數器回到t0,讀取下一指令執行。
slide96
當IEN=0時中斷要求是不允許的,如果IEN=1即表示允許中斷發生,而IEN=1時又發生中斷要求ITR=1,即執行中斷服務常式,若ITR=0表示沒有裝置要求中斷服務。當IEN=0時中斷要求是不允許的,如果IEN=1即表示允許中斷發生,而IEN=1時又發生中斷要求ITR=1,即執行中斷服務常式,若ITR=0表示沒有裝置要求中斷服務。
  • 若IEN=1又產生中斷要求ITR=1則進入中斷服務常式,此時INT設定為1,IEN=0不再允許其他中斷,在執行中斷服務常式完後,INT設定為0,IEN=1。
slide97
中斷的程序
  • 如果真有中斷要求發生則ITR=1(若系統不允許中斷IEN=0,強制產生中斷要求ITR為0,禁止中斷行為產生),在指令執行完成時會查知有中斷要處理,而轉至中斷服務常式執行。
slide98
當系統、程式執行或外部裝置提出中斷服務要求當系統、程式執行或外部裝置提出中斷服務要求
  • 中斷處理的設計,在教學1號是採用中斷向量表(Interrupt Vector Table)的概念;當系統、程式執行或外部裝置提出中斷服務要求時,會先設定ITR=1並同時送出中斷序號(Interrupt Serial Number, ISN)至中斷序號暫存器(ISNR)告知所要提出的中斷服務事件。
slide99
設定中斷狀態切換至中斷系統
  • 在指令執行完成後,會發現有中斷要求,先將INT=1表示目前程式的執行狀態(旗號)、使用到的暫存器切換至中斷硬體系統,以及下一個指令的位址(PC值)保存起來。
slide100
找出中斷服務常式的開始位址
  • 然後依中斷序號至中斷向量表找出中斷服務常式的開始位址,最後跳至中斷服務常式執行。
slide101
中斷事件
  • 當中斷事件提出時,CPU如何得知是什麼樣的事件發生呢?這就涉及到底有多少種不同的中斷服務事件;中斷事件可能是系統因這個程式的分時已到、程式資料的輸出入需要較長的時間,或指令執行發生錯誤,如分母為零、虛數、記憶體保護,也可能是外部裝置發生問題,譬如列表機夾紙或沒紙了,螢幕進入省電狀態,磁碟寫入保護等等,都會要求目前執行的程式暫停,必須處理這些中斷事件。
slide102
中斷服務常駐程式
  • 這些處理中斷事件的程式稱做中斷服務常駐程式,不同的事件有不同的處理程式,而這些程式有的是在安裝系統時就內含有系統裡,有的是安裝應用程式時添加入系統裡,而外部裝置的連接在安裝驅動程式(裝置使用程式, Driver)時也就將處理這個裝置的問題,其種種的處理程式加入系統中,所以系統裡有各種中斷服務常駐程式。
slide103
它們隨著系統載入就一直在記憶體中,故稱常駐程式(Storage Program);而且這些程式是專門處理各種中斷問題的,所以又稱服務程式(Service Program)。
slide104
中斷事件處理程式的記憶體開始位址
  • 中斷向量表在教學1號是設計在記憶體中,也可以另外用記憶體獨立製作的紀錄表,它會給每個中斷事件一個序號,而序號就是對應著中斷向量表的位址,而每個中斷向量表位址內,就是存放這個中斷事件處理程式(中斷服務常式)的記憶體開始位址 。
slide105
使用的狀態、暫存器值、返回位址儲存
  • 當中斷事件發生,中斷要求ITR=1,指令執行完後發現有中斷要求,則先將INT=1以保護目前的狀態、暫存器值轉至中斷處理所使用的狀態、暫存器值,同時將返回位址儲存。
slide106
中斷服務常式在執行時的處理
  • 隨即讀取中斷序號,至中斷向量表找到中斷服務常式的開始位址,跳至中斷服務常式執行。
  • 而中斷服務常式在執行時,是不允許再有中斷要求的IEN=0(因為教學1號一次只處理一件中斷事件),同時ITR=0清除這次中斷要求,而每一個中斷服務程式在結束前,會釋放中斷允許IEN=1,讓其他的中斷事件能取得被服務的機會。
slide107
其他的中斷要求事件
  • 而同時或之後發生的中斷事件,必須不斷的提出中斷服務要求,等待IEN=1時取得執行其中斷服務常式。
slide108
中斷服務時原程式資料儲存的困難
  • 在中斷處理中有一個十分困難的問題,就是原程式要暫停轉到中斷服務常式執行時,必須先將程式的下一指令位址(返回位址)、狀態與暫存器儲存起來,等到中斷服務常式完成後,要再恢復原程式的執行狀態,繼續順利完成原程式的執行。
slide109
這個儲存的動作必須要做,否則中斷服務常式完成後,無法恢復原程式的狀態與暫存器值(因為中斷服務常式的執行,也會用到同樣的暫存器與狀態旗號),那原程式就無法繼續執行了。這個儲存的動作必須要做,否則中斷服務常式完成後,無法恢復原程式的狀態與暫存器值(因為中斷服務常式的執行,也會用到同樣的暫存器與狀態旗號),那原程式就無法繼續執行了。
slide110
問題是儲存狀態與返回位址還較容易,如果要將用過的暫存器都儲存入記憶體,然後在中斷服務常式執行完後,又從記憶體裡取出還原給暫存器,這在執行上非常浪費時間;尤其在目前多程式同時以分時系統執行,又共用多種外部裝置,以及程式使用的暫存器上百個的情況下,必將形成中斷要求十分的頻繁,這種情況會嚴重影響程式執行的效率。問題是儲存狀態與返回位址還較容易,如果要將用過的暫存器都儲存入記憶體,然後在中斷服務常式執行完後,又從記憶體裡取出還原給暫存器,這在執行上非常浪費時間;尤其在目前多程式同時以分時系統執行,又共用多種外部裝置,以及程式使用的暫存器上百個的情況下,必將形成中斷要求十分的頻繁,這種情況會嚴重影響程式執行的效率。
slide111
狀態暫存器
  • 因為要處理執行中斷服務常式時,所要儲存的狀態、暫存器與返回位址,一般的設計首先是將各種狀態組合成單一狀態暫存器,如將教學1號的各種控制狀態,組合成一個狀態暫存器,以便利以暫存器方式做儲存與恢復。
slide113
返回位址的保存
  • 其次是返回位址(下一指令位址),即PC值的儲存,因為中斷處理與呼叫副程式的動作很相似;即離間原程式,執行完中斷服務常式後,再回到原程式,所以中斷處理時PC值如同呼叫副程式的動作,將其存入堆疊中,待要回原程式時,再從堆疊中取出返回位址。
slide114
INT位元
  • 在中斷處理時微運算,有一個明顯的切換標示,即INT位元;當進入中斷服務常式時設定INT=1,而執行完成中斷服務常式後設定為INT=0;其主要是標示正在執行中斷服務常式。
slide115
中斷的指令執行
  • 若使用資料儲存式與中斷系統式,在暫存器與狀態位元(狀態暫存器)的轉換過程是不同的,現以ADD指令來介紹執行上的差異。