【问题标题】:How to make a multicore system using the RISC-V Rocket-chip processor如何使用 RISC-V Rocket 芯片处理器制作多核系统
【发布时间】:2015-09-11 07:01:55
【问题描述】:

我想使用 zedboard 制作多核。我对此有 2 个问题。

  1. 我在 rocket-chip/src/main/scala/Configs.scala 中将变量 'NTILES' 更改为 2 以实现多核系统。

  2. 如果我制作多核,我该如何确认?我尝试使用 fork 和后台执行来检查修改后的系统,但我收到如下图所示的错误消息。并且 pthreads 无法编译。我想知道确认多核系统的方法。

另外,如果您有任何关于为 Rocketchip 制作多核的想法,请告诉我诀窍。谢谢。

【问题讨论】:

  • 为什么标记为pthreads?您使用的是操作系统吗?
  • 您需要进一步解释如何编译您的软件以在您的多核火箭芯片处理器上运行。信息太少,我们无法继续。

标签: multicore riscv


【解决方案1】:

使用 NTILES=2 和 DefaultFPGAConfig,一个 zedboard 可能无法容纳两个内核。我将验证 Vivado 是否能够成功完成。您可能需要减少一些其他参数(BTB、FPU 等)。

代理内核 (riscv-pk) 不支持多核。要使用 linux,您需要在构建时启用 SMP 支持。在为 linux 做 menuconfig 时,在“Platform Type”下打开“Symmetric Multi-Processing”。对于 pthreads,我会将正确的共享库从 riscv-gcc-linux 的编译器目录复制到您的 linux 磁盘映像。

在板上启动 SMP linux 后,您可以使用 cat /proc/cpuinfo 确认它是多核的。为了测试您的软件(Linux、磁盘映像、您的代码),我建议您使用spike,并在您确信并行软件准备就绪时转移到 FPGA。 Spike 可以模拟多核。

【讨论】:

  • 感谢您回答我的问题。你说我需要启用 SMP 支持才能使用 linux。那个'linux'意味着zedboard中的petalinux???我想确定那是什么意思,因为我对“linux”的含义有点困惑。
  • Linux 我的意思是riscv-linux。至于发行版(磁盘映像),我现在会坚持使用基本的busybox。 riscv-poky 分发生成器很棒,但需要针对新的特权 ISA 进行更新。我会查看 riscv-tools 中的 README 以获取有关在 RISC-V 上构建和使用 linux 的说明。
  • 感谢您的建议。我尝试在zedboard上使用linux并执行由riscv64-unknown-linux-gnu-gcc编译的测试文件。但是,这样做是有问题的。我们尝试了“./test”,但它不起作用。我们找到了“灰”并尝试使用它,但它也不起作用。我们输入了“ash test”,终端上的消息是“test: line 10: syntax error: unexpected "(" (expecting ")")'。这个测试文件只是打印'hello world'的目标文件,它适用于ubuntu。
  • 能否请您给我一个建议,让我使用 linux 在 zedboard 上执行目标文件?我应该使用灰吗?或者有没有其他方法来执行文件?谢谢。
  • 是的,我会使用busybox中包含的灰壳。有关如何在 zedboard 上使用 riscv-linux 的更多说明,我会查看 FPGA repo 的 README (github.com/ucb-bar/fpga-zynq#booting)。要执行您的文件,您需要将其添加到磁盘映像 (boot.bin)。有时来自 ash(busybox 中)的错误消息具有误导性,所以我会检查文件是否可见、可执行等...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
相关资源
最近更新 更多