だらだらと夏休みを満喫・・・というわけでもなく、暑くて夏休みはダラダラすごして終了。
実のところ、別にマルチコアCPUが特別なものというわけではない。
コスト削減のため、複数チップを一つのチップにまとめていくというアプローチは昔からある。昔は単独のチップで実装されていたI/O、割り込みコントローラ、キーボードコントローラといった機能は今ではサウスブリッジ、ノースブリッジという名前のチップに押し込められている。ビデオカードだって、統合グラフィックスという名前でノースブリッジに押し込められているのはもはや珍しくもなんともない。これだってTrio64あたりではマザーボードに独立して実装されていた。こうして、一つのチップに複数の機能が押し込められていくのは珍しいことではない。
CPUだって例外ではなくて、TimnaのようにCPU+ノースブリッジといった形で一つのチップにCPUとそれ以外を押し込めようとしたことがある。さらにさかのぼれば80486でCPUにそれまで外付けだった浮動小数点数演算器を取り込んだし、8086から80186の時にも周辺回路を取り込んだ。こうしたチップの統合についてCPUが聖域扱いされていたわけではない。
では、なぜマルチコアに入るタイミングが今なのか。これ以上クロックを上げられない、安価に性能を上げられないからだ。以前にはCeleron 300Aを使ってデュアルCPUマシンを作るというのが流行した。当時はディアルCPUによる性能向上の恩恵を受ける人は少数だったからマニア向けで終わったものの、当時から安価に性能を向上させるにはデュアルCPUのほうが適していた。今でも、Pentium 4の4GHzを1つ買うよりPentium 4の2GHzを2つ買った方が安い。何しろ4GHzで動作が保証されているPentium 4が存在しないのだから。
しかし、デュアルCPUにしたところで単一スレッドのピーク性能は変わらない。SuperPiのようなひたすらに演算するプログラムを一つだけ走らせたとしても、その性能はシングルCPUのマシンで走らせたときと大差が無い。こういうような使い方をしている限りデュアル化するメリットは無く、デュアルCeleronマシンがマニア向けで終わった理由の一つ。しかしSuperPiを2つ動かす、となると話は別。シングルCPU機では処理速度が半分に落ち込む(実際にはオーバヘッドも増えるのでそれ以下になる)けれど、デュアルCPU機ではそれほどパフォーマンスが落ちない。ピーク性能を上げるのではなく、高負荷時の性能低下を防ぐアプローチといえる。今は状況が異なり、ストリーミングで圧縮された動画をダウンロードしつつ、それをデコードして画面に表示する、ということが珍しくもなんともない。1つのCPUで全部やるよりは、デコードと表示を別のCPUに割り当てることができればパフォーマンスは改善するだろう。これを狙ったのがPentium 4のHyper Threadingだし、効果はある。
だから、並列度をあげて性能を向上しようとするならCPUを複数搭載するのが手っとり早いし安上がりだ。どうせ複数のCPUを搭載するのであれば、それを1チップにまとめてしまうのが合理的だし、これも安くつく。
それに、実のところCPUのコアというのはそれほど大きくない。Pentium 4だとヒートスプレッダに隠れているので見えないけどAthlon XPだとでかい板の真ん中に小さい半導体が載っている。アレがCPUのコアだ。さらに、あの中にはCPUのコアだけではなくて内蔵キャッシュも含まれている。NorthwoodコアのPentium 4だと総トランジスタ数は5,500万と言われている。L2キャッシュが512KBあるので、1セル6トランジスタとして512×1024×8×6、5,500万個のトランジスタのうち2,500万個ほどがキャッシュに使われている計算になる。つまりCPUの純粋なコアと呼べる部分はたったの3,000万個、54%に過ぎない。キャッシュを増やさずにコア部分だけを2つくっつけたとしても大きさは1.5倍で済む。
ふと思ったのだけど、書庫をディレクトリと見せかけつつ、書庫の中のパス情報もディレクトリとして提示するツールの場合、../../../../readme.txt というファイル名を持つファイルはどのように表示されるんだろう。
大きな書庫だとリストの取得に時間がかかるけれども、ファイル名に/が含まれているという解釈でフラットに見せた方が安全かもしれない。
利便性としては、書庫に入っている /usr/src/linux-2.6/Documentation/ディレクトリだけを展開したい、というようなこともあるだろうからフラットに提示すると使い勝手は悪そうだけども。
使い勝手と安全性のどちらを優先するかといえば安全性に決まっている。両立することはできないか。
HDD取り外してデスクトップにつなげるの面倒だったり起動用に準備していたCFがいつのまにか起動できなくなっていたり(ブートするけどドライバが読み込めなくなっててHDDにシステムの転送ができない)して放置していたのだけど、ふとCD-ROMからブートできるんじゃないかと思って試してみた。
boot: linux noprobe text hde=cdrom ide2=0x190,0x396としてみたところ、起動時に無事にKXL-808ANをCD-ROMとして認識。素晴らしい。そのまま行けるかと思ったら /sbin/loader でハングアップ。原因が思いつかないというか心当たりがありすぎて何から試していいのか見当がつかない。noprobeで行けるかと思ったんだけどなあ。
ide2=…が無ければCD-ROMは見つからないもののインストーラの画面が出てくる。テキストモードだけど。KXL-808ANと相性が悪いのかもしれない。IBMの4倍速CD-ROMドライブもあったはずだから借りてみよう。
まめからDFへ跳躍した折れは?
飛び過ぎだと思いました。逆なら解らないでも無い、って私が言うことなのか。
今までウィンドウが2つという前提条件で設計した部分があるのだけど、多画面化するにあたって、これが気に入らない。処理は使い回しているけども、内部的には割とメインウィンドウ/サブウィンドウというのを区別していて処理を単純にしていた。たとえばウィンドウを作るときにはメインウィンドウを作る処理とサブウィンドウを作る処理は分かれている。サブウィンドウは別スレッドで独立して動いていることや設定ファイルを読む必要がない、コマンドラインによる指定の形式が異なるなどの理由で分けてしまった。多画面化するにあたってもう一段抽象化して、メイン/サブの区別無くウィンドウを作る処理にしてしまいたい。実行中もメイン/サブではなくて1番目、2番目…n番目というようにしてしまって最後まで生き残ったウィンドウがメインウィンドウ、というような実装にしたい。
こうなると、ウィンドウハンドルから内部情報を求めるような仕組みが必要になる。今はメッセージハンドラで仕込んでるのだけど、ウィンドウの数だけメッセージハンドラを用意するのはバカバカしい。
インストーラでCD-ROM(Panasonic KXL-808AN/IBM CD-400)を認識させるのは諦めた。
というわけで、HDDにインストールイメージを展開してインストールすることにする。どうせ転送するためにISOイメージをCD-Rに焼くなら新しい方がいいだろうと思ってFedora Core2で試してみる。
CD-ROMからブートしてインストーラが起動、initrdを展開してmini linuxが起動するかどうか、というあたりでリブート。対応策が思いつかない。
どうせ今いじっているシステムは2.4.xなんだし、ということで諦めてFedora Core 1で試す。こちらのインストーラは動いていたから行けるはず。
テキストモードでインストールしたつもりなのに自動的にXまで入ってグラフィカルログインになってしまった。びっくりだ。
というか、特に詰まることも無く終了。ただXF86Setupが無いのが困る。
BIOSでパワーマネージメントをONにして置くとコンパイル時に固まるようだ。
ある程度まともなカーネルを作るまではPMはdisableにしていたほうがよさそう。
make menuconfigでオプションをもりもり外していくとコンパイルが通らなくて泣ける。
っていうか.config消してもエラーが出るので泣ける。
有限と微小のパンを思い出した。これだと立ち止まらなくていいよね。
make modulesで12時間かかった。これからmake bzImage。寝る。
ここまで時間がかかるとクロスコンパイル(?)環境が欲しい。Cygwin使えばWindowsからカーネル構築ができるのだろうか。
FIVAではgnomeは重すぎるのでkdeにした。それでもイライラするので使ったことが無いtwmにしたら途方に暮れたので、Blackboxというウィンドウマネージャをインストールしてみる。
Litestepみたいな感じだ。bbkeysも追加してキーボードで少しだけ操作可能にはした。しばらくこれで使ってみる。デスクトップで右クリックしたときに表示されるルートメニュー、あれをキーボードから表示させて操作できるといいのだけど。
つーか、Xを使うのは初めてだが。ターミナル呼び出せれば困らない。
bbkeysのインストール方法が解らなくて、結局動いていればいいんだろうということで ~/.Xclients に bbkeys & exec blackbox なんて書いてある。これでいいのだろうか。
かな漢字変換が動かなくなった。RedHat系は日本語入力の設定は.Xclientsとは別のファイルでやっていたと思ったのだけど違うのだろうか。ps axしてもkinput2がいないので、kinput2 -canna & bbkeys -i & exec blackbox とかしておく。
ktermでcannaが起動しない。なんでこんなところでハマるんだ、とか思ったりするけどもGoogleったらボロボロヒットするので仲間は多いようだ。私だけではないようで安心。
昨日は起動していたから何か変更したためなんだろうけど何が原因なのか解らない。実はwnnが動いていて、使わないからとwnnを止めたのが原因だったりするのだろうか。wnnよりはcannaのほうが軽いからFIVAで使うならcannaだろう、ということでwnnを復活させるという選択肢はとらない。cannaを動かすことにする。
で、調べてみるとXIMプロトコロルとkinputプロトコルとで、かな漢字変換の切り換えの主導権を持つのが異なっていて、kinputプロトコルではアプリケーション(この場合、kterm)からかな漢字変換に要求を出すのだけどXIMプロトコルではim(この場合はkinput2)が主導権を持つらしい。
それでktermのリソースを書き換えても反応が無かったわけだ。
というわけで /usr/X11R6/lib/X11/app-defaults/Kinput2 に
*KinputProtocol.XlcConversionsStartKey: Shift<Key>space
を書いて終了。
kterm -xim -km eucで・・・起動しない。あれ? kterm -km eucでは起動した。起動したからいいか。リソース名を見たらkinputプロトコルの設定みたいだし。
Fedora core 1ではXMODIFIERをどこに書いたらいいのだろう。
この辺のファイルの位置がディストリビューションごとで異なるのでよく間違える。使い込まないから覚えない、というのもあるけど。
cannaserverが止まらない。/etc/init.d/canna stop としても Cannot kill server,because server is run by another machine. と表示されてしまう。cannastatでは止まっているように見えるけどpsするとcannaserverは生きている。そのまま/etc/init.d/canna startとかするとcannaserverが増殖したのでやめた。
あとは、cannaで入力した文字が化けるのをなんとかしないと。現状でなんとかコーディングとgdbのシリアル端末としては使えるけど日記を書くことができない。でもviで日記を書くのはイヤだな。
何に使えるのかよく解らないけどAPM関連のようだったのでダウンロード
コンパイルできない。終了。というわけにもいかないというか、仕事そっちのけでソースコードを書き直してコンパイル。
そしてインストール。起動方法は相変わらず解らないままなので.Xclientsに bbapm -w & と追加。
起動しない。ターミナルから起動してみると Segmentation fault とか出る。今度こそ終了。
つーか、誰か動いている人いますか?
そういえば xemacx も Segmentation fault だして起動しない。マジでエディタが vi しか使えない。困った。
make modules に一晩かかるマシンなので xemacs をソースからコンパイルとかはしたくない。
PCカードを差しても認識しない。modprobe yenta_socketしてmodprobe dsすると動く。どうしてこれが自動実行されないのか。
/etc/init.d/pcmcia のスクリプトがおかしいようだ。 /lib/modules/preferred/pcmcia または /lib/modules/'uname -r'/pcmciaというディレクトリがあると modprobe pcmcia_core.o を実行しようとする。しかし、拡張子まで指定するとロードに失敗するためアウト。手っとり早くスクリプトから.oを消したところすんなり動いた。。
とりあえずSanDiskは認識。
以前使っていたcoregaのCardBusカード、Fether CB-TXDを使えるようにする。素晴らしいことに対応OS情報というページがあり、そのなかでlinux用のドライバもあったりした。
手間が省ける、と思ってrtl8139.cをダウンロードしてコンパイルしたらコンパイルが通らない。四苦八苦したもののどうしたものか思いつかずに諦める。
とりあえず刺してみるか、とPCカードスロットに刺したらあっさり認識してDHCPでアドレスまで拾ってきた。don't think. use.
私がインストールしたカーネルのバージョンは2.4.22なんだけども、このバージョンだと三浦さんのところにあるCS5510/5520のPITバグ回避パッチは取り込まれているようだ。たとえば、arch/i386/kernel/setup.c には 無条件にclear_bit()を呼んでいたところがあったのだけど5510/5520のときだけ呼び出すように修正されている。
FPUやcacheのwrite backを有効にするパッチは取り込まれていないように見える。CPUの判別処理が if 文から switch 文に書き直されているため一部分当たらない。Geode/MediaGXの処理のところにコピーする。
周波数変調のcpufreqは取り込まれていた。
昨日まで普通に動いていたのに、今日はUSBメモリを刺しても認識しない。modprobe usb-uhciで認識。抜いたら大量のエラーメッセージが出てびびる。こういうときは経験的に、rmmod usb-storageしてrmmod sd_mod、rmmod sg、rmmod scsi_modしてSCSIドライバをアンロードしないと二度と認識しなくなることが多い。
この動作は2.4.20でACPIが取り込まれてから解決したような気がしていたのだけど2.4.22でもダメだったか。
私自身、Libretto 30を持ち歩くことで常に850MBのHDDにアクセスできるようになって生活が変わった。ストレージの役割は「記録する、ため込む」というものから、「データを持ち運ぶ」に変化した。持ち運ぶために記録する。
現在だとWebからダウンロードするという手段もあるので、持ち運ばなければならないデータというのも減ってきたけども、光回線よりは100Base-TXで転送した方が速いし、Webにないデータもあるので持ち運ぶために記録するという用途はまだまだなくならない。
2000年頃、ローエンドPCのハードディスクの平均容量は約10GBであった。そして2001年になるとハイエンドで100GB超への到達が意識されるようになり、MaxtorからBig Drive規格が提案された。そして2003年以降にローエンドで約40GB、ハイエンドで約300GBとなって以来、ここ1年ほど停滞しているようである。
まあ、通常はこの程度あれば充分、ということでしょう。それにハイエンドというか大容量が必要なら複数台のHDDを接続すればよいので1台で大容量を賄う必要性が薄いというのも要因かもしれません。
このシナリオはiPodの大容量化によって覆されていく可能性は十分にある。ノートPCしか持ってない人にとって、iPodには40GB入るようになっているのに、その母艦たるPCにはあと30GBしか空きがないという苦しい状況が生じているのだ。iPodブームは、この格差を埋めていくことに徐々に貢献するだろう。
こうした、用途別で容量の格差が広がっていく、というシナリオがiPodで変化するか。しない。
iPodで記録しているデータをノートPCにも入れておく必要があるだろうか。ノートPCのHDDからも再生するのならともかく、iPodに入れてあるならノートPCのHDDからは消してしまう、というのがiPodの使い方ではないだろうか。全部iPodにため込む、そのための大容量iPodだと思う。
Appleは将来的にはもっとスゴイ製品を出してくると思う。PCとiPodをつなぐ今の形だけではAppleの製品はiPodしか売れない。金にならない。大容量のWindows PCばかりが売れてしまうのでWindowsマシンの売り上げに貢献するだけだ。この形態はAppleとしては好ましくないだろう。
そこで次に出すのが、iPodサーバというかドッキングステーション。単にNASとCD-ROMドライブをくっつけただけの製品。このサーバにCD-ROMをセットすると自動的にリッピングして内蔵のHDDに取り込む。USB2.0かIEEE 1394で接続した外部HDDにも記録できる。これでノートPCのHDD容量不足は心配しなくてよくなる。
iPodが音楽(のデータ)を持ち運ぶものなら、iPodに納まらないような持ち運ばない音楽についてはノートPCに入れなくても問題ないわけだし。そういう用途であれば3.5インチの大型HDDを複数台いれた専用ファイルサーバを用意した方が安上がりで使い勝手も良いと思う。そして何しろApple純正。このブランドで買う人もいるだろう。
さらにやるなら持ち運べるAirMac Express。iPodはポケットに入れたりするからどうしても大きさに限度がある。HDDは別の筐体に入れて無線で飛ばせば多少HDDが大きくなっても鞄にいてれおくことで大きさは気にならなくなる。
ノートPCのHDDが大きくなっても、そこから音楽を聴くのでなければあまり意味はないのではないだろうか。ユーザが欲しいのは大容量のiPodなのであってそのデータを管理できさえすればPCでなくてもいいのだから。
と、ここまで書いて思ったのだけど私の感覚としてどうしても「ノートPC = 持ち運ぶもの」という発想が抜けていない。ノートPCとiPodを持ち運ぶ、という発想で考えてしまったのだけどノートPCは持ち運ばないという人であればノートPCに大容量のHDDが必要なのかもしれない。でも、それだったらNASでいいじゃん、とも思う。持ち運ばないんだし。
別に珍しいものでもない。
JFに邦訳があるSound HOWTOにも
ネットワーク環境では、外部のユーザがサウンドカードとマイクが接続された Linux PC にリモートログインし、周りの物音を盗聴することが考えられます。
なんて書いてあるし。
FIVAでXpressAudioの設定をどうやってしたものか調べていたときに見たので記憶にあったわけだけど。
デバイスに対するアクセス権をどうやって管理するかなんだけども、ログイン中のユーザ権限で動かされると無意味だし。使わないときには抜いておく、というのが現実的なんだろうか。PCG-TRのカメラは抜けないし困ったもんだ。
なんとか起動するようになったkinput2。しかし、変換候補ウィンドウが出てきそうなタイミングで消滅する。ps axしても存在しない。
Alt+Ctrl+F1で起動元のコンソールを見てみるとBadAtomとかなんかでてる。switchdesk kdeしてKDEから起動すると問題ないようで変換候補ウィンドウが表示された。というわけで原因はウィンドウマネージャのようなのでBlackboxを破棄。Fluxboxをインストールする。
こちらでは変換候補ウィンドウもちゃんと表示できた。Linuxで日記が書けるようになるのはいつになるのだろう。
コンソールのキーをそのまま引き継がせるため、/etc/X11/XF86Configのキーボードのセクションに Option "XkbDisable" を追加。
Applicationキーに割り当てたControlが効かなくなっている。
/usr/X11R6/lib/X11/xkb/keycodes/xfree86を編集して回避。<MENU>=117とあるので、117番をControlにする。
KeySymの値はkeysym.hに書かれている。一覧表発見。
記事では急拡大とあるけど、とてもそう思えない。
64ビットMPUというのが何か、というのにもよるけどMMX PentiumやPentium 4が32ビットCPUと呼ばれることからも64ビット長の演算器が載っているだけではダメだろう。MMXレジスタは64ビットなんだからレジスタ長が条件でも無いはずだ。レジスタ長に加えてアドレス長も64ビットにならないと64ビットCPUは名乗れないのではないだろうか。386SXは微妙だが、386DXと互換ということで32ビットCPUを名乗ってもいいのかもしれない。
で、レジスタ長とアドレス長を64ビットにするメリットは何か。レジスタ長はまだわかる。MMXみたいな処理が組み込める。でもこれは演算器の問題なので32ビットCPUでも可能だし、実際にIntelのXScaleがやっているのでメリットにはならない。
となるとアドレス帳の拡大しか残らないわけだけど、これによって何ができるかというとメモリを4GB以上認識できるというところになる。実際そんなメモリは高いし大きいし、というわけで組み込み機器には載らない。ARM9にMMUが無いことからもまだそれほどのメモリ容量が必要とされていないことも推測できる。ARM10でMMUが載ってきたけども、数が出ているのはARM7とかARM9だし。
というわけで、64ビットのMPUを積んだところで何に使うのかさっぱり思いつかない。
組み込み用GeForceとか、ああいうのを64ビットMPUと呼んでいるのだろうか。
これからCFを買うときはSanDiskとLexerにしよう。メモリスティックはSONY純正も買う。
なにかで「アキバハラ」という表記を見た。「アキバ」なら秋葉原の略称というか愛称というかaliasという認識があるのだけどアキハバラは微妙。
以前、中央線で女子高生が「アキハ」と発音していたいたのが印象的だった。なんで「アキバ」なんだろう、と思ったものだ。
あのhard で loxse な 日々でおなじみのまxさんから秋葉原の由来についてご紹介いただいた。
秋葉原の語源が「あきばはら」だったのだが駅名は「あきはばら」。つまり、元々の呼称である「あきばはら」が正しく、「あきはばら」は誤りであり、いかに駅名が一般化しようとも浅草生まれ浅草育ちの三代続いた江戸っ子であるならば当然「あきばはら」と呼ぶハズであり、秋葉原をどう読むかによって江戸っ子であるか田舎者であるかの判別を行っているのだろう。今度東京に行く時には注意して「あきばはら」と呼び地元の民からナメられないようにしなければ。
データ領域のコードを実行しようとするドライバがあると起動できなくなるというもの。ドライバでそんなことするとは。
某サブノートPCを買ったら、ヒンジがヘニャヘニャで、キーを打っていると振動で自然に液晶の角度が変わってしまう。3ヵ月後、後継機が登場し、ヒンジ問題は解消されていた。初期ロットは買うものではないですね。(ASCII24編集部/美和)
これってPCG-SRXのことかなー、とか思うとニヤニヤしてしまう。
FIVAでこれ動かないかなあ。
XFree86 4.2.0のmakeがなぜかうまくいかないのでnsc_drv.oが生成できなくてこまる。
VESAで動いているから使えなくもないんだけど、なんかクヤシイ。
かっこいい。
PowerMac G5とは異なり、CPUは1つしか載っていないけどそれでも充分だろう。メモリが256MBというのは少し少ないような気がするのだけどどうだろうか。iMacを使うような用途ではメモリはこのくらいで構わない、という発想だろうか。
物理インターフェイスには変更が無く、従来のSocket940にそのまま接続できるようだ。
BIOS側の対応が必要のようだけど、たいしたものではないのだろう。従来の4way動作のHP機で動作させて8CPU。
CPUコアでHyperTransportレイヤを共有するということはアービタとかAPIC系の仕組みは内蔵されているのだろうか。だとすると、すでに市販されているSocket940でも対応できるかもしれない。