02、计算机组成原理相关知识

1、计算机组成原理知识地图

  图中将计算机分成四大部分:计算机的基本组成、计算机的指令和运算、处理器设计、已经存储器和I/O设备

计算机的基本组成

  将计算机的组成部分对应的冯诺依曼的系统结构中,也就是运算器、控制器、存储器、输入设备和输出设备这五大基本组件。除此之外还需要了解计算机的两个核心指标:性能和功耗

计算机的指令和运算

  指令这部分涉及到,所编写的一行行代码是怎么在计算机里面跑起来的,即程序是怎么通过编译器和汇编器,变成一条条机器指令这样的编译过程(即编译原理),还需要知道我们的操作系统是怎么链接、装载、执行这些程序的(即操作系统)。而这一条条的指令执行的控制过程,就是由计算机五大组件之一的控制器来控制的。

  计算部分是从二进制和编码开始,理解我们的数据在计算机中的表示,以及是怎么从数字短路层面,实现加法、乘法这些基本的运算功能。实现这些运算功能的ALU,也就是算数逻辑单元,就是计算机五大组件之一的运算器。这里面有一个浮点数是很重要的一个知识点,掌握浮点数会让我们对数据的编码、存储和计算能够有一个从表到里的深入理解。

CPU的设计

CPU时钟可以用来构造寄存器和内存的锁存器和触发器,因此,CPU时钟应该是学习CPU的前导知识。搞明白为什么需要CPU时钟,以及寄存器和内存是用什么样的硬件组成的之后,可以再来看看这个计算机的数据通了是如何构造出来的。

数据通路,其实就是连接整个运算器和控制器,并最终组成了CPU。而出于对性能和功耗的考虑,还有进一步理解和掌握面向流水线设计的CPU、数据和控制冒险,以及分支预测的相关技术。

CPU作为控制器要和输入输出设备通信,那么我们就需要知道异常和中断发生的机制。还有指令的并行执行,看看如何直接在CPU层面,通过SIMD来支持并行计算。

存储器原理

通过存储器的层次结构作为基础的框架引导,需要掌握从上到下的CPU高速缓存、内存、SSD硬盘和机械硬盘的工作原理,他们之间的性能差异,以及实际应用中利用这些设备会遇到的挑战。存储器其实很多时候又扮演了输入输出设备的角色,所以需要进一步了解CPU和这些存储器之间是如何进行通信的,以及我们最重视的性能问题是怎么一回事,理解什么是IO_WAIT,如何通过DMA来提升程序性能。

对于存储器,不仅需要它们能正常工作,还需要确保里面的数据不能丢失。于是需要掌握是如何通过RAID、Erasure Code、ECC以及分布式HDFS,这些不同的技术,来确保数据的完整性和访问性能。

2、学习资料

入门书籍:《计算机是怎样跑起来的》,《程序是怎样跑起来的》;此外,寄存器、ALU这些电路怎么回事,可以看Coursera 上的北京大学免费公开课《Computer Organization》

深入学习:《计算机组成与设计:硬件 / 软件接口》和经典的《深入理解计算机系统》,辅助的有《计算机组成:结构化方法》,《计算机体系结构:量化研究方法》。

3、课外资料

《编码:隐匿在计算机软硬件背后的语言》和《程序员的自我修养:链接、装载和库》是理解计算机硬件和操作系统层面代码执行的优秀阅读材料。

猜你喜欢

转载自www.cnblogs.com/gopark/p/10974384.html