自作CPUの周波数制限


15

いくつかのカスタムビルドCPUを調べていると、それらが動作する周波数が、最近のCPU(数MHzのオーダー)と比較して比較的低いことに気付きました。ブレッドボードなど、その制限の電子工学的な理由はありますか?はいの場合、設計で達成可能な最大周波数を決定する方法は?


たとえば...自家製VLSIチップ?コストの制限だと思います。数百万ドルの機器が提供する精度は、自宅で再現することはできません。そのため、チップの実行速度を下げる必要があります。
ネイト

4
@ネイト、私は彼がTTLから構築された自作のマルチチップCPUについて言及していると想像します。たとえば、次のように homebrewcpu.com
アルフレッド・ケンタウリ

@ネイト私は質問をより具体的にするために更新しました。
オイゲン

@AlfredCentauri-はい、あなたは正しいです;)
オイゲン

回答:


16

これは主に、相互接続の長さとゲートを介した伝播遅延に関係しています。CPUを本質的に削減すると、それはフィードバックマシンになります。多数の組み合わせ論理回路がマシンの現在の状態に対していくつかのブール関数を計算し、それらの関数が新しい状態を決定します。新しい状態は、新しいクロックエッジが到着すると順次回路によってラッチされます。組み合わせ回路にはすべて遅延があります。クロック周期は、1つの不正なビットがショーを停止するため、これらのゲートを通る最も遅いパスが安定した結果を生成するのにかかる時間より短くすることはできません。

さらに、シーケンシャルロジックにはタイミング要件があります。クロックエッジが到着する前に、入力が安定している必要のある最小セットアップ時間があります。その後、一定のホールド時間の間、入力が安定する必要があります。これらに違反すると、状態はゴミになります。

伝搬遅延は、寄生容量が充電できる速さ、インダクタンスに直面して電流が形成される速さ、シリコンデバイスがスイッチングする速さなどによって引き起こされます。たとえば、ベースが小さいバイポーラトランジスタはベースが大きいバイポーラトランジスタよりも速くスイッチングできるため、チップ上の小さなトランジスタはディスクリートトランジスタよりも高速になります。

削除した以前の回答で、伝送線路の影響について書きました。しかし、たとえば、10 Mhzでは波長がまだ約30メートルであるため、これらの効果が、私たちが話している速度では見えないことも考えていませんでした。そのため、通常のサイズの回路基板のスケールでは、数メガヘルツの時間スケールのパルスが銅ネットワークのすべての部分に同時に到達します。

したがって、CPUをディスクリートコンポーネントで構成する場合、スイッチング時間を短縮し、浮遊容量とインダクタンスを最小化する同じ近接度で小さなコンポーネントを実現することはできません。

それにもかかわらず、1960年代の古代のディスクリートコンポーネントマシンは、これらの自作マシンよりもかなり高速で動作しました。そこに着くのに少し時間がかかり、ずるい。たとえば、IBM 360モデル44(1964)は4 MHzで実行されました。それはまだ「自作速度」ですが、わずか数年後に1969年にリリースされたCDC 7600は36 MHzを超えました。Wikipediaの記事http://en.wikipedia.org/wiki/CDC_7600は、引き出されたいくつかのトリックのヒントを示しています。例えば:

「いつものように、Crayの設計は、サイズを縮小し、信号経路を短くし、それにより動作周波数を高めるためのパッケージングにも焦点を当てています。[E]各回路モジュールは、およびトランジスタ。6つのボードは積み重ねられ、エッジに沿って相互接続され、非常にコンパクトですが、基本的には修復不可能なモジュールになりました。」

したがって、自作のCPUは、ビルドの品質とレイアウトに関係するいくつかの交絡効果のため、必ずしも真の潜在能力を発揮するように構築されているわけではありません。それでも、個々の集積回路と数メガヘルツで動作する個別のコンポーネントからCPUを構築する人は称賛されるべきです。


データパスの複雑さに応じて、自作のデバイスは、最新の技術と従来の技術を使用して困難なく20Mhz以上でクロックインできる必要があると思います。マルチGHzではありませんが、完全なスラウチではありません。ただし、自作のCPUが使用されるほとんどの場合、速度よりもトラブルシューティングの容易さが重要であると思われます。ちなみに、オリジナルのPong(R)ブランドのアーケードマシンのマスタークロッククリスタルは14.3818Mhzでしたが、かなり早い段階で分割されました。私は、スピードというものに左右されるのは、プレイフィールドの中心線だけだと思います。
-supercat

1
多くの自作CPUはEPROMを使用してマイクロコードを格納しますが、複雑なロジックや真理値表を実装することもできます(多くの場合、1つ以上のROMでALUを作成します)。ROMのアクセス速度は、マシンの最高速度を大幅に制限する可能性がありますが、大幅な再配線なしでプロセッサのデバッグ、再利用、および調整を簡単に行えるため、人気があります。
アレクシオス

15

7400シリーズTTLを備えた特別な目的のコンピューターを作成した元高校生として、サイエンスフェアで賞を受賞しました。

  • ブレッドボードの浮遊容量。コネクタのすべての隣接ペア間で数pF。その制限されたパルスエッジの立ち上がり/立ち下がり時間と場所でクロストークを追加しました。これがおそらく最大の要因でした。

  • グラブバッグチップのバリエーション。(誰もがPoly-Pakを覚えていますか?)74LSxx、74Hxx、74xxが異なる伝搬遅延およびその他の特性を備えているため、数MHzよりも高いクロック速度で信号の同期を保つことができませんでした。

  • グラブバッグまたは他の品質の悪いソースからの安価な静的メモリチップ。特定のレートを超えると、確実に読み書きできませんでした。

  • 私のテスト機器は、自作の信号発生器、5MHz帯域幅のオシロスコープ、およびtemporary審員が一時的に設置したデジタル回路に限定されていました。ウォブリーマッシュにローパスフィルター処理されたデジタル信号のシグナルインテグリティ、タイミング、振幅を確認するのは困難です。

今日、アンティークのバイヤーでない限り、5MHzのスコープを見つけるのは難しいでしょう。すべての種類のより良いチップは、0.1 "間隔のDIPパッケージでも簡単に入手できます。ただし、私は長い間グラブバッグの邪魔をしていませんでした。ただし、ソケットブレッドボードはあまり変更されていません。浮遊容量は、エッジの効いた創造的なデジタルプロジェクトにとっては、依然として速度のキラーです。

自作PCBを使用してブレッドボードを回避することは、浮遊容量を回避する最良の方法ですが、もちろんより多くの労力と時間を必要とします。


4

主な理由は、周波数を上げると、ブレッドボードの接続のインピーダンスが増加し、回路の最終速度が制限されるためだと思います。

ブレッドボードのすべての接続には、低いがゼロではないインダクタンスがあります。周波数が高くなるにつれて、これらの影響を考慮する必要があります。ワイヤのインピーダンスは次の方法で見つけることができます。

この式

ここで、Lはワイヤのインダクタンスです。最終的に、Zは十分に高くなり、電流が流れなくなり、回路の動作が停止します。この数値の正確な数値を見つけることは非常に複雑になります。特に、ブレッドボードにはトレースが隣り合っており、この式から各ワイヤのインピーダンスが少し変わるためです。(不正確な)数値が本当に必要な場合は、ここで試し、ワイヤのインダクタンス(したがってインピーダンス)を計算できます。部品が動作できる最低電流がわかっている場合、その制限に達する前に最大周波数を決定できます。


回路のインピーダンスと速度の関係を説明していただけますか?
オイゲン

では、Intel Core I7のようなCPUは2.5GHzのクロック速度で動作し、ブレッドボード上に構築されたCPUはこの速度を達成できないことをどのように説明しますか?最初は、CPUとRAMチップの間のワイヤの長さに接続があると考えました。
オイゲン

物理法則を否定するわけではありませんが、インダクタンスが実際に速度の主な制限要因であるとは思いません。その後、同様の範囲の長さの同様のワイヤが、自作ラジオや他のプロジェクトで、はるかに高い周波数で使用されます。インピーダンス、長さ、レイアウトの整合に注意する必要があり、偶発的な結合などを避ける必要があります。
DarenW

1
@DarenW:浮遊インダクタンスと浮遊容量は確かに問題です。無線システムでは、通常、重要な長さのワイヤは1本しかありません。プロセッサの実装では、相互インダクタンスが間隔に応じて数百になります。複雑なため、周波数依存の相互作用は管理できません。特性インピーダンスは、グランドトレースからの距離などに大きく依存します。これは、ブレッドボードでは十分に制御されません。
ベンフォークト

1
私はあなたが正しいと思う、それはおそらく単なるリアクタンスであるべきだと思う。静電容量によって同様の問題が発生しますが、立ち上がり/立ち下がりエッジや状態の変化が激しい場合などです。インピーダンスを見つけるための方程式は似ていますが、数値的な答えが必要な場合は、おそらく同様の方法で適用できます。
ネイト

3

他の人が「なぜ」と答えました。最大速度の決定方法は次のとおりです。

  1. フリップフロップごとに、Qへのクロックを検索します。
  2. フリップフロップから次のフリップフロップまでのすべてのワイヤのワイヤ長を合計します。この長さを時間に変えます。ワイヤーは光の〜2/3の速度です
  3. 非同期RAMを含むゲート遅延を合計します。
  4. 次のフリップフロップでセットアップ時間を取ります。
  5. 1-4を追加します。これが最小クロック周期です。反転して周波数を取得します。
  6. クロックスキューを考慮してください。クロックが最初のffの前に2番目のffに到達する場合、1〜4でスキューを追加します。
  7. クロックが最初のffの前に2番目のffに到達する場合、1〜3の最小値を計算します。2番目のffに必要なホールド時間にクロックスキューを加えた値よりも小さいことを確認してください。

あなたが話しているワイヤの長さ:電源からCPU出力ピンまでの長さ、CPU出力ピンからRAMチップまでの長さ...?また、最初のステップであなたが何を意味するのか、私は本当にはっきりしていません。
オイゲン

2
@Eugen-私は(しかし、私の専門分野ではありませんが)彼はその内部伝播遅延-クロックが供給されてから安定した出力が得られるまでの時間について言及していると思います。
mickeyf_supports_Monica

1

速度を制限するすべての電気的理由とは別に、論理レベルにも1つあります。

分岐予測を使用したパイプライン操作、高速な算術演算など、物事を高速化するために多くのリソースを投入することはできません。キャッシュは、メインメモリよりも高速でなければ意味がありません。


1

自作マシンの場合、2つの要因があります。使用しているチップの伝播遅延と、CPU設計の最長パスで使用する必要のあるチップの数。

たとえば、74HC574(8ビットレジスタ)の最大伝搬遅延は約41nsです(データシートから取得)。ここで、CPUデザインを通る最長のパスでは8つの異なるチップを通過する必要があるとしましょう。8つのそれぞれの伝搬遅延を合計し、333nsになると想像してください。1000nsは1Mhzと同じで、最大速度は3Mhzになります。

実際には、安定した設計を確保するために、2Mhzのような低速のものに制限することをお勧めします。10億サイクルに1回しかタイミングを見逃すと思っていても、まだ問題があります。100億を300万で割ると、3,333秒に1回、1時間に約1回、実行ミスが発生します。1時間ごとにマシンをクラッシュさせるのは良くありません!

より高速にするには、より高速なチップを使用するか、設計を変更して、最も遅いパスのチップ数を減らします。あなたが見る最速の自作速度は約4Mhzで、各サイクルを完了するのに250nsを与えます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.