计算机中的第一个伟大发明(IR/IAR)

news2024/11/22 22:37:08

        计算机工具的普及极大的推动了科技领域的发展以及提高人们生活的便捷性,那么在其中有哪些举足轻重的发明呢?本节我们来了解一下计算机中第一个伟大的发明:指令寄存器和指令地址寄存器

回顾在步进器加持下的两数两加

        前面提到两个数相加的执行流程,那么在时钟和步进器的控制下,工作流程到底是怎样的呢?假设需要将寄存器R1值添加到R0寄存器,即R0=R0+R1。将在步进器的第四、五、六步完成:

  • 在第四步期间,R1的enable打开,TMP的set打开。R1的内容穿过总线并由TMP捕获
  • 在第五步期间, R0的enable打开,ACC的set打开。ALU打开ADD的操作代码。
  • 在第六步期间,ACC的enable打开,R0的set打开。R1+R0的值就传递到了R0寄存器上。

        下面是一个步骤图,显示了每个寄存器何时启用和设置。

        在第七步中,步进器被重置为第一步,在此过程重复。如果我们计算机中的时钟每秒滴答十亿次,也就是我们所说的千兆赫兹,即使我们使用多个时钟周期来“做一些有用的事情”,这意味着计算机可以在一秒钟内做几亿次这样的事情。但我们不想一次又一次地只做将R1加到R0上的事情。

        现在我们已经将R1添加到了R0,我们想将这个新的数字存储到RAM中的一个特定地址,而R2恰好有这个地址。同样,我们的处理器拥有完成此操作所需的所有连接,并且需要一个以上的时钟周期。在步骤四,我们可以将R2跨总线移动到MAR。在步骤五,我们可以跨总线将R0移动到RAM。只需要两个时钟周期,我们就完成了。

        我们可以用RAM、六个寄存器和ALU做很多事情的组合。我们可以从RAM中获取一个字节,并将其移动到四个寄存器中的任何一个,我们可以通过ALU移动寄存器中的任意一个或两个,并将它们相加、与它们、或它们、异或它们等等。

        我们需要一种方法让我们的CPU一次做一件事,下一次做另一件事。控制部分需要一些东西来告诉它在每个序列中要做什么。

计算机的第一个伟大发明

        我们需要计算机从一个步进序列到下一步步进序列进行不同操作的方法。我们怎么能让它以一种方式连接到一个序列,然后以另一种方式用于下一个序列?当然,答案是使用更多的门。一个操作的接线可以与AND门连接或断开,另一个操作接线可以与更多的AND门相连或断开。还有第三种和第四种可能性,甚至更多。只要一次只连接其中一个操作,就可以正常工作。现在我们有几种不同的操作可以完成,但如何选择要执行的操作?

        这个伟大的发明是指令集:在RAM中存放一系列指令,这些指令将告诉CPU要做什么。我们需要三件事来完成这项工作。

        第一件事是,向CPU添加一个寄存器。该寄存器将被称为“指令寄存器”或简称“IR”。来自该寄存器的位将“指示”CPU做什么。IR从总线获得其输入,其输出进入CPU的控制部分,在那里位选择几个可能的操作之一。

        第二件事是,向CPU添加另一个寄存器,称为“指令地址寄存器”,简称“IAR”。与通用寄存器一样,该寄存器的输入和输出连接到总线,但该寄存器只有一个目的,那就是存储下一条要移动到IR中的指令的RAM地址。如果IAR包含0000 1010,则将移动到IR的下一条指令是位于RAM地址10的字节。

        第三件事是,控制部分中的一些布线,它使用步进器将所需的“指令”从RAM移动到IR,在IAR中的地址上加1,并执行已放入IR中的指令所要求的操作。当该指令完成时,步进器再次启动,但现在IAR中已加1,因此,当它从RAM获得该指令时,它将是来自RAM地址的不同指令。

        这三件事在一起组成了一项伟大的发明。这就是为什么我们可以让计算机做很多不同的事情。我们的总线、ALU、RAM和寄存器使多种组合成为可能。IR的内容将决定哪些寄存器被发送到何处,以及对它们执行何种算术或逻辑。我们所要做的就是在RAM中放置一系列字节,这些字节表示我们想做的一系列事情,一个接一个。

        CPU将要使用的RAM中的这一系列字节称为“程序”。

        这里发生的基本事情是CPU从RAM“获取”一条指令,然后“执行”该指令。然后它获取下一个并执行它。这种情况一次又一次地发生,每秒几百万或几十亿次。这就是计算机工作的简单性。人们把一个程序放在RAM中,如果这个程序设计得很聪明,它会让计算机做一些人们认为有用的事情。

        这台计算机中的步进器有七个步骤。第七步的目的只是将步进器复位到第一步。因此,在这六个步骤中,CPU会做一些小事情。每个步骤持续一个时钟周期。作为一个整体采取的六个步骤被称为“指令周期”。CPU需要六个步骤来完成获取和执行一条指令所需的所有操作。如果我们假设我们的时钟以1千兆赫的频率滴答作响,那么我们的计算机将能够每秒执行166666666条指令

        下面是添加了IR和IAR新寄存器的CPU的图片。它们位于控制部分之下,连接到总线。IAR有“设置”和“启用”,IR只有“设置”,就像TMP和MAR一样,因为它们的输出没有连接到总线,所以我们永远不需要关闭它们。

        下面是控制部分中执行指令周期“获取”部分的连线。它使用步进器的前三个步骤,对于所有类型的指令都是相同的。步进器前三个步骤从RAM中获取“指令”,其余步骤“执行”“指令”,步骤4、5、6中的具体操作取决于所获取的指令的内容。第7步步进器重新开始,获取下一条指令并执行它。

        此图的底部包括指令寄存器。请注意,我们已经为IR的各个比特给出了数字,从左边的0到右边的7,他们分别代表不同的编码命令,稍后描述。

        下面是步骤1、2、3在计算机中获取指令的具体细节:

  • 步骤1是最复杂的,需要同时完成两件事:1)将IAR中的地址传递到MAR。2)将IAR中的值加1,存在ACC上。
  • 步骤2将RAM中当前选定的字节启用到总线上,并将其设置为IR。图中可以看到步骤2的导线连接到RAM的“启用”和IR的“设置”。
  • 在步骤3中,完成IAR的更新。我们在步骤1中为其添加了1(即拿取下一条指令的MAR),但答案仍在ACC中。它需要在下一个指令周期开始之前移动到IAR。因此,您可以看到从步骤3出来的导线连接到ACC的“启用”和IAR的“设置”。
  • 当我们进入步骤4时,指令已经从RAM移动到IR,现在步骤4、5和6可以执行IR内容所要求的任何操作。当该操作完成且步进器复位时,序列将重新开始,但现在IAR已添加1,因此将获取并执行下一个RAM地址的指令。

        将一系列指令放入RAM并由CPU执行的想法是一项伟大的发明。

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

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

相关文章

PyCharm运行PyQT6 (四) 百篇文章学PyQT

本文章是百篇文章学PyQT的第四篇,本文讲述如何使用PyCharm成功运行PyQT6,PyCharm在配置过程中会遇到很多问题,博主在本篇文章中将遇到和踩过的坑总结出来,可以供大家参考,希望大家安装顺利。包括 安装、遇到问题的解决…

Intel芯片、AMD显卡有多强?M1系列呢?

我们知道英特尔是半导体行业和计算创新领域的全球领先厂商 ,创始于1968年。如今,英特尔正转型为一家以数据为中心的公司 。英特尔与合作伙伴一起,推动人工智能、5G、智能边缘等转折性技术的创新和应用突破 ,驱动智能互联世界。…

【由浅入深 - Java笔记】玩转List:List过滤和筛选

文章目录List过滤:Comparator、Comparable 和 Stream1. 使用list的Stream进行筛选2. 增强for循环遍历元素,进行筛选3. 使用list.foreach遍历4. 使用iterator遍历5. 视频笔记List过滤:Comparator、Comparable 和 Stream 花时间精力去凿许多浅井…

5G无线技术基础自学系列 | 移动通信网络的演进

素材来源:《5G无线网络规划与优化》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 随着移动用户数量的不断增加&#xff0…

mac系统安装搭载Windows系统虚拟机方法教程

我们都知道macOS系统虽然相对windows系统而言更稳定,但macOS系统中可使用的软件数量较windows系统而言要少很多。对于macOS系统应用少的问题,我们可以使用虚拟机来解决。那么,苹果虚拟机好用吗?整体而言是可以的。苹果虚拟机怎么装…

0-搭建nodejs环境

1) 安装 nvm nvm 即 (node version manager),好处是方便切换 node.js 版本 安装注意事项 要卸载掉现有的 nodejs提示选择 nvm 和 nodejs 目录时,一定要避免目录中出现空格选用【以管理员身份运行】cmd 程序来执行 nvm 命令首次运行前设置好国内镜像地…

小马哥的CSS驿站

目录 第一章 CSS概述 1.1语法 1.2注释 1.3CSS的创建 第二章 CSS选择器 1.id选择器 2.class选择器 3.标签选择器 4.子代选择器 5.后代选择器 6.相邻兄弟选择器 7.后续兄弟选择器 8.交集选择器 9.并集选择器 第三章 CSS样式 1.文本与文字样式 (1&…

G2O学习 - 曲线拟合实例

学习使用G2O进行曲线拟合使用 1. 拟合目的,如何建立拟合的图模型 大概就是曲线拟合,求曲线 y ax^2 bx c 中 abc 的值。 但是我一直不明白如何获得下面图的。 我觉得应该是这样的 首先把abc视为一个变量,这个变量应该是一个矩阵【这里还…

Python和Pycharm安装教程

一、Python安装 1.进入官网下载Python 官网地址:Download Python | Python.org 官网下载可能会有些慢,请耐心等待 我这里把3.11的安装包和后面的Pycharm安装包都放到网盘里面了 链接:https://pan.baidu.com/s/1spxNUbH4trWBox1SJeBjkQ?pwdh…

Linux CentOS 系统安装

VMware 下载地址 Ctrl F 搜索【下载试用版】VMware 下载地址 Ctrl F 搜索【DOWNLOAD NOW】VMware-workstation-full-16.2.4-20089737.exe 文件下载地址CentOS 下载地址 Ubuntu 下载地址 阿里巴巴开源镜像站-OPSX镜像站 1、下载安装VMware虚拟机 2、下载Linux系统镜像&…

TCP/UDP/Socket 通俗讲解

1.封包和拆包 封包,就是发送数据前把自己本地需要发送的数据包装一下,即把要发送的原始数据附加上接受者可以辨识到自己身份等一些额外信息。有点像寄一封信,信封上填写的寄件人和收件人以及地址。 拆包,是接收到对方封包后发送来…

强化学习领域值得关注的国际顶级会议

导读: 强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达…

目标检测论文解读复现之十三:改进YOLOv5s的遥感图像目标检测

前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文&#xff0c…

LeetCode 0799. 香槟塔

【LetMeFly】799.香槟塔 力扣题目链接:https://leetcode.cn/problems/champagne-tower/ 我们把玻璃杯摆成金字塔的形状,其中 第一层 有 1 个玻璃杯, 第二层 有 2 个,依次类推到第 100 层,每个玻璃杯 (250ml) 将盛有香…

几何算法——介绍

几何算法——介绍介绍1 关于几何引擎介绍2 关于模型的表达2.1 CSG (Constructive Solid Geometry )表示2.2 Brep (Boundary Representation)表示3 关于翼边结构和半边结构3.1 翼边结构3.2 半边结构4 关于边界表示法4.1 ACIS中的Brep表示很早之前就想写一些几何算法相关的文章&a…

一汽大众迈腾车前悬架系统设计

目 录 摘要 I Abstract II 第一章 绪论 1 1.1选题背景及意义 1 1.2国内外的研究现状 1 1.3本文的主要研究内容 3 第二章 悬架的结构分析与整体参数设计 4 2.1悬架系统的简介与分类 4 2.1.1悬架系统的简介 4 2.1.2悬架系统的分类 5 2.2独立悬架的特点 5 2.3整体参数的设计 6 2.3…

VM Tools安装过程

系列文章目录 VM Tools安装过程 VM Tools安装过程系列文章目录一、VM Tools安装步骤二、安装后无法使用问题解决办法之一一、VM Tools安装步骤 此时系统会弹出装载虚拟CD驱动器 点击打开文件 打开文件后可将 文件夹里的文件全部复制到自己的某个文件夹中,比如桌面 注…

延误件如何筛选 物流查询分享查询方法筛选延误三天以上物流件

当你拥有大量快递单号需要查询时,如何快速查询出每个单号的物流信息呢?分析物流更新是否及时,有没有延误,今天小编给大家分享一款软件批量查询物流,并且筛选出延误件,一起来看看吧! 第一步&…

Linux进阶-编辑器

常用两个编辑器 gedit编辑器:依赖图形界面。 vi/vim编辑器:sudo apt install vim(安装vim编辑器) vim与vi的区别: vim是vi的升级版本,兼容vi; vi按u只能撤销上次命令,而在vim里…

QT之OpenGL摄像机

QT之OpenGL摄像机1. 概述1.1 摄像机创建2. 旋转(欧拉角)3. demo示例4. 参考1. 概述 OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感觉。 当我们讨论摄像机/观察空间…