【从嵌入式视角学习香山处理器】一、如何开始?(开发环境搭建)

一、前言

当你看到这篇文章的时候,可能多少已经听说一点关于“香山处理器”项目的描述:它是一个完全开源的CPU设计项目,由中科院的老师和同学们发起并维护;如果说香山项目有“官方组织”,那应该就是中科院的师生们了。
Github仓库在这里:https://github.com/OpenXiangShan
另外还有个Gitee仓库:https://gitee.com/OpenXiangShan

这篇文章的内容主要为了记录我在搭建环境过程中踩过的坑,以及怎么解决的。包括:

  • github代码克隆不下来
  • 相关工具链安装失败
  • 工程编译过程中的报错

但是,不包括以下内容:

  • 工程子文件夹内容介绍
  • 编译脚本解析
  • 编译后的功能测试示例
  • 编译后的性能测试示例
  • chisel编程语言入门

最后附上一切编译正常结束的样子,以供读者对照参考。


二、硬件配置要求:环境搭建是否有门槛?

香山作为一个以设计能真实流片的CPU为目的的代码项目,以及期望它“能像开源软件Linux kernel一样长盛不衰30年”(中科院老师说的),所以使用了比较低门槛、且高效率的语言chesel3来代替verilog。
但于此同时,chesel的编译对环境的内存大小要求较高:官方推荐64G(他们自己使用128G)。
硬盘和CPU要求不高。

官方推荐配置:(https://github.com/OpenXiangShan/xs-env#一初始环境准备

请准备一台性能较强的服务器,以下为服务器的一些配置要求:
操作系统:Ubuntu 20.04 LTS (其他版本未测试,不建议使用) CPU:不限,性能将决定编译与生成的速度
内存:最低 32G,推荐 64G 及以上
磁盘空间:20G 及以上
网络:请自行配置顺畅的网络环境
-(提示:内存过小、SWAP空间不足会导致编译错误。参见:https://github.com/OpenXiangShan/XiangShan/issues/891)

我的配置:

  • 虚拟机:VMware Workstation 16 Pro
  • 操作系统:Ubuntu 20.04 LTS
  • 内存:30G
  • 磁盘空间:20G
  • 处理器:i7-11700(分配8核)

注意:

  • 如果内存不够大,可以尝试修改工程的编译参数(Xmx64G)为对应内存大小的一半看看

三、软件配置要求:有什么大坑要注意?

  • VMware Workstation Pro:或者VMware Player也行
  • 科学上网工具:Linux版本的科学上网工具,主要用于从Github下载代码和相关工具
  • vscode(可选):windows和Linux都要装,用于从本地windows用ssh连接到远程Linux看代码

四、软件安装(参考)

1、我的虚拟机:

虚拟机安装后的样子
为了能正常使用ssh进行开发,我的环境做了以下几点

  • 虚拟机的“网络连接”设置为“桥接模式”
  • 手动配置静态地址为:192.168.3.100(和本地windows在同一网段,具体看家里使用的路由器分配网段是多少)
  • 手动安装和启动openssh-server:Ubuntu20.04默认精简了很多工具,需要安装系统后再手动安装(好像?)

2、我的科学上网工具:

(但如果你的环境能正常流畅地访问Github,这一步是不需要的;直接跳到下一节)
注意:科学上网工具不止一款。
配置并开启科学上网工具后还要设置全局变量和系统的代理参数:

  • 全局变量:用于给命令行进行代理转发,主要是git clone https://github.com/xxxcurl https://xxx这俩命令要用到
  • 系统的代理:用于给浏览器(和其他GUI软件?)进行代理转发,主要是为了能正常访问Github网页

3、我的本地vscode:(windows)

我的本地vscode

4、我的远程vscode:(Ubuntu20.04)

这小节的标题比较迷惑,但我想不出更好的描述……
实际想说的是:通过本地vscode用ssh远程打开Linux上的目录。
vscode远程连接成功后的样子
操作步骤:

  • 打开本地的vscode
  • 选择左侧栏的“Remote SSH”插件,然后输入Ubuntu地址和用户名:ssh <用户名>@<Ubuntu的静态ip>(即想要远程连接上的地址)
  • 正常情况下即可连接上,然后本地vscode会自动打开图中的“终端”窗口:用cd <准备下载香山代码的路径>进入指定目录
  • 从Github克隆香山的“环境部署”代码:git clone https://github.com/OpenXiangShan/xs-env.git
  • 之所以克隆这个xs-env代码而不直接克隆OpenXiangShan,是因为完整的开发环境需要依赖很多其他的工具(python/mill/curl等)和子模块代码(Huancun/NutShell/Varilator等),xs-env的功能就是通过脚本帮我们一次性下载安装好

五、开发环境部署:完整的开发环境是怎样的?

开发环境部署主要按照xs-envreadme说明来(虽然这里遇到挺多坑……)。

git clone https://github.com/OpenXiangShan/xs-env
cd xs-env
sudo -s ./setup-tools.sh
source setup.sh

每一步都不能有报错。
如果遇到报错,可能的原因和值得尝试的方法如下:

现象原因解决方法
1.克隆代码失败(异常情况1)访问Github时网络很不稳定1.检查科学上网工具是否已经全局开启;2.echo $http_proxyecho $https_proxy检查这两个变量是否为空;3.只有上面两步正常了才能真正通过科学上网工具代理去克隆代码;
2.mill工具安装超时失败(同上)(同上)
3.克隆rocket-chip代码失败(异常情况2)科学上网工具代理对ssh连接方式无效修改./xs-env/XiangShan/huancun/.gitmodules文件中的原下载链接git@github.com:OpenXiangShan/rocket-chip.git为https方式url = https://github.com/OpenXiangShan/rocket-chip.git
4.source setup.sh执行失败,提示edu.berkeley.cs:chisel3_2.12:3.5-SNAPSHOT这个挺坑:是官方某次修改xs-env代码时引入的bug;比如我当时发现的是这个提交(2021.11.10),从Github的在线编译报告能看到同样的报错官方已解决,最新的代码不再出现报错;或者可以自己回退到有bug的上一次的提交:git reset --hard HEAD^,再次执行source setup.sh即可

六、开发环境验证:部署成功后是什么样子呢?(香山代码初次编译)

部署后的环境验证也继续按照xs-envreadme说明来进行:

cd ./XiangShan
make init
make verilog #可能误报error,但以下一步检查.v文件是否存在为准
ls XiangShan/build/XSTop.v #查看是否正常生成.v文件,否则的确是编译出错;下一步也会出错
make emu CONFIG=MinimalConfig SIM_ARGS=--disable-log EMU_TRACE=1 -j32
ls ./build/emu #查看是否正常生成emu文件,否则表示编译出错

上面的命令是编译最小配置的单核香山

如果正常,则会有以下输出:

...
clang++    SimJTAG.o axi4.o common.o compress.o device.o flash.o keyboard.o lightsss.o ram.o remote_bitbang.o sdcard.o uart.o vga.o difftest.o goldenmem.o interface.o nemuproxy.o ref.o memdep.o runahead.o spikedasm.o tllogger.o main.o emu.o snapshot.o verilated.o verilated_dpi.o verilated_vcd_c.o VSimTop__ALL.a   -lpthread -lSDL2 -ldl -lz -lsqlite3    -o /home/cwq/1_xiangshan/xs-env/XiangShan/build/emu
rm VSimTop__ALL.verilator_deplist.tmp
make[3]: 离开目录“/home/cwq/1_xiangshan/xs-env/XiangShan/build/emu-compile”
make[2]: 离开目录“/home/cwq/1_xiangshan/xs-env/XiangShan/difftest”
make[1]: 离开目录“/home/cwq/1_xiangshan/xs-env/XiangShan/difftest”

接着可以(可选)用下面的命令尝试编译完整配置的双核香山(我没试过……可能出现别的报错):

make SIM_ARGS="--dual-core" verilog
ls XiangShan/build/XSTop.v #查看是否正常生成.v文件,否则的确是编译出错;下一步也会出错
make emu -j32
ls ./build/emu #查看是否正常生成emu文件,否则表示编译出错

如果到这一步都正常结束,那么:
恭喜!环境搭建成功!
但如果遇到报错,可能的原因和值得尝试的方法如下:

现象原因解决方法
1.make init失败克隆rocket-chip代码失败,导致命令执行异常手动删除XiangShan/rocket-chip文件夹,再重新make init
2.make emu xxx失败内存参数设置过小修改对应的build.sc文件的两个-Xmx64G为Ubuntu总内存的一半左右,再执行命令(比如我虚拟机有30G,但修改为-Xmx10G后可正常)
3.make emu CONFIG=MinimalConfig xxx失败之前执行make emu失败时留下不完整的文件夹导致的删除该不完整的文件夹:make clean,重新执行命令即可

接下来准备继续按照readme的步骤,跑下workload。

欢迎邮箱(mapleleaf_chen@qq.com)或微信(HeyYo_Qing)交流~

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 香山开源高性能risc-v处理器设计与实现 pdf 是一份介绍risc-v处理器的设计和实现的文档。risc-v是一种基于精简指令集的处理器架构,因其简洁、开放、可定制的特点,受到了广泛关注。 该文档详细介绍了如何在FPGA(现场可编程门阵列)上实现risc-v处理器。作者分享了开发处理器的具体步骤、设计方案、软件支持等方面的知识。并且,该处理器的性能也在文档中详细评估。 该处理器在性能、功耗等方面有着不俗表现。其主频可以达到400MHz以上,实现了乘-累加指令,并且具有64位寄存器和32个寄存器,支持RV64I标准指令集,内存延迟很低,具有较好的实时性能。 总之,香山开源高性能risc-v处理器设计与实现 pdf是一份非常值得阅读的文档,其中对risc-v处理器的设计和实现有着详细的介绍,可以帮助人们了解risc-v处理器的优势和不足,为相关领域的开发提供指导。 ### 回答2: 《香山开源高性能risc-v处理器设计与实现》是一本介绍如何设计和实现RISC-V处理器的书籍,也是一本介绍RISC-V处理器架构的入门读物。该书深入浅出地介绍了RISC-V架构和处理器设计的基本知识,并通过实例详细地述说了如何基于该架构,设计和实现一个高性能的RISC-V处理器。 该书的作者陈海波教授是一位专业的计算机架构工程师,他在书中将自己多年来的实践经验与理论知识完美结合,将复杂的概念以通俗易懂的方式呈现给读者。全书以RISC-V指令集架构、CPU内部运行机制、核心子系统设计等方面为主线,详细地介绍了处理器的设计流程和实现细节。最后以在FPGA上的逻辑仿真和运行测试为实例,让读者真正了解该处理器的可靠性和高性能。 通过学习香山开源高性能risc-v处理器设计与实现》这本书,读者可以深入学习RISC-V处理器架构以及处理器设计方面的知识。不仅可以对计算机组成原理和计算机系统结构有更深入的理解,还可以掌握实际的设计和开发技巧。对于从事处理器设计、嵌入式系统设计等领域的专业人员,是一本不可多得的参考书籍。 ### 回答3: 《香山开源高性能risc-v处理器设计与实现》是一本介绍RISC-V处理器架构的书籍,该处理器架构是一个基于精简指令集(RISC)的开源处理器架构。本书主要介绍了香山开源处理器的设计与实现,是一本深入学习RISC-V架构的重要参考书。 该书共分为八章,首先介绍了处理器的基本概念和RISC-V处理器架构的特点。接着深入分析了RISC-V处理器的指令集和管道,讲解了指令集概述、流水线架构、指令编码等内容。紧接着,本书介绍了一款基于RISC-V架构的香山开源处理器,详细介绍了处理器的数据通路、控制单元、存储结构等模块的实现原理。 在完成处理器架构描述之后,本书详细介绍了基于Vivado实现的处理器的设计和仿真调试的方法。通过实际例子的讲解,读者可以深入了解如何通过Vivado进行处理器设计和仿真调试。 该书最后介绍了一些关于RISC-V处理器架构的扩展和应用的内容,如在处理器架构扩展方面的内容,以及如何在RISC-V处理器架构上实现操作系统和应用程序的开发。 总之,《香山开源高性能risc-v处理器设计与实现》是一本详细介绍RISC-V处理器架构和实现方法的书籍,对于学习处理器架构和实现的读者是一本不可多得的参考书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值