冯·诺依曼机原理的教学研究与应用
第27卷
第10期
计算机工程与设计
2006年5月
V01.27
NO.10
ComputerEngineeringandDesign
May2006
冯.诺依曼机原理的教学研究与应用
刘乃文
(山东师范大学信息科学与工程学院,山东济南250014)
摘要:经过对冯・诺依曼原理的深入研究,设计了一个冯・诺依曼计算机模型,详细描述了该模型机的核心部件功能和指令系统,并结合一个具体的例子给出了冯・诺依曼机进行运算的完整流程。以此生动形象地阐释计算机的各个组成部分和存储程序工作原理。为计算机工作原理的教学提供一个良好的CAI模型,使得初学者能够从理性和感性角度更为深刻地掌握计算机工作原理。
关键词:冯-诺依曼;存储程序;模型机;指令系统;CAI
中图法分类号:TP393
文献标识码:A文章编号:1000.7024(2006)10—1831—04
TeachingresearchandapplicationofNeumancomputertheory
LIUNai.wen
(School
ofInformmionScienceandEngineering,ShandongNormalUniversity,Jinan250014,China)
Abstract:Based
on
carefulstudyofJohnVonNeumancomputertheory,aJohnVonNeumancomputermodelisdesigned.Themain
partsfunctionsandtheinstructionrepertoireare
depictedindetail.AnentiredworkflowaboutNeumancomputerisdescribedby
a
specific
example.Thefunctionsofthemodelcomputerpartsandthestorageprogramtheoryare
expatiatedvividlyto
ensure
thebeginner
can
comprehendcomputerworktheoryde印lyintheperceptualandtherational.Thismodelisusedasa
goodCAImodelintheteachingof
computerworktheory.
Keywords:JohnVonNeuman;storage
program;model
machine;instructionrepertoire;computer-aidedinstruction
0引言
目前我国高等院校乃至中小学都在广泛开展计算机基础知识教育,而计算机的工作原理是计算机基础知识中最重要的内容之一。因此,学好计算机的工作原理(即冯・诺依曼机的工作原理)对于学生从根本上理解计算机的组织结构模型和运算过程至关重要。但是一直以来,在计算机基础知识教学实践中,冯・诺依曼计算机工作原理的讲解都停留在由计算图1
冯・诺伊曼计算机的经典框图
机5个组成部分加上简单的连接构成的一个原理图(如图1所示)中。虽然该图非常经典,但是不够生动和形象,学生仅以下几点Ⅲ:①信息如何表示;以何种形式表示信息(穿孔、磁仅简单的掌握了计算机的工作流程,对计算机的工作原理停记录或电信号等),数据信息采用何种格式(数制、编码、指令
留在一个相对肤浅的认识层次上;专业的学生往往都是在学格式或语言等);②信息如何存储;③信息的变换;输入设备如
习了微机原理及汇编语言后才能更深刻的掌握计算机的工作何将程序信息变换为计算机能识别的信息形式;输出设备如原理,而这对于非计算机专业的学生是不现实的。鉴于此,设
何将计算机内的结果变换为操作员所能识别的形式;④信息计了一个模拟的冯・诺依曼计算机,以此生动形象地阐释计算
的传送;外围设备与主机之间、主机内部CPU与存储器之间机的各个组成部分和存储程序工作原理,为计算机工作原理以及CPU内各寄存器之间信息是如何传送的;⑤信息的加工的教与学提供一个良好的CAI实验工具,使得计算机原理的处理;一台计算机有哪些运算部件,能完成哪些基本的算术和初学者能够从理性和感性角度更为深刻的掌握计算机的工逻辑运算,是如何完成这些运算的,又如何以这些基本的处理作原理。
能力为基础,在软件的支持下完成更复杂的加工处理任务;⑥对计算机的基本功能是对信息进行处理,计算机的整个工上述过程的控制。计算机以什么形式表示它的各种控制命令信作过程可以归结为信息在计算机内的流动。其功能可归纳为息,如何有序地发出这些控制命令以协调各部分的工作。
收稿日期:2005—07.15。
作者简介:刘乃文(1971一),男,山东济南人,博士研究生,讲师,研究方向为计算机原理、计算机网络和网格计算。
万
方数据一1831—
1冯・诺依曼机原理
现代计算机都是冯・诺依曼(John.Von.Neurnan)结构的计算机。它的基本原理是“存储程序和程序控制”。也就是说,计算机的工作是在程序的控制下运行,而程序又是预先存储在计算机内的。更详细地说就是要利用计算机完成一项处理任务时,首先要把任务转换成程序,然后将程序存储在计算机的(内)存储器中,并命令计算机从程序的开始位置(某一条指令)开始工作,计算机的工作路线必须按照程序设计的路线进行,自动地执行并完成任务,直到结束的那条指令执行完为止。冯.诺伊曼机具有以下特点。1:①用二进制形式表示数据和指令。数据和指令都是由0和1组成的代码序列。②采用存储程序方式。这是诺伊曼思想的核心内容。它意味着事先编制程序,事先将程序(包括指令和数据)存入主存贮器中,计算机在运行程序时就能自动地连续地从存贮器中依次取出指令并且执行。这种工作方式称为控制流(指令流)驱动方式,即按照指令的执行序列,依次读取指令;根据指令所含的控制信息,调用数据进行处理。
由运算器、存贮器、控制器、输入设备和输出设备等5大部分组成计算机系统,并规定了这五大部分的基本功能。
2模型机设计
为了便于理解,从实际系统出发,设计了一个经过简化的8位微处理器系统的模型机。设计模型机框图如图2所示。
CBABDB
茹吉莽
一…一甲甲r一内总线一
{{i一
,圈器
图2简化的模型机结构
2.1部件设置
(1)累加器A是一个8位寄存器,用来存放操作数和运
算结果。它有两种功能:一是作为ALU的一个操作数输入端
(一般存放被加数);二是用于存放ALu的运算结果。
(2)算术逻辑单元ALU它根据指令操作码来执行相应的运算。(3)通用寄存器R又称数据寄存器,用来暂时存储参加运算的操作数、中间结果或地址,作为演示,此模型机仅设一个数据寄存器。
(4)标志寄存器FR用来保存ALU操作结果的特殊状态,这种状态作为判断是否控制程序转移的条件。①进位标志C(Carry)在进行算术运算时,如果运算结果的最高有效位产生进位或借位,则C=I,否则C=O。②溢出标志V(OverFlow)用作检测二进制补码运算过程中是否产生溢出以致使结果出错的状态标志。如果算术运算结果有溢出,则V=I,否则V=0。③零标志Z(Zero)如果运算结果的各位都为零,则Z=I;否则Z=0。一1832一万
方数据(5)程序计数器PC计算机运行时,通常按顺序执行存放
在存储器中的程序。先由PC指出要执行指令的地址,每当该
指令取出后,PC内容就自动加1(除转移指令外),指向按顺序排放的下一条指令的地址。在正常情况下,CPU按顺序逐条地执行指令。如遇到跳转指令,这些指令就把下一条指令的地址放入PC中。程序计数器PC的位数取决于微处理器所能寻址的存储空间。模型计算机中,内存储器的存储容量为256字节,故其PC只需8位。
(6)指令寄存器IR存放当前要执行的指令内容。它包括操作码和地址码两部分。
(7)地址寄存器AR存放要访问的主存地址,8位。(8)数据寄存器DR主存与CPU之间的数据暂存器。模型机的字长为8位,指令字长是8位,操作数字长是8位,采用定长指令格式。
2.2指令系统
作为计算机和人之间惟一的交互工具是“指令”,一种计算机所有指令的全体构成的集合称为“指令系统”。要求计算机做不同的操作要用不同功能的指令。人只有通过指令的方式才能向计算机“提交”操作任务。因此,指令或指令系统是人和计算机交互的一种最原始的语言,称为机器语言。指令系统反映了一台计算机能干哪些事,可看成是硬件与软件的结合点,它既是硬件设计的出发点,也是编制程序最基本的依据。
所谓指令是指能向计算机发出的、能被计算机理解的,使计算机能执行一个最基本操作的命令。每一条指令包含两方面的信息,一是表示“做什么”的操作信息(用特定的二进制代码表示),二是表示操作应处理的数据信息(用数据本身或数据在存储器中的地址表示)。前者称为“操作码”(Op…Ope—
rator
Code),后者称为“地址码”(AddressCode),
这种格式的指令称为单地址指令,即指令中只出现一个
地址。其它还有如二地址指令和三地址指令等。根据指令的功能归类,可将指令分成若干类。一般计算机包括如下几类指令:①算术运算类:执行加、减、乘、除等算术运算的指令类;②逻辑运算类:执行或、与、非、移位、比较等逻辑运算的指令类;③传送类:执行取数、存数、传送等操作的指令类;④程序控制类:执行无条件转移、条件转移、调用程序、返回等操作的指令类;⑤输入/输出类:执行输入、输出等实现内存和外部设备之间传输信息操作的指令类;⑥其它类指令:执行停机、空操作、等待等操作的指令类;等等。
我们将模型机指令格式分为双操作数指令、单操作数指令和跳转指令3类,如图3所示。
寄存器有A,R两个,在指令中用一位即可编码,可编码如下:A…一0R……一1
寻址方式:①寄存器寻址:操作数在寄存器中,根据寄存器可直接寻址操作数,编码为00;②立即数寻址:操作数在指令中,只允许传送数据到寄存器中,编码为Ol;⑨直接寻址:操作数在主存中,根据指令中给出的操作数地址可到主存中寻址,编码位10;④寄存器间接寻址:操作数地址存放在寄存器中,根据寄存器中内容可到主存寻址操作数,编码为11。
2.3操作类型
(1)传送指令。MOVE…操作码为00,用来预置寄存器或
根据标志寄存器的标志位V、z、c
篆IlL
来决定是否跳转
位
根据累加器和寄存器中数值是否相等来确定是否跳转
图3模型机指令格式
(2)加法指令。ADD…一加,操作码叭,不带进位加,为单(3)跳转指令。JUMP一一分为条件转移和无条件转移两Z=0V=0C=I时即进位C=I时跳转…一一JC,ADDRZ=0V=IC=0时即溢出位V=I时跳转…一JV,ADDRZ=IV=0
C=0时即全零位Z=I结果为零时跳转一一Jz,
Z=0V=0
C=0时为无条件跳转。一一JUMP,ADDR
规定跳转指令中跳转的地址为直接寻址,即要跳转的地跳转指令有两种:当IR5=0时根据标志寄存器中的各位
是否相等来决定是否跳转。
(4)输出。OUT-一操作码为11,将累加器、寄存器以及主存上的数据输出显示,寻址方式只有寄存器寻址和直接寻址两种。
(5)CPU操作指令。HALT-一一微处理器停止工作,编码为
1111111l。
模型机的指令系统详细设计。(1)在指令系统中,累加器A只有寄存器寻址一种方式。(2)对于那些在指令中没有设置的寄存器位,一律设为0。(3)11111111为特殊指令,令CPU停止数据处理。
(4)在传送类指令中,通过不同的寻址方式可实现寄存器(5)在加法指令中,累加器A是隐含的目的操作数存放地(6)在跳转类指令中,一律根据指令中提供的地址进行跳
万
方数据表1指令系统表
助记符
符号表示编码
字节
MOVEA.RA—R00000100lMOVE
A。(R)
A--(R)0000011l1MOVERAR—A001000001MOVE(R).A
(R卜一A001110001MOVEA.ADDRA-一(ADDR)00000010ADDR2MOVE
ADDR,A
(ADDR)--A00010000ADDR2MOVER,ADDR
R-一(ADDR)
00100010ADDR
2
MOVE(R),ADDR
设ADDRo=R,则(ADDlL)一(ADDR)
00111010ADDR2
MOVEADDRR
(ADDR)一R
00010100ADDR2
MOVE设ADDRo=R,则
ADDR,(R)
(ADDR)(ADDRo)
00010111ADDR
2
MOVEA,n
A・一n0000000ln2MOVERn
R・一n
0010000l
n
2
MOVE(R),n
设ADDR=R,则
000111001n2
(ADDR)一n
ADD
n
A+一A+n0100000ln2ADDR
A+-A+R
01000100
1
ADD(R)
设ADDR=R,则A—A+(ADDm
0100011l1
JCADDR若C=I则PC--ADDR10010001ADDR2JZADDR
若Z=I则PC--ADDR
10010010ADDR2ⅣADDR
若V=I则PC—ADDR10010100ADDR2JIJMPADDR
PC—ADDR
10010000ADDR2CJNE
R,ADDR若AoR则PC—ADDR
10110100ADDR
2oUTA
输出设备一A110000001OUTR输出设备一R
110001001OUTADDR
输出设备一(ADDR)
11000010ADDR
2HALl’
CPU停止操作
11111111
1
(7)在输出类指令中,寻址方式只有寄存器寻址和直接寻为了使学生更深刻的理解计算机的工作原理,设计的模操作要求:编程计算15H加上37H,结果存储到20H单元。(1)我们根据模型机的指令系统,选取适当的指令编程如下:
MOVEA,15H;把被加数取到累加器ADD
37H;把累加器内容和加数相加,结果仍然存放在
MOVE(20H),A;把累加器中的结果送到20H单元存放
OUT
A;把累加器内容传送到输出设备
HALT;停机
(2)把变成语言翻译成机器代码(二进制),通过指令系统第l条指令:
一1833—
存储单元内容,可实现寄存器存储器之间,寄存器之间信息传送。不允许两存储单元之间直接进行信息传送。
操作数指令,被加数和运算结果都存放在累加器中,只允许加数在寄存器中或者带立即数时才可进行该运算。
种,编码为10。
ADDR
址紧跟指令第一字节。
来决定是否跳转,当IR5一l时根据累加器和寄存器中数大小
转,即只有直接寻址一种方式。
址两种。
3模型机工作示例
型机以图形化方式演示计算机五大组成部件、存储程序原理以及二进制数据存储及其转换。我们以一个具体的程序编制和执行的实际例子来分析存储程序原理。
2.4指令系统表及说明
2.4.1指令系统表(见表1)2.4.2指令系统说明
之间、寄存器与主存之间实现数据传送,不允许向主存进行立即数传送。
址,并且加数只允许为立即数、寄存器直接寻址和间接寻址的操作数,不允许同主存上的数据进行直接操作。
3.1程序编制与存储
累加器中
表查表完成。
00000001
;MOVEA,n的操作码0001010l
;操作数15H的二进制代码
第2条指令:
01000001;ADDn的操作码
00110111
;操作数37H的二进制代码
第3条指令:
00010000;MOVE
ADDR,A的操作码
00100000
;操作数20H的二进制代码
第4条指令:11000000;OUTA的操作码第5条指令:11111111
:暂停机器运行指令
(3)程序存储。本程序5条指令共8个字节,假设把他们顺次存放在从00H开始的存储单元中。
3.2执行过程
程序按顺序方式执行,开始执行时,先把第1条指令的地址赋给程序计数器PC,本例中为00H,计算机开始取第1条指令,执行第一条指令;然后取第2条指令,执行第2条指令~…,直到遇到停机指令。
(1)取指令一的过程。QCPU把PC的内容00H传送到地址寄存器AR;@PC内容送入AR后,内容自动加一,变为01H;③AR把00H地址信号通过地址总线AB送到存储器,并经过地址译码器译码,选中00H存储单元;④cPu经控制总线发出“读”命令到存储器;@OOH单元的内容01H读出到数据总线DB上;⑥数据总线把读出的内容送至CPU的数据寄存器DR;⑦此时读出的为操作码,DB把数据送到指令寄存器IR,该指令经指令译码器译码后,发出所需要的控制指令。
指令译码后,判定示一条取操作数送累加器A的指令,操作
数放在第2字节,因此执行第1条指令,取出第2字节的操作数。
(2)执行指令1的过程。①cPu把程序计数器PC的内容01H送到地址寄存器AR;②PC内容送入AR后,内容自动加一,变为02H;@AR把地址信号01H通过地址总线送到存储器,经地址译码后选中01H单元;④cPu经过控制总线发出“读”命令到存储器;⑤所选中的01H存储单元内容15H被读到数据总线DB上;⑥数据总线DB把读出的操作数15H送到
DR;⑦该操作数按要求需要送到累加器A,因此数据寄存器
DR通过内部总线把15H送入A中。
(3)取指令2的过程。(①CPU把PC的内容00H传送到地址寄存器AR;②PC内容送入AR后,内容自动加1,变为03H;③AR把02H地址信号通过地址总线AB送到存储器,并经过地址译码器译码,选中02H存储单元;④CPU经控制总线发出“读”命令到存储器;⑤00H单元的内容41H读出到数据总线DB上;⑥数据总线把读出的内容送至CPU的数据寄存器DR;⑦此时读出的为操作码,DB把数据送到指令寄存器IR,该指令经指令译码器译码后,识别出该指令为加法指令。把A的内容作为第1操作数,第2操作数在指令第2字节中,因此执行第2条指令首先必须取出第2字节中的操作数,然后在算术逻辑单元ALU中做加法,最后把结果传送回A中。
(4)执行指令2的过程。(DCPU把程序计数器PC的内容03H送到地址寄存器AR;②PC内容送入AR后,内容自动加1,
变为04H;③AR把地址信号03H通过地址总线送到存储器,经地
址译码后选中03H单元;④CPu经过控制总线发出“读”命令到一1834一万
方数据存储器;⑤所选中的03H存储单元内容37H被读到数据总线DB上;⑥数据总线DB把读出的操作数37H送到DR;⑦读出的操作数送入ALu的一个输入端,A的内容作为ALU的另一个输入
端,ALU执行加法运算,结果存入累加器A。
前两条指令执行完毕后,结果存放在A中,系统接着按照上述类似的操作步骤执行第3条指令,把结果存放到指定的
20H单元。
3.3结果的存储与输出
执行完前3条指令后,加法的结果存放在累加器和20H单元中,然后执行第4条指令,把计算结果通过接口电路输送到某一外部设备,第5条指令经指令译码后判定为停机指令,系统停机,结束当前程序执行。
第4条指令的执行过程和前2条类似,取回的指令码COH经译码后确定为输出指令,系统会把累加器的内容写到指定的输出设备。
从这个程序的执行过程我们可以看出,计算机的执行过程实际就是在程序的控制下,自动地逐条地从存储器取出指令.>分析指令.>执行指令;再取下一条指令进行相同的操作,如此周而复始的执行指令序列,直到遇到停机指令为止。这就是冯・诺依曼的存储程序和程序控制的计算机基本原理。
4结束语
设计一个模拟的冯・诺依曼计算机,深入分析了冯・诺依曼机的组成及工作原理,并在CAI课件中给出了冯・诺依曼的主要功能演示,以此生动形象地阐释计算机的各个组成部分和存储程序工作原理。模型所包括的内容完善地体现了存储程序工作原理,易于理解,为计算机工作原理的教与学提供一个良好的CAI工具。
参考文献:
[1】王书增.计算机原理[M].北京:电子工业出版社,2003.【2】
俸远祯,阎彗娟,罗克露.计算机组成原理(修订本)[M】.北京:电子工业出版社,1996.[3]3
高建荣.基于微程序控制器的在线指令系统的设计[J】.计算机工程与设计,2004,25(12):2366-2368.[4】
徐惠民,安德宁.单片微型计算机[M】.北京:电子工业出版社,
1991.
[5】吕丽娟,丁毅民.浅谈计算机体系结构的发展[J】.计算机工程与应用,1999,(6):56.57.
【6】6是兆雄.从冯・诺依曼计算机到并行计算机【J】.自动化博览,1994,(3):7—9.
【7】王一宾,韩承双.计算机体系结构与软件体系结构[J】.安徽建筑工业学院学报,2005,13(1):74—77.
[8】潘名莲,马争,丁庆生.微计算机原理[M】.北京:电子工业出版社,2003.
[9]徐洁.计算机组成原理与汇编语言程序设计[M】.第2版.北京:电子工业出版社,2005.
[10】于英民.计算机接口技术[M].北京:电子工业出版社,2004.[11】曲英杰,刘卫东.可重构密码协处理器指令系统的设计方法[J].
计算机工程与应用,2004,(2):10.12.
冯·诺依曼机原理的教学研究与应用
作者:作者单位:刊名:英文刊名:年,卷(期):被引用次数:
刘乃文, LIU Nai-wen
山东师范大学,信息科学与工程学院,山东,济南,250014计算机工程与设计
COMPUTER ENGINEERING AND DESIGN2006,27(10)1次
参考文献(11条)
1.徐洁 计算机组成原理与汇编语言程序设计 20052.潘名莲;马争;丁庆生 微计算机原理 2003
3.王一宾;韩承双 计算机体系结构与软件体系结构[期刊论文]-安徽建筑工业学院学报(自然科学版) 2005(01)4.是兆雄 从冯·诺依曼计算机到并行计算机[期刊论文]-自动化博览 1994(03)5.吕丽娟;丁毅民 浅谈计算机体系结构的发展 1999(06)6.徐惠民;安德宁 单片微型计算机 1991
7.高建荣 基于微程序控制器的在线指令系统的设计[期刊论文]-计算机工程与设计 2004(12)8.曲英杰;刘卫东 可重构密码协处理器指令系统的设计方法[期刊论文]-计算机工程与应用 2004(02)9.于英民 计算机接口技术 2004
10.俸远祯;阎彗娟;罗克露 计算机组成原理 199611.王书增 计算机原理 2003
引证文献(1条)
1.杨磊.张超.梅杨杨.张伟国.黄勇.张学龙 便携式快速心电仪的设计与实现[期刊论文]-中国医疗设备 2010(8)
本文链接:http://d.g.wanfangdata.com.cn/Periodical_jsjgcysj200610039.aspx