Outline:
一 、处理器体系结构
内容:CPU中的时序电路、单周期处理器的设计、流水线处理器的基本原理、Data Hazard的处理、流水线设计中的其他问题
二、优化程序性能
内容:优化程序性能、优化编译器的能力和局限性以及表示程序性能、特定体系结构或应用特性的性能优化、限制因素、确认和消除性能瓶颈
三、存储器结构及虚拟存储器
内容:局部性、存储器层级结构、计算机高速缓存器原理、高速缓存对性能的影响、地址空间、虚拟存储器、虚拟内存的管理、翻译和映射、TLB、动态存储器分配和垃圾收集
四、链接、进程及并发编程
内容:静态链接、目标文件、符号和符号表、重定位和加载、动态链接库、异常和进程、进程控制和信号、进程间的通信、进程间信号量的控制、信号量,各种并发编程模式,共享变量和线程同步,其他并行问题
五、系统级I/O和网络编程
内容:I/O相关概念、文件及文件操作、共享文件、网络编程、客户端-服务器模型,套接字接口、HTTP请求,Web服务器
一 、处理器体系结构
内容:CPU中的时序电路、单周期处理器的设计、流水线处理器的基本原理、Data Hazard的处理、流水线设计中的其他问题
1. CPU中的时序电路:通过RS触发器控制CPU的时序。
2. 单周期处理器的设计:CPU在处理指令时,一般要经过以下几个步骤1)取指令(IF);2)指令译码(ID);3)指令执行(EXE);4)存储器访问(MEM);5)结果写回(WB);单周期CPU就是在一个时钟周期里完成这五个阶段的操作。
3. 流水线处理器的基本原理:流水线技术是指程序在执行多条指令的时候重叠执行操作的一种准并行处理实现技术。
4. Data Hazard的处理:流水线冒险,流水线为处理器带来了效率,同时也带来了问题。包含以下几种:1)结构冒险;2)数据冒险;3)控制冒险
5. 流水线设计中的其他问题:1)每个阶段所用的硬件实际并不是相互独立的;增加的寄存器也会导致延迟增大;每阶段的周期划分也很难做到一致;2)理想的流水线系统,每个阶段的时间都是相等的。实际上,各个阶段的时间是不等的。运行时钟是由最慢的阶段决定的;3)另外流水线过深,寄存器的增加会造成延迟增大。当延迟增大到时钟周期的一定比例后,也会成为流水线吞吐量的一个制约因素。
二、优化程序性能
1. 优化程序性能:1)消除不必要的内容;2)利用处理器提供的指令级并行能力,同时执行多条指令;3)使用代码分析工具分析代码执行效率,优化效率低的部分;4)Amdahl定律,它量化了优化系统中部分而给整体带来的效果。
2. 优化编译器的能力和局限性以及表示程序性能:1)优化编译器的能力:现代编译器使用复杂精细的算法来确定一个程序中计算的是什么值,以及它们是如何使用的,然后利用一些机会来简化表达式,在几个不同的地方使用一个计算,降低给定计算的执行次数;GCC编译器提供优化级别的控制,级别越高,程序的规模可能会提高,调试困难会提高;低级别的优化高效的C代码,要比高级别的优化初级的C代码性能要高;2)局限性:编译器必须很小心地对程序只是用安全的优化;3)表示程序性能:引入度量标准每元素的周期数(Cycles Per Element CPE),作为一种表示程序性能并指导我们改进代码的方法。
3. 限制因素:1)寄存器溢出:循环并行的好处受到表述计算的汇编代码的能力限制;2)分支预测和预测错误处罚;3)一些调用原则:不要过分关心可预测的分支;书写适合用条件传送实现的代码。
4. 确认和消除性能瓶颈:1)程序剖析:包括运行程序的一个版本,其中插入可工具代码,以确定程序的各个部分需要多少时间;2)使用Amdahl定律。
三、存储器结构及虚拟存储器
1. 局部性:引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身。这种倾向性,被称为局部性原理;分为时间局部性和空间局部性。
2. 存储器层级结构: