news 2026/6/10 13:17:46

谁还能不知道计算机组成结构与缓存

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
谁还能不知道计算机组成结构与缓存

😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。
😊 座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍

最近在架构师方面的书籍,内容可真多,有些基础遗忘了,现在重新拾起。

文章目录

  • 冯·诺伊曼结构
  • 工作原理
  • 冯·诺伊曼结构特点
  • 存储结构
    • Cache
    • Cache 的映射与组织方式
    • Cache一致性

冯·诺伊曼结构

冯·诺伊曼结构也称为普林斯顿结构,是一种将程序指令存储器数据存储器合并在一起的存储器结构。
冯·诺伊曼结构明确将计算机划分为五个逻辑部分:输入设备、输出设备、运算器、控制器、存储器。

(图片来源于希赛网)

部件功能补充
运算器执行所有算术运算和逻辑运算的核心部件。1.累加寄存器AC:通用寄存器,为ALU提供一个工作区,用于暂存数据; 2.数据缓冲寄存器DR:写内存时,暂存指令或数据;3. 状态条件寄存器PSW:存状态标志与控制标志
控制器指挥协调整个系统。它从内存取指令、译码、分析,并发出控制信号驱动其他部件。1. 程序计数器PC:存储下一条要执行指令的地址;2. 指令寄存器IR:存储即将执行的指令;3. 指令译码器ID:对指令中的操作码字段进行分析解释;4. 时序部件:提供时序控制信号
存储器存放程序数据的记忆装置。可按地址访问。
输入设备将外界信息(程序和数据)转换为计算机可识别的二进制形式并送入存储器。鼠标、键盘
输出设备将计算机内部的二进制结果转换为人或其它设备可识别的形式。显示器

运算器和控制器在现代计算机中通常被集成在一块芯片上,合称为中央处理器

工作原理

(冯·诺依曼结构如何运作的关键步骤)

  1. 取指令:控制器根据程序计数器中的地址,从存储器中读取一条指令。
  2. 指令译码:控制器分析该指令,确定要执行什么操作(操作码),以及操作数在哪里(地址码)。
  3. 取操作数:根据地址码,从存储器或寄存器中获取执行操作所需的数据。
  4. 执行指令:运算器在控制信号下,对操作数进行指定的算术或逻辑运算。
  5. 存储结果:将运算结果写回存储器或指定的寄存器。
  6. 更新程序计数器:为取下一条指令做好准备(通常是PC+1,除非遇到跳转指令)。

在文章最初有提到冯·诺伊曼结构是一种将程序指令存储器和数据存储器合并在一起的存储器结构。

冯·诺伊曼结构特点

  1. 用于PC处理器,如I3、I5、I7 处理器
  2. 指令与数据存储器合并在一起
  3. 指令与数据都通过相同的数据总线传输

不得不提另一种结构——哈弗结构

哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。

特点如下:

  1. 一般用于嵌入式系统处理器(DSP)数字信号处理 (DSP,Digital Signal Processing)
  2. 指令与数据分开存储,可以并行读取,有较高数据的吞吐率
  3. 有4条总线:指令和数据的数据总线与地址总线

试题:计算机执行程序时,在一个指令周期的过程中,为了能够从内存中读指令操作,首先是将程序计算器PC的内容送到地址总线上。

存储结构

存储系统是通过层次化存储结构,包含以下内容:

  • 外存(辅存):硬盘、光盘、U盘等
  • 内存(主存):通常是DRAM存储器(动态)
  • Cache:按内容存取(相联存储器),解决存储与速度不匹配的问题。
  • CPU:寄存器,容量小,速度快

容量越小速度越快

试题:计算机采用分级存储体系的主要目的是为了解决存储的容量、价格和速度之间的矛盾

Cache

Cache 是高速缓冲存储器,简称缓存。是用来解决CPU与主存之间速度容量不匹配的问题,这个问题也是冯诺伊曼瓶颈。在CPU和主存之间加上Cache 能够提高 CPU 数据输入输出的速率。

核心目标:让CPU尽可能快地拿到它需要的数据和指令,从而减少甚至避免CPU因等待慢速的主存而“空转”的时间。

  • Cache是除了寄存器外,访问速度最快的层次。

  • Cache 对程序员是透明的,程序员无法操作CaChe。

  • 使用Cache 改善系统性能的依据是程序的局部性原理(即计算机程序在短时间内,倾向于访问一小部分集中的内存区域。)

    • 时间局部性
      • 如果一个内存位置被访问,那么它在不久的将来很可能再次被访问
      • 例子:循环变量i在循环中被反复读写。
    • 空间局部性
      • 如果一个内存位置被访问,那么它附近的内存位置也很有可能在不久后被访问。
      • 例子:顺序执行程序指令、顺序访问数组元素。

    基于此,Cache的策略是:当CPU需要某个数据时,不仅把这个数据从慢速内存取到快速Cache,还会把其周围的一整块数据(称为一个“Cache行”)都取过来。这样,当CPU接下来需要相邻数据时,就能直接从Cache中命中,无需访问主存。

Cache 的映射与组织方式

主存中的一个数据块到底可以放在Cache的哪个位置?主要有三种方式:

  • 直接映射:主存块只能放在Cache中唯一的一个特定位置。简单,但容易冲突。
  • 全相联映射:主存块可以放在Cache中的任意位置。灵活,但查找电路复杂、成本高。
  • 组相联映射(最常用):将Cache分成若干组,每组有多个行。主存块可以映射到特定组内的任意一行。这是直接映射和全相联的折中方案(如“8路组相联”)。

Cache一致性

在多核系统中,每个核心有自己的私有缓存(L1, L2)。如果核心A修改了自己缓存中的数据,如何保证核心B不会读到旧的、过时的数据?

  • 这就是缓存一致性问题,由硬件实现的缓存一致性协议(如MESI协议)来解决。该协议通过维护缓存行的状态(Modified, Exclusive, Shared, Invalid),来确保所有核心看到的内存视图是一致的。

何时葡萄先熟透,你要静候再静候。
何时功成与名就,你要静心再静心。
辞家千里又千里,务必争气再争气。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 17:07:38

Seed-Coder-8B-Base生成GraphQL Schema实战测评

Seed-Coder-8B-Base生成GraphQL Schema实战测评 在现代全栈开发中,前后端协作的效率瓶颈往往不在于编码速度,而在于接口契约的模糊性。一个字段该不该返回?是否可为空?数组会不会是null?这些看似细枝末节的问题&#x…

作者头像 李华
网站建设 2026/6/9 5:39:52

LobeChat部署在云服务器上的性能优化技巧

LobeChat部署在云服务器上的性能优化技巧 在今天,越来越多开发者不再满足于使用现成的AI聊天产品——它们虽然功能强大,却常常受限于数据隐私、定制灵活性和系统集成能力。一个典型的例子是:你想为公司内部搭建一个专属的知识助手&#xff0c…

作者头像 李华
网站建设 2026/6/10 5:42:43

虎贲等考 AI:以智能之力重塑学术写作,开启研究新纪元!

🚀 当传统学术写作还在被 “文献堆砌、逻辑混乱、查重焦虑” 困扰时,一场智能革命已经悄然降临!虎贲等考 AI的横空出世,不是简单的工具升级,而是以智能之力对学术写作的全流程重塑。它打破了 “人工硬熬 工具拼凑” 的…

作者头像 李华
网站建设 2026/6/3 8:57:24

航天级必备:Omnetics 微型线缆完整解析与选型建议

随着智能电子设备和现代航天系统对信号可靠性体积重量比要求越来越高,连接器与线缆线束的设计标准也不断升级。在高可靠性领域,Omnetics 作为全球知名的微型连接解决方案供应商,其微型线缆与连接组件因其卓越的性能表现,成为包含航…

作者头像 李华
网站建设 2026/6/10 10:59:19

LobeChat能否实现多语言实时翻译助手?应用场景演示

LobeChat能否实现多语言实时翻译助手?应用场景演示 在跨国团队协作日益频繁的今天,一句简单的“这个项目下周必须完成”,如果因为语言障碍被误解为“可以稍后处理”,就可能引发严重的项目延误。传统的翻译工具虽然能解决基本的语义…

作者头像 李华
网站建设 2026/6/5 19:20:12

LobeChat能否进行伦理判断?价值观对齐挑战

LobeChat能否进行伦理判断?价值观对齐挑战 在医疗咨询、法律建议甚至心理咨询逐渐向AI迁移的今天,我们是否能放心地让一个聊天机器人回答“如何应对抑郁”或“我能偷税漏税吗”这类问题?这已不再只是技术能力的问题,而是关乎信任与…

作者头像 李华