【计算机系统导论】相关教材内容收集

兼容并蓄,博采众长。一些阅读中的感想,比较杂乱。


计算机系统概论

  • 了解底层硬件的工作原理机制是必须的,否则写出来的程序必然是『莫名其妙』的
  • 一个切入点:长期困惑程序员的问题,如函数调用时栈空间的使用规则,给变量赋值常量的几种方法之间的比较、软件中断指令的执行过程等
  • 深入、透彻、全面、易懂
  • 七个层次,层次转换,这是 CSAPP 没有点出来的
    • 层次:问题、算法、语言、机器(ISA)结构、微结构、电路、器件
    • 具体概念的介绍(算法的特性,高级语言低级语言,不同的指令集结构x86/powerPC)
    • 问题到算法的转换
    • 算法到程序设计语言的转换
    • 程序到指令集结构(ISA)的转换
    • 指令集结构到微观结构的转换
    • 微观结构到电路的转换
    • 电路到电路组件的转换
  • 抽象方法的重要些及其本质性的描述
  • 硬件和软件之间相关性的讨论
  • 自底向上
  • 理解而不是记忆
  • 自己动手:可以找一个开源项目
  • 为未来做准备:深入底层
  • 涟漪效应:知其所以然的重要性
  • 计算机是非常『确定』的系统
  • 任何一个时刻,这些导线要么是高电平、要么是低电平
  • 两个反复出现的理念(非常重要)
    • 抽象,更高层次看问题,透过现象看本质,隐藏细节,但也需要分解抽象的能力,即从抽象那个回到具体过程。抽象能提高我们的效率,从而摆脱细节的纠缠。既要不断地提高抽象层次,又要注意细节的深入
    • 在脑子里不要对硬件和软件做任何区分。硬件与软件本不分家,一个问题,可以用软件解决,也可以用硬件解决,在于我们的选择。硬件和软件只是计算机系统中两个组成部分的名称而已;对设计者来说,具体将计算机的某个功能划分给哪部分来实现,以及它们之间如何协同工作,原则只有一个:把事情做得更好!
  • 软硬对应
    • 数据类型 - 字 word
    • 函数 - 硬件对应的调用知识
    • 指针 - 内存结构
    • 数据结构 - 内存
  • 计算机系统的定义
  • 两个非常重要的思想(以思想为轴)
    • 所有的计算机,只要给予足够的时间和内存,它们所能完成的计算任务是相同的。
    • 用自然语言给出一个问题,计算机可以通过程序来解决,具体的过程需要一些咧系统的转换过程。这一问题居然被解决了,而且复杂的转换任务是由计算机本身完成的,多不可思议
  • 计算机 - 通用计算设备,为何通用?因为『方法』和『任务』都可以自定义
  • 参考《图灵的秘密》,图灵的兴趣在于:计算的可定义性
  • 第一章的部分习题
  • bit,整数数据类型,浮点数,进制转换,逻辑运算,矢量
  • ASCII 码
  • 第二章的部分习题
  • 数字逻辑简要带过,不多涉及
  • 内存的概念:寻址空间、寻址能力
  • 有限状态机,这部分的基础概念可以汇总到一章
  • 冯诺依曼模型:内存、处理单元、输入、输出、控制单元
  • 计算机的运行需要两个前提
    • 任务描述,也就是程序(代码)
    • 计算机本身的运行能力
  • 第四章部分习题
  • 结构化编程:顺序、条件、循环,这部分内容可以加入到性能优化一节中
  • 调试,结合 GDB 讲解
  • 汇编语言的介绍,机器相关
  • 两遍扫描:创建符号表、生成机器语言程序
  • 多目标文件:可以结合链接部分内容,设计的习题需要自己尝试过
  • 高级语言翻译:解释器、编译器、优缺点
  • 测试与调试技术:结合性能优化
  • 正确的编程方法:明确规格说明(输入、输出、条件)、模块化设计、预防错误式编程,仍旧是结合性能优化部分
  • 附录内容
    • 常用数字前缀,就 gb ,mb 这些
    • 标准 ASCII 码
    • 二进制表示范围

编码

  • 计算机如何工作
  • 内存与存储器的区别其实实在逻辑层面上的,体现着计算机体系结构的实际需求与存储器客观性能之间的矛盾
  • 计算机是技术领域『登峰造极之作』,其『美』不需要比喻额外修饰
  • 与生俱来的层次化体系结构,从计算机设计,到存储的设计,到网络的设计,都能体现
  • 编码指一种用来在机器和人之间传递信息的方式(莫尔斯码布莱叶盲文 - 优先码,换挡码,逃逸码),这种设计影响了很多软件(如 Vim Emacs)
  • 条形码也是二进制码(扫描的时候为什么是一条绿线)
  • 摩尔定律
  • 总线:数字信号的集合(地址信号、数据输入信号、数据输出信号、控制信号)
  • 汇编
    • 第一个编写汇编器的人需要手工对程序汇编
    • 不可移植

计算机组成与设计 - 硬件/软件接口

  • 除了掌握计算的基本原理外,还应该了解当今的最新状态
  • 硬件与软件之间的相互关系
  • 制作教学支持网站
  • 从本书学到什么
  • 1.2 程序概念入门
  • 1.3 硬件概念入门
  • 性能的定义,结合 18645
  • 性能的测量
  • CPU 性能及其因素
  • 指令的性能
  • 变化趋势
  • 并行的难度
  • SPEC CPU 基准测试程序
  • SPEC 功耗基准测试程序
  • Amdahl 定律
  • 执行时间是唯一有效且不可推翻的性能度量方法
  • ARM 的简要介绍
  • 算术的精确性
  • 浮点数,SIMD
  • CPU 分支预测相关内容
  • 异常
  • 局部性原理、存储器层次结构
  • 缓存映射机制,缓存的例子
  • 虚拟存储器,缺页,TLB
    • 一个块可以被放在何处
    • 如何找到一个块
    • 当 cache 缺失时替换哪一块
    • 写操作如何处理
  • 强制缺失、容量缺失、冲突缺失,具体的可以参考
  • 并行中 cache 一致性
  • 输入输出 DMA
  • RAID 部分
  • MTTF 的理解
  • 多核、多处理器和集群,结合 18645
  • 硬件多线程,18640
  • SISD, MIMD, SIMD, SPMD 和向量机
  • x86 中的多媒体拓展 MMX
  • GPU, 18645, CUDA
  • Roofline,简单的性能模型,18645
  • 7.11 roofline 的应用参考
  • GPU 部分需要斟酌

计算机体系结构 - 量化研究方法

  • ARM Cortex A8, Intel core i7, NVIDIA GTX-280, GTX-480
  • 第一章的介绍比较有参考价值
  • 个人移动设备
  • 桌面计算
  • 服务器
  • 集群/仓库级计算机
  • 嵌入式计算机
  • 集成电路中的功率和能耗趋势
  • 成本趋势
  • 可信任度:这是一个不同的角度
  • 性能的测量,报告和汇总
  • 局域性原理
  • 重点关注常见情形
  • Amdahl 定律
  • 处理器性能公式
  • 每章末尾的『融会贯通』都不错

计算机组成与体系结构 - 性能设计

  • 计算机的发展历史主要由提高处理器速度、减小部件尺寸、增大存储容量、加快 IO 能力和速度
  • 每章前面的要点
  • 最大限度使处理器保持运行状态
  • 平衡
  • 各代计算机介绍
  • 转移预测、数据流分析、推测执行、性能平衡
  • 流水化,超标量化,了解为何要这样设计
  • RISC 和 CISC,及各自的代表
  • 收集每章的关键词,用作术语表
  • DRAM,SRAM
  • 光存储器这种逐渐被淘汰的不写,其他的技术选择也是如此
  • DMA 介绍
  • CPU 部分挑选一些
  • 并行处理
  • 参考文献质量比较高
  • cache 一致性 MESI 协议,用例子说明

总结

之后的工作主要是内容的编排和选择,需要仔细斟酌。另外 Surface Pro 4 手写批注再统一整理效率非常高,不然我一天之内是不可能完成这五本书的。

广告时间

优秀人才不缺工作机会,只缺适合自己的好机会。但是他们往往没有精力从海量机会中找到最适合的那个。100offer 会对平台上的人才和企业进行严格筛选,让「最好的人才」和「最好的公司」相遇。

点击注册 100offer,谈谈你对下一份工作的期待,收获 5-10 个满足你要求的好机会。

捧个钱场?