文章目录
- 计算机组成原理图
- 要学的内容
- 总的来说学习计算机组成原理是学什么?
- 计算机的基本硬件组成
- CPU
- 内存
- 主板
- 其他部件
- 冯·诺依曼体系结构(Von Neumann architecture)
- 不可编程
- 存储计算机
- 具体
大家好我是jiantaoyab,这是我作为学习的笔记,在这里分享给大家,还有一些书籍<深入理解计算机系统>,《计算机组成:结构化方法》《计算机体系结构:量化研究方法》
计算机组成原理图
在这张图里面,我们把整个计算机组成原理的知识点拆分成了四大部分,分别是计算机的基本组成、计算机的指令和计算、处理器设计,以及存储器和 I/O 设备。
要学的内容
- 计算机的基本组成
运算器、控制器、存储器、输入设备和输出设备这五大基本组件。除此之外,计算机的两个核心指标,性能和功耗。性能和功耗也是我们在应用和设计五大基本组件中需要重点考虑的因素。
- 计算机的指令和计算
搞明白我们每天写的c++代码怎么在计算机中跑起来的,了解我们的程序是怎么通过编译器和汇编器,变成一条条机器指令这样的编译过程还需要知道我们的操作系统是怎么链接、装载、执行这些程序的而这一条条指令执行的控制过程,就是由计算机五大组件之一的控制器来控制的
计算机的计算部分,你要从二进制和编码开始,理解我们的数据在计算机里的表示,以及我们是怎么从数字电路层面,实现加法、乘法这些基本的运算功能的。实现这些运算功能的 ALU(Arithmetic Logic Unit/ALU),也就是算术逻辑单元,其实就是我们计算机五大组件之一的运算器。
- CPU设计
CPU 时钟可以用来构造寄存器和内存的锁存器和触发器,寄存器和内存是用什么样的硬件组成,数据通路,其实就是连接了整个运算器和控制器,并最终组成了 CPU。而出于对于性能和功耗的考虑,你要进一步理解和掌握面向流水线设计的 CPU、数据和控制冒险,以及分支预测的相关技术
CPU 作为控制器要和输入输出设备通信,那么我们就要知道异常和中断发生的机制
- 存储器的原理
掌握从上到下的 CPU 高速缓存、内存、SSD 硬盘和机械硬盘的工作原理,它们之间的性能差异,以及实际应用中利用这些设备会遇到的挑战,CPU 和这些存储器之间是如何进行通信的,
总的来说学习计算机组成原理是学什么?
学习控制器、运算器的工作原理,也就是 CPU 是怎么工作的,以及为何这样设计;学习内存的工作原理,从最基本的电路,到上层抽象给到 CPU 乃至应用程序的接口是怎样的;学习 CPU 是怎么和输入设备、输出设备打交道的。
学习组成原理,就是在理解从控制器、运算器、存储器、输入设备以及输出设备,从电路这样的硬件,到最终开放给软件的接口,是怎么运作的,为什么要设计成这样,以及在软件开发层面怎么尽可能用好它
计算机的基本硬件组成
要自己组装一台计算机,要先有三大件: CPU,内存,主板
CPU
一个精细的印刷电路板
CPU,它是计算机最重要的核心配件,全名叫中央处理器(Central Processing Unit)
内存
存放在内存里的程序和数据,需要被 CPU 读取,CPU 计算完之后,还要把数据写回到内存,然而 CPU 不能直接插到内存上,所以需要主板
主板
主板是一个有着各种各样,有时候多达数十乃至上百个插槽的配件。我们的 CPU 要插在主板上,内存也要插在主板上.主板的芯片组(Chipset)和总线(Bus)解决了 CPU 和内存之间如何通信的问题.芯片组控制了数据传输的流转,也就是数据从哪里到哪里的问题。总线则是实际数据传输的高速公路.因此,总线速度(Bus Speed)决定了数据能传输得多快。
其他部件
有了三大件,只要配上电源供电,计算机就能跑了,但是现在还缺少各类输入(Input)/ 输出(Output)设备,也就是我们常说的I/O 设备
有显示器我们才能看到计算机输出的各种图像,文字,这也就是所谓的输出设备,同样的,鼠标和键盘也都是必不可少的配件,它们也就是所谓的输入设备
计算机没有硬盘也可以吗?
很多网吧的计算机就没有硬盘,而是直接通过局域网,读写远程网络硬盘里面的数据,我们日常用的各类云服务器,只要让计算机能通过网络,SSH 远程登陆访问就好
显卡
显卡(Graphics Card),现在,使用图形界面操作系统的计算机,无论是 Windows、Mac OS 还是 Linux,显卡都是必不可少的。有人可能要说了,我装机的时候没有买显卡,计算机一样可以正常跑起来啊!那是因为,现在的主板都带了内置的显卡。如果你用计算机玩游戏,做图形渲染或者跑深度学习应用,你多半就需要买一张单独的显卡,插在主板上。显卡之所以特殊,是因为显卡里有除了 CPU 之外的另一个“处理器”,也就是GPU(Graphics Processing Unit,图形处理器),GPU 一样可以做各种“计算”的工作,超算的进步也是加入CPU,不仅仅像传统一样只用CPU运算
鼠标,键盘以及硬盘,这些都是插在主板上的,作为外部 I/O 设备,它们是通过主板上的南桥(SouthBridge)芯片组,来控制和 CPU 之间的通信的,“南桥”芯片的名字很直观,一方面,它在主板上的位置,通常在主板的“南面”,另一方面,它的作用就是作为“桥”,来连接鼠标,键盘以及硬盘这些外部设备和 CPU 之间的通信。
有了南桥,自然对应着也有“北桥”,是的,以前的主板上通常也有“北桥”芯片,用来作为“桥”,连接 CPU 和内存,显卡之间的通信,不过,随着时间的变迁,现在的主板上的“北桥”芯片的工作,已经被移到了 CPU 的内部,所以你在主板上,已经看不到北桥芯片了。
冯·诺依曼体系结构(Von Neumann architecture)
上面便是计算机的硬件组成,我们老一点点的手机只有SD卡,并没有内存插槽,CPU插槽这些东西,手机制造商们把CPU、内存、网络通信,乃至摄像头芯片,都封装到一个芯片,然后再嵌入到手机主板上。这种方式叫SoC,也就是 System on a Chip(系统芯片)。
那为什么手机和电脑的硬件组成方式不一样,但是我们运行软件在手机和在电脑上并没有什么差别呢?因为,无论是个人电脑、服务器、智能手机,还是 Raspberry Pi 这样的微型卡片机,都遵循着同一个“计算机”的抽象概念。就是冯·诺依曼体系结构也叫存储程序计算机。
不可编程
计算机是由各种门电路组合而成的,然后通过组装出一个固定的电路版,来完成一个特定的计算程序。一旦需要修改功能,就要重新组装电路。这样的话,计算机就是“不可编程”的,因为程序在计算机硬件层面是“写死”的。最常见的就是老式计算器,电路板设好了加减乘除,做不了任何计算逻辑固定之外的事情。
存储计算机
程序本身是存储在计算机的内存里,可以通过加载不同的程序来解决不同的问题。有“存储程序计算机”,自然也有不能存储程序的计算机。典型的就是早年的“Plugboard”这样的插线板式的计算机。整个计算机就是一个巨大的插线板,通过在板子上不同的插头或者接口的位置插入线路,来实现不同的功能。这样的计算机自然是“可编程”的,但是编写好的程序不能存储下来供下一次加载使用,不得不每次要用到和当前不同的“程序”的时候,重新插板子,重新“编程"
具体
- 运算器
算术逻辑单元(Arithmetic Logic Unit,ALU)和处理器寄存器(Processor Register)的处理器单元(Processing Unit),用来完成各种算术和逻辑运算。因为它能够完成各种数据的处理或者计算工作,因此也有人把这个叫作数据通路(Datapath)或者运算器。
- 控制器
包含指令寄存器(Instruction Reigster)和程序计数器(Program Counter)的控制器单元(Control Unit/CU),用来控制程序的流程,通常就是不同条件下的分支和跳转。在现在的计算机里,上面的算术逻辑单元和这里的控制器单元,共同组成了我们说的 CPU。
- 存储器
用来存储数据(Data)和指令(Instruction)的内存。以及更大容量的外部存储,在过去,可能是磁带、磁鼓这样的设备,现在通常就是硬盘。
- 输入和输出设备
所有的计算机程序,也都可以抽象为从输入设备读取输入信息,通过运算器和控制器来执行存储在存储器里的程序,最终把结果输出到输出设备中。而我们所有撰写的无论高级还是低级语言的程序,也都是基于这样一个抽象框架来进行运作的。