Webページを見て思ったこと

ニュースサイトなど他人のWebページを見て思ったことを書きます。古い順に並べます。

2008-4-20 Intel AVXとLES,LDS命令の関係

後藤弘茂のWeekly海外ニュースのx86からの脱却を図るIntelの新ロードマップによると「命令フォーマットが根底から変わるAVX」とされる、Intel Advanced Vector Extensions (AVX)について書く。調べたところ「x86からの脱却」と言えるほど変わるわけではない。C4またはC5で始まる、3または2バイトの新しいプリフィックス(VEXプリフィックス)ができただけである。他のx86命令と同様に、オペコードの後にはModR/Mバイトが(そして必要ならSIBバイト、変位、即値が)続く。

C4,C5はまた、LES,LDS命令の第一バイトでもある。最初に見たときは、AVX命令は64ビットモード専用かと思った。64ビットモードでは、LES,LDS命令は使えないからである(使用できない命令を参照)。しかし、そうではなかった。

まず、Intel(R) AVXからダウンロードできるIntel Advanced Vector Extensions Programming ReferenceのFigure 4-2. VEX bitfieldsを見てほしい。C4,C5の次のバイト(Byte 1)の上位2ビットは、RかXかvvvvの最上位ビットである。これらの説明をよく見ると、「in 1’s complement (inverted) form」と書いてある。ここで思い出してほしいのは、AMD64/Intel 64で追加されたレジスタ(R8、XMM9など、レジスタ番号8-15のもの)は、64ビットモード以外では使えないことである。つまり、LES,LDS命令が使えるモードでは、レジスタ番号は常に0-7であり、Byte 1の上位2ビットは両方とも常に1である。

次に、LES,LDS命令の第二オペランドはModR/Mバイトのr/mフィールドで指定されるメモリであり、レジスタではないことを思い出してほしい。つまり、LES,LDS命令のModR/Mバイトの上位2ビットがともに1になることはない。結局C4,C5の次のバイトは、上位2ビットの値によって

と解釈できる。このようにしてVEXプリフィックスは、32ビットモードなどでもLES,LDS命令と共存可能なように作られていた。レジスタ番号を値反転するのはきたないが、互換性のためにここまでするのかと感心した。

IntelのAVXは、AMDのSSE5とともに、今後どうなるか楽しみである。


2018-9-30 ニュースの信頼性

朝日新聞の記事「AI、医師を上回る診断精度も 全自動治療の時代来る?」に、まともに校正をしたとは思えない表現があった。最初の段落の「データにバグが起こり」のところである。そのせいで、続く記事本体も読む価値がないものに思えてきた。

コンピュータのソフトウェアの技術者ならこんな言い方はしない。その用語である「バグ」を使うなら、使い方も倣うべきである。おそらく、「プログラムのバグのせいでデータに誤りが入った」というようなことを言いたいのであろう。わざわざ「バグ」という言葉は使わずに、「プログラムのミスにより」で十分だと思う。なお、バグのせいで実際に誤動作が起きることを「バグが発生」と言うことはあるので、「バグが起こり」だけで誤りとは言い切れない。

これで思い出したのだが、1989年にNHKのニュースで、「ソースコードと呼ばれる高度な先端技術」の話をしていた。これには笑ってしまった。「原稿という洗練された文学作品」みたいな表現であることに気がつかなかったのであろうか。

自分の専門分野に関係あるニュースがどのように報道されているかを見聞きすれば、他の分野のニュースをどれくらい信じてよいかがわかってくる。コンピュータに関するニュースのレベルは、パソコンがこれだけ普及してもあまり変わっていないように思う。