冯诺依曼式计算机
EDVAC是世界上第一台存储程序计算机,成为所有现代计算机的原型和范本
一、技术特征:
- 6000个电子管
- 12000个二极管
- 功率56KW,重7850KG
- 占地45.5平方米
- 需要30个人同时操作
二、计算机的组成(五大部件)—相对独立又相互作用
- CPU:
1.控制器:统一指挥并控制计算机各部件协调工作
2.运算器:对数据进行算术运算和逻辑运算 - 存储器:存储待操作的信息与中间结果,包括机器指令和数据
- 输入设备
- 输出设备
1、计算机的命令是如何被执行的
1)计算机执行命令的过程
2)存储器
(1)内主要部件
寄存器:
1、工作速度与CPU运算部件节拍一致
2、一次存取数据大约花费0.x纳秒的时间
3、寄存器与运算部件直接对寄存器进行读写操作
4、寄存器制作成本高,一般CPU芯片中通常只配备少数寄存器
高速缓存(CACHE):
1、CPU内部的缓存叫内部高速缓存(internal cache)
2、主板上的缓存叫外部高速缓存(external cache)
3、通常又分为多级,不同级之间工作频率不同,一般在纳秒内读写一次
4、容量大小不同(nK–nM)
主存储器(内存储器-内存):
1、存放CPU中的运算数据
2、存放与硬盘等外部存储器交换的数据
3、临时存放,断电丢失
4、价格低、易更换
5、工作频率越来越接近CPU工作频率,但仍有差距
(2)CPU读取数据的过程
1、先从缓存中查找,找到立即读取
2、找不到,就用相对慢的速率从内存中读取并送给CPU处理
同时把这个数据所在的数据块调入缓存中
3、可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存
目的:尽量减少可能的“慢”的读取操作
(3)局部性原理
CPU对数据的访问通常具有一定局部性:
时间局部性:如果一个内存地址正在被使用,那么在近期他很可能还会再次被访问
空间局部性:在最近的将来可能用到的信息很可能是与当前使用的信息相邻的
So…多级缓存来加快速度
(4)存储器的工作(存储)原理
静态的RAM的六管基本存储单元
- 右边是高电位,那么左边就会联通,否则短路 T1和T2相当三极管,T3和T4相当于电阻。
- 如果A点是高电位,用1表示;如果B点是低电位,用0表示。那么A点能很好地促使B保持低电位。
- 当行选择线和列选择线都是高电位时,T5、T6、T7、T8都导通,A点或B的高电位或低电位就会被读出来,左边的I/O可以读到高电位,右边的I/O可以读到低电位,可以选择性的接收。(I/O接口是计算机与外设进行信息交换的“桥梁”对应输入输出设备)
(5)存储器的类型
- RAM(Random Access Memory)
1、DRAM(Dynamic RAM):
可随机存取,但必须周期性的刷新以保持存储内容(读取速度更快)
2、SRAM(Static RAM):
可随机存取,且不需要周期性刷新的存储器 - ROM(Random Only Memory)
1、ROM(掩膜ROM)
ROM生产时写入,用户不能更改
2、PROM(Programma ROM,熔丝PROM)
生产时空白,用户可写入,但写入后不可更改
3、EPROM(Erasable PROM,紫外线)
可擦除重写,但必须使用专用设备 - EEPROM(Electrically EPROM)–>电可擦除
- Flash EPROM(快速可擦除编程只读存储器) --> U盘技术的广大使用
(6)内存
- EDO DRAM(Extended Date Out DRAM)扩展数据输出动态存储器
在把数据发送给CPU的同时,去访问下一个页面,从而提高了工作效率(约比传统的DRAN快15%-30%)。 - SDRAM(Synchronous DRAM)同步动态存储器
工作在CPU外部总线的频率上,与CPU的时钟同步,存储读取速度更快。 - DDR (Double Date Rate SDRAM)双数据输出同步动态存储器
1、DDR SDRAM从理论上来讲,可以把RAM的速度提升一倍,它在时钟的上升沿河下降沿都可以读出数据
2、DDR2 电压1.8V 高端频率可达1000Mhz
3、DDR3 电压1.5V 频率可达2000MHz 8bit
4、DDR4 电压1.2V 数据传输速率3,2GT/s
(7)地址与数据单位
32bit -->2^32 = 4G —>所以32位的系统最多只能访问4G的空间,也就只能装4G的内存
3)CPU
(1)CPU指令的执行
CPU的命令集
- CPU中用来计算和控制计算机系统的一套指令的集合
- 在CPU设计时就预先定义好的
- 是体现CPU性能的重要标志
*1、Intel X86指令集
*2、ARM指令集(ARM是一个公司)
CPU的工作方式
运算器ALU
- Arithmetic Logic Unit
- 专门执行算术和逻辑运算的数字电路
寄存器
- 累加器AC—暂存ALU的计算结果
- 状态条件寄存器PSR
- ALU运算结果、系统工作状态信息
- 数据寄存器MDR
- 缓存数据
控制器
- 程序员计算器PC ----存放下一条指令的地址
- 指令寄存器IR ----存放当前正在执行的指令
- 地址寄存器MAR -----存放要访问的主存地址
CPU能接受指令
指令
- 最终表现为二进制
- 其长度随CPU类型不同而不同
- 包含一个或多个字节
- 包含 指令码 和 操作数
- 指令码:说明要做的动作
- 操作数:指要操作的数或地址
CPU能接受指令并执行命令的过程
-
执行流程
第一横:地址为00001100,指令为:1001010101010011,指令对象为:000111110
第二横;地址为00111100,数据为:01001011
第一条指令是:找到指令地址000111110,然后把该地址的数01001011加1
程序计数器把保存于自身的指令地址–>发送到地址寄存器–>地址寄存器到相应的存储单元中找到这条指令放到指令寄存器中,指令寄存器拿到指令后,把指令交给命令译码器,进行译码,看要完成什么操作,发现操作数000111110是一个地址,于是控制器把这个地址又传回地址寄存器中,在控制器的协调之下,地址寄存器到相应的存储单元中找到该操作数放到运算器里的缓冲寄存器中,再由缓冲器把该操作数01001011送到算术逻辑单元中,最后由操作控制器发送一个加一的信号给算术运算器,让其把数01001011加1,并把运算结果放入累加器中,运算结束
概要:按照地址取指令,再按照地址取操作数,发送运算信号,完成运算 -
程序的执行
输入程序---->编译器编译成汇编语言----->二进制的机器码------>CPU处理 -
计算机是可以用电路来进行的
数—>二进制数—>都可以用布尔值运算来算---->都能用电路实现(电路能算数)
CPU制造最好的电路。它能完成指令集里的运算
指令是二进制的码,CPU能看懂,并执行它 -
想要让CPU按照我们的想法做事,就应该:
把我们想要做的事写出来(Python等语言)
把这个写出来的东西,翻译成CPU能看懂的二进制指令
参考资料:北京大学公开课:程序设计与算法基础