26考研 | 王道 | 计算机组成原理 | 一、计算机系统概述
26考研 | 王道 | 计算机组成原理 | 一、计算机系统概述
1.1 计算机的发展
1.2 计算机硬件和软件
硬盘是外部设备,这个外部指的就是主机(主存,运算器,控制器)外面的
1.2.1 计算机硬件的基本组成
早期的冯诺依曼机
对于同一个功能,既可以用软件实现,也可以用硬件实现
冯诺依曼计算机的特点
- 计算机由五大部件组成
- 指令和数据以同等地位存于存储器,可按地址访问(统一编址,指令和数据所在存储单元无差异)
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
- 以运算器为中心(输入和输出设备与存储器之间的数据传送经过运算器完成,运算器算是一个中转站。这样就会让运算器的数据计算的效率降低)
- 即输入设备先把数据交给运算器,然后再转交给存储器,存储器要输出时,也是存储器先交给运算器然后运算器交给输出设备
数据驱动方式:
- 控制流驱动:指令–>数据
- 数据流驱动:数据–>指令
现代计算机的结构
以存储器为中心,输入的数据直接交给存储器,输出的时候也由存储器直接给输出设备,更多的解放运算器的运算时间
1.2.2 各个硬件的工作原理
注:现在的计算机通常把MAR,MDR也集成在CPU内
主存储器的基本组成
从主存中拿就是在MAR写地址,存储器根据地址拿出来数据写到MDR里面去。
往主存中写就是在MAR写地址,MDR写数据,表明CPU想把MDR的数据存在哪里,然后存储器根据MAR地址把MDR存在相应的位置
运算器的基本组成
控制器的基本组成
计算机的工作过程
总结:
1.2.3 计算机软件
1.2.4 计算机系统的层次结构
汇编语言指令和机器语言指令一一对应
LOAD: 取数操作 ,MUL: 乘法操作
翻译程序分为编译程序和解释程序。两者结果都是可以把高级语言转换为机器语言
编译程序是一次性就翻译完的的,生成目标程序,编译时间长,运行速度快
解释程序不是一次性翻译完的是一句一句翻译的,不生成目标程序,编译时间短,运行速度慢
特性 | 编译程序 (Compiler) | 解释程序 (Interpreter) |
---|---|---|
处理方式 | 一次性将源代码全部翻译成机器码(生成目标程序) | 逐行地读取、翻译并执行源代码(不生成独立的目标程序) |
编译时间 | 长(因为需要完成整个源代码的分析、优化和翻译过程) | 短(甚至没有明显的“编译”阶段,或者编译与运行同时进行) |
运行速度 | 快(因为直接执行的是优化后的机器码,无需额外翻译) | 慢(因为每次运行都需要一边翻译一边执行,包含翻译开销) |
1.2.5 计算机系统的工作原理
每次要执行可执行文件的时候都要从外存中把可执行文件调入内存中,然后CPU进行处理,用户可以通过输入设备进行交互,结果可以通过输出设备显示或者打印什么的
整个程序执行的过程就是对应指令执行的过程
存储程序工作方式详解(可以看看做个了解)
计算机组成原理中的“存储程序”工作方式是由冯·诺依曼于1945年提出的核心设计思想,其核心是将程序和数据以二进制形式预先存储到计算机内存中,由控制器自动按顺序执行指令,实现自动化运算。以下是其具体工作原理和特点的解析:
一、核心定义与基本原理
- 程序与数据统一存储
程序指令和操作数据均以二进制形式存储在内存中,两者通过地址区分。控制器根据指令地址逐条读取,并通过操作码和操作数解析执行逻辑- 统一性:指令和数据在物理存储上没有区别,仅在逻辑上被赋予不同含义(如程序区、数据区的划分)
- 二进制编码:所有信息(指令、数据)均以0/1代码表示,简化了硬件设计
- 自动执行与控制流程
- 顺序执行:程序计数器(PC)指示当前指令地址,默认按地址递增顺序执行
- 条件跳转:遇到分支指令(如条件转移),PC跳转至目标地址,改变执行顺序
二、工作流程的四大阶段
- 程序与数据输入
通过输入设备(如键盘)将程序和数据存入内存,内存划分为多个可寻址的存储单元,按地址编号管理 - 指令执行周期
每条指令的执行分为三个阶段:- 取指:从内存中读取指令并送入控制器
- 译码:解析指令的操作码(动作类型)和操作数(数据地址)
- 执行:运算器根据操作码处理数据,结果存回内存或寄存器
- 控制器的核心作用
控制器负责协调各部件:通过译码生成控制信号,指挥运算器、存储器等协同工作,并更新PC以指向下一条指令 - 结果输出
处理后的数据通过输出设备(如显示器)呈现,或继续存储在内存中供后续指令使用
三、冯·诺依曼体系的支持结构
存储程序方式依托以下硬件架构实现:
- 五大部件协作:运算器、存储器、控制器、输入设备、输出设备分工明确
- 二进制与直接寻址:数据以二进制存储,内存单元可直接通过地址访问
- 集中控制:指令执行由控制器统一调度,实现高效的顺序处理
四、优势与局限性
优势
- 高度自动化:程序预存后无需人工干预,计算机可连续执行复杂任务
- 灵活扩展:通过修改程序即可实现不同功能,无需调整硬件
- 效率提升:结合流水线、缓存技术,现代计算机进一步优化了执行速度
局限性
顺序执行瓶颈:串行处理导致并行计算能力受限,需通过多核、超线程等技术弥补
存储墙问题:CPU与内存速度差异导致性能瓶颈
安全性依赖
:恶意程序可能通过存储漏洞攻击系统,需依赖防护机制
五、历史意义与现代发展
存储程序原理奠定了现代计算机的基础,其影响包括:
- 技术革命:从ENIAC的手动配线到EDVAC的自动执行,标志着计算机从专用设备转向通用工具
- 持续演进:尽管冯·诺依曼结构存在局限,但其核心理念仍是当代计算机设计的基石,并通过哈佛架构(指令与数据分离存储)、量子计算等创新拓展边界
通过这一机制,计算机得以从简单的计算工具演变为支撑人工智能、大数据等复杂应用的通用平台,体现了“存储程序”思想的深远影响。
1.3 计算机性能指标
- 机器字长:能够直接处理的二进制数据的位数
- 指令字长:一个指令中包含的二进制代码的位数
- 存储字长:一个存储单元二进制数据的位数
1.3.1 存储器性能指标
1.3.2 CPU性能指标
CPU主频:
CPU内数字脉冲信号振荡的频率,其实就是1秒里面有多少个时钟周期
注:公式中主频的值反映的是:每秒钟会出现多少个时钟周期。
注:注意与存储器的容量或者文件的大小中的K、M、G、T的区别
1.3.3 系统整体的性能指标
动态测试:基准程序(跑分软件)是用来测量计算机处理速度的一种实用程序,以便于被测量的计算机性能可以与运行相同程序的其他计算机性能进行比较。
思考:
存储器的容量:衡量计算机的存储容量
机器字长:衡量计算机并行处理的能力
数据通路带宽:衡量计算机在功能部件之间传送数据的能力
重点:
1.CPU执行时间等于 = 指令条数 * CPI *时钟周期
两台计算机上运行相同的程序,即使CPI和时钟周期都相同,但指令条数可能不同,因为系统的指令集可能不同,导致编译后的指令数不同
从而使得两次的CPU执行时间不同
2.在CPU的寄存器中,指令寄存器IR,MAR,MDR是对用户完全透明的
PC、通用寄存器和状态寄存器对汇编程序员可见
寄存器/组件 | 对用户是否透明 | 主要功能 | 可见对象 |
---|---|---|---|
PC (程序计数器) | ❌ 不透明 | 存放下一条要执行的指令的地址 | 汇编程序员、系统程序员 |
IR (指令寄存器) | ✅ 透明 | 存放当前正在执行的指令 | 对程序员不可见,CPU内部使用 |
MAR (内存地址寄存器) | ✅ 透明 | 存放要访问的内存单元地址 | 对程序员不可见,CPU内部使用 |
MDR (内存数据寄存器) | ✅ 透明 | 存放要写入内存或从内存读出的数据 | 对程序员不可见,CPU内部使用 |
通用寄存器 | ❌ 不透明 | 存放操作数和中间结果 | 汇编程序员 |
PSW (程序状态字) | ❌ 不透明 | 存放条件码、中断允许/禁止标志等状态信息,其内容可能包含系统是处于用户态还是内核态等信息 | 汇编程序员、系统程序员 |
Cache (高速缓存) | ✅ 透明 | 缓存常用数据,提高访问速度 | 对程序员不可见,由硬件自动管理 |
3.系统结构、指令集、计算机组织都会影响CPI,而时钟频率不会
4.提高CPU主频,扩大主存容量对计算机性能的提升是有限的。高性能计算机通常采用多处理器来提高并行能力
因素 | 是否影响CPI | 原因说明 | 类比解释 |
---|---|---|---|
系统结构 | ✅ 是 | 决定了处理器的基础工作方式(如是否是流水线、多核等),直接影响指令执行的效率和方法。 | 像是城市的“总体规划”,决定了交通网络的基本模式 |
指令集 | ✅ 是 | 定义了处理器能执行的指令种类和复杂度。复杂指令可能需更多时钟周期,简单指令则可能更快。 | 像是“车辆类型”,卡车运货多但慢,小轿车轻快但载货少 |
计算机组织 | ✅ 是 | 涉及具体实现技术(如缓存大小、分支预测、并行单元数量),这些优化能减少指令执行所需的时钟周期。 | 像是“交通管理细节”,如智能红绿灯、快速路等能减少拥堵 |
时钟频率 | ❌ 否 | 仅改变每个时钟周期的持续时间,并不改变执行一条指令所需时钟周期的数量。 | 像是“统一加快或放慢所有信号的节拍”,但步骤数量不变 |
🧠 深入理解时钟频率
时钟频率(主频)是 CPU 内部数字脉冲信号振荡的频率,单位通常是 Hz(赫兹)、MHz(兆赫)或 GHz(吉赫)。它决定了 CPU 时钟周期的长度
提高时钟频率的直接效果是缩短了每个时钟周期的持续时间。这意味着所有操作(包括每条指令的执行)的“每一步”都变快了。但是,执行一条指令需要多少步(即多少个时钟周期),这并不由时钟频率决定,而是取决于前述的系统结构、指令集和计算机组织。
因此:
- 时钟频率影响的是“每一步有多快”(时钟周期的长度)。
- CPI 告诉我们“完成一个任务需要多少步”(执行一条指令所需的周期数)。
- 一条指令的实际执行时间 = CPI × 时钟周期长度。
- 整个程序的 CPU 执行时间 = 指令总数 × CPI × 时钟周期长度 = (指令总数 × CPI) / 时钟频率
简单总结
可以这样理解:CPI 衡量的是 CPU 效率(做一件事需要几步),而时钟频率衡量的是 CPU 速度(一步有多快)。系统结构、指令集和计算机组织决定了效率的高低(CPI),而时钟频率则决定了执行每一步的基本节奏。两者共同决定了最终的处理器性能。