【RISC-V设计-04】- RISC-V处理器设计K0A之架构

news2024/11/13 15:13:10

【RISC-V设计-04】- RISC-V处理器设计K0A之架构

文章目录

  • 【RISC-V设计-04】- RISC-V处理器设计K0A之架构
    • 1. 简介
    • 2. 主要特点
    • 3. 结构框图
    • 4. 指令列表
    • 5. CSR指令集
    • 6. 中断返回指令
    • 7. 总结

1. 简介

在前几篇文章中,介绍了RISC-V处理器的结构和指令集,从本篇文章开始,介绍一个最简单的RISC-V内核,仅支持RV32E(和RV32I指令一致,但支持16个通用寄存器),并命名为RISCV-K0ARISCV-K0A是一个超轻量级的RISCV CPU内核,采用冯诺依曼结构,两级流水线,指令集为RV32E指令集(即整数指令集,16个通用寄存器),支持16个中断源。内核较为精简,面积极小、功耗低。

2. 主要特点

  1. RV32E+Zicsr指令集;
  2. 16个通用寄存器;
  3. 仅支持机器模式;
  4. 支持特权指令MRET;
  5. 实现了44条指令的处理;
  6. 两级流水线,取指、执行两个阶段;
  7. 冯诺依曼结构,指令总线和数据总线共享;
  8. 20位地址总线,最大支持1MByte地址空间;
  9. 支持16个外部中断源,支持晚到中断、咬尾中断;

3. 结构框图

BMU :总线管理单元(Bus Management Unit)
IDU :指令译码单元(Instr Decoder Unit)
ALU :算术逻辑单元(Arithmetic and Logic Unit)
GPR :通用寄存器(General Purpose Register)
CIC :核内中断控制器(Core Interrupt Contoller)
CSR :控制与状态寄存器(Control and Status Register)

4. 指令列表

序号类型指令周期功能说明
1RV32IADDI1Rd = Rs + imm立即数加法
2RV32ISLTI1Rd = Rs < imm ? 1’b1 : 1’b0立即数有符号小于
3RV32ISLTIU1Rd = Rs < imm ? 1’b1 : 1’b0立即数无符号小于
4RV32IXORI1Rd = Rs ^ imm立即数异或
5RV32IORI1Rd = Rs | imm立即数逻辑或
6RV32IANDI1Rd = Rs & imm立即数逻辑与
7RV32ISLLI1Rd = Rs << imm[4:0]立即数逻辑左移
8RV32ISRLI1Rd = Rs >> imm[4:0]立即数逻辑右移
9RV32ISRAI1Rd = Rs >>> imm[4:0]立即数算术右移
10RV32IADD1Rd = Rs1 + Rs2寄存器加法
11RV32ISUB1Rd = Rs1 - Rs2寄存器减法
12RV32ISLL1Rd = Rs1 << Rs2寄存器逻辑左移
13RV32ISLT1Rd = Rs1 < Rs2 ? 1’b1 : 1’b0寄存器有符号小于
14RV32ISLTU1Rd = Rs1 < Rs2 ? 1’b1 : 1’b0寄存器无符号小于
15RV32IXOR1Rd = Rs1 ^ Rs2寄存器异或
16RV32ISRL1Rd = Rs1 >> Rs2寄存器逻辑右移
17RV32ISRA1Rd = Rs1 >>> Rs2寄存器算术右移
18RV32IOR1Rd = Rs1 | Rs2寄存器逻辑或
19RV32IAND1Rd = Rs1 & Rs2寄存器逻辑与
20RV32ILB2Rd = M[Rs1 + imm]加载字节,有符号扩展
21RV32ILBU2Rd = M[Rs1 + imm]加载字节,无符号扩展
22RV32ILH2Rd = M[Rs1 + imm]加载半字,有符号扩展
23RV32ILHU2Rd = M[Rs1 + imm]加载半字,无符号扩展
24RV32ILW2Rd = M[Rs1 + imm]加载字
25RV32ISB1M[Rs1+imm] = Rs2存储字节
26RV32ISH1M[Rs1+imm] = Rs2存储半字
27RV32ISW1M[Rs1+imm] = Rs2存储字
28RV32IJAL1Rd = PC + 4; PC = PC + imm带返回的PC跳转
29RV32IJALR1Rd = PC + 4; PC = Rs + imm带返回的寄存器跳转
30RV32IBEQ1if(Rs1 == Rs2) PC = PC + imm相等跳转
31RV32IBNE1if(Rs1 != Rs2) PC = PC + imm不等跳转
32RV32IBLT1if(Rs1 < Rs2) PC = PC + imm小于跳转
33RV32IBGE1if(Rs1 >= Rs2) PC = PC + imm大于等于跳转
34RV32IBLTU1if(Rs1 < Rs2) PC = PC + imm无符号,小于跳转
35RV32IBGEU1if(Rs1 >= Rs2) PC = PC + imm无符号,大于等于跳转
36RV32ILUI1Rd = imm << 12加载立即数
37RV32IAUIPC1Rd = PC + (imm<<12)根据PC加载立即数
38ZicsrCSRRW1Rd = CSR; CSR = RdCSR寄存器读、写
39ZicsrCSRRS1Rd = CSR; CSR = CSR | RdCSR寄存器读、置1
40ZicsrCSRRC1Rd = CSR; CSR = CSR & ~RdCSR寄存器读、清0
41ZicsrCSRRWI1Rd = CSR; CSR = immCSR立即数读、写
42ZicsrCSRRSI1Rd = CSR; CSR = CSR | immCSR立即数读、置1
43ZicsrCSRRCI1Rd = CSR; CSR = CSR & ~immCSR立即数读、清0
44PrivMRET1PC = mepc中断返回指令

5. CSR指令集

I型指令:CSR指令
序号指令
31
20
19
15
14
12
11
7
6
0
1CSRRWcsrrs001rd1110011
2CSRRScsrrs010rd1110011
3CSRRCcsrrs011rd1110011
4CSRRWIcsrrs001rd1110011
5CSRRSIcsrrs010rd1110011
6CSRRCIcsrrs011rd1110011
CSRRW:
指令形式:csrrw rd, csr, rs1
指令功能:CSR寄存器读后写。记csr值为t,将rs1写入csr,再将t写入rd。
CSRRS:
指令形式:csrrs rd, csr, rs1
指令功能:CSR寄存器读后置位。记csr值为t,将t和rs1的按位或结果写入csr,再将t 写入rd。
CSRRC:
指令形式:csrrc rd, csr, rs1
指令功能:CSR寄存器读后清位。记csr值为t,将rs1的反码和t按位与,结果写入csr,再将t写入rd。
CSRRWI:
指令形式:csrrwi rd, csr, zimm[4:0]
指令功能:CSR寄存器读后写立即数。将csr 的值复制到rd 中,再将5 位立即数zimm 的零扩展结果写入csr。
CSRRSI:
指令形式:csrrsi rd, csr, zimm[4:0]
指令功能:CSR寄存器读后置位立即数。记csr 的值为t,将5 位立即数zimm 零扩展后,和t 按位或,结果写入csr,再将t 写入rd(csr 中的第5 及更高的位不变)。
CSRRCI:
指令形式:csrrci rd, csr, zimm[4:0]
指令功能:CSR寄存器读后清位立即数。记csr 的值为t,将5 位立即数zimm 零扩展后的反码和t 按位与,结果写入csr,再将t 写入rd(csr 中的第5 及更高的位不变)。

6. 中断返回指令

特殊型指令:中断返回指令
序号指令
31
28
27
24
23
20
19
15
14
12
11
7
6
0
1MRET00110000001000000000000001100111

7. 总结

本文重点阐述了 RISCV-K0A 的基本特性、整体架构以及所支持的指令集。RISCV-K0A 致力于打造一个最为简单的 RISC-V 处理器,其在面积和功耗方面有着强烈的追求,正因如此,并不支持在线调试这一功能。在后续的几篇文章中,将会对各个子模块分别进行介绍。

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

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

相关文章

Animate软件基本概念:视频及音频

视频和音频是ANimate软件中比较重要的素材类型。 FlashASer&#xff1a;AdobeAnimate2021软件零基础入门教程https://zhuanlan.zhihu.com/p/633230084 FlashASer&#xff1a;实用的各种Adobe Animate软件教程https://zhuanlan.zhihu.com/p/675680471 FlashASer&#xff1a;A…

DSP如何进行竞价

下面根据DSP的系统构成还拆解讲解里面的各个模块&#xff0c;这一节将竞价系统&#xff0c;也就是竞价流程 0、负载均衡 增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 1、ADX发起竞价请求 上面会携带User ID等用户信息和广告信息一大堆信息。 2、解析竞价…

fastadmin 表单添加默认搜索条件

项目场景&#xff1a;员工列表&#xff0c;查看员工邀约客户明细&#xff0c;在 dialog 窗口中的 table怎么获取当前员工的数据呢&#xff1f;看似简单的需求&#xff0c;实际操作起来还是有点考究的&#xff0c;记录一下实现步骤。 页面1&#xff1a;员工列表 页面2&#xff…

sql_day14(获取各门店的面积)

描述&#xff1a;获取各门店的面积 获取各门店的面积 门店面积信息可以从分店面积明细表中获取。 先取实际经营面积(8)&#xff0c; 如果取不到&#xff08;实际经营面积为空&#xff09;再取经营面积(7)。 如果取不到&#xff08;经营面积为空&#xff09;再取合同面积(1)。…

AI大模型赋能开发者|海云安创始人谢朝海受邀在ISC.AI 2024大会就“大模型在软件开发安全领域的应用”主题发表演讲

近日&#xff0c;ISC.AI 2024 第十二届互联网安全大会在北京国家会议中心盛大开幕。作为全球规格最高、规模最大、影响力最深远的安全峰会之一&#xff0c;本次大会以“打造安全大模型 引领安全行业革命”为主题&#xff0c;聚焦安全与AI两大领域&#xff0c;吸引了众多行业领袖…

您知道Jmeter中Redirect Automatically 和 Follow Redirects的使用场景吗?

相信很多使用过jmeter的同学都没有关注过请求中的Redirect Automatically 和 Follow Redirects选项&#xff0c;如下图&#xff1a; 在 JMeter 中&#xff0c;Redirect Automatically 和 Follow Redirects 是与 HTTP 请求重定向相关的两个选项&#xff0c;它们之间是有很大区别…

Ubuntu小键盘消失,并且安装好搜狗输入法后无法打出中文的问题

Ubuntu右上角的键盘图标不见了_ubuntu虚拟机键盘选项消失了-CSDN博客解决Ubuntu18.04安装好搜狗输入法后无法打出中文的问题_ubuntu18.04 搜狗输入法无法输入中文-CSDN博客 sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2sudo apt instal…

小智常见报表-自由报表

概述 自由报表&#xff1a;具有自由设计、修改、完善的能力的报表。 应用场景 如下图所示&#xff0c;简单展示数据 示例说明 数据准备 在数据面板中添加数据集&#xff0c;可选择Json数据集和API服务数据集。Json数据集输入如下图所示&#xff1a; [{"姓名"…

Keytool:Uniapp 云打包需要生成证书的操作笔记

文章目录 背景操作步骤概述安装 Java 并检测版本生成证书 xxx.keystore问题&#xff1a;报错&#xff0c;没有权限使用证书 背景 我用 uniapp 想要用云打包&#xff0c;但是需要本机生成一个证书 操作步骤概述 安装 Java在终端输入 /usr/libexec/java_home -V 之后&#xff…

2024华为数通HCIP-datacom最新题库(H12-831变题更新⑨)

请注意&#xff0c;华为HCIP-Datacom考试831已变题 请注意&#xff0c;华为HCIP-Datacom考试831已变题 请注意&#xff0c;华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了&#xff0c;如果你准备去考试&#xff0c;还是用的之前的题库&#xff0c;切记暂缓。 如…

【Python学习笔记】序列化

【Python学习笔记】序列化 文章目录 【Python学习笔记】序列化1.python使用pickle序列化数据1.1. 环境准备1.2. 序列化datetime对象1.3. 序列化DataFrame对象1.3.1 json1.3.2 pickle 1.4 序列化list列表 2. flaskweb接口传输序列化数据2.1. bytes形式传输2.1.1. datetime对象2.…

k8s使用kustomize来部署应用

k8s使用kustomize来部署应用 本文主要是讲述kustomzie的基本用法。首先&#xff0c;我们说一下部署文件的目录结构。 ./ ├── base │ ├── deployment.yaml │ ├── kustomization.yaml │ └── service.yaml └── overlays└── dev├── kustomization.…

SpringBoot 集成 Sharding-JDBC 实现读写分离、分库分表

文章目录 一、Sharding-JDBC的应用场景二、SpringBoot 集成 Sharding-JDBC2.1、前期准备2.2、导入pom.xml依赖包2.3、结构代码实现2.3.1、MybatisPlusConfig&#xff08;分页插件&#xff09;2.3.2、TOrder&#xff08;订单对象&#xff09;2.3.3、TOrderMapper&#xff08;订单…

【论文阅读】Fourier Spectrum Discrepancies in Deep Network Generated Images

文章目录 Learning Self-Consistency for Deepfake Detection背景关键方法傅立叶谱分析图像转换分类实验讨论总结Learning Self-Consistency for Deepfake Detection 会议:NeurIPS 2020 作者: 背景 深度生成模型(GAN、VAE等)能生成与真图无法区分的逼真图像 关键 对…

批发行业进销存-库存预警 源码CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一交互代码 未来之窗_人工智能_VOS通用(数据,库存预警,1080,500);"> 二、通用代码 function 未来之窗_人工智能_VOS通用(网址,标题,宽度,高度){var 机器人默认page网址;var 未来之窗app_通用ID"未来之窗防重复";var title标题;var 机器人宽度宽度;var 机器…

Tensorflow预训练模型转PyTorch

深度学习领域是计算机科学中变化最快的领域之一。大约 5 年前&#xff0c;当我开始研究这个主题时&#xff0c;TensorFlow 被认为是主导框架。如今&#xff0c;大多数研究人员已经转向 PyTorch。 NSDT工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/…

Opencv学习-窗口交互

交互操作能够增加用户对程序流程的控制&#xff0c;使程序可以根据用户需求实现不同的处理结果。有时某一个参数需要反复尝试不同的数值&#xff0c;这时交互操作可以实现在程序运行过程中改变参数数值的作用&#xff0c;避免重复运行程序&#xff0c;节省时间&#xff0c;同时…

AI智能名片小程序源码在付费媒体与企业营销策略中的创新应用

摘要&#xff1a;在数字化浪潮的推动下&#xff0c;付费媒体已成为企业营销战略的核心组成部分。从视频流媒体平台到社交媒体&#xff0c;企业需不断探索新颖且高效的营销手段以吸引目标受众并促进业务增长。AI智能名片小程序源码&#xff0c;作为融合人工智能、小程序技术与传…

什么是实时数据仓库?它有哪些不可替代之处?

【实时数据仓库】可以分开来理解&#xff1a; ✅【实时数据】&#xff1a;即能够快速处理数据&#xff0c;且几乎无延迟的提供最新的数据的能力。 ✅【仓库管理】&#xff1a;可以理解为对仓库的库存控制、对仓库的存储优化以及协调物流。 那么实时数据仓库就是&#xff1a;…

Windows 找不到音频输入/输出设备

0.具体现象 系统音量为0&#xff0c;且无法通过任何方式调整。音量表示非静音表示&#xff0c;而是下图这个叉。 1. 解决方案 以Windows 11电脑为例&#xff0c;从搜索框输入【设备管理器】&#xff0c;进入界面如下&#xff1a; 发现一个感叹号的设备【Intel High Defini…