首页 > 其他分享 >粗粒度可重构架构

粗粒度可重构架构

时间:2023-08-22 10:58:43浏览次数:40  
标签:粗粒度 重构 架构 FPGA CGRA 编译 PE OpenMP

CGRA介绍

粗粒度可重构架构 (CGRA) 是一种替代硬件平台,相比FPGA细粒度的可重构架构,由于CGRA内部的IS(ALU)模块已经构建完成(IssueSlot+RegistryFile+MUX构成的组合结构),且CGRA的interconnect也要比FPGA更简单、规模更小,其延时和性能要显著好于在门级上进行互连形成组合计算逻辑的FPGA,因此我们常讲CGRA更适合word-wise类型(32bit为单位)的可重构计算,而且可以缓解 FPGA 存在的时序、面积和功率开销问题,并有望用于未来的 高性能计算系统(HPC)。CGRA通常具有处理单元(PE)阵列以及PE之间的互连网络。每个PE由简单的算术逻辑单元(ALU)、多路复用器和小型本地存储(例如寄存器文件RF或FIFO缓冲区)组成。多路复用器从邻居 PE 发送的传入数据中选择进入 ALU 的操作数。PE阵列可以通过优化ALU的指令映射和互连来形成目标计算内核的专用流水线。

ADRES架构

在这方面,CGRA的可重构性粒度被计为word level,即ALU的位宽,如32位和64位。它比 FPGA 粗糙得多。此外,较粗的粒度降低了编译过程的复杂性,配置信息相比FPGA更少,因此可以支持动态可重构,,而FPGA属于静态可重构,从这个角度而言,编译器也可以在CGRA上应用更良好的优化。 

从另一个种角度来看,可以看出当一个ID模块与多个FU模块相连时,CGRA此时相当于一个SIMD处理器;当多个ID与多个FU相连时,CGRA相当于一个VLIW处理器,CGRA也可以看作是VLIW在2D上的一种扩展,下图所示。

通用CGRA运行的应用程序通常以循环为主,一般与其他核心共同完成相应任务,如下图所示,MorphoSys CGRA和TinyRISC共同组成一个处理系统来完成相应的复杂任务,其中CGRA复杂任务中的循环部分,而其他核心如TinyRISC复杂任务中的其他部分,因此这种方式可以比 CPU 更快、更节能地执行循环和加速,同时从上图来看,CGRA可以在循环中更好的利用数据级和指令级并行性。

A TinyRISC main processor loosely coupled to a MorphoSys CGRA array.

CGRA 根据其重新配置策略分为两类:1)空间配置的 CGRA 和 2)具有时间复用配置的 CGRA。前一种类型的 CGRA 在可重新配置的结构上形成完全管道化的数据流,并在运行时保持配置。它在计算吞吐量和重新配置开销方面具有优势,但常常面临硬件资源耗尽的问题。

后一类中的 CGRA 在重复更改配置的同时执行循环内核。他们通常以软件管道的方式同时处理多个迭代,来提高吞吐率。

通用CGRA编译流程

CGRA 的编译流程通常分为两个步骤:1)从应用程序代码中提取数据流;2)将数据流映射到 PE 阵列中。提取的数据流表示为数据流图(DFG)或控制数据流图(CDFG),并将其传递到下一步。

第一个任务是从代码中提取计算密集型内核并生成与目标 CGRA 兼容的 DFG。它被视为编译流程的前端。然后,将提取的DFG映射到PE阵列,下一步生成映射结果对应的配置文件。此过程强烈依赖于目标 CGRA,并被视为后端。

通用可重构处理器编译流程

图 2:- cgra openmp 编译流程概述

支持OpenMP的CGRA编译流程

现有的 CGRA 编译器是基于自己的编程模型开发的,或者是专门针对某个 CGRA 的。上图所显示的是支持OpenMP的CGRA编译流程,这项研究声称提出一种独立于特定 CGRA 并面向任何 CGRA 的新编译器框架。编译采取 OpenMP offloading,这是一种标准的异构编程模型。得益于这样的标准模型,只需有限的努力即可重用 HPC 工作负载的现有源代码,因为许多源代码是用 C/C++ 或 Fortran 编写的,而 OpenMP 支持这些源代码。此外,一些 HPC 基准测试已经使用 OpenMP 实现。这项工作声称是 CGRA 在 C 语言之外使用 OpenMP 作为编程模型并使用 Fortran 作为前端语言的首次尝试。

标签:粗粒度,重构,架构,FPGA,CGRA,编译,PE,OpenMP
From: https://www.cnblogs.com/lishangli/p/17647945.html

相关文章

  • 深入理解MVVM架构模式
    MVVM原理MVVM是一种用于构建用户界面的软件架构模式,它的名称代表着三个组成部分:Model(模型)、View(视图)和ViewModel(视图模型)。MVVM的主要目标是将应用程序的UI与其底层数据模型分离,通过数据绑定实现数据和UI的自动同步,从而降低代码的耦合度,提高应用程序的可维护性和可测试性。MVVM框架......
  • xfs文件系统核心架构介绍
    版权声明:本文为CSDN博主「瞧见风」的原创文章,遵循CC4.0BY-SA版权协议原文链接:https://blog.csdn.net/scaleqiao/article/details/52098546(注:xfs文件系统是一套非常成熟的文件系统,目前对其原理进行学习并记录blog,方便工作中对涉及的文件系统进行维护)0文件系统引用维基......
  • 图解 SpringCloud 微服务架构
    SpringCloudAlibaba1.1、单体分布式集群单体:也称单机结构,将一个项目全都部署在一台服务器上面,整个项目的所有服务资源都由这一台服务器提供。分布式:随着项目越来越庞大,单体式中的服务器处理能力有限,所以就将项目服务和MySQL服务分别存储在两台或两台以上的服务器上,可通过合理部......
  • LNMP集群架构
    网站集群拆分上一节我们是部署了单机的LNMP,再往下,要进行拆分了,无论是性能、还是安全性,都务必要拆分。拆分的内容有nginx集群mysqlnfs共享存储等 拆分思路情况1当前的单机环境已经装好了,数据也都有了,需要拆分到多个机器需要考虑数据迁移情况2初试环境直接以集......
  • 系统架构合理性的思考 | 京东云技术团队
    最近牵头在梳理部门的系统架构合理性,开始工作之前,我首先想到的是如何定义架构合理性?从研发的角度来看如果系统上下文清晰、应用架构设计简单、应用拆分合理应该称之为架构合理。基于以上的定义可以从以下三个方面来梳理评估:1、系统的上下文清晰:明确的知道和周围系统的调用关系,数据......
  • 实验室信息管理系统(LIMS)源码,采用灵活的架构开发,支持多种应用程序和技术
    实验室信息管理系统(LIMS)是指帮助实验室组织和管理实验数据的计算机软件系统,它将实验室操作有机地组织在一起,以满足实验室工作流程的所有要求。它能以不同的方式支持实验室的工作,从简单的过程(如样品采集和入库)到复杂的流程(如教据报告和实验结果分析),完全改变实验室的工作流程,使......
  • 深入了解Elasticsearch搜索引擎篇:倒排索引、架构设计与优化策略
    什么是倒排索引?有什么好处?倒排索引是一种用于快速检索的数据结构,常用于搜索引擎和数据库中。与传统的正排索引不同,倒排索引是根据关键词来建立索引,而不是根据文档ID。倒排索引的建立过程如下:首先,将每个文档拆分成一系列的关键词或词项,然后建立一个词项到文档的映射。对每个关键......
  • Docker 搭建 LNMP 架构的 Wordpress网站
    目录一、项目环境二、服务器环境三、任务需求四、获取Linux系统基础镜像五、Nginx1.建立工作目录2.编写Dockerfile脚本3.编辑nginx的主配置文件4.生成镜像5.创建自定义网络6.启动镜像容器7.验证nginx六、MySQL1.建立工作目录2.编写Dockerfile3.编辑mysql主配......
  • devops之Python编程-类的基础架构
    Python中,可以通过关键字class来定义一个类。类是一种自定义数据类型,它可以包含属性(变量)和方法(函数)。下面是一个示例:classMyClass:def__init__(self,name):self.name=namedefsay_hello(self):print("Hello,"+self.name+"!")在上面的......
  • 鑫达惠购系统APP功能架构介绍
    鑫达惠购是一款新电商模式的购物分销系统,基于分销裂变的商业价值行为,快速地分享邀请用户注册。这个系统的模式有个特别的亮点,基于全网公排的模式快速推动用户在商城上的购买活动。1000人团队讲解,根据你下单时间的先后顺序,系统自动匹配1000人给你,他们提现,你就能拿到他们提现金额的0.......