Rocket之加速器

文章目录

  • RoCC简介
  • riscv-tools
    • pk
  • 加速器
  • fpga-zynq
  • 测试
      • 测试样例
      • 测试结果
  • 参考文献

RoCC简介

Rocket Custom Coprocessor

riscv-tools

  • 由于custom指令并不是标准指令集的一部分,所以最新的risc-tools(汇编器)不支持直接写custom0指令。
  • riscv-tools还是为custom指令预留了opcode。
  • 可以参考这里。直接将custom指令转换成二进制。核心代码如下:
#define XCUSTOM(x, rd, rs1, rs2, funct)         \XCUSTOM_OPCODE(x)                   |         \(rd                   << (7))       |         \(0x3                  << (7+5))     |         \((rd != 0) & 1        << (7+5+2))   |         \(rs1                  << (7+5+3))   |         \(rs2                  << (7+5+3+5)) |         \(EXTRACT(funct, 7, 0) << (7+5+3+5+5))#define ROCC_INSTRUCTION_RAW_R_R_R(x, rd, rs1, rs2, funct)      \.word XCUSTOM(x, ## rd, ## rs1, ## rs2, funct)
// .word 可以理解为在当前地址位置放置一条指令,汇编器不对其进行处理

pk

在Rocket处理器有一个寄存器mstatus,有一个XS,只有为非0时,才会执行自定义指令。
可以通过修改pk解决这个问题,参考这里。
核心修改代码如下:

// fpga-zynq/rocket-chip/riscv-tools/riscv-pk/machine/minit.c : mstatus_init()
if (supports_extension('X'))set_csr(mstatus, (MSTATUS_XS & (MSTATUS_XS >> 1)));

具体操作如下:

cd fpga-zynq/rocket-chip/riscv-tools/riscv-pk
git apply rocket-rocc-examples/patches/riscv-pk.patch
mkdir build
cd build
../configure --prefix=$RISCV/riscv64-unknown-elf --host=riscv64-unknown-elf
make
make install
scp pk root@192.168.1.5:/home/root

加速器

fpga-zynq

修改位置:fpga-zynq/common/src/main/scala/Configs.scala

class RoccExampleConfig extends Config(new WithBootROM ++ new freechips.rocketchip.system.RoccExampleConfig)
class RoccZynqConfig extends Config(new WithZynqAdapter ++ new RoccExampleConfig)
class RoccZynqFPGAConfig extends Config(new WithoutTLMonitors ++ new RoccZynqConfig)

执行命令

cd zedboard
make rocket CONFIG=RoccZynqFPGAConfig
make project CONFIG=RoccZynqFPGAConfig
// 之后用vivado生成bit流

测试

测试样例

https://github.com/seldridge/rocket-rocc-examples/blob/master/pk/accumulator.c

测试结果

在这里插入图片描述

参考文献

  • http://www.doc88.com/p-2783563467689.html
  • http://www-inst.eecs.berkeley.edu/~cs250/fa13/handouts/lab3-sumaccel.pdf
  • https://github.com/riscv/riscv-gnu-toolchain/issues/190
  • https://github.com/seldridge/rocket-rocc-examples

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

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

相关文章

网页加速器1.0.5.6 免费版

介绍 dns网页加速器(SetDns优化器)是一款专业的网页加速工具。dns网页加速器可以帮助您加速网页打开速度&#xff0c;软件操作简单&#xff0c;使用方便&#xff0c;不需要安装就可以使用。PC下载网为您提供dns网页加速器下载&#xff0c;欢迎前来下载。 下载链接 http://w…

考研复试专业课面试——数据结构

记&#xff1a;此篇博客是关于考研复试中专业课面试的相关知识点&#xff0c;按个人理解来总结的&#xff0c;用来锻炼自己的逻辑思维&#xff0c;可能不太准确&#xff0c;希望指正。 1、数组和链表的区别&#xff1f; 从逻辑结构来看&#xff1a;数组的存储长度是固定的&…

考研计算机网络复试题目整理

计算机网络复试题目自整理 大家觉得有用点点赞啊可以升级升到3级我就可以自定义标签了谢谢~ 说复试题目过于牵强&#xff0c;只是自己整理的一些知识点而已&#xff0c;为了便于理解和背诵&#xff0c;有些部分定义和说明尽量简明扼要&#xff0c;如有错误请多多指教&#xf…

计算机考研408复试题汇总

408复试 0x01 数据库0x02 计算机网络0x03 操作系统0x04 计算机组成原理0x05 数据结构0x06 面向对象程序设计0x07 软件开发0x08 拓展知识 ⭐️大部分来源原博客按照实际需求压缩和修正了一些 也是用不太到了&#xff0c;就是对本科学习做个简简单单的复习吧. 0x01 数据库 事务…

保研面试/考研复试概率论与数理统计问题整理

1. 古典概型、几何概型 古典概型——有限等可能&#xff08;有限个可能事件&#xff0c;且每个事件都是等可能概率事件&#xff09;几何概型——无限等可能 2. 条件概率 若 P ( B ) > 0 P(B)>0 P(B)>0&#xff0c;称在 B B B 发生的条件下&#xff0c; A A A 发生…

计算机考研复试面试题专业知识整理

目录 常考题1、抽象类和接口的区别2、什么时候用抽象类或接口3、Java跨平台怎么实现4、软件工程的各阶段及需求分析的任务和作用5、进程与线程6、主存的分类7、SRAM和DRAM的区别8、多线程通信如何保证9、c静态成员的作用&#xff1f;你写过的代码怎么使用的&#xff1f;10、c构…

计算机考研复试面试常问问题 数据结构篇(上)

计算机考研复试面试常问问题 数据结构篇&#xff08;上&#xff09; 使用前需知&#xff08;拒绝白嫖&#xff0c;如果对你有帮助&#xff0c;你只需点个赞就行&#xff09;&#xff1a; 需要pdf直接打印版&#xff0c;可在公众号"程序员宝藏"回复复试上岸获取(会持…

对正在准备2022年哈尔滨工程大学计算机类考研复试的考生的一些建议

1. 概要 在2021年&#xff0c;哈尔滨工程大学计算机类考研复试是在线上进行的&#xff0c;使用的学信网的复试系统。主要是分为以下几个部分&#xff1a;中文自我介绍、英文自我介绍和英语翻译、两门专业课的选择题、程序阅读题、思想品德问答和工程实践问答。 2. 复试需要准…

计算机面试(考研复试)问题整理

中科大复试准备 数据结构->操作系统->计算机网络->通信原理->微机原理-> 软件工程&#xff0c;编译原理&#xff0c;数据库 计算机考研复试整理 PDF文件自取 数据结构 1. 时间复杂度 时间复杂度是指执行算法所需要的计算工作量&#xff0c;因为整个算法的执行…

计算机考研复试整理

这些是我在复试时&#xff0c;自己搜集的一些资料&#xff0c;加自己的理解&#xff0c;有许多不足或有错误的地方&#xff0c;好像还有好多错别字&#xff0c;大家看看就好&#xff01;&#xff01;&#xff01; 1、基本分页管理与基本分段管理的区别。 应该比较简单 但还是…

计算机考研复试面试题整理

考研复试面试题整理 文章目录 前言数据结构部分操作系统部分计算机网络部分CJAVA编译原理软件工程排序算法专题 前言 笔者刚刚参加完2022年考研复试&#xff0c;现将复试过程中自己整理的部分面试题整理出来&#xff0c;仅供参考。 数据结构部分 1.数据结构按逻辑结构可以分为…

chatgpt赋能python:Python关键字详解

Python关键字详解 Python是一种高级编程语言&#xff0c;是一种被广泛应用于各种领域的脚本语言。Python具有简洁、易读、易维护等优点&#xff0c;受到了全球程序员的喜爱。Python的关键字是其语言的重要组成部分&#xff0c;本篇文章将介绍Python的关键字&#xff0c;并详细…

chatgpt赋能python:Python关键字yield介绍

Python关键字yield介绍 Python语言的关键字yield&#xff0c;虽然比较简单&#xff0c;但是在实际编程中非常常见且重要。在这篇文章中&#xff0c;我们将介绍yield的定义及其在生成器函数中的作用。我们还将深入探讨yield的用法和优点&#xff0c;以及如何将其应用到实际代码…

chatgpt赋能python:Python关键字raise详解

Python关键字raise详解 在Python编程中&#xff0c;raise是一个非常重要的关键字。它能够帮助开发者在程序运行过程中检测到错误或异常&#xff0c;并进行相应的处理。本文将对raise关键字进行详细介绍&#xff0c;帮助开发者更好地理解和应用该关键字。 raise关键字的作用 …

chatgpt赋能python:Python关键字总结

Python关键字总结 **Python关键字&#xff08;Keywords&#xff09;**是在编程语言中有特定含义的预定义标识符。在Python中&#xff0c;有35个关键字用于表示特定含义的标识符。 Python中的关键字列表 以下是Python中的所有关键字列表&#xff1a; and as assert…

chatgpt赋能python:Python关键字查询方法

Python关键字查询方法 在Python编程中&#xff0c;关键字是指具有特殊含义和用途的保留字&#xff0c;不能被用作变量名、函数名等标识符。Python语言目前共有35个关键字。 如果你是一名Python开发者或学习者&#xff0c;有时候需要查询某个标识符是否是Python的关键字。本文…

chatgpt赋能python:Python关键字搜索优化指南

Python 关键字搜索优化指南 如果你是一个 Python 工程师&#xff0c;你可能常常面临一些需要优化的问题。在这些问题中&#xff0c;其中一个重要的问题就是搜索引擎的优化。为了让你的 Python 相关网站更容易被搜索引擎找到&#xff0c;你需要进行关键字的搜索优化。 什么是搜…

目标检测算法——将xml格式转换为YOLOv5格式txt

深度学习Tricks&#xff0c;第一时间送达 XML:即可扩展标记语言&#xff0c;XML全称是Extensible Markup Language&#xff0c;中文译为可扩展的标记语言&#xff0c;它是SGML&#xff08;标准通用标记语言&#xff09;的一个子集&#xff0c;与hxml文件不同的是&#xff0c; X…

单品GMV破千万,这些品类正在抖音热卖

优势品类及核心产品能更好触达消费者&#xff0c;以较低的成本让用户感知品牌&#xff0c;塑造品牌力。 抖音作为品牌最核心的线上渠道之一&#xff0c;该如何找到平台优势品类&#xff1f;制定品牌营销策略&#xff1f;有效提升产品销量呢&#xff1f; 近期&#xff0c;新抖上…

弘辽科技:抖音带货如何提高流量转化率

抖音带货最核心的问题就是提高转化率。一个视频发布后&#xff0c;用户点开你的商品链接并且下单了&#xff0c;就产生了转化。 那么&#xff0c;短视频带货转化的秘诀是什么呢&#xff1f; 一、人物 1、打造独特IP 想要提高抖音带货转化率&#xff0c;打造清晰的人设和年轻化…