ti 大学计划 —— 青年教师培训

Post on 12-Jan-2016

149 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

TI 大学计划 —— 青年教师培训. 章节分析 —— CPU. 上海交通大学 电子工程系 胡剑凌. 教学内容. 总线结构 存储器配置 CPU 结构 数据运算单元 指令处理单元 指令流水线 数据寻址. 课时安排. 鉴于面向的对象和课程性质的不同,课时设置可考虑下列三种情况: 54学时 研究生学位课(或专业选修课) 36学时 研究生非专业选修课(或本科选修课) 12-20学时 专题系列讲座. 课时安排. 以54学时为例,总共安排12学时 数据运算单元6学时 指令处理单元1学时 指令流水线2学时 数据寻址3学时. 课时安排. - PowerPoint PPT Presentation

TRANSCRIPT

TI 大学计划 —— 青年教师培训

章节分析—— CPU

上海交通大学 电子工程系 胡剑凌

教学内容

总线结构 存储器配置 CPU 结构

– 数据运算单元– 指令处理单元– 指令流水线– 数据寻址

课时安排

鉴于面向的对象和课程性质的不同,课时设置可考虑下列三种情况:

54 学时 研究生学位课(或专业选修课) 36 学时 研究生非专业选修课(或本科选修课) 12 - 20 学时 专题系列讲座

课时安排

以 54 学时为例,总共安排 12 学时 数据运算单元 6 学时 指令处理单元 1 学时 指令流水线 2 学时 数据寻址 3 学时

课时安排

以 36 学时为例,总共安排 9 学时 数据运算单元 5 学时 指令处理单元 1 学时 指令流水线 1 学时 数据寻址 2 学时

课时安排

以 12 - 24 学时为例,安排 3 学时—— 6 学时 数据运算单元 1 学时—— 3 学时 指令处理单元 0.5 学时—— 0.5 学时 指令流水线 0.5 学时—— 0.5 学时 数据寻址 1 学时—— 2 学时

总线结构

总线结构(数据总线和程序总线) 冯诺依曼结构 哈佛结构 改进的哈佛结构

总线结构

冯 . 诺依曼结构

C P U

存储器

AB DB

总线结构

哈佛结构

程序存储器

CPU

数据存储器

PAB DAB

PB DB

总线结构

改进的哈佛结构

C P U

程序存储器 数据存储器

DBPBPAB DAB

DSP —— 结构 TMS320C5400 系列图

总线结构

程序总线 PB ,负责读取指令和数据表格 数据总线 CB、DB和 EB, CB和DB 读取数据, EB 存储数据 地址总线 PAB、 CAB、DAB和 EAB

外设总线

总线结构

地址总线访问类型 数据总线PAB CAB DAB EAB PB CB DB EB

 

读长数据 (32bit)

读程序            

写程序            

读单数据            

读双数据        

       

写单数据          

并行读 / 写数据      

Dual Read/Coeff Read    

读外设            

写外设            

 

存储器配置

程序空间 : 程序代码、常系数表格

数据空间:程序处理时的数据和结果

I/O 空间 :映射为外部设备、扩展外 部数据存储器等

程序空间 : 程序代码、常系数表格

数据空间:程序处理时的数据和结果

I/O 空间 :映射为外部设备、扩展外 部数据存储器等

存储器配置

存储器配置 片内:访问速度快,容量小 片外:访问速度慢,容量大

片内存储器 SRAM (固定地址映射):内容和地址一一对应 Cache :内容和地址不是一一对应

存储器配置

片内存储器 SARAM :每个时钟周期只能访问一次,适合存

放程序 DARAM :每个时钟周期可以访问两次,适合存

放数据,利于并行地访问数据

存储器配置 Reserved(OVLY=1)

orExternal

(OVLY=0)

On-ChipDARAM

(OVLY=1)External

(OVLY=0)

External

Interrupts(External)

Page 0 ProgramHex0000

007F0080

3FFF4000

FF7FFF80

FFFF

MP/MC=1(Microprocessor

Mode)

MemoryMappedRegister

On-ChipRAM16K

External

Page 1 DataHex0000

005F0060

3FFF4000

FFFF

Reserved(OVLY=1)

orExternal

(OVLY=0)

On-ChipDARAM

(OVLY=1)External

(OVLY=0)

External

Interrupts(On-Chip)

Page 0 ProgramHex0000

007F0080

3FFF4000

FF7FFF80

FFFF

MP/MC=0(Microcomputer

Mode)

On-ChipROM4K

Reserved

EFFFF000

FEFFFF00

Scratch-PadRAM007F

0080

ROM(DROM=1)or External(DROM=0)

EFFFF000

Reserved(DROM=1)or External(DROM=0)

FEFFFF00

5402

存储器空间

配置

存储器配置

C5402 扩展程序空间 (OVLY=0)

Page 0

64K

Page 1

64K

Page 15

64K

0 0000 1 0000 F 0000

0 FFFF 1 FFFF F FFFF

XPC=0 XPC=1 XPC=15

......

存储器配置

C5402 扩展程序空间 (OVLY=1)

Page 0

64K

Page 1Lower

16K

Page 1Upper

48KExternal

0 0000

0 FFFF

1 0000

1 FFFF

1 3FFF1 4000

Page 1Lower

16K

Page 15Upper

48KExternal

F 0000

F FFFF

F 3FFFF 4000

......

CPU 运算单元

数据运算单元 加减的实现 乘法的实现 移位的实现 逻辑操作的实现 求指数的实现 特殊运算

DSP —— 结构 TMS320C5400 系列图

CPU 运算单元MUXMUX

Sign ctr Sign ctr

Y X

ALU

A B

MUX

CB15-CB0

DB15-DB0

T

A B CT SD

SXMSXM

OVMC16COVA/OVBZA/ZBTC

40

40

4040

40

ACC

A M U B

MAC

output

Shifter output(40)

ABC

T

U

DMST

累加器A累加器 BCB数据总线

算术逻辑单元 ALU

DB数据总线MAC单元桶形移位器T寄存器

CPU 运算单元

序号 指 令 字数 A B DB CB 移位器

1 add *AR1, A 1      

2 add *AR3, TS, A 1      

3 add *AR2, 16, B, A 1      

4 add *AR1, 8, B, A 2      

5 add *AR2, 8, A 1      

6 add *AR2, *AR3, A 1      

7 add #1234h, 6, A, B 2      

8 add A, 12, B 2      

9 add B, ASM, A 1      

10 add *AR2, A, B 1      

11 add *AR1, A 1      

CPU 运算单元X MUX Y MUX

MUX

CB15-CB0

DB15-DB0

PB15-PB0

T

Sign ctr Sign ctr

XM YM 乘法器

FRCT\int

XA YA 加法器

ZeroDetect

Round SAT

D CD AAT

A累加器

B累加器

0

OVMOVA OVB

ZA ZB

A B累加器

CPU 运算单元 

X 乘法器输入

T DB A

 

   

       

Y 乘法器输入

PB CB DB A

   

    

  

 序号

 指 令 类 型

123456789

mpy #1234h, Ampy[r] *AR2, Ampya Bmacp *AR2, pmad, Ampy *AR2, *AR3, Bsqur *AR2, Bmpya *AR2firs *AR2, *AR3, pmadsqur A, B

程序寻址程序控制( PC 的修改)

操作 载入 PC 的地址复位顺序执行跳转从累加器跳转块重复循环 调用子程序  从累加器调用子程序  中断

载入 0xFF80载入 PC+1载入紧接在指令后面的 16 位立即数。载入累加器 A或 B 的低 16 位数。如果 BRAF= 1 ,当 PC+ 1=( REA)+ 1 时载入

块重复起始地址寄存器 RSA 的值。调用时,将 PC+ 2 压入堆栈,载入紧接在指令 call

后面的 16 位立即数。返回时,从栈顶弹出 PC ,返回到call 指令后的代码开始执行。

调用时,将 PC+ 1 压入堆栈,载入累加器 A或 B 的低 16 位数。返回时,从栈顶弹出 PC ,返回到 call 指令后的代码开始执行。

响应中断时,将 PC 压入堆栈, PC 载入中断向量所处的地址。返回时,从栈顶弹出 PC ,返回到被中断的代码开始执行。

程序寻址

硬件支持的重复

RPTB和 RPTBD 语句 BRAF、 BRC、 RSA和 REA

BRC在块重复的最后一条指令的译码阶段减1 多重循环可用 RPTB(D)和BANZ(D) 实现 RPT 语句

程序寻址

INTx

INTy

11

00

11

(IFR)

"Latch"

(IMR)

"Switch"

(INTM)

"Big Switch"

C54x

core

22

33

中断

程序寻址

中断处理 接受中断请求 响应中断 执行中断服务程序( ISR )

程序寻址 接受中断申请

中断可屏蔽?

IMR的屏蔽位=1?

INTM=0?

响应中断,产生 IACK信号

硬件中断或 INTR?

在堆栈中保存 PC

执行中断服务子程序

恢复 PC值

置 INTM为 1

返回主程序

中断操作流程图

指令流水线

指令周期

第 1条指令

1

第 2条指令

第 3条指令

第 4条指令

取指 译码 取数 执行

取指 译码 取数 执行

取指 译码 取数 执行

取指 译码 取数 执行

2 3 4 5 6 7

指令流水线

取 指预 取 指

预 取 指

预 取 指

预 取 指

译 码预 取 指

预 取 指

预 取 指

预 取 指

访 问预 取 指

预 取 指

预 取 指

预 取 指

读 取预 取 指

预 取 指

预 取 指

预 取 指

执 行 /写预 取 指

预 取 指

预 取 指

预 取 指

将 P C 的 内 容 送至 P A B 总 线

将 读 取 的 内 容 送入 I R,并 进 行 解码

从 D B 读 取 数 据 1;

从 C B 读 取 数 据 2;

将 数 据 3 的 地 址 送 至E A B;

从 P B 总 线 读 取指 令 字

将 数 据 1 的 地 址 送 至D A B;

将 数 据 2 的 地 址 送 至C A B;

更 新 辅 助 寄 存 器 和 堆栈 指 针

执 行 指 令 , 将 数据 送 至 E B 总 线

预 取 指

六级指令流水线

指令流水线

指令流水线

指令流水线

数据寻址

立即寻址 绝对寻址 累加器寻址 直接寻址 间接寻址 存储器映射寄存器寻址

数据寻址DP(9)

来自指令寄存器IR(dma)低 7位

SP(16)

数据总线 DB(16)

数据总线 EB(16)

0 EA=DP偏移量(IR)1 EA=SP+偏移量(IR)

DAB(16)(读)

EAB(16)(写)

或 CAB(32位读)

CPL CPL

EA: 有效地址IR: 指令寄存器

数据地址发生器

数据寻址

间接寻址 利用辅助寄存器中数值作为绝对地址 主要用于按某种固定方式对数据空间的连续访问 修改方式可以为后加、后减、特定步长 寻址方式最为灵活

数据寻址

AR0(16)索引

AR1(16)

AR2(16)

AR5(16)

AR4(16)

AR3(16)

AR6(16)

AR7(16)

BK(16)

ARP(3)

数据总线 DB(16)

数据总线 EB(16)

ARAU0

O

ARAU1

AR0 BK lk 1

+/- % 0 B

EBA(16)

(写)或

CBA(16)

(32位读)

AR0 BK 1

+/- % 0

DBA(16)

(读)

数据寻址*ARx*ARx- *ARx+ *+ARx *ARx-0B *ARx-0 *ARx+0 *ARx+0B  

操作数句法 功能 说明

addr=ARxaddr=ARxARx=ARx-1addr=ARxARx=ARx+1addr=ARx+1ARx=ARx+1addr=ARxARx=B(ARx-AR0)addr=ARxARx=ARx-AR0addr=ARxARx=ARx+AR0addr=ARxARx=B(ARx+AR0)

ARx 的内容为数据存储器地址。访问后, ARx 中的地址减 1 个单位。 访问后, ARx 中的地址加 1 个单位。 访问前, ARx 中的地址加 1 个单位。 访问后,从 ARx 中按比特翻转寻址的方式减去 AR0。

访问后,从 ARx 中减去 AR0。 访问后,在 ARx 中加上 AR0。 访问后,在 ARx 中按比特翻转寻址的方式加上 AR0。

数据寻址访问后,从 ARx 中按循环寻址方式减去 1 个单位。

访问后,从 ARx 中按循环寻址方式减去 AR0。

访问后,在 ARx 中按循环寻址方式加上 1 个单位。

访问后,在 ARx 中按循环寻址方式加上 AR0。

ARx 加上 16 位长偏移量作为地址,但 ARx 不变。

ARx 加上 16 位长偏移量作为地址,并将该结果作为 ARx 的数值。ARx 按循环寻址方式加上 16 位长偏移量作为地址并用该结果更新 ARx。

addr=ARxARx=circ(ARx-1)addr=ARxARx=circ(ARx-AR0)addr=ARxARx=circ(ARx+1)addr=ARxARx=circ(ARx+AR0)addr=ARx+lkARx=ARxaddr=ARx+lkARx=ARx+lkaddr=circ(ARx+lk)ARx=circ(ARx+lk) 

*ARx-% *ARx-0% *ARx+% *ARx+0% *ARx(lk) *+ARx(lk) *+ARx(lk)%  

操作数句法 功能 说明

数据寻址 循环寻址

元素 0

元素 1

……

元素 R-1

……

BK=R

正向 反向

实验设计

数据运算单元 常规算术运算 特殊的算术运算(饱和、移位乘等) 多种语法的尝试(移位加等)

实验设计

指令处理单元和指令流水线 C55 借助 CCS 工具观察指令流水线 指令流水线(影响运算结果,结合汇编指令) 中断仿真(观察堆栈)

实验设计

数据寻址 各种不同寻址方式的尝试 字长和运行时间的比较 地址修改和指令流水线

Q & A

top related