8086 Multiprocessing Features

 1979年10月にIntelが発行したマニュアル(印刷物)「The 8086 Family User's Manual」の中にマルチプロセッサに関する記載がありました。

 内容としては、8086を利用した共有メモリ型のマルチプロセッシングに関する記載ですが、別途、個々のCPU毎にローカル(プライベート)メモリを設置する事も出来る柔軟な仕組み(しかしプログラミングは複雑になりそう)です。

 これを実現したハードが実際に製品化されたのか?筆者は知りません。

 このマニュアルによりますと、メモリを共有出来るプロセッサは下記の3種類です。
  8086 : 16Bit CPU
  8088 : 16Bit CPU (8086ソフト互換のCPU、物理データバス8Bit)
  8089 : IOP (I/O プロセッサ)

 翌1980年に発表された8087もメモリを共有しますので実質4種類のプロセッサでメモリを共有出来ると思われますがマニュアルが出版された時点では8087は未発表だった為か8087に関する記載はありませんでした。その為、8087と同時に複数の8086を接続出来るのか?その場合に8087を複数CPUで共有出来るのか?などは不明です。

 この当時の8089 IOPの用途としては、フロッピーコントローラやグラフィックコントローラを想定していた様で、現代で言えばGPUやRAIDプロセッサ相当品でしょうか。
 余談ですが、当時、子供だった筆者が所有していた初号機も同様にフロッピー制御用にメインCPUと同じCPUを別途備えるデュアルソケット構成でした。

 話を8086のマニュアルに戻しますが、プロセッサ間を接続するバスの設計思想は FSB よりも PCI に似た印象の MULTIBUS(TM) という名称のバス上にメモリやCPUやIOPを複数接続し、バスマスタに成ったプロセッサとメモリがバスをコントロールする仕組みの様で、プロセッサ と MULTIBUS の間には 8288 BUS CONTROLLER と 8289 BUS ARBITER の2個のチップを入れて、プロセッサ間の調停を行う様です。その為、これらの周辺チップがプロセッサ毎に必要に成り、マザーボードに搭載する部品点数が増大しそうです。
 割り込みコントローラはPIC(8259A PROGRAMMABLE INTERRUPT CONTROLLER)を使う様ですから、デバイスは個々に専用CPUもしくは専用IOPが受け持つ必要がありそうです。その為、SMPではなくAMP(Asymmetric Multi Processing)になると思われます。このタイプのAMPではデバイスからの割り込みは専用に接続されたCPU(又はIOP)が受け持つ為、OSが負荷を分散する事が出来ず、プロセッサの負荷が不均衡に成ります。とは言え、当時のプロセッサはタスク切り替えだけで数百~数千サイクルを要した為、極力作業分担というか担当プロセッサを決めておき専念させた方が効率的だったという側面もあると思います。ちょうどCPUとGPUの役割分担が決まっている事に似た状況とも言えます。


 以下は、80386以降のマルチプロセッサに関する話です。

 SMPに対応した割り込みコントローラとしてAPICを利用出来る様になったのは、初代APICとして知られる 82489DX (132 Lead PQFP) からで、対応するCPUは 80486 又は Pentium(P5 = 初代Pentium) との組み合わせからの様です。 残念ながら、この世代の自作で利用出来そうなマザーボードは未だ見付けていませんが、完成されたシステムとしては読者の方に教えて頂きまして多数見付かりました。この記事のコメント欄に80486のデュアルソケットマシンのリストを掲載しております。
 この世代は、132ピンもあるAPIC(82489DX)をマザーボード上に少なくとも3個(2個をそれぞれのCPUに接続し、残り1個をチップセットに接続、APIC同士を4BitのICC busで接続)搭載する必要があり、その他にも各種チップセットが必要ですから、マザーボードが巨大(或いは複数の基板で構成)かつ高価に成らざるを得なかったと思われます。その為か、後継の Pentium(P54C) からはCPU内部にAPIC(Local-APIC)が内蔵され、それがP54Cの売りの一つにもなっています(キャッチコピーは、グルーレスのデュアルプロセッサ)。P54C以降は、マザーボード上に1個のAPIC(64pin QFP 82093AA I/O-APIC)と430NX/430HXとの組み合わせでSMPに対応出来る様になりました。APICのマザーボード搭載数が3から1に減った事に加え、ピン数も132ピンから半分の64ピンに削減されていますので、マザーボードを製造する側の視点で見ると雲泥の差と言えそうです。後にI/O-APICもチップセット側に内蔵され、この形式が現在のSMPの元祖と言えます。現在主流のデュアルコアやマルチコアCPUには標準でAPICが搭載され、互換性を維持する事でSMPに対応しています。

 では、8086 から 80486 までの間はどうだったのか?と言えば、Intelの関連ドキュメントは未だ見付かりませんが 80386 でデュアルCPUに対応した COMPAQ SystemPro 386 という製品が 1989年に登場して SCO Unix / OS/2 / NetWare SFT-III / WindowsNT3.1 などのOSがこれに対応していた様です(Wiki情報)。 但し、SystemPro 386 は、どうやらSMPではなく上記の8086と同じタイプのAMP(Asymmetric Multi Processing)の様で、対応するOS側も SCO Unix はカスタム品、WindowsNT3.1 の場合もSystemPro 386専用のHALが有った様です。
 Windows2000のHALリストの中にも Compaq SystemPro Multiprocessor という名称のHALがありましたので、SystemPro は PC/AT互換機の標準的なSMP構成ではないのだと思われます(つまり COMPAQ SystemPro は PC/AT互換ではないのかもしれない、もしくはPC/AT互換でありながら独自拡張によるAMPを実現したのかもしれない)。

 x86版のWindows2000でマルチプロセッサに対応したHALは4種類ありました。
  1:ACPI Multiprocessor (ACPIに対応し、かつAPICを搭載したもの)
  2:MPS Multiprocessor (APMかつBIOS で MPS 1.1/1.4 が選択出来る物)
  3:Silicon Graphics Visual Workstation (シリコングラフィックのWS専用HAL)
  4:Compaq SystemPro Multiprocessor (COMPAQ SystemPro 専用HAL)

用語解説:
※:PC/AT互換機での用語解説です

・ ACPI:Advanced Configuration and Power Interface
  ACPI 1.0:SMP対応(MADT:Multiple APIC Description Table)
  ACPI 2.0:NUMA対応(SRAT:Static Resource Affinity Table)
  ACPI 3.0:NUMA拡張(SLIT:System Locality Distance Information Table)
  ACPI 4.0:NUMA拡張(MSCT:Maximum System Characteristics Table)

APIC:Advanced Programmable Interrupt Controller
  SMP(対称型マルチプロセッサ)に対応した割り込みコントローラ

・ APM:Advanced Power Management
  初期の(ACPI登場以前の)電源管理の仕組み、及び対応BIOS

・ AMP:Asymmetric Multi Processing
  非対称型マルチプロセッサ
  割り込み制御にPICを使ったマルチプロセッサ
  割り込みやデバイス制御が特定のCPUに集中する
  初期のCOMPAQ SystemPro 386/486 2CPU構成
  BIOS設定でAPIC/PICの選択をPICにしたマルチプロセッサ構成

・ MPS:Multi Processor Specification
  マルチプロセッサに対応したBIOS及び搭載システムの仕様
  MPS1.1:標準バス対応
  MPS1.4:拡張バス対応(PCIブリッジによるバス拡張の事か?)
  ※マルチプロセッサのシステムでは、PCIバスに加えて別途64Bit-PCIやPCI-Xバスを搭載したシステムが多く、それらは各々が別系統の割り込み回路(INT線)を持つ事が出来た為、それに対応した物をMPS1.4としていたのかもしれません(未だMPS1.1/1.4に関する一次資料には到達していません)。Micron SAMURAI64がAGPスロットを2本設置出来た理由もINT線が別系統の為、INT#Aを個々に割り当て出来た為と思われます。

NUMA:Non-Uniform Memory Access
  不均一メモリアクセス型マルチプロセッサ
  AMD Opteron 2CPU以上、もしくはOpteron 6xxx 1CPU以上
  Intel Nehalem-EP以降かつ2CPU以上
  Micron SAMURAI64
  NUMA-Q

PIC:Programmable Interrupt Controller
  オリジナルのPC/ATに搭載されていた割り込みコントローラ
  Intel 8259 又は互換品
  SMPには対応出来ない

・ SMP:Symmetric Multi Processing
  対称型マルチプロセッサ
  割り込み制御にAPIC又は互換品を使ったマルチプロセッサ
  AMD K7世代の2CPU構成(AMD-760MP/MPX)
  Intel Socket7~LGA771までの2~4CPU構成の殆どがSMP構成
  システム上にノースブリッジが1つだけ存在し、そこに全てのメインメモリと全てのCPU、及び全てのI/Oバスが集約されたシステムで、デバイスI/Oやメモリアクセスが、どのCPUからでも均一にアクセス可能なシステム

 
  
スポンサーサイト
プロフィール

DualSocketTheWorld

Author:DualSocketTheWorld
自作を始めて20台目くらいになりますが、最初からデュアルソケット限定(始めた当時はデュアルスロット)で自作しており、近年になってAMD K6を試したくなりSocket7でK6-2+のシングル構成で組んだのがシングル初です。

シングルマザー(含:シングルソケットマルチコア)や4ソケット以上の自作は基本的にしませんし、メーカー製PCの改造も基本的にはしません(ノートPCのSSD化くらいはしますが・・・)

基本路線はワークステーションと呼ばれる分野での自作で、OSもWindows系であればProfesionalが主な対象に成ります。

ゲーマーの様なOverClockは行わず、WS路線としてハイエンドCPUとハイエンドGPUの組み合わせで定格或いはDownClockで発熱を抑えつつ、その時のアーキテクチャに置いて爆速かつ静音を目指し、30年以上の長期に渡り稼動状態をキープする事を目指します。

※基本的にリンクフリーです。どこでも自由にどうぞ。

※画像は時々変ります。

※お決まりの文章ですが、改造は個人の責任で行ってください。ここに記載された情報は間違いを含んでいる可能性が有り、それを元に製作や改造などをして失敗しても筆者は一切責任持てませんので悪しからず。

筆者略歴:
小学生時代にゴミ捨て場で拾ったジャンクテレビ数台を分解して部品を取り出し真空管アンプを自作、中学生時代にPC8801mkⅡsrでZ80アセンブラを始める。社会人になって初のプログラムは弾道計算、後に医療系・金融系プログラマ~SEを経て100~200人規模プロジェクトのジェネラルマネジャを数年経験、独立して起業。現在は不動産所得で半引退生活。
(人物特定を避ける目的で一部経歴を変更しています)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
アクセスカウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR