AI芯片软件定义硬件架构

177daf89d672840e0b6104bccc5a1448.jpeg

软件定义硬件架构

   

AI 应用正促使芯片制造商和 OEM 重新审视重新配置硬件的可能性。

摩尔定律放缓,软件应用复杂性和规模激增,x86架构CPU运行通用软件的传统方法已无法满足嵌入式和AI应用的高效需求。

在当前x86架构主导的环境中,软硬件间差异显著。Imagination Technologies的AI与计算战略副总裁Russell James指出:“硬件加速器的需求与崛起,已重塑软硬件关系。软件程序员需深入了解底层硬件架构,以编写高效软件,应对新时代的挑战。”

本世纪初,软件定义硬件的热潮涌动,众多企业积极拥抱可重构计算,追求计算能力的即时转变,以灵活适应不同应用需求,这正是未来的计算趋势。

Cadence高级总监Frank Schirrmeister强调:“人工智能渴求计算网络快速而精准的更新。”回顾2000年代初,软件定义硬件的讨论尚未预见Dennard扩展、Amdahl定律等旧观念的终结。如今,我们仅用15年就迎来了架构领域特化的新时代,因为这是我们迫切的需求。”

569b41badbe97279ddc0c1b2daa87833.jpeg图:微处理器数据趋势。‍

但特定领域架构也有缺点。

Schirrmeister说:"架构可能是固定的,而可编程性确实很难,所以你需要回到编程模型的概念上来,你实际上是用这个模型对这部分进行编程。"话虽如此,但如果不给它至少一点点重新配置的自由,要想专注于一种特定的架构确实很难。否则,你基本上又回到了 ASIC/FPGA 的问题上。可重新配置的部分为你提供了一个目标领域架构,然后在这个架构内,由于可重新配置的特性,为你提供了进行更新的回旋余地。这是一个非常明显和有趣的优势。你需要有足够灵活的可重构性,这就是软件定义硬件/可重构硬件卷土重来的原因。人工智能将是推动可重新配置的一个重要起点。" 

许多人对此表示赞同。OneSpin Solutions 的技术营销经理 Sergio Marchese 说,这正是 Xilinx Versal 等复杂 FPGA 的意义所在,它是一种具有可编程逻辑和大量资源(AI 引擎、CPU、DSP 等)的设备。"工程师编写人工智能软件(框架级),有一个工具链可以自动配置硬件,针对特定软件进行优化,"他说:"这在原则上是很好的,尤其是当算法变化很快时,人工智能和其他尖端应用就是这种情况。然而,要从硬件中挤出最后一个周期以提高性能,就需要在 RTL 层面上进行更改,并需要工程师具备这方面的专业知识。此外,对 RTL 的任何更改都需要进行彻底的重新验证,并尽可能使用可靠的正规方法。这包括形式等效性检查,以确保 FPGA 实现预期功能。

不过,实现这种可配置性的方法不止一种。运行英伟达公司 CUDA(一种专有的并行软件平台)的通用 GPU 就是一个很好的例子。"他说:"今天,我们有许多不同类型的硬件加速器,从 FPGA 到完全定制的 ASIC,如谷歌 TPU。"对多种计算类型的需求也扩展到了嵌入式 SoC 领域,CPU、GPU、DSP、NNPU 等都可以集成到一个芯片中。这就形成了软件定义硬件的理想模式,即由软件定义运行程序的硬件。从云数据中心服务器到手机和其他嵌入式设备,愿望都是一样的。"

具体来说,软件定义硬件基础架构(SDHI)是软件定义硬件基础架构的进一步延伸,即基础架构从一组虚拟集成的计算处理器中选择合适的元素来高效运行软件。"Imagination公司的詹姆斯说:"为了高效运行这些硬件加速器,需要一个软件计算框架,使底层软件语言能够有效、高效地利用所有可用硬件。"流行的软件计算框架 OpenCL 就是一个例子。该框架和其他此类框架主要适用于两种类型的硬件加速器--固定的底层硬件架构(如 GPGPU),或完全定制的 ASIC 和 FPGA,后者是硬件可编程集成电路,与完全定制的 ASIC 中的相同设计相比,可达到一定比例的性能水平"。

OpenCL框架为C语言底层算法在硬件上的执行提供了关键架构、API及资源,实现计算核心间的并行执行,显著提升利用率与效率。相较于GPGPU,FPGA中的OpenCL内核经HLS工具映射至硬件表示,非基于固定架构硬件加速器执行,展现出独特的优势。

多年来,人们一直在努力使软件更接近硬件,其中包括:

  • CUDA与TensorRT让软件编程与GPU硬件无缝对接,显著提升性能,即使面对固定GPU架构也能灵活应对。
  • SYCL,它是 CUDA 的开放式竞争对手。
  • SystemC,一种时序注释 C 语言。
  • Matlab,一种 HDL 编码器。

通过高级综合(HLS)工具,硬件定义完全转化为软件操作,凸显了抽象层次的关键差异。RTL(VHDL或Verilog),作为半导体行业的标准硬件描述语言,经编译器、综合与布局工具,精准映射至集成电路物理布局文件(GDSII或OASIS),展现了高效的硬件设计流程。

James 说:"C 语言和许多其他软件语言一样,是按顺序执行的,这也是 CPU 的运行方式。"而 RTL 则是并行执行所有代码行,设计者必须为其他执行顺序规则明确编码。这种差异意味着通常需要具有硬件设计背景的人才能正确理解和编写 RTL 代码。编写 RTL 代码是一个漫长而费力的过程,如果能将行为或算法模型综合为 RTL 代码,就能加快设计过程。在过去的 30 多年里,HLS 工具一直在做这项工作,但问题一直在于,抽象程度越高,硬件设计往往越不理想(抽象惩罚)。部分FPGA 供应商提供内部 OpenCL 到 FPGA 实现工具,使更多开发人员能够使用 FPGA(无需深入的 RTL 设计和编码经验)"。

7d4ef4aaf18b48fc0d140104f8be6e61.jpeg图:基于虚拟原型的架构开发流程
为什么需要 SDH

软件定义硬件一词特指将应用映射到 等价硬件模型,以替代昂贵的特定应用 SoC 开发。MachineWare 首席应用工程师 Jan 说,该术语适用于形式服从功能的一般原则,即在芯片设计中,功能决定计算架构。当通用 CPU、GPU 或 DSP 无法提供必要的性能和/或计算效率,以及专用硬件无法提供必要的灵活性时,就需要软件定义的硬件。Jan 说:"最常见的例子是用于加速人工神经网络的 IP 和 SoC,它们需要高度的灵活性来适应快速发展的神经网络图,同时还需要定制的架构来实现必要的性能和能效。"根据目标市场的要求,这就产生了各种可编程和可配置的计算机架构,从带有矢量扩展的通用 CPU、优化的 GPU、矢量 DSP、FPGA、特定应用指令集处理器,到寄存器可编程数据路径。

James 认为 SDH 至关重要。"他说:"计算框架在一定程度上将开发人员从底层硬件架构中抽象出来,而 SYCL 等开放式计算平台则在此基础上更进一步,(在开发人员层面)实现了对底层硬件的更大抽象。他说:"为 GPGPU 编写 OpenCL,这就定义了硬件如何执行定义的内核。为 FPGA 编写 OpenCL,就能在 FPGA 上创建完全自定义的加速内核。为包含 CPU、GPGPU 和专用神经网络加速器的 SoC 编写 OpenCL,这样就可以实现异构计算,从而最大限度地提高执行效率。但这种方法并非没有挑战,尤其是涉及人工智能时。

他说:"人工智能是一项快节奏、快速发展的技术,因此该领域的任何产品都需要快速开发、验证、确认和部署,否则就有可能错失良机。将SDH方法应用于ASIC设计会导致硬件架构具有多种类型和数量的计算元件。

其中一些计算元件将更具通用性,而另一些计算元件的功能则更为固定,但在现在和未来开发软件算法和应用时,这些计算元件的组合将提供最佳的灵活性,从而在一定程度上面向未来,在下一个ASIC出现之前,能够在人工智能进化风暴中渡过足够长的时间。这看起来像是计算硬件的完全民主化,但并非所有的计算内核都是一样的,它们的性能也不尽相同。这时,硬件供应商可以通过在开放式计算框架中添加定制的垂直优化,或者完全定制优化的封闭式计算解决方案,来创造差异化。

此外,软件定义硬件无可争议的优势是能够显著提高性能和计算效率。Kogel 回顾了谷歌 2015 年的 TPU v1,其运行深度神经网络的速度比当代类似技术的 CPU 和 GPU 快 15 到 30 倍,能效比它们高 30 到 80 倍。"人工智能的确是特定领域架构的杀手级应用,因为它提供了令人尴尬的并行性,可以充分利用量身定制的处理资源。因此,我们看到了计算机架构的新黄金时代,它刺激了数以百计的芯片设计项目,而在此之前,设计启动的数量是不断下降的。"但是,软件定义硬件带来的巨大挑战是必要软件编程流程的复杂性。"他说:"需要复杂的编译器和运行时环境,才能将应用映射到定制硬件,并充分利用可用资源。"开发具有竞争力的软件流程需要大量的投资以及硬件和软件团队之间的紧密合作。

”其他人也发现了类似的问题。卡梅隆 EDA 公司顾问 Kevin Cameron说:"如果你看看人们在神经网络中做的事情,神经网络比其他大多数事情更适合扩展 C++ 描述,因为你描述的是一个由小型进程组成的异步网络,它适合称为 CSP(通信顺序进程)的计算范式。"CSP 是一种通信顺序进程,从 70 年代就已经出现,但一直没有得到很好的实施。在硬件/软件权衡方面,很多问题之一是很难找到一种人们喜欢的语言,软件工程师不会使用 Verilog 或 SystemVerilog。这既昂贵又困难。尽管如此,Cameron 认为,如果 C++ 中的一些概念能够扩展到支持硬件描述语言正在做的事情,再加上事件驱动指令和数据通道,也许工程界会使用它们。

Schirrmeister说:"人们一度认为OpenCL很棒,但感觉它并没有真正做到这一点。"编程模型的种类仍然很多。现在有很多很酷、很有趣的可重构架构,但我们该如何对它们进行编程呢?编程模型是什么?这些都是未来需要回答的有趣问题。

其他工具和方法

虚拟原型技术又增加了一个可配置的旋钮。在规范计算机体系结构和软件开发流程的过程中,虚拟原型可实现算法、编译器和体系结构的联合优化。Jan 说:"我们的想法是创建一个高级仿真模型,对应用工作负载、编译器转换和硬件资源进行功耗/性能权衡分析。

"我们的目标是为硬件和软件实施团队提供最佳规范。为了在竞争激烈的市场(如人工智能 SoC 设计)中加快产品上市速度,虚拟原型可以将嵌入式软件和编译器的开发工作转移到左侧比如汽车。在这里,仿真模型可作为虚拟目标,用于硅前验证和优化编译器、早期开发固件和驱动程序,以及早期将人工智能加速器集成到主机 CPU 上运行的软件栈中。"

结论

目前还不清楚这些方法中哪一种最终会取得成功。显而易见的是,设计需要灵活性,以应对软件和市场需求的不断变化,同时还需要更高的性能,这是硬件本身所无法提供的。因此,重点不是仅仅制造更快的硬件,而是定制硬件以提供足够的性能,同时还要有足够的灵活性以适应变化。这是一项艰难的平衡工作,需要掌握一些复杂的硬件和软件编程知识。但只要方法得当,就能显著提高速度和功耗,并留出足够的灵活性,为设计增加一些面向未来的功能。

 

-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/16878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在某云服务器上搭建公网kali linux2.0

前提: 可用的 CVM 实例 挂载一个系统盘之外的盘,安装完成后可卸载! 创建实例,安装centos7系统! 然后执行fdisk -l看磁盘的情况 在这里我将把镜像写入vdb这块数据盘 非 root 的情况下记得sudo执行以下命令 注意&…

使用 Elastic AI assistant for Observability 来分析日志

在今天的文章中,我们来参考之前的文章 “Elastic AI Assistant for Observability 和 Microsoft Azure OpenAI 入门” 来使用 Elastic AI assistant 分析日志。在本文章中,我们不使用 Azure clould。这样我们之间来进入主题,以免失去注意力。…

DDR、LPDDR和GDDR的区别

1、概况 以DDR开头的内存适用于服务器、云计算、网络、笔记本电脑、台式机和消费类应用,支持更宽的通道宽度、更高的密度和不同的形状尺寸。 以LPDDR开头的内存适合面向移动和汽车这些对规格和功耗非常敏感的领域,提供更窄的通道宽度和多种低功耗运行状态…

OSPF减少LSA更新量1

OSPF的LSA优化 一、汇总——优化骨干区域 (1)域间汇总ABR设备基于某个区域的1/2类LSA计算所得的最佳路由,共享给其他区域时,进行汇总传递。 [r2]ospf 1 [r2-ospf-1]area 1——明细路由所在区域,该ABR设备必须和明细路由在同一区域 [r2-ospf…

数据集007:垃圾分类数据集(含数据集下载链接)

数据集简介 本数据拥有 训练集:43685张; 验证集:5363张; 测试集:5363张; 总类别数:158类。 部分代码: 定义数据集 class MyDataset(Dataset):def __init__(self, modetrain, …

win10/win11 优先调用大核的电源计划性能设置

前言 大小核,即Intel 12代开始的P-core(性能核,一般叫大核)和E-core(能效核,一般叫小核)异核架构。说下个人理解,就是英特尔为了增加cpu性能,但是又因为架构和功耗的限制…

网络通讯聊天工具的实现

学习网络与通信,实现聊天界面能够通过服务器进行私聊和群聊的功能。 1.服务器:ServeSocket 客户端先发送消息给服务器,服务器接受消息后再发送给客户端。 利用服务器随时监听。等待客户端的请求,一旦有请求便生产一个socket套接…

模型实战(20)之 yolov8分类模型训练自己的数据集

yolov8分类模型训练自己的数据集 yolov8,一个实时快速的端到端的集检测、分割、分类、姿态识别于一体的视觉算法库/框架本文将给出yolov8 分类模型的数据集制作格式及训练流程 1. 环境搭建 关于虚拟环境的搭建真的是老生常谈了,给出一个简单的搭建流程吧#新建虚拟环境 conda …

软件系统开发标准流程文档(Word原件)

目的:规范系统开发流程,提高系统开发效率。 立项申请需求分析方案设计方案评审开发调整测试阶段系统培训试运行测试验收投入使用 所有文档过去进主页获取。 软件项目相关全套精华资料包获取方式①:点我获取 获取方式②:本文末个人…

《Ai企业知识库》-模型实践-rasa开源学习框架-搭建简易机器人-环境准备(针对windows)-02

rasa框架 Conversational AI Platform | Superior Customer Experiences Start Here 阿丹: 其实现在可以使用的ai的开发框架有很多很多,就需要根据各个模型的能力边界等来讨论和设计。 rasa整体流程以及每一步的作用 NLU(自然语言理解): 自然语言理解&#xff…

【项目问题解决】 java.lang.IllegalArgumentException: XML fragments parsed

java.lang.IllegalArgumentException: XML fragments parsed from previous mappers does not contain value for com.xxx.xxx.xxx.xxx.dao.SingleApasInfoDao.selectListCondition 目录 【项目问题解决】 java.lang.IllegalArgumentException: XML fragments parsed from pr…

嵌入式之译码器

系列文章目录 译码器嵌入式之译码器 嵌入式之译码器 系列文章目录一、译码器定义二、常见类型的译码器三、工作原理 一、译码器定义 译码器(Decoder)是一种数字电路,其主要功能是从输入的编码信号中解码出特定的信息或控制信号。 译码器通常…

树与二叉树的概念介绍

一.树的概念及结构: 1.树的概念: 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的 有…

【记录】初次本地搭建的模型-MiniCPM 2B

前言 查阅众多开源大模型后,打算动手尝试搭建端侧模型,看看效果。选中MiniCPM主要是因为参数小,同时中文支持相对较好。 首先对按照官网提供的demo进行了尝试,然后在colab中完成了一个webui程序并测试,最后通过docker环…

【MATLAB】去除趋势项(解决频谱图大部分为零的问题)

1.概 述 在许多实际信号分析处理中信号经FFT变换后得到的频谱谱线值几乎都为0,介绍这是如何形成的,又该如何去解决。 2.案例分析 读入一组实验数据文件(文件名为qldata.mat),作出该组数据的频谱图。程序清单如下: clear; clc; close all;…

3.5 四个子空间的维度

一、概述 这一节的主要定理是将秩与维度联系在一起。矩阵的秩就是主元的个数,子空间的维度是基向量的个数,我们计算出这两个数就可以得到秩与维度。 A A A 的秩揭露了四个基本子空间的维度。 四个子空间中,两个子空间来自 A A A&#xff0c…

第十七讲:结构体

第十七讲:结构体 1.初始结构体1.1结构体声明1.2结构体变量的创建和初始化1.2.1结构体变量的创建1.2.2结构体变量的初始化1.2.2.1普通初始化1.2.2.2结构体数组1.2.2.3结构体指针 1.3typedef定义结构体1.4结构体的自引用1.5结构体的特殊声明 2.结构体内存对齐2.1对齐规…

基于STM32实现智能空气净化系统

目录 引言环境准备智能空气净化系统基础代码示例:实现智能空气净化系统 空气质量传感器数据读取风扇和滤网控制显示系统用户输入和设置应用场景:家庭空气净化与健康管理问题解决方案与优化收尾与总结 1. 引言 本教程将详细介绍如何在STM32嵌入式系统中…

Day 40 Web容器-Tomcat

Tomcat 一:Tomcat简介 1.简介 ​ Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目 ​ Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器 ​ Tomcat是WEB容器/WE…

idea中git拉取失败

之前clone好好的,今天突然就拉取不下来了。很多时候是用户凭证的信息没更新的问题。由于window对同一个地址都存储了会话。如果是新的会话,必须要更新window下的凭证。 然后根据你的仓库找到你对应的账户,更新信息即可。