CPU是如何工作的

2023-11-09

晶体管到门电路

二极管的工作

相信大家都知道二极管的工作特性,那如何使用二极管去构建一个门电路呢?

二极管的与门:上拉电阻,只有AB同时为高电平,输出为高电平

二极管的或门:下拉电阻,只要AB任一一个为高电平,输出为高电平

MOS管的工作

        在高频处理时,我们一般使用的是MOS管而不是三极管。那为什么要使用MOS管呢?使用MOS管可以达到更高的开关频率以及更低的功耗。但是MOS管的成本也相对更高。

以下是使用MOS管构建门电路:

MOS管的与门电路 

MOS管的或门电路

MOS管的非门电路

 

门电路到运算单元

加法器的实现

半加器

二进制数相加,结果为取“异或门(两个值不相同才为1)”,进位取“与门” 

全加器

当要接收进位时,需要两个半加器实现

 脉动进位加法器与超前进位加法器

         如果使用全加器来实现二进制的加法的话,那实现的结果为右图的脉动进位加法器,它的特点是由四个全加器来实现,设计比较简单,但是要运算四位二进制数时,需要四个周期才能完成运算。而超前进位加法器设计比较复杂,但它能在一个周期就能完成四位二进制数的计算。这种设计思路其实可以让我们明白,为什么FPGA的主频低,但是它还是能给我们通用计算器加速。当我们算法比较复杂时,可能通用计算单元要好几十个周期完成的工作,而FPGA可以通过设计在一个周期内完成。

乘法器

乘法器可以通过多个加法器来实现:

控制单元的构成

程控思想

        在上一节,我们已经掌握了通过晶体管来实现两种计算方式:加法与乘法。意味着我们已经有了一个计算器。那如何从一个计算器变为一个计算机呢?这里就需要我们能够掌握程控思想了。例如我们要计算(3+1)×3时,那么我们会分解为加法和乘法两个步骤。然后人通过操作计算器上的按钮完成该运算。最后得出结果为12。那么要让计算机完成该计算,首先要构建一个控制单元。而我们希望通过该控制单元完成该内容的计算。

 

选择器

         相信对计算机比较感兴趣的,对”指令集“不会很陌生,甚至还能立马想起:X86指令集、ARM指令集等。那到底什么是指令集呢?在这里我们可以简单的理解为,指令集是对电路的选择,例如我们的乘法电路、加法电路同时对我们寄存器里面的数进行了运算,那我们该选择哪个电路的输出,我们便可以通过选择器来实现。

 晶振

        晶振是给系统提供基本的时钟信号的。没有晶振的电路就是一个静止的电路,就像时间被冻结了,并不会进行运算。因此我们也可以将其理解为时间信号。

指令定义

        有了计算单元以及控制单元,那我们可以明白指令及数据的区别了,指令代码是给控制单元进行控制的,数据是给运算器进行计算的。接下来我设计一个简单的哈佛结构的CPU,为了让控制单元能够进行加乘的计算,定义了以下三个指令:

§0100,将数据入寄存器

§0001,将数据与寄存器相加,结果保存到寄存器

§0010,将数据与寄存器相乘

        我们可以分析,指令的第一位(从右到左)表示加法电路,指令的第二位表示乘法电路,指令的第三位表示寄存器写入操作,指令的第四位无作用。

电路设计

        C1到C4表示控制指令,D1到D4表示数据指令。根据分析,C1和C2用于加法和乘法输出结果的选择。C3表示寄存器的数据是由外部输入还是由运算器输出。用开关表示晶振。

计算

有了刚才的3指令,那我们就可以用来做个计算题(3+1)×3

0100  0011  3写入寄存器

0001  0001  1寄存器相加

0010  0011  3寄存器相乘

 

 汇编语言

将前面的程序整理一下成为 010000110001000100100011

这么多零和一可比密码还复杂,相信大家还没来得及将它输入到电脑里,都已经能够口算完了。

哪有什么办法可以改进一下这个程序呢?

MOV 3 ;寄存器存入3

ADD 1 ;寄存器的数字加1

MUL 3 ;乘3

总结

        对于汇编语言来说,每个指令与芯片一一对应,直接指挥CPU进行工作,但是对于人来说还是晦涩了许多。同时不同公司设计的芯片不相同,我们在一款芯片上开发的程序到了另一款芯片上可能就无法运行。因此出现了高级语言。通常有C++JavaPython。那么这三种语言有什么区别呢?

        在前面的介绍中,我们知道指令集这种东西,常见的指令集有X86ARM指令集。

        C++作为典型的编译型语言,我们可以将其编译为不同的平台,但是对应的X86程序和ARM程序是无法相互兼容运行的。这也是源码的重要性。

        Java同样是编译型语言,但是Java编译出来的程序是自己定义的字节码指令。那么X86ARM上实现对这些字节码的虚拟机,就能运行Java程序了。随着java越来越重要。很多芯片从硬件上实现了java虚拟机 。例如诺基亚的塞班系统和我们熟知的安卓系统,便是在arm上运行的java程序,arm芯片带java硬件解析。

        那同样是定义自己的字节码的PythonJava又有什么区别呢?Python作为一个解释型语言,虚拟机自带解释器,在运行的时候,不断读取字符串,然后通过解释器完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CPU是如何工作的 的相关文章

  • 常用电子元件介绍与功能

    常用电子元件简介及其作用 一 电容 1 种类 1 CBB电容 2 铝电解电容 3 钽电解电容 4 高频瓷片电容 5 低频瓷片电容 2 作用 1 去耦 2 滤波器 3 储能 4 检波 5 无源晶振 6 隔直通交 3 总结 二 电感 1 种类
  • 【网格问题】leetcode1020.飞地的数量

    题目 给你一个大小为 m x n 的二进制矩阵 grid 其中 0 表示一个海洋单元格 1 表示一个陆地单元格 一次 移动 是指从一个陆地单元格走到另一个相邻 上 下 左 右 的陆地单元格或跨过 grid 的边界 返回网格中 无法 在任意次
  • 网络编程是什么

    转载 http peixun eol cn company company article detail php articleid 15033 对于初学者 或者没有接触过网络编程的程序员 会觉得网络编程涉及的知识很高深 很难 其实这是一种
  • Java 读取resources下的资源文件

    Web项目中应该经常有这样的需求 在maven项目的resources目录下放一些文件 比如一些配置文件 资源文件等 文件的读取方式有好几种方式 本文会对常用的读取方式做一个总结 并说明一下应该注意的地方 准备工作 新建一个spring t
  • 利用Python每日将股票数据进行爬取、并做了一波处理分析

    1 先展示 时间 价格 涨跌幅 2 说明 因为在上班的时候 直接打开交易软件的话 太明显 会让别人看到我在炒股 所以 自己写一个 可以随时查看自己持仓的股票涨跌情况 3 代码 import tushare as ts import time
  • 互联网日报

    今日看点 吉利汽车科创板首发过会 抢滩 科创板整车第一股 新浪就 私有化 交易达成最终协议 总价25 9亿美元 淘宝直播12个月累计成交额超过3000亿元 用户同比增长160 滴滴货运日单量连续突破10万 持续拓展同城货运版图 360保险推
  • 8个超实用的Python库合集,推一次火一次!

    Python 是一个很棒的语言 它是世界上发展最快的编程语言之一 它一次又一次地证明了在开发人员职位中和跨行业的数据科学职位中的实用性 整个 Python 及其库的生态系统使它成为全世界用户 初学者和高级用户 的合适选择 它的成功和流行的原
  • 大起大落,蚂蚁上市被叫停,蚂蚁的程序员们怎么样了?

    继马云被有关部门联合约谈以后 万众瞩目的蚂蚁上市被叫停了 一石激起千层浪 这个爆炸性的新闻引起了人们的热议 来看看大家都说了些什么 首先表达一下对蚂蚁金服员工的深切同情 毕竟之前大家都以为马上就能实现财务自由 走上人生巅峰 结果来了这么一出
  • C#初始化数组的三种方式

    C 声明数组并初始化 有三种方式 对于一维数组 using System using System Data using System Configuration using System Web using System Web Secu
  • 静态链表

    include
  • 多处理器编程的艺术(二)-并行程序设计

    当处理器的性能的发展受到各方面因素的限制的时候 计算机产业开始用多处理器结构实现并行计算来提高计算的效率 我们使用多处理器共享存储器的方式实现了多处理器编程 也就是多核编程 当然在这样的系统结构下我们面临着各种各样的挑战 例如如何协调各个处
  • GBA编程和汉化常用软件汇总

    内容来自GBA吧中的痴狂小黑 本人只是做个汇总和搬运 1 简易图片导入导出套装 PicSimpleImEx AutoPicRock Ver1 0 这两个软件是用C 写的 想要用 先装dotNetFx40 Full x86 x64 exe 然
  • Qt实现窗口关闭时提示确认退出

    Qt实现窗口关闭时提示确认退出 在Qt中 当用户点击窗口关闭按钮时 程序会直接退出 这样可能会导致数据丢失或其他不必要的操作 为了提高用户体验 我们可以在窗口关闭前给出一个提示框 询问用户是否确认退出 一 实现思路 通过重写QWidget类
  • MCDF实验——Lab0

    MCDF实验 一 MCDF功能描述 二 设计结构 三 接口描述 1 系统信号接口 2 通道从端接口 3 整形器接口 4 控制寄存器接口 四 接口时序 1 通道从端接口时序 2 整形器接口时序 3 控制寄存器接口时序 五 寄存器描述 1 地址
  • 各种汇编器masm masm32 fasm nasm yasm gas的区别

    原文地址 http www verydemo com demo c269 i661 html masm MASM是微软公司开发的汇编开发环境 拥有可视化的开发界面 使开发人员不必再使用DOS环境进行汇编的开发 编译速度快 支持80x86汇编
  • Qt QML多线程-WorkerScript的使用

    Qt QML多线程 WorkerScript的使用 在开发过程中 常常会遇到一些需要进行耗时计算的操作 如果这些操作都放在主线程中完成 就会导致UI界面被卡死 用户体验很不好 为了解决这个问题 我们可以将这些耗时计算操作放在一个单独的线程中
  • 为什么要学习Python?

    前言 Python 是当今非常流行的编程语言 在互联网上经常可以看到他的身影 它应用非常广泛 例如编程 Web 开发 机器学习和 数据科学Q 等 TIOBE 官网近日公布了 2023 年 8 月的编程语言排行榜 Python 依然排行第一
  • C语言是否已经跟不上社会需求?

    今日话题 C语言是否已经跟不上社会需求 一个问题的提出者说 几天前他受到老板的批评 因为他只精通C语言编程 无法满足老板的需求 实际上 C语言在嵌入式行业中仍然具有极高的价值 它高效 可移植 并广泛用于嵌入式系统的开发 然而 嵌入式系统的多
  • 应用在多媒体触摸屏设备中的触摸感应芯片

    多媒体触摸屏设备是触摸液晶显示器结合现代PC机组成的具有触摸显示和计算机操作功能为一体的产品 它包括两个部分 一个是触摸液晶显示器 它具有触控的特性和显示输出的功能 另一个是PC机 也就是所说的计算机 通过两个部分整合到一起 实现了具有触摸
  • 学习STM32正点原子好吗?

    今日话题 学习STM32正点原子好吗 正点原子的教程内容简单明了 代码也清晰直接 使初学者能够轻松理解其功能和使用方法 尤其对于需要快速完成大学作业等任务的大学生来说 可以直接借鉴并稍作修改 便可满足需求 正点原子提供的资料通俗易懂 适合用

随机推荐

  • IIS7.0、7.5解析漏洞利用

    IIS7 0 7 5解析漏洞利用 1 测试漏洞是否可用 2 WebShell制作 3 上传WebShell 4 连接WebShell 1 测试漏洞是否可用 网站任意图片地址后加 脚本类型 若出现编译错误 则漏洞存在 2 WebShell制作
  • AI对游戏外包开发的影响

    人工智能 AI 对游戏行业产生了深远的影响 从游戏设计 开发到玩家体验等方面都发挥着重要作用 以下是AI对游戏行业的一些主要影响 和大家分享一些观点 希望对大家有所帮助 北京木奇移动技术有限公司 专业的软件外包开发公司 欢迎交流合作 1 游
  • 使用Vlc.DotNet打开摄像头并截图 C#

    参考上一篇 使用vlc打开usb摄像头 理论上输入下面地址 dshow dshow size 1600 1200 dshow vdev USB CAM2 C 就能打开摄像头了类似打开本地文件或者rtsp之类的网络地址 但实际测试怎么着都是打
  • 计算机网络复习4----TCP的拥塞窗口cwnd大小与传输轮次n的关系

    这里是 凤凰谷佛的计算机网络复习系列之4 一起来看看吧 书中P236 图5 27 1 5 39 TCP的拥塞窗口cwnd大小与传输轮次n的关系如下所示 试分析回答 1 指明TCP工作在慢开始阶段的时间间隔 解析 满开始时间间隔看在哪一刻2倍
  • traits:Traits技术初探

    概述 traits是一种特性萃取技术 color 663300 font family 宋体 padding 0px margin 0px gt 它在Generic Programming中被广泛运用 常常被用于使不同的类型可以用于相同的操
  • PHP文件包含漏洞代码分析-通过漏洞getshell-学习笔记

    一 原理分析 文件包含漏洞是代码注入的一种 其原理就是注入一段用户能控制的脚本或代码 并让服务器端执行 代码注入的典型代表就是文件包含 File inclusion 文件包含可能会出现在jsp php asp等语言中 服务器通过函数去包含任
  • Python笔记4

    迭代器 迭代是Python最强大的功能之一 是访问集合元素的一种方式 迭代器是一个可以记住遍历的位置的对象 迭代器对象从集合的第一个元素开始访问 直到所有的元素被访问完结束 迭代器只能往前不会后退 迭代器有两个基本的方法 iter 和 ne
  • css flex布局 —— 项目属性 align-self

    align self属性定义 flex 子项单独在侧轴 纵轴 方向上的对齐方式 可覆盖 align items 属性 默认值为 auto 表示继承父元素的 align items 属性 如果没有父元素 则等同于 stretch 语法 ite
  • 实战--Kafka入门(一)

    问题导读 1 如何理解消息队列 MessageQueue 2 如何解析Kafka基础架构 3 如何安装Kafka集群 4 Kafka命令行操作有哪些 第1章 Kafka概述1 1定义 Kafka是一个分布式的基于发布 订阅模式的消息队列 主
  • 关于野指针的一些问题与总结

    void Test void char str char malloc 100 strcpy str hello free str if str NULL strcpy str world printf str 请问运行Test函数会有什么
  • 在闲鱼上卖什么东西比较赚钱?

    在闲鱼上卖什么东西比较赚钱 这牵扯做闲鱼的一个关键问题 选品 可以这么说 会选品 选好品 就成功了一半 剩下的一半 一半交给技术 另一半交给运气 怎么选品 要遵循下面几个原则 第一 做实物 但不要做食物 不要去做虚拟产品 也不要去做生鲜食物
  • 查看YOLO的模型大小和参数量的三种方式

    查看YOLO的模型大小和参数量的三种方式 1 使用Darknet YOLO的原始实现 2 使用Python和深度学习库 3 使用PyTorch 要查看YOLO模型的大小和参数量 你可以使用相关的深度学习库和工具 比如TensorFlow P
  • Centos7/SSH Weak Key Exchange Algorithms Enabled/SSH Server CBC Mode Ciphers Enabled

    SSH Weak Key Exchange Algorithms Enabled SSH Server CBC Mode Ciphers Enabled https knowledge broadcom com external artic
  • 中文乱码解决大全

    一 Java中文问题的由来 Java的内核和class文件是基于unicode的 这使Java程序具有良好的跨平台性 但也带来了一些中文乱码问题的麻烦 原因主要有两方面 Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交
  • data must not be longer than 256 bytes

    1 问题 在进行 RSA 解密时候报错 data must not be longer than 256 bytes 2 分析 RSA加解密算法通常有两种不同的方式 是使用对称密钥 比如 AES DES等加解密方法 加密数据 然后使用非对称
  • JSP简单练习-一个简单的计数器

    在JSP中 在 之间书写的程序代码成为java程序片 一个JSP页面中可以有多个java程序片 要注意的是 在Java程序片中声明的变量在它们所在JSP页面的所用程序片及表达式中都有效 基于此 可以把一个较大的程序片分成几个小的程序片 还可
  • python 作图中的图标题title 和坐标轴标签的axes的调整

    这里主要是调整title和坐标轴标签的样式 要注意抓住设定的套路和规律 不要被复杂的外表所迷惑 import matplotlib pyplot as plt import numpy as np from matplotlib impor
  • C# HttpWebRequest 获取 HTTPS 网页内容

    在 C 中 可以使用 HttpWebRequest 类来获取 HTTPS 网页内容 需要注意的是 HTTPS 网页采用了 SSL TLS 加密传输机制 必须在发送请求之前获取服务器端的证书并进行验证才能成功获取网页内容 下面是一份示例代码
  • js--纯js实现省市地区三级联动

    QQ自己的JS省市区三级联动 已验证 使用引用外部JS来实现三级联动的 JS如下 http ip qq com js geo js
  • CPU是如何工作的

    晶体管到门电路 二极管的工作 相信大家都知道二极管的工作特性 那如何使用二极管去构建一个门电路呢 二极管的与门 上拉电阻 只有AB同时为高电平 输出为高电平 二极管的或门 下拉电阻 只要AB任一一个为高电平 输出为高电平 MOS管的工作 在