传输触发架构

在计算机架构中,传输触发架构(,TTA)是一种处理器设计,其中程序直接控制处理器的内部传输总线。计算作为数据传输的副作用发生:将数据写入功能单元的触发端口会触发功能单元开始计算。这与脉动阵列中的情况类似。由于其模块化结构,TTA是应用特定指令集处理器(ASIP)的理想处理器模板,具有定制的数据路径,但没有固定功能硬件加速器的灵活性和设计成本。

通常,传输触发处理器具有多个传输总线和多个连接到总线的功能单元,这为指令级并行性提供了机会。并行性由程序员静态定义。在这方面(显然由于指令字宽度较大),TTA架构类似于非常长指令字(VLIW)架构。TTA指令字由多个槽组成,每个总线一个槽,每个槽确定在相应总线上发生的数据传输。细粒度控制允许一些在传统处理器中无法实现的优化。例如,软件可以在功能单元之间直接传输数据,而无需使用寄存器。

传输触发暴露了一些通常对程序员隐藏的微架构细节。这大大简化了处理器的控制逻辑,因为许多通常在运行时做出的决策在编译时就已固定。然而,这也意味着为一个TTA处理器编译的二进制文件如果在两个处理器之间的架构存在微小差异,则无法在另一个处理器上运行,必须重新编译。二进制不兼容问题,加上实现完整上下文切换的复杂性,使得TTA更适合嵌入式系统而非通用计算。

在所有单指令集计算机架构中,TTA架构是为数不多的有基于其构建的处理器的架构之一,也是唯一一个有基于其的处理器进行商业销售的架构。

与VLIW架构相比的优势
TTA可以被视为“暴露数据路径”的VLIW架构。虽然VLIW是通过操作进行编程的,但TTA将操作执行拆分为多个移动操作。与标准VLIW相比,低级编程模型带来了几个好处。例如,TTA架构可以提供比VLIW更简单的寄存器文件和更多的并行性。由于程序员可以控制操作数和结果数据传输的时序,因此寄存器文件(RF)的复杂性(输入和输出端口的数量)不必根据多个并行指令的最坏情况发射/完成场景进行缩放。

由传输编程启用的一种重要独特软件优化称为软件旁路。在软件旁路的情况下,程序员通过将数据直接移动到下一个功能单元的操作数端口来绕过寄存器文件的写回。当这种优化被积极应用时,传输结果到寄存器文件的原始移动可以完全消除,从而减少寄存器文件端口的压力,并为其他临时变量释放一个通用寄存器。减少的寄存器压力,除了简化RF硬件所需的复杂性外,还可以带来显著的CPU能量节省,这在移动嵌入式系统中尤其是一个重要的好处。

结构
TTA处理器由独立的功能单元和寄存器文件构成,这些单元通过传输总线和插座连接。

功能单元
每个功能单元实现一个或多个操作,这些操作的功能范围从简单的整数加法到复杂的任意用户定义的特定应用计算。操作的操作数通过功能单元端口传输。

每个功能单元可能有一个独立的流水线。如果一个功能单元是完全流水线化的,那么每个时钟周期都可以开始一个需要多个时钟周期才能完成的新操作。另一方面,流水线可以是这样的:在一个旧操作仍在执行时,它并不总是接受新的操作启动请求。

数据内存访问和与处理器外部的通信是通过使用特殊功能单元来处理的。实现内存访问操作并连接到内存模块的功能单元通常称为加载/存储单元。

控制单元
控制单元是功能单元的一个特殊案例,它控制程序的执行。控制单元可以访问指令存储器,以便获取要执行的指令。为了允许已执行的程序将执行(跳转)转移到已执行程序中的任意位置,控制单元提供控制流操作。控制单元通常具有指令流水线,包含获取、解码和执行程序指令的各个阶段。

寄存器文件
寄存器文件包含通用寄存器,用于在程序中存储变量。与功能单元一样,寄存器文件也具有输入和输出端口。读写端口的数量,即在同一个时钟周期内能够读取和写入多个寄存器的能力,可以在每个寄存器文件中有所不同。

传输总线和端口
互连架构由传输总线组成,这些总线通过插座连接到功能单元端口。由于连接的成本,通常会减少单元之间的连接数量(功能单元和寄存器文件)。如果每个单元的输出端口到每个单元的输入端口之间都有路径,则称TTA为完全连接。

套接字(Sockets)提供了编程TTA处理器的手段,通过允许在任何时刻选择插座的哪些总线到端口连接被启用。因此,发生在一个时钟周期内的数据传输可以通过定义每个总线要启用的源和目标插座/端口连接来编程。

条件执行
某些TTA实现支持条件执行。

条件执行是通过保护器实现的。每个数据传输都可以通过一个保护器进行条件化,该保护器连接到一个寄存器(通常是一个1位条件寄存器)和一个总线。如果被保护寄存器的值评估为假(零),则连接到该保护器的总线上的数据传输将被压制,即不写入其目的地。无条件数据传输不连接到任何保护器,并始终执行。

分支
所有处理器,包括TTA处理器,都包含控制流指令,这些指令会改变程序计数器,用于实现子程序、if-then-else、for 循环等。TTA处理器的汇编语言通常包括控制流指令,如无条件跳转(JUMP)、条件相对跳转(BNZ)、子程序调用(CALL)、条件返回(RETNZ)等,这些指令与其他处理器的相应汇编语言指令看起来相同。

与TTA机器上的所有其他操作一样,这些指令作为“移动”指令实现到一个特殊功能单元。

支持条件执行的TTA实现,例如sTTAck和第一个MOVE原型,可以将大多数这些控制流指令实现为对程序计数器的条件移动。

仅支持无条件数据传输的TTA实现,例如Maxim Integrated MAXQ,来自Maxim Integrated,是唯一一款基于传输触发架构的商用微控制器,它是一种OISC或“单指令集计算机”。它提供了一个灵活的MOVE指令,可以通过将值直接移动到程式計數器来充当各种虚拟指令。
*“move project”设计并制造了几个实验性的TTA微处理器。
*OpenASIP是一个开源的应用特定指令集工具集,利用TTA作为处理器模板。
*AmigaCopper的架构具有传输触发架构的所有基本特征。
*新英格兰数字公司开发的Able处理器。
*基于Wireworld的计算机。
*Dr. Dobb's发布了One-Der,一个用Verilog编写的32位TTA,配有匹配的交叉汇编器和Forth编译器。
*Mali (200/400) 顶点处理器,使用128位指令字单精度浮点标量TTA。

另见

  • 专用指令集处理器(ASIP)
  • 超长指令字(VLIW)
  • 顯式並行指令運算(EPIC)

*

参考文献

评论 (0)

  • 还没有评论,来抢沙发吧。