なんとなく,VHDLの勉強.もう少し,論理合成技術が発達すれば,マウスでパーツ並べるだけでコンピュータを設計できるようになりそうですね(実用的じゃないものなら今でも出来るかな).
そのうち,大規模なFPGAがパソコンのマザーボードに載る時代が来ると,以前から思っていたのですが…意外と早く実現するかも.で,CPUとかもFPGAにダウンロードして使うように….Z80を1000個書き込んで並列動作させるのも夢じゃない時代が来るかもしれません.意味があるかは置いておいて.
そこまで出来るようになると,アプリケーションによっては,専用のプロセッサとメモリをFPGA上に生成してから,その上で実行するという,完全なマルチタスク環境が実現するでしょう.OSを買うと,標準的なアーキテクチャのCPUがライブラリとして付いて来るはずです.最終的に,OSとCPUの境界が意識されなくなれば面白いですね.
にしても,10万ゲートのFPGAが2ドルか….
なんとなく,Pentiumのアーキテクチャの復習.気付いたら,ペアリングとか分岐予測とか色々深みに嵌ってしまうのはいつものことですが.PentiumなCPUの挙動が気になるという時は,このへんを読むと大抵の疑問は解決します.PentiumIIまでですが.ただ,読むのは面白いですが,Pentium用のコンパイラは絶対に書きたくないと思ってしまいます.
家賃を払いに行ったり.
*マウスとタッチパッド
最近,VAIOのタッチパッドをどちらの手で使っているか,すこし気にかけていました.左手を使っていることの方が微妙に多い.マウスは必ず右手なのに.デスクトップでブラウザや資料を開きながら,ノートでプログラムを書くので右手はデスクトップのマウス,左手はノートのキーボードとタッチパッドという使い方をしているからでしょう.でも,ペイントで何か書くときは右だなぁ.その方が左手でショートカットキーが操作しやすいし.
ところで,何で右利きの人もマウスを右で持つのでしょうか?利き手じゃない手でキーボードを叩く方が大変だと思うのだけど.
ふざけて滑ってたので,筋肉痛になるかな…と思ったけど何ともないなぁ.
*餅と電子レンジ
最近,電子レンジで餅を温めることが多くて気付いたのですが,餅が膨らみ始めると,電子レンジの音が微妙に変化します.それで,見張っていなくても,音が変わったら電子レンジのところに行けば良い感じなのですが,音の変化の原因は何でしょうか.思い当たる原因は幾つかあるけど,特定できません.
外に出たとき,雪が降りそうな匂いがするな…と思ってたら,降ってきました.
寝る.
*ディスク
なにやら,携帯電話にもHDDを入れようとしているメーカがあるみたいですが.怖くて携帯できなくならないものかなぁ.普段はヘッドを退避しているだろうけど,例えばカメラを使うとき.シャッターを押した直後に手を滑らせて,地面に落としてしまったらと思うと….
落下くらいの衝撃に耐えられるように作るとか,各種センサーで落下を検知して地面に到達する前にヘッドを退避するとか,解決策はあるのでしょうが,質量のあるものを回転させるなんてことに無駄な電力を使っていいんでしょうか.バッテリーの性能も上がってますが,それでもモータは出来る限り回したく無いと思うのですが.
そろそろ,回転体にデータを記録するのは止めにしません?テープからディスクになって,次は何が主流になるでしょうか.シリコンメモリになるか,ホログラム系か.まぁ,ビデオ関係では,やっとテープからディスクになってきたところなので,気が早いような気もしますが.
1ビット数原子くらいの密度のメディアはいつ出てくるでしょうか.
岩岳でスキー.
自分の板を持っていこうか少し悩んだけど,重いし,板が長いと疲れることが判明したので,今回はファンスキーをレンタル.ファンスキーは2度目です.前回は,こんなのスキーじゃ無いとか思ってましたが,これはこれで慣れれば面白い.滑りながら回ったり,ジャンプしたり,何やっても大丈夫です(目が回りそうになりますが).というか,板が軽いので,バランス崩しても無理やりどうにかできます.ただ,スピードが出てるときは,不安定で少し怖いです….
ところで,ファンスキーっておかしな滑り方するのが楽しいのですが,周りを見ても,あんまり変なことしている人がいないですね.
帰りに,某専門店でチキンカツ定食を食べる.お腹いっぱいです.
昼食を食べてから帰ってくる.
また,POV-Ray.
雪も降っているし,行かなくていいか.っと思ったけど,今年最後のK先生を見るために後半だけ出る.研究室に誘われる……どうしようかなぁ.N先生のいる研究室も(予算面とか色々で)魅力的だし.
…そもそも,希望の研究室に配属されるか,という問題もある.
で,K先生と少し話をしながら,久しぶりにPOV-Rayでモデリング.…というか,脳内モデリングして,形状データをエディタで入力.思ったような形状がなかなか作れない.勘が鈍ったかな.
POV-Rayで回転体から角柱に滑らかに繋ぐのは面倒くさい.とりあえず,今回は角度を90度にすることで逃げる.真面目にやるなら,回転体の断面を作りたい角柱の底面を含む平面に投射して,そこから角柱を作ったあと,CSGを使って,回転体断面に合わせてクリッピングかな.
*ロボ研
鍋.あとたこ焼きとか.
*デザインプロジェクトC
今日はCPUのデバッグだけで終わりました.ちゃんと動くんですか?>KWT.
N先生とスパゲティを食べに行く.N先生のおごり.ご馳走様でした.
コンパイラの課題の締め切りが今日だったので,やって提出しておく.
なんか,最近メールがたくさん来ますが,私,何かしましたか?
*メカニカルリレー
そろそろ休みに入ってしまうので,ヘリのプロポ制御用の回路を作る.信号を切り替えるためのスイッチには,フォトMOSリレーでもFETでもなく,単なるメカニカルなリレースイッチを使いました.
無理やりプロポの中に全部入れたので,配線が凄いことになってますが…まぁいいか.しかも,単一色の線で配線したので,後はどれが何の線だか全く見分けが付きません.AD/DAコンバータやらを繋いでテストしてみると,どうも変な動作をしている…っと思ったら,プロポのデフォルトの設定がそうなっていただけで,回路は問題なく動いていたようです.回路図も書かずに,頭の中だけで作ってた割には,何も問題が無くて良かった(笑).……ごめんなさい.暇があったら,回路図と配線図を書きます.
*雪,積もってます
メールが溜まっていたので授業中に返事を書く.
雪です.
そろそろ締め切りな気がしたので,奨学金継続願を書いておく.
コンパイラの最適化周りを書き直しておく.ブロック崩しのプログラムをコンパイルしてみると,5命令だけ短くなりました……って,あまり変わってない.5命令ということは,pushとpopが2組少なくなって,必要ないジャンプが一つ消えただけか.しかも,あまり綺麗じゃないし….計算順序の入れ替えもしたいけど,プログラム書くときに意識してれば,コンパイラで実装する必要ないか.どうせ使い続けるコンパイラでも無いし.
*Suica
わけあって,少し前にFerica周りの技術や状況をざっと調べてみたのですが,一枚のカードに色々なサービスのデータが書けるんですよね.技術的には,EdyとSuicaを一枚のFericaカードに入れることが出来るはずですが,どうなんでしょうか?Suicaのチャージは,(非接触カードなのに)機械にカードを挿入しないといけないようなので,流石にEdy携帯を捩じ込むことは出来ないか.となると,SuicaカードをEdy端末でチャージしたらどうなるんだろうか.そもそも,チャージ用の端末にカード内のサービスのための領域を確保してフォーマットする機能は無さそうだから駄目かな.排他的な利用の仕方をしている可能性も高い.
Suicaって普及している割には,あまり褒められたシステムでは無いような….システム的にはEdyの方がずっと健全っぽい?
7時前に起きる.
とりあえず,授業を聞きながらデザインプロジェクト用のプログラムを書く.昨日書き始めたエミュレータを動かしてみる.色々とプログラムを走らせてると,コンパイラにバグがあることに気付いたので修正.
*昼休み
サークル棟に行って少し仮眠.
まだちゃんと確認してませんが,ロボコンの書類選考は通ったみたいです.また忙しくなるのかなぁ.今回は,ちょっと挑戦してみようかと思っていることがあるので勉強しておかないと.
*コンピュータ通信
課題を提出.
出来上がったエミュレータ上で動くブロック崩しを作ってみる.使えるメモリが1Kワードしかないので,ボールの反射がかなり不自然.プログラムカウンタは10ビットに拡張しましたが,ジャンプ命令に渡すアドレスが8ビットしか無かったのでそっちも修正.使ってないビットが1ビット余ってたので,とりあえず9ビットということに.
ブロック崩しは頑張れば256ワードくらいで書けました.コンパイラでもっと高度な最適化をすれば,まだ小さくなりそう.ただ,基本的にデータの置き場所がレジスタとスタックしか無いのがなぁ.VRAMはCPU側からは書き込み専用の設計だし.指定したメモリの内容を読めれば,変なアドレッシングモードを追加して,凄く短くできるのだけど….おかげでブロックの管理が凄いことになってます.複数のレジスタにビットを詰め込むより,スタックポインタを弄った方が良かったかな….
ブロックが消えると背景画像が表示されるようにしたり,ゲームオーバーの画面を作って332ワード.動いているところを見ると,ちゃんとジャンプ命令が9ビットになっているようです.急いで書いて無駄な部分があるので,このプログラムなら300ワード以内にはできるな.
大学の裏に100円ショップが出来たので行ってくる.さり気なく2フロアもあって色々ある.工具が微妙に充実している気がするのは,工学部が近いからですか?…昨日ダイソーに行ったような…….
今日はたこ焼き(のようなもの)でした.
OSの課題が今日までだったのを思い出して,朝起きて提出.というか,6時前に目が覚めました.
デバイスドライバとカーネルモジュールの話とか,リンクの話とか.
授業中はデザインプロジェクト用のCPUエミュレータを書く.画像処理用のパターンエディタはHSPで書いたけど,今回は速度の都合でC++で書くことにする.
ちなみに,コンパイラとアセンブラはPerl….もちろん,CPUはVHDLで書かれています.後でソースを全部提出しなきゃいけないらしいですが,こんなにばらばらだと不味いでしょうか.
レイトレーシングとかラジオシティとか.
CPUエミュレータの続き.VRAMの内容はウインドウ内に表示されるし,ボード上のスイッチはキーボードのキーに置き換えてあるので殆どのことは出来るようになりました.今日のところは,プログラムカウンタが思ったように変化するのだけ確認して終わり.
*ヘリ制御
必用な部品のリストをメールで送るのを忘れてたので,送っておく.機械式リレーなんか久しぶりに使います.FETやフォトモスリレーでも良かったのだけど….こっちももう少し力を入れたいのだけど,他にも色々あってなかなか….
コンピュータ通信の課題が明日までなのでやっておく.面倒くさい部分はMRIのを写す.
*コンパイラ
意味解析の話をしてたようなきがします.
授業中はデザインプロジェクト用のアセンブラを書いてみる.MOVのオペランドがソースレジスタが先に来ている普通と逆な仕様でちょっと書きにくそう.MOVだけバイナリコードとアセンブラの対応が分かりづらくなるのも避けたいし.
*デザインプロジェクト
そろそろ,色々やっているところが出てきますね.与えられた画像を処理して表示するための回路を作ってるのですが,画像処理とは関係ない部分に力を入れる方向で.やっぱりインパクトが重要ですよね.画像処理用のCPU回路を拡張して,汎用的な処理ができるようにしてしまって,ブロック崩しを動かすとか.あと,テトリスとかインベーダーゲームとかパックマンとか平安京エイリアンとか色々案が出ましたが….まずは,ブロックを崩すと画像が出てくるプログラムということで.
「画像をハードウェアで処理して出来る限り綺麗に表示する」のが課題なのですが…….
*某サークル
*コンパイラ
朝からコンパイラの演習.というか,デザインプロジェクトCのためのコンパイラを書いてみる.コンパイラの授業の演習中に全く関係ないコンパイラ書いてるのもどうかと思いますが.先生が作った簡易アセンブラを弄って使う班が殆どだろうから,コンパイラから書いてるとこは他に無いだろう….
とりあえず,C言語もどきのソースをコンパイルできるように.型が8ビットのintしかなかったり,ifとforとgotoくらいしか使えなかったりしますが….関数呼び出しとかも実装したけど,まだCPUの方にcallやretが実装されて無いので意味が無い.
というか,1Kワードしか無いプログラムメモリをどうやって使うか….他には画像用のVRAMしかメモリが取れないので,スタックもプログラム領域に積んでます.課題とは関係ないところで凝ったものを作るのって楽しいですね.
自分でCPUを作って画像処理させたり出来るって凄い時代ですね.
サンプルで配布されたVHDLのソースを眺めてて凄いことに気付く.…レジスタ同士のコピー命令が無いよ(駄目じゃん).ldrでコピーできると思ったら,レジスタ0に対してのみコピーだった.自分でmov命令あたりを実装するしかないな.VRAMへのアクセスも同じ命令にしてしまった方が良いかな.
寒いので午前中の授業は自主休講.
*コンピュータグラフィックス
レイトレの交差判定とか.
授業中に,他の大学でデザインプロジェクトCと同じようなことをやっているところを探す.某大学のCPU実験がかなりそれらしくて面白そう.
やっぱ,レイトレーシングくらいしてみると,みんな頑張るんじゃないでしょうか.
*ロボ研
デザインプロジェクトのために,XilinxのVHDL開発環境をインストールしておく.
授業で作っているCPUのソースを少し読んで見る.試しに比較命令と条件分岐とPUSH,POPを実装してみる.あとは,CALL,RETがあればそこそこのプログラムがかけるかな.…と思ったら,プログラムメモリが1Kあるのに,プログラムカウンタが8ビットだったので,10ビットに拡張.あとで実際に動かしてデバッグしてみよう.
研究室配属の説明と,どうやって配属先を決めるかの話し合い.くじ8割+成績2割という感じかな.
*ロボ研
朝からロボ研.K氏のノートが起動しなくなったらしいので,KNOPPIXで起動してデータをバックアップ.一度,LAN経由でバックアップしようとしたら日本語のファイル名が化けたので,USBメモリ経由で.
研究室の説明とか.…ナノテクとかも魅力的.情報じゃないけど….
やっぱソフトウェア系かなぁ.
機械システムの某研究室へ.特に何をするというわけでもないけど.ヘリの操縦データは無事にパソコン取り込めているようです.まだ,ちょっとした回路を作らなきゃいけないので,部品を見繕って注文してもらおう.
*デザインプロジェクト
今日までに必用なソフトを作ってくることになってたので,授業中にでっち上げる.
CPUはKWTに任せてたのですが,どうも放っておくと意味不明なアーキテクチャになりそうなので,色々と言っておく.
ラーメンを食べに行く.
長野市内にドンキホーテが出来たらしいので行ってくる.邸反発ポリウレタンの枕とか買いました.
もう少し,ADPCMの解析.今度は,YM2608系のADPCMから辿ってみる.前の方がまともだったかな?
なんだか,色々面倒くさいです.雪降ってるし….
*ロボ研
そろそろ,書類選考用の書類の締め切りなので,図面を書き始めました.
信大Nowとかいう冊子の,60年前の学生との対談という企画で話をしてきました.60年前は,信州大学ではなく長野高専だったらしいですけど.
時期的に仕方ないのかもしれませんが,大学生活というよりも,戦時中の生活という内容でしたが,通信工学科の学生だっただけあって色々面白い話を聞けました.不発の焼夷弾をばらして中のグリセリンを風呂を沸かす燃料にしたりとか,短波ラジオを作って,米軍の放送を聞いたりとか(当時としてはかなりまずい行為だったらしいですが).通信工学科は変わった人が多かったみたいで,戦時中にもかかわらず,それなりに楽しかったみたいです.
一方的に戦時中の暗い話をされるんじゃないかと心配してましたが,そんなことは無くて,気軽に質問したり出来ました.
*ADPCM for MLD
どうも,符号の扱い以外は,X68kで使われたMSM6258に近い?みたい.微妙な感じだけど,とりあえず適当な音は鳴るようです.まだ,完全に変換できてませんが….
しかも,どうやら機種によって形式が違うみたい.まぁ,自分のSH505iSで好きな音が鳴ればいいか.
*授業::OS
入出力とプロセス間通信の話…らしい.オンラインマニュアルの読み方とか,全体の話とかも.
溜め込んでいたFreeBSD-users-jpを読む.100通くらい読んで1000通くらいのspamをゴミ箱に.S/N比が凄いなぁ.
*授業::CG
FreeBSDのMLの続きを読む.…他にも色々と溜め込んでるので大変です(明らかに処理する量より,入ってくる量が多い…).
*MLD
WAVからMLDに変換するフリーソフトが見当たらないので,作ってみようかと資料集め.データはADPCMか.4ビットADPCMみたいですが,まだ完全には理解してません.適当にデータを作ってみたら,微妙に音が鳴ってますが雑音ばかりです.
MLD自体は,EZweb-pmd & imode-mld 16和音ファイル解析!のページとそこから辿れる情報でほぼ分かります.
ところで,SoundStoreにgetEntryメソッドが無いのはどういう了見ですか?保存は出来るけど読み出しは出来ないのか….
iアプリ上でMP3をデコードしてMLDに変換しつつ再生するというのは無理だろうか.Javaってビットストリームの扱いが効率悪そうだしなぁ….
*DoJa
Javaって実行中にオブジェクトが持つメソッドの一覧を取得できるみたいだけど,DoJaでも使えるかな?もしかしたら,何かインターフェイスには無い非公式のメソッドが見えるかもしれない.時間があるときにやってみる予定だけど,誰か代わりにやってくれないかな.