目录

  • 概述
  • C66x处理器内核
  • C66x流水线结构

 

概述

C66X DSP是最新一代定点和浮点DSP,由4个乘法器组成,以实施单精度浮点运算。C66X DSP内核可同时运行多大8项浮点乘法运算,加之高达1.4GHz的时钟频率,使其具有很高的浮点处理性能。将多个C66x DSP内核与其他内核融合,即可创建出具有初中性能的多核片上系统器件。本文以TMS320C6678为例,介绍C66x内核。

TMS320C6678具有8个C66x内核,内核工作主频最高可达1.4GHz,理论上具有179.2(22.4x8)GFLOP和358.4(44.8x8)GMAC的处理性能。每个处理器内部有多级存储器:C66x内核中有L1P、L1D、L2SRAM;多核共享存储器为MSM SRAM。处理器具有多核导航器、网络协处理器、数据包加速器、信号量、PLL等多核共享的一些外部资源,同时提供如SRIO、PCIE、EMIF等多种外部接口。C6678的处理器架构如下图所示:

TI DSP TMS320C66x (1)硬件介绍_C66X

C66x处理器内核

C66x内核是C6678处理器的核心,用于完成高性能处理任务。

C66x内核由以下组件组成:C66xDSP、一级程序存储器控制器(L1P)、一级数据存储器控制器(L1D)、二级存储器控制(L2)、外部存储器控制器(EMC)、扩展存储器控制器(XMC)、带宽管理(BWM)、中断控制器和休眠控制器(PDC)组成。内核结构如下:

TI DSP TMS320C66x (1)硬件介绍_AM5728_02


C66xDSP由8个功能单元,2个寄存器组和2条数据通路组成,结构如下图所示。两个寄存器组共有64个寄存器,分为A和B两组,每组由32个32-bit寄存器组成。通用寄存器可以用来存放数据,也可以当作地址指针。所支持的类型有8-bit打包数据,16-bit打包数据,32-bit数据,40-bit数据和64-bit数据,乘法支持128-bit数据。8个功能存储单元(.L1 .S1 .M1 .D1 .L2 .S2 .D2 .S2),每个功能单元的每个时钟周期都能够执行一条指令。.S单元执行通常的移位、分支及比较程序,.L单元执行通常的算数及逻辑程序;所有乘法指令都在.M单元执行(一个.M单元包含16组16x16bit乘法器,1个周期内可执行一次单精度浮点乘法运算,4个周期可执行一次双精度浮点乘法运算)。.D单元主要完成从存储器加载(load)数据到寄存器堆(register file),并从寄存器堆保存(store)结果到存储器。

TI DSP TMS320C66x (1)硬件介绍_DSP_03


TI DSP TMS320C66x (1)硬件介绍_C66X_04

C66x流水线结构

计算机流水线(Pipeline)是Intel首次在486芯片中开始使用的。在CPU中把指令的执行分成若干个不同的功能单元来实现,由若干个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成若干步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。

C66x DSP的流水结构共分三个阶段:指令预取(Fetch)、指令解码(Decode)、指令执行(Execute)。各阶段的详细流水线结构如下:

TI DSP TMS320C66x (1)硬件介绍_寄存器_05

阶段

流水名称

含义

Fetch

PG

Program address generate:产生程序地址

PS

Program address send:发送程序地址

PW

Program (memory) access ready wait:等待程序内存响应

PR

Program fetch packet receive:接收从内存传回的指令包

Decode

DP

Instruction dispatch:将指令分配到相应的功能单元

DC

Instruction decode:将指令在相应的功能单元进行译码

Execute

E1

执行指令,不同指令拥有不同的执行流水操作

...

E5

  • Fetch阶段的流水操作图示:
  • TI DSP TMS320C66x (1)硬件介绍_C66X_06

  • Decode 阶段的流水操作图示:
  • TI DSP TMS320C66x (1)硬件介绍_AM5728_07

  • Execute 阶段的流水操作图示:
  • TI DSP TMS320C66x (1)硬件介绍_数据_08