【IC前端虚拟项目】MVU模块方案与背景熟悉

news2024/11/23 12:07:12

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客

mvu这个模块是干嘛用的呢?从这个名字就可以看出来move_unit,应该是做数据搬运的。很多指令级中都会有数据搬运的指令,这类指令的作用一般是在片内片外缓存以及通用专用寄存器之间搬运数据,比如典型的riscv里的load/store指令。

而mvu这个模块处理的指令就是move指令,指令的作用是在ram和ddr之间搬运数据。比如需要做三维卷积,那么可能需要把特征和权重先从ddr读到ram里进行计算,计算完成后再把卷积结果从ram读回到ddr上,这种场景就是mvu要做的事情了。

mvu上游的模块是idu,顾名思义就是inst_decode_unit,指令解码模块。众所周知,处理器的处理流程包括取指、译码、执行、写回、提交等,idu负责的就是译码。 idu接收到指令后对指令进行分析,发现这是一条move指令之后,将指令发送给mvu有mvu负责处理。mvu根据指令进行数据的搬运,将所有的数据搬运完成后向idu进行指令提交。

简单点来说mvu就实现5个功能:

1.接收idu下发的move指令;

2.根据指令读ddr/ram;

3.将读回的数据摆放在合理的位置;

4.根据指令把摆好的数据写回ddr/ram;

5.提交指令;

功能并不复杂,不过corner的点其实不算少。因为axi读写地址是根据数据位宽对齐的,而指令中的读写地址是按Byte对齐的,因此把读回来的数据偏移、拼接形成写数据的过程,时序上还是比较复杂的,尤其当总线位宽比较大时。

对于这个项目,基本的设计要求有如下几个:

1.缓存指令最多为数量8个,避免资源浪费;

2.单指令内通路没有反压场景下,ar/aw/w通路不应该有空拍;

3.指令间ar/aw/w允许有空拍,也可以尝试设计指令间无空拍的结构;

4.inst对应的aw/w除第一笔和最后一笔外,其他strb不允许出现0;

在此基础上,可以进一步的优化面积时序以及功能:

1.AXI相关为参数化设计,尝试对128/256/512/1024四种不同位宽在400M/800M两种时钟频率下收时序;

2.降低复位寄存器比例,提高clk_gating比例;

我自己完成的代码在90nm工艺下跑1G时钟,最大时序违规是-260ps,这个数字还是挺大的,应该说优化空间很大。在实际的项目中我们一般要求时序违规在-100ps以下即可满足要求,不过虚拟项目里,还是尽量把违规时序收到0吧。

此外,mvu模块中还引入了寄存器单元,通过寄存器进行相关的配置和模块状态的反馈。通过这部分练习,能够系统的掌握寄存器单元的设计、实现与仿真。

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

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

相关文章

网络安全项目实战(三)--报文检测

6. TCP/IP协议栈及以太网帧 目标 了解TCP/IP协议栈的组织结构掌握以太网帧的数据格式定义能应用编码实现以太网帧的解析方法 6.1. TCP/IP 协议栈 TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层&#xf…

使用Python监控服务器在线状态

前言 在公司内网有一台服务器,有动态的公网IP,使用DDNS对外提供服务,但是会因为停电、服务器卡死等原因导致服务器离线。服务器离线后无法及时获知,因此需要实现在服务器离线的时候能够发送消息到手机上。 思路梳理 公司办理的…

第31期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

CSS特效029:超逼真的3D篮球弹跳,含挤压弹起模态

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧,主要包含CSS布局,CSS特效,CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点,CSS特效主要是一些动画示例,CSS花边是描述了一些CSS…

【云原生kubernets】Service 的功能与应用

一、Service介绍 在kubernetes中,pod是应用程序的载体,我们可以通过pod的ip来访问应用程序,但是pod的ip地址不是固定的,这也就意味着不方便直接采用pod的ip对服务进行访问。为了解决这个问题,kubernetes提供了Service资…

nestjs守卫/全局守卫校验jwt

一、守卫 目标 部分接口需要用户登录后才可以访问,用户登录后可以颁发 jwt_token 给前端,前端在调用需要鉴权的接口,需要在请求头添加 jwt_token,后端校验通过才能继续访问,否则返回403无权访问 创建守卫 anth 安装…

【期末复习向】常见的激活函数

激活函数是非线性的函数,使用它的原因就是因为线性函数无论叠加多少层,最终带来的变化都是线性的组合,一般也只能用于线性分类,如经典的多层感知机。但是如果加上非线性的变换,根据通用近似定理,就可使得神…

python+pytest接口自动化(15)-日志管理模块loguru简介

python自带日志管理模块logging,使用时可进行模块化配置, 但logging配置起来比较繁琐,且在多进行多线程等场景下使用时,如果不经过特殊处理,则容易出现日志丢失或记录错乱的情况。 python中有一个用起来非常简便的第…

鸿蒙开发组件之DatePicker

一、功能 DatePicker是鸿蒙开发中的日期组件,主要用来日期的选择。样式如下 二、初始化一个DatePicker DatePicker({start:new Date(1970-01-01),end: new Date(2035-12-31)})当然我们的start和end参数是可选的,不必须传递,所以初始化也可以…

【动态规划】06路径问题_不同路径II_C++(medium)

题目链接:leetcode不同路径II 目录 题目解析: 算法原理 1.状态表示 2.状态转移方程 3.初始化 4.填表顺序 5.返回值 编写代码 题目解析: 题目让我们求在考虑网格中有障碍物的情况下,从左上角到右下角将会有多少条不同的路径…

【ARM Trace32(劳特巴赫) 使用介绍 14 -- Go.direct 介绍】

请阅读【Trace32 ARM 专栏导读】 文章目录 Trace32 Go.directGo配合程序断点使用Go 配合读写断点使用Go 快速回到上一层函数 System.Mode Go Trace32 Go.direct TRACE32调试过程中,会经常对芯片/内核进行控制,比如全速运行、暂停、单步等等。这篇文章先…

出现 Error:Unable to access jarfile xxxx\target\nacos-server.jar 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 执行Nacos中的startup.cmd的时候出现闪退,于是在该脚本的最后一行添加pause,查看因为什么原因闪退 出现的bug如下所示:Error:Unable to access jarfile xxxx\target\nacos-server.jar 截图如下所示: 查看内部文件夹,…

德语 Alt 代码表

德语的 Alt 代码表,请参考下图。 输入方法就是按住 Alt 键不松开,然后在小键盘上输入字符,松开 Alt 键,计算机就能输出上面的字符了。 德语 Alt 代码表 - 系统容器 - iSharkFly德语的 Alt 代码表,请参考下图。 输入方…

c语言为什么要引入数据类型

大家好,今天给大家介绍c语言为什么要引入数据类型,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 在本人看来,C语言引入数据类型的原因主要有以下几点: 数…

消息中间件比较

那都有哪些中间件可供选择呢。其实现在主流的消息中间件就4种:kafka、ActiveMQ、RocketMQ、RabbitMQ 下面我们来看一下,他们之间有什么区别,他们分别应该用于什么场景 ActiveMQ 我们先看ActiveMQ。其实一般早些的项目需要引入消息中间件&…

集群监控Zabbix和Prometheus

文章目录 一、Zabbix入门概述1、Zabbix概述2、Zabbix 基础架构3、Zabbix部署3.1 前提环境准备3.2 安装Zabbix3.3 配置Zabbix3.4 启动停止Zabbix 二、Zabbix的使用与集成1、Zabbix常用术语2、Zabbix实战2.1 创建Host2.2 创建监控项(Items)2.3 创建触发器&…

寻找最大整数 C语言xdoj51

问题描述 从键盘输入四个整数&#xff0c;找出其中的最大值并将其输出。 输入说明 输入4个整数&#xff0c;用空格分隔 输出说明 输出值最大的一个整数 输入样例 25 99 -46 0 输出样例 99 #include <stdio.h>//寻找最大整数 int main() {int i, a[4]…

5 转向事件驱动的架构

文章目录 核心概念消息代理事件和消息了解事件异步消息通信响应式系统 事件驱动的利弊消息传递模式发布—订阅工作队列过滤器数据持久性 消息传递代理协议、标准和工具AMQP和RabbitMQ基本概念交换类型和路由消息确认和拒绝 设置RabbitMQ安装RabbitMQRabbitMQ管理界面 Spring AM…

Unity_FairyGUI发布导入Unity编辑器资源报错

Unity_FairyGUI发布导入Unity编辑器资源报错 报错&#xff1a; FairyGUI: settings for Assets/UI/XMUI/XMSubway_atlas0.png is wrong! Correct values are: (Generate Mip Mapsunchecked) UnityEngine.Debug:LogWarning (object) FairyGUI.UIPackage:LoadAtlas (FairyGUI.P…

用Go汇编实现一个快速排序算法

本代码全网首发&#xff0c;使用Go plan9 windows arm64汇编&#xff0c;实现基础版快速排序算法。 未引入随机因子的快速排序的普通Go代码长这样。 func QuickSort(arr []int) {if len(arr) < 1 {return}base, l, r : arr[0], 0, len(arr)-1for i : 1; i < r; {if arr…