Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

Zynq MPSoCで、コンピュータを学ぼう (その5)

はじめに

「Zynq MPSoCで、コンピュータを学ぼう」のその5です。

  • その1 : Xilinx社のZynqUltrascale+ MPSoC について
  • その2 : Zynq Ultrascale+ MPSoC がどのように立ち上がっていくのか
  • その3 : Linux の dts を見て、どのようなハードウェアを使っているのか?
  • その4 : Linuxデバイスドライバについて
  • その5 : Programmable Logic
  • その6 : QEMU (Zynq Ultrascale+ MPSoC の実物が無くても、Linuxが立ち上がる)

Zynq Ultrascale+ MPSoC の他のコンピュータと大きな違いが、Programming Logic を内蔵しているところです。この Programming Logic にユーザが独自に回路(ハードウェア)を実装できるというのが大きなポイントです。

今回は、この Programming Logic についてみていきます。

Programming Logic

Xilinx は30年も前から FPGA を開発・販売しています。FPGAは Proggramming Logic、回路(ハードウェア)をプログラムできるというものです。 30年も前では、回路図エディタに ANDゲートやFlipflopなどを並べて回路を書き、その後、ツールには配置・配線をしていました。その後、HDLというソフトウェアっぽい言語を使って、回路を表現し、シミュレーションして機能の確認後、論理合成ツールにて ANDゲートやFlipflop、RAMに変換したものを配置・配線します。

  • 回路をHDLで表現する
  • シミュレーションして機能の確認
  • 論理合成ツールで ANDゲートやFlipflop、RAMに変換
  • 配置・配線

は、他のSoCやGPUなどのほとんどの半導体でも行っています。つまり、半導体開発とはどのようなことも学べるのです。

とはいえ、SoCやGPUなどの半導体開発では、これ以外にもいろいろなことがやらなくてはいけません。そして、決定的に違うのは何らかの不具合が発生した場合、その不具合を修正するには膨大な時間と費用が掛かるということです。Programming Logic である FPGAでは、その回路がProgramming Logic内に所望の動作周波数で入りさえすれば、修正に伴う時間と費用は SoCやGPUなどの半導体開発よりは遥かに少ないです。

ちなみに、最先端の半導体プロセスになると、半導体の修正は、数か月(長いと1年以上)という時間と億単位の費用が掛かってしまいます。

Programming Logicとコンピュータ部が一緒になったのは、2010年頃にアナウンスがあった Xilinx の Zynq です。Zynqでは、Arm Cortex-A9x2 をベースにしたコンピュータと Programming Logic が1つの半導体の中に同居することになり、今では コンピュータと一緒に使う回路を別チップのFPAG(Programming Logic)が必要に無くなりました。

Vivadoを使えば、OK!

Zynq Ultrascale+ MPSoC では、Xilinx社の Vivado という開発ツールを使えば、Programming LogicをHDL(Verilog HDL/VHDL)から開発できます。Vivadoでは、HDLで回路を表現し、シミュレーションにて機能の確認、論理合成にて、Programming Logicへの内部表現への変換、そして、配置・配線まで行い、Programming Logicを動作させるために必要な bitstream というROMデータの生成行えます。

また、HDLの代わりに、 C/C++ を使って開発できる Vitis というツールも Xilinx は提供しています。Vitis は C/C++のコードを HDL に変換し、その後、Vivado にて bitstream まで生成します。

なお、VivadoやVitisの使い方について、Xilinxのマニュアルをよく読み、困った時は、FPGAの部屋 に行けば、だいたい解決します。

ツールは使うだけでいい?

Vivado や Vitis は回路を実装するためのツール(手段)ですが、その手段であるツールがどのように動いているかなどを知るのは、いいお仕事をする上では非常に重要になるものと、あたしは思っています。

Xilinx社のマニュアルにはある程度のことは書いてありますが、実際にツールを動かしたときに生成されるファイルについてはそれほど詳しく書いてはないです。

そんな時には、あたしが調べた、「xxxx の中を調べる」という薄い本が役に立ちます。まー、宣伝です。

Vivado、シミュレーションに使う xsim/ZynqMP SoC VIP、Vitis のマニュアルには書いていないことまで、いろいろと書きましたので、是非、覗いてみてください。

おわりに

Zynq Ultrascale+ MPSoC の最大なる特徴である、Programming Logicにて、見てきました。

次回は、その6 : QEMU (Zynq Ultrascale+ MPSoC の実物が無くても、Linuxが立ち上がる) です。