Changes between Version 5 and Version 6 of Ex02課題2015


Ignore:
Timestamp:
Apr 20, 2015 5:32:32 PM (11 years ago)
Author:
nakasato
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Ex02課題2015

    v5 v6  
    44第4版教科書上巻p.210の「3.3 乗算」をよく読んで、乗算をおこなうプログラムを作ってください。 
    55乗数A、被乗数B、積Cは32ビットです。求める乗算結果は64ビットではなく、下位の32ビットだけで十分です。 
     6つまり、乗数と被乗数は最大16ビットまでを仮定してください。 
    67  
    78今後演習で設計するHDLでは、シフト命令をサポートしていませんので、以下のような工夫が必要になります。 
     
    2122 
    2223ここで気をつけなければならないのは、加算によるオーバーフローです。 
    23 最上位ビットが1である数を2倍すると(正確には同じ数を足し合わせると)、最上位ビットで桁上がりを生じるため、 
    24 add 命令ではオーバーフロー例外が発生してしまいます。  
    25 xspimでは、このためプログラムが停止してしまいますので、 左シフトするための加算はaddではなく、 オーバーフローを無視するadduを使用してください。 
     24最上位ビットが1である数を2倍すると(正確には同じ数を足し合わせると)、 
     25最上位ビットで桁上がりを生じるため、add 命令ではオーバーフロー例外が発生します。  
     26xspimでは、このためプログラムが停止するので、 左シフトするための加算はaddではなく、 
     27オーバーフローを無視するadduを使用してください。 
    2628 
    27 一方、今後設計するプロセッサはオーバーフローをチェックしません ので、回路シミュレーション時は、adduをaddに戻す必要があります。 
    28 詳しいことは今後説明します。今回作成するプログラムはadduを利用したものを保存しておくこと。 
     29一方、演習の後半で設計するプロセッサはオーバーフローをチェックしませんので、 
     30回路シミュレーション時はadduをaddに戻す必要があります。 
     31詳しいことは、該当回の際に説明します。なお、今回作成するプログラムはadduを利用したものを保存しておくこと。 
    2932 
    3033== 右シフト == 
    31341ビット右シフトを他の命令で単純に実現することは困難です。  
    32 そこで今回は、乗算アルゴリズムとハードウエアの直列バージョン(教科書上巻p.212)に あるアルゴリズムを左シフトのみを使うように修正して乗算を実現します。 
     35そこで今回は乗算アルゴリズムとハードウエアの直列バージョン(教科書上巻p.212)に 
     36あるアルゴリズムを、左シフトのみを使うように修正して乗算を実現します。 
    3337 
    3438[[Image(http://galaxy.u-aizu.ac.jp/note/raw-attachment/wiki/Ex02%E8%AA%B2%E9%A1%8C2015/mult_chart.gif)]] 
    3539 
    36 乗算で使われる右シフトは、ビットを下位から順に調べることだけが 目的なので、左シフトを使って同等の機能を実現することができます。  
     40乗算で使われる右シフトは、ビットを下位から順に調べることだけが目的なので、 
     41左シフトを使って同等の機能を実現することができます。  
    3742 
    3843下のように、右シフトの結果と定数1とのandをとる代わりに、 
     
    5762[[Image(http://galaxy.u-aizu.ac.jp/note/raw-attachment/wiki/Ex02%E8%AA%B2%E9%A1%8C2015/shift_ex.gif)]] 
    5863 
    59 シフト命令を使う方法(上)だと結果は 0…01(32ビット) か 00…0(32ビット)の通りだけですが、 
     64シフト命令を使う方法(上)だと結果は 0…01(32ビット) か 00…0(32ビット)の2通りだけですが、 
    6065加算命令を使用した方法(下)だと、そのビットが0のときは 00…0 ですが、そのビットが1だった場合、 
    6166その結果もそれが何桁目かによって、結果を左にシフトしています。 
     
    8287 
    8388作成ファイル名は「ex02_p5.s」としてください。 
    84