0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

易灵思FPGA RISC-V自定义指令的使用方法

易灵思官微 来源:易灵思官微 2025-11-24 11:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

RISC-V(Reduced Instruction Set Computing-V)是一个开源指令集架构(ISA),它的设计目标是提供一个简洁、可扩展且高效的指令集,适用于各种应用场景,从低功耗设备到高性能计算。易灵思提供完整的RISC-V 解决方案,致力于让开发者和硬件设计人员可以根据需要自定义和扩展指令集,且无需担心专有技术的限制。

RISC-V的特点:

简洁高效:RISC-V采用精简的指令集,使得每条指令的执行时间更短,提高了处理器的性能。

模块化设计:RISC-V支持通过扩展来增强处理器功能,比如加速浮点运算、增加原子操作指令等。

开源免费:RISC-V的开源性质允许任何人使用、修改和扩展指令集,降低了硬件开发的成本。

可定制性强:用户可以根据实际应用需求,添加或删除指令、修改处理器架构。

易灵思提供的RISC-V IP支持用户自定义指令。众所周知,自定义指令不仅能够提升特定算法的执行效率,尤其是在涉及到计算密集型或硬件加速任务时,尤其重要。例如,在数字信号处理(DSP)、图像处理或加密解密等应用中,自定义指令能够显著提高处理速度,并降低处理延迟。通过使用易灵思的Sapphire RISC-V SoC IP核,开发者可以灵活配置和生成支持自定义指令的系统设计,充分利用FPGA硬件资源进行定制化加速。这样的设计不仅满足了高性能计算的需求,也降低了开发复杂度和硬件成本。

本次讲给大家介绍易灵思RISCV的自定义指令:

在Sapphire RISC-V SoC中,支持用户定义的自定义指令,这使得开发者能够加速特定的计算任务。自定义指令接口支持R型指令格式,并通过两个寄存器rs1 和 rs2)向自定义硬件逻辑传输数据。用户可以定义最多1024个ID,每个ID对应一个特定的功能。

接下来我们先看一下R指令的格式:

a3c569cc-c4ef-11f0-8c8f-92fbcf53809c.jpg

上图是RISC-V手册中的基础的指令,我们需要重点看一下R指令格式,其中bit6:0是opcode,bit11:7是rd——作为输出,bit14:12是function3,bit19:15是rs1,bit24:20是rs2,bit31:25是function7。

其中function3和function7共10bit,因此支持1024个功能ID。

自定义指令的使用方法:

RISCV DIE中定义指令:用户可以通过定义一个特定的功能ID来指定指令的行为。

FPGA测处理 对应的接口信号

a4249f0a-c4ef-11f0-8c8f-92fbcf53809c.jpg

cmd_valid:指令是否有效,表明指令数据已经准备好。

cmd_ready:表示硬件逻辑是否准备好接收指令。

function_id:指定自定义指令的功能ID,用于标识不同的自定义操作。

inputs_0 和 inputs_1:分别对应传递到自定义硬件逻辑的两个输入寄存器 rs1 和 rs2。

rsp_valid:指示自定义指令的处理结果是否有效。

rsp_ready:表示处理器是否准备好接收结果。

outputs_0:存储自定义指令的处理结果,通常会返回到处理器寄存器中。

用户自定义指令的时序图:

a4807c1c-c4ef-11f0-8c8f-92fbcf53809c.jpg

其中function_id是R指令的function7和function3,{ function7, function3}。

用户可以根据function_id和接收到的input0和input_1处理自己的逻辑,比如矩阵加速运算等。

那么在RISC-V开发中如何撰写自己的代码呢?其实在生成RISCV的参考例子中,我们可以看到有一个用户自定义命令的demo(customInstructionDemo),在这个例子中我们可以看到如下的代码:

a4dd8786-c4ef-11f0-8c8f-92fbcf53809c.jpg

其中tea_l和tea_u传入rs1和rs2的寄存器的值,也就是对应时序图中的input_0和input_1,CUSTOM0保持不变,其实等于0x0B,而第二个和第三个参数对应的是function3和function7,对应的是时序图中的function_id信号,另外我们观察这个宏定义,有句话:[rd] "=r" (__v) , 表示将汇编语句的结果输出到一个名为__v的变量中,这个变量通过"=r"指定为一个通用寄存器(r)。rd是目标寄存器,通常是结果存储的地方。也就是接收将时序图中的outputs_0信号,然后返回给C语言程序处理。

Demo采用一个加密算法,分别通过RISCV计算和FPGA测的逻辑计算进行对比,其结果表明拥有36倍的加速性能:

a53b6e6e-c4ef-11f0-8c8f-92fbcf53809c.jpg

自定义指令可以显著提高特定算法的处理效率,尤其是在涉及到频繁运算或者特定硬件加速的任务中,比如数字信号处理(DSP)、图像处理或加密解密等。相信通过使用Efinix的Efinity软件,开发者可以配置和生成支持自定义指令的Sapphire SoC设计,进一步增强系统的功能与性能,加快您的设计。

随着易灵思提供的Efinity开发平台和RISC-V架构的强大支持,开发者能够在不依赖专有技术的前提下,根据具体应用需求快速实现硬件加速方案。这种高度可定制性使得RISC-V架构在面向未来的计算密集型应用中,具有巨大的潜力和竞争优势。通过自定义指令的灵活应用,开发者能够在实现高性能和低功耗的同时,进一步提升系统的整体效率和可靠性。

因此,无论是在高效的硬件加速应用中,还是在需要快速响应和高吞吐量的实时系统中,易灵思的RISC-V IP核与自定义指令的结合,提供了一个理想的解决方案,助力开发者在更短的时间内实现创新,推动技术的快速发展。

易灵思公司介绍

易灵思是一家国产FPGA公司,总部位于深圳前海。公司凭借自主可控的Quantum硬件架构,采用逻辑和路由可以互换的XLR结构,实现了创新的产品设计与软件算法,使得FPGA产品具备低功耗、小体积、高密度、高性能等优势。已量产的40nm Trion系列及16nm钛金系列 FPGA产品,广泛应用于机器视觉、显示、工业控制、医疗、汽车、AI通信等终端领域。

重要产品

a65728b0-c4ef-11f0-8c8f-92fbcf53809c.png

钛金系列FPGA具有增强的Quantum架构,16nm工艺,35K 至 1,000K 逻辑单元,超高性能 300-500MHz,封装最小可至3.5mm*3.4mm@60K LE,功耗低至竞争对手的1/4,硬核资源丰富,最新产品TJ375现已量产。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1664

    文章

    22509

    浏览量

    639513
  • 开源
    +关注

    关注

    3

    文章

    4368

    浏览量

    46464
  • RISC-V
    +关注

    关注

    49

    文章

    2954

    浏览量

    53599
  • 易灵思
    +关注

    关注

    6

    文章

    66

    浏览量

    5606

原文标题:易灵思FPGA RISC-V 如何使用自定义指令加速设计

文章出处:【微信号:易灵思官微,微信公众号:易灵思官微】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NIOS II自定义指令设计之实例篇

    在【原创】SOPC用户自定义指令设计之软件篇  和【原创】SOPC用户自定义指令设计之硬件篇 中分别讲述了自定义
    发表于 03-27 17:56 3621次阅读
    NIOS II<b class='flag-5'>自定义</b><b class='flag-5'>指令</b>设计之实例篇

    Sapphire SoC中RISC-V平台级中断控制器深度解析

    随着 RISC -V处理器在 FPGA 领域的广泛应用,
    的头像 发表于 11-08 09:35 8068次阅读
    <b class='flag-5'>易</b><b class='flag-5'>灵</b><b class='flag-5'>思</b>Sapphire SoC中<b class='flag-5'>RISC-V</b>平台级中断控制器深度解析

    如何使用RISC-V创建自定义处理器

    采用RISC-V来替代其自定义体系结构。该体系结构吸引人的一个关键特征是,CPU开发人员可以在不牺牲为基本标准创建的工具和库的适用性的情况下,使RISC-V功能适应其需求。适应的关键在于了解R
    的头像 发表于 04-14 15:55 5154次阅读
    如何使用<b class='flag-5'>RISC-V</b>创建<b class='flag-5'>自定义</b>处理器

    采用汇编指示符来使用自定义指令

    、采用.insn汇编指示符实现risc-v自定义指令。这种方式可以指定工具来选择寄存器,也可以自己选定寄存器。指令格式如下(引自gnu 汇编器手册): 演示案例可以查看芯来
    发表于 10-28 06:02

    为什么选择RISC-V

    以前更早的时间提出建议。结果是折衷方案更少的解决方案。RISC-V还支持需要特殊加速或特殊功能的设计的自定义指令。董事会设计师除了冻结的ISA好处外,RISC-V的开放式ISA还可以提
    发表于 07-27 17:38

    请问RISC-V自定义指令如何保持软件的兼容性?

    请问RISC-V自定义指令如何保持软件的兼容性?
    发表于 06-17 07:51

    SOPC中自定义外设和自定义指令性能分析

    SOPC中自定义外设和自定义指令性能分析 NiosII是一个建立在FPGA上的嵌入式软核处理器,灵活性很强。作为体现NiosII灵活性精髓的两个最主要方面,自
    发表于 03-29 15:12 1922次阅读
    SOPC中<b class='flag-5'>自定义</b>外设和<b class='flag-5'>自定义</b><b class='flag-5'>指令</b>性能分析

    Codasip采用Imperas技术来强化其RISC-V处理器验证优势

    RISC-V是一种模块化架构,它可提供由许多不同基本指令、标准可选扩展项和自定义指令构成的组合,这引起了业界对RISC-V实现
    发表于 11-25 14:24 1679次阅读
    Codasip采用Imperas技术来强化其<b class='flag-5'>RISC-V</b>处理器验证优势

    RISC-V以在定制芯片中引入48位计算

    RISC-V 目前没有推送任何 48 位指令。但是有些成员正在执行 48 位的自定义指令……而且它主要由中值驱动,”RISC-V Inte
    的头像 发表于 07-15 10:12 1228次阅读

    如何看待RISC-V SoC设计中自定义扩展的指令集架构

    “使用恰到好处的 RISC-V 自定义指令加速应用程序的指南”。 在为当今的许多产品设计系统时,功耗、性能和芯片面积限制了许多复杂的人工 (AI) 和机器学习 (ML) SoC 要求。 扩展开源
    发表于 07-18 15:38 2707次阅读
    如何看待<b class='flag-5'>RISC-V</b> SoC设计中<b class='flag-5'>自定义</b>扩展的<b class='flag-5'>指令</b>集架构

    RISC-V与x86、Arm争端再起

    RISC-V 被设计为模块化指令集,其基数非常小,不到 50 条指令。可以像乐高积木一样附加到基础 ISA 上的自定义内核。与依赖集成的竞争对手相比,
    发表于 11-21 11:59 1123次阅读

    新处理器使开发人员能够实现自定义指令并添加加速器

    Bluespec 宣布推出新的MCUX RISC-V处理器,使开发人员能够轻松实现自定义指令,并为FPGA和ASIC添加加速器。MCUX是Bluespec的MCU
    的头像 发表于 07-04 11:05 1216次阅读

    Out项目之增强RISC-V处理器性能的自定义硬件模块

    电子发烧友网站提供《Out项目之增强RISC-V处理器性能的自定义硬件模块.zip》资料免费下载
    发表于 07-11 10:48 0次下载
    Out项目之增强<b class='flag-5'>RISC-V</b>处理器性能的<b class='flag-5'>自定义</b>硬件模块

    RISC-V自定义计算 – 构建您的抱负

    RISC-V自定义计算 – 构建您的抱负演讲ppt分享
    发表于 07-14 17:15 0次下载

    串口屏LUA教程10-自定义串口指令

    串口屏LUA教程10-自定义串口指令
    发表于 04-29 13:17 17次下载