[ カテゴリー » PC関連 ]

AMDのイベント行ってきた

昨日AMDの夏祭り 兄貴だ!Phenomだ!3.0Ghzだ!Link を見てきました。こういうイベントって滅多に行かなくて、兄貴ことAMDマーケティング部の土居憲太郎氏は全然知らなかったのですが、あくの強い風貌なだけで話し方はいたって普通でした。CPUの宣伝に名物人間を立てる戦略に、もうそういう時代なんだなと(なんでも商品自体の差別化が難くなってくると、キャラクター性に頼りがちです)。

内容としては(記憶頼りなので不正確)、
2008年に45nmプロセスに移行、3次キャッシュを6MBに
従来から(今回も)AMDのCPUはDRAMへのアクセスに長所があるので多くのCPUキャッシュは必要ないとの主張でしたが、6MBに増やす模様。私はIntelの大容量CPUキャッシュは余りよく思ってない(効果が疑問)のでAMDの主張には賛成してたのですが、Penrynの6MBに追従の様子。
クアッドコアの3GHzはあくまでデモ
技術的に到達しているというデモで、発売は未定。これもPenryn 3GHzへの対抗ですが、発売できないのは引け目。
8/20に3.2GHz Athlon X2 6400+発売
Phenomの3GHzが発売未定なので、高クロックはこちらで目を引こうと?
2009年に新アーキテクチャコアBulldozer
PhenomのK10アーキテクチャはK8の改良版だが、Bulldozerは全く新しいアーキテクチャとのこと。ただ新アーキテクチャってどれくらい性能上がるのでしょうね? Pentium4からCore2で大きく性能を上げたように見えるのは、性能・開発・生産性向上を全て高クロックで押し通そうとしたNetburstアーキテクチャの目論見が外れて大ごけしたから。IntelもCore2から性能を上げていくのはアーキテクチャを変えても楽ではないと思ってます。AMDはそういう躓きが無かったのですでに性能向上に苦労している状態。
Penrynをかなり意識というか、キャッシュ容量やクロックなど目のつく指標でIntelに追従せざるを得ない実情を垣間見たというか。私はハイエンド機には興味ないので、コストパフォーマンスがよければAMDは十分検討範囲内です。

目玉のクアッドコアPhenom 3GHzのデモですが、ケース側面に12cmファンが4つびっしり装備された状態で登場。暴走したら洒落にならないので過剰に冷却していると思いますが、個人的にはげんなり(つд`)。CPU周りはハイエンドとしては普通、もしくは控えめな冷却でした。3GBメモリにWindows Vista Ultimateで、3Dゲーム、Google Earthの地球回転、Media playerの動画再生(仮想PC上)、Webブラウザ(仮想PC上)の4つが同時実行されているというものでした。ハイエンドに疎い私は、これがすごいのかどうか分かりません(^−^;)

Media playerとブラウザの仮想PCは別々で、それぞれの仮想PC上でDual CPUとして動いているとの説明。あの〜、ブラウザって一度表示してしまうと仮想PC上だろうがほとんどCPUパワー要らないんですよ。あれは仮想PC上のMedia playerか3DゲームにCPUコア2つを割り当てるための策なんじゃないのかな。でも4つプログラム走らせないとクアッドコアのデモにならない。よってCPUバワーほとんど食わないブラウザを入れて、かさ上げ。実質は3DゲームとMedia playerに3コア割り当て。仮想マシン上でDual CPUですなんて言わなければ、馬鹿な私は騙されただろうにw

AMDの名誉のために言っておきますが、Intelだってデモするなら似たような細工はするでしょう。

— posted by mu at 12:45 pm   commentComment [0]  pingTrackBack [0]

PCが新し過ぎた

会社でDell vostro200 Desktop PCLink を購入、本日届きました。同社 Inspiron Desktop PCLink の企業向けモデルですね。発表の二日後に発注したのですが、別に新しいものを狙ってたわけでなく、目的にあったものを探したらこれになっただけ。いやぁIntel Core2Duo E4300にWindows XP、17インチ液晶付けて9万円切るだけはある。軽いし簡素(ちゃちいとも言う ^_^)

で、おもむろにKNOPPIXLink 立ち上げようとしたら、途中で止まる。CentOS 5Link もインストーラが起動しない。どちらもBIOSからカーネルドライバにCD-ROMの制御を移すときにドライブを見失うらしい。

どうも現時点最新のチップセットIntel G33 ExpressLink にLinuxカーネルが対応できていないらしく、少なくとも2.6.22にする必要がありそう。Fedora CoreLink は最新にするとこのカーネルになるみたいだけど、まだ起動CDとしては未対応な様子。

メインの使用OSはWindowsなので大きな問題にはならないのですが、ちょっと失敗w

[2008/4/19 追記] KNOPPIX 5.3.1がリリースされ、動くようになりましたLink

— posted by mu at 09:03 pm   commentComment [0]  pingTrackBack [0]

.NET非同期通信の切断

今日も今日とて.NET。.NETで非同期ソケット通信Link (←このリンクが切れていた場合、".NET", "ソケット", "非同期"などで検索すれば出てくるでしょう)する場合、データを受信するたびにSystem.Net.Sockets.Socket.BeginReceiveで指定した関数・メソッドが呼ばれます。接続が切れるときにもこの関数が呼ばれますが、その場合受信サイズが0になっているので、切断を知ることができるという仕掛けです。

相手から切断してきたときはSystem.Net.Sockets.Socket.Close()なりインスタンスの破棄なり処理すればいいのですが、こちらから切断したいときはSystem.Net.Sockets.Socket.Disconnect()で切断する必要があるようです。以下の方法では不具合がありました。

System.Net.Sockets.Socket.Socketインスタンスの破棄
破棄のタイミングはプログラマーが制御できないLink ようなのでいつ切断されるか分かりません。下手すると延々と接続されています。
System.Net.Sockets.Socket.Socket.Close()
このメソッドは切断後全てのリソースを開放してしまいますLink 。この後サイズ0の受信を通知しようとBeginReceiveで指定した関数が呼ばれますが、引数のIAsyncResultクラスインスタンスがCloseメソッドで開放されてしまっているため、EndReceiveでこのインスタンスにアクセスするとエラーを起こします。try〜catchで例外処理など対策が必要。

ただSystem.Net.Sockets.Socket.Socket.Disconnect()メソッドは.NET Framework 2.0以降らしいので、1.xではEndReceiveをtry〜catchで捕まえるか、独自にフラグ管理するなどするしかないのでしょうか?

— posted by mu at 08:51 pm   commentComment [0]  pingTrackBack [0]

.NETで値が無い返り値

時々長さ0の文字列("")とは別に「結果が無い」という返し方をする関数を作らないといけないことがあります。またはあらゆる数値が結果になりえるので、ある特定値(0とか-1とか)を「結果が無い」という割り当てにできない関数とか。例としては、まだ名前の入力をしていないのと入力した結果空白だったとを区別しなければいけないなど。

SQLならばNULLと扱われる内容。SQLではNULLはいかなる数字でも長さ0の文字列でもなく、「値が無い」状態です。値が無いので等号・不等号で比較することすら禁止されています。

SELECT * FROM t1 WHERE name=NULL

は文法間違いですし、

SELECT * FROM t1 WHERE name=""

はnameがNULLであるレコードには引っかかりません(値なし=""は否なわけです)

以前なら(構造体とか使って)値を入れるのとは別に、値の有無を示す整数やブール値と二つの値をセットで返す関数を作ってたのですが、.NETではIntegerやStringも含めありとあらゆるものがクラス扱いされているので、オブジェクトが存在しないという状態Nothing(VB.NET)やnull(C++/C#.NET)が使えます。例えばVB.NETでは

Function foo() as String
  If a>0 Then
    foo = str1
  Else
    foo = Nothing
  End If
End Function
Function foo() as Integer
  If a>0 Then
    foo = int1
  Else
    foo = Nothing
  End If
End Function
という関数が定義できるわけです。これでstr1が長さ0を含むいかなる文字列でも、int1がどんな整数でも、それとは別に「値が無い」という結果を返すことができます。

まぁ、当たり前といえば当たり前なんですが^^;

— posted by mu at 08:53 pm   commentComment [0]  pingTrackBack [0]

Visual Studio.NETサービスのデバッグ

今度はVB.NETでWindowsサービスプログラムを作ろうとしていたりします。サービスとなると通常プログラムよりも表示や入力が制限される(基本的にやらない)ので、Visual Studio.NETのデバッガが利用できるのはかなり助かります。

Visual Studio.NETではサービスの作り方も楽になっていて、プロジェクトの種類にWindow applicationやDLLと並んでWindows Serviceなんてのが用意されているので、これを選びます。特集:初めて作る.NET Windowsサービス(ITmedia)Link なんかを参考にして、自動的に生成されるSystem.ServiceProcess.ServiceBaseのサブクラスのメソッドをコーディングするだけ。(まともに使えるサービスとなるといろいろ書く必要がありますが)

blog20070718VSdotNETServiceLogin

デバッグは通常プログラムとはちょっと異なります。blog.C#Link なんかを参考にしてますが、
  1. まずexeをビルド
  2. installutilコマンドでサービスとして登録
    • installutil.exeが通常パスの通ってないところにあります。スタートメニュー内のVisual Studioのツールフォルダにあるコマンドプロンプトを使うと、パスが通ってます
    • 管理者権限である必要があります。私の開発ユーザーIDはVS Developer+制限ユーザなので、上のコマンドプロンプトをAdministratorとして起動してます。
    • サービスの起動をUserに設定してた場合(Visual Studioプロジェクトのどこかで設定可能、忘れた;;)、ユーザーIDとパスワードを問われます。Windowsに登録してあるユーザーでいいのですが、ドメインを含めた[ドメイン]¥[ユーザー]で指定しないと登録に失敗します。ローカルマシンなら、.¥[ユーザー]で指定可能。
  3. コントロールパネルのサービスで、登録したサービスを起動
    • これも管理者権限でサービスマネージャを起動する必要があります。全体を通して管理者でやったほうがはるかに楽^^;
  4. exeをビルドしたプロジェクトを開き、ツールのプロセスにアタッチで起動したサービスを選択
    • これもVisual Studioを管理者権限で起動しておかないと、アタッチ後サービスへのアクセスが拒否されて、実質的にデバッグできません。結局管理者権限でやれということでしょうか? Visual StudioインストールするとVS Developerなんてユーザーグループ作るくらいだから、なんか別の方法がありそうですが・・・

これでデバッグ開始。ブレークポイントを設定しておけばそこで止まってくれます。デバッガーを止めるとサービスも止まってしまうので、またコントロールパネルで開始する必要があります。

— posted by mu at 08:38 pm   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0255 sec.
prev
2024.11
next
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30