1.计算机系统
当下的计算机系统大体上可以分为:通用计算机系统 和专用计算机系统
通用:软件通用、硬件也通用
专用:是指系统会按照用户需求来量身定制,因此软件和硬件也是具备可裁剪性
1.什么是计算机系统?
当下两大主流的计算机组成架构,分别是 冯.诺伊曼体系结构 和 哈佛架构 这两大结构都是确定了计算机系统的组成框架
冯.诺伊曼体系结构
早期的计算机仅内核特定的程序 =》计算机仅内含一个数学计算程序,不能处理文字数据、图像数据更不能玩游戏
冯.诺伊曼的两大观点:
1.程序 应当被存储
2.计算机数据的最基本单位应该 是 二进制 数据 同时,冯诺伊曼体系结构讲计算机分为以下几个部分:
1.算术逻辑单元(运算器)
2.控制电路(中央处理器) =》用来操作哪些组件被enable 或disable
=》CPU = 运算器ALU + 控制器 Controller
3.存储器:存储程序(指令)和数据
指令和数据以同等的地位存储在存储器中,并且可以按照地址寻访==》程序是按顺序执行
4.输入/输出设备:IO
如图:
有人就提出:指令和数据虽然本质上都是"数据"(1/0)但是,指令和数据的属性是不一样的 =》逻辑层面的特性
指令 ====》 不可修改的(CPU) :Read Only
数据 =====》 可读可写的
因此,数据和指令在存储时,也应当按其属性分开存储,有些存储器存储只读数据(程序、指令) ===》 ROM: Read Only Memory
有些存储器存储可读可写的数据 ===》 RAM: Random Access Memory
ROM是只读存储器,用来存储程序,既然是只读的,那程序又是如何写入的呢?
==》只读 是针对CPU,ROM需要特定的电路用于写入数据 这种电路称为 烧写电路,往ROM中写入数据的操作 称为烧机/刷机
上述这种将数据和指令分开存储的结构 被称为 哈佛结构
如图:
哈佛架构 并未完全突破冯诺如伊曼体系结构
既然一个计算机是由上述多个组件构成,那组件与组件之间又是如何进行数据传递的呢???
==》总线
2.总线
总线 BUS:本质就是多根"电线",是计算机中用于数据传递的最基本的构成原件
按功能可以分为:
地址总线(AB):单向总线,由CPU发出地址进行寻址,宽度与寻址空间相关 比如 4G寻址空间 =》 4G个地址 0x0000 0000 ~ 0xffff ffff => 2^32 =》 32根地址线
数据总线(DB):双向总线,宽度差别被称为“带宽”,用于读写数据
控制总线(CB):用于传递命令 或 状态的总线,比如 确定器件的读写状态
按位置分为:
片内总线
系统总线
通信总线:IO总线
如图:
3.存储器的逻辑结构和操作
通过一个例子来了解
假设 由一个64*64Byte存储器,请问该存储器需要多少根地址总线?
64*64 = 2^12;
bit:最小的存储单元,只能存储一个二进制状态,实质是一个简单时序逻辑电路,只包含存储电路 =》 触发器/锁存器
如图:
Byte:由8bits组成的存储单元,可以存储8个二进制状态,也是计算机存储空间的最小单位,存储器的地址分配也是以Byte为单位
如图:
4.CPU的工作原理
CPU内部有以下组件:
ALU:算术运算单元,早期的CPU是一个简单的 加法器作为ALU
Control Unit:控制单元
R0,R1R2,…Rn 寄存器(CPU内部的数据寄存器)
Program Counter 程序计数器 PC,用来保存CPU下一条要执行的指令的地址
Instr Register 指令寄存器
Instr Decoder 指令译码器
Internal Bus:内部总线
其中:
寄存器 Register 是指CPU内部用来临时存储参与运算的数据或运算结果的存储单元
如图: