第二章 TMS320C6000 CPU结构与指令系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Master Port (CPU/ cache req.)
256
128
数据存储器控制器 (DMC)
存储器保护 带宽管理器
32
中断&异常 控制器 功率控制
新增的特点 由C64x改进
L1D Cache/SRAM
2.1.1 CPU结构
(1)程序取指单元
(2)指令分配单元 (3)指令译码单元 (4)32个或64个32位寄存器 (5)两个数据通路,每通路4个功能单元
第二章 TMS320C6000 CPU结 构与指令系统
2.1 CPU结构 2.2 CPU控制寄存器 2.3 流水线 2.4 汇编指令系统
2.1 CPU结构
C6000系列DSP
第1代VelociTI.1 CPU内核结构
C62x/C67x
程序取指 指令调度 指令译码 数据通路1 A寄存器堆 A15~A0 数据通路2 B寄存器堆 B15~B0 控制 逻辑 Test 仿真接口 L1 S1 M1 D1 D2 M2 S2 L2 中断
To EDMA 3.0
L2 Cache/SRAM
256
IDMA
增加了新的指令
32-位乘法指令,提高精度 扩展了算术指令,以加速FFT和DCt运算 改进复数乘法指令 增加了双点积指令,改善 FIR 循环的吞 吐率 增加了平行打包指令 增强了“高斯”域乘法指令
DMA Slave I/F
TMS320C6000
中所有指令均按照取指 (Fetch)、译码(Decode)和执行 (Execute)3级(Stage)流水线运行,每 一级又包含几个节拍(Phase)。所有指令 取指级有 4 个节拍,译码级有 2 个节拍。执 行级对不同类型的指令有不同数目的节拍。
流水线节拍
取指
PG:程序地址产生源自文库
.D
.M
Average AVG2 AVG4 Shifts ROTL SSHVL SSHVR
Multiplies MPYHI Shift & Merge MPYLI SHLMB MPYHIR SHRMB MPYLIR Load Constant MPY2 MVK (5-bit) SMPY2 Bit Operations DOTP2 DOTPN2 BITC4 DOTPRSU2 BITR DOTPNRSU2 DEAL DOTPU4 SHFL DOTPSU4 Move GMPY4 MVD XPND2/4
PS:程序地址发送
PW:程序访问等待 PR:程序取指包接收
译码
DP:指令分配
DC:指令译码
DM64X内核
取指 分配 译码 数据通路 1 寄存器组A/16*32 数据通路 2
DP
LDDW ZERO SUBSP ADDSP MPYSP MPYSP CMPLT B SP
DC ADDSP CMPLTSP MPYSP LDDW MPYSP ABSSP ADDSP
通用寄存器组
寄存器组A -16个32位寄存器 A0-A31 寄存器组B -16个32位寄存器 B0-B31
功能单元
.L单元:完成算术和逻辑运算
.S单元:完成程序跳转指令 .M单元:完成乘法运算 .D单元:完成数据读取/写入
交叉通路
每个功能单元可以直接与所处的数据通路的寄存器 组进行读写操作,即.L1、.S1、.D1和 .M1 可以直 接读写寄存器组 A,而 .L2、.S2、.D2 和 .M2 可 以直接读写寄存器组 B。
资源限制
使用相同功能单元的指令限制
使用交叉通路的限制 数据读写的限制 使用40位长定点类型数据的限制 寄存器读取限制 寄存器存储限制
2.4 流水线
现代微处理器是用结构的复杂性来换取速度的提高 的。它把指令的处理分成几个子操作,每个子操作 在微处理器内部由不同的部件来完成。对微处理器 的每个部件来说,每隔1 个时钟周期即可进入 1 条 新指令,这样在同一时间内,就有多条指令交迭地 在不同部件内处理,这种工作方式称为“流水线” (pipeline)工作方式。TMS320C6000 的特殊结构 又可使多个指令包(每包最多可达 8 条指令)交迭 地在不同部件内处理,大大提高了微处理器的吞吐 量。
方式,指示警告状态
2.3 DSP 指令系统
寻址方式:
立即数寻址 2 寄存器寻址 3 寄存器间接寻址
1
寄存器间接寻址
线性寻址方式
循环寻址方式
指令集
算术运算指令
逻辑及位域操作指令 MV类传送指令 程序控制指令
C67X指令集
.S Unit .L Unit
ABS ADD AND CMPEQ CMPGT CMPLT LMBD MV NEG NORM NOT OR SADD SAT SSUB SUB SUBC XOR ZERO ADDSP ADDDP SUBSP SUBDP INTSP INTDP SPINT DPINT SPRTUNC DPTRUNC DPSP MPYSP MPYDP MPYI MPYID IDLE
C6000系列DSP
第2代VelociTI.2 CPU内核结构
C64x CPU
取指 指令调度 高级指令打包 指令译码 数据通路 1 寄存器堆 A A15~A0 A31~A16 L1 + + + + S1 + + + + M1 D1 + + D2 + + 数据通路 2 寄存器堆 B B15~B0 B31~B16 M2 S2 + + + + L2 + + + + 高级在线仿真 控制寄存器 中 断 控 制
块尺寸字段
BK0 和 BK1 含有 5 位数值, 用于计算循环寻址循环块的尺寸,块尺寸与 BK0或者 BK1 内 5 位数值 N 的关系为:块 尺寸=2(N+1)
控制状态寄存器(CSR)
E1 程序节拍计数器
TMS320C67X扩展控制寄存器
用于支持.L和.M运算,指定希望的浮点舍入
控制 寄存器
双32-位取数/存数通路
• 取数/存数分离结构 • CPU • 双数据通路 • 8个运算单元 • 8条32-位指令/周期 • 32-位寻址空间 • 整数指令特性 • 数据可按字节寻址(8-, 16-, 32-位数据) • 8-位溢出保护 • 饱和 • 位操作:提取、置位、清 零 • 位计数 • 归一化
两个寄存器组通过 1X 和 2X 交叉通路也可以与另一侧的功 能单元相连。1X 交叉通路允许数据通路 A 的功能单元从寄 存器组 B 读它的源操作数,2X 交叉通路则允许数据通路 B 的功能单元从寄存器组 A 读它的源操作数。
数据存取通道
用于寄存器组A LD2 用于寄存器组B ST1、ST2 用于保存及存器中的值到存储器 中
寄存器组B/16*32
E
L1 S1 M1 D1 D2 M2 S2 L2
L1
S1
M1
D1
L2
S2
M2
D2
执行
流水线操作
不同指令的流水线操作
流水线性能考虑
在一个取指包中有多个执行包的流水线操作
多周期
NOP 指令对流水线运行的影响 访问存储器对流水线运行的影响
128
256
带宽管理器 存储器保护
256 256
256
外部存储器 控制器 (EMC)
128
C64x+ 取指 软件流水线缓冲器 CPU 16/32-位指令调度 指令译码 数据通路1 数据通路2 M1 M2 L1 S1 xx D1 D2 xx S2 L2 xx xx
A寄存器堆 B寄存器堆 64
L1P和L1D既可配置为Cache,也可配置 为SRAM 改进了Cache一致性协议 增加了Cache冻结功能 增加了内部DMA控制器 增加了带宽管理功能 增加了存储器保护
双64-位取数/存数通路
C6000系列DSP
第3代VelociTI.3 CPU内核结构
L1P Cache/SRAM
256
进一步改进内部存储器结构:
高级事件触发 (AET)
TMS320C64x+™ 程序存储器控制器 DSP Core (PMC)
128
统一的存储器 控制器 (UMC)
带宽管理器 存储器保护
.L
Dual/Quad Arith ABS2 ADD2 ADD4 MAX MIN SUB2 SUB4 SUBABS4 Bitwise Logical ANDN
Data Pack/Un PACK2 PACKH2 PACKLH2 PACKHL2 PACKH4 PACKL4 UNPKHU4 UNPKLU4 SWAP2/4
LD1
数据地址通道
数据地址通路
DA1 和 DA2 来自数据通路 的 .D 功能单元,地址通路与两侧数据通道 都相连,这使一个寄存器组产生的数据地址 能够支持任意一侧寄存器组对数据存储器的 读写操作。
2.2 CPU控制寄存器
寻址模式及存器(AMR)
在寻址模式寄存器中,对每个寄存器都有 2 位字段 用来选择地址修改模式:线性(缺省)或循环模式。 对于循环寻址,这个字段也指定哪个 BK(block size)字段用作循环缓冲区。此外,缓冲区的值必 须与循环块尺寸相匹配,模式选择字段和块尺寸字 段示于图 2-5,模式选择字段编码示于表 2-4。寻址 模式寄存器(AMR)在复位时初始化为零,其保留 部分总为零。
C64x指令集
.S
Dual/Quad Arith SADD2 SADDUS2 SADD4 Data Pack/Un PACK2 PACKH2 PACKLH2 PACKHL2 Bitwise Logical UNPKHU4 ANDN UNPKLU4 Shifts & Merge SWAP2 SPACK2 SHR2 SPACKU4 SHRU2 SHLMB SHRMB Dual Arithmetic Mem Access ADD2 LDDW SUB2 LDNW LDNDW Bitwise Logical STDW AND STNW ANDN STNDW OR XOR Load Constant MVK (5-bit) Address Calc. ADDAD Compares CMPEQ2 CMPEQ4 CMPGT2 CMPGT4 Branches/PC BDEC BPOS BNOP ADDKPC
‘C67x
.M Unit
MPY MPYH MPYLH MPYHL NOP SMPY SMPYH
.D Unit
ADD NEG ADDAB (B/H/W) STB (B/H/W) ADDAD SUB LDB (B/H/W) SUBAB (B/H/W) LDDW ZERO MV
No Unit Used
Note: Refer to the 'C6000 CPU Reference Guide for more details.
.S .L
.D
.M
ADD ADDK ADD2 AND B CLR EXT MV MVC MVK MVKL MVKH
NEG NOT OR SET SHL SHR SSHL SUB SUB2 XOR ZERO
ABSSP ABSDP CMPGTSP CMPEQSP CMPLTSP CMPGTDP CMPEQDP CMPLTDP RCPSP RCPDP RSQRSP RSQRDP SPDP
(6)控制寄存器
(7)控制逻辑 (8)
测试、仿真和中断逻辑
2.1.2 CPU 数据通路
(1) 2 个通用寄存器组(A 和 B) (2) 8 个功能单元 (.L1、.L2、.S1、.S2、.M1、.M2、.D1 和.D2) (3) 2 个数据读取通路(LD1 和 LD2) (4) 2 个数据存储通路(ST1 和 ST2) (5) 2 个寄存器组交叉通路(1X 和 2X) (6) 2 个数据寻址通路(DA1 和 DA2)
x x
x x x x
x x
x x x x
• 对第1代VLIW内核结构进 行扩展 • 支持 4 个 16- 位和 8 个 8- 位 连 乘 加 MAC 指 令 , 提 高 运算的并行度 • 寄存器数量增加了 1 倍, 取数/存数的数据通道也 从 32- 位增加为 64- 位,实 现带宽的加倍 • 增强在线仿真能力 • 增加了新的指令以加速宽 带和图像处理等应用 • 改善正交设计,使频繁使 用的指令获得更多的功能 单元
256
128
数据存储器控制器 (DMC)
存储器保护 带宽管理器
32
中断&异常 控制器 功率控制
新增的特点 由C64x改进
L1D Cache/SRAM
2.1.1 CPU结构
(1)程序取指单元
(2)指令分配单元 (3)指令译码单元 (4)32个或64个32位寄存器 (5)两个数据通路,每通路4个功能单元
第二章 TMS320C6000 CPU结 构与指令系统
2.1 CPU结构 2.2 CPU控制寄存器 2.3 流水线 2.4 汇编指令系统
2.1 CPU结构
C6000系列DSP
第1代VelociTI.1 CPU内核结构
C62x/C67x
程序取指 指令调度 指令译码 数据通路1 A寄存器堆 A15~A0 数据通路2 B寄存器堆 B15~B0 控制 逻辑 Test 仿真接口 L1 S1 M1 D1 D2 M2 S2 L2 中断
To EDMA 3.0
L2 Cache/SRAM
256
IDMA
增加了新的指令
32-位乘法指令,提高精度 扩展了算术指令,以加速FFT和DCt运算 改进复数乘法指令 增加了双点积指令,改善 FIR 循环的吞 吐率 增加了平行打包指令 增强了“高斯”域乘法指令
DMA Slave I/F
TMS320C6000
中所有指令均按照取指 (Fetch)、译码(Decode)和执行 (Execute)3级(Stage)流水线运行,每 一级又包含几个节拍(Phase)。所有指令 取指级有 4 个节拍,译码级有 2 个节拍。执 行级对不同类型的指令有不同数目的节拍。
流水线节拍
取指
PG:程序地址产生源自文库
.D
.M
Average AVG2 AVG4 Shifts ROTL SSHVL SSHVR
Multiplies MPYHI Shift & Merge MPYLI SHLMB MPYHIR SHRMB MPYLIR Load Constant MPY2 MVK (5-bit) SMPY2 Bit Operations DOTP2 DOTPN2 BITC4 DOTPRSU2 BITR DOTPNRSU2 DEAL DOTPU4 SHFL DOTPSU4 Move GMPY4 MVD XPND2/4
PS:程序地址发送
PW:程序访问等待 PR:程序取指包接收
译码
DP:指令分配
DC:指令译码
DM64X内核
取指 分配 译码 数据通路 1 寄存器组A/16*32 数据通路 2
DP
LDDW ZERO SUBSP ADDSP MPYSP MPYSP CMPLT B SP
DC ADDSP CMPLTSP MPYSP LDDW MPYSP ABSSP ADDSP
通用寄存器组
寄存器组A -16个32位寄存器 A0-A31 寄存器组B -16个32位寄存器 B0-B31
功能单元
.L单元:完成算术和逻辑运算
.S单元:完成程序跳转指令 .M单元:完成乘法运算 .D单元:完成数据读取/写入
交叉通路
每个功能单元可以直接与所处的数据通路的寄存器 组进行读写操作,即.L1、.S1、.D1和 .M1 可以直 接读写寄存器组 A,而 .L2、.S2、.D2 和 .M2 可 以直接读写寄存器组 B。
资源限制
使用相同功能单元的指令限制
使用交叉通路的限制 数据读写的限制 使用40位长定点类型数据的限制 寄存器读取限制 寄存器存储限制
2.4 流水线
现代微处理器是用结构的复杂性来换取速度的提高 的。它把指令的处理分成几个子操作,每个子操作 在微处理器内部由不同的部件来完成。对微处理器 的每个部件来说,每隔1 个时钟周期即可进入 1 条 新指令,这样在同一时间内,就有多条指令交迭地 在不同部件内处理,这种工作方式称为“流水线” (pipeline)工作方式。TMS320C6000 的特殊结构 又可使多个指令包(每包最多可达 8 条指令)交迭 地在不同部件内处理,大大提高了微处理器的吞吐 量。
方式,指示警告状态
2.3 DSP 指令系统
寻址方式:
立即数寻址 2 寄存器寻址 3 寄存器间接寻址
1
寄存器间接寻址
线性寻址方式
循环寻址方式
指令集
算术运算指令
逻辑及位域操作指令 MV类传送指令 程序控制指令
C67X指令集
.S Unit .L Unit
ABS ADD AND CMPEQ CMPGT CMPLT LMBD MV NEG NORM NOT OR SADD SAT SSUB SUB SUBC XOR ZERO ADDSP ADDDP SUBSP SUBDP INTSP INTDP SPINT DPINT SPRTUNC DPTRUNC DPSP MPYSP MPYDP MPYI MPYID IDLE
C6000系列DSP
第2代VelociTI.2 CPU内核结构
C64x CPU
取指 指令调度 高级指令打包 指令译码 数据通路 1 寄存器堆 A A15~A0 A31~A16 L1 + + + + S1 + + + + M1 D1 + + D2 + + 数据通路 2 寄存器堆 B B15~B0 B31~B16 M2 S2 + + + + L2 + + + + 高级在线仿真 控制寄存器 中 断 控 制
块尺寸字段
BK0 和 BK1 含有 5 位数值, 用于计算循环寻址循环块的尺寸,块尺寸与 BK0或者 BK1 内 5 位数值 N 的关系为:块 尺寸=2(N+1)
控制状态寄存器(CSR)
E1 程序节拍计数器
TMS320C67X扩展控制寄存器
用于支持.L和.M运算,指定希望的浮点舍入
控制 寄存器
双32-位取数/存数通路
• 取数/存数分离结构 • CPU • 双数据通路 • 8个运算单元 • 8条32-位指令/周期 • 32-位寻址空间 • 整数指令特性 • 数据可按字节寻址(8-, 16-, 32-位数据) • 8-位溢出保护 • 饱和 • 位操作:提取、置位、清 零 • 位计数 • 归一化
两个寄存器组通过 1X 和 2X 交叉通路也可以与另一侧的功 能单元相连。1X 交叉通路允许数据通路 A 的功能单元从寄 存器组 B 读它的源操作数,2X 交叉通路则允许数据通路 B 的功能单元从寄存器组 A 读它的源操作数。
数据存取通道
用于寄存器组A LD2 用于寄存器组B ST1、ST2 用于保存及存器中的值到存储器 中
寄存器组B/16*32
E
L1 S1 M1 D1 D2 M2 S2 L2
L1
S1
M1
D1
L2
S2
M2
D2
执行
流水线操作
不同指令的流水线操作
流水线性能考虑
在一个取指包中有多个执行包的流水线操作
多周期
NOP 指令对流水线运行的影响 访问存储器对流水线运行的影响
128
256
带宽管理器 存储器保护
256 256
256
外部存储器 控制器 (EMC)
128
C64x+ 取指 软件流水线缓冲器 CPU 16/32-位指令调度 指令译码 数据通路1 数据通路2 M1 M2 L1 S1 xx D1 D2 xx S2 L2 xx xx
A寄存器堆 B寄存器堆 64
L1P和L1D既可配置为Cache,也可配置 为SRAM 改进了Cache一致性协议 增加了Cache冻结功能 增加了内部DMA控制器 增加了带宽管理功能 增加了存储器保护
双64-位取数/存数通路
C6000系列DSP
第3代VelociTI.3 CPU内核结构
L1P Cache/SRAM
256
进一步改进内部存储器结构:
高级事件触发 (AET)
TMS320C64x+™ 程序存储器控制器 DSP Core (PMC)
128
统一的存储器 控制器 (UMC)
带宽管理器 存储器保护
.L
Dual/Quad Arith ABS2 ADD2 ADD4 MAX MIN SUB2 SUB4 SUBABS4 Bitwise Logical ANDN
Data Pack/Un PACK2 PACKH2 PACKLH2 PACKHL2 PACKH4 PACKL4 UNPKHU4 UNPKLU4 SWAP2/4
LD1
数据地址通道
数据地址通路
DA1 和 DA2 来自数据通路 的 .D 功能单元,地址通路与两侧数据通道 都相连,这使一个寄存器组产生的数据地址 能够支持任意一侧寄存器组对数据存储器的 读写操作。
2.2 CPU控制寄存器
寻址模式及存器(AMR)
在寻址模式寄存器中,对每个寄存器都有 2 位字段 用来选择地址修改模式:线性(缺省)或循环模式。 对于循环寻址,这个字段也指定哪个 BK(block size)字段用作循环缓冲区。此外,缓冲区的值必 须与循环块尺寸相匹配,模式选择字段和块尺寸字 段示于图 2-5,模式选择字段编码示于表 2-4。寻址 模式寄存器(AMR)在复位时初始化为零,其保留 部分总为零。
C64x指令集
.S
Dual/Quad Arith SADD2 SADDUS2 SADD4 Data Pack/Un PACK2 PACKH2 PACKLH2 PACKHL2 Bitwise Logical UNPKHU4 ANDN UNPKLU4 Shifts & Merge SWAP2 SPACK2 SHR2 SPACKU4 SHRU2 SHLMB SHRMB Dual Arithmetic Mem Access ADD2 LDDW SUB2 LDNW LDNDW Bitwise Logical STDW AND STNW ANDN STNDW OR XOR Load Constant MVK (5-bit) Address Calc. ADDAD Compares CMPEQ2 CMPEQ4 CMPGT2 CMPGT4 Branches/PC BDEC BPOS BNOP ADDKPC
‘C67x
.M Unit
MPY MPYH MPYLH MPYHL NOP SMPY SMPYH
.D Unit
ADD NEG ADDAB (B/H/W) STB (B/H/W) ADDAD SUB LDB (B/H/W) SUBAB (B/H/W) LDDW ZERO MV
No Unit Used
Note: Refer to the 'C6000 CPU Reference Guide for more details.
.S .L
.D
.M
ADD ADDK ADD2 AND B CLR EXT MV MVC MVK MVKL MVKH
NEG NOT OR SET SHL SHR SSHL SUB SUB2 XOR ZERO
ABSSP ABSDP CMPGTSP CMPEQSP CMPLTSP CMPGTDP CMPEQDP CMPLTDP RCPSP RCPDP RSQRSP RSQRDP SPDP
(6)控制寄存器
(7)控制逻辑 (8)
测试、仿真和中断逻辑
2.1.2 CPU 数据通路
(1) 2 个通用寄存器组(A 和 B) (2) 8 个功能单元 (.L1、.L2、.S1、.S2、.M1、.M2、.D1 和.D2) (3) 2 个数据读取通路(LD1 和 LD2) (4) 2 个数据存储通路(ST1 和 ST2) (5) 2 个寄存器组交叉通路(1X 和 2X) (6) 2 个数据寻址通路(DA1 和 DA2)
x x
x x x x
x x
x x x x
• 对第1代VLIW内核结构进 行扩展 • 支持 4 个 16- 位和 8 个 8- 位 连 乘 加 MAC 指 令 , 提 高 运算的并行度 • 寄存器数量增加了 1 倍, 取数/存数的数据通道也 从 32- 位增加为 64- 位,实 现带宽的加倍 • 增强在线仿真能力 • 增加了新的指令以加速宽 带和图像处理等应用 • 改善正交设计,使频繁使 用的指令获得更多的功能 单元