- 介绍
- 单cpu串行工作,前任务完成,后任务才开始
- 串行不适合图形处理(多点,线,面要同时乘投影矩阵)
- cpu把大量空间和电量分配给控制器和缓存,不能集成太多计算单元
- cpu内存通过cpu总线连接, cpu总线与pci总线通过主桥(北桥)连接
- gpu在pci总线上
- 控制逻辑在cpu中运行, 生成渲染数据, 到内存, 再到显存显卡计算。
- 内存到显存数据传输最花费时间。
- 原理
- 处理单元(processing unit)
- 算术逻辑单元(arithmetic logic unit)
- 处理寄存器(processor register)
- 控制单元(control unit)
- 指令寄存器(instruction register)
- 程序计数器(program counter)
- 指令集架构(ISA, instruction set architecture)
- 机器码易兼容, 软件易编程, 易升级cpu
- 精简指令集RISC(reduced instruction set computing)
- 复杂指令集CISC(complex instruction set computer)
- 时钟频率(clock speed)
- 生产
- 多级缓存
- 虚拟化
- 虚拟机监视器(VMM, virtual machine monitors)
- 分类
- 指令流的重数分类
- SI(single instruction stream)单指令流
- MI(multiple instruction stream)多指令流
- 操作数流的重数分类
- SD(single data stream)单数据流
- MD(multiple data stream)多数据流
- SISD 串行计算机
- SIMD 阵列机(多处理单元)
- MISD 很少
- MIMD
- 硬件并行
- 位级(bit-level): 32位, 64位计算机
- 指令级(instruction-level) # 处理器内部并行度很高
- 流水线
- 指令分步骤(指令流), 每步专门部件处理
- 多指令流并行, 部件不空闲等待单指令流结束
- 六级流水线步骤
- 取指(FI), 译码(DI), 计算操作数地址(CO), 取操作数(FO), 执行指令(EI), 写操作数(WO)
- 多发射(超标量)
- 超线程
- 乱序执行
- 猜测执行
- 数据级
- 向量体系结构、图形处理器
- 单指令多数据(SIMD)架构
- 线程级 # 紧耦合硬件模型中开发数据级或任务级并行,线程间有交互
- 请求级 # OS或程序耦合任务间并行
- 程序并行
- 数据级(DLP, data-level parallel)
- 任务级(TLP, task-level parallel) # 多处理器, 超线程, 虽只有4个核,但可用核返回8
- 内存
- 进程: 独有内存
- 线程: 共享进程内存(地址空间、文件描述符)
- 一个进程下的轻量进程
- POSIX线程api是对已有unix进程模型扩展, 与进程多方面类似
- 自己的信号掩码
- cpu affinity(倾向在某cpu尽量长时间运行)
- cgroups
- 进程调度
- 等级
- 高级调度(High-Level Scheduling)
- 低级调度(Low-Level Scheduling)
- 中级调度(Intermediate-Level Scheduling)
- 方式
- 非剥夺方式
- 处理机分配给某进程后一直运行下去,直到阻塞时,才分配处理机到另一个进程
- 剥夺方式
- 进程运行时,系统基于某种原则,剥夺分配给它的处理机.
- 采用算法
- 先进先出算法
- 批处理系统用. 总把处理机分配给最先进队的进程, 将一直执行下去,直到阻塞
- 短进程优先(SCBF Shortest CPU Burst First)
- 批处理系统用. 从就绪队列中选出下一个cpu执行期最短的进程,分配处理机
- 轮转法
- 程序计数器
- WC Buffer
- CPU 局部性原理
- 内存屏障
- 汇编
- CPU缓存一致性协议