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からでも均一にアクセス可能なシステム

 
  
関連記事
スポンサーサイト

コメントの投稿

非公開コメント

No title

20年以上前なので定かではありませんが
プロサイドのサーバが486でマルチプロセッサだった
記憶があるます。なにかとごっちゃになっているか
しれませんが

No title

486マルチプロセッサですが、こんな論文があるようです

https://ds.lib.kyutech.ac.jp/dspace/bitstream/10228/.../tech71_p43_50.pdf

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: No title

> 486DX Dualがあるところにはあったのですよ。

有難う御座います。

486のSMP機が結構沢山ある事が判りました。
但し、PC/AT互換機か?マザーボード単体売り(つまり自作出来る)か?は個々に調べてゆかねばなりません。

3CPU以上に対応したものも多数ありましたが、ブログ趣旨からデュアルソケット限定でリストにしますと、これだけ有りました。

Acer AcerFrame 1000MP
Advanced Logic Research ALR 3000 MP
Advanced Logic Research ALR ProVEISA DMP4
Advanced Logic Research ALR ProVEISA SMP4
Compaq ProLiant 2000 486
Compaq SystemPro 486
Compaq SystemPro 486e
Compaq SystemPro/XL 486
ICL MX486
Intel Xpress Deskside/MX-X2XPENT66TE16F
Memorex Telex Corporation 8630 Superserver
Memorex Telex Corporation 8640 Superserver
Siemens Nixdorf PCE-4T
Tricord Systems PowerFrame M30
Tricord Systems PowerFrame M300
Tricord Systems PowerFrame M40
Tricord Systems PowerFrame M400
VTech Platinum SMP

Re: No title

> 486マルチプロセッサですが、こんな論文があるようです

486当時にマルチコアのCPUを研究されていた様ですね。

シングルソケットの486マザーを使って、オリジナルの多層基板に8CPUを搭載、模擬的に8コアのCPUを構築。

しかし当時の業界はクロック至上主義でしたね、私が言うのもなんですが・・・

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: こんなことを話しても昔話

> 1990年頃AT互換機に手を出した人はGUI環境を快適に使うには
> 98では難しいと感じて手を出した人が多かったと思うのです。

1990年は、都内にある夜間の情報処理専門学校に通っていた年で、よく憶えています。既に独学でプログラミングの知識はありましたが、情報処理試験の対策として通っていました。成績はトップで情報処理試験にも合格でしたが専門学校は出席日数が足らずに卒業出来なかった・・・事を今思い出しました。

当時、クロック至上主義だった専門学校の先生に「100MHzのZ80が有ったとしても、16MHzの80486には勝てない」と言って笑われた事があります。そのくらい大多数の人々にとってクロックが絶対性能だと思われていた時代でした。

1990年当時の家庭向けには、98以外にもX68000やFM-TOWNSあたりが国内では良く見掛ける機種で、たまにMacを見るくらいで、私が友人宅や知人宅・親戚宅などでPC/ATを目にする機会はありませんでした。

当時、私がPC/AT互換機に接する機会は、IBM汎用機やUNIXホストの制御端末として、TSO端末やVT-100端末をソフト的にエミュレートする端末アプリを稼動させるための端末機で、つまりテキスト画面でした。

DOS/Vが登場しても、仕事でGUIやWindowsを利用するようになるのはNT4.0が普及してからで、それまではNetWareをサーバにして、画面はiii(トリプルアイ)というUI設計ツールを使ったテキスト端末でした。こういった端末は中小の小売店が在庫管理に使う為にこぞって導入していたのを記憶しています。

> 個人で使うにはUNIXは敷居が高すぎましたね

そうでしたね。

当時は「シャットダウン」を知らない人がIT業界内でさえも大勢居て、事務所にUNIX機を設置しておくと試しに電源を入れてしまう人が時々居て、よく解らないから電源OFF・・・という事が度々起きて、翌朝起動するとファイルシステムが壊れているという事が度々ありました。UPS必須でしたし、当時の家庭では無理でしょう。

Win95がヒットした1995以降もしばらくは突然電源OFFする人が大勢居て理由も解らずにchkdskしている光景をよく見掛けました。

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: No title

> 日立が入っていたため、こんなコンピュータで何ができるかと途方にくれたことがあります。

 どんな機種であれ、コンパイラ、又はアセンブラが有れば、Hello World. を作る所から始めて、カレンダーを作るのが手軽で実用性もあり良いんじゃないか?と思います。

 時間に余裕が有れば、過去の時代に合わせた暦(和暦・西暦・太陽暦・etc)を考慮の上で各時代のカレンダーを演算するのが歴史の勉強にもなり良いと思います。

 今の学生が最初に触れるコンピュータは、たぶんスマホでしょうね。スマホでHello World.を作ろうとしたら、それだけで知識が身に付くかも?

 しかし、手軽にプログラミング出来る環境が無い場合はどうしましょうね・・・

> 昔のほうがアーキテクチャの種類も多くワクワクさせるものがあったような気がします。

 今ある物を超える物をスクラッチビルドして、そこから利益を出すのは難しいでしょうね。

 国が国家プロジェクトとして推進するというなら別ですが。
プロフィール

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