
第8章 冯-诺依曼模型.ppt
71页第八章 冯·诺依曼(Von Neumann)模型,存储程序计算机模型,第七章,判定元件和存储元件 基于约翰·冯·诺依曼(John Von Neumann)提出的存储程序计算机模型 ——现代计算机的构建思想,存储程序计算机模型,1943: ENIAC 十进制,电子管…… 硬连线程序 – 设置开关 1944: EDVAC开始研制 Electronic Discrete Variable Automatic Computer,电子离散变量自动计算机 程序存储于memory之中 1945: John von Neumann First Draft of a Report on EDVAC, 关于EDVAC的报告草案,,John von Neumann,(1903~1957),出生于匈牙利,20世纪最杰出的数学家之一 在计算机科学、经济、物理学中的量子力学及几乎所有数学领域都作过重大贡献,,,冯·诺依曼模型,由指令组成的程序和程序所需的数据位于存储器中 指令的执行由处理单元完成 指令执行的顺序由控制单元来控制 输入设备将程序和所需的数据送入计算机之中 输出设备将执行结果送出计算机之外 注意:处理单元和控制单元是CPU的主要组成部分,,,存储器,处理单元,ALU,Reg,输出设备 *显示器 *打印机 *磁盘,输入设备 *键盘 *鼠标 *扫描仪 *磁盘,控制单元,PC,,,,,,,,,,,CPU,,,,,存储器,能够存储信息的二维阵列 每一行,存储单元(Memory Location) 可使用一个唯一的标识符进行识别,地址 包含一定大小的内容 指令 数据,地址和内容,,,,,,,,x0000 0000,x0000 0001,……,x4000 0000,x4000 0001,……,x4000 0002,x4000 0003,,xFFFF FFFF,……,……,,,x4000 0003,x0000 0001,x1000 0000,x1100 0001,存储器,232×8位,一共有232个存储单元,每个存储单元可以存储8个比特 有232个不同存储单元的地址空间和8位的寻址能力,可称为4G字节(缩写为GB)的存储器 要确定232个地址,就必须使用32位二进制数表示,处理单元,计算机里信息的处理是由处理单元执行的 现代计算机的处理单元可以包含许多复杂的功能单元,每个都能够执行一个特定的运算(除法,平方根等) 最简单的单元ALU(Arithmetic and Logic Unit,算术和逻辑单元),寄存器堆/文件,Reg ALU附近,临时存取数据 例如,计算(A+B)×C,先在存储器中存储A+B的结果,随后读取出来,再和C相乘 访问存储器的时间远长于执行加法或乘法的时间 使用临时存储空间存储A+B的结果,字,ALU正常处理的信息量的大小通常被称为计算机的字长(word length),每一个元素被称为一个字(word) 取决于计算机的不同用途,每一个指令集结构都拥有自己的字长 Intel的Pentium Ⅳ处理器,32位 Sun的SPARC-V9和Intel的Itanium处理,64位,寄存器堆/文件,典型的寄存器的大小是和ALU处理的值的大小一样 每个寄存器都包含一个字,控制单元,处理单元负责“执行信息的实际处理”,而控制单元则是“指挥信息的处理” 其具体工作包括: 在执行程序的过程中,跟踪存储器中的指令 在处理指令的过程中,跟踪指令的处理阶段,PC,跟踪存储器中的指令,确切地说是跟踪要处理的下一条指令 为了跟踪哪一条指令是下一步要运行的,控制单元有一个用来容纳下一条指令所在地址的寄存器——“程序计数器”(Program Counter,简称PC)/ “指令指针”,控制器,控制单元可以是多个控制器,分别从属于各个部件 ALU控制器用于控制ALU执行何种运算 对于输入和输出则有专门的I/O控制器 ……,输入/输出设备,要使计算机处理信息,信息必须被送入计算机中 为了能够使用处理后的结果,它必须能以某种形式显示在计算机以外 为输入和输出的目的而出现的设备在计算机术语中被称为外围设备(peripherals),输入/输出设备,外围设备(peripherals) 键盘——输入;监视器(显示器)——输出 输入:鼠标,数字扫描仪、磁盘 输出:打印机,磁盘,DLX数据通路,一个采用总线结构、多时钟周期的实现方案 两端都有箭头的粗黑线结构代表数据通路的总线 可用于存储器与处理器之间的通信,也可以用于处理器与I/O设备之间的通信 主要优点是功能多、成本低,主要缺点是会产生通信瓶颈,,,,,,,,GateMDR,,,32,,,,GateALU,,32,,,,,存储器,,,,输入,输出,,,,,,,,,GatePC,,,32,,,32,,控制单元,处理单元,DLX总线,DLX的总线由32根线和相关的电子元件组成 允许将32位信息从一个组件传输到另一个组件 在总线上一次只可传输一个值 每一个提供数据给总线的组件在它的输入箭头后都有一个三角形(称为三态设备),使计算机的控制逻辑一次只允许一个提供者能提供信息给总线 从总线获得数据的组件通过将LD.x(加载使能)信号设为1(回忆门控锁存器),从而得到信息,存储器:MAR和MDR,如果要读出某个存储单元中的内容,首先把它的地址存入地址寄存器(MAR),然后查询存储器,该地址所对应的存储单元的内容将会输出到数据寄存器(MDR)。
如果要写一个值到存储单元中,首先要把目的地址存入MAR,把值存入MDR中,然后设“写使能”信号为1,查询存储器,MDR里的信息就会被写到MAR中的地址所对应的存储单元里MAR和MDR,MAR:32位,反映了DLX的存储器的地址空间是232个存储单元 MDR:32位,而DLX是字节可寻址的,即每个单元包含8位,因此在大多数情况下,MDR包含了从MAR中的地址开始的4个连续单元的数据,有时,则包含的是MAR所指的单元中的数据(8位)符号扩展的结果(32位),处理单元,ALU和寄存器堆 ALU可以做加法、减法、乘法、除法、与、或、异或、比较、移位等运算 32个整数寄存器、32个浮点寄存器 DLX子集 未包括整数乘法、除法及浮点数运算等操作,也未包括浮点寄存器,控制单元,最重要的组件是有限状态机,它指挥所有行为 有限状态机的一个输入是CLK,它说明了每个时钟周期持续的时间 为了跟踪指令的处理阶段,控制单元还需要一个指令寄存器(Instruction Register,简称IR),用来保存正在处理的指令IR也是有限状态机的一个输入,因为要处理的DLX指令决定了计算机要执行的行为 程序计数器(PC) 记录了在当前的指令完成后,下一条要被执行的指令所在的地址,空心箭头,实心箭头表示沿着相应的通路流动的是数据元素 空心箭头表示控制数据元素处理的控制信号 有限状态机的所有输出都是空心箭头 控制了计算机的处理 LD.IR(1位),控制了当前时钟周期内,指令寄存器(IR)是否要从总线上加载新的指令 GateALU,决定ALUOut的值在当前时钟周期内是否被提供给总线,输入/输出设备,由键盘和显示器组成 最简单的键盘需要两个寄存器,一个数据寄存器(KBDR),用来保存由键盘键入字符的ASCII码,和一个状态寄存器(KBSR),用来提供键盘键入字符的状态信息 最简单的显示器同样需要两个寄存器,一个用来保存那些将被显示在显示器上的内容的ASCII码(DDR),另一个用来提供相关的状态信息(DSR) 第12章,指令处理,冯·诺伊曼模型的主要思想 把程序和数据都作为一个二进制序列存储在计算机的存储器里,在控制单元的引导下一次执行一条指令 指令在控制单元的指挥下以一种系统的方式被逐步处理,根据指令处理所需进行的操作,可以将一条指令的执行分解为一系列步骤,指令处理,多时钟周期的实现方案 指令的每一步将占用一个时钟周期,不同的指令可能被分解为不同的步骤,占用不同的时钟周期,“多周期”因此得名 在现代计算机中,时钟周期以纳秒(或称毫微秒,十亿分之一秒)为单位 比如,一个3.3GHz的处理器在1秒内有33亿个时钟周期,即一个时钟周期只需0.303纳秒,DLX指令执行阶段,按照DLX指令执行的步骤,将处理指令所需的操作划分为以下阶段(每条DLX指令需要其中的3到5个阶段): 取指令(Instruction fetch) 译码/取寄存器(Instruction decode/Register fetch) 执行/有效地址/完成分支(Execution/Effective address/Branch completion) 访问内存(Memory access) 写回(Write-back),指令,计算机处理的最基本单位 计算机程序包含了一组指令,每条指令都是由一个位序列表示,并且整个程序被存储在计算机的存储器中 由两个部分组成:操作码(指令执行的内容)和操作数(要操作的对象) DLX子集指令,由32 位(一个字)组成,从左向右依次编号为bit[31]…bit[0],DLX ADD指令,需要三个操作数:两个源操作数(待加的数据)和一个目标操作数(在加法执行后要存储的和) 格式: 两个源操作数:包含在寄存器中的值 加法的结果:放入32个寄存器的某一个 32个寄存器:需要5位确定每一个 教材订正:R6错了,,bit[31:26]:000000——R类型 bit[5:0]:要执行的函数,000001,是加法操作 bit[15:11]:存储的结果所在的位置,R6 bit[25:21]和bit[20:16]:存储两个源操作数的寄存器,R2和R6 “将R2(寄存器2)和R6里的内容相加,结果存回R6里。
DLX LW指令,L代表加载(Load,读存储器中的值,写到寄存器中),W代表字 “进入指定的存储单元,从该单元开始,读取连续4个存储单元里面包含的值,结果存入一个寄存器里” 需要两个操作数: 从存储器读出的值和目标寄存器,,bit[31:26]:011100,是I类型的LW指令 bit[20:16]:指令执行结束后从存储器里读出的值将存入的寄存器 bit[25:21]和bit[15:0]:用来计算出要读取位置的地址 将bit[15:0]里的二进制补码整数符号扩展为32位,再与bit[25:21]表示的寄存器里的数值相加,结果即为地址 “基址+偏移量”寻址模式 “将R3里的内容同数值6相加,构成一个存储单元的地址,从该单元开始,读取连续4个存储单元里面包含的值,并加载到R2里 寻址模式:计算将要读取的存储单元的地址的机制,DLX BEQZ指令(第九章),B代表分支(Branch),EQ代表“相等”,Z代表“零” “判断某个寄存器的值是否为零,如果等于零,PC就被某条指令的地址加载” 需要两个操作数: 寄存器,某条指令的地址,BEQZ,,bit[31:26]:101000,是I类型的BEQZ指令 bit[25:21]:存储源操作数的寄存器 bit[15:0]:用来计算出指令地址的值 将bit[15:0]里的二进制补码整数符号扩展为32位,再与PC里的数值相加,结果即为地址 PC+SEXT(IR[15:0]) “判断R3里的值是否为0?如果R3的值为0,PC就被计算得到的地址加载;如果R3的值不为0,PC保持不变”,1、取指令阶段,从存储器中获得下一条指令,放在控制单元的指令寄存器中 为了执行下一条指令的任务,必须先确定它位于哪里 程序计数器(PC)包含着下一条指令的起始地址(DLX指令由32位组成,需要4个连续的存储单元),,,,,,GateMDR,,,32,,,GateALU,,32,,,,存储器,,,,输入,输出,,,,,,,,,GatePC,,,32,,,32,,控制单元,处理单元,,PC,,,取指令阶段步骤(1),MARPC MDRMem[MAR] IRMDR,,,,,,,,32,,,GateALU,,,输入,输出,,,,,,,,,GatePC,,,32,,控制单元,处理单元,,IR,,,LD.IR,,PC,,,,,,G。












