Vortex86

Vortex86はx86互換のコアを用いたSoCである。元々はRise Technologyから基本設計を入手したSiSの製品であったが、台湾企業のDM&P Electronicsに売却された。
DM&Pはその後、XcoreにチップをXcore86とリブランドする権利を与えた。
バージョン.
PDX-600は"Vortex86DX"の派生品であり、違いはRS-232ポートが5ポートから3ポートに削減されていることと、I2Cとサーボコントローラが搭載されていないことである。これにより、産業分野よりも組み込みシステムを狙った製品となっている。ネットブックへの採用事例がある。
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のエミュレートを行っていることを反映している。