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

news2024/9/21 0:48:53

你好,我是 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.coloradmin.cn/o/1680337.html

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

相关文章

优秀测试的核心能力!2招高效定位分析BUG!

之所以写这一篇文章,是突然想起来曾经在测试过程中被开发嘲讽过,事情是这样的,当时发现了一个疑似前端的Bug就草草提交到了禅道,结果刚来的女前端看到了就有点生气地问我为啥不查清到底是前后端问题就直接派给她前端了&#xff0c…

React框架-Next 学习-1

创建一个 Next.js 应用,node版本要高,16.5以上 npm淘宝镜像切为https://registry.npmmirror.com npm config set registry https://registry.npmmirror.com npx create-next-applatest//安装后 使用npm run dev 启动 Next.js 是围绕着 页面(pages&am…

uac驱动之const修饰的变量和const修饰的指针

const int*p // p所指向的空间是常量 不可修改 ,但p可以修改 int*const p // p所指向的空间是可以修改 ,p不可以修改 #include <stdio.h> #include <string.h>struct usb_string {char id;const char *s; };enum {STR_ASSOC,STR_AC_IF,STR_USB_OUT_IT,STR_USB_O…

单位个人怎样向报社的报纸投稿?

作为一名单位的信息宣传员,我肩负着每月定期在媒体上投稿发表文章的重任。然而,在投稿的道路上,我经历了不少波折和挫折。 一开始,我天真地以为只要将稿件发送到报社的投稿邮箱,就能轻松完成任务。然而,现实却远比我想象的复杂。邮箱投稿的竞争异常激烈,编辑们会在众多稿件中挑…

ROS2系统与px4通信测试

参考文章&#xff1a; No communication with ROS2 using MicroXRCEAgent with px4 board ROS2官方安装及测试程序 概要 新安装的ROS2与PixHawk开发板进行通信。 操作步骤 启动示例程序&#xff0c;在&#xff5e;/ws_sensor_combined/src路径下执行&#xff1a; ros2 l…

MYSQL-9.问题排查

问题排查的思路与方向 问题排查思路 分析问题&#xff1a;根据理论知识经验分析问题&#xff0c;判断问题可能出现的位置或可能引起问题的原因&#xff0c;将目标缩小到一定范围&#xff1b;排查问题&#xff1a;基于上一步的结果&#xff0c;从引发问题的“可疑性”角度出发…

【C++ 高阶数据结构 Test】AVL ~ 二叉搜索树

文章目录 1. AVL 树概念2. AVL 树节点的定义3. AVL树的插入4. AVL树的旋转4.1 新节点插入较高左子树的左侧---左左&#xff1a;右单旋4.2 新节点插入较高右子树的右侧---右右&#xff1a;左单旋4.3 新节点插入较高左子树的右侧---左右&#xff1a;先左单旋再右单旋4.4 新节点插…

【计算机毕业设计】springboot房地产销售管理系统的设计与实现

相比于以前的传统手工管理方式&#xff0c;智能化的管理方式可以大幅降低房地产公司的运营人员成本&#xff0c;实现了房地产销售的 标准化、制度化、程序化的管理&#xff0c;有效地防止了房地产销售的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能够及时、…

九游娱乐携手云达不莱梅共谋跨界新发展!

近日&#xff0c;九游娱乐正式宣布&#xff0c;成为德国著名足球俱乐部云达不莱梅俱乐部的亚洲官方合作伙伴。此次跨界合作将携手开创体育与娱乐融合的新篇章&#xff0c;不仅彰显九游娱乐在全球体育和娱乐领域的影响力&#xff0c;也为云达不莱梅俱乐部在亚洲市场带来了新的机…

js之选项卡制作实例

大家好&#xff0c;今天给大家书写选项卡实例&#xff0c;话不多说&#xff0c;直接上干货 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, in…

UVM寄存器模型——手写Ralf问题debug

寄存器模型是UVM中至关重要的一部分&#xff0c;如果没有寄存器模型&#xff0c;那么验证平台对于DUT内寄存器的访问方式将十分有限&#xff0c;对DUT运行状态的把控也会变得更为复杂。 在验证过程中&#xff0c;scoreboard或者其他验证组件经常需要了解当前时间某个寄存器的值…

c++20---std::erase----std::erase_if

问题&#xff1a;如何删除满足条件的所有元素。 erase #include <iostream> #include <algorithm> #include <vector>int main(){std::vector<int> vec{1,2,3,1,1,1,1,1};std::erase(vec,1);for(int v:vec) std::cout<<v<<" "…

详细分析Vue3中的reactive(附Demo)

目录 1. 基本知识2. 用法3. Demo 1. 基本知识 reactive 是一个函数&#xff0c;用于将一个普通的 JavaScript 对象转换为响应式对象 当对象的属性发生变化时&#xff0c;Vue 会自动追踪这些变化&#xff0c;并触发相应的更新 Vue2没有&#xff0c;而Vue3中有&#xff0c;为啥…

[AI智能摄像头]RV1126部署yolov5并加速

导出onnx模型 yolov5官方地址 git clone https://github.com/ultralytics/yolov5 利用官方命令导出python export.py --weights yolov5n.pt --include onnx 利用代码导出 import os import sys os.chdir(sys.path[0]) import onnx import torch sys.path.append(..) from m…

如何使用JMeter测试导入接口/导出接口?

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号&#xff1a;互联网杂货铺&#xff0c;回复1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 今天上班&#xff0c;被开发问了一个问题&#xff1a;JM…

怎样恢复E盘里删了的文件夹,2024让EasyRecovery来帮你轻松恢复

使用EasyRecovery易恢复进行数据恢复非常简单。首先&#xff0c;用户需要选择需要恢复的数据类型&#xff0c;如文档、图片、视频等。然后&#xff0c;软件会对选定的存储设备进行全面扫描&#xff0c;以寻找可恢复的数据。在扫描过程中&#xff0c;用户可以预览部分已找到的文…

一周学习总结:数组与链表

学习内容&#xff1a;数组与链表、计算机网络知识 数组&#xff1a; 从数组的基础知识到相关应用 数组的基础知识&#xff1a;数组在内存中的存储、数组的相关操作&#xff08;获取与更新&#xff09;、数组的相关应用&#xff1a; 二分查找法⭐⭐⭐⭐⭐ ● 掌握左闭右闭的…

matlab使用教程(71)—控制坐标区布局

1.与位置相关的属性和函数 有几个属性和函数可用于获取和设置坐标区的大小与位置。下表摘要显示了这些属性和函数。 函数或属性描述 OuterPosition 属性 使用此属性可以查询或更改坐标区的外边界&#xff0c;包括标题、标签和边距。要更改外边界&#xff0c;请将此属性指定为…

暴利的副业兼职,抖音蓝海赛道,批量复制这个项目,1年200个

在有小孩的家庭中&#xff0c;父母都非常重视孩子的教育&#xff0c;并愿意为此投入大量资金。根据之前的新闻报道&#xff0c;有些父母会毫不犹豫地为孩子花费数千甚至上万元报名参加各种培训课程。尤其是在独生子女家庭中&#xff0c;家长更注重培养孩子的各方面能力。 周周近…

基于springboot实现社区智慧养老监护管理平台系统项目【项目源码+论文说明】计算机毕业设计

基于SpringBoot实现社区智慧养老监护管理平台系统演示 摘要 如今社会上各行各业&#xff0c;都在用属于自己专用的软件来进行工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。互联网的发展&#xff0c;离不开一些新的技术&#xff0c;而新技术的…