news 2026/2/9 20:33:51

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

作者头像

张小明

前端开发工程师

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/2/9 10:27:30

Conda安装特定版本Python以匹配TensorRT要求

Conda安装特定版本Python以匹配TensorRT要求 在部署深度学习模型到生产环境时,尤其是涉及自动驾驶、工业质检或智能安防这类对延迟极为敏感的场景中,推理性能优化不再是“加分项”,而是决定系统能否落地的关键。训练完成的模型若直接运行于P…

作者头像 李华
网站建设 2026/2/4 9:51:59

FaceFusion人脸增强功能实测:对比传统图像处理工具的优势

FaceFusion人脸增强功能实测:对比传统图像处理工具的优势 在数字内容创作门槛不断降低的今天,一张“看起来很真”的换脸视频已不再是影视工业的专属产物。从社交媒体上的趣味滤镜,到专业影视中的角色重塑,AI驱动的人脸编辑技术正以…

作者头像 李华
网站建设 2026/2/4 20:45:23

PaddlePaddle图像分类模型训练:使用清华源加速预处理库下载

PaddlePaddle图像分类模型训练:使用清华源加速预处理库下载 在高校实验室的某个下午,一位研究生正焦急地盯着终端——pip install paddlepaddle 已经卡在“Downloading”状态超过十分钟。网络延迟、连接超时、包文件损坏……这些看似琐碎的问题&#xff…

作者头像 李华
网站建设 2026/2/5 14:12:31

如何在本地运行LobeChat镜像?超详细图文教程来了

如何在本地运行 LobeChat 镜像?超详细图文教程来了 你有没有试过,明明本地已经跑起了 Ollama 或者其他大模型服务,却苦于没有一个像样的聊天界面来和它交互?复制粘贴 API 请求太原始,自己从零写前端又太耗时——这正是…

作者头像 李华
网站建设 2026/2/8 0:25:57

基于Next.js的LobeChat为何成为GitHub星标项目?

基于Next.js的LobeChat为何成为GitHub星标项目? 在AI技术席卷全球的今天,大语言模型(LLM)的能力已经足够惊艳——写代码、做翻译、生成内容信手拈来。但一个常被忽视的事实是:再强大的模型,如果交互界面粗糙…

作者头像 李华
网站建设 2026/2/8 1:56:14

LobeChat能否实现语音转文字笔记?会议记录数字化转型

LobeChat能否实现语音转文字笔记?会议记录数字化转型 在远程办公常态化、跨部门协作频繁的今天,一场两小时的会议结束后,谁来整理那长达三四十分钟的录音?是让某位同事熬夜逐字听写,还是依赖某个“智能”工具自动生成条…

作者头像 李华