指令+运算=CPU

news2024/11/23 16:43:47

1 组合逻辑电路(Combinational Logic Circuit)

要实现完整CPU功能,除加法器这种电路,还需实现其他功能的电路。有这样一种电路,类似加法器,给定输入,就能得到固定输出。

但仅有组合逻辑电路还不够,CPU就会变成电路输入是确定的,对应输出自然也就确定了。那么,要进行不同计算,就要去人工拨动各种开关,改变电路开闭状态,就像远古的打点计算机。

因此,要引入

2 时序逻辑电路(Sequential Logic Circuit)

2.1 解决痛点

自动运行

时序电路接通后可007无休开启、关闭开关,进入一个自动运行的状态。这使得控制器不停让PC寄存器自增读取下一条指令成为可能。

存储

通过时序电路实现的触发器,能把计算结果存储在特定的电路里面,而不是像组合逻辑电路那样,一旦输入有任何改变,对应的输出也会改变。

各功能按时序协调

无论程序实现的软件指令,还是到硬件层面,各种指令的操作都有顺序要求。
时序电路使得不同的事件按时间顺序发生。

硬件实现

时钟

首先得有一个时钟。CPU主频由一个晶体振荡器实现,该晶体振荡器生成的电路信号,就是时钟信号

实现这样一个电路,和通过电的磁效应产生开关信号的方法一样。只是,这里的磁性开关,打开的是当前线路。

原先一般只放一个开关的信号输入端,放上了两个开关:

  • 开关A
    初始断开,手工控制
  • 开关B
    初始合上,磁性线圈对准初始的开关B

一旦合上A
=》磁性线圈通电,产生磁性
=》B就会断开
=》电路中断
=》磁性线圈失去磁性
=》B又合上

如此,电路接通,线圈又有磁性。电路就会007 地开启、关闭这两个状态中切换。

  • 开关A闭合(也就是相当于接通电路之后),开关B就会不停地在开和关之间切换,生成对应的时钟信号

这不断切换的过程,对下游电路就是不断产生新的0/1信号。这种按固定周期不断在0和1之间切换的信号,就是时钟信号(Clock Signal)。

一般这样产生的时钟信号,就像你在各种教科书图例中看到的一样,是一个振荡产生的0、1信号。

  • 时钟信号示意图

这相当于把电路输出信号作为输入信号,再回到当前电路 — 反馈电路(Feedback Circuit)。
上面这个反馈电路可用如下示意图表示:一个输出结果接回输入的反相器(Inverter)即非门。

  • 通过一个反相器实现时钟信号

通过D触发器实现存储功能

有时钟信号,系统就有个“自动门”一样的开关。利用该开关和相同的反馈电路,即可构造出一个有“记忆”功能的电路,实现在CPU中存储计算结果的寄存器,也可实现计算机结构五大组成之一的存储器。

这个RS触发器电路由两个或非门电路组成。

  • 或非门的真值表
  • 该电路初始时,输入开关都关闭,所以或非门(NOR)A的输入是0、0,则输出1。而或非门B的输入是0和A的输出1,对应输出0。
    B的输出0反馈到A,和之前的输入没有变化,A的输出仍然是1。
    而整个电路的输出Q,也就是0。
  • 当把A前面的开关R合上,A的输入变成1、0,输出变成0,对应B的输入变成0、0,输出就变成1。B的输出1反馈给到了A,A的输入变成了1和1,输出仍然是0。所以把A的开关合上之后,电路仍稳定,但整个电路的输出Q变成1。
  • 这个时候,如果我们再把A前面的开关R打开,A的输入变成和1和0,输出还是0,对应的B的输入没有变化,输出也还是1。B的输出1反馈给到了A,A的输入变成了1和0,输出仍然是0。这个时候,电路仍然稳定。开关R和S的状态和上面的第一步是一样的,但是最终的输出Q仍然是1,和第1步里Q状态是相反的。我们的输入和刚才第二步的开关状态不一样,但是输出结果仍然保留在了第2步时的输出没有发生变化
  • 这个时候,只有我们再去关闭下面的开关S,才可以看到,这个时候,B有一个输入必然是1,所以B的输出必然是0,也就是电路的最终输出Q必然是0。

这称为触发器(Flip-Flop)。接通开关R,输出变为1,即使断开开关,输出还是1不变。接通开关S,输出变为0,即使断开开关,输出也还是0。也就是,当两个开关都断开的时候,最终的输出结果,取决于之前动作的输出结果,这个也就是我们说的记忆功能。

这是最简单的RS触发器,即复位置位触发器(Reset-Set Flip Flop) 。当两个开关都是0,对应输出不是1或0,而是和Q的上个状态一致。

再加两个与门和一个时钟信号,即可利用时钟信号操作电路,可实现随时都可往Q写数据。

再看如下电路,这个在我们的上面的R-S触发器基础之上,在R和S开关之后,加入了两个与门,同时给这两个与门加入了一个时钟信号CLK作为电路输入。

这样,当时钟信号CLK在低电平的时候,与门的输入里有一个0,两个实际的R和S后的与门的输出必然是0。也就是说,无论我们怎么按R和S的开关,根据R-S触发器的真值表,对应的Q的输出都不会发生变化。

只有当时钟信号CLK在高电平的时候,与门的一个输入是1,输出结果完全取决于R和S的开关。我们可以在这个时候,通过开关R和S,来决定对应Q的输出。

通过一个时钟信号,我们可以在特定的时间对输出的Q进行写入操作
如果这个时候,我们让R和S的开关,也用一个反相器连起来,也就是通过同一个开关控制R和S。只要CLK信号是1,R和S就可以设置输出Q。而当CLK信号是0的时候,无论R和S怎么设置,输出信号Q是不变的。这样,这个电路就成了我们最常用的D型触发器。用来控制R和S这两个开关的信号呢,我们视作一个输入的数据信号D,也就是Data,这就是D型触发器的由来。

把R和S两个信号通过一个反相器合并,我们可以通过一个数据信号D进行Q的写入操作
一个D型触发器,只能控制1个比特的读写,但是如果我们同时拿出多个D型触发器并列在一起,并且把用同一个CLK信号控制作为所有D型触发器的开关,这就变成了一个N位的D型触发器,也就可以同时控制N位的读写。

CPU里面的寄存器可以直接通过D型触发器来构造。我们可以在D型触发器的基础上,加上更多的开关,来实现清0或者全部置为1这样的快捷操作。

3 总结

引入时序电路,就可以把数据“存储”下来。
通过反馈电路,创建了时钟信号,然后再利用这个时钟信号和门电路组合,实现“状态记忆”。

电路的输出信号不单单取决于当前的输入信号,还要取决于输出信号之前的状态。最常见的这个电路就是我们的D触发器,它也是我们实际在CPU内实现存储功能的寄存器的实现方式。

“冯·诺伊曼”机关键就是程序需要可以“存储”,而不靠固定线路连接或手工拨动开关,实现计算机的可存储和可编程的功能。

参考

  • 《编码:隐匿在计算机软硬件背后的语言》14章~16章

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

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

相关文章

在风速、风向传感器中,比聚碳酸酯复合材料更好的壳体是哪个?

现如今,铝合金产品在电子行业,已经成为主流产品之一,适用范围广,在各个行业都有普及,其中就包括气象领域。其中,风速、风向变送器为气象仪器,也随着时代的发展,不断更新换代&#xf…

大一计算机新生,感觉什么都学不会怎么办?

虽然今天什么都没做,但是还是辛苦我了。。。刚开始难是正常现象,可以先梳理一下 计算基础基础很重要,实践为上 计算机组成与原理、数据结构、计算机网络、操作系统、编程语言 书看得越多,其实你越能找到自己的方向,一…

“数实融合” 新时代,解读数据治理的新风向

导语 | 数据作为国际数字主权竞争的核心资源,是国家明确增列的新型生产要素。数据质量的高低、数据价值的挖掘,是影响企业发展的关键要素之一。今天我们邀请到了中国信息通信研究院 大数据与区块链部副主任、腾讯云 TVP 姜春宇老师,带领我们解…

C 中的变量作用域 – 局部和全局作用域解释

在编程中,您经常需要处理变量的范围。变量的作用域决定了是否可以在特定代码块内访问和修改它。 在本教程中,你将了解 C 编程语言中的变量作用域。您将看到一些代码示例,以帮助您了解局部变量和全局变量之间的差异。 目录 变量的作用域是什…

react源码解析3.react源码架构

这一章的目的是让我们认识一下react源码架构和各个模块。 在真正的代码学习之前,我们需要在大脑中有一个react源码的地图,知道react渲染的大致流程和框架,这样才能从上帝视角看react是怎么更新的,来吧少年。 react的核心可以用u…

头条权重如何在线查询,头条权重为0怎么办

每个用心用自媒体的创作者们,都听说过权重一说,权重高,也就意味着你的这个账号属于优质账号,推荐量会相应增加,还有一些自媒体会有创作者账号的白名单,优质账号会放在白名单里。 头条权重如何在线查询&…

适用于校园学生公寓的联网智能门锁

常言道:365行,行行出状元。每一个行业都有其特色,每一个行业都离不开一个共同的话题——安全。以联网智能门锁为例,早期的普通智能门锁主要应用于家庭、酒店等场景,能够满足几口之间、小规模流动人员场景使用需求。随着…

yolov8训练自己的数据集

太卷了!!!! 太卷了!!!!太卷了!!!!!太卷了!!!!!太卷了&#xff…

【Nginx】Nginx简介

1. 什么是nginx2. 正向代理与反向代理 2.1 概念2.2 区别 正向代理:客户端 <一> 代理 一>服务端反向代理:客户端 一>代理 <一> 服务端 3. 负载均衡4. 动静分离 1. 什么是nginx Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少…

2022年度【产业数字化金铲奖】重磅来袭!

出品|产业家 第二届金铲奖来了&#xff01; 过去的一年时间里&#xff0c;产业家清晰地看到&#xff0c;数实融合的潮水更加汹涌澎湃且势不可挡&#xff0c;越来越多的企业开始寻求数字化转型&#xff0c;它们来自金融、工业、农业、医疗、能源等等。 产业数字化&#xff0…

ARM汇编 : 汇编指令,伪指令,汇编程序格式

ARM汇编指令ARM指令集特点ARM工作模式ARM寄存器ARM32ARM64ARM64汇编指令内存存储访问指令LDR /STR 指令LDP/STP指令&#xff08;LDR 的变种指令&#xff0c;能够同时操做两个寄存器&#xff09;LDRB /SDRB 指令(只操作一个字节)LDRH /STRH 指令(只操作两个字节)LDUR/STUR指令 (…

Flink之转换算子和一些计算案例(Transformation)

Flink之转换算子 &#xff08;Transformation&#xff09; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lcaNaXGY645b2f5adabd496ebbee9edfedad6437.png)null)] 数据源读入数据之后&#xff0c;我们就可以使用各种转换算子&#xff0c;将一个或多…

雷达算法 | 一种适用于汽车雷达的聚类算法研究与分析

本文参考TI的一种适用于汽车雷达的聚类算法研究和实现.pdf文档&#xff0c;原文链接如下&#xff1a;https://www.ti.com.cn/cn/lit/an/zhca739/zhca739.pdfts1672973254109&ref_urlhttps%253A%252F%252Fwww.google.com.hk%252F。 由于不涉及硬件&#xff0c;因此本文仅对…

C生万物 | 反汇编深挖【函数栈帧】的创建和销毁

&#x1f451;作者主页&#xff1a;Fire_Cloud_1 &#x1f3e0;学习社区&#xff1a;烈火神盾 &#x1f517;专栏链接&#xff1a;万物之源——C 一文彻底搞懂函数栈帧创建和销毁的过程一、 什么是函数栈帧二、 理解函数栈帧能解决什么问题呢&#xff1f;三、 函数栈帧的创建和…

易基因|糖尿病大血管和微血管病变的表观遗传学调控机制(DNA甲基化+组蛋白修饰):综述

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。2022年12月09日&#xff0c;《Frontiers in Endocrinology》杂志发表了题为“Epigenetic basis of diabetic vasculopathy”的综述文章&#xff0c;综述了表观遗传学修饰如DNA甲基化和组蛋…

电脑开机出现英文字母开不了机?小白操作技巧

在使用电脑的过程中&#xff0c;有时我们会遇到这种情况&#xff0c;就是电脑开机出现英文字母开不了机&#xff0c;而且还伴随着黑屏背景出现。出现这种问题&#xff0c;你们知道这是什么原因吗&#xff1f;以及我们该如何解决&#xff1f;下面这篇文章就可以告诉你&#xff0…

Foundry 中文文档发布啦

Foundry是一个Solidity智能合约开发工具链。Foundry管理您的依赖关系、编译项目、运行测试、部署&#xff0c;并允许您通过命令行和Solidity 脚本与链交互。 Foundry 中文文档是基于官方 Foundry book 的翻译&#xff0c;全面介绍 Foundry 所有功能。 使用Foundry的好处 Fou…

lvs负载均衡、nginx基本内容复习

文章目录前言一、LVSkeepalived实现高可用负载均衡二、三种不同模式实现负载均衡的区别与优缺点NAT模式DR直连路由模式TUN隧道模式三、Nginx之编译、负载均衡实现rr算法实现负载均衡ip_hash算法四、nginx平滑升级前言 一、LVSkeepalived实现高可用负载均衡 C/S架构和B/S架构&…

UWB室内定位系统的优势与好处

UWB定位系统的优势整理1、精度高&#xff1a;在室内定位领域&#xff0c;能够做到厘米级高精度定位的技术非UWB定位莫属。UWB采用TDOA&#xff08;到达时间&#xff09;算法&#xff0c;测量电磁波从发射端到达接收端所用的时间&#xff0c;分布在房间内的几个接收端同时接收到…

nginx小结二:高可用

nginx小结二&#xff1a;高可用nginx作为负载均衡器&#xff0c;所有请求都到了nginx&#xff0c;可见nginx处于非常重点的位置&#xff0c;如果nginx服务器宕机后端web服务将无法提供服务&#xff0c;影响严重。有鉴于此需要建立一个备份机&#xff0c;主服务器和备份机通过定…