PC_ 计算机系统概述+冯诺依曼机+各种字长
文章目录
计算机系统概述+冯诺依曼机+各种字长
计算机系统的组成
- 硬件系统和软件系统共同构成一个完整的计算机系统
- 硬件:有形的物理设备(计算机系统中实际物理装置的总称)
- 软件:硬件上运行的程序和相关的数据和文档
- 一个功能使用比较频繁,且实现成本比较理想的时候,使用硬件可以提高效率
冯诺依曼思想
- **‘存储程序’**为主要思想,存储程序奠定了现代计算机的基本结构
- '存储程序’原理的基本工作方式是控制流驱动方式
- 将事先编制好的程序和原始数据送入主存后才能执行
- 一旦程序驱动,就无须操作人员干预,计算机自动逐条执行指令,直到结束
冯诺依曼机
- 依此’存储程序’概念为基础的计算机统称为冯诺依曼机
- 采用存储程序的工作方式
- 硬件系统由:
- 运算器
- 存储器
- 主存储器(内存)
- 可以被cpu直接访问
- 工作方式:
- 按地址存取方式(按存储单元的地址进行存取)
- 辅助存储器(外村)
- 数据/信息调入主存后才可以访问
- 主存储器(内存)
- 控制器
- 输入设备
- 鼠标
- 扫描仪
- 摄像机
- …
- 输出设备
- 显示器
- 打印机
- 指令和数据以同等地位存储在存储器中(内存)
- 形式上没有区别,但是计算机(冯诺依曼机)可以区分它们
- CPU区分它们的依据是:指令周期的不同阶段
- 指令和数据都采用二进制代码表示
- 指令由操作码和地址码组成
- 操作码指出操作的类型
- 地址码指出操作数的地址
- 指令由操作码和地址码组成
存储程序工作方式
- 每条指令的执行过程:
- 从主存中取指令
- 对指令进行译码
- 计算下一条指令地址
- 取操作数并执行计算
- 将结果送回存储器
执行指令
- 程序的功能都通过中央处理器(运算器和控制器)执行指令
- 指令是按地址访问的,数据由指令的地址码给出;除了立即寻址以外,数据均存放在存储器中
- 在指令执行前,数据必须预先存放在存储器中,中央处理器可以从存储器中存取代码
可执行文件(指令)执行过程
- 可执行文件代码段是由一条条机器指令构成的
- 指令是用0,1表示的一串0/1序列,用来指示cpu完成一个特定的原子操作
- 可执行文件如果用文件编辑器直接打开会乱码
案例
-
前面的硬件结构介绍是从硬件本身的角度描述各自的作用
-
下面以具体的指令为例描述基本的指令执行过程
-
取数指令的操作过程
-
取指令
- PC->MAR->M->MDR->IR
- 根据PC取指令到IR
- 将PC的内容送至MAR
- MAR中的内容直接送地址线
- 控制器将读信号送信号线
- 主存根据地址线上的地址,从指定存储单元中读取数据信息(指令),送到数据线
- MDR从数据线上接受信息(指令),传输到IR中
-
分析指令
- OP(IR)->CU
- 指令译码并送出控制型号
- 控制器根据IR保存的指令的操作码,生成相应的控制信号,送到不同的执行部件
-
执行指令
- Ad(IR)->MAR->M->MDR->ACC
- 取数操作
- 将IR中的指令地址码传送到MAR
- MAR中的地址传送到数据线
- 控制器将读信号传送到读/写信号线;从主存中读取操作数,通过数据线传输到MDR,再到ACC寄存器
- 每读取完一条指令,必须计算下一条指令的地址(PC)+1->PC
- 其中(PC)带上括号,表示PC中的内容(地址)
- 否则表示的是通路
-
从源程序到可执行文件
- 以gcc编译器为例
- 预处理阶段:预处理器cpp将#开头的的命令进行处理,得到
.i
文件 - 编译阶段:编译器ccl对预处理后的源程序进行编译,生成一个汇编语言源程序:
.s
文件 - 汇编阶段:汇编器as对
.s
文件进行汇编翻译,得到机器语言程序(机器语言指令),- 把这些指令打包称一个:称为可重定位目标文件
.o
文件(二进制文件)
- 把这些指令打包称一个:称为可重定位目标文件
- 链接阶段:链接器ld将多个可重定位目标文件和标准库函数合并为一个可执行目标文件(简称为可执行文件)
- 例如,将:
hellow.o
和printf.o
(printf.o是标准库函数printf所在的可重定位目标模块) - 合并的结果生成可执行文件hello,被保存在磁盘上
- 例如,将:
- 预处理阶段:预处理器cpp将#开头的的命令进行处理,得到
重点部件
主存储器(内存)
- 存储体:
- 存放二进制信息
- 由许多存储单元构成
- 每个存储单元有若干存储元件,每个存储元件存储一个二进制代码(0/1)
- 因此存储单元可以存储的一串二进制代码,这个二进制代码串称为存储字
- 存储字的长度称为存储字长
- 可以是1Byte的偶数倍(二次幂倍数)(1B=1Byte=8bit)
- 地址译码器
- 地址译码器(不是寄存器)是位于主存,不在cpu内
- 地址寄存器(MAR)
- 存放地址(经过地址译码后,找到所选存储单元)
- 🎈MAR的位数对应存储单元的个数
- 例如:MAR为10bit,可以对应 2 10 2^{10} 210个存储单元,记1k(如果字长为1B,那么就是对应1kB)
- MAR长度还和程序计数器PC的长度相等
- (PC是控制器中的一个存放(指令)地址的寄存器)
- 数据寄存器(MDR)
- 暂存要从存储器中读写的信息
- 位数和存储字长相等
- 时序控制逻辑
- 用于产生存储器操作所需要的各种时序信号
- 控制前三者
🎈计算机位数,字长和地址位数
- 计算机位数表示机器字长
- 即一次可以处理8bit的数据
- 机器字长:指cpu内部用于整数运算的数据通路宽度
- 即,整数运算的运算器位数和通用寄存器宽度
- 反映了计算机处理信息的能力
- 字:衡量信息量的一个单位,用以度量数据类型的宽度,和硬件本身无关
- 指令字长:一个指令字中包含的二进制代码位数
- 指令字长通常是存储字长的整数倍
- 取指令时间也受到字长的影响
- 存储字长:一个存储单元存储的二进制代码长度(于MDR位数相等)
- 数据字长:数据总线一次能并行传送信息的位数(可以不等于MDR)
小结
-
它们必须是字节的整数倍
-
地址位数:表示地址码的长度(设位数为m,寻址空间为 2 m 2^m 2m)
Note
- MAR,MDR属于存储器的一部分,但是却存在于CPU内,物理位置不影响逻辑范畴的划分
- 高速缓存Cache(高速SRAM制作的速度介于寄存器和普通内存(DRAM)之间的小容量存储)也是位于CPU内
- CPU不属于冯诺依曼机的五大基本部件,它是众多组件的整合体,包含了五大基础部件的多种成分
- CPU至少囊括了5部中的3部
- 运算器
- 控制器
- 存储器的部分组件
- 几乎所有的寄存器物理位置都在cpu处
- 主存,运算器,控制器的从属寄存器都布局在cpu内
- CPU至少囊括了5部中的3部
运算器
-
运算器是计算机的执行部件
- 算数运算
- 加减乘除
- 逻辑运算
- 与/或/非
- 异或/比较/移位
- …
- 算数运算
-
算数逻辑单元ALU:
-
运算器的核心
-
包含多个通用寄存器:通用寄存器组GPRs:(GPR - General Purpose Registers)
- 用于暂存操作数和中间结果
- 必须寄存器:
- 累加寄存器(简称累加器)ACC
- 乘商寄存器MQ
- 操作数寄存器X
- 非必须寄存器:
- 变址寄存器(IX)
- 基址寄存器(BR)
- 必须寄存器:
- 用于暂存操作数和中间结果
-
程序状态寄存器(标志寄存器)PSW
- 用于存放ALU运算得到的一些标志信息/处理机的状态信息
- 是否溢出/进位/借位/结果是否为负/…
- 用于存放ALU运算得到的一些标志信息/处理机的状态信息
-
控制器
- 计算机的指挥中心
- 指挥各个部件协调工作
- 构成:
- 程序计数器PC
- PC存放当前与执行指令的地址
- 可以自动加1来形成下一条指令的地址
- 与主存的MAR之间有提条直接通路
- 指令寄存器IR
- 存放当前指令,内容来自于主存的MDR
- 指令中的操作码OP(IR)被送至CU
- 地址码AD(IR)送往MAR,用以获取操作数
- 控制单元CU
- 指令中的操作码OP(IR)被送至CU,用以分析指令,并发出各种微操作命令序列
- 需要区分控制器和控制单元,级别不一样,是包含与被包含的关系
- 程序计数器PC
🎈寄存器的可见性(透明性)
可见寄存器
- 汇编程序员可以操作/设置
- PC(程序计数器)
- PSW状态寄存器
- GPR通用寄存器
- 上述这些寄存器可见,才能够进行汇编编程
透明寄存器(不可见)
-
CPU内部的:
- IR(指令寄存器)
- MAR(地址寄存器)
- MDR(数据寄存器)
-
这些是不可见的
主机与外设
-
对于完整的计算机系统而言,主机和外设仅仅是硬件部分
-
主机:cpu和主存共同构成:
- 这种划分计算机硬件的方式和冯诺依曼五大部件是两个风格
- cpu集成了控制器和运算器,以及主存的寄存器部分(MAR,MDR)以及Cache
-
外设:主机之外的其他硬件装置
- 外存
- 注意,外存和内存都是存储器,只有其中的主存才是构成主机的部分之一
- IO设备
- 外存
-
-
逻辑划分(冯诺依曼)
-
总线(三种信号线)
- cpu和主存之间通过一组总线相连
- 总线中有三种信号线:
- 地址线
- MAR中的地址会直接送到地址线上,用于指向读写操作的主存存储单元
- 控制线
- 读/写信号线,指出,数据是从cpu写入到主存还是从主存读出到cpu
- 根据读写操作决定:
- 将MDR中的数据直接送入到数据线上
- 将数据线上的数据接收到MDR
- 根据读写操作决定:
- 读/写信号线,指出,数据是从cpu写入到主存还是从主存读出到cpu
- 数据线
- 配合控制器有向传输数据
- 地址线
- 总线中有三种信号线:
软件
系统软件:
- 保证计算机系统高效+正确运行的基础软件
- 作为系统资源提供给用户
- 包括:
- 操作系统OS
- 数据库管理系统DBMS
- Note:区别于数据库系统(DBS),
- 数据库
- 数据库管理系统
- 应用系统
- 数据库管理员
- 可见,DBMS是数据库系统中的一部分,也只有这一部分属于系统应用
- Note:区别于数据库系统(DBS),
- 分布式软件系统
- 网络软件系统
- 语言处理程序
- 编译程序
- 标准库程序
- 服务性程序
- 链接程序(目标程序(文件)经过链接程序处理,可以得到可执行程序)
翻译程序
- 编译程序(编译器):高级语言程序翻译成汇编语言/机器语言程序(机器级目标代码文件)
- 汇编程序(汇编器):将汇编语言程序翻译成机器语言程序
- 解释程序(解释器):将源程序中的语句按照执行顺序逐条翻译成机器指令并立即执行
小结
- 只有机器语言(二进制编码) 可以直接被执行
- 其他语言必须翻译成机器语言
应用软件:
- 用户解决某个领域中的各类问题而编制的程序
- 科学计算程序
- 数据统计程序
计算机系统的层次结构
- 计算机系统的大致分层
- 裸机
- 没有配备软件的纯硬件
- 软硬件交界面(不是绝对的)下有两层(组成原理重点)
- 微程序机器:(微指令系统)
- 由硬件直接执行微指令
- 传统机器:使用机器语言
- 用微指令程序解释机器指令
- 微程序机器:(微指令系统)
- 虚拟机
- 由软件实现的机器
- 虚拟机只对该层次的观察者存在
- 从低到高:
- 操作系统机器
- 用机器语言解释操作系统
- 汇编语言机器
- 用汇编程序翻译翻译成机器语言程序
- 高级语言机器
- 用编译程序翻译成汇编语言
- 操作系统机器
- 裸机
计算机其他概念
系列机
- 具有基本相同的体系结构和指令系统的多个不同型号的计算机组成的一个产品系列
兼容
- 软件/硬件的通用性
- 运行在某个型号的计算机系统中的硬件/硬件也可以应用于另一个型号的计算机中时,称这两台计算机存在硬件/软件上的兼容性
软件可移植性
- 使用在A系列计算机中的软件经过少量修改(或者不修改)就可以运行在另个一系列计算机上的可能性
固件
- 将程序固化在ROM中,组成的部件
- 是一种具有软件特性的硬件
- 比软件执行更快
- 比硬件更加灵活
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了