Intel、X86-S でレガシーからの飛躍へ


Intel、新「X86-S」アーキテクチャで8086互換を切り捨て



昔、i386 でアセンブラとか機械語でプログラム書いていました。intel の 8086 系のプロセッサは、Run Reset の信号を受け取ると CS:FFFF IP:0000 にリセットされてリアルモードで起動します。20 Bit のアドレスバスなので実アドレス 0xFFFF0 ですね。大抵のシステムは、アドレスバスの最上位が ROM で、ここでブートすると、 FFFF:0000 にある、JmpF 命令を実行して、 ROM の開始アドレス付近にある Bios を実行します。ROM の低いアドレス付近は、割り込みベクタに割り当てられていて、BiosによってRAMに配置されるとハードウェアの割り込みは割り込みベクタの指定された割り込み処理をする。

当時はまだ DOS の時代ですから 16 Bit、ここから i386 のプロテクトモードだとかページモードに移行するには酷く面倒なセグメントレジスタのポイント先の中身、ディスクリプタを作ってプロテクトモードだとかページモードなんかに移行させるわけです。このあたりのプログラミングはもう神がかりで、プロテクトモード+ページモードにうまくハマったことなんて私には残念ながらありませんでした。ホント 386 系のメモリ管理ドライバなんてよくできていたよなと思います。


うーむ懐かしいなぁ。


実際に 16 Bit のプログラミング技術で 32 Bit のディスクリプタテーブルを記述するのはすごく面倒くさいものです。まして16 Bit で 64 Bit のテーブルを作成して、プロテクトモードに入るのは結構手間がかかる。

åつまり、オーバーヘッドは大きいわけですね。
今でも iIntel の Core i シリーズもこの仕組みを踏襲していて、今でも Intel のプロセッサって、Run Reset の信号を受けると、0xFFFF0 のアドレスから始まるんですね。

という事で Intel のプロセサから 16 Bit リアルモードや 32 bit プロテクトモードがなくなって、完全に 64 Bit のモードしかなくなってしまうであろうというお話。



Intel、X86-S でレガシーからの飛躍へ_a0056607_11300106.png


もう、擬似的に動く仮想 86 モードも無いようだし、リアルモードもなくなってしまうと、まず、DOS は動かない。DOS ボックスを使って古いゲームも動かない。もっとも Windows 自身が 16 Bit コードを追い出してしまったので 16 ビットの懐かしいゲームは動かないでしょうけど、DOSBox のようなエミュレータで動くのかな。


そもそも、今どきのマザーボードでは FD 起動も難しいでしょう。

おそらく、今どきのOSは、Bios からブートしたあとの初期処理で、割り込みベクタやメモリマップを構築してから、16ビットリアルモードから、32ビットや64ビットのプロテクトモードに遷移して行きます。x86-S アキテクチャでは、その初期処理は必要ではなくなる。32ビットコードは一応 X86-S でもサポートはされるみたいですが細かいところはわかりません。完全64ビットモードであっても、OS レベルでエミュレーションをしても、大きなオーバーヘッドにはならなければそういう手段もあるわけですね・

まず、BIOS からの初期化処理が、ソフトウェアレベルで必要なくなります。ハードウェアとしては、16ビット、32ビットバス周りのアクセスだとか、マイクロコードを考慮する必要が無くなるわけだから、僅かとは言え、CPU の内部設計や、マザーボードのチップセット周りの設計が容易になるのでしょう。ニーズの少ない 16/32 bit コードに必要なハードウェアの設計も簡素化できる。

他にも割り込みベクタも0番地付近に展開させる必要も無くなるし、割り込み処理に必要な BIOS 処理も64 bit のみになる。

まず、今の intel x86 自体、従来の 8086 アキテクチャを継続・維持してきた事自体、驚きですね。

問題があるとすれば、かなり古い機材で動いているシステムで、機材の更新をするために必要な機材の調達が困難になるであろうことです。

以外とあるんですよ。DOS でしか動かないシステムって。製造業の生産管理や品質管理、交通インフラの運行管理とかですね。

ゆりかもめを25年間支えた「PC-9801NS」が引退。「頼れる一台でした」


そもそもこれらの設備は30年とかの単位で設備投資するため、80年代、90年代の古い DOS で動くなんて言うことが当たり前にあります。最新のジェット戦闘機に見えても、基本設計は20世紀のものですから、私達一般コンシューマからすると設備というものは驚くほど古い枯れた技術が使われています。

湾岸戦争で活躍した軍事技術は、今でも第一線で活躍しています。更新計画があるそうですが B52H 爆撃機なんて 1960 年代の設計だから、搭載しているシステムだって想像すても古いでしょうね。まさか磁気バブルメモリなんて使っていないだろうけど、磁気テープなら湾岸戦争時代の爆撃機では使われていたかもしれません。

話が飛びました。

X86-S システムから16ビット、32ビットモードが無くなると、当然レジスタの構成も64ビットだけになるんでしょうね。つまりプログラムコードは64ビットのみのオペランドを持ち、コード自体がシンプルになりそうです。長年課題だった、 CISC である x86 コードの単純化です。プログラムの分岐判断が、これによってシンプルになりそう。分岐予測がシンプルになり単純な処理なら単純に高速化されるのでしょうか。インテルの長年の問題がこれで幾つか解決されます。







by islandcenter | 2023-06-04 11:33 | 雑文 | Comments(0)