CPU
チョット分け合ってA64FXのマニュアルを読みなおしている。分岐予測について調べたかったのでもう一度読み直してまとめている。 条件分岐予測には私の理解では大きく2種類があって、 局所分岐予測:条件分岐命令毎に分離した履歴バッファを利用する。つまり…
SonicBOOMの動作解析、次はLSUによるロード命令の動作を見てみよう。ロード命令はLSUにより発行されるが、命令自体は整数ユニットとは別のイシューユニットで発行される。 以下のアセンブリ命令を実行して波形を取得した。 .section .text .global simple_lo…
前回の解析で、イシューユニットで命令があふれてしまった場合にどのように動作するのかが解析できなかった。いくつか構成を変えて新しいコンフィグレーションを生成してみる。 StrangeBoomConfigという新しいコンフィグレーションを作ってその動作を確かめ…
次に、以下のようにALUのリソースを一気に使い切るようなコードを見てみよう。これはDispatcherがC.ADDIを8命令フルにDispatchするがALUの数が足りず、すべての命令を発行することができない場合にFetcherがどのようにリロードするのかを観察する。 00000000…
SonicBOOMのデザインを読み解いている。引き続き以下のようなプログラムを動かして命令フェッチャーの動きを観察している。 000000008000322e <simple_add>: 8000322e: b0002573 csrr a0,mcycle 80003232: 301025f3 csrr a1,misa 80003236: 0205e593 ori a1,a1,32 800032</simple_add>…
SonicBOOMのデザインを読み解いている。少しクリティカルな部分について解析するために以下のようなプログラムを動かしてみよう。 000000008000322e <simple_add>: 8000322e: b0002573 csrr a0,mcycle 80003232: 301025f3 csrr a1,misa 80003236: 0205e593 ori a1,a1,32 </simple_add>…
引き続きSonicBOOMのデザインを読んでいる。SonicBOOMではf3にて簡単なデコードが完了すると、バックエンドに命令が渡される。その時のフロントエンドとバックエンドのインタフェースとしてFetchBuffer(fb)に格納される。FetchBufferからバックエンドに命令…
SonicBOOMのデザインを読んでいる。次はTLBについて調査する。 TLBは仮想アドレスから物理アドレスを引いてくるための機構なのだが、テーブルサーチ部分は以下のような構成になっていた。 1つの仮想アドレスに対して4-WAY同時に格納できる構成になっており、…
RISC-VのOoOコアSonicBOOMのデザインを読み解いている。フロントエンドのパイプライン構成について読み解いていきたい。 SonicBOOMのフェッチ部については大まかに言って3ステージに分かれていると言って良い。 s0:プログラムカウンタから仮想アドレスを命…
SonicBOOMの基本的な性能を見るために、次はCoremarkを実行してみることにした。SonicBOOMはパラメータに応じて以下の構成を取ることができる。 Coremarkのソースコードとコンパイルについては、以下のリポジトリを活用することにした。デフォルトではCorema…
RISC-VのOoOコアであるSonicBOOMのデザインを勉強している。前回に続いて、以下のテストパタンを用いてALUのデータパスがどのようにして選択されているのかを観察している。 .section .text .global simple_add simple_add: addi x10, x0, 1 addi x11, x10, …
SonicBOOMの基本的な性能を見るために、Dhrystoneを実行してみることにした。SonicBOOMはパラメータに応じて以下の構成を取ることができる。 これらの構成の違いは、BOOMのconfix-mixins.scalaに定義されている。GigaBoomConfigは以下のように定義されている…
2020年も終わりに近づいてきた。今年はとにかくコロナウイルスに振り回された日々だったが、まずは無事に2020年を終えることができて良かったと思っている。この調子でいくと来年はどうなるのかは想像もつかないが、自分のモットーである「制御できないこと…
SonicBOOM (BOOMv3)のデザインを読み解いていきたいと思う。まずはいくつか小さなマイクロベンチマークプログラムを流して、データパスの流れを追っていきたいと思う。 一番基本となるのは加算をチェインだろう。依存関係の加算を連続して実行すると加算器の…
SonicBOOMのデザインを読み解く続き。フロントエンドデザインを波形を見ながら読み解いていくことにする。最初のブート部分の波形を表示すると以下のようになる。 まず、F0ステージからICacheへのリクエストを出し、F2ステージにレスポンスが無ければキャッ…
色々訳あってRISC-VのOoOデザインであるSonicBOOMの構成を読み解くことにした。SonicBOOMのデザインは、デザインそのものはriscv-boomリポジトリから入手できるが、合成及びRTLシミュレーションを行うためにはChipyardを使う必要がある(boom-templateという…
RISC-VのオープンソースプロセッサBOOMv3(SonicBOOM)は私の手元のGCCでコンパイルしたCoremarkで、特にオプションをいじらずに5.0CMK/MHzを上回ることが確認できた。 私が使っているのがRISC-V GCC 7.2なので最近リリースされたGCC 10.0にアップグレードする…
RISC-VのオープンソースプロセッサBOOMv3(SonicBOOM)が公開されている。シミュレーションは前回上手く動作したが、ブロックダイアグラムを作って中身を見てみたいと思った。 そこで生成されたVerilogを読みながらブロックダイアグラムを作ってみることにし…
RISC-VのオープンソースプロセッサBOOMv3(SonicBOOM)が公開されているが、シミュレーションを行うためにはChipyardの環境を用意するのが原則になっているようだ。 SonicBOOMv3のリポジトリ事態にCoremarkは入っていないようなので自分でバイナリを構築する…
RISC-VのオープンソースプロセッサBOOMv3(SonicBOOM)が公開されているが、シミュレーションを行うためにはChipyardの環境を用意するのが原則になっているようだ。 Chipyardの環境はかなり巨大なので用意するのが面倒なのだが、構築方法を忘れそうなので一…
SonicBOOMというのはBOOM(Berkeley Out-of-Order Machine)の第3世代で、なぜSonicという名前を付けたのか謎だが、IPCを向上させるための技術が詰め込まれている。 carrv.github.io SonicBOOM: The 3rd Generation Berkeley Out-of-Order Machine https://car…
インターフェースを毎号買って読んでいる方なら「おいおいこの話は先月号に載せるべき話じゃないのかい?」と言うことに気が付くと思います。私もそう思います。が、どうやら編集担当さんによりページ数のミスが発生した模様(本当かどうかは知りませんが)…
スーパコンピュータ富岳のプロセッサA64FXに関するマイクロアーキテクチャが公開されている。こういう情報はあまり出てくることが無いので、とてもありがたい。 github.com せっかくなのでまとめていく。最初は勉強のためにPowerPointにまとめていたのだが、…
スーパコンピュータ富岳のプロセッサA64FXに関するマイクロアーキテクチャが公開されている。こういう情報はあまり出てくることが無いので、とてもありがたい。 github.com せっかくなのでまとめていく。最初は勉強のためにPowerPointにまとめていたのだが、…
スーパコンピュータ富岳のプロセッサA64FXに関するマイクロアーキテクチャが公開されている。こういう情報はあまり出てくることが無いので、とてもありがたい。 github.com せっかくなのでまとめていく。最初は勉強のためにPowerPointにまとめていたのだが、…
スーパコンピュータ富岳のプロセッサA64FXに関するマイクロアーキテクチャが公開されている。こういう情報はあまり出てくることが無いので、とてもありがたい。 github.com せっかくなのでまとめていく。最初は勉強のためにPowerPointにまとめていたのだが、…
スーパコンピュータ富岳のプロセッサA64FXに関するマイクロアーキテクチャが公開されている。こういう情報はあまり出てくることが無いので、とてもありがたい。 github.com せっかくなのでまとめていく。最初は勉強のためにPowerPointにまとめていたのだが、…
スーパコンピュータ富岳のプロセッサA64FXに関するマイクロアーキテクチャが公開されている。こういう情報はあまり出てくることが無いので、とてもありがたい。 github.com せっかくなのでまとめていく。最初は勉強のためにPowerPointにまとめていたのだが、…
スーパコンピュータ富岳のプロセッサA64FXに関するマイクロアーキテクチャが公開されている。こういう情報はあまり出てくることが無いので、とてもありがたい。 github.com せっかくなのでまとめていく。最初は勉強のためにPowerPointにまとめていたのだが、…
スーパコンピュータ富岳のプロセッサA64FXに関するマイクロアーキテクチャが公開されている。こういう情報はあまり出てくることが無いので、とてもありがたい。 github.com せっかくなのでまとめていく。最初は勉強のためにPowerPointにまとめていたのだが、…