Vortex86

Vortex86はx86互換のコアを用いたSoCである。元々はRise Technologyから基本設計を入手したSiSの製品であったが、台湾企業のDM&P Electronicsに売却された。
DM&Pはその後、XcoreにチップをXcore86とリブランドする権利を与えた。

バージョン 
オリジナルのVortex86 (SiS55x/Rise mP6もしくは単にVortex86) – SiSにより開発された。3つの整数用とMMX用の命令パイプライン、分岐予測を有する。
Vortex86SX – 動作周波数300MHz。L1キャッシュ(データ16KB、命令16KB)を有する。FPUとL2キャッシュは搭載していない。SDRAMとDDR2 SDRAMの両方に対応。
Vortex86DX – 動作周波数600MHz～1GHz。(800MHz動作時の消費電力は2.02W)、L1キャッシュ(データ16KB、命令16KB)、FPU、L2キャッシュ(256 KB)、6段のパイプラインを搭載。1GBまでのDDR2 RAMを使用可能。
PDX-600はVortex86DXの派生品であり、違いはRS-232ポートが5ポートから3ポートに削減されていることと、I2Cとサーボコントローラが搭載されていないことである。これにより、産業分野よりも組み込みシステムを狙った製品となっている。ネットブックへの採用事例がある。
Vortex86MX – 動作周波数1GHz、CPUコア自体はVortex86DXからほとんど変化していない。ISAの廃止とGPU、HDオーディオコントローラ、UDMA/100 IDEコントローラの統合が行われている。コンシューマグレードの製品はPMX-1000としても知られている。Gecko Edubookの現行モデルはVortex86MXをリブランドしたXcore86を搭載している。

DM&PはSoCの機能を利用できるようにカスタマイズされた組み込みLinuxディストリビューションを提供している。

Vortex86シリーズ以前、DM&PはIntel 80386SX互換で25～40MHzで動作するSoCであるM6117Dを製造していた。

CPU 
CPUにはi486アーキテクチャが実装されているが、オリジナルのVortex86のうち初期のものとVortex86SXはFPUを有していない。i487無しでi486SX上で動くあらゆるコードおよびエミュレーションではあるがi586上で動く浮動小数点演算命令を使用しないコードはほぼ全てVortex86上で動作する。Vortex86DX以降ではi586用のコードは全て動作する事になっているが、実際には一部のあまり使われないコードが動作しない。一部のLinuxカーネルは(ビルド時のオプションを指定することで)FPUのないCPU上でFPUをエミュレートすることができる。これにより、Linux上で動くプログラムであれば、浮動小数点演算命令を使用する物であっても全てのVortex86上で動作させることができるが、その実行速度は遅い。

i686用のコードはCMOV命令が実装されていないので動作しない可能性がある。この命令は条件分岐とMOV命令を組み合わせたものである。CMOV命令を用いたコードを生成するためにより新しいCPUに最適化されたコードを出力するようコンパイラに指示を行うことができる(たとえば、GNU Cコンパイラには-march=i686オプションがある)。i686用のLinuxシステムはVortex86上では基本的に動作しない。なぜなら、i686用にビルドされたGNU Cライブラリはstrcmp命令内でCMOV命令を使用しており、strcmp命令はLinuxの動的ローダ(ld.so)内で使用されているからだ。そのため、共有ライブラリを用いたプログラムは起動することさえできないのである。

厳密には、CMOV命令はi686アーキテクチャではオプションとなっている。しかし、Intelのi686製品であるPentium ProにはCMOV命令が搭載されていたため、i686用のコードを生成するように指定すると、CMOV命令が利用可能であると解釈するプログラムが多い。

以下はオリジナルのVortex86についてLinuxカーネルが(/proc/cpuinfo経由で)どう報告するかを示したものである。注意すべき点として、CPUにはFPUが搭載されていないにもかかわらず、FPUが利用可能となっていることがある。これはLinuxカーネルがFPUのエミュレートを行っていることを反映している。

processor       : 0
vendor_id       : SiS SiS SiS
cpu family      : 5
model           : 0
model name      : 05/00
stepping        : 5
cpu MHz         : 199.978
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu tsc cx8 mmx up
bogomips        : 399.95
clflush size    : 32
cache_alignment : 32
address sizes   : 32 bits physical, 32 bits virtual
power management:

脚注

外部リンク 
DM&P Electronics 公式サイト
Vortex86 シリーズ概要
DOS、Linux、Windows上でのCPU速度変更方法

組み込みシステム
マイクロプロセッサ