RISC-VとLLVM
RISC-VはBSDライセンスで設計されているISAだ。誰でもRISC-Vの設計を使ってCPUを作ることが出来る。SoCは色々と出ているものの、お手軽に実際に触れる端末はそんなに多くないのが現実だ。
1万円以下で、実際に触れるものとしては
– HiFive1($59)
– Sipeed Maix M1 Dock($18.9)
この辺だろう(ちなみに、HiFive1はあまり知られていないが、開発元のSiFiveはRISC FoundationのPlatinum Membersだったりもする)。実際に自分が持っているのは、M1 Dockと同じスペックのSipeed M1w dock suitになる。そう、国内でも既に触って使えるRISC-Vの端末が出てきている。
そんなRISC-Vを使って、量子コンピュータを使ったプログラミング言語を動かしてしまおうという試みになる。RISC-Vは命令セットがシンプルで、独自の拡張もすることが出来る。そこでRISC-V拡張部分を量子プログラミングの命令セットとして使うことで、RISC-Vプラットフォーム上で量子プログラミング言語(LLVMを使って作る予定)でコンパイルしたものを動かそうという試みになる。
そこで、RISC-Vを拡張したSoCを作ることになるのだが、そこで登場させるのがQEMUということになる。 幸運にも既にQEMU RISC-Vはシュミレーターとして動作させることが出来る。また、他にもRISC-VのシュミレータとしてRISCが公開しているSpikeもあるので、こちらも利用できるかどうか調査していくことになる。
つまり、riscv-gnu-toolchainと量子コンピューター用の言語をLLVMで作って、動作させる環境としてQEMU/Spikeといったシュミレータがあると一式を動作させることが出来るということになる。
ということで、とりあえず全部の環境をVirtualBox上で用意したものが以下になる。
———————————————–
VirtualBox export image
spec : Ubuntu 18.04.2 LTS
id/pass : siprop/siprop
– Paths
/home/siprop/work
qemu-4.1.0-rc0 : QEMUからビルドした物全部
riscv-gnu-toolchain : RISC-V Toolchainからビルドしたもの
riscv-llvm : sifive LLVMからビルドしたもの
riscv : qemu/toolchain ROOT/llvmのバイナリ置き場
/bin : ここにPATHを通してある
– sample
qemu-system-riscv32 -nographic -machine sifive_e -kernel firmware.elf
qemu-riscv32 hello
note)
ビルドは一旦全部ビルドしてあるのでmakeすればOK。
CPU : 4個、メモリ : 12Gbyte はミニマムで必要。
qemu/toolchain/llvmを修正したらビルド。
———————————————–
HiFiveボード上のベアメタルでプログラムの動作、もちろんQEMU上でRISC-V Linuxもこれで動作させることが出来る。そう、実際に触れる端末もある、シュミレーター上でも動作させることが出来る、RISC-Vは他のx86/64、ARMのように既に使うことが出来る。(ちなみに、上記のフルビルドにはPC上で6vcpu/12Gbyteのメモリを割り当てて4時間ほどかかった。クラウド上のハイスペックサーバーでビルドするといった方法だと1時間位だった。利用した環境にあわせてビルドする環境は考えていこう)
ということで、まずはQEMU上でRISC-V拡張命令セットを動かす方法とSpikeや他のシュミレータを使う方法を模索してみよう。
1件の返信
[…] 環境としては前回作成したRISC-Vエミュレーター環境(spike)を利用する。spikeには-pオプションでプロセッサの数をシュミレーションすることが出来る。デフォルトは1コアだが、1000コア上で動作させてみる。 […]