编写 rain 彭睿扬 2022.2.1 20:51 到 22:57

审核 22:57 到 23:08 24 处更改

抄送 23:16 到 blog.csdn.net 以用户 锟斤拷有点烫 标题为 “RISC-V 架构指令集手册 第一册 无特权指令集 中文翻译”

抄送 23:18 到 mp.weixin.qq.com 以用户 起名这事情还是以后再想 标题为 “容易上手的 RISC-V 同学 中文翻译”

今天的内容(包括今天以后的很多很多天),是 RISC-V 手册页的翻译。为啥要讲这个玩意儿呢?有几个原因:

如果想要自制处理器,不对外开放的 x86 显然走不通。即使是 ARM 也需要ARM公司来授权,而自己开发的指令集又存在没有生态这一巨大问题。所以,最好的选择是开源的RISC-V架构。
对于开发人员来说,RISC-V 架构更简单上手。它的手册页(也就是现在我们翻译的这个)一共大约有400页,而ARM架构有足足2070页,更不要说有了将近40年的x86架构。所以,对于想要找一个容易理解的架构学习,RISC-V 是不二的选择。
第一条的原因,国内的许多厂商(大概)正在研究 RISC-V 架构(当然也在研究ARM),甚至已经出现了可行的 RISC-V 架构手机(忘了在哪里看到的。即使没有以后也会有的)。而且鉴于它比较容易上手的特点,学习它(大概)不会反悔。
我已经开始卷了
好吧,其实,我也不过比大家先开始看了两三天(上册看完大概一半了),有什么问题千万不要问我啊!如果真的有地方觉得奇怪,就看一下原文吧。也是第一次翻译这种长文档,有的极长句子使用了机翻指导…… 所以如果突然出来风格不符的地方,就心里默默骂我两句吧……

RISC-V 指令集架构 (ISA instruction set manual) 手册
第一册 无特权的指令集架构
第一章 引言
RISC-V (那个音标不会打)是一个被设计成给研究和教学用的崭新的指令集(ISA,Instruction Set Archiecture),但现在我们(反悔了)希望它能够变成一个可投入生产的免费开源(或译为自由开放)架构。RISC-V 的设计目标如下:

一个完全开源的ISA(记住这个词),可以免费开源的投入生产以及学术研究(academia and industry)
一个可以直接硬件实现的真可用的 ISA,而不仅仅是(无聊的)模拟或者机器码翻译。
一个避免过度设计的 ISA。它有着独特的微架构风格(particular microarchitecture style)(比如,微编码、乱序执行、分离的(大概是指指令分为I、F、D等多个部分,不清)、其他打破常规的东西)以及独特的工程实现(比如,支持全定制、ASIC、FPGA)。但它同样可以做到高效率。
一个分成一个小的单独整数 ISA 的 ISA,使得定制的加速器(后文会提到,accelerators)以及仅仅为了教学的ISA 变得可能。并且也有可选的标准(指这些扩展由官方定义)扩展(extensions),以支持多种用途的软件开发。
支持 2008 IEEE-754 浮点数标准。
支持扩展 ISA 以及专门的变体。
一个包含可供应用程序、内核和硬件实现选择的32 位和64 位地址空间(address space)的ISA。
一个支持多处理器并行的架构,其中可能包括由很多种类组成的多处理器。
可选的变长指令,可以用来减少指令大小,还可以用来支持可选的密集指令编码,来提升性能,减小代码大小以及能耗。
对操作系统编写来说的全虚拟化的架构(大概指虚拟内存)。
带有一个简化的新特权架构设计的ISA。
这里是我们(当然不是我啦)对于RISC-V的设计的评论。如果你不愿意读(only interested in the specification itself),可跳过(爱读不读)。

(所以说,在这里可能会有一些好玩的 ,所以翻译的也比较随便。如果仅仅对原文本身感兴趣的话请读原文)

之所以有RISC-V这个名字,是因为前四个名字都被同校的那些用了。我们也用这个名字来双关(恶搞)一些别的词(绝对是写标准的时候现想的),比如变种(variations),向量(vectors),来支持架构研究,包括各种各样的并行加速器。这对ISA设计来说是一个明确的目标。

RISC-V 架构标准尽量避免提到实现实现细节(尽管评论中已经包含了实现的一些决定),并且应该被写成从软件视角看一个多样化的实现,而不是以一个硬件实现者的视角来看。这个手册包含两册。这一册包含基础的无权限指令,包括可选的无特权ISA 扩展。这些指令在所有的模式、所有的特权架构下都可以使用,尽管运行状态结果在一些不同模式不同特权架构下可能不太一样。第二册包含了第一个(“Classic”,原文)的特权架构。这个手册使用IEC 80000-13:2008的风格,每字节为8 位宽。

在无权限的ISA设计中,我们尝试避免所有诸如缓存行大小(cache line size)的依赖特殊微架构功能的地方,或者诸如地址转换的特权架构细节。这是为了让这些可供替代的微架构拥有简单性和灵活性(原文为,This is both for simplicity and to allow maximum flexibility for alternative microarchitectures or alternative privileged architectures. )

1.1 RISC-V 硬件平台术语
一个RISC-V 硬件平台包含了组合在一起的单个或多个的兼容RISC-V(RISC-V-compatible)处理核心,以及其他非RISC-V兼容的处理核心、固定功能的加速器(fixed-function accelerator)、各种各样的物理内存结构、IO设备以及用来支持组件通讯的互联结构。

术语组件(component)用来描述一个包含不依赖其他指令获取单元(instruction fetch unit)的核心。一个RISC-V 兼容核心 可能通过多线程(multithreading)支持多个RISC-V 兼容硬件线程或者harts。

一个RISC-V核心可能拥有附加特殊指令集扩展(addtional specialized instruction-set extensions)或者一个协处理器。术语协处理器 指一个附加在一个RISC-V 核心上的单元,它多半根据RISC-V指令流来顺序操作,但它也可能拥有附加的状态保存(state)或者指令集扩展,并且完全有可能有一些受限制的相对自制权利。

我们使用术语加速器(accelerator)来表示一个不可编程的固定功能单元或者一个有特殊任务的,可以自主操作的核心。在一个RISC-V系统,我们预料到会有许多可编程的加速器,将会是一个带有特殊指令集扩展或定制的协处理器,以RISC-V为基础的核心。其中重要的一个就是IO加速器(I/O accelerators),它可以使应用程序核心卸下IO处理任务的沉重包袱。

RISC-V 硬件平台的系统级组织,可以是单核心的微型控制器或一个成千节点集群、共享内存的服务器(can range from a single-core micro-controller to a many-thousand-node cluster of shared-memory manycore server nodes)。一个小型的SoC 甚至也同样可结构化成一个包含等级制度的多计算机或多处理器,来实现模块化的开发或提供安全的子系统间隔离。

1.2 RISC-V 软件执行环境以及Harts
一个RISC-V 程序的反应依赖于它所运行的执行环境(execution environment)。一个RISC-V 执行环境接口(EEI,Execution Environment Interface)定义了程序的初始化状态、包含harts支持的特权级模式的环境中的hart的数量和类型、不同内存以及IO区域的访问权(accessibility and attributes)、执行在每个hart上的一切合法所带来的反应以及执行时以及环境调用时(environment call)抛出的异常或者中断的处理。EEI 的样例包括,Linux 应用程序二进制接口(ABI)或者RISC-V 管理者二进制接口(SBI)。一个RISC-V 执行环境的实现可以是纯硬件、纯软件或者软硬件结合。举个栗子,陷阱和软件仿真可以被用来实现硬件中未实现的功能(比如虚拟内存,译者注)。执行环境实现包含:

纯金属(Bare metal)。Hart 被物理处理器进程直接实现,并且(软件)对全部物理地址空间有访问权。硬件平台在启动时(power-on reset)就定义好了执行环境。
RISC-V 操作系统通过将用户级hart多路复用到可用的物理处理器线程上,以及用虚拟内存控制内存访问来提供多用户级执行环境。(原文: RISC-V operating systems that provide multiple user-level execution environments by multiplexing user-level harts onto available physical processor threads and by controlling access to memory via virtual memory)。
RISC-V 虚拟机监控程序为来宾操作系统提供多个管理者级执行环境。(原文: RISC-V hypervisors that provide multiple supervisor-level execution environments for guest operating systems. )
例如Spike、QEMU、rv8的模拟在其他例如x86的系统上模拟RISC-V hart的RISC-V 模拟器。它提供了一个用户级或管理者级执行环境。
一个纯硬件平台可以考虑定义一个EEI。可控的(accessible)hart、内存以及其他硬件居住在这个环境中。初始状态在启动时设置。通常地,大多数软件被设计成用多层抽象接口到硬件。具有更多抽象的EEI提供了在不同硬件平台之间的更大可移植性。通常,EEI 被分为多个层,更高层的EEI 使用下层EEI(提供的功能抽象)。

在软件执行在给定执行环境中的角度来看,hart是一个通过执行环境来自取并且自执行RISC-V指令的资源(resource)。在这一角度,hart表现的像一个硬件资源,尽管执行环境将时间多路传输到真正硬件上去(even if time-multiplexed onto real hardware by the execution environment)。一些EEI支持创建或销毁附加(虚拟)hart。比如,凭借环境调用来创建(fork)新的hart。

terminated here EOF

好吧,已经11点了。本来计划将这一章翻译完的…… 那么,今天就看到这里,ok?
————————————————
版权声明:本文为CSDN博主「锟斤拷有点烫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/UTF80/article/details/122767024

RISC-V 架构指令集手册 第一册 无特权指令集 中文翻译的更多相关文章

  1. evm指令集手册

    evm指令集手册 Opcodes 结果列为"-"表示没有运算结果(不会在栈上产生值),为"*"是特殊情况,其他都表示运算产生唯一值,并放在栈顶. mem[a.. ...

  2. 第一册解说and表现

    综合日语第一册第五单元到十五单元的解说表现大集会:(这么一来一本书都被我搬上来啦--) 第五课 1.始めました: 初次见面时的寒暄用语,表示“初次见面(请多多观照)”之意. 2.どうぞよろしく: 用于 ...

  3. EJB开发第一个无状态会话bean、开发EJBclient

    开发第一个无状态会话bean EJB中的三中bean: 会话Bean(Session Bean) 负责与client交互,是编写业务逻辑的地方.在会话bean中能够通过JDBC直接操作数据库.但大多数 ...

  4. EJB开发第一个无状态会话bean、开发EJB客户端

    开发第一个无状态会话bean EJB中的三中bean: 会话Bean(Session Bean) 负责与客户端交互,是编写业务逻辑的地方,在会话bean中可以通过JDBC直接操作数据库,但大多数情况下 ...

  5. 第一册:lesson 107.

    第一册: It's too small. Do you like this dress,madam? I like the colour very much.It's a lovely dress,b ...

  6. 备份下ESP8266的AT指令集手册和用例手册中文版,准备为V7做几个ESP8266的例子

    指令集手册:https://files.cnblogs.com/files/armfly/4a-esp8266_at_instruction_set_cn.rar 用例手册: https://file ...

  7. RAPIDXML 中文手册,根据官方文档完整翻译!

    简介:这个号称是最快的DOM模型XML分析器,在使用它之前我都是用TinyXML的,因为它小巧和容易上手,但真正在项目中使用时才发现如果分析一个比较大的XML时TinyXML还是表现一般,所以我们决定 ...

  8. jQuery Cookie (内附 上百行的中文使用手册,与 所有的注释中文翻译)

    jQuery Cookie (内附 上百行的中文使用手册,与 所有的注释中文翻译) 博主亲自翻译. 大家多多捧场. 更多资源请点击"查看TA 的资源" .全场通通 2积分. htt ...

  9. Linux/Unix系统编程手册 第一章:历史和标准

    Unix的开发不受控于某一个厂商或者组织,是由诸多商业和非商业团体共同贡献进行演化的.这导致两个结果:一是Unix集多种特性于一身,二是由于参与者众多,随着时间推移,Unix实现方式逐渐趋于分裂. 由 ...

  10. 处理器核、Core、处理器、CPU区别&&指令集架构与微架构的区别&&32位与64位指令集架构说明

    1.处理器核.Core.处理器.CPU的区别 严格来说"处理器核"和" Core "是指处理器内部最核心的部分,是真正的处理器内核:而"处理器&quo ...

随机推荐

  1. [原创]《C#高级GDI+实战:从零开发一个流程图》第03章:画一个线,连接两个矩形!

    一.前言 上一节我们实现了多个不同颜色的可拖动的矩形,那么这一节就来看一下如何将这些矩形连起来吧. 相信看完的你,一定会有所收获! 本文地址:https://www.cnblogs.com/lesli ...

  2. 偶斐波那契数列性质与欧拉计划第2题 Properties of Even Fibonacci numbers and Project Euler problems 2

    Problem 2 Even Fibonacci numbers Each new term in the Fibonacci sequence is generated by adding the ...

  3. HyperWorks飞机复合材料结构分析(OptiStruct)

    本练习对一个复合材料结构使用 PCOMPG 卡片进行铺层定义的过程,展示使用全局铺层编号对结果后处理的优越性.这里首先介绍了传统的定义方法即使用 PCOMP,通过对比可以显示出使用 PCOMPG 的对 ...

  4. Java8 Stream 中 Collectors 的操作

    Collectors是java.util.stream包下的一个工具类,其中各个方法的返回值可以作为java.util.stream.Stream#collect的入参,实现对队列的各种操作,包括:分 ...

  5. ChatGPT学习之旅 (5) 终极Prompt设计

    大家好,我是Edison. 上一篇:Prompt花式用法 AI时代的处世法则,能动口,尽量不动手!通过前面4篇内容我们了解了基本的Prompt用法,今天我们来学习终极的Prompt设计方法! 前提条件 ...

  6. Macbook装Window后触摸滑动方向反

    找到设备id 可以看到我的是: VID_05ac&PID_0276&MI_02&Col01\6&8d58d53&0&0000 如果有多个,可以在常规&g ...

  7. 前端开发系列009-基础篇之JavaScript内置Math

    本文介绍JavaScript中的内置对象Math,以及Math的常用方法. 一.Math简单介绍 ECMAScript为我们提供了一个专门处理数学计算的内置对象--Math对象.Math对象提供了很多 ...

  8. Skill Discovery | METRA:让策略探索 state 的紧凑 embedding space

    论文标题:METRA: Scalable Unsupervised RL with Metric-Aware Abstraction ICLR 2024 Oral. arxiv:https://arx ...

  9. 20212109 实验三《Python程序设计》实验报告

    # 学号 2019-2020-2 <Python程序设计>实验x报告 课程:<Python程序设计>班级: 2121姓名: 施铖哲学号:20212109实验教师:王志强实验日期 ...

  10. 原版Win11系统总是断网频繁的问题

    有不少电脑用户在我们平常电脑的使用中,不管是浏览网页.看视频.玩游戏.办公等都是离不开网络连接的,但是近期有win11系统用户反映自己的电脑wifi间歇性断网,这是怎么回事呢?有没有什么方法可以解决呢 ...