传输触发架构
编辑在计算机体系结构中,传输触发架构(TTA)是一种处理器设计,其中程序直接控制处理器的内部传输总线。计算发生,因为数据传输的副作用:将数据写入一个触发端口一个的功能单元的触发器的功能单元开始计算。这类似于心跳阵列中发生的情况。由于其模块化结构,TTA是专用指令集处理器(ASIP)的理想处理器模板。)具有定制的数据路径,但没有固定功能硬件加速器的灵活性和设计成本。
(adsbygoogle = window.adsbygoogle || []).push({});
通常,传输触发处理器具有多个传输总线和连接到总线的多个功能单元,这为指令级并行性提供了机会。并行性由程序员静态定义。在这方面(显然由于指令字宽度大),TTA架构类似于超长指令字(VLIW)架构。TTA指令字由多个插槽组成,每个总线一个插槽,每个插槽确定在相应总线上发生的数据传输。细粒度的控制允许进行某些常规处理器无法实现的优化。例如,软件可以在不使用寄存器的情况下直接在功能单元之间传输数据。
传输触发会暴露一些微体系结构细节,这些细节通常对程序员是隐藏的。这极大地简化了处理器的控制逻辑,因为通常在运行时完成的许多决策都固定在编译时。但是,这也意味着,如果在一个TTA处理器上编译的二进制文件之间的体系结构之间即使有很小的差异,也不会在不重新编译的情况下在另一个TTA处理器上运行。除了实现完整上下文切换的复杂性之外,二进制不兼容问题使TTA 比通用计算更适合嵌入式系统。
在所有一种指令集计算机体系结构中,TTA体系结构是为数不多的基于其构建处理器的处理器之一,并且是xxx一种基于该体系结构进行商业销售的处理器。
与VLIW架构相比的好处
编辑TTA可以看作是“公开的数据路径” VLIW体系结构。使用操作对VLIW进行编程时,TTA将操作执行拆分为多个移动操作。与标准VLIW相比,低级编程模型具有多个优点。例如,与VLIW相比,TTA体系结构可以通过更简单的寄存器文件提供更多的并行性。由于程序员可以控制操作数和结果数据的传输时序,因此无需根据寄存器最坏的情况/完成情况来缩放寄存器文件(RF)的复杂度(输入和输出端口的数量)。多个并行指令。
通过传输编程实现的一项重要的独特软件优化称为软件旁路。在软件旁路的情况下,编程人员通过将数据直接移至下一个功能单元的操作数端口来旁路寄存器文件回写。当积极地应用此优化时,可以完全消除将结果传输到寄存器文件的原始动作,从而降低了寄存器文件的端口压力并为其他临时变量释放了通用寄存器。减小的寄存器压力,除了简化了射频硬件所需的复杂性之外,还可以节省大量CPU能量,这是一个重要的好处,尤其是在移动嵌入式系统中。
结构
编辑TTA处理器由独立的功能单元和寄存器文件构成,它们与传输总线和套接字连接。
功能单元
每个功能单元实现一个或多个操作,这些功能实现的功能范围从简单的整数加法到复杂且任意的用户定义的特定于应用的计算。操作的操作数通过功能单元端口进行传输。
每个功能单元可以具有独立的管线。如果功能单元已完全流水线化,则可以在每个时钟周期中启动需要多个时钟周期才能完成的新操作。另一方面,管道可以是这样的,它在老的仍在执行时并不总是接受新的操作开始请求。
数据存储器的访问和到处理器外部的通信是通过使用特殊功能单元来处理的。实现内存访问操作并连接到内存模块的功能单元通常称为加载/存储单元。
控制单元
控制单元是控制程序执行的功能单元的特例。控制单元可以访问指令存储器,以便提取要执行的指令。为了允许执行的程序将执行(跳转)转移到执行的程序中的任意位置,控制单元提供控制流程操作。控制单元通常具有指令流水线,该指令流水线包括用于获取,解码和执行程序指令的阶段。
注册文件
寄存器文件包含通用寄存器,用于将变量存储在程序中。像功能单元一样,寄存器文件也具有输入和输出端口。读写端口的数量,即在同一时钟周期内读写多个寄存器的能力,可能在每个寄存器文件中有所不同。
运输巴士和插座
互连体系结构由传输总线组成,这些传输总线通过套接字连接到功能单元的端口。由于连接的开销,通常会减少单元(功能单元和寄存器文件)之间的连接数。如果从每个单元的输出端口到每个单元的输入端口之间存在一条路径,则据说TTA已完全连接。
套接字允许选择随时启用套接字的哪些总线到端口连接,从而为TTA处理器编程提供了手段。因此,可以通过定义要为每个总线启用的源套接字和目标套接字/端口连接,来对在时钟周期内发生的数据传输进行编程。
有条件的执行
一些TTA实现支持条件执行。
有条件的执行是在警卫的帮助下执行的。每个数据传输都可以通过保护器进行条件设置,该保护器连接到寄存器(通常是1位条件寄存器)和总线。如果受保护寄存器的值评估为false(零),则会压缩为保护连接到的总线编程的数据传输,即不写入其目的地。无条件数据传输未连接到任何防护装置,并且始终执行。
分支
所有处理器(包括TTA处理器)都包含更改程序计数器的控制流指令,这些指令用于实现子例程,if-then-else、for-loop等。TTA处理器的汇编语言通常包括控制流指令,例如无条件的分支(JUMP),条件相对分支(BNZ),子例程调用(CALL),条件返回(RETNZ)等,它们看起来与其他处理器的相应汇编语言指令相同。
像TTA机器上的所有其他操作一样,这些指令被实现为“移动”指令到特殊功能单元。
支持条件执行的TTA实现(例如sTTAck和xxx个MOVE原型)可以将大多数控制流指令作为条件移动到程序计数器的方式来实现。
仅支持无条件数据传输的TTA实现,例如MAXQ,通常具有一个紧密连接到程序计数器的特殊功能单元,该程序计数器响应各种目标地址。每个这样的地址在用作“移动”的目的地时,都会对程序计数器产生不同的影响-每个“相对分支<condition>”指令对每个条件都具有不同的目的地地址;而其他目标地址则使用CALL、RETNZ等。
编程
编辑在更传统的处理器体系结构中,通常通过定义执行的操作及其操作数来对处理器进行编程。处理器中指令的执行可能导致将该指令转换为控制信号,该信号控制互连网络连接和功能单元。互连网络用于将寄存器r1和r2的当前值传输到能够执行加法运算的功能单元,在算术逻辑单元中通常称为ALU。最终,控制信号选择并触发ALU中的加法运算,其结果被传送回寄存器r3。
TTA程序不定义操作,而仅定义写入和读取操作数值所需的数据传输。通过将数据写入操作的触发操作数来触发操作本身。因此,执行操作作为触发数据传输的副作用。因此,在TTA中执行加法运算需要三个数据传输定义,也称为moves。移动定义了在传输总线中进行数据传输的端点。例如,一个动作可以表明从功能单元F端口1到寄存器文件R寄存器索引2的数据传输应该在总线B1中进行。如果目标处理器中有多个总线,则可以在同一时钟周期内并行使用每个总线。因此,可以通过在同一指令中调度几个数据传输来利用数据传输级并行性。
实现
编辑- MAXQ 从Dallas Semiconductor的,在传输触发架构构建的xxx可商购的微控制器,是一种OISC或“ 一个指令集计算机 ”。它提供了一个单一但灵活的MOVE指令,然后可以通过将值直接移动到程序计数器来用作各种虚拟指令。
- 在“移动项目”已经设计并制造的几个实验TTA微处理器。
- 该TCE项目是一个重新实现的移动工具。这些工具可以作为开放源代码使用,并且编译器是围绕LLVM编译器框架构建的。
- Amiga Copper的架构具有传输触发架构的所有基本功能。
- 由New England Digital开发的Able处理器。
- 基于WireWorld的计算机。
- Dobb博士在Verilog中发布了One-Der(32位TTA),带有匹配的交叉汇编器和Forth编译器。
- 马里(200/400)顶点处理器,使用128位指令字单精度浮点标量TTA。
内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/108090/