[信息与通信]实时数字信号处理 计算单元.ppt

上传人:音乐台 文档编号:2000816 上传时间:2019-01-30 格式:PPT 页数:48 大小:252.98KB
返回 下载 相关 举报
[信息与通信]实时数字信号处理 计算单元.ppt_第1页
第1页 / 共48页
[信息与通信]实时数字信号处理 计算单元.ppt_第2页
第2页 / 共48页
[信息与通信]实时数字信号处理 计算单元.ppt_第3页
第3页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[信息与通信]实时数字信号处理 计算单元.ppt》由会员分享,可在线阅读,更多相关《[信息与通信]实时数字信号处理 计算单元.ppt(48页珍藏版)》请在三一文库上搜索。

1、实时数字信号处理,第2章 计算单元,概述,每个内核都有6个计算单元 两个算术/逻辑单元(ALU) 两个乘/累加器(乘法器)单元 一个移位器 一套视频ALU 提供定点操作 处理不同类型的操作 数据移入和移出计算单元是通过数据寄存器文件的 数据总线 高级并行机制利用多功能指令 数据地址产生,寄存器文件,3个寄存器组 数据寄存器文件为计算单元从数据总线接收操作数并存储计算结果 指针寄存器文件含有寻址操作的指针 DAG寄存器是专用于管理DSP操作中的零开销循环缓冲的寄存器。,数据地址产生器(DAG),数据寄存器,R0 R0.H R0.L R1 R1.H R1.L R2 R2.H R2.L R3 R3.

2、H R3.L R4 R4.H R4.L R5 R5.H R5.L R6 R6.H R6.L R7 R7.H R7.L A0 A0.X A0.W A1 A1.X A1.W,I0 L0 B0 M0 P0 I1 L1 B1 M1 P1 I2 L2 B2 M2 P2 I3 L3 B3 M3 P3 P4 P5 SP FP,数据寄存器文件,包含8个寄存器 每个32位宽 一对独立的16位寄存器:低半部分和高半部分 3条独立总线连接寄存器文件和L1数据存储器 2条读、1条写 32位宽 每个周期内搬移多达4个16位的有效数据 32-bit和16-bit操作 R2=R1 + R2; /* 32-bit addit

3、ion */ R2.L=R1.H * R0.L; /* 16-bit multiplication */,累加寄存器,两个专有的40位的累加寄存器(A0和A1)的访问形式: 16位低半部分(An.L)、高半部分(An.H) 8位扩展(An.X) 低32位寄存器An.W 完全的40位结果寄存器(An) 指令操作 A0=A1; /* 40-bit move */ A1.W=R7; /* 32-bit move */ A0.H=R5.H; /* 16-bit move */ R6.H=A0.X; /* read 8-bit value and sign extend to 16 bits */,指针

4、寄存器,通用地址指针寄存器,也称之为P寄存器 6个P寄存器文件P5:0 32位宽,主要用于地址计算 也可以在一组限定的算术操作集内用于一般的整数算术操作,譬如用作计数器,但不会影响到ASTAT寄存器的状态标志。 1个帧指针(FP)用于指向当前进程的活动记录 1个堆栈指针(SP)用来指向运行时堆栈中最近一次使用的位置,DAG寄存器组,DAG寄存器组用于寻址 I3:0包含索引地址 M3:0包含修改值 B3:0包含基地址 L3:0包含长度值 32位宽 I寄存器和B寄存器包含存储器8-bit字节地址 I寄存器含有一个有效地址,M寄存器含有用于在I寄存器上进行加或减的偏移值 任意的M寄存器可和任意的I寄

5、存器关联,比如,I0可被M3修改 B寄存器和L寄存器定义循环缓冲,B寄存器存储缓冲的起始地址,L寄存器存储长度,按字节计。 L和B寄存器对是与对应的I寄存器相关联的,例如,L0和B0总是和I0相关联,寄存器文件指令汇总,符号的含义说明如下: Allreg表示:R7:0、P5:0、SP、FP、I3:0、M3:0、B3:0、L3:0、A0.X、A0.W、A1.X、A1.W、ASTAT、RETS、RETI、RETX、RETN、RETE、LC1:0、LT1:0、LB1:0、USP、SEQSTAT、SYSCFG、CYCLES和CYCLES2 An表示ALU结果寄存器A0或A1之一 Dreg表示任一个数据

6、寄存器文件寄存器 Sysreg表示系统寄存器ASTAT、SEQSTAT、SYSCFG、RETI、RETX、RETN、RETE或RETS、LC1:0、LT1:0、LB1:0、CYCLES和CYCLES2 Preg表示任一Pointer寄存器、FP或SP寄存器 Dreg_even表示R0、R2、R4或R6 Dreg_odd表示R1、R3、R5或R7,寄存器文件指令汇总,符号的含义说明如下: DPreg表示任一数据寄存器文件寄存器或任一Pointer寄存器、FP或SP寄存器 Dreg_lo表示任一数据寄存器文件寄存器低16位 Dreg_hi表示任一数据寄存器文件寄存器高16位 An.L表示累加器An

7、.W的低16位 An.H表示累加器An.W的高16位 Dreg_byte表示每一个数据寄存器的低8位 Option (X)表示符号扩展 Option (Z)表示零扩展 *指示这个标志可以置位或清零、依赖于指令的计算结果 *指示这个标志清零 指示无作用,表2-1 寄存器文件指令汇总表,表2-1 寄存器文件指令汇总表续,算术状态寄存器(ASTAT),指示了最近的ALU、乘法器或移位器操作的状态,算术状态寄存器(ASTAT),数据类型,Balckfin处理器主要是16位定点处理器 大多数操作采用补码数,其它有无符号数或二进制串 一些指令支持32位整数算术、支持8位算术和块浮点 数据格式的详细情况参阅

8、硬件参考手册附录C“数字格式” 在Blackfin处理器系列算术中有符号数都是2的补码格式 处理器支持32-bit字、16-bit半字和字节 32-bit和16-bit字可以是整数或小数,但是字节总是整数 整数可以是有符号数或无符号数,但小数总是有符号数,小数表示(1.15),对于1.15二进制格式小数算术是优化的 表示从-1到0.999969之间的值 图2-3给出了1.15数的位权重和例子,图2-3 1.15数的位权重,ALU数据类型,除了有符号除法原语(DIVS),每个ALU操作都把操作数和结果当作16-bit或者32-bit二进制串处理 ALU结果产生状态信息 把结果当作有符号数 溢出标

9、志(AV0,AV1)和负数标志(AN) 黏性溢出标志AV0S或AV1S一旦置位将保持置位状态直到直接写入而清除 V标志的置位或清除取决于从两个累加器到寄存器文件的结果的传送 黏性VS位随V位一同置位并保持置位状态直到清零 溢出位(V、VS、AV0、AV0S、AV1、AV1S)逻辑都是基于补码算术 如果MSB的改变方式不是操作数符号位和操作本身特性所预测的方式,那么一个位或一个组合位都会置位 例如两个正数相加,结果也必为正数,符号位的改变表示溢出并使相应的溢出标志AVn置位 一个正数和一个负数相加可能产生一个正数或者一个负数,但是不会导致溢出 进位(AC0、AC1)逻辑是基于无符号数算术 如果是

10、从位16(MSB)产生了进位就会将进位置位,进位对于一个多字操作的低位字部分来说是非常有用的,乘法器数据类型,根据指令本身给定的信息,输入被解释成不同的类型 有符号数乘以有符号数、无符号数乘以无符号数、混合类型,或者是一个取整操作 32位结果假定是有符号的,也是符号扩展的,充满A0或A1寄存器的整个40-bit的宽度 处理器支持两种格式调整模式 小数模式,用于小数操作数(1.15格式) 两个1.15操作数相乘,结果是一个2.30的数 结果传送到乘法器结果累加器(A0,A1)之前左移一位得到1.31格式数,可以圆整为1.15格式数 整数模式,用于整型操作数(16.0格式) 如果操作数都是16.0

11、格式,乘法结果将是32.0格式。 当用乘法器结果更新累加器,或将它们传送到目的寄存器文件寄存器时,将产生状态信息,移位器数据类型,移位器中的许多操作是明确地采用有符号(补码)或无符号数 逻辑移位采用无符号数或二进制串 算术移位采用补码数 指数逻辑采用补码数,指数逻辑支持块浮点,这也是基于补码的小数 移位器结果产生状态信息,圆整乘法器结果,持乘法器结果的圆整(RND选项) 圆整是降低一个数的精度的一种方式 寄存器ASTAT里的位RND_MOD 清0对应无偏圆整,该位置1对应有偏圆整 对所有算法,无偏圆整是首先的,无偏圆整,传统的有偏圆整方法是在加法器的比特位置15上加上一个1,这个方法将引起一个

12、净正偏差,因为中间值(A0.L/A1.L=0x8000)总是向上圆整的 当检测到结果是中间点值时,通过强迫结果输出中的比特16为0,累加器可消除这个偏差 累加器使用无偏圆整方案 无偏圆整使ALU能将40-bit的结果在比特15和比特16边界之间进行圆整,圆整可以指定为指令代码的一个部分,当选择了圆整,输出寄存器就包含了已经圆整的16-bit的结果 当原始数刚好位于两个数中间时这个方法返回最接近的偶数,最低有效位是0 例如,要圆整一个3-bit的补码小数0.25(二进制0.01)到2-bit的补码小数,其结果将是0.0(二进制0.0),因为是从0.5(二进制0.1)和0.0中选择偶数 基于附近的

13、值向上和向下圆整,所以该方法称之为无偏圆整 强迫比特16为0有这样的作用:将奇数的A0.L/A1.L值向上圆整,将偶数值向下圆整,得到大样本偏差为0、均匀分布的数值 参见图2-5和2-6 累加器内容是从不圆整的,特殊的圆整指令,提供了这样的能力 在不同的比特边界上圆整,这些选项是RND12、RND和RND20,分别从比特12、16和20上提取16位的值,并执行有偏圆整,而不管ASTAT中的RND_MOD位的状态。 指令: R3.L=R4 (RND); 在比特16上执行有偏圆整,保存结果于一个半字中 R3.L=R4+R5 (RND12); 执行两个32位数的加法,在比特12上执行有偏圆整,将结果

14、保存到一个半字里 R3.L=R4+R5 (RND20); 执行两个32位数的加法,在比特20上执行有偏圆整,将结果保存到一个半字里,算术逻辑单元(ALU),两个ALU执行定点数的算术和逻辑操作 ALU定点指令操作16-bit、32-bit或40-bit的定点操作数,得到16-bit、32-bit或40-bit的定点结果。 ALU指令 寄存器的定点加减法、立即数的加减法、乘法结果的累加/减、逻辑(与、或、非、异或、按位异或、取反)操作、函数(取绝对值、最大值、最小值、圆整、除法原语)操作,ALU操作,ALU的主要操作是在ALU0中进行的,并行操作是在ALU1中进行的,它执行ALU0操作的一个子集

15、 表2-8描述了每个ALU可能的输入和输出 联合两个ALU操作,单条指令能得到4个16-bit结果、两个32-bit结果或两个40-bit结果。,ALU操作,单16-bit操作 R3.H=R1.H+R2.L (NS); R1.H加到R2.L上,结果保存到R3.H中,不带饱和选项 双16-bit操作 R3=R1 + | - R2 (S); R2.H加到R1.H上,饱和处理后的结果保存到R3.H里 从R1.L中减去了R2.L,饱和处理后的结果保存到R3.L里 4个16-bit操作 R3=R0 +|+ R1,R2=R0 | R1 (S); R1.H加上R0.H,保存结果到R3.H里,带饱和操作。 R

16、1.L加上R0.L,保存结果到R3.L里,带饱和操作。 R0.H减去R1.H,保存结果到R2.H里,带饱和操作。 R0.L减去R1.L,保存结果到R2.L里,带饱和操作。,ALU操作,单32-bit操作 R3=R1 + R2 (NS); 指令中不能混合使用指针寄存器与数据寄存器 双32-bit操作 R3=R1 + R2,R4 = R1 R2 (NS); 提供给ALU0和ALU1的是同样的两个32-bit输入寄存器 专门形式 使用40-bit的ALU结果寄存器作为操作数,得到关于A0和A1寄存器的和与差。例如指令: R3=A0 + A1,R4=A0 A1 (S); 将ALU寄存器值进行加减操作,

17、带饱和处理,并将两个32-bit的和与差转输到结果寄存器,双16-bit交叉选项,对于双16位操作,结果可能会交叉 “交叉结果”改变了计算结果在结果寄存器中的位置。 高端结果放置在目的寄存器的低半字里,低端结果放置在目的寄存器的高半字里,参见图2-9 在处理复数数学运算和快速傅立叶变换(FFT)的部分操作时有用,交叉选项只适用于ALU0,图2-9 双16-bit ALU操作的交叉选项,ALU除法支持与视频操作,ALU支持除法 两个专用的除法原语DIVS和DIVQ让程序实施一个不复原的、有条件的(错误检查)加/减/除算法 除法可以是有符号的或无符号的,但是被除数和除数必须是同一类型,参见处理器指

18、令集参考 处理器具有特殊的SIMD视频ALU操作功能 4个8-bit视频ALU使处理器能够高效率地处理视频信息 每个视频ALU指令可能需要1至4对8-bit的输入,输出1至4对8-bit的结果 输入是用数据寄存器文件按两个32-bit字的形式提交给视频ALU的 可能的操作包括 4个8-bit数的加法或减法、4个8-bit数的平均、4个8-bit数的打包和解包、4个8-bit数的减-绝对值-累加、字节对齐 参见处理器指令集参考,ALU指令汇总,符号的含义说明如下 Dreg_lo_hi表示任何数据寄存器文件寄存器里的16-bit寄存器半字。 imm7表示有符号的7-bit宽的立即数。 DIVS表示

19、除法符号原语。 DIVQ表示除法商原语。 MAX表示源寄存器里的最大值,或最大的正值。 MIN表示源寄存器的最小值。 ABS表示一个32-bit寄存器的高或低半字的绝对值。 RND表示对一个半字圆整。 RND12表示对加法或减法结果饱和处理,并在结果的第12位上进行圆整。 RND20表示对加法或减法结果饱和处理,并在结果的第20位上进行圆整。 SIGNBITS表示一个数里的符号位的个数减1。 EXPADJ表示一个数里次要的符号位的个数减1和一个阈值。 d指示AQ包含被除数最高有效位与除数最高有效位的异或。,表2-9 ALU指令汇总表部分指令,本讲作业1,理解并整理指令功能(参考ADSP-BF5

20、3x/BF56x Blackfin Processor Programming Reference) MAX MIN Vector SEARCH Vector MAX Vector MIN,乘累加器,乘累加器MAC0和MAC1 执行定点乘法运算和乘累加操作 用于累加或累减 定点指令对16-bit数据进行操作,产生32-bit结果,它可被加到40-bit累加器里或从中减去 输入 小数或整数,无符号或补码数 指令 乘法、乘累加(带圆整选项)、乘累减(带圆整选项)、同时包含前面两种操作,乘法器操作,输入 数据寄存器文件寄存器 从两个32-bit输入得到两个16-bit操作数 输出 累加其结果到它的累

21、加器寄存器A1或A0 累加器结果可饱和成32或40位 或圆整后直接写入16-bit或32-bit目的寄存器 数据类型 输入都是整数类型或者是小数类型,结果的类型和输入的类型一致 对于MAC0,两个输入都被当作无符号或有符号数 对于MAC1,有一个混合类型选项 若两个输入都是小数形式并是有符号数,将结果左移一位,以消除冗余符号位 而对于无符号小数、整数或者混合类型,不执行符号位修正的移位操作 乘法指令选项指定了输入数据的格式 参见“乘法器指令选项”,乘法器操作,乘法器结果的圆整或饱和 乘法结果溢出时的饱和处理 乘法器指令汇总(参见整理文稿) 乘法器指令选项(参见整理文稿) 不带累加的乘法 乘积结

22、果直接存入一个数据寄存器文件寄存器或累加器寄存器 目的寄存器可以是16位的或32位的 16-bit目的寄存器,低半字则使用MAC0 16-bit目的寄存器,高半字则使用MAC1 32-bit目的寄存器,MAC0和MAC1都可以使用,乘法器操作,特殊的32-bit整数MAC指令 Dreg*=Dreg; 双MAC操作 两个16-bit MAC使MAC吞吐率加倍 两个32-bit输入寄存器可提供给每一个MAC单元,提供了4种可能组合的16-bit输入操作数。 矢量操作 存储样点矢量到4个输入操作数,并执行矢量计算。 例子 A1+=R1.H * R2.L, A0+=R1.L * R2.H;,MAC操作

23、中4个可能的组合,桶式移位器,提供对16-bit、32-bit或40-bit输入的移位功能,产生一个16-bit,32-bit,或40-bit的输出 功能 算术移位、逻辑移位、循环移位和各种位测试、设置、打包、解包和指数检测 移位功能可以组合 实现数字格式控制,包括完整的浮点表示,移位器操作,指令 ,指令表示算术移位 LSHIFT、指令表示逻辑移位 在16-bit单个或成对的数值上操作的指令都可以采用ASHIFT和LSHIFT指令 在许多DSP算法中用到,典型的3操作数指令 操作一个32-bit寄存器值并使用两个操作数的指令,可以利用和指令 算术移位、逻辑移位和循环指令 可从寄存器或直接从指令

24、的立即数中获得移位参数,两操作数移位,移位一个输入寄存器并将结果存入同一寄存器 立即移位 R0 contains 0000 B6A3; R0 =0x04; 结果:R0 contains 0000 0B6A 寄存器移位 R0 contains 0000 B6A3; R2 contains 0000 0004; R0=R2; 结果:R0 contains 000B 6A30。,3操作数移位,对一个输入寄存器进行移位并将结果存放在目的寄存器 立即移位 R0 contains 0000 B6A3; R1=R00x04; 结果:R1 contains 0000 0B6A 寄存器移位 R0 contain

25、s 0000 B6A3; R2.L contains 0004; R1=R0 ASHIFT by R2.L; 结果:R1 contains 000B 6A30 R0 contains ABCD EF12; R2.L contains 0004; R1=R0 ROT by R2.L; (循环移位,假设条件码位(CC)设置为0 ) 结果:R1 contains BCDE F125 CC位包含在结果中,在第3位,位测试、置位、清零、切换,对一个数据寄存器中的指定位进行测试、置位、清零及切换 两个参数源寄存器和位域值 不改变源寄存器,结果保存在CC位里 例子 BITCLR (R0, 6) ; BITS

26、ET (R2, 9) ; BITTGL (R3, 2) ; CC=BITTST (R3, 0) ;,域抽取和域存储,可从一个32-bit源域中的任何位置上抽取出一个1-bit到16-bit域 可以将1-bit到16-bit长度的源域存储到一个32-bit目的域中的任何位置上 使用两个寄存器参数 一个包含32-bit目的或32-bit源 另一个包含要抽取/存储的值,它的长度和它在源里的位置,表2-12移位器指令汇总表部分指令,本讲作业2,理解并整理指令功能(参考ADSP-BF53x/BF56x Blackfin Processor Programming Reference) Dreg = DE

27、POSIT (Dreg, Dreg) ; Dreg = EXTRACT (Dreg, Dreg) ; BITMUX (Dreg, Dreg, A0) ; Dreg_lo = ONES Dreg ; Dreg = PACK (Dreg_lo_hi, Dreg_lo_hi); Dreg = Dreg uimm4 (V) ; Dreg = Dreg uimm4 (V) ; Dreg = Dreg uimm4 (V) ; Dreg = ROT Dreg BY imm6 ; Dreg = ASHIFT Dreg BY Dreg_lo (V) ; Dreg = LSHIFT Dreg BY Dreg_lo

28、 (V) ;,数据地址产生器,数据地址产生器(DAG)功能与寄存器 DAG产生数据地址以将数据移到存储器或从中取数 程序用DAG寄存器代替绝对地址来间接寻址 支持几种功能用于减少数据访问时的开销 提供地址:在数据访问期间提供地址 提供地址并后修改:在数据转移时提供地址,并为下一次转移自动增/减存储地址 提供偏移地址:提供相对于某基地址的偏移址,不增加原始地址指针 修改地址:增加或减少存储地址,不执行数据转移 位反向进位地址:在数据转移时提供位反向进位地址,而不是反转存储地址 DAG子系统 两个DAG算术单元、9个指针寄存器、4个索引寄存器、4套相关的变址、基址和长度寄存器,DAG的寻址,Bla

29、ckfin处理器按字节寻址,所有的数据访问必须对齐数据字节大小 32-bit取指必须对齐32位,但8位的存储可对齐任意字节 指令: R0=P3+; 取一个32位字,由P3中的值来指向,并把它放在R0中,然后P3加4以维持32位对齐访问 R0.L=WI3+; 取一个16位字,由I3中的值来指向,并把它放进目的寄存器低半部分R0.L中,然后I3加2来维持16位对齐访问 R0=BP3+(Z); 取一个8位字,通过P3中的值来指向,并把它放进目的寄存器R0中,然后P3加1以维持8位对齐访问 字节值可以是零扩展或符号扩展到32位数据寄存器,DAG的寻址,帧和堆栈指针操作 位反向地址方式寻址 循环缓冲器的

30、寻址 使用后修改的寻址方式 当第1次后修改访问缓冲器时,DAG在地址总线上输出I寄存器的值,然后加上地址增量来修改这个地址 用方程形式,这些修改和回绕操作表示为“I+M”操作 如果M是正的: Inew = Iold + M,如果Iold + M 缓冲器基址 + 长度(缓冲器尾地址) Inew = Iold + M L,如果Iold + M 缓冲器基址 + 长度(缓冲器尾地址) 如果M是负的: Inew = Iold + M,如果Iold + M 缓冲器基址(缓冲器首地址) Inew = Iold + M + L,如果Iold + M 缓冲器基址(缓冲器首地址),DAG的寻址,索引和指针寄存器的

31、索引寻址 使用索引寄存器或指针寄存器中的值作为有效地址 加载或保存16-bit或32-bit值,默认的是32-bit转移,16-bit转移用W标识符前缀 自动增加/减少寻址 在访问后更新指针和索引寄存器,增量要根据字的大小,32-bit、16-bit、8-bit访问时指针更新量分别为4、2、1 预修改堆栈指针寻址 SP中的地址先减去4然后作为一个有效地址用于保存 指令-SP=R0用于堆栈入栈操作,且仅支持一个32-bit字转移 立即数偏移址的索引寻址 允许程序从数据表中获得一个与表的基址有关的数据,并作为一个立即数偏移址修改指针寄存器以产生有效地址 指针寄存器的值并不会更新。如果最终地址没有对

32、齐,则会触发一个异常事件 后修改寻址 R5=P1+P2; 修改DAG和指针寄存器 DAG支持修改索引寄存器中的地址值但不输出地址,这种地址修改操作用于维持指针是有用的。,存储器地址对齐,Blackfin处理器需要正确的存储器对齐来维持所访问数据字节数大小 存储器对齐冲突会引起一个对齐异常,除非异常被禁止 自动禁止对齐异常的指令 一些指令,例如许多视频ALU指令,会自动禁止对齐异常 当数据保存在存储器时数据可能不会是对齐的 DISALGNEXPT指令与加载/保存操作并行执行,也可禁止对齐异常 该指令屏蔽了存储器对齐错误的自动检测 但该指令仅会影响到用I寄存器间接寻址的非对齐加载,使用P寄存器的非对齐加载会引起异常的 通常存储器系统需要两种地址对齐: 32-bit字加载/保存访问于4字节边界:地址两个最低有效位是b#00 16-bit字加载/保存访问于2字节边界:地址最低有效位是b#0,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1