深入浅出计算机组成原理-01

文章目录

      • 1.计算机的基本硬件组成
        • CPU
        • 内存
        • 主板
        • 显卡
      • 2.冯·诺依曼体系结构
      • 3.总结延伸

1.计算机的基本硬件组成

计算机的基本硬件组成:CPU主板内存

CPU

CPU是计算机中最重要的核心配件,全名为中央处理器(Central Processing Unit)。

为什么说 CPU 是“最重要”的呢?因为计算机的所有“计算”都是由 CPU 来进行的。自然,CPU 也是整

台计算机中造价最昂贵的部分之一。

深入浅出计算机组成原理-01_第1张图片

内存

你编写的程序、打开的浏览器、运行的游戏都需要加载到内存里才能运行。程序读取的数据、计算得到

的结果,也都要放到内存里,内存越大,能加载的东西自然也就越多。

深入浅出计算机组成原理-01_第2张图片

主板

主板是一个有着各种各样,有时候多达数十乃至上百个插槽的配件。我们的 CPU 要插在主板上,内存

也要插在主板上。主板的芯片组(Chipset)和总线(Bus)解决了 CPU 和内存之间如何通信的问题。

芯片组控制了数据传输的流转,也就是数据从哪里到哪里的问题。总线则是实际数据传输的高速公路。

因此,总线速度(Bus Speed)决定了数据能传输得多快。

深入浅出计算机组成原理-01_第3张图片

计算机主板上通常有着各种各样的插槽。

有了三大件,只要配上电源供电,计算机差不多就可以跑起来了。但是现在还缺少各类输入(Input)/

输出(Output)设备,也就是我们常说的I/O 设备。如果你用的是自己的个人电脑,那显示器肯定必不

可少,只有有了显示器我们才能看到计算机输出的各种图像、文字,这也就是所谓的输出设备

同样的,鼠标和键盘也都是必不可少的配件。这样我才能输入文本,写下这篇笔记。它们也就是所谓的

输入设备

最后,你自己配的个人计算机,还要配上一个硬盘。这样各种数据才能持久地保存下来。绝大部分人都

会给自己的机器装上一个机箱,配上风扇,解决灰尘和散热的问题。不过机箱和风扇,算不上是计算机

的必备硬件,我们拿个纸板或者外面放个电风扇,也一样能用。所以显示器、鼠标、键盘和硬盘这些东

西并不是一台计算机必须的部分。

还有一个很特殊的设备,就是显卡

显卡

现在,使用图形界面操作系统的计算机,无论是 Windows、Mac OS 还是 Linux,显卡都是必不可少

的。有人可能要说了,我装机的时候没有买显卡,计算机一样可以正常跑起来啊!那是因为,现在的主

板都带了内置的显卡。如果你用计算机玩游戏,做图形渲染或者跑深度学习应用,你多半就需要买一张

单独的显卡,插在主板上。显卡之所以特殊,是因为显卡里有除了 CPU 之外的另一个“处理器”,也就

GPU(Graphics Processing Unit,图形处理器),GPU 一样可以做各种“计算”的工作。

显卡是插在主板上的扩展槽里的(现在一般是PCI-E插槽,此前还有AGP、PCI、ISA等插槽)。它主要

负责把主机向显示器发出的显示信号转化为一般电器信号,使得显示器能明白个人电脑在让它做什么。

显卡的主要芯片叫“显示芯片”(Video chipset,也叫GPU或VPU,图形处理器或视觉处理器),是显卡

的主要处理单元。显卡上也有和电脑存储器相似的存储器,称为“显示存储器”,简称显存。

早期的显卡只是单纯意义的显卡,只起到信号转换的作用;目前的显卡一般都带有3D画面运算和图形

加速功能,所以也叫做“图形加速卡”或“3D加速卡”。PC上最早的显卡是IBM在1981年推出的5150个人

电脑上所搭载的MDA和CGA两款2D加速卡。

显卡通常由总线接口、PCB板、显示芯片、显示存储器、RAMDAC、VGA BIOS、VGA端子及其他外

围组件构成,现在的显卡大多使用VGA、DVI、HDMI接口或DisplayPort接口。

鼠标、键盘以及硬盘,这些都是插在主板上的。作为外部 I/O 设备,它们是通过主板上的南桥

(SouthBridge)芯片组,来控制和 CPU 之间的通信的。“南桥”芯片的名字很直观,一方面,它在主板

上的位置,通常在主板的“南面”。另一方面,它的作用就是作为“桥”,来连接鼠标、键盘以及硬盘这些

外部设备和 CPU 之间的通信。

有了南桥,自然对应着也有“北桥”。是的,以前的主板上通常也有“北桥”芯片,用来作为“桥”,连接

CPU 和内存、显卡之间的通信。不过,随着时间的变迁,现在的主板上的“北桥”芯片的工作,已经被

移到了 CPU 的内部,所以你在主板上,已经看不到北桥芯片了。

2.冯·诺依曼体系结构

冯·诺伊曼结构这个词出自约翰·冯·诺伊曼的论文:First Draft of a Report on the EDVAC [2], 于1945

年6月30日。冯·诺依曼由于在曼哈顿工程中需要大量的运算,从而使用了当时最先进的两台计算Mark I

和ENIAC,在使用Mark I和ENIAC的过程中,他意识到了存储程序的重要性,从而提出了存储程序逻辑

架构。

刚才我们讲了一台计算机的硬件组成,这说的是我们平时用的个人电脑或者服务器。那我们平时最常用

的智能手机的组成,也是这样吗?

我们手机里只有 SD 卡(Secure Digital Memory Card)这样类似硬盘功能的存储卡插槽,并没有内存

插槽、CPU 插槽这些东西。没错,因为手机尺寸的原因,手机制造商们选择把 CPU、内存、网络通

信,乃至摄像头芯片,都封装到一个芯片,然后再嵌入到手机主板上。这种方式叫SoC,也就是

System on a Chip(系统芯片)。

这样看起来,个人电脑和智能手机的硬件组成方式不太一样。可是,我们写智能手机上的 App,和写

个人电脑的客户端应用似乎没有什么差别,都是通过“高级语言”这样的编程语言撰写、编译之后,一样

是把代码和数据加载到内存里来执行。这是为什么呢?因为,无论是个人电脑、服务器、智能手机,还

是 Raspberry Pi 这样的微型卡片机,都遵循着同一个“计算机”的抽象概念。这是怎么样一个“计算

机”呢?这其实就是,计算机祖师爷之一冯·诺依曼(John von Neumann)提出的冯·诺依曼体系结构

(Von Neumann architecture),也叫存储程序计算机

什么是存储程序计算机呢?这里面其实暗含了两个概念,一个是“可编程”计算机,一个是“存储”计算机。

说到“可编程”,估计你会有点懵,你可以先想想,什么是“不可编程”。计算机是由各种门电路组合而成

的,然后通过组装出一个固定的电路版,来完成一个特定的计算程序。一旦需要修改功能,就要重新组

装电路。这样的话,计算机就是“不可编程”的,因为程序在计算机硬件层面是“写死”的。最常见的就是

老式计算器,电路板设好了加减乘除,做不了任何计算逻辑固定之外的事情。

深入浅出计算机组成原理-01_第4张图片

计算器的本质是一个不可编程的计算机。

我们再来看“存储”计算机。这其实是说,程序本身是存储在计算机的内存里,可以通过加载不同的程序

来解决不同的问题。有“存储程序计算机”,自然也有不能存储程序的计算机。典型的就是早年

的“Plugboard”这样的插线板式的计算机。整个计算机就是一个巨大的插线板,通过在板子上不同的插

头或者接口的位置插入线路,来实现不同的功能。这样的计算机自然是“可编程”的,但是编写好的程序

不能存储下来供下一次加载使用,不得不每次要用到和当前不同的“程序”的时候,重新插板子,重

新“编程”。

深入浅出计算机组成原理-01_第5张图片

可以看到,无论是“不可编程”还是“不可存储”,都会让使用计算机的效率大大下降。而这个对于效率的

追求,也就是“存储程序计算机”的由来。

于是我们的冯祖师爷,基于当时在秘密开发的 EDVAC 写了一篇报告[*First Draft of a Report on the *

EDVAC,描述了他心目中的一台计算机应该长什么样。这篇报告在历史上有个很特殊的简称,叫**First **

Draft,翻译成中文,其实就是《第一份草案》。这样,现代计算机的发展就从祖师爷写的一份草案开

始了。

First Draft里面说了一台计算机应该有哪些部分组成,我们一起来看看。

首先是一个包含算术逻辑单元(Arithmetic Logic Unit,ALU)和处理器寄存器(Processor Register)

处理器单元(Processing Unit),用来完成各种算术和逻辑运算。因为它能够完成各种数据的处理

或者计算工作,因此也有人把这个叫作数据通路(Datapath)或者运算器。

然后是一个包含指令寄存器(Instruction Reigster)和程序计数器(Program Counter)的控制器单元

(Control Unit/CU),用来控制程序的流程,通常就是不同条件下的分支和跳转。在现在的计算机

里,上面的算术逻辑单元和这里的控制器单元,共同组成了我们说的 CPU。

接着是用来存储数据(Data)和指令(Instruction)的内存。以及更大容量的外部存储,在过去,可能

是磁带、磁鼓这样的设备,现在通常就是硬盘。

最后就是各种输入和输出设备,以及对应的输入和输出机制。我们现在无论是使用什么样的计算机,其

实都是和输入输出设备在打交道。个人电脑的鼠标键盘是输入设备,显示器是输出设备。我们用的智能

手机,触摸屏既是输入设备,又是输出设备。而跑在各种云上的服务器,则是通过网络来进行输入和输

出。这个时候,网卡既是输入设备又是输出设备。

任何一台计算机的任何一个部件都可以归到运算器、控制器、存储器、输入设备和输出设备中,而所有的现代计算机也都是基于这个基础架构来设计开发的。

而所有的计算机程序,也都可以抽象为从输入设备读取输入信息,通过运算器控制器来执行存储在

储器里的程序,最终把结果输出到输出设备中。而我们所有撰写的无论高级还是低级语言的程序,

也都是基于这样一个抽象框架来进行运作的。

深入浅出计算机组成原理-01_第6张图片

3.总结延伸

冯·诺依曼体系结构确立了我们现在每天使用的计算机硬件的基础架构。因此,学习计算机组成原理,

其实就是学习和拆解冯·诺依曼体系结构。

学习组成原理,其实就是学习控制器、运算器的工作原理,也就是 CPU 是怎么工作的,以及为何这样

设计;学习内存的工作原理,从最基本的电路,到上层抽象给到 CPU 乃至应用程序的接口是怎样的;

学习 CPU 是怎么和输入设备、输出设备打交道的。

学习组成原理,就是在理解从控制器、运算器、存储器、输入设备以及输出设备,从电路这样的硬件,

到最终开放给软件的接口,是怎么运作的,为什么要设计成这样,以及在软件开发层面怎么尽可能用好

它。

本篇笔记是观看极客时间专栏《深入浅出计算机组成原理》后加上自己的理解编写。文章如有错误之处请告知在下,谢谢。

你可能感兴趣的:(计算机组成原理,控制器)