欢迎。
那么这是ELE 475的第二场讲座,计算机结构。而且在今天的讲座中,我们将要去学习微码处理器,这些允许你复用构件和复用数据通路构件的微处理器是为了制造更小的组件处理器。正如我在之前的讲座中所说的,如果你正在观看本场讲座并认为,好吧,我之前就听过这一切通过坚持前三场或前三场半讲座。本次回顾是为了让我们班级里的每一位同学处在同一水平之上。
我叫David Wentzlaff,是普林斯顿大学电气工程系的教授。那么,让我们开始关于计算机体系结构的第二场讲座之旅。接下来是一点关于今天将要谈论什么的提纲。
首先,我们将以微码微体系结构开题,然后我们将以管道技术、基本管道、以及基本管道综述作为过渡。我们还打算讨论一下基本流水线和一些我们需要去分析其他管道技术的框架。接着,我们将讨论一下管道中结构性危害。因此,当你在一个管道中两个不同的位置同时使用一个资源时会出现一些问题。再接着,我们打算讨论一下数据危害这个话题。数据危害出现在你的管道中有一个指令、操作或者事务依赖于另外一个指令或者操作,但是他们处在不同的阶段。所以,你可能需要以某种方式联锁或者控制或者停顿在不同阶段之间。然后我们将讨论控制危害。我们今天可能会推迟控制危害的话题或者会讲述一点点,这取决于我们今天讲座的进度。但在控制危害中,我们要谈谈当你有一个要重定向管道或者改变正在做些什么的管道,或者减速正在做什么管道的指令,那是另外一种形式的危害。
好了,让我们以微码微体系结构开始吧。其中一个最大问题就是你要走了,这个问题是在处理器最先被设计时就发生了的,你不能忍受很多的处理器在同一个房间里面。更不用说,现在把它们放到一个芯片里面。但是其中一个问题就出现了,当一个处理器的大小刚好适合一个房间或者一个芯片时,你打算怎么解决这个问题。而且这不是你怎么解决多处理器在同一个芯片或者多个一个房间内的问题,但是如果你真的不能把一个处理器安装在以个房间内,所以这将是如果你正在建设你的芯片出来,或者你正在建设你的,请原谅,处理器出了什么问题,像真空管或开关,或机电式继电器。
你必须认真考虑一下,如果是你的处理器太大了,你怎么减少尺寸?是的,你可以时分复用资源,可以使用一个资源而不是建立一堆资源,然后收集它们,相反你可以建立一个通用的资源,然后你可以使用这个资源,然后再次利用,并在一条指令内再次时分复用该资源。这就是所谓的微码处理器。
我们来看看一个微控制器,和这些东西之一是如何工作的。所以,在这个设计中,实际上你会拥有运行您的处理器的控制线。所以这一堆电线是用到您的处理器上,并正在进行在AL使用上断言不同的事物,多路复用器,寄存器。其中一些将用于打开这些控制线,并且被用于下一阶段的计算。现在,如果你看这个,你可以看到,这实际上实现了一个像小有限状态机。但是,有趣的一件事情是有操作代码从程序中进入到这里。实际上你可以做的是,你可以循环使用一个一点状态机,你正试图执行的每条指令在一个程序中,它可以有不同的状态机依赖于来自这里的操作代码。所以,操作代码进来,你可能会有例如,条件,标志或类似的东西,从你的处理器出来所以无论指令是分支,以及该指示是否正在进行该分支与否。而且,你可以做的是,拿那个以及在这里的一个小的会把它保存在某个状态或某个地方地址的触发器。你实际上可以一步一步通过一个小状态机,这将做很多事情。我们再看看这个举例来说,这些微控制器之一,微控制器单元将连接到一个微码微处理器,或微码处理器。我想在这里讲解的一件事是,通常一个RAM,你可以实际上多次循环,RAM会告诉你在哪里以及下一个微代码指令是什么。所以你会小心,基本上都运转这个循环多次,或者也许只有一次,取决于实际你正试图执行的指令。这里是微码控制单元,或者微控制器连接到一个微控制过程或微码处理器。所以,我们在数据通道中处在中间位置有一个数据路径。我们有一堆电线从中出来我们的控制单元在这里,它声明数据路径上的不同事物。例如,当你做减法和加法时,它将把这些数据摆动到不同的多路复用器中,来选择到底执行哪种类型的操作。
我想对比一下,在存储你的用户程序方面,微控制器和带有内存的为控制单元有哪些不同。所以你的用户程序将被存储在RAM结构中或随机可访问的内存结构与读取只有内存结构。这其中最好的一个例子,就是你把ISA指令就像X86一样或者MIPS存储在你的RAM里面。所以如果你回到这张图上,通常会调用RAM条目微码指令。有时候人们写小程序那就是说,你是如何控制的不同的线出现在这里。好吧,让我们把这些放在一起看看我们将如何建立一个基于总线的RISC处理器。所以我们要构建一个像MIPS的东西处理器,这可能会唤起你对计算机组织课的记忆。我们将在那里使用一个数据路径随着时间的推移重用数据路径元素。所以我们要时间复用这个资源。这不是管道设计,也不是是单周期的RISC设计,但是相反,它是一个微型RISC设计。在今天的讲座中,我们正在谈论个,因为我们将与流水线做对比。让我们来看看这张图。我们将看到,我们有一个注册文件在这里,其中有32个一般目的寄存器,因为我们正在尝试实现32位通用MIPS通用寄存器。我们也存储程序计数器或该寄存器中的指令指针在该文件中。所以这个寄存器文件实际上有是33个元素。所以我们来看看一条指令是如何实现的将在这样的一个执行结构里面。还有其他一些事情要注意,那就是内存。所以我们将不得不取回我们的来自这里的指令。我们的ALU在这里,这是我们的指令寄存器。所有的东西都靠一个总线连接起来,这样每次只能有一个值能被驱动。而这个值可以通过广播传播多个地点。那么让我们开始思考一下我们是否需要去执行一个指令?那么,为了执行一条指令,我们需要从获取一个程序计数器开始。我们知道编程,如果程序计数器将被选中,因为微控制器将会在这里设置寄存器选择行,断言我们将选择的条目,32我们会说哪个选择程序计数器。
所以它会一直在总线内传播,但是我们真的很想去使用它并将其加载到该内存地址中去注册。否则,这将完成我们的第一个周期微代码控制单元处理器或微码控制单元处理器。下一个周期,这一切都在一个指令,我们要去取我们需要从数据存储器中获得指令或者和指令存储器。那么它就会被迫进入这个领域总线,我们将采取并锁定它在这里或注册到指令寄存器。所以,在这一点上,我们取回了指令。那就是,迄今为止这已经做了相当多的工作。接下来我们需要做的就是去获得实际操作数。所以在这里的第三个周期,我们要走了采取rd,我们会说,或实际上我们将采用两个来源,rs1和rs2。现在,我们要从中获取第一个rs1我们的寄存器文件并锁定那个或将其注册到A操作数中。然后我们要为rs2做同样的事情在第四个周期。现在我们可以做到了,让我们说一个加。假设我们假设,我们正在做在这里添加指令。所以现在我们可以添加。所以我们让A和B实际添加。我们需要在某处存储结果。那么,方便,我们知道我们想要将其存储到目标寄存器中。所以我们不必将它存储到A或B中,我们实际上可以将它存储回去在这里注册文件。所以我们会断言rd是地址,我们将是微码控制单位将主张权利登记寄存器文件。好吧,我们现在已经做到了实际操作,几乎完全。我们接下来需要弄清楚如何增加程序计数器。因为我们想要去接下一个指令。正如我们所说,我们没有存储该程序无论如何,在这里的任何地方。所以我们需要重新获取该程序反出注册表文件。我们将要重用或时间复用ALU在这里。所以我们要拿这个价值,把它进入A,我们将通过增加
4。所以下一个周期我们会做,让我们说一个在这里操作,假设ALU有一个只需添加四个特殊操作。或者,您可以尝试加载四个进入B寄存器。我们将增加四个因为我们的指令长度为四个字节。我们将存储该值进入程序计数器。所以在这一点上,我们已经执行了完整的一条指令。这需要,我想我们加起来了五,六,不,我想六或在那个点上七个周期。现在,我想指出一件事情在我们最关闭这张幻灯片之前,是这取决于你的指示执行,你可以有不同的金额所花费的时间。举例来说,如果你想要做一个分支指令。分支指令是一点点不同。实际上我们不会添加四个到程序柜台。我们可能需要获取不同的值进行比较,然后取出程序计数器或添加一个不同的值当我们去做一个时,到程序柜台分支操作同样适用于跳转。它可以有不同的数量周期。
另一个不同数字的好例子的循环是,如果我们要在一元指令下操作,或者只有一个输入的指令。所以一个很好的例子就是,哦,让我们想一想,这个例子是什么?在一个值中,你只需要翻转所有的位,这是一种逻辑否定。我不认为MIPS 有这个指令。无论如何,我试图在这里得到的是,根据指令的不同,实际上可以有不同数量的周期来执行指令。举例来说,就像一个负载指令,也会更多周期,因为你将不得不在这里更多地循环存储器单元。你必须在你的地方执行指令。通用注册表文件,实际上去并从中获取数据记忆,然后把它放回去注册并可能与它做一些数学计算然后将其存放回寄存器。
现在我们将谈一谈,关于基本流水线的内容,我们打算,只是谈论如何建立一个流水线以及如何在管道中命名事物,以及指令如何流向管道,以及为什么你想建立流水线。我们以非常温和的开始介绍这个,而不是我的谈论,理想化的管道,并不是一定必然在处理器中。在世界上许多地方都有流水线的地方,它们出现在汽车工厂和玩具工厂中。我知道有些人会说,你知道,当你去洗衣店使用洗衣机的时候,你正在使用流水线会,因为你首先把你的衣服放在洗衣店里机器,然后把它拿出来。那么你可以把它放在烘干机里,我们可以在更多的工作,或更多的洗衣。所以我们可以,我们可以看到很多流水线,出现在世界上不同的地方。但我们也在这堂课中看到它,我们会关心如何使用管道微处理器。所以让我们来思考一个理想化管道。我有一张关于理想化的管线的照片。什么是好的,什么是好的或者一些必要的理想化管道的条件。所有的工作,或所有的工作对象应该经历所有阶段。所以在这里我们有四个阶段的管道,并没有那种扭曲流水线,有些事情从某种程度上出来管道,或者绕过管道,或者尽早退出。在这张图中并没有发生。所以,在理想化的管道中,你想要所有的东西的目标是通过所有的阶段。你不想在不同阶段之间分享任何资源。所以你不想在这里有一些资源被盯着,在第二阶段和第三阶段之间分享。
这是一个在汽车中的例子,装配管道或装配线将是两个不同的工具。管道中的阶段必须使用两个,不同的阶段必须使用那个引起所谓的结构性危害。
在处理器设计中,所有的传播延迟不同的阶段应该是一样的。在理想化的管道中,第一阶段的时间应该是与第二阶段相同,第二阶段相同与第三阶段,和第四阶段一样。然后,最后,调度一个操作或事务,或对象顺其自然不应该是这样受目前的情况影响管道。而且,这些条件实际上是成立的对于大多数装配线在工厂里,人们去建造汽车或类似的东西。这个之间没有依赖关系在不同的部分之间。一辆汽车进入管道中,所有的汽车都是各不相同,相互独立的。这不是一个问题。不幸的是,如果你去看看像微处理器和执行指令。这条指令实际上取决于更早的指令,而且他们依赖于它不同的方式。他们可以依赖于数据值或者他们可以依靠你采取了分支或控制流程指令。所以我们必须看看这些不同危害,我们必须考虑如何要么解决他们,要么处理他们我们必须怎样去思考
如何处理非理想的管线。所以让我们一步一步超出我们的微代码
磁盘处理器的设计和看看MIPS的非流水线数据路径指令系统。所以这将是相似的。或者如果你已经参加了电脑培训班,你可能已经看到了类似的非流水线数据路径。所以,当我们处于非流水线数据路径时,而不是程序计数器,我们有一些指令,以及我们从内存中读取指令。而且,这个流过,我们取回我们的
寄存器文件中的寄存器。我们流过,我们做实际计算,我们可能不得不去问,来自数据存储器的数据,如果我们做负载或恢复,然后终于回来周围。我们在这里写出结果并且增加或更改程序计数器。而且,这一切都是在一个周期内完成的。这是一个非常漫长的周期,因为你启动在这里,你经历了所有这些工作。你做所有这些事情。数据放在这里,你有它必须发生,因为我们是非流水线,我们有一条未流水线处理器在这里,它必须发生在一个周期。所以这是一种,从一个循环来看并不是很好时间观点。从一个角度来看,这是很好的每条指令的周期数。它始终是一个因为你启动指令,你等到它完成,那么你启动下一条指令,你启动下一条指令,并分别执行,它启动的指令是一个周期。
让我们来简化这个设计吧。在这里到底发生了什么,在这里进一步深入一的谈论。所以,我们要简化我们的非流水线处理器设计,只是拿出一些在这里额外的东西,并专注于,你从程序计数器学习。它充当指令存储器结合起来,你经历了注册文件组合逻辑,你通过数据存储器,然后你来回到我的身边。所以,这对于加载指令来说这将是最糟糕的事情,而且值将在这里返回到通用寄存器。现在让我们继续思考如何我们建立相同的数据路径,但我们尝试现在运行一条管道。那么我们想要做的第一件事,就是我们想要切断管道或切断我们的管道设计。我们将把它放到寄存器里面。而且,它只是,所以碰巧这是一个
便于往寄存器里存放一些东西的地方,像MIPS数据路径。而且,你可能会遇到一些重要的事情回想你的数字逻辑设计当然,当你去管道电路,你需要确保你
切断正在进行的所有线路,方向跨过寄存器。所以如果我们要在这里砍,我们需要放下一个寄存器在这里,这里和这里因为有三组电线从左到右运行。这里的反馈路径不需要道注册因为它是流动的回来,它有效地运行进入这里的寄存器文件。你知道,寄存器文件也可以根据方式进行计时或取消计时你实际上做了这个设计。所以我们现在已经流水线化了数据路径。我们来,让我们在这些上写一些名字事情,我们将重新使用整个类。所以我们会把这个叫做抓取
阶段或指令获取时间。有时在这堂课我们也会用大写字母F表示,否则我们会
用I F表示这个指令取。接下来我们要做的就是我们去解码指令,我们是
也将从中取出寄存器寄存器文件。所以解码指令就是这样,把紧紧包装的东西拿出来的指令,我们把它吹到控制电线。我们是注册取指阶段实际上要从寄存器中取出文件,这有时候会表示大写字母D,或者有时我们会用RF表示注册提取。这是执行阶段。我们其实在这里做了真正的工作。我们正在接受ALU。
我们正在做一些补充,我们正在做一些繁
全文共11304字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[12355],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。