« June 2007 | Main | August 2007 »

2007.07.31

だらだらしたい

http://shinh.skr.jp/m/?date=200707から。

だらだらいいなぁ。
娘とだらだら遊んでいたい。
前はモバ機を買うために働いていたけど、今は娘と遊ぶために働くんだと思う。

僕ができることは「組織自体をテンパっている状態にしないこと」だと思う。組織に余裕があれば極端にマジメに働く人がいても、あの人はあの人だから、で済むからね。

だらだら闘争するはちょっと難しいけど、だらだら集中するは楽しい。

| | Comments (0) | TrackBack (0)

今の会社の良いところ

なんと言っても個人の作業スペースが広い。日本の会社と思えないくらいマジ広い。
まず長机が2個+小さい机が2個、本棚も2個(私物の本が100冊以上入っている)。隣にいた人が辞めてしまったので、さらに長机2個を実効支配している。会社の本棚や、デバッグルームは別にある。長机の一つはアマゾンから来た段ボールの空箱置き場になっている。昔は私物のノートがLANに繋がっていたけど、セキュリティが厳しくなったので最近は駄目。みんながみんな広いんじゃなくて、偉い人は狭い。普通に机一つ+書類やら置くスペースしかない。基板に向かう人ほど広いの原則。でも、最近基板さわってなかったりする。

あと、娘を保育園迎えに行くために16:00に仕事切り上げても大丈夫なところ。

いろいろ整理していたら、無くしたと思っていたThe Undocumented PC : A Programmer's Guide to I/O, Cpus, and Fixed Memory Areas発見。ワショーイ。

| | Comments (0) | TrackBack (0)

2007.07.27

そんな餌に釣られないクマー

あろはさんが極太の釣り針を垂らしている。初心者が一番最初に学ぶべきプログラミング言語は何か ?

最初にあろはさんのblogを見つけたのが、CASLで検索した結果だったという昔話はさておき、C言語もCASLもいろんな思いがある。

C言語はあと1回パラダイムシフトが起きれば、Lispと同じく古の言語になる。さんざん言われているとおり、OSのシステムコールが標準でC言語以外を受け付けるようになれば、勉強としてC言語を使う意味は無くなる。そのとき、C言語は組み込み専用言語として、一部の人だけが使う日の目を見ることのない言語になる。OK、ポールグレアムに会ったら言おう、C言語はLispに近づいている。

(以下、C言語に関する熱い思いが書いてあったけど、gdgdなので省略)

つまり、HWへのアクセスやリアルタイム性を必要とせず、文字列処理と抽象的なアルゴリズムを必要とするようなアプリケーション(コンパイラや、アルゴリズムの勉強とか)を、C言語で書くというのは今の基準で考えると本当にcrazyなんだと思います。ちょっと寂しいけど。

次にCASLの方なのですが、俺様CPUをCOMMET互換で作ろうとして速攻飽きた自分が言うのもなんですが、学習的では無いと思っています。CASLIIでは、C言語の理解を高めるためにアセンブラを勉強しましょう、みたいな雰囲気が見え隠れしていて、かなり嫌だったりします。本来、世の中にはアセンブラでしかできないことがあり、それこそがアセンブラの存在意義なんです。CASLIIはそこがごっそり抜けている。具体的には、リセット直後のCPUの動き、割り込みの処理、内部割り込みの発生、プロセッサのモード変更やキャッシュのイネーブル/ディゼーブルetc・・・。入出力だってマクロにする必要はなくって、外部のコントローラにアクセスさせるか、内部割り込みを発生させればいいんですよ。説明の手間いっしょでしょ。あと、いくら頑張っても動く実機がないというのは、最初から「試験で点を取るために勉強します」になって良くないと思う。

ああああ、中二病が襲ってきた。 ダカラボクガ COMMET ゴカンキヲツクッテ FPGA デウゴカセバヨクネ?
そろそろやってみるか

| | Comments (0) | TrackBack (0)

2007.07.26

SystemCの書籍2007年7月

ESL D&Vと、Hardware Verification With C++: A Practioner's Approach追加

(1)Advanced Verification Techniques: A Systemc Based Approach For Successful Tapeout (終了)
そもそもSystemCに特化した本ではない。感想はこちら

(2)Transaction Level Modeling With SystemC: TLM Concepts And Applications for Embedded Systems

(3)Systemc: from the Ground Up (終了)
邦訳は基礎から学ぶSystemC
感想はこちら

第2版でたよ。

(4)System Design With Systemc (終了)
邦訳はSystemCによるシステム設計。
SystemCに関わる人必読。感想はこちら

(5)SystemC Kernel Extensions for Heterogeneous System Modeling: A Framework for Multi-MoC Modeling & Simulation (終了)
あまりSystemCとは関係無い本。感想はこちら

(6)Advanced Verification Methodology Cookbook
予想以上に参考になります。7章で中断。

(7)よくわかる SystemCによるシステムデザイン入門 (終了)
感想はこちら


(8)C/C++によるVLSI設計―SystemCによるJPEGコーデック設計 (終了)
なかなか良い本でした。私の感想はこちら。noboshemonさんの感想はこちら

(9)Systemc: Methodologies and Applications (終了)
感想はこちら

(10)A SystemC Primer (終了)
入手困難ですが、最初の一冊にお勧め。感想はここ

(11)SystemCを使ったハードウェア設計 (終了)
合成について記述があり参考になる。最初の一冊には向かない。感想はこちら


(12)System Cプログラミング基礎講座 (終了)
いろいろと気になる点があり、お勧めはしません。感想はここ


(13) Performance Evaluation of Parallel Packet-processing Architectures Using SystemC-based Modeling and Refinement(終了)
あまりSystemCの勉強にはなりません。ネットワーク関連のモデリングをしたい人に少しだけお勧め。
感想はここ

(14) ESL Design and Verification: A Prescription for Electronic System-Level Methodology (終了)
ESL全般について書かれた本。SystemCへの期待も大きいです。文法レベルでの解説はありませんが、SystemCでできることについてはいろいろと考えさせられる。
感想はここ

(15) Hardware Verification With C++: A Practioner's Approach
SystemCじゃないけど、AVMのようなC++を使った検証フレームワークの本

あとTLMの本が残ってるな。AVMもそろそろリベンジだ。

| | Comments (0) | TrackBack (0)

Performance Evaluation of Parallel Packet-processing Architectures Using SystemC-based Modeling and Refinement その2

Performance Evaluation of Parallel Packet-processing Architectures Using SystemC-based Modeling and Refinement読みました。

斜め読みですが、ネットワークのモデリングに関しては広く(浅く)書いてあります。SIMDとかMIMDとかそういう概念も説明してあるので、教科書的ですがいまさら感がただよう。SystemCに関してはおまけ程度。むしろ、モデリングのフレームワークを検討するときに、どういう事を考えるべきかという事が勉強になる。

SystemCの勉強にはならないと思う。

| | Comments (0) | TrackBack (0)

今日のwifehack

娘がいるお父さんは、ちょっとした空き時間にコーディングをしないといけない。最近気がついた便利なこと。

・USBメモリ or SDカードで、CVSのリポジトリを持ち歩く。
これで開発環境のあるPCがあれば、家でも、会社の休み時間でもいつでもコーディング。複数のPCにソースがばらける事で自然にバックアップになり、面倒なお父さんもこれで安心。前はUSBにソース一式入れて持ち運んでいたんだけど、USBを指すPCによってドライブレターが変わるから、微妙に面倒だった。CVSならそんなこともないから、らくらく。リポジトリをネットワーク上に置いても良いけど、新幹線の中や電波の届かないホテルで、プログラミングしたくなったとき困るでしょ?
話それるけど、自分のパソコンのバックアップとるのは面倒だけど、複数のPCでcvs updateするのは全然苦痛じゃない。むしろ、updateしない方が不安になる。本質は同じなんだけど不思議。

・boost/test/minimal の導入
日曜プログラマに取っては一週間くらいコーディングから離れることもある。もともと遊びだから、ちょっとWebで仕入れた小ネタを使ってみたい。そうすると、だんだん自分が何をやっているのか分からなくなる。ちゃんと作業履歴を書けば良いのだが、仕事みたいで嫌になってくる。そんなとき、UNITテストがあればかなり安心。
C++だとCppUnitとかあるみたいだけど、ドキュメント読んでも理解できず。そこでBoost::Test。さらに、minimal。
http://boost.cppll.jp/BDTJ_1_29/libs/test/doc/minimal.htmを見よう。個人のUnitテストとしては十分な機能がある。なんと言ってもヘッダーファイルをインクルードするだけ。まじ、お勧め。

そして、空いた時間で家事を手伝え!

| | Comments (2) | TrackBack (0)

今日の日記

C++メモ
C++で俺様クラスを定義したとき、普通にアクセスするだけだとデフォの状態でvectorでアクセスできる。vector同士が同じかどうか比較するために==を使うときは、俺様クラスの比較演算子を定義しないと駄目。さらに、==と!=はそれぞれ定義しないと駄目。分かってしまえば当たり前だ。僕はただ、単体テストをしたかっただけなんだ。
STLの説明で、アロケータの説明とか見て、もうC++の勉強止めたくなってきた・・・。

陰からマモル! ちょととベタすぎ。謎の村雨くんを思い出した。最初の読み切りは面白かったのにな・・・
とらドラ4 最高すぎる。夏休みは終わらないとか、Secret Baseとかそういう世界。合宿したり、好きな子に告白したりは、もう一生無い。ハルヒがおもしろいのもそこなんだろうな。部室に行くと、いつものメンバーがいるみたいな。

| | Comments (0) | TrackBack (0)

2007.07.24

ビジネスマナーをC言語で例えると

そうだ、ビジネスマナーを勉強しなくてはいけないことを思い出した。
まずはビジネスマナー以前の、一般常識をクリアーせねばいけない。例によって僕はそこらは全然駄目だ。マジ、駄目。人間として駄目。生きていてすいません。

例えば良く上司から言われるのが、「靴ひもほどけてるよ」「シャツ出てるよ」とかそんなレベルなんだけど、正直良いじゃんって思ってる。いや、それではいけない。そんな僕にマナーの大事さをC言語で例えて欲しい。

1.靴ひもが解けてる人
2.scanf()を普通に使う人

なら、僕は1.の人と仕事がしたいんだが、人事の人は、2.の人を採用しちゃうよね。逆に靴ひもが解けているってのは、scanf()を使っちゃうくらい駄目な事なんだよ、って言ってくれたらどんなときもちゃんと靴ひもを結ぶ気がする。シャツが出ているのは、gets()を使うことですよ、って言われると、お客さんに対しては駄目だけど、社内のメンバーなら大丈夫ってレベルだ。
マナーとしてやってはいけないことをまとめるとこんな感じになると思う。


ビジネス C言語
朝髭を剃らない 関数プロトタイプ宣言しない
左右の靴下の色が違う malloc()とfree()が全然別の場所
穴の空いた靴下をはく 領域確保済みのポインタに対してmalloc()を呼ぶ
自分の事を「僕」と言う 変数名が、a, b, c, x, xx, xxx。
他社の悪口を言う C言語が最強だと言い出す
政治の話をする intを32bitと決めつける
宗教の話をする GPL以外のソフトウェアを認めない

「プログラマーの為のビジネスマナー講座」欲しい。

| | Comments (1) | TrackBack (0)

今日の日記

日記を書く[・ _ゝ・]はやみずさんから
また才能の無駄遣いか ・・・ http://moesuku.ofg.jp/

R.O.D 一巻 読んだ。これは・・・イイ!。夢が「本屋を買う」なので、とても共感できました。

ゼロの使い魔 4巻 シエスタがもうどうにもしてくれ状態。

奥歯がうずくので歯医者行ったらいきなり2択
①とりあえず患部を削って蓋をしましょう。虫歯が治った訳ではないので、いつか痛くなります。そのときに抜きましょう。
②今から抜きましょう。

①の選択肢の意味がわからん。

この前作ったツールのアルテラ版が欲しいって言われた。アルテラはucfじゃないからな。とはいえ、初めてのフィードバックktkr。ダメダメツールでも、「それなら俺がもっと良い物を作るよ」って人が出てきたらそれで良いと思った。そういう人が出てこなくても良いんだろうけどね。

| | Comments (0) | TrackBack (0)

Performance Evaluation of Parallel Packet-processing Architectures Using SystemC-based Modeling and Refinement

Performance Evaluation of Parallel Packet-processing Architectures Using SystemC-based Modeling and Refinement読み始めました。

Router専用のモデリング言語(超DSL)として、Clickなんて言語を発見。予想通り、グーグルで探すのはきつい。

一応、これでヒット。

あと、MetoroplisとPtolemyIIも出てきた。いちおうSystemC Kernel Extensions for Heterogeneous System Modelingで既出。参考。この2つがgeneral-purposeなモデリングフレームワーク。

Domein-specificなフレームワークとして、これらも紹介されている。

YAPI
Artemis
StepNP
CRACC → これ上のClickみたい。

それぞれのモデリングフレームワークの比較表があったりするが、ふーんって感じだ。

| | Comments (0) | TrackBack (0)

2007.07.23

今必要なのはHDL厨

ときどきの雑記帖 リターンズから。

> OKWave 独学でプログラマーさんになった人にお聞きしたいです
> Cを覚えるべき、最初にやるべきと主張する回答者と そうでもないんじゃね? とする別の回答者。 もうちょっと燃え上がってほしいが場所的に無理だろうな(笑)

Verilog 1.0の時代、一人くらいHDLとか勧めても良いと思った。CLK単位のレジスタの遷移が分からなければ、パイプラインもキャッシュも理解できない。HDDやVideoのコントローラが書けるようになって、はじめてちゃんとした制御ができるとか。そうすると、トランジスタ厨とか、量子力学厨とかでてくるのかも。ハードの世界にいると、プログラムって言うのは目の前にあるハードウェアリソースにアクセスするための物なんだが、それとは違う世界が急激に増えているんだなと実感。で、結局C言語を勧めるのはそういうことなのかも知れない。プロセッサ、キャッシュ、メモリコントローラ、MMUの仕組みが説明できないとしっかりしたプログラム書けないよね、と同じレベルの話なのかなぁ。ちょっと寂しい。

| | Comments (0) | TrackBack (0)

C++わかんねー

Verilog関連のユーティリティを作ろうとして普通に悩む。

入出力ポートを一つのクラスにしたいんだけど、bit幅を表すデータ構造をどうして良いのか分からない。int lsb, msb でも良いんだけど、input [`DATA_WIDTH-1:0] iport;みたいな表現をそのまま扱おうとすると、文字列の方が楽。C++だと、portを表す基底クラスを作って、intで格納するクラスと、stringで格納するクラスとそれぞれ継承すれば良いのか?そうするとそのままvectorに乗らない。そこでハンドルクラスですよ、くらいは本を読んで知っているんだけど、今の自分には少し敷居が高い。ハンドルクラスはもう少し自分自身がレベルアップしてからで良いと思ったら手が止まった。

よく考えるとSICPに出てくる複素数の問題と同じだな。クラス中でタグつけてdispatchさせよう。SICP万歳。
こんなレベルでもいつかC++使えるようになるのだろうか・・・

| | Comments (0) | TrackBack (0)

2007.07.21

並列論理型言語GHCとその応用

並列論理型言語GHCとその応用読みました。

ざっと斜め読みですが、論理型言語の入り口をのぞいてきました。最初の方にあるquick sortの並列性や、ストリームによるデータ処理は面白かった。Prologとの違いとか、Prologのコンパイルとかは、あまり興味がなかったので、ざっくりと読みました。一つわかったことは、Prologという表現は、Lispと同じくらい広いということ。Prologの弟分のようなGHCにすら、処理系が複数あるのが驚いた。perlがcgiを使うための言語じゃないように、Prologも難しい問題を解く言語じゃないと気がついた。上手く伝わるか自信が無いけど書いてみる。

論理型言語って、正規表現の位置づけじゃね?

正規表現だけじゃ普通のアプリを作れないけど、普通のアプリの中で正規表現をを使いたいときがある。正規表現の例で行くと、最初はsedみたいに専用ツールだったけど、perlみたい良いところを取り込んで機能を増やしたり、C++のBoost::regexpみたいにライブラリで実装されたり、みんなで使えるようにDLL化されたりしてきた。最初のPrologってのは、edとかsedに相当するんじゃないかな。perlに相当する爆発的なユーザーを持つような言語までは行かなかったけど、ライブラリという形で生き残っている(ex:Allegro Prolog)。ポール・グレアムも、彼の本の中で埋め込み言語としてlispでPrologを書いている。これは埋め込み言語の例を示したいだけじゃなくて、LispのライブラリとしてPrologの機能(論理型言語)を使いたいシチュエーションが何回もあったのだと思う。gaucheのshiroさんが、schemeの中で正規表現を使いたかったように。

問題を解くってことが、アプリレベルの話と、論理型言語の枠内では意味が違うという事もわかった。論理型言語を使うことで、「ある条件を満たす解は存在しません。」という事もわかる。これって、アプリケーションレベルでは問題が解けているということに気がついた。あるいは、ベストな解がわからなくても、「条件を満たす解が5個あります、この中から選んでください」と帰ってくるのも意味があるケースというのが多い。今、頭の中にちょうど良い事例が浮かんでるんだけど、仕事がらみなので上手くかけない。ざっくりいうと、FPGAの個数、規模、ピン数、基板サイズの組み合わせとか。ベストな解を出さなくても、この3つから選んでくださいってのが、条件の入力も入れて30分くらいで出てきたらすごく楽になる。人工知能と呼べるかもしれないけど、してほしいのはルールの中から総当たりでもなんでもよいので、満たす物をリストアップしてほしい。

論理型言語が得意な問題というのが意外にあって、結構論理型言語の枠内に入らなくて問題が解けたりする。これは、正規表現ライブラリ使わなくても、文字列の標準関数だけで乗り切れるのと同じ。何かキラーアプリがあれば、Prologもブレークするよ。

例えば、冷蔵庫にある具材から作ることが可能なレシピのリストを作るとか、論理型言語得意でしょ。1食ならともかく、朝、昼、夕となるとちょっと面倒。これにカロリー制限、一日20品目以上、調理時間(朝は15分だけど、土曜の夜は2時間までOKとか)等を入れ出すと、普通の言語だと厳しいと思う。つまり、今必要なのはProlog Cookbook。

| | Comments (0) | TrackBack (0)

2007.07.20

GHC is not Haskell

あろはさんに教えていただいた並列論理型言語GHCとその応用という本を読み始めた。


あろはさんにGHCの存在を教わる

GHCってThe Glasgow Haskell Compilerの略なのか!(by google)

FreeBSDなら/ports/langの下にghc A Compiler for the functional language Haskell あるよ

違うよ、全然違うよ。Guarded Horn Clausesだよ。頭文字しかあってないよ。

こんなマイナーな言語同士で名前がかぶっていることに絶望した! ←いまここ

(略)

SystemCでモデリングしたくなってきた。

| | Comments (0) | TrackBack (0)

数学、物理以外のコンピュータの利用ってどうなんだろう

最近、アカデミックな本を読むことが多い。(僕にとって、非実用的 AND 難しい = アカデミック)
コンピュータってのは、物理学と数学にべったりじゃない?言語の例題をみても、モンテカルロしてみようとか、電子回路シミュレータを作ってみようとか、そんなのが多い。タンパク質やら、大衆心理が例題にでてくるのは見たことがない。せいぜいSICPの銀行口座レベル。実際にコンピュータの初期を作った人は、数学者や物理学者が多い。ノイマン、チューリング、シャノンetc。半導体(物性)も物理にいれちゃうと、ムーアとか入れてもOK。

コンピュータと学科の関係について裏を取ろうとAmazonにいってびっくり。
ちょwww AIの本多すぎだろ。24000もいらない。

それはさておき、コンピュータ関係で物理の本だと9000冊くらい。

数学だと27000冊
電気でも14000冊

心理学:5000冊
化学:4000冊
言語学:5000冊

意外に天文学が少ない。1000冊くらい。検索キーワードが間違っていそう。

すいません。gdgdになってきました。

辞書好きな人には有名な話ですが、2000年頃から特に英英辞典の改版の頻度が凄く上がっています。これはコンピュータの性能が上がり、言葉の使われ方が簡単に調べられるようになったことが大きいです。興味がある人はコーパスでググる。大量の英文をコンピュータで処理することで、実際の言葉の使われ方が統計的に分かるようになりました。さらに、素人には近寄れなかった言葉のデータベースがおそろしいくらい身近になってしまいました。商業的な加熱もあるでしょうが、言語学もコンピュータを使うことで大きく変わっているのだと想像できます。

こんな感じで、数学、物理以外でのコンピュータの応用って実際どうなんだろうと思っています。まず、バイオ。すでにBioinformaticsという言葉がある。他にもコンピュータを使うことで学問ががらっと変わる分野ってあると思う。どのジャンルでも、最先端の所は豊富なリソースでなんとかなる。その反面、これから最先端を目指したいんだけどお金がないよ、スーパーコンピュータ使えたらこんな結果がだせるんだよ、って所はないんだろうか。そういうところに、64bit LinuxとFPGAの演算ボードで、100~200万くらいの専用スパコンを届けるのはビジネスにならないかなぁ。物理、数学以外のジャンルでは、全然発想の違うアルゴリズムがありそうな気がする。逆に全ての学問は数式で表せるから、コンピュータは数学を扱えれば良いんだよ、みたいな所もあるかもしれない。ちょうど、プログラマの序列の上2つ、Lispとアセンブラが、数学と物理に置き換わるような感じ。それはそれで面白い。

この世界は解決を待っている魅力的な問題でいっぱいだのハカー気取りではなくて、ビジネスとしてどうかと思った今日この頃。

| | Comments (0) | TrackBack (0)

2007.07.19

オッカム!

noboshemonさんに紹介していただいたTransputer occamによる並列プログラミング入門読みました。
流行のOCamlとは違うよ。さっきまで同じだと思っていたよ。

言語の見た目はHDLっぽい。

・プロセッサの接続方法例は面白い。
4次元2進ハイパーキューブ構造とか、いろいろ考えているのが楽しそうだ。こういうのが基板上で実現できると面白いんだが。
・2次元パイプライン
2次元パイプラインの一つの実装がスーパースカラー。画像処理なんかでは普通にやってそうな処理ですね。あれだ、DAPDNAを思い出した。
・デッドロックの起きない仮想リンク構造(Virtual link)
いつか役に立つかも知れない。メモメモ。
プロセス同士がデッドロックを起こさないことってのは、将来的にはコンピュータに計算させることだ。人間が考える事じゃない。

考え方としては面白いし、構文はださいけど、言語は良い感じだ。
SystemCでモデリングしたくなってきた。

| | Comments (0) | TrackBack (0)

2007.07.18

ESL Design and Verification: A Prescription for Electronic System-Level Methodology

ESL D&V読みました。

頑張って読めば、頑張ったなりに得る物も多い本。
ESL業界/技術全般について広い考察を入れながら、ESLとはこうあるべきだと語られています。読み所は、最初と最後の一人語り。それと、大量に紹介されているESL関係の研究/プロダクト。

前半は、業界の歴史から入ります。EDAベンダーや言語の話、まさにVerification 1.0から3.0まで駆け足で説明が入ります。
中盤はややだるく、ESL設計とはこうあるべきだという正論が繰り広げられます。現実はまだまだ筆者の思っているレベルまで来ていないため、ここがつまらなくなるのはしょうがないとはいえ、ひたすら英文を読み続けるのはちょっときつい。が、最後で感動するためにはちゃんと読もう。
後半に入ると、実際に知っている開発手法に入り、随分と読みやすくなる。読みやすいがかえって得る物は少ないかも知れない。

読んでいて感じるのが、筆者の正確な検証へのスタンスだ。本の中ではpositive verificationと表現され、仕様がこうだからこうあるべきだという科学的な検証手法へのこだわりは素直に尊敬する。「仕様を定義して検証する」のスタンスを貫いているため、EDAベンダーのプレゼン等に比べるとrule-baseによる設計手法への言及が若干多い。

最後の章はすばらしいの一言。
・設計手法はどんどんソフトウェアの世界へシフトしていく。マルチプロセッサや、並列処理システムにより、今のソフトウェアとハードウェアの分割手法は時代遅れになる。software/software co-design!
・デジタル回路の教科書は、ゲートレベルの事を教えてばっかりだ。100ページ以上も読んでようやく、小さな組み合わせ回路や、ALU、ステートマシーンがでてくる。そうじゃなくて、HDLを使ってデータパスと制御回路といった抽象度の高いシステム設計ができるようなアプローチが良い。Digital Design Vhdl: An Embedded Systems Approach Using Vhdlはそういうスタンスの本だよ。
・技術はどんどん進化するからじじいは余計な事を教えるな。カルノー図の最適化なんて教えることで、大事なことが見えなくなっていく。
・FPGAがEDA業界を変えている。Altera、Xilinxは石を売るのが仕事だから、ツールでもうけなくても良い。これからはIPコアの時代が来る。

最後は私の主観が入りまくりの補足だけど、筆者はIPコアで成功したのはARM社くらいだね、と書いた上でIPコアの時代が来ると宣言している。今までのIPコアベンダー(デナリとかテンシリカとか)は、最終的にASICにすることを前提に提供している。今後は、FPGA+再利用可能なIPコアという時代が来るかもしれないという予想だ。最終章では、globalizationにもかなりのページを割いており、ハードウェアの設計≠ASICの製造になる日が近いと思っているんじゃないだろうか。それとともに、検証手法/ツールも変わってくるはず。軸足がASICにない新しいツールもかなりでてきている。Identifyとか、ポセイドンとか、きっちりFPGA業界を狙っている。日本にいると、小スペース、バッテリ駆動、マルチメディア処理のために、ASICを起こすのは必須な所が多いけど、WorldWideで見た場合、FPGAでオッケーというのが増えていくと思う。そのとき、今のケイデンスを初めとするBig3はどうなるんだろう。Mentorは基板の方強そうだから、設計手法変わっても、しぶとく残りそうな気がする。

全体的に筆者がFPGAに冷たい理由が、最後の最後で分かった気がする。僕はFPGAの業界にいるから攻める側なんだけど、筆者は攻められる側なんだ。科学的な検証手法ではなく、実際に動かしてみてコーナーケースをついていく、筆者の言うところのnegative verificationに許せない気持ちがあるんだと思う。ブリタニカが、エンカルタを見て「あんな物と比べないでくれ」と怒ったのと同じだ。ASICとFPGAでごたごたしているあいだに、超低消費電力、高速、マルチで全然OK、みたなプロセッサと、それらをサポートする並列言語、専用OSがでてきて、ハードウェアの世界はなくなってしまうかもしれない。汎用機がPCに、ブリタニカがwikipediaに取って代わられたように、どうしてもって所だけ数億かけて半導体作る世界になるんだろうなぁ。


筆者からエンジニアへの言葉

1. Retain an open mind. -- engage in lifelong leaning -- and be ready to modify your patterns and mental frameworks whenever the evidence accumulates that a different approoach in needed.
2. Foster an openness to new cultures, ideas, and ways of doing things.
3. Continue to learn, because those with the most knouwledge will always have the highest value and will be able to evolve with whatever changes come along.

日々勉強

| | Comments (0) | TrackBack (0)

2007.07.17

この夏でやりたいこと その3

三連休で一歩前進

今日のステータス
SICP(終了) 3章でいったん終わり
GUIアプリ(終了)
ESL D&V 13章終了 あと1章
Verilogネタ そろそろ始めるぜ
並列化の本2冊 ESL D&V終わってから

良いペースだ。思っているより早くSICPに戻れるかも。

| | Comments (0) | TrackBack (0)

ESL D&V chap13

この章は面白い。分析が終わって、実際に検証をする時の方法についていろいろと書いてあります。

Formal verificationについて。

Most tool vendors will tell you that formal verification provides a 100% proof of correctness. Although this is true in theory, we are still unable to answer the question, "When have I done enough verification?" The formal proof is only as good as the set of properties provided, and there are no tools that can tell you how good or complete the set of properties is, or which behaviors are not described bye those properies.

この本の中ではfomal 検証とrule baseは同じ意味ととらえてよさそう。
解きたい問題にたいして、正しい制約(ルール)を与えられたかがわからないんだよね。逆に考えるとルールで記述できるアプリケーションにのみ有効という事?
いやいや、そうじゃない。ルールで記述できる部分についてのみ有効だ。O-inのクロック検証のようにアプリケーションと独立して、設計ルールのチェックはできる。

エキスパートシステムそのものにも見えるし、ただのLintじゃねとも思う僕ガイル。

DAFCAなる会社を発見。
日本語の記事はここ。
http://techon.nikkeibp.co.jp/article/NEWS/20060706/118923/
むう、3年前 DACに行かせてもらったとき、BluespecもDAFCAも無かったのに・・・・。

複雑な思いはあるが、今は自分の仕事を頑張ろう。

| | Comments (0) | TrackBack (0)

2007.07.16

smoking_xstできたよ!

ファイルはこちらから
http://homepage3.nifty.com/~Natsutan/smoking_xst/man/index.html

PHASE_SHIFTの制約だけが微妙に違うucfを用意して、ucfを入れ替えながら連続でbitfileを作るbatファイルを作ります。これ自体はbatファイルを作るだけ。真夜中に嫁と全然関係ない会話をしながらマニュアル書いたから、マニュアルの質は求めてはいけない。多分ユーザーは僕だけだからまず問題ない。

今まではPerlで適当に作っていたんだけど、自分で作ったコマンドラインのツールってどうしても使い方忘れてしまう。せめて一月に一回くらいの頻度で使えると良いんだけど、年に数回だとさすがに思い出せない。やりたいことはわかっているので、Perlスクリプトを解析するくらいなら、その都度作った方が早い。その結果、一人車輪の再発明を繰り返すことになる。数年単位で再発明をしているとさすがに嫌になってきたので、GUIで立ち上げれば使い方がわかるようにしてみた。どうなることやら。

ライセンスに関しては、qtとかでせめてGPLにしたかったんだけど、BCB Personalの制約がついてしまった。単純にお金の問題。びっくりするくらいボーナスがでたら、ちゃんとしたBCBを買って公開し直そう。もしくは、qtかGTKで作り直し。

次の目標はCoreGenみたいな、パラメータでVerilogソースを作り出すようなそういう物をC++で作りたい。C++はSystemCを見越して勉強しておこう。Common Lispで作りたいって気持ちはあるんだけどね。意味不明な動きをする→解決→エフェC++に乗っている、のループだった。


| | Comments (0) | TrackBack (0)

2007.07.13

いやいやドキュメント

GUIアプリのマニュアル書いていたら、働いているみたいでいやになってきた。Windowsアプリを公開して、ちゃんとHelp作っている人ってすごいと思う。

とりあえず1/10くらい終了。

あと、exeをupするので最低限のアレとして、カスペルスキー導入。ウィルスちぇくちぇく。

| | Comments (0) | TrackBack (0)

2007.07.11

Virtual Machine Design and Implementation in C/C++

プロトタイピングとは1ヶ月で作るVirual Machineだ。 --- なつたん

Virtual Machine Design and Implementation in C/C++ 昔よりコメントが増えている。

・Targeting a register based VM is much more difficult than with stack based VMs, but the author doesn't take attention to this fact.
・It reads like the personal diaries of Bill Blunden as he endeavors to build the HEC virtual machine.
・If you read his code, please don't try to emulate his coding style.

やれ、この人は分かってないよとか、C++の書き方がまずいだの、作者の日記だろ、と厳しい評価の中、☆5つつけている人も多いのよね。つまりこれは30日OSのVM版。これは買うしかないな。

> But if your interest is virtual machines, I suggest one of the many good books on the Java VM. If your interest is compilers,
> stick with the Dragon book, or check out Allen Holub's book if the Dragon book is too rigorous. If you're looking to learn C
> or C++, look elsewhere.

この評価が30日OS本とか似ている。OSの動き知りたいんだったらeCosのソース見た方がよいとか、素直にMinix本読んだ方がよいとか。30日OS本は、OSの勉強のために読むんじゃないよ!試行錯誤して、動いたktkr!と楽しむためにあるんだよ。

| | Comments (0) | TrackBack (0)

ソフトウェアとハードウェアの検証

ESL D&V Chap11 から

「ソフトウェアとハードウェアにおいて、検証の役割は違う。ハードウェアの検証として使えるソフトウェアの技術は多くはない。」

現実を見るとそうなのかもと思い始めた。HDLになればソフトウェアの検証手法がどんどん取り入れられるはずだったが、実際はそれほどでもなかった。部品をライブラリとして再利用という点では、HDLの特性はあまり生かされていないように見える。パラメタライズが上手く効いているのはSRAM/CPUのキャッシュ/乗算器とかもともとそれ単独で部品だったものばっかりじゃないか。さらにそれらは高速化が必要なのでテクノロジー依存になっている。やっぱりソフトウェアとハードウェアは開発という点から見ると違うんだ。ハードウェアで有効な検証手法っていうのは、この本に書いてあるとおり、等価性(equivalece)のチェックやら、ランダム検証など、ソフトウェアの検証とは違う方向に進んでいる。どちらかというと数学的なバックグラウンドを必要としている。ソフトウェアの世界では、爆発する組み合わせをオブジェクト指向や、コンポーネント、フレームワークといった抽象化/標準化の技術でで乗り切ろうとしたのと比較すると面白い。

かなり目が覚めた。ハードウェアの検証はソフトウェアの検証に比べて遅れているんじゃない、方向が違うんだ。90年にデヴィッド・カトラーとリーナスが行ったドッグフードと毎日リリースとか沢山の目玉とか、そういうのは今の半導体業界だと無理なんだ。

そこでbluespecですよ。ソフトウェアではC++とJavaが成功したけど、ハードウェアではrule-baseが成功するかもしれない背景がここにある。

とはいえ、ソフトウェアを動かずCPUはハードウェアだし、ソフトウェアの無いCPUはただの半導体だ。方向性が違うソフトもハードも一緒にして検証できる日がくるのはまだまだ先なのかも。

| | Comments (2) | TrackBack (0)

FPGAプロトタイピング

ESL D&V 10.6.3 The Role of Prototypingより

筆者はFPGAによる検証を constitute rigorous verificationじゃないと主張している。その根拠として以下を上げている。

・Visibitiry 信号みれない
・Repetability 問題の再現性が無い
・Coverage カバレッジ悪い
・Nagative Verification シミュレータと違って環境を変えるのが難しい
・Turnarount Time コンパイル時間かかるよね

4番目を除いて理由としては筋が通っている。しかし、実データでの検証、実際に接続される物が検証環境と一緒になって動くというメリットは、これらのデメリットを十分に打ち消す。プロセッサを開発したら、ICEが動くかどうかでシミュレータのみで十分なのか?実際のICEが繋がって、ブレークかけられる方が良いに決まっている。今までこの本の中でさんざん言っているプログラマからの視点(PV)がここだけ全く抜けている。プログラマから見れば、ICEが動けばそれは実物の検証環境と同じだ。物が繋がっていればHDDだってアクセスできるし、スピーカから流れてくる音で音質を判断できる。プロトでしかできないことがいっぱいあるんだ。シミュレーションモデルのHDDがDMAを行うより、最終製品で使うHDDが実際に回転してDMA転送する方が検証の質は高い。どこそこの信号がHとかLになるなんてプログラマには関係ない、今目の前にあるHDDから指定の時間内にデータを持ってこれるかが重要なんだ。これこそ、この本で言っている一番大事なspecification requirementだ。

4番目の「Nagative Verification」に関しては全くの勘違い。HDDを変えてみるとか、入力信号にノイズを乗せてみるとかは、シミュレータよりも簡単に状況を変えられる。シミュレーションで使うノイズが、現実のノイズの正確なモデルになっているなんてありえない。実際にノイズを乗せることでノイズが乗った時の動きがわかる。これはモデルじゃない、本物のノイズだ。FPGAプロトタイピングは、rigorousじゃないけど、十分practicalなのです。

Intelのプロトボードを見るまでもなく、マルチコアになった時点でシミューレータでの検証はすぐに破綻すると思うよ。

| | Comments (2) | TrackBack (0)

今日のゆうゆ

可愛い。
http://www.youtube.com/watch?v=pkhOsKWGtZg&mode=related&search=

一部のファンだけで有名な、ゆうゆの近況が分かるブログ。
http://reina.017net.com/?eid=521754

ありえないかわいさ。

| | Comments (0) | TrackBack (0)

2007.07.09

この夏でやりたいこと その2

土日で進んだぜ!
とりあえずソフトはできた。いつの間にか買ってあったBCB Personalが役に立った。やっぱりVB使ったら負けだ。

DCMのパラメータを変更しながら順にbitファイルを作っていく支援ソフト。自分が必要だから作る、どちらかというとMだから公開、フリーソフトの王道パターン。実行ファイルはBCB Personalの配布条件に従うけど、ソースは何も考えず公開予定。

今日のステータス
SICP(終了) 3章でいったん終わり
GUIアプリ ドキュメント残り
ESL D&V 9章終了 あと5章
Verilogネタ GUI終わってから
並列化の本2冊 ESL D&V終わってから

| | Comments (0) | TrackBack (0)

今日の発見

組み込まれたエンジニア。こんな面白いブログ発見!

2004年からのブログで、HDL、読書、マイコンとかぶるところが多いのに全然しらなかった。濃いblogの割にはあっさりソースが出てきたり不思議な雰囲気があるとおもったら、東海大の清水先生だ!

一度だけお会いしたことがありますが、FPGAでPDP-11を動かしてUNIXが動いているんですよ~って目を輝かせながら話をしてくれました。もう少し、ゆっくり話を聞いておけば良かった。

| | Comments (0) | TrackBack (0)

立ち読みネタ

JavaからRubyへって、立ち読みですませたと思っていたら家の本棚にあって驚く。
一行感想も書いているのに・・

どこかのblogに「立ち読みした礼儀としてレビュー」みたいな事が書いてあり衝撃。そういう考えたかたもあるのか。立ち読みですませる事に罪悪感を持っているので、「立ち読みしました!」って書くのは気まずいと思っていた。お金払わない本に対して、一行でも「つまんね~」って書くのは駄目な気がする。考え過ぎなのか。ビジネス本だと、立ち読みで面白そうな所読み切るとは普通にあるなぁ。読み切ってから満足して買う事もある。この場合、家ではまず読まない。JavaからRubyも立ち読みした記憶があるから、立ち読み→購入パターンだと思う。

そんなことはさておき、刀語 7巻、文学少女3巻、とらドラ3巻、ゼロの使い魔3巻、ネクラ少女3巻、とある魔術の禁書目録13巻と読みました。

刀語 第七話 これはあり。gdgdになりかけた話を良い具合に修正した、

文学少女 3 琴吹さんがからんできた。もっと!

とらドラ3! 実乃梨さんかわいい。

ゼロの使い魔 3 シエスタ~

ネクラ少女 3巻 毒舌が足りない。もっと毒舌を!

とある魔術 13巻かなりの急展開 面白かった。

続きを買おうと本屋に寄ったが、ESL D&Vを読み切るまではラノベは我慢しよう。Amazonでも買わないよ。

| | Comments (0) | TrackBack (0)

2007.07.05

この夏でやりたいこと

上司からついに「9月から忙しくなるよ。夏休みは十分エンジョイしてね」宣言が来た。前から忙しくなるのは分かっていて、それが8月なのか、11月くらいなのか気にはしていたが、どうやら9月らしい。忙しくなると、このBlogの更新も止まるだろうから、それまでにやりたいことを整理しよう。

SICP 3章でいったん終わり。4章から雰囲気が変わるから、一段落したら戻ってこよう
GUIアプリ どうしても作りたい物が2つほどある。せめて一個だけでも作ろう。
ESL D&V これは読んでしまおう。返す刀でSystemCの本も1冊片付けたい。
あとはVerilogネタで書きたい物が一つ。
並列化の本 2冊あるから読んでしまおう。

頑張ってもこれくらいかな。
週末に追い込んで一つずつ終わらせて行こう。

| | Comments (0) | TrackBack (0)

パラレル?シリアル?

ESL D&V 8章から

Phantom Compilerを発見!
要するに並列動作で記述した物の依存関係を分析し、スケジューラコミ一つのmonolithicなCソースにしてくれる。ここまでのツールが、一つのCソースをいかに並列化するかを扱っているとしたら、まったく逆の発想。これが上手く行くと、OSが要らなくなるって組み込み分野では有利になる。
今までは、OSはOSで最適化し、アプリはアプリで最適化していたけど、これを使うことでOSとアプリを一緒くたにして上で最適化をかけることができる。

FPGAで言うところの、論理合成後と配置配線前の最適化みたいなもんだな。いったん全回路をフラットにして、その上で要らないFFや重複しているFFを削っていく。この時点ではRTLの表記とか関係ない。

この本は基本的にはつまらないのに、時々面白い発見があるから困る。頑張って読まないと。

| | Comments (0) | TrackBack (0)

2007.07.04

今日の日記

・ウィルス
TI電卓向けのウィルスが!
http://www.symantec.com/enterprise/security_response/weblog/2007/05/calculating_the_risk_of_infect.html

ESL D&V 8章から
C言語等から自動で並列化を抜き出す処理系をまた発見

Synfora PICO Express
7章には書いてないけどポセイドンとかもあるよね。C2Hとかカタパルトは、ある程度決まったループしか展開できなかった気がする。

・赤黒木
日記を書く[・ _ゝ・]はやみずさんから。
赤黒木なるデータ構造があることをこの歳になって知った。データ構造とアルゴリズムなんて一通り勉強していると思っていたが、そんなことは全然無かった。遅延評価を使った無限リストの実装もかなり衝撃的だし、先月末くらいから新しい発見が多い。赤魔道士+白黒魔を思い出したのは秘密。

| | Comments (0) | TrackBack (0)

SICP Stream

3.5 Streamの章が、全パラグラフで目からウロコ状態。一つ一つに、この発想は無かったの連続!そして、当然のようにSICPのstream実装ではまる。ここに解決策がありました。まとめてくださった方に感謝。

しかし、全然知らない人に勉強を教わり、いろんな人が日記で同じ所ではまっていることを知り、これがWeb2.0なんだなって実感する。

全然関係ないんだけど、あろはさん経由で、shinhさんの所に反応。consを説明するために使うトロッコのおもちゃを与えれば、娘が立派なLisperに育つかもしれない。HP電卓を与えてRPNしか使えない女の子も良いと思う。普通の数式を見て、「中置はちょっと・・。S式か、せめて逆ポーランドにしてください」ともじもじしてくれたら、僕はいちころだ。


| | Comments (0) | TrackBack (0)

2007.07.02

洗濯機のwifehack

うちの洗濯機はドラム式で、脱水の最中に洗濯物によって共振が発生する。ものすごい音が続いたあとエラーで脱水が止まってしまう。
そんなときは、このwifehack。

共振は洗濯機が自分自身を揺らす周期と、洗濯物のかたよりから生じる固有振動数が一致したときに発生する。なので、洗濯機の片方を上から押さえるだけで、十分緩和できる。実際に、押さえるようにしてからエラーで停止したことはない。

そして、この洗濯機を押さえているときこそ、ラノベを読め!。
片手しか使えないのと、手に振動が来るので、技術書はちょっと無理。
ラノベ以外にも、英単語覚えるとか、いろいろと応用が効く。

| | Comments (4) | TrackBack (0)

ネットアイドルと嫁バレ

ザウルスのネットアイドルといえば、鯨13歳ですが、リアルなアイドルといえばハルカ嬢が不動の地位を築いていました。今はレッドとザウルスの甘い生活になっていますが、その前はザウルスにはぁはぁして、ハルカ嬢にドキドキするそんなblogでした(Hentai!)。それにしてもリナザウが欲しい。

父親にとって、自分の娘というのは特別な存在でどうしても自慢したいのです。僕も2歳の娘の写真をupしようかどうか、さんざん悩んだ日々がありました。ザウルスのアイドルがハルカ嬢なら、SystemCのアイドルはうちの娘でも良いよね、と毎日のように思っていました。

ところが、今は娘の画像をupしようとは思いません。普通に嫁が怖いからです。このblogやAmazonの買い物は全て秘密にしています。単純にお金の話に落とせるからAmazonはまだ良い。ばれたら土下座でも、毎日ビリーででも何でもすればいつかは許してくれる自信がある。でも、勝手に娘の写真をupしたら離婚の危機だ。絶対許してくれない。

関係ないけど、娘はまじ可愛い。SICPで勉強をしていると「ブドウのじいちゃんの本」といって持って行こうとする。紫は全部ブドウ。可愛い。(原書だから)重くて全然運べなくて、机から落として逃げ出す。これも可愛い。とにかく可愛い。

そんなことを書いていると寝室から娘の泣き声が。早速寝かせてきます。
まとめとしては、リナザウ欲しいではなく、自分の娘は異常に可愛いでした。

| | Comments (0) | TrackBack (0)

ビリーをやってみたけど・・・

ブームに乗ってブートキャンプやってみました。
結論:家事と仕事で忙しいパパには向かない。

なんと言っても占有時間が多すぎる。1回のトレーニングが約一時間。汗だくになるから、シャワーとか着替えとか、運動後の脱力タイムも踏まえると1時間30分の間何もできない。もうちょっと娘(2歳)が一緒に楽しんでくれたら良いのだが、全然興味が無かった。ビリーは本当にナイスガイなんだけどね。子育てパパには、1時間以上自分のためだけに時間を使うのは厳しい。

あと、おなかが出ているとジャブがきつい。ジャブってこんなに疲れるんだって初めて分かった。
なんか時間を有効に使えるダイエットがあれば、ビジネスになりそうな気がした。
こんな感じ

・小さい子供も一緒に楽しめて、大人にもそれなりに負荷がある。(小さい子供は集中力の問題があるから難しい。)
・運動しながらラノベくらいは普通に読める。
・運動するだけで、英語がペラペラになる。
・ダイエットしているつもりが、みるみる部屋が綺麗になり、洗濯物は片付き、料理が完成する。

何か良い方法があれば教えてください。

| | Comments (0) | TrackBack (0)

ESL D&V 6章


ESL D&V Chap6より

Rosettaなんてのもあるらしいが、Bluespec程ではなさそう。

It is critical to understand that model-driven "whatever" (engineering, development, design...) is not a metheod or a process in itself.
(中略)
That is, model-driven "whatever" is more about the relationships between models than the models themselves.

なるほど。それよりmodel-driven "whatever"って表現が面白い。
Object-Oriented "whatever" なんてHWの世界では飾りですよ。って使えば良いのか?

章末のthe prescriptionに、「仕様記述には自然言語のテキスト(natural language text)が、やっぱりいいと思うよ」って書いてあって、ちょっとテンション下がる。やっぱりそうだよね。

| | Comments (0) | TrackBack (0)

« June 2007 | Main | August 2007 »