首页 > 其他分享 >18 | 建立数据通路(中):指令+运算=CPU

18 | 建立数据通路(中):指令+运算=CPU

时间:2023-01-16 11:37:58浏览次数:44  
标签:触发器 18 数据通路 我们 开关 电路 信号 CPU 时钟


组合逻辑电路


但是,光有组合逻辑电路是不够的。你可以想一下,如果只有组合逻辑电路,我们的 CPU 会是什么样的?电路输入是确定的,对应的输出自然也就确定了。那么,我们要进行不同的计算,就要去手动拨动各种开关,来改变电路的开闭状态。这样的计算机,不像我们现在每天用的功能强大的电子计算机,反倒更像古老的计算尺或者机械计算机,干不了太复杂的工作,只能协助我们完成一些计算工作。


时序逻辑电路 (Sequential Logic Circuit)。时序逻辑电路可以帮我们解决这样几个问题。


第一个就是 自动运行 的问题。时序电路接通之后可以不停地开启和关闭开关,进入一个自动运行的状态。这个使得我们上一讲说的,控制器不停地让 PC 寄存器自增读取下一条指令成为可能。


存储


时序协调


时钟信号的硬件实现


时钟 。我在 第 3 讲


实现这样一个电路,和我们之前讲的,通过电的磁效应产生开关信号的方法是一样的。只不过,这里的磁性开关,打开的不再是后续的线路,而是当前的线路。


在下面这张图里你可以看到,我们在原先一般只放一个开关的信号输入端,放上了两个开关。一个开关 A,一开始是断开的,由我们手工控制;另外一个开关 B,一开始是合上的,磁性线圈对准一开始就合上的开关 B。


于是,一旦我们合上开关 A,磁性线圈就会通电,产生磁性,开关 B 就会从合上变成断开。一旦这个开关断开了,电路就中断了,磁性线圈就失去了磁性。于是,开关 B 又会弹回到合上的状态。这样一来,电路接通,线圈又有了磁性。我们的电路就会来回不断地在开启、关闭这两个状态中切换。



18 | 建立数据通路(中):指令+运算=CPU_计算机原理


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


时钟信号


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



18 | 建立数据通路(中):指令+运算=CPU_计算机原理_02


时钟信号示意图


反馈电路


反相器 (Inverter),也就是我们之前讲过的 非门



18 | 建立数据通路(中):指令+运算=CPU_触发器_03


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


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


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



18 | 建立数据通路(中):指令+运算=CPU_计算机原理_04


我们先来看下面这个 RS 触发器电路。这个电路由两个或非门电路组成。我在图里面,把它标成了 A 和 B。



18 | 建立数据通路(中):指令+运算=CPU_fpga开发_05


或非门的真值表



输出 Q



输出 Q



开关 R 和 S 的状态和上面的第一步是一样的,但是最终的输出 Q 仍然是 1,



输出 Q


当两个开关都断开的时候,最终的输出结果,取决于之前动作的输出结果,这个也就是我们说的记忆功能


对应的输出结果的真值表,你可以看下面这个表格。可以看到,当两个开关都是 0 的时候,对应的输出不是 1 或者 0,而是和 Q 的上一个状态一致。



18 | 建立数据通路(中):指令+运算=CPU_fpga开发_06


再往这个电路里加两个与门和一个小小的时钟信号,我们就可以实现一个利用时钟信号来操作一个电路了。这个电路可以帮我们实现什么时候可以往 Q 里写入数据。


时钟信号 CLK


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


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



18 | 建立数据通路(中):指令+运算=CPU_计算机原理_07


通过一个时钟信号,我们可以在特定的时间对输出的 Q 进行写入操作


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



18 | 建立数据通路(中):指令+运算=CPU_fpga开发_08


把 R 和 S 两个信号通过一个反相器合并,我们可以通过一个数据信号 D 进行 Q 的写入操作


并且把用同一个 CLK 信号控制作为所有 D 型触发器的开关,这就变成了一个 N 位的 D 型触发器,也就可以同时控制 N 位的读写。


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


总结延伸


好了,到了这里,我们可以顺一顺思路了。通过引入了时序电路,我们终于可以把数据“存储”下来了。我们通过反馈电路,创建了时钟信号,然后再利用这个时钟信号和门电路组合,实现了“状态记忆”的功能。


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


这也是现代计算机体系结构中的“冯·诺伊曼”机的一个关键,就是程序需要可以“存储”,而不是靠固定的线路连接或者手工拨动开关,来实现计算机的可存储和可编程的功能。


有了时钟信号和触发器之后,我们还差一个“自动”需求没有实现。我们的计算机还不能做到自动地不停地从内存里面读取指令去执行。这一部分,我们留在下一讲。下一讲里,我们看看怎么让程序自动运转起来。



课后思考


现在我们的 CPU 主频非常高了,通常在几 GHz 了,但是实际上我们的晶振并不能提供这么高的频率,而是通过“外频 + 倍频“的方式来实现高频率的时钟信号。请你研究一下,倍频和分频的信号是通过什么样的电路实现的?


欢迎留言和我分享你的疑惑和见解,也欢迎你把今天的内容分享给你的朋友,和他一起学习和进步。


标签:触发器,18,数据通路,我们,开关,电路,信号,CPU,时钟
From: https://blog.51cto.com/u_15202985/6010260

相关文章

  • 19 | 建立数据通路(下):指令+运算=CPU
    上一讲,我们讲解了时钟信号是怎么实现的,以及怎么利用这个时钟信号,来控制数据的读写,可以使得我们能把需要的数据“存储”下来。那么,这一讲,我们要让计算机“自动”跑起来。......
  • 使用cgroup限制CPU核数
    在性能测试的时候,有的时候需要限制CPU为指定核数,我们很容易想到docker,其实还可以通过cgroup来实现。关于cgroupcgroups全称controlgroups,是Linux内核提供的物理资源隔......
  • CPU中断
    什么是中断假设你在玩王者荣耀,突然一个电话过来…,这就是​​中断​​!对CPU来说就是:CPU在执行某一段程序的时候收到某些特定信号转而去执行另一段特定程序的过程。那为......
  • 18.PyQt5【基本组件】进度条对话框-QProgressDialog
    一、前言QProgressDialog进度对话框,向用户提示程序中当前任务的进度信息,用以提示当然任务正在进行,并按百分比显示进度。对话框提供了一个取消按钮,用以向用户提供终止操......
  • [LeetCode] 1813. Sentence Similarity III
    Asentenceisalistofwordsthatareseparatedbyasinglespacewithnoleadingortrailingspaces.Forexample, "HelloWorld", "HELLO", "helloworldhel......
  • cpu profiler及火焰图学习
    转自:https://blog.csdn.net/10km/article/details/838200801.profiler输出 大字体显示的节点就是CPU使用率的’热点’。上述为SVG模式,可伸缩向量图形(ScalableVectorG......
  • 代码随想录18 LettCode 513. 找树左下角的值 112. 路径总和 106. 从中序与后序遍历序
    513.找树左下角的值下面运用层序遍历法比较简单,当遍历到一层时设立一个值去不断覆盖一层的队头,即最左边元素classSolution{public:intfindBottomLeftValue(Tr......
  • 数据库服务器CPU不能全部利用原因分析
    背景客户凌晨把HIS数据库迁移到配置更高的新服务器,上午业务高峰时应用非常缓慢。现象通过SQL专家云实时可视化界面看到大量的绿点,绿点表示会话在等待某项资源,绿点越大说......
  • 「AGC018F」Two Trees
    题目点这里看题目。给定两棵树\(A,B\),两棵树均包含\(n\)个结点。结点编号均从\(1\simn\)。现在需要给每个编号分配一个权值,使得两棵树上的任意子树内,所有的结点编......
  • 180.连续出现的数字
    题目描述编写一个SQL查询,查找所有至少连续出现三次的数字。返回的结果表中的数据可以按任意顺序排列。解题答案selectdistinctl1.NumASConsecutiveNumsfromL......