当前位置: 首页 > news >正文

四大金刚之计算机组成原理

1. 冯·诺依曼结构有哪些特点?冯·诺依曼结构与哈佛结构的区别?

冯·诺依曼结构总线共用,指令和数据访问不能并行,存在瓶颈;哈佛结构指令总线和数据总线独立,可并行访问,提高效率,但硬件复杂。

特性

冯·诺依曼结构

哈佛结构

内存空间

数据和指令 共享内存

数据和指令 独立内存

总线

一条总线访问内存

数据总线和指令总线 独立

优点

节省内存,结构简单

数据和指令可并行访问,速度快

缺点

存在“冯·诺依曼瓶颈”

设计复杂,占用空间多

应用

大多数通用计算机

DSP、嵌入式处理器、信号处理系统

2. 计算机的五大组成部分?

计算机的五大组成部分包括:运算器、控制器、存储器、输入设备和输出设备。运算器和控制器统称为 CPU,负责计算与指挥;存储器用于存放程序和数据;输入/输出设备完成与外部环境的信息交互。

3. 原码、反码、补码的定义与转换?为什么用补码?

以 有符号整数 为例(最高位为符号位,0 表示正,1 表示负):

原码(Sign-Magnitude)

直接按照数值的正负写出二进制

正数:与无符号数相同

负数:符号位为 1,数值部分为该数的绝对值二进制

例:+5 → 00000101;-5 → 10000101

反码(One’s Complement)

正数:与原码相同

负数:在原码基础上,符号位不变,数值位逐位取反

例:-5 → 原码 10000101 → 反码 11111010

补码(Two’s Complement)

正数:与原码相同

负数:在反码基础上 +1

例:-5 → 反码 11111010 → 补码 11111011

转换规则总结

原码 → 反码:正数不变,负数符号位不变,数值位按位取反

反码 → 补码:在反码基础上 +1

补码 → 原码:若为正数不变;若为负数,补码先 -1 得到反码,再按位取反

为什么使用补码?

统一加减运算

在补码表示下,减法可以转化为加法:

A - B = A + (-B)

硬件只需实现加法器,不需要单独的减法器。

唯一表示零

原码、反码会出现 +0-0 两种表示,补码只有一种 0000...0000

范围更大

在 n 位二进制中:

原码能表示的范围是 [-(2^(n-1)-1), +(2^(n-1)-1)]

补码能表示的范围是 [-2^(n-1), +(2^(n-1)-1)]

多表示一个负数,1000 0000 被规定为 -128,这是补码设计的一部分,用来保证:

          • 编码空间被充分利用
          • 只有一个零
          • 加减运算统一处理

4. 有符号数 vs 无符号数,定点数 vs 浮点数,浮点数格式 IEEE 754?

类型

位数 n

范围

无符号数 (unsigned)

n 位

0 ~ 2ⁿ - 1

无符号数:0 ~ 255

有符号数 (signed, 补码)

n 位

-2ⁿ⁻¹ ~ 2ⁿ⁻¹ - 1

有符号数:-128 ~ +127

  • 定点数(Fixed-point)
    • 小数点位置固定
    • 数值直接用整数表示,通过约定小数位数来理解
    • 适合硬件简单、运算速度快的场景
数值 = 整数部分 × 2^小数位数
例如:2.75 定点表示(保留 2 位小数)→ 275
  • 浮点数(Floating-point)
    • 小数点位置可浮动,由 尾数 + 指数 表示
    • 可表示很大或很小的数,精度可控
数值 = (-1)^符号 × 尾数 × 2^指数
32 位:1 位符号 + 8 位指数 + 23 位尾数

5. 指令的组成?

指令由 操作码 + 操作数 + 寻址方式 组成,操作码指定操作类型,操作数指明操作对象,寻址方式告诉 CPU 如何访问操作数;部分指令还有额外控制字段。

寻址方式

举例

说明

立即数

MOV R1, #5

操作数就是值本身

直接

MOV R1, 0x1000

操作数是内存地址,CPU去该地址读/写

间接

MOV R1, [R2]

操作数的地址存储在寄存器里

寄存器

MOV R1, R2

操作数存储在寄存器里

基址+变址

MOV R1, [R2+R3]

操作数地址 = R2 + R3

  • 立即数 → 值直接放在指令里,速度快,灵活性低
  • 寄存器 → 值存在寄存器里,速度快,灵活性高
  • 内存 → 值存内存里,空间大,访问慢
  • 寄存器间接寻址 → 寄存器里存地址,CPU访问内存,兼顾灵活性和空间

6. CISC vs RISC?

CISC → 指令复杂,每条指令可能完成多步操作,所程序指令数以减少,但 CPU 硬件复杂。

RISC → 指令简单,每条指令只做一件事,所以程序指令数增加,但 CPU 可以高速流水线执行,设计简单。

7. 控制器分类?

    • 中央处理器控制器(CPU Control Unit)
      • 控制 CPU 内部各部分协同工作
      • 生成指令控制信号(如取指、译码、执行)
      • 可分为:
        • 硬连线控制器:用逻辑电路实现固定控制,速度快,但不灵活
        • 微程序控制器:用微指令实现控制,灵活,可修改指令集
    • I/O 控制器(Peripheral Controller)
      • 控制外设与 CPU 或内存的数据传输
      • 类型:
        • 通用接口控制器:如 USB 控制器
        • 专用接口控制器:如硬盘控制器、显示控制器
    • 存储器控制器(Memory Controller)
      • 控制内存读写操作
      • 处理访问冲突、刷新 DRAM 等

8. 指令周期分哪几步?

    • 取指(Fetch)
      • 从内存取出下一条指令到指令寄存器(IR)
      • 程序计数器(PC)+1 或指向下一条指令
    • 译码(Decode)
      • 将指令寄存器中的指令解析
      • 确定操作类型、操作数位置和寻址方式
    • 取操作数(Operand Fetch / Read Operands)
      • 按寻址方式,从寄存器或内存取出操作数
    • 执行(Execute)
      • ALU 或控制单元执行指令操作
      • 可能是加减乘除、逻辑运算、跳转等
    • 写回(Write Back / Store Result)
      • 将执行结果写回寄存器或内存

9. 主存与辅存的区别?

特性

主存(内存)

辅存(外存)

存储介质

DRAM/SRAM

磁盘、SSD、光盘等

速度

高速

相对慢,访问延迟大

容量

较小

较大,可存海量数据

可直接访问性

CPU 可直接读写

CPU 不能直接读写,需要 I/O 控制器

易失性

易失(断电丢失)

非易失(断电数据保存)

用途

存储正在执行的程序和数据

长期存储程序、数据、文件

价格

相对便宜

10. 局部性原理?

时间局部性(Temporal Locality)

最近访问过的数据或指令,很可能在短时间内再次访问

例子:循环变量、频繁调用的函数

空间局部性(Spatial Locality)

当前访问的数据附近的数据,很可能随后也会被访问

例子:数组顺序访问、顺序读取文件

应用

高速缓存(Cache)设计:

利用时间局部性,将最近访问的数据保存在 CPU Cache 中

利用空间局部性,把连续内存块一起加载到 Cache

虚拟内存分页:

页调度策略(如 LRU)利用时间局部性,提高缺页命中率

11. Cache 与主存的映射方式?Cache 命中/不命中后处理?Cache 与主存一致性问题?

Cache 是 CPU 与主存之间的高速缓冲存储器,用于存放近期访问的数据和指令,利用局部性原理提高访问速度,缓解 CPU 与主存速度差距。

a. Cache 与主存的映射方式

映射方式

思路

优缺点

示例

直接映射

每个主存块只能映射到一个固定的 Cache 行

硬件简单,速度快,但冲突多

Cache行号 = 主存块号 mod Cache行数

全相联

主存块可放入 Cache 的任意行

冲突少,利用率高,但硬件复杂,需要比较 Tag

访问时比对 Tag 找行

组相联

折中方案:Cache 分组,每组多行,主存块映射到组内任意行

冲突适中,硬件复杂度中等

Cache组号 = 主存块号 mod 组数

b. Cache 命中/不命中后的处理

    • 命中(Hit)
      • CPU 直接从 Cache 获取数据
      • 访问时间短,性能高
    • 未命中(Miss)
      • CPU 需要从主存读取数据到 Cache,再访问
      • 根据替换策略(FIFO / LRU / LFU 等)选择 Cache 行替换

c. Cache 与主存一致性问题

问题:Cache 中的数据可能更新,但主存未更新,或者多个 Cache 拥有同一主存块,数据可能不同步

    • 写策略
      • 写直达(Write Through):CPU 写数据时,Cache 和主存同时更新
      • 写回(Write Back):CPU 写只更新 Cache,主存延迟更新,减少主存写次数

12. IO的控制方式?

I/O 控制方式主要有三种:

    1. 程序查询:CPU 轮询设备,效率低
    2. 中断驱动:设备完成触发中断,CPU 不忙等
    3. DMA:设备直接访问主存,CPU 只需发起请求和处理完成中断,高效传输大数据

13. DMA VS DRAM VS SRAM?

DMA 是直接内存访问机制,DRAM 是大容量主存,SRAM 是高速缓存。

名称

全称

类型

作用 / 功能

特点

DMA

Direct Memory Access

控制方式/机制

I/O 数据直接在内存和设备之间传输,无需 CPU 参与

提高大块数据传输效率,CPU 可并行执行其他任务

DRAM

Dynamic RAM

存储器

主存(内存)常用,存储程序和数据

容量大、价格低、速度相对慢,需要周期性刷新(易失性)

SRAM

Static RAM

存储器

CPU Cache 常用

速度快、不需要刷新(易失性)、容量小、价格高

14. 总线分类?总线仲裁方式?总线通信过程?

a. 1️⃣ 总线分类

按用途和功能,总线可以分为:

分类

特点 / 作用

数据总线(Data Bus)

传输数据位,双向

地址总线(Address Bus)

传输内存或 I/O 地址,单向

控制总线(Control Bus)

传输控制信号,如读/写、中断请求等

系统总线(System Bus)

CPU、内存、I/O 共用,三者复合总线

专用总线

内部 CPU 总线、DMA 总线、外设总线等

b. 2️⃣ 总线仲裁方式(Bus Arbitration)

总线是共享资源,需要仲裁:

      1. 集中式仲裁(Centralized Arbitration)
        • 集中仲裁器控制总线访问
        • CPU 或 I/O 设备向仲裁器申请总线
        • 分两种:
          • 硬件固定优先级:高优先级设备先使用总线
          • 旋转优先级(轮询):保证公平性
      1. 分布式仲裁(Distributed Arbitration)
        • 各设备自己协商,总线无单独仲裁器
        • 优点:无单点故障
        • 缺点:硬件复杂,实现困难

c. 3️⃣ 总线通信过程

CPU 读内存/写内存 为例:

      1. 发出请求
        • CPU 将地址放到地址总线
        • 控制总线置为读/写信号
      1. 总线仲裁
        • CPU 或设备请求总线
        • 仲裁器判断是否允许访问
      1. 数据传输
        • 写操作:CPU → 数据总线 → 内存
        • 读操作:内存 → 数据总线 → CPU
      1. 结束传输
        • 释放总线,其他设备可使用

15. CPI、MIPS、MFLOPS 是什么?

  • CPI:每条指令平均周期,越小越快
  • MIPS:每秒百万条指令数,越大越快
  • MFLOPS:每秒百万浮点运算次数,衡量浮点计算能力

16. 加速比和阿姆达尔定律?

17. 指令流水线

把指令执行分解为多个阶段(如取指、译码、执行、访存、写回),不同指令可以 重叠执行,提高 CPU 吞吐率

18. 计算机的执行速度瓶颈?

  • 原因
    • 存储器访问速度慢:CPU 执行速度远快于主存(DRAM)
    • 流水线冒险:结构、数据、控制冒险导致停顿
    • 缓存未命中:Cache 与主存速度差距大
    • 数据搬运:成为限制性能的主要因素
    • 外设速度远低于 CPU
  • 解决手段
    • 增加 Cache 层次(L1/L2/L3)
    • 优化流水线设计与分支预测
    • 使用高速寄存器和流水线并行
    • 中断驱动:CPU 不忙等
    • DMA:直接内存访问
    • 异步 I/O:CPU 与 I/O 并行

19. 页表优化手段

  • 快表(TLB,Translation Lookaside Buffer):存储最近使用的页表项,加快地址转换
  • 多级页表:节省内存空间,如二级/三级页表
  • 反向页表:按物理页框索引查找对应进程和逻辑页,节省页表空间

20. 进制转换

    • 二进制是核心,八/十六进制转二进制最方便
    • 权展开法:二/八/十/十六 → 十进制
    • 除基取余法:十进制 → 二/八/十六
    • 牢记 每 3 位一组,十六 每 4 位一组


文章转载自:

http://s5gfZxnA.mrgby.cn
http://zbFnXwld.mrgby.cn
http://Rd77ZWAR.mrgby.cn
http://X5G4UCSJ.mrgby.cn
http://ikb6Mkwi.mrgby.cn
http://oKQFzkHq.mrgby.cn
http://TMCtgzyH.mrgby.cn
http://H6GSi9cZ.mrgby.cn
http://eQd9uAwM.mrgby.cn
http://O15ZHlHp.mrgby.cn
http://C6UENVuQ.mrgby.cn
http://R3YZtxim.mrgby.cn
http://k62zXMwo.mrgby.cn
http://UHkDKt1j.mrgby.cn
http://jJHShuXE.mrgby.cn
http://QSpxl6c1.mrgby.cn
http://u1j1sE0k.mrgby.cn
http://oVsoCjDn.mrgby.cn
http://Gfaf7oLL.mrgby.cn
http://FEhmFCaL.mrgby.cn
http://ZFPOQroA.mrgby.cn
http://IyJAneAE.mrgby.cn
http://jfpq03HX.mrgby.cn
http://FkUDcf55.mrgby.cn
http://MXY9SLtO.mrgby.cn
http://i153YRXE.mrgby.cn
http://BAWcEqh4.mrgby.cn
http://6hdJrmD5.mrgby.cn
http://YxEBFwh2.mrgby.cn
http://06sNlNEY.mrgby.cn
http://www.dtcms.com/a/372130.html

相关文章:

  • 第 15 篇:PCA与降维——如何在信息爆炸的时代,抓住“主要矛盾”?
  • 《沈南鹏传 - 做最擅长的事》(中篇)读书笔记
  • 还在重启应用改 Topic?Spring Boot 动态 Kafka 消费的“终极形态”
  • 纸飞机飞行漂流瓶小游戏抖音快手微信小程序看广告流量主开源
  • 《沈南鹏传 - 做最擅长的事》(下篇)读书笔记
  • 网易UU远程,免费电脑远程控制软件
  • Prometheus 存储学习
  • 八.迪杰斯特拉(Dijkstra)算法
  • 大模型术语
  • Python入门教程之关系运算符
  • 9. Mono项目与Unity的关系
  • 【C#】 资源共享和实例管理:静态类,Lazy<T>单例模式,IOC容器Singleton我们该如何选
  • 【C语言】函数指针的使用分析:回调、代码逻辑优化、代码架构分层
  • SQLAlchemy ORM-表与表之间的关系
  • 系统架构性能优化与容灾设计深度解析
  • K8s ConfigMap配置管理全解析
  • 【Beetle RP2350】人体运动感应警报系统
  • tomcat下载
  • 数据结构精讲:栈与队列实战指南
  • 风电设备预测性维护方案:AIoT驱动的风电运维智能化转型​
  • Shell脚本监控系统资源详解
  • Vue基础知识-脚手架开发-Vue Router路由及params、query传参
  • 鱼眼相机模型
  • 类的加载和对象的创建
  • trl GRPO源码分析:如何处理多个reward function?
  • 临床研究三千问——临床研究体系的3个维度(8)
  • TypeORM入门教程:@JoinColumn和@OneToOne的关系
  • html列表标签之无序列表
  • [1]-01-创建空工程
  • 【模型训练篇】VeRL核心思想 - 论文HybridFlow