Readm Blog

I drink and I know things.

Zipper Stack

Zipper Stack相关工作介绍

Zipper Stack工作介绍 论文 经过漫长的等待,Zipper Stack这篇文章终于被ESORICS 2020接收了,可以在自己的博客里做一个简单的介绍和总结了。 预印版本 后续正式出版我会更新链接。 声明 欢迎感兴趣的研究者与我联系讨论,最近也在找工作,有相关的岗位欢迎联系。不过该设计已经申请专利(若干项),因此如果希望使用还是请联系讨论授权事宜。 简介 Zippe...

Huffman树的推广

Huffman树在不同需求下的推广

Huffman树算法的推广 动机 目前的工作中出现了一种这样的需求: 需要将一些有不同频率的符号进行二进制前缀编码。需要越频繁的出现的符号编码越短,越少出现的符号编码越长。 这与基础Huffman编码的需求基本接近。但是具体到细节上,Huffman编码的最优解是使得总cost G=Sum(i){p(i)*l(i)} 最低,即最后总长度最底,而我们的需求中,总cost为G=Su...

Rocket Core源代码笔记——控制流

Rocket Core的控制流

Control Flow in Rocket Core Today, we talk about the control flow instructions in Rocket Core, mainly the jumps. I’m not familiar with the CSR and other part, so we only talk the normal jump instr...

Rocket Core源代码笔记——缩写

Rocket Core的命名中的缩写

Note: Abbreviation in Rocke Core Understanding naming is important to get started. Here we introduce some common abbreviations. The normal abbreviations like inst=instruction are not included. ...

Rocket Core源代码笔记——Scoreboard

Rocket Core的计分板

Scoreboard in Rocket Core Today we talk about the Scoreboard in Rocket Core. In fact, the Score Board in Rocke Core is very simple: 32 bit to record the status of each register. The class Scoreboa...

如何在编译器中保留特定寄存器

在LLVM中保留一个特殊寄存器作为专用寄存器,需要哪些改动。

最近的工作中,设计中需要一个专用的寄存器,仅供我自己使用。在现有编译器和库中当然没有预留,这需要我们更改编译器和库。 目的 在目前的X86寄存器中,选取若干寄存器作为专用寄存器,保留起来不被其他功能使用。 前置知识 调用惯例 X86寄存器结构 寄存器分配算法 调用惯例 在不同的操作系统中有不同的二进制接口(ABI),最主要就是调用惯例。调用惯例中规定了在函数调用中...

Rocket Core源代码笔记——旁路

Rocket Core的旁路简介

Note:为了可能的参与rocket-chip-read,之后的文章尽量直接使用英文,减少工作量。 Bypass in Rocket Core Today we start with a simple part of Rocket Core: bypass. Bypass in rocket core is faily simple, since the Rocket is an in...

Rocket Core源代码笔记——入门

开始一个系列,记录一下对Rocket Core源代码的学习。

为了记录和帮助后人学习和修改Rocket Core的源代码,我计划写一个“Rocket Core源代码笔记”系列。这个系列主要解释UCB的rocket-chip中Rocket核心的代码,即src/main/scala/rocket/RocketCore.scala代码(在不同的版本中,文件的命名不同。)。这个系列可以帮助你理解和修改Rocket核心。 因为我并不是硬件设计专业出身,可能会有...

如何在RISC-V中添加一个指令

如何在RISC-V中添加一个指令:Rocket-Core,编译器。

如何在RISC-V中添加一个指令 RISC-V支持指令的扩展,本文介绍在从添加一个完整的指令并且使用需要作出那些改动。(用户态指令) 步骤 确定这一指令的功能:计算加速/安全检查等等 确定指令的需求:需要读取几个寄存器,是否有立即数参与,最终确定指令类型(R、I、S、U)。参见指令手册2.2章Base Instruction Formats。 确定指令的编码空间:是否兼容...

RISC-V 技术概览

最近半年在做的工作与RISCV相关,有时间了总结一下相关的信息和资源。

什么是RISC-V RISC-V (pronounced “risk-five”) is a new instruction set architecture (ISA) that was originally designed to support COMPUTER ARCHITECTURE RESEARCH and EDUCATION and is now set to become ...