ttth @ ウィキ
http://w.atwiki.jp/ttth/
ttth @ ウィキ
ja
2007-04-30T22:01:37+09:00
1177938097
-
ファイル提出について
https://w.atwiki.jp/ttth/pages/37.html
*ファイル提出について
実験Ⅱのファイル群提出が最終レポートの代替として課されました。
というわけで。
ディレクトリ構成案を書いてみます。
各自で作ったファイルを各自の責任であげるということでいかがでしょうか?
/pub/Seika/2006/4han/...
Compiler(buyobuyon)
Software
Simulator(harry?buyobuyon?)
Assembler(harry)
Library(tsuy)
Others(*)
Hardware
FPU(tsuy)
Others(yastak)
CPU(yastak)
CPU_com(buyobuyon)
sram(yastak)
usb(yastak)
Results(*)
presentation(yastak)
bitfile(yastak)
Others(*)
Resultsは発表資料と画像(sld)を入れる予定です。
別に誰がやっても良いと思うのですがどうします?
誰もいないようならやりますー。
ディレクトリ内は各自で自由に…。()内が責任者です。
過不足あったら付け足したり消去したりしてくださいm(_ _)m
(buyobuyonディレクトリ、harryディレクトリ、tsuyディレクトリ…という方法もありだと思いますが、ちょっと後々見るにはわかりにくいかなぁと思ったので…)
(yastak)
ディレクトリ分けは上のもので良いと思います。
ただ、アップするのは、rs232cも動いてからにしませんか?
最新版の各プログラムでレイトレが正しく動くことの確認にもなりますし。
あと、rs232cのコントローラに関して気になったことを、
yastak氏
2007-04-30T22:01:37+09:00
1177938097
-
upload files
https://w.atwiki.jp/ttth/pages/36.html
* upload files
ファイルアップロード用のページ。
2007-03-15T20:12:31+09:00
1173957151
-
最終発表
https://w.atwiki.jp/ttth/pages/35.html
*最終発表
コンテストの日が近づいております。
皆様元気ですか?
私は明日の夜から地下に入り浸る予定です。
最終発表資料なのですが、詳細は告知されていないけれど、
とりあえずアーキテクチャとコンパイラの説明とレイトレ画像をのせるような感じになると予想して…
皆様の成果をそれぞれ書き込んでください。
いっぱい書いてね!
ただ、進捗報告じゃないからアーキテクチャとコンパイラの概要だけの発表で、
成果は使われなくなるかもしれません…一応欄を作っておきます。
(早く書き込みすぎると損する?)
**コンパイラ
**ソフトウェア
***アセンブラ
***シミュレータ
***その他
**ハードウェア
***基本アーキテクチャ
***制御回路
***FPU
***周辺機器
2007-03-13T23:45:13+09:00
1173797113
-
buyobuyon中
https://w.atwiki.jp/ttth/pages/34.html
**buyobuyon 続き
ページに入り切らなくなったので、2月の書き込みを分離しました。
***2/26(Mo)
min-rtをコンパイルして、MAKECLSが出ないことに気づき、
MAKECLSが出ないはずがない、きっとバグだ!と思ってコードを見直していたのですが、
バグは見つからず…。
逆にmin-rtの方を見直してみたところ、バグではないという結論に至りました。
う~ん、無駄に時間を使ってしまった…。
コンパイラ係用課題は間に合うのか…。
上記の通り、コンパイラをアップしておきました。
ダウンロード、使い方は[[こちら>compiler隠しページ]]から。
***2/25(Su)
ええと、スタックポインタとヒープポインタの初期化を入れ忘れていたので、それを追加。
それだけです。
一応、この前と同じfibをコンパイルしたものを。
:INIT;
mov r125, 1048576;
mov r126, EOF;
:MAIN;
mov r2, 15;
jmpl fib_00000002;
add r0, r0, r0;
end;
add r0, r0, r0;
:fib_00000002;
mov r124, 1;
cmplt r123, r124, r2;
not r122, r123;
beq r122, LABEL_00000010;
add r0, r0, r0;
addi r2, r2, 0;
ret;
add r0, r0, r0;
:LABEL_00000010;
addi r125, r125, -3;
storei r2, r125, 2;
mov r121, 2;
sub r2, r2, r121;
storei r127, r125, 0;
jmpl fib_00000002;
add r0, r0, r0;
storei r2, r125, 1;
mov r124, 1;
loadi r123, r125, 2;
sub r2, r123, r124;
jmpl fib_00000002;
add r0, r0, r0;
loadi r124, r125, 1;
add r2, r2, r124;
2007-03-13T22:12:01+09:00
1173791521
-
buyobuyon サブページ
https://w.atwiki.jp/ttth/pages/33.html
*buyobuyonサブページ
作成したプログラムとその説明のためのページです。
ライブラリ関数の一部もこちらに載せておきます。
なお、コンパイラ本体は[[こちら>compiler隠しページ]]へ。
**外部変数定義用コンパイラ ~bero_glb_0314.tar.gz~
外部変数定義を解析して、アセンブリコード(ラベルと.word命令の列)に変換するプログラムです。
"beroglb [外部変数定義ファイル名]"とすると、そのファイル名の.mlを.sに変えた名前の
ファイルに対応するアセンブリコードが出力されます。
**シミュレータ ~simulator_0314.tar.gz~
多少バージョンアップしました。
デフォルトではうちの班のFPUの挙動を真似たシミュレート関数でFPU演算を行います。
コンパイラやアセンブラの生成したコードをテストしたいだけであれば、
raichu_fpu.cをraichu_fpu_clib.cで置き換えると、Cライブラリ関数を用いて
計算するので、だいぶ高速になります。
その他に前のバージョンと違う点は、
ジャンプ命令やout命令などの仕様の変更(たしか12月頃に変更したはず…)に対応したこと、
STOREやFDIVなどの使われなくなった命令を除外して、
その命令が入力されるとエラーメッセージを出力するようにした点、
DIV命令が、引数として2をとった場合、もしくは答えが10未満になる場合のみ正しい答えを返し、
それ以外の場合には0を返すようにした点、くらいだったと思います。
現時点では、DIV命令に関する仕様の変化を取り除くと、レイトレが実行可能になります。
使用方法は、今までと同じく、実行ファイル名などの情報を入れたファイルconfig.txtを
用意して、"raichu config.txt"のようにして実行します。
**SLDバイナリ化プログラム ~sldmodi_0314.tar.gz~
SLDファイルを読み取り、浮動小数点数か整数かを判断して符号化し、値の列に変換します。
値の列は、現在はシミュレータで読み取り可能な形に変換されます。
(テキスト形式で、一行に1つずつ16進数8桁の値が入っている)
使用方法ですが、"
2007-03-15T02:41:19+09:00
1173894079
-
tsuy and buyobuyon
https://w.atwiki.jp/ttth/pages/32.html
**コンパイラ組み込み関数
tsuyさんのページにいろいろ書き込んでいるうちに書き込める量の限界に達してしまったので、
コンパイラに組み込んだ浮動小数点数演算関数に関して、以前私が書き込んだ部分を
こちらに移動しました。
- ええと、ライブラリの件なのですが、&br()まず、浮動小数点数演算の&br()&br()atan : type(fun type(float) -> type(float))&br()cos : type(fun type(float) -> type(float))&br()sin : type(fun type(float) -> type(float))&br()&br()は完全にお任せします(とりあえずはもうできているのでしたよね)。&br()それから、&br()&br()int_of_float : type(fun type(float) -> type(int))&br()float_of_int : type(fun type(int) -> type(float))&br()fless : type(fun type(float) * type(float) -> type(bool))&br()&br()は、FPUで実装されているので、コンパイラの拡張ですぐ対応できます。&br()それから、&br()&br()fiszero : type(fun type(float) -> type(bool))&br()fispos : type(fun type(float) -> type(bool))&br()fisneg : type(fun type(float) -> type(bool))&br()fabs : type(fun type(float) -> type(float))&br()fneg : type(fun type(float) -> type(float))&br()fhalf : type(fun type(float) -> type(float))&br()fsqr : type(fun type(float) -> type(float))&br()floor : type(fun type(float) -> type(float))&br()&br()は、簡潔なので、私が
2009-06-07T10:59:44+09:00
1244339984
-
tsuy古
https://w.atwiki.jp/ttth/pages/31.html
過去の履歴です
●2/24,25
・atanのテスト終了
-ランダムな100万入力に対してテスト
-仮数部末尾1bit分の誤差のみ許容
・cosのテストにミス発見
-sinの入力は -2^30<=x<=2^30 としたが、cosではこれだと絶対値の大きな数で
仮数部の後ろから5bit分程度の誤差が現れるので、-2^20<=x<=2^20とした。
・invのテスト終了
-以前アップしたプログラムに比べて、初期値の場合わけを増やすことで、浮動小数全体の範囲からの入力を受けられるようにした
-ランダムな100万入力に対してテスト
-仮数部末尾1bit分の誤差のみ許容
・finvsqrtのテスト終了
-invと同様
・作ったものについては一通りテストが終わったので、テスト用プログラムと、テストの結果に従って調整したライブラリ
のファイルをこのページにあげておきます
・50MHzではINV,FINVSQRTはライブラリよりもFPUを使ったほうが速いはず
●2/21
・sin,cosについて、ランダムな100万パターンの入力に対しテストし、ライブラリ内でのループ回数を
精度が落ちない程度に極力少なくしました(19->9)
-入力は -2^(30)<= X <= 2^(30) の範囲のもののみ採用
-誤差は仮数部の末尾1bit分のみ許容(符号、指数部は完全一致)
-cosに対しては、入力が小さい(0に近い)場合に、
Perlのライブラリ(double型で処理)の結果が"00111111100000000000000000000000"
作成したライブラリの結果が "00111111011111111111111111111111"
となる。これも許容した
- FPUについての質問です!&br()入力信号にCLKが入ってるけど、これって使う予定ありますか?&br() -- yastak (2007-02-23 21:15:42)
- 使う可能性はあります。&br()FINVSQRTはどうしても1clockには入らないので、&br()パイプライン化するときにCLKを読む必要があります。&br()また、現時点で
2007-03-02T19:02:20+09:00
1172829740
-
compiler隠しページ
https://w.atwiki.jp/ttth/pages/30.html
2007-03-18T22:28:52+09:00
1174224532
-
harry(昔)
https://w.atwiki.jp/ttth/pages/29.html
***昔のページをここに移動
------------
**2月22日
------------
アセンブラで仮想命令movの変換が出来たので、最新版を添付します。
To buyobuyon
アセンブラは仮想命令変換が簡単にできるように変えたので、また仮想命令変換があったらどんどん言ってくださいね
あのう、buyobuyon氏のページにあるfibのコードをアセンブリにかけたら、
エラーが出てしまったのですが…(We cannot read line 1が大量に。)
(yastak)
ざっと見たところ、原因の一つはadd r0,r0,r0のようです。
この命令は"000..."(all 0)ですが、all 0の時にエラーをはくことになっているので、
エラーが出たようです。
We cannot read line 1 が大量だったのは、1の部分のところの引数がおかしいのではないかと。
(inではなくout?)
そのほかにも原因があるようなので、修正をお願いします。
(yastak)
To yastak:
大変申し訳ございません。
間違いの原因の一つはyastakさんの言ったようにall 0の時エラーを吐くようにしているからであるが、
大量のエラーが出たのは
スペースのありなしの違いのようです
私は例えば
addi r1,r2,30;
のようにオペランド間にスペースの無いものを想定したのですが、
ぶよぶよ氏のページにあるのは
addi r1, r2, 30;
とワンスペースあるものです。
そこを直したらこんな感じの結果になりました
[hari@localhost Desktop]$ ./assem2-25 source.txt exit.txt
label------MAIN;
move value---15
label------fib_00000002;
move value---1
label------LABEL_00000010;
move value---2
jmpl label OK--label[1], num: 5, content: fib_00000002;
move value---1
jmpl label OK--label[1], num:
2009-06-07T10:59:25+09:00
1244339965
-
yastak古
https://w.atwiki.jp/ttth/pages/25.html
* --- yastak古 ---
buyobuyon氏の例にならって、ログページを作成。
**作業進行
***2007.02.23
そういえば、21日の進度報告を忘れていました。
SRAM初期化→CPU動作の流れは作れました。
fibを動かしていたのですが、プログラムカウンタの動きはいい感じなのに、
なぜか動作してなくて、どうやらALUに原因があることが発覚した、
というあたりで作業終了。
遅ればせながら、本日ALUの構造を書き換えました。
次に学校に行けるのが日曜になりそうなので、その時にテストします。
後、命令フェッチにミスがある感じがするので、
これから修正します~。
- 日曜って試験日で入校禁止だったりしませんか? -- buyobuyon (2007-02-23 19:45:24)
- 入構規制はとられるみたいだけど、&br()事務室からのメールからすると、&br()学生証あれば大丈夫だと思われます~。&br() -- yastak (2007-02-23 20:51:38)
- 命令フェッチは多分大丈夫なことが判明したので修正なし…。&br()なんか、&br()おかしい?→確認→おかしくない(+別のところがおかしいorz)&br()っていうパターンが多い気がする…。 -- yastak (2007-02-23 20:54:27)
***2007.02.21
あの、いまさらなんですけど、SRAMはエントリが1Mなので、
アドレスは(19 downto 0)の20bitです。
したがって、
「immは、上位7ビットがimm7、下位19ビットがimm19の符号つき整数」
(命令セットより)というときは、imm7の最下位ビット+imm19としています。
レジスタからアドレスを取るときは下位20bitをとっています。
…でも、符号付にするならもう1bit多くとるべき?
ジャンプの幅が、「disp19」のところは符号コミで19bitだったりするんだけど、
(因みに符号拡張して20bitにしています)
そんなに大ジャンプはしなくて良い、ってことで大丈夫ですかね…。
***2007.02.20 part2
帰り道でタイミングの問題ではないことに気づいたので、
2007-02-23T22:24:30+09:00
1172237070