计算机系统结构
图灵机:不同的视角
我们人类的自然思维方式被称为积极思维,我们的积极思维被称为积极思维 “递推”(Iterative)。
递推是人类本能的积极思维。当我们还是个孩子的时候,我们学习数字,从1、2、3 ··· 100 ··· 10000 ··· ∞,是典型的递推;这种学习过程是循序渐进的,从易到难,从小到大,从局部到整体,起点是正的;
类似地,在学习语言时,先从拼音开始,然后组词,然后简单地造句,然后用“因为……”、“既然…所以…”、“不仅…而且” 等待连接词,造成稍微复杂的句子,这种思维方式是递推,是积极的。
在计算机尚未建立的时代,人们认为问题也是积极的:[先做一些可以解决简单问题的计算机,然后不断优化,它会变得越来越复杂]。
直到 1900 年,德国数学家 希尔伯特 提出了 23 这是一个历史性的数学问题 23 数学问题是数学家对数学的思考。
在 1930 大约几年后,图灵正在思考三个问题:
- 世界上所有的数学问题都有明确的答案吗?
在数学问题中,只有一小部分是有解的。
- 若有明确答案,能否通过有限步骤的计算得到答案?
在有解的问题中,只有一部分。
- 数学问题可以在有限的步骤中计算,是否有机械计算的错觉?
有这种机械,但图灵机长期以来只存在于论文中,只是一种抽象的思维模式,可以实现自动计算,而实体 15 年后才出现... 22 图灵写了《关于可计算数及其在判断问题上的应用》,后来人们简称这篇文章为《可计算数》,TA 名为“图灵机”的数学定义。
也许你对这些问题没有看法,但你应该能够体验到不同的视角。
世界上所有的问题都不能从一个角度来解决。
与我们不同的是,计算机的积极思维被称为 “递归”(recursive),计算机自然是为大数处理而制造的,习惯于从大到小、层层分解的思维。
你也看到了,因为图灵思维的角度不同,所以计算机的积极思维也不同...从事物的极限来看..它将是一个顶端,一个小山。
把这两个视角放在人身上:
- 递推:怎样才能比他们强,在各个方面慢慢努力,小步子。
- 递归:怎么能比他们强?不完全是比他们更努力,因为这只是低层次的竞争,而是比他们更有见识和格局,更有气度。
因此,学习不是努力阅读更多的书,盲目追求阅读的速度和数量,这会让人感到低层次的勤奋和成长,这只是蛮力。思考、实践、总结和总结,否则,只是机械地重复一件事,而不是定性的增长。
目前的计算机使用图灵机[是一个可计算的理论数学模型],包括正在设计的新计算机,在解决问题的能力方面并不超过图灵机的范围。图灵机划定了今天所有计算机(包括运行人工智能程序)都能解决问题的理论极限。
记住一句话,计算的本质是:输入 + 运算 + 输出。
现在让我们来看看图灵机的数学模型是什么样子的:
- TAPE:是一排无限长的纸带,上面画着格子,格子只有两种风格,一种是里面打孔的(二进制的) 0),一个不打孔(1);从计算机的内存来看,这些格子都有同样的编号 0,1,2,… ∞。
由于纸带长度无限,纸带主要用于存储数据,所用数字都放在编号网格中。
对于数据的操作,计算机首先找到网格的地址,然后取出盒子中的数据进行处理,然后将处理后的内容放回网格中。
例如,如果有一对夫妇。丈夫向妻子解释,请她帮忙喝点茶。
茶是这样定位的:茶可以在客厅茶几的白盒子里拿给我吗? 妻子可以在客厅到茶几前把盒子扔给丈夫。
但如果这对夫妇是机器人,茶的定位就会有所不同。
茶的定位应该是这样的:茶在第一位 1 客厅,第 3 家具,第 5 能给我一个位置吗? 机器人妻子也会直接拿起这个位置的东西,不管是茶还是其他东西,只需要这个号码,但是能拿到茶的。
- HEAD:它是一个小窗口,可以沿着纸来回移动。它不仅可以检查网格是否打孔,还可以改变打孔和不打孔的状态;主要功能是读写数据。
- 状态寄存器:其功能是保存图灵机的当前状态,图灵机的所有可能状态都是有限的。或者 0,要么是 1。
- TABLE:根据当前机器的状态和当前窗口,是一套工作规则(HEAD)为了确定窗口的下一个动作,并改变状态寄存器的值,使机器进入一个新的状态。
也许太抽象,太奇怪, 用现代术语来看:
冯·诺依曼架构:内存,计算机高速运行的通用秘密
在图灵提出图灵机15年后,因为 电子真空管 成熟的技术条件和美国军方的资助,世界上第一台可用的通用计算机终于制造出来了,这是书中的 ENIAC 。
ENIAC 它是基于图灵机实现的,设计完全基于 图灵机用电子代替纸带,通过控制电子实现计算的输入、计算和输出。
不过,ENIAC 它之所以被称为现代计算机的鼻祖,是因为它奠定了基础 “冯·诺依曼架构”。
记住一句话,计算的本质是:输入 + 运算 + 输出。
与之前的计算机相比,冯·诺依曼架构有一个存储的想法:
- 像数据一样混合程序存储在计算机内部存储器中
- 将程序和数据输入计算机处理并输出结果
简单来说,指令和数据可以放在内存(内存条)中。
这样 CPU 您可以获取数据或指令,然后逐一执行程序。
由于指令和数据放在一起,结构简单,工程实现简单,应用广泛。
如何设计以前的计算机设备,严重依赖于具体的任务,不同的任务需要设计不同的结构。
不同的任务需要拔掉所有的电缆,重新连接零件,有时甚至需要更换一些电子管或电阻。
如 ENIAC 在计算过程中,必须有十几个计算师负责盯着机器输出的插线板(纸板) n 步、第 m 步骤需要手动换线,因为计算方法改变了, ENIAC 真空管响应时间为 ,人的反应时间,手动接线 最快也需要 1 秒。
【内存】是一种存储单元,在步骤和步骤之间添加与操作单元响应速度相同的存储单元。它最多可以存储在这里 20万 中间结果还存储了如何处理以下操作规则。
这样,最大的瓶颈就消除了——对于不同的任务,直接从存储单元调用不同的程序,不再需要重新接线那么麻烦。
引入【内存】后,计算机不仅运行速度快,更重要的是改造一种不同任务的计算机(通用计算机),无需重新连接。
这种存储机制消除了计算机的最大瓶颈,使专用计算机成为通用计算机,这也是 [冯·诺依曼] 被称为“计算机之父”的主要原因。
你好奇[内存]到底长什么样,这么神奇吗?
计算机需要处理各种信息,如十进制数、文本、符号、图形、音频、视频等,这些信息在人们眼中是不同的。但对于计算机来说,它们的内存是相同的,都是 以二进制(0和1)的形式表示。
内存条是一个非常精确的部件,包括数亿个电子元件,它们非常小,达到纳米水平。
这些部件实际上是电路;电路的电压会改变,或者 0V,要么是 5V,只有这两种电压。5V 是通电,用 1 来表示,0V 是断电,用 0 来表达一下。因此,一个组件有 2 种状态,0 或者 1。
我们通过电路控制这些部件的通电和断电,我们会得到很多 0、1 的组合。
例如:
- 8 个元器件有 28 = 256 不同的组合
- 16 个元器件有 216 = 65536 不同的组合
虽然一个组件只能表示一个组件 2 一个值,但多个值的结合可以表示许多值和文字、图像、音频、视频、符号等。
一般来说,我们不会一个一个地使用元器件,而是会使用元器件 8 一个组件被视为一个单位,即使它表示一个非常小的数字,例如 1,也需要 8 个,也就是 00000001。
1 称为个元器件 1 比特(Bit)或 1 位,8称为个元器件 1 字节(Byte),那么 16 单元器件是 2 Byte,32 个就是 4 Byte,以此类推:
- 8×1024个元件是1024Byte,简写为1KB;
- 8×1024×1024元器件为1024KB,简写为1MB;
- 8×1024×1024×1024元器件为1024MB,简写为1GB。
现在你可以知道了 1 GB 内存中有多少个组件?我们通常所说的文件大小是多少? KB、多少 MB,就是这个意思。
假如你的电脑上安装了QQ,想和朋友聊天,双击QQ图标,打开QQ软件,输入账号和密码,然后登录。
那么,QQ是如何运行的呢?
首先,您需要明确的是,您安装的QQ软件保存在硬盘中(上图中的外部存储器)。
双击QQ图标,操作系统就会知道你要操作这个软件,它会在硬盘中找到QQ软件,并将数据(软件本质上是大量数据的集合)复制到内存中。
是的!复制内存!QQ不是在硬盘上运行,而是在内存中运行。
由于内存的读写速度比硬盘快得多,机械硬盘通过电机驱动磁盘旋转来读写数据,而内存条通过电路读写数据,电机的速度肯定不如电传输速度(几乎是光速)快。
因此,无论是运行QQ还是编辑Word文档,CPU都可以先将硬盘上的数据复制到内存中进行处理。这个过程被称为内存(Load into Memory)。完成这个过程需要一个特殊的程序(软件),称为加载器(Loader)。
CPU直接处理内存,它读取内存中的数据进行处理,并将结果保存到内存中。在将内存中的数据复制到硬盘之前,如果需要保存到硬盘中。
例如,打开Word文档,输入一些文本,虽然我们看到的不同,但硬盘中的文档并没有改变,新的文本暂时保存在内存中,Ctrl+S将被保存到硬盘上。因为内存在断电后会丢失数据,所以如果您在编辑Word文档后忘记保存它,它将永远无法找到这些内容。
冯·诺依曼结构的核心是内存,就像 C 语言之所以被称为最接近冯·诺依曼架构的编程语言,是因为它被称为最接近冯·诺依曼架构的编程语言 C语言 它是为内存而生的,它比任何编程语言都更接近内存。
摩尔定律:现实世界的指数增长
回到第一台电脑 ENAIC 上,计算的本质是:输入 + 运算 + 输出。
我们已经知道了这样的计算过程,但是如何实现呢? ?
实现它的必须是一个物理系统,它的性质将决定计算能力的大小。
例如,第一台计算机 ENAIC用电子管代替纸带。但电子管实现的图灵机:体积大、功耗高、可靠性差、每秒几千次到几万次,价格昂贵。
一旦启动,周围居民的灯就会变暗。每根电子管相当于一个小灯泡,功耗可能是 15 一次电大概能完成一万瓦 2.5 万次运算。
到 2018 年,世界上最快的橡树岭超级计算机最多可以在一秒钟内完成 20 1亿次浮点运算,耗电2.7度,相当于一次电完成 7.5 运算亿次。
自1946 自2000年以来,计算机 70 从本质上讲,多年的发展是提高能源利用率的过程。
这 70 我们必须知道多年来有三个里程碑:
- 晶体管的诞生,ta 将计算能耗降低到两个数量级。这是上个世纪 50 年代的事。
- 发明集成电路,ta 大约有两个数量级降低了计算能耗。这是20世纪60年代初的事。当时可以消耗一次电量完成 1 计算了亿次。
- 摩尔在1965年提出了摩尔定律:即集成电路的性能 12 每月翻一番;1975 年摩尔修改了摩尔的定律,认为年摩尔修改了摩尔的定律 1980 从年开始,集成电路的性能每两年翻一番。
历经 50 年底摩尔定律指数增长,之前几百万美元的电脑价格下跌,直到下架...然后被历史遗忘..
1999年,比尔·盖茨在世界计算机展上表示,如果汽车行业能有IT行业的发展速度,一加仑汽油应该能跑1000英里,价格只有25美元。
每隔一段时间,我们就可以使用更便宜、更好的产品,这是人类历史上最酷的事情。
很多人说小米手机好(手机配置好,价格便宜)。
推出手机时,采用预订策略。客户看到的价格是今天的价格,会议比较手机的配置也是根据当今市场的手机进行比较的。
但是交货往往是半年后,中间有时差。半年后,由于摩尔定律的作用,组件的价格不再是我们今天看到的。
因此,我们认为我们赚的钱是基于今天的成本性能,半年后我们得到了相同的成本性能,事实上,当时仔细计算,成本性能并不那么有吸引力。
但是,从制造硬件的企业的角度来看,制造相同的产品往往是一样的 18 除非企业的发展能超过摩尔定律的指数增长,否则迟早会关闭,否则每月企业的收入就会缩水一半。
就像现在科技产业板块一样。 智能设备,物联网 它们都很受欢迎。对于这些制造硬件的企业来说,没有必要效仿,因为受摩尔定律的影响,他们的利润会越来越薄。
有人说摩尔定律快到极限了,但这根本不叫事。
如果实现计算机的物理系统不局限于使用基于硅的芯片,那么计算能力最终只受物理学的限制。
物理学的限制是,人类理论上可能具备的计算能力是今天的
总而言之,今天的传统计算机并不是万能的,因为它们被三条线限制了,这三条线分别是:
- 图灵的可计算理论,即图灵的理论
- 冯·诺依曼的计算机系统结构
- 半导体的物理极限
前两者都不太可能有变化和突破,所以提高计算机性能的唯一途径就是第三条。
改变实现计算过程的物理系统,这种物理系统的性质将决定计算能力的大小。
例如,量子计算机。
传统计算机的极限实际上是传统物理学的极限;量子计算机的极限自然是量子力学的极限。
阿姆达尔法则:如何在有限的时间内做出决定
阿姆达尔法则,是让 IT 行业快速进步的战术和 阿姆达尔法则 摩尔定律对应,这是摩尔定律。 IT 行业战略。
在设计计算机系统时,阿姆达尔充分认识到,为了获得最佳的整体性能,计算机各部分的性能必须平衡匹配。
他用一个简单的公式来描述这个想法:
- 方程左边的 S :提高系统的最终性能
- 方程右边的 s :提高某一指标的性能(如提高内存速度) 1 倍,s 就是 1 倍)
- 方程右边的 p :用于这种提升的比例/概率(如内存读写访问,占程序运行时间 20%)
假设内存速度翻了一番,也就是说 s=2.整个计算机性能的提高是多少? ?
根据这个公式,可以算出是 如果你有办法将内存的速度提高到原来的速度,11%看起来不错。 100 倍,那么计算机的整体速度只能提高大约 25%,看起来不太有效。
每次设计新一代计算机产品时,都会有各种技术突破可供选择。但是,考虑到成本因素和设计的复杂性,需要选择。应该引进哪些新技术? ?
阿姆达尔法则是由计算机行业决定的铁律。
如果内存读写占用了程序运行时间 处理器运算占20% 60%。
现在有两种技术可以提高内存的读写速度 5 倍,另一个可以提高处理器的速度 50%,由于成本和研发时间的限制,下一个版本只能使用一个改进,应该选择哪个 ?
20% 的 5 倍,好像效果显著;而且 60% 的 50%,也就 30%,当然要采用新的内存技术。
阿姆达尔法则给出的结论恰恰相反 ---- 根据上述公式,计算机的整体性能只能提高20%,以提高内存性能( 1/[(1-0.2)+0.2/6]≈120% ),如果处理器的性能得到提高,系统的整体性能就会得到提高 25%( 1/[(1-0.6)+0.6/1.5] = 125% )。
接下来,如果一年后推出一个新系统,假设处理器和内存性能的可能性和成本与上次相同,这次应该改进计算机处理器还是内存?
不幸的是,这次是时候改进处理器了。
由于上次处理器改进后,处理器运算占用的时间比,即公式中的时间比 p,就从 60% 下降到 50% 然后改进处理器,油水就没那么大了。
事实上,如果处理器继续改进,就可以得到 20% 提高左右性能,这次提高内存可以获得 25% 性能提升。
不仅在计算机设计中,阿姆达尔法则是铁律,而且在软件开发和调试软件性能时,负责任的工程师应该使用这种铁律来优化所有能够提高明显性能的模块。
在大型计算机软件开发中,有一个叫做 Profile 该工具可以模拟软件中每个功能模块占用资源的情况,从而优化最占用资源的模块,使性能容易翻倍。
阿姆达尔法则不仅是产品设计中选择技术的标准,也是整个计算机行业研发投资的原则,也就是说,如果计算机系统的哪一部分成为瓶颈,必须集中精力和资金解决相应的问题,这就解释了为什么IT关键技术似乎在适当的时间取得突破。
很多时候,我们都面临着在限制因素中做出选择的问题。
很多时候,我们总是想全面提高自己,但人们的精力和资源是有限的,所以在某个时刻,我们可能只能朝一个方向努力。
很多人认为应该从直觉上补短板,而另一些人则认为应该让长板更长。
第一类人讲木桶理论,第二类人讲长板理论,每一类都有很多成功的例子,也有很多失败的教训。
所以很多人不知道该用哪个理论。
事实上,在你今天学习了阿姆达尔法则之后,很容易做出决定,也就是说,你可以随时计算它 S,然后选择收入最大的路径前进。
复盘:
文章目录
- 计算机系统结构[第一课摘要]
- 图灵机:不同的视角
- 冯·诺依曼架构:内存,计算机高速运行的通用秘密
- 摩尔定律:现实世界的指数增长
- 阿姆达尔法则:如何在有限的时间内做出决定