深圳康福特户外家具营销型网站,长沙寸金网络营销网址,国内设计网站大全,陕西网站制作公司日期#xff1a;20230228 规范分类 根据 RISC-V 设计哲学#xff0c;其规范文档也是高度模块化的#xff1a;
ISA 规范#xff08;2 篇#xff09;
非特权规范特权规范
非 ISA 规范#xff08;6篇#xff09;
Trace规范ABI 规范外部调试规范PLIC 规范SBI 规范UEFI 协… 日期20230228 规范分类 根据 RISC-V 设计哲学其规范文档也是高度模块化的
ISA 规范2 篇
非特权规范特权规范
非 ISA 规范6篇
Trace规范ABI 规范外部调试规范PLIC 规范SBI 规范UEFI 协议规范以及其他未合并的扩展规范目前不是重点 表 1 规范分类ISAnone-ISA正式审批 Volume 1, Unprivileged Specification version 20191213 [PDF] Volume 2, Privileged Specification version 20211203 [PDF] 表 26 个规范审批未集成见表 316 个扩展RISC-V Non-ISA Specifications · GitHub进行中Specification Status - Home - RISC-V International (riscv.org)20
表 2 none-ISA 规范 Specification name Version Publish Date Description RISC-V Community Source Repository Efficient Trace for RISC-V2.0June 2022Specifies the signals between the RISC-V core and the encoder, compressed branch trace algorithm, and the packet format used to encapsulate the compressed branch trace information to implement processor tracing.SOC Infrastructure Horizontal Committeeriscv-non-isa/tech-trace-specRISC-V ABIs Specification1.0November 2022Provides the processor-specific application binary interface document for RISC-VApplication Tools Horizontal Committeeriscv-non-isa/riscv-elf-psabi-docRISC-V External Debug Support0.13.2March 2019Outlines a standard architecture for external debug support on RISC-V platforms.SOC Infrastructure Horizontal Committeeriscv/tech-debug-specRISC-V Platform-Level Interrupt Controller Specification1.0.0February 2023Delineates the operational parameters for a platform-level interrupt controller on RISC-V.Privileged Software Horizontal Committeeriscv/riscv-plic-specRISC-V Supervisor Binary Interface Specification1.0.0May 2022Describes the RISC-V Supervisor Binary Interface, known from here on as SBI which enables supervisor-mode (S-mode or VS-mode) software to be portable across all RISC-V implementations by defining an abstraction for platform (or hypervisor) specific functionality.Privileged Software Horizontal Committeeriscv-non-isa/riscv-sbi-docRISC-V UEFI Protocol Specification1.0.0May 2022Details all new UEFI protocols required only for RISC-V platforms.Privileged Software Horizontal Committeeriscv-non-isa/riscv-uefi
表3 已审批未集成 ISA 标准RV32E and RV64E Base Integer Instruction SetsJanuary 2023RV32E/RV64E“Ztso” Standard Extension for Total Store OrderingJanuary 2023ZtsoRISC-V Wait-on-Reservation-Set (Zawrs) extensionNovember 2022ZawrsZmmul ExtensionJune 2022ZmmulPMP Enhancements for memory access and execution prevention on Machine mode (Smepmp)November 2021SmepmpRISC-V Base Cache Management Operation ISA ExtensionsNovember 2021Zicbom, Zicbop, ZicbozRISC-V Bit-Manipulation ISA-extensionsNovember 2021Zba, Zbb, Zbc, ZbsRISC-V Count Overflow and Mode-Based Filtering ExtensionNovember 2021SscofpmfRISC-V Cryptography Extensions Volume I: Scalar Entropy Source InstructionsNovember 2021Zbkb, Zbkc, Zbkx, Zknd, Zkne, Zknh, Zksed, Zksh, Zkn, Zks, Zkt, Zk, ZkrRISC-V State Enable ExtensionNovember 2021SmstateenRISC-V stimecmp / vstimecmp ExtensionNovember 2021SstcRISC-V Vector ExtensionNovember 2021Zve32x, Zve32f, Zve64x, Zve64f, Zve64d, Zve, Zvl32b, Zvl64b, Zvl128b, Zvl256b, Zvl512b, Zvl1024b, Zvl, ZvThe RISC-V Instruction Set Manual Volume II: Privileged ArchitectureNovember 2021 Sm1p12, Ss1p12, Sv57, Hypervisor, Svinval, Svnapot, Svpbmt Zfh and Zfhmin Standard Extensions for Half-Precision Floating-PointNovember 2021Zfh, ZfhminZfinx, Zdinx, Zhinx, Zhinxmin: Standard Extensions for Floating-Point in Integer RegistersNovember 2021Zfinx, Zdinx, Zhinx, Zhinxmin“Zihintpause” Pause HintFebruary 2021Zihintpause
非特权 ISA 规范 非特权 ISA 规范对硬件平台术语、软件执行环境和 Harts、ISA 概述、内存、指令编码、异常/陷入/中断、非定义行为和数值等进行了简要的介绍。
规范重点描述了 RISC-V ISA 子集RV32I 32 位整数指令集、RV32E 32 位精简整数指令集、RV64I/RV128I 64/128 位整数指令集、M 整数整除法指令集、A 原子操作指令集、Zicsr 控制状态寄存器、F 单精度浮点指令集、D 双精度浮点指令集、Q 双字精度浮点指令集、RVWMO 内存一致性等。
特权 ISA 规范 特权 ISA 规范首先对特权软件栈术语、特权级别、调试模式进行了简要介绍。
其次对特权模式下的控制状态寄存器进行了介绍。
特权 ISA 分为 M 级别和 S 级别的特权级别。
对于 M 级别介绍了 M 级别的控制状态寄存器、内存映射寄存器、特权指令、复位、不可屏蔽中断、物理地址属性、物理地址保护。
对于 S 级别介绍了 S 级别的控制状态寄存器、指令、32/39/48/57 位虚拟内存系统、svnapot 翻译相邻性、svpbmt 基于页内存类型、svinval 小粒度地址转换表内存无效等。
hypervisor 扩展介绍了特权模式、hypervisor和虚拟 S 模式控制状态寄存器、指令、机器级别的控制状态寄存器、两级地址转换、陷入等。
ABI 规范 介绍
本规范为 RISC-V 提供了处理器专用应用二进制接口文档本规范由以下三部分组成
调用规约ELF 规范DWARF 规范
该ABI的未来修订版将包括内存模型的规范映射集同步原语。
术语缩略语 ABI 状态 调用规约
调用规约主要从寄存器约定、过程调用约定、系统调用约定、C/C 类型描述、Linux 特定的 ABI 等方面进行了介绍。
寄存器约定整数、浮点数、向量寄存器的一些约定。
过程调用约定整数调用约定、硬件浮点调用约定、ILP32E 调用约定、ABI 命名、默认 ABI 等。
系统调用约定未在本文档中规定参考 RISC-V execution environment interface (e.g OS kernel ABI, SBI)。
C/C 类型描述类型大小和对齐方式、类型表示、va_list/va_start/va_arg。
Linux 特定 ABI类型大小和对齐方式、类型表示。
PLIC 规范 PLIC 指的是平台级别的中断控制器PLIC 规范主要从以下几个方面进行了介绍
中断目标和 Hart 上下文、中断网关、中断通知、中断号、中断流程PLIC 操作参数内存映射中断优先级中断等待状态位中断使能中断阈值中断声明过程中断完成
SBI 规范 这个规范描述了 RISC-V 超级二进制接口即SBI通过 SBI 接口 RISC-V 能够实现 S 模式、VS 模式代码能够在不同的平台之间的可移植性。SBI 遵循了 RISC-V 的设计哲学由一个非常小的核心部分和一些可选的模块扩展组成。
SBI 整体来说是一个扩展也就是说要不实现要么就要完整实现。如果 sbi_probe_extention 指示出某个功能可用那么所有版本要求的功能都需要实现这个版本可以通过 sbi_get_spec_version 来获得。
高特权软件向管理模式提供 SBI 接口支持这个软件可以叫做 SBI 实现或者 SEE。SEE 可以是图1中的 M 模式下运行时固件也可以是图2 中的 HS 模式运行的虚拟机管理程序。 图1 无虚拟化扩展 RISC-V 系统图2 有虚拟化扩展的 RISC-V 系统SBI 规范不会指定任何硬件发现的方法S 模式软件必须通过其他工业标准来获取比如 Device Tree 或者 ACPI。
UEFI 协议规范 设备树DT或高级配置和电源接口ACPI配置表用于向操作系统传达有关硬件的信息一些
只有在启动时才知道信息并且在操作系统或者引导器启动之前很早就需要这些信息来解析固件表。
一个例子是 RISC-V 系统上的引导 hartid。在非 UEFI 系统上这通常作为内核的参数在 a0中但是UEFI 系统需要遵循 UEFI 应用程序调用因此不能在 a0 中传递。有一个现有的解决方案使用 DTS 中的 /chosen 节点传递此信息。然而此解决方案不适用于基于 ACPI 的系统因此UEFI 协议对于基于 DT 和 ACPI 的系统都是优选的。
RISC-V 系统的 UEFI 协议为引导加载程序或操作系统提供早期信息系统。EDK2 和 u-boot 等固件需要在 RISC-V UEFI 系统上实现该协议。
该协议通常由引导加载程序在调用 ExitBootServices()之前调用。然后他们通过将信息发送给操作系统。
本规范规定的 RISCV_EFI_BOOT_PROTOCOL 版本为 0x00010000。全部的未来的版本必须向后兼容。如果新版本的规范出现倒退兼容性必须定义新 GUID。
Trace规范 介绍
在复杂系统中理解程序行为并不容易。在这样的系统中软件有时不能按预期运行。这可能是由许多因素导致。例如与其他核心、软件、外围设备的交互、实时事件、较差的实现或以上这些组合。
因为调试器的侵入性特点并非总是可以使用调试器来观察正在运行的系统。提供程序运行数据的可视化非常重要这需要在不产生大量数据情况下实现。
一个实现方法是通过采用处理器分支跟踪技术。
通过从指定执行地址进行跟踪并让其将程序运行的 delta 以消息的形式发出来实现这些 delta 主要由跳转、调用、返回以及分支指令导致当然中断和异常也能导致 delta 改变。
因此系统需要具有一些必备的组件
一种带有指令跟踪接口的内核该接口输出所有相关信息以允许成功创建处理器分支跟踪等。这是一个高带宽接口在大多数实现中它将为每个核心执行时钟周期提供大量数据指令地址、指令类型、上下文信息等连接到指令跟踪接口并将信息压缩为较低带宽跟踪包的硬件编码器连接到此指令跟踪接口并压缩将信息转换成较低带宽跟踪分组用于传输的传输通道或用于存储这些跟踪数据包的存储器一种解码器通常是外部 PC上的软件它接收跟踪数据包并在知道原始哈特上运行的程序二进制文件的情况下重建程序流。该解码步骤可以在 hart 执行时离线或实时完成
在 RISC-V 中所有指令都是无条件执行的或者至少可以根据程序二进制来确定它们的执行。可以假设增量之间的指令都是顺序执行的。因此无需对整个指令流进行跟踪只需要显示分支是否被执行以及间接执行的分支地址即可。当程序计数器的更改量无法从执行二进制文件时需要为跟踪解码器提供目标地址即地址下一个有效指令的。例如间接分支或跳转指令地址由寄存器的内容而不是嵌入的常量决定程序二进制文件。
中断通常与程序的执行异步发生而不是故意作为特定指令或事件的结果。可以用相同的方式来考虑异常即使它们通常可以链接回特定的指令地址。解码器通常不知道中断在指令序列中的何处发生因此跟踪编码器必须报告正常程序流停止的地址并给出异步目的地的指示这可能与报告异常类型一样简单。当发生中断或异常或处理器停止时必须在跟踪中包含预先失效的最终指令。
本文档用于指定入口端口RISC-V 核心和编码器之间的信号、压缩分支跟踪算法以及用于封装压缩分支跟踪信息的数据包格式。
术语缩略语
ATB: Arm trace bus
branch: an instruction which conditionally changes the execution flowCSR: control/status registerdecoder: a piece of software that takes the trace packets emitted by the encoder and reconstructs the execution flow of the code executed by the RISC-V hartdelta: a change in the program counter that is other than the difference between two instructions placed consecutively in memorydiscontinuity: another name for ’delta’ (see above)ELF: executable and linkable formatencoder: a piece of hardware that takes in instruction execution information from a RISC-V hart and transforms it into trace packetsEPC: exception program counterexception: an unusual condition occurring at run time associated with an instruction in a RISC-V harthart: a RISC-V hardware threadinterrupt: an external asynchronous event that may cause a RISC-V hart to experience an unexpected transfer of controlISA: instruction set architecturejump: an instruction which unconditionally changes the execution flowdirect jump: an instruction which unconditionally changes the execution flow by changing the PC by a constant valueindirect jump: an instruction which unconditionally changes the execution flow by changing the PC to a computed valueinferable jump: a jump where the target address is supplied via a constant embedded within the jump opcode • uninferable jump: a jump which is not inferable (see above)LSB: least significant bitMSB: most significant bitpacket: the atomic unit of encoded trace information emitted by the encoderPC: program counterprogram counter: a register containing the address of the instruction being executedretire: the final stage of executing an instruction, when the machine state is updated (some times referred to as ’commit’ or ’graduate’)trap: the transfer of control to a trap handler caused by either an exception or an interruptupdiscon: contraction of ’uninferable PC discontinuity’
规范主要介绍了编码器控制、分支跟踪、Hart 编码器接口、过滤器、时间戳、指令编码器输出包、数据跟踪编码器输出包、参考压缩分支跟踪算法、参数和发现、编码器、代码和包示例、代码片段和传输、未来方向等。
外部调试规范 介绍
当设计从模拟发展到硬件实现时用户对系统当前状态的控制和理解会急剧下降。帮助启动和调试低级别软件和硬件在硬件中内置良好的调试支持至关重要。当一个健壮的操作系统在内核上运行软件可以处理许多调试任务。然而在许多情况下硬件支持至关重要。
本文档概述了 RISC-V 平台上外部调试支持的标准架构。该体系结构允许多种实现和权衡这是对
广泛的 RISC-V 实现。同时本规范定义了接口允许调试工具和组件基于 RISC-V ISA。
系统设计者可以选择添加额外的硬件调试支持但本规范定义通用功能的标准接口
系统概述
图 3 显示了外部调试的主要组件虚线所示的块是可选的。
用户与正在运行调试器例如 gdb的调试主机例如笔记本电脑交互。调试器与调试转换器例如 OpenOCD其可以包括硬件驱动程序通信以与调试传输硬件例如 Olimex USB-JTAG 适配器通信。调试传输硬件将调试主机连接到平台的调试传输模块DTM。DTM 使用调试模块接口DMI提供对一个或多个调试模块DM的访问。
平台中的每一个 Hart 都由一个 DM 控制Hart 可能是异构的hart-DM 映射没有进一步的限制但通常单个内核中的所有hart都由同一个 DM 控制。在大多数平台中只有一个 DM 可以控制平台中的所有 Hart 。
DM 在平台中提供对 Hart 的运行控制抽象命令提供对 GPR 的访问可以通过抽象命令或将程序写入可选的程序缓冲区来访问其他寄存器。
程序缓冲区允许调试器在 Hart 上执行任意指令该机制也可用于访问内存可选的系统总线访问块允许在不使用 RISC-V Hart 执行访问的情况下进行存储器访问。
每个 RISC-V Hart 可以实现一个触发模块。当满足触发条件时harts 将停止并通知调试模块。 图3 debug overview此外规范描述了调试模块、RISC-V 调试、调试传输模块、硬件实现、调试器实现等。 皮格马利翁效应心理学指出赞美、赞同能够产生奇迹越具体效果越好~“收藏夹吃灰”是学“器”练“术”非常聪明的方法帮助我们避免日常低效的勤奋~下一篇 「RISC-V Arch」SBI 规范解读上