首页 TS101芯片结构与汇编语言

TS101芯片结构与汇编语言

举报
开通vip

TS101芯片结构与汇编语言TS101芯片结构与汇编语言 TS101芯片结构与汇编语言 报告目的: 通过对TS101的其运算特点及其结构的介绍,使大家对TS101有个基本的认识核概念,本报告只是从较大的方面介绍的,没有涉及一些具体的细节。希望通过本次的讲解,是大家了解TS101是结构是怎样的,这样结构有什么样的好处,一条指令是如何进行在TS101执行的都有一个比较清楚的认识。 报告分为5方面: , DSP的芯片发展的历史 , TS101芯片内部结构 , TS101芯片的运行特点 , TS101核设计特点 , 汇编语言举例 1...

TS101芯片结构与汇编语言
TS101芯片结构与汇编语言 TS101芯片结构与汇编语言 报告目的: 通过对TS101的其运算特点及其结构的介绍,使大家对TS101有个基本的认识核概念,本报告只是从较大的方面介绍的,没有涉及一些具体的细节。希望通过本次的讲解,是大家了解TS101是结构是怎样的,这样结构有什么样的好处,一条指令是如何进行在TS101执行的都有一个比较清楚的认识。 报告分为5方面: , DSP的芯片发展的历史 , TS101芯片内部结构 , TS101芯片的运行特点 , TS101核 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 特点 , 汇编语言举例 1. DSP芯片的发展 数字信号处理器(Digital Signal Processor,简称DSP)是一种专门用来实现各种信号处理算法的微处理器 ADI公司推出:ADSP21XX定点系列处理器、SHARC浮点系列处理器、Blackfin系列及高性能数字信号处理器系列TigerSHARC系列。 ADSP21061、ADSP21062、ADSP21060、ADSP21065 定点: 浮点:ADSP21160、ADSP21161 2001年底,TigerSHARCTS101S,新一代浮点的标志处理时钟提高到300MHz 2003年,ADSPTS201、ADSPTS202、ADSPTS203,工作频率达到600MHz ADSP2106x系列,32位处理器,每条指令周期25ns,运行速度为40MIPS,单周期执行指令,4Mbit的片内SRAM, 6个4位链路口,两倍于时钟频率开始传递最多实现6个DSP的互联,内部总数据总线48bit,地址总线32bit ADSP21160 :32位处理器,10ns ,100MHz,1Mbit的片内双端SRAM,6个DSP的互联,内部总数据总线64bit,地址总线32bit TS101的性能: 处理器工作在300MHz,单周期4条指令,每秒能进行2.4亿次浮点操作支持两种方式的处理集成多处理器,容易实现多片的并行处理系统最多8片和一个主机设 备,内存6Mbit内部总数据总线128bit,地址总线32bit,最大运算速度是ADSP2116的2.8倍,是ADSP21060的14倍。 2.TS101的内部结构 , TS101内部结构图 , 结构的特点 计算单元、程序控制器、地址产生器、内存(6M)、外部接口、DMA控制器、连路口 特点:32位指令128位宽,每周期最多4条指令32位地址总线最多访问4G存储空间 Data Alignment Buffer Accesses(DAB) Instruction Alignment Buffer (IAB) Branch Target Buffer (BTB) 32个四路与设置相关的缓存,一共128个入口 链路口的结构(有寄存器LCTLx和LSTATx进行状态设置以及状态的检测) External Port Architecture , 全局寻址空间 思考问题: , 问题:根据结构特点说明DSP为什么能并行运行指令, , 问题:如果同时访问同一个内存会出现什么问题,DSP如何解决, , 问题:C语言 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 ,编译出来的代码,起始地址按4对齐,为什么, , 问题:根据这样的结构特点,我们在软件设计的时候要注意什么, 回答: , 如果同时访问同一个内存会出现什么问题,DSP如何解决, 出现总线的竞争问题 DSP解决两个方面说: 第一个方面,DSP内部有一个总线占用的优先级,根据这个来进行总线占用的分配 优先级如下: High priority IFIFO transactions High priority DMA transactions Load, Store, and other data transfer instructions Low priority IFIFO transactions Low priority DMA transactions Instruction fetch 判断IFIFO的优先级: Direct read by an external master Broadcast write transaction in the IFIFO Write to internal address (the result of a DMA transaction) and the destination TCB priority bit is set IFIFO is full (three or more transactions in the IFIFO). The request priority is high in order to prevent delays on the externalbus. 其他均为低优先级 方面二: 在DMA进行传送的时候,里面有一个缓冲,对Link来说就是有128位的缓冲(128位移位器相当于有256的缓冲),满了以后才会发送,而且,Link口的时钟频率我们现在设置的是三分之一主频,就是80M,这个速度是比较慢的,有间隙进行这样的传送。还有8级流水的保证,一次可以取4条指令,就使得可以有3个等待而不会产生延时。但要避免些情况的出现,影响执行的效率 , 补充:DMA方式 全称Direct Memory Access 不通过计算单元而完成的,传递存储单元的过程,TS101有14个DMA(其中包括4个链路口)那能完成的功能: Internal memory <,> External memory and memory-mapped peripherals Internal memory <,> Internal memory of other TigerSHARCs residing on the cluster bus Internal memory <,> Host processor Internal memory <,> Link port IO External memory <,> External peripherals External memory <,> Link port IO Link port IO <,> Internal memory Link port IO <,> External memory(FLYBY模式) Link port IO <,> Link port IO 上面也谈到了优先级,下面是DMA的优先级: DMA的传输控制器TCB DI :地址 DX :分为两个部分,一个高16位是计数器,低16位是地址改变值 DY :和DX相同,在2维DMA时会用到,后面会介绍2维DMA DP :DMA控制信息具体的含义 举例: , 内部到SDRAM: data_tx是在片内的一段大小的大小64*32bit数据 XR0 = data_tx;; <,> DI Register XR1 = 0x00400004;; <,> DX Register XR2 = 0x00000000;; <,> DY Register XR3 = 0x47000000;; <,> DP Register DCS0 = XR3:0;; XR8 = sdram_data;; XR9 = 0x00400004;; XR10 = 0x00000000;; XR11 = 0x87000000;; DCD0 = XR11:8;; , 2维DMA: 有两个阶段: 第一阶段: (1)存储在TCB DI 的寄存器地址输出,DMA周期开始 (2)与此同时,DI加上DX中的地址偏移量 (3)TCB DX Count 减 (4)如果TCB DX Count 减为0就进行第二阶段 第二阶段: (1) 将X计数器值初始值(存储在DCIX)付给)TCB DX Count Y中增量加到TCB DI上 (2) (3) TCB DY Count 减1 (4) DY减为零就停止DMA , DMA链: , 补充:异常手册 任何一个产品都不是完美的,TS101也是如此。它有一个异常手册说明如果进行这样的操作,就可能会出现问题,这是由于设计的时候出现的问题,在编程的时候,我们要避免这种情况的出现。 比如在异常手册中有如下的一条: 1DDMA chaining fails if DY field is non-zero: 1维DMA的时候,写DY就可能会出现问题,所以才写TCB的时候,将DY清零 3. TS101芯片的运行特点 , 多指令并行与软件设计 DSP中采用的是8级流水的方式进行指令 前三个为取指令周期,下面分别有JK核的流水(3)级,以及计算单元的流水(2级) Decode(D) 解码周期:程序控制器进行下一条指令分配到相应的运算单元内,IAB去描述是会由那些指令来进行运算,刷新PC。IALU解码,计算单元将指令传给ALU、multipler、shifter Interger(I):IALU算术运算,返回结果刷新标志,计算单元进行解码指令检查可靠性 Access(A):IALU开始和内存交互计算单元开始选择计算的寄存器 Execute 1 and 2:IALU完成memory access 指令 计算单元完成计算,并返回结果,刷新标志 8级流水举例: 8级流水可能引起的中断: 有很多类型,这里举一个例子说明: 编程时尽量避免上述的情况出现,造成运算周期的浪费 BTB作用: , 一条指令是机器是如何进行辨别执行的,下面就机器码举例说明: 先请看机器码的一般形式: xr0 = 0;; 0x88008000 二进制:1000 1000 0000 0000 1000 0000 0000 0000 上面语句看上去还有什么要补充的地方, 语句: xr0 = 0x7FFFFFFF;; 0xB27FFF80 和 0x0800FFFF 0x0800FFFF :0000 1000 0000 0000 1111 1111 1111 1111 0xB27FFF80 :1011 0010 0111 1111 1111 1111 1000 0000 xr0 = r0 - r0;; 0xA4020000 二进制:1010 0100 0000 0010 0000 0000 0000 0000 问题:上面的xr0 = 0 和xr0 = r0 - r0的结果xr0都是0 ,两条语句在执行时有何区别, xr2 = xr3;; 0x88030004 二进制: 1000 1000 0000 0011 0000 0000 0000 0100 xr2 = pass r3;; 0xA41A8860 二进制:1010 0100 0001 1010 1000 1000 0110 0000 4、TS101的核设计特点 , 16bit、8bit、64bit操作 计算核三项输入,三个核分开,可同时进行不同的操作。核内总线是64位的,也就是说,最多支持到64位的数据操作,ALU,乘法器均是两个输入一个输出,而shifter是四路都可输入,这种结构就使得每个Compute Block最多能有两个指令同时被执行,最多支持到Long型的运算。因为,ALU和乘法器均需要两个输入,这时就会使得任意两个执行的时候,就不可能由第三条指令被执行(内部就没有更多的总线)。如下的语句能并列: xr0 = r1 * r2;xr9 = r8 , r10; xr11 = lshift r12 by r4;; 不能并列 xr2 = xr3; xr9 = r8 , r10; xr11 = lshift r12 by r4;; 可以并列 为什么, , Program Sequencer的设计 有SQCTL (Sequencer Control Register)寄存器 里面有循环计数器来进行循环的处理,一共有2个32位的循环计数器LC0和LC1 在进行循环语句的时候,可以此来进行循环的处理,后面会举例说明 5(汇编语言举例 , ALU指令 (1)ALU Fixed-Point Instructions XBR11:10 = R9:8 + R7:6 ;; (2)ALU Logical Operation Instructions XBR3:2 = MERGE R0, R1;; (3)Add/Subtract (Dual Operation, Floating-Point) XFR0 = R1 + R2 , XFR3 = R1 - R2 ;; , Multiplier Instructions {X|Y|XY}MRa += Rm ** Rn{({I}{C|CR}{J})};; , Shifter Instructions {X|Y|XY}{B|S}Rs = LSHIFT|ASHIFT Rm BY Rn| ; {X|Y|XY}{B|S|L}Rsd = LSHIFT|ASHIFT Rmd BY Rn| ; R5 = lshift R3 by -4; If R3 = 0x140056A3 then R5 = 0x0140056A SR5=ashift R3 by -4; If R3=0x840056A3 then R5=0xF8400056A , IALU Instructions (1)IALU (Integer) Instructions Js = (Jm +|- Jn||)/2 ; Ks = (Km +|- Kn||)/2 ; J4 = (J2 + J8) / 2;; K9 = (K2 + 0x2) /2 ;; (2)IALU (Load/Store/Transfer) Instructions Ureg_s = [Jm +|+= Jn||] ; Ureg_sd = L [Jm +|+= Jn||] ; Ureg_sq = Q [Jm +|+= Jn||] ; Ureg_s = [Km +|+= Kn||] ; Ureg_sd = L [Km +|+= Kn||] ; Ureg_sq = Q [Km +|+= Kn||] ; 这里要注意 L型:要以奇数寄存器地址开头,如:xr1:0 ,xr3:2等等 Q型:要以4字对齐的开头,如:xr3:0,xr7:4等等 这是由于DSP内部的结构所决定的 如: xr3:0 = Q[ j0 + j4];; xr1:0 = L[ j0 + j5];; , Sequencer Instructions If – Do (Conditional Execution) IF Condition; DO, Instruction; DO, Instruction; DO, Instruction ;; Condition 可以由计算核来判断,或由JK中的标志位进行判断主要的判断,比如在比较语句中: XSTAT中的AN、AZ、AV、AC等几个标志位来进行判断的具体的如何判断就是看 参照图 以上这些都可以由这些来进行判断,只要将其写入Condition的地方即可,就可进行判断 据一条指令来说明: {X|Y|XY}{S|B}COMP(Rm, Rn) {(U)} ; {X|Y|XY}{L|S|B}COMP(Rnd,Rnd) {(U)} ; AZ Set if Rm and Rn are equal AN Set if Rm is less than Rn AV (AOS) Cleared (not changed) AC Cleared comp(r0 ,r1);; if xale; do, xr20 = xr7;; comp(r0 ,r1);; if xale; jump label;; 前面提到的循环奇数器指令: LC0 = N ;; /* N = 10, sets up loop counter */ _start_loop: NOP ;; /* any instruction */ NOP ;; /* any instruction */ NOP ;; /* any instruction */ _start_loop_end: IF NLC0E, jump _start_loop ;; /* condition test at loop end */ LC0、LC1是循环用的寄存器,每判断之前减1
本文档为【TS101芯片结构与汇编语言】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_036899
暂无简介~
格式:doc
大小:562KB
软件:Word
页数:20
分类:互联网
上传时间:2017-11-16
浏览量:27