《深入浅出计算机组成原理》学习笔记 Day14

news2024/11/16 18:48:37

数据通路(下)

    • 1. PC 寄存器的实现
    • 2. 读写数据所需要的译码器
    • 3. 数据通路完整实现
    • 4. 总结
    • 参考

1. PC 寄存器的实现

PC 寄存器又名程序计数器(Program Counter)。

PC 寄存器由两个部分组成:

  1. 时钟信号。提供定时的输入;
  2. D 型触发器。我们可以在时钟信号控制的时间点写入数据。

加法器的两个输入,一个始终设置为 1,另外一个来自一个 D 型触发器 A。我们把加法器的输出结果写到这个 D 型触发器 A 里面。于是,D 型触发器里面的数据就会固定的时钟信号为 1 的时候更新一次。
在这里插入图片描述
每次自增之后,可以去对应的 D 型触发器里面取值,这也是我们下一条需要运行指令的地址。同一个程序的指令应该要顺序地存放在内存里面。这里就和前面对应上了,顺序地存放指令,就是为了通过程序计数器就能定时地不断执行新指令

加法计数、内存取值,乃至后面的命令执行,最终其实都是由时钟信号来控制执行时间点和先后顺序的

在最简单的情况下,我们需要让每一条指令,从程序计数,到获取指令、执行指令,都在一个时钟周期内完成。如果 PC 寄存器自增地太快,程序就会出错。因为前一次的运算结果还没有写回到对应的寄存器里面的时候,后面一条指令已经开始读取里面的数据来做下一次计算了。这个时候,如果我们的指令使用同样的寄存器,前一条指令的计算就会没有效果,计算结果就错了。

在这种设计下,我们需要在一个时钟周期内,确保执行完一条最复杂的 CPU 指令,也就是耗时最长的一条 CPU 指令。这样的 CPU 设计,称之为单指令周期处理器(Single Cycle Processor)。

2. 读写数据所需要的译码器

如果我们把很多个 D 型触发器放在一起,就可以形成一块很大的存储空间,甚至可以当成一块内存来用。

译码器就是来确定在内存中,要写入和读取的数据的位置。

2-1 选择器的实现是由一个反相器、两个与门和一个或门。通过控制反相器的输入是 0 还是 1,能够决定对应的输出信号,就是和地址 A,还是地址 B 的输入信号一致。
2-1 选择器电路示意图

3-8 译码器也就是从 2 3 2^3 23 个地址中选择一个。现代的计算机,如果 CPU 是 64 位的,就意味着寻址空间也是 2 64 2^{64} 264,那么就需要一个有 64 个开关的译码器。

译码器的本质:从输入的多个位的信号中,根据一定的开关和电路组合,选择出自己想要的信号。除了能够进行“寻址”之外,我们还可以把对应的需要运行的指令通过译码器来进行译码,找出我们期望执行的指令(opcode)。

3. 数据通路完整实现

D 触发器、自动计数以及译码器,再加上 ALU,就凑齐了一个拼装一个 CPU 必须要的零件。

CPU 实现的抽象逻辑图

  1. 自动计数器。其会随着时钟主频不断地自增,来作为 PC 寄存器。
  2. 在自动计数器的后面,连上一个译码器。这个译码器还要同时连着通过大量 D 触发器组成的内存。
  3. 自动计数器会随着时钟主频不断自增,从译码器当中,找到对应的计数器所表示的内存地址,然后读取出里面的 CPU 指令。
  4. 读取出来的 CPU 指令会通过我们的 CPU 时钟的控制,写入到一个由 D 触发器组成的寄存器,也就是指令寄存器当中。
  5. 在指令寄存器后面,可以再跟一个译码器。这个译码器不再是用来寻址的了,而是把我们拿到的指令,解析成 opcode 和对应的操作数。
  6. 当拿到对应的 opcode 和操作数,对应的输出线路就要连接 ALU,开始进行各种算术和逻辑运算。对应的计算结果,则会再写回到 D 触发器组成的寄存器或者内存当中。

4. 总结

我们可以通过自动计数器的电路,来实现一个 PC 寄存器,不断生成下一条要执行的计算机指令的内存地址。

然后通过译码器,从内存里面读出对应的指令,写入到 D 触发器实现的指令寄存器中。再通过另外一个译码器,把它解析成我们需要执行的指令和操作数的地址。这些电路,组成了我们计算机五大组成部分里面的控制器

我们把 opcode 和对应的操作数,发送给 ALU 进行计算,得到计算结果,再写回到寄存器以及内存里面来,这个就是我们计算机五大组成部分里面的运算器

我们的时钟信号,则提供了协调这样一条条指令的执行时间和先后顺序的机制。同样的,这也带来了一个挑战,那就是单指令周期处理器去执行一条指令的时间太长了。

参考

极客时间《深入浅出计算机组成原理》:http://gk.link/a/11UMi

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

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

相关文章

刚来的00后太卷了,上班还没2年,跳到我们公司起薪25k....

都说00后躺平了,但是有一说一,该卷的还是卷。 这不,前段时间我们公司来了个00后,工作都没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了…

Arthas 入门到实战(四)arhtas idea plugin集成插件

前言: Arthas 官方的工具还不够足够的简单,需要记住一些命令,但是我们需要的是一个能够简单处理字符串信息的插件即可使用。当在处理线上问题的时候需要最快速、最便捷的命令,因此插件还是有存在的意义和价值的。 一、idea插件安…

Blender 粒子系统

文章目录简介.添加粒子系统.属性.自发光(发射).源.烘焙(仅发射体).速度(仅发射体).旋转(仅发射体,除非毛发系统开启了高级属性).物理(仅发射体).毛发动力学(仅毛发).渲染.路径.视图显示.子级.簇集.糙度.扭结.力场权重.顶点组.粒子编辑.渲染毛…

GraalVM和Spring Native尝鲜,一步步让Springboot启动飞起来,66ms完成启动

简介 GraalVM是高性能的JDK,支持Java/Python/JavaScript等语言。它可以让Java变成二进制文件来执行,让程序在任何地方运行更快。这或许是Java与Go的一场战争? 下载安装GraalVM 安装GraalVM 首先到官网下载,我是直接到GitHub Re…

7-2输入/输出系统-I/O方式

文章目录一.程序查询方式二.程序中断方式三.DMA方式1.传送过程2.DMA控制器(DMAC)的内部结构3.DMA传送方式(1)停止CPU访问主存(2)DMA与CPU交替访存(3)周期挪用/周期窃取4.DMA方式的特…

基于改进粒子群算法的混合储能系统容量优化(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

css特性(继承、层叠、优先级)

1、继承性 特性: 子元素有默认继承父元素样式的特点(子承父业) 可以继承的常见属性(文字控制属性都可以继承) colorfont-style、 font-weight、 font-size、 font-familytext-indent、text-align、line-height … 注意点: 控制字的都能继承 可以通过调试工具判断样式是否可以…

应用系统基于CAS实现单点登录的解决方案

单点登录 (SingleSign-On,SSO) ,是一种帮助用户快捷访问网络中多个站点的安全通信技术。单点登录系统基于一种安全的通信协议,该协议通过多个系统之间的用户身份信息的交换来实现单点登录。使用单点登录系统时,用户只需要登录一次…

JAVA的PDF Viewer:Big Faceless PDF Viewer Crack

PDF Viewer是一个可以显示PDF文档的Swing组件。针对不需要完整 API 的客户,Viewer 可以作为 Applet、应用程序或通过 Java Web Start 安装,或嵌入到 Swing 应用程序中。 产品概览 打印、保存、文本搜索、表单、数字签名和注释是众多可用功能中的一部分 -…

IB 课程的挑战(二)

以下我想换个角度用自身的经历以及多年来教学的经验去分享修读 IB课程的挑战。 (一)必修文学科2022尽管我于会考中文获得「A」级成绩,但面对IB课程的中国文学 (IB Chinese A Literature)时,却仍感到十分吃力。我之前从未接触过中国…

网络IO模型

1 介绍一提到网络IO,甚至一些网络框架,就无法避免遇到阻塞、非阻塞、同步、异步的概念,要理解这些概念,先要清楚网络IO是什么,以及网络IO如何工作。网络IO本质上也是IO的一种,就是数据的输入输出&#xff0…

护网行动(防守方)linux服务器通用安全加固指南(1)

实验所属系列:Linux服务器搭建/Linux服务安全 Linux 是一个开放式系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入 Linux 系统,或者盗…

CnOpenData中国观鸟记录数据

一、数据简介 观鸟,是指在自然环境中利用望远镜等观测记录设备在不影响野生鸟类正常生活的前提下观察鸟类的一种科学性质的户外活动。 鸟类,是生物多样性中最具指示性的类群。由全国各地观鸟爱好者们共同记录的观鸟信息,能够展示中国各地区的…

cesium +vue3 +vite 实现点线面功能

第一步:搭建vue3项目 1、npm在相应文件夹下创建 npm create vitelatest2、选择项目名称 3、选择vue 4、选择是否使用typescript 或者JavaScript 5、记得在终端npm install一下就可以启动项目了 第二步:引入cesiumJS 1、npm引入 npm i cesium vite…

海康Visionmaster-VM2D,VM3D,VM深度学习对电脑配置要求

为确保VM算法平台能正常安装及运行,对PC配置有所要求。 第一:推荐配置: 操作系统:Windows7/10(64位中文操作系统) CPU:Intel Core i7-6700 3.4GHz 或以上(如需使用CPU相关深度学习…

32岁面试字节软件测试岗,想不到居然这么简单......

前段时间有个在小公司干了七八年的朋友离职了,想要拼一拼大厂,于是他选择了字节跳动。面试总共花费了 20 天左右,包含了 4 轮电话面试、1 轮笔试、1 轮主管视频面试、1 轮hr视频面试。 据他了解到的信息,其实去字节面试的人很多&…

爬虫(一)爬虫基本概念

爬虫概念网络爬虫 (网页蜘蛛, 网络机器人)爬虫就是模拟客户端发送网络请求, 接受请求对应的响应, 一种按照一定的规则,自动地抓取互联网信息的程序。理论上来说, 只要是用户通过客户端(浏览器)能够做到事情, 爬虫都能够去做。爬虫: 模拟客户端访问, 抓取数据。反爬: 保护重要数…

3、边界值分析

如何选定边界值 很难提供一份如何进行边界值分析的“详细说明”,因为这种方法需要一定程度的创造性,以及对问题采取一定程度的特殊处理办法。 但是可以提供一些通用指南: 如果输入条件规定了一个输入值范围,那么应针对范围的边…

WY49 数对

【答案解析】: 暴力破解:将 x 和 y 分别遍历 [1, n] ,进行判断当 x % y > k 时统计计数 count 即可,但是这样的话当 n 的值非常大 的时候循环次数将非常恐怖,需要循环 n^2 次。 更优解法: 假设输入 n10 , k3 &#…

QT/C++——对话框

一、标准对话框 #include "widget.h" #include <QVBoxLayout> #include <QHBoxLayout>Widget::Widget(QWidget *parent): QWidget(parent) {btcolor new QPushButton("setcolor");bterrm new QPushButton("errmsg");btfile new …