基于TR600芯片的过程调用设计与硬件实现
扫描二维码
随时随地手机看文章
来源:电子技术应用 作者:北京科技大学 王沁 赵凤海 江山刚 摘 要:介绍了tr600语音编解码芯片中过程调用的设计及实现方法,并与堆栈寄存器结构实现方式做了简要的比较.重点阐述了重叠寄存器窗口技术和存取算子对存储体交叉访问技术的原理、技术特点及其在tr600芯片体系中的具体实现。关键词:可重构体系过程调用重叠寄存器窗口交叉访问 随着大规模集成电路的不断发展,软硬件界面的划分也发生了变化,vksi设计方法的改进、ip技术的标准化以及系统在片(soc)设计的日渐成熟,为软件功能逻辑硬件化实现提供了技术条件和实现手段。作为软件程序设计的重要部分,过程调用功能使用频度相当高,尤其在结构化设计中起到重要作用,因此,其硬件实现方法的优劣对于软件能否很好地移植到逻辑电路中起到了非常重要的作用。tr600语音编解码芯片设计是基于melp、selp2(sine excitation linear prediction)等多种语音算法,采用可重构体系结构…和变长指令技术,实现了多种语音算法可在片配置的soc设计。这款语音芯片结合了逻辑电路的快速性和用户指令编程灵活性的特点,通过分析多种语音算法,并提取资源共集,建立了资源、运算、网络可重构的逻辑电路,同时提取资源的可控节点,形成用户指令界面,以指令流形式控制逻辑电路,实现算法级应用功能。过程调用功能就是以指令形式提供给使用者,并通过指令译码器控制逻辑电路动作,实现具体功能。因此,过程调用功能的硬件实现效率和灵活度直接影响芯片整体的速度、规模以及用户指令编程的复杂度。过程调用模型可简单描述为主调过程将被调过程置于某一位置,然后把控制权交给被调过程,执行完毕,再取回控制权,并返回运行结果,主调过程继续执行。因此过程调用需要2个步骤:调用过程和返回过程。过程调用需要处理的信息有:程序计数器(pc)值的保存与恢复、现场保护和参数传递。过程调用是一种典型的后入先出堆栈寄存器结构,这种实现方式虽已相当普遍,但也存在不足:(1)堆栈寄存器使用效率低,存储时间和空间浪费严重。因为参数传递的个数和规格因调用过程的不同会有所不同,而主调过程需要对所有可能被破坏的数据堆栈进行保护,而堆栈的宽度和深度会因满足过程调用最坏情况而设计得最大,而且嵌套调用会增加堆栈寄存器的开销。(2)堆栈寄存器结构无法解决调用过程存取算子对存储体交叉访问的问题。为了给用户指令编程提供一个清晰的指令界面,在指令体系设计时,将ls存取算子设计成与sdram存储体一一对应的关系。单块存储体采用独立编址。而对于过程调用,主调过程传递实参可来源于任意存储体,被调过程的ls存取算子只能指向某一个存储体,这就产生了过程调用中参数传递的全局性与存取算子访问局部性之间的矛盾。为了解决堆栈寄存器结构实现方式的不足,tr600语音编解码芯片采用了重叠寄存器窗口技术和存取算子对存储体的交叉访问技术来实现过程调用功能。 1 重叠寄存器窗口技术重叠寄存器窗口技术是一种寄存器堆设计方法,它将寄存器堆分成若干个寄存器子堆,相邻寄存器子堆有重叠部分并共同可见,作为子堆之间信息交互的窗口,称为窗口寄存器。寄存器子堆与其他子堆不重叠的部分只有自身可见,独立于其他子堆,称为局部通用寄存器。在外部控制电路作用下,同一时刻只有一个子堆对用户是可见的.可以进行读写操作。存储于局部通用寄存器的数据不会影响相邻子堆的操作,而存储于窗口寄存器的数据可以被相邻子堆直接使用。过程调用操作利用了局部通用寄存器的局部性和窗口寄存器的共用性的特点.将过程调用中的相关数据存人局部通用寄存器,避免了数据相关;将传递参数写入窗口寄存器,可以供被调过程直接使用,避免了寄存器之间的数据转移。因此,重叠寄存器窗口技术可以解决过程调用中的现场保护和参数传递的问题。tr600芯片体系结构采用可重组思想设计了二组总线寄存器堆,每组寄存器堆有19个寄存器单元,每个单元由2组16位寄存器拼接而成,因此,单指令周期可以存取64位、32位、16位规格的数据。为了实现语音算法中多重嵌套过程调用,每组寄存器堆分为三层寄存器子堆.如图1所示。每层最多可以使用9个寄存器单元,调用操作可以在寄存器子堆内部,也可以在相邻子堆之间完成。总线寄存器堆控制信号由过程调用指令和寄存器读写控制指令经指令译码器译码产生。过程调用指令