随笔分类 - 计算机组成原理
摘要:一般一个程序包含很多条指令。因为有 if...else、for 这样的条件和循环存在,这些指令也不会一路平铺直叙地执行下去。 一个计算机程序是怎么被分解成一条条指令来执行的。 拿我们用的 Intel CPU 来说,里面差不多有几百亿个晶体管。实际上,一条条计算机指令执行起来非常复杂。好在 CPU 在
阅读全文
摘要:异常:硬件、系统和应用的组合拳 一提到计算机当中的异常(Exception),可能你的第一反应就是 C++ 或者 Java 中的 Exception。不过我们今天讲的,并不是这些软件开发过程中遇到的“软件异常”,而是和硬件、系统相关的“硬件异常”。 当然,“软件异常”和“硬件异常”并不是实际业界使用
阅读全文
摘要:我们之前讲过,程序的链接,是把对应的不同文件内的代码段,合并到一起,成为最后的可执行文件。这个链接的方式,让我们在写代码的时候做到了“复用”。同样的功能代码只要写一次,然后提供给很多不同的程序进行链接就行了。 么说来,“链接”其实有点儿像我们日常生活中的标准化、模块化生产。我们有一个可以生产标准螺帽
阅读全文
摘要:大部分程序员开发的都是应用系统。在开发应用系统的时候,我们遇到的性能瓶颈大部分都在 I/O 上。 讲解局部性原理的时候,我们一起看了通过把内存当作是缓存,来提升系统的整体性能。在讲解 CPU Cache 的时候,我们一起看了 CPU Cache 和主内存之间性能的巨大差异。 然而,我们知道,并不是所
阅读全文
摘要:接口和设备:经典的适配器模式 实际上,输入输出设备,并不只是一个设备。大部分的输入输出设备,都有两个组成部分。第一个是它的接口(Interface),第二个才是实际的 I/O 设备(Actual I/O Device)。我们的硬件设备并不是直接接入到总线上和 CPU 通信的,而是通过接口,用接口连接
阅读全文
摘要:如果我再问你,计算机五大组成部分是什么,应该没有人不知道了吧?我们这一节要讲的内容,依然要围绕这五大部分,控制器、运算器、存储器、输入设备和输出设备。 CPU 所代表的控制器和运算器,要和存储器,也就是我们的主内存,以及输入和输出设备进行通信。 那问题来了,CPU 从我们的键盘、鼠标接收输入信号,向
阅读全文
摘要:机器指令里面的内存地址都是虚拟内存地址。程序里面的每一个进程,都有一个属于自己的虚拟内存地址空间。我们可以通过地址转换来获得最终的实际物理地址。我们每一个指令都存放在内存里面,每一条数据都存放在内存里面。因此,“地址转换”是一个非常高频的动作,**“地址转换”**的性能就变得至关重要了。 这就是我们
阅读全文
摘要:计算机有五大组成部分,分别是:运算器、控制器、存储器、输入设备和输出设备。 如果说计算机最重要的组件,是承担了运算器和控制器作用的 CPU,那内存就是我们第二重要的组件了。内存是五大组成部分里面的存储器,我们的指令和数据,都需要先加载到内存里面,才会被 CPU 拿去执行。 可以知道,在我们日常使用的
阅读全文
摘要:你平时用的电脑,应该都是多核的 CPU。多核 CPU 有很多好处,其中最重要的一个就是,它使得我们在不能提升 CPU 的主频之后,找到了另一种提升 CPU 吞吐率的办法。 我们说,CPU Cache 解决的是内存访问速度和 CPU 的速度差距太大的问题。而多核 CPU 提供的是,在主频难以提升的时候
阅读全文
摘要:在我工作的十几年里,写了很多 Java 的程序。同时,我也面试过大量的 Java 工程师。对于一些表示自己深入了解和擅长多线程的同学,我经常会问这样一个面试题:“volatile 这个关键字有什么作用?”如果你或者你的朋友写过 Java 程序,不妨来一起试着回答一下这个问题。 就我面试过的工程师而言
阅读全文
摘要:int[] arr = new int[64 * 1024 * 1024]; // 循环1 for (int i = 0; i < arr.length; i++) arr[i] *= 3; // 循环2 for (int i = 0; i < arr.length; i += 16) arr[i]
阅读全文
摘要:平时进行服务端软件开发的时候,我们通常会把数据存储在数据库里。而服务端系统遇到的第一个性能瓶颈,往往就发生在访问数据库的时候。这个时候,大部分工程师和架构师会拿出一种叫作“缓存”的武器,通过使用 Redis 或者 Memcache 这样的开源软件,在数据库前面提供一层缓存的数据,来缓解数据库面临的压
阅读全文
摘要:如果你自己组装过 PC 机,你肯定知道,想要 CPU,我们只要买一个就好了,但是存储器,却有不同的设备要买。比方说,我们要买内存,还要买硬盘。买硬盘的时候,不少人会买一块 SSD 硬盘作为系统盘,还会买上一块大容量的 HDD 机械硬盘作为数据盘。内存和硬盘都是我们的存储设备。而且,像硬盘这样的持久化
阅读全文