计算机的大脑 CPU

news2024/9/20 14:23:09

晶体管

  1. N型MOS管
  2. P型MOS管

算术逻辑单元 ALU

晶体管–>门电路–>加法器–>ALU

既可以做逻辑运算、也可以做逻辑运算、成为计算机CPU中非常核心的组件。

指令

  1. 一条指令只完成一个基本操作的精简指令集 RISC 、它们的指令长度基本上是固定的。比如 ARM
  2. 一条指令可以完成一个复杂功能的复杂指令集 CISC、它们的指令长度基本上是不固定的 x86

指令执行的过程

  1. 读取指令

    读取指令的电路会根据指令寄存器从内存中读取要执行的指令、交给指令译码电路来处理

  2. 指令译码

    译码电路会分析出这条指令的长度、就知道这个指令从哪里开始

  3. 指令执行

    ALU 来执行这条指令所代表的功能

  4. 数据回写

    将结果写入到对应的位置

指令流水线

在这里插入图片描述

指令流水线遇到的问题(冒险)

  1. 结构冒险

    流水线出现硬件资源竞争

  2. 数据冒险

    流水线中后面的指令需要等待前面指令完成数据的读写

  3. 控制冒险

    流水线需要根据前面指令的执行结果来决定下一步去哪儿执行

遇到这些问题只能让流水线停顿下来等待、等待前面的指令完成、再继续工作

缓存

使用 SRAM(静态随机存储器)、耗用很多的晶体管、大小只有 64kb

缓存行一般为 64字节、每个缓存行有标志位:现在只有失效、脏数据两种状态

内存中读取的数据放在缓存的哪个位置上?

取模之后再用列表存储,如果列表的长度为2、则为二路组相连。如果为4则为死路组相连。

指令缓存和数据缓存

将指令和数据在缓存中分开存储、这样子能大大减少流水线执行的结构冒险

A 执行指令需要读取数据

B 读取指令

如果都在缓存中、如果缓存没有分类、那么A和B不能同时执行,如果分类了的话、分别走不同的线路同时获取

多核缓存不一致引发的问题

缓存一致性协议 MESI

各个 CPU 之间拉了一条新的专线、用于CPU 之间进行信息沟通、不同于CPU外部的总线系统、大家把它叫做片内总线

  1. M modify 已修改

    缓存行已经被修改、与内存的值不一样。

  2. E exclude 独占

    缓存行只存在当前 CPU 核心缓存中、而且和内存中数据一样

  3. S share

    缓存行存在于多个 CPU 核心缓存中、而且和内存中的内容一致

  4. I invalid 无效

    缓存行是无效丢

指令乱序执行

在指令经过译码之后、进入 ALU 执行之前、我没设置了一个缓冲区、指令会先到这里排队。

在这缓冲区中、会登记指令师傅有数据依赖、具体依赖什么数据、需要用到执行部件有哪些、当前是否繁忙、以及需要读写的寄存器是哪些等信息。这个缓冲区我们称它为保留站。随后指令调度单元就可以去这个缓冲区挑选没有依赖的指令来执行。

重排序缓冲区

指令在内部是乱序执行的、但不能把结果直接进行回写。所以得按照它们实际的顺序重新排序后再回写。所以在外面看来指令还是按顺序一条条执行的、但是内部真正执行的时候是打乱的、但这个不会影响程序的逻辑。

通过指令乱序执行、可以减少数据冒险带来的停顿了。

分支预测

针对指令流水线遇到的控制冒险、我们有相当大的概率预测正确后续执行的分支、不用再把流水线停顿下来。

预测错了怎么办?

错了就错了呗、大不了把已经进入流水线中还没处理完的指令中间结果全部清除、当没事发生过。

一条指令同时处理多个数据

并行处理

单条指令多数据流 SIMD single instruction multiple data

比如说对一个数据里面的元素都 + 1

超线程技术

一个核同时执行两个线程

每个 CPU 分成两套班子、各自维护一套寄存器、对外宣称我们有两个不同的物理核心、但实际上缓存和计算资源只有一套。

在执行指令的时候、充分利用等待时间去执行另一个线程的指令。这样子就不用担心指令以来的问题了。比如说内存读取缓慢、指令依赖等方面的原因、虽然有乱序执行、但是找到没有依赖的指令还是不那么容易。

还有就是如果遇到资源闲置的时候、可以同时执行两个线程的指令、比如一个是整数运算指令、一个是浮点数运算指令。

绝大多数能提升 20 -30 % 就很不错啦

CPU 如何管理内存的

没有操作系统的时候、程序执行直接使用真实内存地址、实地址模式。

虚拟内存、保护模式。

每个程序都可以使用 0x000 到 0xfff 总共 4GB 那么大范围的地址空间、当然不会真的分配那么多空间、物理内存总共也没有那么大。

而是按需分配、分配的单位是页、32 位的一页是4kb、分配管理的活是操作系统做的。CPU 只要做好地址翻译的工作就好了。

CR3 寄存器专门用来指向一个地址翻译查询字段。32位地址划分为3部分、前面两部分分别指向两级目录的条目、用来定位地址在物理内存的哪个页、最后一部分就是指向物理内存页面的偏移、这就是地址翻译的工作。

分页交换

随着程序越来越多、对内存的需求页越来越大、内存空间很快就要耗尽。

去硬盘空间中划分一块区域来、把在内存长时间没有用到的页面换到这块区域,然后做个标志、如果后面谁访问那个页面、CPU 就就先检查、如果有这个标志、就发送一个错误的中断信号给操作系统、去把那个页面换回来。

GPU 和 CPU 有啥区别

SIMT 单指令多线程技术 批量执行计算 GPU 的

SIMD 单指令多数据流 批量操作数据 CPU 的

https://book.douban.com/subject/36428782/

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

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

相关文章

【SLAM14讲】02 视觉SLAM基本架构

一、传感器 1.1 安装位置分类 根据安装位置分为两类: 携带于机器人本体 上的传感器,比如激光传感器、相机、轮式编码器、惯性测量单元(Inertial Measurement Unit, IMU)等等,它们测到的通常都是一些间接的物理量而不…

一键创建日期命名的txt文件(方便日报)

背景 刚工作,免不了写日报,写日计划的时候。为了方便,写了一个bat文件直接点击即可创建今天时间命名的txt文件 代码 win10我的笔记本 echo set tmp%date:~3,4%%date:~8,2%%date:~11,2% type nul > %tmp%.txtwindows 下创建文件就是 t…

排序算法性能分析

目录 实现插入排序、冒泡排序、选择排序、合并排序、快速排序算法(从小到大) ①插入排序 ②冒泡排序 ③选择排序 ⑥快速排序 五种排序 现在有10亿的数据(每个数据四个字节),请快速挑选出最大的十个数&#xff0…

红黑树与234树

红黑树 参考:宇文新粥:红黑树红黑树可视化 234树 这个树有三种节点,分别包含1/2/3个元素,下方可以有2/3/4个子节点理解234树的插入 红黑树与234树之间的关系 红黑树有几个特性,但如果从234树的角度理解红黑树&…

在微软十年了!

时光飞逝,光阴如梭。 2013 年的 7 月 8 号,我在隔壁的交大软院毕业后,正式入职紫竹微软。 至今,已是整整 10 年了。 记得当时的闵行回市区的交通还不是那么堵,坐 5点半的班车下班,S4中环一路走,…

【C++ OJ练习】4.字符串中的第一个唯一字符

1.题目链接 力扣 2.解题思路 利用计数排序的思想 映射进行计数 最后计数为1的那个字符就是唯一字符 从前往后遍历 可以得到 第一个唯一字符 3.代码 class Solution { public:int firstUniqChar(string s) {//使用映射的方式统计次数 计数排序思想int count[26] { 0 };fo…

机器视觉硬件选型-工业光源-环形光源

视觉人机器视觉-硬件发货前硬件确认效果 工业光源根据灯的几何形状可分为条形光源,分区光源,环形光源、圆顶(积分)光源、平面光源,同轴光源,方形光源,线扫光源,点光源,线光源等等。 …

在上海滩,听懂5G时代的浪奔浪流

几天前的“湾区升明月”上,赵雅芝与吕良伟合唱了一首《上海滩》。“浪奔,浪流”的歌词一出,无数记忆涌上了一代人的心头。 上海这座城市,始终代表着进取、创新、引领,代表着面向世界的中国形象。黄浦江的浪花&#xff…

【尚医通】vue3+ts前端项目开发笔记 2 —— 创建项目、封装网络请求、集成elment-plus 、重置样式、准备状态管理/路由 等开发前准备

尚医通开发记录(Vue3TypeScriptPiniaAxios) 一、接口地址 服务器地址:http://syt.atguigu.cn 医院接口:http://139.198.34.216:8201/swagger-ui.html 公共数据接口:http://139.198.34.216:8202/swagger-ui.html 会员接口:http://139.198.34…

掌握文件转换的技巧:在线工具帮你轻松转换为PDF格式

许多文件都有自己的原始格式,然而这些格式都可以进行修改。遇到无法打开或信息丢失的情况时,可以进行格式转换,其中效果最好的就是PDF格式,无论在哪个平台上查看文档,都有自己的格式,能够在所有平台上查看的…

中国首个铝基轻量化平台?纯电中型 SUV 奇瑞eQ7将于7月12日发布

奇瑞新能源将于7月12日发布首台量产车奇瑞eQ7,并公布中国首个铝基轻量化平台。 车型参数:奇瑞 eQ7是一款定位纯电动中型SUV,采用后置后驱和油冷扁线三合一电机技术。其以全铝车身和全铝平台为基础,整备质量为185kg。车身尺寸为467…

表中签到ID格式是以逗号分隔,需将ID拆开并分成多条数据

原有数据格式: 拆分后数据格式: 拆分SQL: select bc.资源名称,bc.资源ID,bc.签到时间,bc.签到人,bb.column_value 签到附件ID from report_fir.V_kw_checksign_info bc,table(hbrmw6.split_string(bc.签到附件ID,,)) bb; HBRMW6.split_string函数创…

mysql数据库内存占用高原因(数据库内存占用高)

1、查看数据库分配内存大小 ( mysql内存计算器,具体地址为http://www.mysqlcalculator.com/ ) select VARIABLE_NAME,VARIABLE_VALUE/1024/1024 MB from information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME in (key_buffer_size,query_cache_size,tmp_tabl…

基本数据与封装对象转换(Java)

文章目录 1. 基本数据与对象封装转换1.1 8种基本数据类型:1.2 基本数据类型 -- > 封装对象:1.3 封装对象 -- > 基本数据类型:1.4 借助String类型作为中间桥梁 2. 自动转换规则 1. 基本数据与对象封装转换 1.1 8种基本数据类型: boolean(true/false),byte(1 …

时间序列预测 | Matlab粒子群算法(PSO)优化极限梯度提升树XGBoost时间序列预测,PSO-XGBoost时间序列预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 时间序列预测 | Matlab基粒子群算法(PSO)优化极限梯度提升树XGBoost时间序列预测,PSO-XGBoost时间序列预测模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码…

【雕爷学编程】Arduino动手做(153)---2.4寸TFT液晶触摸屏模块4

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

基于matlab使用激光雷达检测地平面和障碍物(附源码)

一、前言 此示例演示如何通过分割地平面并查找附近的障碍物来处理来自安装在车辆上的传感器的 3-D 激光雷达数据。这可以促进车辆导航的可驾驶路径规划。该示例还演示如何可视化流式激光雷达数据。 二、创建 Velodyne 文件读取器 本例中使用的激光雷达数据是使用安装在车辆上…

[工业互联-17]:常见EtherCAT主站与实现方法

目录 第1章 EtherCAT入门 1.1 简介 1.2 EtherCAT通信架构 第2章 EtherCAT主站方案 2.1 方案概述 2.2 主站配置步骤 2.3 EtherCAT主站软件 第3章 Windows操作系统支持EtherCAT的基本步骤 第4章 常见主站软件介绍:TwinCAT 4.1 简介 4.2 软件架构 4.3 应…

【计算机网络】第三章 数据链路层(概述 封装成桢 差错检错)

文章目录 第三章 数据链路层3.1 数据链路层概述3.2 封装成帧3.3 差错检测3.3.1 奇偶校验3.3.2 循环冗余校验 第三章 数据链路层 3.1 数据链路层概述 数据链路层是计算机网络体系结构中的一层,位于物理层和网络层之间。它负责在相邻节点之间传输数据,并提…

hugging face参数高效微调peft源码解析

大模型参数高效微调(PEFT) - 知乎 让天下没有难Tuning的大模型-PEFT技术简介 - 知乎 大模型参数高效微调技术原理综述(三)-P-Tuning、P-Tuning v2 - 知乎 你似乎来到了没有知识存在的荒原 - 知乎 大模型参数高效微调技术原理综述(六&a…