このページの本文へ

ロードマップでわかる!当世プロセッサー事情 第673回

インテルがAIプロセッサーに関する論文でIntel 4の開発が順調であることを強調 AIプロセッサーの昨今

2022年06月27日 12時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/) 編集●北村/ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

命令実行段に手を入れる必要がないので
RISC-Vを利用するのは非常に理に適った選択

 試作チップにRISC-Vを使った理由だが、それは実装しやすいからである。今回ベースとしたのは、CVA6である。もともとはArianeという名前で、System Verilogというハードウェア記述言語で構築されたインオーダー、6段パイプラインの比較的シンプルな、ただし64bit RISC-VでLinuxも動作するという使いやすいコアである。

 ただこのArianeはOpenHWに移管され、CVA6という名称に変更された。現在のCVA6の構成は下の画像のとおりで、命令実行段(EX)のみOut-of-Order Writebackが可能になっている仕組みだ。

フロントエンド2段、IDとIssue、Ex、Commitが各1段という構成。一応Issueからは最大5命令同時発行になっているが、そもそもInstruction Queueからは1命令/サイクルでの取り込みなので、実質In-Orderとしても差し支えない

 現状ではOut-of-Orderといっても実質1 RISC-V命令/サイクルでの処理しかできないのだが、もともとRISC-V命令が「複雑なISAを搭載するよりも、複雑なものはどうせ内部分解して複数命令で処理するのだから、ISAそのものは単純に留めよう」という発想になっているので、内部処理で言えば2命令/サイクル程度で動くこともあるかもしれない。

 それはともかく。今回の改造では、命令実行段そのものには手を入れる必要がない。ただしCNCを動かす関係で、命令デコーダにCNC用の命令を追加するとともに、CNCを実行する際にCNCが参照するLLCのエリアに割り当てられているメモリーの物理アドレス(Sv39 address)を通知し、またIssueポートにCNCに対してコマンドを発行するユニットを追加する必要がある。

 こうした改造を行なうのに、x86では内部構造が複雑すぎる。もちろんGNAと同じようにP54コアを使うという案もあるのだが、これだともともとのコアの性能が低すぎて、CNCを入れても評価の妨げになりそうである。

 一方でArmコアを使うと、こんな調子で勝手に命令デコードに手を入れられない。ところがRISC-Vの場合、そもそもカスタム命令の追加も自由にできるし、今回のCVA6のように変更のベースとするのに使い勝手の良いコアが無償で配布されている。そのままの製品化を考えないのであれば、RISC-Vを利用するのは非常に理に適った選択だ。

黒い部分がもともとのCVA6のままで、色付きの部分が手を入れた場所である

 一方のLLC側の変更点が下の画像だ。タグや状態管理、コヒーレントやキャッシュHit/Miss管理、ディレクトリなどは別にCNCがあってもなくても必要なモノであり、追加するのはCNCそのものと、SRAMとCNCのI/F、それとCNCとコアのレジスターの間のI/Fだけである。

LLC側の変更点。SECDED(Single Error Collection/Double Error Detection:1bitエラー修正、2bitエラー検出)機能は、ECCとして搭載される部分のこと

 改造に必要なものが最小限で済み、それでいて基本的なRISC-Vのコアそのものには手を入れていないから、CNCを使わなければただのCVA6コアとして動くので、RISC-V向けのソフトウェアがそのまま利用できるというのも手間がかからない部分である。

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン