0、开篇词 | 为什么你需要学习计算机组成原理?你好,我是徐文浩,一个正在创业的工程师。目前主要是通过自然语言处理技术,为走向海外的中国企业提供英语的智能客服和社交网络营销服务。 2005年从上海交通大学计算机系毕业之后,我一直以写代码为生。如果从7岁第一次在少年宫写程序开始算起,到今天,我的码龄...2025-11-01深入浅出计算机组成原理
1、冯·诺依曼体系结构:计算机组成的金字塔学习计算机组成原理,到底是在学些什么呢?这个事儿,一两句话还真说不清楚。不过没关系,我们先从“装电脑”这个看起来没有什么技术含量的事情说起,来弄清楚计算机到底是由什么组成的。 不知道你有没有自己搞过“装机”这回事儿。在2019年的今天,大部分人用的计...2025-11-01深入浅出计算机组成原理
2、给你一张知识地图,计算机组成原理应该这么学了解了现代计算机的基本硬件组成和背后最基本的冯·诺依曼体系结构,我们就可以正式进入计算机组成原理的学习了。在学习一个一个零散的知识点之前,我整理了一份学习地图,好让你对将要学习的内容有一个总纲层面的了解。 从这张图可以看出来,整个计算机组成原理,就...2025-11-01深入浅出计算机组成原理
3、通过你的CPU主频,我们来谈谈“性能”究竟是什么?“性能”这个词,不管是在日常生活还是写程序的时候,都经常被提到。比方说,买新电脑的时候,我们会说“原来的电脑性能跟不上了”;写程序的时候,我们会说,“这个程序性能需要优化一下”。那么,你有没有想过,我们常常挂在嘴边的“性能”到底指的是什么呢?我们能不...2025-11-01深入浅出计算机组成原理
4、穿越功耗墙,我们该从哪些方面提升“性能”?上一讲,在讲CPU的性能时,我们提到了这样一个公式: 这么来看,如果要提升计算机的性能,我们可以从指令数、CPI以及CPU主频这三个地方入手。要搞定指令数或者CPI,乍一看都不太容易。于是,研发CPU的硬件工程师们,从80年代开始,就挑上了CPU这个...2025-11-01深入浅出计算机组成原理
5、计算机指令:让我们试试用纸带编程你在学写程序的时候,有没有想过,古老年代的计算机程序是怎么写出来的? 上大学的时候,我们系里教C语言程序设计的老师说,他们当年学写程序的时候,不像现在这样,都是用一种古老的物理设备,叫作“打孔卡(Punched Card)”。用这种设备写程序,可没法...2025-11-01深入浅出计算机组成原理
6、指令跳转:原来if...else就是goto上一讲,我们讲解了一行代码是怎么变成计算机指令的。你平时写的程序中,肯定不只有int a = 1这样最最简单的代码或者指令。我们总是要用到if…else这样的条件判断语句、while和for这样的循环语句,还有函数或者过程调用。 对应的,C...2025-11-01深入浅出计算机组成原理
7、函数调用:为什么会发生stack overflow?在开发软件的过程中我们经常会遇到错误,如果你用Google搜过出错信息,那你多少应该都访问过Stack Overflow这个网站。作为全球最大的程序员问答网站,Stack Overflow的名字来自于一个常见的报错,就是栈溢出(stack overf...2025-11-01深入浅出计算机组成原理
8、ELF和静态链接:为什么程序无法同时在Linux和Windows下运行?过去的三节,你和我一起通过一些简单的代码,看到了我们写的程序,是怎么变成一条条计算机指令的;if…else这样的条件跳转是怎么样执行的;for/while这样的循环是怎么执行的;函数间的相互调用是怎么发生的。 我记得以前,我自己在了解完这些...2025-11-01深入浅出计算机组成原理
9、程序装载:“640K内存”真的不够用么?计算机这个行业的历史上有过很多成功的预言,最著名的自然是“摩尔定律”。当然免不了的也有很多“失败”的预测,其中一个最著名的就是,比尔·盖茨在上世纪80年代说的“640K ought to be enough for anyone”,也就是“640K内...2025-11-01深入浅出计算机组成原理