- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 Linux内核学习资料汇总
进程子系统进程管理进程调度内存子系统内存寻址Linux内核内存管理:分页技术的核心原理内存管理Linux启动时内存管理:MemBlock分配器进程地址空间I/O子系统文件子系统
2025-01-05 21:00:06
306
原创 rglr - 常规逻辑处理
常见的运算逻辑比如算术运算、逻辑运算、关系运算的指令以及ecall/ebreak/wfi指令的执行阶段走到rglr分支,源代码文件即e203_exu_alu_rglr.v。
2024-12-19 21:16:34
251
原创 nice - 扩展指令接口
exu_nice模块只做接口,真正的自定义扩展指令执行操作在模块外部执行,因此包含与外部接口。接口包含请求通道和应答通道。exu_nice模块本地存储4个ITAG,即支持最多4个滞外nice指令的执行,应答之后回收。exu_nice模块输入信息包括原指令、源操作数1、源操作数2和itag;自定义扩展指令执行子单元,源文件e203_exu_nice.v。exu_nice模块写回接口只回收itag,不包含其它信息;exu_nice模块输出交付接口不包含任何信息,只握手;nice指令都是长流水指令。
2024-12-19 21:12:48
270
原创 BJP - 分支跳转处理
对于jump指令、bxx指令、mret指令、dret指令和fencei指令,执行阶段走到bjp分支。原文件即e203_exu_alu_bjp.v。
2024-12-19 21:05:00
217
原创 AGU - 地址生成单元
load、store以及AMO指令在执行阶段会走到agu分支。agu的源代码文件即e203_exu_alu_lsuagu.v。包含AMO的代码比较复杂,由于AMO指令主要用于多处理器之间的同步,在预期的场景中不会使用,所以不考虑AMO相关指令。代码会简洁许多。
2024-12-19 21:00:28
775
原创 StageX - Commit 交付
程序流是单向的,应该按照程序流的顺序交付,这样才能找到一个“边界”,即“以前”的指令都可以完成执行,“以后”的指令都会取消。而执行阶段有可能是乱序执行的,无法准确确定边界。所以在最终的写回阶段交付比较合适。cpu流水线中总是同时有多条指令在运行,当遇到一个中断的时候,以哪一条指令为界呢?我们可以限定一个阶段,比如执行阶段或者写回阶段作为判断标准。交付阶段作为一个判断标准,当出现异常的时候,当前已交付的指令一定会走到最后(不会被取消),当前未交付的指令就会被取消(冲刷流水线)。
2024-12-19 20:46:27
196
原创 Stage3 - EXU 指令执行单元
执行阶段一般根据指令的不同类型划分不同的执行模块。若干模块都需要执行基础的算术逻辑运算,比如*_rglr模块、_bjp模块、_lsuagu模块、_mdv模块,为了减小资源占用面积,这些模块公用数据通路的运算逻辑(_dpath模块)。
2024-12-19 20:43:42
1067
原创 Stage2 - IDU 指令译码单元
指令译码阶段将从指令存储器中取出的指令进行译码,译码之后得到需要的操作数寄存器索引,可以使用此索引从通用寄存器组中将操作数读出。简单来说就是译码+读操作数。
2024-12-19 20:15:57
602
原创 Stage1 - IFU 指令预取单元
IFU是指令预取单元,负责从指令存储器获取下一条待处理的指令。如果所有的指令流都是顺序处理的,IFU很容易做到理论上的性能,即IPC=1(每个时钟周期一条指令,非超标量)。但是由于存在分支和跳转指令,IFU无法做到准确预知下一个PC,性能就会下降。对于分支指令来说,跳或者不跳决定了下一个PC,提高性能的手段是进行预测。预测之前要进行简单地指令解码。解码和预测全部是组合逻辑,才能保证IPC最优,但是时序性能会有降低。
2024-12-19 20:06:12
592
转载 RDMA概述
RoCE可以被认为是IB的“低成本解决方案”,将IB的报文封装成以太网包进行收发。传统网络中,“节点A给节点B发消息”实际上做的是“把节点A内存中的一段数据,通过网络链路搬移到节点B的内存中”,而这一过程无论是发端还是收段,都需要CPU的指挥和控制,包括网卡的控制,中断的处理,报文的封装和解析等等。IBTA会对商用的IB和RoCE设备进行协议标准符合性和互操作性测试及认证,由很多大型的IT厂商组成的委员会领导,其主要成员包括博通,HPE,IBM,英特尔,Mellanox和微软等,华为也是IBTA的会员。
2024-03-29 20:26:54
149
原创 risc-v指令集手册(非特权架构)- RV32/64G指令集列表
将来的标准扩展将避免标记为custom-0和custom-1的主要操作码,并建议在基本32位指令格式内的自定义指令集扩展中使用。标记为custom-2 / rv128和custom-3 / rv128的操作码保留供RV128将来使用,但否则将避免使用标准扩展,因此也可用于RV32和RV64中的自定义指令集扩展。RISC-V项目的一个目标是将其用作稳定的软件开发目标。随着我们从IMAFDC扩展到进一步的指令集扩展,添加的指令往往更具领域特定性,并且只能为有限的应用程序类别提供好处,例如,用于多媒体或安全性。
2023-05-20 18:43:59
4605
原创 risc-v指令集手册(非特权架构)- ‘Zicsr’控制和状态寄存器(CSR)指令V2.0(已批准)
RISC-V定义了与每个hart关联的4096个控制和状态寄存器的单独地址空间。本章定义了在这些CSR上运行的完整CSR指令集。虽然CSR主要由特权体系结构使用,但非特权代码中有多种用途,包括用于计数器和计时器以及浮点状态。计数器和计时器不再被视为标准基本ISA的必需部分,因此访问它们所需的CSR指令已从基本ISA章节移至该单独的章节。
2023-05-18 19:05:05
3159
原创 risc-v指令集手册(非特权架构)- ‘M’整数乘除法标准扩展V2.0(已批准)
本章介绍了标准整数乘法和除法指令扩展,其名为“ M”,其中包含将两个整数寄存器中保存的值相乘或相除的指令。我们将整数乘法和除法从基数中分离出来,以简化低端实现,或者针对不经常使用整数乘法和除法或在附加加速器中处理得更好的应用程序。
2023-05-18 18:40:19
1573
原创 risc-v指令集手册(非特权架构)- RV32I基本整数指令集V2.1(已批准)
RV32I旨在构成一个编译器目标并支持现代操作系统环境。ISA还旨在减少在最小实现中所需的硬件。RV32I包含40条独特的指令,然而一个简单的实现可能会使用一条总是产生陷阱的单个SYSTEM硬件指令来涵盖ECALL/EBREAK指令,同时也可能将FENCE指令实现为NOP,从而将基本指令数减少到38条。RV32I几乎可以模拟任何其他ISA扩展(A扩展除外,A扩展需要原子性的附加硬件支持)。实际上,包含机器模式特权架构的硬件实现也需要6条CSR指令。
2023-05-16 20:51:54
4724
原创 Vivado HLS教程
想学Vivado HLS,这里做个记录。本着先感性再理性的学习规律,首先学习Xilinx提供的教程ug871,上手操作。教程描述本教程是一些较小的教程的集合,这些教程说明和演示了使用高级综合将C,C ++和SystemC代码转换为RTL实现的过程中的所有步骤。 本教程介绍了如何创建初始RTL实现,然后在不更改C代码的情况下使用优化指令将其转换为低区域和高吞吐量的实现。 以下各节描述了每个教程...
2020-04-07 19:11:22
2631
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅