网站平台开发与应用面试,网站搭建怎么做,男女做羞羞漫画网站,做公司网站的尺寸一般是多大本篇文章的内容 一、计算机组成原理的相关知识1.1 计算机的硬件组成1.2 程序的存储与执行1.3 程序语言的设计和进化1.4 存储设备的层次结构1.5 操作系统 二、RISC-V的指令集ISA简介2.1 什么是ISA2.2 复杂指令集#xff08;CISC#xff09;和精简指令集#xff08;RISC#… 本篇文章的内容 一、计算机组成原理的相关知识1.1 计算机的硬件组成1.2 程序的存储与执行1.3 程序语言的设计和进化1.4 存储设备的层次结构1.5 操作系统 二、RISC-V的指令集ISA简介2.1 什么是ISA2.2 复杂指令集CISC和精简指令集RISC2.3 ISA的宽度2.4 RISC-V的特点2.5 RISC-V ISA的命名规范2.6 RISC-V ISA的模块化2.7 RISC-V ISA的通用寄存器2.8 RISC-V的硬件线程HART2.9 RISC-V的特权级别和CSR2.10 内存管理和保护2.11 异常和中断 本系列是博主参考B站课程学习开发一个RISC-V的操作系统的学习笔记计划从RISC-V的底层汇编指令学起结合C语言在Ubuntu 20.04上开发一个简易的操作系统。一个目的是通过实践操作学习和了解什么是操作系统第二个目的是为之后学习RISC-V的集成电路设计打下一定基础。本系列持续不定期更新分享出来和大家一同交流进步。 博主是微电子科学与工程专业的学生对软件和操作系统难免有理解不到位的地方。如有谬误敬请不吝告知不胜感激。 参考课程及文章 【Bilibili】[完结] 循序渐进学习开发一个RISC-V上的操作系统 - 汪辰 - 2021春 一、计算机组成原理的相关知识
1.1 计算机的硬件组成 CPUCentral Processing Unit中央处理单元 CUControl Unit控制单元ALUArithmetic Logical Unit算数逻辑单元Register x多个寄存器 IO BridgeIO桥Main Memary主存内存外设屏幕键盘鼠标等 上图展示了两种主流的计算机的组成架构冯诺依曼架构Vonda Neumann architecture又称普林斯顿架构Princetion architecture特点是指令和数据不加区别地存储在存储器中经由同一个总线传输。优点是总线开销小控制逻辑实现更简单缺点是执行效率较低。现在大量的PC机和服务器都是采用这种架构设计的。之后的课程主要围绕该架构展开。哈佛架构Harvard architecture特点是将程序指令和数据分开存储。优点是执行效率较高缺点是总线开销更大控制逻辑实现更复杂。小型的微控制器倾向于使用该种架构。
1.2 程序的存储与执行 想要在计算机上运行程序我们首先要将编辑好的程序进行编译和链接将其存储在硬盘Disk中通过硬盘的控制器Disc Controller将编译后的机器指令a.out文件存储到内存中CPU通过IO桥不断依次进行取指Fetch、译码Decode、执行Excute此时我们才说计算机正在运行我们的程序。取指是将机器指令取到对应的寄存器中。晶振是外部的程序推动者不断驱动处理器进行上述过程。
1.3 程序语言的设计和进化 假设现有一个只能执行加法操作的8位计算机我们通过对加法过程进行分析如上图所示发现执行加法操作只需要从内存中取数据LOAD、执行加法操作ADD、存储数据到内存STORE 三步操作。我们对不同的操作进行编码设计不同的指令编码格式。假设采用冯诺依曼架构即操作指令和数据都存储在同一块内存中那么计算机执行该程序前内存的存储内容如下图所示内存中黄色的是指令绿色的是数据 1.4 存储设备的层次结构 1.5 操作系统 如上图所示操作系统是介于底层硬件和应用程序之间的结构它通过两个接口分别和上下两层相连。操作系统和应用程序之间的接口称为系统调用System Call操作系统和底层硬件之间的接口称为指令集架构ISA。操作系统主要的作用主要可以归结为以下两点
保护硬件被失控的软件应用程序滥用向应用程序提供简单一致的抽象接口来控制复杂的多种外设硬件。
二、RISC-V的指令集ISA简介
2.1 什么是ISA ISAInstruction Set Architecture指令集架构是底层硬件电路面向上层软件程序提供的一层接口规范。ISA不单单指一种汇编语言它定义的内容比汇编语言更加广泛。ISA定义了
基本数据类型BYTE/HALFWORD/WORD/…寄存器Register的种类和名称指令寻址模式异常和中断的处理方式… ISA为上层软件提供一层抽象制定规则和约束让编程者不用操心具体的电路结构。IBM 360 是第一个将 ISA 与硬件实现分离的计算机。
2.2 复杂指令集CISC和精简指令集RISC CISC复杂指令集Complex Instruction Set Computing针对特定的功能实现特定的指令导致指令数目比较多但生成的程序长度相对较短。一般而言使用复杂指令集开发的CPU指令的种类很多对于每一种操作都有一种特定的指令。就像在中国古代文字写在竹简或布匹。为了表达更多的信息考虑到成本问题一个文字表达的含义被极大地丰富起来。典型的复杂指令集有x86等。 RISC精简指令集Reduced Instruction Set Computing只定义常用指令对复杂的功能采用常用指令组合实现这导致指令数目比较精简但生成的程序长度相对较长。精简指令集就像现代的白话文当人们不再考虑写字带来的成本时表达相同的意思人们就不再“惜字如金”用简单、易读、易理解的方式来表达信息。典型的简单指令集有SPARC、Power、ARM、MIPS、RISC-V等。 现如今RISC 和 CISC 也逐渐有相互融合的趋势。Intel最早采用复杂指令集现如今也在逐渐向精简指令集靠近。
2.3 ISA的宽度 ISA 处理器的宽度指的是 CPU 中通用寄存器的宽度二进制的位数实际上就是CPU处理器的字长这决定了寻址范围的大小、以及数据运算的能力。 注意ISA 的宽度和指令编码长度无关。
2.4 RISC-V的特点
简单相较于x86RISC-V的指令很少相关的技术手册也较少。清晰的分层设计模块化拥有核心指令集和扩展指令集。稳定总结了前人的经验。社区化开源自由公开。
2.5 RISC-V ISA的命名规范
ISA 命名格式RV[###][abc……xyz] RV用于标识 RISC-V 体系架构的前缀即 RISC-V的缩写。[###]{32, 64, 128} 用于标识处理器的字宽也就是处理器的通用寄存器的宽度单位为 bit。[abc…xyz]标识该处理器支持的指令集模块集合。不同的字母代表了不同的指令集模块。 例子RV32IMA表示该32位处理器使用RISC-V的I、M、A指令模块RV64GC同理。
2.6 RISC-V ISA的模块化 对于ISA而言其有两种发展方式分别是增量化和模块化。 增量化 ISA: 计算机体系结构的传统方法同一个体系架构下的新一代处理器不仅实现了新的 ISA 扩展还必须实现过去的所有扩展目的是为了保持向后的二进制兼容性。典型的以 80x86 为代表。 模块化 ISA: 由 1 个基本整数指令集 多个可选的扩展指令集组成。基础指令集是固定的永远不会改变。扩展指令集类似一种插件的思想。 RISC-V的ISA中的基本整数指令集Integer是唯一强制要求实现的基础指令集其他指令集都是可选的扩展模块。其中嵌入式指令集Embedded是基本整数指令集的子集在一些小型的嵌入式场景中适用。高字长的基本整数指令集向下兼容如下表所示 扩展模块指令集
RISC-V 允许在实现中以可选的形式实现其他标准化和非标准化的指令集扩展。特定组合“IMAFD”被称为 “通用General”组合用英文字母 G 表示。
2.7 RISC-V ISA的通用寄存器 RISC-V 的非特权规范Unprivileged Specification定义了 32 个通用寄存器以及一个 PC程序计数寄存器。这种结构对 RV32I/RV64I/RV128I 都是相同的。如果实现支持 F/D 扩展则需要额外支持 32个 浮点Float Point寄存器。RV32E 将 32 个通用寄存器缩减为 16 个。 寄存器的宽度由 ISA 指定RV32 的寄存器宽度为 32 位RV64 的寄存器宽度为 64 位依次类推。 每个寄存器具体编程时有特定的用途以及各自的别名。由 RISC-V Application Binary Interface (ABI) 定义。
2.8 RISC-V的硬件线程HART HART Hardware Thread。早期的CPU中一般只有一个CUControl Unit所以在任何时刻只有一条硬件流被执行。如今Intel的CPU中一般有多个核一个核可以有两个硬件流这就容易引起线程混淆的问题。通过HART可以很好地区分两个不同的指令线程可以将一个HART想象成一个独立的CPU。在规范手册中HART的概念频频出现而处理器CPU的概念却不怎么出现。下面的话摘自RISC-V的官方手册 从软件编程的角度来说一个HART就是一个可以在执行环境中自主地独立地不受干扰地取指令和执行指令的资源。 2.9 RISC-V的特权级别和CSR 为了实现分级保护的功能RISC-V 的 Privileged Specification 定义了三个特权级别privilege level在CPU内部要求有一个类似多级开关的结构对应三种特权级别。如下表所示 Machine级别是最高的级别所有的实现都需要支持。RISC-V的CPU上电之后自动运行在Machine机械态此时CPU中操作的地址是真实的物理地址。通过特定的操作进入Supervisor管理者态之后此时访问的地址就是虚拟地址对真实的物理地址起到了保护的作用。此外RISC-V还提供了可选的Debug级别 CPU中有控制和状态寄存器CSRControl and Status RegisterCPU在不同的工作模式下使用不同的独立的CSR用于控制和获取相应Level下处理器的工作状态。这些寄存器在不同的工作模式下是不能互相访问的。通过这种设计才能真正实现分级保护的目的。 高级别的特权级别下可以访问低级别的 CSR譬如 Machine Level 下可以访问Supervisor/User Level 的 CSR以此类推但反之不可以。 RISC-V 定义了专门用于操作 CSR 的指令“Zicsr”扩展。 RISC-V 定义了特定的指令可以用于在不同特权级别之间进行切换ECALL/EBREAK
2.10 内存管理和保护 物理内存保护Physical Memory ProtectionPMP它是一种较为低级的内存管理和保护方式在一定程度上可以保护内存。
允许 M 模式指定 U 模式可以访问的内存地址。支持 R读/W写/X执行以及 Lock锁定不再使用对特定的内存区域的权限进行规定。 虚拟内存Virtual Memory程序访问的地址不再是实际的物理地址而是虚拟地址。通过特定的硬件外设MMUMemory Management Uint内存管理单元可以将虚拟地址映射到物理地址上。
需要支持 Supervisor Level管理者模式用于实现高级的操作系统特性Unix/Linux多种映射方式 Sv32/Sv39/Sv4
2.11 异常和中断 异常Exception在当前RISC-V HART中与指令相关的运行时发生的一种异常情况例如除零异常。发生异常后执行异常处理程序由程序员自行编写执行过后回到发生异常的地方再次执行。再次执行相当于程序对异常指令的又一次尝试。 中断Interrupt可能导致RISC-V HART经历意想不到的控制转移的外部异步事件发生中断后CPU会先执行完当前的指令之后再执行中断服务程序返回时执行发生中断的指令的下一条指令继续执行。 原创笔记码字不易欢迎点赞收藏~ 如有谬误敬请在评论区不吝告知感激不尽博主将持续更新有关嵌入式开发、机器学习方面的学习笔记。