深入理解CPU和异构计算芯片GPU/FPGA/ASIC (下篇)

3.2.1 CPU计算能力分析

这里CPU计算能力用Intel的Haswell架构进行分析,Haswell架构上计算单元有2个FMA(fused multiply-add),每个FMA可以对256bit数据在一个时钟周期中做一次乘运算和一次加运算,所以对应32bit单精度浮点计算能力为:(256bit/32bit) 2(FMA) 2(乘和加) = 32 SP FLOPs/cycle,即每个时钟周期可以做32个单精度浮点计算。

CPU峰值浮点计算性能 = CPU核数 CPU频率 每周期执行的浮点操作数。已Intel的CPU型号E5-2620V3来计算峰值计算能力为 = 6(CPU核数) 2.4GHz(CPU频率) 32 SP FLOPs/cycle = 460.8 GFLOPs/s 即每秒460G峰值浮点计算能力。

CPU芯片结构是否可以充分发挥浮点计算能力?CPU的指令执行过程是:取指令 ->指令译码 ->指令执行,只有在指令执行的时候,计算单元才发挥作用,这样取指令和指令译码的两段时间,计算单元是不在工作的,如图4所示。

图4 CPU指令执行流程

CPU为了提高指令执行的效率,在当前指令执行过程的时候,预先读取后面几条指令,使得指令流水处理,提高指令执行效率,如图5所示。指令预先读取并流水执行的前提是指令之间不具有相关性,不能一个指令的如何执行需要等到前面一个指令执行完的结果才可以获知。

图5 CPU指令流水执行

CPU作为通用处理器,兼顾计算和控制,70%晶体管用来构建Cache 还有一部分控制单元,用来处理复杂逻辑和提高指令的执行效率,如图6所示,所以导致计算通用性强,可以处理计算复杂度高,但计算性能一般。

图6CPU结构

通过CPU计算性能分析,直接提高计算性能方向为:增加CPU核数、提高CPU频率、修改CPU架构增加计算单元FMA(fused multiply-add)个数。这3个方向中,直接增加CPU核数对于计算能力提升最高,但是带来芯片功耗和价格的增加,因为每个物理核中只有30%的晶体管是计算单元。提高CPU频率,提升的空间有限,而且CPU频率太高会导致芯片出现功耗过大和过热的问题,因此英特尔等芯片制造商目前走多核化的路线,即限制单个微处理器的主频,通过集成多个处理器内核来提高处理性能。修改CPU架构增加计算单元FMA个数,目前英特尔按照“Tick-Tock”二年一个周期进行CPU架构调整,从2016年开始放缓至三年,更新迭代周期较长。

3.2.2 GPU计算能力分析

### 异构计算CPUGPUFPGAASIC协同发展趋势 #### 多元化的硬件需求驱动异构计算 随着人工智能、大数据分析以及高性能计算等领域的发展,单一类型的处理器已无法满足多样化的工作负载需求。因此,多种处理器协同工作的模式逐渐成为主流。在这一背景下,CPU作为通用型处理器负责复杂控制流的任务处理[^2],而GPU凭借强大的并行计算能力被广泛应用于深度学习训练推理场景[^1]。 与此同时,FPGA以其高度灵活的可重构特性,在某些特定领域展现出独特优势[^3]。例如,通过重新配置内部逻辑电路来适配不同应用场景下的加速需求。相比之下,ASIC则针对某一类具体任务进行了极致优化,从而实现了最低功耗与最高性能的目标,像谷歌推出的TPU就是典型代表之一[^4]。 #### 各种处理器间的协作机制 为了充分发挥每种设备的优势,现代计算机系统设计往往采用混合架构方式实现它们之间的高效配合: - **数据预处理阶段**:由传统意义上的中央处理器(CPU)完成初始化设置等工作; - **大规模矩阵运算部分交给图形处理器(GPU)**执行因为这类操作正好契合后者擅长之处即SIMD(single instruction multiple data)[^1]; - 对于那些频繁发生却简单固定的子过程,则可以考虑利用现场可编辑门阵列(FPGAs),这样既能获得接近专用集成电路(ASICS)级别的速度提升又能保留一定程度上的适应变化的能力[^3]. - 特定业务流程下还可以引入完全定制好的应用特定标准产品(Application-Specific Integrated Circuits, ASICS), 如前所述用于神经网络前向传播计算中的张量处理单元(Tensor Processing Unit , TPU)[^4]. 这种多层次分工合作不仅能够有效降低整体能耗水平而且还能显著缩短应用程序运行时间. ```python # 示例代码展示如何在一个框架内调用不同类型硬件资源进行联合计算 import tensorflow as tf with tf.device('/cpu:0'): # 将一些轻量级但复杂的指令分配给CPU a = tf.Variable([[1.0, 2.0], [3.0, 4.0]]) with tf.device('/gpu:0'): # 让重负荷数值计算跑在GPU上面以加快速度 b = tf.matmul(a,a) session=tf.Session() result=session.run(b) print(result) ``` 以上Python脚本片段演示了TensorFlow库是如何轻松指定哪些操作应该发生在哪个物理位置之上进而达到最佳效果的例子。 #### 面临挑战与发展前景 尽管如此美好的愿景描绘出来未来发展方向,然而实际落地过程中仍然存在不少难题亟待解决: 一方面要克服软硬件兼容性障碍确保各类组件之间无缝衔接;另一方面也要持续探索新型编程模型使得开发者更容易编写跨平台的应用程序而不必关心底层细节差异等问题.[^2] 展望今后几年里,预计会有更多创新成果涌现进一步推动整个行业向前迈进一大步。这其中包括但不限于改进现有技术路线图或者开辟全新可能性方向等等.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值