RISC-V

【在 Nervos CKB 上做开发】Nervos CKB脚本编程简介[2]:脚本基础

Deadly 提交于 2019-11-28 18:25:56
CKB脚本编程简介[2]:脚本基础 原文作者:Xuejie 原文链接:Introduction to CKB Script Programming 2: Script 本文译者:Shooter,Jason,Orange (排名不分先后) 上一篇我们介绍了当前 CKB 的验证模型。这一篇会更加有趣一点,我们要向大家展示如何将脚本代码真正部署到 CKB 网络上去。我希望在你看完本文后,你可以有能力自行去探索 CKB 的世界并按照你自己的意愿去编写新的脚本代码。 需要注意的是,尽管我相信目前的 CKB 的编程模型已经相对稳定了,但是开发仍在进行中,因此未来还可能会有一些变化。我将尽力确保本文始终处于最新的状态,但是如果在过程到任何疑惑,本文以 此版本下的 CKB 作为依据。 警告:这是一篇很长的文章,因为我想为下周更有趣的话题提供充足的内容。所以如果你没有充足的时间,你不必马上完成它。我在试着把它分成几个独立的不凡,这样你就可以一次尝试一个。 <br> 语法 在继续之前,我们先来区分两个术语:脚本(script)和脚本代码(script code) 在本文以及整个系列文章内,我们将区分脚本和脚本代码。脚本代码实际上是指你编写和编译并在 CKB 上运行的程序。而脚本,实际上是指 CKB 中使用的脚本数据结构,它会比脚本代码稍微多一点点: pub struct Script { pub

Nervos CKB 脚本编程简介[1]:验证模型

巧了我就是萌 提交于 2019-11-28 15:30:51
CKB 脚本编程简介[1]: 验证模型 本文作者:Xuejie 原文链接: Introduction to CKB Script Programming 1: Validation Model 本文译者:Jason,Orange 译文链接: https://talk.nervos.org/t/ckb-1/3462 截至目前,CKB 中的 Cell 验证模型或多或少已经趋于稳定,因此我将在这里开始写一系列文章来介绍 CKB 脚本编程。我的目标是补充在阅读白皮书后编写 CKB 脚本所需的所有缺失的细节实现,这样您就可以开始探索 CKB 呈现的这个美丽的仙境。 您可能会注意到我将在CKB上运行的代码称为 脚本 ,而不是 智能合约 。这是因为智能合约对我来说是一个令人困惑的术语,我在这里想用另一个词来表示 CKB 独特的可编程性。CKB 中的脚本不一定只是我们在脚本语言中看到的脚本,例如 Ruby,JS,它实际上是指在 CKB VM 上运行的 RISC-V 格式二进制文件。 这第一篇文章将专门介绍 CKB v0.14.0 中引入的 全新验证模型 。这可能听起来很无聊,但我保证这是最后一篇没有实际例子的帖子 :P 请注意,尽管我认为 CKB 的编程模型现在非常稳定,但目前仍然在进行开发,因此可能会有变化。我会尽力确保这篇文章更新,但如果有什么让你感到困惑的话,这篇文章现在正在描述 CKB

RV32FDQ/RV64RDQ指令集(1)

大憨熊 提交于 2019-11-28 12:13:55
Risc-V架构定义了可选的单精度浮点指令(F扩展指令集)和双精度浮点指令(D扩展指令集)。 Risc-V架构规定: 处理器可以选择只实现F扩展指令子集而不支持D扩展指令子集;但是如果支持了D扩展指令子集,则必须支持F扩展指令子集。 Risc-V架构规定的浮点数符合IEEE754 2008规则,可以从下面的链接了解浮点数格式的详细信息: https://www.cnblogs.com/german-iris/p/5759557.html Risc-V规定,如果支持单精度浮点指令或者双精度浮点指令,则需要增加一组独立的通用浮点寄存器组,包括32个通用浮点寄存器,标号位f0到f31。如果仅支持F扩展指令子集,则每个通用寄存器是32位的,如果支持D扩展那指令子集,则每个通用寄存器是64位的。 Risc-V架构规定,如果支持单精度浮点指令或者双精度浮点指令,需要增加一个浮点控制状态寄存器fcsr,该寄存器是一个可读可写的csr寄存器。 fcsr寄存器包含浮点异常标志域(fflags),不同的标志位表示不同的异常类型。如果浮点运算单元在运算中出现了相应的异常,则会将fcsr寄存器中对应的标志位设置为1,且会一直保持累积。软件可以通过写0的方式单独清除某个异常标志位。 根据IEEE-754标准,浮点运算需要指定舍入模式(rounding mode),Risc

谷歌、高通、三星宣布支持​RISC-V

混江龙づ霸主 提交于 2019-11-27 14:31:43
RISC-V 处理器架构得到了更多业内知名公司的支持。包括 Google、三星和高通在内的约 80 家公司将联合为自动驾驶汽车等应用开发新的 RISC-V 芯片设计。 RISC-V获支持 据外媒报道,RISC-V 处理器架构最近又获得了进一步的巨头“加持” —— 得到了更多业内知名公司的支持。其中包括 Google、三星和高通在内的约 80 家公司将联合为自动驾驶汽车等应用开发新的 RISC-V 芯片设计。 此外,西部数据和英伟达也都计划在其部分产品中使用 RISC-V,而特斯拉也已经加入了 RISC-V 基金会,并正在考虑使用这项开源技术。Linux 内核已经加入了对 RISC-V 架构的初步支持。 RISC-V 是基于精简指令集(RISC)原则的一个开源指令集架构,它允许任何人设计、制造和销售 RISC-V 芯片和软件,在性能相等的情况下费用以及能耗更低,因此对企业具有相当大的吸引力。 对于 RISC-V,Linux 内核对其支持早已进行,此前我们曾报道过 Linux 内核已经加入了对 RISC-V 架构的初步支持。 相关连接 RISC-V 的详细介绍:"https://www.oschina.net/p/risc-v" 原文来自: https://www.oschina.net/news/94799/risc-v-processor-gets-more-support

大道至简——RISC-V架构之魂(转载)

[亡魂溺海] 提交于 2019-11-27 01:17:13
1: https://blog.csdn.net/zoomdy/article/details/79580529 2: https://blog.csdn.net/zoomdy/article/details/79580772 3: https://blog.csdn.net/zoomdy/article/details/79580949 4: RISC-V相关的开源项目 https://blog.csdn.net/u013710265/article/details/70332671 和RISC-V相关的有如下一些开源项目: 工具链 1、riscv-tools - 基本上所有RISC-V相关工具链、仿真器、测试的宏项目,包含以下的项目 riscv-gnu-toolchain - GNU工具链 riscv-gcc - GCC 编译器 riscv-binutils-gdb - 二进制工具(链接器,汇编器等)、GDB 调试工具 riscv-glibc - GNU C标准库实现 riscv-isa-sim - Spike周期精确指令集模拟器 riscv-llvm -LLVM编译器框架 riscv-clang - 基于LLVM框架的C编译器 riscv-opcodes - RISC-V操作码信息和转换脚本 riscv-tests - RISC-V指令集测试用例 riscv-fesvr -

RISC-V学习

吃可爱长大的小学妹 提交于 2019-11-27 01:16:30
RISC-V指令集分类 RISC-V的指令集使用模块化的方式进行组织,每一个模块使用一个英文字母来表示。RISC-V最基本也是唯一强制要求实现的指令集部分是由I字母表示的基本整数指令子集,使用该整数指令子集,便能够实现完整的软件编译器。其他的指令子集部分均为可选的模块,具有代表性的模块包括M/A/F/D/C,如表1所示。 为了提高代码密度,RISC-V架构也提供可选的“压缩”指令子集,由英文字母C表示。压缩指令的指令编码长度为16比特,而普通的非压缩指令的长度为32比特。以上这些模块的一个特定组合“IMAFD”,也被称为“通用”组合,由英文字母G表示。因此RV32G表示RV32IMAFD,同理RV64G表示RV64IMAFD。 为了进一步减少面积,RISC-V架构还提供一种“嵌入式”架构,由英文字母E表示。该架构主要用于追求极低面积与功耗的深嵌入式场景。该架构仅需要支持16个通用整数寄存器,而非嵌入式的普通架构则需要支持32个通用整数寄存器。 通过以上的模块化指令集,能够选择不同的组合来满足不同的应用。譬如,追求小面积低功耗的嵌入式场景 可以选择使用RV32EC架构;而大型的64位架构则可以选择RV64G。 除了上述的模块,还有若干的模块包括L、B、P、V和T等。这些扩展目前大多数还在不断完善和定义中,尚未最终确定,因此本文在此不做详细论述。 RISC-V官网 RISC官网网址如下