CUDA(一)周斌

CPU结构和性能优化

流水线 Pipelining
分支预测 Branch Prediction
超标量 Superscalar
乱序执行 Out-of-Order(OoO) Execution
存储器层次 Memory Hierarchy
矢量操作 Vector Operations
多核处理 Multi-Core

优化目标\frac{cycles}{instruction}\times \frac{seconds}{cycle}:每条指令的时钟周期数CPI X 时钟周期,两个指标不独立,只能取这种

桌面应用Desktop Programs:

  1.   轻量级进程,少量线程Lightly threaded
  2. 大量分支和交互操作 Lots of branches
  3. 大量的存储器访问Lots of memory accesses
  4. 真正用于数值运算的指令很少

简单的CPU

取指-->译码-->执行-->访存-->写回

Fetch-->Decode-->Execute-->Memory-->Writeback

流水线Pipeline

1、利用指令级并行instuction-level parallelism(iLP)

     极大的减小时钟周期Significantly reduced clock period

带来的问题

     增加了一些延时和芯片面积slight latency & area increase (pipleline latches)

     依赖关系的指令

    分支怎么处理

   溧水县长度Alleged Pipeline Lengths

2、旁路Bypassing

     不用等某条流水线都执行完成,直接将要计算的数据获取到之后进行计算。直接开了一条旁路

3、停滞Stalls

     若指令间有依赖关系,必须等待执行完成

4、分支Branches

分支预测Branch Prediction

   1、猜测下一条指令是什么Guess what instruction comes next

    2、基于过去的分支记录Based off branch history

    3、预测器>90%Modern predictors >90% accuracy

        提升性能及能量效率Raise performance and energy efficiency

    面积增加Area increase

    可能增加延时Potential fetch stage latency increase

分支断定Another option:Predication

   1、用条件语句替换分支Replace branches with conditional instructions

       不使用分支预测器Avoids branch perdictor

         减少了面积,减少了错误预测avoids area penaity , misprediction penalty

          introduces unnecessary nop if predictable branch 

       在GPU中使用分支断定   GPUs also use predication

      提升IPC

              常规IPC(instructions /cycle)受限于I instruction/clock

              超标量Superscalar-增加流水线宽度,器件多了

超标量Superscalar

             峰值IPC为N(N路超标量)Peak IPC now at N(for N-way superscalar)

                       分支和调度会增加开销

                      需要很多的技巧逼近峰值

          增加了面积Area increase

                 N倍资源使用

                 旁路网络N^{2}

                需要更多的寄存器和存储器带宽

指令调度Scheduling

寄存器重命名Register Renaming

               替换寄存器

乱序执行Out-of-Order(OoO)Execution

              1、重排指令,获得最大的吞吐率

            Fetch-->Decode-->Rename-->Dispatch-->Issue-->Register-Read-->Execute-->Memory-->Writeback-->Commit

            2、重排缓冲区Reorder Buffer (ROB)记录所有执行中的指令状态

           3、发射队列/调度器 Issue Queue /Scheduler选择下一条指令

            IPC接近理想状态

                    面积增加了

                     功耗增加了

           顺序执行Modern Desktop/Mobile In-order CPUs

           乱序执行Modern Desktop/Mobile OoO CPUs

存储器架构/层次 Memory Hierarchy

     存储器越大越慢

缓存Caching

    将数据放置在尽可能接近的位置

   利用:

          时间临近性:刚刚使用过的数据很可能会在使用

         空间临近性:倾向于使用周围临近的数据

缓存层次Cache Hierarchy

          硬件管理

            L1 Instruction /Data caches

           L2 unified cache 

           L3 unified cache

           软件管理

            Main memory 

            Disk

存储器另外的设计考虑

             分区Banking:避免多端口

              一致性Coherency

              控制器Memory Controller:多个通道,增加带宽

CPU内部并行性

    指令级并行Instruction-Level(ILP) extraction

              超标量 Superscalar

              乱序执行 Out-of-order

    数据级并行Data-Level Parallelism(DLP):适量计算Vectors

    线程级并行Thread-Level Parallelism(TLP)

               同步多线程 Simultaneous Multithreading (SML)

               多核Multicore

向量运算Vectors Motivation相同处理的事情同时去做

数据级并行Data-level Parallelism

            单指令多数据Single Instruction Multiple Data(SIMD)

                    执行单元(ALU)很宽

                    寄存器也很宽

X86 的向量运算

      SSE2

          4宽度浮点或者整数指令

          Intel Pentium 4 onwards

          AMD Athlon 64 onwards

      AVX

            8宽度浮点或整数指令

             Intel Sandy Bridge

             AMD Buildozer

线程级并行 Thread-Level Parallelism

               线程组成

                     指令流Instuction streams

                    私有的寄存器,程序计数器,栈Priavte PC ,registers, stack

                    共享的全局变量,堆Shared globals,heap

                程序员可以创建和销毁

                程序员和OS都可以调度

多核Multicore

               将流水线完整复制

                    完整的核、除了最后一级缓存外,不共享其他资源

                   继续保持摩尔定律

                 带来了多核线程和利用率问题

                  死锁、一致性和同一性Locks,Coherence, and Consistency(加锁,缓存一致性协议Conherence谁的数据是正确的 ,存储器同一性模型Consistency什么样的数据是正确的)

CPU系统现实困境:能量墙Power Wall,功耗的提升-->面积不能无限的增加,主频反而下降。

新时代的计算技术:并行计算

      常规传统单核处理器遇到物理约束

                 时钟频率(perf/clock)无法保持线型增长

新摩尔定律

                 处理器越来越胖,核越来越多

                单核性能不会大幅提升

          另一堵墙:存储器

处理器的存储器带宽无法满足处理能力的提升。

结论

     1、CPU为串行程序优化

             Pipelines, branch prediction , superscalar ,OoO

             Reduce execution time with high clock speeds and high utilization

      2、缓慢的内存带宽(存储器带宽)将会是大问题

     3、并行处理器是方向

             Sandy Bridge-E 6-12活动线程

猜你喜欢

转载自blog.csdn.net/fanre/article/details/83039057
今日推荐