RISC-V体系结构

报告

我们只学习通用PC级的RV64的体系结构,不完全适用于嵌入式等其他RISC-V体系结构。

  1. 了解RISC-V特权架构:M、S、U,回答以下问题:

    1. 这三种模式分别运行什么类型的软件?
    2. 哪种模式不具备分页功能?
    3. 在裸金属代码的情况下,假设只有引导代码,那么我编写的U态的代码需要满足什么条件?能执行什么?不能实现什么?
    4. 问题三中的U改为S呢?
    5. 问题3中的U改为M呢?
  2. 了解RISC-V的寄存器,回答下面问题:

    1. 通用寄存器有哪些,分别具有哪些功能?

    2. 什么是CSR寄存器,CSR寄存器与特权级的关系是什么?

    3. 通用寄存器以及CSR寄存器在不同特权级时,分别具备怎样的读写权限?

  3. 了解RISC-V的分页机制,回答下面问题:

    1. 什么是虚拟内存地址,什么是物理内存地址

    2. RISC-V中除了SV39之外还有哪几种分页类型

    3. 以Sv48为例描述CPU是如何根据页表查找到物理页面的,画图描述

  4. 了解RISC-V的中断与异常,回答下面问题:

    1. 什么是陷阱?什么是中断,什么是异常

    2. 什么是硬件中断,什么是软件中断,什么是时钟中断

    3. 与中断有关的CSR寄存器有哪些

    4. 发生中断时,CPU自动做了哪些操作?程序员需要完成哪些操作

    5. 中断返回时,程序员需要完成哪些操作?CPU会自动处理哪些操作?

    6. 以系统调用为例,绘制一幅中断处理的流程图,需要区分清楚特权级、CPU自动完成的操作和程序员需要完成的操作

实验

二进制文件加载

在x86下实现,不需要使用交叉编译链

在用户态仿真实现二进制文件加载和分页机制:根据find-bak的段信息,为该二进制文件创建页表,并将各个段加载到相应位置,提示使用libelf库实现对二进制文件的加载。

参考资料

请 Ta 喝咖啡 ☕️