摘要:該文提出在計算機原理的教學中引入模型機的概念,即對實際計算機進行最大化的簡化。并根據計算機組成原理與計算機工作原理,從硬件到軟件、從宏觀到微觀、從靜態到動態,完整地系統地展示了基于PC結構的模型計算機的設計與實現過程,真正地從理論與實踐的結合上揭示了計算機內部的秘密。
關鍵詞:模型機,硬件結構,軟件編碼,程序控制,時序控制
中圖分類號:TP301文獻標識碼:A文章編號:1009-3044(2008)34-1810-03
The Design and Realization of the Model Computer Based on PC Structurer
LI Ming
(Shanghai Luwan Area Spare-time College, Shanghai 200020, China)
Abstact: This paper imports the idea of the model PC in the teaching of the principle of the computer, i.e. make the real computer to simplest in most,and then according to the theory of PC how to composed and how to working,from hardware to software,from macrosopic to micrisopic,from stativ to dynamic,comletly show the course of design and realization in model computer based on PC structure,thus really make known the secret within PC on the combinition the theory and the practice.
Key words: model computer (or Model PC); hardware structure; software coding;programe control; control in sequence
1 引言
1.1 模型計算機概念的引入
多年來,計算機一直沿著高速度、大容量、多媒體和網絡化的方向發展,其硬件與軟件也日益復雜化、多樣化。這給計算機原理的學習帶來一定的困難。因此,在計算機原理的學習中引入模型計算機的概念是完全必要的。
所謂模型計算機(以下簡稱“模型機”),并不是一臺有實際使用價值的計算機,它是實際計算機的簡化和抽象,并用計算機編程語言設計而成的一臺虛擬機,即它是一臺邏輯的計算機而不是一臺物理的計算機。它可以展示在計算機顯示器上,由用戶自己動手操作,并直觀動態地顯示其運行過程。其目的是為學習計算機原理提供方便。它的復雜程度可由學習的需要及實現的條件由設計者決定。
本文為了突出計算機組成中最重要的部分,對實際的計算機作了最大的簡化和抽象,所設計的模型機僅僅包含CPU與內存這兩大主機部件,輸入設備暫無,輸出設備僅僅包括數碼顯示器LED。使硬件系統達到最簡化。同時,它的軟件也僅僅包含送數、加法、減法、顯示和停機五種指令功能,而沒有操作系統。使軟件系統也達到最簡化。然而,麻雀雖小,五臟俱全,PC機結構中的接口、總線、時鐘和啟停按鈕等卻一個也沒有省缺。
通過模型機原理的直觀動態演示,可以深刻地理解計算機的組成原理和計算機工作原理,為學習和理解其他的計算機專業知識打下基礎。
1.2 模型機的界面與功能
模型機的界面如圖1所示。
模型機的功能:中央處理器CPU 能識別并執行送數、加法和停機等五種指令;存儲陣列PROM有16個存儲單元,字長8位;控制器CON在指令信號和時序信號的共同作用下能夠產生12種控制信號;使得模型機能夠運行直線結構的簡單程序并輸出運算結果。
模型機還具備計算機原理等課程的學習與教學的輔助功能。
2 模型機的硬件組成
2.1五大基本部件
根據馮·諾依曼的計算機組成原理,模型機中五大基本部件的內部組成設計如下:
1) 運算器:包括數據寄存器DR,累加器A,算術邏輯單元ALU。
2) 控制器:包括指令寄存器IR,程序計數器PC,控制單元CON。
3) 存儲器:包括地址寄存器AR,存儲陣列PROM。
4) 輸入設備:暫無。
5) 輸出設備:包括數碼顯示器LED。
2.2 PC結構部件
根據PC機的結構及組成特點,模型機還應設計如下部件:
1) 輸入輸出接口:輸出寄存器O。
2) 總線:8位雙向公共總線BUS。
3) 時鐘:CLK。
4) 按鈕:啟動開關RUN,復位開關RESET。
以上五大基本部件和四大PC結構部件,組成了模型機身體的各個“器官”。這就是基于PC結構的模型機的硬件組成設計。
模型機各部件的內部組成及功能如表1所示。
3 模型機的軟件編碼
3.1 指令格式
模型機的指令格式設計為字長8位。具體如下:
■
其中:操作碼是指令的二進制形式,它確定指令的操作類型;
地址碼是存儲單元編號的二進制形式,它確定指令的操作對象,即數據的存放地點。
操作碼(4位),從0000→1111,可以編碼16種不同的操作類型。
地址碼(4位),從0000→1111,可以編址16個不同的存儲單元。
3.2 指令編碼
指令系統是CPU所能執行的全部指令的集合,它體現了CPU的功能。模型機的指令系統設計支持以下五種指令,它們的功能與具體編碼如表2所示。
表中:A 是累加器, Mi是存儲單元,O是輸出接口。
3.3 地址編碼
模型機的存儲陣列PROM設計支持16個單元,字長8位,共16 個字節(Byte)。
存儲陣列的具體編碼設計如表3所示。
3.4 數據編碼
模型機字長8位,可以表示的數值范圍為從00H到FFH(即0到255)。數值數據的具體編碼為二進制00000000B 到11111111B。將計算機運行所需的指令、地址和數據全部都表示成二進制編碼,這就是模型機的軟件編碼設計。
4 模型機的程序控制
4.1 程序編制
計算機能夠自動高速運行的原因之一,在于其程序控制原理,即計算機是按照人們預先編制好的并預先存放在存儲器中的運算程序(即算法步驟)逐條地執行指令,最后輸出運算結果。
模型機僅設計16個存儲單元,無法實現復雜的運算和程序,只能運行順序結構的僅含幾個操作數的加減運算的簡單程序。
模型機中設計的算例是:12H+54H-36H
其算式可表達為:A=M9+MA-MB
上式中:M9,MA,MB單元分別存儲12H、54H和36H這三個操作數,A是累加器。
由于程序運行時,每條指令只能執行一個運算,因此,必須將以上一個算式編寫為多條指令的序列即程序。具體操作步驟為:
M9→A ;A=12H
A+MA→A ;A=12H +54H =66H
A-MB→A ;A=66H -36H =30H
再加上運算前的取數,和運算后的輸出、停機,這樣就構成了一個雖然簡單但卻完整的模型機的應用程序。這樣,計算機按照程序的規定,分步順序執行指令,從而實現計算機的自動高速運行。
4.2 程序存儲
計算機能夠自動高速運行的另一原因是,在于其程序存儲原理。描述解決應用問題的算法步驟即程序,和運算所需的原始數據,必須預先按序連續地存放到計算機的存儲單元中,計算機啟動運行以后,從存儲陣列中按序逐條提取程序中的指令并執行之,而不再需要人的手工干預操作。
模型機的存儲陣列在設計使用上分為程序區、數據區和空閑區三部分,見表4。
表中:M0到M4為程序區;
M9到MB為數據區;
M5到M8,MC到MF為空閑區,* 可取任意數。
程序必須“預先設計”與“預先存儲”,計算機啟動后,由程序對計算機的運行過程進行控制而不需人工干預。這就是馮?諾依曼計算機的程序控制與程序存儲原理。
4.3 程序運行
程序運行是計算機從存儲陣列中依序提取指令并進行譯碼和執行,直到存儲陣列中最后一條指令為止。簡言之,程序運行就是程序中多條指令的運行過程。而每一條指令的運行過程是相同的。
按照模型機的指令格式,每條指令由操作碼和地址碼兩部分組成。因此,模型機每一條指令的具體運行過程分為:取指令地址、按址讀取指令、程序計數器PC+1、取地址(即從指令碼的后半字節截取操作碼,得到操作數的地址)、再按址讀取操作數、然后按不同指令的操作碼執行該指令所規定的運算或操作。其中,每條指令的取指過程大都一樣,而執指過程卻因指令而各不相同。
模型機中,當前正在執行的指令的地址,由程序計數器PC(ProgrameCounter)記載。每執行一條指令,程序計數器就加1,以指向下一條待取指令的地址。
周而復始地提取指令并執行指令,直至停機指令而程序運行結束。這就是計算機的程序運行原理(或稱為計算機的工作原理)。
4.4 指令運行
如上所說,指令運行的每一個步驟就是指令節拍,一條指令的運行過程是由多個指令節拍操作所組成。即一條指令在運行過程中的不同步驟都是在相應的時鐘節拍內完成。
模型機設計的指令節拍為T0到T5,共6個節拍。
各節拍的作用如下:
T0節拍:取指令地址,即PC→MAR;
T1節拍:按址取指令,即PROM→IR;
T2節拍:程序計數器加1,即PC+1→PC;
T3節拍:取地址碼,即IR→MAR,或A→O;
T4節拍:按址取操作數,即PROM→A,或PROM→B;
T5節拍:操作數運算,如A+B→A,或A-B→A。
模型機的指令節拍詳見表5。
程序編制、程序存儲、程序運行和指令運行,這些就是模型機的程序控制設計。
5 模型機的時序控制
模型機內部有三類信息:即指令如ADD,地址如M9,數據如12H。它們分別按照時鐘節拍信號的節奏在作有序流動。這都有賴于控制單元所發出的控制信號的作用。控制信號決定了何時何指令作何節拍操作,它由各指令信號與各節拍信號經過復雜的邏輯組合而產生。
1) 指令信號LDA/ADD/SUB/OUT/HLT:為模型機規定當前指令的操作類型,通過截取指令寄存器IR的高四位,得到指令的操作碼,即指令信號。各指令的信號電平同前3。2節指令編碼表中的操作碼。(此處,1代表高電平,0代表低電平)
2) 節拍信號T0/T1/T2/T3/T4/T5:為模型機提供統一的定時,規定當前指令的當前操作步驟,可由一個字長6位的循環移位寄存器產生。各節拍信號的信號電平如表6。
3) 控制信號CON:按照指令功能與節拍時序,為模型機的各個部件適時地發出相應的控制信號。模型機的控制信號由各指令信號與各節拍信號經邏輯組合產生。
模型機的控制信號共12位:
CON=CpEpLmErLiEiLaEaSuEuLbLo
控制信號各位的作用及形成方法如表7。
表7中,E表示部件數據送到總線BUS上(Enable 見Ep,Er,Ei,Ea ,Eu);
L表示總線BUS上數據送到部件(Load,見Lm,Li,La,Lb,Lo);
S表示減法(Sub,有Su=1 與Su=0兩種情況);
C表示程序計數器計數(Count);
+ 表示邏輯或運算;
* 表示邏輯與運算。
各腳標分別代表相應部件。
模型機的控制器實際上是一個組合邏輯電路部件,根據邏輯關系用與門、或門、非門等邏輯部件不難實現。控制器是模型機的核心部件,也是模型機從邏輯設計到物理實現的轉換樞紐。
指令信號、時序信號并由此產生模型機的控制信號,這些就是模型機的時序控制設計。
6 模型機的實現
1) 程序界面(見1.2節插圖)。
2) 程序代碼框架。
存儲陣列PROM內程序與數據初始化 ;程序啟動時加載數據(下轉第1824頁)
(上接第1812頁)
For M = 0 to 15 ;外循環:從存儲單元M0到MF,依地址提取指令
取一條指令
For T = 0 to 5 ;內循環:從時序節拍T0到T5,依節拍執行指令
Select caseT
Case0 :PC?Bus;時序T0到T2各指令操作相同
Case1: Bus?MAR
Case2: PC+1?PC
Case3 To 5: ;時序T3到T5各指令操作不同
Select case 指令
CaseLDA:callLDA
CaseADD:callADD
CaseSUB:callSUB
CaseOUT:callOUT
CaseHTL:callHTL
End Select
End Select
Next T
Next M
7 模型機的設計與實現小結
7.1 模型機主機的設計與實現
模型機的設計與實現,需要考慮和處理許多技術難題。為了突出重點、抓住難點,本文主要從邏輯上而非物理上入手,從主機入手而暫不涉及部件設計與外設接口設計。
本文模型機的具體設計與實現,涵蓋了基于PC結構的馮·諾依曼計算機的諸多方面,通過模型機的完整而系統的設計與實現,從硬件到軟件、從宏觀到微觀,再由靜態到動態等不同角度,真正從理論與實踐上闡明了計算機的軟硬件系統組成、各部分工作原理以及時序上的相互配合。
7.2 模型機部件的設計問題
模型機各個功能部件電路上的具體物理實現,這雖然屬于數字電路技術的范疇。但如能深入功能部件電路的設計,對于模型機部件工作原理的透徹理解將大有幫助。
7.3 模型機外設接口的設計問題
為了降低對計算機結構的復雜性和微觀工作原理的理解難度,模型機主要突出了計算機的主機部分,即CPU+內存這部分,而未涉及模型機主機與外部設備之間的數據傳輸,而這些內容應該屬于計算機接口技術的范疇。如能包含外設接口的設計,模型機結構上將更加完整。
因此,完整意義上的模型機設計與實現,擬應包括模型機部件、模型機主機和模型機接口這樣前后關聯而又互相銜接的三個部分。
參考文獻:
[1] 鄭學堅.微型計算機原理及應用[M].北京:清華大學出版社,1995.
[2] 王榮良.微機原理與接口[M].上海:上海市電視中等專業學校,1996.
[3] 王克己.Visual Basic 4.0 參考手冊[M].北京:人民郵電出版社,1997.