UCB CS61c 组成原理中文笔记(四)
P26:Lecture 20: RISC-V Single-Cycle Control - 这样好__ - BV1s7421T7XR
杰克逊,谢谢你的控制,干得好好的,让我们给它一些爱,开始吧,让我们开始吧,欢迎大家周末回来,希望你一切都好,希望大家都在做,好啦,我有机会给你充电,新闻中的计算。
我们有一些领先的机器人制造商承诺不将它们武器化,谢谢谢谢你这么做,六大机器人厂商纷纷发文,不承诺不组织他们的产品,波士顿动力,你看到的那个大的,和照片里的机器人,敏捷机器人学,任何机器人技术,等等等等。
承诺反对将他们的先进机动性武器化,通用机器人或其软件,同时也发誓要确保他们的客户,顾客也做不到,那其实是,我不知道你是怎么做到的,因为你可以把这些东西,但也许他们可以,那很酷,好啦。
今天我们谈论的是控制,珍妮特,杰克逊,欢迎我们加入,我很兴奋,我们看到了一条数据路径,现在我们将看到控制,顺便说一句,快乐,十点十点。
只是想在那里给你一些爱,挺有意思的,好啦,数据路径和控件。
所以在回顾中,到目前为止我们看到了什么,他们在开球方面做得很好,当我们使用类比来查看完整的数据路径时,我们已经看到了我们有五个执行阶段。
我们现在可以运行风险5中的任何一个,我们看到的说明太神奇了,所以我们建立了一个语言风险五,现在我们造了一台机器来做到这一点,我们还没有控制住它,所以我认为控制是让事情运转起来的提线木偶。
所以数据路径就像管道,控制就像,你如何转动开关让它们都工作,所以执行有五个阶段,指令提取,指令解码,执行,哪一个是我们的路,一些记忆显然意味着不是,所有这些都将是活跃的,您要注册请阅读,你不碰记忆。
但你仍然有这五个阶段,马上我们将推动内存或寄存器,在一天结束的时候,控制器指定这些如何工作。
所以让我们做,让我们今天来深入研究一下,这是我们的单核过程,你以前见过这个,现在你知道记忆是右边的一部分,有一些写和读数据,现在你知道你知道我知道那些台词,我看这个写数据,读取数据。
我知道那些台词是什么意思,我的地址来了,现在我要启用内存,我是为了记忆而阅读还是写作,当记忆在阅读时,总是被动的组合逻辑,我写的是在下一个时钟周期开始时,这一切我们以前都见过。
下面是我们的数据路径,我们已经看到,丽莎很好地解释了我们建造的所有东西,为什么,现在让我们深入了解更多控制这些的例子,你做了几个控制线的例子,控制,你在底部看到的底部大行。
所以让我们深入研究一下,我要袖手旁观,今天我要少动一点,我要用光标向你展示什么,我会专注于所有的权利,所以我有一个存储字加载从内存存储到,所以目标是从这里的数据推送,从寄存器到内存存储二。
我有一个基本指针,到目前为止已经加载了,所以我有一个收银机的地址,我想把它放在哪里,它将被添加到一些抵消中。
我们要把这些数据放在那个位置,那是我们以前都见过的,让我们一起做吧,所以我们首先看到的是十二点,第一件事就是拉响警报。
这个钟升得很高,在运动中开始一整天,突然间那些线变得很高,为什么新的个人电脑,不管那台电脑是什么,我不知道那是什么,可能是跳转到这个指令,我可能得知道那是什么,我也不知道,我醒来,我知道那是什么。
然后我添加四个,它就在这个多路复用器的内部等待,可使用,也许没有结果,它将被使用,因为一个存储词也是PC加四,所以我们知道我们以后会用这个,但它在等着我,这条指令从IMM中解码出来,IMM是只读设备。
他知道这里没有钟,所以数据出来了。
传送到所有这些线路,分成这些线,包括直接,因为这个偏移量是直接PC加4的一部分。
他说马上就要爆炸了,现在已经定了,它将在注册繁荣的PC内部等待,就在那里完美,我的直接选择器是什么,我有很多选择,会是S型的,因为这是一个s存储单词是一个s类型指令,所以它抓住了s类型的特定部分。
你可以查一下细节,我们上次看到了,今天结束时我要给这个登记处写信吗,否,存储的目标是写入内存,不登记,所以写寄存器写已经启用为零,你知道右后卫选择的是什么,会是什么,如果我不给寄存器写信。
“那么我在给谁写信呢?”,我根本没在写,没关系,谁将把这些数据输入其中,我不全是写的,我早就知道了,这个WB细胞将是一颗恒星,我不管那是什么,我关心的是这个部门是否会比较,是否使用无符号比较。
我不是在做比较,我只是在做一些事情,所以那颗星根本没有分支,那颗星那颗星,我在哪里,我要用一个ALU,我们几乎在每一个操作中都使用Lu,几乎每个我们使用ALU的人,我们在这里做什么。
我在读数寄存器的基本指针,我把它加到偏移量上,记住,就像三个中的一个对吧,所以这是一个基本指针,再加上十二个三个,所以我要做这个,ALU X将成为一个广告,我们开始吧,我怎么喂得好。
一个说B说必须从直接的,A说我从这个寄存器里喂它,因为这个基本指针只有5位,说是哪个寄存器,实际的32位进入寄存器本身,很明显是1和0,然后再次选择此添加,阿卢变热了,几乎每一次手术,我在为记忆而写。
是呀,我是,我很好,这是所有指示中唯一的一个,实际上存储要存储的单词,半个字,存储字节,但这是少数几个我真正触摸记忆并为记忆写作的人之一,这是非常令人兴奋的,所以这是对的,就像我们在斯坦身上看到的。
那些线路变热了。
那些线路变热了,那些线路变热了,突然之间,那里的状态,当时钟敲响。
有人写信给他,PC得到PC加4,好啦。
我们以前见过,那是一篇很快的评论,但这是存储词分支相等的控制线。
记住有一个目标,每一次行动都有目标。
必须有所改变,为什么你会有指示,什么都不会改变,所以可以改变的三件事正在改变。
通常有一台PC在更换,这就是我们在这里做的,我们的目标是也许我们会改变一台正在改变寄存器的PC,也许我们在做一些更新,我们在做更改寄存器还是在更改内存,这是我们要做的三件事。
在这一点上还有什么可以改变的,有人指出其他可以改变的东西,这就是改变的三件事,所以今天我们要在这个特殊的今天,意思是这个分支我们要改变这台电脑,也许也许如果他们是平等的,如果他们不是,我们不这样做。
好吧好吧,我们每次做加四或不做加四都会改变它,如此正确,唤醒新的一天,所有被喂食的,这已经是,这就是我以前看到的一切,有趣的是这台电脑会过来,为什么它会很好地传到这里,我去这个标签,记住记住分支相等。
分支相等是一个相对的东西,所以我们得把电脑,然后把它加到三角洲看看我们去哪里,好啦,所以指令现在被解码了,我有所有的部分在那里,是树枝,这是一个分支,所以,我正在做一个分支立即。
我今天是在给收银员写信吗,我不是零,我是否关心一个无符号的比较,那很有趣,在我们告诉你那是什么之前,我们该怎么想,我们做事是平等的,有关系吗,如果他们没有签名或签名,相等意味着位等于位。
32位等于32位,那就是星星,我在乎分支的价值吗,小于是不是,我在乎价值吗,我会说到那一秒钟的,这将是一个分支相等,我真的很在乎,我是什么,我得喂这个阿鲁,我喂它什么好,其中一个价值将是旧的PC。
另一个值是什么,嗯,这个偏移,不管这个分支偏移量是多少,我要把这个偏移量,再加上那台电脑,相对代码,是添加到现有的PC上,上下移动一点吗,Alu a选择是一个,意思是它来自电脑,零均值来自寄存器。
B B总是说来自眼前,B入选,这个来自媒体,所以我把它们加起来,我为什么要加他们,因为它是偏移量,加PC加等于,不管三角洲是什么,我以前见过这个,我写的是你的记忆吗,否,那只是被动的,回到被动的状态。
只有存储是活动的内存,其他一切,每一条指令都只是一次阅读,只是被动,顺便说一句,也许它会起作用,但这是一个地址,去查查价值,我们不在乎,我们不用它,我们不用它,所以在这个特殊的,我们用它来形容其他词。
但不是这个特定的右后卫像零,我们知道这一点,因为我们不会改变寄存器,当这个归零时,你知道这是一个明星繁荣,立刻,你应该这么说,然后最重要的一个,呜呜,当这相等的时候,我有,什么,我控制什么。
这在这里有什么变化,你应该能拿起你的手指,这里会有什么变化,什么会改变,如果相等的话,PC,是啊,是啊,改变它得到的东西的PC,PC选择,以便选择的一块是该分支相等与否的结果,好啦,我觉得,哦。
所以这一切都变热了,这一切都会改变的,全靠这个,会改变的BRRE Q,这台电脑选择一种方式或另一种方式,所以这两个都很热,然后我们实时做出决定,不管那个分支是否相等。
到目前为止,他们有很多人,而且进展很快,但希望很多评论,我们只是在经历所有可能改变的事情,让我暂停一下,处理一下任何问题,这是一个很大的问题,我跑得很快,我们今天有很多事要做,是一场座无虚席的演讲。
所以我想确保我涵盖了所有,但本质上你已经看到了数据路径,我们只是一个接一个地经历并理解它,如果你,如果您在数据路径上仍然落后,我建议看丽莎的讲座,在我们开始这个之前,请确保您对理解数据路径感到冷淡。
所以如果你在YouTube上,暂停回去,确保你在所有这些步骤中都是冷的,因为这就是我要走的步伐,我假设你和我在一起,我假设你,你有点动摇了数据路径的所有元素,我们会在这个时间。
我们已经讨论过什么是热的,当我们还没有真正谈论这一切的时机,这个时机让很多人在61 C停顿了一下,这很难,我们以前从来没做过计时,你知道从来没有真正担心过时间,如果有什么,你只要调用一个函数。
其实我们很在乎时机,当然,我们正在建造CPU,让我们来看看什么,时间是广告的,所以我要加上这个,这是最简单的一个,从字面上看,最简单的操作就是添加,一半的这一半要去黑暗,我们不在乎他们,所以我早上醒来。
这个变热了,所以一个新的PCD,新的一天破晓了,我都不知道那是什么,但这里有个地址指向你,如果我看这个碰巧是这个广告,广告的片段,你现在知道那是什么了,太刺激了,电脑加四等着明天,我们要做电脑加四。
我们知道那会很热,在这里解码在那里我们看这个,我们已经知道我们在等待PC之前就已经知道了,因为它依赖于那个分支,等于现在我们已经知道接下来是p加4,下一条指令是,在IMM里的广告后面是什么。
我有什么即时的吗,我不知道,所以一旦我看到这将是明星,我已经知道我们要给B细胞,B细胞不是从一个直接,因为这是星星的意思,我当然不知道,我这里有垃圾,如果我有明星意味着,我根本不在乎这条线是什么。
这条线上有比特,这才是真正有趣的,这是一个非常有趣的考试问题是在一些指导像广告,我问你,这条线现在是什么位,好吧,这取决于如果我说明星好,那你不知道,因为它可能是任何东西,但如果我说。
让我们把它变成一个B,你在解释这些广告,好像他们是一只蜜蜂,戳着它,告诉我到底是什么,即使它会被忽视,因为b选择是零,所以它将被忽略,但告诉我这些是什么,真的很有趣。
如果学生能真正理解这些比特在不同的教学中是什么,不是那个开车的人,你应该能做到的,那很有趣,如果你有一个学习小组,这是一个问自己的好问题,所有这些线条,没有一条线,没有指示转弯,所有这些黄色。
所以在一条线不是黄色的地方,找出这些比特对特定结构的实际作用,可能是,你知道的,要求拉起绿单,把所有的部分都看对了,那会变成什么,就是这里,如果你是明星,你不知道,因为我不知道那是什么感觉。
我是说它在做,但只要把它分配给一些随机的东西,把它放进去,我把它放在B,把它放进去看看那些碎片会是什么,这真是个好问题,考验自己的好方法,我是在给收银员写信吗,一天结束,我的全部目标是写信给登记处。
所以是的,我在写,这意味着我确实关心,后面是什么,选择我已经知道会是哪一个了,你能告诉我。
零一二,零来自内存,一个来自鲁国,两个来自电脑。
好啦,两个来自电脑。
加四,哪一个,我要驾驶它,添加的目的是什么,从ALU写回记忆,ALU会有的,所以有些人实际上写了一个,他们也在这里写ALU,不过,我们走着瞧吧,我只想看一次,我知道这一点,我已经可以跳到前面了。
如果我想,顺便说一下,这也是考验自己的一件大事,只是说,抛出指令,您应该能够写下所有这些值,就像很快,所以这是这个级别的另一件事,你们应该都能做到,这就是为什么我早些时候走得有点快,但你应该能做到。
好啦,我要和这个分支比较器做比较吗,否,那里会有碎片,但我不在乎他们是什么,所以不管是什么,这些值是,什么都没有通过,价值正在流向分支竞争对手,分支比较器,那是一条信号线,说着,你是没签名还是没签名。
比较一下,有一些碎片从他们身上回来,我把他们都忽略了,没人在乎,我关心的是,B选择一个ALU选择井,如果我用的是ALU,我当然知道,我们正在利用这一点,所以我当然在乎,那些是什么。
这些都很明显,零和零表示寄存器的馈电,这是一个简单的问题,所以零和零总是表示双寄存器读取。
太好了,我们有一个注册文件,一次可以读两次,那真是太好了,那是许多人,不过,我会去收银台,你可以从一个读到一个写到一个,早上写一篇,然后读一篇不,我们需要读这个广告的两个,我们需要读其中的两个。
所以我们最好买更好的,构建寄存器文件,所以丽莎说支持双读,这是非常重要的,为什么我在一天结束时加上,与ALU在一天结束时,我在做广告,当然,我做任何记忆,嗯,我最好不要,我最好现在又进入阅读模式了。
另一个很好的问题设置了意外的正确,好好看看会发生什么,这里会有地址的,地址是这些东西的总和,所以我可能会问什么改变得很好,你可以算出总数是多少,然后你可以抬头说,那是要用什么改变的内存地址。
然后你沿着这条线,哦,这是怎么回事,这不是很有趣吗?那不是很整洁吗,所以你真正做的是,你写信的地址是,R2的数据是什么,你写了两篇两篇两篇,你在和里写r 2,一加二,不管那碰巧是什么。
那就是你写二的地方,如果这是一种权利,你不是,但如果它不小心得到了,你说的对,你就会把它放在那里,只是一些问题,你问,我只是在戳,我只是在上班时间闲逛,我说过这里会发生什么,这是一件很有趣的事情。
因为你又在为,我们正在用ALU回信,排名第一,第二天写的血淋淋的,但这些都很热,这些都变热了,关键是这是最重要的,此操作的目标是更改寄存器文件并boom,上面写着扳机,在数据中等待着,数据在那里等着。
地址在那里,去是。
这是数据,这个数据将是,再加上地址就是那个地址,那五个比特所以第二天,个人电脑加四个,第二天加载,这个寄存器有一个新值,我们准备好出发了,让我们再详细一点。
看例子,加x一x二x三,这是一张非常有启发性的幻灯片,我真的很喜欢这张幻灯片,所以我们到这里来,这就是我今天站在这个讲台上的原因。
因为很多镜头都是放大的,请随意放大我,对了,摄像的人都进来了,因为我可能不会在今天剩下的时间里到处走动,所以时钟走高,发生的好事,有一台旧电脑,我不知道是什么,现在PC醒了,不管这是什么这台电脑。
一千说电脑,一千是这个的地址,所以这活在记忆中,广告的这些片段,活在记忆中,一千块就说明了这一点,所以PC醒了,请按,这不会隐藏的,我只是要移动我的鼠标在这里,接下来发生的事情,这台电脑出来了。
现在立即进入这个广告,现在在这个后面加上,延迟这台电脑加四或指令,在那之后就在这里等着,在井里等着,如果你有任何问题,或者举手,如果我开得太快,我们只是慢慢来,我们就像单周CPU的慢动作计时。
意味着每条指令都要在一个周期内发生,然后我们要问一些问题,2。我们最快能跑多快?在接下来的几张幻灯片中,现在呢,这台电脑出来了,我拿到地址了,我知道这是一千个一千个进来,有一点延迟,什么事耽搁了。
延迟在这个叫做imm的组合逻辑元素中,其中有一千个进来,这里有一千个进来了,从这条线上出来的是什么,这则广告的三个二位编码,就在这里,所以这些现在要热了,这些都是实际值,他们会吃进去的。
我们要看看还发生了什么,嗯,这进入了我们今天正在构建的控制逻辑,我会谈谈如何做到这一点,但假设它需要一点延迟,弄清楚我们今天要做什么,哦好的很好,我们在做一个x 1 x 2 x 3的广告。
我最好把我的线都准备好,除了把我的房子准备好,让我得到我的台词,我们一直在谈,所有这些底线都在这个底部,让我们把那些准备好,让我们开始考虑他们,让我们开始弄清楚打开和关闭东西的组合逻辑。
所以我们称之为加法控制透镜,我首先要做的是登记,阅读这些片段,直接进入,这不是控制线,控制逻辑作业,这才是正道,它连接在数据路径上,这些部分变热了,因此,这是一个读取元素和bloop,突然之间。
我将从中读出一些值。
我在读什么,我正在读第二页和第三页,所以价值出来了,注册二和三,是什么触发了这一点,现在这些都很热,指令一出来,所以当这个指令出来的时候,这就是延迟,这里是内存读取延迟是一个时钟,其实不是。
它是组合逻辑延迟,又不是说,里面没有钟,只是,这只是一个组合逻辑延迟,不管怎样,一个新的地址。
这里有新的五位,这里有新的五位,有一些延迟,在登记簿上阅读和繁荣,那些价值观变热了,这里和那里是黄色的就是这两个部分,不管登记簿里有什么,或者登记簿里的任何东西,就在那些行上,第一和第二的寄存器,好啦。
下一步是什么现在我有了一些新的价值观,顺便说一句,这些值以前是垃圾,不管是什么,我不在乎,这个卢在做一些其他价值观的广告。
但现在我终于得到了,我真的很关心这件事注意到我们就快到第二天黎明了。
这很糟糕,帮我坚持到最后,最好在这里完成,所以最好能成功,哦,我的天哪,这东西太短了,我们会有麻烦的,这个ALU现在有正确的值。
我是在你叫我加之前加的,我一直在添加,我从来没有开始添加,我一直在添加,但直到现在,两个好的价值观,我关心寄存器一号和寄存器二号,或者不管x 1指向的值是什么,到了x2和x3,卢现在得到了他们。
我有我的广告,所以现在我得到了reg的值,是2号加红3号。
现在鲁有它看,都是你看,它是,就像不可能完成的任务,就像。
炸弹要爆炸了,就像计时器一样,我最好在下一个钟点前完成这件事,快点,快点快点,下一步是什么,这必须以最快的速度塞进x 1,但它还得经历更多的事情,它必须通过这个多路复用器,它必须放在这里,而且更好。
在安装前做好准备,好啦,所以这个右后卫穿过这个右后卫来到这里,这是正确的,这里是右后方,这是正确的后值,它在那里,它在那里,它就在那里,有足够的时间,设置好让它进去,然后注册一个,不管是谁都是垃圾。
我以前不知道这是什么,但我要去这个皮肤剥落,它,我不在乎,它是什么,我要把它打得落花流水,r的和r的和x2,再加上x 3的r,等等为什么,这是什么?等一下等一下,这很糟糕,坏了吗,它发生在这之后。
那么在时钟上升边缘之前应该发生什么,否,价值就在,但是值是在时钟时写入的,所以它就在那里,价值在那里看,价值及时存在,时钟命中,现在它已经为下一个周期做好了准备,所以如果下一个周期,我用x 1。
它会有正确的值,那是他们的关键,你的问题很好,问你的问题,哦当然,我看见你了,我没必要,哎呦,这是个好问题,这正是一个很好的问题,问题是再告诉我一次,尼康悬而未决的问题。
CPU设计人员是否必须考虑所有这些延迟,百分之百,是呀,不能再多了,是呀,如果我们看到这个,我们必须考虑到所有的,事实上,我们将在下一个指令中看到这一点,就像,最长的路是什么?在那条关键的道路上是什么。
当我们调整这个,当我们看着我们的时钟,这里是嗯,我们想把这个,我们想卖一台速度快的电脑,我来拿把手,我把它上下翻转,我最好能看到所有这些值。
在所有可能的组合中,看看我最长的路是什么,看看那个时期能有多小,因为那可以说是价值数十亿。
回到以前,如果我能让这一点,两个5千兆赫与世界上一个巨大的性能差异。
我的意思是整个世界运行在125G赫兹。
但如果我肯定会违反一些设置在那里,我有很多T套,我可以违反。
我可以违反这个设置,你为这个做了准备,所有的钟还是这个,在任何可能的组合的任何阶段都不能违反,这正是CPU设计要做的,这就是我们正在做的,我们一起开发的,放缓,在几天的时间里以慢动作显示。
做这件事会是什么,做这些计算,那正是我们正在做的,完善更多问题,太好玩了,但是是的,去吧,告诉我,告诉我乔纳森,走呀,走呀,是的,单位的延迟时间有变化吗。
当然,真正大或慢的事情,记忆慢,事情真的很小,注册真的很快,所以很明显,在需要多长时间才能,在内存中寻找一个特定的位置,并将其值与,啊,只有五块钱,只有32个可能的寄存器,值注册得非常非常快。
那是在很远的球场上,还记得萨克拉门托吗,这需要很长时间来担心,所以让我们好好想想。
这是我们的广告时间,这正是重点,现在让我们看看我们的关键路径,哦伙计,这会让人困惑的,但请记住,作为最简单的指令,让我们谈谈那个。
我们的关键路径是什么,让我们在这里看看,第一个排队的时钟是什么?我要问你,我要指出一个术语,你告诉我它是从哪里来的,那怎么样,我们会在那里玩得很开心,第一个排队的时钟是什么?
那是电脑,以前就是这个人,那就像黎明,一天的黎明是PC,PC寄存器唤醒,不是三个中的一个,这是一个三三寄存器,它醒了,我在等你的时钟,我现在就可以开始了,记住我们在做广告,我像麦克斯一样这么说。
我为什么,为什么有最大值,我觉得麦克斯,有两条路径,两条平行路径,我的意思是,更长的路径是。
这将是我的批评之路,那么为什么这两条路径,你可能会说,观众参与,为什么有两条路径,所以这个广告不仅仅是亚当,为什么我必须有两条路径,这里发生了什么事?为什么会有,我看你可能会看到你。
我只是看到一件直截了当的事情,去吧,去吧,去做吧,为什么会有,为什么没有任何意义的两条路径,我送出的两种颜色,屏幕上有两种颜色,如果你看不到,一个黄色的,所有的数据都在那里,这个小小的绿色的是。
所以这可能是非常小的,所以我们把它冲走,让我们来看看真正的道路,所以所有黄色的,这就是为什么我们称它们为黄色,我们先来看看,是广告,那是伊玛目,我们得看一下登记簿,读取这些寄存器的值。
我们现在要通过多路复用到这里,为什么这不是,再加上两亩有两个武藤去了吗,就像上面的渣滓和下面的渣滓都在等着他们,它们是平行发生的,只有一个多路复用器,然后有一个ALU,还有另一个多路复用器。
右后卫多路复用器,以前必须发生的一切,就像我们上次说的,所以如果你抹去绿色,你只剩下这个Q钟了,顺便说一句,这是一个很好的观点,在那里你应该停下来,能够理解一切。
我只是说你应该明白为什么这个Q钟是从这里来的,我从哪里来的,顺便说一句。
反之亦然,也可以创建这个,闭上你的眼睛,不要看关键路径,你应该自己写所有这些阶段。
加上IMM,加上收银机,加上这个多路复用器,加上卢,加上这个多路复用器,加上设置,就坐在这里,这是最后的总数了,让我们暂停提问,是呀,告诉我进去,我去,T在中间的时钟到Q,在中间啊,嗯,Q的时钟。
所以让我们想想这是真的,那倒是真的,那是同时发生的,这在理论上是如此,是呀,如果不知何故,这需要多长时间才能发生,我们只是想说,把这个钟告诉Q,这个时钟根据以前的指示Q,关于之前的指令。
因为我们假设寄存器是稳定的,它是什么,如果你有一些时钟更新,假设这是加一二三二三可能已经更新了,最后一条指令可能改变了2和3,如果你碰巧买了一份注册文件,登记册,芯片上很小,你不用担心,但你是对的。
如果某个邪恶的巫师把它弄得很慢,我们可能会有麻烦,因为那就像是嘿,我准备好出发了,但是x2和x3还没准备好,因为他们还在被以前的来信,所以你说的很对,但在这里我们要把它冲走,因为它太小了。
A和B因为我们在这里做同样的事情,我们在想这种时钟到Q几乎是一样的,不是通知,我没有为这个寄存器写时钟到Q,寄存器的PC时钟到Q,我们只是在说,有一个时钟Q直到事情准备好,是啊,是啊,说出我的名字。
马修,走呀,走呀,是呀,所以我们用一种,三个人的设置都是一样的,好的好的,让我看看,这是一个很厚很重的讲座。
我想花点时间问几个问题,但我们会确保一切顺利,加载字,你看得清楚吗?让我们让我们,我们可以在这里快速前进。
这是我的负载词,当我走过,你以前见过这些黄色,我不是,这不是,这一切都没有范围到这里,让我们看看你能不能弄清楚这个术语是好的,现在呢,记住记住这个,这个是浅绿色,以前在这里,我们只有浅绿色。
在这里还有那个大的黄色的,但现在看看这个,我有了另一条路,哪个是青色的,那里发生了什么事?为什么现在有两条路,我在比较,我以前以为只有一个,很明显这里有循环,个人电脑然后是广告的大部分数据。
我觉得我真的有三台电脑还在那里,我现在有两个,而不是一个,剩下的是什么,是呀,眼前的事情必须完全正确地通过,所以每当你看到我,就是说,那是立即的时间,因为这些数据,通过我们的直接通过这个多路复用器。
击中ALU,必须先击中,数据存储器,为什么为什么用那个直接的,在一个加载的单词中发生了什么,如果你还记得。
是呀,我的补偿必须加到,这个寄存器指向,所以这必须发生,所以这个ALU还没准备好。
不准备给出正确的价值,顺便说一下,有什么好的,这是这是一个负载,所以我有点,即使很慢,在合适的时间之前不需要写,我只是最终,价值就会出现在那里,但它们来自两个不同的途径,这个即时正在计算中。
正在查基本登记簿,实际的32位地址出来了,它们必须通过一条蝰蛇,要加在一起的ALU,三个中的一个记得吗,三的一等于十二。
加上,那些终于通过了,然后打吕,这就是重点,所以现在你看到一旦这个时机通过,基本上都是一样的,唯一不同的是,直接的阶段是注册阶段,它们都是平行的,除了这两件事,一对一地听他们中的一个去那里。
其余的条款都是一样的,Mux lu dm t mux的术语都有相同的差异,一个从这里穿过收银机,一个通过媒体生成器走了这条路,听起来不错,所有这些线路都可以在那里变热。
好啦,所以现在让我们再来看看我们的时机,所以这是我们在钟高之前看到的时间,我有一些旧电脑在那里,我把新的电脑从电脑寄存器里拿出来了,这就是我,我正在醒来,这是我的新指示,这是新一天的曙光。
这就是我正在做的,我们今天要做什么,吊杆,这就是我们正在做的,不管这三个家伙说什么,那是我们最好做得很好的人,我的寄存器的值是多少,我可能要去那里看一些登记簿,不管这些价值观是什么,我不在乎。
我现在得到寄存器的新值,我在执行阶段,我是我的卢坐在那里计算一些随机的东西,只有现在我的ALU结果,的实际值,就像广告或偏移,加一个基点,或者它在做什么,然后如果我必须回忆我在这里做的任何事情。
我不在乎内存的输出是什么,现在我的记忆正在浮现,如果我在装货,这就是我的价值,所以你在加载词中的结果是内存中的位置,我其实想,这是一个三,那是十二个,加上基本指针,一个真正的安息之地,地址现在在线上。
我在等待那段记忆,我把它放在这里,右后段,你就会说等等,我受够了,我还没说完,如果我在加载,我还没说完,我得把它反馈到收银机里,所以我把这个放在后面。
我有剩下的东西,看这张照片,剩下的一次,我这里有,还有什么要经历的,我的右后相是什么。
这就建立了,这些都是片刻之后的事情,内存有价值,我还有事要做。
最好这么做,在此上升边缘之前的Lu Plus设置。
所以这就是控制,这里有五个阶段。
在你看到五个阶段之前我们就看到了。
但这是他们真正的时机,这就是我关心他们的原因,这是命令,它不是,这不是随机的,不是随便五件事,这是五件事的总和--不,从字面上看,这五件事的顺序是这样的,唤醒指令提取,那天我在做什么。
这就是指示的不足之处,ID ID指令解码,好啦,寄存器是什么,我们需要,这些价值观是什么,这是id阶段执行说的,让我们对一些,我把你的地址,加a加一个基指针,所以我加了一个地址加上一个偏移量。
还是我添加到寄存器中,或者做些什么。
或者改变和减少它们,那是执行阶段,或者做一些分支比较。
那也是在那个阶段,记忆说,我要去读和写记忆,除非在写作,我总是在看书,记住它总是处于被动阅读模式,除非我在写,但我还是得等,我是在回信登记吗,如果是的话,ALU加上一个T设置,我必须担心五个阶段。
现在控制了,我能多快破解,我有情报,我能开多快,那个CPU,那五个数字告诉我。
这些只是抛出典型的数字,对于千兆赫的机器,我们以纳秒为单位测量,对于一个多千兆赫的机器来说,一个分数的飞秒,所以200兆秒是五分之一纳秒,或5千兆赫,有点,能流利地说是很好的,像这样。
一百颗豌豆真的很快,一百很好,为什么这里有区别,因为这就像在我的脑海里,这里是萨克拉门托,还记得我们之前的对话吗,我们要去,我在我在擦亮,我很有光泽,因为萨克拉门托离我的头很远,我们被美化了。
既然说到这里,我们说的是缓存,但只要把它放在那里,为什么这不是十倍的数字,我只是暂时把它藏起来,所以这里有一些粗略的数字,让我们把它们加起来,就是这里了,这个总数是我们运行这个设备所能达到的最快速度。
我们终于明白了,八百皮卡秒是它的总和。
所以让我们来看看哪种指令最烦人,我喜欢这张幻灯片,哪个指令是我最痛苦的,你知道基斯特,是哪一个,哪一个耽误了我,我想做,我是英特尔,我想尽快解决这个问题,你就不能走捷径吗?这些指示中没有一个说不。
别想偷工减料,试着偷工减料看看会发生什么,让我们做吧,让我们做好准备,负载板,围成一个圈,在你的头脑中和你的大脑中,加载字是击中所有这五个的单一指令,这是一个很棒的考题,上面写着800秒。
我要去运行它7。99,什么坏了,但这是什么打破了世界的话,数据路径的哪一部分中断了右后卫,那是什么意思,什么不会发生,没时间回信,这意味着寄存器的值,记住我在加载,请记住,从该设置加载存储是一个承诺。
我做了登记,我会给你从设置稳定的数据,现在我说,你知道我要违反什么吗?嘣,我再也不相信收银机会做什么了,那是关键,违反的是登记册,重要的是你要知道,所以说,最大时钟频率是多少?现在呢,八百K秒井。
比那多一分,两个5千兆赫,那很好,十年前还不错,也许十五个,没关系,别担心那个,我们只是把一些数字放进去,让你容易些,显然大多数块都是空闲的,想想这个,大多数街区都是闲置的。
像钟仲功钟仲功单循环,CPU就像流水线。
就像特斯拉装配线,你一整天都有一辆车在组装,有可能拥有很多车,但是不行好吧,把这个带进来把这个结构带进来,好啦,把轮子装上,顺便把星星带来,今天剩下的时间你可以吃午饭,因为什么都不会发生,对呀。
这有道理吗,一旦它过去了,I F阶段,我走了,我只是喝酒,我在玩,你知道的,皇室战争,不在乎,你得继续前进,因为一旦完成,它只是闲置的,所以这很有趣,我们要考虑一下,正如我们在周三的课程中看到的。
我们如何使这更有效,例如,如果以某种方式轻推,轻推,眨眼,眨眼,我可以让所有人同时工作,就像一条装配线,而不是一辆车进来,只是通过那里,就像所有这些人可能在工作,但到目前为止没有一辆车。
我们今天只做一辆车,每个人,现在一辆车正在通过整个装配线,你能想象吗,其他人都睡着了,如果不在你身上,如果不是在你面前,你真的睡着了,你得到了报酬,不工作,看看我们运行5千兆赫,我要你回到幻灯片上。
我想是第三次SD讲座,我们有一个非常烦人的加法器和换挡器延迟,我们在中间增加了一个寄存器,就像锁系统,你在那里大块地穿过,一条特定的指令要经过更长的时间,但实际上我们可以跑得更快,我要你好好想想。
当我们看到这五个恶人,把它调到5千兆赫,如果我们在装配线上够聪明,星期三的课就讲到这里。
只是把这个安排在周三,我准备参加星期三的讲座,我们如何设计这个控制逻辑。
我还有几张幻灯片要做,那是我的真言表,这就是答案,我记得那次演讲,我说这些是所有的收银机,我终于给你看了,这就是所有的控制,只是,显然不是每一条指令,但对于我们关心的几乎每个人来说。
这就是所有的事情,所有的事情,我做了,讲座的第一部分,我检查了每一条线,有什么好玩的,这是看,其中一些不同,非常巧妙地添加。
和潜艇,它们有什么不同,ALU选择,这是另一个很棒的考题,我们应该考虑,这里有两个说明,他们会对线条有什么不同,它们有什么不同,那真是件有趣的事,这里是相等的树枝,为什么有两条线,因为要看树枝高不高。
当树枝齐高,意思是他们是平等的,这意味着下一台PC是ALU提供的任何内容,没那么酷,你终于可以了我终于明白了,那不是很酷吗,当他们不平等的时候,我去下一个指令,所以这有点酷,你可以理解发生了什么。
你猜怎么着和树枝不对等,恰好相反,不整洁,所有这些都很有趣,所以我想要你,这是给自己的一种,确保你能理解这其中的每一行,这个真的很好吃,把这个圈在幻灯片上,幻灯片,您应该能够只拥有一个数据路径。
我给你左边的指令,你真的把它填满了,在这一点上,你应该能够做到每一行,把整张桌子都填满,很酷,像放这样的碎片的时间,你知道x 1 x 2 x 3,给我看看,也是,就像所有这些一样,你应该能做很好的事情。
好吗。
所以我想建造这个东西,我想做一个桌子来做这个。
我如何构建一个表来做到这一点,这就是我现在正在做的,我们有点时间完美,只读内存,它就像一个大的组合逻辑元素,很简单,这是一个非常好的规则结构,我要试着建立一个真实的记忆,这就是我在我的。
我不知道是不是三十年前,唉呦,我会参加一个小舞会,电编码,埃普罗姆埃普罗姆,我会去找那个人,就像我写了一个程序一样,你能在舞会上编码吗,这就是我得到的,他会跨栏,他会拉出它的名字,他会闪现它。
他会闪现出来,我会带着这个节目离开,就像在我的时代,只是站在那里,看看我的手机,我没有回电话,然后呢,看着我在电话前的一切,就像,如果我们编程,所以电子舞会的程序,你的意思是,组合逻辑可行。
像这样那么快,那很酷,我们还可以使用逻辑合成将两个表转换为逻辑和门,这是一种可以重新编程的标准方法,这真的真的很好,我是自己做的,当我在写我的一篇文章的时候,我在积累,这叫书呆子套件,回到过去。
所以让我们看看我们关心的部分。
所以你看到了这就像绿色床单,你以前见过这个,说明书,几乎所有的数据,几乎如果你看每一条指令,几乎每一点都是你的平均,你只是为了数据,不是为了控制,就像你所知道的,就像寄存器的直接值或值,这些是登记簿。
五个比特还是差不多,除了这三栏,这些列说什么什么什么注册,我在做什么手术,实际上有时他们会指向这个,有助于解决这个问题的是,有时我关心这条线,这告诉了我一些事情,我马上就会讲到,所以我有这三行,六比二。
十四岁到十二岁和三十岁,例如,我现在只专注于那三行,我如何决定是否要告诉分支比较器,做一个无符号比较,布鲁,你说,我要告诉分支比较器做一个无符号比较吗。
不适合分支机构,平等,不适合分支机构,不平等,但对于小于等于和大于等于,那些东西中的那些东西是,在那里,我得到了一些,我打赌那些没有签名或签名的,我要知道那些是什么,因为这将是不同的,所以看看这个。
看看这些家伙,我如何知道分支无符号比较器是否是一口井,因为这里有一个u,我关心它,当指令说是无符号的,比较,当你明确,一个没有签名的人,比较,那是他们应该继续所有这些片段的时候,它在哪儿?顺便说一下。
这就是逻辑设计师正在做的,我在决定给每一个分配什么位,他们不是武断的,精心设计的,精心设计的,这是ISA的CPU,什么是A将有位模式,所以硬件真的超级容易构建,所以如果你要这么做。
你在签名比较器上做了这个分支,那不是很好吗?如果你保留一点,那就会继续下去,当你需要问的时候,当它实际上可以去很多次,因为谁在乎,如果我在做一些从来没有用过树枝的事情,这将是一个数据,也许吧。
但当它真的在树枝上,那不是很好吗?如果只是一点点,对我来说就是这样,变焦,你们能看到变焦吗,我想看看有什么能告诉我,我是否在做一个未签名的比较,看看是什么,那不是很美吗?这就是设计,那是。
这就是设计中的工程学,多么美好的冒险,五个ISA所以我只需要指令十三,我只是看着那一点,它必须是,就像你在这里发疯一样,它必须是一个分支,我十三岁。
这是我的朗姆酒,我有11块进账了,我有九位,我只专注于34岁到12岁和62岁,我从数据路径本身得到了两个值,这就是那个分支是等于还是小于,这也会考虑到,我以前做事的方式,那是一种投入,不是输出。
这是一种输入,记住箭头是指向控制线的,这是我所有的衣服,我做得很好,基于整个控件的底部行,这些家伙就在这里吗,我的下一台电脑是什么,我的直接选择器是什么,是B还是S,或者我,我在做什么,3。
我是不是该把这个送给旁边的分店?这就是我所说的,专注于现在,我的两个AUS是什么,等等,等等,我们刚刚在排的底部看到的所有东西,这个ROM将为我们解码,价值来了价值出来了。
那是朗姆酒,所以我们再次放大朗姆酒,这是他对我的十一个人,这里是一个ROM真正美丽的地方,你这样拆散一个ROM,这真的很有逻辑,他们怎么把朗姆酒打碎真是太酷了,你把它们分成一堆,我们慢慢来。
所有这些都是信号线,就像内部信号线,只会变热,当有广告的时候,所以有一个广告,这将是一个,其他的都是零,当有潜艇,当这些家伙编码减法,然后这个变热,另一个变零,所以只有当你有那个东西的时候。
这些才会继续,当一个,所以只有当所有这些都是一个广告,然后这条线就会变热,不会再有其他人,然后当这是一个,它来到这里,这些是矿石,所以你可能有PC等于。
PC加四,好好想想吧,PC选择这就像PC,它是从ALU那里拿走的吗,因为这将是一个分支或跳跃,还是只是加四个对吧,记住,所以这是,这可能会说你什么时候加四个,我加四个。
当它看到这个,看看这个看看这个,呃,你看这个字,或者潜艇,或者,或者,您有一种语言来指定这个输出是什么,所以这真的是,这几乎就像看你用英语编程的方式,说着,这条广告线是什么时候,高高在上,当它加线时。
当所有这些都是这样的,这个在那里,那个在那里,就像掉下来一样,你拿一张真值表,做一个标准的表格,是这个不是那个,是这个不是那个,这是真值表那排的高线,记住,这是什么,然后这就像一种语言说PC加4。
当它是加法或减法时,当你下一个指令。
当除了树枝以外的任何东西,或这个或这个或这个,真的很漂亮,所以让我们这样做,让我们再看一遍,这是我的广告,这是我的广告,那么模式是什么,阿达德说得好,看广告广告,说这最好是零,而不是我三十岁。
看看我现在得到了什么,这三个都是,零不是十四不是十三不是十二,就是这里的零,而且是R型,这编码一个R型,那些R型的位模式,什么是r型,丹和我们的类型是,让我们来看看,加非i 6,i 5,i 4。
非i 3,非i 2,这两个比特编码是风险五,32 i,因为它是不同形式的风险五,你可能有16宽,十六位宽,或者六十四比特宽,所以把这两个比特编码成代码,是三二,我一个,我注意到了这一切,I,都是手。
突然一个广告出现了,这些都放在那里,那都是真的,只有当它们都是真的,所以所有这些整个产品都是真的。
这是令人兴奋的部分,就是这样,就是这样,基本上就是这样,矿石很容易,对吧,你知道PC加4,当它被添加时,或者这个,就这样了,你知道错了,这太可悲了,我需要每个人都站起来,这是你给你的,这是你能忍受我吗。
我有点奇怪,站起来,这是一个时刻,如果你真的愿意走到走廊,这次就相信我吧,你能走到过道吗,只是现在,这将是一个30秒的乐趣。
小心小岛,走到手表前,到房子里去,最后,太好玩了,我要你记住这一天,他们说,做一些让人们感动的事情来记住这一天。
你明白从上面开始,高层,C语言,你写任何东西,我手机上的一个应用程序,用那种语言,您可以将其编译为程序集,你知道你能理解机器代码,位编码,但现在我想我该怎么处理他们,让我们用它造一台机器吧。
我们从底层开始,了解电流是如何流动的,我们转向越来越大的逻辑门,到较大的街区,我们把它们放在一起,连接在一起,数据路径和控件与控件,你现在知道计算机是如何工作的了,当这件事发生在我身上,对我来说。
这是令人震惊的一天,我就像我知道整件事是怎么运作的,第一次,曾经,你在这个抽象层上面,你知道它是怎么工作的,你怎么庆祝你跳舞,我们绕一圈,找个人围成一个圈。
从这里往回走一圈,你回去看看,准备好了,我爱,我喜欢它,我爱死它了,有一个点击问题。
哪有什么好玩的,我总结一下,我们造了一个处理器,伙计们,我们成功了,我们可以执行所有的风险,到目前为止我们看到的五个指令,并不是所有的指令都使用,关键路径意味着我的单周期,CPU很慢,我们能快点吗。
我在为星期三的讲座做准备,是呀,我们可以,有五个阶段,你知道五个阶段,控制器指定提线木偶,在各个阶段做什么,各位非常感谢,我们星期三见,这是一个时刻,调用家庭纹理熊,是我做的。
我做到了,喔六二一,大学里最伟大的班级之一,因为这个原因,为了这个,今天的讲座,好激动,谢谢大家,在线感谢。
P27:Discussion 7: Single-Cycle Datapath - 这样好__ - BV1s7421T7XR
你好,欢迎大家来讨论,今天七点,我们将讨论单周期数据路径,嗯,哎呦,像这样,这个讨论对项目三A非常重要,今天出版了,我稍后会有更多的公告,但是呃,在我们开始之前,我知道这周是期中考试。
你觉得期中考试怎么样,竖起大拇指侧身向下,哦男孩嗯,我会给你们一个机会问任何期中考试问题,再过一会儿,但现在,呃,我们从单周期数据路径开始,一点点物流,呃是的,亲临和期中考试是本周四和周五。
你应该已经收到了啊,说座位分配,如果你没有,请联系艾德,带回家的部分将在本周六和周日,今晚交第五份作业,三号项目,几个小时前出来的,今天的内容不在期中考试的范围内,但正如我所说的,这对项目真的很重要。
所以你们都为期中考试提供了一些建议,这很好,所以员工们的共识是我们强烈建议查看我们的练习考试,过去的考试,过去的讨论,最肯定的是过去的家庭作业,呃,如果你有任何概念上的问题,随便问吧,在职。
办公时间或在线,我想我们有几个,呃,在帖子中问答,为了为了喜欢,每年考试,这是来自所有工作人员的,你们会做得很好的,不要烦恼,呃,对期中考试有什么一般性的问题吗?我不能说是,是呀,它在范围内。
还有什么关于,我们要开始了,呃,所以今天我们要讨论数据路径,其中包括我们将讨论以下内容,所以我们要像一般控制单元一样过去,它是如何工作的,尤其是在风险五,我们将涵盖数据路径的五个阶段。
我们要像指导类型一样复习,他们是如何,为什么我们有独特的指令类型可以直接映射到数据路径形式,所以我们要做,呃,让我们来复习一下术语,所以对于那些这样做的人来说,这是对SDS的一点回顾。
所以状态元素是连接到时钟的组件,当我们检查数据路径时,您将看到状态元素的一个大型示例是寄存器,然后临界路径是两个状态元素之间的最长延迟和竞争方式,这是第一个寄存器排队的时钟,加上最长的组合延迟。
加上寄存器2的设置时间,最小时钟周期将是关键路径,临界路径的长度,最大时钟频率就是给出关键路径的频率,所以这只是最小时钟周期的一个,然后这将在这个项目中被大量使用,但这叫做多路复用器。
就像给了一个控制单曲,多路复用器确定通过输出发送哪个输入,所以几乎这里的这个项目是我们提供信号的地方,如果这等于零,然后两个就走了,或者如果这等于一,然后马上就会去,呃,现在我们要。
我再过一遍数据路径的五个阶段,你们讨论表上的第二个问题,会让你们描述一下,每一个数据,每个阶段,也在你工作表的背面,有一个数据路径,我强烈建议你填写,当我们通过数据路径时,当我们通过数据路径时。
所以看起来你们正在调出你们的工作表,所以我会给你们几个,呃,几秒钟来设置,好啦,是啊,是啊,呃,我们开始吧,这是我们在风险5中使用的一般数据路径,你将在这里看到的是,它没有名字,我们会知道它的名字。
当您在数据路径中继续前进时,我们会知道到底是什么,这些盒子中的每一个都是,这些是传递到某些单元的控制信号,然后是圆盒子里的东西,它是一个,数据路径中的不同类型的单元,仍然非常非常重要,所以让我们开始。
所以我们单周期数据路径的第一阶段是指令提取,阶段和指令获取字面意思是你几乎在获取指令,你在这里看到的是,我们有,所以我们有一个PC寄存器,其实这里有很多不同的阶段,首先,我们有一个多路复用器。
上面写着PC加4或ALU,我们有控制,它要么告诉我们获取下一条指令,要么告诉我们获取,或者获取由ALU计算的指令地址,啊,等等呃,每当我们进行某种跳跃时,通常会发生这种情况,然后我们有PC寄存器。
我们电脑的输出,这将是我们寄存器的输出,是啊,是啊,这将是,的输出,这将是我们想要得到的指示,然后在这里我们有一些东西,在这里,我们有一个叫做IM的东西,所以电脑会储存指令的地址。
但随后我们将此地址传递到IMM或指令存储器中,然后我们得到映射到该地址的实际指令,然后你可以看到这里我们有,P,我们这里有一个单元,在我们的PC地址上增加了四个,这些都传给了我们的钱。
好让我们知道下一条指令的地址,在这种情况下,我们确实需要使用它,然后这里我们还有,我们有一条线一直延伸到,我们这里有一条线一直延伸到,呃,牢房,我们稍后再讨论这个问题,但这只是一些需要知道的事情。
然后耶,如果我们有32条来自记忆的指令,我们Chrome PC是必要的问题,哦耶,你当然想让我放大,我知道没关系,呃,可以吗,如果我向下滚动,好啦,是呀,我们开始吧,让我们继续,好啦。
所以有一大堆与此相关的控制逻辑,所以呃,一个嗯,这里关联的控制逻辑的关键部分之一是PC,Oops是一个PC单元,就是呃,控制信号发送到多路复用器以选择PC加四或ALU。
或者地址PC加4或由ALU计算的地址,然后我们有指令,在这里输出的实际指令,这进入指令解码阶段,然后我们有直接的细胞,我们将在下一阶段讨论,然后是红文,现在也将进入下一阶段,对于指令获取。
我们需要知道的主要两个是,好啦,呃,考虑到这一点,让我们继续进入下一页,它被称为指令解码,我给你们,呃,就像呃,一分钟几秒钟写下这些术语,好啦,再过五秒,好啦,是啊,是啊,所以这个阶段我们要过。
称为指令解码,通常缩写为id,它所做的就是使用机器代码表示,为了弄清楚我们将从哪些寄存器读取或写入哪些寄存器,如果有一个立即,我们适当地签署,扩展和生成必要的,如果我们往外看,如果我们从视觉上看。
我们在这里看到的是以下内容,我们有,呃,或者指令位,呃,七到十一在这里分开,这将意味着,其中寄存器的索引,我们这里也要一样,两个卢比,这个卢比也一样,然后我们把指令传递到控制逻辑中。
输入控制逻辑块来计算,嗯,哪种呃,找出什么样的控制逻辑信号,我们需要发送我们的注册文件或重新归档,会包含所有三个两个寄存器,它会发现,呃,给出传递进来的信号,如写,启用或写入写入数据,它会。
它会告诉我们要计算什么值,或者输入什么值,我们使用什么寄存器,然后就像我之前说的,我们有一种叫做即时发生器的东西,所以我们几乎进入了即时发电机,我们得到了这里的m细胞,然后我们将适当地签署扩展。
这样我们就可以形成一个三,两个比特从这里直接。
我想我们可以进入第三阶段,也就是执行阶段,如果你们想把这些信号写下来,我给你们一点时间,放大一点,好啦,呃,我们要去,我们将从执行阶段开始,哪个和执行阶段决定是否需要采取分支。
我们计算任何地址的大部分算法,计算将在ALU中执行的新值,ALU被称为算术逻辑单元,所以它执行任何算术或逻辑运算,比如,或者,然后加上,减去你能想到的任何算术或逻辑运算,如果我们从视觉上看。
在这里我们看到以下内容,大家可以看到,在这里我们有我们的分支柱,它吸收了我们的,它吸收了我们的价值观,那些是,指示指令解码阶段的输出,在这里我们计算以下的br eq和b r l t,嗯。
考虑到b r u n,那么什么是B或UN,它检查我们是否在做一个无符号的数字比较,所以如果我们有一个像BTU BG E U这样的指令,那就是Br u n将被设置为1的时候。
这意味着我们需要比较无符号物质中的值,然后考虑到无符号,考虑到它是无符号的,然后我们进行比较,然后检查呃然后得到输出信号,VR,还是做我们的LT,所以这就像如果值相等,或者如果值为r。
或者如果第一个值小于第二个值,然后bq和br在计算信号时非常有用,比如这里的PC单元,我要画,它是,对此非常有用,因为它告诉我们,好啦,是啊,是啊,我们的PC单元需要不同。
我们需要确保我们在适当的时候进入ALU,然后我们有一个叫做A细胞和B细胞的东西,所以在这种情况下,会发生什么,呃,我们有两箱,我们有AMUX,可以接收个人电脑和个人电脑,A细胞选择哪种结构。
我们将使用哪一个输入作为输入,A进入ALU,最后,我们有两个即时的RS,卢比2和立即王牌,这将是我们BEMUX的一部分,我们从这个bemux得到的输出是由b单元表示的,我有个问题要问大家。
所以你可以在这里看到,我们有一台电脑,另外,我们的PC是AMUX的一个选项,立即是一个操作是从第二个多路复用器中选择的,你认为什么样的指导,这将有助于,如果我们知道我们必须执行一个ALU操作。
使PC和立即,哪种指令对“是”有用?所以跳是一个很好的选择,或者如果我们知道我们实际上要分支,那也是一个很好的用途,有很多不同的方法,然后我可以说像PC加RS 2,这对像Jer这样的人来说很好。
因为我们知道最直接的是,偏移量存储在RS 2中,所以如果我们做PC加RS 2,我们可以从那里得到指令的适当地址,然后呃再一次,我们这里有我们的阿卢,然后我们有我们的alu单元,它选择使用哪个操作。
你们会学到更多的警觉,更多关于它是如何构造的以及它支持什么样的操作,当我们进入一个项目,三个关于执行的问题,几个控制逻辑,好啦,我所说的概述,所以做联合国,这是在分支指令时说的。
并指示我们是否应该处理赋值或未签名的值,然后我们有brq,所以如果数据a等于数据b,它会输出一个,否则输出为零,然后是B R LT,它会输出另一个零,如果数据A小于数据B。
然后我们这里有很多很多的选择器,我们有B细胞,牢房,Aliu细胞与存储器,好吧,我们会过去的,当我们进入记忆阶段,不过,差不多,稍微回顾一下我所说的,一个b单元格将在RS 2或直接输入b之间进行选择。
进入阿卢,a单元将为alu选择pc或rs,输入a处的输入,然后ALU细胞会告诉我们要执行什么样的操作,注意它是四位,这意味着我们可以支持多少结构,4位能支持多少种操作,你想回答什么,那个。
ALU中的最大操作数是多少,我们可以用四个比特来支持,十六,是呀,之所以是十六岁是因为,我是说,就像二对四,是啊,是啊,二对四,这就是为什么我们将在第三项目中学到的,实际上没有我们可以支持的指示。
我们在ALU里留下了一堆开放的空间,但是是的,呃,挺好的,是啊,是啊,16是我们在ALU中可以支持的最大操作数,最后我们有了记忆阶段,其中涉及到这两个主要的,A组件,呃,DM或数据存储器。
储存我们记忆的地方,它储存,是呀,我们所有的记忆都储存在那里,然后记忆正确,哪些商店,上面写着我们是否需要写到记忆中,给你们几秒钟写下这些,好啦,嗯,我会继续说更多的细节,因此,当使用加载字或存储字时。
它用于从内存中读写,请注意,我们实际上只考虑dm的延迟或用法,只有当它是加载或存储指令时,上面是这么写的,还有一件事现在不一定在范围内,它确实变得很快,当我们开始使用缓存时,当我们进入缓存时。
我们会更详细地讨论这个问题,关于记忆有什么问题吗,我觉得两种记忆是另一种,好啦,所以呃,在这里我们有数据存储器,也就是DM,在这里我们有指令存储器,也就是我,这是我们使用的两种记忆,也可以争辩说。
重新归档也是,理论上你可以,我们在这里打个问号,因为这取决于一个人的解释,不管那是不是记忆,还有其他问题吗?好啦,呃,考虑到这一点,然后我们在这里进行最后的阶段,也就是,呃,右后或右后台注册。
我们这里的主要东西是一个右后卫多路复用器,右后方的细胞决定了,我们应该使用右后多路复用器的哪些输入,给你们几秒钟写下任何信息,好啦,所以呃,然后我们进入右边的按钮,它决定将哪些值写入寄存器文件,几乎是。
你会看到这里有一个箭头,从右后框到右数据,右后细胞会适当地决定哪一个,在我们不需要写的情况下,把任何东西写回寄存器,我们可以任意选择其中任何一个,重要的是我们说重写启用为零。
这意味着我们不会在我们的登记册上写任何东西,是啊,是啊,我们有多种输入到右后标记是PC加4,我们通常会写,P c,如果我们有凝胶或罐子之类的东西,再加四个到寄存器里。
因为这样我们就可以存储PC加四个到一个,所以在我们的内在功能中,当我们使用JA时,我们往回跳,然后我们有alu,也就是,呃,如果我们有任何计算,比如,嗯,让我们看看我们是否有添加两个红色的东西。
将两个寄存器值相加,它将是类似的东西的输出,然后我们就有了记忆,它将被用于一些,它将被用于像这样的东西,在很大程度上被用来,实际上专门用于加载单词,因为一旦我们从记忆中加载这些东西,发生的事情是。
我们需要把它写回我们适当的寄存器,而且是的,差不多就是这样,这几乎结束了数据路径的概述,有人对此有疑问吗,好啦,所以考虑到这一点,嗯,我想这是第三个问题,目前来自错误,是啊,是啊,两点三。
两点三点和两点,我给你们两个,我刚意识到答案是好的,在上面,哦好吧,反正更酷的东西,嗯差不多我会给你,这是七号,哦,我的天哪,啊,反正,我给你们几分钟看一下这个,我建议考虑一下什么样的指示,会使用。
什么,然后从,或对所给出的每条指令进行适当的延迟,我想我们可以,开始解决这个问题,所以首先我们要复习一下加法指令,它增加了,使用说明,去拿,是呀,我们确实使用指令提取,因为我们怎么知道这是不是广告指令。
除非通过指令获取,怎么样,呃,指令解码,我们用指令解码吗,是呀,好啦,嗯,执行怎么样,我们用执行吗,实际上我们可以把它缩短一点,执行所有指示,使用指令提取,是呀,好啦,所以我们会标记每一个。
执行所有指令以使用指令解码,是啊,是啊,是呀,正是因为我们需要知道我们在使用什么样的寄存器,对于每条指令,每条指令都使用执行吗,是呀,呃,因为我们需要做一种计算,每条指令都用内存吗。
每条指令都用右后卫吗,否,好啦,所以现在我们要看每一个,以及它是否使用右后卫,所以在这里我们有记忆,呃,确实增加了,使用记忆不不,右后卫呢,是啊,是啊,是呀,我们回信的原因。
是因为我们有一个从计算到寄存器的结果,如果我们计算出,我们得到的总时间是600皮秒,或者我,那是什么?我们是用MEM还是右后卫,或两者兼而有之,或者什么,你还想用右后卫,呃,哼,是呀,呃,我们知道。
我们不是在处理记忆,我和广告差不多,所以600皮秒,加载词呢,有人想试试吗,不管我们用它们还是右后卫,要么两者兼而有之,要么全无,我想我们两个都用了,你说的对,呃,你能解释一下为什么。
所以你首先需要从记忆中得到一些东西,当你进入记忆,好啦,然后你还需要像,把你从记忆中得到的东西放进寄存器里,所以这就回来了,是的,是的,完全正确,搞定了,所以我们需要用MEM加载,才能真正得到,呃。
价值,然后把它写回来注册,这将给我们800皮秒的存储字,那是用内存还是写回来,或两者兼而有之,有人想试试吗,新来的妇产科医生,所以让我们分解一下,呃,我们在存储词中使用内存吗,是呀。
我们这样做是因为我们实际上需要,呃,参与记忆,不知何故,我们用右后卫作为明星词,你说你没有权利,为什么不是,你是,您只是将寄存器的内容推到内存中,是呀,写回准确的,是啊,是啊,我们不给任何寄存器回信。
因此,我们没有任何形式的,我们没有考虑到这一点,右后延迟,这给了我们700秒,Q是用内存的吗,不,那个用右后卫吗,否,因为我们不会用Q写任何寄存器,所以我们从这里得到了500秒,格乌,那要用内存吗,否。
好啦,右后卫呢,是呀,它确实用右后卫,因为朱的工作,因为它是跳跃链接,我们需要储存下一个,我们得把寄信人的地址记在登记簿上,我们指定,所以这就是为什么我们需要回信,这给了我们一个600皮秒的临界路径。
然后我们有BTU,呃,差不多就是这样,它非常,相当于是,情商,我们不用它们,或者右后卫,所以我们现在又得到了500皮秒,考虑到这一点,呃,是什么指令,锻炼关键路径,任何人都可以大声说出来,准确加载单词。
它是加载词的原因是因为它有最大的延迟,八百秒,我没有机会把这些问题写在幻灯片上,但是呃,鉴于我们的,或者实际上,我不打算说,但是你最快能画出单周期数据路径,知道关键路径,你怎么算呢?有人知道。
比如最大频率是多少,我们在早期的幻灯片中介绍了这一点,所以你可以在那里查一下,所以它是一个频率周期,因为一个超过八百,是啊,是啊,八百多秒,然后呢,呃,你现在不需要知道的数学是,这相当于一个,对不起。
是啊,是啊,这将等于一个点,两个5千兆赫,可能看起来很快,但肯定有办法让它更快,下周我们将更深入地讨论这一点,嗯是的,我们可以改进的方法,呃,有什么原因,这可以解释为什么单周期数据路径是低效的。
我可以继续回答这个问题,最终发生的是大部分的部分,呃,当我们执行数据路径的一个阶段时,当我们有机会真正使用它们时,其他的都不会被使用,有点我不会说平行,但有点流水线,这就是为什么。
当我们有办法利用整个数据路径时,这是低效的,即使我们不这样做在一个周期,下周我们将更深入地讨论,这是这个班最有趣的话题之一,好啦,呃,接下来我们有这个问题,两点二,用每条指令的控制信号填写下表。
与我们报道的非常相似,嗯在这里,刚刚,你实际上必须提供每一个实际的控制信号,呃,然后呢,几乎要确保这一点,并注意,如果你不在乎是什么信号,用星号什么的,给你们几分钟时间,好啦,嗯。
我们要开始讨论这个问题,我实际上想指出的一件事是,尽管它被称为MRW,你们中的许多人把它解释为记忆,阅读,编写应用程序,我们,最好把它想成是米色的,因为这就像你是否真的在写一段记忆,我希望这更有道理。
所以考虑到这一点,让我们来看看这些指令中的每一个的b r e q信号,呃,我们关心什么是BRE EQ的信号吗,你想说些什么,否,好啦,是啊,是啊,否,呃,奥里诺呢,我们不在乎,呃,加载词呢,否,B呢。
Q是的,但那又是什么价值呢,你为什么说,对不起,啊,啊,是呀,我想要么是零要么是一,是呀,不是零就是一,因为我们不知道它是否真的会分支,或者它是否真的相等,那乔呢?我们在乎吗,不,然后是BL。
然后是BT,我们在乎吗,否,是呀,英国电信,啊,其实没有,我们不抱歉,我脑子里在想别的事,呃,原谅我,呃,怎么样嗯,好啦,现在我们来看看虚拟现实,每人快速公交,我们关心这个吗,或者我们只是关心它。
当我们加入,否,好啦,无BLT,是呀,零的值是多少,零还是一,是呀,现在呢,PC,所以呃,只是提醒一下零代表行动,只是为了P C,加四,一个是ALU的结果,所以对于广告来说,那是什么?你真的改变了。
你在换电脑,那么是什么,它的可能值是什么,或者它的价值,因为这是一个条件跳转,所以我们不跳了,我们可能不是每次都跳,那么你是怎么做的,什么样的价值观会,呃,PC电池需要,零还是一,是呀,零还是一。
因为呃,我们要么分头去晚上,要么去指示,或者我们就去下一个指令,在电脑上,加四或工作,会是什么呢,我们要一直在凝胶里跳吗,是呀,那么这个值应该是多少呢,一个是,因为我们总是会得到ALU和BT的结果。
那是什么?是啊,是啊,零还是一,实际上因为,它可以跳也可以不跳啊,直接牢房,现在我们做即时单元格的方法就是说指令格式,你可以用什么指令格式来回答,或者如果我们不关心广告,我们关心m细胞吗,否,好啦。
然后为了我,呃,我们关心m细胞吗,那是什么指令格式,为了或者呃,这在你的参考书上,但对我来说,是的,这是什么样的指令格式,所以我们只是,为了这项工作的目的,我们将把,我加载词怎么样,是呀。
加载词也是我那存储词呢,我先去看看这个,然后对于BQ来说,它是什么,会是B是的,然后耶,那是什么?然后英国电信现在就会是b r u n,哎呦,我们关心广告吗,呃,好啦,加载词,我很肯定答案是肯定的。
解决方案说他们不在乎呃,布鲁乌恩,不是未签名的,哦啊哈,不是没签名的,所以我们还不知道,嗯,所以我们根本不在乎,然后啊,我们在乎吗,是呀,我们确实在乎,你不像招牌上那样比较,啊哈完全正确,是呀。
为什么我们不关心我,嗯,好吧,我们要检查,如果每一点都差不多,所以不需要未签名,或者是的,我刚刚才知道,我刚发现,是啊,是啊,所以对英国电信来说,是0还是1,记住还有一个叫做btu的指令。
所以那里的b r u n信号会不同,所以这里是零,所以零是不是意味着你总是不比较,零意味着你不用担心,零表示我们不使用无符号,哦是的,那将是零,是呀,所以会是零,好啦,现在我们要去做。
我们有足够的时间来完成这一切,好啦,是啊,是啊,我想我们可以完成这一切,好啦,所以嗯,所以我们要么有Reg要么有PC,有人想在这里列出哪些说明吗,呃有一个细胞或零,其中指定寄存器值。
或者谁能指定哪些指令使用零作为asa,有人想吗是的,这件事我不太确定,但我想它们都在壳里,呃,不是所有人除了首席信息官,呃,B当量和B,或者也,嗯,我们担心那里的PC,因为那是会被通过的。
因为ALU的输出会传递给PC标记,那么我们如何比较btb q,注册了,我们过去常常比较价值,呃,嗯,这就是我们的分支比较器的用途,然后会影响到,呃,正如我前面提到的,影响PC单元的,好啦,是啊,是啊。
所以差不多,这里的寄存器为零,如果加i或i加载单词或单词,它将为零,这将是一个为BQ,JBT,B细胞呢,这里有没有人只是用,呃,登记册,只要加上,是呀,然后其他一切都会立竿见影,每一个。
这些指令中的每一个都在即时alu单元中使用,所以这个,你只要回答,我们用的是加法运算,添加将使用什么操作,完全正确是的,然后对于我,那是什么?或者或者是,加载字,那是什么?朱迪,因为偏移量。
当你做偏移时,你还加上了,是啊,是啊,完全正确是的,我们需要添加,我们向内存地址添加偏移量,然后我们有存储那到底是什么,它也是添加的,因为与内存偏移相同的事情,B当量,那是什么?我之前提到过这个。
比如当我们做PC+即时的时候,所以是的,那也是加,我们可以说英国电信在这里也是一样的,然后跳跃是我之前提到的,在那里我们添加了PC和即时,因此我们在这里加上,差不多呃,记忆或记忆权,启用呃,哪个呃。
我们关心什么记忆权是广告吗,是呀,我们有,因为如果我们把它设为任意值,我们可能覆盖了一些记忆,所以要么,所以每一条指令都必须是0或1,所以对于添加,会是什么呢,否,这是零,因为我们不会写任何东西的记忆。
我知道记忆写有点,会让你有点迷惑,但它实际上是mem对的,因此它是零存储词,“那是什么?”,是呀,其他一切都将为零,因为我们现在不是在记忆中写作,瑞德现在注册并启用,那么我们应该给这些指令中的哪一个。
就广告寄存器而言,我们会给收银员写信吗,是呀,所以这将是一个,或者我,我们到底要给寄存器和应用程序写什么,你可以直接说这个值,您不必给出选择器值,如果你不想,是呀,女士,是的,呃商店的话,是啊,是啊。
对商店来说,单词是情商并不重要,是呀,没关系,我不知道,所以这是我们的数据路径,我们终于能够想出,我想我们没有足够的时间,部分真假,所以考虑到这一点,感谢大家的到来,这里有一个匿名反馈表的链接。
供那些亲自使用的人使用,记住这一点,如果你填写反馈表,所以请填写反馈表,建议保留他们觉得喜欢的图表,哎呦,是啊,是啊。
P28:Lecture 21: RISC-V 5-Stage Pipeline I - 这样好__ - BV1s7421T7XR
看起来我看到了两个。
不是四点,尽管总共有四个,这两个集合是平行的,好啦。
所以我可以数到三,所以我在看两个耶,做得太好了,每个人,还不算太糟,好啦。
新闻中的计算,量子计算是一个非常迷人的领域,它是物理学家与计算机科学家合作的混合体,包括理论计算机科学家,为了弄清楚我们能做什么量子计算,上线后,当它真的变得非常容易,呃,才能进入量子计算机。
人们在日常生活中使用它,你会看到很多事情在改变,就像你的密码不会和你可以使用的密码一样,因为量子美女擅长一次性尝试所有密码,真的很有趣,但只是为了给一些视角,他们真的还在婴儿期,看看这个数字。
这就像大数据,这是南威尔士大学的一条新的大新闻,他们在说什么量子计算处理器可以保持数据稳定,然后它决定它变得不稳定,是这样吗,就是这样,下一句是一百多倍的增长,所以这真的只是把它放在上下文中,对吧。
你的电脑保存了多年的数据,存档在磁盘和闪存上,所有这些,如果您使用的计算机没有其他非易失性存储,我们熟悉的量子计算机,当它在做的时候,这个底座正好可以支撑两毫秒,这是一件大事,比以前好一百倍。
所以只要把视角,我们不会很快在你的桌面上用量子计算机上网,但这是一个令人兴奋的一百倍的新突破,能够保存数据的性能只是为了把它放进去,女士们先生们,欢迎来到CS 61 C皮普洛,这是个新话题。
关于我提到很多次的一件事,我说这个61C太棒了,因为它的作用,是重新启动这些模块,你有一个SD模块,你有一个控制模块和一个数据路径模块,你的风险模块,五个模块可以看到所有这些模块都放在一个池中。
希望他们能互相帮助,有时他们重置SDS是完全重置,如果你在那之前把一切都搞糊涂了,让我们教你如何建造一些,你知道最后,我们显然是在建造一些对风险五有效的东西,但你基本上可以学习和、或、结和时间。
在不了解任何事情之前,这将作为一个新的模块构建,管道学习是一个新的模块,今天我们将第一次讨论表演,这确实建立在控制和数据路径上,所以我们仍然与之前的讲座有关,但这是关于我们如何让它更快。
我有点泄密了,我们在想什么,所有这些都是闲置的,五级管道的所有这些阶段,管道有一个单周期CPU,有五个阶段,我没说管道一个单周期CPU,五个阶段都闲置了,他们中的大多数人都无所事事,哎呦,我们去拿电脑。
然后它就会一直闲置,让我们从IMM中获取并解码它,然后就无所事事了,所以我们可以更有效率,这就是这节课的全部意义,理解如何使它更有效,在我们再次展示之前,你已经看过这张照片了。
今天我们要讲的是本学期的平行教学,我们要在左边的所有东西上做一个黄色的方框,今天,黄色的盒子在中间,用于并行指令,一次多条指令,这正是我们所说的,当我们看到我们的单周期CPU,我们能提高效率吗。
它将使用右边的硬件来实现它。
所以这是第一次介绍性能,这是我们第一次谈论性能,到目前为止,我们只是让我们造一台工作的机器,这就是我们所做的,让我们教你看,让我们把手指触碰的洞编成,那是一个盛大的庆祝活动,如果你们错过了。
我们必须围绕着你最终明白的事情跳舞,从上到下,整个学期的第一部分从上到下,计算机如何工作,字面上从上到下,来自cnn应用的两个电子,现在我们要说那太好了,我们得到了它的工作,但是有点慢,我们能快点吗。
这就是今天的意义。
所以我们要谈谈什么是绩效衡量和改进,这是我们的时机,之前的所有审查,没什么我们没见过的。
我们看到的一件事是800微微秒是我们的最终数字。
好的,好的,我们以前都见过,我想我上次展示过这张幻灯片。
好啦,所以八百皮秒是,那是什么意思,嗯,我们在找时机,我们看到我们的负荷词是我们的痛苦,和我们的基斯特指示,它将利用每一个循环,那是一个我们不能,你这么忙,我们走不开,你得把它锁起来,不是很好,嘿嘿。
当我们做分店的时候,我们不用MEMS,所以我们可以中途换一个钟,不不不,我们必须有一个锁定的时钟,所以800皮秒是我们的限制因素。
125G赫兹,但我们也看到了让我们回到这里。
这里没有元素,比两百多吗?看看这个。
所以理论上我们可以在5千兆赫的频率下工作。
如果我们很聪明的话,这里是1点2分5秒,因为我们必须在一个时钟周期内完成所有五个阶段,上升边缘,新的一天破晓了,哎呦,是广告,我废话废话废话废话废话,八百皮秒后,我受够了,我在眼睛的末端写了一些登记簿。
但这些元素中的每一个都是200皮秒,理论上我们可以在5G赫兹工作,那太棒了,如果我们能同时做这五件事,这意味着什么它就像一条装配线。
但我们稍后会讨论这个问题,所以这是令人兴奋的,那么,让我们首先谈谈业绩计量,让我们谈谈什么,我们正在对以前的东西做一些定义,你怎么看待表演,所以我们的单周期风险五CPU在一个点上执行指令,两个5千兆赫。
每八百秒就有一条新指令,顺便说一句,我们忽略了我们以前告诉过你的事实,啊,当你进入记忆,这比去登记处要多几百倍,我们假设调制解调器和调制解调器非常快。
我们可以在一个周期内做到这一点,我们以后再说,那是一种抽象,我们将讨论这一点,并揭示我们谈论的缓存。
但现在假设我们能做任何事,包括加载字,包括一个我们要记忆的存储词,一车一车地在商店里或半个字,我们都会假设我们可以在一个时钟周期内完成所有的事情,我们能提高性能吗,我以前见过,不那么明显是什么意思,嗯。
你的意思是,我想要一个更快的指令,这就是所谓的响应时间,所以一个工作更快,还是说总体上,我做更多的工作,单位时间内的更多工作,这就是我们通常所说的,总的来说,我们喜欢更多的工作,更多,我在做特斯拉工厂。
每天更多的车,不是一辆车的时间,我真的不在乎,你还记得我们之前,记住我用管道这个词,我们用管道,它是一个加法器和一个移位器,我们把一个,我们在中间放了一个寄存器,我们能跑得更快一点,我们看到了这一点。
因为这些延迟没有添加,我们在看关键路径,太酷了,同样的想法,我们不在乎我们可能要付出代价,计算通过加法器花了更长的时间,然后换挡器,我们不在乎,但我们现在可以跑得更快,所以我们真的希望你能有更多的工作。
这里有一个全新的东西,对了,这是全新的,我想这是两年前加的,我们只关心,让我们快点,在某个时候,人们意识到你知道什么是能量是一件大事,许多设备的能量,在最低最小的层次上,你的电话,你的手表。
如果你的表很热,你有没有把手机开着,放在口袋里,排水沟里很热,你的电池像这样,你不能在变焦呼叫超过一两个小时,太疯狂了,因此,电池寿命成为许多设备的一个真正问题,如果你说的是气候变化。
以及数据中心可能使用多少电力,我们也关心这个,所以我们意识到,出于许多原因,我们也关心能源,不只是让我们让它更快,不管那是五年前的感觉,也许更长。
但人们意识到哇,我们也很关心我们的效率,我喜欢这个类比,所以让我们和这个联系起来,所以我们有一辆赛车,你有一辆公共汽车,这两件事的通行能力是多少?我们往下看,嗯,赛车可容纳两人,这辆公共汽车能坐五十人。
但是赛车每小时200英里的速度也不是没有道理的,公共汽车大约50英里,因为有些限制,你知道你必须在火车轨道上停下来,这辆赛车的效率真的很低每加仑汽油能跑5英里,但实际上公共汽车的效率更低,每加仑两英里。
这很有趣,那么现在你更喜欢哪一个,嗯,大家赛车,什么赛车好。
这取决于你在做什么,我们将假设一次50英里的旅行,假设你去那里的方式,然后立即回去,这么说吧你知道,这是我们在做一些假的东西,但对于数字,你要开五十英里,然后立刻回去,立刻回去,在最后一张幻灯片中。
我们问,你关心一次指导的时间吗,你在乎时间吗,就像很多指示,整个部队的表现,还是你关心能量,让我们把这三件事都过一遍,与汽车类比,如果我关心一个人的旅行时间,这只是给一个人的。
我把这两样东西放在我的车库里,我有一辆赛车,我拥有一辆公共汽车,我要去50英里的地方,所以我开着我的跑车,如果我这么做了,我花了15分钟以每小时200英里的速度到达那里,如果我乘公共汽车。
我花了一个小时才到那儿,因为它的速度是每小时50英里,而这是一次50英里的旅行,好吧那么,如果我说的是,我现在得去个地方,只有我,就是这样,我要赶飞机,我要开跑车,我相信对我的朋友来说,我要开跑车。
我想按一个日期,我要开跑车,很多原因,就像现在的跑车,我们谈谈吧,现在呢,我们得找一百个人,那里有,你知道的,有一栋着火的大楼,我们得疏散他们,或者洪水之类的,我们得疏散一百人,这很严重。
一百人必须疏散多快,我能疏散一百个人吗,五十英里井,让我们来看看,如果我坐跑车,我要带一百个人,五十次旅行,七百五十分钟,如果我乘公共汽车,只是两趟,乘公共汽车的时间是120分钟,跑车750分钟,男孩。
那辆公共汽车太棒了,这就是公共汽车的目的,让很多人从A到B,有效地看看那个,现在呢,我说的是高效,我应该好好利用,我会成为我自己,效率有多高,看看这个,我的跑车每位乘客五加仑,如果每位乘客每加仑汽油。
乘客半加仑,所以实际上公共汽车是相当有效的,原因有两个,如果我在乎一个指令,砍一个人,我要那辆跑车,但如果我关心让很多人从A到B的整体表现,我当然想坐公共汽车,我甚至不在乎能量,我也乘公共汽车,好东西。
所以这里有一个类比之旅,时间是程序执行时间,一件事完成一个节目的时间,一名乘客,需要从A到B,如果我说一百个乘客的时间,这里的类比是吞吐量,圈起来的是个新词,如果你不知道它的吞吐量,工厂能生产多少。
这是事实,你能把多少人从A圈移到B圈那个名字,如果您以前没有听说过吞吐量这个词,例如,每小时处理的服务器请求数,最后,每个乘客的加仑就像效率一样,我们将称之为每次任务的能量,每块电池可以看多少部电影。
你在一架大飞机上,在那架大飞机上你能看多少部电影,在你的电池没电之前,数据中心的收费或能源账单,我们正在考虑笔记本电脑的小、大、小设备的效率,数据中心大设备。
顺便说一句,关键是,它不是在看整体力量,人家说。
啊,只看整体功率,消耗整体动力不是一个好的衡量标准,因为看下面。
低功耗CPU可能运行更长的时间来完成一项任务,总体上比速度更快的计算机消耗更多的能量,以更高的功率运行更短的时间,所以这取决于你不能只说权力,你得看看,你得看看效率,那是一件非常重要的作品,好啦。
但我可以问任何问题。
这不是很多新东西,那很难而且,如果你能记住这些,这只是到目前为止我们所使用的一些术语,所以这是我们第一次真正给你一个方程,我想我们给了你一个等式,顺便说一句,这是一个布尔代数方程。
但是当我们第一次给你一个方程,这叫铁律,铁律手段顺便一提,如果你看《权力的游戏》,铁律是说你不能不尊重上级,你被杀了,铁律就是要遵循铁律,你死定了,你知道你有,但我刚看了最近的一集,如果你要找上级谈话。
不正确,它在你的头上,就是,这就是铁律,你不能不尊重你的指挥官,所以铁律就像被锁在里面,就是这样,它是印成铁的,你不能改变,不是很好,是稻草,我可以把它吹倒,没有铁律意味着它在那里,处理器性能。
这已经存在很多年了很多年了很多年是这个方程吗,让我们把三个学期都过一遍,所以每个节目的时间,我有一个程序,那要花多少时间呢?它是三件事的函数,顺便说一句,如果你像我一样喜欢单位,我真的很喜欢看这个。
因为你可以划掉,我如何获得每个节目的时间,每个程序的井指示。
我要击中的指令总数,我的档案有多大,是个大文件吗,可执行文件是一个小文件,每条指令有多少时钟周期,您以前没有听说过,我们称这个为cpi或每条指令的循环,有点奇怪。
如果你没有想过,我会在一秒钟和每个周期的时间里讨论这个问题,我们的时钟显示。
所以指令取消循环取消,我每个节目都有时间。
看看结果如何,所以想想那些单位,我们会,我们现在来谈谈这三个术语,每条指令的循环叫做cpi,或者平均有多少个时钟周期,这其实是一个平均值,在所有的指令上。
好啦,所以每个程序的第一条指令,你知道你会,你亲手把c编成了风险五,有时候会浮肿,有时很短,你可以考虑一下,就是这么回事,它是由,你想做什么,你的算法是什么,你在这方面有多聪明。
是这个还是现在突然六十一,A和B开始考虑,这就像运行时间,对呀,你要走的步数,现在呢,我们关心的,我们以前不在乎,因为我们做了婴儿的小问题,我们现在知道我们关心它,因为我们需要这东西越快越好。
你想要一个非常高效的算法,所以你要做更多的步骤,显而易见,您的编程语言,取决于您的编程语言,可能会影响,可能你的算法,也许一种编程语言,有风险吗,你实际上有更多更小的步骤,或者有一个sik。
复杂指令集计算机,在那里你有一个指令,他们会做很多事情,所以这也取决于你的编程语言依赖于什么,如果您的编译器是,以及编译器上的设置,您可以有优化设置,冲啊冲啊冲啊二三,以下是收紧代码的优化设置。
最后是ISA的总体情况。
这对人们来说有点难,这被称为CPI或每条指令的时钟周期,这里最重要的部分是括号,平均来说,又不是说,因为我有无数不同的指令,我有个广告,我有货,我开了个店,我有树枝,平均是多少。
每条指令的时钟周期当然是由你的ISA决定的,你的ISA是你如何定义的。
你的那个语言是什么,这很重要,这取决于处理器实现是什么。
也可能是微架构,你是怎么造出那个处理器来让它工作的。
例如,我们正在努力建立我们的单一循环,现在为一个cpi设计的cpu单秒风险五。
有时你有一个非常我提到的。
有一个风险模型,风险模型是每个人的G都很快,每条指令都有一个时钟周期,型号CC,你可以想象一个叫做字符串复制的风险五指令,你可以想象,不会是冒险风格的事情,这将是一件非常复杂的事情,有可能是。
可能是其他的微码,做这件事,当然不需要,如果我有一根长长的绳子,它当然不能对一个长字符串只接受一个指令,把它从A复制到B,顺便说一句,他们以前有的六件事,是什么,他们以前告诉你的那个是什么。
他们说就像多项式乘法什么的,一些复杂的指令做了所有这些事情,但这是一条很容易写的指令,编译器,只要说,哦,马球明矾,一个多项式多项式乘法就完成了,但像这样的风险代码应该是20行或30行。
但它变成了C代码的一行,所以取决于你,你如何定义你的ISA和你拥有什么,但通常字符串复制是一个库例程,每条指令需要更多的时钟周期,去计算那个超标量,这是一个你没见过的新词,超标量意味着它几乎是一对一的。
这里意味着每个指令发生的事情不仅仅是一个时钟周期,你基本上可以在一个时钟周期内做平行的事情,这就是我们今天要讨论的,我们也称之为超级标量,所以接下来的几节课我们会讨论这个,其中cpi小于1,哇塞。
那一定会很棒的。
让我们做吧,顺便说一句,最后最简单的是每个周期的时间,那是你的钟,那是你的水晶,你的石英水晶,振荡。
你应该参加一些课程来学习它是如何工作的,很酷,这取决于。
当然逻辑门的关键路径,我们谈过了,很多关键路径,在它变成125G赫兹之前你能运行多快,我们的技术随着技术的变小,作为您的进程大小,工艺尺寸是两条线之间的距离,如果你把它放大,这里有一条信号线。
这是另一条信号线,芯片上的距离是多少,这就是所谓的进程大小,数字每两年下降一次,真是难以置信,从5纳米到现在有多小,它们现在是5纳米、2纳米和3纳米,到达那个水平板的不可思议的工程。
世界上最好的工程师是美国宇航局的人,做着令人惊奇的事,顺便说一下,小行星撞击成功,你以前见过这个吗,我对此很兴奋,能够偏转来到地球的小行星,他们是了不起的工程师,望远镜太神奇了,做计算机架构的工程师。
建造那些,极低水平芯片,他们所做的非常不可思议的事情让他们变得更紧,把摩尔定律从,尽我们所能往上走,最后是电力预算,这就是你到这里的地方,正如我们所说的,哇塞,这是一个移动设备,我可能需要曲柄回来。
让时光倒流,不是曲柄,这样我就能跑得更快,把它调回来,可以有更长的电池寿命,有一个更凉爽的系统,等等,你的电力预算是多少?较低的电压降低了速度,这很有趣,较低的电压降低了速度,你知道的。
电压与速度有什么关系,有一些,有一些爱,这就是双面人会进来的地方,并能够有几堂关于这一点的讲座,但那其实很有趣,事实上电压会影响速度。
这是我们在61年的时候经常做的事情,这节课教了15遍,我们以前有,和一台Mac电脑,当时IBM的笔记本电脑运行得非常快,1千兆赫,1千兆赫和Mac,我的旧婴儿Mac笔记本电脑以800兆赫的速度运行。
所以ibm是更快的笔记本电脑,这和我们所做的很相似,我们会说准备好了,我们会在一个大文件上显示两个屏幕的Photoshop模糊,全部加载到内存中,去记住Mac的运行频率是800兆赫。
所以它应该会输给一台千兆赫的机器。
它会压碎,它将压垮IBM的笔记本电脑,看着那个啊啊啊啊苹果太有趣了。
但关键是让我们看看为什么这会发生得很好。
两个进程B的指令数或编译不太好,我们说过的那些事。
更多指令点击处理器B,所以它已经输了。
你有更多的事情要做平均cpi,看看这个平均cpi 2 5比1。
那真的很有趣,也许这是件很恶心的事,所以每一个指令我都给了你一些不同的东西,我花了更长的时间,这很难想象,但实际上每条指令需要更多的时钟周期,对呀,在你完成一件事之前,一个指令向上两次半。
时钟速度更慢,所以想象Bub是一个较慢的时钟速率。
这就是我之前提出的论点,更多的指示。
但是CPI,一个的乘积,前两个数字是零点。
七,右边的机器五毫秒,你以为他会失去更多的指示,较慢的时钟速率,但CPI是获胜的因素,你最终会有一个,有一整段视频是关于这个的,真的很好玩,我们实际上可以让我们让我们表明一个观点,至少它是一个参考。
这期视频,它叫我,兆赫神话,苹果熄灭了,就像真的很小,三百二十乘二百四十谈论这个,我们要播放视频,我们不再做了,我们应该参考一下,虽然,兆赫史密斯谈论为什么这会赢,为什么你会知道,字面上生活在61 C。
我们会展示这个演示,我们说,就像,怎么可能认为跑得更慢,会赢,这张幻灯片解释了为什么它赢了,都是关于CPI的,挺酷的,所以按,或者B更快,尽管执行了更多的指令,并且有更低的,比如什么。
这怎么可能,CPI是神奇的东西就是那么整洁,让我们来谈谈CMOS中的效率。
顺便说一句,我之前提到过,他们能够冷却一些早期的芯片,早期的芯片,我想在某个时候有400瓦,只是一块芯片,你可以煎一个鸡蛋,功率密度太疯狂了,所以你曾经,大家都知道,你不能只拥有电子产品,免费船长。
不是免费的,午餐,就在我吃这些的时候,呃,晶体管从1翻转到零,零到一,即使拿着一个1或拿着一个零,这个功率损失,天气很热,事情变热了,为什么那口井。
有两个原因,这是我们经典转换器的图片,我们已经看到,这是一幅稍微知道那个形状意味着什么的画。
两条平行线,正如你所看到的,在W班之前,我想十六岁,你知道这件事,我希望电容器,好啦,那是电容器,电容器是不喜欢电压变化的东西,他们喜欢保持电压变化,你可以有一个很好的电容器,可以保持一段时间的电荷。
只是伟大的电容器想要对抗电压的变化,他们不喜欢,所以他们很擅长这个,意思是他们会守住它,如果你把它带到一定的价值,它不想放弃超过1,如果你拿着它一个,它会试着帮你拿一个,那帮混蛋真厉害。
所以电容器不喜欢电压变化,我们在哪里失去动力。
我们因漏电而失去电力,如果我有一辆车,不要改变它,没有人改变任何价值观,就拿着吧,只是漏电,就像电阻器,只有热力和动力,只是漏到地上,那很糟糕,这是我们这里的逆变器,我们看过图纸了,此外。
给这些电容器充电以实际改变也是有成本的,我告诉过你电容器正在努力改变,所以我会选1到0或者0到1,它不喜欢那样,他们想拿着他们是什么,这就是电容器所擅长的。
所以当我这样做的时候,你失去动力了,损失能量到电容次数。
电压平方,而事实证明,这是,这滑梯不是我做的。
我继承了幻灯片,他们告诉我们,其中70%实际上是在,充放电的电容器,关于,百分之七十的能量都在那里,百分之三十到泄漏,所以我想减少这个。
记住这一点,所以这实际上是第二个方程,每个程序的第二方程能量,这有多酷,谈能量,现在又来了,你看看你,看看我们的部队,每条指令的能量,像指令取消给我每个程序的能量,这真的很酷。
现在它告诉我现在网上有什么,每条指令的能量。
比例是这里与CV平方的比例符号。
所以现在我想减少我每个程序的能量,我可以减少之前的指示吗,也许让它更有效率,使用编译器,尽可能地优化它,这是我们谈论的第一件事,更少的指示,做一个更好的算法,做点聪明的事,但我真的能做什么。
这取决于每个任务,但总的来说,对于系统来说,我可以影响每个指令的能量,所以电容取决于很多技术,核心数,你有很多东西,在简历的平方里,另一个是v的平方,哦,我喜欢平方项,你碰那个,你得下降一个平方。
我们喜欢这样,那是电源电压,就像我说的,从字面上看,当我三十岁的时候坐在你的座位上,五年前,我们有一个五伏的,TTL是五个,每张幻灯片,我给你看我的幻灯片,一个说,合理的是五伏特,就是这样。
我会测量五伏,有五伏特,那很好,我拿万用表,现在是五伏特,我们说的是在某个时候,他们说现在我们搬到三个,哦三,现在很有趣,我们在一个,比那个少,都是因为这个,所以我们在谈论的事情不是,收费高达五百元。
我的容量必须达到五伏才能给电容器充电不,只剩下一个了,也许其中的一小部分,太不可思议了,因为它不是,它不是,实际相等意味着这就是规则,显然其他一切都排除在外,比例显示,就像里面有一些常数,我们在擦血。
我们身后的一些细节,我们只是说大致成比例,当它线性生长时,我们也将线性增长,否,不不,有些常量我们不关心好问题,谢谢你,是呀,当我们处理密码的时候,是啊,是啊,就像所有的肯定,你在解决过滤问题吗,是呀。
当你做分析的时候,你也在这么做,是的,是的,这里,正确,当你真的爱,当你生活在更大的世界里,你远远超出了这个水平,你的数字摘要水平,抽象之美,你生活在数字世界里,我们不在乎电压和功率。
没有什么可以告诉你电力使用情况,那不是什么,上面有很多东西,在很高的水平上漂浮,东西是免费的,我可以冲过去,没有力量,没有暖气,就是这里,我们在谈论现实,我们在说你的苹果,你的情报,你在建造真正的电路。
你关心热量,你在乎权力,你关心能量,所有这些事情,仅仅做原理图的最大水平,你在做1和0,所以我想降低电容和电压,减少每项任务的精力,就是这个意思。
好啦,有点,我在为他们的所作所为陷害你,所以说,这就是我们现在要做的,当我们考虑下一代处理器时,拥有下一代意味着功能大小,这个功能大小越来越小,队伍越来越小,这样电容就会下降,让我们也降低电压。
我们控制了电压,让我们降低一个较小的电压,我们不必绘制图表,你不必在相同的电压下供电。
所以让我们在那里做一点改变,每次制造下一代处理器都会有很大的不同。
你可以在能源消耗方面得到巨大的差异。
这是伟大的,通常你甚至会降低时钟速率,看看现在的高端电脑,现在你买的高端电脑,比如说苹果,你会说你知道,去喜欢的互联网档案网站,你可以看到老苹果,我们两千年后去买台电脑吧,是它过去的成本。
它看起来像什么,你可以看到时钟的频率在上升,现在他们真的要下去了,真的很了不起,或稳或降,就像在过去的十年里,他们没有改变,我有张幻灯片给你看,但这很有趣,所以再一次,提高能源效率的关键。
多亏了摩尔定律,也就是说越来越多的晶体管芯片,不同特征大小,包装得越来越小,更小和降低的电源电压,它是一个平方项。
我们非常乐意,这个是大的,我想确保把时间花在,这个问题我想保留一会儿,因为我会在这张照片上花很多时间,它讲述了一个完整的故事,它的华丽是因为它是,这张照片太美了,我是一个超级可视化迷。
我真的很喜欢美丽的景象,这是一个美丽的可视化,截至2010年的原始数据,由这些出色的研究人员收集和绘制,他们和我们一起分享这项工作,我们现在可以和你分享。
有五条曲线,蓝色,黄色。
红色,有点青色和白色,单位低于曲线,单位在这边。
这只是十的幂,这就是为什么它是美丽的,你可以有五条不同的曲线,相对的幂为十,都在同一条曲线上,他们做这件事的方式,它们并不重叠,真的非常好,好啦,我给你讲个故事,那么摩尔定律是关于什么的呢。
摩尔定律说过程性能的指数增长是对是错,我喜欢那样陷害别人,那是不对的,摩尔定律说,从七十年代开始,这是一个指数级的增长,每两年前两次,然后每18个月翻一番,你会看到曲线上有一个小弯曲。
在每个集成电路的晶体管数的某一点上。
非性能也呈指数级增长,但它是关于每个集成电路的晶体管,那是最上面的一个。
注意摩尔定律还在继续,蓝色持续,大约每18个月翻一番,所以摩尔定律仍然存在,就目前而言,这里发生了什么。
故事的下一部分是典型的权力,所以这就是很小的力量。
这是瓦特对吧,所以我们在瓦特,十比一等于几十瓦,在某个时候,这个数字开始波动得太高,十的平方就像你有一个400瓦的芯片。
我记得他们卖PlayStation 3的时候有一件大事,我第一次看到400瓦的CPU,就像,就像游戏机里的四个灯泡,那太好了,只是在玩游戏,想象一下给你的父母留下四盏灯,比如关掉你的灯,是啊,是啊。
只开了四盏灯,当你玩PlayStation 3中的任何游戏时,它真的是一个非常热的芯片,必须冷却它,是他摸了摸后背,风扇真的从后面泵出了很多热量,这是一件大事,所以他们没能冷却那些薯片。
功率密度是另一个曲线滑动,我没有别的了,他们无法冷却它,功率密度接近,火箭发动机的,功率密度每米的平方功率,无法冷却。
频率在上升,所以记得所有的频率都在上升,往上走,发生了什么事,在2005年发生了翻天覆地的变化,巨变是,他们不能再冷却了,所以猜猜他们停止让他们更快。
看那条曲线,就是这些,这些是实际芯片的数据点,这不仅仅是我画的曲线,这些是真正的设备,他们不再恶作剧了,还记得我长大的时候吗,你只是每年都把它,哦快看,今年这些电脑有多快,可能是500兆赫,千兆赫。
一点五二,我记得每一声,我们就像在庆祝击掌,我们作为工程师是多么神奇,但是我们不能再给他们降温了,猜猜当你逐渐减少频率时会发生什么。
会发生什么,这是您的单线程性能。
三分之一的性能表明没有人知道如何编程并行机,所以我们只是编写具有单线程代码的代码,你没有,你不能分,你不知道,你知道你的C代码一次只做一件事,又不是说,我在做很多事情,一次只做一件事。
所有单线程性能应用程序发生了什么。
通过这个叫做Spec int的东西来衡量,这只是一个,它是我们用来衡量事物有多快的指标。
你能解国际象棋吗,你知道他们有几个不同的基准,看它变平了。
我们就像,你还记得你是怎么,你知道数据越来越大,我们现在在视频和YouTube上有照片,数据的追求更多,数据是永恒的,但突然间你告诉我每台电脑,如果它只是一个单线程应用程序,在单线程硬件中是扁平的。
我们该怎么处理,对数据的渴望和对更强大的渴望,更好的电子游戏对吧,每一个电子游戏,我需要更多的像素和抱歉平坦,所以这是一个曲线影响另一条曲线影响另一条曲线的故事。
所以这里才这么有钱,那么他们在2005年做了什么呢,核心的数量从零或一个。
这是一个两个继续增长。
现在你有了双核,双核,这是二合一CPU,两个不同的计算单元,好啦,当我们进入这个更多的两个时,我们会给你看一些照片,现在是四个了,现在有八个了,顺便说一句,我们总是这样。
有gpus图形处理单元来处理屏幕上的像素,我们一直说,但它们是分开的,我们说的是CPU,现在呢,有四八个,什么是56英特尔有一个56核心的机器,现在你可以买到高端的苹果是56核,记得吗。
我想是两个八核的五六个,逻辑课程,这个我们以后再说,也许是28个核心,我的意思是就是这样,那是2005年的巨变,是人们平行。
不是因为这是个机会,哦,一片新的更绿的田野,因为我们被困住了,我们在墙边,我们在权力,所有,我们不能再冷却了,所以我的观点是这是对,不是为了庆祝,但作为对这堵墙的反应,它被锁住了,山崩没有夺走我的路。
我不能再进步了,我走这边,这就是为什么,你看到了什么,呃,第四条曲线在这里,即并行性能持续增长,这是这里缺失的曲线,实际上我们有并行性能继续,但我想我已经解释了所有这些片段,很酷。
这是个精彩的故事,我的压缩机48年趋势,每个点,每个数据点都是一个实际的设备,是呀,哦我的天啊,问题是人们是否一直在研究并行处理,是呀,人们一直在做并行处理像cr cray在1990年。
当我还是个本科生的时候,克雷,是这种大的弧形还是大的装置,就像这件家具,是啊,是啊,他们已经做并行编程很长时间了,是啊,是啊,丹尼尔·爱丽丝,我想是渴望这个名字,就像,哎呦,我想我不明白,I,啊。
那很有趣,所以问题是为什么,摩尔定律为何如此重要,嗯,我认为摩尔定律不是最后的东西,但我越想有表现,人们想要拥有,你知道的,我是,我是芯片制造商,我不能只做和去年一样的薯片,别有一番风味,好像没有。
你得快点,你只需要成长,你有一个,我们都看到了,就像我说的,自七十年代以来,对更多数据的渴望一直存在,告诉我,告诉我对更多数据的渴望没有增加的一年,今年比去年四十八年来,所以你得用某种方式去做。
我们所做的是,这条曲线,当你转弯的时候,这个钟快一点,你有摩尔定律,允许更多的CPU,更多CPU设计,芯片上的更多晶体管,允许你用它做更多的事情,所以我们的藏匿处越来越大。
我们的CPU有16位宽的计算机到32到64,才能处理好。
我们有很多事情可以谈,能够使一个过程或更快,但这基本上是用户对拥有更快的计算机的渴望,所以摩尔定律帮助了我们,这和摩尔定律不一样,在一天结束的时候,你想要更快的产品,这就是它不太重要的地方。
让我们把最高的数字,不管是什么原因。
让我继续走,因为我还有几张幻灯片,我想去,所以这个想法在1974年被称为伯纳德缩放,罗伯特丹纳德观察到功率密度,对于给定的硅面积,这里的功率密度量保持不变,当晶体管的尺寸缩小时,所以请记住,过渡变小了。
工艺规模越来越小,总体情况,迪斯变大了,但后来我就像,你知道的,这件事真的很有趣,功率密度不变,记得那天有多热吗,我怎么能冷静,我可以称之为密度吗?这意味着她的米的平方,我可以,我可以得到,我可以。
但我冷却它,我可以,因为密度是恒定的,我可以做我以前做过的同样的事情,但是首先,这张幻灯片上的第一个字是结束,它于2005年结束,这就是发生了什么你说,2005年发生了什么,我们去了Perl。
那是一种反应,它的来源是什么,我们不能我们看到丹纳德说了我声称的事情,从七十四年开始,力量,密度开始起飞,我们不能用传统的方法冷却它们,哎呦,让我们把不起作用的水冷却一下,让我们把不起作用的油冷却一下。
我们不能保持我们的东西凉爽,就是这样,这就是不开火的原因,在那里一切都坏了,所以近几年,工业一直未能恢复,一直未能降低供电电压,就像进一步降低它意味着增加泄漏功率一样,晶体管开关不能完全关闭的地方。
更像是一个调光开关而不是打开,你知道的,你希望它在那里被称为,但是为什么我们有1和0而不是0,一二,为什么是二进制和三进制,因为晶体管是双稳态的,他们很稳定,锁定在1,它们稳定地锁定在0和变焦,好啦。
现在它就会变成1,它想要么是1要么是0,就是这样,这就是这些晶体管的美妙之处,问题是当我们不断降低电源电压时,你得到的转换开关不会卡到零或一,他们有点去,他们被困在中间,那真的很糟糕,伙计们。
那真的就像,也许那真的很糟糕,还有转换的大小,因此电容不会像以前那样收缩,代代相传,你真的有种感觉,你见过这个吗,他们其实,有一个平版印刷,他们印刷,现在你有了一张二维的照片,晶体管极限为。
他们意识到他们现在需要堆叠它们,你怎么冷却它,这是统计数据,所以所有这些,对人们来说,这是一个很好的机会,谁想跟随这个领域去思考,那意味着什么呢?多层堆叠晶体管,把它打印出来,就像那些很酷的东西。
权力变得越来越令人担忧,我说过力量墙,如果我是幂律,我只是告诉你一些历史,所以这是能量,这是另一个图,顺便说一句,这是第三个方程,这是图表,方程式,是第三个等式,每秒任务等于功率。
这是一个有趣的焦耳每秒乘以能源效率的任务,每焦耳圆。
这个我们说的是效率力量,我们将来能做什么,能源效率说明是给Jeed的,是功率约束系统所有计算设备中的关键指标,例如,一个只能在200兆瓦内工作的数据中心。
你需要更好的能源效率才能在相同的功率下获得更多的性能,对于能量受限系统,所以瓶颈是能量是一种力量,对于功率受限系统,那可能是一个数据中心,对于能量约束系统,就像电话。
你需要更好的能源效率来促进延长和促进更好的电池寿命,看这个上面的方程,让我们看看我们可以花一个小时在这个顶级方程上,嗯,意思是如果我降低我的力量,我要降低我的表现,意思是如果我增加我的力量。
我可能是一个更好的表演,那太好了,所以如果我只关心性能,就这样,该死的气候变化,让我们加大马力,加大马力,谁在乎能源效率对吧。
只要加大我的力量,我去看表演,但这种力量是一个关键的关键因素,能源效率真的很重要,无论是宏观层面,在数据中心层面和微观层面,在笔记本电脑、手机或手表级别,好吧,我们开始新的话题。
十分钟,让我们做这个管道,去洗衣服,希望这是一个与人们相关的类比,谁在宿舍里,我记得当我还是个研究生的时候,我住在这里的一所国民住宅里,我们共用一套衣服,这一切都与我非常相关。
当我住在一个共享的生活空间里,Avi,博拉,卡罗琳和丹每人有一堆衣服要洗,干折收起,所以洗衣机,你知道那个烘干机,你知道当你做完的时候你得把它折叠起来,你得把它收起来,你有莉安,去把它收起来。
他们每个人都需要三十分钟,洗衣机烘干机折叠区和收起,需要三十分钟,每个人都有一点类比,图标的小图片,所以让我们按顺序做好这件事。
五四人先和abcd,这是我们第一次,我起床了,几乎就像在Covid,你说的地方,一次只能有一个人在房间里,我对Covid的类比,于是亚比走进去,在我们身后锁上了门。
所以现在我控制自助洗衣店阿比负责他们的四件衣服,单循环CPU然后宝拉起来,好啦,非常感谢,击掌作为出路,然后上船洗手,好吧,然后博拉进来,把他们所有的衣服都洗了,需要两个小时,等等卡罗琳等等丹。
四人总时间,四批货算上八个小时,那是在Covid期间,只有一个人可以同时拥有四样东西,你看到和我们的管道有联系吗,单周期CPU数据路径,如果没有,在接下来的几张幻灯片中就会很明显,那是什么。
每个人都是怎么做的,顺便说一下,然后Covid就过去了,现在你可以让更多的人在自助洗衣店,你通常是怎么把它做好的,我们有相同的想法,阿维进来了,他们的,但是,我必须要等两个小时才能开始吗?
还是宝拉必须等几个小时才能开始,没有人能忍受开始,洗衣机一脱就脱,在上面跳来跳去,卡罗琳说洗衣的那一刻是免费的,我跳到他们身上,丹说只要洗衣机空出来,我在跳那个,所以现在看看这张美丽的照片。
这个奇妙的类比,好啦,作为老师的类比有时并不完美,然后类比也是如此,还是关于真正的作品,所以这很令人困惑,如果类比与这里的真实情况不完全匹配,类比百分之百匹配,就像我们所说的手套。
所以我们会花更多的时间在这个类比上,因为它很美,所以有几件事,管道洗衣,记得八个小时后,三个半小时装了四批货,那太棒了,我们喜欢这个,这就是世界上每个人洗衣服的方式,所以希望我和这个有联系。
对于一个家庭的房子也是如此,如果你在Covid-19期间住在家里,你知道你父母和你都有你要洗的衣服,你在家里也这么做,你又不是非得住在宿舍里才能做到这一点,那么这里发生了什么,事情是这样的。
按顺序发生的事情,我们都做同样的事,顺序不变,我经历了四个阶段,我洗的衣服有四个阶段,我按顺序检查了四个,什么都不会改变,在那个房间里,如果你和某人在一起,你们都在互相走动,这就是发生的事情。
同时发生了什么,看这个时间在七点三十分到八点之间,欠下的四个阶段都在使用。
把他的东西放进洗衣机,卡罗琳正在晾晒她的东西,鲍里斯在叠东西。
阿维正在收拾他的东西,所以及时上上下下地吃一片,这就是同时发生的事情,即使顺序不变,你只是把它们堆叠起来,以一种美丽的方式重叠起来。
让我们谈谈一个生词把这个词圈起来。
如果你还没有看到潜伏期,一项任务的时间,所以一个新词,延迟流水线对延迟没有帮助,事实上,这是期末考试的问题,真假,驾驶对潜伏期有帮助吗,一个人洗衣服的时间是在两个小时前,已经两个小时了,事实上。
它实际上可能比它会慢,如果只有我,我马上给你看,但它确实有助于第二部分,哪个是用公共汽车疏散的人,吞吐量,洗衣房可以帮助洗衣的总量,那个洗衣房的吞吐量比连续阶段高得多,为什么?
因为有多个任务同时使用不同的资源,潜在的加速是多少,嗯,其实呢,如果你看看这个,有四个不同的车站阶段,潜在的加速是4,在一个完美的世界里,应该是四个,因为所有的东西都在外面跑。
四种不同的东西都在那里工作,那太好了,为什么这之前没有潜在的加速,连续八个小时是八个小时,跑四等于跑二,这不是两个钟头吗?这花了三个半小时,为什么,因为有些时候你没有充分发挥效率。
在四个都被使用的地方及时切一片,只有光标所在的位置才是使用所有四个光标的唯一时间片,当同时使用三样东西时,效率就低了,更不用说当两件事,当一件事发生的时候就更不用说了,那叫做填满管道和排干管道的时候。
其实呢,你可以想象一所大学或一个高尔夫球场,有很多管道的类比,如果你在那天打高尔夫球,一天开始了,每个人都要从一个完整的开始,我们就说好了,从2号洞到18号洞是空的,有一大堆车准备打高尔夫球。
但他们不能因为他们要经历一个,因为这是一条管道,所以每个人都玩一个,然后下一个洞,有一个和两个,还有一二三,因为那是填满高尔夫管道的,你可以想象一所大学,你见过默西瓦斯,大学,第一年。
你看他们把新生管道,第二年,他们招收了大一和大二的学生,我不知道这是否真的发生过,但这是他们应该做的,首先使用知识,大三学生,第一批,大三学生,现在你已经有四年的人经历了,突突地通过了,UCR说决定。
或者你们中的一些人看到不用它们,但决定取消,我们要关闭它,就像一个教职员工在培养研究生,他们说我要退休了,你现在必须,它的结局是什么,你得等等,就像高尔夫球场一样,现在呢,没有人,天快黑了。
没有人开始玩,上一个打一号洞的人,当他们抓住第二个,没有人是完整的。
在某个时候,在某个时候没有人,这里没有人在洗。
没有洗衣机,所以洗衣机是闲置的,没有人是完整的,没有新生明白吗,你要关闭大学,你在冲洗输油管,然后第二年就没有人在一年级和二年级了。
在某个时候,这里没有人在做,我的光标里没有人,就在这里,没有人在做。
是啊,是啊,就在那里,没有洗衣机或烘干机,同样的想法,你在冲洗输油管,这就是效率低下,所以我们没有快四倍的原因,八除以四等于二,我们得了三分,第五是因为我们在灌水和排水。
我们的效率不是一直都很高,所以现在让我们做一个新的东西,我有我有20秒,我猜点击器会转到下一次,一台新洗衣机需要二十分钟,一个新的藏匿者需要20分钟,管井提速多快,如果你仔细看,我要在前面扣十分钟。
在后面扣十分钟,但中间还是要三十岁,这是一个有趣的问题,我不能就因为这只是看。
这么说吧,这个小守望者效率高一点,而且这个藏匿更有效率一点。
但我还得等其他阶段,效率不如,这两个三十岁。
管道的速度,就像,这里十分钟,那里十分钟,就是这样,一点也不多,所以管道费率,你能以多快的速度进入下一个阶段,受限于最慢的管道阶段,管道级长度的不平衡降低了速度。
这是这里的关键,好啦,我会点击这个,我会说结论,我们也许可以推迟到下节课开始的时候,如果你想要好的结论指令时间,因为我们在看指令计时,指令定时是复杂度的函数,建筑技术流水线增加频率,我们喜欢每秒的指令。
但并不减少完成一条指令的时间,响应时间,焦耳每秒和每次任务的能量,这只是为另外两堂关于流水线的讲座做准备,丽莎会在周五和周一送,太感谢你了,伙计们呜呜叫。
P29:Lecture 22: RISC-V 5-Stage Pipeline II,Hazards - 这样好__ - BV1s7421T7XR
他比平时吃得早,好吧,早上十点零九点在这种情况下,还有,我们有期中考试,这可能就是为什么它很孤独,但我真的很感谢你们能来,到目前为止,你们中有多少人参加了期中考试,好啦,所以百分之八十。
有多少人还没有参加期中考试?好啦,凉凉的凉凉的,是啊,是啊,所以这就像面对面的部分,似乎有70%的人服用过,那很酷,嗯,它似乎运行得很好,我们有一些后勤,也许我会点击进入,嗯,所以就在这里。
我要把它保存到更新的幻灯片上,但这只是几分钟前被炮轰的一个公告。
一小时前,差不多吧,关于面对面的考试,只是一些提醒,所以如果你呃,你绝对可以自带电脑,但是我们也有实验室电脑,有些不起作用,但是我们正在努力,我是说,现在我们对哪些有效有了很好的了解,所以呃。
如果你的电脑有问题,就来吧,然后我们会把你安排在实验室的电脑上,嗯,其他注意事项这里有一个带回家的考试,您应该已经开始收到GitHub回购电子邮件,如果你还没有,那很好,就像在,我们有点像,你知道的。
把这些发邮件出去需要一段时间,所以你会慢慢地得到所有的信息,因为明天早上考试就要开始了,所以你会收到这些邀请,然后他们可能有任何东西,我也不是完全没事,作为一般提醒,你可以在上面看到。
我有喜欢的讨论设置为私人讨论线程,只有这样才能贯穿始终,嗯,周日,可能到周一也是,所以不要讨论考试,如果你有任何紧急情况,或者如果你有任何问题,请把它们贴在,Ed,我们也一直在慢慢地回答他们。
所以考虑到这一点,所以再一次。
祝你考试顺利,如果你还没有,呃,如果你还没开始,对于那些继续考试并带回家的人,呃,祝你带回家的部分好运,一旦它下次出来,呃明天,但今天我们正在推进管道的想法,丹说过管道,星期三结束时。
特别是你们还记得你们在处理洗衣的例子,是啊,是啊,我们都记得洗衣的例子,今天我们再复习一下洗衣房的例子。
但我也想提醒你一下风险五,我们一周前做的那个数据路径,因为我认为只要记住那个巨大的图表以及它是如何工作的就会很有用。
我们今天要做的一件事是,我们将参考这些阶段,我们今天要做这个,星期一,我们将用它们的两三个字母缩写来称呼这些阶段,好的,好的,所以从左边开始,我们有指令提取,第二部分我们称之为指令解码ID。
但实际上你能想到的是,因为这是寄存器访问,中间的寄存器文件访问,这里我们有ex,代表执行,那是ALU做的大部分工作,然后我们有mem或m a,你可能把它看作是,MEM含义数据,内存访问,比如读或写。
在最后,我们回到了,所以这又回到了寄存器,比方说更新寄存器文件等等。
现在以此类推,我知道,右后卫有时会让人有点困惑,右后卫是什么,我通常在这里强调一下,教科书是这样写的,你可能会有不同的看法,取决于谁是谁在教它,通常右后卫是从内存输出,包括盒子。
也许所有的盒子和东西通过设置,注册文件的时间,然后我们将在一次中看到什么,我们稍微谈谈管道,这也包括实际reg文件本身的编写,但在我们得到真正的管道版本之前,我们不会到达那里,但这是单周期的。
这就像如果我们有一个单一的时钟周期,然后右后卫就会包括穆斯和所有这些,因为在下一个时钟周期,那时真正的写作就会发生在时钟边缘上升的事情上。
我们会看到轻微的侵犯,一旦我们进入输油管,但是因为这张图很像,里面有很多电线,我们将使用一个简化,也就是,你知道的,上次Dan给你上课的时候,就像在星期一,我认为这些阶段的时间,我们将代表。
阶段的时间是由花费最多时间的元素主导的,好啦,所以这是有道理的,有组合逻辑门,有多路复用器,所有这些东西,但也有像我,这个巨大的内存读取访问是组合逻辑块,这是主导i f阶段的大事,嗯我,有一个注册文件。
有一个巨大的阿卢·梅姆,有数据存储器DM,然后右背WB,还有注册文件,好啦,所以你可以看到,好像有点阴影,我们将进一步讨论这个问题,但有一件事我真的想指出的是,寄存器文件在这里显示了两次。
作为两个不同的符号。
就像这两个符号看起来非常相似,其中一个有注册文件,右边有阴影部分。
这就是我们所说的“读取寄存器文件”。
好啦,所以这就发生在指令解码阶段。
其中一个正在写寄存器文件,阴影部分在左边的地方,好啦,所以它要被遮蔽的原因,左右会更快一点清晰,但我只想指出,即使这里有五个阶段,实际上有四种主导元素,因为id和wb共享其中一个硬件元素是veg文件。
其中一个碰巧读到,其中一个碰巧写了,所以我只是想这么做,然后我想注意的最后一件事是,从上次开始,还是两次前的,当丹试图计算时钟周期的时间时,事实证明,如果我们有一个单周期CPU。
然后我们要把所有这些元素加在一起,整个时钟周期是800皮秒,对于一个阶段,单周期CPU。
好啦,那么单个CPU是什么样子的呢,然后是顺序数据路径,也就是我们所说的单周期CPU,嗯,整个时钟周期需要800皮秒,让我们假设我们添加了一条指令,如果我们添加一条指令,呃,是我呀。
如果我们把t 1和t 2相加并存储在t 0中,然后我们必须按顺序做所有这些事情,或者可以通过阅读指令开始,意识到这是一个,或者就像读取不同的寄存器并在某个时候存储它,但这里的想法是。
如果我们点击这个动画的其余部分,它看起来很像你上次看到的洗衣图,好啦,所以这里的想法是,假设我们有鲨鱼,这是我们的指示,我们喜欢,我们意识到这是一条鲨鱼,然后我们就一直带着它,到数据路径的末尾。
然后我们把它放下,好啦,但是只有一个人,只是丽莎做得对,然后现在我们意识到就像一只熊猫,然后我们一路带着熊猫,然后我们把它放下,好啦,嗯,我们实际上不喜欢把它放在数据包的末尾,对吧。
会有一些写回寄存器文件的事情发生,但你大概明白了,舞台上只有一个人。
管道数据路径是什么样子的,同样地,我们还得和鲨鱼走同样长的路,但现在我们有一个,我不知道,我们要做志愿者吗,你想抱着鲨鱼吗,你想抓住鲨鱼,好啦,我们没有,我看到了我看到了拿毛衣的手。
我看到你的手先上来了,好啦,所以我们要,我们要一起抓住鲨鱼,也许我们也会有另一个志愿者,你想上来吗,所以我们要做一个管道,我是说我这里只有两件东西,因为我发现我只找到了两个毛绒动物,好啦,你叫什么名字?
珍,好啦,所以珍要站在这里,然后你叫什么名字?凯西,好啦,凯西,你要去,你要坐在椅子上,好啦,所以这就是我的想法,我们得到指示,我就像,哦耶,好啦,是鲨鱼,开始吧,然后你要拿着它,是啊,是啊。
你看你已经知道该怎么做了,多么迷人啊,好啦,好啦,让我们去队长和只是一轮耶,非常可爱,很可爱的主意,但不管怎样,这就是现在的想法,原来珍和凯西,他们不只是舞台,它们实际上是管道寄存器。
我们会回到那个想法,好啦,我们会回到原来的想法,但我只是想确保我们做的面团,反正,所以在这一点上,我们有了刚刚发生的事情,我捡起了鲨鱼,它代表了我,发现这是广告,然后在下一步发生了什么。
我把鲨鱼传给了登祖,然后我拿起了大约,从某种意义上说,我有点像我的男人,我意识到接下来会发生什么,因为我是凭记忆读指令的,然后当我拿起,下一个,熊猫,鲨鱼已经在路上了,好啦,这里的鲨鱼代表广告。
熊猫代表广告,同样地,如果我有第三个毛绒动物,那就是加载词,我可以阅读并意识到这是一个特殊的毛绒动物,当詹森和凯西带着这里的其他元素,现在请注意,这种权衡,就像,当我个人完成时突然更快,对呀。
所以在连续的情况下,我不得不穿过整个舞台,然后往回走,这就是我的时钟周期,就像一个上升的边缘和下降的边缘,现在我只是做了一个交接,然而,就像升起一样,然后跌倒就像我的手臂来回移动。
所以这是一个更短的时钟周期,尽管这些说明书有不同的长度不同的尺寸,他们可能会花更长的时间来搬运熊猫和其他东西,我仍然要等同样长的时间,好啦,换句话说,这个时钟周期是一样的,不管在哪个阶段执行。
因为只有一个大钟,呃,整个数据路径,这就是我们在这里阅读这个特殊图表的方式,时间从左到右,然后所有这些内存项的使用是垂直表示的。
这是图表的另一个版本,还有一些,左边有大约五个说明,它们可能没有任何有用的意义,但他们就是那样,你知道,就像假设之前有一些安排,你知道所有的事情,那么这里依次发生的是什么,嗯,按顺序,指令仍在执行。
各阶段按顺序执行,好啦,所以换句话说,但他们在或的情况下和AA的情况下,好吧,对于这个指令。
我们要做的第一件事是,我们仍然从i中读取指令本身,然后在下一个循环中,我们仍然这样做,从reg文件读取寄存器,然后我们执行ALU,然后我们不访问数据存储器,我们只是通过它来获得R格式。
最后我们把目的地写回T 3。
好啦,所以我们需要五个时钟周期,我们仍在按同样的顺序进行各个阶段的工作,然而,现在使用的是什么,你还记得管道的整个想法吗,记得洗衣服就像,我们有洗衣服的人,然后烘干,然后这个折法,然后把它收起来。
这些事情可以同时发生,就实际的CPU本身而言,同时视图是什么,所有五个阶段。
我们可以在这里注意到,在最上面,这个广告说明刚刚完成。
在后台用右手,然后第二个指令。
最重要的是最后一个离开舞台的人,它正在加载,从数据存储器加载数据,或者从数据存储器中读取。
然后同样地,alu执行第三条指令,以此类推。
等等,所以所有五个阶段都在使用,它们在同一个时钟周期内被不同的指令使用,一条指令确实会使用,也可能不使用数据路径中的阶段,所以我想给你们看这张图表。
因为我知道这可能是今天最具挑战性的一个,我们会再看到的,所以我只想喜欢,你知道,至少在这上面花点时间,所以你今天可以一直重复,现在让我们比较一下这两个单循环和管道,上次丹肯定是用两个元素来谈论性能的。
其中一个是延迟,一个是吞吐量,出现了赛车和巴士的对抗,我们要再看一遍,但现在有了CPU本身,所以我们要做的第一件事是计算延迟,什么是CPU中的延迟,延迟是一条指令执行单个指令所需的时间,“那又怎么样呢?
指令必须经过所有的步骤,或者有可能经历所有的阶段,让我们把最长的指令考虑在内,在单循环情况下加载单词,请注意,你还记得我们在这里工作的数字。
我们有二百个,两百,二百一百,这100皮秒级实际上是注册文件。
读写,嗯,分别,那将很快生效,但实际上,如果这是每个阶段的计划,然后单周期的指令延迟,只是所有这些阶段加在一起,所有这些阶段的时间加在一起,因为指令必须按顺序执行,好啦,那将是一百个人,哦耶,有个问题。
啊,问得好,问得好,太棒了,是呀,然后问这个问题,你叫什么名字?好啦,好啦,所以学生,宽泛的书或问题,如,好啦,等一下,记住这些指示,为了引起一些奇怪的依赖,这就是所谓的危险,我们将用今天的后半段时间。
周一现在也在谈论这个,你只需要明白,舞台管道的事,假设我们现在不关心执行的结果,我们只是想,你知道的,执行这个任务,然后耶,你说得很对,数据路径在逻辑上有工作,我们会解决很多问题,是啊,是啊,事实上。
我是有目的地把这个挂起来的,所以我们会有很多这样的问题,所以做得很好,不过,好吧,所以现在,我们在哪里,我们只是想知道这里的表演是什么,我告诉你的是,左手边是你所期望的,延迟时间是八百微微秒。
你只要把所有的阶段加起来,但是,对于管道版本,现在所有的阶段都必须是相同的长度,换句话说,他们必须花同样的时间,每秒钟有两百人,你就像,好啦,嗯,为什么有些像块的不比其他的快,对呀。
注册文件只需要一百人几秒钟,这里发生了什么事?记住一个阶段的长度取决于时钟周期,这是一个在那边,时钟频率的反比,在这种情况下,我们有一个时钟,它为所有五个阶段提供信息,好的,好的,那个钟快了,当然可以。
但情节还是一样,又不是说,如果一个阶段发生得更快,我们可以插入不同的情节,这个想法是我们有一个单一的时钟系统,但碰巧是管道,所以它与所有这些地方的开始有关,稍后我们将通过管道寄存器显示,那意味着什么。
然后是寄存器文件,尽管访问元素的时间相当快,在读写方面,只有一百人秒,我们得等一会儿,所以在所有其他元素完成之前,它有点空闲,因为它正等着被抓住,因此,教学时间将是200倍,五个。
其中五是这个指令要经历的阶段数,再一次,我们在想,这是最长的指令,哪个是加载词,哪个,它在这里执行和访问管道的所有不同阶段。
五个阶段,现在第二个,我们使用的第二个性能指标吞吐量有点复杂,从某种意义上说,它必须处理这个问题,就像处理器性能的铁律,然后我们也没有完全明确地告诉你,一个程序的程序的吞吐量是多少,或吞吐量。
数据支柱的吞吐量是,所以我现在就告诉你,这就是表演的铁爱过程,这是什么?每个程序的时间(以秒为单位)等于每个程序的指令数乘以,循环,每条指令的平均周期,每个周期的时间量,好啦。
每个周期处理器吞吐量的状态数是我们所说的,每次或每秒的平均指令数,好啦,比如在一个特定的时间段里有多少个赞,一秒钟,CPU中的这个数据路径能通过多少条指令,这是一个很好的衡量标准。
现在你会注意到这里的一些东西,有多少人记得化学中的化学计量学,好的,好的,你可能从来没有听说过这个词的发音,这是一个从t o i开始,然后在结尾有化学反应,故事几何学在这里是单位对消,所以我想做的是。
我有一个吞吐量的等式,随时间变化的指令数或每次指令数,在处理器性能的铁律中,什么样的单元与此相匹配,这里的后两部分,一种相反的,好啦,换句话说,在指令时间上的循环,每个周期的时间,给我每次指令的时间。
然后我翻转,我做了相反的,随着时间的推移,这会给我一些指示,所以这是一种思考,吞吐量与你们上次看到的铁律有什么关系,原来是这样,我们如何计算这个指令数,请注意,这并不取决于程序,这是一种假设。
就像平均而言,吞吐量是多少,我们要做的第一件事就是,在我们的阶段方面与我们所拥有的相匹配,然后我们的时钟循环,所有这些对这个方程本身,我想指出的第一件事是T循环,这正好是时钟上的一个。
或者这正好是每个周期的时间,好啦,所以800皮秒和200皮秒,对于管道中的单个循环,有一种叫做cpi的东西,上次丹真的很强调,有点像处理器固有的东西,老实说,我认为这可能是这里最令人困惑的术语。
因为cpi是每条指令的平均循环数,好啦,换句话说,如果我喜欢,我其实喜欢思考每个周期的指令,这些事情的反面,因为这让我能做的,每个时钟周期内完成的指令的平均数是多少?然后我把它反过来。
所以在左手边有一个单循环版本,老实说,这有点道理,就像没事一样,一条指令占了整个周期,所以一旦这个循环平均完成,一条指令就完成了,好啦,所以1/1的逆就是1,现在呢,那是最理想的,事实证明。
有一点像内存访问之类的东西,我们几个星期后再谈,那么右手边的管道呢,我认为很容易认为这将是5个CPI,嗯,但它不是,是一个cpi,然后呢,你知道的,又老实说了,好像比一个小一点,因为事情是如何运作的。
你可以拿一五二了解更多信息,让我们考虑一下,一点点cpi,cpi的倒数是每个周期完成的平均指令数,我们有一个阶段性的管道,平均,一条指令将在右后阶段,在一个周期内就在后台,一旦写回阶段完成。
该指示将完成,其他指令还在处理中,所以每次你有一个时钟周期,好的,好的,完成了多少指令,唯一完成的是平均在右后方的那个,你知道有一些,有一些说明不能马上使用,所以如果你取1比1,那是一个。
要了解更多信息,请查看维基百科,昨晚很有用,好啦,那么这对我们有什么帮助呢,虽然,如果我们要计算吞吐量,我们有一个循环,然后我们还有cpi,好啦,在一个单一周期的情况下大致如此,我们的吞吐量足足有八百。
就像一次,八百就是八百,然后是管道,它将是200或200的1倍,然后你取这两个东西的逆,那么这意味着什么呢,这意味着吞吐量增益是4 x,这一切都取决于这个情节周期,所以换句话说,我们在说什么。
记住你就像,好啦,这里的吞吐量是多少,每秒执行的指令数,因为嗯,这是一个时钟系统,我们从那里得到第二个单元,因为时钟更快,最小时钟周期快了四倍,吞吐量提速也是4倍,好啦,是啊,是啊,问题,是啊,是啊。
是啊,是啊,好问题,所以让我重复一下我的解释,因为我觉得老实说,这里滑梯最具挑战性的部分之一,我会考虑每个周期的指令,好啦,所以与此相反的一秒钟,和每个周期的指令,我一直认为它是每个周期完成的指令。
不是我碰巧被执行的指令的数量,因此平均每个周期完成一条指令,这是一个完成右后卫,所以这是相反的,然后我喜欢做一个的逆,这只是一个,是的,所以这就是为什么我推荐喜欢,维基百科上的CPI文章实际上就像。
太奇妙了,我不知道你们有没有遇到过这种情况,但现在你知道了这么多,如果你看看维基百科,你实际上可以阅读和理解它,那是个好地方,因为我知道有时候,这是相当困难的。
但我绝对建议检查一下CPI,它是它是一个相当大的,他们实际上有这个例子。
完全正确,然后他们把它写在文本上,所以这很好,所以这是比较管道是好的,增加吞吐量实际上不会改变延迟,事实上,延迟会稍微恶化,但是吞吐量增加了4倍,太棒了,因此,让我们稍微思考一下。
我们希望如何构造这个数据路径,这是我们的单周期数据路径,但请记住,我们在处理单周期数据路径时遇到的一个挑战是,或者喜欢,我们不能在这里放个钟的原因之一,是因为在这一点上所有这些元素,PC Reg文件。
Dmam,他们都用同样的东西打卡,然后就这样,因此,一条指令就会把它扫过整个过程,所以我们需要做的是设计我们的管道寄存器,或者管道数据路径是我们需要以某种方式分离这些指令。
这样数据就不会在整个过程中流动,一下子,您希望数据首先流过第一阶段,然后等到第一阶段的数据是第二阶段的数据完成,然后流经第二阶段,以此类推,我们如何进行管道寄存器,就是现在,我们回到之前凯西的演示。
就像他们现在是管道寄存器一样。
所以让我们提醒自己管道寄存器是什么,你真的看到了,但它们不叫管道寄存器,这是两周前左右的回顾,在左手边,我们有一个循环,加法器和移位器,你喜欢地看着它,我知道我知道你喜欢地看着它。
你可能也在考虑期中考试,不过没关系,然后单周期的一个问题,一个是现在,因为在开头和结尾有两个寄存器,你的时钟周期取决于延迟,加法器和移位器的传播延迟,管道版本将允许您增加时钟周期,好啦,所以你放了很多。
加法器和移位器之间的管道寄存器。
这是干什么用的?这可以让你有一个更快的时钟,因为现在你的时钟是这两个延迟中的最大值,如果你用同样的时钟,所有的状态元素,第二件事是你得到了更高的每秒吞吐量输出,因为你的时钟没问题。
所以这有点像我们在数据路径上看到的,是一个更简单的版本,但你明白了,所以你只是在你的阶段之间拍打或注册,他们只是引用,但实际上它们是字面上的,这里有字面上的阶段,我们去看看,我把图表稍微放大了一点。
因为事实证明我们实际上必须投入,所有这些管道寄存器,我定义这些管道寄存器的方法,就像你在文学作品中看到的那样,他们被定义为,呃,阶段i f和id之间的边界,把它写成i f斜杠id,对它们都是类似的。
好啦,所以有四组管道寄存器,因为现在有连续五个阶段。
让我们来看看这里的第一套,IIG管道寄存器,我怎么知道这里只有两个寄存器,我只是想把一个阶段的输出,因为一个阶段的输出会立即流入下一个阶段,我不希望这种事发生,我只是在等待时钟的到来。
所以如果我只是沿着这些箭头,就像看看我的边界线在哪里,这里正好有两个输出箭头或两根输出线。
其中之一是个人电脑,它被转发到所有的ALU和所有的,其中一个是在我的指令提取中读出的指令词。
周期或阶段,打扰一下,这里只有两个管道寄存器,有时你会看到它被画成一个巨大的酒吧,但将画为两个独立的东西,然后注意这里的i f阶段,至少在我们目前的版本中,我们要把个人电脑增加到个人电脑,下一个加四个。
舞台,所以这将允许我们做什么,一旦时钟再次滴答作响,这个I F阶段确实会阅读下一个指令,好吧,因为我们有这个权利回来,如果我们没有这台电脑加四个更新就在这里,然后如果只是想不知道什么时候更新。
直到最后一个阶段是,它是这样做的,有点像思考这里的区别,在单级和流水线版本之间,让我们看看这里的第二部分,现在我们有更多的箭头,所以我会在中间打一堆寄存器,阶段ID指令解码的所有输出。
这是寄存器文件访问和阶段e x,这是alu执行,有一些分支计算,我们下次再讨论这个问题,现在请注意,这里有一些像你一样的东西,你可能马上就想知道,呃,几件事,其中之一就是,我还在继续,指示词的三十二位。
事实证明,这将有助于控制,所以有点像,我一看到这东西,我只是把它转发,这是我转发的一个新数据,但其他你喜欢的人。
好啦,我在我的ID中计算的那一刻,所以我应该把它归档,我从寄存器文件中读取的所有数据。
是呀,还有电脑,我需要把它转发给ALU,但你可能会想,哦好吧,就像,这些呢,上面这些线,他们说你没有,你没有把小登记簿放在那里。
发生什么事了?这些箭是向后的,所以这实际上是一个不同阶段的一部分。
所以我现在要忽略这一点,我只是在想这个阶段和下一个阶段之间的所有错误。
是啊,是啊,还有一个问题,是啊,是啊,啊,一个奇妙的问题,我们一会儿再谈控制,是啊,是啊,是啊,是啊,所以问题是,你也转发,控制标志,我们用三张幻灯片来讨论,从字面上看,是啊,是啊。
但我只想通过剩下的管道,还有几个音符,让我看看,我们这里有什么,就我们的笔记而言,嗯,我们有,我们也转发指示,再来一次,然后我们也向前,卢比2,记住RS 2和存储词有点像,那是那是。
我们要存储到内存中的数据,我只想说,然后最后又回来了,如果我把它放在决定写哪个元素的MUX之前,我在这里保留了三个元素,我对右后标记的三个输入,这里有张字条,我其实有个加法器,就像一个四加四的加法器。
这是为了简化硬件,再加上四个加法器很便宜,所以这样我就不用,PC和PC都加四个,我只是增加了PC的增量,当我知道我需要它的时候,它就在红色的盒子里。
有两种加法器,这是一张纸条,然后底部还有一个小分割器,所以让我们来做一个快速的,其实很好,我们不做这个问题的互动版。
但我们只是想看看,很快的,这只是把这个图再翻译一遍,从左边的变成我们知道的右边的,让我们假设我们在这件事上,时钟周期,屏幕上列出的所有五个指令都在操作,那他们是怎么运作的,在这五个阶段中。
哪一个教学是在哪里,老实说,这只是看图表的问题,所以我们要看一下图表,我暂时不理会各地的民意调查,如果我们看这个图,然后我们就像放大,像摆动一点,广告正在使用的单位,正在用于的舞台,最上面的广告。
就在后面,因此使用dm的加载字,或者是用x e x,然后商店用呃,身份阶段,最后,如果I F阶段被左移位使用,逻辑,所以我只是在写,但注意这里就像,即使黑暗从上到下,现在突然间。
数据管道就像反向问号一样,对人们来说,意识到这一点往往有点挑战性。
但这是有道理的,这里的存储移位左逻辑是发生的最新指令,所以它在最左边的起点,开始-开始阶段,然后在下一个时钟周期,不管是什么从左移逻辑是这样计算的,也就是指令被拿来了,这有点像在管道寄存器前等待。
然后砰的一声,它进入指令解码,好啦,然后它就像在ide x处等待,然后等待,等待,等待,然后砰的一声,它继续到x,以此类推,好啦,所以这有点像思考管道阶段实际上是如何工作的,现在回到控制问题。
所以我们就像,我们讲了一点指令位是如何被转发的,然后有人问,好吧,好吧,控制位呢,因为你知道,有一个完整的转发逻辑,我是任务控制中心,这是在哪里发生的,有几个选择。
我们在这门课上教的一个有效的方法是在教学中解码,一旦你得到指示,除了分支,你还知道很多控制标志,我们下次再谈板凳的事,例如,你只是喜欢转发这些,你把它们放在小小的登记簿里,或者你做一个巨大的。
非常非常长的寄存器,你把来自所有不同管道寄存器的所有数据,进入巨大的长寄存器,所以这里让我们来看看,就像在指令解码阶段,这就是我们把指令分开的地方,我们就像弄清楚如何读取寄存器文件。
然后我们也把它转发到这个控制逻辑块,它让我们的WB选择我们的MEM读取,写我们的A选择B选择,你有什么,然后我们把它们放进小寄存器里,每一个都像一堆碎片在一起,或者一堆旗帜在一起,好啦,所以在这里。
我有三类IX的控制标志,它对应于每一组控制标志,将用于以下阶段,就是,您可以看到随着时间的推移,管道慢慢地摆脱了控制标志,因为一旦你在一个阶段使用它们,你不用再用了,在下一阶段。
因为有不同的元素需要控制,好吧好吧,有一种东西叫转发,我们稍后再讨论这个问题,但这有点像你计算一次控件,然后你把它传下去。
现在很刺激,我们在哪里这么管道,其中一件事,CPU数据路径的一个很酷的地方是,你第一次想看的时候,你就像,怎么会有人想出这个,但是61的好处是,我们不是要求你想出一个数据路径,我们告诉你数据路径是什么。
然后只要你明白,然后你就可以画了,或者你可以把这些碎片连接在一起,所以我们慢慢做的。
随着时间的推移,我们正在剥洋葱,就像某个人某个人,其中一个学生在办公时间像,哎呦,也许史莱克应该成为61年的吉祥物,因为这里有个洋葱的比喻,但我们在脱皮,再来一层洋葱再来一层洋葱,你所说的危险。
我们的数据路径,我把所有的指示都整理好的方式。
这会引起一些问题,几个问题,会发生这种事,这里有一个,这可能是一个你没有做任何事情,所以他们中的一个就像,嘿嘿,我们有IMM和DM,他们都是凭记忆读的,这可能吗?就像物理上可能一样,第二,我们有低潮。
商店里的词,然后我们有一个或,或者先发生,或写进T三,但商店的词必须从第三个读来,但就像第三个是在回信之前写的,就像,这可能是什么,比如我们在这里做什么,这个问题和第二个问题就像,分支机构如何再次工作。
我们下次再谈这个,但这是三类事情。
指令按顺序执行可能行不通,所以什么是危险危险是描述这种情况,计划指令不能以预期的或适当的方式执行它,这里有三个不同的版本,我们要逐一检查,其实呢,我们将在每一个项目上花很多时间,其中之一是结构性的。
我们有数据危险,我们也有控制危险,现在呢,他们在这里有合理的名字,所以结构意味着硬件结构不起作用,所以我们从薯条店买来的硬件,它不支持我们想要使用手臂的方式。
我们的接入系统数据危险,这是数据依赖关系。
所以这有点像T三,商店的词和我们之前看到的东西,这次我们要开始讨论一点,下次再谈,然后控制危险就像我们在按顺序执行指令,但突然间我们需要跳到某个地方,就像我们如何跳跃,就像我们有一些指令是主动执行的。
我们需要撤销这一点。
怎么会这样?这就是我们下次要讨论的,但现在让我们来看看结构性风险,只是一点点数据危险,所以你有个主意,结构上有,哦对了,我想指出,所以对于你们所有人来说,你知道这就像四四十。
所以如果你听说有三十个人在变焦,或者对于变焦的人来说,只是笔记,所以这个东西在决赛上,而不是期中考试,挺好的,也是最伟大的,我得到的一个很好的建议,我在决赛中做的事情是你会得到一张备忘单。
这就是树链非常有用的地方,记住所有这些对所有危险的不同定义,这里有一个,结构危险,定义和以前一样,2。这事什么时候发生,多个指令竞争对同一物理资源的访问,我喜欢这样想,作为嗯,这可能是一个古老的模因。
有个家伙,他拿着一堆台词,然后他就撑不住了,因为他忙得不可开交,那是结构性的危险,他没有足够的手,所以喜欢,在硬件方面,我们可以买更多的手,你知道我们可以做一个有很多手的人,但在现实生活中。
我们实际上可以做到这一点,所以这里有一个解决方案,如果你,如果你的资源不喜欢,我有,是啊,是啊,好啦,好啦,稍后我将向你们展示实际的例子,但这里有一个解决方案,如果你是硬件。
实际上无法支持所有这些人同时给你读书和写信,你的硬件只是说等等,然后时钟周期滴答作响,这就是所谓的cpu死机,不是超级低效,肯定管用,但会减慢吞吐量。
第二个选择是增加更多的硬件,让人类有更多的手,或者你知道,获取允许多次读取或多次写入的Fries仪器,或者我们现在不必在这个风险五系统中拥有多个权利,我为什么要谈论结构性危险,风险五的美妙之处。
我们向你描述的方式,所有这些结构性危险都已经避免了,好啦,所以接下来的幻灯片,我要向你展示的是风险五的美妙之处,事实证明,您实际上不必通过硬件来解决这些问题,因为我们已经为你设计好了。
下面是寄存器文件的示例,每条指令最多可以读取两个操作数,来源RS一个RS两个,然后一直到一个操作数,如果我们有一个类似于这样的寄存器文件块,这会造成结构危险,所以这个寄存器文件块是我编造的,上面写着。
好啦,我读到一个词,三个两个比特,我也读了一个RS,然后旗子告诉我是写还是读,我只能读出一个元素,好啦,我一次只能访问一个元素,这会造成危险,如果我先把这个块放进去。
因为我不能把它连接到我已经有的数据路径上,在我的寄存器文件中同时进行两次写或两次读,我们当前的寄存器文件,当我们画的时候,它确实处理了这个寄存器访问,潜在结构性危害,所以再一次,这里的想法是。
结构风险已经由风险五处理了。
这是它的方法之一,所以说,有什么例子,这里有两个独立的读端口和一个独立的写端口,同一站点可以发生三次访问,两读一读,而在在呃,中间的图,像想象中的挡住的那个,我有,你不能让这种读和写同时发生。
这两个读和一个写发生在同一个循环中,因为它们只是没有足够的输入线或输出线,这里还有另一个结构性危险,就像我们向你们描述的风险5一样,它围绕着记忆,所以在这种情况下,假设我们有加载词和向左移动逻辑。
这两个处于同一阶段的人现在都在访问内存,其中一个碰巧在访问指令存储器,其中一个碰巧在访问数据存储器,但这在物理上是可能的吗,如果物理上不可能,这将是一个结构性的危险,好啦,这就像结构风险的概念一样。
如果物理上不可能,在这种情况下是一个结构危险,我们只有一个记忆,不会,实际上不能同时访问这两个,就像我们在这门课上抽象记忆一样。
但是,幸运的是IMM和恶魔在风险五架构方面说,请把这些单独的物理设备,我们就是这样画的,我记得在左边我们有CPU,在右边我们有两个元素,我们考虑这两个独立的图表元素,但在CPU上,我们让它们保持不同。
论船舶记忆,你会在这里看到我们使用的词是指令和数据缓存。
什么指令和数据缓存。
指令高速缓存数据高速缓存,我们将在两周后讨论缓存,在两个讲座时间,我们快到了,但是想象一下,目前,这只是两个独立的硬件项目,并坐在那里作为内存访问内存,读对了,一切都值得。
是啊,是啊,问题。
啊,太棒了,所以问题是嘿,注册文件右读。
你会说每一个都是100皮秒吗,是呀,刚好两点。
五张幻灯片,你们今天就在上面,就喜欢而言,你知道的,那是个很好的演讲,当你们问问题的时候,我有三张幻灯片完美,你知道更好,如果是一边,但是不管数据有什么危险,这是另一种危险,这是什么意思。
这意味着现在指令之间的数据,不知何故就像,不允许您按顺序执行所有指令,在预期的时钟周期内,所以就像管道一直被完全填满一样,在我们的架构中什么时候会发生这种情况,它只发生在这种情况下,好啦,我是说,你看。
在这种情况下,它发生在三种不同的情况下,这个条件是一条指令读取寄存器,但是前面的指令需要先写入寄存器,有很多不同的方式可以实现这个确切的场景,在这节课中,我们要考虑三种情况,其中一个是同时发生的。
写作和阅读在同一个阶段,这就是我们所说的寄存器访问,其中之一是ALU结果,今天结束的时候我们会讲到,其中之一是负载数据危险,好的,好的,所以这种超长时间的负荷实际上也会变成一种危险。
让我们谈谈我们中的一个刚刚提起的第一个案子,让我们假设我们处理这个add指令,存储单词指令,我在这两种情况下划了线。
注意,广告中的顶部T零,这里是目标寄存器,然后底部归零储存。
这是一个读寄存器,因为那是我们要存储到内存中的数据,但是,如果我们好好看看商店的话,在同一阶段读数为t零,那则广告写到零了,所以有可能,你知道可能会有数据危险,新值被写入如下,或者像之后。
旧值被意外读取,所以这将是一个数据危险,或者实际上这个东西通常只是一个数据危险,你不可能得到错误的信息,这不是结构性危害对结构性危害,就像这是不可能的,在这里完全有可能,因为我们有三个端口,两读一写。
它们可能发生在同一个循环中,但数据和内容可能有点混淆。
那么这里的解决办法是什么呢,解决方案是解决这种数据危险的硬件需求和硬件需求,现在我们明确地说,我们的注册文件,我们从薯条或其他需要写的东西上买的,然后在同一个循环中阅读,你好像是对的。
那怎么会发生这种事呢?假设有一些组合逻辑块的情况发生,但总的来说,这个寄存器文件,实际上这就是为什么我们用这种方式阴影图,寄存器文件,但它是有效的,我们必须在舞台的第一部分写作,然后在舞台的第二部分读。
这是一件单品,你还记得刚开始上课的时候,我们很好,寄存器文件是单个硬件元素,这是真的,它是一个必须同时读写的单一硬件元素,又名在同一时钟周期,但实际上我们说的是在同一个时钟周期,你需要先写出东西。
在那些你们都得到的输入中,然后你读什么,你呀,所以对这个有一些要求,其中之一是我们确实需要先读后写,在同一阶段是可能的,我们把它写成100微微秒,加上100微微秒,可能会有一些重叠,但总的来说。
你可以这样想,一百人秒,然后这个是,呃,但是,如果你想写然后读,可能并不总是可能的,尤其是如果你的时钟超级超级快,好啦,所以就像这样,这就是为什么这里是用小字体写的,在大多数情况下。
对于我们将要研究的所有类型的体系结构,我们正在处理的时钟周期,我们将拥有物理上能够写入和读取的寄存器文件,因此,这种类型的数据危险不是一个问题,现在这里有另一个数据危险,这就是我们今天要结束的。
这就是ALU的结果,这是三个数据危险中的第二个--我们下次会做下一个,但这种数据危险又一次地处理,第一条指令只是为了让它变得简单,所以就像,你知道,这是一组与上次幻灯片略有不同的说明。
但是如果我们看看零点是什么时候写的,就像在正确的后台潜艇里或者他们可能不会得到正确的结果,或者事实证明他们有,但让我们来看看这个,你还记得我们是怎么读这些图表的吗,我们从左到右,这是时间不同的时钟周期。
所以我在这里所做的就像,我刚刚补了一个零的值,让我们假设在添加发生之前,五点开始,然后在这之后,就像零一样,它的更新值是九。
所以发生的好事,在第一阶段。
五点了,什么都不读,第二阶段什么都没写,它是红色的,或者因为零在第三阶段不是红色的,由于在第四阶段或第四个时钟周期中不编辑零,最后在第五个时钟周期。
右边的读数是五变成九,好啦,所以在所有其他的时钟周期中,到现在为止,零号还是好的,因为没有任何右后卫发生在零号,至少在这组特定的指令中,我们有这样的,因此,“好”是什么意思。
这意味着对于子和或这两个读取寄存器文件,具体来说,在s零改变正确值之前,在时钟周期中读取f零,好啦,请注意,这里我们实际上是在处理这两个抽象层,我们就像,好的,好的,我们知道机器代码的作用。
或者程序集代码应该做的,但实际上数据不起作用,我们认为它将被翻译的方式,程序集代码告诉我们需要做的,应该是在Sub发生之前t零加t一的更新值,但是,因为我们的管道建设,这会导致数据危险。
因为我们正在做的是,在更新新值之前,我们正在读取x零的旧值,现在呢,原来这里的另外两个指令,这些很好,嗯,因为我们通过做一个。
我们修复了数据危险x,或者说x或s为零,嗯,它发生在与写零相同的循环中。
如果我们有写,然后b,这会解决的,好啦。
之后的任何指令都将是正确的值,让我们想想怎么解决这个问题。
那我们怎么,这就是应该回到第一张幻灯片的内容,我只想专注于副指令,然后随时阅读喜欢的答案,或在课本上或之后的幻灯片上的说明,但让我们把注意力集中在一个子指令上。
现在我们知道,右后卫发生在第五循环,假设我们在做指令解码,好啦,就像我们读的那样,我们把指令艇拿来,我们想通过舞台,然后我们就像,哦废话,哦废话,我们不能进入下一阶段,因为当我们做指令的时候。
解码子实际上使用前面指令中的一个目标寄存器,好像有一些,你知道的,一个额外的状态被存储到这里的管道和数据路径中,所以你就像流产,中止,在这个指令的任何一个阶段中,都不会执行任何其他操作。
这就是我们所说的泡沫,我们称之为,有时你看到它,它叫,这就像一个有效的无行动,这和你所认为的一个,作为一种风险,五努普,不过没关系,然后我们再试一次,我们就像,好的,好的,在下一个周期对。
我们还没有把电脑更新为电脑加四,因为我们想再试一次,所以我们再试着做一遍指令,我们喜欢把指令子拿来,然后当我们做指令解码的时候,我们就像,哦不,还是和以前一样的指令,像一个零,还没准备好,中止中止板。
然后你就像泡泡一样,关于在此期间不将任何内容更新到其他阶段的信息,最后你第三次再试一次,你就像好的指令提取,然后在指令解码的时候你就像,呃零分,下一步就准备好了,然后你就继续前进。
你有没有看到我们喜欢浪费时间,我们在舞台上浪费了表演,因为所有这些都像第二和第三阶段。
下面是第二条和第三条有效的指令,他们就像,好啦,好吧,这意味着在我们处理的时间里,让我们假设第五个循环中的最后一个,寄存器在后面,然后减法读到。
这意味着内存和执行阶段,这些根本没有被使用,在…的意义上,就像任何正在计算的值,他们不会传给下一个,管道的下一阶段,所以这里有一点舞台表演,那么我们做得好的是什么呢,原来这是一个选择。
它确实减少了,性能证明,您可以在编译器级别上,如果你知道指令顺序,然后你可能会重新排序说明,这样您就没有数据依赖关系,你不会导致所有的数据,但事实证明,下一次,第二个解决方案转发实际上更好。
所以祝你期中考试愉快,让我们看最后一张幻灯片。
祝你期中考试好运,参加,星期一见,所以谢谢你。
P3:Lecture 3 C Intro - Basics - 这样好__ - BV1s7421T7XR
很接近,非常非常感谢,非常接近 好的,所以这真的很有趣,C C+C Sharp 相当于前 4 种语言中的 3 种,所以学习 C 会让你变得非常高效,它会教你一个全新的视角,c 是方式。
在这里所以我们讨论了这个,C 是一种低级语言,所以你会欣赏机器,你将能够表现得更加出色,写代码,这确实比用 Python 编写的人快得多,Python,人们通常将实际上用 C 构建的库称为库。
所以 C 确实是你得到它的地方,从中挤出性能,好吧,美丽的呼喊,好的,回到我们之前看过的第一张幻灯片,这是抽象层次的大图,我们在顶部 好吧,我们从顶部开始,我们要去,深入研究软件,直到我们到达指令集。
架构层,然后从底部开始工作,我到了中间,所以我们要咬一口,几乎就像你咬了一口汉堡,可以,然后呢,到目前为止你学到的重要想法是,任何东西都可以用位来表示,你以前看到过,我们在第二讲中又看到了它。
船尾,迈克·弗利克 (Mike Flicker) 不太高兴,哎呀我每次都必须发出声音。
好的,所以它提示了一切并且一切都排队好了。
那很好,那挺好的,我们回去吧,所以我打赌。
不错的答题器 Dan 不错的答题器 是啊,好吧,所以,我会尝试点击一次而不是点击曲目,好吧,这是圣经,KNR 克尼根和里奇,确保您获得 ANCC 的第二版,标记早期版本,我实际上没有,这很酷。
结果出来了,c 是,很搞笑,我通常不看幻灯片,让我和你一起读一下这个,c 不是一种非常高级的语言,也不是一个大的语言,并且不专业,在任何特定的应用领域,这有点像80年代,但它没有限制。
我们喜欢非常低级的硬件,及其一般性,让它更方便,对许多任务有效,以及据说更强大的语言,他们正在将自己与 Fortran 进行比较,顺便说一下当时,和帕斯卡,启用第一个未用汇编语言编写的操作系统,所以。
这确实是我们当时必须写的,操作系统想象汇编中的162,艰难的事情,所以这是一件大事,你可以写这个,比组装的水平高得多,Unix 是一个很酷的东西,它是一个便携式的,操作系统,实际上。
可移植性是在伯克利完成的,伯克利标准发行版。
BSD 是当时的大太监之一,好的,现在我有第一个玩家问题,首先且仅用于讲座,这是我们每年都可以访问的,我真的很想感受一下,其程序是罗马 C 语言,所以问题说,在这堂课之前我这是你我学生。
会说我是一名扎实的 C 程序员,这是那些活物之一,这样你就可以实时看到,去,如果你不这样做,如果你看不懂它,它会显示文本 DDG,至 2 2 3 3 3,每堂课都一样,丽莎会有不同的代码。
然后输入 ABCD 或 E,或访问 pollev com,副总干事丹·加西亚博士,这很有趣,因为你会看到,总是很有趣,能够看到你在哪里,在你的同学中,不知道我们不是,如果你在a上就没有阴影。
或者如果你在 E 上则没有阴影,就在你碰巧在的地方并感受到它,好的,大多数人以前没有见过C,61 C 只是一般而言,这就是我们所看到的典型情况,有很多 b 和很多 A,一些涉足但大多是 b 的人,好吧。
顺便说一下,如果你懂Java,你大多知道我们要做什么,所以你知道你是否参加 6 到 1b,如果你已经采取了应该没问题,好的,并且,顺便说一句,我有大约 40 张幻灯片,所以这只是很多,告诉你关于C。
我认为,我们可能在前面的幻灯片中说过这一点,但我再说一遍,你不会从中学到C,你通过做来学习C,你可以通过实践来学习任何编程语言,所以只要听到它就会有点,我会尝试,引导您绕过问题并尝试突出显示,原因。
然后我们要做的是,花大部分时间教你。
基本的高级作品,那么丽莎下一堂课将详细介绍,好吧,那我们该怎么办?出色地,我们希望能够再次,利用其基本特征,硬件的,我们希望能够更接近硅,Python 确实允许这样做,c 我们喜欢它吗,例如第一次。
你要管理自己的记忆,这是一件大事,你没有用 Java 做过,你肯定不知道,Python,有一些特殊说明需要,能够与硬件对话来进行瘫痪,我们也会看到这一点,很酷的东西,C如你所见,从那次调查中。
C及其口味,是最流行的语言之一,40年后他们仍然是第二、第三和第四,太强大了,这对遗产来说意义重大,并说了很多关于卡内基的神奇之处,和里奇是,提出并发展这种语言,我还会看一些幻灯片,有一些进化。
所以它也是随着程序员一起进化的,但是如果你要开始一个新项目,全新的项目,你已经知道了 C,你会去C吗,我可能不会,这是双方的一些建议,尼克·韦弗和我以及丽莎,两种非常像 C 的语言。
但都经过优化所以生锈,是C,但很安全,C 有所有这些锋利的边缘,这可能会导致大量错误,所以他们说,你知道如果我们喜欢 C 但我们想要,消灭那些错误,所以生锈是可见但安全的,当你看到理论上是正确的。
进行所有必要的检查,它应该不会比生锈快,去是惊人的,你还不知道,关于什么是核心或如何驱动这些核心,但 go 会自动为你做,所以 go 只是说 write it and go,突然间我有了一台机器。
90 课程哇,它只是有效,令人惊奇,无需喜欢。
手动调整它,所以 go 非常适合该语言,好的,我的答题器可以工作,现在,我和以前一样说过你不会学习如何编码,只要听我说,这对于编程来说从来都不是真的,你必须自己做,这就是我们建立实验室的原因。
顺便说一下,有,全国各地的一些课程没有实验室,只是讲课讲课作业之类的,不,我们有实验室,所以我们可以继续研究并获得一些支持,我就是喜欢那个模特,我的植物之一,我的一位导师创建了 KNR 模型。
有些必须有,正如你所看到的,有两个资源,一个是 Java,简而言之,如果您来自 Java,第 2 章介绍了 Java 与 C 的不同之处,所以它很友善,好吧没有Java,让我了解一下 C 是什么。
boom 是什么,布莱恩·哈维说这太棒了,过渡注释是,可点击且该资源可用,也在网络上让我们确保,头 t 是,让我们确保该链接位于他们的网站上,令人惊叹的布莱恩·阿巴里资源最近退休了,名誉教学教授。
关键概念是 C 有这些锋利的边缘,指针被擦除,和内存管理有点低,调整您以前不必担心的事情,你肯定有指点,但你不知道里面有返回的指针,爪哇时代,关键的安全概念是所有这些都是不安全的,这一切都是真的。
你会搬起石头砸自己脚的地方,如果你的程序在这些区域包含空气,可能不会立即崩溃,这是最难处理的错误之一,可能不会,立即崩溃,而是让程序处于不一致的状态,经常被利用的状态,所以安全人员讨厌看到,因为它是。
为人们介绍了所有这些可能性,进后门做事,实际上从这个角度来看问题。
就像 Clicker 现在并没有真正让我开心,但来吧答题器,那里好吧,所以有两个,好的,所以有两张大图你需要知道,这几乎是一个像迷你164一样的教学,这是编程语言的讲座,关于我要教你一门新语言。
你可以问的第一件事是,它是编译语言还是解释语言,此时你应该了解两者,我相信Python是一种解释性语言,也经过优化编译,Java 是一种编译语言,但它是解释语言,这是一件有趣的事情,C全部编译完成。
好吧,所以你有点从解释,解释并编译为全部和全部编译,让我告诉你那是什么,这不起作用。
好的,那么编译器是做什么的,编译器获取源代码,并将其映射到特定于架构的东西,如果你是学习Python长大的,你不会欣赏,与系统打交道是什么感觉,哪里有特定于架构的代码,不会转移到其他人的设备上,一阵子。
英特尔拥有一切,Intel 是 Mac 的首选 CPU,Intel 的 CPU 选择,对于 PC 来说,你说相同的 CPU 不,但这些库被编译成可执行文件,你不可能谁曾经吃过生的。
在 Windows 机器上可执行,并将其移至 Mac 并使其正常工作,就是不行,这就是建筑学的具体内容,谁曾经使用过 Python 代码并致力于,无论你是什么机器,Python 代码随处可用。
和 Java 一样,因为这种解释,与Java不同,转换为与体系结构无关的字节码,好的,这这太棒了,今年爪哇他们有一件大T恤,跑一次就对了,任何地方 正确 正确,它立即跑到任何地方我的朋友,为sun工作。
他得到了一支笔,它实际上会泄漏,就像他的锅里漏满了墨水,它的侧面是一个像Java一样的Java,对吧,曾经跑过他的手和他的任何地方,很有趣,好吧,Python环境,再次转换为字节码以供运行时使用。
但总的来说,我要,传递给你的Python代码只是被解释,它在任何地方都有效,我们喜欢它,所以我们喜欢 Python 和 Java,但这就是我们为什么要这样做,为什么我们总是把自己锁在建筑中。
每个人都有一个答案,比如 p,它与性能押韵,履约权,一旦你编译下来,没有什么能比原始 C 的速度更快,编译为架构特定的代码,所以顺便说一下有两个问题过程,一般来说,你只会,现在,你只是想再次编译它。
当你头脑简单时可执行,还有一步,我有一个完整的,关于这个称为编译的讲座,组装和链接,那是什么咒语,卡尔,我只是喜欢这样来记住那是什么,我们将会看到,这三个步骤,整个讲座中更详细一点,这是该讲座的概述。
有一个编译步骤,还有一个组装步骤,这是为你保密的,你输入 GCC C 代码,你就会得到可执行文件,所以它正在秘密进行组装步骤,它正在执行链接步骤,链接步骤是引入一些库的地方。
你可以引入一些库来使其可执行吗,所以在Cal中编译汇编链接,你永远不应该忘记这一点,好的,再次眨眼,配合所有人。
这是图片,不错的照片,你有食物点 C,我正在研究食品点 C,Lisa 独立创作小节 C,太棒了,我们每个人都有一个编译器,我们每个人都得到这个 0 机器码,你不能运行 0 个文件。
他们可能与一个图书馆无形地联系在一起,活O,使,顺便说一句,我不想拥有,有没有人有任何点出局,你可以用破折号 o 标志来命名你的可执行文件,从现在开始就不再有点了,菜鸟这个词是什么,新手们。
他们都是点外的,你应该输入 GCC 破折号 O,可执行文件的名称,然后是您需要的所有 C 文件,好的,所以不要有任何疑问,这表明你不知道自己在做什么,o 破折号 o 然后有一个可执行文件名称。
通常是你蹩脚的可执行文件,如果你只有一个福,那就太棒了,你只要叫它你想要的名字就可以了,问题,这就是大局,现在为什么这有用,因为你猜怎么着,丽莎可以为我独立处理她的文件,所以整个团队,想象一切。
整个团队都在不同的部分工作,太棒了,所以服装开发,没错,这张照片也有很棒的地方,就说食物吧,假设这很大,它很大,丽莎和我都非常高效,我们编写了数百万行代码,需要很长时间来编译,我们就说。
假设丽莎没有碰她,所以她得到了她的,她做了她的巴多托,它位于我的目录中,我在我的 Foo 上工作,我做了一些更改,也许一行更改可以修复它,等待编译步骤的时间,我必须等丽莎的吗,不,因为我有她的芭铎。
我必须重新编译库吗,现在点 0 就在那里,看看那有多酷,所以能够做出改变真的很有用,如果我改变食物会怎么样,c 必须改变什么才能使我的新食物可执行,我必须编译,我有一个链接。
但我已经有条形灯和 LED 灯了,这就说得通了,我想要返工和重新编译,但这非常好,顺便说一句,为什么你把程序分成文件,这有意义吗,突然之间你就这么做了,你不必重新编译你喜欢的一切哦,这是什么功能。
这个栏的功能是什么,因为你已经有了那个酒吧,你没有碰它,你已经拥有了,所以绝对,主张,除以功能分解或之前的那个词,功能分解,你把你的程序分成不同的功能,他们每个人都处于不同的状态,C文件。
然后你不需要重新编译所有这些,很酷,好的,我需要走近一点因为我的数字。
好的,我们开始吧,有什么优点,我想我已经提到了其中一些事情,让我确保这里有很多东西要读,只要确保你涵盖了所有这些,合理的编译时间,现在,有一种东西叫做 make 文件。
并且 make 文件确实很好地告诉你,您所有文件的依赖项是什么,所以如果你触摸这个特定的可能会说,迷你图书馆不是住的哦,但你在食物中使用的小东西,比如说一个助手,谁知道谁需要那个。
你的 make 文件会知道,如果我换一个你 Foo 的迷你帮手,Foo 用户,也许还有 bar 用户,但其他的比如浴场和巴珀利不使用,我的 make 文件会知道,哦,如果我接触这个图书馆。
那么只有 Foo 和 bar 需要重新编译,所以你的make文件,非常高兴能够告诉您是否使用,作为一种帮助者,哪一个,点C源代码需要重新编译,以及如何自动执行只需说 make。
你只是说 make make,如果你学会了如何正确地进行试验,只是说让,然后自动将其构建在一起,这太好了,我们讨论过的运行时性能,这就是我们这样做的原因,运行时性能将进行编译,语言总是更快。
现在你说但是等等,你说的是使用真正重型设备的人吗,Python 中的科学计算,是的,你知道为什么,因为Python,当我们了解 Spark 时我们会看到这一点,可以驱动某个数据中心的一百万台机器。
所以这真的很酷,驾驶它们要容易得多,作为翻译演奏,突然间,一百万台机器醒来或运行一些,火花命令,确实如此,这真的很酷而且很强大,火花可以打电话,带有 Cython 的 C 低级库,所以如果你带进来。
斯蒂通和火花,你不仅得到了好处,低水平一些,真正适用于硬件的重型 C 库,该特定硬件适用于,但它被这些控制得很好,轻量级脚本语言,例如 Python,所以这实际上是一个不错的。
我们喜欢用 Python 作为数据科学的一种方式,那是因为你在这儿吗,如果你真的需要困难,真实的性能代码,无论如何,它是用 C 编写的,Python 调用它,所以你实际上可以在C中调用直接库。
来自 Python 非常酷的东西,所以我们喜欢合辑,我们可以与,一种我们两者都做的中间立场,生活在Python中,但实际上从 C 中获得了一些性能,现在,我们谈到了这样一个事实。
编译语言是特定于体系结构的,取决于,架构类型,也取决于库,改变的库,你还必须重新编译它,因为图书馆已经改变了,生活已经改变,神话是某种建筑,x86 您听说过风险 5,我们要看看这门课,和操作系统。
那些有图书馆,所以所有这些都被锁定,和依赖的,X 电缆必须重建,各种建筑,这称为移植代码,所以,C,是不可移植的代码,通常你必须确保你哦,在那台机器上我这样做并制作文件。
和configure这是一个Unix命令可以帮助你知道,好吧,这台机器有这些东西,这台机器的整数这个wad或这个wad,我们会知道并能够帮助您,但通常,如果你正在做真正低级的事情,真正的表演很难得到。
很难移植你的代码,你必须确保你知道,不同的,您最终将与之合作的建筑师,有人说嘿我有新的建筑,好吧,我需要知道如何获取我的代码,并让它与你的一起工作,因为你也有一些奇怪的事情。
所以编写可移植的代码真的很困难,你当然不能只运行一个可执行文件,可执行文件对于该架构来说有很多,好的,所以移植就是这个词,移植代码并不是一个简单的过程,取决于如何,架构不同的是,来自你正在处理的那个。
这样做的部分缺点是有一个变化,编译重复,更改编译,运行周期是您为开发权利所做的周期,让我更改一些代码,让我编译它等待等待等待然后运行它,所以你打印 1 ah 1,我的打印语句是错误的。
就像那是那么微不足道,但不,我必须经过编译阶段才能成为,能够拥有可执行的礼物,所以如果你这种人喜欢做,更改一行,然后看看是什么样子,这是一个缓慢的循环而且很烦人,所以无赖再次成为你的朋友,只能,地狱。
顺便说一句,这是一个很酷的功能,他们实际上是并行制作的,因为,你记得食物和酒吧是独立的,为什么它们不能并行,你实际上可以通过这个,并行计算,这真的很酷,该链接是连续的权利,它们全部合并成一个可执行文件。
这样你就可以获得最高的好处,但在奥姆达尔定律中你看到了,你的串行部分减慢了你的速度,所以猜猜瓶颈是什么,就像所有的水都想装进瓶子里一样,但有一个脖子可以做到,铰接的,几乎就像合并到。
20 条泳道上曾经拍摄过的姿势,海湾大桥有20条车道,但你要并入五号桥。
这就是所谓的瓶颈,关于多兹法,好的,这是链接阶段,好吧,所以我们之前的图片有所改变,但如果你有一件,这介绍了另一件作品,我之前提到过这很有趣,称为 C 预处理器或 CPP,我有食物。
C语言我通过C预处理器,我得到了这个有趣的实时文件,然后编译然后处理它,所以这是预处理之前的一个步骤,我预处理C,你为什么这么做,因为你可以在中引入非常酷的指令,这是C语言中的。
C 预处理器知道如何处理,例如,您可以注释掉整段代码,通过说英镑,如果定义一些变量,然后英镑,结束如果哪个是,这个变量被设置为正确的值,这整个代码甚至不存在甚至从未见过,所以这实际上很有趣。
这就是人们经常编写代码的方式,如果 def on,便士的架构说英镑,英特尔有这个库,然后运行这种特殊的东西,否则这个图书馆是新的特别的东西,所以能够拥有实际上很酷。
这些磅 if def 事物之间的可移植代码,CPP 命令以井号开头,例如冲击包括,你的声明中的第一行是令人震惊的包括,上面说去抓取该文件并逐字逐句地进行,将其直接放入您的代码中,你会得到一段更大的代码。
但无形中,就像你不知道它得到了它一样,但刚刚添加到其中,非常酷,所以文件 h 用于您自己的本地,dot H 文件或头文件 dot h 传感器头,或者,库的尖括号,然后它就会知道在哪里可以找到该库文件。
所以标准 I o 点 标准 Lymp,H 他们不在你的目录中,它们位于系统知道的目录中,你可以在命令行标志上指定,它可以引入一些代码,磅求 pi,当你在代码中看到 pi 的时候,这很酷,它被数字取代。
太酷了,无需说明变量的类型的作用,我们做类型看到的是类型语言没有,它是 INT 还是 double 或 float 否,就像字面上的 pi,这两个大写字母将替换为该数字,并将它们放在括号中。
如果结束如果我谈到那确实有条件工作,如果你真的想看看会发生什么,你可以使用 save temps 实际上拥有 GCC,说出所有临时文件的结果。
通常人们会忽略它们,但如果你愿意的话你实际上可以看到它们,这是最酷的宏,你想要快速做某事,人们通常不编写函数,他们编写宏并扩展宏,所以请记住这只是文本替换,例如,这是 min 函数。
X 和 y 的最小值,X 小于 y,问号,顺便说一句,这是一个内联 if else,如果你以前见过它,问号冒号,所以这里,我将把光标移动到缩放中的人可以看到的位置。
所以这是 X 小于 y 那么 x 否则 y,并注意到它们周围都有括号,现在这部分是因为,你要确保事情会这样发生,那些表情出来了,如果你可能有,通过在它们周围加上括号,你总是确保他们会做,通过他们自己。
这几乎就像添加一个,表达式中额外的括号,只要确保,首先完成此操作,然后再完成此操作,你不想有这样的表达,冒号或问号结束,没有优先权,然后表达式可能是错误的,所以只需在你的,宏如果你决定这样做。
这是一个有用的东西,顺便一提,你还必须知道宏是文本替换,所以Z是个傻瓜,会有一些副作用,比如 print hello,它不像函数调用,你得到实际的,你称它为实际参数值,然后将值放入函数中。
这就是 61a 中函数调用的工作方式,正确的,你得到你放入的参数值,但这只是文本替换,所以如果Fu有副作用,你认为你在想哦它会打电话给Fu,有副作用,它将打印一次 Fu,然后 Fu 的结果值。
被调用并与,W 然后你得到的下一个是这两个中较小的一个,如果你接到这个电话则不然,首先要测试它是否更小,当它发生在更大的时候,它会再次调用它,因为它正在替换它,两次所以想想吧,如果您使用宏。
您通常可以拥有,如果您有副作用,Foo 接听了两次电话,在那种情况下,当 Foo 碰巧是更大的家伙时,因为你没有获得价值,你只是将代码放入,如果你输入这个底部的家伙,Fu 最终成为两个中较大的一个。
的W,当它询问其价值时,谁被叫到这里,当Fu被叫到这里时,实际上得到了值,那是两倍。
两种食物与一种食物的比较,所以想一想,如果你有那个,C 与 Java 需要通过大量幻灯片来了解。
让我们来比较一下这张大旧桌子,我将阅读它并突出显示,这其中的关键部分,正如你所知,Java 是,一个,面向对象语言,就在那时 OOP 发生了一次大的运动,丽莎和我要去 6C,就像每次会议一样。
我们应该先做对象吗,最后的对象都是大约 10 个,15 年,一切都与物体有关,这就是他们想要谈论的一切,这就是新想法,由于所有原因,optidority 计划有其好处,你可以把它包在一起。
封装所有你想到的东西,很棒,我们也喜欢他们不说这是一种不好的语言,这是一种不同的思考方式,c 是一个,面向功能的语言,并不是说它是一种函数式语言,和一种像计划一样的感觉,或 ml1 你正在考虑的地方。
有那些副作用,C有很多副作用,它只是基于这些功能,但不是纯函数,可能有副作用的函数,再次使用 GCC hello dot C 进行编译,破折号你好,这样你就没有数据了。
在这里你将调用 Java C hello dot Java,进于出,或者你好这里将在你的可执行文件中,你会说 Java 你好,所以对于很多 cprg 来说这实际上是不同的。
为什么我前面一定要跑Java哦,因为这是 Java 依赖于绑定的代码,现在能够解释并使其发挥作用,你好,这个世界都有点丑陋,相比,Python 打印 hello,打印你好世界。
这是你的第一个 Python 程序,你已经进入了 tentedio 库,所以知道 printf 是,缅因州将有回报,整数表示它将有一个整数返回值,董事会会说我没有异议,打印高反斜杠,你之前就知道。
这里有打印行,你不需要反斜杠,因为该行,feed 是打印行的一部分,这就是与这里打印的不同之处,你必须有反斜杠才能使其工作,你必须返回 0 0,意味着大家都竖起大拇指,一切正常,没问题。
所以返回 0 意味着一切都很好,不要这样做,一切都很好,不用担心,如果你返回除 0 以外的任何内容,那就是错误代码,然后你可以在命令行上看到,反正,工作有点笨拙。
你看到所有这些代码只是为了说“Hello World”,C 稍微不那么笨拙,但仍然,有很多事情要做,再次,最重要的是这里的底线,你们中有人在关注什么吗,就是那个,新分配,并重新分配,当你不再提及它们时。
所以根本不用担心,自动垃圾收集,您将在本课程中真正了解到,为你做了,永远不必担心记忆力,工作就是聪明,看到这一切都是你自己做的,最大的区别就是内存管理,通过一种叫做马利克和免费的东西。
好的,第二个是一种更简单的语法,C 有这个反斜杠,星号,然后以星号斜杠结尾,这样做的担忧是,显然如果你遇到过这个麻烦,如果你有一条评论要放在中间,你说让我把整件事评论出来,出色地。
问题是现在你不能有嵌套的星斜线,你必须喜欢取消注释中间的一个,评论一下大的,如果你把这个带回来,如果你喜欢,记得再把中间的注释掉,这样,你不能在那里嵌套评论组的麻烦,Java 既有斜杠也有斜杠。
让我们转到该行的末尾,如果你有一个恒定的磅要找到,我们之前讨论过只进行文本替换,或常量说嘿,嘿大家,这永远不应该改变,这里的const你说的是Java中的final,有预处理器吗。
我刚才讲了那个叫CPP,可变装饰,必须发生在块的开头,Java 必须在您使用它之前发生,所以这实际上限制较少,变量命名只是,这是,哈梅尔案我们讨论过,你在 Java 中见过的一些方块。
这里我们像 Python 一样使用下划线,访问图书馆,我们将包括在内,您在工作现场导入。
几乎相同,运营商这很酷,这基本上就是这张幻灯片,向您展示 Java 和 C 有多接近,这是一个问题,是的,很好,告诉我你的名字,钱德里夫 好。
好吧,让我们采取,一个好问题,问题是定义缺点之间的任何表现,缺点就像创建一个变量而不是,定义的更改将是文本替换,所以这取决于,如果你有一些复杂的函数,比如宏,你可以,正如我之前提到的。
pound 定义了一个宏,然后你就会有,因为你不会进行函数调用,你说的功能时间,我们将会看到,函数调用中有一些时间,所以这实际上是,为什么真正表现出色的人,正确的宏而不是函数调用,所以这与变量无关。
但更多关于函数调用,这就是我们真正看到的区别,好问题,这些都是所有的相似之处,几乎一切都一样,看算术作业,增加赋值,如加等于,这意味着它就像加等于 1,这意味着 a 等于 a 加 1,按位逻辑。
你会更多地看到这个,今天晚些时候,或者今天晚些时候,这个学期稍后一点,移位位为什么要移位布尔逻辑,你以前可能见过这个,这与您见过的质量测试非常相似,分组,顺序关系 自增自减 A++。
表示 a plus 等于 1 或 a 等于 a plus 1,选拔成员我们要讨论这个,这是您获得某些内容的方式,使用指针或使用结构体,去到达那些,结构体的字段,与Java不同,因为既有结构体又有指针。
所以在C语言中,你可以有一个结构,或指向结构的指针,你可能会使用,您使用点作为结构,和指向结构体指针的箭头,有点微妙,有点难看,正如我之前所说,问题 Mark equals 是一个内联 if。
C有更新吗,Michael 那你学过 C 的时候,1986年在高中读大学,自1986年以来一直更新,是的,1999年,它们带有 C 99 标准或 C 9 x 标准,达到那个目的,如果你没有默认得到那个。
你有破折号标准,性病等于 99,如果你打印这个,你会得到实际的标准版本,这有点酷,它会告诉你 1 9 9 9 0 1 一月 1999,这是维基百科上的参考,你得到了什么,你看,他们从 Java 中学习。
就像有些人说的,嘿 Java 有这个,为什么我们不能拥有那个,所以他们做了一些准备来看看,拥有一些从 Java 中学到的东西,人们喜欢,有点休息回来看看大家,就像隔壁的星巴克一样。
杀死一家妈妈和流行咖啡店,来吧,我们现在有赠款并且,表达了他们拥有的所有东西或其他什么,这就是C,当时正在尝试制作C,对于Java程序员来说更刺激,所以声明在 for 循环中,意味着你不必在顶部声明。
你放在 for 循环之前,我喜欢圣地亚哥,这很酷,双斜杠用于注释行,是的,最后就像哦,太棒了,这是一个很大的一个 这是一个很大的一个,变长非全局数组,我记得有一天,任何,如果你做了一个数组。
你必须在编译时知道这一点,就像不,事情不是这样的,你实际上可以,动态知道数组有多大,嘿用户你想要多大的数组 10,好的,10 个数组,你以前不能这么做,在用户之前你已经锁定了 10 个代码,参与其中。
所以现在这对程序员来说是一件大事,我们有明确的整数类型,所以现在我们真的拥有了这真的很酷,我现在可以说正好 64 位宽或 32 的整数,这是一个非常强大的东西,我想强烈倡导这一点。
现在我们有了布尔逻辑定义,呜所以就像,轮到,千年,这就是我们所拥有的,19 更新了吗 是的 有 woo,顺便说一下,我们现在有这个叫做 C11 和 C18,实际上17年就出来了。
但18号是他们最终发布的时候,所以它实际上在这里被称为C17所以2017,10 但实际上是 c18,因为他们修复了最后的一些错误,最终延续到 2018 年,这是两个新的新定义,顺便说一下,这是默认的。
我的 Mac 是新电脑吗,如果我输入 print 该行,我会得到 c18 或 c17,这很酷,这是 c11 与 Stu San 转移的一些参考资料,我们现在得到了多线程,等待计算机有多个核心。
最后将其添加到系统中是一件大事,Unicode 现在我们稍微谈谈 Unicode,现在我们有了 Unicode 支持,get s 一直是所有安全人员的祸根,我们出去吧。
get s 你甚至不能再使用 get s,所以离开那里,到你得到字符串的地方,那很好,输入您可以根据类型分派的通用宏,哦,宏可能知道它的类型,太酷了。
复数值,哦复数,以及其他一些很酷的东西,你可以阅读有关,好吧,这很有趣,所以,main 是顶层,每个 C 程序中都有的函数,通常当中间没有空隙时,你有这两件事,进入RGC和车星,RGV支架哦什么是一口。
这是什么意思,ARCC 告诉你参数的数量,好的,我们将包含字符串的数量,在命令行上,用空格分隔,顺便说一句,可执行文件算作一个,每个参数加 1,所以如果我输入的是 Unix 提示符,我输入排序。
我的文件,好的,弧C为2,因为你数为零,所以 argv 是一个指向包含这些的数组的指针,字符串,好的,所以这意味着 argv,零的,是排序你得到函数的名称,ARG v of 1 是我的文件。
就像 Python 一样,它变为 0 和 1,但不是 2,好的,所以如果你得到 2 你就可以得到 0 和 1 的访问权限,就像Python一样,你到底为什么想要,函数名称中的内容。
进入RGV你不知道你是谁吗,你做到了,你不知道你是谁吗,为什么我们需要 RGV 为 0,举个例子说明为什么你需要 RGV 为 0,在你的C代码中,为什么你实际上可能会使用它,我经常问这个问题。
我已经检查过这个课程,大约15次什么的,这很难,人们通常没有猜测,或者这个给了我一个,因为它很勇敢给我一个猜测,你为什么关心,RGB 0 是函数本身的名称,你的手也是 你的手,告诉我你的名字。
你叫什么名字,亚当亚当走,不是当前目录而是当前名称,你自己以及为什么你需要你自己的名字,哦耶,你能告诉我尽可能接近接近吗,非常接近,让我给你起个名字,马修去,哦,那很有意思。
也许你可以像系统调用一样调用,就是这样,我从来没想过那个,这是个好主意,你可以通过系统调用来调用自己,有趣的是我在想什么,但这很有趣我会接受,在使用中,类似字符串的错误,这是一个错误 这是你如何称呼我。
你会说用法字符串,然后你像这样打印出来,你想向他们展示如何正确称呼自己,但假设有人改名了,排序为我排序,那么你会想说,好吧,我是按照排序的名字,所以我要说的是,这就是你如何使用我的方式,否。
因为用户将排序重命名为我的排序,所以你会说这就是你如何利用我,Unix 百分比空间,argv 为 0 我的排序,文件 文件 文件参数 这是我的使用方法,所以为了打印出如何使用我,所以我们称使用字符串为。
好吧,有道理,所以,argv 为 0 在打印输出时很有用。
用法字符串,好吧,我们做得很好。
尝试在 15 分钟内完成剩余部分,好吧,我想我可以让这一切发生,好的,请参阅会员,这都是大局的内容,再说一遍,这不是你被评估的事情,但当您想到时我们会帮助您,你如何处理场景,好吧,到底是真是假。
100年前的计划很好,唯一错误的是英镑,如果其他一切都是真的,这里的原则相同,C 语言中唯一错误的,0 不太酷,困难时期,实际上很聪明,就像空列表一样,这是错误的,空字符串是错误的,不,c,零。
或空指针,你不知道任何指示,否则我会看到,所以空指针也是0,所以这两件事都是假的,其他一切都是真的,现在,我会说标准 v H 引入了金条类型,我鼓励你使用这些,在这种情况下 false 也会是。
那里为零。
好的,所以这里有一些变量,你可能在 Java 中看到过很多这样的情况,让我们看一下其中的一些,首先类型不能改变,一旦你声明 INT var 等于 2,var 是该程序生命周期的 INT,或该街区的寿命。
它可以是一个局部变量,对于不同的块,这种情况可能不同,INT 是整数,所以整数,这些是有符号的数字,数字选择补码,即 INTS,未签名,因此未签名的 INTS,我们将看看我们如何同时拥有这两者,INT。
类型指定,我可以指定 INT 和 u INT 的宽度,我们将在下一张幻灯片中看到,float 是这样的浮点数,小数,双打的空间更大,我们可以学习,关于浮点数中的浮点数和双精度数,演讲,字符 单个字符。
肺和长肺,我不想谈论他们,因为我想,你能够使用,INT 和 U INT,不是这些长肺,你需要知道它们是什么,因为你会看到这样的代码,在它们变得丑陋之前,因为它们会有所不同,取决于什么,你所在的系统。
所以就像那有多宽,我自己也不知道什么系统,太丑了所以我什至不知道你读了什么,你可以阅读它,但我几乎不想使用它,所以不用担心,读这篇文章,如果您看到其他人编写的代码,有长还是长。
长你应该使用 INT 并且你 INT。
所以这就是我坐在这里的,好的,INT 应该是整数类型,目标处理器工作效率最高,这就是我们选择 INT 的原因,好吧,但是在那时他们有 16 位机器,字长为 16 位,所以INTS是16,或 2 个字节。
长期以来几乎所有事件现在都是 4 字节,32 位,现在更多内部 64 位,所以,这又是保证,以及长的尺寸,long 大于 long 的大小,大于等于,大于等于 INT 的大小,同等大小的短的喜欢这么丑。
如此丑陋的糟糕设计,糟糕的设计,正确的设计始终表明它是什么,他们应该从那开始,让我们从它是什么开始吧,之后你就可以使用它了,好的,所以这将称为小于的短裤,丑陋的INTS,所以我们鼓励您使用 INT,n。
其中结尾是 8 16 32 64,或者你暗示这就是你想要使用的,好的。
所以专注于此,我们提到过你可以将 pi 定义为一个数字,你可以这么做,其中谈到常数,你做常量的方式你只需将它们锁定,黄金比例 1 6 2 和 8,一周中的天数是 7 定律是,光速定律,好吧。
光速定律加倍,好的,这是一件很酷的事情,枚举枚举,它说这将是其中之一,所以这些真的很好,我鼓励你使用枚举,如果你拿着这盏灯,我就会做一盏灯,这个灯有 3 种不同的颜色,红绿蓝,使用枚举。
不要对某些数字使用 INT 好吧,其中一个是红色的,不,让枚举为您完成工作,顺便说一下还有PS,你应该注意到这是在线下方,当你这样做时违反抽象,红色得到 0 绿色得到 1 蓝色得到 2。
但你应该知道因为,你应该只使用红色、绿色和蓝色,你永远不应该知道实际数字是多少,再次知道这是违反抽象的。
以东很棒,edoms 正在寻找非常好的阅读代码,读取可读代码,函数有类型,就像 Java 函数有类型一样,您需要声明您计划的数据类型,提前从函数返回,返回必须是任何 C 变量类型。
但它被放置在函数名称的左侧,或者你可以有一个函数,其工作是,只会有副作用,在这种情况下,你说它是一个 void 它没有返回类型,他的工作是打印一些东西,它只是有一个空白,甚至打印一些东西。
可能有一个返回类型,因为你可能会说,打印成功与否,但如果你没有返回类型,你可以说 void 也没关系,需要申报,传递给函数的值的类型,所以函数需要知道什么类型,被传入,并将从这些函数返回。
所以 INT 人数将返回 A3,浮动美元和美分返回这个,你需要提前告诉那是什么,为什么我们要这样做 为什么有类型,我的意思是Python作为一个方案要容易得多,为什么我们有类型语言,顺便说一句。
有些人喜欢,有些人喜欢,你怎么能有一种未输入的语言,事实上,我们 Synxee 中的许多人都在思考,适合新初学者的新语言,我们中的许多人都提倡,输入免费语言,例如 Python 和 snap。
和计划和计划和从头开始,人们让我们离开营地或争论,类型对于初学者来说非常重要,你能看出论据是什么吗,types 给我一个类型的参数,告诉我你的名字,告诉我你的名字,对我们来说是的,更难改正错误。
这意味着编译器会说嘿等等,这个功能正在发挥作用,但你正在一步步进入 INT,并且你确定你想这样做,所以编译器会有所帮助,所以这些人在争论,初学者需要这种支持,否则,比如为什么会出现错误。
因为你无法承受不同程度的伤害,你不能只是将它们转移过来并使其发挥作用,除非你施放它们,你可以这样做,但投射它,但他们不知道,他们没有铸造它,无需选角,我确定您想这样做,这是一个字符,我应该将其视为整数。
好吧,也许你会这样做,因为你知道自己在做什么,但可能不适合初学者,所以他们争论类型可以帮助初学者,我觉得他们很烦人,我发现你的代码确实适用于一些,小而美丽,像 Python 一样简洁,已加载。
您会想到我认为下面的类型,你应该是的抽象层,作为你的初学者,所以我不太喜欢它,但我听说过其他教育工作者,谁还关心非专业和专业,初学者程序员空间,谁非常强烈非常大声。
并大声争论四种类型,structs structs 是最重要的,让我再暂停一下,结构是构建抽象数据类型的方式,抽象数据类型的整体思想,你创造自己的类型,哦,这是一个高度,这可能有内部像你知道的。
高度可能有英尺和英寸,这是一个人的身高,以英制单位,你会做,在 OOP 中,您可以将类高度设置为右侧两个字段,英尺一英寸,好吧,你创造一个新的高度,创造新高度,我可以添加高度,所有那些。
您在中创建的抽象数据类型的想法,面向对象世界,你在C中这样做,你不知道,就像封装一样,你把它全部包裹起来,与方法和局部变量一起,这就是程序中的对象如此酷的原因,这里更明确,所以我们开始吧。
我可以做一个字节,只有一个类型,所以第一件事是 type def,type def 基本上可以让你说,我可以做新类型的工作,我将在这里用绿色将一个字节称为全大写,现在我只能说字节 b1。
b1 实际上是 u 和 8,正确的,u 代表什么意思 unsigned apit Wide value,但我只能称它们为“咬”,说咬咬咬,我可以在周围的地方使用咬,我喜欢,或哒哒哒,这就是你做的,A。
抽象类型,你说类型 def 结构,我将存储为您所看到的两个字段,记录的两个字段长度(以秒为单位)和年份,那是一首歌,所以我现在创建了一个新的数据类型,我需要做ADT,我实际上做了一个类型。
我把它做成了歌,我里面有两个字段,记录的年份长度和秒数,现在我们可以顺便说一下 type dev struct,这是一个结构并说出歌曲,就像绿色的东西这首歌是我们的类型,我只能说看,歌曲歌曲一。
这腾出了空间,所以通过说歌,为整数腾出空间的第一首歌,一个布兰顿秒和另一个整数,就像通过歌曲将这两件事合二为一,这有点酷,如何访问某些字段,好吧,因为歌曲是一个结构而不是指向它的指针,我将使用点符号。
所以你以前在工作中见过这个,歌场 歌场 还好,我有两首歌,每一首歌,有一个单独的字段,太酷了。
所以点表示法,你以前在工作和其他事情上见过,所以这并不陌生,好的,控制流程与Java基本相同,这再次表明Java的遗产Java来自C,所有 Java 程序员可能都是,当时的C程序员。
学习Java基本上就是拿着K和R在这里,我们怎样才能编写一种新语言,OOP 更好,比 C 但主要是,将种子人带入我们的家庭,所以,否则的话这是关键,你想要这些大括号,你不必。
但如果你没有的话就会出现很多错误,所以如果你使用浏览器总是,最遗憾的是大多数编辑现在都会把W说如果,并输入打开卷曲,它将看起来打开关闭大括号,把你的 if 部分放在那里,不,如果不需要的话。
它只会执行下一行不执行的操作,但我告诉你,总是进行色彩练习来避免错误,你也可以用 L 来搭配,并始终进行色彩练习,以避免出现一些错误,while 是一样的 do 是一样的。
do 语句 while 表达式。
好的,这是一个测试,然后执行此后的语句,for 循环是相同的,用于初始化检查和更新语句,switch 语句在这里是相同的,你必须有一个默认值,他们会坚持到底,除非这些 switch 语句中有中断。
这可能很有用,但也可能有问题,所以确保你在这些事情之间有一个休息时间,否则它会贯穿,当你学习汇编程序时你就会看到,你就会明白为什么会这样,你会看到准确的汇编编码映射,以及为什么它会滚动到下一个案例状态。
除非你能摆脱这个困境,这真的很聪明,另见 转到,你想写出世界上最糟糕的代码,写去的,尽可能避免去选择,我有点落后了,如果我有时间的话,让我在最后回答问题,但C已经选择树来避开它们。
除非您知道自己在做什么,否则不要使用它们,没有其他办法解决这个问题,即使这样和我们中的一个人谈谈。
它可能会找到解决办法,就在那里,你的第一个 C 程序,让我们花一些时间看一下。
我有 5 分钟左右的时间,快完成了,在这里说 1 2 让我看看一二三。
是的,快完成了,好的,我们开始吧,所以让我们放大,包括两个库,一个是数学库,main 不会有任何参数,所以我会在那里有一个空白,我声明 2 为整数角度,双角半径 pi 和值,这是一次声明多个变量的方法。
printf 计算机表的符号函数,圆周率,顺便说一句,这就是所有看起来像 Java 的东西,pi 等于 4 乘以 tan 弧度 1 的正切,好的,打印 F 值 pi 百分比 f,逗号 pi。
被填充在格式字段中,F 是一个流,这个选项卡使它看起来很漂亮,角度被重置,当角度小于等于 360 时,带有这个表达式的角度收音机,角度弧度的重要符号,在这里打印两件事,3天百分比,百分比 F 取第一个。
将其放入 3D 中,将其格式化为 3D,这是具有三位和值的整数,将其放入流程中,然后你的角度加等于10,完成和你得到什么,漂亮的餐桌科学,太酷了。
所以还不错,看起来也像Java,可变装饰我想我们之前讨论过,类似于Java,它们必须在使用之前出现,块的突然开始也是如此,这是一个很大的东西,我为你把它变成了黄色,变量在使用前必须初始化,如果没有。
它会存放垃圾,所以如果我说,啊,让我们看看这里,正确的 INT a 等于 0,b 等于 10,NCC 中的错误,我不能只做一个 INT,但在 C 99 中我可以,只是如果你担心的话。
你使用更新的 C 它看起来就像 Java,我现在在 4 循环中完成了这一点,它可以工作,但要知道如果我说进入X,什么是 X 大家 1 2 3 垃圾,X 未初始化,与 Java 不同。
Java 会进行初始化,因为那是 Java 的本质之一,Java 说,嘿,C 程序员的问题之一是,当你,创建一个变量并忘记初始化,然后使用它,印刷或其他东西,出问题了,是的,我们为什么不直接初始化它。
这是一个整数制造商 0,这是一个双重制造商 0,你只需将这些东西初始化为逻辑东西,没有C说你知道你在做什么,我们会给你绳子。
如果你想尝试的话你就得上吊自杀,做一些东西,很多 C 有未定义的行为,就像那样就像等等我向这个东西祈祷,为什么突然之间数字就大不相同了,我会把它调高,因为它是垃圾,垃圾意味着之前的内存位置是什么。
所以那只是垃圾,这真的很难,C 有未定义的行为,你几乎从来没有另一种语言,总是将事物初始化为标准事物,这里太疯狂了,因为所有的垃圾桶,围绕它生活可以围绕事物移动,我们经常称两种不同类型的错误,1。
重复所有的正常错误称为钻孔错误,很难的错误,像海森堡测不准原理一样重现,被称为 heisten bug,只是一种有趣的不同思考方式,顺便一提,如果你看看这个页面和维基百科,就会有类似的内容。
其他四种错误,就像曼达尔虫子。
对于像分形这样的东西,那种事快完成了,大结论,你所看到的做什么,利用硬件,有哪些对您来说不同的关键想法,指针擦除,记住你的管理你必须管理你自己,复杂的编译和链接以生成可执行文件。
优点或速度缺点会在编译周期减慢,最喜欢 Java,除了 2 分钟 2 分钟 2 分钟,2分钟,说大多数都像Java,除了4,不,哎呀,你必须自己做,80 个预告片定义了您的结构,零且无或假。
其他一切都是真理,CNN 有金条类型,使用 INT 和 u INT 表示整数,当你有这些垃圾时,你就会得到无聊的虫子,随机的可重复或海森错误,就像正在发生的事情一样。
Heisen bug 因为你很高兴拥有一些,在那里初始化变量,太感谢了,丽莎周三参加种子比赛。