(文末福利)这本现代魔法原理指南,把计算机体系掰开揉碎讲清楚了

2021年11月22日 阅读数:1
这篇文章主要向大家介绍(文末福利)这本现代魔法原理指南,把计算机体系掰开揉碎讲清楚了,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。


🤫 关注公众号并回复「编码」🤫 
程序员

获取《编码:隐匿在计算机数据库

件背后的语言》细思惟导图编程


「储存器(storage)和内存(memory)有什么区别?」微信

「为何 MacOS 环境下的程序不能在 Windows 下运行?」app

……svg

Windows 编程界的传奇人物 Charles Petzold 说,当他想要回答这些问题时,他一张开嘴就马上意识到,能够回答的内容实在太多了,为了把这些问题掰开揉碎讲清楚,他写下《编码:隐匿在计算机软硬件背后的语言》这本经典。函数

 1994 年,Petzold 被授予 Windows 先锋奖,他的著做 Programming Windows 是学习微软编程的必读之做,而这本讲述计算机工做体系的书籍,更是堪称现代魔法原理指南。工具

在这本书中,Petzold 不断提出难题并带领读者解决问题。学习

若是你是计算机科班出身,重读基本原理、了解计算机发展脉络,正本清源,开卷有益;若是你是计算机小白,你能够跟着做者的步伐搭积木,把导线、灯泡、开关、逻辑门等部件组装起来,通过层层抽象后,你将会用逻辑思惟构建一个完整的 CPU flex

你将从这本书中得到:

  • 了解计算机发展总体历史脉络
  • 自底向上理解 CPU 工做原理
  • 学会层层抽象的思惟方式,将已经发明的工具封装抽象起来,向上构建体系



  从布莱叶盲文到二进制编码

编码是如何产生的、什么要使用编码?这是这本书探讨的主要问题。

小编认为最精彩的部分,是在讲解摩斯电码以后,做者进一步介绍盲文的诞生:

霍伊先生视力健全,所以他被自身的感知模式所禁锢。对他来讲,一个字母 A 就是一个 A,字母 A 在记录时必须看起来(或者)感受起来像一个 A。霍伊先生没有意识到,有一种彻底不一样于印刷字母的文字系统可能更适合盲人阅读。


法国军队的一位军官在 1819 年发明了一种他自称为「夜间书写」的文字系统。他在厚纸上使用凸起的点和划的组合来表示文字,这样当部队须要无声交流时,即便光线很暗,士兵们也能够经过这些符号互相传递信息。


……一个盲人学生若是有了纸张和笔,他就能够作笔记,同时还能阅读记下的文字。12 岁的盲人小孩布莱叶开始不辞辛劳地改进这个文字系统……

在布莱叶盲文中,字母、数字、标点等符号都被编码为 2 x 3 的点码单元中的一个或多个凸起的点,如上图左上角所示。

你或许敏锐地察觉到了布莱叶盲文与二进制的关联:一个单独的点,不是凸起来的,就是平的,只有两种可能性!所以,6 个可平可凸的的点就有 2^6 = 64 种组合方式。所以,布莱叶盲文系统能够表示 64 种符号,上图就是基本的小写字母表。

布莱叶盲文系统对咱们理解编码,有哪些帮助?

二进制的思想,从本质上就是可能性的遍历,每一个点只有平/凸两种可能,这为咱们进一步理解计算机二进制打下基础。

编码就是交流:部队想在夜间秘密交流,盲人渴望书写和记录……对交流的渴望是人类不竭的生产力源泉。



  自动操做

「自动操做」是这本书的精华部分,第 1- 16 章对于二进制、加法器、寄存器等内容的讲解,都是为了自动操做作铺垫。让咱们跟着做者的思路,用纯逻辑构建一个 CPU 吧!

若是想计算多个数相加的结果,用 1 个 8 位加法器 + 1 个 8 位锁存器就能够完成,可是有两个缺陷:

  • 8 个灯泡没法显示结果大于 255 的数
  • 若是加数不少,输入的过程当中一旦输入错误,则需从新输入

为了第二个解决问题,咱们能够链接 64KB 的 RAM 阵列,把输入的数先保存到 RAM 中,每次输入都会经过计数器在 RAM 中寻址后保存,这样等所有输入完成后,就能够等待加法器依次相加得出结果。

若是想计算 50 对数相加,产生 50 个结果,而后保存到 RAM 中,而且能够任意读取这 50 个结果,应该怎么办?

改造电路,使锁存器的输出链接到 RAM 的输入端,也就是说把计算后的结果写回到 RAM 阵列中保存。以下图所示:

下一个问题是,如何配置一个自动加法器,使它不只能够对一组数字作累加运算,还能自主肯定累加了多少数字,而且能记住在 RAM 中存放了多少个计算结果?

整体而言,咱们但愿 8 位锁存器能作这四件事:

  • 把一个字节从储存器加载到累加器(Load)

  • 把储存器中的一个字节加到累加器中(Add)

  • 把累加器的计算结果存放到储存器中(Store)

  • 能够中止(Halt)

为了解决上述问题,须要引入另外一个 RAM,来保存 Load、Add、Store、Halt 操做码。也就是说,电路中有两个 RAM 共同工做,RAM1 保存了数据,RAM2 保存代码指令。同时,要想达到 8 位锁存器 Load 指令的效果,需改造电路,8 位加法器的输出与一个 2-1 选择器链接,2-1 选择器链接 RAM2 和 8 位锁存器,这样锁存器就能够实现从 RAM2 中执行 Load 指令。

为了解决结果不能大于 255 的问题,咱们能够把加数拆分,分别计算高字节和低字节的和,而后合并就能够获得结果。

低字节加法计算后可能须要进位,这个进位须要与高字节累加才是正确结果,解决方法是:引入进位锁存器进位加法的指令,专门保存进位的值,而后再和高字节累加计算。

目前,这个电路能够计算 8 位数的加法运算,以及 1六、2四、32 及以上位数的加减运算。虽然能够完成计算的基本功能,可是还不够完美,由于如今的电路使用地址空间是要很是当心的,若是不注意,就会发生地址被覆盖的状况,致使执行错误。

为了解决这个问题,咱们加入一个跳转指令,同时改造电路,使指令的后两个字节输出也能够输出到计数器,而后经过计数器来肯定遇到跳转指令后,计数器输出需跳转的地址,完成跳转寻址。

如何完成两数相乘的运算?那么就可使用跳转指令 + 跳转条件来配合完成。因此,咱们须要再增长一个锁存器,叫作零锁存器,只有当加法器的输出所有为 0 时它的值才是 1。经过计数器和零锁存器的配合,就能够实现乘法运算。同理,实现除法、平方根、取对数、三角函数运算也都是可行的。

到这里,咱们完成了一个计算机的核心功能,包括:处理器、存储器、输入设备、输出设备。这里的处理器便是 CPU,主要负责控制和逻辑运算。

尽管在高级语言编程中基本用不到汇编,可是理解计算机的底层逻辑对程序的优化有相当重要的做用。任何一个有追求的程序员,都应当对计算机的底层原理如数家珍。


  从实验室走进寻常百姓家

到了 19 世纪末,科学和工程领域中的特定任务会用上计算设备,但公司、政府、家庭中不多见到计算设备。计算机如何一步步商业化的?

1880 年,美国政府按照宪法进行十年一次的人口普查。然而,当时美国人口迅速增加,若是按照传统的方法,要七年时间来手工编制,等作完都过期了,1890 年的人口普查甚至预计要 13 年才能完成。人口普查局找到了 Herman Hollerith,他发明了制表机,结合了人工操做和机械打表,结构相似莱布尼茨的乘法器,但用电动结构链接其余组件。操做人员把一个有 288 个弹簧针的板子压到每个卡片上,每一根弹簧针对应卡片上的一个穿孔位置,若是有个地方打孔了,针会穿过孔与水银池里的水银接触,造成通路,这个电路出发电磁体就能进行十进制计数。

在 1890 年人口普查中,上图这样的半自动打表机总共处理了超过 6200 万张卡片,令人口普查在短短两年半内完成,也给人口普查办公室省了上百万美圆。企业开始意识到,计算机能够提高劳动力并完成数据密集型的任务。Hollerith 后来成立了制表机器公司,后来与其它机械制造商合并成为了 「国际商业机器公司」,也就是大名鼎鼎的 IBM。

这种「商业机器」带来了更快、更灵活的数据处理,为电子计算机的发展奠基了深远基础。

从算盘到芯片,这本书不只介绍了工具的演进,还把这些技术变革放进广袤的历史背景中进行叙述,让读者不由感叹一位位技术天才的巧思。

而身处历史中的咱们,也正在参与新一轮的技术革命。


《编码》整本书自底向上、一鼓作气。不管是小白仍是资深程序员,闲暇时读一读,正本清源,开卷有益。

想要了解更多详细内容?关注公众号并回复书名「编码」,便可得到小编整理的《编码:隐匿在计算机软硬件背后的语言》高清思惟导图



福利时间

理解计算机底层逻辑,
对程序员有多重要?
对技术感兴趣的你,有哪些心头好书?

欢迎在评论区留言你的想法,
咱们将选取一位小伙伴,
赠送纸质版《编码:隐匿在计算机软硬件背后的语言》一本!


积累代码量很重要,
读书、读好书也很重要。
「Zilliz 好书推荐」栏目,
旨在与你分享技术成长相关的书籍,
与你一块儿先把书读厚,再把书读薄。
——————————————————————————

Zilliz 以从新定义数据科学为愿景,致力于打造一家全球领先的开源技术创新公司,并经过开源和云原生解决方案为企业解锁非结构化数据的隐藏价值。
Zilliz 构建了 Milvus 向量数据库,以加快下一代数据平台的发展。Milvus 数据库是 LF AI & Data 基金会的毕业项目,可以管理大量非结构化数据集,在新药发现、推荐系统、聊天机器人等方面具备普遍的应 用。
解锁更多应用场景

本文分享自微信公众号 - ZILLIZ(Zilliztech)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。