news 2026/5/27 4:37:21

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

作者头像

张小明

前端开发工程师

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/5/25 20:51:10

腾讯HunyuanVideo-Foley开源本地部署指南

腾讯HunyuanVideo-Foley开源本地部署指南 在AI生成视频飞速发展的今天,一个尴尬却普遍的问题始终存在:画面流畅、细节丰富,但一播放——静音。再点开下一秒,背景音乐突兀切入,脚步声与动作节奏错位,玻璃破…

作者头像 李华
网站建设 2026/5/26 2:48:16

Linly-Talker:多模态AI对话系统的革新实践

Linly-Talker:让数字人“活”起来的多模态交互实践 你有没有想过,有一天只需一张照片和一段文字,就能让“自己”在屏幕上开口讲课、回答问题,甚至带着微笑与观众互动?这不再是科幻电影的情节——Linly-Talker 正在把这…

作者头像 李华
网站建设 2026/5/26 13:30:10

十年蝶变:从Lambda到虚拟线程的Java现代化之旅

Java从版本8到25的技术演进,标志着这门编程语言从传统面向对象范式向现代云原生开发的全面转型。 这段十年历程中,Java完成了三次范式革新:Java 8的函数式编程引入、Java 9的模块化重构、以及Java 21的并发模型革命。Virtual Threads的正式发…

作者头像 李华
网站建设 2026/5/27 4:24:58

Qwen3-VL-8B本地化部署:让摄像头真正看懂世界

Qwen3-VL-8B本地化部署:让摄像头真正看懂世界 在智能家居设备日益复杂的今天,你有没有遇到过这样的场景?监控App突然弹出一条“检测到运动”的提醒,点开却发现只是窗帘被风吹动;或者你在上传一张商品图给客服系统时&am…

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

使用Git下载YOLO源码并实现自定义数据集训练

使用Git下载YOLO源码并实现自定义数据集训练 在智能制造、智慧工地和自动驾驶等现实场景中,我们常常需要一个既能跑得快又能认得准的目标检测模型。传统方法要么太慢(比如Faster R-CNN),要么精度不够稳定;而YOLO——“…

作者头像 李华