アダルト・ヴァイオリン May the force be with you..

2006年2月15日

番外編:マンドリンキットの話

ほとんど素材状態できて、どうすればいいのか途方にくれていたマンドリンF5キットであるが、良く探せば、きちんとスクロールの加工が終わり、タップトーンチューニングといくつかの加工をすれば仕上がるマンドリンキットが販売されているのであった。


しかも、定番のマンドリン製作本の著者の会社である。これは物が悪いはずはない。

しかし、全く手付かずのSTEWMACのF5キットが手元(押入れの中)にある以上、これ以上のキット購入は道義的にも許されまい。

いや、STEWMACのはFタイプだから、Aタイプだったら、音のキャラクターが違うし、エレキで言えば、フェンダーストラトとギブソンレスポールを両方持つ人が多いように2本あっても不思議はないかも・・

などと、色々考えているが、とりあえず、キットに付属するマニュアル本はAMAZONでも入手可能であるので、これだけでもアマゾンで買っておこう。

The Ultimate Bluegrass Mandolin Construction

The Ultimate Bluegrass Mandolin Construction

  • 作者: Roger H. Siminoff
  • 出版社/メーカー: Hal Leonard Corp
  • 発売日: 2004/04
  • メディア: ペーパーバック

RDTSC命令

Filed under: 組込みシステム — @ 12:35 AM

Pentium系のプロセッサにはタイムスタンプカウンタというカウンタがある。実は多くのアーキテクチャでこの手のカウンタはあるのだが、Pentium系のカウンタは64ビット幅なので、かなり時間が経ってもオーバフローすることが少なく使いやすいのである。

ちなみに、64ビットマシンのAlphaプロセッサでは設計者は何を思ったか32ビットのタイムスタンプカウンタにしてしまったので、長い時間の計測には全く使い物にならなかったのであった。

AMD64アーキテクチャにも当然ながらこのカウンタは継承されていて、命令の使い方は良く似ている。

が、64ビット値を読み出すというところで、32ビットマシンであるIA32とAMD64で高級言語からデータの読み出しをするときに注意が必要である。

64ビットの値を受け渡すのには、IA32ではEAX/EDXのペアでデータを渡すようにしているのであるが、64ビットアーキテクチャのAMD64が普通にC言語から64ビットデータを取得する時には、当然ながら1つのレジスタで読み出せるのである。

その部分が、トラブルの種になる。
RDTSC命令は、IA32との互換性を考えて、AMD64でもEAX/EDXペアにカウント値を読み出すので、64、32ビット共用の読み出し関数はこの点を考慮しないといけない。

inline long long rdtsc() {
int ax,dx;
asm(“rdtsc”:”=a”(ax),”=d”(dx));
return ((long long)dx<<32 | ax);
}

このカウンタ、実は利用時に注意が必要である。
というのは、単にクロック数をカウントしているだけのカウンタなので、ノートPCなどでSpeedStepをONにしていると、マシンの負荷状況によってクロック周波数が異なり、実時間に変換するときに、計測時点での実クロック周波数を読み出す手段がないと変換できないのである。

SpeedStepを用いていなければ何の問題もないのであるが・・

Powered by WordPress