The Vector-Thread Architecture(2004)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shuiliusheng/article/details/83218007

The Vector-Thread Architecture(2004)

  1. 向量-线程(VT)体系结构支持向量和多线程的无缝集成,从而灵活而紧凑的编码应用程序的并行性和局部性,能够提供高性能的同时,保证了低功耗和小面积

    • VT简洁地编码了大量的结构化并行,以一种简单的微架构,通过避免复杂的控制和数据通路,同时减少了长导线上的活动,降低了功耗,并且获得了高性能
  2. 嵌入式计算领域的问题:

    • 应用越来越复杂,对高性能,低功耗信息处理的需求也在增长
    • 定制电路很适合,但是不断增加的掩模和开发成本使其不适合在小规模的领域使用。同时固定的设计,不适合不断变化的要求
    • 多种特定领域的可编程处理器的异构混合的问题在于难以编程,并且当负载不均衡时,效率低下
    • 通用处理器虽然灵活,但是过于复杂,并且性能不够高或者是功耗太大。现代超标量处理器主要从非结构化应用的顺序编码中获取并行性,但是嵌入式应用通常包含丰富的结构化并行性,其中的依赖关系也可以在静态时确定。
  3. VT的抽象模型

    • VT的编程模型结合了向量和多线程计算
    • 将传统的控制处理器和虚拟处理器(VPs)向量相结合
    • 虚拟处理器VP包含一组寄存器,可以执行一组封装在原子指令块(AIB)中的类RISC指令
    • VPs不包括PC或者其它隐式的取指机制,所有的指令块都由CP/VP本身显式的请求
    • VT尤其擅长于执行循环,每个VP执行循环中的一次,CP会剥离循环,进行控制
      • CP使用向量取指指令将AIBs广播到所有的VPs,同时CP可以使用向量load/store指令来高效的完成数据在内存和VP寄存器之间的移动
      • 当循环之间有依赖关系时,VPs以单向环形拓扑结构连接,通过发送和接收指令对数据进行传输
      • 当循环带有条件指令,甚至内部循环时,每个VP使用线程的形式来获取自身的AIB,并且指导自己的控制流,自主执行
    • VPs除了执行循环迭代,还可以执行自由运行的线程,独立于CP进行操作,并且可以从共享的工作队列中检索任务
      在这里插入图片描述
      在这里插入图片描述
  4. VT的物理模型

    • 组成:一个传统的控制处理器+一个VT单元(VTU),用于执行VP代码。一个VTU中包括一组可以并行处理器的lanes。每个lane包括物理寄存器(用于保存映射到lane的VPs的状态)+功能单元(被VPs分时复用)
    • VTU中每个lane相互独立执行,拥有自己的小的AIB cache。每个lane还包括一个命令管理单元CMU,将来自CP的命令还在一个队列中(cmd-Q),同时保存着每个VP的线程挂起时,取指的地址。
    • CMU选择vector-fetch/thread-fetch命令执行,同时在AIB的cache tags中查找地址。如果命中了cache,CMU发送一条包括索引的指令到AIB cache。对于vector-fetch指令,所有的VPs都需要执行AIB中指令;对于thread-fetch指令,只有一个VP需要指令AIB中指令。
    • CMU会将执行指令发送到一个队列中,从而将cache过程和执行过程解耦,实现重叠执行
    • 执行过程:从AIB cache中,一条一条的读取指令,然后为正确的VP执行。当执行指令是在vector fetch指令之后的,则当前VP会执行AIB中的所有指令,在转移到另一个VP之前
      在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/shuiliusheng/article/details/83218007
今日推荐