PS3に残されたわずかな希望

ソニー製品といえば、買ってからちょうど1年後に発動する高性能タイマー、通称ソニータイマーで有名でしたが、最近では、「買ってからしばらくすると、主要機能を省いたシンプル構成にチェンジする」という、やはり他のメーカーには真似のできない仕掛けで有名になりつつあります。

この仕掛けはなかなかよくできています。たとえばゲーム機を売る場合、最初はゲーム以外の機能も持った製品を出荷します。そうすることによって、ゲームをしない一部の層にも製品が売れます。しばらくしてから、その付加機能を、バーン、無効にします。するとどうでしょう。人間は、高い金を払って買ったものはなんとかして元を取ろうとしますから、残された機能つまりゲームで遊ぶようになるのです。

付加機能を付けて売る分、最初は少し赤字になるかもしれませんが、ゲームをしない人たちに売りつけた分から後で得られる利益を考えて、全体としてプラスになるのなら、この戦略はうまくいくのです。

ソニーはゲーム機PS3でこの戦略を試しているようです。2つの実験が平行して行われています。一つは、「他のシステムのインストール」機能、もう一つはテレビ録画機能です。現時点では「他のシステムのインストール」機能が無効になっていて、この機能を目当てにPS3を買ったユーザが、ゲームに流れているところです(たぶん)。テレビ録画機能はまだ十分には普及していないので、無効になるのはしばらく先のことでしょう。

残念なことに、せっかくの壮大な実験を、邪魔する輩がいるようです。この動画では、せっかく無効にした「他のシステムのインストール」機能が復活してしまっています。

ただ、この動画の投稿者がソニーの邪魔をしていると断言するわけにはいきません。なんでも、この技術を利用すれば「他のシステムのインストール」機能が使えないはずの型番でも、この機能が使えるようになるそうです。これは、「購入後もソフトウェアアップデートで機能が増えていく」という、PS3の売り文句の実現をサポートしているのです。

ソニーの関係者もきっと喜んでいることでしょう。

PS3新ファームウェアでの他OS起動に成功か(CNET)

PS3 カスタムファームウェア v3.21OO 、「他のシステム」対応を復活(engadget)

「セキュリティ対策」と言えばなんでも許されると思っている人たち

2009年8月にPS3の新型が発表されたとき、旧型が持っていた「他のシステムのインストール」する機能が新型では省かたことに衝撃を受けました(当時のブログ)。初めて市場に投入された2006年からずいぶん時間が経ち、PS3の相対的な性能は低くなっていたため、PS3を計算機として利用するメリットはほとんどなくなっていましたが、「他にないアーキテクチャの計算機で遊ぶ楽しみ」が無くなるのが残念でした。しかし、SCEの吉増一氏がインタビューの中で、旧型から「他のシステムのインストール」機能が排除されることはないと言っていたので、旧型が手元に2台ある私は安心していました。

結論から言えば、あの発言はうそだったようです。

2010年4月1日に提供されるシステムソフトウェアで、新旧問わず、すべてのPS3から「他のシステムのインストール」機能は削除されます(SCEのプレスリリース)。

ダウングレードの理由は「セキュリティの脆弱性に起因する問題に対応するため」だそうです。ということは、新しいシステムソフトウェアを導入しないことは、セキュリティの脆弱性を放置することを意味します。一般的に言って、解決策が存在するにも拘わらずセキュリティの脆弱性を放置することは好ましいことではありません。企業や大学などの組織では、そのような行為が禁止されているところもあるでしょう。そうすると、対策を実施つまり新しいシステムソフトウェアを導入しなければならなくなるわけですが、PS3を計算機として利用している場合には、その対策によって製品の主目的が失われます。

「大学で計算機として買ったPS3に、セキュリティ上の脆弱性があると言われた。放置することはできないため対策を施したら、PS3は計算機として利用できなくなった」なんてことが許されるのか、私にはよくわかりません。こういうアホなことは考えたくもありません。

だから、SCEは「セキュリティ対策」なんていういいかげんな言い訳はしないでほしいものです。「特に理由はないが、当該機能は削除する」というだけなら、それを無視することに罪の意識を感じずに済んだわけですが、「セキュリティ対策のために、、当該機能は削除する」と言われても、それを受け入れるわけにはいかない私は、余計なことに心を痛めなければなりません。

そもそも、ユーザに不利益なことをする際に持ち出される「セキュリティ対策のため」という言い訳が、ほんとうにセキュリティ対策のためであることなんてあるのでしょうか。多くの人は、そんなのはただの言い訳だと思っているのではないでしょうか。そうでないのなら、具体的にどういう問題があったのか、ちゃんと説明すべきなのではないでしょうか。たいていの人は、「セキュリティ対策」と言われたら、よくわからなくても従わなければならない気分にさせられるはずです。だからといって、こんなよくわからない言い訳が使い回されていいのでしょうか。

「売った機能はそのままにセキュリティ対策を施す」というのがビジネスの基本のはずです。「売った機能を無効にしてセキュリティ対策を施す」なんてことが許されるなら、マイクロソフトはまっさきにIE 6を無効にするでしょう。少しでも責任感があるのなら、そういうことはできないはずです。

話をPS3に戻しましょう。

初代PS3には、PS2のハードウェアエミュレーションやSuper Audio CD (SACD)の再生機能などが備えられていました。初代以外のPS3からは、これらの機能は取り除かれていますが、そのことに関する納得できる理由は示されていません。戦略的な意味やコスト削減が理由なのでしょうが、真相はよくわかりません。

注意しなければならないのは、PS2のハードウェアエミュレーションやSACDの再生機能がなくなったことと、今回の「他のシステムのインストール」機能が無効になることとは、まったく違う話だということです。PS2エミュレータやSACD再生機能は、「買ったときにはあったのに、後で無効にさせられた」というようなものではありません。今回はそうなのです(そういえば、任天堂のWiiにもそんな例がありました。まったく騒がれなかった気がしますが)。

PS3上のLinuxのために努力してきた開発者はたくさんいます。たとえば、PS3に搭載された今日の基準からすれば3世代前(CUDA以前)に相当するGPUは、その詳細が公にされなかったため、あまり活用されませんでした。もう少しタイミングを見極めて、CUDA世代のものを搭載してくれていれば最高だったわけですが、それに挫けず、ビデオメモリをスワップ領域として活用するためのps3vramが開発されました。この技術は、基本的にはPS3のためだけのものであり、PS3を汎用計算機として使うことができなくなれば、ゴミ箱行きになります。

米国空軍ではPS3をスーパーコンピュータとして使用するためにPS3を2200台発注しているそうですし、米移民関税執行局サイバー犯罪センターでも、暗号化された児童ポルノデータの解読に同様のシステムを使用しているそうです(GemaSpot)。「他のシステムのインストール」機能があって初めて使える製品(CodecSys Personal)を販売していたFixstarsは、2010/4/1をもってその販売を停止するそうです(「CodecSys Personal PS3システムアップデートに関する重要なお知らせ」)。

こういう試みをしてきた人たちを裏切り、後ろ足で砂をかけるなんてことが、よくできるものです。最近、「ソニー迷走はいかにして起こったか」という記事がありましたが、迷走の要因3「傲慢」の事例をソニーはまた一つ増やしました。

SlashdotOSnewsではSCEに対して否定的なコメントが多く寄せられています。こういうところにいる人たちを敵に回したことのツケを、後でちゃんと払ってくれることを期待しています。

4798010340希望はあります。iPhoneのjailbreakなどで有名なハッカーGeorge Hotzさんが、「ハッカーはPS3のLinuxサポートを取り戻すだろう」とコメントしています(Slashdot)。もともと、そういうものだったのかもしれません。「他のOSをインストールできるようにする」などということ自体がソニーの迷走事例であり、そういうことのない「ふつうの」世界では、ハッカーたちが自由のために戦うのです。ハッカーたちの輝かしい戦歴(たとえば『ホゲゆに』を参照)に、新たな1ページが加わるのを期待しています。

PS3が紐付きアプライアンスに

B002LZTX0UPS4の話(例1, 例2)もすでにいろいろ出ている中で、新しいPS3が発表されました。

高性能なゲーム機あるいはBDプレーヤーを求めている方には朗報なのでしょうが、私にとっては少し残念なニュースです。

新しいPS3では、「他のシステムのインストール」ができないそうです(参考)。「PS3でGNU/Linux、何するの?」の答えの一つ試すことはできなくなるのです(公式には)。高速、高画質H.264ソフトウェアエンコーダ for PS3のようなものを作るのも難しくなるでしょう。

PS3に最適化した単精度計算プログラムの性能は、Core i7のような最新のCPUを超えています。PS3の発売時期を考えると驚異的なことです。簡単な例を紹介しましょう。単純な行列のかけ算です(C++で使っているものから抜き出したので、C言語なのにmatrix_mul_blas.ccです)。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#ifdef __PPU__
#include <blas.h>
#include <malloc_align.h>
#endif

//単精度の場合
typedef float Number;
#define GEMM sgemm_

//倍精度の場合
//typedef double Number;
//#define GEMM dgemm_

#ifndef _PPU__
extern "C" int GEMM(char*, char*, int*, int*, int*, Number*, Number*, int*, Number*, int*, Number*, Number*, int*);
#endif

int main(int argc, char** argv){
  int SIZE=atoi(argv[1]);
  int REPEAT=atoi(argv[2]);

#ifdef __PPU__
  Number* A=(Number*)_malloc_align(sizeof(Number)*SIZE*SIZE, 7);
  Number* B=(Number*)_malloc_align(sizeof(Number)*SIZE*SIZE, 7);
  Number* C=(Number*)_malloc_align(sizeof(Number)*SIZE*SIZE, 7);
#else
  Number* A=(Number*)calloc(SIZE*SIZE, sizeof(Number));
  Number* B=(Number*)calloc(SIZE*SIZE, sizeof(Number));
  Number* C=(Number*)calloc(SIZE*SIZE, sizeof(Number));
#endif
  
  char transa='n';
  char transb='n';
  int size=SIZE;
  Number alpha=1;
  Number beta=0;
  int i, j;

  for (i=0; i<SIZE; ++i){
    for (j=0; j<SIZE; ++j){
      A[i+SIZE*j]=10*i+j;
      B[i+SIZE*j]=1000*i+100*j;
    }
  }

  for (i=0; i<REPEAT; ++i)
    GEMM( //alpha A B + beta Cを計算する
     &transa, //Aを転置、共役転置するかどうか('n', 't', or 'c')
     &transb, //Bを転置、共役転置するかどうか('n', 't', or 'c')
     &size, //AとCの行数
     &size, //BとCの列数
     &size, //Aの列数=Bの行数
     &alpha, //A*Bにかける定数
     A,
     &size, //Aの第1次元('n'ならmax(1, m)以上)
     B,
     &size, //Bの第1次元('n'ならmax(1, k)以上)
     &beta, //Cにかける定数
     C,
     &size //Cの第1次元(max(1, m)以上)
     );

  //メモリの解放を省略
  return 0;  
}

参考:Lapackの使い方

Core 2 Quad Q6600 (2.4GHz)を使って、「g++ -O3 matrix_mul_blas.cc -lblas」とコンパイルして実行すると、8.2 GFlopsくらいになりました(行列サイズは2048、倍精度だと4.2 GFlopsくらい)。Core 2 Quadの性能はもっと高いのですが、ふつうにインストールされるBLASでの行列のかけ算はコアを1つしか使わないのでこんなものでしょう。

Core i7 940 (2.93GHz)とIntel Math Kernel Libraryを使って、「icc -O3 matrix_mul_blas.cc -lmkl_em64t -lmkl -lguide -lpthread」とコンパイルして実行すると、90 GFlopsくらいになりました(行列サイズは2048、倍精度だと44 GFlopeくらい)。

PS3を使って、「ppu-g++ -O3 -I/opt/cell/sdk/usr/include matrix_mul_blas.cc -lblas」とコンパイルして、「export BLAS_NUMSPES=6」のようにSPE数を設定してから実行すると、125 GFlopsくらいになりました(行列サイズは1920、倍精度だと7.5 GFlopsくらい)。Core i7より速いです。

このような計算資源が、ユーザの手の届かないところに行ってしまいます。

速いPCを買えばいいと思う人もいるかもしれません。確かに、ここで紹介した計算資源の問題はそれで解決してもいいでしょう。しかし、CELLというちょっと変わったアーキテクチャのためのプログラムを書く喜びは、簡単に替えられるものではありません。

紐付きアプライアンスなんか要らないという向きは、在庫があるうちに旧型を入手しておいた方がいいかもしれません。

B001HX3KOWB001HX3KPQB001HX3KQU

追記:SCEの吉増一氏によれば、旧型から「他のシステムのインストール」機能が排除されることはないそうです。

吉増氏:基本的には、PS3専用のソフトウエアを利用していただきたい、ということです。PS3はすでに2,000万台出荷しています。今後も、それらのモデルでOther OSインストールの機能を排除することはありませんので、そのままお使いいただけます。(SCEに聞く、薄型PS3とソフトウエアVer.3.00の秘密

追記:PS3の「LinuxなどのOSをインストールする機能」を削除したソニーが賠償金を支払うことに

美学vs.実利

美学vs.実利 「チーム久夛良木」対任天堂の総力戦15年史西田宗千佳『美学vs.実利 「チーム久夛良木」対任天堂の総力戦15年史』(講談社, 2008)

グラフィック仕様の決定タイミングが悪かったことが、PS3が計算機としてはちょっと使いにくい原因の一つだと思っている人は多いと思う(有効活用する方法を近いうちに紹介しよう)。そういう頭でこの本を読み始めると、ちょっといらつくことになる。

「自前で、最適なものを作ったからコストが抑えられたんですよ。他から集めてきても、コストは下がらないし、いいものなんかできっこない。興味もなかった」(p.54)

「自社しか作れない、付加価値のあるものは自社で作る。そうでないなら、買ってきたほうが早い。もし、他社に評価すべき技術を持った人がいるのなら、彼らと組めばいい。単純な話でしょう」(p.164)

半導体を自社開発・自社生産するという方針からもわかるように、SCEは、自社製品に関し、できる限りパーツを内製化する方針でいる。(p.196)

なんか混乱してない?と思って読んでいたら、その混乱がちゃんと第5章「手の平サイズ・スーパーコンピュータ」の最終節「八つのグラフィックチップ」で紹介されていた。興味がある人は読んでみたらいいと思う。