Pentiumプロセッサの個別ゲート解析:標準セル
(righto.com)- 1993年に発売されたIntel Pentiumは、330万個のトランジスタを持つ複雑なチップだが、現代のチップと異なり顕微鏡でトランジスタを観察できるため、内部ゲート実装を直接たどることができる
- 標準セル設計は、ゲートやフリップフロップのような低レベル回路を再利用可能なセルとして作り、それを行単位で配置して自動配置配線に適合させる方式である
- Pentiumのダイでは、標準セル領域が規則的な縞模様として見え、キャッシュ・データパス・マイクロコードROMのような手作業で最適化されたブロックは、より高密度で暗く区別される
- P54C系Pentiumは、600nmプロセス、3.3V、4層の金属配線を使用し、CMOSゲートだけでなく信号遅延を最大35%削減したBiCMOS回路も広く活用している
- インバータ、NAND、OR-NAND、ラッチ、フリップフロップ、BiCMOSバッファはすべて小さなトランジスタ回路の組み合わせであり、Pentiumは1990年代の標準セルとBiCMOSデジタル設計を観察できる事例である
Pentiumダイに見える標準セル構造
- Intelは1993年にPentiumプロセッサを発売し、その後Pentium Pro、Pentium IIへと続き、2006年にCoreプロセッサが主力ラインを置き換えるまで高性能プロセッサのブランドとして維持された
- 初代Pentiumは330万個のトランジスタを持つ複雑なチップだが、現代のチップと異なり顕微鏡でトランジスタを観察できる
- 金属配線層を除去したダイ写真では、シリコンと個々のトランジスタが露出する
- 標準セル回路は均一な列に配置され、縞模様の形を見せる
- 手作業で最適化された機能ブロックは、より高密度で構造的かつ暗く見える
- 例として、左のキャッシュ、中央のデータパス、右のマイクロコードROMがある
手作業配置から標準セルへ
- 1970年代初期のプロセッサは、通常トランジスタを1つずつ手作業で配置していた
- この方式は高密度を実現できたが、遅く、難しく、エラーも多かった
- Z80の設計者Federico Fagginは、最後の数個のトランジスタが入らず、3週間分の作業を消してやり直さなければならなかった
- 標準セルは、各ゲート、フリップフロップ、低レベル構成要素を実装するセルライブラリを作って再利用する方式である
- 各セルは高さが固定され、幅は必要に応じて変わる
- セルを行単位で配置できるため、自動化に適している
- CMOS標準セルの行は、通常2本の近接した帯のように見える
- 一方はNMOSトランジスタ領域である
- もう一方はPMOSトランジスタ領域である
- 行の間の空間は、セル間配線のための配線チャネルとして使われる
- 電源とグラウンドは各行の上下に沿って配置される
自動配置配線が担う役割
- 標準セルの固定構造は、自動配置配線ソフトウェアがレイアウトを作りやすくする
- 配置段階では、接続されたセル同士の距離を最小化するセル配置を探す
- 長い配線はダイ面積を浪費する
- 長い経路は容量を増やし、信号を遅くする
- 配線段階では、配置済みセルを実際の金属配線で接続する
- 配置と配線はいずれもNP-completeの最適化問題である
- Intelは386プロセッサから自動配置配線技法を使い始めた
- 配置は、Berkeleyの大学院生が開発したTimberwolfプログラムで行われた
- 配線は、Intelが作成した反復ヒューリスティック方式のカスタムソフトウェアを使用した
- 標準セル設計は現在のプロセッサでも使われているが、ソフトウェアははるかに進化している
PentiumのCMOS基本構造
- 現代のプロセッサはCMOS回路を使用し、CMOSはNMOSとPMOSの2種類のトランジスタを組み合わせる
- NMOSトランジスタはゲートが高いときにオンになり、PMOSトランジスタはゲートが低いときにオンになる
- NMOSは出力を低電圧へ引き下げるのに適している
- PMOSは出力を高電圧へ引き上げるのに適している
- CMOSの「C」はComplementaryを意味し、NMOSとPMOSが協調して出力を高くまたは低くする
- NMOSとPMOSは半導体の物理特性のため完全に対称ではなく、PMOSは通常NMOSより大きくなければならない
- この違いは、ダイ写真でPMOSとNMOSを見分ける手がかりになる
4層の金属配線で構成された配線
- P54C版Pentiumは4層の金属配線を使用する
- 初期のPentiumは3層の金属配線を使っていたが、P54Cダイから4層プロセスへ移行した
- シリコン表面にはドープ領域があり、その上にポリシリコン配線が形成される
- ポリシリコンがドープされたシリコンを横切ると、トランジスタのゲートになる
- ポリシリコンは短距離配線にも使われる
- 金属層はM1からM4まで番号付けされる
- M1は最下層の金属層である
- M4は最上層で最も厚く、主に電源、グラウンド、クロック信号に使われる
- 金属層間の接続は、タングステンプラグのviaで行われる
- M1だけがcontactを通じてシリコンやポリシリコンに直接接続される
- 配線層は通常、局所的に水平方向と垂直方向を交互に使い、信号同士が交差できるようにする
- 自動配置配線ソフトウェアは、数百万本に及ぶ複雑な配線経路をできるだけ高密度に生成しなければならない
インバータとNANDゲート
- CMOS インバータはPMOS 1個とNMOS 1個で構成される
- 入力が1ならNMOSがオンになり、出力は0へ下がる
- 入力が0ならPMOSがオンになり、出力は1へ上がる
- Pentiumの標準セルインバータも同じ2トランジスタ構造を持つ
- 入力は2つのトランジスタのポリシリコンゲートに接続される
- 出力金属配線は2つのトランジスタに接続される
- PMOSが入るNドープwellは、+3.3Vに接続されたwell tapによって正電位に保たれる
- Pentiumは600nmプロセスで作られており、ポリシリコン線幅も約600nmである
- 可視光の波長400〜700nmに近い大きさのため、顕微鏡写真はややぼやけて見える
- CMOS NANDゲートはPMOS 2個とNMOS 2個で構成される
- 2つの入力がともに高いと、2個のNMOSがオンになって出力が低くなる
- どちらか一方の入力が低いと、PMOSがオンになって出力が高くなる
- PentiumのNAND標準セルでは、2本のポリシリコン線がドープされたシリコンを横切って4個のトランジスタを形成する
- PMOS側の出力は中央から出て並列接続を構成する
- NMOS側の出力は右側から出て直列接続を構成する
- 同じNAND標準セルでも、入力、出力、電源接続位置に合わせて詳細な配線やポリシリコン長が異なる
- 標準セルは単純なコピーではなく、各位置に合わせて調整される
- 隣接セルはPMOSトランジスタが接するように圧縮され、密度をわずかに高めている
複合ゲートとラッチ
- 標準セルライブラリには単純なゲートだけでなく複合ゲートも含まれる
- 5入力OR-NANDゲートは
~((A+B+C+D)⋅E)を計算する- NMOS回路では
A〜Dが並列で、Eが直列である - PMOS回路では逆に
A〜Dが直列で、Eが並列である - 十分な電流を供給するため、PMOS側には
A〜Dトランジスタ群が2組あり、NMOSブロックよりはるかに大きい
- NMOS回路では
- ラッチはPentium回路の中核構成要素の1つであり、クロックで制御される1ビットの記憶回路である
- クロックが高いときは入力が即座に出力へ現れる透明状態になる
- クロックが低いときは前の値を保持する
- ラッチは、出力が再び入力側へ戻るフィードバックループで実装される
- 中央には、前の出力と新しい入力のどちらかを選ぶマルチプレクサがある
- インバータはフィードバック信号が弱まらないように増幅し、出力が他の回路を駆動できるようにする
パストランジスタ・マルチプレクサ
- ラッチ内部のマルチプレクサはパストランジスタを使用する
- 一般的な論理ゲートのように出力を電源やグラウンドへ引っ張るのではなく、入力信号を出力へ通過させる
- select信号が低いと、1番目の入力に接続されたトランジスタ対がオンになり、2番目の入力は遮断される
- select信号が高いと、2番目の入力に接続されたトランジスタ対がオンになり、1番目の入力は遮断される
- マルチプレクサのトランジスタゲート極性は、一般的な論理ゲートとは異なる
- 論理ゲートでは、NMOSまたはPMOSのいずれか一方がオンになって出力を低くまたは高く引っ張るよう、同じ極性のゲート信号を使う
- マルチプレクサでは、対応するPMOSとNMOSが同時にオンになって信号を通過させる必要があるため、反対極性のゲート信号が必要になる
- このため、マルチプレクサには必要な反対極性信号を作るインバータが含まれる
フリップフロップの実装
- Pentiumはフリップフロップを広範に使用している
- フリップフロップはラッチに似ているが、クロックレベルではなくクロックエッジに反応する
- クロックが低から高へ変わる瞬間の入力を記憶する
- その値を出力として提供する
- この違いにより、フリップフロップはカウンタ、状態機械、その他のクロック回路でより有用である
- Pentiumのフリップフロップは2つのラッチで構成される
- primary latchはクロックが低いときに値を通し、高いときに値を保持する
- secondary latchは逆のクロック動作を持つ
- クロックが低から高に変わると、primary latchが更新を止めると同時にsecondary latchがその値を通す
- 一部の派生形には、小さな論理変更によってsetまたはreset入力がある
- setとresetはクロックを迂回して出力を望む状態に強制する
- プロセッサ起動時にフリップフロップを望む値へ初期化するのに有用である
BiCMOSバッファと1990年代Pentiumの特徴
- PentiumはCMOSだけでなくBiCMOSプロセスでも作られている
- 一般的なCMOS製造プロセスにいくつかの工程を追加することで、バイポーラトランジスタであるNPNとPNPを作れる
- BiCMOS回路はPentiumで広く使われ、信号遅延を最大35%削減した
- IntelはPentium Pro、Pentium II、Pentium III、XeonにもBiCMOSを使用したが、Pentium MMXには使用していない
- チップ電圧が低下するにつれてバイポーラトランジスタの利点も小さくなり、BiCMOSは最終的にデジタル回路では使われなくなった
- Pentiumの標準セルBiCMOSバッファは、CMOSバッファより複雑である
- インバータ2個
- NPNプルアップトランジスタ
- NMOSプルダウントランジスタ
- PMOSプルアップトランジスタで構成される
- ダイ写真では、NPNトランジスタはNMOS・PMOSの線形構造と異なり円形構造を示し、はるかに大きい
- 出力金属配線も通常の信号配線より太く、高い電流駆動能力を示している
P54C版で確認した違い
- 分析対象は元のPentiumのP54C版である
- 最初のPentium製品である80501、コードネームP5は60または66MHzで動作し、5Vを使用し、800nmプロセスと310万個のトランジスタを持っていた
- Intelは消費電力の問題を改善して80502、コードネームP54Cを作った
- 3.3Vを使用する
- 75〜120MHzで動作する
- マルチプロセッシング対応が追加され、トランジスタ数は330万個に増えた
- 外部バス速度を50〜66MHzの低いまま保ちながら、内部クロック速度を100MHzまで上げられる、より進んだクロック回路を持つ
- 600nmプロセスと4層金属配線を使用する
- P54CダイはP5と見た目がほぼ同じだが、下側にマルチプロセッシングロジックが追加され、上側にクロック回路がある
- 標準セルは、他の初代Pentiumバージョンでも同様と見られる
複雑なプロセッサを構成する単純な回路
- 標準セルレイアウトは現代のチップでも広く使用されている
- 現代のプロセッサはナノメートル級トランジスタのため顕微鏡で研究するには小さすぎるが、Pentiumは回路を観察し、リバースエンジニアリングできるだけの特徴的な大きさを持つ
- Pentiumの完全な標準セルライブラリははるかに大きく、数十から数百種類のセルを含む
- 多様な論理ゲート
- 複数のサイズ
- 複数の駆動強度を持つセルが含まれる
- PentiumのBiCMOS採用は、1990年代に人気が頂点にあった技術的特徴である
- BiCMOSはデジタル回路ではトレードオフの変化により実用性が低下したが、アナログIC、特に高周波用途では今でも重要な役割を果たしている
- Pentiumを間近で観察すると、複雑なプロセッサも単純なトランジスタ回路の組み合わせで作られていることが分かる
1件のコメント
Hacker News のコメント
Intel は 386 プロセッサから 自動配置・配線 技法を使い始めた。手作業のレイアウトよりはるかに速く、エラーも大幅に減らせたため
配置には Berkeley の大学院生 Carl Sechen が開発した Timberwolf というプログラムを使い、指導教員は Alberto Sangiovanni-Vincentelli だった
https://ieeexplore.ieee.org/document/1052337
https://archive.computerhistory.org/resources/text/Oral_Hist...
Intel 社内には自動配置も自動配線もなく、期限内に終えられるか、チップ面積が大きくなりすぎて収まらなくなるのではないかが懸念されていたという。Berkeley の大学院生から Timberwolf という自動配置プログラムを受け取って検討し、十分使えそうだったので採用した
その学生が別プロジェクトのため MIT に移った後も、キャンパスの部屋に端末を置いて、バグが出るたびに修正していたそうだ。ときには彼の修正が終わるまで行き詰まって待たなければならなかったという。「経営陣が、コアとなる方法論にどこかの大学院生のツールを使っていると知っていたら、絶対に許可しなかっただろう」という発言もある
Right-o にも i386 の標準セル配置・配線に関する記事があり、パネルインタビューへのリンクとともに、i386 ダイ上で 標準セル が使われた具体的な領域も示されている
https://www.righto.com/2024/01/intel-386-standard-cells.html
画像がまったく表示されないが、原因は Cloudflare のように見える
ページに入ると CF の “are you human” 確認は通過できるが、各画像の読み込みにも同じ確認がかかっていて、その確認画面はユーザーには表示されない。結果として画像の代わりに HTML ページが返り、画像が読み込まれない状態になっている
まるで captcha の前にすでに拒否しておいて、面白がって嫌がらせしているようだった。さらに奇妙なのは、VirusTotal が captcha ページに2つ目のアップロードフォームを表示していたのに、そのフォーム自体には captcha がなかった点だ
ダッシュボードにも Cloudflare が関与しているとは表示されない
「現代のプロセッサはナノメートル規模のトランジスタのため顕微鏡で見るには小さすぎる」というなら、Ken にまともな 電子顕微鏡 を買ってあげるため、みんなで募金すべきではないかと思う
現代の EDA ソフトウェア なら、標準セルに依存せず、トランジスタを自動で配置できるほど十分に高度になっているのでは?
より優れた EDA ソフトウェアを設計・構築するプロジェクトに取り組んできた。このツールは各トランジスタをシミュレートして最適化し、低消費電力・高速・低コストを実現するように形成・配置できる
欠点は、既存の EDA よりはるかに多くのトランジスタ単位を扱うため、10万ドル級の小型スーパーコンピュータ や FPGA クラスタ上で動かす必要がある点だ。それでも既存 EDA より安く、より速く、より優れ、より安価なチップとウェハを、より少ないトランジスタで作れると考えている
ソフトウェアの全体像はこの発表で間接的に扱った: https://vimeo.com/731037615
EDA ソフトウェア自体についても発表したいので、招待してくれるとありがたい
ほかの研究者や企業も、標準セルライブラリと PDK を超えてトランジスタ設計・配置を最適化できることを示しており、たとえばこの事例は独自の EDA ソフトウェアで行われた: https://www.micromagic.com/news/Ultra-Low-Power_PressRelease...
Apple が M1、M2、M3、M4、M5、特に上位版の M2 と M5 Ultra チップでこの方式を使ったと強く確信しているが、確実な証拠はない
現在使われているものより優れた EDA ソフトウェア(CAD=> SYM=> FAB)を使うだけで、人類は 3〜4桁速いコンピュータチップ を設計し、少なくとも2桁少ないエネルギーで、はるかに安価にチップを作れると考えている。ムーアの法則は終わっておらず、それを証明するには HN コメント以上の努力が必要だ
標準セルの配置でさえヒューリスティックで解く必要があり、セル単位からトランジスタ単位に下りると問題サイズが大きくなり、さらに悪化する
いずれにせよ論理はフリップフロップのような標準ゲートや論理ブロックで構成されるので、そうしたビルディングブロックを実装した標準セルを使うオーバーヘッドは、それほど大きくない可能性が高い
そのため、利用可能な計算能力に対する問題の複雑さはある程度一定に保たれており、標準セル設計は EDA ツールが解くべき問題の複雑さを減らす効率的な方法であり続けている
現世代や次世代でも変わるとは思わない。EDA に携わっている
そうでなければ歩留まりが不安定になったり、ばらついたりする可能性がある
記事に出てくる標準セルと現在の標準セルの違いの一つは、今では金属層が増えたため、配線チャネルがなくなった点です。
当時は、セルの上下にある Vdd と接地線を金属でまたぐのが難しかったため、ポリシリコンの線を上下の端まで延ばしていました。配線はポリをチャネル内へ引き出し、金属でセル同士を接続する方式でした。
そのため写真では、ふたが剥がされたポリの線が一本につながって見えますが、設計の観点では、セル内部の部分は標準で、チャネル内の部分はカスタムです。
この方式はポリと金属 1 層だけでも動作しますが、金属層が十分にあれば配線をセル内部に通すことができます。ただし、入力と出力をトランジスタへ降ろすビアを避ける必要があります。
セルの行を一つおきに反転させると、2 行の PMOS が Vdd レールを共有し、2 行の NMOS が接地レールを共有することになり、追加の利点もあります。
プロセッサをこのように解剖するのは、学校でカエルの解剖をするような、楽しい教育活動になり得ます。
動物の権利の問題がないという利点もあります。
エポキシで覆われたチップでなければ難しくありませんし、内部をのぞくのも面白いものです。詳しく見るには金属顕微鏡が必要ですが、肉眼でも興味深い構造を見ることができます。
プロセッサは適切に扱えばカエルよりはるかに長持ちし、大まかに言えば摩耗しないので、繰り返し再利用できます。新しいプロセッサを製造する過程のほうが、解剖用のカエル 1 匹を殺すよりも、より多くのカエルに大きな苦痛を与える可能性もあると思います。
それに今ではポケットの中に動画再生機があります。カエルを 1 匹自分で解剖することは、他人が解剖するのを見るより教育的かもしれませんが、よく解説された解剖動画を 20 本見るより教育的かどうかは疑問です。どちらも必ずやる必要はないと思います。
関心のある人向けのオープンソース標準セルもあります。
https://www.vlsitechnology.org/html/libraries.html
https://opensource.googleblog.com/2022/07/SkyWater-and-Googl...