美文网首页前端基础之html+css
02 | 给你一张知识地图,计算机组成原理应该这么学

02 | 给你一张知识地图,计算机组成原理应该这么学

作者: hedgehog1112 | 来源:发表于2019-05-21 16:39 被阅读0次

    一、计算机的基本组成

    (1)硬件:又是怎么对应到经典的(2)冯·诺依曼体系结构中的:运算器、控制器、存储器、输入设备和输出设备这五大基本组件。

    计算机的两个核心指标:(3)性能和(4)功耗

    二、计算机的指令和计算

    指令部分: (1)程序是怎么在计算机里面跑起来?程序是怎么通过编译器和汇编器,变成一条条机器指令的编译过程(编译原理)

                       (2)操作系统是怎么链接、装载、执行这些程序,一条条指令执行的控制过程控制器控制)

    运算部分:二进制编码,从数字电路层面,实现加法、乘法这些运算功能。运算器(也是算术逻辑单元)实现运算功能 ALU(Arithmetic

    Logic Unit/ALU)。浮点数(Floating Point)非常容易用错。

    三、处理器

    (1)CPU 时钟构造寄存器内存的锁存器触发器。知道为什么需要 CPU 时钟(CPU Clock),寄存器和内存硬件组成的之后,整个计算机的数据通路如何构造。

    (2)数据通路,连接了整个运算器和控制器,最终组成了 CPU

    (3)考虑性能和功耗,要理解和掌握面向流水线设计的 CPU、数据和控制冒险、分支预测的相关技术。

    (4)既然 CPU 作为控制器要和输入输出设备通信,那么我们就要知道异常和中断发生的机制

    (5)指令的并行执行,如何直接在 CPU 层面,通过 SIMD 来支持并行计算

    四、存储器的原理

    (1)存储器的层次结构,从上到下的 CPU 高速缓存、内存、SSD 硬盘机械硬盘的工作原理,之间的性能差异,应用中利用这些设备会遇到的挑战。

    (2)存储器可输入、出,CPU 和存储器如何通信,性能问题: IO_WAIT,如何通过 DMA 来提升程序性能

    存储器如何通过 RAID、Erasure Code、ECC 以及分布式 HDFS,来确保数据的完整性和访问性能。

    学习计算机组成原理,究竟有没有好办法?

    程序怎样从高级代码变成指令在计算机里面运行,对应着“编译原理”和“操作系统”这两门课程;计算实现背后则是“数字电路”;如果要深入 CPU 和存储器系统的优化,必然要深入了解“计算机体系结构”。

    (1)提问来串联知识点

    代码怎样变成运行的程序,得到最终结果的?

    整个过程中,计算器层面到底经历了哪些步骤,哪些可优化?

    程序的编译、链接、装载和执行,以及计算时需要用到的逻辑电路、ALU,乃至 CPU 自发为你做的流水线、指令级并行和分支预测,还有对应访问到的硬盘、内存,以及加载到高速缓存中的数据。

    (2)写示例程序来验证知识点。大量原理和设计,对应着“性能”这个词。

    (3)和计算机硬件发展的历史对照。第一台电子计算机发明到现在,有 70 多年了。现代技术,都是跟随实际应用中遇到的挑战,一个个发明、打磨,最后保留下来的。有学术碰撞,有商业交锋。

    奔腾 4 和 SPARC 的失败,以及 ARM 的成功,让我们记住 CPU 指令集的繁与简、权衡性能和功耗的重要性

    入门书籍:《计算机是怎样跑起来的》,《程序是怎样跑起来的》(微缩版“计算机组成原理”)

    Coursera 上北京大学免费公开课Computer Organization硬件基础:寄存器、ALU 这些电路是怎么回事。

    深入学习书籍:《计算机组成与设计:硬件 / 软件接口》,《深入理解计算机系统》,《计算机组成:结构化方法》,《计算机体系结构:量化研究方法》。

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

    最有效的办法:不是短时间冲刺,而是有节奏地坚持,希望你能够和专栏的发布节奏同步推进,做好思考题,并且多在留言区和其他朋友一起交流

    相关文章

      网友评论

        本文标题:02 | 给你一张知识地图,计算机组成原理应该这么学

        本文链接:https://www.haomeiwen.com/subject/zvcnaqtx.html