history

青木日記 RSS

<前の日 | この月 | 次の日>

2004-08-18

TD4制作記 #6.1 レジスタ + セレクタ + ALU

(たぶん半年くらい前の記録です)

ようやく楽しい CPU 本体がやってきた。

どこからつないだものかな。 まず 5V と GND を全部つないでおくのは前提としよう。 んで IC は配線面から見て下図のように並んでいるのだが、

PC           I/O            regB          regA
161          161            161           161
                                                         ←隙間A (bit0-3,CK,RST)
 
ALU                         selectB       selectA
283                         153           153
 
                                                         ←隙間B
             carry          decodeNOT     decode3AND
             74             32            10

まずクロックとリセットは部品面でつないでしまうことにする。 この二つはほとんど隙間 A にあるのだが、 ここにはレジスタと ALU をつなぐループ回線もあるので非常に混雑している。 そこで裏表を両方使えばリード線本数を根本的に減らせるわけだ。

ということはクロックとリセットを先につながなければならないことが 自動的に決定するわけだ。

TD4制作記 #6.2 パスコン

しまったー! パスコン付けるの忘れてた!

つけた。配線がちょっとじゃま。

TD4制作記 #6.3 RST / CLK

(ここに半年くらいのタイムラグが)

ということはクロックとリセットを先につながなければならないことが 自動的に決定するわけだ。

とか書いてあるのにつながってないじゃないかよ! 4 ビット分の配線が邪魔すぎる……。

いいんだよ回路さえつながってれば!

(17:33)

Alpha EV7z

http://slashdot.jp/article.pl?sid=04/08/18/0136227&topic=25

これで終わりか……。

(17:38)

BitChannelバグ取り

http://dontstopmusic.no-ip.org/diary/20040815.html#p02

新しいページを作るときにエラーになるバグを修正しました。

自分とこでは HEAD を使ってないのがバレバレだな。 こないだの大改造はそろそろ安定したはずだし、うちもアップデートするか。 → した。

いいかげん 0.3 を出すか。 よし、DS20 のパッチ当てが終わったらやろう。

(18:02)

BitChannel / 日本語ページ名

http://i.loveruby.net/d/20040817.html#c01

日本語ページ名ですか……。うーん。

まず、なぜ日本語ページ名が実装されないかと言えば仕様が決まらないからです。 単に○○を実装すればよいと決まってればとっくに実装してます。 そこのところを御理解ください。

あと、設定で選択ってのは最後の手段にしたいです。 特にページ名は互換性がからむので、 設定を変えたらページが見えなくなる可能性があるからです。

いやそれでも自分とこだけでもなんでもいいから実装したいということならば、 bitchannelrc で実装してください。 そのときに再定義しやすいようにコードのここを変えてくれとかいう話なら できるだけ対応しましょう。

(18:28)

ruby test/drb on Tru64UNIX (1)

なんかもうわけがわからなくなってきたんだが、 いったん現状をまとめる。

発生しているエラーは Error と Failure でパターンが分かれていて、 F がこうなり

  1) Failure:
test_03(TestDRbSSLCore) [/usr/users/aamine/src/ruby/test/drb/drbtest.rb:132]:
<ArgumentError> exception expected but was
Class: <Errno::ECONNRESET>
Message: <"Connection reset by peer">
---Backtrace---
/usr/local/lib/ruby/1.9/drb/drb.rb:878:in `close'
/usr/local/lib/ruby/1.9/drb/drb.rb:878:in `close'
/usr/local/lib/ruby/1.9/drb/ssl.rb:170:in `close'
/usr/local/lib/ruby/1.9/drb/drb.rb:1108:in `close'
/usr/local/lib/ruby/1.9/drb/drb.rb:1090:in `open'
/usr/local/lib/ruby/1.9/drb/drb.rb:1014:in `method_missing'
/usr/users/aamine/src/ruby/test/drb/drbtest.rb:133:in `test_03'
/usr/users/aamine/src/ruby/test/drb/drbtest.rb:132:in `assert_raise'
/usr/users/aamine/src/ruby/test/drb/drbtest.rb:132:in `test_03'
---------------

E がこうなる。

  5) Error:
test_08_here(TestDRbSSLCore):
NoMethodError: undefined method `stop_service' for nil:NilClass
    /usr/users/aamine/src/ruby/test/drb/drbtest.rb:72:in `teardown'

また、全テストを一度に動かすとエラー件数はこんな感じなのだが、

tunami.loveruby.net ruby 1.9.0 (2004-08-09) [alphaev6-osf5.1b]
openssl 0.9.6g
    #1 1495 tests, 10614 assertions, 3 failures, 37 errors
    #2 1495 tests, 10613 assertions, 3 failures, 37 errors
openssl 0.9.7d
    #1 1495 tests, 10623 assertions, 4 failures, 37 errors
 
as500.loveruby.net ruby 1.9.0 (2004-08-09) [alphaev56-osf5.1b]
openssl 0.9.6g
    #1 1495 tests, 10613 assertions, 1 failures, 37 errors
    #2 1495 tests, 10616 assertions, 0 failures, 37 errors

test_drb*.rb を一つずつバラで動かすと test_drbssl.rb だけが失敗し、 エラーの数が減る。

    #1 20 tests, 34 assertions, 3 failures, 4 errors
    #2 20 tests, 34 assertions, 3 failures, 4 errors

また全テストを動かしたときは drb プロセスが生き残っている。

  ~/src/ruby/test % ps ax | grep ruby
   41799 pts/1    I        0:00.11 ruby /usr/users/aamine/src/ruby/test/drb/ut_safe1.rb druby://tunami.loveruby.net:3172 ut_safe1.rb
   41803 pts/1    I        0:00.11 ruby /usr/users/aamine/src/ruby/test/drb/ut_array_drbunix.rb druby://tunami.loveruby.net:3172 ut_array_drbunix.rb
   41808 pts/1    I        0:00.12 ruby /usr/users/aamine/src/ruby/test/drb/ut_drb_drbunix.rb druby://tunami.loveruby.net:3172 ut_drb_drbunix.rb

ソケットもたくさん……

  ~/src/ruby/test % ls /tmp
  druby10030.0  druby10340.0  druby39894.0  druby40240.0
  druby10037.0  druby25704.0  druby39906.0  druby41803.0
  druby10333.0  druby25711.0  druby40233.0  druby41808.0

さらに、ログを取ろうと思ってリダイレクトすると ruby が SEGV する。

(ladebug) where
>0  0x3ff800e93f8 in __kill(...) in /usr/shlib/libc.so
#1  0x3ff80213190 in UnknownProcedure18FromFile10(...) in /usr/shlib/libc.so
#2  0x3ff8013bfd4 in __tis_raise(...) in /usr/shlib/libc.so
#3  0x3ff801c97c8 in abort(...) in /usr/shlib/libc.so
#4  0x120057ee0 in rb_bug(fmt=0x1400088f8="Segmentation fault") "/usr/users/aamine/src/ruby/error.c":214
#5  0x1200a7374 in sigsegv(sig=11) "/usr/users/aamine/src/ruby/signal.c":446
#6  0x3ff800d5b40 in __sigtramp(...) in /usr/shlib/libc.so
#7  0x3ff80205964 in UnknownProcedure14FromFile22(...) in /usr/shlib/libc.so
#8  0x1200509f4 in obj_free(obj=5391766328) "/usr/users/aamine/src/ruby/gc.c":1153
#9  0x120050380 in gc_sweep() "/usr/users/aamine/src/ruby/gc.c":1026
#10 0x120050fc8 in rb_gc() "/usr/users/aamine/src/ruby/gc.c":1390
#11 0x12004f408 in rb_newobj() "/usr/users/aamine/src/ruby/gc.c":380
#12 0x12005ac58 in str_alloc(klass=5369351944) "/usr/users/aamine/src/ruby/string.c":44
#13 0x12005af50 in str_new3(klass=5369351944, str=5382187920) "/usr/users/aamine/src/ruby/string.c":120
#14 0x12005b00c in rb_str_new3(str=5382187920) "/usr/users/aamine/src/ruby/string.c":135
#15 0x12002a930 in rb_eval(self=5397852672, n=0x140cdab68) "/usr/users/aamine/src/ruby/eval.c":3610

環境は以下の通り。

  • ruby CVS HEAD 2004-08-09, 1.8.2 preview 2
  • openssl 0.9.6g, 0.9.7d
  • ccc 6.5 011
  • Tru64UNIX 5.1B

いま OS にパッチキットを当ててるので、 そのあとでもう一回試してから dev に報告する予定。

ああそうか、このさい gcc で起こらなければあきらめるというのも手だな。 gcc も試してみよっと。

(19:34)

ruby test/drb on Tru64UNIX (2)

通った! やったー!

勝利の瞬間

tunami:~/obj/ruby-g % ./ruby -I./.ext -I./.ext/alphaev6-osf5.1b ~/src/ruby/test/runner.rb ~/src/ruby/test/drb/test_*.rb
Loaded suite [/usr/users/aamine/src/ruby/test/drb/test_acl.rb,
/usr/users/aamine/src/ruby/test/drb/test_drb.rb,
/usr/users/aamine/src/ruby/test/drb/test_drbssl.rb,
/usr/users/aamine/src/ruby/test/drb/test_drbunix.rb]
Started
...................................................
...................................................
......
Finished in 52.285745 seconds.
 
108 tests, 447 assertions, 0 failures, 0 errors

まあ、代わりに openssl で落ちるようになりましたけどね。

(22:02)

RHG読書会reloaded #12 予告

今週末 21 日 (土) に開催です。 今回は場所がいつもと違うので要注意。

(04:19)

本日のツッコミ(全4件) [ツッコミを入れる]
なかむら(う) (2004-08-18 22:47)

うう、うちのNetBSD(もちろんgcc)でも
 NoMethodError: undefined method `stop_service' for nil:NilClass
が出るので、あおきさんのデバッグにひそかに期待してたのですが…… orz

青木 (2004-08-19 04:37)

む、他のOSでも起きるんですか。
何が共通点なのかなあ。

なかむら(う) (2004-08-19 13:24)

複数のプロセスが実行されているときに、どっちかのプロセスでエラーが出たらnilになるのかなあ、とかまでは考えました。

anonyomous (2004-08-19 17:22)

kakasi対応した。


* [[世界の中心出会いを叫ぶ]]
 ?sekainochuushindeaiwosakebu
* [[世界の中心で愛を叫ぶ]]
 ?sekainochuushindeaiwosakebu

今は反省している。

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS