単語記事: x86

編集

x86とは、Intelの開発したCPU、およびその他の互換CPU集合である。

概要

まず、一番最初のCPU8086である(1978年)。このCPUは1MBメモリを扱うことができた(いわゆる640KBのはこの1MBのうち上位384KBがグラフィックなどに利用されたから発生したもの)。80186(1982年)は8086に毛が生えた程度のものだったが、80286(1982年)では保護モード(要するになんかおかしなアクセスをしたらプロセッサが例外を出してプログラムの実行を阻止する)が導入された。とはいえまだ16ビット。32ビットになったのは80386(Intel386)(1985年)からである。しばしばi386という単が出てくるが、これはこのIntel 386から来ている。のちにIA-32と呼ばれる命令体系の始まりである。そして、80486(Intel486)ではFPU(要するに小数の計算をする部分)が統合されたラインナップが出てきた。その後はPentium系が出てきて、その後も命令が拡されていく。

ここまでの話を聞いていればわかると思うが、要するにx86の「86」というのはこの末尾の数字2桁のことである。ちなみにいうと、このx86を継承した64ビットCPUのことは「x86-64」とか「x64」とかいうのだが、このうち前者はx8664ビット拡であることが一でわかる呼び方となっている。ただし、この64ビット拡を最初に考えたのはIntelではなくAMDである。

特徴

今回は32ビット時代の話に絞ることにする。また、FPUSIMDの話は省略することにする。

見ればわかる通り、レジスタの数が少ない。また、命令長がバラバラなので命令の解釈が少し大変である。何より「片方のオペランドは更新される」というのがプログラム上では厄介である。

生き残りの歴史

CPUアーキテクチャとして非常に古い特徴をそなえるx86は昔からダサい、ダサいと言われていて、新しいアーキテクチャが出るたびにとかくネタにされてきた。もちろんIntelとしてもこの状況をよしとしておらず、何度か新しいアーキテクチャへの刷新を試みている。というより、そもそも初代8086からし8ビット8080となるべく互換性が取れるように設計されたCPUであり、Intel的にも本命が完成するまでのつなぎのつもりで開発したものだった。

ところがIntelによる「x86キラー」は何故かことごとく開発失敗してしまう。

まず本来8080の次になるはずだったiAPX 432は大赤字を出して80286に敗。そこそこの新機軸を持った80286が「単に高速な8086」として生き残る。

世間でRISCが流行り始めた際には、危機感を覚えたIntelもRISC系をいくつか開発しハイエンドを取りに行くのだがうまくいかず、製品ラインとして生き残っていない。

64ビット化はアーキテクチャ刷新の大チャンスであり、IA-64としてItaniumを投入するが、こちらもx86互換の性が悪かったことから乗り換えには失敗。挙げ句AMD導したx6464ビット時代の後継を持っていかれるという体たらくである。

こうして後継の開発には失敗したx86であるが、なんだかんだ言ってライバルアーキテクチャ駆逐している辺り、アーキテクチャの互換性が如何に大事かを知らしめている。x86CPU界のシーラカンス的特徴を備えながら、Intel力技創意工夫によって今日を生き残っているのだ。

関連動画

関連商品

関連コミュニティ

関連項目


【スポンサーリンク】

携帯版URL:
http://dic.nicomoba.jp/k/a/x86
ページ番号: 5147757 リビジョン番号: 1975106
読み:エックスハチロク
初版作成日: 13/09/27 23:42 ◆ 最終更新日: 14/02/15 12:57
編集内容についての説明/コメント: 何故か暗殺できない
記事編集 / 編集履歴を閲覧

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

x86について語るスレ

1 : ななしのよっしん :2013/09/27(金) 23:47:41 ID: 24xGu5+OSP
ペケハチロクって呼んでたわ
2 : ななしのよっしん :2013/12/04(水) 01:02:47 ID: 33AFrFLp8a
歴史上、一度たりとも「カッコいい」と形容されたことのないアーキテクチャ
生まれた時から「互換路線でダサい」といわれ、16bitでは68000と較され、32bitではRISCと較され・・・。

今ではCISCだからダメなんてことはないにしても、デコーダの酷さは弁護のしようがない。
こんなので未だにがんばってるインテル力技っぷりにはシャッポを脱ぐでござるよ。
3 : RERA_X :2015/04/10(金) 02:42:27 ID: CtlRstvnHP
Windows 7搭載パソコンがどんどん64ビット化していったことで、
やっとx86のお役御免が見えてきた。

とはいえ、x64x86の拡であるぶん、取り方によってはまだ
続いているともいえる。
4 : ななしのよっしん :2016/12/19(月) 23:36:45 ID: NinR9uYTga
は逆に、余程のことがない限りx86は残り続けると思う。
32ビットのフラットメモリ4GB、およそ均的なプログラムはこれだけのアドレス間があれば足りないということはまずないし、64ビット幅の演算命令が使えることでパフォーマンスが大きく向上するようなプログラムもそんなに多くはないと思う。
C言語で「とりあえず適当整数」っていったら、深く考えずに32ビット int で大抵十分よな。

逆に、64ビットモードだとポインタ幅が全部64ビットに膨らんでCPUのキャッシュ効率落ちるから、多くの場合で32ビット版よりもパフォーマンス劣化するというね。
5 : ななしのよっしん :2016/12/29(木) 23:28:40 ID: 33AFrFLp8a
x86が当面生き残るという点には異論ないんだけど、その論拠には同意しかねる

* 64bit演算はレジスタ自然にできるというだけであり、必要なければそのまま32bitでいい。実際intは大体どこでも32bitのまま(64bitlonglong longにするから)
* x64の一般的なメリットレジスタ幅が64bitになったことではなく、汎用レジスタが増えたことにある。x86の弱点の一つは簡単なことでしょっちゅうpush/popが発生する非効率さ
* 64bit化でメモリ使用量が増えるという点はその通りなのだが、キャッシュに乗るようなホットなアクセスに関しては上記レジスタ増による向上分で十分相殺されるのでは?
* アドレス間が広がることは個々のアプリケーションというよりOSシステム全体に余裕ができるということを意味する。またアドレス間が広いということにはそれ自体のメリットがある(ASLRが安全に動作するとか)
6 : ななしのよっしん :2017/04/19(水) 23:29:07 ID: Rf2bfCLUlw
SSE2 が必須になってる (x87 を使わなくて済む、SSEを前提としたABI) のも AMD64 の良いところ。

AMD64 のアセンブリで R8-R15 を使おうと思うと REXリフィックス分だけ駄にならないだろうかと考え出しても眠れなくなる異常
  JASRAC許諾番号: 9011622001Y31015