冯·诺依曼计算机基本概念
本文中的内存结构只是课程中用到的一个特定的机器的设计,并非所有的计算机都是这样的。
现在的计算机都是程序存储计算机,也就是冯诺依曼计算机。
特点:
- 计算机有五大部件组成:输入、输出、控制器(CU)、运算器(ALU)、存储器(主存、辅存)
- 指令和数据以同等地位存于存储器中,按地址寻访。
- 指令和数据按照二进制保存
- 指令由操作码和地址码组成(e.g 0001 00001000,0001代表读取,00001000代表要读取 数据在内存(寄存器)中的位置)。
- 存储程序,存储在存储器中。
- 以运算器为中心。
现代计算机:
- ALU + CU = CPU
- CPU + 主存(RAM\ROM\Cache(inter上cache有L1\L2\L3)) = 主机
- 输入 + 输出 + 辅存 = IO设备
- 主机 + IO = 计算机系统硬件
CU控制数据的读取+写入,操作的是存储器,还可以控制指令的执行顺序操作的是运算器。
如果以运算器为中心进行硬件设计会是的运算器成为系统的瓶颈(overhead)。所以改进成以存储器为中心,这样可以是的IO设备直接和存储器关联。
计算机解决问题的步骤:
- 建立数学模型
- 确定计算方法
- 编制程序:程序就是运算的全部步骤,指令就是每一个步骤。
计算机主要组成
存储器
存储器的组成由以下:
- 存储体: 大楼->若干房间->如果床位
- 存储单元:房间
- 存储原件:床位,本质就是0/1了
- 存储单元:存放一串二进制代码
- 存储字:存储单元中二进制代码的组合
- 存储字长:存储单元中二进制代码的位数
- 每一个存储单元都有一个地址,通过地址进行访问。存储单元保存的可以是数据,也可以是指令。
- 存储单元:房间
- MAR:存储器地址寄存器,保存存储单元地址或编号。反应存储单元个数。
- MDR:存储器数据寄存器,要保持到存储体的数据,或者刚刚从存储体取出的数据。反应了存储字长。
- 存储体: 大楼->若干房间->如果床位
硬件结构
运算器
- 在我理解中运算器是真正进行数据计算的地方,都是采用二级制的加减乘除。具体实现应该是数字电路方面的知识了。
- 对于不同的运算,在指令执行过程中使用到的寄存器数量不同。比如加减法是不需要MQ(乘商寄存器,multiplication & quotient的缩写)的。
- ALU:运算器核心
- ACC:累加寄存器
- X:保存数据的寄存器
- MQ:乘商寄存器
控制器
功能:
- 解释指令
- 保证指令的按序执行
解释指令过程,也是一个指令的执行过程:
- 取指令:从内存单元中取指令。→ PC
- 分析指令:把操作码部分送到控制单元进行分析 → IR
- 执行指令:控制单元控制相应的执行部件来执行操作 → CU
硬件结构
- PC:程序计数器:寄存器,存放当中要执行的指令的地址,具有计数功能(PC)+ 1-> PC,(类似指针操作)
- IR:指令寄存器,存放当前要执行的指令。控制单元从IR中取出操作码进行分析。
- CU:发出控制信号
- 所以控制器的执行顺序是:CU(不确定,因为没有讲清楚)从PC取当前要执行指令的地址,根据地址找到指令后存到IR,CU分析指令后得到操作码,然后执行。PC++后就是到了下一条指令的地址,然后继续之前的操作。
存储器、运算器和控制器是如何协作的
取数例子
- PC中保存着指令的地址,将地址放入MAR。
- 用MAR中的地址从存储体中得到指令(操作码+操作数据地址码)
- 将得到的指令放到MDR
- 将指令从MDR放到IR
——————–取指令结束——————–
- IR将操作码送到CU,CU译码,开始操作元器件。
- IR中地址码送到MAR,这个地址码就是我们真正要操作的数据。
- MAR从存储体取到数据
- 数据保存到MDR
- MDR讲输入送到ACC
——————–整个操作结束——————
- NOTE: 在这个图中没有体现的是如何将最初的取值指令地址放到PC中
存数例子
- PC中保存着指令的地址,将地址放入MAR。
- 用MAR中的地址从存储体中得到指令(操作码+操作数据地址码)
- 将得到的指令放到MDR
- 将指令从MDR放到IR
——————–取指令结束——————–
- IR将操作码送到CU,CU译码,开始操作元器件。
- IR中地址码送到MAR,这个地址码就是我们真正要操作的数据。
- MAR将地址告诉存储体,这个数据要存起来
- ACC中的数据保存到MDR
- MDR将数据放到存储体
——————–整个操作结束——————
计算机执行程序的过程
- 这里就回答了之前的问题,在程序被输入到计算机的内存后,第一个指令的地址会被放入到PC中。在指令执行的过程中,PC+1操作使得能够不断的执行新的指令。
延展阅读
主存、副存、内存、外存
存储器是计算机的重要组成部分,用于存储程序与数据,可分为:计算机内部的存储器(内存储器,简称内存)、计算机外部的存储器(外存储器,简称外存)
一般来说,主存指的是内存;但是在一些专业性较强的场合,主存与内存还是有一定区别的。内存储存器还有其他形式。而外存指的是辅存,比如硬盘、U盘、光盘及软盘等。
cpu中的存储器和主存是两个概念。处理器需要自己的内存储器,它们以寄存器的形式存在。
内存:
内存又称主存,是CPU能直接寻址的存储空间,它的特点是存取速率快。内存是电脑中主要部件,它是相对于外存来说。
内存一般采用半导体存储单元,包括随机存储器(RAM)、只读存储器(ROM)和高级缓存(Cache)。
RAM(Random Access Memory):
高速存取,支持读写数据,读写时间相等,且与地址无关,但是断电后其中的数据会丢失。
ROM(Read Only Memory):
断电后信息不丢失,如计算机启动用的BIOS芯片。存取速度很低,(较RAM而言)且不能改写。由于不能改写信息,不能升级,现已很少使用。
Cache:
介于CPU与内存之间,常用有一级缓存(L1)、二级缓存(L2)、三级缓存(L3)(一般存在于Intel系列)。它的读写速度比内存还快,当CPU在内存中读取或写入数据时,数据会被保存在高级缓冲存储器中,当下次访问该数据时,CPU直接读取高级缓冲存储器,而不是更慢的内存。
外存:
外储存器是指除计算机内存及CPU缓存以外的储存器,此类储存器一般断电后仍然能保存数据。外存需要通过I/O系统与之交换数据,又称为辅助存储器。常见的外储存器有硬盘、软盘、光盘、U盘等