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 上运行的软件栈中。"

结论

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

 

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

三丰云免费虚拟主机和免费云服务器评测

三丰云是一家专业的云服务提供商,为用户提供免费虚拟主机和免费云服务器服务。通过对三丰云的使用体验,我对他们的服务进行了评测。首先,三丰云的免费虚拟主机性能稳定,网站加载速度快,给用户提供了良好的访问体验。其…

R可视化:另类的箱线图

介绍 方格状态的箱线图 加载R包 knitr::opts_chunk$set(echo TRUE, message FALSE, warning FALSE) library(patternplot) library(png) library(ggplot2) library(gridExtra)rm(list ls()) options(stringsAsFactors F)导入数据 data <- read.csv(system.file(&qu…

数据集005:螺丝螺母目标检测数据集(含数据集下载链接)

数据集简介 背景干净的目标检测数据集。 里面仅仅包含螺丝和螺母两种类别的目标&#xff0c;背景为干净的培养皿。图片数量约420张&#xff0c;train.txt 文件描述每个图片中的目标&#xff0c;label_list 文件描述类别 另附一个验证集合&#xff0c;有10张图片&#xff0c;e…

力扣503. 下一个更大元素 II

Problem: 503. 下一个更大元素 II 文章目录 题目描述思路复杂度Code 题目描述 思路 由于此题是环形数组&#xff0c;我们在利用单调栈模板的基础上还需要将给定数组扩大一倍&#xff0c;但实际上我们只需要利用取余的操作模拟扩大数组即可&#xff08;具体操作看代码。在解决有…

800HZ电源-高频电源行业的明星

一、800Hz电源的简介&#xff1a; 800Hz电源&#xff0c;顾名思义&#xff0c;是一种专为满足通信系统中特定频率要求而设计的电源。通常&#xff0c;800Hz电源具有极高的稳定性和精确度&#xff0c;能提供稳定的电压输出&#xff0c;确保通信设备如交换机、基站、无线路由器等…

【设计模式】JAVA Design Patterns——Commander(指挥官模式)

&#x1f50d;目的 用于处理执行分布式事务时可能遇到的所有问题。 &#x1f50d;解释 处理分布式事务很棘手&#xff0c;但如果我们不仔细处理&#xff0c;可能会带来不想要的后果。假设我们有一个电子商务网站&#xff0c;它有一个支付微服务和一个运输微服务。如果当前运输…

香橙派Kunpeng Pro测评:他给的实在太多了

文章目录 一、开箱环节1、包装配置2、开发板包装3、开发板3.1、开发版正面3.2、开发板背面 二、硬件配置1、硬件配置清单 2、配置图解 三、开机~启动&#xff01;1、运行系统1.1、外设配置1.2、系统启动1.3、官方教程 2、openEuler系统概览 四、系统测试1、性能测试1.1、安装sy…

如何基于springboot构建cas最新版源码?

环境准备 下载JDK21 https://download.oracle.com/java/21/archive/jdk-21.0.2_windows-x64_bin.zip下载gradle 8.5并配置环境变量 https://gradle.org/next-steps/?version8.5&formatbin下载项目git clone http://gitlab.ruishan.cc/meta/anka-authentication.git 开始…

UI问题 --- CardView和其它的控件在同一布局中时,始终覆盖其它控件

原本代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"40dp"android:layout_height"wrap_content"andr…

for循环绑定id,更新html页面的文字内容

需求&#xff1a;将方法中内容对齐 实现方式 给for循环中每个方法添加一个动态的id在DOM结果渲染完后&#xff0c;更新页面数据&#xff0c;否则会报错&#xff0c;找不到对应节点或对应节点为空 <view v-for"(item, index) in itemList" :key"index"…

Java面试八股之Synchronized锁升级的原理

Synchronized锁升级的原理 Synchronized锁升级是Java为了提高并发性能而引入的一项优化措施&#xff0c;这一机制主要发生在JDK 1.6及之后的版本中。Synchronized锁升级旨在减少锁带来的性能开销&#xff0c;通过从低开销的锁逐步升级到高开销的锁&#xff0c;以适应不同的竞争…

Swagger测试接口,请求头添加token

概述Swagger 1、概述 在日常开发中&#xff0c;我们的业务需要用户登录&#xff0c;权限控制。但是在某些情况下我们使用Swagger测试接口&#xff0c;部分接口需要携带token&#xff0c;才能访问&#xff0c;就需要在swagger添加token窗口。 效果图&#xff1a; 由 右上角 A…

统计计算四|蒙特卡罗方法(Monte Carlo Method)

系列文章目录 统计计算一|非线性方程的求解 统计计算二|EM算法&#xff08;Expectation-Maximization Algorithm&#xff0c;期望最大化算法&#xff09; 统计计算三|Cases for EM 文章目录 系列文章目录一、基本概念&#xff08;一&#xff09;估算 π \pi π&#xff08;二&…

现代 c++ 三:移动语义与右值引用

移动语义很简单&#xff0c;但它相关联的术语很复杂。本文尝试从历史的角度解释清楚这些乱七八糟的术语及其关联&#xff1a; 表达式 (expression)、类型&#xff08;type&#xff09;、值类别 (value categories)&#xff1b; 左值 (lvalue)、右值 (rvalue)、广义左值 (glval…

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第30课-门的移动动画

【WEB前端2024】开源智体世界&#xff1a;乔布斯3D纪念馆-第30课-门的移动动画 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎…

UML-系统架构师(二)

1、UML&#xff08;Unified Modeling Language&#xff09;是面向对象设计的建设工具&#xff0c;独立于任何具体程序设计语言&#xff0c;以下&#xff08;&#xff09;不属于UML中的模型。 A用例图 B协作图 C活动图 DPAD图 解析&#xff1a; UML一共14种图 结构图&…

【传知代码】私人订制词云图-论文复现

文章目录 概述原理介绍核心逻辑1、选取需要解析的txt文档2、选取背景图明确形状3、配置停用词4、创建分词词典&#xff0c;主要解决新的网络热词、专有名词等不识别问题 技巧1、中文乱码问题&#xff0c;使用的时候指定使用的文字字体2、更换背景图3、词库下载以及格式转换方式…

vscode在Ubantu键位错乱问题

摘要&#xff1a;抄的vscode键位错乱_有没有在使用vscode时偶尔遇到退格键无法正常删除内容的情况?如果有的话,你是如何-CSDN博客 只是作为记录&#xff0c;查找方便

ThreadLocal一步梭哈

大家好&#xff0c;这里是教授.F 引入&#xff1a; 1. ThreadLocal 的作用&#xff0c;可以实现在同一个线程数据共享, 从而解决多线程数据安全问题. 2. ThreadLocal 可以给当前线程关联一个数据(普通变量、对象、数组)set 方法[源码!] 3. ThreadLocal 可以像 Map 一样存取数据…

vue3中表格中通过判断某个字段来设置对应按钮和消息提示的disabled展示

vue3中表格中通过判断某个字段来设置对应按钮和消息提示的disabled展示 一、前言1.代码案例2.效果展示 一、前言 当使用 Vue 3 和 Element UI 的 el-table 组件时&#xff0c;你可以通过判断字段的值来设置对应的 el-button 的 disabled 属性和消息提示。下面是一个简单的示例…