2006年11月29日
x86 asm
nu先生にx86のアセンブリについて色々教えていただいた。asm volatile内をごりごり書けるようになった。これぐらい出来なかったの?とか言われそうであるが...。
最初にごりごり書いたアセンブラが独自アーキテクチャのアセンブラ(自分で作った奴)なのでそっちに脳内変換されるのだが、あんまり良くない。
- Permalink
- by
- at 14:07
- Comments (0)
- Trackbacks (0)
2006年11月29日
nu先生にx86のアセンブリについて色々教えていただいた。asm volatile内をごりごり書けるようになった。これぐらい出来なかったの?とか言われそうであるが...。
最初にごりごり書いたアセンブラが独自アーキテクチャのアセンブラ(自分で作った奴)なのでそっちに脳内変換されるのだが、あんまり良くない。
ソース。
AsyncIOについて(その1)
AsyncIOについて(その2)
またあちこちのBlogを見る限りNonBlockingI/OやNonBlockingI/O+シグナルとAIOが混同されている気がしたので,それら整理してみたい.
大体以下のような理解でいいのでしょうかね。もしかしたらきっちりした定義が有るのかもしれませんが。
うーむ、参考になる。
加えてFedoraCore6上のgcc 4.1.1では-ftrapvをつけると、あるソースをコンパイル中にSegmentation Faultしてしまう事を確認しました。ちょっとここらで安全なCFLAGというのをgcc projectの人に書いてもらいたい所だなぁ。
2006年11月27日
C言語で書いたときに再帰が綺麗だったので関数型で書いてみた。
FFTを使うと多倍長乗算のオーダーをnlog(n)に落とせて乗算が速くなるよという話だったんだが実装が結構つらかった...。Web上にFFTのプログラムなんてのはごろごろ転がってるけど理論から理解しないと見ても分からないんだよなぁ。
結局、Cooley-Tukey FFT algorithmを再帰を使う分かりやすいプログラムにして実装。ビット反転を使用してバタフライ演算を実現する気力は無かった。これをアセンブラでゴリゴリ書いたら円周率とか高速に求まって嬉しいんだろう。
今から筆算方式の乗算を適当に書いた後レポートを書いて提出予定。徹夜つらい。
追記:
出した。1 << 16桁ぐらいで筆算方式が遅すぎて時間計測できなくなった。
2006年11月21日
なんとなく反応してみる。僕はとりあえず "p" で事足りています。そんなに大規模なものを書いたことが無い(ほとんど使い捨てスクリプト)というのが大きいけど。CGI書くときはこんなのを使っています。
begin
main
rescue
p $!
end
$!には起こっている例外が入るので、ブラウザ上に例外の内容が表示されてデバッグ効率が上がります。"tail -f /var/log/httpd/error_log"しながら開発するのも良いですが、なんかイチイチ目を移すのが面倒なのでこんなのを使っています。レンタルサーバーの人にもおすすめ。
以上、子ネタでした。
2006年11月17日
少し報告が遅れましたが、高林さんから噂のBinary Hacksを献本していただきました。
PS.
生協に山積みされていたBinary Hacksが全部売れていた。
2006年11月15日
提出完了。次はFFTですか。FFTって何~?から始めんとな...。
布留川さんにActionScript 3.0ゲームプログラミングブックを献本していただきました。裏表紙にJavaのDuke君の絵も書いてもらいました(笑)

ActionScript3.0を勉強するならこの本!!2006年11月13日
lighty's lifeによると、次期lighttpdはaioを使って80%ほどスループットが向上したようである。
The idea is:
1. create a buffer in /dev/shm and mmap() it
2. start a async read() from the source file to the mmap() buffer
3. wait until the data is ready
4. use sendfile() to send the data from /dev/shm to the network socket
Important for the performance: the data is never copied into user space. We only move it from one side of the kernel to the other side.
賢い。確かに早くなるのは分かるんだけど、エラー処理の部分が気になるなぁ。コード見てみる。しかしまずlibaio.hというのが何処にあるか分からんぞ...。このライブラリはどこから来ておるのだ...。
2006年11月11日
2006年11月09日
2006年11月08日
USB制御回路にバグが有る。
sldファイルを正常に送れない模様。
黒画像は出たけど、これはちょっとはまりそう。
2006年11月07日
今日中に動くかと思われたが、制御系のバグがまだ有る模様。
あと2,3個バグを取れば絶対動くはず。
あと fadd を1 clockで返せるかもしれないアイデアを思いついたので、レイトレが動いたら試してみよう。
2006年11月05日
2006年11月04日
Pipelined FPUがとりあえず出来た。
nuさんがfinv, fsinvを書いてくれた。fadd / sub, fmul, finv, fsinvだけだと、「Text-based Post-Place & Route Static Timing Report」によると100MHzで動くらしい。ftoi, itofは意外とHW量食う事が分かったので将来的に無くす方向で。精度チェックもした。とりあえず50MHzで動かすので全然問題は無い。ほんとかな。
しかし10 ns / stageで動かすのは相当骨が折れた。先輩が100HMzで動かしてなかったら努力しなかったと思う。今はFPUだけだが、CPU本体と合わせると配線遅延もあるしまだまだチューニングがいる気がする。先人は偉大だ...。
さて、ISEのバグではまっていらっしゃるnaokiさんの尻を叩けばを手伝えば来週中にレイトレが動くか!?
2006年11月03日
FPUも100MHzが見えてきた。
CompilerはregisterAllocationで悶絶している。
本当は今週中に絵を張りたかったのだが...来週こそ。
寝れないとEmacsを立ち上げる人間しか周りにいない。
TV見るぐらいなら、Emacs立ち上げる。
そのための、alias e='emacs -nw'なのです。