tag:blogger.com,1999:blog-41890096304550399502024-03-13T22:55:09.842+09:00CPU 実験日記<a href="http://www.is.s.u-tokyo.ac.jp/">東大理情</a>の名物実験、CPU 実験の日記。チーム C# (とその他の愉快な仲間たち) より愛をこめて。Anonymoushttp://www.blogger.com/profile/10855002572736477253noreply@blogger.comBlogger47125tag:blogger.com,1999:blog-4189009630455039950.post-48424481273241115982010-06-04T10:59:00.004+09:002010-06-04T11:17:06.994+09:00連載企画 CPU 実験教室 実践編 第 4 回 RS232C について<p>今回は <a href="http://ja.wikipedia.org/wiki/RS232C" target="_blank">RS232C</a>、つまり<a href="http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E9%80%9A%E4%BF%A1" target="_blank">シリアル ポート</a>による通信の解説です。とはいっても、今回解説するのは RS232C の仕様だけで、具体的な通信仕様とモジュールの書き方については次回に回したいと思います。ソフトウェア的なことは cserver を参照してください。</p>
<table style="margin-bottom: 20px">
<tr>
<td><img src="091204_is2k9.png" alt="あいずたん" width="100" height="100" /></td>
<td style="font-weight: bold; color: blue">具体的なモジュールの書き方は次回号を読んでねっ!</td>
</tr>
</table>
<h2 style="margin-bottom: 0px">RS232C のピンについて</h2>
<p style="margin-top: 0px">RS232C ポートにはピンがいっぱい伸びているけど、通信に使うのはたった 2 本の線、送信線と受信線です。この 2 本は全く無関係に動くので、送受信が同時にできます。他のピンは制御線ですが、仕様が曖昧なところもあり、使用はお勧めできません。むしろたった 2 本の線で通信できるのが RS232C のすごいところなので、これだけで通信しましょう。</p>
<h2 style="margin-bottom: 0px">ストレート ケーブルとクロス ケーブル</h2>
<p style="margin-top: 0px">もともと RS232C は PC とモデムの間をつなぐのに使われていた物でした。そのときは、普通に PC から送信する線をモデム側が受信して、モデムが、 PC が受信できるように受信線に送信すればよかったわけです (ストレート ケーブル)。 これを、PC 間、あるいは他の機器と接続するとき、そのまま接続すると、受信線と受信線・送信線と送信線がつながってしまうということが発生してしまいます。そこで、受信線と相手の送信線をつなぐようにしたものを、クロス ケーブルというわけです。</p>
<p>これだけ聞くと当たり前であるように見えるのですが、制御線の定義を各メーカーが解釈したときに、クロス ケーブルの仕様がメーカー間で多少違いが出てきてしまったということがあります。これが制御線を使うのをお勧めできない理由のひとつ。</p>
<p>ちなみに筆者は ModelSim 上でストレート ケーブルでモジュールをつなげてしまうというミスをして、数時間ぐらいはまっていたことがあるので、皆さんは注意しましょうw。</p>
<table>
<tr>
<td><img src="091204_is2k9.png" alt="あいずたん" width="100" height="100" /></td>
<td style="font-weight: bold; color: blue">in と in , out と out をつなげても ModelSim は警告してくれないよっ!</td>
</tr>
</table>
<table style="margin-bottom: 20px">
<tr>
<td><img src="091204_lilfes.png" alt="りるふぇすたん" width="100" height="100" /></td>
<td style="font-weight: bold; color: deeppink">そんなミスをするとかヒョットしてあんたバカァ?</td>
</tr>
</table>
<h2 style="margin-bottom: 0px">通信速度</h2>
<p style="margin-top: 0px">当初の規格では、かなりの低速通信用として開発されたため、baud rate (多少語弊はありますが、通信速度と思ってくれて構いません)は、110 bps(bit/s) -- 9600 bpsで策定されました。これが、ある程度時間がたつと、遅すぎるということで 14400 bps , 28800 bps が使われるようになり、さらに時間がたって、115200 bps が策定され、最終的に、Windows などで、その倍倍である、230400 bps , 460800 bps , 921600 bps が策定されたようです。</p>
<p>DELL の学科 PC や筆者の PC の後ろについているシリアル ポートは、多分 115200bps が上限 (デバイス ドライバ見てください)、それ以上の速さでは本来プログラムで開けないはずなんですが、TeraTerm では何をしているのか知らないけど、それ以上の速度で通信できているように見えてしまいます (多分実際にはその速度でやり取りしていないと思うのですが...)。入江先生の貸してくれたシリアル to USB を使うと、送信は 921600bps までいけて、受信は 460800bps までいけるようです。最も性能の高いシリアル to USB を使うと 921600 bps ≒ 1 Mbps まで出せるという噂もあります。こういう風に言っているのは、PC 側のシリアルデバイスに比べて、FPGA 基板の方が圧倒的に性能が高いため、たとえ 921600bps でも余裕で受信できるということ (1 bit に数十 -- 数百クロックかかります)。あと、921600bps で contest.sld を実行しても、IO だけで 0.5s かかります。</p>
<table style="margin-bottom: 20px">
<tr>
<td><img src="091204_is2k9.png" alt="あいずたん" width="100" height="100" /></td>
<td style="font-weight: bold; color: blue">ちなみに、USB 2.0 以降の通信速度は、旧基板のチップでもシリアルの速度が無視できるぐらい速いよっ! 旧基板でも概算で 50Mbps かなっ!</td>
</tr>
</table>
<h2 style="margin-bottom: 0px">信号の電圧について</h2>
<p style="margin-top: 0px">RS232C の信号は以下のような感じで定められています。</p>
<table cellspacing="0" cellpadding="3" style="text-align: center">
<tr>
<td class="t1" width="80">0</td>
<td class="t2" width="100">+12V</td>
</tr>
<tr>
<td class="t3">1</td>
<td class="t4">-12V</td>
</tr>
</table>
<p>拡張基板上に RS232C ポートを作成する場合は、自分で電圧変換チップを挟む必要がありますが、新基板上では FPGA のピンをいったん電圧調整の石をはさんでソケットにつながっている形になっているので、何も考えずに送信線と受信線に 0 , 1 を出力すれば OK です。</p>
<h2 style="margin-bottom: 0px">参考文献</h2>
<ul style="margin-top: 0px">
<li>『RS232C接続回路』 <a href="http://www.ccad.sist.chukyo-u.ac.jp/~mito/syllabi/kikou/Serial/">http://www.ccad.sist.chukyo-u.ac.jp/~mito/syllabi/kikou/Serial/</a></li>
</ul>
<h2 style="margin-bottom: 0px">最後に</h2>
<p style="margin-top: 0px">もし何か意見・質問ございましたら下のコメント欄にお寄せくださいお寄せくださいお寄せください。</p>
<table>
<tr>
<td><img src="091204_lilfes.png" alt="りるふぇすたん" width="100" height="100" /></td>
<td style="font-weight: bold; color: deeppink">さて、次回はいよいよ RS232C の通信方法とモジュールの書き方についての説明ね。あんまり私をがっかりさせないことね</td>
</tr>
</table>xyxhttp://www.blogger.com/profile/12664580622877928008noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-59224703424489405702010-06-01T17:51:00.004+09:002010-06-01T17:59:50.323+09:00天空への LiLFeS 入門 (QM 法編)<p style="text-indent: 12pt;">こんにちは。team C# の花元です。今回は学科の後輩向けに<a href="http://www-tsujii.is.s.u-tokyo.ac.jp/lilfes/index-j.html" target="_blank">LiLFeS</a> (<a href="http://cpuexp.blogspot.com/2009/10/lilfes.html" target="_blank">参照1</a> / <a href="http://cpuexp.blogspot.com/2009/10/lilfes.html" target="_blank">参照2</a>) による <a href="http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AF%E3%82%A4%E3%83%B3%E3%83%BB%E3%83%9E%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%AD%E3%83%BC%E6%B3%95" target="_blank">QM 法</a>の実装について書きたいと思います。えっ、なんか大変そうなんだけど大丈夫?との声が聞こえてきそうですが、実は QM 法の実装に LiLFeS はとてもオススメです。以下その理由。</p>
<ol>
<li>論理型言語である</li>
<li>lexer / parser がいらない</li>
</ol>
<p style="text-indent: 12pt;">つまるところ QM 法とは論理圧縮ですから、論理型言語であるというのは大きなアドバンテージです。Prolog? そんな軟弱な言語有り得ません。lexer / parser がいらないというのも良いですね。LiLFeS ならクエリを実行するだけで大丈夫です。ocamllex / ocamlyacc に飽きてしまった人も是非。</p>mogellahttp://www.blogger.com/profile/06339639468496927542noreply@blogger.com1tag:blogger.com,1999:blog-4189009630455039950.post-88379273797544629812010-05-30T23:29:00.007+09:002010-06-01T18:01:33.437+09:00五月祭 2 日目<p>こんばんは、竹井です。五月祭も無事におわりまして、地上の喧騒から地下の楽園に帰ってきました。</p>
<p>と、ここで大ニュースがありまして、実は今日の五月祭 2 日目、なんと何もしないはずだった情報科学科でも出し物をしていた有志がいたのでありました! その名も「東大地下を這い出たギークたち'08」という、なんともアヤシゲな雰囲気をかもし出すバンド名。実はこれ、地下、つまりわれわれがいる学生控え室というのは、4 年生の秋になると自動的に各研究室に配属されて、地面よりも高いところ (建物の 3F だとか 4F だとか)、つまり天空に位置する研究室の学生部屋へと移っていくわけでして、去年そうやって地下から地上へと旅立ってゆかれた私どもの諸先輩方のバンドだったのです。まぁこんな感じ↓</p>
<p align="center"><a href="http://1.bp.blogspot.com/_q0_47cmuCj4/TAKFCyOl3qI/AAAAAAAAACM/T3djaUSJPO0/s1600/IMG_2947a.jpg" target="_blank"><img src="http://1.bp.blogspot.com/_q0_47cmuCj4/TAKFCyOl3qI/AAAAAAAAACM/T3djaUSJPO0/s320/IMG_2947a.jpg" border="0" /></a></p>
<p>バンドの演奏中は、さすがに IS らしく、同じ 2008 の <a href="http://twitter.com/plus7" target="_blank">plus7</a> さんという方が Web カメラで中継してて、14 人がブロードキャスト中継を見ていたらしいです。なおこのバンド、3 人しかおらず、よく見るとドラムと思しき人がいない。いや、よく見なくてもドラムがいない。代わりにあるのは、「ドラマー」と手書きの紙が張ってある Mac のラップトップが。</p>
<p align="center"><a href="http://3.bp.blogspot.com/_q0_47cmuCj4/TAKFCZLxerI/AAAAAAAAACE/Uz3ZFOE-kDw/s1600/IMG_2944a.jpg" target="_blank"><img src="http://3.bp.blogspot.com/_q0_47cmuCj4/TAKFCZLxerI/AAAAAAAAACE/Uz3ZFOE-kDw/s320/IMG_2944a.jpg" border="0" /></a></p>
<p>実は、このボーカルをやってる <a href="http://twitter.com/Mekajiki" target="_blank">Mekajiki</a> さんという方が、無類の Apple 好きらしいのですが、こいつからドラムの音を吐かせていたようです。なので曲の始まるときにこうやってポチッとなをする必要があったみたい(笑)</p>
<p>というわけで、来年はわれわれ 2009 年代が引き継ぐべく、バンドをやりたいと思っています。考えたらわれわれの代、ギター、キーボード、サックス、チェロ、トランペット、ファゴット、ピアノ、合唱、指揮者とかなんだかいろいろできる人間がいるみたいですよ(笑) とりあえずこれらを全部ごちゃまぜにしてバンドを組んだら面白いことになりそう。だが! やはりドラムはいなかった・・・。もういっそ僕がドラムを始めてみようかしら・・・。</p>
<hr />
<p><b>おまけ:</b> 最近、東大でもわりと残念な集団が神出鬼没にいろんなところでお目にかかれるようですが、総合図書館前ではこんな人たちが踊ってました・・・。企画名は「【東大生に】さんすう教室【踊らせてみた】」 ざっと 30 人程度でしょうか。衣装代もバカにならんでしょうな、、、ご苦労様でした。</p>
<p align="center"><a href="http://3.bp.blogspot.com/_q0_47cmuCj4/TAKFCby1epI/AAAAAAAAAB8/INVYSVKzglo/s1600/IMG_2924a.jpg" target="_blank"><img src="http://3.bp.blogspot.com/_q0_47cmuCj4/TAKFCby1epI/AAAAAAAAAB8/INVYSVKzglo/s320/IMG_2924a.jpg" border="0" /></a></p>Anonymoushttp://www.blogger.com/profile/10855002572736477253noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-16653431094646419822010-05-29T18:18:00.007+09:002010-06-01T18:01:33.437+09:00五月祭 1 日目<p>こんにちは、竹井 悠人です。五月祭一日目、結局のところ何だかんだ言って色々と楽しんできました。実は僕自身、去年までの 3 年間はずっと所属している音楽部合唱団の屋台に詰めていて、文化祭らしく友達と企画や展示を見て回ったことが一切なかったのです。そして何より、中高は文化祭というものにそもそも参加した記憶が一切ないという・・・、というわけで僕にとっては非常に新鮮な一日でありました。</p>
<p>えー、というわけで、今日の後半は僕の高校時代の友人と一緒に回りまして、彼の日記のほうがより秀逸にまとまっているので、リンクを張ってしまいます、悪しからず。<br />
<a href="http://yukikazura.blog40.fc2.com/blog-entry-87.html" target="_blank">東京大学第83回五月祭 @ 雪明りの光合成。</a> (写真いっぱい)</p>
<p>ちなみに、この記事に出てくる折り紙サークル <a href="http://orist.tiyogami.com/" target="_blank">Orist</a> は、わが班の金沢君が立ち上げたサークルらしいですよ。FPU の高速化に貢献した数学力もさることながら、彼の手先の器用さも侮れないようです。。。</p>Anonymoushttp://www.blogger.com/profile/10855002572736477253noreply@blogger.com2tag:blogger.com,1999:blog-4189009630455039950.post-57614521741010935812010-05-29T07:51:00.003+09:002010-06-01T18:01:33.438+09:00五月祭<p>おはようございます、班長の竹井です。今日は CPU 実験とはまったく関係ない記事ですが、とりあえず宣伝しておきます。</p>
<p>今週末、つまり今日と明日は東京大学の本郷キャンパスで、<a href="http://www.a103.net/may/83/visitor/" target="_blank">五月祭</a>という文化祭をやっております。毎年、いろんな大学の学生や受験生たちなどが訪れ、<s>一般には「勉強ができる」という誤解で認知されている東大生が、実は如何にアホかという企画</s> 初夏の青々とした銀杏に囲まれ建物のレンガには生命力豊かな蔦が絡んでいるアカデミックな雰囲気の中で、如何に社会を支える研究をしてきたかを発表する企画の数々を見ることができます。</p>
<p align="center">ここまでネタを振っておいて残念なお知らせですが、<br />
われわれ情報科学科は何もしません。<br />
<b style="font-size: 14pt; font-weight: 900">何も!</b></p>
<p>いえ、強いていうなれば、いつもどおり陰湿で澱んだ空気たちこめる地下室で怪しげなプログラムを書いていることでしょう。それを展示すればよい、という考えも無きにしも非ずでしたが、さすがに世間に情報科学の重要性を説くことなく、誤ってプログラマたちの暗い暗い暗黒かつ邪悪なイメージを植えつけることがなきよう自重したのでありました。</p>
<p>というわけで、五月祭は東京大学の本郷キャンパスで今日明日、みんな来てね!</p>Anonymoushttp://www.blogger.com/profile/10855002572736477253noreply@blogger.com2tag:blogger.com,1999:blog-4189009630455039950.post-83428968156503757472010-05-25T17:12:00.004+09:002010-05-26T12:17:50.752+09:00cpu実験最後の3ヶ月 その3<p style="text-indent: 12pt;">こんにちは。team C#の花元です。班長の竹井くんと一緒に書いています。</p>
<p style="text-indent: 12pt;">時は3月12日、僕は某駅のホームに立っていました。この日から朝のラッシュ時における駅員補助のバイトをすることにしたのです。発表まで時間が少なく、またハードウェア班の4人のうち2人が失踪してしまうという事態に、僕はほぼCPUの完成を諦めていました。しかし、大好きな電車に関われる喜びで、すこしやる気が回復することに。バイトが終わり次第すぐ大学に直行しました。</p>
<p style="text-indent: 12pt;">幸いなことに、エミュレータ係の新井くんがハードウェアデバッグのお手伝いをしに大学に来てくれました。彼が持ってきたのは三角関数のテストコード。これが動けば(浮動小数点数の)四則演算が正しく動くことが証明されます。…が(当然のごとく)動きません。検証の結果、そもそも(浮動小数点数の)足し算がうまくいっていないことが判明。単体テストは通っているはずだし制御機構も間違っていないようだし…半日掛けて原因がわかりました。</p>
<strong><big>ファイル名が違っていた</big></strong>
<p style="text-indent: 12pt;">fp_adderをfp_addと書き間違えていました。…あまりのポンコツっぷりに皆脱力してこの日のデバッグは終了しました。</p>mogellahttp://www.blogger.com/profile/06339639468496927542noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-56894673774753329982010-05-24T14:07:00.002+09:002010-05-24T15:11:36.408+09:00cpu実験最後の3ヶ月 その2<p style="text-indent: 12pt;">こんにちは。team C#の花元です。気ままに書いているので更新は不定期ですが気ままにお読みください。</p>
<p style="text-indent: 12pt;">試験後から3月初旬にかけてはずっとコンパイラのデバッグをやっていました。ハードウェア班の僕はCPUでフィボナッチ以上のことがやれるかどうか検証しようとしました。ところが、僕のマシンでアセンブラが正常に動作せず諦めました。今思うとこれは大変な失策でした。後に判明するのですが、この時点で我が班のCPUは整数の足し算と引き算ぐらいしかまともに動かなかったのです。</p>
<p style="text-indent: 12pt;">この時期最も頑張っていたのはコンパイラ係の竹井くん…ではなくてエミュレータ係の新井くんでした。新井くんのが必死でデバッグしている横で、僕と竹井くんが麻雀をやっていたなんてこともあった気が。よくそれで班が崩壊しなかったなーと思います。</p>
<p style="text-indent: 12pt;">そんな彼らの努力により3月10日にプログラムがエミュレータ上で動作。実験発表は3月16日。コンパイラのデバッグに1ヶ月かかったのに、ハードウェアのデバッグが6日で終わるのか?そんな疑問を抱えながら作業はハードウェアのデバッグに突入することになります。(cpu実験最後の3ヶ月 その3へ続く)</p>mogellahttp://www.blogger.com/profile/06339639468496927542noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-43307149626658540752010-05-23T16:02:00.005+09:002010-05-24T00:15:41.011+09:004 年生になりました<p>こんにちは、そしてお久しぶりです。無事に理学部 情報科学科で 4 年生になった竹井です。気づけば CPU 実験も終わり、新しい 3 年生たちも加わり、われわれの学生控え室もにぎやかになっていました。</p>
<p>今年の 3 年生たちは、僕たちの代とは違って非常にマジメなので、もういろいろと CPU 実験のことを打ち合わせしだしているようで、この拙い拙い日記をたどって僕たちの過去の修羅場を見ているみたいなのですが(笑)、記事の更新がストップしてるので、なんだか寂しいと言われてしまいました。そういうわけで、ちょっとずつ、もうすこし役に立つ記事を提供しようということで、折を見てまた更新を再開しようかと思ってます。</p>
<p>ちなみに近況報告をしますと、4 年になった僕らは、この夏学期、各研究室の巡回 (情報科学演習 3 という科目) がありまして、3 つの研究室をまわって各研究室の中で課題を遂行する、ということをしています。C# 班のメンバも行き先がバラバラなのですが、コンパイラ係と班長を担当していたわたし竹井は最初、<a href="http://arbre.is.s.u-tokyo.ac.jp/" target="_blank">細谷研究室</a>というところに行ってきました。脳科学の仕組みを情報科学に落とすようなことをしているところです。ハードウェアを担当していた花元は<a href="http://www-hiraki.is.s.u-tokyo.ac.jp/" target="_blank">平木研究室</a>で <a href="http://ja.wikipedia.org/wiki/Graphics_Processing_Unit" target="_blank">GPU</a> 向けの <a href="http://www.nvidia.com/object/cuda_home_new.html" target="_blank">CUDA</a> を研究していたそうです。他には高機能なシミュレータを作ってくれた新井はソフトウェア全般を扱う<a href="http://web.yl.is.s.u-tokyo.ac.jp/" target="_blank">米澤研究室</a>へ、数学を駆使して浮動小数点処理装置を最適化していた金沢は並列数値解析などを扱う<a href="http://olab.is.s.u-tokyo.ac.jp/~reiji/" target="_blank">須田研究室</a>へ、グラフィックに強い岡原は CG 全般で日本をリードしてる<a href="http://nis-lab.is.s.u-tokyo.ac.jp/" target="_blank">西田研究室</a>へ、Apple を愛して止まない梶原は UI を扱う<a href="http://www-ui.is.s.u-tokyo.ac.jp/" target="_blank">五十嵐研究室</a>などなど、見事なまでに全員がバラバラです(笑) まぁでも、結構みんななんだかんだ言って、ちゃんと自分にあったテーマを選んでるんじゃないでしょうか。</p>
<p>ではでは、ぼちぼちまだ更新を不定期ながらはじめると思うので、どうぞよろしく。竹井 悠人がお送りしましたー。</p>Anonymoushttp://www.blogger.com/profile/10855002572736477253noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-14129977049485494212010-03-17T12:38:00.006+09:002010-03-20T19:04:35.198+09:00cpu実験最後の3ヶ月 その1<p style="text-indent: 12pt;">こんにちは。team C#の花元です。お久しぶりです。皆様いかがお過ごしでしょうか。</p>
<p style="text-indent: 12pt;">とりあえず、更新が滞った1月からの話をすると、新年、team C#はキューバ危機的な何かに陥っていました。これまでの方針では、教科書通りのcpu(1stアーキテクチャ)を完成させた後、班独自のcpu(2ndアーキテクチャ)を作るという計画だったのですが、コンパイラ係兼班長の竹井くんが突然未完成の1stアーキテクチャの破棄及び2ndアーキテクチャによるcpu作成をエミュレータ係とハードウェア係に指示してきたのです。これにエミュレータ係とハードウェア係は猛反発。team C#は新年早々瓦解の危機(?)を迎えることになります。</p>
<p style="text-indent: 12pt;">ハードウェア係の僕は結局どうしたかというと、班長の指示に従う事にしました。これで動かなかったら班長を全力で<a href="http://d.hatena.ne.jp/keyword/DIS" target="_blank">dis</a>ってやろうと胸に抱きつつ。理由は幾つかあって、1stアーキテクチャはその時1ヶ月程度原因不明のバグ(後に実に下らない原因であることが分かるのですが)に悩まされ続けていて埒があきそうにないこと、ハードウェアのバグ取りにはコンパイラ係によるテストコードの作成が必要不可欠で対立するととても動きそうにないこと、コンパイラ係は1stアーキテクチャでの仕事を完成させていて動かなくても単位は来そうなことが挙げられました。うーん、立場が弱い。</p>
<p style="text-indent: 12pt;">エミュレータ係も仕方なく2ndアーキテクチャへの移行に了承します。こうしてteam C#は瓦解の危機から脱することができました。と言っても当然のことながら毎週の進捗報告で指導教官の不安を買うことになり、1週間で簡単なプログラム(フィボナッチ数を求めるプログラム)を動かせなかったらteamに強制介入されることになりました。</p>
<p style="text-indent: 12pt;">こうなると班長の意欲は最高潮に達し、徹夜でコードを書いて眠い僕を叩き起してデバッグさせるという素晴らしいプロジェクトマネージメント能力を遺憾なく発揮させつつ、自身も1日中ハードウェアのテストコードを機械語で書き続ける(その時点では<a href="http://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA%E8%A8%80%E8%AA%9E" target="_blank">アセンブラ</a>がなかったので)という偉業(?)を成し遂げました。結果、2日でフィボナッチ数を求めるプログラムがハードウェア上で動くように。2ndアーキテクチャの開発が認められるようになります。</p>
<p style="text-indent: 12pt;">ここで試験期間につき一時活動を停止(試験の記事も誰かが書いてくれるかもしれません)。開発は試験後に持ち越され、注目はハードウェアから2ndアーキテクチャ用のコンパイラにしばらく移ることになりました。(cpu実験最後の3ヶ月 その2へ続く)</p>mogellahttp://www.blogger.com/profile/06339639468496927542noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-17462034716336417582010-03-15T23:53:00.004+09:002010-03-15T23:57:45.675+09:00最後の追い込み<p>竹井です。短い記事で失礼。</p>
<p>えーと明日の実験発表会まであと 13 時間なわけで、地下には夜にもかかわらず 20 人もの人がいるという異常事態です。。。現状で動作している班は、超 ksk 班、喰いタン班、C# 班です。なんか例年の傾向では 3 班動けば豊作だそうで・・・、実際打ちの班の記録も去年の最速班の記録を抜いてますから (・・・むしろ去年の記録がひどかったみたいですが)</p>
<p>とりあえず、明日のプレゼンテーションに備えて、みんな最終調整をしている中、われわれ C# 班はベスト コンディションでプレゼンに望むという作戦に出るので、全員帰宅です(笑) では僕も帰ります、おやすみなさい</p>Anonymoushttp://www.blogger.com/profile/10855002572736477253noreply@blogger.com1tag:blogger.com,1999:blog-4189009630455039950.post-90661090295307517422010-03-14T23:55:00.001+09:002010-03-15T16:27:05.684+09:00うごいたー<p>えーっと生存報告です。あけましておめでとうございます(笑)</p>
<h1>C# 班、実機で動きました!<br />
これで単位がくる!</h1>
<p>失礼しました・・・、また別のポストで報告します。明後日が発表会ですしね。</p>Anonymoushttp://www.blogger.com/profile/10855002572736477253noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-83587110029377018252009-12-13T10:38:00.016+09:002009-12-14T14:29:08.922+09:00麻雀大会ダイジェスト<p>こんにちは。はじめまして。Team 喰いタンの小林です。</p>
<p><a href="http://ja.wikipedia.org/wiki/%E6%96%AD%E3%83%A4%E3%82%AA%E4%B9%9D#.E3.82.AF.E3.82.A4.E3.82.BF.E3.83.B3.E3.81.AE.E3.81.82.E3.82.8A.E3.81.AA.E3.81.97" target="_blank">喰いタン</a>というのは麻雀用語の 1 つなのですが、その名が示すように Team 喰いタンのメンバは皆、麻雀が大好きです。実は、班結成時は、僕だけ麻雀ができなかったのですが、僕もメンバに教えてもらって少し打てるようになりました。僕は Team 喰いタンのコンパイラ担当なのですが、コンパイラ担当の仕事に関しては竹井君がちゃんとした記事を書いてくれていることですし、<a href="http://cpuexp.blogspot.com/2009/12/blog-post.html">先日行われた麻雀大会</a>について、大会の得点の推移を表した下のグラフに添ってダイジェストをお送りしたいと思います。</p>
<p align="center"><img src="http://www.yutopio.net/img/091213_mahjong.png" width="640" height="480" /></p>
<p>参加したのは、Team C#、Team 喰いタン、Team ksk、モン班の 4 班です。Team ksk は以前の記事にある宣言通り、班の存亡を懸けて必死で戦いました。14:30、戦いの火蓋が切って落とされました。昼間から何やっているんでしょうね。</p>
<p><div style="font-size: 24pt; font-weight: bold; float: left; margin-right: 10px; margin-bottom: 5px">1<sup>st</sup></div>
先峰戦です。僕 (小林) や竹井くんが打った<a href="http://ja.wikipedia.org/wiki/%E9%BA%BB%E9%9B%80%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%AB#.E5.8D.8A.E8.8D.98" target="_blank">半荘</a>です。この半荘は、麻雀を始めたばかりの 4 人で行われたため、とても長いものとなりました。初っ端の局から、初めて麻雀を打つ Team C# の竹井君が 12000 点を<a href="http://ja.wikipedia.org/wiki/%E5%92%8C%E4%BA%86" target="_blank">和了</a>り、場が大きく盛り上がりました。さて、この半荘、僕がバカづきして、 Team 喰いタンの点数が鰻昇りしています。僕は初心者で下手なのですが、親をしている時に 6 <a href="http://ja.wikipedia.org/wiki/%E9%80%A3%E8%8D%98" target="_blank">連荘</a>して、その途中で<a href="http://ja.wikipedia.org/wiki/%E7%AB%8B%E7%9B%B4" target="_blank">リーチ</a>に<a href="http://ja.wikipedia.org/wiki/%E3%83%89%E3%83%A9_(%E9%BA%BB%E9%9B%80)" target="_blank">ドラ</a>が 7 つも乗る (親倍) など高得点を得、東場 2 局だけで 52500 点を稼ぎました! 更にこの時、竹井君と僕の <a href="http://ja.wikipedia.org/wiki/%E5%92%8C%E4%BA%86#.E4.BA.8C.E5.AE.B6.E5.92.8C" target="_blank">W ロン</a>となったため、<a href="http://ja.wikipedia.org/wiki/%E5%92%8C%E4%BA%86#.E6.94.BE.E9.8A.83" target="_blank">振り込ん</a>でしまった Team ksk は大打撃を受けてしまいました。この時 Team ksk の代表として打っていた hota さんは、この時のショックから抵抗力を落としてしまい、ついにはインフルエンザにかかってしまいました。ごめんなさい……</p>
<p>Team ksk、その後がんばったのですが、先峰戦から 35600 点を失い早くも解体の危機です! Team 喰いタンはその後も振り込むことなく、高得点を維持し続けました。最終的には <nobr>+48600</nobr> 点でした。いやはや。僕、その前に打った時は<a href="http://ja.wikipedia.org/wiki/%E9%BA%BB%E9%9B%80%E3%81%AE%E7%82%B9#.E7.84.BC.E3.81.8D.E9.B3.A5" target="_blank">焼き鳥</a>だったんですけどね。Team C# も、良い調子のまま先峰戦を終えました。 <nobr>+17800</nobr> 点でした。モン班は、なかなか流れに乗れず、不調でした。残念。 <nobr>-30800</nobr> 点となってしまいました。</p>
<p>初戦から大荒れの模様です。</p>
<p><div style="font-size: 24pt; font-weight: bold; float: left; margin-right: 10px; margin-bottom: 5px">2<sup>nd</sup></div>
次峰戦です。<a href="http://cpuexp.blogspot.com/2009/10/blog-post_20.html">秋葉君</a>の活躍 (<nobr>+11600</nobr> 点) で Team ksk は少し持ち直しました。Team C# は少し点を落としたものの、安定しています。 <nobr>-3800</nobr> 点でした。モン班、 1 度しか振り込んでいないのですが、和了ることができず、 <nobr>-21000</nobr> 点でした。どうも調子が出ません。Team 喰いタンは、途中まであまり点数が芳しくなかったのですが、南場で大きく稼ぎ、最終的に <nobr>+13200</nobr> 点と、この半荘で 1 位になりました。最後は<a href="http://ja.wikipedia.org/wiki/%E6%B5%B7%E5%BA%95_(%E9%BA%BB%E9%9B%80)" target="_blank">海底</a>で<a href="http://ja.wikipedia.org/wiki/%E6%BA%80%E8%B2%AB#.E7.BF.BB.E6.95.B0.E3.81.AE.E8.A8.88.E7.AE.97" target="_blank">満貫</a>を和了ってかっこ良く決めてくれました。
<p><div style="font-size: 24pt; font-weight: bold; float: left; margin-right: 10px; margin-bottom: 5px">3<sup>rd</sup></div>
中堅戦その 1 です。Team ksk は、少し上下しつつも <nobr>+2500</nobr> 点を獲得しました。この半荘では、Team 喰いタンの点数がドラマティックな動きをしています。東場終了時にはなんと <nobr>-28700</nobr> 点と大きく落ち込んでいるのですが、なんと<a href="http://ja.wikipedia.org/wiki/%E5%9B%9B%E6%9A%97%E5%88%BB" target="_blank">四暗刻</a>を<a href="http://ja.wikipedia.org/wiki/%E6%91%B8%E6%89%93#.E8.87.AA.E6.91.B8" target="_blank">ツモ</a>! 32300 点を獲得し、一気に得点がプラスに。その後も 18000 点を和了った直後に 13300 点の直撃を受けるなど、激しい麻雀を見せてくれました。最終的に、 <nobr>+13200</nobr> 点と、1 位に躍り出ました。</p>
<p>Team 喰いタンは、点数が落ち込んでいる時は一瞬 Team C# に抜かされてしまっています。Team C# は、親をしている時に<a href="http://ja.wikipedia.org/wiki/%E5%BD%B9%E6%BA%80%E8%B2%AB" target="_blank">役満</a>をツモられるなど大きな出費がありながら最終的には <nobr>+4100</nobr> 点です。四暗刻が出るまでは <nobr>+27500</nobr> 点と堂々の 1 位だったので悔やまれます。麻雀って先が読めませんね。モン班、やはり 1 度も振り込んでいないのに <nobr>-19800</nobr> 点です。ツキがなかなか来ません。</p>
<p><div style="font-size: 24pt; font-weight: bold; float: left; margin-right: 10px; margin-bottom: 5px">4<sup>th</sup></div>
中堅戦その 2 です。班の存続を懸けて戦っていた Team ksk がまさかの<a href="http://ja.wikipedia.org/wiki/%E9%BA%BB%E9%9B%80%E3%81%AE%E5%8F%8D%E5%89%87%E8%A1%8C%E7%82%BA#.E7.BD.B0.E7.AC.A6" target="_blank">チョンボ</a> (ノーテンリーチ) で、8000 点を失っています。結局、この半荘で <nobr>-14900</nobr> 点です。他の班は皆プラスでした。調子の悪かったモン班ですが、この半荘は <nobr>+2200</nobr> 点でした。Team C# は、花元君が最後に 9000 点を和了り、 <nobr>+5300</nobr> 点。Team 喰いタンは、1 度も振り込まない安定した打ち回しで、 <nobr>+7400</nobr> 点でした。</p>
<p>この辺でみんなで食堂に行って休憩です。食べ終わって戻ってきたら 19:30 になっていました。</p>
<p><div style="font-size: 24pt; font-weight: bold; float: left; margin-right: 10px; margin-bottom: 5px">5<sup>th</sup></div>
副将戦です。食堂でゲンを担いでカツ丼を食べていた Team ksk の打ち手が素晴らしい活躍を見せてくれました。失点を抑えつつ高得点の役を和了り、 <nobr>+22500</nobr> 点を獲得。Team C# は得点が上下しましたが、 <nobr>+3200</nobr> 点でした。この班は全体的に安定していますね。今まで皆半荘で 1 位となっていた Team 喰いタンは、最初の局で <nobr>+13000</nobr> 点を和了って良いスタートを切ったと思いきや、失点が重なり、 <nobr>-13400</nobr> 点と 4 位になってしまいました。モン班、最初の局で 12000 点を失ったのが響き、その後は振り込みませんでしたが <nobr>-12300</nobr> 点でした。残念。</p>
<p><div style="font-size: 24pt; font-weight: bold; float: left; margin-right: 10px; margin-bottom: 5px">6<sup>th</sup></div>
大将戦です。この半荘が最後となりました。今まで不調だったモン班が本気を出しました! 振り込むことなく、5000 点以上を和了りまくり、最終局には倍満で 16600 点を獲得です! 合計で <nobr>+31000</nobr> 点と、輝いていました。Team ksk は、1 度しか和了れず、 <nobr>-12900</nobr> 点となってしまいました。チョンボがまだ響いていたのでしょうか。Team C# は、最初の方の落ち込みを南場の頑張りでカバーし、 <nobr>+3200</nobr> 点でした。Team 喰いタンからは、麻雀好きのこの班の中でも別格の実力を持つ打ち手が打ったのですが、どうも今回はひどくツキが無かったようで、東場で親満を和了るも、 <nobr>-23300</nobr> 点でした。本当に麻雀は運の要素も大きいゲームですね。もう 1 半荘もしたら、Team 喰いタンは Team C# に追い抜かされていたかも知れませんでした。危ない危ない。</p>
<p>大将戦が終わったころには、22:30 になっていました。</p>
<hr align="left" style="width: 100px" />
<p>実験開始から早くも 2 週間でレイトレを動作させるという快挙を成し遂げた Team ksk は 3 位となり、解体することになりました。Team ksk の解体は Twitter など各地で話題になり、「まさかあの Team ksk が」「Team ksk はとても一翻だった」「そんなことよりもっかい麻雀しようぜ」など、その解体を惜しむ声が上がりました。</p>
<p>こうして、長い戦いの幕が下りました。</p>
<p>遊んでばかりいないで、 CPU 実験もしっかり頑張っていきたいと思います。それでは!</p>nnnuuhttp://www.blogger.com/profile/17024684704594426363noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-33129221354612619452009-12-10T23:50:00.000+09:002010-06-04T11:00:13.663+09:00連載企画 CPU 実験教室 実践編 第 3 回 クロック モジュールの作り方<p>今回は、クロック モジュールの書き方のお話です。クロック モジュール自体の書き方は旧基板とそんなに変わりませんが、まだ手で回路につないでいる人も多いでしょう。今回はそんな手間を大幅に省いてくれる Core Generator のお話です。</p>
<table style="margin-bottom: 20px">
<tr>
<td><img src="http://www.yutopio.net/img/091204_lilfes.png" alt="りるふぇすたん" width="100" height="100" /></td>
<td style="font-weight: bold; color: deeppink">今回はようやくまともな話が聞けそうね</td>
</tr>
</table>
<h2 style="margin-bottom: 0px">クロック周りの UCF</h2>
<pre style="margin-top: 0px; margin-left: 50px; margin-right: 50px"><span style="color: Blue">CONFIG</span> <span style="color: Blue">PART</span>=5VLX50TFF1136-1;
<span style="color: Blue">NET</span> CLK_48M <span style="color: Blue">LOC</span>=H17 | <span style="color: Blue">IOSTANDARD</span>=<span style="color: Fuchsia">LVTTL</span>; <span style="color:green"># CLK48M</span>
<span style="color: Blue">NET</span> CLK_66M <span style="color: Blue">LOC</span>=J16 | <span style="color: Blue">IOSTANDARD</span>=<span style="color: Fuchsia">LVTTL</span>; <span style="color:green"># MCLK1</span>
<span style="color: Blue">NET</span> CLK_RST <span style="color: Blue">LOC</span>=H18 | <span style="color: Blue">IOSTANDARD</span>=<span style="color: Fuchsia">LVTTL</span>; <span style="color:green"># XRST</span></pre>
<p>クロックは適当に 66MHz と 48MHz の信号を取り出してやれば OK です。リセットボタンは上の CLK_RST と書いてあるやつで、押されていない状態で 1、押されている状態で 0 です (low-active)。</p>
<h2 style="margin-bottom: 0px">クロック モジュールの基本</h2>
<p style="margin-top: 0px">基本は、上の UCF で外部のチップから IO を通して入れた生のクロック信号を、一度 ibufg を通して、DCM に入れ、適当にループを形成して、必要な信号を bufg を通して、実際のクロックとして使用します。今まではこれを手で書いていたわけですが、Core Generator を使うとこれをまとめて簡単に作ってくれるのです。</p>
<h2 style="margin-bottom: 0px">Core Generator の使い方</h2>
<ol style="margin-top: 0px">
<li>プロジェクトに新しいファイルを追加しようとします
<p align="center"><img src="http://www.yutopio.net/img/091210_coregen0.png" alt="新規ファイルの追加" /></p></li>
<li>IP (CORE Generator & Architecture Wizard) を選択します
<p align="center"><img src="http://www.yutopio.net/img/091210_coregen1.png" alt="ソース タイプを選択" /></p></li>
<li>必要なモジュールを選びます
<p align="center"><img src="http://www.yutopio.net/img/091210_coregen2.png" alt="モジュールを選択" /><br /><br /><img src="http://www.yutopio.net/img/091210_coregen3.png" alt="確認画面" /></p></li>
<li>追加されたモジュールをダブル クリックして開きます
<p align="center"><img src="http://www.yutopio.net/img/091210_coregen4.png" alt="モジュールを開く" /></p></li>
<li>編集します
<p align="center"><img src="http://www.yutopio.net/img/091210_coregen5.png" alt="編集画面" /></p></li>
</ol>
<p>クロックの逓倍については、CLKFX 系にチェックを入れないと編集する画面が出ないので注意してください</p>
<table style="margin-bottom: 20px">
<tr>
<td><img src="http://www.yutopio.net/img/091204_is2k9.png" alt="あいずたん" width="100" height="100" /></td>
<td style="font-weight: bold; color: blue">Core Generator で作ったモジュールは、[Processes] ペインにある [View HDL Instantiation Template] でインターフェース、[View HDL Source] でシミュレーション用ソース コードが見れるよっ!</td>
</tr>
</table>
<h2 style="margin-bottom: 0px">リセット ボタン・LOCK 信号について</h2>
<h3 style="margin-bottom: 0px">LOCK について</h3>
<p style="margin-top: 0px">DCM は、クロックを入れ始めた始めのほうはまだ信号が不安定です。クロックの周期が安定しているとは限りません。そこで、LOCK という信号を出して、LOCK=1 になったら使用してよいというような感じで作られています。LOCK をリセット信号にあわせて出力するとよいでしょう。</p>
<h3 style="margin-bottom: 0px">リセット信号を混ぜたクロック モジュールの書き方</h3>
<p style="margin-top: 0px">リセット信号と LOCK 信号をかませることを想定して、以下のようにさっき生成したモジュールを使用すればいいことが分かります。roc は相変わらず使えます。</p>
<pre style="margin-left: 50px; margin-right: 50px; overflow: scroll"><code><span style="color: Blue">library</span> <span style="color: Fuchsia">ieee</span>;
<span style="color: Blue">use</span> <span style="color: Fuchsia">ieee</span>.<span style="color: Fuchsia">std_logic_1164</span>.<span style="color: Blue">all</span>;
<span style="color: Blue">library</span> <span style="color: Fuchsia">unisim</span>;
<span style="color: Blue">use</span> <span style="color: Fuchsia">unisim</span>.<span style="color: Fuchsia">vcomponents</span>.<span style="color: Blue">all</span>;
<span style="color: Blue">entity</span> clockgenerator <span style="color: Blue">is</span>
<span style="color: Blue">port</span> (
globalclk : <span style="color: Blue">in</span> <span style="color: Fuchsia">std_logic</span>; <span style="color:green">-- 生の 66MHz グローバル クロックを入れる</span>
globalrst : <span style="color: Blue">in</span> <span style="color: Fuchsia">std_logic</span>; <span style="color:green">-- リセット ボタンの信号を入れる</span>
clock66 : <span style="color: Blue">out</span> <span style="color: Fuchsia">std_logic</span>;
clock133 : <span style="color: Blue">out</span> <span style="color: Fuchsia">std_logic</span>;
clock133_180 : <span style="color: Blue">out</span> <span style="color: Fuchsia">std_logic</span>;
reset : <span style="color: Blue">out</span> <span style="color: Fuchsia">std_logic</span>); <span style="color:green">-- いろいろまとめてリセット信号として出す。</span>
<span style="color: Blue">end</span> clockgenerator;
<span style="color: Blue">architecture</span> behavioral <span style="color: Blue">of</span> clockgenerator <span style="color: Blue">is</span>
<span style="color: Blue">component</span> clockgen <span style="color:green">-- Core Generatorで生成したもの</span>
<span style="color: Blue">port</span> (
clkin_in : <span style="color: Blue">in</span> <span style="color: Fuchsia">std_logic</span>;
rst_in : <span style="color: Blue">in</span> <span style="color: Fuchsia">std_logic</span>;
clkin_ibufg_out : <span style="color: Blue">out</span> <span style="color: Fuchsia">std_logic</span>;
clk0_out : <span style="color: Blue">out</span> <span style="color: Fuchsia">std_logic</span>;
clk2x_out : <span style="color: Blue">out</span> <span style="color: Fuchsia">std_logic</span>;
clk2x180_out : <span style="color: Blue">out</span> <span style="color: Fuchsia">std_logic</span>;
locked_out : <span style="color: Blue">out</span> <span style="color: Fuchsia">std_logic</span>);
<span style="color: Blue">end</span> <span style="color: Blue">component</span>;
<span style="color: Blue">signal</span> rst : <span style="color: Fuchsia">std_logic</span>;
<span style="color: Blue">signal</span> rocrst : <span style="color: Fuchsia">std_logic</span>;
<span style="color: Blue">signal</span> lock : <span style="color: Fuchsia">std_logic</span>;
<span style="color: Blue">begin</span>
roc_inst : roc <span style="color: Blue">port</span> <span style="color: Blue">map</span> (o => rocrst); <span style="color:green">-- roc は新基板でもそのまま使える。</span>
rst <= rocrst <span style="color: Blue">or</span> (<span style="color: Blue">not</span> globalrst); <span style="color:green">-- ここでは、リセット信号で DCM ごと初期化しているが、DCM は初期化しないのも手</span>
reset <= rst <span style="color: Blue">or</span> (<span style="color: Blue">not</span> lock);
inst_clockgen : clockgen <span style="color: Blue">port</span> <span style="color: Blue">map</span>(
clkin_in => globalclk,
rst_in => rst,
clkin_ibufg_out => <span style="color: Blue">open</span>, <span style="color:green">-- 明示的に open 使っても無駄に警告されます。ise バカだろ</span>
clk0_out => clock66,
clk2x_out => clock133,
clk2x180_out => clock133_180,
locked_out => lock);
<span style="color: Blue">end</span> behavioral;</code></pre>
<h2 style="margin-bottom: 0px">最後に</h2>
<p style="margin-top: 0px">もし何か意見・質問ございましたら下のコメント欄にお寄せください。もしコメントが寄せられたら今後の励みになるので是非ください。</p>xyxhttp://www.blogger.com/profile/12664580622877928008noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-76665998499811325902009-12-09T22:03:00.003+09:002009-12-14T14:26:59.707+09:00地下 大掃除<p>誇りだけでなく埃にまみれた竹井です。先日は地下の大大大掃除大会がありました。</p>
<pre style="background: #eeeeee; padding: 10px; margin-left: 50px; margin-right: 50px"><span style="font-weight: bold">Date: Fri, Dec 4, 2009 at 3:27 PM
Subject: 地下の大掃除12/8</span>
3年生の皆様 cc:先生方、4年生
11/20に実施された産業医の7号館巡視の折、地下の015号室前廊下及びリフレッシュルーム(学生 ロッカーの前)の整理整頓を
厳しく指摘されました。
避難路に当たっていますので、安全のために大掃除を実施いたします。
大型不要物品の回収日程とあわせ、12月8日(火)プロッセサ実験終了後に全員で行ないま すので、ご協力よろしくお願いします。
廊下の本棚やロッカーの上においてある物はすべて破棄しますので、必要な物は前日まで に回収して下さい。
情報科学科事務室</pre>
<p style="font-size: 8pt">↑ プロッセサ!? なんだろうこの誤植・・・(笑)</p>
<p>ことの発端は先月。われわれ理情を含む工学系では産業医巡視というイベントが年に 1 度あるのですが、先月末にそのお偉い先生いらっしゃいまして、僕たちのトーキョー アンダーグラウンドを視察していきました。その結果、様々な指摘を受けまして・・・</p>
<ul>
<li>ゴミはゴミ箱に捨てましょう。</li>
<li>床の上にモノを置くのはやめましょう。</li>
<li>非常口付近に燃えやすいものを置かないようにしましょう。</li>
</ul>
<p>などなど。まぁ小学生でも守れるような低レベルな注意もされたんですが、一番大きな問題になったのは最後のヤツ。ロッカーがおいてあるリフレッシュ ルームという名の一角が、実はカオスでして・・・</p>
<p align="center"><a href="http://www.yutopio.net/img/091209_refreshroom.jpg" target="_blank"><img src="http://www.yutopio.net/img/091209_refreshroom.jpg" alt="ロッカー スペース" width="225" height="300" /></a></p>
<p>まあこんな感じで、大量の文化遺産もといマンガたちが非常口横の棚に保管されていました。しかも実は、掃除のお達しがくるまでは私物が床の上に散らかってて、文字通り足の踏み場がない状態だったんですよね。これは怒られますよ。他にもロッカーの上とか廊下とかこんな感じでひどい・・・</p>
<p align="center"><a href="http://www.yutopio.net/img/091209_locker.jpg" target="_blank"><img src="http://www.yutopio.net/img/091209_locker.jpg" alt="ロッカーの上" width="200" height="150" /></a> <a href="http://www.yutopio.net/img/091209_hallway.jpg" target="_blank"><img src="http://www.yutopio.net/img/091209_hallway.jpg" alt="廊下" width="200" height="150" /></a></p>
<p>極めつけはこれ。なぜ非常口の手前にこんな巨大なオブジェ、じゃなかった <a href="http://jp.sun.com/products/servers/midrange/sunfire4810/" target="_blank">Sun Fire 4810</a> が落ちてるんだか。</p>
<p align="center"><a href="http://www.yutopio.net/img/091209_sunfire.jpg" target="_blank"><img src="http://www.yutopio.net/img/091209_sunfire.jpg" alt="Sun Fire 4810" width="225" height="300" /></a></p>
<p>というわけで、これから何枚かにわたって、地下大掃除の様子をお送りします。</p>
<table align="center">
<tr>
<td width="200"><a href="http://www.yutopio.net/img/091209_room.jpg" target="_blank"><img src="http://www.yutopio.net/img/091209_room.jpg" width="200" height="150" /></a></td>
<td width="10" rowspan="6" />
<td width="200">掃除する前の部屋は<br />こんな感じだった。</td>
</tr>
<tr>
<td style="text-align: right">こんな大量のマンガが<br />非常口のすぐ横に・・・<br />まさに地下ライブラリ</td>
<td><a href="http://www.yutopio.net/img/091209_comic.jpg" target="_blank"><img src="http://www.yutopio.net/img/091209_comic.jpg" width="200" height="150" /></a></td>
</tr>
<tr>
<td><a href="http://www.yutopio.net/img/091209_nuclear.jpg" target="_blank"><img src="http://www.yutopio.net/img/091209_nuclear.jpg" width="200" height="150" /></a></td>
<td>でも思う。<br />非常口の外が放射線管理区域で、<br />そんで化学棟に挟まれてるとか、<br />助ける気ないよね、たぶん(笑)</td>
</tr>
<tr>
<td style="text-align: right">やっと出てきた技術文書が<br />10 年前のドキュメント・・・<br />役立たないよね、ぜったい。</td>
<td><a href="http://www.yutopio.net/img/091209_vhdl.jpg" target="_blank"><img src="http://www.yutopio.net/img/091209_vhdl.jpg" width="200" height="150" /></a></td>
</tr>
<tr>
<td><a href="http://www.yutopio.net/img/091209_machines.jpg" target="_blank"><img src="http://www.yutopio.net/img/091209_machines.jpg" width="200" height="150" /></a></td>
<td>もう何年も昔に<br />使われなくなった何か。<br />当然ながら廃棄対象</td>
</tr>
<tr>
<td style="text-align: right">そしてマンガ移動完了<br />どこぞの通販会社の倉庫的な(笑)<br />chikazon.com ??</td>
<td><a href="http://www.yutopio.net/img/091209_moved.jpg" target="_blank"><img src="http://www.yutopio.net/img/091209_moved.jpg" width="200" height="150" /></a></td>
</tr>
</table>
<p>結局、掃除は実験終了後、事務室の方々や助教の先生、うちらの学年が総出になって行って、午後 2 時から 5 時くらいまでかかったのでした。</p>
<p align="center"><a href="http://www.yutopio.net/img/091209_hallwayafter.jpg" target="_blank"><img src="http://www.yutopio.net/img/091209_hallwayafter.jpg" width="150" height="200" /></a> <a href="http://www.yutopio.net/img/091209_refresh.jpg" target="_blank"><img src="http://www.yutopio.net/img/091209_refresh.jpg" width="150" height="200" /></a> <a href="http://www.yutopio.net/img/091209_wiringspace.jpg" target="_blank"><img src="http://www.yutopio.net/img/091209_wiringspace.jpg" width="150" height="200" /></a></p>
<p>なんと廊下が健全な状態に! 棚がなくなった分、本当に広くなって気もちいい。宙返りでも何でも出来そう(笑) あと、足の踏み場がない上に、非常に燃えやすかった非常口も健全化。そして一番右は、配線スペース。実はさっきのディスプレイなどのせいで開かずの間だったところを開けてみたら、こうなってたんですよ。なるほど、地下室のネットワークや電源もここからディストリビューションされてたのか。ちなみに、間違って僕が全スイッチング ハブにつながってる主電源を抜いたのはご愛敬。</p>
<p>ふぅ、そういうわけで、地下環境も少しはマシになったんでしょうかね。</p>Anonymoushttp://www.blogger.com/profile/10855002572736477253noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-27839425454408890552009-12-08T11:50:00.006+09:002009-12-09T01:02:07.130+09:00【事業仕分け】 team C# の竹井氏、新井氏らの「レジスタ、型付きになる必要があるのか」発言に憤慨<p>team C# の CPU 刷新会議の 7 日の仕分け作業は、コンパイラ係に事実上の「ノー」を突きつけた。議論の方向性を決定づけたのは「(レジスタで)型付きを目指す理由は何か。(コンパイラによる)型検査ではだめなのか」という仕分け人の発言。結局、「<a href="http://ja.wikipedia.org/wiki/CISC" target="_blank">CISC</a> 立国日本」を否定しかねない結論が導かれ、team C# 幹部は「日本の型付きハード振興政策は終わった」と吐き捨てた。</p>
<p>この日、口火を切ったのは新井シミュレータ係。その後も「一時的にハードで実装する意味はどれくらいあるか」(花元氏)「型付きだから良いわけではない」(岡原氏)「ハードで型付きになればコンパイラにも波及というが分野で違う」(金沢氏)などと、同調者が相次いだ。</p>
<p>竹井氏側は「レジスタに型がないと、浮動小数点数でも整数比較をすることになる」と防戦したが、圧倒的な「型付きレジスタ不要論」を前に敗北。同チームの班長で音楽部合唱団 学生指揮者の竹井悠人(ゆうと)氏は「(型付きレジスタなしで)仮想スタック マシン立国はありえない」と憤慨していた。(花元)</p>
<p>(出展: <a href="http://sankei.jp.msn.com/politics/situation/091113/stt0911131914010-n1.htm" target="_blank">http://sankei.jp.msn.com/politics/situation/091113/stt0911131914010-n1.htm</a>)</p>mogellahttp://www.blogger.com/profile/06339639468496927542noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-89138214060625489522009-12-07T16:32:00.006+09:002009-12-07T17:29:14.682+09:00東大の環境<p>こんにちは、お散歩してて綺麗な風景を見ると写真撮りたくなる竹井です。だんだん冬っぽくなってきましたね!</p>
<p>今日はちこっとだけ、本郷キャンパスの最近の様子などを紹介します。例年だと 11 月末、つまり駒場祭くらいには銀杏かなり散ってるのですが、今年は梅雨明けが遅くて日照が少なかったのに加えて夏が涼しかったせいか、木々の葉の色づきがかなり遅かったみたいです。先週あたりまで、黄色い葉っぱと緑色の葉っぱがまざってて、まだまだカナ、って感じだったんですが、やっと今週あたりになってほぼ全部黄色くなりました。</p>
<p align="center"><a href="http://www.yutopio.net/img/091207_ginkgo1.jpg" target="_blank"><img src="http://www.yutopio.net/img/091207_ginkgo1.jpg" width="150" height="200" alt="赤門のあたり" /></a> <a href="http://www.yutopio.net/img/091207_ginkgo2.jpg" target="_blank"><img src="http://www.yutopio.net/img/091207_ginkgo2.jpg" width="150" height="200" alt="福武ホールの前" /></a> <a href="http://www.yutopio.net/img/091207_ginkgo3.jpg" target="_blank"><img src="http://www.yutopio.net/img/091207_ginkgo3.jpg" width="150" height="200" alt="総合図書館前から工学部 1 号館の方向" /></a></p>
<p>紅葉って、葉っぱの付け根が秋になってくびれてきて、光合成によって出来た糖が<a href="http://ja.wikipedia.org/wiki/%E7%B6%AD%E7%AE%A1%E6%9D%9F" target="_blank">維管束</a>を通じて木の幹に渡ることがなくなり、結果として糖が葉にたまってくることによっておきるらしいです。だから逆に言うと、日照が短いと葉が黄色くなるのが遅いってことなんですかね、たぶん。</p>
<p align="center"><a href="http://www.yutopio.net/img/091207_yasuda.jpg" target="_blank"><img src="http://www.yutopio.net/img/091207_yasuda.jpg" width="300" height="225" alt="安田講堂" /></a></p>
<p>これは<a href="http://ja.wikipedia.org/wiki/%E5%AE%89%E7%94%B0%E8%AC%9B%E5%A0%82" target="_blank">安田講堂</a>。<a href="http://ja.wikipedia.org/wiki/%E6%9D%B1%E5%A4%A7%E7%B4%9B%E4%BA%89" target="_blank">東大紛争</a>のときに、学生が屋上で徹底抗戦し、それが機動隊によって最終的に解放されたというのはすごく有名な話です。今では卒業式などをはじめとして、ちょくちょくイベントで使われていて、この間のホームカミングデーのときにも全体講演がここで開かれました。今日はなにやら<a href="http://web-gakkai.org/" target="_blank">ウェブ学会シンポジウム</a>とやらが開催されていたようです。</p>
<p align="center"><a href="http://www.yutopio.net/img/091207_envteam.jpg" target="_blank"><img src="http://www.yutopio.net/img/091207_envteam.jpg" width="300" height="225" alt="環境整備チーム" /></a></p>
<p>最後に、東大の環境整備をしている方々を紹介しておきます。東大の施設部の下には、環境整備チームというものがあり、ここの方々が毎日、キャンパスの整備をしてくださっています。この間の雨でだいぶ散った銀杏の葉も、上の写真のように環境整備チームのウィンド ブレーカーを来た人たちがかき集めて掃除しています。実はこのスタッフには知的障害者の方々を採用していまして、初めて知ったとき東大としても障害者の雇用機会を積極的に増やしているという印象をもちました。やっぱり大学という施設はアカデミックな場所でありながら、社会として構成員が満足できるシステムの縮図を作ってるんでしょうかね。いつも、キャンパスを綺麗にしてくれて、ありがとうございます!</p>Anonymoushttp://www.blogger.com/profile/10855002572736477253noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-24061181695691258462009-12-06T19:22:00.005+09:002009-12-14T17:21:06.997+09:00連載企画 CPU 実験教室 実践編 第 2 回 新基板の動かし方<p>ksk 班より xyx です。早速第 2 回目です。今日は新基板の動作のさせ方について説明していこうと思います。</p>
<table style="margin-bottom: 20px">
<tr>
<td><img src="http://www.yutopio.net/img/091204_lilfes.png" alt="りるふぇすたん" width="100" height="100" /></td>
<td style="font-weight: bold; color: deeppink">とは言ってもどうせ今回もたいした内容じゃないんでしょ?</td>
</tr>
</table>
<h2 style="margin-bottom: 0px">電源を供給する</h2>
<p style="margin-top: 0px">新基板は ATX 電源の 4pin ペリフェラル コネクタを刺すことで動作します。要するに、普通のデスクトップ PC に入っている電源の、4 つのピンが横一列に出ているピンを刺せば動くということですね。刺すとかなり抜けにくくなるという仕様なので、抜くときはがんばってください。</p>
<p>といっても、そもそも普通の ATX 電源は、マザーボードに刺さっているかどうか検出するピンが 20/24pin の方にあって、刺さっていることが検出できないと電源装置が動作しません。旧基板ではこちらを刺していたので問題なく動いていたわけですが、新基板ではここに単独起動用として信号を送ってやらないといけません。</p>
<p>ではどうすればいいかというと、やり方は簡単。「<a href="http://www.google.co.jp/search?&q=ATX+%E9%9B%BB%E6%BA%90+%E5%8D%98%E7%8B%AC%E8%B5%B7%E5%8B%95" target="_blank">ATX 電源 単独起動</a>」とググってもらえばいいのですが、以下のように、緑のピンと適当な黒のピンを抵抗をつなげてショートさせてあげればいいのです。</p>
<p align="center"><a href="http://www.yutopio.net/img/091206_atx20.jpg"><img src="http://www.yutopio.net/img/091206_atx20.jpg" alt="ATX 電源の単独起動の方法" width="395" height="200"></a></p>
<p>Web では、抵抗をつながないというのが多いのですが、まあ、どうなんでしょうw。</p>
<p>もし PCI-express を使おうなどというつわものが現れたら、PC から 4pin をつなげるだけで電力供給することができるようになっているんでしょうねw (でもどう見ても PC に基板が収まらないだろ JK)</p>
<h2 style="margin-bottom: 0px">プロジェクト ファイルを設定する</h2>
<p style="margin-top: 0px">前回言ったとおり、プロジェクトを作るとき、又はプロジェクトのプロパティで</p>
<table cellspacing="0" cellpadding="3" style="text-align: center">
<tr>
<td class="t1" width="80">family</td>
<td class="t2" width="100">Virtex-5</td>
</tr>
<tr>
<td class="t3">device</td>
<td class="t4">XC5VLX50T</td>
</tr>
<tr>
<td class="t3">package</td>
<td class="t4">FFG1136</td>
</tr>
<tr>
<td class="t3">speed</td>
<td class="t4">-1</td>
</tr>
</table>
<p>と指定してあげれば、OK です。</p>
<table style="margin-bottom: 20px">
<tr>
<td><img src="http://www.yutopio.net/img/091204_is2k9.png" alt="あいずたん" width="100" height="100" /></td>
<td style="font-weight: bold; color: blue">ちなみに、FPGA が使える範囲が広がっているから、合成にやたらに時間がかかっちゃうよっ!</td>
</tr>
</table>
<h2 style="margin-bottom: 0px">最後に</h2>
<p style="margin-top: 0px">もし何か意見・質問ございましたら下のコメント欄にお寄せください。特にあいずたんたちの性格に違和感を感じたら教えてくださいおねがいします><</p>xyxhttp://www.blogger.com/profile/12664580622877928008noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-10393965102227586072009-12-04T19:03:00.003+09:002009-12-07T16:31:01.787+09:00サイエンスカフェ @ 駒場<p><a href="http://www.yutopio.net/img/091204_guidance_poster.pdf" target="_blank"><img src="http://www.yutopio.net/img/091204_poster.png" align="left" width="227" height="321" style="margin: 10px" /></a>お久しぶりです、今日だけ理学部ジュニア TA の竹井です。実は今、駒場キャンパスの数理科学研究科棟に来ています。「<a href="http://www.s.u-tokyo.ac.jp/event/guidance-cafe/" target="_blank">私が理学を選んだ理由</a>」というイベントで、進学振り分け前の 1 年生や理学部に進学した 2 年生向けに、具体的に学科での様子を中の学生や教員が説明したり、理学の魅力を伝えるガイダンスがあったりします。僕自身は<a href="http://olab.is.s.u-tokyo.ac.jp/~reiji/" target="_blank">須田先生</a>と修士 1 年の方と一緒に、理学部 情報科学科からのブース説明要員として、訪れた学生にうちの学科のカリキュラムや講義内容、学生生活などを説明するという任務を与えられたのでした。<p>
<p>ちなみに、生協からコーヒーや紅茶をタンクで仕入れたり、ペットボトル入りのジュースや 8 種類ものケーキが用意されたり、かなりのサービスです(笑) まぁでも、それだけするくらいの価値があるイベントだということでしょうか。ちょっと 4 月の新歓時期に部活の説明をしたころを彷彿とさせます。</p>
<p>イベント自体は、16 時ごろからスタートして、自主ゼミ以外のすべての授業が終わる 18 時から大講義室でメインのガイダンスが始まります。そして 19 時半にガイダンスが終わった後は、各ブースでの説明が 20 時半まであります。まぁとりあえず、午後 4 時ごろの開店前の様子↓</p>
<p align="center"><a href="http://www.yutopio.net/img/091204_booth.jpg" target="_blank"><img src="http://www.yutopio.net/img/091204_booth.jpg" width="200" height="150" alt="情報科学科ブース" /></a> <a href="http://www.yutopio.net/img/091204_cake.jpg" target="_blank"><img src="http://www.yutopio.net/img/091204_cake.jpg" width="200" height="150" alt="ケーキいっぱい" /></a></p>
<p>そうはいっても、数理科学研究科棟といえば駒場キャンパスの一番はじっこ。1, 2 年生にはまったくもって用のない場所なので、かなり足が遠いのか、18 時前までほぼまったく人は来ませんでした。去年は食堂 2F でやっていたので、だいぶ人がいたみたいなんですが、今年はさすがに去年ほどの足は見込めない模様。でもやっぱり、18 時ごろからちゃんと人が来だして、大講義室はほぼ満杯になりましたよ。</p>
<p align="center"><a href="http://www.yutopio.net/img/091204_guidance.jpg" target="_blank"><img src="http://www.yutopio.net/img/091204_guidance.jpg" width="200" height="150" alt="大講義室でのガイダンス" /></a></p>
<p>これが終わったら、戦場なんでしょうね・・・いっぱい学生がうちのブースに来るといいな♪</p>Anonymoushttp://www.blogger.com/profile/10855002572736477253noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-65322842597890406872009-12-04T12:46:00.032+09:002009-12-07T16:34:56.743+09:00連載企画 CPU 実験教室 実践編 第 1 回? 新基板の解説 (概要)<p>こんにちは、チーム ksk より愛をこめて xyx 神がお送りいたします☆ この企画は、理情名物 CPU 実験を、どこよりも分かりやすく <span style="font-weight: bold">ISer 向け</span> (要は理情生向け) に解説していこうというものです。まだ連載できるかどうか、能力・体力的に不安なんですが、とりあえずは発表で解説したことから書いていこうかなと思っています。予定では、いったん新基板向けの話をしたら、非 09er 向けな話 (VHDL の基礎) とかもやっていこうかなと考えています。</p>
<p>ということで~</p>
<table>
<tr>
<td><img src="http://www.yutopio.net/img/091204_is2k9.png" alt="あいずたん" width="100" height="100" /></td>
<td style="font-weight: bold; color: blue">みんな~、あいずたんの CPU 実験教室は~じま~るよ~っ!</td>
</tr>
</table>
<p>さて、今回は新基板について、どんなものが載っているかから見て行きたいと思います。</p>
<table>
<tr>
<td><img src="http://www.yutopio.net/img/091204_lilfes.png" alt="りるふぇすたん" width="100" height="100" /></td>
<td style="font-weight: bold; color: deeppink">って、初回からいきなりつまらなさそうな話ね。</td>
</tr>
</table>
<p>まあ、そういわず、大事な話だから...</p>
<p align="center"><a href="http://www.yutopio.net/img/091204_fpga.jpg" target="_blank"><img src="http://www.yutopio.net/img/091204_fpga.jpg" alt="新基板" width="748" height="350"></a></p>
<p>新基板は上の写真のような形をしています。一言で申すなら、</p>
<p style="font-weight: bold; color: red; letter-spacing: 5pt">旧基板とは段違いに性能がいい!</p>
<h2 style="margin-bottom: 0px">FPGA について</h2>
<p style="margin-top: 0px">まずは FPGA 本体についてみていきましょう</p>
<dl>
<dt style="font-weight: bold">名称</dt>
<dd>XC5VLX50T-1FFG1136</dd>
<dt style="font-weight: bold">設定</dt>
<dd>
<table cellspacing="0" cellpadding="3" style="text-align: center">
<tr>
<td class="t1" width="80">family</td>
<td class="t2" width="100"><a href="http://japan.xilinx.com/products/virtex5/" target="_blank">Virtex-5</a></td>
</tr>
<tr>
<td class="t3">device</td>
<td class="t4">XC5VLX50T</td>
</tr>
<tr>
<td class="t3">package</td>
<td class="t4">FFG1136</td>
</tr>
<tr>
<td class="t3">speed</td>
<td class="t4">-1</td>
</tr>
</table>
<p style="margin-top: 5px; margin-bottom: 0px">もしかして... 上の名称そのまま?</p>
</dd>
<dt style="font-weight: bold">性能</dt>
<dd>
<table cellspacing="0" cellpadding="3">
<colgroup>
<col width="10%" />
<col width="10%" />
<col width="80%" />
</colgroup>
<tr>
<th class="t1" rowspan="4">CLB<br /><nobr>(Configurable Logic Block)</nobr></td>
<td class="t2">アレイ</td>
<td class="t2">120 x 30</td>
</tr>
<tr>
<td class="t4">スライス</td>
<td class="t4">7,200</td>
</tr>
<tr>
<td class="t4"><nobr>各スライスの <a href="http://en.wikipedia.org/wiki/Lookup_table#Hardware_LUTs" target="_blank">LUT</a> と <a href="http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AA%E3%83%83%E3%83%97%E3%83%95%E3%83%AD%E3%83%83%E3%83%97" target="_blank">Flip-flop</a></nobr></td>
<td class="t4">4 個 (従来の 2 倍)</td>
</tr>
<tr>
<td class="t4">最大分散 RAM</td>
<td class="t4">480Kb = 60KByte</td>
</tr>
<tr>
<th class="t3">DSP48E スライス</td>
<td class="t4" colspan="2">48 個 (各スライスに 25x18 乗算器・加算器・アキュミュレータを 1 つ)</td>
</tr>
<tr>
<th class="t3" rowspan="2">ブロック RAM</td>
<td class="t4" colspan="2">36Kb を 60 個 (36Kb のものが 18Kb x 2 としても使える)、合計 2,160Kb = 270KByte</td>
</tr>
<tr>
<td class="t4" colspan="2">旧基板に比べて、圧倒的に容量が増えていますので、相当キャッシュやバッファに RAM を割くことができます</td>
</tr>
</table>
</dd>
</dl>
<p>(出典は <a href="http://japan.xilinx.com/support/documentation/data_sheets/j_ds100.pdf" target="_blank">http://japan.xilinx.com/support/documentation/data_sheets/j_ds100.pdf</a>)</p>
<table>
<tr>
<td><img src="http://www.yutopio.net/img/091204_lilfes.png" alt="りるふぇすたん" width="100" height="100" /></td>
<td style="font-weight: bold; color: deeppink">で、要するにどういうことなのよ? こんな表を出されてもちっともうれしくないんだけど</td>
</tr>
</table>
<p>まあ、旧基板に比べて、ものすごーく性能が高いってことですね (汗</p>
<h2 style="margin-bottom: 0px">クロック周りについて</h2>
<p style="margin-top: 0px">クロックは 2 種類出ています。</p>
<table cellspacing="0" cellpadding="3">
<tr>
<td class="t1">66.66MHz (15ns)</td>
<td class="t2">メモリなどで使いやすいです</td>
</tr>
<tr>
<td class="t3">48MHz</td>
<td class="t4">USB チップに既に入っていますので、これに同期させて USB チップを使います</td>
</tr>
</table>
<p>あと USF に XRST っていうのがありますが、これはリセット スイッチです。旧基板では、リセット スイッチを押すと基板に書き込んだ内容が消えていたんですが、新基板では単なるスイッチになっていて、これを押すことで回路を書き込まずに最初からやり直すことができます。</p>
<h2 style="margin-bottom: 0px">IO</h2>
<p style="margin-top: 0px">見て分かるとおり、LED は基板上にありません。ということで、デバッグ時は拡張基板に自分で LED をつける必要があります。拡張基板は、FPGA につながっているピンこそ違え、基盤から見ると、VCC や GND や並びは同じです。つまり、今までの拡張基板がそのまま使えます。</p>
<table align="center" cellspacing="0" style="text-align: center">
<caption>拡張基板への出力ピンの対応 (p: 信号, Z: 未接続)</caption>
<tr>
<th class="t1" width="35">1</th>
<th class="t2" width="35">2</th>
<th class="t2" width="35">3</th>
<th class="t2" width="35">4</th>
<th class="t2" width="35">5</th>
<th class="t2" width="35">6</th>
<th class="t2" width="35">7</th>
<th class="t2" width="35">8</th>
<th class="t2" width="35">9</th>
<th class="t2" width="35">10</th>
<th class="t2" width="35">11</th>
<th class="t2" width="35">12</th>
<th class="t2" width="35">13</th>
<th class="t2" width="35">14</th>
<th class="t2" width="35">15</th>
<th class="t2" width="35">16</th>
</tr>
<tr>
<td class="t3">GND</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">GND</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">p</td>
</tr>
<tr><td colspan="16" style="height: 3px"></td></tr>
<tr>
<th class="t1">17</th>
<th class="t2">18</th>
<th class="t2">19</th>
<th class="t2">20</th>
<th class="t2">21</th>
<th class="t2">22</th>
<th class="t2">23</th>
<th class="t2">24</th>
<th class="t2">25</th>
<th class="t2">26</th>
<th class="t2">27</th>
<th class="t2">28</th>
<th class="t2">29</th>
<th class="t2">30</th>
<th class="t2">31</th>
<th class="t2">32</th>
</tr>
<tr>
<td class="t3">p</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">p</td>
<td class="t4">GND</td>
<td class="t4">GND</td>
<td class="t4">Z</td>
<td class="t4">3.3V</td>
<td class="t4">3.3V</td>
<td class="t4">Z</td>
<td class="t4">5.0V</td>
<td class="t4">Z</td>
<td class="t4">Z</td>
</tr>
</table>
<p>大体こんな感じ</p>
<table>
<tr>
<td><img src="http://www.yutopio.net/img/091204_is2k9.png" alt="あいずたん" width="100" height="100" /></td>
<td style="font-weight: bold; color: blue">旧基板の LOC を新基板の LOC に書き換えるスクリプトが書けるよっ!</td>
</tr>
</table>
<p>RS232C は、間に電圧を調整するだけのチップを挟んで、そのままソケットにつながってます。USB2.0 チップはクロックと同期して使う方式で、基板の方でいろいろとつながっていないピンがあるので、使用できる機能は制限されているようです。上記の 48MHz のクロック (チップの上限の速さ) が既に入っています。あと、DDR2-SDRAM (SO-DIMM, 266MHz) ソケットや PCI-express が付いているようです。DVI ソケットはなくなったようです。まあ、こんなところ触る人はいないでしょうけどw</p>
<table style="margin-bottom: 20px">
<tr>
<td><img src="http://www.yutopio.net/img/091204_lilfes.png" alt="りるふぇすたん" width="100" height="100" /></td>
<td style="font-weight: bold; color: deeppink">まったく、初回からこんなので大丈夫なのかしら。</td>
</tr>
</table>
<h2 style="margin-bottom: 0px">最後に</h2>
<p style="margin-top: 0px">もし何か意見・質問ございましたら下のコメント欄にお寄せください</p>xyxhttp://www.blogger.com/profile/12664580622877928008noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-42272715896718879952009-12-01T15:45:00.009+09:002009-12-01T17:26:51.110+09:00地下班対抗麻雀<p>こんにちは、麻雀を打てない竹井です。お久しぶりです。前回の記事で、コンパイラの壮大なる仕様ミスに気付いたことは書いたとおりですが、その割にここ最近、新宿いったり、横浜いったり、馬喰町いったり、いろいろ遊びまくってて、全然仕事は進んでません、はいごめんなさい。</p>
<p align="center"><a href="http://www.yutopio.net/img/091201_mahjong.jpg" target="_blank"><img src="http://www.yutopio.net/img/091201_mahjong.jpg" width="200" height="150" alt="地下班対抗麻雀" /></a></p>
<p>それで、今日はまさに今進行中の地下班対抗麻雀を生中継いたします。実は、この間の TDL 企画を立ち上げたたかつさんが今回、班対抗麻雀をしようと言い出したので、班対抗の麻雀が行われることとなったのでした。いま現在は 2 卓で並列大戦が行われている模様。ちなみに、今日は授業で定例の実験進捗報告もあって、Team ksk は「班の存続をかけて戦う」(by xyx 神) らしいので、負けたら班は解散するらしいです(笑) 僕はなぜか Team C# から代表キャラとして参戦させられたんですが、全くずぶの素人・・・というかやるの初めて。</p>
<table align="center" style="text-align: center">
<tr><td width="220"><a href="http://www.yutopio.net/img/091201_playing1.jpg" target="_blank"><img src="http://www.yutopio.net/img/091201_playing1.jpg" width="200" height="150" /></a></td><td width="220"><a href="http://www.yutopio.net/img/091201_playing2.jpg" target="_blank"><img src="http://www.yutopio.net/img/091201_playing2.jpg" width="200" height="150" /></a></td></tr>
<tr><td>滑り出し快調!</td><td>やったー、あがれたっ!</td></tr>
</table>
<p>でも、本当にビギナーズ ラックってあるもんですね。サイコロ運もよかったのか、最初に親になったらしくて、そんでもって、1 発目のゲームからリーチして普通に上がれたー! 僕にはよくわからなかったんですが、ドラとかいうのがついて、結構良かったみたいですよー。</p>
<p align="center"><a href="http://www.yutopio.net/img/091201_score.jpg" target="_blank"><img src="http://www.yutopio.net/img/091201_score.jpg" width="200" height="150" alt="スコア ボード" /></a></p>
<p>ちなみに、僕のテーブルでは僕の Team C#、hota さんの Team ksk、nnnuu さんの「くい☆たん」、そして tasai さんのモン班が一緒にプレーしてまして、僕は最初の 4 回くらいのゲームにいましたよ。なかなか好調で、13,400 点くらい稼いだらしいです。対して、チーム存続がかかってる ksk 班は -37,800 点で最底辺だった模様。大丈夫なんでしょうか・・・。</p>Anonymoushttp://www.blogger.com/profile/10855002572736477253noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-29639758599765855842009-11-26T12:54:00.015+09:002009-11-26T14:19:45.813+09:00コンパイラのお仕事 番外編<p><b>ぐはーーーーーーー!</b> 笑うしかない竹井です。「コンパイラのお仕事 その 3」を執筆してるぜー、みたいな話を友達としていて、その途中で壮大な過ちに気付いてしまって、もはや地下にいる人間で大爆笑状態です。</p>
<p>えっと細かい経緯を話すと、「その 3」では型システムについてのお話を書いてるんですが、うちのコンパイラには今のところ型システムが搭載されてないんですよね。というのも、実験の課題として与えられるレイトレーシングのプログラムは毎年同じように使われているもので、動くのが当たり前、、、つまり型の整合性も取れてて当たり前・・・という感じなんですよね。さらに、与えられているプログラムは (create_array というライブラリ関数以外) 単相型のみであってタイプ ジェネリックはない上に、O'Caml の演算子では整数は <code>+</code> なのに対して浮動小数点は <code>+.</code> のように、別の演算子を使うんですよ。だから、まったく型システムの存在を考慮しないで、コンパイラが書けちゃうんですよ・・・</p>
<p align="center" style="font-size: 14pt; font-weight: bold">少なくとも・・・ほんの 10 分前までそう思ってました</p>
<p>それでつい一昨日、うちの班でもシミュレータさんが初画像を出してくれたんですよ。まぁちょっと薄暗いんですが・・・。こんな感じです↓ まぁ新井さんが動くまでの経緯やなんかを記事に書いてくれると信じてますので、乞うご期待。</p>
<table align="center" style="text-align: center">
<tr><td width="150"><img src="http://www.yutopio.net/img/091126_wrong.png" width="128" height="128" /></td><td width="150"><img src="http://www.yutopio.net/img/091126_correct.png" width="128" height="128" /></td></tr>
<tr><td>うちの班の出力画像</td><td>正解画像</td></tr>
</table>
<p>で、たまたま今日さっき生協購買部から帰ってくるとき、「最近 CPU 実験日記にマジメな記事が少ないんじゃないー?」みたいなことを言われて、「いや、その 3 を執筆中だけど、うちのコンパイラは型システムがないから、書くのが大変なんだ」的な返答をしたら、「本当に型の考慮しないでも平気なの?」と言われて、上に書いたような返答をしたら・・・<b>「それ、不等号とかの型判定はどうしてんの?」</b>と・・・。</p>
<p align="center" style="font-size: 24pt; font-weight: bold; color: red; letter-spacing: 5pt">ガーーーーン</p>
<p>えっと、不等号の型を変えるのを忘れていました、完全に。つまり、整数の大小比較も浮動小数点の大小比較も、まったく同じ slt というマシン命令を使ってました。いやー・・・本当に完全に大小比較について整数と浮動小数点を使い分けるのを忘れてましたよ。まさかこんな罠があったとは・・・。</p>
<p>それでも・・・急いで地下に戻って「いや、そんなことはない・・・」と言い聞かせながら(笑) シミュレータさんが僕に送ってきた命令実行の統計情報を見てみると・・・</p>
<p align="center"><img src="http://www.yutopio.net/img/091126_stat.png" width="239" height="670" alt="統計情報" /></p>
<p>そーですね・・・たしかに slt という整数の大小比較命令は大量に発行されてるのに、fslt という浮動小数点の大小比較命令はなっしんぐ orz ナンテコッタ</p>
<p style="font-weight: bold">でも、まいっか、画像でたし♪</p>Anonymoushttp://www.blogger.com/profile/10855002572736477253noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-37668963056772487782009-11-24T17:44:00.013+09:002010-06-01T18:01:33.438+09:00第60回 駒場祭<p>実は音楽部合唱団で指揮者をしている竹井です。事後報告ですが昨日まで 3 連休の間、<a href="http://www.a103.net/komabasai/60/" target="_blank">駒場祭</a>でした。東大では年に 2 回文化祭があって、5 月には本郷キャンパスで<a href="http://www.a103.net/may/" target="_blank">五月祭</a>が、11 月には駒場キャンパスで<a href="http://www.a103.net/komabasai/" target="_blank">駒場祭</a>があります。五月祭は各学部の発表・展示などもあってよりアカデミックな雰囲気ですが、駒場祭は 1,2 年生が通うキャンパスで行われるので、模擬店が多かったり、バンドのライブやダンスのパフォーマンスなど若いイメージの企画が多かったりします。本当は事前に記事を書きたかったんですが、なにせ先週水曜に TDL 行って、木金と授業、さらに金曜午後は前日準備・・・ってな感じでまったく余裕がなかったんです。まぁそういうわけで、残念ですがお許しあれ。</p>
<p align="center"><a href="http://www.yutopio.net/img/091124_komaba.jpg" target="_blank"><img src="http://www.yutopio.net/img/091124_komaba.jpg" width="200" height="150" alt="駒場キャンパスの正門から" /></a> <a href="http://www.yutopio.net/img/091124_ginkgo.jpg" target="_blank"><img src="http://www.yutopio.net/img/091124_ginkgo.jpg" width="200" height="150" alt="銀杏並木。今年は黄色くなるのが遅いかな?" /></a></p>
<p>まず、僕の所属している音楽部の話から。うちは合唱喫茶という名のカフェをやってまして、前で団員が歌っているのを聴いて楽しんでもらいながら、ケーキやコーヒー紅茶などを楽しんでもらうという企画。僕らは男声合唱団なんですが、この企画自体もう長くやっているんだそうで、僕の知る限りは 1999 年の記録まではさかのぼれました。普通に 30 年とかもっと前からやってたみたいな話も聞いたことありますけど・・・ (ちなみに団自体は来年で 90 周年だそうです)。日曜日には <a href="http://organ.c.u-tokyo.ac.jp/access.html#900" target="_blank">900 番講堂</a>というパイプオルガンもある場所で演奏もしましたよ。</p>
<p align="center"><a href="http://www.yutopio.net/img/091124_choirfest.jpg" target="_blank"><img src="http://www.yutopio.net/img/091124_choirfest.jpg" width="200" height="150" alt="900 番で指揮しました" /></a></p>
<p>というか半ば仕組まれたかのようなポスターを作られてしまいました・・・。前日準備の際、いつもの教室へ向かっている途中、なにやら 1F の階段に大きな絵のキモいビラが数枚。よーくながめてみると自分の顔じゃありませんか! これはびっくりして、部屋に行ってみると責任者が、「あ、竹井さん! まことに申し上げにくいんですけど、竹井神の顔、ビラに使わせてもらいましたけど、いいですか? っていうかもう使っちゃったし、いいですよね、てへ!」とか言い出す始末・・・(笑) ナンテコッタ。まぁ・・・それにしても良くできてる。まったく悲愴感が漂っていない叫びだ。</p>
<p align="center"><a href="http://www.yutopio.net/img/091124_ad1.jpg" target="_blank"><img src="http://www.yutopio.net/img/091124_ad1.jpg" width="200" height="150" alt="何やら変なビラが・・・" /></a> <a href="http://www.yutopio.net/img/091124_ad2.jpg" target="_blank"><img src="http://www.yutopio.net/img/091124_ad2.jpg" width="200" height="150" alt="そしてよく見たら自分だった・・・" /></a></p>
<p>次に、<a href="http://www.tsg.ne.jp/" target="_blank">TSG</a> (理論科学グループ) とか <a href="http://www.utmc.or.jp/" target="_blank">UTMC</a> (東大マイコンクラブ) とか行ってきました。まぁ外の人間の僕から見ると、どっちも同じ空気が漂ってるように見えるんですけどねー。Team ksk の xyx さんとか iwi さんとか wata さんは TSG にいて、うちの班にも UTMC に所属してる人がいるんですよね。地下民にはこの 2 つのサークルにいる人間が多い気がします。まぁそんな縁もあって、僕も遊びに行ったんですけど。遊びに行ったら、何やら展示されてる人がいました。</p>
<p align="center"><a href="http://www.yutopio.net/img/091124_arai.jpg" target="_blank"><img src="http://www.yutopio.net/img/091124_arai.jpg" width="200" height="150" /></a></p>
<p>その名も「プログラマ展示」、なんというか展示品を作るのが間に合わなくて、仕方ないから作ってる現場を展示しちまえ、的な何かという匂いがプンプン(笑) しかも、よーく目をこらして画面を見てみると、開いてるプロジェクトは CPU 実験のシュミレータだったり・・・。ははは、結局そのゲームとやらは完成したんだろうか・・・、彼はコミケも控えてるはずなんだが。</p>
<p>まぁその他、目撃したものなど↓</p>
<table align="center" style="text-align: center">
<tr><td width="220"><a href="http://www.yutopio.net/img/091124_adballon.jpg" target="_blank"><img src="http://www.yutopio.net/img/091124_adballon.jpg" width="200" height="150" alt="アドバルーン" /></a></td><td width="220"><a href="http://www.yutopio.net/img/091124_mosaic.jpg" target="_blank"><img src="http://www.yutopio.net/img/091124_mosaic.jpg" width="200" height="150" alt="モザイク画" /></a></td></tr>
<tr><td>駒場祭 開祭中!</td><td>60 周年記念 モザイク画</td></tr>
<tr><td colspan="2"> </td></tr>
<tr><td><a href="http://www.yutopio.net/img/091124_stall.jpg" target="_blank"><img src="http://www.yutopio.net/img/091124_stall.jpg" width="200" height="150" alt="露店" /></a></td><td><a href="http://www.yutopio.net/img/091124_kappa.jpg" target="_blank"><img src="http://www.yutopio.net/img/091124_kappa.jpg" width="200" height="150" alt="河童踊り" /></a></td></tr>
<tr><td>模擬店いっぱい</td><td>水泳部の河童踊り</td></tr>
<tr><td colspan="2"> </td></tr>
<tr><td><a href="http://www.yutopio.net/img/091124_tour.jpg" target="_blank"><img src="http://www.yutopio.net/img/091124_tour.jpg" width="200" height="150" alt="学内ツアー" /></a></td><td><a href="http://www.yutopio.net/img/091124_gc.jpg" target="_blank"><img src="http://www.yutopio.net/img/091124_gc.jpg" width="200" height="150" alt="ガベージ コレクション" /></a></td></tr>
<tr><td>人気の学内ツアー</td><td>環境配慮。ゴミ分別は 9 種</td></tr>
</table>
<p>いやはやお祭りは賑やかでいいものです。おかげで CPU 実験が進みやしない(笑)</p>Anonymoushttp://www.blogger.com/profile/10855002572736477253noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-47944859814056006892009-11-19T11:21:00.002+09:002009-11-25T17:12:48.219+09:00TDL 行ってきました<p>こんにちは、いつも陽気な竹井です。課題がそろそろたまってきて、だいぶ忙しくなってきました。そして我々 Team C# も 1st アーキテクチャがそろそろ大詰めを迎えてきました。僕のコンパイラもアセンブリを吐けるようになって、やっとハードウェア係に仕事がまわっていきそうかな、という感じです。だがしかしそんななか、実は月曜日に喰いタン班が実機でレイトレースを完動させてしまって、Team ksk の後を 2 位で追っていたつもりが、いっきに抜かれてしまいました・・・ショボーン。まぁ、そんなの気にしないで、今週末までにはレイトレースさせるぜ、なんていう目標で進めております。</p>
<p>さてさて、それで本題です。タイトルにあるとおり、昨日 TDL に行ってきました。あの東京ディズニーランド、夢と魔法の王国ですよ!! もうね、これでもかってくらいに 1 日遊びつくしましたよ。そもそものコトの発端は先週の中ごろ。喰いタン班の人が僕に「いつも社員はしゃぎすぎ、だけど面白いからもっとやれ! ってか、社員が一番はしゃぎそうな所で、興奮してる社員を見たい」とか言い出したのがきっかけ。ちなみに「社員」っていうのは僕の地下でのニックネームです、よくわかんないけど・・・。でもまぁ助教の先生たちにまでそう呼ばれてるんだから仕方がない(笑) まぁそんなこんなで、いきなりディズニーに行く社員旅行企画が発足したのでした (ちなみに 11/18 はミッキーの誕生日だったんですが、TDL では特に何もやっていなかった模様)。</p>
<p align="center"><a href="http://www.yutopio.net/img/091119_disney.jpg" target="_blank"><img src="http://www.yutopio.net/img/091119_disney.jpg" width="300" height="225" alt="集合写真!" /></a></p>
<p>行ったメンツは総勢 8 名。喰いタン班から nnnuu さん含め 4 人、Team C# から岡原と僕、Team ksk から ksk さん、あと工学部の方が 1 人。なかなか賑やかなメンバで本当に楽しかったですよ。あぁ社員旅行とはいっても、別に企画したのは僕ではなくて、その言い出しっぺの彼です。ただ、なんでディズニーになったかというと、僕の地元が浦安だから、っていう至って単純な理由。行ってみれば友達をお庭に呼んだ気分ですね。そんなんだから、インパークしてからは色々ガイドっぽいこともやったり・・・。最初に半分に分かれて、4 人はビッグサンダーの FP を取りに行って、僕ら 4 人はレストランのプライオリティ シーティングの予約に行ったり。なかなか計画的にパークを回ると、2 倍も 3 倍も楽しめておいしいですよ、本当に!</p>
<p align="center"><a href="http://www.yutopio.net/img/091119_nnnuu.jpg" target="_blank"><img src="http://www.yutopio.net/img/091119_nnnuu.jpg" width="200" height="150" alt="nnnuu さん" /></a> <a href="http://www.yutopio.net/img/091119_okahara.jpg" target="_blank"><img src="http://www.yutopio.net/img/091119_okahara.jpg" width="200" height="150" alt="党員さん" /></a></p>
<p>僕個人のお勧めでは、ショーやパレードなどはいいですね。どうしてもアトラクションはいつ行ってもあまり大きく変わらないですけど、ショーとかパレードなんてのは生身の人間が演じてるので、ダンサーの活きいきしたところがとても躍動的で大好きです。あー残念だったのは、ショーベース 2000 でいつもやっているワンマンズ・ドリーム II が事前に抽選する形式に変わってしまったこと。11/10 からだそうで、お昼頃にそれに気づいて急いで席を取りに行ったのに、抽選から外れ。抽選とはいってももちろん、早い時間に行ったほうが当たる確率は高いみたいです。ちょうど先月までディズニーシーのアメリカン ウォーターフロント前特設ステージでやっていたハロウィーンのミステリアス マスカレードと同じシステムです。あーあ、ワンマンズ ドリームはぜひ見たかったのに残念・・・</p>
<p style="margin-left: 50px; margin-right: 50px; font-size: 8pt;">ちなみに浦安市民として補足しておくと、浦安市では成人式がディズニーランドで行われるというのはとても有名な話で、僕も今年の 1 月に行ってきました。ちょうどゲスト リレーション横の広場で、市から送られてきた封筒とパーク チケットを交換する形になっていて、ショーベースで特別イベントが行われます。市長の挨拶のほか、ディズニー アンバサダーからも一言あったり。ミッキーたちも出てきてなかなか楽しい雰囲気でした。成人式実行委員会への立候補し忘れたのが悔やまれて仕方ない・・・。イベント後は 1 日パーク内で遊べるので、小学校時代の友達と再会して遊べるということで素敵ですよ。まぁ着物姿でアトラクションに乗ってる人だらけですごく異様な感じですが。ちなみに残念ながら、パークのキャパシティとか市の予算とかの問題で、この成人式も来年くらいで終わりっぽいような話を聞きました・・・残念。</p>
<p>話を戻して・・・結局この日は、うちの班の党員 (岡原さんのニックネーム) の強い強い要望により、アトラクションを中心に回りました。行ってそうそうビッグサンダーマウンテンとスペースマウンテンに朝から乗ったり、お昼前にはカヌー漕いだりもしました。あー、カヌーはなぜか猛烈に速かったです・・・ふつうの 2 倍近くのスピードでてて、みんな本気で漕ぎまくってたような気がー(笑) 他には、コーヒーカップに乗って、カップを回しまくったりー、、、僕は ksk さんと一緒に乗って、二人でぐるんぐるん回してて、いやー本当に調子乗りすぎた、、、あはは♪ 夕飯は結局、カリブの海賊の横にあるブルーバイユというレストランでゆったりと。夜のエレクトリカル パレードもちゃんと見たし、満足満足。花火を見た後は、閉園前で空いてたホーンテッド マンション。クリスマスの装いかと思いきや、「ナイトメアー・ビフォア・クリスマス」からジャックが来てて、アトラクション内が素敵な飾り付けの<a href="http://www.tokyodisneyresort.co.jp/tdl/japanese/event/nightmare2009/" target="_blank">スペシャル バージョン</a>になってました。そして最後の締めに It's a small world. へ。僕はこれ大好きですよー!</p>
<p>はい、そんなこんなで 1 日 CPU 実験を放り出して遊び倒した日なのでしたー。今度はディズニーシーにでも行きたいな。</p>Anonymoushttp://www.blogger.com/profile/10855002572736477253noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-17458880433389641022009-11-16T23:23:00.006+09:002009-11-24T17:34:06.276+09:00素数<p>久しぶりの安息日を楽しむつもりが・・・先週末は猛烈に忙しかった竹井です、こんばんは。昨日の日曜日、家に帰ってテレビつけたら、NHK スペシャルで<a href="http://www.nhk.or.jp/special/onair/091115.html" target="_blank">リーマン予想についての番組</a>やってて、ちょっとそれにそそられて記事を書きたくなっちゃいましたもんで、ちょっと。</p>
<p>実は昔、素数が織り成す理論に心底から陶酔していた時期があって (いまでも素数は大好きですけど)、整数論についての本を色々読んでみたり、素数列挙のアルゴリズムを色々書いてみたり・・・、挙句の果てに <a href="http://ja.wikipedia.org/wiki/RSA%E6%9A%97%E5%8F%B7" target="_blank">RSA 暗号</a>のシステムを自分の手で作ったことさえありました。思えば中高生のころ、まだ若かったですね。ちなみに、番組の途中で、マーカス デュ ソートイというオックスフォード大の教授が出てましたが、この方が書かれた本の訳書「素数の音楽」を読んであまりにもそれが面白くて、原著まで買ってしまったほど。</p>
<p align="center"><a href="http://www.yutopio.net/img/091116_prime.jpg" target="_blank"><img src="http://www.yutopio.net/img/091116_prime.jpg" width="200" height="150" alt="素数の音楽 (原著と訳書)" /></a></p>
<p>最初に僕が RSA 暗号を作りたいと思ったモチベーションは良く覚えてはいませんが、<a href="http://www.faireal.net/" target="_blank">妖精現実 フェアリアル</a>という Web サイトにはだいぶお世話になりました。ここでは JavaScript を利用した RSA 暗号の構成方法などが事細かに説明されていて、巨大整数を扱う方法、素数の探し方 (素数判定方法)、実際の暗号化のアルゴリズム、そして高速化など多くのことを学びました。</p>
<pre style="margin-left: 50px; margin-right: 50px"><span style='color: green'>// C# によるエラトステネスの篩の実装</span>
<span style='color: blue'>var</span> n = 1000;
<span style='color: blue'>var</span> sieve = <span style='color: blue'>new</span> <span style='color: blue'>bool</span>[n + 1];
<span style='color: blue'>var</span> m = (<span style='color: blue'>int</span>)<span style='color: #2B91AF'>Math</span>.Floor(<span style='color: #2B91AF'>Math</span>.Sqrt(n)) + 1;
<span style='color: blue'>for</span> (<span style='color: blue'>var</span> i = 2; i <= n; i++) sieve[i] = <span style='color: blue'>true</span>;
<span style='color: blue'>for</span> (<span style='color: blue'>var</span> i = 2; i < m; i++)
<span style='color: blue'>if</span> (sieve[i])
<span style='color: blue'>for</span> (<span style='color: blue'>var</span> j = i * i; j <= n; j += i)
sieve[j] = <span style='color: blue'>false</span>;
<span style='color: blue'>for</span> (<span style='color: blue'>var</span> i = 2; i <= n; i++)
<span style='color: blue'>if</span> (sieve[i])
<span style='color: #2B91AF'>Console</span>.WriteLine(i);</pre>
<p>僕自身は中学 3 年のころ、もうそのときにはすでに C# を使っていて、RSA 暗号の実装をマネするのに UInt4096 という多倍長整数の実装などからガリガリやりました。先ほどの Web サイトの JavaScript 実装では、内部に文字列で長整数を保存するという方法をとっていたみたいでしたが、C# で実装するにあたって高速に演算させることを念頭に置きました。そこで byte 型の 512 要素配列を使って、加減算はポインタを利用して short 型の演算に置き換えたり、乗算についてはなるべくループ回数を減らしつつ楽に演算を行えるようにするなど・・・本当にいろいろ今の自分の原点のようなところがありましたね。今よりも、断然頭が柔らかかったと思います。そしてそれだけあの時に書いたプログラムへの思い入れも大きいです。</p>
<p align="center"><a href="http://www.yutopio.net/img/091116_rsa.png" target="_blank"><img src="http://www.yutopio.net/img/091116_rsa.png" alt="RSA 暗号 (1024 ビット) の鍵生成のデモ" /></a></p>
<p>そういえば高校の時、かなり感動した証明がありました。<a href="http://ja.wikipedia.org/wiki/%E3%83%99%E3%83%AB%E3%83%88%E3%83%A9%E3%83%B3%E3%81%AE%E4%BB%AE%E8%AA%AC" target="_blank">ベルトランの仮説</a>というものをご存知ですか? いかなる 2 以上の整数 <i>n</i> について、必ず <i>n</i> と 2<i>n</i> の間に少なくとも 1 つは素数がある、というものですが、これはチェビシェフによって初等的な証明が与えられています。ほとんどが二項係数 (組み合わせの数 <sub><i>n</i></sub>C<sub><i>k</i></sub> のこと) をいじくりまわすだけで示すという感じでして、高校生でも十分理解できる内容でした。素数が登場するこんなに素朴で根源的な命題に対して、自分が持ち合わせているツールで証明が与えられるということを知ったのは、本当にうれしかったですね。</p>
<h2>RSA 暗号の原理</h2>
<p>というところで、ここで唐突に RSA 暗号の仕組みをちょろっと紹介してみましょうかね。やっぱり、素数が一番活躍している場所って言ったら暗号系だと思います。ただ暗号っていうと、結構複雑なイメージがあるかもしれませんが、原理はすごく単純です。あくまで触りしか書かないので、バックグラウンドの理論が知りたければ適当に調べてください。では、はじまりはじまり。</p>
<p>まず、最初におっきな素数を 2 つ見つけてきます。こいつらを <i>p</i>, <i>q</i> としておきます。そして <nobr><i>n</i> = <i>pq</i></nobr>, <nobr><i>u</i> = (<i>p</i> - 1)(<i>q</i> - 1)</nobr> という 2 つの値を計算します。ここで、適当に素因数に <i>p</i>, <i>q</i> を持たない適当な数 <i>α</i> を選んできて、うまい具合に <nobr><i>αβ</i> ≡ 1 (mod <i>u</i>)</nobr> となるような <i>β</i> を求めます (まぁ実際には<a href="http://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%BC%E3%82%AF%E3%83%AA%E3%83%83%E3%83%89%E3%81%AE%E4%BA%92%E9%99%A4%E6%B3%95#.E6.8B.A1.E5.BC.B5.E3.81.95.E3.82.8C.E3.81.9F.E4.BA.92.E9.99.A4.E6.B3.95" target="_blank">拡張ユークリッドの互除法</a>というアルゴリズムを使いますが) これで準備は終了です。公開鍵は <i>α</i> と <i>n</i>、秘密鍵は <i>β</i> と <i>n</i> になります。</p>
<p>はい、いよいよデータの暗号化の段階です。あらかじめデータは数値データに変換しておきます。たとえば <i>d</i> とでもしておきましょう。暗号化は単に <nobr><i>d<sup>α</sup></i> mod <i>n</i></nobr> という式を計算するだけです。この値が <i>c</i> という暗号化されたデータになります。復号化するには逆に <nobr><i>c<sup>β</sup></i> mod <i>n</i></nobr> という式を計算するだけ。本当に単純でしょ? 実際にやってみましょう。</p>
<pre style="margin-left: 50px; margin-right: 50px">素数を 2 つ選んできます: p = 83, q = 79
n = pq = 6557, u = (p-1)(q-1) = 6396
そして鍵のペアを作ります。まず片方の α を決めます: α = 89 (公開鍵)
この α に対し、αβ ≡ 1 (mod u) となる β を計算します: β = 3737 (秘密鍵)
実際に暗号化してみましょう。適当にデータを選びます: d = 231 (平文)
(d^α) mod n = (231^89) mod 6557 = 1912 (暗号文)
そして元に戻してみます。
(d^α) mod n = (1912^3737) mod 6557 = 231 (復号化した後の平文)
というわけでうまく行きました!</pre>
<p>そんなこんなで、なんか取りとめもない記事になっちゃいましたが、、、やっぱり素数って美しいですよね! こんなまとめ方でいいのか・・・ははは(笑) ではでは</p>Anonymoushttp://www.blogger.com/profile/10855002572736477253noreply@blogger.com0tag:blogger.com,1999:blog-4189009630455039950.post-84005190357148449732009-11-14T15:45:00.009+09:002009-11-17T00:35:57.046+09:00麻雀で学ぶ計算機アーキテクチャ<p style="text-indent: 12pt;">こんにちは。team C# の花元です。今日は地下 (学生控室) で大流行している麻雀について語りたいと思います。え、麻雀と計算機アーキテクチャに何の関係があるかって? 先日麻雀で鳴くとき、その関係性に気付いてしまったのです。</p>
<p style="text-indent: 12pt;">実物の牌にあまり触れていない人はこんな打ち方をします。</p>
<ol>
<li>鳴くことを宣言する</li>
<li>自分の牌をさらす</li>
<li>相手の捨て牌から牌を持ってくる</li>
<li>打牌</li>
</ol>
<p style="text-indent: 12pt;">ところが雀荘なんかで打ちなれている人は鳴くときも進行が速いんですね。どういうことかというと、こういう打ち方をします。</p>
<ol>
<li>鳴くことを宣言する</li>
<li>自分の牌をさらす</li>
<li><b>打牌</b></li>
<li>相手の捨て牌から牌を持ってくる</li>
</ol>
<p style="text-indent: 12pt;">打牌の速さに無頓着だった僕はこの打ち方に大変感心しました。どうしてこの打ち方をすると進行が速くなるのかというと、麻雀の進行に重要なのは打牌だからです。打牌が決定されることによってあがることが出来たり、次のツモが出来たりするんですね。一方、相手の捨て牌から牌を持ってくるなんて事は当然のことで進行に影響しない。</p>
<p style="text-indent: 12pt;">この考え方を採用したアーキテクチャがあって、これを<a href="http://ja.wikipedia.org/wiki/%E5%88%86%E5%B2%90%E5%91%BD%E4%BB%A4">遅延分岐</a>と言います。先の例と対応させてみましょう。まず、打牌に相当するのが分岐命令です。その人が白を切るならば対面が鳴くのでツモを飛ばし、それ以外なら下家のツモに移れといった感じです。遅延分岐が実装されたアーキテクチャでは、このような分岐命令の次に「分岐するしないにかかわらず必ず実行される命令」を持ってきます。つまり例で言えば「相手の捨て牌から牌を持ってくる」です。</p>
<p style="text-indent: 12pt;">こうすることによって、分岐命令をじっくり実行しても皆イライラしません。鳴いた人が牌を持ってくる間に「この牌鳴いて喰いタンにしようかなーそれとも鳴かずにメンタンピンを目指そうかなー」とじっくり考えることが出来るのですから。その分、速くなります。高々鳴きの動作と侮るなかれ、実際のプログラムは 20% が分岐命令で出来ていますから、塵も積もれば結構速くなるようです。</p>
<p style="text-indent: 12pt;">こう考えると計算機アーキテクチャ高速化のヒントって、意外と身近なところにあるのかもしれませんね。</p>mogellahttp://www.blogger.com/profile/06339639468496927542noreply@blogger.com0