暑假读书笔记第一天

今日文章:

小林coding:CPU 是如何执行程序的?

目录

      • 内存
      • 中央处理器
      • 指令及其周期
        • 指令类型
        • MIPS指令类型
        • 指令周期
      • 指令的执行速度


冯诺依曼计算机遵循了图灵机的设计,使用了电子元件构造,约定了用二进制进行计算和存储

图灵机基本由纸带和和读写头组成,读写头上有存储单元,控制单元和运算单元

冯诺依曼模型定义了计算机基本结构为5部分:运算器、控制器、存储器、输入设备、输出设备

关系大致如图,运算器和控制器在中央处理器中,存储器为内存,输入输出设备则是计算器外接的设备

在这里插入图片描述

内存

内存存储数据的基本单位是字节(byte),1字节等于8位(8bit)

程序和数据都存储在内存中,内存的存储区域是线性的,地址从0开始编号,自增排列,所以内存读写任何一个数据的速度基本一致

中央处理器

即CPU,32位和64位CPU最主要的区别在于一次能处理多少字节数据

32位寄存器一次能计算的最大整数是4294967295,即 2 32 2^{32} 232

32CPU配32位地址总线理论最大寻址空间为4GB,若需访问更大内存,需通过内存分段映射(如 PAE)等技术实现逻辑扩展。所以理论上32位CPU最大只能操作4GB内存,而64位CPU寻址范围则很大,理论上最大的寻址空间为 2 64 2^{64} 264,但受硬件和系统限制,实际支持的内存通常为 GB 至 TB 级。

指令及其周期

指令类型

指令的类型指令从功能角度划分,可以分为 5 大类:

  • 数据传输类型的指令,比如 store/load 是寄存器与内存间数据传输的指令,mov 是将一个内存地址的数据移动到另一个内存地址的指令;
  • 运算类型的指令,比如加减乘除、位运算、比较大小等等,它们最多只能处理两个寄存器中的数据;
  • 跳转类型的指令,通过修改程序计数器的值来达到跳转执行指令的过程,比如编程中常见的 if-else、switch-case、函数调用等。
  • 信号类型的指令,比如发生中断的指令 trap;
  • 闲置类型的指令,比如指令 nop,执行后 CPU 会空转一个周期;
MIPS指令类型

MIPS指令集

  • R 指令,用在算术和逻辑操作,里面有读取和写入数据的寄存器地址。如果是逻辑位移操作,后面还有位移操作的「位移量」,而最后的「功能码」则是再前面的操作码不够的时候,扩展操作码来表示对应的具体指令的;
  • I 指令,用在数据传输、条件分支等。这个类型的指令,就没有了位移量和功能码,也没有了第三个寄存器,而是把这三部分直接合并成了一个地址值或一个常数;
  • J 指令,用在跳转,高 6 位之外的 26 位都是一个跳转后的地址;
指令周期

CPU读取程序计数器对应内存地址的指令,称为Fetch

CPU对指令进行解码,称为Decode

CPU执行指令,这个部分称为Execution

CPU将计算结果存回寄存器或者将寄存器的值存入内存,这个部分称为Store

在这里插入图片描述

CPU读取[程序计数器]的值,这个值是指令的内存地址,然后CPU的[控制单元]通过[地址总线]通知内存,内存将对应数据通过[数据总线]传给CPU,CPU的[控制单元]将收到的数据暂存到[指令寄存器],[程序计数器]自增指向下一条指令

[控制单元]解析[指令寄存器]中的指令,确定指令的类型和参数

将计算类型的指令,交给算数逻辑单元处理,其他指令由控制单元处理

最后有结果将结果写回到内存或其他寄存器

指令的执行速度

CPU的时钟频率指每秒产生的脉冲信号次数,而每次脉冲信号高低电平的转换就是一个周期,称为时钟周期

指令的执行主要看指令所需的CPU时钟周期数以及CPU时钟周期

在这里插入图片描述

主频越高,CPU时钟周期越短,CPU工作速度就越快

想要程序跑的快,可以从以下三点进行优化:

  • 指令数,表示执行程序所需要多少条指令,以及哪些指令。这个层面是基本靠编译器来优化,毕竟同样的代码,在不同的编译器,编译出来的计算机指令会有各种不同的表示方式。
  • 每条指令的平均时钟周期数 CPI,表示一条指令需要多少个时钟周期数,现代大多数 CPU 通过流水线技术(Pipeline),让一条指令需要的 CPU 时钟周期数尽可能的少;
  • 时钟周期时间,表示计算机主频,取决于计算机硬件。有的 CPU 支持超频技术,打开了超频意味着把 CPU 内部的时钟给调快了,于是 CPU 工作速度就变快了,但是也是有代价的,CPU 跑的越快,散热的压力就会越大,CPU 会很容易奔溃。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/87745.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/87745.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷刷题9

B4355 [GESP202506 一级] 值日 B4355 [GESP202506 一级] 值日 - 洛谷 难度&#xff1a;入门 —— 入门 这道题有三种解法&#xff0c;第三种解法在一部分比赛中被禁用 AC代码&#xff08;第一种方法&#xff1a;循环&#xff09; #include <iostream> #include <…

vuedraggable在iframe中无法使用问题

废话不多说 直接看怎么解决 <draggable:list"staticContent":animation"340"group"selectItem"handle".option-drag"start"onDragStart"end"onDragEnd" ><divv-for"(item, index) in staticConten…

数据库窗口函数详解:语法、技巧与最佳实践

数据库窗口函数详解&#xff1a;语法、技巧与最佳实践 窗口函数是SQL中用于执行复杂分析的强大工具&#xff0c;它允许在结果集的"窗口"&#xff08;一组相关行&#xff09;上进行计算&#xff0c;而不会将行分组为单个输出行。下面我将全面解析窗口函数的语法、应用…

基于开源AI大模型AI智能名片S2B2C商城小程序源码的企业资金使用效率提升路径研究

摘要&#xff1a;在中国创业市场&#xff0c;需求验证后的激烈竞争与投资方对收益率和确定性的严苛要求&#xff0c;迫使企业必须实现资金使用的极致效率。开源AI大模型AI智能名片S2B2C商城小程序源码的技术融合&#xff0c;通过重构用户触达、供应链协同与运营流程&#xff0c…

2025年- H92-Lc200-- 64.最小路径和(多维动态规划)--Java版

1.题目描述 2.思路 &#xff08;1&#xff09;dp[i][j] 表示从起点 (0,0) 走到位置 (i,j) 的最小路径和 &#xff08;2&#xff09;对于位置 (i, j)&#xff0c;只能从 上面 (i-1,j) 或 左边 (i,j-1) 走过来&#xff0c;所以&#xff1a; dp[i][j] grid[i][j] min(dp[i-1][j…

CHAIN(GAN的一种)训练自己的数据集

简介 简介:作者针对数据有限场景下GANs训练中的判别器过拟合问题,提出了CHAIN(Lipschitz连续性约束归一化)方法。作者首先从理论角度分析了GAN泛化误差,发现减少判别器权重梯度范数对提升泛化能力至关重要。然后深入研究了批归一化(BN)在GAN判别器中应用困难的根本原因…

3D建模公司的能力与技术

在数字化时代&#xff0c;3D建模公司扮演着越来越重要的角色。它们是专业从事三维建模设计服务的机构或团队&#xff0c;利用先进的三维建模软件和技术&#xff0c;为客户提供从概念设计到最终成品的全流程服务。这些服务广泛应用于建筑设计、工程规划、产品设计、动画制作等多…

《深度剖析:5G网络切片如何精准保障不同业务QoS需求》

5G网络切片技术依托网络功能虚拟化(NFV)和软件定义网络(SDN)两大核心技术。NFV就像一位神奇的变形师,把传统硬件网络功能,如路由器、防火墙、基站等,转化为软件模块,让它们能运行在通用硬件平台上。如此一来,硬件资源得以摆脱传统网络功能的束缚,实现灵活调配。例如,…

力扣hot100题(1)

目录 1、两数之和2、移动零3、相交链表4、有效的括号5、反转链表6、回文链表7、环形链表8、环形链表II9、合并两个有序链表10、二叉树的中序遍历 1、两数之和 1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; 方法1&#xff1a; class Solution {public int[] twoSum(i…

C++的回顾与学习之C++入门基础

目录 1、C入门 1&#xff09;C关键字 2&#xff09;命名空间 3&#xff09;C中的输入输出 4&#xff09;缺省参数 5&#xff09;函数重载 6&#xff09;引用 引用和指针的不同点&#xff1a; 7&#xff09;auto关键字 8&#xff09;内联函数 9&#xff09;指针空值nu…

【使用Android Studio调试手机app时候手机老掉线问题】

如果你各种方式都尝试失败了&#xff0c; 请看这里 连接时候通过logcat查看你手机Android的平台去SDK下载所有对应的平台SDK重新连接尝试

二叉树题解——验证二叉搜索树【LeetCode】前序遍历

98. 验证二叉搜索树 &#x1f50d; 题目目标 判断一棵二叉树是否为有效的二叉搜索树&#xff08;BST&#xff09;&#xff0c;定义如下&#xff1a; 左子树所有节点 < 根节点 右子树所有节点 > 根节点 且左右子树也必须是二叉搜索树 一、算法逻辑&#xff08;逐步通…

Javaweb - 10.3 Servlet 生命周期

目录 生命周期简介 生命周期测试 load-on-startup 补充&#xff1a;defaultServlet Servlet 的继承结构 1. 顶级的 Servlet 接口 2. 抽线的类 GenericServlet 3. HttpServlet 抽象类 4. 自定义 Servlet 补充&#xff1a; 完&#xff01; 生命周期简介 什么是生命周…

RSA数字签名方案的C语言实现(带测试)

RSA 算法的 C语言实现通常比较复杂&#xff0c;但已经有许多密码算法库实现了 RSA 算法&#xff0c;例如OpenSSL、Libgcrypt​ 和 Botan ​等。我们可以在这些库的基础上进行配置或移植&#xff0c;从而快速实现密码算法。但这些库主要面向大量设备进行优化&#xff0c;如通用计…

创客匠人视角:知识变现与创始人 IP 打造的破局之道

当知识付费从流量红利期进入精耕细作阶段&#xff0c;为何专业能力强的内容创作者反而难以变现&#xff1f;创客匠人通过 1500 案例陪跑发现&#xff1a;缺乏 IP 思维的知识输出如同雾中航行&#xff0c;而创始人 IP 打造正是连接知识价值与商业变现的核心桥梁。一、定位重构&…

结构分析设计软件 SCIA Engineer 25.0 x64

详情 Nemetschek SCIA Engineer是一家从事多项目编程、分析和软件设计的公司。该软件具有广泛的不同功能。该软件可用于以简单的方式设计建筑物、工业工厂和桥梁。 Nemetschek SCIA Engineer软件的特点和功能&#xff1a; BIM模型人 使用网格和故事 3D风 自由负载 互联网…

怎么处理[TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark

这个错误说明 Elasticsearch 的磁盘空间严重不足&#xff0c;已触及最高级别&#xff08;flood-stage&#xff09;的水位线。作为自我保护机制&#xff0c;Elasticsearch ​自动将受影响的索引设置为只读模式 (read-only-allow-delete)​&#xff0c;从而阻止写入操作&#xff…

pytorch学习-11卷积神经网络(高级篇)

2.线性模型 3.梯度下降算法 4.反向传播(用pytorch算梯度) 5.用pytorch实现线性回归 6.logistic回归 7.处理多维特征的输入 8.加载数据集 9.多分类问题 10.卷积神经网络(基础篇) 11.卷积神经网络&#xff08;高级篇&#xff09;_哔哩哔哩_bilibili 11.1 GoogleNet Google…

ubuntu 安装QT

在 Ubuntu 系统上安装 Qt 可以通过以下步骤完成&#xff0c;以下是详细的安装指南 &#xff1a; 1. 安装前的准备工作 在开始安装 Qt 之前&#xff0c;需要确保你的 Ubuntu 系统已经更新到最新版本&#xff0c;并且安装了一些必要的依赖。 1.1 更新系统 首先&#xff0c;打…

CppCon 2018 学习:RAPID PROTOTYPING OF GRAPHICS SHADERS IN

这段内容在讲**着色器&#xff08;Shader&#xff09;**的基础概念&#xff0c;尤其是它在现代 GPU&#xff08;图形处理单元&#xff09;中的作用。以下是逐条解释与理解&#xff1a; “Depicting depth perception in 3D models or illustrations by varying levels of darkn…