« February 2007 | Main | April 2007 »

2007.03.31

IDEコントローラ

Blogじゃ見難いと思うので、IDEコントローラのページを作ってみた。じわじわ内容を作っていこう。

| | Comments (0) | TrackBack (0)

ANSI Common Lisp


ANSI Common Lisp
読みました。

前半はがんばってLispを書いていたけど、後半はポールの読み物と割り切って読みました。最後まで読んでみて、Lispにだいたいどういう機能があるのかはわかった。Lispって何ができるの?って所の回答は見つからず。

普段やっている作業がいかに手続き的なのかを再確認した。
ex:コンパイルする→ログを確認する→バックアップ用のフォルダーを作る→ファイルをバックアップ→Excelの表を更新
Perlだとこういうの得意なんだけど、Lispでやろうって気にならない。

On Lispも買ったけど、まだこのレベルではない。

Practical Common Lispがおもしろそうで、そちらに進むかSchemeに進むか悩み中。

| | Comments (0) | TrackBack (0)

2007.03.27

Reconfig

ここを見てふと思う。いわいるリコンフィグプロセッサって、何で既存のプロセッサの拡張なんだろう。基本的に得意な所は並列の積和演算で、ターゲットはDSPの置き換え。こんなのばっかり。

上blogのコメント欄にあるように、既存のCに特化したプロセッサの置き換えは商業的に厳しい。ちょっと速いくらいでは、横綱Intelには歯が立たない。じゃあ、並列乗算はどうか? こっちにはTI DSPが立ちはだかり、単純な並列演算ではFPGAも全然負けていない。Virtex4だって、1CLKで乗算器とか加算器とかの機能を変えられ、そのUNITが100個とかそんな数で入っている。

リコンフィグがニッチなところを狙わないといけないのはわかるが、マルチメディア系に参入するにはライバルが多すぎたと思う。C言語+アセンブラの世界に立ち向かった時点で負けていたのだと思う。

研究レベルでも「今C言語でできていること」を2倍、3倍に速度を上げてもムーアの法則に飲み込まれ全く意味が無い。研究の速度よりも、半導体の進化の方が速いことはIntelプロセッサ、FPGAの進化を見れば明らかだ。

で、Erlangとかみて思うのが、もう少し抽象度を上げた状態でのリコンフィグプロセッサっておもしろそうじゃね?プロセッサの命令セットに落ちた状態での最適化を図るのではなくて、ある言語(Javaとか)に特化した形ででのリコンフィグプロセッサなら、いままでとの違いが出せる。

あるOSの上で、Cと、Javaと、Erlangが見かけ上同時に動く必要があるなら、ドライバなどのCで書かれた部分は汎用プロセッサで、Javaで書かれた部分はプログラムがロードされると同じタイミングでハードウェアにVMが展開される、Erlangで書かれた部分も同様。こんな感じで、言語の特性毎に専用ハードを用意して、リコンフィグしながら処理をしていけたら、違う道が開けそうな気がする。Javaで書かれたプログラムを2つ同時に走らせたいなら、JavaのVMを2つリコンフィグすれば良いじゃない。

と夢を語った所で眠くなってきた。

| | Comments (2) | TrackBack (0)

今日の日記

忙しくてまとめの時間が取れず・・

・FPGAボード
http://www.xilinx.com/univ/xupv2p.html
学割で$299。ちょっと高いか。


・Verup
shurikenとVeritakをバージョンアップした。
どちらもGUIがかっこよくなって驚いた。


・Performance Evaluation of Parallel Packet-Processing Architectures Using SystemC-Based Modeling and Refinement
ようやく到着。8000円以上するのに、「ちょっと待て」というくらい薄い。
出張の移動中にでもちまちま読もう。


http://www.aoky.net/articles/jeff_atwood/everything_you_know_will_be_obsolete_in_five_years.htm
2倍早く走れ!

| | Comments (2) | TrackBack (0)

2007.03.26

IDEコントローラ作ったよ

週末は金曜日にお休みがもらえたので3連休でした。
昼間のほとんどは娘との時間に過ごしつつ、夜は趣味のVerilogでIDEコントローラを作る。普通のCPUにつなげるコントローラではなく、リセットが入るとセクターの先頭から順番に読み出すだけのもの。
パソコン上でコンパクトフラッシュに大きなデータを書き込み、FPGAが乗ったボードでそのデータを読み出すのが目的。オシロもロジアナも無い状態で、三夜デバッグを行いさきほどデータの読み出しに成功したところ。実作業は10時間くらい。
ファイルとテストパターンを整理したら公開予定。

| | Comments (0) | TrackBack (0)

2007.03.19

AVM tlm_fifo

Advanced Verification MethodologyのTLMを読み進める。4章で当たり前のようにtlm_fifoとかでてきてこまる。Mentorからダウンロードしたファイルをいくらgrepしても、定義しているファイルが見つからない。こんな時はgoogleだ。そして、noboshemonさんのサイトへ。noboshemonさんに感謝。

includeするファイルはtlm_fifo.hなのか。って、OSCIからTLMダウンロードが必要っぽい。Cookbookで少し説明が欲しい気もするが、Questaをちゃんと導入すれば自動的に入るのかな。とりあえずダウンロードして、ファイルを展開。特にインストールは必要なさげ。\docs\tlm-2.0が空っぽなのが気になる。

using namespace tlm;も無いとコンパイル通らない。もう少し頑張ろう。

| | Comments (7) | TrackBack (0)

2007.03.17

SystemCの書籍 2007年3月

いつのまにか折り返し地点は過ぎている気がする。

(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
感想はこちら


(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
予想以上に参考になります。ただいま4章

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


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

(9)Systemc: Methodologies and Applications
ただいま2章。

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

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


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


(13) Performance Evaluation of Parallel Packet-processing Architectures Using SystemC-based Modeling and Refinement
アマゾンで見つけたので追加。

| | Comments (0) | TrackBack (0)

SystemC Kernel Extensions for Heterogeneous System Modeling その2

新幹線の移動と、待ち時間を利用して読み切りました。

SystemC Kernelに俺様スケジューラをくっつけてみようという内容。データの流れがあるモデリングそのものについて書かれた本。スタート地点がSystemCというだけで、C/C++のI/Fがあるシステム(RTOS等)でも同じようなことができそう。最初はアナデジとかを期待したのですが、全然そうではなく、デジタルシステムのスケジューラの俺様実装と、SystemC Kernelとの共存について書かれてある。どちらかというと、RTOSの実装に近いものがある。全然完成している気配が無く、ここまでやって時間切れでしたという感じ。

この本で価値を感じたのは3箇所。1つめが序文。モデリングに関する歴史や、現状について幅広く書かれている。HDLの延長くらいに、SystemCをとらえていた自分には大変おもしろく読めました。2つめは巻末にまとめられている、それらに関する文献情報。最後がApependixの、QuickThreadsの詳細。Processを作るときに、どういう事が行われているかを詳しく書いてある。ただ、Systemc 2.0.1なのでいまも同じなのかどうかは怪しい。

# 別の表現を使うと「本文以外の場所」になる :-)

SystemC自体にどうのこうのという内容ではないので、SystemCを勉強したい人は読まなくて良い。むしろ、アカデミックにモデリングとかに興味がある人にお勧め。つまらない本では無いですよ。

| | Comments (3) | TrackBack (0)

2007.03.14

SystemC Kernel Extensions for Heterogeneous System Modeling

SystemCのKernelに手を加えて、アナログ等の混在シミュレーションをしよう、さらに高速化しようっていう本。System Design With Systemcのように完結した本でなく、「こういうのやってみたけどどうよ?」って内容の本。
序文からTuring Machineや、Lambda-Calculusという単語が出てきて結構熱い。名前だけだとHaskellも出てくる。知らなかったのだが、もともとModelingという分野がすでにあって、Ptolemyというのが業界で一番有名らしい。これもオープンソースか。時間があれば見ておきたい。

Haskellもそうなのだが、Lambdaと言えばLisp。LispとSystemCには共通点がある。どちらも、広義のCumputerをModelingしているという点だ。はやくSICPを読もう。Common Lispはそこそこの勉強にして、Schemeの本が届き次第Schemeに切り替え、SICPの世界に飛び込もう。何か、自分の勉強していることが繋がった気がする。

| | Comments (4) | TrackBack (0)

2007.03.12

HP200LXでScheme 続き

博多、京都 往復の新幹線の中で、ぽちぽちと打ち込みながら勉強中。
http://www.sampou.org/scheme/t-y-scheme/t-y-scheme.html
を見ながら勉強中。vectorから動かないので、ちょっときついな。

http://www.sampou.org/scheme/t-y-scheme/t-y-scheme-Z-H-15.html#node_chap_13
call/ccはただのループ脱出で良いのか・・・。

http://www.sampou.org/scheme/t-y-scheme/t-y-scheme-Z-H-16.html#node_chap_14
ここのambの解説を見て、電車の中でうなる。
クレタ人問題を解く手段を、言語レベルで用意しているのか。

schemeの実装がサブセットなのと、エディタとschemeが同時に動かないのが今となってはきつい。やっぱりリナザウが欲しい。

| | Comments (0) | TrackBack (0)

DB-J260

博多で実物を見る。
思っていたより若干大きい。それは許容範囲だが、肝心の辞書引きのレスポンスが悪すぎる。PalmのMobipocketの辞書引きより使いにくい。デフォで、OALDとか、ジーニアスとか設定できなかったのかな。残念ながら専用機ならではの使いやすさが、追求されていないと思いました。

買って応援したい気持ちも有るけど、今回は見送ります。

| | Comments (0) | TrackBack (0)

子育て日記

日曜日は、娘と自転車でお買い物。
自転車に乗ると、「イェーイ、イェーイ、イェーイ、イェーイ、はじめてみるものなんだ」を歌うのがお気に入り。
駅前には、タクシーやらバスやらいっぱいあるので
タクシー、タクシー☆
バス、バス☆
とジャスラックにおびえながら買い物へ。ときどき、駅前に中学生がたむろっていると小さな声で、(ふりょう、ふりょう)と歌っています。

今の心境は、こんな感じかな。
イェーイ、イェーイ、イェーイ、イェーイ、はじめてみるものなんだ
えすしーえくすぽーと、えすしーえくすぽーと、

ブログなつたんは、子育てとSystemCを(ry

| | Comments (0) | TrackBack (0)

今日のメモ

undefined reference to `vtable
のエラーが出たとき、make cleanをしてみよう。

ここみて鼻血がでそうになった。楽しそうだなぁ。
http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-001Spring-2005/CourseHome/index.htm

| | Comments (0) | TrackBack (0)

2007.03.05

HP200LXでScheme

Common Lispを勉強中だが、まとまってPCの前に座る時間がとれない。本だけ読んでもさっぱりわからない、というわけでどこでもLispを勉強できる環境が欲しい今日この頃。リナザウとか買えたら、Lispだろうが、SystemCだろうが、なんでもありなんだがと悩んでいると天の声が。

Linuxが駄目ならDOSを使えばいいじゃない☆

そして、Webの海を巡回し、KI-SCHEMEなるものを見つける。9801用らしいが、DOS窓で動かしたらちゃんと動く。そして、自慢のHP200LXに入れる。キタコレ、最強のSchemeマシーンじゃね?

| | Comments (3) | TrackBack (0)

AVM TLM

3章は読むだけ。
4章でついにTLMへ。

systemc メモ
error: multiple types in one declaration

エラーが出た上のファイルでclass宣言が;で終わっていない。
#include を展開した後、

class a
{
}

class b
{
};

class aの後に;が無いと、class bの所でこのエラーになる。
エラーを見ても、落ち着いて処理できるようなった今日この頃。

sc_exportなるキーワードを発見、もやもやしているsc_interfaceの理解につながりそうだ。sc_exportは、System Design with SystemCには載っていなくて、Ground upの方に載っている。読んでみよう。

| | Comments (3) | TrackBack (0)

2007.03.01

今日のLisp

ハッカーと画家に影響を受けてLisp勉強中

SICPを本屋で見かけたので買う。意外に薄い。Amazonでは訳が酷いと書いてあったが、実物読むとそうでもなかった。

Scheme関連の本を3冊 Amazonで買う。
・The Little Schemer
・The Seasoned Schemer
・The Reasoned Schemer
の3部作。

ANSI Common Lispを読みながらプログラムを打ち込む。
再帰構造は普通にかけるんだが、値を戻して求められる結果にするところが難しい。なんでもありのアセンブラで書いている感覚に近い。cons と list とappend が使い分けられない。コードにそのままテスト環境を書いて、テストしていく過程は面白い。これは間違いなくIDEだ。

ここもおもしろい
http://www.aoky.net/articles/steve_yegge/tour_de_babel.htm

| | Comments (2) | TrackBack (0)

AVM カウンター

Advanced Verification Methodologyクックブック 第2章。
いろいろあったけど、カウンター動きました。

gtkwaveの見た目が変わっていてびっくり。Show allのボタンが
付くだけでこんなに使いやすくなるなんて。


SystemC 2.1.v1 --- Feb 25 2007 08:54:25
Copyright (c) 1996-2005 by all Contributors
ALL RIGHTS RESERVED
WARNING: Default time step is used for VCD tracing.
q = 0 count = 0
q = 0 count = 0
q = 0 count = 0
q = 0 count = 0
q = 0 count = 0
q = 1 count = 1
q = 2 count = 2
q = 3 count = 3
q = 4 count = 4
q = 5 count = 5
q = 6 count = 6
q = 7 count = 7
q = 0 count = 0
q = 1 count = 1
q = 2 count = 2
q = 3 count = 3
q = 4 count = 4
q = 5 count = 5
q = 6 count = 6


こんな感じで、SystemCモデルと、C言語が一致していることを確認できます。ソースファイルはこちら

wireのassign相当の部分は、それぞれSC_METHODを書いて解決。

void counter::update(void)
{
sc_uint < 3 > q_out;

q_out[0] = q_0.read();
q_out[1] = q_1.read();
q_out[2] = q_2.read();

bool t_tmp = q_out[0] && q_out[1];

t_2.write(t_tmp);
q.write(q_out);
}

void counter::init(void) {
const_true.write(true);
}

そんなことより、SystemCモデルと、C言語の期待値を比較するってほとんど意味なくね?
HDL、C、プロト、実機とか、違うテクノロジー間の方がすごく意味があると思うな。

| | Comments (4) | TrackBack (0)

AVM 続き

なんとか試行錯誤して、2bitのカウンターの作成に成功。
3bitに拡張して、AVMに持って行こう。

なんか、エラーの原因がわからない事があるので、debugオプションをつけてカーネルを作り直すことに。cygwinだと、make pthreads_debugでOK。

noboshemon さんの後追いばかりしている気がする。

| | Comments (2) | TrackBack (0)

SystemCのお勉強

出張中、SystemCの環境が無かったので、もう一回、System Design with SystemCを読み直す。

・interfaceまとめ
全てのinterfaceは、sc_interfaceを継承する。このbase classが、register_port()の仮想関数を用意していて、portがchannelに接続されるときに、この関数が呼ばれる。

・portまとめ
全ての種類のportは、対応するinterfaceを記載(specify)する必要がある。sc_portの最も重要なmethodは、interfaseへのポインターを返すoperator->()。(the interfaceだから、ポートに関連つけられたinterfaceの事だろう)C++の力で、sc_portから直接interfaceのmethodを呼び出すことができる。

・channelまとめ
channelは、機能の実装方法を記述している。一つのinterfaceに違う実装がある反面、channelは複数のinterfaceを実装してもよい。例えば、sc_signalは、inとin_outの両方を実装している。

Primitive channelは、request-updateをサポートしている。全てのprimitive
channel はsc_prim_channelを継承し、request_update()と、update()の仮想関数を引き継ぐ。request_update()はスケジューラのupdate queueにchannelを
入れ、updateのタイミングで、update()が呼ばれる。sc_signal、sc_fifo、sc_mutexがprimitive channel。

次はchapter 7 Interface and Channel Designをもう一回読もう。

| | Comments (0) | TrackBack (0)

« February 2007 | Main | April 2007 »