<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<rdf:RDF
 xmlns="http://purl.org/rss/1.0/"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xml:lang="ja"
>
<channel rdf:about="http://www.wasamon.net/miyo/index.cgi?action=LIST">
 <title>Miyo&apos;s Page</title>
 <link>http://www.wasamon.net/miyo/index.cgi</link>
 <description>Miyo&apos;s Page</description>
 <dc:language>ja</dc:language>
 <dc:date>2010-09-02T19:11:38+09:00</dc:date>
 <items>
  <rdf:Seq>
   <rdf:li rdf:resource="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D9%2D2" />
   <rdf:li rdf:resource="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D9%2D1" />
   <rdf:li rdf:resource="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D31" />
   <rdf:li rdf:resource="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D27" />
   <rdf:li rdf:resource="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D28" />
   <rdf:li rdf:resource="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D23" />
   <rdf:li rdf:resource="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D22" />
   <rdf:li rdf:resource="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D21" />
   <rdf:li rdf:resource="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D20" />
   <rdf:li rdf:resource="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D14" />
   <rdf:li rdf:resource="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D11" />
   <rdf:li rdf:resource="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D5" />
   <rdf:li rdf:resource="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D3" />
   <rdf:li rdf:resource="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D4" />
   <rdf:li rdf:resource="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D10" />

  </rdf:Seq>
 </items>
</channel>
   <item rdf:about="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D9%2D2">
    <title>Diary/2010-9-2</title>
    <link>http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D9%2D2</link>
    <description>!Ubuntu 10.04/VAIO Type Pでサスペンド
Ubuntu 10.04をVAIO Type Pにインストールして数日．
蓋の閉め/開けで，サスペンド/レジュームできなくて
わりと不便だった．
で，他のディストリビューションはどうなのかなとしらべてみたら
Gentooでの解決索が
http://garin.jp/doc/機種別/vaio_type_p/sleep
にスクリプトがのっていたので，さっそく真似してみた．
...と無事サスペンド/レジュームができるように．

で，蓋の閉め/開けで動作するように，
 mv /usr/sbin/pm-suspend /usr/sbin/pm-suspend.old
 ln -s /usr/sbin/sleep-mode.sh /usr/sbin/pm-suspend
とか．

!細々と
した雑用をかたづけたり...

</description>

    <dc:date>2010-09-02T19:10:29+09:00</dc:date>

   </item>
   <item rdf:about="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D9%2D1">
    <title>Diary/2010-9-1</title>
    <link>http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D9%2D1</link>
    <description>!気づいたら
もう，9月なんだなあ．
電通大にきて丸5ヶ月が経過...むぅ．

!高尾山
研究科の先生方の飲み会について高尾山はビアガーデンへ．
3300円で2時間飲み/食べ放題．
たこやき器があったり，自分で網でウィンナ焼けたり．
ビールも種類が多数あり，なかなかなの充実っぷりでした．

</description>

    <dc:date>2010-09-02T17:52:44+09:00</dc:date>

   </item>
   <item rdf:about="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D31">
    <title>Diary/2010-8-31</title>
    <link>http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D31</link>
    <description>!早稲田笠原/木村研を訪問
してきました．
本題は，SWoPPのときに林さんに持ちかけた
Bluespecについて話しをするということでしたが，
折角の機会なので研究室をいろいろとみせていただいたりも．
OSCARの実機，恰好よくていいなあ，とか
いわゆる液晶ディスプレイに表示されるデモは見栄えがいいなあ，とか
POWER6使わせてくれないかなあ，とか
そんな感想．

発表資料 → {{ref bluespec_waseda.pdf}}

ちなみに，夜は，沖縄料理屋さんの近くの
ホルモン焼き屋さんに連れていってもらいました．

!たんたんめん
松岡研の丸山さんと．
ひさしぶりすぎて食べ方を忘れていて咳こんでしまいました．
お土産ラー油を調達したので，しばらくは大丈夫...かも．


</description>

    <dc:date>2010-09-02T17:51:39+09:00</dc:date>

   </item>
   <item rdf:about="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D27">
    <title>Diary/2010-8-27</title>
    <link>http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D27</link>
    <description>!VAIO type P
研究室にあったVAIO type PにUbuntuをインストール．
特に何も考えずに，Netbook Editionではない，普通の方．
GMA500用のドライバいれて，とりあえず快適に使えるように．
サスペンドはうまくいかないのかなあ...

</description>

    <dc:date>2010-09-02T17:10:22+09:00</dc:date>

   </item>
   <item rdf:about="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D28">
    <title>Diary/2010-8-28</title>
    <link>http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D28</link>
    <description>!弟の結婚式
でした．
明治神宮での挙式，
たくさんの観光客にみまもられながらの結婚式．
なかなか貴重な経験をさせていただきました．
弟夫婦プレゼンツな中華の食事会のコースは，
フカヒレに「寿」の文字がはいっているなど粋な演出もあり，
もちろん，味はたいそう美味でした．
また，新婦さんの親戚には，うちの長男がしっかり遊んでもらって...
ありがたいかぎりです．

</description>

    <dc:date>2010-08-28T22:22:03+09:00</dc:date>

   </item>
   <item rdf:about="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D23">
    <title>Diary/2010-8-23</title>
    <link>http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D23</link>
    <description>!一言メモ
* サブディスプレイもどきとして使っているiPadにマウスとばしたりクリップボード共有したりしたいな．できないかな． (Mon Aug 23 11:47:00 2010 +0900)
* 夏はコーヒーよりお茶がおいしい (Mon Aug 23 11:46:11 2010 +0900)
* 乾杯をはじめてCDで聞いた。カラオケとか結婚式会場で聞いていたときの印象と全然ちがくてびっくりした (Mon Aug 23 10:04:06 2010 +0900)

</description>

    <dc:date>2010-08-23T11:47:03+09:00</dc:date>

   </item>
   <item rdf:about="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D22">
    <title>Diary/2010-8-22</title>
    <link>http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D22</link>
    <description>!ハンバーガー
ジャクソンホールのハンバーガー食べた．
肉汁たっぷりのいい本物の(？)ハンバーガーでした．
上手に食べれなくて，盛りつけられていた
バスケットを汚してしまったのは秘密です．

!NetBSDでの関数名の衝突？
NetBSDのusers mlに流れていた
http://mail-index.netbsd.org/netbsd-users/2010/08/22/msg006744.html

 #include &lt;stdio.h&gt;
 #include &lt;stdlib.h&gt;
 
 void write(void)
 {
         exit(3);
 }
 
 int main(void)
 {
         puts(&quot;hello&quot;);
 
         return 0;
 }

たしかに，MacOSX(10.4.0)，FreeBSD(8.0-RELEASE)，Linux(2.6.26-2-xen-amd64)では
helloって表示される一方で，NetBSD 5.0.2では，ステータス3で実行が終了する．
あとは，
http://mail-index.netbsd.org/tech-toolchain/2010/08/22/msg001358.html
で話が続くのかな？

</description>

    <dc:date>2010-08-23T10:02:53+09:00</dc:date>

   </item>
   <item rdf:about="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D21">
    <title>Diary/2010-8-21</title>
    <link>http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D21</link>
    <description>!x86勉強会
行ってきた．楽しかった．
やっぱり楽しくモノ作っている人は素敵だなあ，とか．

</description>

    <dc:date>2010-08-22T11:33:44+09:00</dc:date>

   </item>
   <item rdf:about="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D20">
    <title>Diary/2010-8-20</title>
    <link>http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D20</link>
    <description>!Bluespecでsort
そういえば[Bluepsecデザインコンテスト|http://www.cybernet.co.jp/bluespec/contest/]向けに書いたソート回路を
公開しようと思って忘れていた．

::トップモジュール
{{ref TbSort.bsv}}


::普通のソート
{{ref Bsort.bsv}}
サンプルで示されているバブルソートは，入力が5に固定されている．
より柔軟に活用可能なモジュールにするため，
インスタンス時に入力サイズをパラメタで指定できるように修正する．
具体的にはBubSort_ifcにサイズを指定できるよう以下のように変更を加えた．
 interface BubSort_ifc#(type size_t);
    method Action start(Vector #(size_t, int) a);
    method Vector#(size_t, int) result();
 endinterface
また，ルールを生成する部分のイタレーションの定数を，型から値を取り出すvalueOfを使用することで，
    for(Integer i = 0; i &lt; valueof(size_t) - 1; i = i + 1) begin
       rule swap((x[i] &gt; x[i+1]));
          x[i] &lt;= x[i + 1];
          x[i+1] &lt;= x[i];
       endrule
    end
と修正した．これによりモジュールをインスタンス化する時に，
 BubSort_ifc#(5) sort &lt;- mkBubSort();
などのように入力するデータの個数を指定できるようになった．

::基数ソート
{{ref Radix.bsv}}
基数ソートは，ソートアルゴリズムの一つで，データをキーに分類して順にソートする．
各キーをソートするアルゴリズムの計算量がO(n)であるとき，基数ソートの計算量はO(nk)であり，
逐次プロセッサで実行する場合には高速なアルゴリズムである．
VerilogやVHDLでは，各ステップを処理する状態を明示的に管理する必要があるが，
Bluespecでは，FSMクラスを用いることで容易に実装することができる．

基数ソートでは，データをキーに分類し，各キー毎にソートする．
今回は，入力データを4bit桁毎に分類する．すべてのキーに対して処理を順次行う必要があるため，
バブルソートと違い，入力データの幅が必要になる．
従って，次のように入力データの個数数size_tとその幅widthをパラメタに取るモジュールとして定義する．
ただし，簡単のため，入力データの幅は4の倍数で与えられることを仮定する．
 interface RadixSort_ifc#(type size_t,
 	                  numeric type width);
    method Action start(Vector#(size_t, int) a);
    method Vector#(size_t, int) result();
 endinterface
全てのキーに対してソートを実行するステートマシン(外側ステートマシン)と，
各キーに対するソートを行うステートマシン(内側ステートマシン)の二段階で構成する．

○ 外側ステートマシン
外側ステートマシンの定義は次の通り．ここでfsm1は，各キーのソートを行うステートマシンであり，
すべてのキーをソートしおわるまで，内側ステートマシンを起動し続ける．
    Stmt radix_seq = seq
                        while(base &lt; fromInteger(valueOf(width)))
                           fsm1.start();
                        end_flag &lt;= True;
                     endseq;
    FSM fsm0 &lt;- mkFSM(radix_seq);
○ 内側ステートマシン
全体の計算量をO(kn)にするためには，各キーをソートする内側ステートマシンは，
計算量O(n)のものを選ぶ必要がある．バブルソートでもよいが，
ここでは，Bluespecでの記述の容易性をみるため，少し複雑なバケットソートを定義してみる．
バケットソートの各手順をfunctionとして定義することで，ステートマシンは次のように記述できる．
    Stmt sort_seq = seq
                       countElement();
                       setElementOffset();
                       for(index &lt;= 0;
                           index &lt; fromInteger(valueOf(size_t));
                           index &lt;= index + 1)
                       doSortBody();
                       clean_called.send();
                    endseq;
    FSM fsm1 &lt;- mkFSM(sort_seq);

::逐次版・基数ソート(入力データの個数に回路規模が比例しない版)
{{ref RadixSeq.bsv}}
基数ソートの実装に用いたバケットソートでは，各バケットの個数の数え上げを次のように実装していた．
これは，入力データ数size_tが大きくなると，回路サイズが大きくなることが懸念される．
そこで，これを入力データを逐次的に検査するように明示的に記述することで，
与えられたデータの個数に比例して回路サイズが増大することを防止する
「逐次版・基数ソート」を実装することを考える．
   function countElement();
      action
         int sum = 0;
         for(int i = 0; i &lt; fromInteger(16); i = i + 1) begin
            sum = 0;
            for(Integer j = 0; j &lt; valueof(size_t); j = j + 1) begin
               if(((src[j] &gt;&gt; base) &amp; &apos;hF) == i) sum = sum + 1;
            end
            count[i] &lt;= sum;
         end
      endaction
   endfunction
逐次版・基数ソートでは，基数/バケットソートの処理を司さどるトップモジュールRadixSort_ifcと，
バケットソートのために各バケットの要素の数え上げを行うモジュールCountElement_ifcから成る．
ここでは，CountElement_ifcの実装方法とインスタンス化手法について述べる．

○ CountElement_ifcの実装

基数4bitつまり0〜15の値をキートする基数ソートのためのバケットソートでは，
0〜15までの各バケットに相当する値の個数をカウントする必要がある．
そこであるバケットに対する個数をカウントするための
 interface CountElement_ifc#(type size_t);
    method Action start(Vector#(size_t, int) a, int idx, int bs);
    method int result();
 endinterface
なるモジュールを定義する．
size_tは入力変数の個数である．startメソッドが数え上げを実行するためのメソッドであり，
担当するバケットの値をindexにセットし，次のステートマシンを起動することで逐次的に数え上げを実行する．
    Stmt stmt
    = seq
         end_flag &lt;= False;
         for(i &lt;= 0; i &lt; fromInteger(valueOf(size_t)); i &lt;= i + 1)
            if(((src[i] &gt;&gt; base) &amp; &apos;hF) == index)
               count &lt;= count + 1;
         end_flag &lt;= True;
    endseq;
    FSM fsm &lt;- mkFSM(stmt);
入力されるデータの個数であるsize_tまで逐次的にカウンタをインクリメントするため，
この回路サイズは入力されるデータの個数によらず一定である．

○ CountElement_ifcのインスタンス化
各バケットに対応する個数をカウントするため，
0〜15までに対応するCountElement_ifcのインスタンスが必要である．
そこでトップモジュールであるRadixSort_ifcで，
    Vector#(16, CountElement_ifc#(size_t)) count &lt;- replicateM(mkCountElement());
としてインスタンス化する．
これにより，16個のCountElement_ifcをインスタンス化する記述を一つに簡略化できる．
また，数え上げを実行するには，Vectorでは各要素に[i]などとしてアクセスすることができる．
この添字アクセスして得られる値は，型CountElement_ifcのインスタンスであるから，
メソッド呼び出しができる．つまり，次のようにforループで簡潔な記述ができる．
          for(Integer i = 0; i &lt; 16; i = i + 1) begin
             count[i].start(readVReg(src), fromInteger(i), base);
          end

!一言メモ
* iPhone Applicationの講義資料か．http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter (Fri Aug 20 15:37:24 2010 +0900)


</description>

    <dc:date>2010-08-20T18:07:34+09:00</dc:date>

   </item>
   <item rdf:about="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D14">
    <title>Diary/2010-8-14</title>
    <link>http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D14</link>
    <description>!KindleとiPad
Kindleの方が読みやすいけど，DropBoxと連携できるiPadの方が手軽...
というジレンマ．
ちなみに，Kindleではページめくりが億劫なので，
PCと併用するときには，図やrefを辿るときはPCで見たりも．

!一言メモ
* gnomeで移動中にウィンドウの内容を表示しないワイヤフレームモード．ここにあったか．/apps/metacity/general/reduced_resource (Sat Aug 14 23:47:57 2010 +0900)


</description>

    <dc:date>2010-08-14T23:48:19+09:00</dc:date>

   </item>
   <item rdf:about="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D11">
    <title>Diary/2010-8-11</title>
    <link>http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D11</link>
    <description>!一言メモ
* もう一回Xenの環境構築．http://www.cozmixng.org/~rwiki/?cmd=view;name=Xen (Wed Aug 11 19:50:24 2010 +0900)
* やっぱり，音を気にして組まれていないマシンは五月蝿いなあ... (Wed Aug 11 16:57:03 2010 +0900)
* PentiumDってEM64Tだったのか．http://ja.wikipedia.org/wiki/Intel_64 (Wed Aug 11 16:06:42 2010 +0900)
* ベクタ画像か．http://toshiiy.blog22.fc2.com/blog-entry-118.html (Wed Aug 11 14:55:52 2010 +0900)
* あとで読む．Beyond Locks and Messages: The Future of Concurrent Programming http://bartoszmilewski.wordpress.com/2010/08/02/beyond-locks-and-messages-the-future-of-concurrent-programming/ (Wed Aug 11 10:07:17 2010 +0900)


</description>

    <dc:date>2010-08-11T19:50:27+09:00</dc:date>

   </item>
   <item rdf:about="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D5">
    <title>Diary/2010-8-5</title>
    <link>http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D5</link>
    <description>!SWoPP三日目
CPSYのI/Oがバラエティに富んだセッションで(座長をしていて)楽しかった．

</description>

    <dc:date>2010-08-11T10:10:16+09:00</dc:date>

   </item>
   <item rdf:about="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D3">
    <title>Diary/2010-8-3</title>
    <link>http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D3</link>
    <description>!SWoPP
一日目，暑い．
自分の発表だん．
発表スライド:コンパイラとランタイムによるソフトウェアキャッシュの更新オーバヘッド隠蔽手法
{{ref swopp2010.pdf}}


</description>

    <dc:date>2010-08-11T10:09:00+09:00</dc:date>

   </item>
   <item rdf:about="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D4">
    <title>Diary/2010-8-4</title>
    <link>http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D4</link>
    <description>!SWoPP二日目
OSのセッションが楽しい．

</description>

    <dc:date>2010-08-11T00:10:37+09:00</dc:date>

   </item>
   <item rdf:about="http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D10">
    <title>Diary/2010-8-10</title>
    <link>http://www.wasamon.net/miyo/index.cgi?page=Diary%2F2010%2D8%2D10</link>
    <description>!一言メモ
* ここを参考に，autoconfを2.65にしてinstallした．https://trac.macports.org/ticket/25509 (Tue Aug 10 18:54:47 2010 +0900)
* port install pTeXとかしたら，xorg-libXpでコケる... (Tue Aug 10 15:38:50 2010 +0900)


</description>

    <dc:date>2010-08-10T18:54:53+09:00</dc:date>

   </item>

</rdf:RDF>
