一文搞懂CPU是如何进行计算的?

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益:

  1. 了解大厂经验
  2. 拥有和大厂相匹配的技术等

希望看什么,评论或者私信告诉我!

文章目录

  • 一、 前言
  • 二、 CPU 全称 Central Processing Unit,中文翻译为中央处理器。
  • 三、CPU组成
  • 四、门电路
  • 五、CPU计算原理
  • 六、总结


一、 前言

CPU 想必我们每个人都听过,但它是既熟悉又陌生,今天呢,我们就来解开 CPU 的面纱。
注意:文章是之前发头条的,但头条有个问题就是时间一长文章就没有办法编辑了,所以后续会再这个平台上汇总

二、 CPU 全称 Central Processing Unit,中文翻译为中央处理器。

你知道CPU吗?其实我们身边好多东西都用到了它,比如智能手表、手机、电脑。如果这些设备想要正常运行,就必须得有CPU。比如,华为手机的麒麟990处理器,其实就是CPU的一种。

三、CPU组成

接下来我们先了解一下CPU是由哪几部分组成的:

CPU组成

控制单元(Control Unit,CU):控制单元是CPU的重要组成部分,它负责控制计算机的操作。控制单元从内存中读取指令,解码指令并控制计算机的各个部件执行指令。

算术逻辑单元(Arithmetic Logic Unit,ALU):算术逻辑单元是CPU的另一个重要组成部分,它负责执行算术和逻辑运算。算术逻辑单元可以执行加、减、乘、除等算术运算,也可以执行与、或、非等逻辑运算。

寄存器(Register):寄存器是CPU内部的一组高速存储器件,用于存储指令和数据。CPU可以从寄存器中读取数据,也可以将数据写入寄存器中。

时钟,负责发出CPU开始计时的时钟信号。

缓存(Cache):缓存是CPU内部的一种高速缓存存储器,用于存储最近使用的指令和数据。缓存可以提高CPU的运行速度,减少对内存的访问次数。

由上述可知,ALU是负责计算的,所以我们本文的重点也是ALU。其实不管是ALU还是其他部分,甚至整个CPU都是由门电路组成的。那么基本的门电路都有哪些呢?

四、门电路

And门:

Or门

Not门

这么门可以随意组合,比如:

And3门

Xor门

16位加法器

多路复用器

等等,这些门电路一点点的由最初的And门、Or门、Not门,一步步组装成成Xor门、多路复用门等等,就这样一路组装下去,最终就可以组装成一个简单的ALU。需要注意的是ALU本质与Xor门或者多路复用门并没有本质上的区别,只不过ALU比他们更复杂了一下、输入的参数比他们的更多了,仅此而已!

五、CPU计算原理

最终我们组装出来了,稍微复杂一点的ALU:

其中zx、nx、zy、ny、f、no 都是控制指令的输入

zr、zg是标识位,zr用来标识out是否为0,为零时,zr被设置为1

zg用来标识out是否为负数,为负数时,zg为设置为1

这是ALU对应的真值表

也就是说当zx=0 nx=0 zy=0 ny=1 f=1 no=1时ALU计算是 y-x

(如果想要让 zx=0 nx=0 zy=0 ny=1 f=1 no=1时ALU计算是 y+x 可以不?当然可以,取决于你怎么组装ALU,不同的组装方式,同样控制指令表达的意义是不一样的。

本文这种组装方式,使得 当zx=0 nx=0 zy=0 ny=1 f=1 no=1时ALU计算是 y-x)

至此的话,如果我们通过编程语言或者计算器计算

2-1

经过层层转化后,达到ALU的指令为

x=1

y=2

zx=0

nx=0

zy=0

ny=1

f=1

no=1

然后经过ALU的计算后,其输出的结果为

out=1

zr=0

zg=0

拿到ALU的输出数据后,经过层层转化,最后在屏幕或者显示器上显示结果

1

即如图:

计算机计算2-1的结果

六、总结

本文通过简单易懂的方式介绍了CPU的组成和计算原理,重点介绍了ALU的门电路组成和控制指令的输入输出,以及如何通过ALU计算两个数的差或和,并最终在屏幕或显示器上显示结果。本文的重点在于ALU的门电路组成和控制指令的输入输出,对于想要深入了解计算机原理的读者来说,是一篇不错的文章。

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

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

相关文章

参考文献自检指南

参考文献作为论文的最后组成部分,可能不是加分项,但是做不好的话绝对会被吐槽,而且是个要命的减分项。因此要做好检查,以下是一些可以遵循的规范。(如有疏漏,欢迎指出) .bib文件 1.字段的选…

Java——运行环境搭建

操作步骤: JDK的下载环境变量PATH的配置JDK的重点目录 bin: 该目录主要存放命令lib:该目录主要存放JDK的类库lib/src.zip:JDK源码 下载JDK 官网地址:https://www.oracle.com/ 安装 双击.exe文件 安装完成! 配置环…

docker安装minio附带图片

1.拉镜像 docker pull minio/minio 2.创建挂载点目录 mkdir -p /usr/local/minio/config mkdir -p /usr/local/minio/data 3.创建minio容器 docker run \ -p 19000:9000 \ -p 9090:9090 \ --nethost \ --name minio \ -d --restartalways \ -e "MINIO_ACCESS_KEYmini…

VUE之旅—day2

文章目录 Vue生命周期和生命周期的四个阶段created应用—新闻列表渲染mounted应用—进入页面搜索框就获得焦点账单统计(Echarts可视化图表渲染) Vue生命周期和生命周期的四个阶段 思考: 什么时候可以发送初始化渲染请求?&#xff…

学习笔记-C++

目录 1、何为常量 2、关键字 3、实型 4、水平制表符 5、string字符串 6、C中的三目运算符 7、随机数种子 8、结构体 9、各的区 10、引用 11、函数默认参数 12、函数占位参数 13、函数重载 14、私有属性 15、让另一个类作为本类的成员 16、声明和实现的文件…

Java开发大厂面试第03讲:线程的状态有哪些?它是如何工作的?

线程(Thread)是并发编程的基础,也是程序执行的最小单元,它依托进程而存在。一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源、更加轻量化&#xff0…

win11快速安装mysql数据库系统

win11快速安装mysql数据库系统 1、下载 1.1 打开官网 1.2 向下滚动页面 1.3 进入下载选项 1.4 下载8.0.4 LTS 1.5 开始下载 1.6 下载中 2、解压 大家注意,此时解压后目录是没有data目录的。 3、数据库初始化 3.1 管理员身份打开CMD 开始菜单上,输入…

1. 杜克大学官方宣布2027届新生画像什么是vue关键特点核心概念简单示例生态系统

目录 1. 杜克大学官方宣布2027届新生画像 什么是vue 关键特点 核心概念 简单示例 生态系统 1. 杜克大学官方宣布2027届新生画像 杜克大学校报《The Chronicle》已连续第七年对杜克大学的一年级新生进行深入调查,探讨该群体家庭受教育背景、家庭收入水平以及…

SketchUp Pro 2024 mac草图大师 激活版 专业的3D建模软件

对于追求专业、高效的设计师们来说,SketchUp Pro 2024 for Mac无疑是最佳的选择。它提供了线条、形状、曲线、文本和图像等多种建模元素,让您能够根据需求自由创作。同时,软件还支持智能标注和尺寸功能,让建模过程更加精确、高效。…

线程池的简单实现与应用

1.什么是线程池 线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。 线程池最大的好处就是减少每次启动、销毁线程的损耗。 2.线程池参数介绍 参数名称说明corePoolSize正式员工的数量.(正式员…

SOP for Oracle 23ai:Python 连接 Oracle 的两种方法

前情回顾 前文介绍了如何使用 python-oracledb 连接 Oracle 23ai 数据库,并演示了如何使用独立连接方式。 其中提到了支持两种连接池: DRCP 和 PRCP。 本文将对这两种连接池做具体演示。 DRCP 和 PRCP 连接池 连接池技术的优点不言而喻: 缩短…

27.哀家要长脑子了!

目录 1.316. 去除重复字母 - 力扣(LeetCode) 2. 1209. 删除字符串中的所有相邻重复项 II - 力扣(LeetCode 哎哟 烦死了 刚刚不小心退出又没保存 又要写一遍 烦死了 最近刷题不得劲啊 感觉这脑子没长一点 1.316. 去除重复字母 - 力扣&am…

动态路由实验新手入门:快速掌握核心知识点

大家好,这里是G-LAB IT实验室。今天带大家学习一下华为动态路由实验配置,新手入门,快速掌握核心知识点! 01、实验拓扑 02、实验需求 1.根据拓扑运行对应的路由协议 2.每个路由器都有自己的环回口,宣告的区域不限制 …

工作达人的小秘密

在快节奏的工作环境中,想要提升效率,保持头脑清晰?别急,我这就为你揭秘我的几大法宝,让我们一起探索它们如何助你事半功倍! 1️⃣【亿可达】 它是一款自动化工具,相当于国内版免费的zaiper。它…

【Pytorch】9.torch.nn.MaxPool2d

什么是MaxPool2d 是对二维矩阵进行池化层下采样的方法 MaxPool2d的用法 相较于卷积层,多出来的参数为ceil_mode 这个参数代表,如果所剩的部分不够卷积核的大小,要不要进行池化操作 具体代码为 import torch import torchvision from torch …

计算机Java项目|springboot母婴商城系统

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简…

使用 cloudflare 免费服务,搭建临时邮箱,无需暴露自己的真实邮箱地址,保护个人隐私

使用 cloudflare 免费服务,搭建临时邮箱 地址 在线演示 🌐Github地址 https://github.com/find-xposed-magisk/cloudflare_temp_email 功能/TODO Cloudflare D1 作为数据库 使用 Cloudflare Pages 部署前端 使用 Cloudflare Workers 部署后端 email 转…

【上海大学计算机组成原理实验报告】五、机器语言程序实验

一、实验目的 理解计算机执行程序的实际过程。 学习编制机器语言简单程序的方法。 二、实验原理 根据实验指导书的相关内容,指令的形式化表示是指采用一种规范化的符号系统,以更清晰、精确地描述和表示指令的逻辑功能和操作步骤。 汇编是一种编程语言…

类和对象的特性

1.检查错误。 代码&#xff1a; #include <iostream>using namespace std;class Time { private:/* data */ public:Time(/* args */);~Time();void set_time(void);void show_time(void);int hour;int minute;int sec; };Time::Time(/* args */) { }Time::~Time() { }T…

纯血鸿蒙APP实战开发——Web获取相机拍照图片案例

介绍 本示例介绍如何在HTML页面中拉起原生相机进行拍照&#xff0c;并获取返回的图片。 效果预览图 使用说明 点击HTML页面中的选择文件按钮&#xff0c;拉起原生相机进行拍照。完成拍照后&#xff0c;将图片在HTML的img标签中显示。 实现思路 添加Web组件&#xff0c;设置…