CN102637157B - 一种片上数字模板系统dtsoc - Google Patents
一种片上数字模板系统dtsoc Download PDFInfo
- Publication number
- CN102637157B CN102637157B CN201110038302.4A CN201110038302A CN102637157B CN 102637157 B CN102637157 B CN 102637157B CN 201110038302 A CN201110038302 A CN 201110038302A CN 102637157 B CN102637157 B CN 102637157B
- Authority
- CN
- China
- Prior art keywords
- data
- ppc
- dtsoc
- sde
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Logic Circuits (AREA)
Abstract
本发明提供一种片上数字模板系统DTSOC,是一种面向C程序的可编程系统。该系统的目标是应用于实现各种高带宽实时数字信号并行处理、多个独立工作的数字组件功能及逻辑级的IO交互控制。DTSOC包括IO接口电路、通讯区和系统区:通讯区,用于分组配置IO状态,为外设与系统区交换数据提供双向的传输、缓冲的通道;系统区用于通过通讯区对IO交互进行控制并承担各种数据处理,其中,系统区包括SFU、BPU、隶属展开层子系统的各种PPC和SDE。本发明是一种面向C程序的通用可编程系统,易于开发,并行处理效率高,依据本发明实施的集成电路产品可作为各种复杂电子系统的基础部件(如DSP、FPGA的作用)。
Description
技术领域
本发明涉及集成电路技术领域,尤其涉及一种片上数字模板系统(DTSOC,Digital Template SystemOn Chip)。
背景技术
FPGA(Field-Programmable Gate Array,现场可编程门阵列)是面向逻辑设计的可编程系统,一般开发者使用各种HDL(硬件描述语言)来编写FPGA程序,由FPGA的开发工具来自动实现在FPGA上的综合、布局布线并产生最终的器件配置代码。其间还涉及功能仿真、时序分析(最高时钟频率估计等),布局布线后延时信息反标注条件下的后仿真(时序仿真)等环节。FPGA开发流程就像一个高度压缩的专用集成电路(ASIC)开发,当然FPGA后端流程只是在已有的可配置逻辑块、选通矩阵、SRAM及各种嵌入式资源上进行的,一般都由开发工具自动完成的。
在FPGA中连接可配置逻辑块(CLB)以实现并发工作的载体是选通矩阵(switch matrix),选通矩阵被用来组合CLB之间“硬连线”。对较复杂的应用系统,FPGA通过层级化、结构化、多模块的程序来分解设计任务。层级和模块的划分并没有明确的限制,是自由的。在FPGA开发平台后端流程中,模块和层级结构将被打开展平,然后才能布局布线。在FPGA应用开发中,在程序编写时,逻辑资源的复用是十分复杂、耗时最多的工作。
FPGA有很长的演化历史,甚至可以追溯到中大规模集成电路工艺时期的可编程逻辑阵列(PAL)。实际上FPGA结构最基本的部分变化不大,虽然为适应SOPC(可编程片上系统)的要求,FPGA除了线性集成了更多的CLB,改进了选通“连线”的速度,还增加了大量的嵌入式资源,如块存储器、乘法器、专用的高速IO接口,甚至还直接嵌入CPU硬核。
发明内容
本发明实施例提供一种片上数字模板系统DTSOC,以提供一种面向C程序的可编程系统。该系统能够应用于实现各种高带宽实时数字信号并行处理、多个独立工作的数字组件功能以及逻辑级的IO交互控制,此类应用与FPGA应用领域部分类似,但结构完全不同。
一方面,本发明实施例提供了一种片上数字模板系统DTSOC,是一种面向C程序的可编程系统,所述片上数字模板系统DTSOC包括输入输出IO接口电路、通讯区和系统区,其中,
所述通讯区,位于所述系统区外围,并与所述IO接口电路相连,用于分组配置IO状态的逻辑,为外设与所述系统区交换数据提供双向的传输、缓冲的通道;所述通讯区的多模式缓冲为所述系统区以编程数据处理的方式处理IO接口电路的时序控制提供缓冲、映射及转换支持;
所述系统区,用于通过所述通讯区、所述IO接口电路与外设建立各种交互关系,对IO交互进行控制并承担数据处理功能,其中,所述系统区包括一个系统配置单元SFU、多个后台处理单元BPU、展开层子系统和数据软交换中心SDE,其中:
所述系统配置单元SFU,用于接受来自外部中央处理器CPU的指令和数据,或者按CPU的指令向CPU上传数据;DTSOC的各层级、各区域的配置代码通过所述SFU从外部非易失程序存储器中读取;所述SFU也是DTSOC系统级程序的执行主体;
所述后台处理单元BPU,用于在所述SFU配置、控制下成为一个或几个独立应用功能的次级主处理器,执行应用功能中被编为后台程序的部分,同时会负责其所辖的下一层多个可编程处理元PPC的配置、控制、调度;
所述展开层子系统,包含多个不同类别可编程处理元PPC,皆属处理器架构,有微型指令集,可存放程序,通过执行其规定类功能范围内、指令集范围内编制的程序来承担计算、传输、存储、控制,应用程序会在该层中多个PPC中展开分布,为用于实现高带宽实时数字信号处理、多个并存的独立数字组件功能的载体;
所述数据软交换中心SDE,用于在DTSOC系统中连接所述SFU、所述BPU、所述PPC协同并行工作,是按照附加在数据上的标识码的指引来自动执行在SDE多个数据口上的任意点对点的数据交换,在所述SDE交换的数据是等位宽的。
可选的,在本发明一实施例中,所述系统区内并无全局总线:所述SDE是在DTSOC系统下不同层级、相同层级的处理单元之间建立联系的渠道,在DTSOC系统中分布的多个存储器之间的数据交换、不同层级处理单元之间的消息交互以及展开层内子域之间、子域内的数据交换都是通过不同类型SDE进行的;所述系统区也没有全局同步时钟:SDE必须能处理同频异步时钟域之间的数据交换;此两个特点意味着设计实施本发明的集成电路产品的数字部分时,并无复杂的全局时序收敛难点问题。
可选的,在本发明一实施例中,所述SDE数据交换使用的标识码由两段数值组成:一段是路径域数值,该路径域数值按SDE的规则给出到达SDE的输出数据端口也就是目的功能单元入口的SDE路径,一旦数据在SDE中传输完成,路径域数值就失去了效用,目的功能单元将忽略路径域数值;另一段是代号域数值,当一个目的功能单元的一个入口接收到多个不同属性的数据时,标识码的代号域数值就是目的功能单元识别这些数据的根据,更确切的说,标识码中代号部分相当于数学中的变量名。
可选的,在本发明一实施例中,所述SDE的标准结构基元为自动数据交换基元ADEC,所有SDE由相同类型的ADEC组合交联而成,如果以分离的双向数据口为一个数据口单位,每个ADEC一般有固定的k个数据外挂口,和k/4或k/2个数据中转口,其中k是4的倍数;ADEC又分两种基本类型:单区型和双区型。
可选的,在本发明一实施例中,所述展开层子系统的基本分区:数据管理域和数据处理域;数据管理域被细分为任务管理子域和后台管理子域、数据处理域被细分为非乘法数据处理子域和乘法核心子域;所述展开层子系统包含的多个不同类别PPC具体包括:
任务数据管理可编程处理元TDM-PPC,是数据管理域之任务管理子域的专属PPC;TDM-PPC与数据处理域交界,为其直接提供缓冲数据的输入输出服务,所有TDM-PPC也可称为前台数据管理PPC;TDM-PPC还与后台管理子域交界,与后台管理PPC形成数据管理的结构性分工;TDM-PPC还与上位机BPU有双向消息互通管道,上位机BPU对展开层的各种控制、调度都是通过TDM-PPC来实施,而BPU接收的展开层消息也是由TDM-PPC发出或转送的;
后台数据管理可编程处理元BDM-PPC,是数据管理域之后台管理子域的专属PPC;每个BDM-PPC都有一个公共SRAM,对内BDM-PPC起到SRAM可编程管理器的作用,负责数据的存取、维护;BDM-PPC并不直接服务于数据处理,服务的对象是任务性数据管理,为其提供一定程度数据抽象:任务数据管理不用关心数据在某个SRAM中的存储细节,与TDM-PPC的数据通道管理为同名缓冲数据在不同的公共SRAM上存取提供抽象相结合,为数据处理域提供完全的数据抽象;BDM-PPC还可以接受通过BPU/TDM-PPC转送的SFU指令,与另一个BDM-PPC协同管理公共SRAM之间的数据DMA操作;BDM-PPC内核采用双线程架构:BDM-PPC内核轮流独立执行数据存储线程和数据输出线程以适应两者的异步关系;
数据处理可编程处理元DP-PPC,是非乘法数据处理子域的专属PPC;在DP-PPC可存放小段数据处理程序,能在极高的时钟频率下反复执行之;在展开层子系统之非乘法数据处理子域内大量DP-PPC通过单区型SDE连接起来,可以将数据处理程序展开分散到多个DP-PPC中以获得极高的DSP处理带宽;DP-PPC可工作在多种模式下而呈现多种形态;在模式配置后,在连续的运行过程中,DP-PPC只能工作在一个模式下,呈现一种形态;DP-PPC的工作子模式包括:一般工作模式、延迟线模式、数据组合模式、单精度浮点计算模式、循环冗余码处理模式;其中的一般工作模式是片面的、微型的处理器的工作模式,是DP-PPC的基本工作模式,大多数DP-PPC的结构是优先按基本模式设计的;其操作有寄存器之间传输、布尔逻辑处理、部分和处理、部分桶式移位及冗余位消减处理;
乘法计算可编程处理元MP-PPC,是乘法核心子域的专属PPC;MP-PPC在固定提供1个8bit×8bit无符号乘法计算外,还能识别不同标识码的输入数据对,并对应产生若干个返回数据的标识码。
可选的,在本发明一实施例中,所述PPC为双时钟域结构,包括:PPC外围系统时钟域和PPC内核高倍率处理时钟域:
在PPC内都有一个独立的时钟发生器,产生的处理域时钟是系统时钟沿触发的非独立高倍频脉冲串,且脉冲的宽度、脉冲数目是可配置的;
在PPC外围系统时钟域有一个工作在系统时钟域的较短的总线,用于PPC内核访问外围各特殊功能模块的可寻址寄存器用,此总线不能延伸到PPC独立单元外,也对PPC内核没有作用,PPC内核寄存器与外围寄存器是分开独立编址的;PPC内核是不能直接访问外围编址寄存器,PPC内核只能通过读写界面寄存器来间接访问外围寄存器或发送数据、消息;
所述DP-PPC同样工作在两个时钟域上:一个是系统时钟域,另一个是高倍率处理时钟域;DP-PPC与外部系统交换数据是在DP-PPC的系统时钟域中进行,交换的数据包括待处理的数据以及以数据形态表示的状态、分支控制信息,系统时钟是不能轻易改变,在处理时钟域,DP-PPC内核随着刷新的输入数据反复执行内部的小段程序,这个过程是独立于系统的其他部分的,也是为系统其他部分不可见的。
可选的,在本发明一实施例中,所述DP-PPC面向一些复杂的展开层应用程序时,相互协同的多个DP-PPC是以不同的工作模式出现,通过以DP-PPC的各种工作模式各自的较小操作域为参照基准,复杂的展开层应用程序等效重组为限制在若干个小操作域内实施的多个分类片段,并且由多个DP-PPC以不同的工作模式来分工承担复杂程序中的分类片段。
可选的,在本发明一实施例中,所述DTSOC系统的展开层子系统的非乘法数据处理子域内,配置若干个DP-PPC协同执行一个应用程序的数据处理部分,协同的方式不是接受一个外在的控制器来管理,而是基于规则性的数据驱动机制,数据驱动机制有两个层面的含义:在处于工作状态的DP-PPC内部层面,是由外部输入数据触发DP-PPC预存的小段程序的顺序执行的,当程序即将处理的输入数据未到时,DP-PPC将停顿下来等待输入数据,一旦输入数据被处理一次就视为无效,DP-PPC等待新的外部输入数据以触发新一次的程序执行,此过程不断重复;在DP-PPC之间的层面,各DP-PPC是以交换粘连标识码的标准格式数据来实现交联的,在DP-PPC交联层面必须遵循交联数据唯一路径规则,即一个源端DP-PPC输出的交联数据只能传送给一个目的DP-PPC,而不能再传送给其他目的DP-PPC;
所述DP-PPC的运行是基于数据驱动机制,加上经由SDE的数据传输的标识码机制,意味着DP-PPC之间协同没有时序紧约束问题;所述DP-PPC的分支控制也是通过数据驱动机制实现的,即前一处理环节产生不同代号的数据触发一个DP-PPC内不同独立程序段的执行,或者触发不同的DP-PPC工作;所述DP-PPC内核只能执行顺序程序段,程序中分支控制由DP-PPC外围系统时钟域模块分工处理,这个结构安排极有利于DP-PPC内核硬件逻辑能达到极致工作频率。
可选的,在本发明一实施例中,所述DP-PPC在一般工作模式下指令由5个并列的维操作码组成,表示可并行执行5种指定操作,且指令无常规的操作数,构成所有指令的5个维操作均是原子操作,原子操作的意义指其基本不能分解为其他原子操作的组合形态,所有维操作仅发生在临近的寄存器之间。
上述技术方案具有如下有益效果:本发明实施例是一种面向C程序的通用可编程系统,易于开发,并行处理效率高,依据本发明实施的集成电路产品可作为各种复杂电子系统的基础部件(如DSP、FPGA的作用)。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1-1为本发明实施例从顶层看DTSOC芯片是由通讯区、系统区组成;
图1-2为本发明实施例均等的IO形式分组的形成;
图1-3为本发明实施例三种IO功能分组类型;
图1-4为本发明实施例同功能域IO组由若干个IO功能分组构成;
图1-5为本发明实施例DTSOC体系的端口单元逻辑原理框图;
图1-6为本发明实施例DTSOC通讯区顶层结构框图;
图1-7为本发明实施例IO形式分组的端口单元组与接口缓冲及控制器之间的界面信号;
图1-8为本发明实施例IO形式分组的接口缓冲及控制器的顶层框图;
图1-9为本发明实施例输入、输出绑定信号的选择;
图1-10为本发明实施例接口缓冲器由4个分离的锁存器阵列组成;
图1-11为本发明实施例接口缓冲器各种配置示例;
图1-12为本发明实施例接口缓冲器隔离了对系统区的同步锁定;
图1-13为本发明实施例起弥补两种分组错位作用的选通对接器及单元结构;
图1-14为本发明实施例数据对接处理单元的内部结构及外接口图;
图2-1为本发明实施例DTSOC系统区的三层结构;
图2-2为本发明实施例多个数据经不同路径、延迟传输到同一目的地示意图;
图2-3为本发明实施例ADEC单区基本型的端口示意图;
图2-4为本发明实施例通过上层ADEC实现不同ADEC的外挂口之间的数据交换;
图2-5为本发明实施例ADEC双区基本型的端口示意图;
图2-6为本发明实施例通过插入延迟环节补偿传输数据口之间的距离不等造成的延迟不均衡;
图2-7为本发明实施例DTSOC版图中“坚硬”的SC(标准单元)和“柔软”的SDE;
图2-8为本发明实施例基于4-1单区基本型ADEC组成的三层单区型SDE;
图2-9为本发明实施例通过降低输出数据率来实现同源异步时钟之间的数据交换;
图2-10为本发明实施例当输入模块的同源异步时钟滞后输出模块时钟时的数据传输波形;
图2-11为本发明实施例当输入模块的同源异步时钟超前输出模块时钟时的数据传输波形;
图2-12为本发明实施例BPU简略结构图;
图2-13为本发明实施例SFU的顶层简略图;
图2-14为本发明实施例DTSOC系统区展开层顶层结构框图;
图2-15为本发明实施例数据处理域的两个子域结构示意图;
图2-16为本发明实施例DTOSC系统区展开层子系统的架构剖面;
图2-17为本发明实施例非乘法数据处理子域内大量DP-PPC由单区型SDE交联在一起;
图2-18为本发明实施例TDM-PPC对同名多存储源数据抽象的关键作用;
图2-19为本发明实施例DTSOC体系广义展开层子系统的架构剖面;
图3-1-1为本发明实施例沿触发高倍率时钟发生器的逻辑原理简图;
图3-1-2为本发明实施例PPC的双时钟域通用结构;
图3-1-3为本发明实施例PPC处理时钟域与系统时钟域数据交换需要足够的建立时间;
图3-2-1为本发明实施例TDM-PPC顶层框图;
图3-2-2为本发明实施例TDM-PPC的消息识别及发送模块参数意义示意图;
图3-2-3为本发明实施例TDM-PPC内核结构及接口简图;
图3-3-1为本发明实施例BDM-PPC顶层框图;
图3-3-2为本发明实施例BDM-PPC的输入预处理模块可配置参数的意义;
图3-3-3为本发明实施例存储处理模块逻辑原理图;
图3-3-4为本发明实施例BDM-PPC的输出处理模块结构框图;
图3-3-5为本发明实施例BDM-PPC双架构线程内核结构及接口简图;
图3-3-6为本发明实施例边界DP-BBC通讯功能略图;
图3-4-1为本发明实施例DP-PPC协同产生的等效操作域的光谱图;
图3-4-2为本发明实施例DP-PPC处理分支程序的两个基本路径;
图3-4-3为本发明实施例4-1、4-2单区基本型ADEC接口框图;
图3-4-4为本发明实施例子域SDE的交叠式两层结构;
图3-4-5为本发明实施例DP-PPC的顶层结构框图;
图3-4-6为本发明实施例外围数据传输通道模块的数据通路结构;
图3-4-7为本发明实施例在外围传输通道内4种中转中继数据传输的模式;
图3-4-8为本发明实施例数据驱动控制模块输入部分框图及波形图;
图3-4-9为本发明实施例数据驱动控制模块输出部分(包含分支控制)框图;
图3-4-10为本发明实施例一般处理模式下DP-PPC内核12个编址寄存器矩阵式布局;
图3-4-11为本发明实施例标准二进制数据与冗余格式二进制数据的部分和4bit位区逻辑图;
图3-4-12为本发明实施例双冗余格式二进制数据的部分和4bit位区逻辑图;
图3-4-13为本发明实施例4bit位区冗余位消减逻辑;
图3-4-14为本发明实施例16bit数据冗余位消减关键路径部分逻辑及布局;
图3-4-15为本发明实施例一般处理模式下DP-PPC内核算术逻辑资源分布图;
图3-4-16为本发明实施例借用右移实现左移时源数据和结果数据的错位;
图3-4-17为本发明实施例一般处理模式下12个内核寄存器传输的局部性示意图;
图3-4-18为本发明实施例DP-PPC内核顶层结构框图;
图3-4-19为本发明实施例3级缓冲2级译码的DP-PPC内核指令处理逻辑;
图3-4-20为本发明实施例位于3、4级主路径寄存器2个16bit的数据组合逻辑;
图3-4-21为本发明实施例数据整理模式下DP-PPC内核逻辑资源分布图;
图3-4-22为本发明实施例子域内中间数据的生命太长和复用的实例;
图3-4-23为本发明实施例插入DP-PPC延迟线以解决子域内中间数据的生命太长问题;
图3-4-24为本发明实施例解决子域内中间数据的复用的两种方案;
图3-4-25为本发明实施例未配置状态DP-PPC延迟线结构简图;
图3-4-26为本发明实施例配置下延迟线组合形态;
图3-4-27为本发明实施例微型存储器模式的DP-PPC为一个有24个地址的微型存储器;
图3-5-1为本发明实施例MP-PPC顶层结构框图;
图3-5-2为本发明实施例输入输出处理模块;
图4-1为本发明实施例数字组件程序分解及展开程序函数化;
图4-2为本发明实施例展开类型任务函数的5类展开层子系统资源布局;
图4-3为本发明实施例展开类型成员函数内消息交互类型;
图4-4为本发明实施例4个展开类型成员函数之间的数据交换;
图4-5为本发明实施例定量记录成员函数的存储空间被覆盖的状态对重新建立的影响。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
DTSOC是Digital Template System On Chip的简写,即片上数字模板系统。DTSOC是一种通用的、可编程的大型系统架构集成电路,开发者可以通过编制结构化的程序来在DTSOC上构造复杂的嵌入式数字电子系统,实现各种高带宽实时数字信号处理、多个并行工作的数字组件功能及IO交互控制,当然它还是一个可升级可重构的系统。DTSOCD应用领域与FPGA部分类似,但DTSOC有自己全新的体系原理、独特的架构以及简便易用的开发模式
与FPGA面向逻辑设计不同,DTSOC是面向C程序的可编程系统。但DTSOC也是一种支持并行处理的硬件架构,它同样能实现多个表示为函数的独立功能的并行运作,也可以利用横向并行(数据并行)、纵向并行(操作并行)等结构式方法来使DSP类型计算的带宽达到FPGA那样的水平。需要特别指出的是由于C应用程序会以一定形式展开分布在DTSOC体系中,实际上,DTSOC体系“看到”的是应用程序序列直至整个应用程序本身而不是一个个零碎的指令,从而能在不改变原程序算法和逻辑功能的前提下重组应用程序以适应DTSOC体系结构的特点,或者说DTSOC体系获得了这样的能力:可以按易于DTSOC硬件实现的特点来等价重组应用程序从而显著提高效率。
DTSOC体系特有的基本单元是几种类型的可编程处理元PPC(programmable processing cell)。PPC是自通用处理器(GPU)演化而来的,是一种片面的、微型的GPU。几种PPC按给定的功能定义,都有自己的微型指令集,按指令集编制的小段程序赋予PPC功能特性。PPCs是DTSOC体系可以面向软件程序的结构基础。在DTSOC体系下连接PPCs协同并行工作的载体是数据软交换中心SDE(soft dataexchanger),SDE是按照附加在数据上的标识码的指引来自动执行在多个数据口上的任意点对点的数据交换,PPCs负责编制标识码并输出数据或通过识别标识码来接受数据。
在DTSOC应用设计中,程序的层级化、结构化是DTSOC体系要求,必须符合DTSOC的结构规则,不能自由划分。描述应用功能的C程序并不能直接转换为DTSOC有意义的配置,必须在不改变算法、指令操作序列的内在逻辑关系的前提下,分几步将C程序改写为可以结构编译的DTAL(数字模板架构语言)程序,而每一步形成的中间程序,在算法上、逻辑上都是等价的,都可在C平台上验证的。DTAL程序中的层级和函数必须与DTSOC结构有对应关系,且必须在DTSOC平台提供的格式化程序模板上填写修改。另外DTSOC平台还提供一些结构程序语句用于描述DTSOC一些硬件结构功能,这些结构程序语句并不会被编译,在DTAL程序中起到连接作用,使得整个DTAL程序依然符合C语法规则。这就是DTSOC名称中数字模板(digital template)的意义:必须按照DTSOC体系给定的框架、层级、函数以及结构程序语句的模板组织、编写DTSOC的应用程序。
系统级程序或者数字组件后台程序可以随时建立、调用、闲置和撤销在DTSOC体系中展开配置的函数。在DTSOC体系下,建立函数的意义是将在后备存储器中代码在DTSOC架构上展开配置,使该函数是可调用的。被撤销的函数意味着它占用的DTSOC资源被释放,可以让其他函数在这些资源上建立。DTSOC体系独有的函数建立、撤销的机制使得通过DTSOC架构资源的多元复用的方式来显著提高资源的利用效率的工作变得十分简单。
本文首次提出的DTSOC是一个全新的通用体系架构,本方案框架性的论述主要是清晰、完整地表述了DTSOC系统结构,但只对DTSOC关键性的功能模块或者为DTSOC独有的功能模块展开详细的分析论述。DTAL语言的独特性以及DTSOC应用程序开发流程的独特优点都有清晰的论述。本文中采用了一些细节性描述——尤其是一些具体的参数——的目的是为了更好、更细致地说明DTSOC体系原理,并不意味着是不可改变的。
特别应指出的是,DTSOC各层次之间、同层次不同区域或类别的执行主体之间、同类别但不同的执行主体之间都是以单一标准格式进行数据或信息的交换。DTSOC体系准备支持两种标准数据格式:16bit、32bit,以下本文仅以16bit为唯一标准数据格式来展开分析,但本发明实施例并不以此为限。
一、DTSOC通讯区结构
在DTSOC体系中通讯区位于外围并与IO接口电路相连,DTSOC体系的内核(系统区)是通过通讯区、IO接口电路与外设建立各种交互关系,但IO交互的主要控制功能需由DTSOC系统区来承担,DTSOC通讯区主要起到IO功能映射、数据通路和缓冲作用。在系统区发出的控制信号的管理下,DTSOC通讯区也执行一些简单的需即时处理的控制功能,如握手交互控制、采样使能控制等。
1.1DTSOC通讯区的概述
1.1.1DTSOC顶层结构
DTSOC是一个层次化、结构化的架构。在架构顶层则是由通讯区和系统区组成的。通讯区在DTSOC外围,是面向外设的功能区。系统区在DTSOC内侧,是承担多个独立并行的数据计算或等效时序控制的核心区。
图1-1为从顶层看DTSOC芯片是由通讯区、系统区组成。DTSOC体系通讯区有两个接口界面:IO接口电路、系统区的外围SDE接口(SDE在第2章再作介绍),在IO接口电路与DTSOC系统区之间,DTSOC通讯区起到媒介作用。在DTSOC体系中,即使是接口的交互控制也主要由强大的系统区来承担。DTSOC通讯区的主要作用是提供配置IO状态的逻辑、为外设与DTSOC系统区交换数据提供双向的传输、缓冲的通道。在输出向通道上,系统区会附加一些控制信号,用于管理通讯区执行一些即时的简易接口控制。
1.1.2均等的IO形式分组
DTSOC没有FPGA那种直接实现各种组合逻辑、时序逻辑的资源,不可能一个一个地配置IO的状态,而是按组配置IO的功能。虽然DTSOC的IO配置达不到FPGA那样的任意性,但也要保证有足够的灵活度。
以16为基数,一个DTSOC产品的全部IO被划分为若干个均等的IO形式分组。形式分组的意思是指分组是架构性的,并没有明确的功能意义。通讯区各功能单元都是按IO形式分组配置或者参照IO形式分组配置。每个IO形式分组都分配了16个IO,目的显然是与本文预定的16bit基准数据格式相符合。当然在DTSOC产品中可能有一个IO形式分组没有16个IO,但仍然可以按标准IO形式分组来进行处理,只不过有些数据位是冗余的而已。
图1-2为均等的IO形式分组的形成。
1.1.3IO功能化映射
1.1.3.1同功能域IO组
在实际应用中,一个独立定义的接口模块所涉的IO,都是同功能域IO组。如32bit位宽的DDRSDRAM的同功能域IO组由32个数据双向口、12+2个地址接口和片选接口、若干控制接口组成。在DTSOC体系下,一个同功能域IO组的端口必须相互邻接,不能在其中插入其他同功能域IO组的端口。
1.1.3.2IO功能分组
在DTSOC体系中,在对所有IO进行功能化定义时,必须考虑按IO形式分组为基准进行分解、组合、偏移等映射处理。这是因为DTSOC体系通讯区是按IO形式分组为单位配置资源的。
正是为了对应DTSOC通讯区内以IO形式分组为特征的资源结构,DTSOC体系提出了IO功能分组这样一个中间概念。IO功能分组是指任意分布的、涵盖不超过16个邻接端口的IO分组,且IO功能分组的所有端口都是一个同功能域IO组的一部分(也可能是全部)。也就是说一个同功能域IO组可以由若干个IO功能分组构成,一个IO功能分组的所有IO只能属于一个同功能域IO组。
图1-3为三种IO功能分组类型:16位宽且与IO形式分组重合;
位宽小于16;16位宽但横跨两个IO形式分组。
在图1-3中显示三种IO功能分组类型。当IO功能分组的位宽不足16bit时,DTSOC系统区仍按16bit来处理,来自系统区的输出向数据中多余的位在端口的扩展接口电路处被丢弃,而输入采样中多余的位在系统区被忽略。而不论一个IO功能分组是横跨两个IO形式分组还是与一个IO形式分组重合,对DTSOC系统区而言都是一样的,如何映射到按IO形式分组配置的IO上则是DTSOC通讯区内部处理的事情。
图1-4为同功能域IO组由若干个IO功能分组构成,图1-4显示一个独立定义的具有较多端口的同功能域IO组是由若干个邻接的IO功能分组组成,所有IO功能分组的位宽都不应超过16bit。
DTSOC通讯区也有逻辑资源支持IO功能分组,IO功能分组与IO形式分组的相互转换也是在通讯区内自动实现的,DTSOC体系的系统区面对只是IO功能分组,且不论IO功能分组是否满16bit,都按16bit看待。不需要系统区知道IO形式分组,IO功能分组与IO形式分组的相互转换以及同属一个同功能域IO组的若干个IO功能分组在端口前的同步绑定由DTSOC通讯区内部逻辑自行承担。
1.2DTSOC体系的端口单元结构
1.2.1端口单元的逻辑结构
DTSOC体系的每个IO都有一个端口单元,这是一个扩展的接口电路,其中除了三态切换、输出驱动、输入采样以及上拉、下拉等常规接口功能外,还包括可配置延迟线及DTSOC体系特有的控制、数据信源的选择。延迟线是由具温度补偿特性的串接延迟门构成,即延迟门的延迟时间不会随温度改变而产生超过额定范围的变化。
图1-5为DTSOC体系的端口单元逻辑原理框图,图1-5所示,DTSOC的端口单元可以支持双数据速率存储器(DDRRAM)接口。
上拉、下拉配置功能在图1-5中并未显示。
在DTSOC体系中规定,每个IO都被划分到由16个IO组成的某个IO形式分组内,而每个IO形式分组一般可为两个任意的IO功能分组映射使用(在限制条件下还可以支持3个IO功能分组),因此端口单元需从两套数据、控制信源中选择。
1.2.2DTSOC芯片端口的旁路通道
从略
1.2.3端口配置寄存器内容
从略
1.3基于形式、功能分组的通讯区结构
1.3.1DTSOC通讯区顶层结构框图
在每个IO的端口单元(扩展的接口电路)到DTSOC系统区之间是DTSOC通讯区。在DTSOC通讯区中,从端口单元一侧开始依次排列了接口缓冲及控制器、选通对接器及数据对齐处理单元。接口缓冲及控制器是基于IO形式分组设置的,数据对齐处理单元是基于IO功能分组设置的且与系统区相连,而选通对接器则专门负责将接口缓冲及控制器和数据对齐处理单元对接起来。
图1-6为DTSOC通讯区顶层结构框图。
1.3.2IO形式分组的接口缓冲及控制器结构
在DTSOC体系中,每16个IO组成的IO形式分组都有单一接口缓冲及控制器。每个IO的端口单元都是一样的且没有横向的联系,挂在一个接口缓冲及控制器上的16个端口单元属于一个IO形式分组。接口缓冲及控制器为一个IO形式分组提供接口数据流的双向缓冲,并执行受控的即时接口交互接口缓冲及控制器按照来自系统区数据中的控制位以及初始化配置的状态来执行接口通讯。
1.3.2.1接口缓冲及控制器的构成
1.3.2.1.1接口缓冲及控制器与16个端口单元的界面
图1-7为IO形式分组的端口单元组与接口缓冲及控制器之间的界面信号。
从图1-7中可见,一个IO形式分组的接口缓冲及控制器将为IO形式分组所属的16个IO的端口单元各提供两个输入时钟、两个输出时钟、两个输出使能信号、2对双数据速率输出信号,可以接受1对双数据速率输入信号。IO形式分组的每个端口单元将根据其内部的配置状态,从这些信号中选择使用。
1.3.2.1.2接口缓冲及控制器的结构
图1-8为IO形式分组的接口缓冲及控制器的顶层框图。
接口缓冲及控制器是由接口控制模块和接口缓冲器组成,接口控制模块是与接口缓冲器外侧接口相连,接口控制模块与上、下IO形式分组的接口控制模块有信号相连,其目的是为了若干邻接IO形式分组的接口控制模块的同步绑定。当一个同功能域IO组的IO数目大于16或者横跨了两个IO形式分组时,需要同步绑定的功能。
1.3.2.2接口控制模块的功能描述
接口缓冲及控制器的接口控制模块有两个功能:①接口握手交互控制,②属于一个同功能域IO组的多个功能分组的接口时序的同步绑定。。一个IO形式分组能够被分解为两个任意的IO功能分组使用(即可以支持双向IO功能分组),因此在接口控制模块中有两套独立的接口控制逻辑:分别称为1号接口控制逻辑、2号接口控制逻辑。
1.3.2.2.1接口握手交互功能
在DTSOC体系中,接口交互的主控制是由系统区承担,输出的控制信号是由系统区以数据的形式发出的,而输入的控制信号也被当作数据传输到系统区进行解析。但简易的接口握手控制是在接口控制模块内处理的,因为这类控制需要即时处理不能延迟,当然系统区是依据系统区输出的附加控制信号来开启或关断接口控制模块内的接口握手控制行为。每个接口控制模块都有一套初始化配置参数:握手/直通使能决定是握手交互还是不受控制的直通传输,握手方向选择决定是输出握手交互、输入握手交互还是双向握手交互,握手时序模式决定从预设的几种握手交互控制模式选择一种。
1.3.2.2.2同步绑定
在接口控制器中的两个接口控制逻辑可以独立设置主工作模式:内控模式、绑定模式。当工作在内控模式下时,由接口控制逻辑按接口缓冲器输出的附加控制信号以及初始化配置参数产生具体控制时序。当工作在绑定模式下时,接口控制逻辑处在冻结状态,一切控制信号均引自上一IO形式分组的接口缓冲及控制器的输出绑定信号。DTSOC体系规定,一个IO形式分组的接口控制逻辑的输入绑定信号只能来源于相邻的上一个IO形式分组的接口控制逻辑,同时可以为相邻的下一个IO形式分组的接口控制逻辑提供一组绑定信号。
图1-9为输入、输出绑定信号的选择。
图1-9显示,在一个接口缓冲及控制器中只有一组输入绑定信号和一组输出绑定信号,至于那个接口控制逻辑接入输入绑定信号或者那个接口控制逻辑输出绑定信号则由接口缓冲及控制器内相应的初始化配置位决定。图1-9还显示可以选择将2号接口控制逻辑绑定在1号接口控制逻辑上。
1.3.2.3接口缓冲器的结构
在DTSOC体系下,由于在系统区的数据处理和传输控制并不会如硬逻辑设计般有完全可预期的固定时序,因此系统区与通讯区进行数据交换时应引入接口缓冲器以留有足够的弹性余量。以避免在输入通道发生输入数据尚未被系统区接受就被后续数据替代而“丢失”错误,避免在输出通道出现系统区未能及时输出数据造成端口处数据“空缺”错误。
1.3.2.3.1接口缓冲器的顶层结构框图
接口缓冲器由4个独立的n×18的双口锁存器阵列组成,这4个锁存器阵列可以配置为多种缓冲结构。n选值范围一般在8~16之间,选值较大时对系统区的数据传输均衡性的时序约束较小。
接口缓冲器还是系统时钟域和接口时钟域之间交换数据的理想媒介:当系统时钟和接口时钟相若时,通过保持一定的缓冲深度,也就是说进入缓冲器的数据在稳定一段时间后才会在另一个时钟域被取出,在此间隔内照样能向缓冲器输入数据,这样就不需要在两个时钟域界面直接的握手交互,从而实现跨时钟域数据无缝交换。
图1-11为接口缓冲器由4个分离的n*18锁存器阵列组成。
图1-10所示共有9个多选器被放置在4个独立锁存器阵列的双边接口处,通过配置这些多选器可以把4个独立锁存器阵列组合成不同的缓冲器结构。双口、双时钟域缓冲器的数据输入、输出的时序控制是由可配置控制器承担,可配置控制器的主要任务是在接口时钟域、系统时钟域之间交换缓冲信息,以保证两个时钟域的数据正确传输。
1.3.2.3.2接口缓冲器的多模式配置
图1-11为接口缓冲器6种配置示例(表示属第二功能分组、表示属第三功能分组)。
1.3.2.3.3附加控制信号意义
DTSOC体系下,接口控制的主体是系统区的编程处理。系统区对接口控制有两种方式:一种是直接给出控制类信号并传给对应的IO。这一类控制信号在DTSOC体系下被数据化了,它们与真正的输出数据(有时还包括地址)信号一起都被系统区当作数据来处理和发送。二是利用附加控制信号来启动、停止或切换接口控制逻辑中的简易接口控制功能。在输出向缓冲锁存阵列上,18bit的数据中16bit是可以直接输送到IO端口上的,额外的2bit就是附加控制信号。
表1-1附加控制信号的意义列表
1.3.2.3.4接口缓冲器对接口控制纳入16bit标准处理格式的作用
当高速并行接口(同功能域IO组)需要若干个邻接的IO功能分组来绑定组成时,发生一个问题:由于DTSOC系统区只能处理标准的16bit接口数据的传输,系统区是无法以精确的方式处理这若干个16bit数据的传输同步的,这就需要在DTSOC通讯区中设置缓冲器来隔离接口同步时序要求传递到DTSOC系统区,同时也要释放同功能域IO组所属各功能分组的时序同步约束。
图1-12为接口缓冲器隔离了对系统区的同步锁定。
图1-12显示一个横跨四个IO形式分组的同功能域IO组,图中只标注了输出向的接口缓冲器状态。图1-12形象显示4个输出向接口缓冲器面向端口一侧是严格对齐的,表明在若干邻接的接口控制器的同步绑定控制是有效的,是能向超过16bit同功能域IO组提供严格同步的输出信号。但在4个输出向接口缓冲器面向系统区一侧则是参差不齐,但只要每个输出向接口缓冲器没有被读空,就不会造成输出信号的时序错误。这实际上说明在系统区分开管理的4个16bit输出通道之间没有紧密的同步锁定问题。因此各种位长的并行接口都可以纳入系统区多执行主体的标准16bit数据处理结构中来。
1.3.3选通对接器结构
在接口缓冲及控制器和数据对齐处理单元之间插入选通对接器的原因是弥补IO形式分组与IO功能分组的错位:在输入向,可能需要从两个IO形式分组中抽取一个IO功能分组数据输入系统区;在输出向,可能需要将一个IO功能分组数据分解为两个IO形式分组数据输出到端口。
图1-13为起弥补两种分组错位作用的选通对接器及单元结构。
图1-13显示输出向接往接口缓冲器的每个数据信号组都由选通对接器从相邻的两个数据对齐处理单元的各一数据信号组选择,在输入向只是简单将一组数据信号组分送两个数据对齐处理单元。
1.3.4数据对齐处理单元的结构
数据对齐是解决IO功能分组与IO形式分组的位置偏移问题。
图1-15为数据对接处理单元的内部结构及外接口图。
图1-14中每个数据对齐处理单元都有4个32/16移位处理模块,其中1、2号是双向类型移位处理模块,3、4号是单向输出类型的移位处理模块。由于系统区只能处理单向数据传输,实际上对应IO形式分组的2个功能分组被拆开为4个单向功能分组。面向接口缓冲器一侧的16bit数据线有12个,分别是2个接口侧输入数据对:DPIN00、DPIN01和DPIN10、DPIN11,及4对接口侧输出数据对:DPOUT00、DPOUT01,DPOUT10、DPOUT11,DPOUT20、DPOUT21以及DPOUT30、DPOUT31,其中在1、2号移位处理模块中由于两个方向的移位处理共享一个移位处理资源,因此在应用时DPIN00、DPIN01与DPOUT00、DPOUT01之间或者DPIN10、DPIN11与DPOUT10、DPOUT11之间只能选择其中一对。面对系统区的数据对齐处理单元内侧16bit数据线有6个,分别是输入数据口DSIN0、DSIN1及输出数据口DSOUT0、DSOUT1、DSOUT2、DSOUT3。在应用时DSIN0、DSOUT0之间或者DSIN1、DSOUT1之间只能选择其一。
在数据对齐处理单元内有一个18bit的对齐配置参数:4个4bit数据为4个独立移位单元的移位参数,而2个1bit分别表示1、2号双向类型移位处理单元的方向选择。
注意:在图1-14中并未显示2bit附加控制信号,附加控制信号是不会进行移位对齐处理的,而是经一级延迟后直传接口缓冲及控制器。
很显然,在数据对齐处理单元内的移位参数、选通对接器的对接选择状态、接口缓冲及控制器的配置状态以及每个IO端口单元内配置状态构成一个多级的组合状态,适应各种应用接口对DTSOC通讯区的要求。
二、DTSOC系统区结构
在DTSOC架构中系统区是DTSOC的核心,除了IO配置、IO交互的简易即时控制外,所有控制或处理都在系统区中进行,包括接口交互的主控制功能。DTSOC系统区是一个多层次、分类分区的复杂结构,这个结构是面向C程序的,可以支持高带宽实时数字信号处理、多个并存的独立数字组件功能。
2.1DTSOC系统区的概述
2.1.1DTSOC系统区与通讯区关系
从总体结构上看,DTSOC通讯区、系统区构成前后台的关系。通讯区只是为系统区与外设之间建立联系提供桥梁,其主要内容是IO功能配置、为外设与DTSOC系统区交换数据提供双向转换、缓冲的通道。
2.1.2DTSOC系统区的层次结构
系统区架构主体是三层结构,系统区每一层次都有对应的可编程处理单元实体,以此体现面向软件程序的主特点。
2.1.2.1第一层是SFU
DTSOC体系的唯一主机是系统配置单元SFU(system configuring Unit),一个DTSOC体系只有一个SFU。作为面向软件程序的体系,DTSOC可以被纳入到一个CPU的扩展体系中。DTSOC体系规定SFU是CPU与DTSOC之间唯一入口,SFU接受来自CPU的指令和数据,或者按CPU的指令向CPU上传数据。当然SFU也可以独立工作,这由上电初始化配置决定。
SFU也是DTSOC体系与外部非易失程序存储器(flash)的接口,DTSOC体系的所有配置、程序代码都存放在外部大容量flash内,初始加载时,DTSOC体系的各层级、各区域的配置代码都要通过SFU从flash中读取。
SFU还是所有DTSOC系统级程序的执行主体,DTSOC体系规定公共SRAM(Static RAM,静态随机存储器)之间传输数据的DMA(Direct Memory Access,直接内存存取)操作属于系统级任务,也是SFU的管理内容。
当然具体到一个DTSOC产品,可以用某种CPU直接替代SFU,除了有专门的flash控制模块来绕开CPU直接为DTSOC其他部分加载代码、数据外,CPU可承担其他DTSOC系统级程序。
2.1.2.2第二层是BPU
DTSOC的后台处理单元BPU(background processing unit)在SFU配置、控制下成为一个或几个独立应用功能的次级主处理器。一般来说BPU会执行应用功能中被编为后台程序的部分,同时会负责其所辖的下一层多个可编程处理元的配置、控制、调度。BPU是一般的通用处理器的简化缩小,只能执行其内部SRAM中的程序。由于BPU执行的后台程序一般对效率要求不高,BPU的指令集也很简单,没有复杂的寻址操作。BPU的特别之处是对下一层多个可编程处理元的控制、调度要通过中断响应程序来执行,BPU为快速进入中断服务程序提供了硬件支持。
2.1.2.3第三层是各类PPC
DTSOC体系的第三层有大量的各类可编程处理元PPC(programmable processing cell),PPC是片面的、微型的处理器,有自己的微型指令集,可存放短小的程序,通过执行其规定类功能范围内、指令集范围内编制的程序来承担计算、传输、存储、控制等功能要求。
DTSOC体系的第三层又被称为展开层,因为应用程序会在该层中多个PPCs中展开分布。由于展开层的意义更明确,后面将主要使用展开层的名称。
展开层的PPCs是真正实现高带宽实时数字信号处理、多个并存的独立数字组件功能的载体。DTSOC架构的主要功能就是为多个PPCs协同执行一项应用功能提供结构性支持,加上上位机BPU在多PPCs子系统之中的控制、调度的“软处理”支持,展开层的功能强大且极灵活。
图2-1为DTSOC系统区的三层结构:顶层的SFU,第二层的若干个BPU,第三层的大量多类PPC。
2.1.2.4系统区分类分区结构
把一个复杂的应用系统在纵向、横向结构上进行分解是实现系统的通行方式。DTSOC系统区的三层结构是纵向的分解,在系统区第三层结构中有几类PPC则是横向分解,对第三层的各类PPC,可以配置它们分工执行应用功能程序的不同类型的区段,这就是横向分解的意义。至于有哪些类别的PPC,将在后面逐步论及。
2.2多处理单元协同的基础——数据软交换中心
数据软交换中心SDE(Soft Data Exchanger)是实现多口自动数据交换的部件,按本文预定的标准数据格式,所有交换的数据都是标准的16bit数据并粘附若干信息位。
2.2.1数据标识码的概念
2.2.1.1标识码对数据完整性的作用
数据标识码是DTSOC体系的最重要的概念,也是理解DTSOC体系原理的入口。在DTSOC体系中,数据在各执行主体之间传输时都是粘连着标识码的。标识码相当于数学中变量名,它标注了数据的属性。可以设想一个数据从源端功能单元经过不确定的路径、不确定的延迟传输到目的功能单元,更复杂的是目的功能单元会接受若干不同属性的数据,如何保证目的功能单元能正确识别数据的属性?问题的答案就是给数据粘连上标识码,目的功能单元是根据标识码来识别数据,而不依赖确定的路径以及预定的到达时点。抽象地说就是粘连标识码的数据的完整性不依赖于路径、时序。
图2-2为多个数据经不同路径、延迟传输到同一目的地示意图:短粗线指延迟环节。
2.2.1.2标识码的路径域、代号域
在DTSOC体系中,数据标识码一般由两段数值组成:一段是路径域数值,该数值按SDE的规则给出到达SDE的输出数据端口也就是目的功能单元入口的SDE路径。另一段是代号域数值,当一个目的功能单元的一个入口接收到多个不同属性的数据时,标识码的代号域数值就是目的功能单元识别这些数据的根据,更确切的说,标识码中代号部分相当于数学中的变量名。一旦数据在SDE中传输完成,路径域数值就失去了效用,目的功能单元将忽略路径域数值。
2.2.2SDE的结构基元——ADEC
自动数据交换基元ADEC(Auto Data Exchanging Cell)是SDE的标准结构基元。如果以分离的双向数据口为一个数据口单位,每个ADEC一般有固定的k个数据外挂口和(k/4或k/2)个数据中转口,其中k是4的倍数。ADEC又分两种基本类型:单区型和双区型。
2.2.2.1ADEC单区基本型
DTSOC体系可以根据实际需要灵活安排ADEC的接口,图2-3是单区类型ADEC的基本型。
图2-3为ADEC单区基本型的端口示意图。
图2-3中dchini、dchouti表示ADEC的数据外挂口,其中dchini是输入通道口,dchouti是输出通道口。dchup、dchdown表示ADEC的数据中转口,其中dchup是上传通道口,dchdown是下传通道口。每个通道口的位宽=标识码+标准数据位宽(16bit)。
图2-3是4-1配置的ADEC单区基本型,其特点是4个数据外挂口之间可在ADEC内并行完成任意两个外挂口之间数据交换,而一个数据中转口为若干ADEC之间交换数据提供了接口。水平排列的多个ADEC之间是不能直接进行数据交换的,但可以将这些ADEC的中转口都挂在更高层次的ADEC的外挂口上,通过此上层ADEC为媒介实现两个同层次但不同ADEC的外挂口之间的数据交换。
图2-4为通过上层ADEC实现不同ADEC的外挂口之间的数据交换。
图2-4是4-1配置单区基本型ADEC的最小扩展,实现图中所标的从i号口到j号口的数据传输需要ADEC00将数据上传到上层ADEC10,再由ADEC10下传到ADEC02,再从j号口输出。
2.2.2.2ADEC双区基本型
图2-5为4-1配置的ADEC双区基本型的端口示意图。
图2-5中dch0ini、dch0outi表示ADEC的1号区数据外挂口;dch1ini、dch1outi表示ADEC的2号区数据外挂口;dch0up、dch0down表示1号区的数据中转口,dch1up、dch1down表示2号区的数据中转口。在双区型ADEC内,同区的外挂口之间不能交换数据,只能在不同区的外挂口之间并行交换数据。当需要跨双区型ADEC传输数据时,两个区的外挂口分别通过同区的数据中转口与上层SDE交换数据,以上层ADEC为媒介实现两个不同ADEC的1、2区外挂口之间的数据交换。需注意双区型ADEC的数据中转口也是分区的,数据中转口只能被同区的外挂口利用来中转数据。
2.2.3SDE的结构
2.2.3.1SDE的层级
一个独立的SDE是由相同的1种(少数情况可以是2种)类型的ADEC在垂直(层级)、水平方向排列组合的来。按照外挂口的数量要求安排足够的底层ADEC来满足要求,同时要安排足够层级的ADEC来把底层ADEC连接起来。举例说,假如用图2-3的4-1配置的ADEC单区基本型来构造SDE,根据底层ADEC的数目SDE的层级会有所不同、每层级的数目也会有所不同:
①底层ADEC的数目≤4个时,只需增加一个层级ADEC(共2个层级)就能构成完整的SDE。
②底层ADEC的数目>4、≤16个时,需要3个层级ADEC才能构成完整的SDE。但第二层级的ADEC数目会随底层ADEC的数目改变,计算的公式是number(1)=number_mdf[0]/4。number_mdf[0]是底层ADEC实际数目的修正值,其意义是底层ADEC的实际数目如果等于4的倍数,就取原值;如果不等于4的倍数,则修正为大于实际数目的最小的4的倍数。
③更一般,有迭代公式计算各层级的ADEC数目:
修正值计算公式:
r=number[i]%4;//求取余数
if(r==0) number_mdf[i]=number[i];
else number_mdf[i]=number[i]+(4-r);
各层级的ADEC数目计算迭代公式:
if(number[i]!=1)number[i+1]=number_mdf[i]/4;
else number[i+1]=0;
number[0]是预定义的最底层ADEC数目,其他层级的ADEC的数目number[i]通过算式产生。
当number[i+1]=0后停止迭代,SDE的层级数最终确定为当前i值。
2.2.3.2SDE外挂口的分配规则
SDE要根据多口数据交换的需要用若干个ADEC组合而成,SDE的外挂口的分配和逻辑功能要求有关,应该把那些在DTSOC系统中会频密交换数据的外挂口尽量安排在一个底层ADEC上或者至少安排在临近的ADEC上。4-1单区型ADEC、4-1双区型ADEC的结构都是4个外挂口只安排了1个中转口用于跨ADEC的数据交换,是基于假定最频密的数据交换发生在同块ADEC内部,这就是DTSOC体系下数据交换的局部性特点,在编写应用程序时必须注意这一点。
2.2.3.3SDE结构中的拓扑因素
2.2.3.3.1SDE的外挂口配置的拓扑规则
SDE的外挂口的分配还和多个外挂口在版图上的位置有关,一般来说在版图上相邻的外挂口尽量放在同一个ADEC上,距离稍远的可以分别放在邻接的两个ADEC上,距离最远的应分别放在需要经过最多层次ADEC才能完成数据传输的两个ADEC上。这种拓扑意义分配的原因是:在两个ADEC之间传输数据会有1~2级的缓冲寄存,会有1~2个时钟的延迟,这对任意SDE传输数据口对之间的距离不等是一种补偿。通过上层ADEC转送数据会增加延迟的时钟数,经过的层级越多,中间的缓冲寄存的级数越多,延迟的时钟越多。
图2-6为通过插入延迟环节补偿传输数据口之间的距离不等造成的延迟不均衡。
图2-6假定每经过一个ADEC会造成一级延迟。
2.2.3.3.2SDE在DTSOC体系中的拓扑意义
SDE是DTSOC柔软灵活的部分,对DTSOC体系的版图设计具有关键意义。DTSOC体系不是一个具体的ASIC产品,也不能像ASIC那样一次性的版图设计,而是像FPGA那样着眼于多代系列化的产品开发。因此DTSOC体系的版图设计首先不是针对具体的产品,而是那些在DTSOC体系中通用、稳定的单元,如BPU、各类PPC等,会产生一些版图意义的DTSOC标准单元。具体到1个DTSOC产品版图设计,主要任务是要把这些“坚硬”的DTSOC标准单元组成一个图形系统,在逻辑上需要SDE,在图形上也需要“柔软”的SDE。SDE的“柔软”的含义有两点:一是它是一个单一时钟同步逻辑,可以用自动布局布图工具产生任何形状的版图,二是版图形成后,SDE的布线延迟使得SDE时钟频率不能符合要求时,可以通过调整SDE结构或者插入延迟级来解决。对SDE结构的修改不会改变系统的功能正确,因为DTSOC体系的一个基本原理:基于标识码的数据传输不会因传输路径改变或延迟变化而影响两个外挂口间数据传送的正确性。
图2-7为DTSOC版图中“坚硬”的SC(标准单元)和“柔软”的SDE。
图2-7中SC是standard cell的缩写,表示DTSOC专有的标准单元,一般都是矩形形状,因此是“坚硬”的。SDE则可以是任何不规则形状,因此是“柔软”的。
2.2.3.3.3自动生成SDE的HDL代码的意义
SDE结构的修改是通过其HDL代码的改变来实现,由于修改是在集成电路设计流程后端进行的,手工修改代码难保正确,需要在原经过验证的SDE代码的基础上通过修改参数来由机器自动生成修改后的SDE代码。机器要检查修改后的SDE代码与已验证过的原代码功能上等价性,所有原来的外挂口当然不会做任何改变。
2.2.3.4数据标识码路径域的编制
如果SDE由单一类型ADEC组成,在SDE内传输中依据的标识码路径域数值并不标注上传通道的路径,因为从一个外挂口输入的数据上传不同层级的ADEC的路径是唯一的。以图2-7的4-1单区基本型ADEC组成的3层级SDE为例,分项列出分段路径域数据的意义。
表2-1在3层级单区基本型SDE上交换的数据标识码路径域分段定义
在标识码路径域编码中,2bit路径层级值path起主控作用,它指出了数据在SDE传输的层级路径,而{num_3lvl,num_2lvl,num_1lvl}则依次表示3层、2层、底层的下传外挂口编号,其中num_3lvl、num_2lvl根据path值确定是否有意义。实际上{num_3lvl,num_2lvl,num_1lvl}可以定义为输出数据的外挂口的SDE全层级编号。
图2-8为基于4-1单区基本型ADEC组成的三层单区型SDE。
2.2.4SDE在DTSOC架构中的交联作用
在DTSOC体系内并不存在一个或数个总线将多个模块连接起来的结构,简言之DTSOC体系属无系统总线结构。在DTSOC体系下不同层级、相同层级的处理单元之间建立联系的渠道就是不同形态的SDE。SDE作为DTSOC的交联器,其意义是多层次、全方位的。在DTSOC体系中分布的多个存储器之间的数据交换、不同层级处理单元之间的消息交互以及随后会论述的展开层内子域之间、子域内的数据交换都是通过不同类型SDE进行的。
DTSOC体系用SDE而不是总线来作为模块间交联器,对简化集成电路后端流程的好处是明显的。因为总线data path的时序收敛是否达到要求只有在全局布局出来后才能估算,DTSOC体系没有总线,其时序收敛问题基本上变成了各DTSOC标准单元和各个SDE的内部问题,从而达到时序收敛问题局部化的效果。
2.2.5SDE在DTSOC架构中的时序意义
在DTSOC体系中系统时钟是全局时钟,但系统时钟并不是时序意义上的全局同步时钟,也就是说在各DTSOC标准单元和各类型SDE中都有一个同频率的系统时钟,但这些系统时钟都只在各DTSOC标准单元和各类型SDE内是严格同步的。在DTSOC体系中所有标准单元(各种可编程处理单元)都是相互隔离的,它们是通过SDE交换带标识码的数据,因此DTSOC标准单元与SDE的数据交换是DTSOC体系内模块间一切数据交换的基础,而DTSOC标准单元与SDE的数据交换是跨同源异步时钟的数据交换。
同源异步时钟是指两个时钟来源一个时钟源,其频率完全相同、但两者之间有一个固定相位差。为了高效交换数据,需要在一个系统时钟内实现SDE与DTSOC标准单元之间的数据传输。为此解决的方案是在交换数据的输出单元中用两个寄存器轮流缓冲数据以降低一倍数据率,再在输入模块恢复为原数据率。
图2-9为通过降低输出数据率来实现同源异步时钟之间的数据交换。
图2-10为当输入模块的同源异步时钟滞后输出模块时钟时的数据传输波形。
图2-11为当输入模块的同源异步时钟超前输出模块时钟时的数据传输波形。
图2-10、2-11的波形均假定在输入侧模块中没有阻塞数据接受的因素,因此可按每个时钟接受一个输入数据进行处理。
图2-10、2-11的波形证明,采用两个输出寄存器缓冲的方法使得不论接受数据的输入模块的同源异步时钟是滞后还是超前输出模块的时钟,均可以保证跨同源异步时钟的数据传输的建立时钟不小于一个系统时钟宽度。
在集成电路后端流程中,系统级集成电路的全局同步时钟是需要在布局布图之后通过插入clocktree来保证时钟偏斜(clock skew)小于设定值。在DTSOC体系中,为了简化集成电路后端流程,没有设置大范围的总线,也没有任何全局同步时钟。在DTSOC体系中,插入clock tree是在各DTSOC标准单元和各类型SDE的内部独立进行的。当最后将各种类型的DTSOC标准单元和各种类型的SDE组合成整体的DTSOC产品版图时并不需要插入任何clock tree,这样十分有利于“组装”任意规格的DTSOC产品。
需要特别指出的是,所有SDE与外挂单元交换数据都是基于握手协议,每个分离的单向数据口都有1对握手信号。
2.3BPU的结构及指令系统
虽然在DTSOC体系中,SFU、BPU处在不同层级,但它们的处理器内核都采用相同的架构和指令集,只是SFU有一段内嵌固化boot程序,在外围还有专属的特殊功能模块用于处理与CPU、flash的接口控制。可以说SFU只是若干个BPU中被安排做系统配置工作的那一个。因此除非特别说明,当提到BPU处理器内核时,是涵括SFU的。BPU内核依然采用通用处理器的架构,且更简单、要求不高。因此对其内核结构的描述较为简单。
2.3.1BPU的结构
在DTSOC体系中,SFU、BPU局限在配置、控制、调度和一些速度要求不高的数值处理,而复杂的大量的数据处理(DSP处理)被分离出去交给了展开层子系统。因此对BPU(含SFU)的处理器内核要求不高,指令数目很精简、寻址模式简单。依然按16bit基准数据格式来说明BPU的结构。
2.3.1.1BPU的顶层框图
图2-12为BPU简略结构图。
从图2-12可见,BPU是一个简单且封闭的可编程处理单元,并无总线与外部多个模块相连。BPU与外部联系是通过SDE输入、输出的消息以及DMA通道的数据搬移来实现。输入消息处理模块是BPU的特殊功能部件,其功能是将接受到的消息以循环队列结构存入在SRAM中设置的消息缓冲区内,该模块应为BPU内核提供消息存放的头尾指针。DMA控制模块为BPU内部SRAM的DMA操作提供寻址和数据输入输出控制。
2.3.1.2BPU处理器内核的寻址范围
由于DTSOC体系是无总线结构,BPU的寻址访问的范围局限在BPU内部存储器、内核寄存器组及输入消息处理模块、DMA控制模块的编址参数、缓冲寄存器。虽然在DTSOC应用系统中,BPU可构成展开层子系统某一区域的上位机,但在结构上并不反映这一点。BPU与展开层子系统的PPC之间也是用形式上平等的消息交互通讯方式来建立联系的。BPU与SFU的关系也是如此。
看起来BPU是一个封闭的处理单元,可以利用DTSOC体系DMA机制来间接扩大它的作用范围:可通过DMA将外部数据写入在BPU内部存储器上的动态缓冲空间,处理好的数据可以通过DMA转移到外部。
DTSOC体系规定BPU的程序、数据统一地址空间最大为4k×16bit,地址为12位数据。具体到一个DTSOC产品,BPU可访问的存储空间由其内部SRAM的大小而定,可能达不到4k空间范围。
2.3.1.3BPU寄存器定义
2-2BPU内核编址寄存器说明
2.3.1.4BPU内核的中断处理
BPU内核的外部中断有其特殊的模式:即不管来自何处的中断请求,都是以向BPU发送消息的形式,消息也是一种带标识码的数据,标识码代表其中断的来源,数据就是消息内容、可以包含数据还有来自SFU的指令。消息大多是单个数据,也可以是帧格式的数据包。
在BPU中的消息记录处理模块的辅助下,BPU对输入消息有两种处理模式:即时响应模式、延迟处理模式。即时响应模式就是直接将输入消息作为中断源,当有新的消息出现在消息输入缓冲器上时会引发BPU进入中断响应程序。而延迟处理模式不采用中断响应方式,进入消息输入缓冲器上的新消息将被消息记录处理模块自动写入存储器中的消息缓冲区,并修改消息队列的头指针。当BPU内核完成一项处理或闲置下来时,会查询其程序设置的消息队列尾指针,并处理积累下来的消息,每读取一个消息数据,BPU内核会将消息队列的尾指针变动一次,当头、尾指针相等时表示消息已处理完毕。是选择即时响应模式还是延迟处理模式,由BPU内核配置消息记录处理模块的状态位决定。
在延迟处理模式下,BPU内核有两种处理模式,一是依序逐个处理;二是将消息队列快速依序读出仅进行简单的分类识别后转存到程序定义的若干个消息数据结构中,BPU内核根据优先顺序再处理这些不在消息缓冲区、已分类的消息。
2.3.2BPU指令系统
2.3.2.1BPU指令系统设计原则
BPU承担执行数字组件的处理效率要求不高的部分,专一于某个底层功能的数字组件的程序都是较短的,而BPU内部有一个较大的SRAM,因此在定义BPU的指令时主要着眼于节省逻辑资源,并不特别考虑执行效率和代码的长短。基于这个原则,BPU的指令所含的操作较为简单、且指令种类很少。
BPU指令系统是依照RISC原理设计的,而且BPU的指令更精简:寻址模式很少、数据处理更简单。
2.3.2.2BPU指令特点分析
2.3.2.2.1指令寻址模式
DTSOC体系根据BPU限定功能,BPU指令只能选择3种指令寻址方式。
①寄存器寻址,只是在内核寄存器中操作,所有数据处理指令只能是寄存器寻址。
②立即寻址,即在指令中包含立即数。
③寄存器间接寻址,只能以某个通用寄存器的数值为地址来操作数据的存储器存取。
2.3.2.2.2BPU的指令格式
<opcode><Rd><operand>
·opcode是指令的操作码
·Rd是目标寄存器,也可能是第一个操作数
·operand是格式灵活的第二操作数
--Rs表示寄存器的内容为第二个操作数
--[Rs]表示寄存器的内容为存储器地址,用于存储器访问指令。
--#immed表示立即数据,仅支持8bit立即数。
2.3.2.3BPU指令集说明
BPU指令可以分为3类:
·存储器访问指令
·通用数据处理指令
·跳转(分支)指令
BPU指令集共有27种指令,且包括所有寻址模式,显然是一个很小指令集,而且没有复杂的指令操作。
2.3.2.3.1存储器访问指令类
从略
2.3.2.3.2通用数据处理指令类
从略
2.3.2.3.3跳转指令类
从略
2.4SFU的特殊功能模块
虽然在DTSOC体系中,SFU、BPU处在不同层级,但SFU与BPU有相同的处理器内核和指令集。如果说有什么区别,就是SFU有两个个外围功能模块,且SFU比BPU多了一个较短的总线将这些特殊功能模块置于SFU内核的控制下。
2.4.1SFU顶层结构
图2-13为SFU的顶层简略图。
图2-13并没有显示SFU的内核结构,这是因为SFU的内核与BPU基本相同,只是增加了一个可访问外围两个模块的小总线。
2.4.2SFU的上电初始化处理
DTSOC体系在上电后,首先由SFU进行最初的初始化配置。在SFU必须有固化的引导(boot)程序,以建立从外部非易失存储器加载初始化配置代码的环境。
2.4.3flash存储器接口及控制器
DTSOC体系需从大容量flash(不论是外置还是芯片内置的flash)读入各个层级的配置代码才能在DTSOC的通用架构上形成一个应用系统,由于DTSOC的实时重构的特点,DTSOC体系可能在实时运行时仍需不断从flash中读入配置代码。DTSOC与flash的交互是由SFU负责,在SFU外围有一个flash存储器接口控制器。由于flash是一个慢速器件,除了一些简单的接口控制逻辑外,SFU也是由执行程序的方式来读写flash。在flash外置的情况下,与flash的专用接口是DTSOC体系的一个嵌入式安排。
2.4.4主机口控制器
DTOSC体系往往被纳入到一个CPU的扩展体系中,能与CPU交互是必不可少的功能,SFU的主机口控制器被置于DTSOC体系外的上位CPU的控制下,负责识别、响应外部上位机的控制信号,记录上位机的指令,并向SFU内核发出中断。
2.5DTSOC系统区展开层结构
DTSOC系统区展开层是DTSOC体系真正核心的部分,也是DTSOC独特原理的集中体现处。在系统区展开层,多个独立应用处理功能将各自展开在不同的区域,各自框定若干个各种类型的PPC来协同执行,如此实现了多个应用功能的独立并行工作。在系统区展开层,可以框定更多的各类PPC构成一个协同子系统以获得更高带宽的实时数字信号处理。系统区展开层中依然要围绕DTSOC体系面向软件程序这条主线来构造。如果说在第一、二层的SFU、BPU基本上还是通用的处理器架构,那么到了展开层就有明显的不同,几乎所有被分配到展开层的程序体(函数)都需要在多个PPC中展开分布以获得高效率,并且是在不同类型或者不同模式的PPC中展开以适应各种复杂的程序体(函数)。
2.5.1展开层子系统的基本分区:数据管理域和数据处理域
DTSOC系统区展开层分布了大量的可编程处理元PPC,为将它们组合起来工作,需要规范、对称的协同结构,清晰、统一的协同规则。面对一个复杂问题通行的方法是将它分解为几个较简单的分类问题,再分别解决这些类问题就容易了。在DTSOC体系中引用这样的思路,称为结构性分解。展开层子系统有大量的DTSOC体系的“标准”单元,在展开层子系统进行结构性分解更有必要且顺理成章了。
结构性分解DTSOC系统区展开层,首先要考虑有利于软件程序的展开。程序体的展开不是将程序分成若干段然后逐一分配到若干个PPC中这样简单,这样的PPC是不存在的。通过对各种程序的分析,一般可以认为任何程序都是由数据管理和数据处理两种类型的操作相互嵌套而成。这种分类是架构性的,独立于具体的应用。这两种类型的操作交融在一起是程序展开的主要障碍,如果将待展开的程序体转换为两个以规范的方式通讯的数据管理线程、数据处理线程后,程序再在多PPCs中展开就容易了。数据管理线程仅涉数据的存取以及存储器中数据结构的维护等,不能改变数据的形态;数据处理线程仅涉数据的处理,不用考虑数据的存取以及数据结构的细节。实际上,拿通用处理器的精简指令架构(RISC)与复杂指令架构(CISC)相对照,一个明显不同就是在RISC指令中分离了存储器访问与基于寄存器组的数据处理。因此,DTSOC体系规定,展开层子系统首先被结构性分解为两个基本分区:数据处理分区和数据管理分区。在实际应用中,即使是一个小的应用也会横跨两个分区。为了强调两个分区结构意义的不同,通常表述为数据管理域、数据处理域。展开层子系统的这两个功能类型区域是通过前述双区型SDE来交换数据和消息。
图2-14为DTSOC系统区展开层顶层结构框图。
2.5.1.1数据管理域的前后台结构
DTSOC体系安排在系统区/展开层/数据管理域内均衡分布着若干大小一样的公共SRAM,为了充分高效地利用SRAM,DTSOC体系规定为每个SRAM都配置一个负责数据存取和维护工作的管理PPC。但可能由于数据空间的要求或数据带宽的要求,一项具体的应用任务会涉及多个SRAM,而一个SRAM反过来又可能和若干个简单任务有关。显然用与SRAM一一对应的管理PPC来兼顾处理应用任务的统一数据管理就不适当了。因此DTSOC体系在数据管理域设定了两种类型的PPC:任务数据管理PPC和后台数据管理PPC。
进一步分析发现数据管理程序可转换为由任务类型的前台数据管理和存储器存取类型的后台数据管理组成,这种分类同样是架构性的,独立于具体的应用。DTSOC体系进一步确定展开层数据管理域被结构性分解为任务数据管理子域和后台数据管理子域。如果将程序体数据管理线程分解为以规范方式通讯的任务数据管理子线程、后台数据管理子线程后,再在DTSOC系统区/展开层/数据管理域展开就更容易且规范。数据管理域的两个子域同样是通过前述双区型SDE来交换数据和消息。
2.5.1.2数据处理域的两个子域结构
实际上,在数据处理域内没有像数据管理域那样有严格意义的结构性分区。严格说,DTSOC体系在数据处理域内本可以只设置了一种可工作在多种模式下的数据处理PPC。但由于硬件乘法需要占用很大的逻辑资源,为每个数据处理PPC嵌入一个硬件乘法是不可想象的。为少量数据处理PPC配置硬件乘法也是不可取的,这样会破坏DTSOC的对称、规范的通用架构要求,在布图上更不可取。可选的方案是单独设置乘法计算PPC,为了让乘法资源得到最大程度的利用,DTSOC体系把展开层之数据处理域分解为两个区域:非乘法数据处理子域、乘法核心子域,并把所有的乘法器都集中在乘法核心子域。数据处理域的两个子域同样是通过双区型SDE来交换数据和消息。
图2-15为数据处理域的两个子域结构示意图。
图2-15显示乘法核心子域的“核心”意义就是它被大片的非乘法数据处理子域包围在正中,这样有利于非乘法数据处理子域的各个部分都能利用到乘法核心子域的公共乘法资源。
2.5.2展开层子系统的主类别PPC的结构意义概述
2.5.2.1TDM-PPC
任务数据管理可编程处理元TDM-PPC(Task Data Managing PPC)是数据管理域之任务管理子域的专属PPC。TDM-PPC与数据处理域交界,为其直接提供缓冲数据的输入输出服务,所有TDM-PPC也可称为前台数据管理PPC;TDM-PPC还与后台管理子域交界,与后台管理PPC形成数据管理的结构性分工;TDM-PPC还与上位机BPU有双向消息互通管道,上位机BPU对展开层的各种控制、调度都是通过TDM-PPC来实施,而BPU接收的展开层消息也是由TDM-PPC发出或转送的。
2.5.2.2BDM-PPC
后台数据管理可编程处理元BDM-PPC(Background Data Managing PPC)是数据管理域之后台管理子域的专属PPC。每个BDM-PPC都有一个公共SRAM,对内BDM-PPC起到SRAM可编程管理器的作用,负责数据的存取、维护等。BDM-PPC并不直接服务于数据处理,服务的对象是任务性数据管理,为其提供一定程度数据抽象:任务数据管理不用关心数据在某个SRAM中的存储细节。BDM-PPC还可以接受通过BPU/TDM-PPC转送的SFU指令,与另一个BDM-PPC协同管理公共SRAM之间的数据“DMA”操作。
2.5.2.3DP-PPC
数据处理可编程处理元DP-PPC(Data Processing PPC)是非乘法数据处理子域的专属PPC。在DP-PPC可存放小段数据处理程序,能在极高的时钟频率下反复执行之。在展开层子系统之非乘法数据处理子域内大量DP-PPC通过单区型SDE连接起来,可以将数据处理程序展开分散到多个DP-PPC中以获得极高的DSP处理带宽。
事实上,在嵌入式系统的底层应用中,与数据管理相比数据处理呈现更复杂的形态。那么为什么在非乘法数据处理子域只有一种PPC呢?因为数据处理呈现的多种多样的复杂形态是和各种应用相联系的,很难有独立于具体应用的、架构性的分类。DTSOC体系应对这种数据处理复杂性的方式是精细构造DP-PPC,让DP-PPC可工作在多种模式下而呈现多种形态。当然在模式配置后,在连续的运行过程中,DP-PPC只能工作在一个模式下,呈现一种形态。下面列举DP-PPC的几种工作子模式:
①一般工作模式,这是片面的、微型的处理器的工作模式,是DP-PPC的基本工作模式,大多数DP-PPC的结构是优先按基本模式设计的。其操作有寄存器之间传输、布尔逻辑处理、部分和处理、部分桶式移位及冗余位消减处理等。
②延迟线模式。
③数据组合模式。
④单精度浮点计算模式。
⑤FIR(Finite Impulse Response,有限冲激响应)数据准备模式。
⑥循环冗余码处理模式
当然,在实际的DTSOC产品中,处在不同区域的DP-PPC也会有一定的专用性:如在靠近系统区外围的DP-PPC,更倾向于用来处理接口交互控制和复杂通讯协议的构造或解析;而靠近乘法核心子域的DP-PPC,更倾向于用来为乘法核心子域的乘法器提供待乘数据对和回收、累加乘法结果的功用。因此每个DP-PPC并不是都应能涵盖上述所有列举(和未列举)的子模式,可能会安排特定区域DP-PPC功能涵盖部分的子模式,前提是不应过分影响其局部区域的大致对称、通用的结构,也就是不影响非乘法数据处理子域内SDE的数据软交换的通畅。当然对不同区域的DP-PPC,如何安排它们的功能组合,是进入到芯片设计时具体考虑的事,这里不做展开。
2.5.2.4MP-PPC
乘法计算可编程处理元MP-PPC(MultiPly PPC),是乘法核心子域的专属PPC。为了体现MP-PPC的公用性,MP-PPC在固定提供1个8bit×8bit无符号乘法计算外,还能识别不同标识码的输入数据对,并对应产生若干个返回数据的标识码。
2.5.3系统区展开层子系统的架构
2.5.2.1系统区展开层子系统的架构剖面
系统区展开层子系统是由大量的PPCs组成的,展开层子系统是高度结构化的:子系统被分解为两个功能类域,并进一步分为4个功能类子域,域与域之间、子域与子域之间都是通过双区型SDE来交换数据和消息。系统区展开层子系统的4种PPC:BDM-PPC、TDM-PPC、DP-PPC、MP-PPC分别集中于展开层子系统4个子域,并为4个子域的唯一专属PPC。
图2-16为DTOSC系统区展开层子系统的架构剖面:2域4子域,域与域、子域与子域通过双区型SDE交联。
2.5.2.2展开层子系统内各双区型SDE交换数据定义
从展开层子系统的架构剖面中可以看到有三个双区型SDE承担域与域之间、子域与子域的数据交换,这些数据交换在DTSOC体系的应用开发中有着重要意义,现在分别定义之,方便以后引用。
①DTSOC体系把位于数据管理域与数据处理域之间双区型SDE上交换的数据称为缓冲数据。
②DTSOC体系把位于任务数据管理子域与后台数据管理子域之间双区型SDE上交换的数据称为管理级间数据。
③DTSOC体系把位于非乘法数据处理子域与乘法核心子域之间双区型SDE上交换的数据称为处理级间数据。
2.5.2.3非乘法数据处理子域的内部交联
在系统区展开层子系统的后台数据管理子域、任务数据管理子域和乘法核心子域内的同类型PPC之间都没有交联通道。但在非乘法数据处理子域内,大量的DP-PPC被单区型SDE交联在一起,可以灵活形成各种结构的多操作长流水线以获得惊异的DSP计算效率。
图2-17为非乘法数据处理子域内二维布局的DP-PPC由单区型SDE交联在一起。
图2-17展示了每个DP-PPC外挂在两个单区型SDE上,而相邻的两个单区型SDE通过桥接器贯通。图中垂直方向相距较远的两个DP-PPC可以通过SDE-桥接器-SDE的多级传输来实现数据交换。DP-PPC的双外挂接口、桥接器的中转作用以及DP-PPC内部的多模式配置,十分有利于构造很复杂的多操作长流水线。
2.5.2.4非乘法数据处理子域的核心位置
在DTSOC体系中,非乘法数据处理子域在展开层子系统中处于核心位置。独立组成一个子域的MP-PPC只是被插入到由DP-PPC构造的复杂长流水线一个“加长”的环节(加长的意义是指数据通过SDE来回传输产生的延迟),如果一个长流水线中有多个乘法处理,MP-PPC也是被构造长流水线的DP-PPC分别调用。
数据管理域的两级结构的主要目标是为专注于构造复杂长流水线的非乘法数据处理子域提供完全的数据抽象。纯粹从处理角度考虑,是希望把接受相同处理的所有数据都聚集在一个变量名下。但有这样的情况:在数据处理域接受相同处理或相同处理产生的缓冲数据需要在多个独立SRAM的存取,假设数据管理域只有后台数据管理一级结构,数据处理域就无法实现将这些需在多个独立SRAM上存取的缓冲数据归集在一个变量名下,因为每个BDM-PPC都被局限在一个SRAM上,数据处理域不能用一个标识码(变量名)来和多个BDM-PPC交换数据。在一级的数据管理结构下数据处理域在归集同变量名的缓冲数据时,必须保证所有数据只能在一块SRAM上存取,非乘法数据处理子域并未获得完全的数据抽象。两级结构的数据管理域就不会出现这样的问题:数据处理域只与任务数据管理子域交换数据而与后台数据管理子域相隔离。当出现一个同名缓冲数据需要在多个独立SRAM的存取时,TDM-PPC会负责把来自多个BDM-PPC的数据归并到一个标识码下输送给非乘法数据处理子域、或者将来自非乘法数据处理子域的同名缓冲数据转换并分送给多个BDM-PPC存储。因此采用两级结构数据管理域为非乘法数据处理子域提供完全的数据抽象:能够自由地把接受相同处理的所有数据都聚集在一个变量名,而完全不用考虑它们的存储细节。
图2-18为TDM-PPC对同名多存储源数据抽象的关键作用:图(1)显示这样的需要:数据处理域的同一变量名下的缓冲数据需在多个SRAM中存取。图(2)显示数据管理域两级结构实现图(1)数据交换要求:将对同一变量名下的缓冲数据在多个SRAM中存取的管理移植到前台数据管理子域。
2.5.4系统区展开层子系统向通讯区的扩展
DTSOC体系通讯区是通过系统区外围SDE融入到系统区的展开层子系统上的,在实时运行时是由展开层子系统控制通讯区的运行:接受来自通讯区转送的输入数据(含控制信号)、通过通讯区向端口发出输出数据、控制信号(含对通讯区的附加控制信号)。BPU或者SFU可以对通讯区进行状态、参数配置,但并不能实时控制通讯区的运行。因此可以说整个通讯区与系统区展开层子系统同处在一个层次,从以系统区为核心的角度看可以说通讯区是系统区展开层子系统的扩展。系统区的展开层子系统的MP-PPC/DP-PPC/TDM-PPC/BDM-PPC加上通讯区的接口缓冲及控制器/选通对接器/数据对齐处理单元以及端口单元的接口电路构成了DTSOC体系广义展开层子系统的全类别剖面,DTSOC面向实时应用的超长、灵活、柔软的流水处理正是建立在多类型PPC与通讯区三组件排列而成的架构上。
图2-19为DTSOC体系扩展展开层子系统的架构剖面(未显示各独立区域之间的SDE)。
2.6串行接口总成概述
从略
三、各种类型PPC的结构和指令系统
DTSOC体系中有大量的各种类型的可编程处理元(PPC),它们是实现各种高带宽实时数字信号处理、多个独立并行工作的系统数字组件功能及IO交互控制的载体。这些PPC的编程处理都各自局限在一个狭窄的类型范围内,因此不同类型PPC的结构、工作模式及指令会有很大不同。但所有类型的PPC仍然有一些共同的因素,主要是与双时钟域有关的硬件结构,以及DTSOC体系特有的指令定义。
3.1PPC的通用结构
从PPC的一般属性分析开始,通过在结构、概念上建立PPC的一般分析框架,按照这个一般框架再展开论述各种类型的PPC较为规范,同时避免了在不同类型PPC的分析论述中重复通用的部分。
3.1.1PPC的基本属性
3.1.1.1PPC的三个特性
可编程处理元(Programmable Processing Cell)是DTSOC体系的各种类型基本编程基元的统称。DTSOC体系规定PPC有三个基本特征:处理功能被局限在一个明确的类型范围内、缩小的或片面的处理器架构、内置大小不一的程序存储器或锁存器阵列。
3.1.1.1.1明确的限定类型功能
PPC是DTSOC体系的基本配置基元,如果强调它的单一通用性就不适合了,实质上可能并不存在这样的全域通用的PPC,而且构造过于通用的PPC会使得PPC的版图面积过大,而配置使用时并不能充分利用。总之,不论是由于DTSOC的结构因素还是出于节省面积、充分利用PPC的角度出发,每个PPC处理功能都被局限在一个明确的类型范围内,一般就是它所属的DTSOC分区(子域)的处理功能类型规定。
表3-1-1PPC分类型功能限定说明
表3-1-1详细说明了DTSOC体系中2大类4个类型PPC的限定类型功能。由于数据处理形式类型很多,DP-PPC还有几个互质的子工作模式。等于有几个亚类型DP-PPC,当DP-PPC被具体配置在某个工作模式下时,其限定类型功能范围就更小了。
3.1.1.1.2片面的、微型的处理器架构
处理器架构的基本特点就是有自己的操作指令集,并可执行由其指令集的指令构成的程序,能面向软件程序的硬件结构必然是处理器架构。作为面向软件程序的体系,DTSOC体系的基本配置基元PPC也必然属于处理器架构,只不过局限于明确的类型范围内、主要靠多个执行主体协同实现功能的PPC是一个片面的、微型的处理器架构。各种类型的PPC根据其限定类型功能的需要,都有一个很小的操作指令集。
3.1.1.1.3内置程序的存储体
在DTSOC体系下,每个PPC都是一个独立可配置基元。因而每个PPC都必须有内置的程序存储体,存储体可能是锁存器阵列或块存储器。为了保证每个PPC的独立性,DTSOC体系规定所有PPC只能执行其内部程序存储体的程序。
3.1.1.2PPC在DTSOC架构下的一般结构属性
DTSOC体系的展开层子系统中排列了大量各种类型的PPC,这些PPC被数据软交换中心SDE连接在一起进而构成了一个可灵活配置的系统。3.1.1.1节阐述的PPC的三个特征,这是从PPC的内部结构来看的。当从PPC作为DTSOC体系的基本单元的角度来看时,PPC又具有独立性、自主性及封装性。这些属性称之为PPC在DTSOC架构下的结构属性。
PPC在DTSOC架构下的独立性是指PPC是一个独立的编程单元。除了SFU和几个BPU这些更高层级的处理器外,在DTSOC体系下所有的独立编程单元都是各种类型的PPC,而且DTSOC的展开程序的配置都是落实到一个个PPC的内部,并没有任何控制多个PPC联动的程序和独立配置载体。多个PPC构成的协同子系统并不是由于更高层次的配置而形成的,是多个已配置的PPC在DTSOC结构中自然形成的,起主要协同作用的结构因素是基于标识码的数据软交换和数据驱动机制。
PPC在DTSOC架构下的自主性是指处在已配置状态(或称已“激活”)的PPC之间、处在已配置状态的PPC与上位机BPU之间的平等关系(但当BPU通过特殊的配置方式进入待机状态的PPC,并为其配置代码时,两者是主从关系。在待机状态下PPC并没有建立自主性)。在DTSOC架构下,PPC之间、PPC与BPU之间是通过相互传递消息来建立联系,BPU、其他PPC不能直接进入PPC并控制其内部操作,PPC在接收到BPU、其他PPC的数据、消息后按其预定的程序自主执行内部操作。
PPC的封装性是在DTSOC架构下运行时呈现的动态属性。在自然形成的协同子系统内,PPC之间、PPC与BPU之间只有数据(或消息)的交换,相互间互不干涉内部处理过程。因此可以把已配置状态的PPC看作一个黑匣子,其可见的部分是输入数据接口和输出数据接口,不可见的部分是PPC内部对输入数据的处理和产生输出数据的细节。PPC的独立性、自主性属于构造DTSOC体系的约束性规则范畴,而PPC的封装性是PPC的独立性、自主性在DTSOC运行状态下的派生属性,或可称为设定PPC的独立性、自主性的一个目标属性。
3.1.2双时钟域的通用结构
所有类型的PPC都是双时钟域结构,其意义是PPC内核可以在比系统时钟高几倍、十几倍的时钟下执行内部程序,从而使PPC有很高的处理效率。之所以PPC内核能在更高的时钟频率上工作,是因为在DTSOC架构下PPC的封装性,具体说处在已配置状态或称激活状态的PPC内部的处理细节不为外部所见、不为外部能干预、也不需外部资源。
3.1.2.1沿触发高倍率时钟发生器
3.1.2.1.1时钟发生器的逻辑原理
图3-1-1为沿触发高倍率时钟发生器的逻辑原理简图。
图3-1-1中,(1)图为时钟沿触发高倍率时钟逻辑原理图。其中clksys指系统时钟,clkprs指PPC高倍率处理时钟,符号D、2D表示延迟可调的延迟级,1、2、k为1级、2级及最后级延迟级的输出节点。(2)图为延迟可调的延迟门逻辑结构。通过选择一串延迟的抽头达到延迟调节的作用,所有的抽头必须进行延迟联调,即需要保持所有2D延迟器的延迟相同,且必须保证2D延迟器的延迟是D延迟器的延迟的两倍。(3)图为时钟沿触发高倍率非独立时钟的波形图。图中标注了被配置屏蔽的脉冲。
沿触发高倍率时钟发生器有几个特点:①非独立,高倍率时钟依赖源时钟的上升沿触发,一旦源时钟停止,高倍率时钟不再产生脉冲串,脉冲串的脉宽在配置后不应随温度变化发生超过额定值的改变。②与源时钟沿相比有延迟、无抖动。PPC需要在两个时钟之间频繁交换数据,两个时钟之间无抖动很重要。③脉冲宽度可调节。④脉冲可屏蔽。
3.1.2.1.2时钟发生器的一般性能指标
在不同类型的PPC中,根据需要设置的沿触发高倍率时钟发生器会有所不同。沿触发非独立高倍率时钟发生器可用3个项目来表示其一般性能指标:①延迟级额定数目,代表非独立时钟发生器一次触发可产生的额定(最大)脉冲数;②基本标准延迟门(单门)的延迟时间;③每个延迟级的额定延迟门数目(2D延迟器中此数目必须是2的倍数)。
3.1.2.1.3时钟发生器的可配置参数定义
在沿触发非独立高倍率时钟发生器中一般需要设置2个可配置参数寄存器:一个是脉冲宽度选择参数,该参数选择每个延迟级的延迟门数目,不能大于延迟级的额定延迟门数目。二是脉冲屏蔽参数,只在可屏蔽脉冲的沿触发非独立高倍率时钟发生器内才有此参数寄存器,脉冲屏蔽参数规定从最后一个脉冲开始倒数的被屏蔽脉冲数目。在沿触发非独立高倍率时钟发生器中设置脉冲屏蔽处理的作用是控制每次系统时钟沿触发产生的脉冲个数,并保证脉冲串不会越过以系统时钟为单位(可以是1个、2个或3个时钟)的一次连续系列处理的设定间隔。
3.1.2.2PPC的通用双时钟域结构
图3-1-2为PPC的双时钟域通用结构。
3.1.2.2.1系统时钟选通的配置
在应用时,并不是每个系统时钟都需要触发一串脉冲。PPC内核将根据需要配置系统时钟选通模块的参数来控制输入到沿触发非独立高倍率时钟发生器(图3-1-2中简称沿触发时钟发生器)的系统时钟。PPC内核有3种控制系统时钟的模式:①在闲置状态下禁止触发处理时钟串(关闭系统时钟选通),当要解除禁止时需要上位机来复位禁止位,PPC内核不能自行解除禁止;②周期性在几个系统时钟中选通一个系统时钟来触发处理时钟串;③由PPC内核实时输出一个标志,指示下一个系统时钟是否选通(图3-1-2顶上的单箭头线即是此标志)。
3.1.2.2.2PPC外围的总线
在PPC外围系统时钟域有一个工作在系统时钟域的较短的总线,用于PPC内核访问外围各特殊功能模块的可寻址寄存器用。注意此总线不能伸到PPC独立单元外,也对PPC内核没有作用。PPC内核寄存器与外围寄存器是分开独立编址的。
3.1.2.2.3PPC的跨时钟域处理
为了保证PPC内核能够工作在高倍率时钟下,PPC内核是不能直接访问外围编址寄存器,PPC内核只能通过读写界面寄存器来间接访问外围寄存器或发送消息。界面寄存器由2个内核编址寄存器组成:界面双向缓冲器、界面控制寄存器。界面控制寄存器由一位方向标志和若干位外围寄存器地址组成。
当PPC内核写入地址控制寄存器的方向选择为输入,同时写入需读取的外围寄存器的地址,在保证足够的建立时间后再发出双向数据缓冲器写入指令(即对外围数据的锁存指令),地址控制寄存器指向的外围寄存器数据就被写入双向数据缓冲器,PPC内核就可以从双向数据缓冲器读到此数据。
当PPC内核写入地址控制寄存器的方向选择为输出,同时写入需读取的外围寄存器的地址,在之前应先将输出数据写入双向数据缓冲器,当系统时钟上升沿到来时自动将双向数据缓冲器的数据写入地址控制寄存器指向的外围寄存器,同时清除输出有效标志,该标志只有当PPC内核刷新地址控制寄存器且方向为输出时才会置为有效。应保证PPC内核刷新地址控制寄存器到系统时钟上升沿之间有足够的建立时间。
图3-1-3为PPC处理时钟域与系统时钟域数据交换需要足够的建立时间。
3.1.3PPC的等待条件指令
PPC有一类特殊指令:等待条件指令,其意义是当条件不满足时不执行指令操作,但也不跳过指令,而是等待条件满足后再执行指令及以后的程序。从以上定义中很容易将PPC特殊的等待条件指令与常规的条件指令区别开来。在PPC设置等待条件指令是为了支持DTSOC体系的数据驱动机制,而数据驱动机制是多个PPC自组织协同的基础。PPC的等待条件指令有两种类型:一是等待输入口标识码相符的若干输入数据,当输入口缓冲器上有标识码相符的数据存在,启动执行一系列预定的指令操作,这很好体现了数据驱动机制。二是等待输出口缓冲器腾空再输出数据。实际上两种等待条件指令使得在一个由多个PPC构成的自协同子系统内,PPC之间没有时序上的相互锁定关系,当改变其他相关的PPC的处理程序并导致时序意义上的变化时,输入、输出上等待条件指令使得PPC能自动适应这种时序上的变化,不用修改其内部程序。
3.2TDM-PPC的结构及指令系统
在展开层子系统中,任务数据管理TDM-PPC属于数据管理域之任务数据管理子域的PPC。在展开层4种类型的PPC中只有TDM-PPC能与上位机BPU之间进行消息交互,同时TDM-PPC还是展开层子系统中消息交互的中枢。此外,TDM-PPC还负责控制数据处理域、后台数据管理子域之间的数据通道。
3.2.1TDM-PPC顶层框图
图3-2-1为TDM-PPC顶层框图,图中MISB:消息识别及发送模块。DBTC:数据缓冲与转换通道。
图3-2-1显示TDM-PPC有1个工作在处理时钟域的内核、1个输入消息处理模块、8个数据缓冲与转换通道和4个消息识别与发送模块,在TDM-PPC内共有8个通道置于数据处理域、后台数据管理子域之间,TDM-PPC还有一个通道与上位机BPU交互消息。
TDM-PPC有一个内部SRAM,存储控制模块既负责SRAM的存取控制又承担DMA操作。SRAM被放置在TDM-PPC外围,是由于其工作时钟为系统时钟。
输入消息处理模块将从5个消息源(1个BPU输入消息、4个MISC输入消息)接受到的消息以循环队列的方式存入在SRAM中设置的消息缓冲区内,存储的每个消息全数据包括12bit的缩减消息(丢弃高4bit,编制消息时应忽略高4bit)、4bit消息代号,内核可从代号中分辨消息来源。同时该模块还应为BPU内核提供消息存放的头指针等信息。
图3-2-1中并未显示系统时钟选通模块和沿触发非独立高倍率时钟发生器,它们是各类PPC通用的部分。
3.2.2消息识别及发送模块
消息识别及发送模块MISB(message identifying and sending block)被设置在任务数据管理子域与数据处理域交联的8个双向端口中的2个端口处、与后台数据管理子域交联中的8个双向端口中的2个端口处,TDM-PPC内共4个MISB(参考图3-2-1)。
在接有MISB的输入端口处,所有的输入信号首先要经MISB鉴别,把消息从输入数据中过滤出来并传给TDM-PPC的内核,成为等待内核查阅的消息。消息的标识码中的代号域的4bit代号,可有16种不同的编号,消息识别模块内的TDM-PPC内核可配置的消息分界参数被用来作为过滤消息的依据:小于消息分界参数的区域为数据代号区,大于等于消息分界参数的区域为消息代号区。
图3-2-2为TDM-PPC的消息识别及发送模块参数意义示意图。
MISB还接受来自TDM-PPC内核的发送消息(数据),并将其插入数据输出队列中从TDM-PPC输出端口送出。从内核发送来的消息应粘连包含SDE路径和代号的标识码。
3.2.3数据缓冲及转换通道
TDM-PPC的一个主要功能是在BDM-PPC和DP-PPCs之间建立一个可编程控制的数据通道,该数据通道主要作用是为数据处理域提供完全的数据抽象。数据缓冲及转换单元DBTC(data buffering andtransforming Channel)在数据处理域到后台数据管理子域之间两级SDE中间起到数据缓冲及标识码的转换作用。标识码的转换不仅是从一个SDE标识码格式转换为另一个SDE标识码格式,而且还包括若干个不同标识码的分段数据依序合并转换为同一标识码的数据或同一标识码的数据分段转换为若干个不同标识码的数据。TDM-PPC有两种控制DBTC的模式:单次配置模式、中断配置模式。
3.2.3.1DBTC工作在单次配置模式
在此模式下TDM-PPC内核只是在初始化过程中配置一次转换参数。在此模式下一个DBTU可同时支持4个相互无关的通道数据的转换处理。4个通道控制参数分别控制4个缓冲数据的传输。每个通道控制参数的内容包括①传输方向、②接受侧标识码代号部分、③转换输出侧标识码及④传输数目限制与否、限制传输的数目值。在传输数目限制选项下当数据传输次数达到配置值时即停止该数据的传输。
3.2.3.2DBTC工作在中断配置模式
在此模式下TDM-PPC内核不仅在初始化过程中配置控制参数,在运行过程中也以中断响应来刷新控制参数。在此模式下一个DBTC可同时支持2个相互无关的通道数据的传输,参数寄存器中传输数目限制必须选有效。每2个通道控制参数寄存器构成两级控制参数配置,位于前级是当前起作用控制参数,当传输数目达到配置的参数值时,自动将后级的参数移入前级,同时向TDM-PPC内核发出中断申请信号,申请加载后备控制参数。在前级控制参数起作用的较长时段内,TDM-PPC内核能为后备寄存器写入控制参数,就可实现分段变更通道的转换标识码的无隙切换。工作在中断配置模式下的DBTC为同名但多存储源的数据抽象或者提供了支持。
3.2.3.3DBTC工作在混合模式
DBTC可同时支持1个中断配置的数据交换和2个单次配置的数据交换。2个通道控制参数联立为前后级支持一个中断配置模式,另2个通道控制参数分别支持单次配置模式。
3.2.4TDM-PPC内核结构
3.2.4.1TDM-PPC内核结构描述
图3-2-3为TDM-PPC内核结构及接口简图。
图3-2-3显示了TDM-PPC内核的主要构成。TDM-PPC有三个独立编址空间:内核寄存器空间、外围寄存器空间及单一存储器空间。TDM-PPC内核的PC是10bit,这意味着TDM-PPC存储器寻址空间最大为1024个word(16bit),TDM-PPC私有SRAM的规模须不大于1024×16bit。
TDM-PPC外围总线与内核的界面缓冲寄存器相连,TDM-PPC内核通过读写界面缓冲寄存器的2个内核编址寄存器来间接访问外围可寻址寄存器。TDM-PPC内核的微型cache为内核提供程序、数据的高速缓冲,这是TDM-PPC内核可以工作在高倍率的处理时钟下的基础。当TDM-PPC内核需要向外发送消息时,应先将消息内容通过界面缓冲寄存器写入外围编址的输出消息寄存器,然后将消息标识码和消息发送选择通过界面缓冲寄存器写入外围编址的输出消息控制寄存器,经由TDM-PPC外围硬件的支持,粘连了标识码的消息会自动发往指定的端口。当然TDM-PPC写入一次输出消息控制寄存器只会触发一次消息发送动作。消息发送选择是一个3bit编码数据,0~4的数值分别代表BPU消息接口或4个MISC接口之一。
3.2.4.2TDM-PPC寄存器文件
从略
3.2.5TDM-PPC指令系统
3.2.5.1TDM-PPC指令系统设计原则
由于TDM-PPC的功能范围明确且很窄,主要是消息发送、接收、传递及识别等操作。因此其指令集限制在一个很小的范围内,只有二十几条。
3.2.5.2TDM-PPC指令特点分析
3.2.5.2.1指令寻址模式
DTSOC体系根据TDM-PPC的限定类型功能,TDM-PPC指令只能选择3种指令寻址方式。
①寄存器寻址,只是在内核寄存器中操作,所有数据处理指令只能是寄存器寻址。
②立即寻址,即在指令中包含立即数。
③寄存器间接寻址,只能以地址为3的通用寄存器的数值为地址操作数据的存储器存取。
3.2.5.2.2TDM-PPC的指令格式
<opcode><Rd><operand>
·opcode是指令的操作码
·Rd是目标寄存器,也可能是第一个操作数
·operand是格式灵活的第二操作数
--Rs表示寄存器的内容为第二个操作数
--[Rs]表示寄存器的内容为存储器地址,用于存储器访问指令。
--#immed表示立即数据,仅支持8bit立即数。
3.2.5.3TDM-PPC指令集说明
TDM-PPC指令可以分为3类:
·存储器访问指令
·通用数据处理指令
·跳转(分支)指令
3.2.5.3.1存储器访问指令类
从略
3.2.5.3.2通用数据处理指令类
从略
3.2.5.3.3跳转指令类
从略
3.3BDM-PPC的结构及指令系统
在展开层子系统中,后台数据管理BDM-PPC服务的对象是任务性数据管理,为其提供基本数据抽象,即任务性数据管理不用关心数据在每个独立的SRAM中的存储细节。根据来自任务性数据管理的各种消息BDM-PPC编程执行在SRAM上数据存取、数据结构的维护工作以及管理级间数据的传输控制。此外在系统层面上,在接受到经TDM-PPC转发的SFU指令后,BDM-PPC还要承担在公共SRAM之间的“DMA”操作。
3.3.1BDM-PPC顶层框图
图3-3-1为BDM-PPC顶层框图。
每个公共SRAM都是一个BDM-PPC,BDM-PPC内核专注于其内部公共SRAM上的数据存取、维护,BDM-PPC内核的存储器寻址范围是12bit,这意味着公共SRAM的最大地址空间为4096。除了常规的BDM-PPC内核读写外,与公共SRAM接口相连的存储器控制模块可接受来自三个独立方面的存储器访问申请:输入数据存储、输出数据读取和DMA操作,DTSOC体系规定仲裁的优先顺序固定为数据存储优先于数据读取、数据读取优先于DMA操作。BDM-PPC的三种独立操作均接受BDM-PPC内核的编程控制。
图3-3-1中并未显示系统时钟选通模块和沿触发非独立高倍率时钟发生器,它们是PPC通用的部分。
3.3.2输入预处理模块
输入预处理模块设在BDM-PPC的管理级间数据输入口最前端。输入预处理模块将忽略标识码中的路径域值,标识码中的代号域的4bit代号可有16种不同的编号,消息识别模块内可配置的消息分界参数被用来作为过滤消息(包括地址)的依据:小于消息分界参数的区域为数据代号区,大于等于消息分界参数的区域为消息(地址)代号区。
图3-3-2为BDM-PPC的输入预处理模块可配置参数的意义。
当输入预处理模块接受到消息(地址)数据后,将1bit消息有效标志、4bit数据代号与消息数据的低11bit粘连为16bit数据加载到输入消息复合缓冲寄存器并引发BDM-PPC内核中断响应。由于消息数据的高5bit将被丢弃,在编制消息时应忽略高5bit值。
3.3.3数据存储处理模块
当BDM-PPC需要同时管理不同代号(指标识码的代号域数值)的输入数据存储时,由于来自外部的不同代号的待存储数据在时序上有一定的不确定性,可能会出现两个不同代号数据在排序上的错位(按程序的预定顺序后到的一种数据应先于另一种数据出现在BDM-PPC输入口)。如果由BDM-PPC内核的数据存储线程来逐一识别输入数据代号、安排存储地址,会需要复杂一些的程序,明显降低执行的效率。因此BDM-PPC内核的数据存储处理线程并不直接处理输入数据的识别以及存储,不论输入数据是否出现错位,BDM-PPC内核都按其预先安排的顺序,产生一系列“代号+地址”的控制数据。
为容纳输入错位,BDM-PPC中专门设置硬件存储处理模块来逐次承担输入数据的缓冲、与内核存储控制数据进行代号比对以及比对成功后拼接数据、地址一起送到存储器控制模块。存储处理模块有两个数据输入口:一是外部输入数据口,来自TDM-PPC的级间管理数据经分离了消息类数据后,都将转送到存储处理模块中,存储处理模块为存储类数据提供了4级数据+代号的缓冲寄存。存储处理模块的另一个是数据存储线程的地址输入口,存储处理模块也提供了4级地址+代号的缓冲寄存。存储处理模块在两组4级缓冲寄存器之间进行全并行代号比对,并将代号相同的地址和数据组合起来发往存储器控制模块。由于数据的存储操作有最高优先权,因此一旦存储处理模块有存储的申请,会被立即得到响应。比对成功的数据缓冲寄存器、地址缓冲寄存器在地址+数据被读出后,它们的标志即被分别清零,表示两个寄存器分别向两个输入口开放数据接受。
图3-3-3为图(1)表示缓冲寄存器数据结构,图(2)为存储处理模块逻辑原理图。
3.3.4输出处理模块
与存储处理模块相比输出处理模块要简单一些,因为在BDM-PPC输出数据时不会出现错位情况。输出处理模块接受来自内核的地址+标识码(包括路径域和代号域)或者消息+标识码,如果标志信号指示来自内核的数据是地址+标识码,应先向存储器控制模块申请读取数据,并将输出的数据粘连上预存在标识码缓冲队列的对位的标识码向SDE外挂输入口发出。如果标志信号指示来自内核的数据是消息+标识码,则直接向SDE外挂输入口发出。标识码缓冲队列只预存需从存储器中读取数据的标识码,如果发出的是消息时,则不会从标识码缓冲队列读出标识码,而是直接随消息数据一起向管理级间SDE输出。
图3-3-4为BDM-PPC的输出处理模块结构框图。
3.3.5DMA控制模块
DTSOC体系下在公共SRAM之间传输、复制数据的DMA操作是系统层面的任务,SFU将通过BPU、TDM-PPC的两级管道向指定的BDM-PPC发出DMA指令,BDM-PPC根据指令处理DMA操作。在BDM-PPC内有一个DMA控制模块设置在DMA的单区型SDE外挂口与存储器控制模块之间,在BDM-PPC内核的控制下执行DMA操作。
3.3.6BDM-PPC内核结构
3.3.6.1BDM-PPC内核双线程架构
由于来自外部的待存储输入数据的时点有一定的不确定性,DTSOC体系为BDM-PPC内核安排了特殊的双线程架构:内核可以轮流独立执行数据存储线程和数据输出线程。这两个线程并不是纯粹软件意义“线程”,是架构线程,DTSOC体系在BDM-PPC内核中为两个架构线程分别安排了程序计数器、程序状态寄存器等硬件结构。因此两个线程是可独立运行的,当一个线程的程序由于某种条件没有满足而出现停顿时并不会影响另一个线程的运行。编制这种双架构线程程序时,不需要考虑输入数据和输出数据之间同步关系。但两个架构线程并不是两个微核,因为它们都经由同一个指令预取、指令译码及执行引擎来执行的,并拥有共同的寄存器组。两个架构线程按预先配置的固定比例轮流分时占用这些共同的资源。
如果两个线程的程序相互无关,它们就可以完全独立运行的。只有在程序中设置了两个线程互控的内容,才会相互影响程序执行的进程。比如一个线程在某个阶段完成后向另一个发出消息,依然通过微核直接向某个内核通用寄存器写入数据来实现。在某些特殊应用中,可以通过两个架构线程读写内核通用寄存器来交换数据。每个BDM-PPC内核通用寄存器的高位字节、低位字节都分别设置一个特殊标志位,对两个架构线程之间正确交换数据起保护作用:当一个线程准备写一个通用寄存器(字节)时,如果是等待条件写指令的话,要先查询标志位,对16bit类型写操作,需将两个标志位相或作为查询的标志位。当标志位表示寄存器(字节)有数据时,等待条件类的写操作必须等待标志位被置空后才能写入数据。同样当一个线程准备读一个通用寄存器时,如果是等待条件类的读指令的话,要先查询标志位,当标志位表示寄存器无数据时,读操作必须等待标志位被置有效后才能读出数据。对16bit类型读操作,需将两个标志位相与作为查询的标志位。
BDM-PPC有两个中断源:一个是DMA中断,在DMA块传输完成后发出;另一个是输入消息中断,当有输入复合消息缓冲寄存器加载了新的消息时发出。
图3-3-5为BDM-PPC双架构线程内核结构及接口简图。
3.3.6.2BDM-PPC寄存器定义
3.3.6.2.1BDM-PPC内核寄存器定义
表3-3-1BDM-PPC内核编址寄存器说明
4bit地址 | 寄存器名称 | 说明 |
0~7 | BDM_GENi | BDM-PPC通用寄存器组,i=0~7。 |
8 | BDM_PC | 12bit BDM-PC内核程序计数器 |
9 | BDM_PSR | 3bit TDM-PPC内核程序状态寄存器 |
10 | BDM_BUFD | BDM-PPC内核界面双向缓冲寄存器 |
11 | BDM_BUFCON | BDM-PPC内核界面控制寄存器 |
12 | BDM_IER | 2bit中断使能寄存器,对应2个中断源 |
13 | BDM_IFR | 中断标志寄存器,来自2个的中断申请登记 |
表3-3-2BDM_PSR的分项详细定义
Bits | 信号名称 | 说明 |
[0] | BDM_Z | 零标志 |
[1] | BDM_V | 溢出标志 |
[2] | BDM_CMP | 比较(识别)指令结果标志 |
表3-3-3BDM_BUFCON的分项详细定义
Bits | 信号名称 | 说明 |
[3:0] | BDM_PERI_ADR | 外围寄存器地址 |
[4] | BDM_PERI_WR | 外围寄存器读写选择,=1:写,=0:读 |
3.3.6.2.2BDM-PPC外围寄存器定义
从略
3.3.7BDM-PPC指令系统
3.3.7.1BDM-PPC指令系统设计原则
和TDM-PPC一样,BDM-PPC的功能范围也较狭窄,主要就是消息的识别、处理、发送,以及地址计算等。因此其指令集不大而且很有针对性。
BDM-PPC的寄存器传输类指令都是等待条件指令,这是由于两个原因:一是为了防止内核覆盖系统时钟域外围寄存器中尚未处理的数据,外围寄存器都具有“只有腾空才能写入”特点。二是由于BDM-PPC内核的双架构线程是相互独立运行,为保证它们之间交换数据正确进行,内核通用寄存器都具有“只有腾空才能写入”和“只有有效才能读出”特点。内核通用寄存器和外围寄存器都附加了一个有效标志,BDM-PPC的等待条件指令查询的条件就是这个附加有效标志。
3.3.7.2BDM-PPC指令特点分析
3.3.7.2.1指令寻址模式
DTSOC体系根据BDM-PPC的限定类型功能,BDM-PPC指令只能选择3种指令寻址方式。
①寄存器寻址,只是在内核寄存器中操作,所有数据处理指令只能是寄存器寻址。
②立即寻址,即在指令中包含立即数。
③寄存器间接寻址,只能以地址为3的通用寄存器的数值为地址操作数据的存储器存取。
3.3.7.2.2BDM-PPC的指令格式
非等待条件指令的格式为:
<opcode><Rd><operand>
·opcode是指令的操作码
·Rd是目标寄存器,也可能是第一个操作数
·operand是格式灵活的第二操作数
--Rs表示寄存器的内容为第二个操作数
--[Rs]表示寄存器的内容为存储器地址,用于存储器访问指令。
--#immediate表示立即数据,仅支持8bit立即数。
寄存器传输类等待条件指令的格式为:
MOV{wait}<Rd><operand>
·MOV是寄存器传输类指令的操作码代号
·{wait}是等待条件编码
·Rd是目标寄存器
·operand是格式灵活的第二操作数
--Rs表示寄存器传输的源寄存器
--#immed表示立即数据,仅支持8bit立即数。
表3-3-4等待条件有4种符号的意义
条件符号 | 等待条件说明 |
无 | 无等待条件 |
W1 | 等待目标寄存器腾空 |
W2 | 等待源寄存器有效 |
W3 | 等待目标寄存器腾空及源寄存器有效 |
3.3.7.3BDM-PPC指令集说明
限定在数据存取和传输控制范围的BDM-PPC指令集分为5类
·存储器访问指令
·寄存器传输指令
·识别类指令
·地址及循环条件计算指令
·跳转(分支)指令
BDM-PPC指令集共有18种指令(不区分等待条件),且各种寻址模式都单列,显然是一个很小指令集,而且没有复杂的指令操作。
3.3.7.3.1存储器访问指令类
从略
3.3.7.3.2寄存器传输指令类
表3-3-5寄存器传输指令说明
注意上表中的等待条件指令。
3.3.7.3.3识别指令类
从略
3.3.7.3.4地址及循环条件计算类指令
从略
3.3.7.3.5跳转指令类
从略
3.3.8系统区边界BDM-PPC的通讯控制功能概述
位于系统区与通讯区边界的BDM-PPC除了面向前台数据管理的数据存取和维护工作以及管理级间数据的传输控制外,还需要承担与通讯区的数据交换控制。图1-6所示的系统区外围SDE系统区外围SDE在内侧是与边界处的BDM-PPC相连,在此类BDM-PPC内的系统时钟域增加一个通讯控制模块,这个模块专用于控制系统区与通讯区交换数据。同时此类BDM-PPC内部SRAM被改变为双口RAM:其中一个口为通讯控制模块所专用。
3.3.8.1边界BDM-PPC通讯功能略图
图3-3-6为边界DP-BBC通讯功能略图。
图3-3-6只显示了边界BDM-PPC中与通讯控制有关的部分模块。其中BAM-PPC内核是从存储器控制模块从双口RAM的内侧接口读写程序和数据,通讯控制模块被接在双口RAM的外侧接口与系统区外围SDE之间,通讯控制模块是BAM-PPC内核外围总线上一个功能模块,BDM-PPC内核通过配置模块内外围编址寄存器来控制通讯控制模块执行系统区与通讯区的数据交换。
3.3.8.2边界BDM-PPC通讯控制模块的功能概要
边界BDM-PPC的通讯控制模块与系统区外围SDE的一对分离的外挂口相连(见图3-3-6),在通讯控制模块可以高效处理多个不同标识码的通讯数据的高效连续存取处理。为此在通讯控制模块内为每个跨系统区、通讯区的数据传输设置一套可配置参数寄存器来提供全面的控制信息。
在通讯控制模块内有两种工作模式:①类DMA传输模式。在通讯控制模块根据由内核配置的的参数自动处理与通讯区的连续数据传输处理,不需要内核的实时控制。②内核直接输出模式。边界BDM-PPC内核可以根据需要直接为输出向提供通讯数据。显然类DMA传输模式效率较高,而内核直接输出模式在产生输出通讯数据方面灵活但效率较差,在具体应用时可以交替使用两种传输模式来控制与通讯区的数据交换。
3.4DP-PPC的结构、工作模式及协同机制
在展开层子系统中,数据处理DP-PPC负责所有非乘法计算的数据处理。与TDM-PPC、BDM-PPC不同,DP-PPC没有内部程序存储器,在主要的工作模式下,DP-PPC只能利用锁存器阵列存放最多二十四条指令,在连续运行期间DP-PPC都只能反复执行指定的独立程序段,因此很难在单个DP-PPC上构造什么完备的功能。由于DTSOC体系下数据管理与数据处理的分离,除内核寄存器组外DP-PPC没有其他的寻址操作,单个DP-PPC的操作仅限于对从DP-PPC输入口送入的标识码相符的数据进行预定的处理,并将结果从输出口粘连预先设置的标识码送出,至于数据来自何处、去往何方,DP-PPC完全不用关心。构造DP-PPC重点不是在赋予其多么完备的功能,而是以多个DP-PPC协同的方式来承担多个独立的数据处理任务、重点是承担高带宽的DSP处理任务。因此本节除了分析DP-PPC的结构、几个工作模式外,还要论述多个DP-PPC的协同机制,以及支撑协同机制的结构。
3.4.1DP-PPC的设计原理
在2.4.3.3节中论述了非乘法数据处理子域以及DP-PPC在DTSOC展开层子系统的核心位置。在DTSOC体系中,与TDM-PPC、BDM-PPC相比,DP-PPC的数量要多很多,因此为在有限的资源上获得最大的效用,重点应放在反复优化DP-PPC上。
3.4.1.1DP-PPC有多个工作模式
虽然常规DP-PPC都有一样的结构(当然在产品形态上会安排小部分DP-PPC有其特殊结构以适应一些特殊应用要求),但可以通过配置模式选项让常规的DP-PPC呈现不同的工作模式。这是由于每个DP-PPC分配到的展开层程序的片段所涉及的操作都有局部性,可能集中在所有操作集合的一个很小的区域内。根据每个DP-PPC被安排的操作程序片段的特点设置恰当的DP-PPC工作模式,一是有利于DP-PPC高效工作,二是使DP-PPC的指令的字长都较短小,显著减少对DP-PPC的程序锁存器阵列占用。另外有的特殊工作模式的目的是将可能放在协同层面的一些交联操作转移到DP-PPC内部,简化对DP-PPC交联协同的要求。有多个工作模式的DP-PPC,从加总上看,能够涵盖很大的操作领域,满足对DP-PPC通用性的要求;但在具体使用时,在一个连续运行的过程中,DP-PPC只是工作在一个小的操作领域,满足对DP-PPC简洁高效的要求。
而面向一些复杂的展开层应用程序时,相互协同的多个DP-PPC是以单一不变的面目出现还是有不同的工作模式出现更好呢?显然是后者。如果采用前一种方式,意味着每个相关DP-PPC都要涵盖复杂的展开层应用程序所涉的大操作领域,对DP-PPC来说是不堪其负,即使实现也会降低效率。而采用后一种方式,通过以DP-PPC的各种工作模式各自的较小操作域为参照基准,复杂的展开层应用程序可以等效重组为限制在若干个小操作域内实施的多个分类片段,并且由多个DP-PPC以不同的工作模式来分工承担复杂程序中的分类片段,不仅可以在最基本的层面上降低对单个DP-PPC的要求,而且会更有效率。以不同工作模式下的DP-PPC协同来面对一项复杂任务,体现了这样的原则:构造DP-PPC重点不是在赋予单个DP-PPC多么完备的功能,而在多个DP-PPC协同所产生的总体效应。同属一个应用的各个DP-PPC,因其已配置的工作模式而呈现局限性,而配置了不同工作模式的DP-PPC似乎是不同的基本功能单元,它们的加总效应可看作一个全能的结构,能承担各式各样的复杂任务。
图3-4-1为DP-PPC协同产生的等效操作域的“光谱”图。
3.4.1.2DP-PPC可灵活配置时钟的意义
DP-PPC同样工作在两个时钟域上:一个是系统时钟域,另一个是高倍率处理时钟域。DP-PPC与外部系统交换数据是在DP-PPC的系统时钟域中进行,交换的数据包括待处理的数据以及以数据形态表示的状态、分支控制信息。系统时钟是不能轻易改变,原因是必须考虑整个系统的各个部分都能工作正常。在处理时钟域,DP-PPC内核随着刷新的输入数据反复执行内部的小段程序。这个过程是独立于系统的其他部分的,也是为系统其他部分不可见的。每个DP-PPC内都有一个独立的时钟发生器,产生的处理域时钟是系统时钟沿触发的非独立高倍频脉冲串,且脉冲的宽度、脉冲数目是可以灵活配置的。在这样的结构背景下,如何设计DP-PPC的指令集呢?
在时钟频率不变的情况下,DP-PPC指令的操作种类越多、操作越复杂,实现一项给定功能的效率会越高。但DP-PPC内核执行指令的处理时钟是可灵活改变且不会造成系统的其他部分连锁改变,情况会明显不同。因为在DP-PPC内部,指令译码路径对时钟的限制是可以解决的(后面会提到),也不存在从存储器到寄存器的数据路径,单周期指令操作本身会是最大的时钟限制因素。一个复杂的指令操作可能会有较大的延迟,会导致工作时钟不能设置很高,而由可组合任何复杂操作的简单操作指令构成指令集的DP-PPC能把工作时钟调整到很高。在此情况下由简单操作指令构成的功能程序虽然可能比由复杂操作指令构成的功能程序长一些,但前者可工作在更高的时钟下,综合起来两种模式的程序总和执行时长可能相近,包含复杂指令的架构的效率优势并不明显。考虑到支持复杂操作指令的DP-PPC同时也必然支持简单操作指令,而其时钟频率由延迟最大的复杂指令操作决定,必然造成执行简单指令操作时有较大时间闲置,而仅支持简单操作指令集的DP-PPC各指令操作的延迟则较均衡。从这个层面说,仅支持简单操作指令集的DP-PPC内核在时钟抵近上限值时可能获得相似甚至还高一点的效率。这个特性使得在时钟可以灵活设置的条件下,不必追求有复杂指令的DP-PPC,而是效率和简洁兼具的DP-PPC。
另外如果指令中包括复杂操作可能会导致在展开的系列关联操作中出现无效成分。如一个数值的输入引起多个连续相关加减计算,如果每次加法计算都得出标准的二进制数值就有很大的无效成分,而每次加减计算只计算部分和,结果采用冗余格式暂存,而到需得出比较结果或需输出数据时再将冗余格式的数据转换成标准二进制数值。其中的无效成分将被压缩到最低程度。因此DP-PPC的指令集基本上由原子操作指令组成,原子操作的意义指其基本不能分解为其他原子操作的组合形态。在DP-PPC中,部分和的计算就是一种原子操作,完全加法计算在DP-PPC内是需要2、3条原子操作组合而成的复合操作,同样比较、取绝对值也是复合操作。
3.4.1.3DP-PPC协同原理:数据驱动机制
在DTSOC体系的展开层子系统的非乘法数据处理子域,多个DP-PPC协同执行一个应用程序的数据处理部分。协同的方式不是接受一个外在的控制器来管理,而是基于规则性的数据驱动机制。数据驱动机制有两个层面的含义:在处于工作状态的DP-PPC内部层面,是由外部输入数据触发DP-PPC预存的小段程序的顺序执行的。当程序即将处理的输入数据未到时,DP-PPC将停顿下来等待输入数据。一旦输入数据被处理一次就视为无效,DP-PPC等待新的外部输入数据以触发新一次的程序执行,此过程不断重复。在DP-PPC之间的层面,各DP-PPC是以交换粘连标识码的标准格式数据来实现交联的。无论是待处理的不同格式、不同意义的数据还是程序中的状态、分支控制信息等,在输出方的DP-PPC都会被组织成粘连不同标识码的16bit标准格式数据。粘连标识码的标准格式数据是通过非乘法数据处理子域内的若干行单区型SDE在挂在这些SDE上的各DP-PPC之间传送的,标识码中的路径域值是SDE内自动传输的依据。简要说,DP-PPC的运作是受数据驱动的,DP-PPC是以交换带标识码的标准数据来实现交联的,从DP-PPC交联层面上看,一个源端DP-PPC输出的交联数据只能传送给一个目的DP-PPC,而不能再传送给其他目的DP-PPC,这就是交联数据唯一路径规则。交联数据唯一路径规则很重要,它避免了多个DP-PPC之间过分复杂的协同处理并进而导致系统性的紊乱。无论同属一个任务的DP-PPC有多少、它们之间交联的内容有何不同,交联数据唯一路径规则使整个协同结构处在简洁、规范并且稳定的状态。
3.4.1.4DP-PPC对分支程序的支持
在外部输入数据的驱动下DP-PPC内核将执行一个纯粹的顺序程序段,这就意味着该段程序中不会有分支或循环结构,原因是DP-PPC内核不能支持跳转指令。之所以不能支持跳转指令首先是因为展开层程序会在多个DP-PPC中展开,操作内容是改变程序地址的跳转指令将无法使用。虽然DP-PPC内核不具有直接编程支持分支、循环程序,但通过DP-PPC外围专用功能模块的协助,依然能够有限满足分支、循环的程序处理需要。需要指出的是,循环程序是一种高级语言形态,它可看作迭代结构的分支程序。在考虑硬件实现时,只要分析分支程序的实现就可以了。
DP-PPC的运行是基于数据驱动机制,分支控制也是通过数据驱动机制实现的。具体讲就是前一处理环节产生不同代号的数据可以触发一个DP-PPC内不同独立程序段的执行,或者触发不同的DP-PPC工作。因此DP-PPC内核可以存放若干独立程序段是在DP-PPC内部支持分支控制的基础。由于DP-PPC内核能存放的程序很短,DP-PPC的结构不宜过于复杂,DTSOC体系规定DP-PPC内核程序最多可由3个独立程序段组成。
在DP-PPC外围,会依据比较或算术计算后的程序状态位产生不同标识码的数据,然后这个不同标识码的数据会启动DP-PPC内核不同独立程序段执行或者启动不同DP-PPC执行程序,这就是在DP-PPC处理分支控制的方式。其中比较和算术操作以及程序状态位输出被编入内核程序之中,而依据程序状态位产生不同的数据标识码则是DP-PPC外围硬件的可配置功能。产生的不同标识码的数据可以上传到SDE来在多DP-PPC协同子系统中触发不同DP-PPC分支程序的执行,也可以直接转入内核,触发内核不同独立程序段的执行,从而在单个DP-PPC可实现有限的分支程序。
图3-4-2为DP-PPC处理分支程序的两个基本路径。
图3-4-2标注了在DP-PPC外围专用功能模块处理分支程序的两个基本路径:①数据转向同DP-PPC的另一个独立程序段、②通过输出数据标识码的改变使其驱动不同DP-PPC执行操作。
3.4.2一般处理模式下的DP-PPC的结构及指令格式
一般处理模式是常规DP-PPC的主模式,DP-PPC的基本架构和逻辑资源主要根据一般处理模式的需要建立,其他模式基本上是在一般处理模式基础上重组已有的逻辑资源并适当增加一些逻辑资源而来。在一般处理模式下的DP-PPC可执行各种算术逻辑操作及内核寄存器之间数据传输。一般处理模式是DP-PPC所有工作模式中唯一按缩小的、片面的通用处理器的原则设置的,是在DP-PPC所有工作模式中唯一没有针对特定用途的模式,其他工作模式都是针对一些常见的特定用途而设置的。由于一般处理模式下的DP-PPC在DTSOC体系中的特殊意义,且与常规处理器架构有着最明显的不同,本文给出了DP-PPC在一般工作模式的最小配置条件下尽可能详尽的描述,目的是为了全面建立DP-PPC这一DTSOC体系独特且最大量的基本单元的结构概念。但这不意味着实施时的结构不会增加逻辑资源:主要是增大内部程序锁存器阵列的规模、增加独立程序段的数目、增加数据接口以及增加进出DP-PPC数据的代号域取值范围(如每个通道代号种类从4个扩大到8个)等。但不论实施时的结构如何变化,本文所描述的一般处理模式下的DP-PPC结构及指令系统应不会有本质变化。
3.4.2.1非乘法数据处理子域的SDE结构
非乘法数据处理子域的SDE(简称子域SDE)是多个DP-PPC协同的载体,因此在分析DP-PPC的内部结构之前,应先确定子域SDE结构。
3.4.2.1.1子域SDE的两种类型ADEC
任何SDE都是以ADEC层级化排列而成。子域SDE有两种ADEC:一种是3.2.2.1节的4-1单区基本型ADEC,另一种是4-2单区基本型ADEC(见图3-12)。
图3-4-3中(1)图显示4-1单区基本型ADEC(2)图显示4-2单区基本型ADEC。
3.4.2.1.2子域SDE的交叠式两层结构
子域SDE采用4-2单区基本型ADEC并不是为了增加数据中转的通道,而是为了交叠式两层结构SDE的结构需要。
图3-4-4为子域SDE的交叠式两层结构。
图3-4-3子域SDE的底层ADEC0[3i]、ADEC0[3i+3]是4-2单区基本型ADEC,它们都有两个中转通道分别与两个第2层ADEC相连,构成交叠式两层结构的SDE。设计这种交叠式结构的目标是可以借助DP-PPC的“中继”作用来在水平方向上大范围交换数据。因此必须在标识码的路径域中增加1bit表示上传的通道。
DP-PPC的两对分离的双向端口将挂在两个独立的子域SDE上,DTSOC体系规定在子域SDE中传输数据对应的标识码中路径域设为6bit:1bit表示传输所经层级数、1bit表示上传的通道、2bit为上层ADEC外挂口编号、2bit为底层ADEC外挂口编号。标识码中代号设为2bit。这意味着DP-PPC的1个双向数据口最多允许输入4种不同的数据或能输出2种不同的数据。
3.4.2.2一般处理模式下的DP-PPC系统时钟域功能
3.4.2.2.1DP-PPC的顶层结构框图
图3-4-5为DP-PPC的顶层结构框图。
DP-PPC有两个分离的双向数据口分别挂在两个独立的子域SDE上,在非乘法数据处理子域多个DP-PPC可按图2-14排列为n行×m列的二维交联结构。在这样由多行SDE连接大量DP-PPC构成的“四通八达”的结构中,能组织各式各样的多操作长流水线。
3.4.2.2.2外围数据传输通道模块
3.4.2.2.2.1传输通道的数据通路框图
在DP-PPC系统时钟域两个SDE分离双向数据口与内核的双向数据口之间分别有一个外围数据传输通道,在其内部传输控制器的管理下,可以实现子域SDE与DP-PPC内核的双向数据交换。
图3-4-6为外围数据传输通道模块的数据通路结构。
图3-4-6显示外围数据传输通道与子域SDE、通往内核数据口的通道及另一个外围数据传输通道(即图中的中转通道)相连。
3.4.2.2.2.2外围数据传输通道的桥接器作用
为充分利用DP-PPC跨接在两行子域SDE的结构特点,DP-PPC还可以兼顾起到桥接器的作用。如果DP-PPC的外部输入数据被转送到另一个子域SDE,这类数据称为中转数据。两个外围数据传输通道可承担桥接器的功能,用于实现中转数据从一个子域SDE转送到另一个子域SDE。在图2-14所示的桥接器实际上表示了DP-PPC的一个功能,并无实际的独立桥接器。
实际上,在同一个外围数据传输通道模块内也可以实现输入数据的变名(即标识码)输出。在图3-4-5的数据通路结构中体现了多种数据传输、变换的可能性。
图3-4-7为在外围传输通道内4种中转、中继数据传输的模式。
在图3-4-7中,(1)图显示了一个纯粹的中转数据的传输,该数据未进入DP-PPC内核。图(2)显示了一个自子域SDE输入数据既作中转数据转往另一个子域SDE,也是需要进入DP-PPC内核进行处理的数据。图(3)显示了一个纯粹的数据换名处理,即输入数据被换一个标识码后重新传回同一个子域SDE,其目标是为超长的水平方向SDE传输提供一个“中继”节点,该数据未进入DP-PPC内核。图(4)显示了一个“中继”数据同时也是需要进入内核进行处理的数据。其中图(2)、(4)显示了DP-PPC内部结构对多次使用的个体数据的内化支持:由于数据驱动机制的定义,在DP-PPC之间的交联层级是不允许向不同目的DP-PCC传输同一个体数据的,必须在DP-PPC内部将需要多次使用的个体数据转换为多个不同名(标识码)但同值的数据,使得在DP-PPC的交联层级上,所有传输的数据都只有唯一路径。
3.4.2.2.2.3传输通道的控制、缓冲寄存器定义
在每个外围数据传输通道有2个21bit通道缓冲寄存器在其通道传输中起缓冲作用,而2个16bit输出标识码寄存器及1个16bit输入数据属性寄存器被直接放在外围数据传输通道内,为缓冲数据输向子域SDE或者中转通道提供控制参数。
表3-4-1DP_CHLBUFi(通道缓冲寄存器)分项说明
表3-4-2DP_OUTIDT0(输出标识码寄存器1)分项说明
Bits | 信号名称 | 说明 |
[7:0] | DP_OUTIDT_N0 | 1号输出标识码 |
[15:8] | DP_OUTIDT_N1 | 2号输出标识码 |
表3-4-3DP_OUTIDT1(输出标识码寄存器2)分项说明
Bits | 信号名称 | 说明 |
[7:0] | DP_OUTIDT_N3 | 3号输出标识码 |
[15:8] | DP_OUTIDT_N4 | 4号输出标识码 |
输出标识码寄存器1只为来自内核的需上传子域SDE的输出数据提供粘连标识码。输出标识码寄存器2则为来自另一个传输通道的中转数据或者从与本传输通道相连的子域SDE输入且需直接换名上传的数据。
在通道缓冲寄存器中数据来源位表示来自内核或中转通道时,缓冲的有效数据必然是需要上传到SDE的,此时通道缓冲寄存器中的标识码索引位(数据属性位)自动指示了输出标识码的选择。如果缓冲器的数据来自中转通道或SDE,数据属性位的高bit恒为1,表示中转数据标识码索引位指向2号输出标识码寄存器。
表3-4-4DP_INDAT(输入数据属性寄存器)分项说明
在编制输入数据属性寄存器时要注意中转数据、换名数据都不应超过2个,而来自另一个传输通道的中转数据与本传输通道的换名数据也不要超过2个,且不要出现两个中转数据或者换名数据指向相同的映射码。
在外围传输控制器的控制下,有效标志位为0的通道缓冲寄存器可以为来自SDE的输入数据、来自DP-PPC内核的输出数据及来自中转通道的中转数据提供缓冲。而有效标志位为1的通道缓冲寄存器,传输控制器将依据通道缓冲寄存器的来源标志、数据属性位查询输入数据属性寄存器的参数,决定数据传输的方向:①内核、②中转、③换名、④内核兼中转或者⑤内核兼换名。
3.4.2.2.3数据驱动控制模块
多个DP-PPC协同乃至整个展开层子系统协同的基础是数据驱动机制,具体到一个DP-PPC内部,实现这一机制是在DP-PPC外围的数据驱动控制模块。同时数据驱动控制模块还必须承担3.4.1.4节所述DP-PPC外围硬件的分支控制功能。
3.4.2.2.3.1数据驱动配置
DP-PPC每个独立程序段可以接受处理若干个输入数据,所有输入数据都称为独立程序段执行的驱动数据,但只有第一个接受的输入数据被看作触发DP-PPC内核从闲置状态转入执行状态的唯一启动数据。数据驱动控制模块必须按独立程序段的执行顺序选择输入数据送到两个内核数据输入口。按3.4.1.4节的规定,DP-PPC内核最多可存放3个独立程序段,数据驱动控制模块内的数据驱动配置寄存器需要3套输入数据次序表用于安排每个独立程序的数据驱动。
表3-4-5DP_DRVCON(数据驱动控制寄存器)分项说明
表3-4-6DP_DATDRV0(数据驱动配置寄存器1)分项说明
Bits | 信号名称 | 说明 |
[1:0] | DP_DATDRV0_SYM00 | 1号程序段1通道的驱动数据1的代号 |
[3:2] | DP_DATDRV0_SYM01 | 1号程序段1通道的驱动数据2的代号 |
[5:4] | DP_DATDRV0_SYM02 | 1号程序段1通道的驱动数据3的代号 |
[76] | DP_DATDRV0_SYM10 | 1号程序段2通道的驱动数据1的代号 |
[98] | DP_DATDRV0_SYM11 | 1号程序段2通道的驱动数据2的代号 |
[1110] | DP_DATDRV0_SYM12 | 1号程序段2通道的驱动数据3的代号 |
表3-4-7DP_DATDRV1(数据驱动配置寄存器2)分项说明
Bits | 信号名称 | 说明 |
[1:0] | DP_DATDRV1_SYM00 | 2号程序段1通道的驱动数据1的代号 |
[3:2] | DP_DATDRV1_SYM01 | 2号程序段1通道的驱动数据2的代号 |
[5:4] | DP_DATDRV1_SYM10 | 2号程序段2通道的驱动数据1的代号 |
[7:6] | DP_DATDRV1_SYM11 | 2号程序段2通道的驱动数据2的代号 |
[9:8] | DP_DATDRV2_SYM0 | 3号程序段1通道的驱动数据的代号 |
[11:10] | DP_DATDRV2_SYM1 | 3号程序段2通道的驱动数据的代号 |
DTSOC体系规定,独立程序段的启动数据就是指定的输入通道的1号驱动数据。数据驱动控制模块与DP-PPC内核有交互,当内核处在闲置状态时,数据驱动控制模块会从两个通道输入数据中搜寻各个独立程序段的启动数据标号,一旦搜寻到一个启动数据,即刻通知内核。内核在转向执行状态后,数据驱动控制模块也处在锁定状态,按选中的独立程序段的数据驱动配置顺序为内核提供输入数据。
图3-4-8中(1)数据驱动控制模块输入部分框图及(2)波形图。
从图3-4-8的波形图显示,通道缓冲寄存器在系统时钟上升沿锁存数据,当数据驱动控制模块的驱动缓冲寄存器在下降沿锁存来自通道缓冲寄存器的选定数据,并同时向内核发出信号,内核寄存器都是在系统时钟上升沿触发的第一个高倍率处理时钟处锁存来自驱动缓冲寄存器的数据。
3.4.2.2.3.2分支控制及输出数据的配置
按照3.4.1.4节确定的原则,DP-PPC支持分支程序的方式是内核程序包含将比较或算术计算后的程序状态位送到DP-PPC外围的指令,依据程序状态位产生不同的标识码索引则由数据驱动控制模块负责处理。当数据驱动控制模块接受到内核发出的数据,会按输出及分支控制寄存器的配置参数进行处理。
如果需要,仅在DP-PPC内核1号独立程序段可输出一次程序状态位(占用一次数据输出)用于分支控制,当数据驱动控制模块识别到输出的是程序状态位,会根据与输出及分支控制寄存器参数比对结果查询输出及分支控制寄存器的相关参数,产生一个带输出标识码索引的虚输出数据(数据内容没有意义,是其标识码会触发某个分支的执行)或者一个将转向内核的带新代号的虚输入数据(数据代号将会触发另一个独立程序段的执行,数据内容被忽略)。
总之,在数据驱动模块内有两种支持分支的路径:向外发送数据或者转向内核触发另一个独立程序段的执行、向外发送不同标识码的数据。
表3-4-8DP_BRAN(分支控制寄存器)分项说明
程序状态位数据输出可选不同输出通道,但输出的标识码索引固定是“1”值(即2号输出数据)。
DP-PPC内核的每个独立程序段可经两个输出通道输出最多4种数据,在分离了其中的程序状态位数据后可直接把内核输出数据连同1bit标志直送某个外围数据传输通道的通道缓冲寄存器,内核输出的1bit标志被写入通道缓冲寄存器的数据属性位低bit,而数据属性位高bit被置为0。
图3-4-9为数据驱动控制模块输出部分(包含分支控制)框图。
3.4.2.3一般处理模式下的DP-PPC内核的结构及指令格式
3.4.2.3.1内核寄存器布局与命名
对DP-PPC这个DTSOC体系中核心之核心的基本单元,详细的论述不仅涉及其中的逻辑意义,还要延伸到定性的布局考虑。因为在极大规模集成电路工艺中,布局的均衡、走线的简单、延迟小可能比逻辑中体现的门延迟对总合延迟产生影响更大。希望DP-PPC能有极致的处理时钟频率,就必须在构造DP-PPC内核结构时综合考虑逻辑和布局的两种因素。
图3-4-10为一般处理模式下DP-PPC内核12个编址寄存器矩阵式布局。
图3-4-10显示了DP-PPC内核12个16bit寄存器的4行×3列矩阵布局。这种布局有利于内核寄存器之间数据传输的布线通畅,也利于构造DP-PPC内数据操作的超短流水线。其中类寄存器是主路径寄存器,在主路径寄存器之间有算术逻辑处理逻辑。而类寄存器是旁路寄存器,在旁路寄存器之间没有指令控制的算术逻辑操作,只有进行寄存器传输操作。旁路寄存器只用于存储常数、缓冲数据,4个旁路寄存器又构成数据传输的旁路通道。
无论主路径、旁路寄存器,1、2级的6个寄存器均存放标准格式二进制数据,它们的位宽是16bit。但3、4级6个寄存器除标准格式数据外,还应可以存放冗余格式的二进制数据,它们的位宽是16+4bit。
在DP-PPC内核并不支持12个寄存器之间的任意数据传输,因为这样会导致DP-PPC内复杂且延迟大的布线,不符合DTSOC体系对DP-PPC指令操作简洁、延迟尽量小的要求。在DP-PPC内寄存器的传输只能在源寄存器邻近的几个内部寄存器之间进行。更大范围的数据传输需两三步才能完成。因此DTSOC体系并不给DP-PPC内核12个寄存器统一编址,但每个寄存器都有一个唯一的标号。图3-4-9给出了每个寄存器的标号。
3.4.2.3.2内核算术逻辑资源及分布
在DP-PPC内核,算术逻辑资源被分散在4级主路径寄存器之间,方便以超短流水线的形式组成一些常见的复杂操作以保证执行效率。
3.4.2.3.2.1逻辑处理模块
在主路径1、2级之间的各种逻辑处理可选择1、2级寄存器操作数之间的与(AND)、或(OR)、异或(EOR)逻辑操作并将结果存放在2级主路径寄存器上,此外在第2级寄存器上取反的操作。
3.4.2.3.2.2部分右移处理模块
在1级主路径寄存器上可进行1~8bit的部分右移,3bit的移位参数引用自DP-PPC内核的移位参数寄存器。对DTSOC体系而言,完全的左右桶式移位是复合操作,需要将部分右移处理与同级的数据传输结合来实现。
3.4.2.3.2.3部分和逻辑模块
在DP-PPC内核并没有完全的加法逻辑,只有产生冗余格式结果的部分和逻辑。数据的冗余格式是指将标准二进制数值以4bit为单位分成等分的几个位区,在每个位区冗余表示格式除4bit数据外还多出1bit进位。数据冗余格式实际上是加法计算部分和的中间状态结果。具体讲它只是几个以4bit为单位的位区分别计算的结果,每个位区的进位并没有上传来参与当次计算,而是作为冗余位在本位区寄存,以备下次加法计算时加入上一级位区计算。完成这样部分和的计算最大的延迟被限制在4~5bit加法计算之内,不需要超前进位只用简洁的串行进位也可以达到极小的延迟。实际上,标准二进制数值可认为是冗余格式数值的特例:所有的位区的附加进位都是0。也就是说标准二进制数值与冗余格式数值混合计算是可行的。
在2、3级主路径寄存器之间有标准二进制数据与冗余格式二进制数据的部分和逻辑(见图3-4-10),在3、4级主路径寄存器之间则有两个冗余格式二进制数据的部分和逻辑(见图3-4-11)。
图3-4-11为标准二进制数据与冗余格式二进制数据的部分和4bit位区逻辑图。
图3-4-11中A1是标准二进制数据,而A2是冗余格式数据。
图3-4-12为双冗余格式二进制数据的部分和4bit位区逻辑图。
图3-4-12中,FADD3是5-3全加器,即有5个同权bit输入,产生3个不同权位输出。FADD4是4-3全加器,即有4个同权bit输入,产生3个不同权位输出。
3.4.2.3.2.4冗余位消减逻辑
在第4级主路径寄存器输出端上设有冗余位消减逻辑。冗余格式数据向标准二进制数据的快速转换逻辑很简单,可以选择一次完成16bit数据的冗余格式向标准格式二进制数据的转换。
图3-4-13为4bit位区冗余位消减逻辑。
用图3-4-13的逻辑单元串联起来可以一次消除多个冗余位,但其中关键路径布线很长是主要的问题。
图3-4-14为16bit数据冗余位消减关键路径部分逻辑及布局。
图3-4-14主路径第4级20个1bit寄存器被安排为5×4式二维布局,黑粗线表示冗余位消减逻辑的关键路径。从图中可以看出,这样布局下关键路径的布线已经尽量短了。所有DP-PPC的内核寄存器都被安排为图3-22所示的二维布局,非冗余格式的16个1bit寄存器被安排为4×4式二维布局。
3.4.2.3.2.5数值判别逻辑
在第4级主路径寄存器输出端上还设有全零值判别逻辑。在DP-PPC内核,任何比较操作都是复合操作,需几个原子操作来实现。在第4级主路径寄存器上进行的数值判别逻辑是比较处理的最后环节:判别数值是全零并保留算术计算的统一位(在不同计算可能分别表示进位、符号位等)。当然在判别前必须全部消除冗余位。在4级主路径寄存器上的数值判别是一元判别,必须结合其他操作才能完成一次比较操作。例如,【1、2级寄存器上的异或处理】+【两次数据传输】+【4级寄存器上的全零判别】可以完成一次数值相等比较;【1级寄存器上取反】+【1级到2级传输】+【2、3级寄存器上的部分和计算】+【4级寄存器上消减冗余位处理】后,产生的统一位和全零位状态提供了大于、大于等于、小于等于、小于等数值判别的状态位,但最终判别由DP-PPC外围硬件根据送出的程序状态位(包括统一位和全零位)给出。
另外求取绝对值也是复合操作,是由【2级寄存器上的条件取反处理】+【两次数据传输】+【4级寄存器上的加1条件下消减冗余位处理】组成。
3.4.2.3.2.6算术逻辑资源分布图
图3-4-15为一般处理模式下DP-PPC内核算术逻辑资源分布图。
3.4.2.3.2.7指令格式:复合操作码
在一般处理模式下DP-PPC内核可执行邻近寄存器传输、各种逻辑操作、部分和计算、冗余位消减处理以及数值判别等种类原子操作。前述DP-PPC内核的寄存器和逻辑资源的二维矩阵式布局使得DP-PPC内核可以在5个分区并行进行传输及算术逻辑操作。5个分区指4级主路径寄存器(包括同级旁路寄存器)以及旁路寄存器一线。5个分区的原子操作都是由4bit分区操作码来指引,没有操作数,分区操作的操作类型及源、目标寄存器均由操作码指定,不论那个分区操作码,当它为0值时均表示NOP(无操作)。为了最大程度精简指令码长,DP-PPC的指令中不能包含立即数。DP-PPC指令由5个4bit分区操作码组成,指令字长都是等长的20bit。
表3-4-9 20bit指令的操作码映射表
Bits | 名称 | 说明 |
[3:0] | OPCODE0 | 1号分区4bit分区操作码 |
[7:4] | OPCODE1 | 2号分区4bit分区操作码 |
[11:8] | OPCODE2 | 3号分区4bit分区操作码 |
[15:12] | OPCODE3 | 4号分区4bit分区操作码 |
[19:16] | OPCODE4 | 5号分区4bit分区操作码 |
3.4.2.3.2.8一般处理模式下的控制参数寄存器
3.4.2.3.2.8.1子模式选择寄存器
在一般处理模式下,DP-PPC可以处理有符号或无符号8bit、16bit、32bit整数数据格式,但在配置之后的运行时,DTSOC体系规定DP-PPC只能处理单一的格式数据,具体讲只能在【无符号8bit、有符号8bit、无符号16bit、有符号16bit、无符号32bit、有符号32bit】6种格式数据中选择一种。这样设定进一步缩小了DP-PPC的操作作用域,便于减少DP-PPC的指令操作码位数。显然6种格式数据的选择可以看作是在一般处理模式下进一步的子模式选择,用DP-PPC内核的编址的3bit格式寄存器中表示子模式选择。
表3-4-10DP_SUBMOD子模式选择寄存器说明
当数据格式参数选择为8bit或16bit时,所有算术逻辑指令都是16bit数据处理,只不过数据格式为8bit时,算术计算是分裂的双8bit计算:低8bit的计算不向高8bit进位。当数据格式参数选择为32bit时,所有算术逻辑指令都是32bit数据处理。但不管数据格式参数如何选择,所有寄存器传输指令都是16bit格式。
3.4.2.3.2.8.2独立程序段参数寄存器
如3.4.1.4节所规定,内核最多可存放3个独立程序段。在DP-PPC外围的数据驱动控制模块中为每个有效的独立程序段提供数据驱动(启动)服务。内核从闲置状态转为执行状态以及执行哪一个独立程序段由数据驱动控制模块决定。在DP-PPC内核也需要对应的配置,配置内容为每个独立程序段的首尾地址。由于1号独立程序段的首地址恒为0,不列为配置参数。
表3-4-11DP_PSEG独立程序段配置寄存器说明
Bits | 名称 | 说明 |
[4:0] | DP_PSEG_REAR0 | 1号独立程序段尾地址 |
[9:5] | DP_PSEG_FRST1 | 2号独立程序段首地址 |
[14:10] | DP_PSEG_REAR1 | 2号独立程序段尾地址 |
Bits | 名称 | 说明 |
[4:0] | DP_PSEG_FRST2 | 3号独立程序段首地址 |
[9:5] | DP_PSEG_REAR2 | 3号独立程序段尾地址 |
独立程序段配置寄存器参数共需25bit表示,占用2个参数寄存器地址。
3.4.2.3.2.8.3移位参数寄存器
DP-PPC的指令中没有操作数,当然也不能包含立即数。同时DP-PPC内核是利用右移操作和寄存器传输操作来实现左移操作,移位参数寄存器只存放了4个右移参数供4个移位指令引用。
表3-4-12DP_SFTPARM移位参数寄存器说明
DP-PPC的左移处理实际上也是借用右移操作来实现的,只不过移位后的数据变动了位置,如果需要可经过同级寄存器之间的特殊寄存器传输操作来回到被操作数据的原位。
3.4.2.4一般处理模式下组成DP-PPC内核指令的各分区操作集合
在3.4.2.3.2.7节中规定每条指令可能最多由5个分区操作码组成,下面就5个分区的操作集合分别详细说明。
3.4.2.4.11分区(级)操作集合
1分区所有操作的目标寄存器为M00、M01、B0。在1分区所有操作都是寄存器传输。
对目标寄存器M00,所有寄存器传输操作:从输入数据口1(外部传输通道1)输入数据、从M01输入数据,从B0输入数据。
对目标寄存器M01,所有寄存器传输操作:从输入数据口2(外部传输通道2)输入数据、从M00输入数据。
对目标寄存器B0:寄存器传输操作:从M00输入数据。
表3-4-13 1分区各操作码操作意义说明
带*的指令为等待条件指令,其特点是如果条件不满足,DP-PPC内核将停顿下来等待条件满足。
其中互换指令有一个特殊用途,即使存放有数据的寄存器也可做数据传输的媒介:第2次同样的交换操作就可将作为媒介的寄存器上的原数据复原。
对右移操作SHRi(i=0~3),数据格式不同,具体操作也不同。在DTSOC体系中,DP-PPC内左移处理实际上也是借用右移操作来实现的。分4种情况分析右移操作的实际内容
①目标为右移处理、数据格式为16bit。操作源数据在M01上,结果仍在M01上,不涉及其他同级寄存器。
②目标为左移处理、数据格式为16bit。操作源数据在M01上,结果移到{M01[7:0],M00[15:8]}上,饱和处理在M01[15:8]范围内。
③目标为右移处理、数据格式为32bit。操作数据在{M01,M00}上,结果仍在{M01,M00}上,不涉及旁路寄存器B0。
④目标为左移处理、数据格式为32bit。操作数据在{M01,M00}上,结果移到{M01[7:0],M00,B0[15:8]}上,饱和处理在M01[15:8]范围内。
目标为左移处理的部分右移操作会导致结果并不在操作数据的原位。因此如果一次部分右移操作无法完成左移要求时,必须将结果传输到部分右移操作指定的位置,才能再次进行此项移位操作。
图3-4-16为借用右移实现左移时源数据和结果数据的错位。
左移后如果需要饱和处理的,回位结果前需首先调用SAT进行饱和处理。
3.4.2.4.22分区(级)操作集合
2分区所有操作的目标寄存器为M10、M11、B1。在2分区操作有逻辑操作与寄存器传输。
对目标寄存器M10,逻辑操作:与M00进行与、或、异或逻辑操作,将M10中数据取反;寄存器传输操作:从M00输入数据、从M11输入数据,从B1输入数据。
对目标寄存器M11,逻辑操作:与M01进行与、或、异或逻辑操作,将M11中数据取反;寄存器传输操作:从M01输入数据、从M10输入数据。
对目标寄存器B1:寄存器传输操作:从M10输入数据。
表3-4-14 2分区各操作码操作意义说明
3.4.2.4.3 3分区(级)操作集合
3分区所有操作的目标寄存器为M20、M21、B2。在3分区操作有部分和计算操作与寄存器传输。
对目标寄存器M20,算术操作:与M10进行部分和计算操作;寄存器传输操作:从M10输入数据、从M21输入数据,从B2输入数据。
对目标寄存器M21,算术操作:与M11进行部分和计算操作;寄存器传输操作:从M11输入数据、从M20输入数据。
对目标寄存器B2:寄存器传输操作:从M20输入数据。
表3-4-15 3分区各操作码操作意义说明
3.4.2.4.4 4分区(级)操作集合
4分区所有操作的目标寄存器为M30、M31、B3。在4分区操作有部分和计算、冗余位消减处理与寄存器传输。
对目标寄存器M30,算术操作:与M20进行部分和操作;寄存器传输操作:从M20输入数据、从M31输入数据,从B3输入数据。
对目标寄存器M31,算术操作:与M21进行部分和操作;寄存器传输操作:从M21输入数据、从M30输入数据。
对目标寄存器B3:寄存器传输操作:从M30输入数据。
表3-4-16 4分区各操作码操作意义说明
在M30和M31上都附加了两个状态位:Zi:全零判别位、Ui:统一状态位,i=0,1。分不同情况,统一状态位分别具有进位、符号、溢出的意义。
3.4.2.4.5 5分区(级)操作集合
5分区就是旁路寄存器区。旁路寄存器区没有算术逻辑操作,只有大量的寄存器传输。4个旁路寄存器B0、B1、B2、B3是目标寄存器,源寄存器也都是旁路寄存器本身。由于传输组合很多,4bit操作码只能选取部分传输组合。
表3-4-17 5分区(旁路寄存器)各操作码操作意义说明
带*的指令为等待条件指令,在此处以系统时钟域缓冲器响应为等待条件。
3.4.2.4.6DP-PPC内核寄存器传输原子操作小结
图3-4-17为一般处理模式下12个内核寄存器传输的局部性示意图:
表示寄存器传输的目标寄存器,
代表各种可能的寄存器传输源端寄存器。
图3-4-17所示的寄存器传输都发生在临近寄存器之间,因此凡是只有若干个寄存器传输操作的指令所需的时钟间隔最小,不会成为DP-PPC时钟频率的限制因素。
3.4.2.5DP-PPC内核逻辑结构
3.4.2.5.1DP-PPC内核顶层结构框图
图3-4-18为DP-PPC内核顶层结构框图。
图3-4-18中内核主控器有两个主状态:闲置状态、执行状态。当内核处在闲置状态时,外围数据驱动控制模块依据搜索到的启动数据的代号,向内核主控器发送启动的独立程序段号,内核主控器据此转入执行状态,并通知外围数据驱动控制模块,外围数据驱动控制模块依据将按预先配置的驱动数据顺序向内核发送数据。当内核执行完独立程序段所有的指令,且输出数据送到外围后,内核主控器将内核转入闲置状态并通知外围数据驱动控制模块。此过程不断重复。
3.4.2.5.2省电模式:寄存器时钟选通
由于DP-PPC在DTSOC体系中数量最多,又可能工作在极高频率的时钟下,减少电源消耗是必须优先考虑的事。为了节省电源消耗,在DP-PPC内核的寄存器矩阵中每16bit寄存器的时钟都有选通控制:只在有效操作的目标寄存器上才会选通时钟脉冲。寄存器时钟的选通由其所属分区操作码决定,其中有一条是通用的:如果分区操作码为0(NOP)肯定会封锁该分区主路径寄存器的时钟。具体到单个主路径寄存器,当其分区操作码的目标寄存器没有指向到它时就会屏蔽其时钟一次。由于旁路寄存器属于两个分区,因此只有所属的两个分区操作码的目标寄存器都不是旁路寄存器时,才会屏蔽旁路寄存器时钟一次。
3.4.2.5.3高速指令处理逻辑
在DP-PPC内核的寄存器矩阵中,寄存器传输只在邻近的寄存器之间进行、算术逻辑处理只在与逻辑资源最靠近的寄存器(对)上进行、只进行限制进位延迟的部分和计算,因此操作内容本身不会是内核处理时钟的限制性因素。真正需要特别设计的是指令处理的过程,因为从锁存器阵列读出指令到12个寄存器会有很大距离,而且一条由5个分区操作码组成的指令的作用范围会涉及所有12个内核寄存器。因此为达到极致的高频处理性能,关键是指令译码的处理逻辑而不是操作的内容。
在较长距离传输信号,需要插入若干级缓冲以满足高速传输的要求,而在较分散的区域内送达控制信号,需要在几级缓冲中形成分叉,一方面满足达到分散目标点的各控制信号延迟均衡,另一方面为分别选通各16bit寄存器的时钟提供逻辑支撑。
图3-4-19为3级缓冲2级译码的DP-PPC内核指令处理逻辑。
图3-4-19很好地显示经过3级缓冲加上2级译码,3个分散目标点的控制信号延迟均衡且能工作在极高的工作频率上。图3-4-19仅绘出M11、M10、B1三个目标点的控制信号的多级传输逻辑及布局,其他9个目标点的多级传输逻辑与之相类似,并未绘出。
在高速指令处理逻辑内,第一级指令译码将5个分区的操作编码转换为4个主路径的中间编码。每个主路径的中间编码实现了同级3个寄存器操作的分离,也就是说每个主路径的中间编码由3个分离的子域码组成。这3个子域是主路径1号子域、主路径2号子域、旁路子域。在第一级指令译码中旁路分区操作码被消解,其指定的旁路寄存器操作被编入4个主路径的中间编码的旁路子域里。在第一级译码后,第一级缓冲就出现分叉:4个路径的一级缓冲被分别放置在各自路径就近的位置。第二级缓冲又有一次分叉:两个主路径子域码与旁路子域码的缓冲器被分别放置。第三级缓冲有第三次分叉:两个主路径子域码的缓冲器被分别放置。
这样的3级缓冲2级译码的指令处理结构极有利于提高工作频率。这种结构是修正的流水线结构,这种修正指出现了分叉,分叉是拓扑意义的。带拓扑分叉的流水线更不能出现反馈因素,而DTSOC体系规定DP-PPC内核的独立程序段只能是纯粹的顺序结构最重要的原因就是这种高速指令处理结构!这当然是DTSOC体系看到的是应用程序序列本身而不是一个个零碎的指令,从而能在不改变原程序算法和操作功能的前提下重组应用程序以适应DTSOC体系结构的特点下才有可能。这在第四章会有详细论述。
3.4.3数据整理模式下的DP-PPC的结构
在此模式下,DP-PPC的操作集中在数据的组合及拼接等数据整理类型任务,目标是①为输出数据到DTSOC体系通讯区准备恰当的组合数据、②为在非乘法数据处理子域内的多数据并行计算准备好数据环境、③为在乘法核心子域的乘法计算准备恰当的数据对。数据组合模式下的DP-PPC不能进行任何算术计算,所涉的逻辑处理也仅限于数据整理的用途。
数据整理模式下DP-PPC的结构与一般处理模式下基本相同,只是操作内容有些改变。数据整理模式下DP-PPC的外围结构与一般处理模式下完全相同,只不过必须禁止分支控制功能,此节不在重复论述数据整理模式下DP-PPC的外围结构。
3.4.3.1数据整理的基本类型
在DP-PPC层级,数据整理范畴的主要操作是数据组合、数据拼接两个类型,其他还有倒序排放处理等。DTSOC体系把以8bit为最小单位的数据整理称为数据组合,而逐位进行的数据整理称之为数据拼接。
图3-4-20为位于3、4级主路径寄存器2个16bit的数据组合逻辑。
图3-4-20显示数据整理模式下的DP-PPC实现数据组合的一个基本逻辑结构:在3级寄存器上的2个16bit数据或一个32bit数据通过3、4级之间数据组合逻辑,可以一步实现由8位cmb_sel(组合选择)选定的以8bit为单位的任意组合。
在两个数据之间进行数据拼接,需要几个原子操作才能完成,数据拼接的基本处理过程是将两个输入数据分别与常数1及常数2(常数2可能是常数1的取反值)相与,然后相或就可以得到两个数据的逐位拼接的结果。
3.4.3.2内核逻辑资源分布
数据整理模式下的DP-PPC与一般处理模式下的DP-PPC在寄存器定义和布局相同,只是分布在寄存器之间的逻辑资源有所区别。在数据整理模式下逻辑资源不涉及算术计算,在2、3级主路径寄存器之间重复安排了与或非逻辑、在3、4级之间还增加了图3-4-18所示的数据组合逻辑。这些逻辑资源与各种寄存器传输相结合就能高效实现各种数据组合或数据拼接。
图3-4-21为数据整理模式下DP-PPC内核逻辑资源分布图。
3.4.3.3数据整理模式下的控制参数寄存器
一般处理模式下的3个控制参数寄存器在数据整理模式下大致有效,当然有些位可能被忽略,有些位选择受限。数据整理模式下还多一个组合映射寄存器。图3-28所示的数据组合选择cmb_sel共有8bit,在实际使用时只会选取其中的几种组合使用,组合映射寄存器给出4种映射值分别由对应的4分区操作码引用。
表3-4-18 DP_CMBMAP组合映射寄存器说明
Bits | 名称 | 说明 |
[7:0] | DP_CMBMAP0 | 1号数据组合操作的cmb_sel映射值 |
[15:8] | DP_CMBMAP1 | 2号数据组合操作的cmb_sel映射值 |
Bits | 名称 | 说明 |
[7:0] | DP_CMBMAP2 | 3号数据组合操作的cmb_sel映射值 |
[15:8] | DP_CMBMAP3 | 4号数据组合操作的cmb_sel映射值 |
3.4.3.4数据整理模式下DP-PPC内核指令系统
从略
3.4.4延迟线模式下的DP-PPC的结构
并不是有了一般处理模式的DP-PPC加上交联DP-PPC的子域SDE就能构成的各式各样高效的多操作长流水线。如果把展开层程序在只由一般处理模式下的DP-PPC组成的数据处理子系统中展开,会发现在DP-PPC之间交换数据的某些特殊性会对DP-PPC协同造成很大影响。
3.4.3.1子域内中间数据的生命太长和复用问题
子域内中间数据是指在非乘法数据处理子域内在DP-PPC之间交换的数据,其产生和被处理都在非乘法数据处理子域内。
图3-4-22中图(1)为子域内中间数据的生命太长的一个实例。图(2)为子域内中间数据的复用的一个实例。图中○代表一个DP-PPC的微操作序列。
图3-4-22的(1)图显示,从a微操作序列产生两个子域内中间数据A0、A1,A1传给b微操作序列并经c、d微操作序列产生子域内中间数据D0,D0将传给e微操作序列,而A0直达e微操作序列并与D0一起被处理。子域内中间数据A0就有生命太长的特征,因为当同时产生的A1触发b、c、d串行微操作序列的过程中,A0必须等待对应的D0产生才能在e微操作序列中被处理,这就是所谓A0的生命太长特征。由于A0的阻塞,a微操作序列必须等待A0被消耗后才能产生新的A0、A1,因此展开程序的迭代间隔不能小于A0的生命周期。子域内中间数据生命太长直接影响了展开程序的效率。
图3-4-20的(2)图显示,从a微操作序列产生子域内中间数据A0,A0需传给b、c、d微操作序列,这就是所谓子域内中间数据的复用。显然在DP-PPC交联层级上复用子域内中间数据直接违反了DP-PPC协同的机制——数据驱动机制的唯一路径规则,是不允许存在的。图3-4-20的图(2)只是反映了一种客观的需要。
3.4.3.2DP-PPC工作在延迟线模式的意义
将DP-PPC设置在多指针延迟线模式下正是为了处理子域内中间数据的上述两个特殊问题。在延迟线模式下,DP-PPC内的寄存器(包括程序寄存器组)被配置为若干个延迟队列。
图3-4-23为插入DP-PPC延迟线以解决子域内中间数据的生命太长问题。
图3-4-23显示在A0到e微操作序列之间插入一个被配置为DEL-LINE(延迟线)的DP-PPC,A0通过延迟线换名为D1再送到e微操作序列。如果延迟队列的多级缓冲延迟正好等于b、c、d这3个微操作序列加总的延迟级数时,A0的生命太长对迭代间隔的影响将完全消除。
在DP-PPC之间不能将一个标识码的数据传输到多个DP-PPC中,否则会违反DTSOC的数据驱动机制的交联数据唯一路径规则。子域内中间数据的复用问题必须在DP-PPC内解决。对图3-30的(2)图所示的复用问题,一种方法是由a微操作序列产生3个同数值但不同标识码的子域内中间数据来解决(见图3-4-24(1))。但由于延迟不同(或生命周期不同)会造成迭代间隔过长,最好是插入DP-PPC延迟线,由DP-PPC延迟线以不同延迟间隙输出同数值但不同标识码的子域内中间数据(见图3-4-24(2))。
图3-4-24为解决子域内中间数据的复用的两种方案。
3.4.3.3DP-PPC的延迟线结构及配置
在延迟线模式下DP-PPC已经失去了特殊处理器结构,而变为一个特定功能的硬件模块。它没有了微型指令集,也没有短小程序的存放处,但有若干参数寄存器可供配置。
最多能输入4种标识码的子域内中间数据、输出4种标识码的子域内中间数据。延迟线模式下DP-PPC可提供16个16bit延迟寄存器,可组织成若干不同形态的独立延迟队列。延迟队列的移位是按系统时钟节拍进行,但由新的输入数据决定移位操作,这就意味着延迟队列的延迟时间=延迟级数×输入单次刷新时间。输入刷新对延迟线的控制作用体现了延迟线以不阻塞子域内中间数据为目标。
3.4.3.3.1DP-PPC的延迟线的未配置结构
DP-PPC的延迟线的原始结构或未配置状态是独立的4个4级延迟线(见图3-4-25)。
图3-4-25为未配置状态DP-PPC延迟线结构简图。
3.4.3.3.2DP-PPC延迟线的配置寄存器
在延迟线模式下DP-PPC为每个独立的4级延迟线提供一个配置寄存器,每个配置参数寄存器有5个分项,共有4个这样的配置寄存器对应del_line0、del_line1、del_line2、del_line34个延迟线。
表3-4-19 DP_DELi((i+1)号延迟线配置寄存器(i=0~3))分项说明
当独立的4级延迟线选择内部输入时,只有一个唯一的数据源:除了del_line0,只能是外部输入数据外,del_line1的内部输入只能是del_line0的输出,del_line2的内部输入只能是del_line1的输出,del_line3的内部输入只能是del_line2的输出。而延迟级数也是可以配置改变的。
3.4.3.3.3延迟线的组合配置
虽然4个延迟线的分别配置的,但从配置的内容看4个延迟线是可以组合起来实现各种延迟要求:
①两个及以上独立延迟线串接以加长延迟时间。如一个数据需7级延迟,可采用这样的配置:A,del_line0配置为(xx_0_3_n_1b),表示输入2bit代号为n的外部数据、延迟级数配置为3(4级延迟)、仅向后级延迟线输出。B,del_line1配置为(m_1_2_x_0b),表示输入前级延迟线(del_line0)的输出数据、延迟级数配置为2(3级延迟)、可向外部输出8bit标识码为m的数据。del_line0、del_line1这样的配置组合可实现图3-4-26(1)的延迟线。
②由一个输入数据衍生出延迟不同的多个不同标识码的输出数据。需要这样的组合来消解子域内中间数据的复用问题。比如一个外部输入数据需衍生出3种延迟分别为3、6、8级输出数据,可采用这样的配置:del_line0:(m1_1_2_n_1b),del_line1配置为(m2_1_1_xx_0b),del_line1配置为(m3_1_0_xx_0b),就可实现图3-4-25(2)的组合多出口延迟线。
图3-4-26为配置下延迟线组合形态。(1)延迟线0、延迟线1组合为加长为7级的延迟线。(2)延迟线0、延迟线1、延迟线2组合为多出口延迟线。
3.4.5微型存储器模式下的DP-PPC的简要结构
在一些DSP计算中,数据通道的带宽瓶颈往往是限制处理效率的关键因素,解决的办法之一是将计算中涉及的常数尽量存放在DP-PPC内(事实上一般处理模式下的DP-PPC就可以存放常数)。但如果常数的规模稍大且可能是轮流参与相同的计算处理(如FIR系数)时,将其分散于一般处理模式下的DP-PPC就不合适。解决的办法是将少许DP-PPC设置为微型存储器模式,使得DP-PPC能集中存放常数。
3.4.5.1固定的24×16单类型数据存储器
当DP-PPC工作在微型存储器模式下,DTSOC体系规定DP-PPC微型存储器只为一种常数固定提供可寻24个地址的存储空间。稍微复杂的安排——比如存放两种常数——并没有什么意义,因为在任何模式下DP-PPC都是可以存放常数的。
图3-4-27为微型存储器模式的DP-PPC为一个有24个地址的微型存储器。
3.4.5.2DP-PPC微型存储器的控制方式
DP-PPC微型存储器是不能交叉进行数据的读写操作的,因为其内部的控制方式很简单,不足以为内部数据提供维护,实际上也没有这种需要。DP-PPC微型存储器存放的常数可以在配置阶段写入,也可以在运行阶段写入。如果一个应用任务中,配属的DP-PPC微型存储器只能存放几分之一的某种类型常数,那么在运行过程中会分几次将该类型常数调入DP-PPC微型存储器内。
根据数据驱动机制,DP-PPC微型存储器的操作同样受控于输入数据。它接受的数据有两类:消息类数据、非消息类数据。消息类数据是依据初始化根配置时指定的一个标识码代号来识别,非消息类数据包括写入数据、触发读虚数据、读数据的地址,由经消息类数据配置的参数寄存器来进一步指定其意义。
DP-PPC微型存储器的参数寄存器可被消息类数据所修改。消息类数据的代号固定为3。参数寄存器有5个分项,下表详细说明。
表3-4-20DP_MEM(状态控制寄存器)分项说明
DP-PPC微型存储器处在只写状态下,输入数据类型只能是待存储的数据,在消息配置后,微型存储器写入数据的第一个地址是首地址,其后写入地址以自动加1的方式产生。
在只读状态下,起触发读操作的唯一输入数据有两种类型,这由状态位DP_MEM_DTYP决定。一种是在数据中直接给出了地址,称为地址类型数据。另一种是触发读虚数据,数据内容被忽略,其作用是触发一次读出数据操作。在配置为虚数据类型后,微型存储器读出数据的第一个地址是首地址,其后读出地址触发一次自动加1,当地址达到尾地址时,下一次读操作时地址将回到首地址。
3.4.6单精度浮点计算模式下的DP-PPC的概要
3.4.6.1单精度浮点计算协处理器的意义
单精度浮点计算模式下的DP-PPC相当于协处理器,其他DP-PPC调用该协处理器来计算单精度数绝对值、加法、减法(含比较结果)等,每调用一次仅执行其中的一种单精度计算。所有的数据包括单精度常数以及执行什么操作都要由其他类型的DP-PPC提供。
3.4.6.2单精度浮点计算模式下的参数寄存器
单精度浮点计算模式下的DP-PPC内,可以进行一元操作数取绝对值、二元操作数相加、二元操作数相减及二元操作数比较四种单精度处理。
表3-4-21DP_FPCON0(1号浮点计算控制寄存器)
表3-4-22DP_FPCON1(2号浮点计算控制寄存器)
Bits | 名称 | 说明 |
[5:0] | DP_FPCON_OPTH | 输出数据的8bit标识码之路径部分 |
[8:6] | DP_FPCON_OSYML | 单精度输出数据低16bit的1bit通道选择+2bit代号 |
[11:9] | DP_FPCON_OSYMH | 单精度输出数据高16bit的1bit通道选择+2bit代号 |
单精度浮点计算模式下的DP-PPC,有两类输入数据:控制参数、单精度数据。DTSOC体系规定两个输入通道的代号为3的输入数据均为配置控制参数,控制参数的第16位为0时低14bit参数写入1号浮点计算控制寄存器,而为1时低12bit参数写入2号浮点计算控制寄存器。
单精度浮点计算模式下的DP-PPC仅仅是一个协处理器,每次计算前如果控制参数各项有改变的话,必须先输入新的控制参数,然后才能输入单精度数据进行计算。
单精度浮点计算模式下的DP-PPC内核除了以上参数寄存器外,其他寄存器并不可见,复杂的浮点计算的控制也是被“固化”在内核。当然单精度浮点计算要尽量利用一般处理模式下DP-PPC内核的资源。单精度浮点计算模式对DTSOC而言一种嵌入结构,不涉及DTSOC体系原理,此处不给出细节。
3.4.7循环冗余码计算模式下的DP-PPC概述
在第一章中提到,IO交互的主要控制功能由DTSOC系统区来承担,具体说,就是由系统区外围的DP-PPC来承担。从通讯协议看,其中对循环冗余码CRC生成或解码,如果按常规处理器指令系统来计算,需要耗费大量计算和资源,甚至还不能满足要求。在系统区外围选取若干个DP-PPC,其内部可配置为异或计算矩阵,通过配置可以处理不同多项式CRC的并行计算,最大可支持32-bit的CRC计算。具体要求是在处理时钟下一次可并行计算8bit CRC,而在一个系统时钟间隔内能够计算32bit的CRC。CRC并行计算的逻辑早已有之,这里不再给出。
3.4.8DP-PPC的其他工作模式展望
除了以上几种工作模式外,还可以为DP-PPC设置其他工作模式,以适应一些特殊应用要求。需要为FIR滤波器、FFT、turbo code译码器、数字中频处理、视频标准H.264的CABAC译码器、高速串口的不同协议层处理等等这样一些高带宽复杂处理设置一些起加速作用的DP-PPC工作模式。本文论及的DP-PPC工作子模式的研究仅仅是一个开始。
3.5MP-PPC的结构
MP-PPC虽然采用PPC的名称,是为了与DP-PPC相对应。但MP-PPC内部并没有指令系统、程序锁存器阵列,只有一个8×8无符号乘法器。这个乘法器有两个双向口,可以从两个方向输入待乘数据对、输出乘数结果。MP-PPC与DP-PPC不同点是MP-PPC工作在单一的系统时钟域。
3.5.1MP-PPC顶层结构框图
图3-5-1为MP-PPC顶层结构框图。
每个MP-PPC有两个分离的双向数据口分别挂在两个独立的非乘法数据处理子域和乘法核心子域之间的级间双区型SDE上,可以更充分地体现乘法器的公共资源属性。
3.5.2输入输出处理模块
MP-PPC的输入输出处理模块位于双区型SDE与数据仲裁及缓冲模块之间,主要功能是:接受来自非乘法数据处理子域的待乘数据对,并对其标识码的代号进行识别,将对应的乘法结果输出标识码索引(2bit)送入缓冲队列,当乘法计算结果返回到输入输出处理模块后,依据标识码索引为乘法结果粘连上对应的标识码上传给同一个双区型SDE。
图3-5-2为输入输出处理模块。
在图3-5-2中,输入标识码识别模块从输入缓冲器中读取输入待乘数据对的代号域值与内部输入识别配置寄存器中4个代号域值相比较,产生2bit输出标识码的索引值,索引值被预存入到4级索引队列中,而输入数据则被送到输入仲裁及缓冲器中,当乘法计算结果被延迟返回输入输出处理模块后,会根据4级索引队列的队列头索引从输出标识码配置寄存器中取出对应的输出标识码并粘连在16bit乘法结果上,并将结果通过数据处理域级间双区型SDE返回非乘法数据处理子域。
在MP-PPC模块内有两个输入输出处理模块,分别挂在两个独立的双区型SDE上,且两个输入输出处理模块在逻辑上是相互隔离的:即来自那个输入输出处理模块的待乘数据对,其乘法结果只能从同一个输入输出处理模块中输出。
3.5.3输入仲裁及缓冲模块
在MP-PPC模块内,两个输入输出处理模块的输入待乘数据对都会送入输入仲裁及缓冲模块。如果同时有两个待乘数据对出现,需要输入仲裁及缓冲模块来仲裁先进行乘法计算的那一个数据对。仲裁的规则是轮流(Round Robin)规则,两个输入通道的静态优先权都是一样的,但当其中一个通道输入数据对被接受并计算后,下一次动态优先权就在另一个通道上。另外输入仲裁及缓冲模块必须按输入待乘数据对的来源返回乘法计算结果。
3.5.48×8乘法器
在MP-PPC内8×8乘法器的结构取决于系统时钟频率,如果系统时钟频率不高,8×8乘法器的结构就是乘法计算的组合逻辑,其输入级和输出级的寄存器实际上在输入仲裁及缓冲模块内。当系统时钟频率较高时8×8乘法器的结构可能需要插入2、3级流水线的方式。
四、DTAL语言与DTSOC应用程序开发
数字模板架构语言DTAL(digital template architecture language)是DTSOC体系的专用语言,DTAL程序能描述若干个独立运行的数字组件在DTSOC体系中的结构性分离状态,也能描述高带宽DSP类计算在DTSOC体系中的结构性并行状态。DTSOC应用系统的开发的核心是编写、评估、调试DTAL应用程序。
4.1数字模板架构语言DTAL概述
DTAL语言不能脱离DTSOC体系结构而存在,只有结合DTSOC体系应用程序开发过程才能详细地阐释DTAL语言系统,在此之前只能简要介绍DTAL语言的基本特点。
4.1.1DTAL是C语言的派生子集
DTAL程序应能通过DTSOC开发工具的结构编译,进而产生可执行的程序机器代码。DTAL程序必须直接表示DTSOC体系的结构因素,因为按DTSOC体系原理,DTAL应用程序是在DTSOC的不同层级、不同种类的可编程处理单元中展开分布的。这正是结构编译的意义:编译不仅是产生汇编程序,而且是产生在SFU、BPU和若干个不同类型PPC等各类执行主体中分配的汇编程序。DTAL是符合C语言语法规则的一个派生的子集,DTAL程序会在多个执行主体中展开,在DTAL程序中就不应有过于复杂的复合表达式,在各种语句中应尽量使用最基本的表达式,简言之,DTAL是嵌入了完备DTSOC结构限定描述的低阶的C。之所以这样定义DTAL语言特点,也是为了满足DTSOC体系面向C软件程序的关键要求。
DTAL程序视不同情况可采用2个文件后缀名,当需要在C平台上调试时,文件后缀为.c,当需要在DTSOC平台上进行DTAL完整性检查、结构编译、或者进行性能评估时,文件后缀为.dt。
4.1.2DTAL的结构描述规则
为符合C语法规则,只在DTAL程序的函数名、数据名中按一定规则表示DTSOC结构限定的,此外还可以特定预编译命令来对程序体的展开结构做出较为集合性的规定。
4.1.2.1特定预编译命令中的结构限定
从略
4.1.2.2函数名、数据名的结构描述
当需要在函数名、数据名中表示其结构属性,两个名称一律在最前头加上dtsoc_的前缀,当DTSOC的结构编译器搜索到dtsoc_xxxx形式的函数名、数据名时,就知道该函数名或数据名不是任意编制的,而是有DTSOC结构意义的。
4.1.2.2.1函数名的结构描述的意义
DTSOC体系的应用程序系统是一个混合的程序系统,其函数也有两种类别:一类是纯粹软件意义上的、无特殊限定的函数;另一类是有DTSOC结构意义的函数,这类函数称为结构性函数,结构性函数名称上表示了它是在DTSOC的某一个执行主体(PPC、BPU)上执行的程序体。
4.1.2.2.2数据名的结构描述的意义
在不同层级、区域(子域)之间以及以及DP-PPC之间交换的数据或消息都是有特定的DTSOC结构意义。DTSOC体系将有DTSOC结构意义的数据简称为结构性数据。
4.1.3DTAL程序的几个关键概念
4.1.3.1DTAL函数的异构调用
在DTAL程序中函数的调用有两种,一种是同构调用,就是说调用的程序和被调用的函数都由同一个处理器来执行。实际上纯粹的软件意义的函数调用隐含着同构调用的意义。另一种是异构调用,这是DTSOC体系下特有的概念,指在DTAL程序中调用的程序和被调用的函数是由不同的可编程处理单元执行的。异构调用实际上是两个可编程处理单元以消息传递与中断或消息响应的方式来执行的,在DTAL程序中需要通过函数名中结构描述来指明函数异构调用的性质。在DTSOC平台结构编译时会自动引入DTSOC数字模板系统中有关异构调用的程序模板。
4.1.3.2DTSOC体系的系统函数
从略
4.1.3.3DTAL的结构程序语句
在DTSOC体系的展开层子系统中,DTAL程序分散展开在4个子域4种PPC内,DTAL作为C语言的一个子集,由DTAL语言组成程序自然也要体现C程序顺序结构的特点。为了结构映射的目,4个子域PPCs的程序分别子函数化后,需要附加特别的DTAL结构程序语句来串接这些子函数以在C顺序语境中正确体现程序的功能意义及内在逻辑关系。DTAL结构程序语句反应了DTSOC体系部分硬件结构功能,在结构编译时不需要转换为汇编程序。
4.2DTSOC体系系统区的DTAL应用程序开发流程
虽然DTSOC体系的系统区也是一个复杂的硬件系统,但它是面向软件程序的硬件系统,是以有效地实现软件程序为目标的。这个有效性就是效率达标、多个独立数字组件并行、并不改变软件程序的功能意义和算法。从本节随后展开的论述中可以看到,整个系统区的DTAL应用程序开发都在高级语言C的顺序语境中进行的。
4.2大节主要是论述形成可在DTSOC平台下结构编译、进而产生可执行机器码的系统区DTAL结构化程序的开发流程,在此过程中重点是围绕DTSOC体系面向C程序的特点展开、同时插入编制DTAL的各种数字模板。最终形成系统区处理的DTAL程序应体现顺序性和结构性的统一:一方面DTAL应用程序含有完备的DTSOC结构属性的描述,可以通过DTSOC平台下的结构编译器等工具转化为可执行目标文件,另一方面DTAL程序系统也能在顺序语境的C调试平台上验证功能的正确性。
4.2.1定义独立并行的数字组件
在DTSOC应用系统的最初开发阶段,不需考虑执行的效率是否达标,只需要划分、定义构成DTSOC应用程序系统的若干数字组件。一个DTSOC体系的应用程序系统从顶层看都是由若干个数字组件组成的,系统主程序调用和控制的对象只能是数字组件。数字组件应是定义清晰、功能完整的,同时数字组件必须具有DTSOC的结构意义,即数字组件必须是以一个BPU承担后台程序部分且为数字组件的主控器,而其他部分程序必须在DTSOC体系的展开层子系统中展开、由多个不同类型可编程处理单元来协同执行的。数字组件之间应该界限分明,应没有直接的实时交互关系,数字组件之间可能存在的间接数据关系只能由系统主程序来管理且不会占用系统主程序过多时间。可以从应用系统的顶层开始,就可以分开来考虑各个数字组件的编程和验证。
4.2.2编写具文档性的C程序
在初步定义了组成DTSOC应用程序系统的数字组件后,就可以开始DTSOC应用程序的编写了。第一步是编写由系统主程序和若干数字组件函数组成的C程序。在编写DTSOC应用系统的C程序时,并不需要关心其在DTSOC体系中的实现细节,即不需要考虑处理的速率是否达到要求,只需要在通用C验证工具上验证应用程序的算法或功能的正确性。
4.2.2.1C程序源码的意义
首先编写C源程序代码的意义是:在产生最终可结构编译的DTAL程序的整个流程中,C程序要起到程序文档的作用、对后面的DTAL程序的开发起到导引、约束的作用,同时也是DTSOC体系面向C程序的特性的应有之义。
DTSOC体系规定具文档性的C程序源码由系统主程序和若干数字组件函数组成,也是有一个大致的DTSOC体系的结构意义:系统主程序(包括所有非数字组件函数)将分配给系统配置单元SFU,数字组件函数程序将会分配给DTSOC系统区第二层后台处理单元BPU及所辖的第三层展开层子系统区域。
4.2.2.2数字组件函数的模板
DT4-1数字组件函数的模板
void dtsoc_digcmp_xxxx(void);
DTAL语言中规定用前缀保留词dtsoc_digcmp_来表示DTSOC应用系统中的数字组件函数。其中xxxx代表可任意编写的字符串部分,digcmp是digital component的缩写。数字组件函数是参数列表为空、无返回的结构性函数。无返回要求很重要,这表示了系统主程序可以与异构的数字组件并行执行。
4.2.2.4系统主程序的构成
简要说在SFU内的系统主程序包括外置flash控制程序、CPU接口控制程序、系统级建立函数及应用系统主程序。
4.2.3将数字组件程序分解为后台部分和展开部分
当数字组件的C程序编写验证完成后,接下来的开发就是围绕将数字组件的C程序向完全的DTAL程序转换进行。由于DTAL程序也是遵循C语法规则,这个转换过程可以分几步完成,称为C程序的逐步DTAL化,而且每一步变换都以前一步程序验证的输出数据为基准进行功能性验证。
4.2.3.1DTSOC体系下程序展开的含义
在DTSOC体系下,程序展开等同在一系列由于各自内部配置而自然联系在一起的PPCs中形成多指令级操作的流水线。比之单指令的各个操作成分的流水线,这是一种更高层级的且可灵活配置的流水线。DTSOC的程序展开是一种结构性加速执行的细节,并不改变原C程序本身的功能意义及内在逻辑关系。
4.2.3.2以注释方式划分后台程序、展开程序
作为文档性C程序向具有完备DTSOC结构意义的DTAL程序转换的第一步,首先以注释方式将数字组件C程序划分为后台执行部分和需展开的部分。后台程序段是分配给一个BPU的,展开程序段则是要分散到DTSOC体系下展开层子系统中若干个各类型PPC之中。
4.2.3.3改写后台程序、展开程序交叠部分
用C语言编写的数字组件程序允许各种复合表达式,有些复杂表达式处可能无法区分其是属于后台程序还是展开程序,需要在不改变原逻辑关系的前提下,修改C程序中后台部分和展开部分出现的交叠的代码段,以使两部分代码完全分割开。
for或while循环条件语句暂不划分,但要for()或while()语句中的条件表达式简化到最基本的形式,而循环体内程序仍应进行后台部分、展开部分的划分。
4.2.4展开程序的函数化
在注释划分划分后台程序、展开程序之后,下一步工作是将所有零散的展开程序段整合到若干个展开类型成员函数内,进而依照DTSOC程序模板将所有展开成员函数编入单一的展开类型复合函数。这样数字组件函数的本级程序部分实际上只剩后台程序+异构调用的展开程序部分,由于被异构调用的展开程序不会进入调用它的执行主体BPU中执行,因此可以认为在展开程序函数化后的数字组件函数本级程序就是后台程序,在结构编译时都会转换为BPU的程序。
4.2.4.1整合若干展开类型成员函数
注释方式划分形成的所有零散展开程序段将被整合到若干个展开类型复合函数内。凡是有紧密的逻辑关联、频密的数据交换的零散展开程序段应被合并编为一个成员函数。DTSOC体系规定在展开类型复合函数的集合中,各展开类型成员函数之间没有直接逻辑关联性、也没有直接的数据交换,它们之间的间接关系(包括间接的数据交换)是通过后台主程序来切换的、且这种间接关系不能频繁占用BPU的时间。
4.2.4.2编写单一展开类型复合函数
把数字组件函数的所有展开类型复合函数归拢在一个展开类型复合函数内,把一个数字组件的所有展开程序归拢在一个展开类型复合函数内为DTSOC平台提供一个分析的框架。数字组件程序被改写为后台程序和后台主程序多次异构调用的单一展开类型复合函数,实际上每次调用都可能执行的是相对独立的不同处理内容(某个成员函数)。DTSOC平台将按照预先给定程序模板的,自动产生承担后台程序的BPU与承担展开程序的PPCs子系统之间的消息交互程序。
图4-1为数字组件程序分解及展开程序函数化过程示意图。
图4-1中,图(1)表示数字组件函数的C程序原码;图(2)表示注释划分为后台程序部分、展开程序部分;图(3)表示将零散的展开程序段合并为若干成员函数;图(4)表示所有成员函数被归拢在一个展开类型复合函数内。
4.2.4.3展开类型复合函数、成员函数的程序模板
4.2.4.3.1展开类型复合函数的模板
DT4.2展开类型复合函数的函数头模板
void dtsoc_sprd_xxxx(char memb_sel)
dtsoc_sprd_是DTAL语言为展开类型复合函数这种DTSOC的结构性函数定义的前缀保留词,sprd是spreading的缩写。展开类型复合函数也都是无返回类型函数,展开类型复合函数的唯一的形参memb_sel表示成员函数选择。
DT4.3展开类型复合函数的构造模板
void dtsoc_sprd_xxxx(char memb_sel)
{
if(memb_sel==0){dtsoc_memb_xxx0();}
else if(memb_sel==1){dtsoc_memb_xxx1();}
else if(memb_sel==k){dtsoc_memb_xxxk();}
}
4.2.4.3.2展开类型成员函数的模板
DT4.4展开类型成员函数的函数头模板
void dtsoc_memb_xxxx(void)
dtsoc_memb_是DTAL语言为展开类型成员函数这种DTSOC的结构性函数定义的前缀保留词,memb是member的缩写,展开类型成员函数为无返回类型函数,其参数列表为空。在后台主程序与展开类型成员函数之间交互的消息数据将在后台程序中定义,在展开类型成员函数内应申明为外部定义数据,在DTSOC体系中,结构性函数唯一属于一个上层程序,因此通过把上层程序中定义的结构性数据作用域延伸到结构性函数中(申明为外部定义数据),以此种特殊的结构性数据为媒介来实现异构调用的主体程序与被调用的结构性函数交换数据(消息)并没有什么不便。
4.2.5展开类型成员函数的DTAL结构化处理
要通过DTSOC结构编译器,还需要将初步成形的展开类型成员函数程序转换为具有完全结构描述的DTAL程序。
4.2.5.1展开类型成员函数封装了DTSOC的主要结构因素
在DTSOC系统区应用程序中,展开类型成员函数是唯一能在展开层子系统中配置的函数类型。与系统区的展开层子系统相比,SFU、BPU的应用程序没有多少结构因素,和常规的软件程序更相像。系统区展开层子系统是DTSOC体系真正实现高带宽实时数字信号处理、多个并存的独立数字组件功能的载体。DTSOC体系下,高带宽DSP处理实现的主要结构性方式是数据并行、操作并行。在展开层子系统中数据并行是指安排多个BDM-PPC以及TDM-PPC的多个数据通道来并行吞吐数据,甚至可以安排多个同功能的成员函数并行工作来成倍增加数据吞吐率。操作并行就是以多个DP-PPC、MP-PPC协同形成多操作长流水线。
真正为DTSOC体系独具的结构因素主要在展开层子系统中:数据管理和数据处理的分离、4个子域和4种类型的PPC、基于标识码的数据软交换、协同多个PPCs的数据驱动机制等。总之,DTSOC体系的主要结构性描述被归集到或被封装在展开类型成员函数内。当然在后台程序中也有两种结构性描述,一种是在BPU与展开层子系统之间的交互的数据(消息),由于作用域规则应在后台程序中定义。另一种是在两个展开类型成员函数之间交换数据用的交换类型存储空间,由于交换类型存储空间的控制权需要后台程序的控制切换,交换类型存储空间的结构性数据应定义在后台程序中。
4.2.5.2展开类型成员函数的资源定义
在编写具有完全结构描述的展开类型成员函数DTAL程序前,首先确定预期使用的DTSOC体系的展开层子系统的资源。
表4-1任务函数需定义的展开层子系统的资源分类列表
图4-2为展开类型任务函数的5类展开层子系统资源布局。
一个展开类型成员函数必有且仅有一个TDM-PPC,根据功能要求,可选择若干个BDM-PPC、数据通道、DP-PPC、MP-PPC。其中TDM-PPC、BDM-PPC可与其他展开类型成员函数共同使用。而数据通道、DP-PPC、MP-PPC只能为一个展开类型成员函数专有。
在DTSOC体系下可通过数据并行、操作并行的结构性方式来达到高带宽DSP处理的效率要求。针对高带宽DSP处理,在展开层子系统的5类资源中,BDM-PPC、TDM-PPC和数据通道属于数据并行类资源,DP-PPC、MP-PPC属于操作并行类资源(见图4-2)。
4.2.5.3展开类型成员函数中的结构性子函数、数据定义
4.2.5.3.1PPC子函数的定义
展开类型成员函数有四类PPC子函数:TDM-PPC的子函数、BDM-PPC的子函数、DP-PPCs的集合性子函数、MP-PPC的子函数。具有完备结构描述的展开类型成员函数DTAL程序中,在各种成员函数本级的结构性数据申明之外,除了DTSOC程序模板允许的特例,所有程序内容都应装入4类PPC子函数中。
各类PPC子函数的目标是在C语言顺序语境中对展开类型成员函数的C程序进行结构性划分,由于划分给每个PPC的程序段在顺序语境的C程序原码中分散多处,因此这些PPC子函数往往是若干个子程序的集合,在PPC子函数内这些子程序在结构上依然保持独立,很容易以调用PPC子函数的形式将这些子程序重新插入原C程序中,而且没有改变原程序的内在逻辑关联。最终体现了DTAL程序的顺序性与结构性的统一。
4.2.5.3.1.1BDM-PPC子函数
DT4.5BDM-PPC子函数的函数头模板
void dtsoc_bppc_xxxx(char thrd_sel)
dtsoc_bppc_是DTAL语言为BDM-PPC子函数这种DTSOC的结构性函数定义的前缀保留词。BDM-PPC子函数为无返回类型函数,且只有一个char类型的参数thrd_sel,其意义是微线程选择。在BDM-PPC子函数中为每一个管理级间数据的管理安排一个微线程,在展开类型成员函数本级通过参数thrd_sel选择调用那个微线程。当然在微线程中也可以有几个子程序的集合,进一步通过展开类型成员函数本级定义的某个结构性数据来选择微线程下那个子程序。
DT4.6BDM-PPC子函数的构造模板(略)
4.2.5.3.1.2TDM-PPC子函数
DT4.7TDM-PPC子函数的函数头模板
void dtsoc_tppc_xxxx(char inttpy_sel,char thrd_sel)
TDM-PPC子函数有两个参数(char inttpy_sel,char thrd_sel),其中inttpy_sel表示中断类型的选择,在初始化配置完成后,TDM-PPC的所有程序都是中断服务程序;thrd_sel表示微线程选择。TDM-PPC有三种中断类型:通道中断(inttpy_sel=0)、BPU消息中断(inttpy_sel=1)、其他种类子函数消息中断(inttpy_sel=2),表明中断类型及属下的子程序选择,对DTSOC的结构编译是必要的指引。
DT4.8TDM-PPC子函数的构造模板(略)
4.2.5.3.1.3DP-PPCs子函数
void dtsoc_dppcs_xxxx(char sub_sel)
DP-PPCs子函数只有一个char类型的参数sub_sel,其意义是子程序选择,该参数是为了在顺序语境能将分散多处的非乘法数据处理类程序归拢在一个集合性的DP-PPCs子函数下。DP-PPCS子函数是一个特别的结构性函数,其程序不是在一个DP-PPC中配置,而是在相邻的多个DP-PPC之中分布配置。结构编译器应能自动把DP-PPCs子函数程序在多个DP-PPC中进行进一步的分割。
DT4.10DP-PPC子函数的构造模板(略)
4.2.5.3.1.4MP-PPC子函数
DT4.11MP-PPC子函数的函数头模板
void dtsoc_mppc_xxxx(char sub_sel)
MP-PPC子函数只有一个char类型的参数sub_sel,其意义是子程序选择。MP-PPC子函数的结构没有什么特别的考虑,只是为了把展开类型成员函数中由一个MP-PPC轮流执行的若干个乘法计算归集在一个MP-PPC子函数下。
4.2.5.3.2结构性数据的定义
4.2.5.3.2.1在数字组件函数本级结构性数据的定义
在数字组件函数本级定义的结构性数据是指展开类型成员函数与数字组件后台主程序之间传递的跨层组件消息(数据)以及用于成员函数之间交换数据的交换类型存储空间。这些结构性数据需在数字组件函数本级定义,在成员函数内用C语言关键词extern将此类结构性数据引入。
4.2.5.3.2.1.1组件消息
DT4.12数字组件函数本级定义消息的数据模板
int dtsoc_cmpmesg_xxxx;
DT4.13数字组件函数本级定义消息的数组模板
int dtsoc_cmpmesg_xxxx[k];
dtsoc_cmpmesg_是DTAL语言为组件消息这种DTSOC的结构性数据定义的前缀保留词,cmpmesg是component message的缩写。如果一个组件消息需要连续多个int表示,则使用数组定义。
4.2.5.3.2.1.2交换类型存储空间
DT4.14数字组件函数本级定义交换类型存储空间的数组模板
int dtsoc_swispa_xxxx[k];
dtsoc_swispa_是DTAL语言为交换类型存储空间这种DTSOC的结构性数据定义的前缀保留词,swispa是switching space的缩写。交换类型存储空间是为两个展开类型成员函数之间交换数据而设置的。在数字组件函数本级定义交换类型存储空间的原因是任何两个展开类型成员函数都是相互不可见的、不能自行交换数据的,需要通过BPU的消息中断响应程序中切换交换类型存储空间的控制权来实现两个展开类型成员函数之间数据交换。
4.2.5.3.2.2展开类型成员函数本级结构性数据的定义
在展开类型成员函数本级定义的结构性数据指在TDM-PPC、BDM-PPC、DP-PPCs、M-PPC四种不同类型PPC之间传输的数据或消息,所有在展开类型成员函数本级定义的数据都是结构性数据。
4.2.5.3.2.2.1缓冲数据
DT4.15缓冲数据模板
int dtsoc_buf_chi_xxxx;
在TDM-PPC与DP-PPCs之间交换的数据称为缓冲数据。dtsoc_buf_chi_是DTAL语言为缓冲数据这种DTSOC的结构性数据定义的前缀保留词,buf是buffer的缩写,chi是channel i缩写,斜体i指明该缓冲数据的TDM-PPC传输通道号。
4.2.5.3.2.2.2管理级间数据
DT4.16管理级间数据模板
int dtsoc_mngvar_xxxx;
在TDM-PPC与BDM-PPC之间交换的数据称为管理级间数据。dtsoc_mngvar_是DTAL语言为管理级间数据这种DTSOC的结构性数据定义的前缀保留词,mngvar是managing variable的缩写。
4.2.5.3.2.2.3处理级间数据
DT4.17处理级间数据模板
int dtsoc_prsvar_xxxx;
在DP-PPC与MP-PPC之间交换的数据称为处理级间数据。dtsoc_prsvar是DTAL语言为处理级间数据这种DTSOC的结构性数据定义的前缀保留词,prsvar是processing variable的缩写。
4.2.5.4展开类型成员函数的DTAL结构化转换的步骤
能通过结构编译是展开类型成员函数程序DTAL化完成的标志,从C程序原码通过划分和少许的函数化改写形成的展开类型成员函数程序还需要几个步骤的较大的改写才能完成向DTAL转换的处理。
4.2.5.4.1拆解所有的复合表达式
拆解在程序体或程序语句中的复合表达式,利于展开类型成员函数程序在多个、多种类PPC中分配,也是DTAL作为嵌入结构描述的低阶C的应有之义。
4.2.5.4.2划分数据管理程序部分、数据处理程序部分
依据展开层子系统的数据管理域、数据处理域分立结构,在展开类型成员函数的DTAL结构化过程中,先要划分数据管理部分、数据处理部分与之对应。
4.2.5.4.3确定使用的DTSOC资源
根据处理效率的要求、降阶后程序的长度以及程序本身的可并行度分析综合确定展开类型成员函数使用的DTSOC系统区展开层子系统的资源列表。一个展开类型成员函数必有且仅有一个TDM-PPC,根据功能要求,可选择若干个BDM-PPC、数据通道、DP-PPC、MP-PPC。
4.2.5.4.4定义所有结构性PPC子函数
按照4.2.6.3节的规定定义所有结构性PPC子函数,此时的PPC子函数仅有一个函数头。
4.2.5.4.5在函数程序中划分分属各PPC子函数的多个程序段
以注释方式将展开类型成员函数程序进一步分解为若干段,并标明其归属的PPC子函数名。
4.2.5.4.6添加结构性数据定义
对展开类型成员函数程序进行归属PPC子函数的划分后,在不同类型PPC之间传输的结构性数据就清晰起来,应显式添加此类结构性数据定义,并用关键词extern引入相关的数字组件后台程序中定义结构性数据。
4.2.5.4.7编写所有PPC子函数的程序内容
按DTSOC程序模板,将分散在展开类型成员函数程序多处的各个PPC子函数归拢在一起形成PPC子函数的程序内容,这些PPC子函数的程序结构应保留原多个程序段的独立性,方便以调用的形式重新将它们插入到顺序语境的展开类型成员函数DTAL程序中。
4.2.5.4.8将成员函数中所有程序段替换为子函数调用
将展开类型成员函数本级,把所有程序段逐个替换为PPC子函数的调用,这样展开类型成员函数就变成由结构性数据定义或申明加上若干个PPC子函数调用的语句组成,加上各个PPC子函数程序,整个展开类型成员函数程序的DTAL结构化转换就基本定型了。
4.2.5.5展开类型成员函数的DTAL程序中循环、分支的处理
C程序基本结构是顺序结构,在特定的控制语句下还可加入循环结构及分支结构。按DTSOC体系的程序模板编写的PPC子函数很好解决了C程序顺序语境中表示DTSOC结构属性的问题。在多个不同种类PPC中分布的展开类型成员函数DTAL程序中表示循环结构及分支结构是DTSOC体系面对的主要挑战。
4.2.5.5.1DTAL展开程序的限制循环结构
在展开类型成员函数程序中出现的循环结构内一般都是包含不同种类PPC子函数引用,因此循环条件语句是不能被划分到任何PPC子函数内,这是展开类型成员函数DTAL程序的一个特例,是展开类型成员函数的程序模板允许的。在展开类型成员函数层级的DTAL程序只支持限制性的for()、while()循环条件语句。
4.2.5.5.1.1for()语句的模板和嵌入处理规则
DT4.18for()条件语句的限制模板
for(dtsoc_itervar_xxxx=0;dtsoc_itervar_xxxx<=bounval;dtsoc_itervar_xxxx++)
特许在展开类型成员函数本级程序出现的for循环条件语句中的迭代变量是DTSOC体系的结构性数据,dtsoc_itervar_是DTAL语言为这种迭代变量定义的前缀保留词,itervar是iterative variable的缩写。for条件语句的模板中边界值bounval必须是整型常量值。之所以规定这样的限制模板,一是规定for语句中的循环条件处理与循环体的程序无关,二是限制在最简单的循环条件处理范畴,方便循环条件处理在可执行代码级被嵌入到需引用循环变量的PPC子函数内。
4.2.5.5.1.2while()语句的模板和嵌入处理规则
DT4.19while()条件语句的限制模板
while(dtsoc_itervar_xxxx)
DTAL语言规定展开类型成员函数本级程序中的while条件语句中只能包含迭代变量本身,while()语句循环条件处理必然与循环体的程序有关。DTAL展开程序的while()循环语句,测试循环条件一般在DP-PPCs子函数内,为了提高并行度,在终止循环时会有过头处理,再次调用此循环时,必须重新设置所有参数,不能引用前次调用时的任何处理结果。
4.2.5.5.2消息机制与DTAL展开程序的分支控制方式
4.2.5.5.2.1展开类型成员函数的消息机制
展开类型成员函数DTAL程序中主要的启动、终止、切换及部分较高层级的分支等控制关系是借助消息交互实现的,而各种消息是以对应的结构性数据形式定义。
图4-3为展开类型成员函数内消息交互类型。
从图4-3中可以看出TDM-PPC在展开类型成员函数内消息交互中起到中枢作用,TDM-PPC必是其中任何消息交互的主体或中介。
DT4.21展开类型成员函数中两级消息传递的示例(略)
4.2.5.5.2.2以消息机制实现成员函数内跨PPC子函数的分支控制
还不是由PPC子函数组成的成员函数C程序原码中分支控制使用的是常规的控制语句,并不会使用消息传递。实际上在对成员函数程序进行PPC子函数划分时会发现这种跨PPC子函数的分支控制会造成阻碍,因此在展开类型成员函数程序结构化处理前,如果碰到跨PPC子函数的分支控制,需要先添加消息类结构性数据的定义,并依据程序模板编写消息产生、响应的程序语句,然后才能对成员函数程序进行PPC子函数划分。与循环条件处理无法在顺序语境的DTAL程序中划归PPC子函数不同,所有跨PPC子函数的分支控制程序最终会被纳入到PPC子函数中。
4.2.6数字组件后台程序的结构化处理
在完成展开类型成员函数的DTAL结构化处理后,接下来转回到对数字组件的后台程序进行结构化处理。某个数字组件的后台程序的结构化处理有两方面内容,一是所属的展开类型成员函数的DTAL结构化处理的延伸需要。二是需要在数字组件的后台程序中添加一个系统函数:建立函数。当后台程序调用一个成员函数时必须通过进入建立函数来调用,一个成员函数发回结束调用消息时,也必须经过建立函数的记录处理。
4.2.6.1展开程序结构化的延伸
4.2.6.1.1定义数字组件函数层级的结构性数据
在数字组件函数层级定义的结构性数据有两类:一是在后台程序与展开类型成员函数之间交互的消息;二是交换类型存储空间,当数字组件的两个成员函数需要交换数据时,必须在两者共同的调用者——后台程序中定义交换类型存储空间而不是在其中一个成员函数中定义。
4.2.6.1.2交换类型存储空间的管理
根据展开类型成员函数之间不能发生任何直接关系的规定,在任何时候交换类型存储空间都只能属于一个展开类型成员函数。在DTSOC体系中,采用授予/释放的互动管理模式来切换交换类型存储空间控制权:数字组件后台程序(BPU为执行主体)负责初始或已释放交换类型存储空间的授权控制,而展开类型成员函数程序(BDM-PPC为执行主体)负责其已获授权交换类型存储空间的释放控制。这种分工互动模式能保证成员函数之间可靠地实现数据交换。
4.2.6.1.3多个成员函数之间交换数据管理的示例
图4-4显示有一个数字组件的4个成员函数在执行一项功能时构成了3个数据交换关系,并涉及到6个交换类型存储空间的切换管理。在数字组件的后台程序中需要添加6个交换类型存储空间的结构性定义并对它们的控制权进行管理。
图4-4为4个展开类型成员函数之间的数据交换。
4.2.6.2添加建立函数
在数字组件的后台程序中添加建立函数,目标是安排成员函数复用DTSOC资源。展开类型成员函数是DTSOC体系的结构性函数,是可以建立或撤销的。
在数字组件层级设立的建立函数为每个成员函数都设立一个配置状态记录:
DT4-23成员函数的配置状态记录数据结构
typedef struct
{
char establish;//建立状态:分别表示未建立、已建立、撤销状态
char reserve;//后备存储状态:表示在BPU存储器中有无备份
int baseaddr;//成员函数后备存储基地址
dtsoc_memb_config*mc;//成员函数覆盖记录
}dtsoc_memb_st;
当需要调用某个成员函数就需要查询其配置状态记录(dtsoc_memb_st类型数据),首先查询主状态establish。如果表示成员函数尚未建立,必须将所有代码加载执行一遍才能调用。如果establish表示成员函数已建立,可以直接调用。如果establish表示已被撤销,在再次建立成员函数时,为了尽量减少再次建立时加载、配置占用的时间,只需对被覆盖部分进行重新加载。为此在DT4-23定义的数据结构dtsoc_memb_st(成员函数配置状态记录)中进一步定义了一个数据结构dtsoc_memb_config,它是成员函数的二级展开配置状态表,详细记录了一个成员函数拟使用的各种DTSOC资源中被其他成员函数覆盖的情况。
表4-2成员函数的二级展开配置状态表
图4-5为定量记录成员函数的存储空间被覆盖的状态对重新建立的影响。
(1)成员函数首次建立时需配置程序、数据所有分配空间。
(2)在成员函数撤销状态下记录被覆盖的程序、数据部分空间。
(3)再次建立成员函数时只需按记录配置部分被覆盖的程序、数据空间。
4.2.7系统主程序的结构化处理
在系统主程序中的结构化处理与数字组件的后台程序的结构化处理很相似。以下参照后台程序的结构化处理简要说明系统主程序中的结构化处理。
4.2.7.1定义数字组件函数层级的结构性数据
一是在系统主程序与数字组件函数之间交互的消息称为系统消息,由于系统消息在两个执行主体SFU、BPU之间传递,因此也是结构性数据。
DT4.24系统消息的单变量数据模板
int dtsoc_sysmesg_xxxx;
DT4.25系统消息的数组模板
int dtsoc_sysmesg_xxxx[k];
dtsoc_sysmesg_是DTAL语言为系统消息这种DTSOC的结构性数据定义的前缀保留词,sysmesg是system message的缩写。
二是系统层级的交换类型存储空间,在两个数字组件之间交换数据,虽然最后会落实到两个分属不同数字组件的成员函数之间切换控制权,但必须在两者共同的调用者——系统主程序中定义交换类型存储空间。系统层级的交换类型存储空间的程序模板与数字组件的交换类型存储空间相同。
4.3.7.2系统层级的交换类型存储空间的管理
系统层级的交换类型存储空间的管理与数字组件的同类管理基本相同,不过授权的主体改为SFU。
4.2.7.3添加建立函数
在系统主程序中添加建立函数,目标是安排数字组件复用DTSOC资源。数字组件函数是DTSOC体系的结构性函数,是可以建立或撤销的。只有在DTSOC架构内建立的数字组件函数才是可以调用的。系统建立函数的内容与数字组件建立函数基本相同,只是数字组件函数的二级展开配置状态表比展开类型成员函数的二级展开配置状态表多了BPU一项资源,且所涉资源TDM-PPC可以有一个以上。
4.2.8DTSOC的数字模板小结
DTSOC数字模板有三种类型:框架模板、结构性函数及结构性数据的定义模板、程序模板,它们在为编写DTSOC的DTAL应用程序提供仿照的模板的同时,也对DTAL应用程序起到指引、规范的作用,数字模板也是DTSOC结构编译器进行识别、结构定位的基础。必须依据DTSOC数字模板给出的框架和路径,仿照给出数字模板示例编写DTAL应用程序,才能编写出能通过结构编译的DTAL应用程序。
4.2.8.1框架模板
DTSOC体系规定所有的DTSOC应用程序系统都必须在四层结构的框架下编写,即系统主程序——数字组件函数/后台程序部分——展开类型复合函数/成员函数——各种类型PPCs子函数,这就是DTSOC的框架模板,与DTSOC系统区的三层结构以及展开层的分区分类特点相对应。
4.2.8.2定义模板
DTSOC体系给出了结构性数据和结构性函数定义模板。DTAL程序的结构限定描述主要就体现在结构性函数、结构性数据的定义中。
4.2.8.3程序模板
4.2.8.3.1约束性程序模板
4.2.8.3.1.1具体到表达式的程序模板
从略
4.2.8.3.1.2结构限定的程序模板
DTSOC体系规定所有同类型的处理都被集中在一个程序区域中,比如不在(新上传消息接收集中模块)中插入上传消息处理内容,以及不在(条件调用成员函数集中模块)中插入接收上传消息的内容。这样限定的目的是利于结构编译器的结构处理。
4.2.8.3.2参考性程序模板
从略
4.3DTSOC最小集成开发工具概述
从略
本发明实施例提供了一种片上数字模板系统DTSOC,其是一种面向C程序的通用可编程系统,易于开发,并行处理效率高,依据本发明实施的集成电路产品可作为各种复杂电子系统的基础部件(如DSP、FPGA的作用)。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括上述全部或部分步骤,所述的存储介质,如:ROM/RAM、磁盘、光盘等。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种片上数字模板系统DTSOC,是一种面向C程序的可编程系统,其特征在于,所述片上数字模板系统DTSOC包括输入输出IO接口电路、通讯区和系统区,其中,
所述通讯区,位于所述系统区外围,并与所述IO接口电路相连,用于分组配置IO状态的逻辑,为外设与所述系统区交换数据提供双向的传输、缓冲的通道;所述通讯区的多模式缓冲为所述系统区以编程数据处理的方式处理IO接口电路的时序控制提供缓冲、映射及转换支持;
所述系统区,用于通过所述通讯区、所述IO接口电路与外设建立各种交互关系,对IO交互进行控制并承担数据处理功能,其中,所述系统区包括一个系统配置单元SFU、多个后台处理单元BPU、展开层子系统和数据软交换中心SDE,其中:
所述系统配置单元SFU,用于接受来自外部中央处理器CPU的指令和数据,或者按CPU的指令向CPU上传数据;DTSOC的各层级、各区域的配置代码通过所述SFU从外部非易失程序存储器中读取;所述SFU也是DTSOC系统级程序的执行主体;
所述后台处理单元BPU,用于在所述SFU配置、控制下成为一个或几个独立应用功能的次级主处理器,执行应用功能中被编为后台程序的部分,同时会负责其所辖的下一层多个可编程处理元PPC的配置、控制、调度;
所述展开层子系统,包含多个不同类别可编程处理元PPC,皆属处理器架构,有微型指令集,可存放程序,通过执行其规定类功能范围内、指令集范围内编制的程序来承担计算、传输、存储、控制,应用程序会在该层中多个PPC中展开分布,为用于实现高带宽实时数字信号处理、多个并存的独立数字组件功能的载体;
所述数据软交换中心SDE,用于在DTSOC系统中连接所述SFU、所述BPU和所述PPC,是按照附加在数据上的标识码的指引来自动执行在SDE多个数据口上的任意点对点的数据交换,在所述SDE交换的数据是等位宽的。
2.如权利要求1所述片上数字模板系统DTSOC,其特征在于,所述系统区内并无全局总线:所述SDE是在DTSOC系统下不同层级、相同层级的处理单元之间建立联系的渠道,在DTSOC系统中分布的多个存储器之间的数据交换、不同层级处理单元之间的消息交互以及展开层内子域之间、子域内的数据交换都是通过不同类型SDE进行的;所述系统区也没有全局同步时钟:SDE必须能处理同频异步时钟域之间的数据交换。
3.如权利要求2所述片上数字模板系统DTSOC,其特征在于,所述SDE数据交换使用的标识码由两段数值组成:一段是路径域数值,该路径域数值按SDE的规则给出到达SDE的输出数据端口也就是目的功能单元入口的SDE路径,一旦数据在SDE中传输完成,路径域数值就失去了效用,目的功能单元将忽略路径域数值;另一段是代号域数值,当一个目的功能单元的一个入口接收到多个不同属性的数据时,标识码的代号域数值就是目的功能单元识别这些数据的根据。
4.如权利要求1所述片上数字模板系统DTSOC,其特征在于,所述SDE的标准结构基元为自动数据交换基元ADEC,所有SDE由相同类型的ADEC组合交联而成,如果以分离的双向数据口为一个数据口单位,每个ADEC一般有固定的k个数据外挂口,和k/4或k/2个数据中转口,其中k是4的倍数;ADEC又分两种基本类型:单区型和双区型。
5.如权利要求1所述片上数字模板系统DTSOC,其特征在于,所述展开层子系统的基本分区:数据管理域和数据处理域;数据管理域被细分为任务管理子域和后台管理子域、数据处理域被细分为非乘法数据处理子域和乘法核心子域;所述展开层子系统包含的多个不同类别PPC具体包括:
任务数据管理可编程处理元TDM-PPC,是数据管理域之任务管理子域的专属PPC;TDM-PPC与数据处理域交界,为其直接提供缓冲数据的输入输出服务,所有TDM-PPC也可称为前台数据管理PPC;TDM-PPC还与后台管理子域交界,与后台管理PPC形成数据管理的结构性分工;TDM-PPC还与BPU有双向消息互通管道,BPU对展开层的各种控制、调度都是通过TDM-PPC来实施,而BPU接收的展开层消息也是由TDM-PPC发出或转送的;
后台数据管理可编程处理元BDM-PPC,是数据管理域之后台管理子域的专属PPC;每个BDM-PPC都有一个公共SRAM,对内BDM-PPC起到SRAM可编程管理器的作用,负责数据的存取、维护;BDM-PPC并不直接服务于数据处理,服务的对象是任务数据管理,为其提供一定程度数据抽象:任务数据管理不用关心数据在某个SRAM中的存储细节,与TDM-PPC的数据通道管理为同名缓冲数据在不同的公共SRAM上存取提供抽象相结合,为数据处理域提供完全的数据抽象;BDM-PPC还可以接受通过BPU/TDM-PPC转送的SFU指令,与另一个BDM-PPC协同管理公共SRAM之间的数据DMA操作;BDM-PPC内核采用双线程架构:BDM-PPC内核轮流独立执行数据存储线程和数据输出线程以适应两者的异步关系;
数据处理可编程处理元DP-PPC,是非乘法数据处理子域的专属PPC;在DP-PPC可存放小段数据处理程序,能在极高的时钟频率下反复执行之;在展开层子系统之非乘法数据处理子域内大量DP-PPC通过单区型SDE连接起来,可以将数据处理程序展开分散到多个DP-PPC中以获得极高的DSP处理带宽;DP-PPC可工作在多种模式下而呈现多种形态;在模式配置后,在连续的运行过程中,DP-PPC只能工作在一个模式下,呈现一种形态;DP-PPC的工作子模式包括:一般工作模式、延迟线模式、数据组合模式、单精度浮点计算模式、循环冗余码处理模式;其中的一般工作模式是片面的、微型的处理器的工作模式,是DP-PPC的基本工作模式,大多数DP-PPC的结构是优先按基本模式设计的;其操作有寄存器之间传输、布尔逻辑处理、部分和处理、部分桶式移位及冗余位消减处理;
乘法计算可编程处理元MP-PPC,是乘法核心子域的专属PPC;MP-PPC在固定提供1个8bit×8bit无符号乘法计算外,还能识别不同标识码的输入数据对,并对应产生若干个返回数据的标识码。
6.如权利要求5所述片上数字模板系统DTSOC,其特征在于,所述可编程处理元PPC为双时钟域结构,包括:PPC外围系统时钟域和PPC内核高倍率处理时钟域:
在PPC内都有一个独立的时钟发生器,产生的处理域时钟是系统时钟沿触发的非独立高倍频脉冲串,且脉冲的宽度、脉冲数目是可配置的;
在PPC外围系统时钟域有一个工作在系统时钟域的较短的总线,用于PPC内核访问外围各特殊功能模块的可寻址寄存器用,此总线不能延伸到PPC独立单元外,也对PPC内核没有作用,PPC内核寄存器与外围寄存器是分开独立编址的;PPC内核是不能直接访问外围编址寄存器,PPC内核只能通过读写界面寄存器来间接访问外围寄存器或发送数据、消息;
所述DP-PPC同样工作在两个时钟域上:一个是系统时钟域,另一个是高倍率处理时钟域;DP-PPC与外部系统交换数据是在DP-PPC的系统时钟域中进行,交换的数据包括待处理的数据以及以数据形态表示的状态、分支控制信息,系统时钟是不能轻易改变,在处理时钟域,DP-PPC内核随着刷新的输入数据反复执行内部的小段程序,这个过程是独立于系统的其他部分的,也是为系统其他部分不可见的。
7.如权利要求5所述片上数字模板系统DTSOC,其特征在于,所述DP-PPC面向一些复杂的展开层应用程序时,相互协同的多个DP-PPC是以不同的工作模式出现,通过以DP-PPC的各种工作模式各自的较小操作域为参照基准,复杂的展开层应用程序等效重组为限制在若干个小操作域内实施的多个分类片段,并且由多个DP-PPC以不同的工作模式来分工承担复杂程序中的分类片段。
8.如权利要求5所述片上数字模板系统DTSOC,其特征在于,所述DTSOC系统的展开层子系统的非乘法数据处理子域内,配置若干个DP-PPC协同执行一个应用程序的数据处理部分,协同的方式不是接受一个外在的控制器来管理,而是基于规则性的数据驱动机制,数据驱动机制有两个层面的含义:在处于工作状态的DP-PPC内部层面,是由外部输入数据触发DP-PPC预存的小段程序的顺序执行的,当程序即将处理的输入数据未到时,DP-PPC将停顿下来等待输入数据,一旦输入数据被处理一次就视为无效,DP-PPC等待新的外部输入数据以触发新一次的程序执行,此过程不断重复;在DP-PPC之间的层面,各DP-PPC是以交换粘连标识码的标准格式数据来实现交联的,在DP-PPC交联层面必须遵循交联数据唯一路径规则,即一个源端DP-PPC输出的交联数据只能传送给一个目的DP-PPC,而不能再传送给其他目的DP-PPC;
所述DP-PPC的运行是基于数据驱动机制,加上经由SDE的数据传输的标识码机制,意味着DP-PPC之间协同没有时序紧约束问题;所述DP-PPC的分支控制也是通过数据驱动机制实现的,即前一处理环节产生不同代号的数据触发一个DP-PPC内不同独立程序段的执行,或者触发不同的DP-PPC工作;所述DP-PPC内核只能执行顺序程序段,程序中分支控制由DP-PPC外围系统时钟域模块分工处理。
9.如权利要求5所述片上数字模板系统DTSOC,其特征在于,所述DP-PPC在一般工作模式下指令由5个并列的维操作码组成,表示可并行执行5种指定操作,且指令无常规的操作数,构成所有指令的5个维操作均是原子操作,原子操作的意义指其基本不能分解为其他原子操作的组合形态,所有维操作仅发生在临近的寄存器之间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110038302.4A CN102637157B (zh) | 2011-02-15 | 2011-02-15 | 一种片上数字模板系统dtsoc |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110038302.4A CN102637157B (zh) | 2011-02-15 | 2011-02-15 | 一种片上数字模板系统dtsoc |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102637157A CN102637157A (zh) | 2012-08-15 |
CN102637157B true CN102637157B (zh) | 2014-12-03 |
Family
ID=46621554
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110038302.4A Expired - Fee Related CN102637157B (zh) | 2011-02-15 | 2011-02-15 | 一种片上数字模板系统dtsoc |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102637157B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109086877B (zh) * | 2016-04-29 | 2020-05-08 | 中科寒武纪科技股份有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
CN106528920B (zh) * | 2016-09-27 | 2019-07-26 | 京微齐力(北京)科技有限公司 | 一种级联查找表的工艺映射方法 |
CN106502775B (zh) * | 2016-10-14 | 2019-08-23 | 福州瑞芯微电子股份有限公司 | 一种分时调度dsp算法的方法和系统 |
CN109284822B (zh) * | 2017-07-20 | 2021-09-21 | 上海寒武纪信息科技有限公司 | 一种神经网络运算装置及方法 |
CN109286564B (zh) * | 2017-07-20 | 2022-06-07 | 迈普通信技术股份有限公司 | 一种报文转发方法及装置 |
CN109754062B (zh) * | 2017-11-07 | 2024-05-14 | 上海寒武纪信息科技有限公司 | 卷积扩展指令的执行方法以及相关产品 |
CN108052018B (zh) * | 2017-12-13 | 2020-09-01 | 中国兵器装备集团自动化研究所 | 一种制导与控制组件轻量化处理方法及制导与控制组件 |
US11397579B2 (en) | 2018-02-13 | 2022-07-26 | Shanghai Cambricon Information Technology Co., Ltd | Computing device and method |
KR102148110B1 (ko) * | 2018-02-13 | 2020-08-25 | 상하이 캠브리콘 인포메이션 테크놀로지 컴퍼니 리미티드 | 계산 장치 및 방법 |
CN108920173B (zh) * | 2018-05-23 | 2021-01-05 | 华为技术有限公司 | 一种配置均衡时间的方法、芯片和通信系统 |
CN111353595A (zh) * | 2018-12-20 | 2020-06-30 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN109587453B (zh) * | 2018-11-22 | 2021-07-20 | 北京遥感设备研究所 | 一种基于光纤图像传输的fpga数据校正识别方法 |
CN111381871B (zh) * | 2018-12-28 | 2022-12-09 | 上海寒武纪信息科技有限公司 | 运算方法、装置及相关产品 |
CN109739478B (zh) * | 2018-12-24 | 2022-12-06 | 网易(杭州)网络有限公司 | 前端项目自动化构建方法、装置、存储介质及电子设备 |
CN109885510B (zh) * | 2019-03-04 | 2022-08-09 | 中北大学 | 一种自助窥镜式逐次问诊型方法及黑匣子系统 |
CN111045965B (zh) * | 2019-10-25 | 2021-06-04 | 南京大学 | 一种多通道无冲突拆分的硬件实现方法及运行该方法的计算机设备与可读存储介质 |
CN111077816A (zh) * | 2019-12-04 | 2020-04-28 | 神华神东煤炭集团有限责任公司 | 基于数据链的电传控制方法、系统及超大采高采煤机 |
CN111046619A (zh) * | 2019-12-27 | 2020-04-21 | 盛科网络(苏州)有限公司 | 组合逻辑时序收敛的方法、设备和存储介质 |
CN113254412A (zh) * | 2020-02-12 | 2021-08-13 | 彩虹无线(北京)新技术有限公司 | 一种数据转换方法和装置 |
CN111768052B (zh) * | 2020-07-07 | 2022-07-22 | 上海约拿计算机信息科技有限公司 | 基于算法模型的整车厂进场物流路线自动规划方法 |
CN112183005B (zh) * | 2020-09-29 | 2022-11-11 | 飞腾信息技术有限公司 | 集成电路测试模式下的dft电路构建方法及应用 |
CN113434456B (zh) * | 2021-06-22 | 2024-03-15 | 上海新致华桑电子有限公司 | 一种分时复用的数据传输装置、方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1910571A (zh) * | 2003-07-25 | 2007-02-07 | 国际商业机器公司 | 单芯片协议转换器 |
CN101095123A (zh) * | 2003-10-10 | 2007-12-26 | 诺基亚公司 | 一种片上系统(SoC)的微控制体系结构 |
CN101454783A (zh) * | 2006-06-27 | 2009-06-10 | 英特尔公司 | 用于芯片上系统器件中数据通路安全的系统和技术 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6751723B1 (en) * | 2000-09-02 | 2004-06-15 | Actel Corporation | Field programmable gate array and microcontroller system-on-a-chip |
US6754882B1 (en) * | 2002-02-22 | 2004-06-22 | Xilinx, Inc. | Method and system for creating a customized support package for an FPGA-based system-on-chip (SoC) |
-
2011
- 2011-02-15 CN CN201110038302.4A patent/CN102637157B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1910571A (zh) * | 2003-07-25 | 2007-02-07 | 国际商业机器公司 | 单芯片协议转换器 |
CN101095123A (zh) * | 2003-10-10 | 2007-12-26 | 诺基亚公司 | 一种片上系统(SoC)的微控制体系结构 |
CN101454783A (zh) * | 2006-06-27 | 2009-06-10 | 英特尔公司 | 用于芯片上系统器件中数据通路安全的系统和技术 |
Non-Patent Citations (2)
Title |
---|
基于PPC405的高性能路由器设计;肖宏等;《信息技术》;20081225(第12期);全文 * |
肖宏等.基于PPC405的高性能路由器设计.《信息技术》.2008,(第12期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN102637157A (zh) | 2012-08-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102637157B (zh) | 一种片上数字模板系统dtsoc | |
US10452452B2 (en) | Reconfigurable processor fabric implementation using satisfiability analysis | |
CN102369508B (zh) | 电子系统中的暂时辅助资源共享 | |
US11714780B2 (en) | Compiler flow logic for reconfigurable architectures | |
US20030105617A1 (en) | Hardware acceleration system for logic simulation | |
Cilardo et al. | Design automation for application-specific on-chip interconnects: A survey | |
WO2007002717A2 (en) | Specifying stateful, transaction-oriented systems and apparatus for flexible mapping | |
CN113874834A (zh) | 用于异构可编程设备的硬件-软件设计过程中的流程收敛 | |
Reshadi et al. | A cycle-accurate compilation algorithm for custom pipelined datapaths | |
Pilato et al. | System-level memory optimization for high-level synthesis of component-based SoCs | |
Huang et al. | The design of dynamically reconfigurable datapath coprocessors | |
CN103403718A (zh) | 混合语言的模拟 | |
Cong et al. | Simultaneous resource binding and interconnection optimization based on a distributed register-file microarchitecture | |
Cong et al. | Architectural synthesis integrated with global placement for multi-cycle communication | |
Nielsen et al. | Towards behavioral synthesis of asynchronous circuits-an implementation template targeting syntax directed compilation | |
O'Nils | Specification, synthesis and validation of hardware/software interfaces | |
Hamzeh | Compiler and Architecture Design for Coarse-Grained Programmable Accelerators | |
Nguyen | A Modular Design Flow for NoC-embedded FPGAs | |
Alexandrov et al. | Parallel algorithms for Knapsack type problems | |
Ang et al. | ACRES architecture and compilation | |
Kashani et al. | A 475 MHz Manycore FPGA Accelerator for RTL Simulation | |
Guo | Co-optimizing High-Level Synthesis and Physical Design for Rapid Timing Closure of Large-Scale FPGA Designs | |
Jafari et al. | Optimal selection of function implementation in a hierarchical configware synthesis method for a coarse grain reconfigurable architecture | |
Zhang | Scaling a Reconfigurable Dataflow Accelerator | |
Verdier et al. | Exploring RTOS issues with a high-level model of a reconfigurable SoC platform. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141203 Termination date: 20170215 |