Intel 386プロセッサのシリコンダイ調査
(righto.com)- Intel 386はx86を32ビットアーキテクチャへ拡張し、4GBセグメントと仮想メモリをサポートしたことで、その後のPC産業におけるx86とIntelの地位を確立した転換点となった
- ダイ写真からは、386が1.5µmのCHMOS-IIIから1µmのCHMOS-IVへ単純に縮小されたのではなく、命令デコードユニットの向き、標準セル密度、ボンドパッド配置に至るまで大きく変化していたことが分かる
- 386 SXは内部の32ビット構造を維持しつつ、16ビットバスとより少ないピンを用いることで低コストのパッケージングを可能にし、1988年にIntelはSXをDXより最低100ドル安い219ドルで販売した
- 386 SLはノートPCを狙ったSuperSet拡張版で、ISAバスコントローラ、電源管理、外部キャッシュコントローラ、メモリコントローラを386コアと統合し、855,000個のトランジスタを搭載した
- 386は自動化CAD、RTLシミュレーション、標準セル、手作業のデータパスを組み合わせて設計され、初期シリコンの失敗や32ビット乗算バグを経て、Intelの技術的・市場的転換を導いた
386が現代コンピューティングの転換点となった理由
- 1985年に登場したIntel 386は、x86系の一世代というだけでなく、現代PC産業の構造を変えたチップだった
- x86アーキテクチャを32ビット化し、20世紀後半を支配したコンピューティングアーキテクチャを定義した
- Intelだけでなく、コンピュータ産業全体におけるx86の重要性を確固たるものにした
- IBMによるPC市場の支配を終わらせ、Compaqがアーキテクチャ上のリーダーとなるきっかけになった
- 80386は286から大きく飛躍した
- 32ビットアーキテクチャを実装した
- より多くの命令を追加した
- 4GBセグメントをサポートした
- 285,000個のトランジスタを備え、元の8086の10倍の規模になった
- 内部構造は1980年代としてはかなり複雑だった
- 8個の論理ユニットがパイプライン化され、その大半が自律的に動作した
- データパスはALU、barrel shifter、レジスタで構成され、32ビット幅の規則的な長方形ブロックを形成していた
- マイクロコードROMは機械語命令をより低レベルのマイクロ命令へ分解した
- Control UnitはマイクロコードROMとマイクロコードエンジン回路で構成されていた
ダイに見える主要機能ブロック
- 左下のData Unitは算術・論理演算とデータ移動を担当する
- ALUが算術・論理演算を実行する
- barrel shifterがデータをシフトする
- レジスタがデータを保持する
- データパスと、それを管理する左側の回路がData Unitを構成する
- Instruction Decode Unitは複雑な386命令形式を分解する
- 命令の構成要素を分ける
- その命令を実装するマイクロコードポインタを生成する
- 命令キューはデコード済み命令を3個保持する
- 性能向上のため、Prefetch Unitは必要になる前にメモリから命令を読み込む
- 読み込まれた命令は16バイトのprefetch queueに保存される
- メモリ管理はセグメントメモリと仮想メモリをともに扱う
- Segment Unitは論理アドレスを線形アドレスへ変換する
- Paging Unitは線形アドレスを物理アドレスへ変換する
- セグメントディスクリプタキャッシュとページキャッシュ(TLB)がセグメントおよびページ情報を保持する
- 386にはオンチップの命令キャッシュもデータキャッシュもない
- 右上のBus Interface Unitは386と外部メモリ・デバイスとの通信を担う
- 386 DXのダイには設計者のイニシャルが非常に多く刻まれている
- イニシャルは各設計者が担当したユニットのそばに置かれているようだが、大半の名前は特定されていない
1.5µmから1µmへ縮小する中で変わったレイアウト
- 元の386は1.5µmフィーチャサイズのCHMOS-IIIプロセスで製造された
- ここでいうフィーチャサイズは、具体的にはトランジスタのgate channel lengthを指す
- Intelは1987年ごろに1µmフィーチャサイズのCHMOS-IVプロセスへ移行した
- この変化により386のダイサイズは大幅に縮小した
- ダイサイズは60%減少した
- ウェハーあたりにより多くのダイを作れるようになり、製造コストが大きく下がった
- プロセス縮小は単純な機械的スケーリングではなかった
- 小型ダイでは中央右のInstruction Decode UnitとProtection Unitが縦方向ではなく横方向に配置されている
- 標準セルロジックははるかに高密度になっており、改良されたレイアウトアルゴリズムの影響があったとみられる
- もともと高度に最適化されていたデータパスは、本質的に同じ形を保ったまま小型化された
- ボンドパッドは縮小過程での制約となった
- ボンドワイヤを接続できるよう、周辺のパッドは同じ大きさを維持する必要があった
- より小さなダイにパッドを収めるため、多くのパッドが千鳥状に配置された
- ダイの各部分が異なる比率で縮小された結果、ブロック同士は以前ほど密に収まらず、ダイ下部に無駄な空間が生じた
- 新しいダイには
80C386Iという表記があり、著作権年は1985年と1987年になっているCとIが何を意味するのかは不明である- 元の386ダイにあった多くのイニシャルは削除された
- プロセッサを新しいプロセスへ縮小した後、そのプロセスに合わせた新しいマイクロアーキテクチャを設計する方式は、その後Intelのtick-tock戦略となった
386 SX: 16ビットバスで低価格化した386
- Intelは1988年に386の低価格版である386 SXを投入した
- 386 SXは32ビットバスの代わりに16ビットバスを使用した
- これは16ビットバスの8086と8ビットバスの8088の関係を思い起こさせる
- 元の386ダイのコストが下がると、パッケージコストがダイコストに近い水準になった
- ピン数を減らすことで、386 SXを1ドルのプラスチックパッケージに収めることができた
- その結果、はるかに低い価格での販売が可能になった
- SXはIntelの市場細分化の手段となった
- 低価格帯の顧客を286から386 SXへ移行させた
- 従来の386はDXと呼ばれるようになり、より高い販売価格を維持した
- 1988年にIntelは386 SXを219ドルで販売し、これは386 DXより最低100ドル安かった
- 完成品のSXコンピュータは、同等のDXモデルより1,000ドル安い場合があった
- 元の386は旧世代の16ビット周辺機器との互換性を保つため、16ビットと32ビットの混在バスをサポートするよう設計されていた
- 必要に応じてサイクルごとに動的に切り替えられた
- 16ビット対応がすでに組み込まれていたため、386 SXには大きな設計作業を必要としなかった
- これは8088が8086のbus interface unitの再設計を必要としたのとは異なる
- 386 SXも1.5µmと1µmの両方のプロセスで製造された
- ピンが少ないためボンドパッドも少なく、縮小版386 DXで見られる千鳥配置のパッドはなくなった
- チップ下部には、386 DXで無駄になっていた空間のかなりの部分に配線が入っている違いがある
- 大きいダイにはIntelの内部名
P9を反映した80P9という表記がある - 縮小版ダイには、より分かりやすい
80386SXという表記がある
386 SL: ノートPC向けの統合型386
- 386 SLは1990年に登場した386の大規模拡張版である
- 386コアと他の機能を1チップに統合し、電力とスペースを節約した
SuperSetという名称でノートPC市場を狙っていた
- 386 SLには複数の周辺機能が統合されている
- ISAバスコントローラ
- 電源管理ロジック
- 外部キャッシュ用のキャッシュコントローラ
- メインメモリコントローラ
- ダイ上では386コア自体はSL全体のダイのおよそ4分の1を占める
- 386コアは標準的な386 DXに非常に近いが、いくつか目に見える違いがある
- コアからボンドパッドとピンドライバが取り除かれている
- 一部の回路も変更されている
- 386 SLコアはSystem Management Modeをサポートする
- 通常の実行を中断する
- 電源管理やその他の低レベルなハードウェア処理を、通常のオペレーティングシステムの外側で実行できるようにする
- System Management Modeは現在ではx86系の標準要素だが、386 SLで導入された
- 386 SLは合計855,000個のトランジスタを含む
- 通常の386 DXの3倍を超える数である
- cache tag RAMが多くの面積とトランジスタ数を占める
- キャッシュデータ自体は外部にあり、オンチップ回路はキャッシュを管理する
- 新しい構成要素のかなりの部分は標準セルロジックで実装されており、ISAバスコントローラに見られる均一な回路の縞模様によく表れている
386以前と以後のPC業界の構図
- 今では、Intelが286から386へとx86を拡張し、下位互換性を維持したことは当然に見えるが、当時は明確な道筋ではなかった
- 1970年代末、Intelは
micromainframeプロセッサを作ることを決定した- オブジェクト指向プログラミング向けの高度な32ビットプロセッサだった
- オブジェクト、プロセス間通信、メモリ保護をCPUに実装しようとしていた
- プロジェクトが過度に野心的だったため、スケジュールが遅延した
- Intelはそのプロセッサが準備できるまで販売する暫定プロセッサとして、16ビットの8086を1978年に作った
- IBMは1981年、IBM PCにIntel 8088を採用した
- Intelは当時、この選択の重要性を理解していなかった
- Intelは1981年に発売したmicromainframeプロセッサ iAPX 432に注力していた
- iAPX 432は、New York Timesが「現代コンピューティングにおける大きな失敗例の一つ」と呼ぶ失敗作となった
- Intelはその後、iAPX 432のアイデアをRISCアーキテクチャ上で再実装し、i960を作った
- 286の後継となる386プロジェクトは、Intel内部で優先度が低かった
- Bill Gatesらは286の設計を「brain-damaged」と呼んでいた
- IBMも286に積極的ではなかった
- 386チームはこのプロジェクトを
stepchildのように感じており、社内ではIntelの「公式」32ビットプロセッサではなく、もう一つの暫定策として提案されていた
- 386チームは、286を32ビットアーキテクチャへ拡張する2つの提案を出した
- 1つ目は、既存のレジスタとアドレス空間を32ビットへ拡張する最小限のアプローチだった
- 2つ目は、より多くのレジスタと、8086の16ビット命令セットとはかなり異なる32ビット命令セットを追加する、より野心的なアプローチだった
- 当時、IBM PCはまだ比較的新しく、インストールベースのソフトウェアの重要性は明確ではなかった
- ソフトウェア互換性は必須ではなく、あれば望ましい機能と見なされていた
- 1982年末ごろ、多くの議論の末に、286互換性を維持しつつセグメントとflat addressingの両方をサポートする最小提案が選ばれた
- 1984年にはPC業界が急速に成長し、286も成功を証明した
- 386プロジェクトは社内で
stepchildからkingへと地位が変わった - Intelは1985年に386を投入した
- 同年、半導体業界全体の不況により、Intelの純利益は「事実上消えた」
- 日本との競争の中で、IntelはDRAM事業から撤退した
- 386はその後、Intelの状況を変える製品となった
- 386プロジェクトは社内で
CompaqとIBM、PC標準の移動
- IBMは386プロセッサに関心を示さず、独自の戦略を選んだ
- PCクローンメーカーが増えると、IBMはPCアーキテクチャと市場支配の奪還を図った
- 1987年、IBMはPS/2ラインを導入した
- PS/2はWindowsではなくOS/2を動かし、独自のMicro Channelアーキテクチャを採用した
- IBMはPS/2クローンを遅く、高価で、リスクの高いものにするため、技術面と法務面の戦略を併用した
- CompaqはIBMに追随せず、独自のアーキテクチャの方向性を選んだ
- 1986年9月、高性能Deskpro 386ラインを導入した
- 主要企業として初めて386ベースのコンピュータを作った事例となった
- Deskpro 386 model 40は40MBのハードドライブを搭載し、6,449ドルで販売された
- これは現在の価値で1万5,000ドルを超える金額に当たる
- Compaqの選択は成功し、Deskpro 386は大ヒットした
- IBMのPS/2ラインは概して成功せず、標準にもならなかった
- IBMはPC支配を取り戻すどころか、1987年のPS/2システムライン導入とともにPC標準の支配を失った
- IBMは2004年にPC事業をLenovoへ売却し、PC市場から撤退した
- 386はIntelに大きな利益をもたらした
- 1990年にはIntel初の10億ドル四半期売上につながった
- Intelだけでなく、コンピューティング業界全体におけるx86アーキテクチャの重要性を確固たるものにした
- x86は現在に至るまで市場を支配してきた
386の設計方式: 自動化と手作業の結合
- 386の設計プロセスは、Intelが自動化設計システムとシミュレーションの利用を拡大していた時期を示している
- 当時のIntelは、ツール活用で業界より後れを取っていた
- 386のリーダーたちは、386のような複雑なチップを予定通りに作るには、より多くの自動化が必要だと判断した
- 自動化ツールに大きく投資した結果、386チームは予定より早く設計を完了した
- 独自CADツールとともに、
sed、awk、grep、makeのような標準Unixツールを設計データベース管理に多用した
- 386は286より新しい設計課題を抱えていた
- トランジスタ数が2倍の、はるかに複雑なチップだった
- 286とそれ以前のプロセッサはNMOSトランジスタを使用していたが、386は現在でも使われるCMOSへ移行した
- IntelのCMOSプロセスはCHMOS-IIIで、フィーチャーサイズは1.5µmだった
- CHMOS-IIIは、286に使われたHMOS-IIIをCMOSへ拡張したプロセスである
- CHMOSは金属層を1層ではなく2層提供し、チップ内の信号配線方式と設計手法を変えた
- CHMOS-IIIにはforbidden gapの問題があった
- 第2金属層M2が第1金属層M1に非常に近い、または非常に離れているのは可能だった
- 中間距離では問題が発生し、この領域がforbidden gapだった
- 金属層がforbidden gapで交差すると、金属が割れたり金属のひげが接触したりして、チップが不良になる可能性があった
- この問題は386の歩留まりを低下させた
RTL、マイクロコード、標準セル、データパス
- 386の設計はトップダウンとボトムアップを同時に進めていた
- 上からはアーキテクチャ定義から出発した
- 下からは標準セルと基本回路をトランジスタレベルで設計した
- マイクロコードはチップを制御する基本構成要素だった
- アセンブラとマイクロコード規則チェッカーという2つのCADツールで設計された
- 高水準のチップ設計はRTLで作られた
- clock-by-clock、phase-by-phaseのタイミングが表現されるまで洗練された
- RTLはSAILベースの移植可能なAlgol系言語であるMAINSAILで記述された
- IntelはMicrosimという独自シミュレータでRTLをシミュレーションした
- Intelはチップ全体のRTLシミュレーションを「80386において単一で最も重要なシミュレーションモデル」と見なしていた
- 次の段階では高水準設計を詳細なロジック設計に変換した
- Edenという独自の回路図キャプチャシステムでゲートと回路を指定した
- ロジック設計シミュレーションには専用のIBM 3083メインフレームが必要で、結果をRTLシミュレーションと比較した
- その後の回路設計段階でトランジスタレベル設計を作成した
- チップレイアウトはAppliconとEdenグラフィックシステムで行われた
- ALUやbarrel shifterのような重要ブロックから着手した
- ページング機構のTLBは性能要件を満たすために創造的な設計が必要だった
- binary adderにも創造的な設計が必要だった
- 構造化されていないrandom logicは、以前のプロセッサのようにトランジスタごとに設計するのではなく、標準セルで実装した
- 標準セルは論理ゲート、フリップフロップ、基本機能を固定回路ブロックとして提供した
- ソフトウェアがセルを行状に配置して、指定されたロジック記述を実装した
- 行間の空間はセル間接続のための配線チャネルとして使われた
- 標準セルレイアウトは最適化された手作業レイアウトより一般に多くの面積を使うが、作成が速く修正しやすい
- IntelはTimberWolf自動配置配線パッケージを使用した
- TimberWolfはsimulated annealingでセル配置を最適化した
- ある386エンジニアは、経営陣が大学院生の作ったツールが方法論の中核だと知っていたら使用を許可しなかっただろうと語っている
- 自動レイアウトはIntelでは新しい試みで、日程短縮に役立った
- 低密度のため、チップが大きくなりすぎるリスクも生じた
- 性能上重要なデータパスは手作業レイアウトで作られた
- レジスタ、ALU、barrel shifter、multiply/divide unitが32ビットデータを処理した
- CALMAシステムで配置された
- 設計者は回路の規則性を活用してトランジスタの形状とサイズを最適化し、パズルのピースのようにはめ込んだ
- ダイ左側のデータパスは、隣接する複雑なロジックとは対照的に、整然とした32ビット幅の長方形を成している
テープアウト、初期の失敗、乗算バグ
- トランジスタレベルのレイアウト完了後、IntelのHierarchical Connectivity Verification Systemが最終レイアウトを検査した
- 回路図と一致しているか確認した
- プロセス設計ルールを守っているか確認した
- 386はレイアウト完了からtapeoutまでわずか11日で、Intelの速度記録を打ち立てた
- tapeoutはチップデータを磁気テープに収めてマスク製造会社に送る段階である
- tapeoutチームは後にIntel CEOとなるPat Gelsingerが率いた
- ガラスマスクは電子ビーム工程で作られた
- IntelのLivermore
Fab 3が386シリコンウェハーを生産した
- IntelのLivermore
- 初回シリコンは一発では正常に動作しなかった
- チームは
NoOp, NoOp, Haltという単純なテストプログラムを実行したが失敗した - 小さなPLA修正箇所を見つけた
- 新しいマスクを作らず、既存マスクをion millingでパッチして新しいウェハーをすばやく入手した
- このウェハーは、デバッグと修正の長いサイクルを開始できる程度には動作した
- チームは
- 発売後も問題は残った
- 一部の初期386プロセッサには32ビット乗算問題があった
- 特定の温度・電圧・周波数条件では、一部のオペランドが予測不能な誤った結果を生むことがあった
- これはIntelに4億7500万ドルの損失をもたらした有名なPentium FDIVバグとは無関係である
- 乗算問題の原因はロジックではなくレイアウトにあった
- 最悪のデータ、製造プロセス、環境要因が重なった場合に対処するための十分なマージンを取っていなかった
- この問題はシミュレーションやチップ検証では現れず、ストレステストでのみ発見された
- Intelは欠陥のあるプロセッサを販売したが、16ビットソフトウェアでのみ有効と表示した
- 正常なプロセッサはdouble sigmaと表示された
- この問題は「Some 386 Systems Won't Run 32-Bit Software, Intel Says」のような気まずい見出しにつながった
- Intelがバグを修正するためにチップを再設計したことで、1987年と1988年には386チップ不足も発生した
- 全体として、386の問題は他のプロセッサより特にひどいものではなく、やがて忘れられた
結論: IntelとPC業界を変えたチップ
- 386はIntelにとって重要な転換点となった
- それ以前のIntelプロセッサもよく売れていたが、それは強力なマーケティングとIBM PCに採用された幸運の影響が大きかった
- Intelは、特にMotorolaと比べると、技術的に後れを取っていた
- Motorolaは1979年に68000を投入し、強力な準32ビットプロセッサファミリーを開始した
- Intelは1982年の「brain-damaged」16ビット286で後れを取った
- CMOSへの移行も遅く、Motorolaは1984年に68020でCMOSへ移行した
- 386はIntelに必要だった技術的飛躍をもたらした
- 32ビットアーキテクチャへ移行した
- CMOSへ移行した
- 286のメモリモデルとマルチタスクの限界を修正した
- 以前のx86プロセッサとの互換性を維持した
- 386の成功はx86とIntelの支配力を確固たるものにした
- 他のプロセッサメーカーは防戦一方の立場に置かれた
- Compaqは386を使ってIBMからPCアーキテクチャの主導権を奪った
- これはCompaq、Dellなどの企業の成功につながった
- IBMは最終的にPC市場から完全に撤退した
- 386は、コンピュータ業界の勝者と敗者を数十年にわたって形作るほど大きな影響を残した
1件のコメント
Hacker News のコメント
この記事は、数週間前に HN で userbinator が 386 のトランジスタ数について交わしていた議論に触発されたものです
データを Winchester ディスクで送っていたとしても、そのイベントはやはり tapeout と呼ばれていたはずです。初期のプリント基板(PCB)製造では、白いボード上に黒いテープで回路を実際に “tape out” しており、通常は拡大された形でした
その後 tapeout は、回路配線をテープで完成させ、写真撮影・縮小・基板製造へ渡せる準備ができた時点を意味するようになりました。そこには磁気式であれ何であれ「データ」はなく、テープが貼られた物理的なアートボードだけがありました
Wikipedia の記事もかなり良いです: https://en.wikipedia.org/wiki/Tape-out
「Winchester disk っていったい何?」という若い読者はこちらを参照: https://www.pcmag.com/encyclopedia/term/winchester-disk
小学3年生だった1960年ごろに、初めて自分で PCB を tapeout した話も以前共有しました: https://news.ycombinator.com/item?id=32116169
もともとは、立ち上がりつつあったノートPC市場向けの低価格な縮小版程度だと思っていましたが、実際にはトランジスタ数が3倍も多い比較的高度な部品で、現代の SoC の先駆けに近いものでした
最近のプロセッサはマイクロコードのレベルでいろいろなことをしているため、どの命令がどの順序で実行されるのか正確には予測しにくい、という点を思い浮かべています
また “Automatic Place and Route Used on the 80386” はどこで見つけられるのか気になります。DDG ではこの記事一つしか出てきません
ページの一部を切り取って郵送するだけでよく、数か月後、硬いカードに貼られた露出したプロセッサと低倍率のルーペが入った小包が届きました。まだ持っていたら本当に良かったのにと思います
それ以前にも 32ビットプロセッサはありましたが、(80)386 ほど商業的に成功し、一般大衆に採用されたプロセッサはありませんでした
この記事は 386 について本当に優れていて情報量も多いです。386 の技術マニュアルや一部の文書断片を除けば、インターネット上でこれほど情報が豊富な資料を見たことがありませんし、そうした文書は一般読者には読みにくいものです。386 を学ぼうとする人や、将来のコンピュータ史家にとって大きな価値があるでしょう
Motorola 68000(1979)も Macintosh で使われたという点で言及に値します。そして、それが本当の 32ビットプロセッサではなかったと言う人とは議論できます :-) ただし、386 が今日のほとんどの非電話系コンピュータで使われている 32ビット x86 アーキテクチャを始めた、という点はその通りです
だから管理職は 技術的判断 を細かくマイクロマネジメントすべきではありません
横にはジャンパの袋がテープで貼り付けられていました。HI/LO や 01/99 を表示するようにしたり、turbo を 20MHz、低速モードを 40MHz に逆転して設定したりしていました
286 は PDP-11 風の UNIX には十分で、8088 でも趣味レベルの UNIX ならそこそこ動かせました
市場の窓が狭すぎたのでしょう。当時性能が必要ならバッテリーを諦めたかもしれないので、電源管理の特殊機能がないデスクトップ CPU を使うのも大きな問題ではなかったように思います