2010/04/13

滅せよInsert

ふと考えてみると、PCを使い始めて随分たつが、Insertキーを意図して使ったことがない。あるのは間違えて叩いた記憶だけ。いい加減、自分にとってInsertキーは不要かつ邪魔なだけの存在と断定していいと思う。よって、消えてもらうことにした。

1. InsertをDeleteにする


単にInsertキーを無効にするだけでもいいが、T400s以降のキーボードに倣ってDeleteキーの大型化に利用してみる。

基本的なやり方はレジストリでScancode Mapを設定する方法が使える。XPの頃からある手法だが、Windows 7 64bitでも使えた。


具体的には、Insertのスキャンコードは「E0 52」、Deleteは「E0 53」なので、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layoutに新規のバイナリ値としてScancode Mapを追加し、以下を入力。
00 00 00 0000 00 00 00
02 00 00 0053 E0 52 E0
00 00 00 00

2. キートップも変える


この際、キートップもDeleteにしてみる。対象はThinkPad X61s。

Insertのキートップを引き抜く。真っ直ぐ上に引けば、まあ問題なく外れる。
Removed Insert key

代わりに、古くなって引退したキーボードから外したDeleteのキートップを嵌め込む。
Attached Delete key

以上で、擬似的な大型Deleteキーの出来上がり。

2010/03/06

今年のSSD

今年のSSDの見通しについて。

1. SSD市場


CeBIT 2010の記事を見ていると、独自コントローラを持たないSSDベンダーは今年はSandForce一色になりそうな気配。


これとは別に、ついにMicronのC300が出てきたし、昨年の東芝と合わせて、話題に上がっていたベンダーがようやくSSD市場に揃ってきた。性能もリニアに伸びていく可能性があるし、多くのベンダーが競争していた、かつてのグラフィックカード市場を彷彿とさせる状況になってきたと思う。

ただ、ローカルストレージの300MB/s越えで実用上の違いがそんなに出るかという問題もあるので、現在のハイエンドのグラフィックカード市場と似てきそうな感じもする(コアなユーザー以外には関係ない世界という意味で)。

2. Mtronが消えた


Mtronの公式サイト(www.mtron.net)が繋がらない状態が続いている。最も初期のSSDベンダーだったが、消えた模様。

ちなみに、手許ではMSD6000がまだ元気に動いている。2月の寒い時期にはコールドブート一発では起動できない問題が起きていたが(古くなったPCでは時々ある現象)、3月に入って回復した。このMSD6000も今年8月で3周年になるので、いい加減交代時期に入ってきた。

3. PhotoFastってば


最近のエルミタージュ秋葉原は、どういう事情か知らないがSSDではPhotoFastを押しているようで、PhotoFastメインのSSD特集ページを作ったり、日本法人にインタビューしているが、どうなのかと。


というのも、今年の主力はSandForceらしいが(PATAではeastwho)、昨年まで主力だったIndilinxのBarefoot製品のサポートをほったらかしにしているから。Barefootのファームウェアも1916でようやく安定版に達した、というより製品自体がフェードアウトの時期を迎えているが、この1916をPhotoFastは出す気配がない。

元はといえばIndilinxが悪くて、それにSSDベンダーとユーザーが振り回されてきたというのがBarefootのファームウェアの歴史だが、他のベンダーが出している中で出さないというのでは差が付く。

SSDで重要なのはコントローラで、それをSSDにパッケージングするベンダーは基本的にどこでもいい(SSDベンダー独自の技術力はそれほど当てにしていない)。差といえば価格かサポートだが、価格は水物だから措くとして、サポートで裏切られると尾を引く(個別事例で問題があったというレベルではないし)。

SandForce製品で一番乗りしたのはいいが、これまでBarefoot製品を買ってきたユーザーは同程度のものなら他のベンダーを選ぶだろうから、今後が危ないと思う。

[追記]

PhotoFastからも5月14日付けで1916がリリースされた。

2010/02/28

記録面と速度の実際(応用)

基本的な性質は分かったので、応用について。

(このエントリは一続きのエントリの5/5)

5.1. 線記録密度を計算する


記録面の線記録密度は、原理的に、条件が揃えばシーケンシャルリードの速度から計算できる。その条件として以下のようなものがある。
  1. 回転数が分かっていること
  2. 物理的なトラック長が分かっていること
  3. 速度にリードキャッシュの影響がないこと
  4. 速度にブロックサイズなどの影響がないこと
  5. 速度に他の制約要因の影響がないこと(PC本体の能力、HDDのコントローラの能力など)
  6. トラック間の移動時間を含まない速度が計測できること
  7. 記録面が複数ある場合、平均化されない個々の記録面の速度を計測できること
このうち1.は公称スペックが概ね信用できるし、2.は既に分かっている。3.と4.と5.は計測結果から一応検討できる。問題は6.と7.で、この目途が立たないので追求を諦めていた。

それが、6.はHddRpmEstの結果から分かるし、7.は従来のシリンダの理解に根ざした問題だったので、それが当てはまらないとすれば、そもそも問題ではなかったことになる。

そこで3.と4.と5.について改めて検討すると、3.のリードキャッシュは、HD Tune Proでは影響している気配はないので、ないと見なしてよいと思う。

4.のブロックサイズは、5K500.B-500aの先頭1GBを設定を変えながら計測すると、以下のようになる。
Travelstar 5K500.B-500 a: HD Tune Pro (Seq. Read, 1GB, Full) compiled

64KB以上ではほとんど変わらないので、64KBでの値を使えると思う。

5.の他の制約要因については、原理的に、その影響がない理想的な状態では速度はトラック当たり容量に比例するので、線記録密度の平均が各ゾーンで一定と仮定すれば(ゾーン内での高低は措くとして)、速度はトラック半径に比例する。この比例度合いを見ることでその影響を推し量れると思う。

これを5K500.Bで計算すると以下のようになる。

トラック半径(注)速度(平均)
最外周
(mm)
最内周
(mm)
比率最外周
(MB/s)
最内周
(MB/s)
比率
5K500.B-500a30.6514.300.46789.7042.20 0.470
5K500.B-500b81.2940.57 0.499
5K500.B-12083.1538.32 0.461
(注)正確にはゾーン内の外周か内周かで揃えるべきだが、どちらも片方しか分からない。

比率は意外と離れてないので、大きな影響はなさそうである。

条件は一応クリアしたとして、5K500.Bの最外周トラックについて計算してみる。計算式は5K500.B-120の場合で以下のとおり。

[{83.15(MB/sec)×1.154(HddRpmEstにいうバースト転送速度と維持転送速度の比率)}(トラック間の移動時間を含まない速度)×0.0111(sec)(5400RPMでのトラック一周時間)](トラック当たり容量)÷{30.65(mm)(トラック半径)×2×π}(トラック長)×1,000,000(Byteへ換算)×8(Bitへ換算)×25.4(インチへ換算)÷1,000(Kへ換算)=1125.3(KBPI)

記録面速度
(平均)
(MB/s)
トラック当たり
容量
(MB)
線記録密度
(KBPI)
公称線記録密度
(最大、1356KBPI)
との比率
5K500.B-500aA B91.251.1731237.991.3%
C D87.911.1301192.788.0%
5K500.B-500bA84.381.0841144.184.4%
B83.071.0671126.483.1%
C74.880.9621015.374.9%
D82.941.0661124.582.9%
5K500.B-120
83.151.0661125.383.0%

実際には、線記録密度は同じゾーン内でも内周の方が高く(5K320のSpecificationの例で計算したときには最大で50KBPI強の差があった)、PC本体の能力が高ければ速度はもっと出ると思うので、少なくともこれぐらいはあるという数字と考えた方がよい。

5.2. ベンチマークに対する影響


容易に想像できることだが、ベンチマークで計測する領域と高低の記録面の位置がはまった場合、小さな位置の違いで割と大きな速度差が出る。

記録面間の差が大きい5400.5-320aの場合、(作為的ではあるが)先頭から124MBずつ3つのパーティションを作成してCrystalDiskMarkとHD Tune ProのFile Benchmarkで計測すると、以下のようになる。
Momentus 5400.5-320 a: CrystalDiskMarkMomentus 5400.5-320 a: HD Tune Pro File Benchmark
(注)File Benchmarkのブロックサイズの表示は下が隠れてしまっている。4.0でウインドウサイズが可変になった関係かもしれない。

シーケンシャルリードについてHD Tune ProのBenchmarkのグラフと重ねて整理したのが以下。
Momentus 5400.5-320 a: HD Tune Pro & CrystalDiskMark (Seq. Read)

この問題を意識して避けるには、計測するサイズを記録面の組当たり容量(HDDによって変わってくるが、5K500.B-500なら400MB、5400.5-320なら200MB程度)を超えるものにする必要がある。これはピークをとる場合には最も速度の出る記録面を外さないために、平均をとる場合には元の値を正しく集めるために有用。

また、ベンチマークにおけるバラツキの理由の一部はこの問題で説明されると思う。OSや他のソフトの挙動、ファイルシステムの影響、他のデバイスの割込などを気にしていたら、肝心のHDDの速度に凹凸があったということで。

5.3. HD Tuneのグラフに対する影響


HD TuneのBenchmarkでは、Partial testが初期設定だが(3.5まではこれしかない)、この設定ではHDDによってはグラフに大きなぎざぎざが出ることがある。これが何故なのか気になっていたが、4.0のFull testではほとんど出なくなるので、Partial testに特有の問題らしい。

5K500.Bの3台について、Partial testを5段階中の4段(初期設定)と5段で計測した結果が以下になる。
Travelstar 5K500.B-120, 500 a&b: HD Tune Pro (Seq. Read, 64KB, Partial) compiled

まず単一の記録面の5K500.B-120では全く上下動が出ていない。これは前に5K320-80を2台調べたときも同じ結果だった。

その上で、5K500.B-500aと500bの間では、(500aの100GB付近の乱れは措くとして)500bの方が振れ幅がやや大きいのが分かる。これは、500aのゾーン0の記録面間の高低差(4MB強)より500bの高低差(10MB弱)の方が大きいことと符合する。

同様に5400.5の2台について、Partial testを5段階中の4段と5段で計測した結果が以下。
Momentus 5400.5-320 a&b: HD Tune Pro (Seq. Read, 64KB, Partial) compiled

とくに4段の方で顕著だが、5400.5-320aの方が320bより振れ幅が大きい。これも320aのゾーン0の記録面間の高低差(12MB強)の方が320bの高低差(6MB強)より大きいことと符合する。

まとめると、
  • グラフに激しい上下動が出るのは記録面が複数あるHDDの場合。
  • 記録面間の高低差が大きい方がグラフの振れ幅も大きい。
これから推測すると、Partial testの計測位置になった部分がたまたま高低の記録面に当たり、その値が平均化されずに出てきた(Full testでは計測位置が多いので平均化されると考えて)ことがぎざぎざの正体、少なくともその一部ではないかと思う。であれば、あのぎざぎざは計測上のノイズ的なものではなく、正確に計測した結果だったことになる。

5.4. 3記録面問題


あるシリーズの最大容量のモデル(2プラッタ4ヘッド)とその半分の容量のモデル(1プラッタ2ヘッド)の間には、3ヘッドと4ヘッドの両方があり得るモデルが存在したりする。5K500.Bでは320GBモデルがそうで(Specificationに「3/4」と表記)、5400.5では250GBモデルがそうである(Product Manualに「4 or 3」と表記)。5K320の250GBモデルのように、公称スペックでは3ヘッドでも実際には4ヘッドの個体があることもある。

こういうモデルにまつわる問題として、
  • 外からはヘッド数が判別できない。1プラッタか2プラッタかは重量で判別できるし、1プラッタ1ヘッドの場合は容量的にそれしかないことが多いが、3ヘッドか4ヘッドかは手掛かりがない。

  • ヘッド数により大きな性能差が出る可能性がある。5K500.Bの全ての容量別モデルを見ると、
    全容量
    (GB)
    ヘッド
    数
    記録面当たり
    必要容量(GB)
    公称線記録密度
    (最大)(KBPI)
    50041251356
    4004100
    320480
    3107
    2502125
    1602801305
    12011201356
    80(注)1801305
    (注)80GBモデルは初期のSpecificationにはあったが、後に消えている。

    公称スペックの線記録密度(最大)は160GBモデルと80GBモデルが落ちる以外は全部同じだが、320GBモデルの場合、3ヘッドであればまだしも、4ヘッドであれば記録面当たり必要容量がこれらの落ちるモデルと同じになるので、性能もこれら並になっている可能性がある。
したがって、こういうモデルでは外から判別できないヘッド数(=記録面数)によって大きな性能差があり得る、という福引きにも似たHDD選びの中でもその度合いが高いという問題がある。これを個人的に3記録面問題と呼んでいる。

それが、MK3263GSXのように記録面間にそれと分かる速度差があれば、速度だけから記録面数を判別できる可能性がある。

5.5. まとめ

12 HDDs

HDDのベンチマークにそれなりの労力を費やしてきた人間として、少し鬱である。なるべく正確な結果を得ようとした努力のかなりが見当違いのものだったと分かった。
  • 現在のHDD(複数の記録面を持つもの)には、速度が違う一定の容量の領域から成る組があり、この組の繰り返しでHDDは構成されている。組の中の領域は、ある程度の容量を超えると、単独あるいは一斉のタイミングで、段階的に速度を落としていく。

  • この現象は従来のシリンダの理解では説明できない。対して、「HDD中のアドレスはトラックごとに他の記録面のトラックに移動するのではなく、同じ記録面のトラックへの移動を一定の範囲で繰り返してから、他の記録面に移動する」という仮説に従い、組の中の領域は各記録面であり、これがゾーンを変えるときに速度が落ちると考えれば、この現象を説明できる。

  • これは同じゾーンに速度が違う記録面が存在することを意味するので、HGST以外のSeagate、東芝、Western Digitalの各メーカーもAdaptive Formattingか、類似の方法をとっていることになる。

  • この仮説に従えば、同一円筒上にある複数のトラックから成るシリンダというものは既に存在しないか、使われておらず、いずれにせよ意味を失っている。

    この現象は2002年にAdaptive Formattingが適用されたHDDが出現した頃から存在した。つまり、その頃から従来のシリンダの理解は当てはまらなくなっていたことになる。シリンダは消えた。というより、とっくに遠くへ消え去った後だった。

  • この仮説の成否とは別にして、HDDのベンチマーク方法を考えるときにはこの現象を意識した方がいいと思う。これまで信じられてきたように、HDDの先頭が文字通り一番速度の出る領域とは限らないので。

    ピークをとるにせよ、平均をとるにせよ、組の中の全ての領域をカバーした方が正確なので、計測するサイズは組当たりの容量を超えるものにした方がいい。この容量は実際のHDDによるが、HGSTの2.5インチHDD(2プラッタ4ヘッド)では400MB程度。HD Tune Proには試用版があるので、それを使えば簡単に確認できる。

  • 記録面間に特徴的な速度差があれば、外から計測した速度だけから記録面数、さらには記録面当たり容量を判別できる可能性がある。
プラッタ数の多い大容量の3.5インチHDDではどうなのかは、後の課題。