2007年03月15日
コンピュータの構成と設計(上)を読了
コンピュータの構成と設計~ハードウエアとソフトウエアのインタフェース 第3版 (上)
第4章は、コンピュータの性能に関するお話。性能には様々な指標があるけど、最終的には処理の実行時間が絶対的な指標になります。ベースとなるのは、「CPU実行時間 = 命令数 * CPI(1命令の平均クロック数) * クロックサイクル時間」といった式です。CPU実行時間を小さくするには、どの要素をどう下げたらよいかが、性能に関する考察になります。各要素が互いに関係し合うので、複雑です。
ここで、上巻は終了です。現在下巻を読んでいますが、プロセッサ内部の理論になり、個人的には難しく感じています。それに、上巻に書いた内容をベースとして話を展開しているため、理解があやふやなままのうちには辛いです^-^;
投稿者 bokupi : 23:32 | コメント (0) | トラックバック
2007年03月02日
コンピュータの構成と設計(上)を第3章まで読了
コンピュータの構成と設計~ハードウエアとソフトウエアのインタフェース 第3版 (上)
パターソン&ヘネシー著の「コンピュータの構成と設計」、通称パタヘネ本を読んでいます。うちが買ったのは第3版で、これまでのものと比べてだいぶ薄くなっています(削られた部分は、付属のCD-ROMにPDFファイルとして収録)。なので、幾分か読みやすくなっていると思います。第2版では上下巻合わせて1000ページ以上だったものが、第3版では600ページ程度に納められています。
第1章では、コンピュータのハードウェアの構成について説明されています。CPU内部の写真もあり、へえといった感じです。半導体関連の部分はほとんど知らなかったので、勉強になりました。ウェハーやダイ、トランジスタ、歩留りの原因など、これまで漠然と言葉だけを聞いてきたものが、繋がっていく感じがよかったです。
第2章では、MIPSを例にしたアセンブラの説明です。加算などの単純な命令から始まり、条件分岐や繰り返し文など徐々に追加されていきます。そのなかで、メモリ領域の扱いやレジスタの役割など、学ぶことができます。トップダウンに列挙するのではなく、なぜその命令やレジスタが必要か、そうしたボトムアップなアプローチが、とてもわかりやすかったです。このあたりの知識に乏しかったうちでも、かなりの内容を修得することができました。さすがは、教科書と言われる本だと思います。
第3章では、整数演算と浮動小数点演算に関する内容です。内容自体は、大学での講義や情報処理技術者試験で学んだものです。当然、それらより深く掘り下げていますが。浮動小数点演算には、専用のレジスタを用意しているんですね。
てな感じで、まだ半分も読み終えていませんが、なかなか面白いです。簡単ではないですが、難しくて読めないということもないです。
投稿者 bokupi : 21:50 | コメント (0) | トラックバック
2007年02月28日
ShockwavePlayerがクラッシュ
ゲーム作りも終盤にさしかかっている最中、ふと開発マシン以外のPCで動かしてみようと思いました。さっそく実行環境をコピーして実行。すると、3Dの描画を含むメイン部分にさしかかると、クラッシュするではありませんか(汗。利用したのがFirefoxだったので、IEでも試してみましたが、結局駄目でした。果たして、このマシン特有の現象なのでしょうか。それを確かめるために、ノートPCを引っ張り出して同じように試してみました。こういうとき、複数のPCを持ち合わせていると、いいですね^-^;。しかし結果は変わらずということで、マシン特有というわけではなさそうです。
で、デバッグをしていくわけですが、ブラウザ上のShockwavePlayer実行時のデバッグツールは知りません。なので、ちまちまコードを削りながら犯人探し。2時間ほどかけてようやく見つけたのは、3Dキャストメンバにオーバレイ表示させていたテキストキャストメンバでした。ここに書かれている"タッチダウン"という文字列がよくないみたいです。この文字列に空白を加えたりすると、症状は解決しました。
文字列、クラッシュ、となると、メモリ関連のバグが思い浮かびそうですが…。この問題がオーサリングツール側にあるのか、プレイヤー側にあるのかも、気になります。ただ、開発マシンでは普通に動くという点が、不思議です。
投稿者 bokupi : 21:59 | コメント (0) | トラックバック
2007年01月30日
Perlの改行コード
少し久しぶりにPerlのコーディング。今作っているゲームのランキング登録および閲覧用のcgiです。合計200ステップ足らずの小さなコードですが、久々に触ると思わぬところで躓いてしまいます。
極々単純な20ステップくらいのコードを書いて実行したら、500エラー。あれ?と思い、どんどん削っていき、3ステップくらいになったのに、エラー。Apacheのログを見ると、"No such file or directory"のメッセージ。以前もこんなメッセージに悩まされていたような…。Perlの実行パスを調べたけど正常だし、八方塞になりかけたとき、ネット上に答えが。犯人は改行コードでした^-^;。最初SJISで作成して、途中でEUC-JPに変換したのですが、そのさいに改行コードはCRLFのままだったため、このような事態に。Perlの実行パスは正常に見えて、実は余分なCRが付いていたのです><)
確かに以前も同じことを、数回やってました(汗。学習能力が…。でも、気づかないとなかなか気づけない、落とし穴的なところかなあ、と思います。
投稿者 bokupi : 23:02 | コメント (0) | トラックバック
2006年12月26日
MTの処理が重かった原因
ここ最近、MTで日記を更新するさい、やけに時間が掛かりました。エントリ数もそれなりに溜まっているし仕方ないかなあ、と思っていました。ところが、5分経っても画面が切り替わらなかったりと、あまりにも重すぎる状態を目の当たりに。すると、普通にエントリ画面を開くだけでも、ずいぶんとモッサリしているではないですか。
おかしいな、と思い、topコマンドを打ってみたら、topコマンドのプロセス名が2つ…。片方のCPU時間がすごいことに(汗。しかも結構CPUを食っています。慌ててkillしたら、無事症状が改善しました。まあ、もともとMTの更新は重いんですけど(苦笑
てか、たまにサーバもリブートしたほうがいいですね。ただ、自動起動スクリプトをサボっているものが何点かあるため、積極的になれなかったり^-^;
投稿者 bokupi : 23:18 | コメント (0) | トラックバック
2006年12月22日
N88-BASIC資産を復活させる試み
うちは中学時代、コンピュータ同好会に入っていました。そして、そこにあったPC88を使い、N88-BASICで拙いSHTやRPG、音楽演奏ソフトなどを作りました。で、その頃作ったものがFDのなかに残っているのですが、これを読み込む手段がないのです。初代PCのPC9821Cb2があった頃は、N88-BASICがROM内蔵されていたので良かったのですが。
で、いろいろトライです。まず当時使っていたFDは、2HDの1.2MBフォーマットと思われます。なので3モードFDDが必要です。以前買った外付けUSBのFDDが3モード対応だったので、試してみました。うーん、他の2HD1.2MBなFDは読めますが、問題のFDは読めません。
見たところ、物理フォーマットから、DOSとは違うようで。そういや、遠い記憶で、FDが1.0MBだった気にします(上で書いた1.2MBは嘘ですね…><)。。せめてDOS-BASICなら良かったのに(DOS-BASICのシステムディスクは読めました)。当時は、ゲームを作りたい一心で、DOS-BASIC?なんだそら、とシステム方面への関心はゼロだったことが、今に悔やまれます--;
う~ん、やはり実機を買うしかないのでしょうか。とりあえず、今回いろいろ調査をして、実機上から現在の環境に移行する方法は、何となくわかったので。
…いや、むしろどこかの変換サービスに頼んだほうが良い気がしてきました。自分でいろいろ試してみたいという技術的好奇心もあるのですが、費やす時間を考えると少々割高な気もします。変換したいFDは高々3枚程度であり、1万円も出せば平気のようですし。まあ、言うほどポーンと出せる金額でもないですが^-^;
先週の土曜はこれの調査で、ほぼ1日潰れました^-^;。そして、今日もついつい半日ほど潰してしまいました。懐かしさというか、古い地図を頼りに、宝探しをしている気分で、少し楽しかったりします。でも、時間が…、他にやるべきことがあるというのに(汗
投稿者 bokupi : 12:57 | コメント (0) | トラックバック
2006年11月24日
ITRONプログラミング入門を読んで
ITRON関連の本(借り物)を半分ほど読了しました。後半はサンプルプログラムの説明や、実践的なテクニックの紹介なので、まだ読まずにおいています。
ITRONプログラミング入門(Amazon)
以下に、自分なりに理解した内容をまとめてみました。あくまで、うち自身の備忘録として書いたものですので、まったく適切な概要ではないことを、ご承知おきください。
ITRONをベースとした、カーネル一般についての話
- 基本的な仕組みとして、入力を与えられて、それを処理して、出力を返すもの
- カーネルの管理する資源としてオブジェクトがある
- オブジェクトには、処理を実行するタスクや、それの同期制御をするためのイベントフラグ、セマフォなどがある
- 処理の流れは、タスク部と非タスク部がある。非タスク部は、割り込み処理によるものである
割り込みの仕組み
- 割り込みが発生すると、CPUに通知される。
- CPUは割り込みベクタを参照して、割り込みハンドラの書かれた所定のアドレスを呼び出す
- 割り込みハンドラ内で、割り込み原因を分析し、各ルーチンを呼び出すか、割り込みハンドラ内で直接処理をするか、各々方式がある
- 割り込み処理中は、使えるサービスコールに制限がかかる
割り込みとカーネルとタスクの関係
- 各タスクの処理はカーネルによって開始や終了が管理される
- 一方割り込みはカーネルの都合関係なしに発生してくる
- 処理の上下関係?としては、割込み>カーネル>タスク、といった感じ
カーネルの4つの機能
- サービスコール
- スケジューリング
- ディスパッチ
- 割り込み制御処理
その他、気になったところをメモ
- タイマハンドラにおける位相時間とは、毎周期の呼び出し点と、起動時点の差のこと
- CPUロック状態、ディスパッチ禁止状態などにより、タスクの優先度や割り込みへの制御ができる
- 各オブジェクトは、実行要求をレディキューで待たせることができる
- ディスパッチ時にはコンテキストを保存する
- ランデブ機能は、2つのタスクで事象の待ち合わせを行なうもの
投稿者 bokupi : 18:08 | コメント (0) | トラックバック
2006年09月23日
写真管理システムを作成
既に、少し前のエントリから導入していますが、album.omoshiro-joho.comに写真管理システムを設置しました。撮影日やコメント、タグなどのメタ情報と、サムネイルなどの画像情報を、mysqlで管理しています。フロントエンドはphpを利用しています。
使い勝手はまあまあかと思っています。ただし、画像の追加などは基本的に手作業なので、そこを何とか自動化したいですね。画像をドラッグ&ドロップしたら、EXIF情報を抽出してくれるような仕組みがあったら、便利だと思います。
Flickrのような既存のオンラインサービスを使う手もありますが、やはり自分の融通の利く距離に置きたいので。
投稿者 bokupi : 01:34 | コメント (0) | トラックバック
2006年08月28日
CVSでプロジェクトを管理
プロジェクトに関するあらゆるものをCVSに登録して、一元管理することにしました。ただ、現在CVSクライアントとして利用しているのはEclipseです。ドキュメントを更新するために、わざわざEclipseを立ち上げるのは煩わしいです。そこで、新しくWinCVSを、CVSクライアントとして導入することにしました。
ネット上の情報が古い版のものが多く、少し設定に手間取りましたが、無事使えるようになりました。さっそくkmftとpmsの2プロジェクトをリポジトリ登録。こうすることで、各プロジェクトの成果物が整理されていいですね。
投稿者 bokupi : 01:16 | コメント (0) | トラックバック
2006年08月12日
Linuxサーバマシンの解像度を変更
サーバを新しいCPU切替器に接続するため、一旦停止しました。ファン口を見たら埃が結構溜まっていたので、ついでに分解してお掃除。それからケーブルの接続を済ませて起動です。
そしてさらについでに解像度の変更を行いました。以前もXconfiguratorで解像度の変更を試みたのですが、失敗したのでリトライです。すると前回と同じように、Xconfiguratorで設定して最後のXサーバ起動テストのところでフリーズします。VRAMは古いものとはいえ、8MBあるのでSXGAにも耐えられるはずなのですが。駄目もとでテストをスキップして再起動をしてみました。すると、ちゃんと解像度の変更に成功しているではないですか!
テキストログインにしていると、こういった冒険が気軽にできて便利ですね。何はともあれ、モニタに適した解像度になり、見やすくなってよかったです^-^。
投稿者 bokupi : 12:28 | コメント (0) | トラックバック
← → ALL page | 1 | 2 | 3 | 4 | 5 | 6 | 7