TMS320C55x的CPU体系结构

C55x根据功能的不同将CPU分为4个单元,即指令缓冲单元(I)、程序流程单元(P)、地址流程单元(A)和数据计算单元(D)。

C55x有1条32位的程序数据总线(PB),5条16位数据总线(BB、CB、DB、EB、FB)和1条24位的程序地址总线及5条23位的数据地址总线,这些总线分别与CPU相连。

总线通过存储器接口单元(M)与外部程序总线和数据总线相连,实现CPU对外部存储器的访问。

读程序地址总线(PAB)上传送24位的程序代码地址,由读程序数据总线(PB)将32位的程序代码送入指令缓冲单元I进行译码。

3条读数据地址总线(BAB、CAB、DAB)与3条读数据数据总线(BB、CB、DB)配合使用,地址总线指定数据空间或I/O空间地址,通过数据总线将16位数据传送到CPU的各个功能单元。

其中,BB只与D单元相连,用于实现从存储器到D单元乘法累加器(MAC)的数据传送。特殊的指令也可以同时使用BB、CB和DB来读取三个操作数。

2条写数据地址总线(EAB、FAB)与两条写数据数据总线(EB、FB)配合使用,地址总线指定数据空间或I/O空间地址,通过数据总线,将数据从CPU的功能单元传送到数据空间或I/O空间。

所有数据空间地址由A单元产生。EB和FB从P单元、A单元和D单元接收数据,对于同时向存储器写两个16位数据的指令要使用EB和FB,而对于完成单写操作的指令只使用EB。

这种并行的多总线结构,使CPU能在一个CPU周期内完成1次32位程序代码读、3次16位数据读和两次16位数据写。

指令缓冲单元(I)

C55x的指令缓冲单元(I单元)由指令缓冲队列IBQ(Instruction Buffer Queue)和指令译码器组成。在每个CPU周期内,I单元将从读程序数据总线(PB)接收的4Bytes(32位)程序代码放入指令缓冲队列。指令译码器从队列中取出程序代码,进行指令译码。

CPU执行一条指定的指令时,必须首先分析这条指令的操作码是什么,以决定操作的类别和方法,然后才能控制其他各部件协同完成指令表达的功能。这个分析工作由指令译码器来完成

指令译码器从队列中取6Bytes(48位)程序代码,根据指令的长度可对8位、16位、24位、32位和48位的变长指令进行译码,然后把译码数据送入P单元、A单元和D单元去执行。

程序流程单元(P)

程序流程单元(P单元)由程序地址产生电路和寄存器组构成。程序流程单元产生所有程序空间的地址,并控制指令的读取顺序。

程序地址产生逻辑电路的任务是产生读取程序空间的24位地址。一般情况下,它产生的是连续地址,如果指令要求读取非连续地址的程序代码时,程序地址产生逻辑电路能够接收来自I单元的立即数和来自D单元的寄存器值,并将产生的地址传送到PAB。

在P单元中使用的寄存器分为5种类型。

地址流程单元(A)

地址流程单元包括数据地址产生电路、算术逻辑电路和寄存器组构成。

数据地址产生电路(DAGEN)能够接收来自I单元的立即数和来自A单元的寄存器产生读取数据空间的地址。

A单元包括一个16位的算术逻辑电路(ALU),ALU可以完成算术运算、逻辑运算、位操作、移位、测试等操作。

数据计算单元(D)

数据计算单元(D单元)由移位器、算术逻辑单元ALU、乘法累加器MAC和寄存器组构成。D单元包含了CPU的主要运算部件。

Last modification:August 24, 2021
求观众老爷打赏,揭不开锅了。