CPU是如何工作的?什么是冯·诺依曼架构和哈弗架构?

2024-02-19 09:36

本文主要是介绍CPU是如何工作的?什么是冯·诺依曼架构和哈弗架构?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《嵌入式工程师自我修养/C语言》系列——CPU是如何工作的?什么是冯·诺依曼架构和哈弗架构?

  • 一、CPU内部结构及工作原理
    • 1.1 CPU的结构
    • 1.2 CPU工作流程举例
  • 二、计算机体系结构
    • 2.1 冯·诺依曼架构
    • 2.2 哈弗架构
  • 三、总结

快速学习嵌入式开发其他基础知识?>>>>>>>>> 返回专栏总目录 《嵌入式工程师自我修养/C语言》<<<<<<<<<

Tip📌:鼠标悬停双虚线关键词/句,可获得更详细的描述

一、CPU内部结构及工作原理

1.1 CPU的结构

  CPU内部构造很简单,宏观上划分为算术逻辑运算单元、控制单元和存储单元。程序代码存储在内部存储器(内存)中,CPU可以从内存中一条一条地取指令、翻译指令并执行它。

RAM、ROM、DRAM、SRAM、Flash、EMMC傻傻分不清?建议先阅读:>>>>>> 一文帮你快速区分常用存储器!<<<<<<

算术逻辑单元(Arithmetic and Logic Unit,ALU):由算术单元和逻辑单元组成(他俩分别负责加、减、乘等数学运算以及与、或、非等逻辑运算),是处理器最核心的部件。ALU只是纯粹的运算单元,要想完成一个指令运行的整个流程,还需要控制单元的协助。

控制单元:通俗的讲,该部分会根据程序计数器PC中的地址,会不断地从内存RAM中取指令,放到指令寄存器中并进行译码,将指令中的操作码和操作数分别送到ALU,执行相应的运算。实际上,该单元还可以进一步划分,比如划分为:

  • 指令控制:完成取指令、分析指令、PC自增等操作,然后交给执行单元来执行;
  • 时序控制:主要分为时钟发生器、倍频定义单元,时钟发生器由石英晶体振荡器发出非常稳定的脉冲信号,也就是CPU的主频,而倍频定义单元则定义了CPU主频是存储器频率(总线频率)的几倍;
  • 总线控制:控制地址总线、数据总线、控制总线等CPU的内外部总线;
  • 中断控制:控制各种各样的中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU处理。

存储单元:主要包括通用寄存器(比如R0、R1. . .)、状态寄存器(CPSR)以及内部cache(缓存)。

  • 通用寄存器:用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果;
  • 状态寄存器:主要有两大功能,第一是存放当前指令执行结果的各种状态或条件码,比如结果是否为负、是否为0、是否进位、是否溢出等;其次就是存放控制信息,比如中断标志位;
  • cache:进行高速数据交换的存储器(为了解决CPU的工作频率与内存访问速度间差异过大导致的性能问题而存在,后文会解释)。

1.2 CPU工作流程举例

  假设通过高级语言编写的一行代码实现的功能是两个整数A、B相加,该程序代码经过编译器编译后,作为机器指令存储在内存RAM中,如下图所示;
在这里插入图片描述
  控制单元通过指令译码电路会将该指令分解为操作码和操作数,再根据操作数地址从内存RAM中加载数据A和B,传送到ALU的输入端,然后将操作运算类型(操作码)即加法也告诉ALU。ALU有了输入数据和操作类型,就可以直接进行相应的运算了,并输出运算结果。

  为了效率考虑,运算结果一般会先保存到寄存器中,然后由控制单元将该数据从寄存器存储(Store)到内存RAM中。至此,一个完整的加法指令执行流程就结束了,控制单元会继续取下一条指令,然后翻译指令、运行指令, 周而复始。

Tips📌:

  • 内存带宽的瓶颈会拖CPU的后腿,影响CPU的性能。为了提高性能,防止RAM拖后腿,CPU一般都会在内部配置一些寄存器,用来保存CPU在计算过程中的各种临时结果和状态值。
  • ALU在运算过程中,当运算结果为0、为负、数据溢出时,会有一些Flags标志位输出,这些标志位对控制单元特别有用,如一些条件跳转指令,其实就是根据运算结果的这些标志位进行跳转的

二、计算机体系结构

  上文提到CPU内部的结构其实很简单,除了ALU、控制单元、寄存器和少量Cache,根本没有多余的空间存放我们编写的代码。因此我们通常将编写的程序(指令序列)存储在额外的内部存储器——内存RAM中(建议先阅读:>>>>>> 一文帮你快速区分常用存储器!<<<<<<)。

  但上文我们也提到,内存带宽瓶颈会影响CPU的性能,于是为了兼顾存储和效率,计算机系统一般会采用内存+外存的存储结构:程序指令保存在诸如磁盘、NAND Flash、SD卡等外部存储器中,当程序运行时,相应的程序会首先加载到内存,然后CPU从内存一条一条地取指令、翻译指令和运行指令。

  计算机主要用来处理数据。我们编写的程序,除了指令,还有各种各样的数据。指令和数据都需要保存在存储器中,根据保存方式的不同,计算机可分为两种不同的架构:冯·诺依曼架构和哈弗架构

2.1 冯·诺依曼架构

  采用冯·诺依曼架构的计算机,其特点是程序中的指令和数据混合存储,存储在同一块存储器的不同物理地址上。

  一般我们会把指令和数据存放到外存储器中,当程序运行时,再把这些指令和数据从外存储器加载到内存储器(内存储器支持随机访问并且访问速度快,这里说的外存储器通常是flash、EMMC等,内存储器指的是RAM,通常为DRAM,再次建议先阅读:>>>>>> 一文帮你快速区分常用存储器!<<<<<<),如下图所示。
在这里插入图片描述
Tips📌:
  由于该架构结构简单,工程上容易实现,所以很多现代处理器都采用这种架构,如X86、ARM7、MIPS等。

2.2 哈弗架构

  采用哈弗架构的计算机,其特点是程序中的指令和数据被分开独立存储,它们分别被存放到程序存储器和数据存储器,如下图所示。
在这里插入图片描述
Tips📌:

  • 每个存储器都独立编址,独立访问,而且指令和数据可以在一个时钟周期内并行访问;
  • 使用该架构的处理器运行效率更高,但缺点是CPU实现会更复杂。8051系列单片机采用的就是哈弗架构。

三、总结

  综上所述,CPU是计算机的核心组件,它负责执行计算机程序中的指令。冯·诺依曼架构和哈弗架构是两种不同的计算机体系结构。

  冯·诺依曼架构的特点是将程序指令和数据存储在同一块内存中,通过一个共享的总线进行数据传输。这种结构的优点是简单易懂,容易实现,广泛应用于现代计算机系统中。而哈弗架构则是将指令和数据分开存储,通过不同的总线进行数据传输,这种结构可以提高计算机的并行处理能力。总的来说,他们都各有优劣,选择哪种架构取决于具体的应用场景和需求。

>>>>>>>>> 返回专栏总目录 《嵌入式工程师自我修养/C语言》<<<<<<<<<

这篇关于CPU是如何工作的?什么是冯·诺依曼架构和哈弗架构?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/724270

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

工作常用指令与快捷键

Git提交代码 git fetch  git add .  git commit -m “desc”  git pull  git push Git查看当前分支 git symbolic-ref --short -q HEAD Git创建新的分支并切换 git checkout -b XXXXXXXXXXXXXX git push origin XXXXXXXXXXXXXX

嵌入式方向的毕业生,找工作很迷茫

一个应届硕士生的问题: 虽然我明白想成为技术大牛需要日积月累的磨练,但我总感觉自己学习方法或者哪些方面有问题,时间一天天过去,自己也每天不停学习,但总感觉自己没有想象中那样进步,总感觉找不到一个很清晰的学习规划……眼看 9 月份就要参加秋招了,我想毕业了去大城市磨练几年,涨涨见识,拓开眼界多学点东西。但是感觉自己的实力还是很不够,内心慌得不行,总怕浪费了这人生唯一的校招机会,当然我也明白,毕业

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

husky 工具配置代码检查工作流:提交代码至仓库前做代码检查

提示:这篇博客以我前两篇博客作为先修知识,请大家先去看看我前两篇博客 博客指路:前端 ESlint 代码规范及修复代码规范错误-CSDN博客前端 Vue3 项目开发—— ESLint & prettier 配置代码风格-CSDN博客 husky 工具配置代码检查工作流的作用 在工作中,我们经常需要将写好的代码提交至代码仓库 但是由于程序员疏忽而将不规范的代码提交至仓库,显然是不合理的 所

创业者该如何设计公司的股权架构

本文来自七八点联合IT橘子和车库咖啡的一系列关于设计公司股权结构的讲座。 主讲人何德文: 在公司发展的不同阶段,创业者都会面临公司股权架构设计问题: 1.合伙人合伙创业第一天,就会面临股权架构设计问题(合伙人股权设计); 2.公司早期要引入天使资金,会面临股权架构设计问题(天使融资); 3.公司有三五十号人,要激励中层管理与重要技术人员和公司长期走下去,会面临股权架构设计问题(员工股权激

未来工作趋势:零工小程序在共享经济中的作用

经济在不断发展的同时,科技也在飞速发展。零工经济作为一种新兴的工作模式,正在全球范围内迅速崛起。特别是在中国,随着数字经济的蓬勃发展和共享经济模式的深入推广,零工小程序在促进就业、提升资源利用效率方面显示出了巨大的潜力和价值。 一、零工经济的定义及现状 零工经济是指通过临时性、自由职业或项目制的工作形式,利用互联网平台快速匹配供需双方的新型经济模式。这种模式打破了传统全职工作的界限,为劳动

Smarty模板引擎工作机制(一)

深入浅出Smarty模板引擎工作机制,我们将对比使用smarty模板引擎和没使用smarty模板引擎的两种开发方式的区别,并动手开发一个自己的模板引擎,以便加深对smarty模板引擎工作机制的理解。 在没有使用Smarty模板引擎的情况下,我们都是将PHP程序和网页模板合在一起编辑的,好比下面的源代码: <?php$title="深处浅出之Smarty模板引擎工作机制";$content=