CPU内部结构窥探·「3」

news2024/11/23 12:58:16

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

我们在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⊕B
    		C1=A⋅B
    
  2. 第二个半加器将初步的和 ( S_1 ) 与进位输入 ( C_{in} ) 相加,产生最终的和 ( S ) 和第二个进位 ( C_2 ):

    		S=S1⊕Cin
    		C2=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要比这个复杂千万倍,这只是他最基本的原理。

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

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

相关文章

[Algorithm][动态规划][01背包问题][目标和][最后一块石头的重量Ⅱ]详细讲解

目录 1.目标和1.题目链接2.算法原理详解3.代码实现 2.最后一块石头的重量 II1.题目链接2.算法原理详解3.代码实现 1.目标和 1.题目链接 目标和 2.算法原理详解 问题转化:在数组中选择一些数,让这些数的和等于a,一共有多少种选法&#xff1f…

React实战(一)初始化项目、配置router、redux、axios

(一)初始化项目 1.安装项目 npx create-react-app 项目名 编译报错: 解决办法:安装最新的babel-preset-react-app npm install babel-preset-react-applatest 2.配置项目 (1)配置文件目录 (2)使用craco配置webpack.config npm install craco/crac…

HC05蓝牙模块与笔记本蓝牙连接

文章目录 1. 电脑和蓝牙模块连接 2. 串口软件调试 1. 电脑和蓝牙模块连接 HC05支持SPP协议,使用PC主机自带蓝牙,或者笔记本加蓝牙适配器。与HC05连接后,可在电脑端虚拟出串口,这样上位机软件就可以像操作串口一样与HC05通信。对…

什么,一不小心打造了一个基于大模型的操作系统

如果以大模型为Kernel, 形成一个新的操作系统,那么: 1. byzer-llm 是这个大模型操作系统的编程接口,有点类似Linux操作系统的C ABI。 2. byzer-retrieval 也被集成进 byzer- llm 接口里,算是大模型操作系统的文件系统&#xff0c…

风机5G智能制造工厂工业物联数字孪生平台,推进制造业数字化转型

风机5G智能制造工厂工业物联数字孪生平台,推进制造业数字化转型。在信息化、智能化的浪潮中,风机5G智能制造工厂工业物联数字孪生平台正以其独特的优势,推动制造业实现数字化转型。数字孪生平台不仅为风机制造业带来了前所未有的机遇&#xf…

2024年电子工程与自动化技术国际会议(ICEEAT 2024)

2024 International Conference on Electronic Engineering and Automation Technology 【1】大会信息 会议简称:ICEEAT 2024 大会地点:中国西安 审稿通知:投稿后2-3日内通知 【2】会议简介 2024年电子工程与自动化技术国际会议是聚焦电子…

【开发心得】三步本地化部署llama3大模型

目录 第一步:启动ollama 第二步:启动dify 第三步:配置模型(截图) 最近llama3很火,本文追击热点,做一个本地化部署的尝试,结果还成功了! 当然也是站在别人的肩膀上&…

vscode软件上安装 Fitten Code插件及使用

一. 简介 前面几篇文章学习了 Pycharm开发工具上安装 Fitten Code插件,以及 Fitten Code插件的使用。 Fitten Code插件是是一款由非十大模型驱动的 AI 编程助手,它可以自动生成代码,提升开发效率,帮您调试 Bug,节省…

FinalShell导出服务器配置信息密码password是加密的,如何解密?

本章教程,主要实现了一个小的功能,对FinalShell导出的配置信息,进行解密。 FinalShell导出之后,会产生一个json文件,例如下面这种json格式,里面记录了服务器的IP地址,端口和密码,里面的密码是经过加密处理的,本文主要利用java代码实现对这个password进行解密还原。 {&…

Java项目生成方法时序图(查看调用逻辑)

Java项目生成方法时序图(调用逻辑) 在IDEA中下载 SequenceDiagram 插件 右键需要查看的方法 就可以看到调用的时序图了

【栈】2751. 机器人碰撞

本文涉及知识点 栈 LeetCode2751. 机器人碰撞 现有 n 个机器人,编号从 1 开始,每个机器人包含在路线上的位置、健康度和移动方向。 给你下标从 0 开始的两个整数数组 positions、healths 和一个字符串 directions(directions[i] 为 ‘L’ …

test 判断字符串不为空

#!/bin/bash read -p "请输入参数:" name test -z $name if [ $? -eq 1 ]; then echo "入参:$name" else echo "入参为null" fi

【Linux】进程(9):进程控制1

大家好,我是苏貝,本篇博客带大家了解Linux进程(9)进程控制1,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 1 fork函数2 进程终止(A)终止是…

python Tk 获取输入框内容,分割内容

创建输入框、一个按钮和一个标签的GUI。 用户可以在输入框中输入文本,点击按钮后,程序将在控制台打印输入的文本(已经分割为列表),并在GUI中的标签上显示一些静态文本。 import tkinter as tk# 创建主窗口 root tk.…

Win11可以安装AutoCAD2007

1、在win11中,安装AutoCAD2007,需要先安装NET组件。否则会提示缺少".net文件" 打开“控制面板”,点击“程序”,点击“程序和功能”,点击“启用或关闭Windows功能”,勾选“.NET FrameWork 3.5”&a…

【个人博客搭建练手版】Windows环境下使用tale,mblog,halo三种框架搭建个人博客,适合准备搭建博客的练手之作

昨天发了一篇搭建博客的教程,竟然上新人榜了。 博客链接:https://editor.csdn.net/md/?articleId139392436 趁热打铁把该文章中说的使用在Windows环境使用docker desktop搭建halo博客练手的教程也写一下。 这篇文章不只有halo的搭建,还有ta…

leetcode 所有可能的路径(图的遍历)

leetcode 链接: 所有可能的路径 1 图的基本概念 1.1 有向图和无向图 左边是有向图,右边是无向图。对于无向图来说,图中的边没有方向,两个节点之间只可能存在一条边,比如 0 和 1 之间的边,因为是无向图&am…

通过网址下载静态网页的仿站工具

下载地址:通过网址下载静态网页的仿站工具 超级实用的一款工具

TCP 建链(三次握手)和断链(四次握手)

TCP 建链(三次握手)和断链(四次挥手) 背景简介建链(三次握手)断链(四次挥手)序号及标志位延伸问题为什么建立连接需要握手三次,两次行不行?三次握手可以携带数…

使用GPT-soVITS再4060下2小时训练声音模型以及处理断句带来的声音模糊问题

B站UP主视频 感谢UP主“白菜工厂1145号员工”的“熟肉”,我这篇笔记就不展示整一个训练和推理流程,重点写的4060该注意的一些事项。如何解决断句模糊的问题,在本篇笔记的最末尾。 相关连接: 原项目github UP主的说明文档 1、训…