まどかの 日記

[2004/10/04〜2004/10/10の日記]
[2004/10/11〜2004/10/17の日記]
[2004/10/18〜2004/10/24の日記]
[2004/10/25〜2004/10/31の日記]
[2004/11/01〜2004/11/07の日記]
[2004/11/08〜2004/11/14の日記]
[2004/11/15〜2004/11/21の日記]
[2004/11/22〜2004/11/28の日記]
[2004/11/29〜2004/12/05の日記]
[2004/12/06〜2004/12/12の日記]
[2004/12/13〜2004/12/19の日記]
[2004/12/20〜2004/12/26の日記]
[2004/12/27〜2005/01/02の日記]
[2005/01/03〜2005/01/09の日記]
[2005/01/10〜2005/01/16の日記]
↑過去3ヶ月くらいの日記はこちら↑

まどかは「P/ECE Hand Book」を応援しています



1197
2005/01/23()
 色々と買い物
 今日は朝早くに母親から電話があり、そのことで昼間は嫁さんと一緒に色々買い物して回りました。

 で、今日はその準備で追われてP/ECEネタの続きはできませんでした。
 というわけで、今日はここまで。

 それでは、おやすみなさーい。

1196
2005/01/22()
 カレーうどん食べたり、カラオケ行ったり
 今日は運動のため、歩いて最寄のJRの駅にあるうどん屋にカレーうどんを食べに行き、その足でカラオケへ。

 で、2時間唄ってから、ちょっと仕事しに会社へ。
 そして家に帰ってからはP/ECEネタの続き。

 今日は先日の高速化案が全く役に立たなかったので、何か他に良い手は無いものかと、某冬のイベントの時に銀次郎さんが展示されたカラー液晶制御プログラムの、nsawaさんが高速化を施されたところのソースのコメントを見ながら、同じように高速化できないかを検討してみました。

 そして、グローバル変数の値を一時的にローカル変数に移して、処理中はずっとローカル変数の値を利用し、処理が終ったら処理後の値をグローバル変数に書き戻すという手法を使って高速化を試みました。
 その結果、今まで43msかかっていた処理がなんと39msまでになり、高速化に成功しました(^^
 ちなみに、この43msかかっていた処理は以前に61msかかっていた処理なので、昨日の時点でここまで高速化されてて、さらにまた高速にできたので、もう大興奮ですわ!
 ここの部分の処理はけっこうコアな部分なので、この高速化によりかなり状況は改善されました。素晴らしい。
 nsawaさんありがとうございます!!
 
 ちなみに、グローバル変数の値を一時的にローカル変数に持ってきて処理させるという方法は、こうすることによってコンパイラが最適化し易くなるからとCマガジンの記事に書いてありましたが、今回の件もそういうことだったのかな?
 グローバル変数のままだと処理の途中で割り込み処理などにより値が変更される可能性が考えられるので、最適化しにくいそうです。
 そこで、ローカル変数に値を渡して処理すれば、そのスコープ内以外で値が変更されることは無くなるので、最適化がやりやすくなるとのこと。
 なるほどねぇ。

 さぁ、今回成功した高速化のおかげで今までギリギリ速度が間に合っていなくて悩んでいた部分が4msもの(大げさな(^^;)高速化により間に合うようになりました。
 これで、今までよりかなりスムーズに動くようになったので、ようやくデモとして見せられる段階まで来ました。あと少しだー。
 この調子でがんばるぞ。

 それでは、おやすみなさーい。

1195
2005/01/21()
 今日も高速化進まず……
 今日も家に帰ってからP/ECEネタの高速化について考えていたのですが、あまり良い案が浮かばず。
 高速化ってほんと、難しいね。

 というわけで、何も進んでいませんが、今日はここまで。
 それでは、おやすみなさーい。

1194
2005/01/20()
 EXCEL使って計算式の見直しです
 今日もP/ECEネタの続きで、昨日の作業でまだまだ高速化しないと目的の処理が思うようなタイミングで動かないことがわかりましたので、今日は今のソースをさらに高速化すべく、新たな見直しを始めました。

 今までの高速化でも結構色々なことをやったので、これ以上となると、nsawaさんの様にコアの処理部分をアセンブラで書き直し、最適化を図るというのが次なる手段だと思って、今までそんなにやったことが無いアセンブラソースを出力してのコード見直しを始めました。

 が、Z80の頃と比べて、P/ECEのCPUは命令数も多いし、ディレイド命令という新しい概念も入ってくるので、これはちょっとやそっとじゃモノにできないゾということで、時間とやる気持続力の兼ね合いから、早々にアセンブラ化を諦めまして、C言語レベルでの見直しに戻りました(弱ッ
 いつかはnsawaさんみたいにバリバリアセンブラで書けるようになりたいなぁ。

 ということで、何度も何度も読み返したソースをもう一度見直し、高速化できそうな部分を探します。

 と、言ってもなかなか見つけることができないのですが、一箇所だけ前々から気になっていた計算式があり、しかもその計算は処理の大半を占めるループの中でやっているので、ここが早くなれば、更なる高速化が可能なのではないかと、早速取り掛かりました。

 で、今回やったことは、EXCELを使ってループでやっている計算の全てのパターンを書き出してみて、計算結果の法則を見つけ出し、今の計算式よりも簡単な(演算数の少ない)式で、同じ結果が出せないかを検証しました。

 その結果、EXCEL上で式の中のシフト演算をひとつ減らすことに成功しました(^^
 まぁ、減らせたのは1つですが、ここは何千回も通るところなので、もしかしたら数ミリ秒早くなるかも知れません。

 また、前回の神懸り的なヒラメキにより、コード量も少なくなって、気が付けば高速RAMの領域が結構余っているので、思い切ってテーブルをもうちょっと増やして高速RAM上に置いて高速化してみました。
 あんまりテーブルばっかり作るのは、メモリの無駄遣いでやりたくないのですが、この際文句は言ってられません。今の私には高速RAM様にお願いするしかないのです(j−j

 というわけで、その2つの方法を実装した結果、なんと、計算方法を間違えてて、結局今日考えた最適化は適用できず、不発に終りました。orz
 また最初からやり直しです。とほほ……
 
 それでは、おやすみなさいです。

1193
2005/01/19()
 ぐはー、やっぱり間に合ってないぃー
 今日も家に帰ってから少しの時間だけP/ECEネタをやっています。
 今日は理論上はスムーズに動いてくれても良いはずなのに、なんかもたついてしまっている処理について、色々試してみた結果、先に作った処理がやっぱりまだ遅くて、今度の処理が待たされてしまっているようなことが分かりました。がっくり。

 そうかぁ。まだ速度が足りないのかぁ。
 どうしよう。アセンブラ化以外打つ手ないかも……

 でも、アセンブラ化ってできるかなぁ。色々勉強しないといけないしなぁ。

 というとことで、今日はおしまい。
 それでは、おやすみなさーい。

1192
2005/01/18()
 何かがおかしい
 今日も少しだけP/ECEネタ。
 ああ、P魂の審査も全然進んでない。最近家ではあまり時間が取れなくなっているので、地道にやっております(^^;

 今日は帰りの自転車をこいでいる間中ずーっと考えていたことを実践してみたのですが、どうも想像と違う結果になってしまう。
 これはなぜなのか。カーネルのソースを覗いてみても、理由はわからず。
 うーん、困った。そして時間が来てしまった。

 ちなみに、今朝もインターン生と話をして、ほんとにこれからどうするのかということを訊ねたところ、ようやく今の自分の状況に気付いたらしく、これから心機一転がんばっていくという姿勢を見せてくれました。めでたしめでたし。

 というわけで、今日はここまで。
 それでは、おやすみなさーい。

1191
2005/01/17()
 ちょっと言い過ぎたかも
 今日は帰り際に、ちょっとインターン生にきつく言い過ぎてしまったかもしれません。
 事の発端は、私がもうちょっとやっていることの報告をしてねっていう発言に社長が便乗して言ってきたのを始まりに、最終的には、就職するまでもう時間がないのに、休みの日にプログラムの勉強を進めないで、やる気はあるのか! という話になってしまって、色々言いすぎちゃいました(−−;

 だって、もう3年生にもなるのに、知らないことが多すぎるし、それでいてプログラマで食べていきたいとか言ってるので、なんかもう、やる気の無さというか、危機感の無さにちょっと腹が立ってしまったのですよ。

 もう、この3年間何をしてきたのかと。
 
 で、結構言っちゃって、インターン生もかなり凹んでいたので、明日の朝もう一度話をしてフォローをしておこうと思います(^^;

 というわけで、今日はここまで。
 それでは、おやすみなさーい。