FusionF1 DSP结构知识

本文详细介绍了FusionF1 DSP的结构,包括处理流水、指令取指、加速计算方法如SIMD和零开销循环。特别讨论了地址生成机制,支持非对齐地址读写,并解释了地址自动更新的前缀和后缀含义。此外,还涵盖了零开销循环的概念,以及如何通过SIMD指令提高运算效率。
摘要由CSDN通过智能技术生成

完美不是一个小细节;但注重细节可以成就完美。–米开朗基罗

专用DSP和通用处理器最大的差别在于,有很多特殊的计算处理来提高运算效率。在提高运算效率方便,从大的方面可以优化算法,而小的方面可以细微到通用寄存器的使用、变量类型的定义等。使用F1 DSP有一段时间,一直没有细致地了解其结构细节。而了解其工作细节,可以更好地提高运算效率。如下的描述,一部分是文档中直接得到的信息,而另外一部分为实验结果的理解。

整体结构

在这里插入图片描述
说明:

  • 文档上F1是SIMD结构的处理器,上图中AE_DR可以同时处理2个24bits、2个32bits或4个16bits格式的数据;
  • 更像是MIMD的处理器;其属于VLIW结构,支持同时执行两个操作;理解上上图中不同slot亦即slot0、slot1;或同一slot中不同单元可以同时执行;
  • 图中的 AE_DR为12个64bit寄存器,而AR为32bits寄存器,其个数可以配置;
  • 图中的slot0及AR Registers为文档core Architecture部分;

处理流水

指令说明的流水级:

  • P-Stage: PC Generation
  • I-Stage: Instruction Alignment
  • R-Stage (0): Decode and Dispatch
  • E-Stage (1): Execute, Branch Resolution, and Load/Store Address Generation
  • M-Stage (2): Memory Access
  • W-Stage (3): Commit and Writeback

5级流水执行图
pipeline

关于取指

支持两类长度的指令: 16比特和24比特(在汇编指令中能看到.n结尾的指令,理解上应该时16比特的)。取指时可以按照64比特对齐取指,所以每次取指消耗1个cycle,而非每个指令消耗一个cycle。这样的memory貌似会有额外开销?函数编译的IRAM地址按照64比特对齐。

关于加速计算

DSP可以使用特定的方法来加速计算,如SIMD、地址产生器、零开销循环、特殊功能指令等等。

地址生成

<
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值