CPU内部结构窥探·「3」

2024-06-08 14:52
文章标签 cpu 内部结构 窥探

本文主要是介绍CPU内部结构窥探·「3」,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

加法器的工作原理:从简单的逻辑到现代计算

我们在cpu内部结构窥探·「1」中提到CPU内部ALU的核心部件就是运算器,今天就以加法器为例,来讲解我们ALU中算数逻辑运算的过程。


1.认识数字电路中的各种门电路

请添加图片描述

2. 什么是加法器?

加法器是一种数字电路,用于对二进制数进行加法运算。它们是计算机算术逻辑单元(ALU)的核心组件,也是各种数字系统(如计算器和数字信号处理器)的基础模块。加法器通常可以分为以下几种类型:

  • 半加器(Half Adder):处理两个单个位的加法。
  • 全加器(Full Adder):处理两个输入位和一个进位位的加法。
  • 多位加法器:处理多位二进制数的加法,通常通过连接多个全加器来实现。

3. 半加器(Half Adder)

逻辑电路

半加器是最基本的加法器,它负责对两个单个位进行加法运算,输出一个和(Sum)和一个进位(Carry)。
在这里插入图片描述

工作原理

半加器接收两个输入位 ( A ) 和 ( B ):

  • 和(Sum):由输入位 ( A ) 和 ( B ) 的异或(XOR)运算得出。其逻辑表达式为:

    Sum=A⊕B

  • 进位(Carry):由输入位 ( A ) 和 ( B ) 的与(AND)运算得出。其逻辑表达式为:

  • Carry=A⋅B

ABSumCarry
0000
0110
1010
1101

如表所示,当 ( A ) 和 ( B ) 都为 1 时,和为 0 并产生一个进位。半加器的局限性在于它不能处理进位输入,因此只能用于简单的单个位加法。


4. 全加器(Full Adder)

逻辑电路

全加器扩展了半加器的功能,能够处理两个输入位和一个来自低位的进位输入。它输出一个和和一个进位输出。

在这里插入图片描述

工作原理

全加器有三个输入:( A )、( B ) 和 ( C_{in} )(进位输入)。它通过组合两个半加器的逻辑实现:

  1. 第一个半加器对 ( A ) 和 ( B ) 进行加法,产生初步的和 ( S_1 ) 和进位 ( C_1 ):

    		S1=A⊕BC1=A⋅B
    
  2. 第二个半加器将初步的和 ( S_1 ) 与进位输入 ( C_{in} ) 相加,产生最终的和 ( S ) 和第二个进位 ( C_2 ):

    		S=S1⊕CinC2=S1⋅Cin
    
  3. 最终的进位输出 ( C_{out} ) 是两个进位的或运算:

    		Cout=C1∨C2
    
AB( Cin)Sum( Cout )
00000
01010
10010
11001
00110
01101
10101
11111

全加器的输出逻辑综合了两个半加器和一个或门(OR Gate)的运算结果,使它能够处理多位加法中的进位传递。


4. 多位加法器

如下图是一个4位加法器的逻辑电路:
在这里插入图片描述


5. 举一反三

以此类推,我们可以了解到ALU的其他运算单元如:加法器、减法器、与非门(用于逻辑运算)等的实现原理。
在这里仅从最基本的一个加法运算出发,来了解cpu内部ALU是如何实现这些运算的,真实的ALU要比这个复杂千万倍,这只是他最基本的原理。

这篇关于CPU内部结构窥探·「3」的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Android如何获取当前CPU频率和占用率

《Android如何获取当前CPU频率和占用率》最近在优化App的性能,需要获取当前CPU视频频率和占用率,所以本文小编就来和大家总结一下如何在Android中获取当前CPU频率和占用率吧... 最近在优化 App 的性能,需要获取当前 CPU视频频率和占用率,通过查询资料,大致思路如下:目前没有标准的

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

MySQL的cpu使用率100%的问题排查流程

《MySQL的cpu使用率100%的问题排查流程》线上mysql服务器经常性出现cpu使用率100%的告警,因此本文整理一下排查该问题的常规流程,文中通过代码示例讲解的非常详细,对大家的学习或工作有一... 目录1. 确认CPU占用来源2. 实时分析mysql活动3. 分析慢查询与执行计划4. 检查索引与表

使用Python检查CPU型号并弹出警告信息

《使用Python检查CPU型号并弹出警告信息》本教程将指导你如何编写一个Python程序,该程序能够在启动时检查计算机的CPU型号,如果检测到CPU型号包含“I3”,则会弹出一个警告窗口,感兴趣的小... 目录教程目标方法一所需库步骤一:安装所需库步骤二:编写python程序步骤三:运行程序注意事项方法二

Java程序到CPU上执行 的步骤

相信很多的小伙伴在最初学习编程的时候会容易产生一个疑惑❓,那就是编写的Java代码究竟是怎么一步一步到CPU上去执行的呢?CPU又是如何执行的呢?今天跟随小编的脚步去化解开这个疑惑❓。 在学习这个过程之前,我们需要先讲解一些与本内容相关的知识点 指令 指令是指导CPU运行的命令,主要由操作码+被操作数组成。 其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也

win10不用anaconda安装tensorflow-cpu并导入pycharm

记录一下防止忘了 一、前提:已经安装了python3.6.4,想用tensorflow的包 二、在pycharm中File-Settings-Project Interpreter点“+”号导入很慢,所以直接在cmd中使用 pip install -i https://mirrors.aliyun.com/pypi/simple tensorflow-cpu下载好,默认下载的tensorflow

定位cpu占用过高的线程和对应的方法

如何定位cpu占用过高的线程和对应的方法? 主要是通过线程id找到对应的方法。 1 查询某个用户cpu占用最高的进程号 top -u 用户名 2 查询这个进程中占用cpu最高的线程号 top –p 进程号-H    3 查询到进程id后把进程相关的代码打印到jstack文件 jstack -l pid > jstack.txt 4 在jstack文件中通过16进制的线程id搜索到

CPU亲和性设置 代码示例 sched_setaffinity sched_getaffinity

视频教程在这: cpu亲和性设置,NCCL,sched_setaffinity sched_getaffinity,CPU_ZERO、SET、ISSET、linux_哔哩哔哩_bilibili 一、CPU亲和性简介 CPU亲和性(CPU Affinity)设置是操作系统中一个重要的性能优化手段,它允许程序或进程被绑定到特定的CPU核心上运行。这样做的好处包括减少缓存未命中、降低线程迁移(co

ubuntu16.04 caffe(github源码cpu)+python3.5+opencv3.4.5安装编译

https://www.cnblogs.com/hanjianjian90/p/10604926.html

Ubuntu 标题栏实时显示网速CPU内存

1.用 wget 下载 indicator-sysmonitor,终端执行命令: $ wget -c https://launchpad.net/indicator-sysmonitor/trunk/4.0/+download/indicator-sysmonitor_0.4.3_all.deb2.安装依赖: sudo apt-get install python python-psu