NVIDIA CUDA初级教程视频--(一)

第一章CPU体系架构概述:

  1. CPU:执行指令(算术,访存,控制),处理数据的器件:完成基本的逻辑和算术指令
    现在增加了复杂功能:内存接口,外部设备接口
    包含大量晶体管
  2. 最优化目标:CPI:每条指令的时钟数 时钟周期 要两个都比较小,但是两个指标不独立
    NVIDIA CUDA初级教程视频--(一)_第1张图片
  3. 桌面应用Desktop Programs
    轻量级进程,少量线程 Lightly threaded
    大量分支和交互操作 Lots of branches
    大量的存储器访问 Lots of memory accesses
    真正用于数值运算的指令很少
    4.CPU: 数据通道+控制逻辑
    取址,译码,执行,访存,写回
    5.流水线:利用指令集并行,极大的减少了时钟周期,增加了延迟和芯片面积
    如何处理具有依赖关系的指令,分支应该怎么处理,?
    6.旁路:可以不用等待所有依赖指令的全部执行完,节省时间
    停滞:前面的访存没有完成,后面的肯定不行,
    分支:做一些分支预测,猜测下一条指令,基于过去的分支记录,
    能提升性能以及能量效率,但是面积增加,可能会增加延迟
    分支断定:用条件语句替换分支,不是用分支预测器,所有的全部都运行
  4. IPC :一个时钟周期可以处理的指令数 超标量:增加流水线宽度
    分支和调度需要产生额外开销,需要 一些技巧来逼近峰值,增加来面积,需要更多寄存器和存储器带宽
    8.指令调度:依赖关系 替换寄存器:可以并行执行
    9.乱序执行:重排指令,获得最大的吞吐率,重排缓冲区,发射队列/调度器
    可以使IPC接近理想状态,面积增加,功耗增加
    10.存储器架构/层次:很多时间在访问存储器 安排数据怎么去读写放
  5. 缓存:把数据放在尽可能接近的位置 利用:时间临近性,空间临近性
    缓存层级:硬件管理:L1,L2,L3 级数越小,速度越快,但是容量越小 软件:主存,磁盘
    另外设计考虑;分区,一致性,控制器
    12CPU内部并行性:指令集并行,数据级并行(单指令多数据SIMD),线程级并行
    多核:将流水线完整复制,完整的核,除了最后一级缓存,不共享其他资源,
    带来了多核程序和利用率问题
    13.多线程读写同一块数据:锁存
    一致性:谁的数据是正确的?解决方法:缓存一致性协议coherence
    同一性:什么样的数据是正确的?解决方案:存储器同一性模型
    14.能量墙:芯片的主频增加,功耗的增加 时钟频率无法保持线性增长
    处理器的存储器带宽无法满足处理能力的提升

你可能感兴趣的:(CUDA开发)