文章分类 -  极客时间

上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 45 下一页
摘要:过去两讲,我为你讲解了流水线设计CPU所需要的基本概念。接下来,我们一起来看看,要想通过流水线设计来提升CPU的吞吐率,我们需要冒哪些风险。 任何一本讲解CPU的流水线设计的教科书,都会提到流水线设计需要解决的三大冒险,分别是结构冒险(Structural Hazard)、数据冒险(Data Haz 阅读全文
posted @ 2023-01-03 10:31 易先讯 阅读(20) 评论(0) 推荐(0)
摘要:上一讲,我给你初步介绍了CPU的流水线技术。乍看起来,流水线技术是一个提升性能的灵丹妙药。它通过把一条指令的操作切分成更细的多个步骤,可以避免CPU“浪费”。每一个细分的流水线步骤都很简单,所以我们的单个时钟周期的时间就可以设得更短。这也变相地让CPU的主频提升得很快。 这一系列的优点,也引出了现代 阅读全文
posted @ 2023-01-03 10:30 易先讯 阅读(3) 评论(0) 推荐(0)
摘要:前面我们用了三讲,用一个个的电路组合,制作出了一个完整功能的CPU。这里面一下子给你引入了三个“周期”的概念,分别是指令周期、机器周期(或者CPU周期)以及时钟周期。 你可能会有点摸不着头脑了,为什么小小一个CPU,有那么多的周期(Cycle)呢?我们在专栏一开始,不是把CPU的性能定义得非常清楚了 阅读全文
posted @ 2023-01-03 10:30 易先讯 阅读(26) 评论(0) 推荐(0)
摘要:上一讲,我们讲解了时钟信号是怎么实现的,以及怎么利用这个时钟信号,来控制数据的读写,可以使得我们能把需要的数据“存储”下来。那么,这一讲,我们要让计算机“自动”跑起来。 通过一个时钟信号,我们可以实现计数器,这个会成为我们的PC寄存器。然后,我们还需要一个能够帮我们在内存里面寻找指定数据地址的译码器 阅读全文
posted @ 2023-01-03 10:30 易先讯 阅读(10) 评论(0) 推荐(0)
摘要:上一讲,我们看到,要能够实现一个完整的CPU功能,除了加法器这样的电路之外,我们还需要实现其他功能的电路。其中有一些电路,和我们实现过的加法器一样,只需要给定输入,就能得到固定的输出。这样的电路,我们称之为组合逻辑电路(Combinational Logic Circuit)。 但是,光有组合逻辑电 阅读全文
posted @ 2023-01-03 10:29 易先讯 阅读(11) 评论(0) 推荐(0)
摘要:前面几讲里,我从两个不同的部分为你讲解了CPU的功能。 在“指令”部分,我为你讲解了计算机的“指令”是怎么运行的,也就是我们撰写的代码,是怎么变成一条条的机器能够理解的指令的,以及是按照什么样的顺序运行的。 在“计算”部分,我为你讲解了计算机的“计算”部分是怎么执行的,数据的二进制表示是怎么样的,我 阅读全文
posted @ 2023-01-03 10:28 易先讯 阅读(25) 评论(0) 推荐(0)
摘要:上一讲,我们讲了用“浮点数”这样的数据形式,来表示一个不能确定大小的数据范围。浮点数可以大到3.40×10^{38}3.40×1038,也可以小到1.17×10^{-38}1.17×10−38这样的数值。同时,我们也发现,其实我们平时写的0.1、0.2并不是精确的数值,只是一个近似值。只有0.5这样 阅读全文
posted @ 2023-01-03 10:28 易先讯 阅读(12) 评论(0) 推荐(0)
摘要:在我们日常的程序开发中,不只会用到整数。更多情况下,我们用到的都是实数。比如,我们开发一个电商App,商品的价格常常会是9块9;再比如,现在流行的深度学习算法,对应的机器学习里的模型里的各个权重也都是1.23这样的数。可以说,在实际的应用过程中,这些有零有整的实数,是和整数同样常用的数据类型,我们也 阅读全文
posted @ 2023-01-03 10:28 易先讯 阅读(8) 评论(0) 推荐(0)
摘要:和学习小学数学一样,学完了加法之后,我们自然而然就要来学习乘法。既然是退回到小学,我们就把问题搞得简单一点,先来看两个4位数的乘法。这里的4位数,当然还是一个二进制数。我们是人类而不是电路,自然还是用列竖式的方式来进行计算。 十进制中的13乘以9,计算的结果应该是117。我们通过转换成二进制,然后列 阅读全文
posted @ 2023-01-03 10:27 易先讯 阅读(19) 评论(0) 推荐(0)
摘要:上一讲,我们看到了如何通过电路,在计算机硬件层面设计最基本的单元,门电路。我给你看的门电路非常简单,只能做简单的 “与(AND)”“或(OR)”“NOT(非)”和“异或(XOR)”,这样最基本的单比特逻辑运算。下面这些门电路的标识,你需要非常熟悉,后续的电路都是由这些门电路组合起来的。 这些基本的门 阅读全文
posted @ 2023-01-03 10:27 易先讯 阅读(9) 评论(0) 推荐(0)
摘要:我们前面讲过机器指令,你应该知道,所有最终执行的程序其实都是使用“0”和“1”这样的二进制代码来表示的。上一讲里,我也向你展示了,对应的整数和字符串,其实也是用“0”和“1”这样的二进制代码来表示的。 那么你可能要问了,我知道了这个有什么用呢?毕竟我们人用纸和笔来做运算,都是用十进制,直接用十进制和 阅读全文
posted @ 2023-01-03 10:27 易先讯 阅读(26) 评论(0) 推荐(0)
摘要:上算法和数据结构课的时候,老师们都会和你说,程序 = 算法 + 数据结构。如果对应到组成原理或者说硬件层面,算法就是我们前面讲的各种计算机指令,数据结构就对应我们接下来要讲的二进制数据。 众所周知,现代计算机都是用0和1组成的二进制,来表示所有的信息。前面几讲的程序指令用到的机器码,也是使用二进制表 阅读全文
posted @ 2023-01-03 10:26 易先讯 阅读(47) 评论(0) 推荐(0)
摘要:我们之前讲过,程序的链接,是把对应的不同文件内的代码段,合并到一起,成为最后的可执行文件。这个链接的方式,让我们在写代码的时候做到了“复用”。同样的功能代码只要写一次,然后提供给很多不同的程序进行链接就行了。 这么说来,“链接”其实有点儿像我们日常生活中的标准化、模块化生产。我们有一个可以生产标准螺 阅读全文
posted @ 2023-01-03 10:26 易先讯 阅读(8) 评论(0) 推荐(0)
摘要:计算机这个行业的历史上有过很多成功的预言,最著名的自然是“摩尔定律”。当然免不了的也有很多“失败”的预测,其中一个最著名的就是,比尔·盖茨在上世纪80年代说的“640K ought to be enough for anyone”,也就是“640K内存对哪个人来说都够用了”。 那个年代,微软开发的还 阅读全文
posted @ 2023-01-03 10:26 易先讯 阅读(6) 评论(0) 推荐(0)
摘要:过去的三节,你和我一起通过一些简单的代码,看到了我们写的程序,是怎么变成一条条计算机指令的;if…else这样的条件跳转是怎么样执行的;for/while这样的循环是怎么执行的;函数间的相互调用是怎么发生的。 我记得以前,我自己在了解完这些知识之后,产生了一个非常大的疑问。那就是,既然我们的程序最终 阅读全文
posted @ 2023-01-03 10:25 易先讯 阅读(8) 评论(0) 推荐(0)
摘要:在开发软件的过程中我们经常会遇到错误,如果你用Google搜过出错信息,那你多少应该都访问过Stack Overflow这个网站。作为全球最大的程序员问答网站,Stack Overflow的名字来自于一个常见的报错,就是栈溢出(stack overflow)。 今天,我们就从程序的函数调用开始,讲讲 阅读全文
posted @ 2023-01-03 10:25 易先讯 阅读(11) 评论(0) 推荐(0)
摘要:上一讲,我们讲解了一行代码是怎么变成计算机指令的。你平时写的程序中,肯定不只有int a = 1这样最最简单的代码或者指令。我们总是要用到if…else这样的条件判断语句、while和for这样的循环语句,还有函数或者过程调用。 对应的,CPU执行的也不只是一条指令,一般一个程序包含很多条指令。因为 阅读全文
posted @ 2023-01-03 10:24 易先讯 阅读(12) 评论(0) 推荐(0)
摘要:你在学写程序的时候,有没有想过,古老年代的计算机程序是怎么写出来的? 上大学的时候,我们系里教C语言程序设计的老师说,他们当年学写程序的时候,不像现在这样,都是用一种古老的物理设备,叫作“打孔卡(Punched Card)”。用这种设备写程序,可没法像今天这样,掏出键盘就能打字,而是要先在脑海里或者 阅读全文
posted @ 2023-01-03 10:24 易先讯 阅读(24) 评论(0) 推荐(0)
摘要:上一讲,在讲CPU的性能时,我们提到了这样一个公式: 程序的CPU执行时间 = 指令数×CPI×Clock Cycle Time 这么来看,如果要提升计算机的性能,我们可以从指令数、CPI以及CPU主频这三个地方入手。要搞定指令数或者CPI,乍一看都不太容易。于是,研发CPU的硬件工程师们,从80年 阅读全文
posted @ 2023-01-03 10:23 易先讯 阅读(35) 评论(0) 推荐(0)
摘要:“性能”这个词,不管是在日常生活还是写程序的时候,都经常被提到。比方说,买新电脑的时候,我们会说“原来的电脑性能跟不上了”;写程序的时候,我们会说,“这个程序性能需要优化一下”。那么,你有没有想过,我们常常挂在嘴边的“性能”到底指的是什么呢?我们能不能给性能下一个明确的定义,然后来进行准确的比较呢? 阅读全文
posted @ 2023-01-03 10:23 易先讯 阅读(15) 评论(0) 推荐(0)

上一页 1 ··· 34 35 36 37 38 39 40 41 42 ··· 45 下一页