CRAY X-MPについて

たけおか @ AXE


update: 2008/SEP/06
初出: 2008/MAR/30

世界最初のスーパーコンピュータである、CRAY-1のアーキテクチャをもとに、 マルチ・プロセッサ化した機械です。
CRAY-1はいわゆるベクトル計算機です。
ベクトル計算機は、少ないハードウェア資源で、高速に行列計算ができるよ うに工夫されています。
CRAY X-MPを、勉強するのは、いつの時代でも、計算機アーキテクチャ設計の 勉強に役に立つであろうと思います。




XMPSIM


CRAY X-MPのパイプラインをシミュレートする、XMPSIMというソフトウェアがあり。
バイナリ供給で、PC/ATのDOS用。
日本語Windowsの DOS窓でも、支障なく使用可能。
(枠の線などに文字化けが発生するが、使用には、まったく問題なし)
XMPSIM (Cray X-MPシミュレータ) サイト
(http://www.utdallas.edu/~cantrell/ee2310/xmpsim.html)



XMPSIM付属のドキュメントを和訳した。

XMPSIMの使い方入門

上記サイトより、 Zipされたアーカイブをダウンロードして、展開する。

DOS窓のプロンプトから、xmpsim と入力して起動。
そのとき、
コマンドの第1引数に、ソースファイルを指定し、
第2引数は出力ログのファイルを指定して、起動できる。
 C:> xmpsim sim1.in aho
 
どんどん[space]キーを押下。

命令を実行するたびに、なにかが変化しておもしろい。

最後に、
Do you want a Gantt Chart?  (Y,A,N)   :
  (Ganttチャートを出しますか?)
 
と尋ねてくるので、「a」を押下して、すべてのログを出力させる。
または、「y」を押下し、直前に表示される命令実行履歴をみて、
どこから、どこまで
かを判断して、出力させるべし。
「n」を押下すれば、Ganttチャートは出ない。
実行ログ(Ganttチャート含む)は、aho.out としてファイルに保存される。

命令はニーモニックで入力。(命令一覧表を参考にする)




ベクトル2つを加算するだけのコード(vvfadd)の解説(たけおかによる)
xmpsimの左肩に表示されているRTCが、62になった頃に、V3レジスタを読み出すと、 加算結果がV3に入っていることが判る。

sim1.inの解説(たけおかによる)

sim2.inの解説(たけおかによる)

sim3.inの解説(たけおかによる)

--
xmpsimでのV(ベクトル)レジスタの読み出し方

  1. xpsimのコマンドラインで、
    s (レジスタ読み書き)を入力
  2. Display register or memory: (A, S, B, T, V, M) で、
    v (ベクトル・レジスタ指定)
  3. Display V register, enter V register number (0-7): で、
    3 (ベクトル・レジスタ3を指定)
  4. Displaying V3
    Enter two octal digits of the element number (00-77): で、
    00 から 77 まで入力(8進数表現。10進表現の8は10(8進)。10進の10は12(8進))
  5. V3(00) = 2.47000000000000E+002 New value:
    と、現在の値が表示される。「New value:」に対しては、ただ「enter」を入力
xmpsimでのS(スカラ)レジスタの読み出し方

  1. xpsimのコマンドラインで、
    s (レジスタ読み書き)を入力
  2. Display register or memory: (A, S, B, T, V, M) で、
    s (スカラ・レジスタ指定)
  3. Display S register, enter a register number (0-7): で
    5 (スカラ・レジスタ5を指定)
  4. S5 = 2.51000000000000E+002 Reserved New value:
    などと、現在の値が表示される。「New value:」に対しては、ただ「enter」を入力
A(アドレス)レジスタの読み書きは、Sレジスタと同様。


--
XMPSIMのバグ


命令の実行に誤りがある。

S6 #<12 というシフト命令の計算が誤っている



--- EOF




たけおか(竹岡尚三)のホームページ