1.1C55x的CPU体系
C55x有1条32位的程序数据总线(PB),5条16位数据总线(BB、CB、DB、EB、FB)和1条24位的程序地址总线及5条23位的数据地址总线,这些总线分别与CPU相连。总线通过存储器接口单元(M)与外部程序总线和数据总线相连,实现CPU对外部存储器的访问。这种并行的多总线结构,使CPU能在一个CPU周期内完成1次32位程序代码读、3次16位数据读和两次16位数据写。C55x根据功能的不同将CPU分为4个单元,即指令缓冲单元(I)、程序流程单元(P)、地址流程单元(A)和数据计算单元(D)。
读程序地址总线( PAB )上传送 24 位的程序代码地址,由读程序数据总线( PB )将 32 位的程序代码送入指令缓冲单元 I 进行译码。
3 条读数据地址总线( BAB 、 CAB 、 DAB )与 3 条读数据数据总线( BB 、 CB 、 DB )配合使用,即 BAB 对应 BB 、 CAB 对应 CB 和 DAB 对应 DB 。地址总线指定 数据空间或 I/O 空间地址,通过数据总线将 16 位数据传送到 CPU 的各个功能单 元。其中, BB 只与 D 单元相连,用于实现从存储器到 D 单元乘法累加器( MAC )的数据传送。特殊的指令也可以同时使用 BB 、 DB 和 CB 来读取三个操作数。
2 条写数据地址总线( EAB 、 FAB )与两条写数据数据总线( EB 、 FB )配合使 用,即 EAB 对应 EB 、 FAB 对应 FB 。地址总线指定数据空间或 I/O 空间地址,通 过数据总线,将数据从 CPU 的功能单元传送到数据空间或 I/O 空间。所有数据 空间地址由 A 单元产生。 EB 和 FB 从 P 单元、 A 单元和 D 单元接收数据,对于同 时向存储器写两个 16 位数据的指令要使用 EB 和 FB ,而对于完成单写操作的指 令只使用 EB 。
1.2 指令缓冲单元(I unit)
C55x 的指令缓冲单元由指令缓冲队列 IBQ ( Instruction Buffer Queue )和指令 译码器组成。在每个 CPU 周期内, I 单元将从读程序数据总线接收的 4B 程序代 码放入指令缓冲队列,指令译码器从队列中取 6B 程序代码,根据指令的长度可 对 8 位、 16 位、 24 位、 32 位和 48 位的变长指令进行译码,然后把译码数据送入 P 单元、 A 单元和 D 单元去执行。IBQ最大可以存放64b的待译码指令。
1.3 程序流单元(P unit)
程序流程单元由程序地址产生电路和寄存器组构成。程序流程单 元产生所有程序空间的地址,并控制指令的读取顺序。
程序地址产生逻辑电路的任务是产生读取程序空间的 24 位地 址。一般情况下,它产生的是连续地址,如果指令要求读取非连 续地址的程序代码时,程序地址产生逻辑电路能够接收来自 I 单元 的立即数和来自 D 单元的寄存器值,并将产生的地址传送到 PAB 。
在 P单元中使用的寄存器分为5种类型。
( 1 )程序流寄存器:包括程序计数器( PC )、返回地址寄存器 ( RETA )和控制流程关系寄存器( CFCT )。
( 2 )块重复寄存器:包括块重复寄存器 0 和 1 ( BRC0 , BRC1 ) 、 BRC1 的保存寄存器( BRS1 )、块重复起始地址寄存器 0 和 1 ( RSA0 , RSA1 )以及块重复结束地址寄存器 0 和 1 ( REA0 , REA1 )。
( 3 )单重复寄存器:包括单重复计数器( RPTC )和计算单重复 寄存器( CSR )。
( 4 )中断寄存器:包括中断标志寄存器 0 和 1 ( IFR0 , IFR1 )、 中断使能寄存器 0 和 1 ( IER0 , IER1 )以及调试中断使能寄存器 0 和 1 ( DBIER0 , DBIER1 );
( 5 )状态寄存器:包括状态寄存器 0 , 1 , 2 和 3 ( ST0-55 , ST1-55 , ST2-55 和 ST3-55 )。
1.4 地址流单元(A unit)
地址流程单元包括数据地址产生电路(DAGEN)、算术逻辑电路(ALU)和寄存器组 构成。
数据地址产生电路( DAGEN )能够接收来自 I 单元的立即数 和来自 A 单元的寄存器产生读取数据空间的地址。对于使用间接 寻址模式的指令,由 P 单元向 DAGEN 说明采用的寻址模式。
A 单元包括一个 16 位的算术逻辑电路( ALU ),它既可以接 收来自 I 单元的立即数,也可以与存储器、 I/O 空间、 A 单元寄存器 、 D 单元寄存器和 P 单元寄存器进行双向通信。 ALU 可以完成算术 运算、逻辑运算、位操作、移位、测试等操作。
A 单元包括的寄存器有以下几种类型。
( 1 )数据页寄存器:包括数据页寄存器( DPH , DP )和接口数 据页寄存器( PDP );
( 2 )指针:包括系数数据指针寄存器( CDPH , CDP )、栈指针 寄存器( SPH , SP , SSP )和 8 个辅助寄存器( XAR0 ~ XAR7 );
( 3 )循环缓冲寄存器:包括循环缓冲大小寄存器( BK03 , BK47 , BKC )、循环缓冲起始地址寄存器( BSA01 , BSA23 , BSA45 , BSA67 , BSAC );
( 4 )临时寄存器:包括临时寄存器( T0 ~ T3 )。
1.5 数据计算单元( D )
数据计算单元由移位器、算术逻辑电路、乘法累加器和寄存器组 构成。 D 单元包含了 CPU 的主要运算部件。
D 单元移位器能够接收来自 I 单元的立即数,能够与存储器、 I/O 空间、 A 单元寄存器、 D 单元寄存器和 P 单元寄存器进行双向通 信,此外,还可以向 D 单元的 ALU 和 A 单元的 ALU 提供移位后的 数据。移位器可完成以下操作:
( 1 )对 40 位的累加器可完成向左最多 31 位和向右最多 32 位的移位 操作,移位数可从临时寄存器( T0 ~ T3 )读取或由指令中的常数 提供;
( 2 )对于 16 位寄存器、存储器或 I/O 空间数据可完成左移 31 位或 右移 32 位的移位操作;
( 3 )对于 16 位立即数可完成向左最多 15 位的移位操作。
D 单元的 40 位算术逻辑电路可完成以下操作:
( 1 )完成加、减、比较、布尔逻辑运算和绝对值运算等操作;
( 2 )能够在执行一个双 16 位算术指令时同时完成两个算术操作;
( 3 )能够对 D 单元的寄存器进行设置、清除等位操作。
|