プロセッサアーキテクチャとは何ですか? 最新のプロセッサのアーキテクチャ。

04.08.2019 アンドロイド

質問: プロセッサ アーキテクチャ - それは何ですか?
答え: 「プロセッサ アーキテクチャ」という用語には、現時点では明確な解釈がありません。 プログラマの観点から見ると、プロセッサのアーキテクチャとは、特定のマシン コードのセットを実行する能力を指します。 最新のデスクトップ CPU のほとんどは x86 ファミリに属しています。 Intel互換プロセッサー IA32 アーキテクチャ (32 ビット Intel プロセッサのアーキテクチャ)。 その基礎は Intel によって i80386 プロセッサで築かれましたが、その後の世代のプロセッサでは、Intel 自身 (新しい命令セット MMX、SSE、SSE2、および SSE3 が導入されました) とサードパーティ メーカー (命令セット EMMX) の両方によって補足および拡張されました。 、3DNow! および Extended 3DNow!、AMD によって開発されました)。 しかし、開発者たちは、 コンピューターハードウェア彼らは、「プロセッサ アーキテクチャ」という概念に少し異なる意味を与えています (完全に混乱しないように、「マイクロアーキテクチャ」という用語が使用されることもあります)。 彼らの観点からすると、プロセッサ アーキテクチャは、特定のプロセッサ ファミリの内部組織の基本原則を反映しています。 たとえば、プロセッサのアーキテクチャ インテル ペンティアム P5として指定され、 Pentium プロセッサ II と Pentium III - P6、そして最近人気のあった Pentium 4 は NetBurst アーキテクチャに属していました。 後 インテル社 P5 アーキテクチャを閉じました サードパーティメーカー、その主な競争相手は AMD社独自のアーキテクチャ - K7 の開発を余儀なくされました Athlonプロセッサ Athlon XP、Athlon 64 の場合は K8。

質問: 64 ビットと 32 ビットではどちらのプロセッサが優れていますか? なぜ?
答え: 古典的な 32 ビット IA32 アーキテクチャの 64 ビット拡張は、2002 年に AMD (当初は x86-64 と呼ばれていましたが、現在は AMD64) によって K8 ファミリのプロセッサで提案され、かなり成功しました。 しばらくして、Intel は独自の名称である EM64T (Extended Memory 64-bit Technology) を提案しました。 しかし、名前に関係なく、新しいアーキテクチャの本質は同じです。64 ビット プロセッサのメイン内部レジスタの幅が 2 倍になり (32 ビットから 64 ビットに)、32 ビット x86 コード命令は 64 ビットを受け取りました。少しアナログ。 さらに、アドレスバス幅の拡張により、プロセッサがアドレス指定できるメモリの量が大幅に増加しました。

以上です。 したがって、64 ビット CPU による大幅なパフォーマンスの向上を期待している人は失望するでしょう。そのパフォーマンスは圧倒的に優れています。 最新のアプリケーション(大部分は IA32 用に設計されており、近い将来に AMD64/EM64T 用に再コンパイルされる可能性は低いです) は、古き良き 32 ビット プロセッサの場合と実質的に同じです。 64 ビット アーキテクチャの可能性を最大限に発揮できるのは、遠い将来、新しいアーキテクチャに最適化されたアプリケーションが大量に登場する (または登場しない可能性がある) ときだけです。 いずれにしても、64 ビットへの移行は、データベースを扱うプログラム、CAD/CAE クラス プログラム、およびデジタル コンテンツを扱うプログラムにとって最も効果的です。

質問: プロセッサーコアとは何ですか?
答え: 同じアーキテクチャ内でも、異なるプロセッサは互いにまったく異なる場合があります。 そして、これらの違いは、厳密に定義された特定の特性を持つさまざまなプロセッサ コアに反映されます。 ほとんどの場合、これらの違いは、システム バス (FSB) 周波数、2 次キャッシュ サイズ、特定の新しい命令システムのサポート、または 技術的プロセス、どのプロセッサが製造されるかに応じて。 多くの場合、同じプロセッサ ファミリ内のコアを変更すると、プロセッサ ソケットの変更が必要になり、マザーボードのさらなる互換性について疑問が生じます。 ただし、カーネルを改良する過程で、メーカーはカーネルに小さな変更を加える必要があり、「固有の名前」を主張することはできません。 このような変更はカーネル リビジョンと呼ばれ、ほとんどの場合、英数字の組み合わせで示されます。 ただし、同じカーネルの新しいリビジョンには、非常に顕著な革新が含まれる場合があります。 したがって、Intel は、リビジョン変更プロセス中に、Pentium 4 ファミリの特定のプロセッサで 64 ビット EM64T アーキテクチャのサポートを導入しました。

質問: シングルコアプロセッサと比較したデュアルコアプロセッサの利点は何ですか?
答え: 2005 年の最も重要な出来事は、デュアルコア プロセッサの登場でした。 この時点までに、従来のシングルコア CPU は、動作周波数を高めて生産性を向上させるための蓄えをほぼ完全に使い果たしていました。 障害は、実行中のプロセッサの発熱が高すぎることだけではありませんでした。 高周波, しかし、安定性にも問題があります。 そのため、今後数年間にわたるプロセッサ開発の広範なパスが命令され、メーカーは意を決して、製品のパフォーマンスを向上させるための新しい集中的なパスを習得する必要がありました。 デスクトップ CPU 市場で最も効率的なのは、いつものように、デュアルコアを最初に発表した Intel であることが判明しました。 インテルプロセッサー Pentium D とインテル エクストリームエディション。 ただし、Athlon64 X2 を搭載した AMD は競合他社に文字通り数日遅れをとってしまいました。 上記のプロセッサを含む第一世代デュアルコア プロセッサの疑いのない利点は、既存のプロセッサとの完全な互換性です。 マザーボード(当然ながら、BIOS を更新するだけで済む非常に最新のものです)。 特に第 2 世代のデュアルコア プロセッサーは、 インテルCore 2 Duo は、専用に設計されたチップセットを「必要」とし、古いマザーボードでは動作しません。

現在、デュアルコア プロセッサでの作業に多かれ少なかれ最適化されているのはプロフェッショナル ソフトウェア (グラフィックス、オーディオ、ビデオ データの処理を含む) のみであることを忘れてはなりません。 ホームユーザー 2 番目のプロセッサ コアは役立つ場合もありますが、ほとんどの場合は無駄になります。 この場合のデュアルコア プロセッサの利点は、コンピュータが何らかのプロセッサを実行している場合にのみ肉眼で確認できます。 バックグラウンドタスク(ウイルス スキャン、ソフトウェア ファイアウォールなど)。 既存のゲームのパフォーマンスの向上に関しては、最小限です。ただし、人気のあるジャンルの最初のゲームは、2 番目のコアを使用する利点を最大限に活用するものとしてすでに登場しています。

ただし、現在、中価格帯または上位価格帯のゲーミング PC 用のプロセッサを選択することが問題である場合は、いずれにしても、周波数がわずかに高いプロセッサよりもデュアルコア、さらには 4 コアのプロセッサを選択する方が良いでしょう。市場は着実にマルチコア システムに移行し、最適化されているため、シングルコア アナログ 並列コンピューティング。 今後数年間はこの傾向が支配的になるため、マルチコアに最適化されたソフトウェアのシェアは着実に増加し、近いうちにマルチコアが緊急に必要となる時代が来るかもしれません。

質問: キャッシュとは何ですか?
答え: 全部で 最新のプロセッサキャッシュ(英語でキャッシュ) - 超高速アレイがあります ランダム・アクセス・メモリ、コントローラー間のバッファーであり、比較的低速です。 システムメモリそしてプロセッサー。 このバッファには、CPU が現在処理しているデータのブロックが保存されるため、(プロセッサ速度と比較して) 非常に遅いシステム メモリへのプロセッサ呼び出しの数が大幅に減少します。 これにより、プロセッサの全体的なパフォーマンスが大幅に向上します。

さらに、最新のプロセッサでは、キャッシュは以前のように単一のメモリ アレイではなくなり、いくつかのレベルに分割されています。 プロセッサ コアが動作する最も高速だが​​サイズが比較的小さい 1 次キャッシュ (L1 と表記) は、ほとんどの場合、命令キャッシュとデータ キャッシュの 2 つの部分に分割されます。 2 次キャッシュは、L1 キャッシュと L2 キャッシュと相互作用します。L1 キャッシュは、通常、容量がはるかに大きく、命令キャッシュとデータ キャッシュに分割されることなく混在しています。 一部のデスクトップ プロセッサは、サーバー プロセッサの例に倣い、第 3 レベルの L3 キャッシュを取得する場合もあります。 通常、L3 キャッシュのサイズはさらに大きくなりますが、(L2 と L3 間のバスが L1 と L2 間のバスよりも狭いため) L2 よりも若干遅くなりますが、いずれにしても、その速度は不釣り合いに高速です。システムメモリよりも高速です。

キャッシュには、排他キャッシュと非排他キャッシュの 2 種類があります。 最初のケースでは、すべてのレベルのキャッシュ内の情報は明確に区別されており、それぞれのキャッシュにはオリジナルの情報のみが含まれていますが、非排他的キャッシュの場合は、すべてのキャッシュ レベルで情報を複製できます。 今日、これら 2 つのスキームのどちらがより正しいかを言うのは困難です。どちらにもマイナスとプラスの両方があります。 排他的なキャッシュ スキームが使用されます。 AMDプロセッサ、非独占的ですが、Intel プロセッサーで使用されます。

質問: プロセッサ バスとは何ですか?
答え: プロセッサー (システムとも呼ばれる) バスは、FSB (フロント サイド バス) と呼ばれることが多く、目的 (データ、アドレス、制御) に従って結合された一連の信号線であり、 電気的特性および情報転送プロトコル。 したがって、FSB は、プロセッサ (複数可) とコンピュータ内の他のすべてのデバイス (メモリ、ビデオ カード、 ハードドライブ等々。 直接 システムバス CPU のみが接続され、他のデバイスは主にシステム ロジック セット (チップセット) のノース ブリッジに集中する特殊なコントローラーを介して CPU に接続されます。 マザーボード。 プロセッサなどでは例外もあるかもしれませんが、 AMDファミリー K8 メモリ コントローラはプロセッサに直接統合されているため、従来の組織規範に忠実な Intel のソリューションよりもはるかに効率的なメモリと CPU のインターフェイスが提供されます。 外部インターフェースプロセッサー。 一部のプロセッサの主な FSB パラメータを表に示します。

CPU FSB周波数、MHz FSB型 理論的 スループット FSB、MB/秒
インテル ペンティアム III 100/133 AGTL+ 800/1066
インテル ペンティアム 4 100/133/200 QPB 3200/4266/6400
インテル ペンティアム D 133/200 QPB 4266/6400
インテル ペンティアム 4EE 200/266 QPB 6400/8533
インテルCore 133/166 QPB 4266/5333
インテルコア2 200/266 QPB 6400/8533
AMDアスロン 100/133 EV6 1600/2133
AMD Athlon XP 133/166/200 EV6 2133/2666/3200
AMD センプロン 800 ハイパートランスポート <6400
AMD Athlon 64 800/1000 ハイパートランスポート 6400/8000

Intel プロセッサは QPB (Quad Pumped Bus) システム バスを使用し、クロック サイクルごとに 4 回データを転送しますが、AMD Athlon および Athlon XP プロセッサの EV6 システム バスは、クロック サイクルごとに 2 回データを転送します (ダブル データ レート)。 AMD が Athlon 64/FX/Opteron プロセッサ シリーズで使用している AMD64 アーキテクチャは、CPU インターフェイスを構成する新しいアプローチを使用しています。ここでは、FSB プロセッサ バスの代わりに、他のプロセッサとの通信に次のものが使用されています。高速シリアル (パケット) HyperTransport バス。ピア スキーム -to-Peer (ポイントツーポイント) に従って構築され、比較的低い遅延で高いデータ交換速度を提供します。

導入。 コンピュータ技術は急速に発展しています。 コンピューティングデバイスは高性能化、小型化、便利化が進んでいますが、最近ではデバイスの性能向上が大きな課題となっています。 1965 年、ゴードン ムーア (インテル創設者の 1 人) は、「集積回路チップ上に配置されるトランジスタの数は 24 か月ごとに 2 倍になる」という結論に達しました。

マルチプロセッサ システム作成分野における最初の開発は 70 年代に始まりました。 長い間、従来のシングルコア プロセッサのパフォーマンスは、クロック周波数を高めることによって (パフォーマンスの最大 80% はクロック周波数のみによって決まりました)、同時にチップ上のトランジスタの数を増やすことで向上していました。 基本的な物理法則がこのプロセスを止めました。チップは過熱し始め、技術的なチップはシリコン原子のサイズに近づき始めました。 これらすべての要因により、次のような事実が生じました。

  • 漏れ電流が増加し、発熱と消費電力が増加しました。
  • プロセッサはメモリよりもはるかに「高速」になりました。 RAM へのアクセスとキャッシュへのデータのロードにおける遅延により、パフォーマンスが低下しました。
  • 「フォン・ノイマン・ボトルネック」という概念が生じます。 これは、プログラムの実行時にプロセッサ アーキテクチャが非効率であることを意味します。

マルチプロセッサ システムは (問題を解決する方法の 1 つとして) 高価で製造が難しいマルチプロセッサ マザーボードを必要とするため、広く使用されませんでした。 これに基づいて、他の方法でも生産性が向上しました。 マルチスレッドの概念は、複数のコマンド ストリームを同時に処理するという効果的なものであることが判明しました。

プロセッサが 1 つのコア上で複数のプログラム スレッドを実行できるようにするハイパー スレッディング テクノロジ (HTT) またはウルトラ スレッディング データ処理テクノロジ。 多くの専門家の意見では、マルチコア プロセッサの作成の前提条件となったのは HTT でした。 プロセッサーによる複数のプログラム スレッドの同時実行は、スレッド レベルの並列処理 (TLP) と呼ばれます。

マルチコア プロセッサの可能性を最大限に引き出すには、実行可能プログラムはすべてのコンピューティング コアを使用する必要がありますが、これは常に達成できるわけではありません。 1 つのコアしか使用できない古いシーケンシャル プログラムは、新世代のプロセッサでは高速に動作しなくなるため、プログラマーは新しいマイクロプロセッサの開発にますます関与するようになりました。

1. 一般的な概念

広い意味でのアーキテクチャは、多くの要素から構成される複雑なシステムの記述です。

開発の過程で半導体構造 (チップ) は進化するため、プロセッサの構築原理、その構成に含まれる要素の数、およびそれらの相互作用の構成方法は常に変化しています。 したがって、同じ基本的な構造原理を持つ CPU は、通常、同じアーキテクチャのプロセッサと呼ばれます。 そして、そのような原理自体をプロセッサアーキテクチャ(またはマイクロアーキテクチャ)と呼びます。

マイクロプロセッサ (またはプロセッサ) は、コンピュータの主要コンポーネントです。 情報を処理し、プログラムを実行し、システム内の他のデバイスを制御します。 プロセッサの能力によって、プログラムの実行速度が決まります。

コアはマイクロプロセッサの基礎です。 シリコンチップ上にある数百万のトランジスタで構成されています。 マイクロプロセッサは、汎用レジスタ (GPR) と呼ばれる特別なセルに分割されています。 プロセッサの作業は、メモリから命令とデータを特定の順序で取得し、実行することで構成されます。 さらに、PC の速度を向上させるために、マイクロプロセッサには内部キャッシュ メモリが装備されています。 キャッシュ メモリはプロセッサの内部メモリであり、バッファ(RAM との通信の中断から保護するため)として使用されます。

IBM 互換 PC で使用されるインテル プロセッサーには 1,000 を超える命令があり、拡張命令システム - CISC プロセッサー (CISC - 複雑な命令セット コンピューティング) を備えたプロセッサーに属します。

1.1 ハイパフォーマンスコンピューティング。 平行度

コンピューティング技術の発展のペースは、1 秒あたり数千演算のパフォーマンスを誇る ENIAC (初の汎用電子デジタル コンピュータ) から、スーパーコンピュータ Tianhe-2 (1 秒あたり 1000 兆の浮動小数点演算) まで、簡単に追跡できます。 これは、コンピューティングの速度が 60 年間で 1 兆倍も向上したことを意味します。 高性能コンピューティング システムの構築は、科学的および技術的に最も困難な問題の 1 つです。 技術的手段によるコンピューティング速度は数百万倍しか向上していませんが、コンピューティング全体の速度は数兆倍も向上しています。 この効果は、計算のすべての段階で並列処理を使用することによって実現されます。 並列コンピューティングには、合理的なメモリ割り当て、情報を送信し、計算プロセスを調整するための信頼できる方法の探求が必要です。

1.2 対称型マルチプロセッシング

対称型マルチプロセシング (略称 SMP) または対称型マルチプロセッシングは、複数のプロセッサが共有メモリにアクセスできるマルチプロセッサ システムの特殊なアーキテクチャです。 これは非常に一般的なアーキテクチャであり、最近では非常に広く使用されています。

SMP を使用すると、コンピュータ内で複数のプロセッサが同時に動作し、それぞれが独自のタスクを実行します。 高品質のオペレーティング システムを備えた SMP システムは、プロセッサ間でタスクを合理的に分散し、各プロセッサの負荷を均等にします。 ただし、単一プロセッサ システムでもメモリ アクセスには比較的長い時間がかかるため、メモリ アクセスに関して問題が発生します。 したがって、SMP の RAM へのアクセスは、最初に 1 つのプロセッサ、次に 2 番目のプロセッサというように順番に発生します。

上記の機能により、SMP システムは科学分野、産業、ビジネスでのみ使用され、オフィスで使用されることは非常にまれです。 ハードウェア実装のコストが高いことに加えて、このようなシステムでは、タスクのマルチスレッド実行を提供する非常に高価で高品質のソフトウェアが必要です。 通常のプログラム (ゲーム、テキスト エディタ) は、そのようなレベルの並列化を提供していないため、SMP システムでは効果的に動作しません。 プログラムを SMP システムに適合させると、単一プロセッサ システムでの作業が非常に非効率になり、異なるシステム用に同じプログラムの複数のバージョンを作成する必要が生じます。 例外は、たとえば、マルチプロセッサ システムをサポートする ABLETON LIVE プログラム (音楽の作成と Dj セットの準備のために設計された) です。 マルチプロセッサ システム上で通常のプログラムを実行する場合でも、シングルプロセッサ システムよりも若干高速に実行されます。 これは、別の空きプロセッサで実行される、いわゆるハードウェア割り込み (カーネルによる処理のためのプログラムの停止) が原因です。

SMP システム (並列コンピューティングに基づく他のシステムと同様) では、メモリ バス帯域幅などのメモリ パラメータに対する要求が増大します。 これにより、システム内のプロセッサの数が制限されることがよくあります (最新の SMP システムは実質的に最大 16 プロセッサで動作します)。

プロセッサーは共有メモリーを備えているため、合理的な使用とデータ調整が必要になります。 マルチプロセッサ システムでは、複数のキャッシュが共有メモリ リソース上で動作することがわかります。 キャッシュ一貫性は、共有リソースの個々のキャッシュに格納されたデータの整合性を保証するキャッシュ プロパティです。 この概念は、メモリ コヒーレンスの概念の特殊なケースであり、複数のコアが共有メモリ (最新のマルチコア システムのどこにでも見られます) にアクセスできます。 これらの概念を一般的な用語で説明すると、次のようになります。同じデータ ブロックを異なるキャッシュにロードでき、そこでデータは異なる方法で処理されます。

データ変更通知を使用しない場合はエラーとなります。 キャッシュ一貫性は、このような競合を解決し、キャッシュ内のデータの一貫性を維持するように設計されています。

SMP システムは、コンピューティング システムのフリン分類 (スタンフォード大学教授、Palyn Associates の共同創設者) の MIMD (マルチインストラクション マルチ データ - 複数のコマンド ストリームと複数のデータ ストリームを備えたコンピューティング システム) のサブグループです。 この分類によれば、ほぼすべての種類の並列システムが MIMD として分類されます。

マルチプロセッサ システムは、メモリ使用の原理に基づいてタイプに分類されます。 このアプローチにより、次の重要なタイプを区別することができました。

マルチプロセッサ システム - マルチプロセッサ (共通の共有メモリを備えたマルチプロセッサ システム) およびマルチコンピュータ (個別のメモリを備えたシステム)。 並列コンピューティングで使用される共有データには同期が必要です。 データ同期のタスクは最も重要な問題の 1 つであり、マルチプロセッサおよびマルチコア システム、およびそれに応じて必要なソフトウェアを開発する際のその解決策は、エンジニアやプログラマーにとっての優先課題です。 データへの共有アクセスは、メモリを物理的に割り当てることによって実行できます。 このアプローチは、不均一メモリ アクセス (NUMA) と呼ばれます。

これらのシステムの中で、次の点に注目できます。

  • データを表示するためにプロセッサの個別のキャッシュ メモリのみが使用されるシステム (キャッシュ専用メモリ アーキテクチャ)。
  • 異なるプロセッサのローカル キャッシュの一貫性を確保するシステム (キャッシュ コヒーレント NUMA)。
  • ハードウェア レベルでキャッシュ コヒーレンスを実装せずに、プロセッサの個々のメモリへの共有アクセスを提供するシステム (非キャッシュ コヒーレント NUMA)。

マルチプロセッサ システムの作成の問題は分散共有メモリを使用することで簡素化されますが、この方法では並列プログラミングの複雑さが大幅に増加します。

1.3 同時マルチスレッド

対称型マルチプロセッシングの上記のすべての欠点を踏まえると、パフォーマンスを向上させる他の方法を開発し続けることは理にかなっています。 プロセッサ内の個々のトランジスタの動作を分析すると、非常に興味深い事実に注意することができます。ほとんどの計算処理を実行するときに、プロセッサのすべてのコンポーネントが使用されるわけではありません (最近の研究によると、全トランジスタの約 30%)。 。 したがって、プロセッサがたとえば単純な算術演算を実行する場合、プロセッサの大部分はアイドル状態になるため、他の計算に使用できます。 したがって、プロセッサが現在実際の演算を実行している場合、整数算術演算を空き部分にロードできます。 プロセッサの負荷を高めるために、演算の投機的 (または順方向) 実行を作成できますが、これにはプロセッサ ハードウェア ロジックが大幅に複雑化する必要があります。 互いに独立して実行できるスレッド (コマンドのシーケンス) をプログラム内で事前に定義しておくと、タスクが大幅に簡素化されます (この方法はハードウェア レベルで簡単に実装できます)。 このアイデアはディーン トゥールセン氏が所有しており (1955 年にワシントン大学で彼によって開発されました)、同時マルチスレッドと呼ばれていました。 その後、Intel によってハイパースレッディングという名前で開発されました。 したがって、多くのスレッドを実行する 1 つのプロセッサは、Windows オペレーティング システムによって複数のプロセッサとして認識されます。 このテクノロジーを使用するには、やはり適切なレベルのソフトウェアが必要です。 マルチスレッド技術の使用による最大の効果は約 30% です。

1.4 マルチコア

マルチスレッド技術 - ソフトウェアレベルでのマルチコアの実装。 パフォーマンスをさらに向上するには、いつものように、プロセッサ ハードウェアの変更が必要です。 システムやアーキテクチャの複雑さの増大が必ずしも効果的であるとは限りません。 「独創的なものはすべてシンプルだ!」という反対の意見もあります。 実際、プロセッサのパフォーマンスを向上させるために、クロック周波数を上げたり、論理コンポーネントやハードウェア コンポーネントを複雑にする必要はまったくありません。既存のテクノロジを合理化して改良するだけで十分であるためです。 この方法は非常に有益です。プロセッサの放熱量を増やすという問題を解決したり、マイクロ回路を製造するための新しい高価な装置を開発したりする必要はありません。 このアプローチは、マルチコア テクノロジ (1 つのチップ上に複数のコンピューティング コアを実装する) のフレームワーク内で実装されました。 オリジナルのプロセッサーを使用し、パフォーマンスを向上させるためのいくつかの方法を実装したときのパフォーマンスの向上を比較すると、マルチコア テクノロジの使用が最良の選択肢であることは明らかです。

対称型マルチプロセッサとマルチコアのアーキテクチャを比較すると、それらはほぼ同一であることがわかります。 コア キャッシュはマルチレベルにすることができます (ローカルおよび共有、RAM からのデータを 2 次キャッシュに直接ロードできます)。 マルチコア プロセッサ アーキテクチャの考慮された利点に基づいて、メーカーはマルチコア プロセッサ アーキテクチャに焦点を当てています。 このテクノロジーは実装コストが非常に安く、汎用性があることが判明したため、幅広い市場に導入することが可能になりました。 さらに、このアーキテクチャは、「プロセッサー内のコンピューティング コアの数は 18 か月ごとに 2 倍になる」というムーアの法則に独自の調整を加えています。

現在のコンピューター市場を見ると、4 コアおよび 8 コアのプロセッサーを搭載したデバイスが主流であることがわかります。 さらに、プロセッサメーカーは、数百のプロセッシングコアを搭載したプロセッサが間もなく市場に投入されるだろうと述べています。 これまで何度も述べてきたように、マルチコア アーキテクチャの可能性は高品質のソフトウェアによってのみ最大限に発揮されます。 したがって、コンピュータのハードウェアとソフトウェアの製造は非常に密接に関係しています。

プロセッサのパフォーマンスを向上させる重要な要素の 1 つは、キャッシュ メモリの存在、つまりその容量、アクセス速度、レベル間の分散です。

キャッシュ メモリは、最も頻繁にアクセスされるデータを一時的に保存するためにプロセッサによって使用される超高速メモリです。 このタイプの記憶を簡単に説明すると、次のようになります。

キャッシュ メモリはフリップフロップ上に構築されており、フリップフロップはトランジスタで構成されています。 トランジスタのグループは、RAM を構成する同じコンデンサよりもはるかに多くのスペースを占有します。 これには、量の制限だけでなく、生産において多くの困難が伴います。 このため、キャッシュ メモリは非常に高価なメモリですが、容量はごくわずかです。 しかし、そのような構造から、そのようなメモリの主な利点は速度です。 フリップフロップは再生成の必要がなく、フリップフロップが組み立てられるゲートの遅延時間が短いため、フリップフロップをある状態から別の状態に切り替える時間は非常に早くなります。 これにより、キャッシュ メモリが最新のプロセッサと同じ周波数で動作できるようになります。

また、キャッシュ メモリの配置も重要な要素です。 これはプロセッサ チップ自体に配置されているため、アクセス時間が大幅に短縮されます。 以前は、一部のレベルのキャッシュ メモリは、プロセッサ チップの外側、マザーボード上の特別な SRAM チップ上に配置されていました。 現在、ほとんどすべてのプロセッサは、プロセッサ チップ上にキャッシュ メモリを備えています。

前述したように、キャッシュ メモリの主な目的は、プロセッサによって頻繁に使用されるデータを保存することです。 キャッシュはデータがロードされるバッファであり、最新のプロセッサではサイズが小さい (約 4 ~ 16 MB) にもかかわらず、あらゆるアプリケーションのパフォーマンスを大幅に向上させます。

キャッシュ メモリの必要性をよりよく理解するために、オフィスのようにコンピュータのメモリを整理することを想像してみましょう。 RAM は、会計士が定期的にアクセスして大きなデータ ブロック (つまりフォルダー) を取得するフォルダーを備えたキャビネットになります。 そしてテーブルはキャッシュメモリになります。

会計士の机の上にはいくつかの要素が置かれており、会計士はそれを 1 時間にわたって何度も参照します。 たとえば、電話番号や文書の例などが考えられます。 これらの種類の情報はテーブル上に配置されるため、情報へのアクセス速度が向上します。

同様に、ドキュメントなどの大きなデータ ブロック (フォルダー) からテーブルにデータを追加して、すぐに使用することができます。 このドキュメントが不要になると、キャビネット (RAM) に戻され、それによってテーブル (キャッシュ メモリ) がクリアされ、次の期間に使用される新しいドキュメントのためにこのテーブルが解放されます。

キャッシュ メモリでも、再度アクセスされる可能性が高いデータがある場合、そのデータが RAM からキャッシュ メモリにロードされます。 多くの場合、これは、現在のデータの後に使用される可能性が最も高いデータを同時ロードすることによって発生します。 つまり、「後」に何が使用されるかについての仮定があります。 これらは複雑な動作原理です。

最新のプロセッサにはキャッシュが装備されており、多くの場合、2 つまたは 3 つのレベルで構成されます。 もちろん例外はありますが、多くの場合はこれに当てはまります。

一般に、L1 (第 1 レベル)、L2 (第 2 レベル)、L3 (第 3 レベル) のレベルが存在します。 それぞれについてもう少し詳しく説明します。

1. 1 次キャッシュ (L1) - プロセッサ コアと直接動作する最速のキャッシュ メモリ レベル。この緊密な相互作用のおかげで、このレベルはアクセス時間が最も短く、プロセッサに近い周波数で動作します。 これはプロセッサと 2 次キャッシュの間のバッファです。

高性能プロセッサー Intel Core i7-3770K 上のボリュームを検討します。 このプロセッサには、4x32 KB L1 キャッシュ (4 x 32 KB = 128 KB) が装備されています。 (1コアあたり32KB)

2. 第 2 レベル キャッシュ (L2) - 第 2 レベルは第 1 レベルよりも大きいですが、その結果、「速度特性」が低くなります。 したがって、L1 レベルと L3 レベルの間のバッファとして機能します。 例の Core i7-3770 K をもう一度見てみると、L2 キャッシュ メモリのサイズは 4x256 KB = 1 MB です。

3. 第 3 レベル キャッシュ (L3) - 第 3 レベルも、前の 2 つよりも低速です。 ただし、それでも RAM よりもはるかに高速です。 i7-3770K の L3 キャッシュ サイズは 8 MB です。 前の 2 つのレベルが各コアで共有される場合、このレベルはプロセッサ全体で共通になります。 このインジケーターは非常に堅実ですが、法外なものではありません。 たとえば、i7-3960X などの Extreme シリーズ プロセッサでは 15 MB ですが、一部の新しい Xeon プロセッサでは 20 MB を超えます。

CISK と RISK のアーキテクチャを考えてみましょう。

CISC は、次の一連のプロパティによって特徴付けられるプロセッサ設計概念です。

コマンド長の値は固定されていません。

算術演算は 1 つの命令でエンコードされます。

少数のレジスタ。それぞれが厳密に定義された機能を実行します。

典型的な代表例は、x86 命令に基づくプロセッサ (ハイブリッドである最新の Intel Pentium 4、Pentium D、Core、AMD Athlon、Phenom を除く) および Motorola MC680x0 プロセッサです。

最新のデスクトップ、サーバー、およびモバイル プロセッサの最も一般的なアーキテクチャは、Intel x86 アーキテクチャ (64 ビット プロセッサの場合は x86-64) に基づいています。 正式には、すべての x86 プロセッサは CISC プロセッサでしたが、Intel Pentium Pro から始まる新しいプロセッサは、RISC コアを備えた CISC プロセッサです。 これらは、実行直前に、x86 プロセッサの CISC 命令をより単純な内部 RISC 命令セットに変換します。

ハードウェア トランスレータがマイクロプロセッサに組み込まれており、x86 コマンドを内部 RISC プロセッサのコマンドに変換します。 さらに、1 つの x86 コマンドで複数の RISC コマンドを生成できます (P6 プロセッサの場合、ほとんどの場合、最大 4 つの RISC コマンド)。 コマンドはスーパースカラ コンベア上で一度に複数実行されます。

これは、CISC プロセッサは 1 秒あたりに実行される演算数において RISC プロセッサよりも劣ることが知られているため、CISC コマンドの処理速度を向上させるために必要でした。 結果として、このアプローチにより CPU のパフォーマンスを向上させることができました。

CISK アーキテクチャの欠点:

ハードウェアのコストが高い。

計算の並列化が困難。

CISC 命令システム構築技術は、別の技術である RISC の逆です。 これらの概念の違いは、実際のプロセッサ アーキテクチャではなく、プログラミング方法にあります。 最新のプロセッサのほとんどは、RISC タイプと CISC タイプの両方の命令セットをエミュレートします。

ワークステーション、ミッドレンジ サーバー、およびパーソナル コンピューターは CISC プロセッサを使用します。 モバイル デバイス プロセッサ (SOC およびメインフレーム) の最も一般的な命令アーキテクチャは RISC です。 さまざまな機器のマイコンでは、RISCが使用されることがほとんどです。

RISC は、命令を単純化してデコードしやすく、実行時間を短縮することでパフォーマンスを向上させるプロセッサ アーキテクチャです。 最初の RISC プロセッサには乗算と除算の命令さえありませんでした。 これにより、クロック速度の向上も容易になり、スーパースカラ化 (複数の実行ユニットにわたる命令の並列化) がより効率的になります。

以前のアーキテクチャの命令セットは、アセンブリ言語で手動でプログラムを作成したり、マシンコードで直接プログラムを作成したりすることを容易にし、コンパイラの実装を容易にするために、可能な限り多くの機能を果たしました。 多くの場合、キットには高級言語構造を直接サポートするための命令が含まれています。 これらのセットのもう 1 つの特徴は、ほとんどの命令が原則として、考えられるすべてのアドレス指定方法を許可していることです。たとえば、算術演算のオペランドと結果の両方が、レジスタだけでなく、直接アドレス指定やメモリ内でも使用可能です。 このようなアーキテクチャは後に CISC と呼ばれるようになりました。 ただし、多くのコンパイラはそのような命令セットの機能を最大限に活用しておらず、複雑なアドレス指定方法では低速メモリへの追加アクセスが発生するため、時間がかかります。 このような関数は、プロセッサが簡素化され、より多くのレジスタの余地が残され、メモリ アクセスの数が削減できる場合、一連の単純な命令でより適切に実行されることがわかっています。 RISC として分類される最初のアーキテクチャでは、デコードを簡素化するためにほとんどの命令が同じ長さと同様の構造を持ち、算術演算はレジスタのみで動作し、メモリ作業は個別のロード命令とストア命令を通じて行われます。 これらの特性により、パイプライン ステージのバランスをより適切に調整できるようになり、RISC パイプラインの効率が大幅に向上し、クロック速度の向上が可能になりました。

RISK プロセッサの特徴的な機能:

固定機械命令長 (例: 32 ビット) と単純な命令フォーマット。

メモリ操作 (読み取りまたは書き込み) に特化したコマンド。 読み取り、変更、書き込み操作はありません。 「変更」操作はレジスタの内容に対してのみ実行されます (いわゆるロード アンド ストア アーキテクチャ)。

多数の汎用レジスタ (32 以上)。

短縮されたデータ型 (バイト、16 ビット ワード) に対する「変更」操作がサポートされていない。 たとえば、DEC Alpha 命令セットには 64 ビット ワードの演算のみが含まれており、バイト、16 ビット、および 32 ビット ワードの演算を実行するプロシージャの開発とその後の呼び出しが必要でした。

プロセッサー自体内のファームウェアの欠如。 CISC プロセッサ内のマイクロプログラムによって実行されるものは、RISC プロセッサ内では通常の (特別なストレージに配置されているとはいえ) マシン コードとして実行されます。これは、OS カーネルやアプリケーションのコードと基本的に変わりません。 たとえば、DEC Alpha のページ フォールト処理とページ テーブル解釈は、ROM にあるいわゆる PALCode (Privileged Architecture Library) に含まれていました。 PALCode を置き換えることにより、Alpha プロセッサを 64 ビットから 32 ビットに変換できるだけでなく、ワード バイト順と仮想メモリ ページ テーブル エントリの形式も変更することができました。

コンベアを見てみましょう。

パイプラインは、最新のプロセッサーとコントローラーのパフォーマンスを向上させる (単位時間あたりに実行される命令の数を増やす) ために使用される計算を組織化する方法であり、コンピューターの開発で使用されるテクノロジーです。

その考え方は、コンピューター命令の処理を一連の独立したステージに分割し、各ステージの最後に結果を保存するというものです。 これにより、プロセッサの制御回路は、処理の最も遅い段階の速度で命令を受け取ることができますが、最初から最後まで各命令の排他的な完全な処理を実行するよりもはるかに高速です。

「コンベヤー」という用語自体は、同様の動作原理が使用されている業界に由来しています。材料は自動的にコンベヤーベルトに沿って作業者に運ばれ、作業者はそれを使って必要なアクションを実行し、次の作業者が結果として得られたワークピースに対して自分の機能を実行します。次の作業者は別のことを行います。このようにして、一連の作業者はコンベアの終わりまでに、生産のペースを乱すことなく、割り当てられたすべてのタスクを完全に完了します。 たとえば、最も遅い操作に 1 分かかる場合、各部品は 1 分で組立ラインから外されます。

パイプライン コンピューティングが最初に使用されたのは、ILLIAC II プロジェクトまたは IBM Stretch プロジェクトのいずれかであると考えられています。 IBM ストレッチ プロジェクトは、「フェッチ」、「デコード」、「実行」という用語を生み出し、その後一般的に使用されるようになりました。

最新のプロセッサの多くはクロック ジェネレータによって制御されます。 プロセッサ内部は、論理要素とメモリ セル (フリップフロップ) で構成されています。 クロック ジェネレーターから信号が到着すると、フリップフロップは新しい値を取得し、ロジックが新しい値をデコードするのに時間がかかります。 その後、クロック ジェネレーターからの次の信号が到着し、フリップフロップは新しい値を受け取ります。

論理ゲートのシーケンスを短いものに分割し、これらの短いシーケンスの間にフリップフロップを配置することにより、ロジックが信号を処理するのに必要な時間が短縮されます。 この場合、それに応じて 1 プロセッサ サイクルの期間を短縮できます。

アセンブリ コードを作成するとき (または一連の命令を生成するコンパイラを開発するとき)、命令の実行結果は、各命令の実行が終了してから次の命令の実行が開始される場合とまったく同じであると想定されます。 パイプラインを使用すると、この前提が維持されますが、必ずしも命令の実行順序が維持されるわけではありません。 複数の命令を同時に実行すると、パイプラインの論理的に誤った動作が発生する可能性がある状況は、「パイプライン ハザード」として知られています。 競合を解決するにはさまざまな方法 (転送など) があります。

非パイプライン アーキテクチャは、命令処理中に 1 つまたは少数のモジュールがその役割を実行する一方で、プロセッサの機能モジュールの負荷が低いため、効率が大幅に低下します。 パイプラインは、プロセッサー内のモジュールのアイドル時間を完全に排除するわけではなく、特定の各命令の実行時間を短縮することもありませんが、プロセッサー モジュールに異なる命令を並行して動作させることにより、単位当たりに実行される命令の数が増加します。時間、ひいてはプログラムの全体的なパフォーマンスに影響します。

パイプライン プロセッサは、命令処理が一連のステージに分割され、複数の命令を異なるステージで同時に処理できるように設計されています。 各ステージの結果はメモリ セルを介して次のステージに転送され、命令が実行されるまで同様に転送されます。 このようなプロセッサ構成では、各命令の平均実行時間がわずかに増加しますが、命令完了の頻度が高いため、パフォーマンスが大幅に向上します。

すべての命令が独立しているわけではありません。 最も単純なパイプラインでは、命令処理が 5 つのステージで表され、完全なロードを保証するには、最初の命令の処理が完了するまでに、さらに 4 つの連続する独立した命令を並行して処理する必要があります。 シーケンスに現在実行中の命令に依存する命令が含まれている場合、単純なパイプラインの制御ロジックはパイプラインのいくつかの初期ステージを一時停止し、それによって空の命令 (「バブル」) をパイプラインに (場合によっては) 依存関係が解決されるまで繰り返し配置します。 。 このような場合にパイプラインの一部を一時停止する必要性を大幅に減らす、転送などの技術が多数あります。 ただし、プロセッサによって同時に処理される命令間の依存関係により、非パイプライン プロセッサと比較してパイプライン ステージ数の倍数のパフォーマンスの向上は実現できません。

長所と短所。

コンベアはすべての場合に役立つわけではありません。 考えられる欠点はいくつかあります。 命令パイプラインは、マシン サイクル (en:クロック サイクル) ごとに新しい命令を受け入れることができる場合、「完全にパイプライン化されている」と呼ぶことができます。 そうしないと、遅延をパイプラインに強制的に組み込む必要があり、パイプラインがフラットになり、パフォーマンスが低下します。

利点:

プロセッサのサイクル時間が短縮されるため、ほとんどの場合、命令の処理速度が向上します。

加算器や乗算器などの一部の組み合わせ論理ゲートは、論理ゲートの数を増やすことで高速化できます。 パイプラインを使用すると、要素の不必要な蓄積を防ぐことができます。

欠点:

非パイプライン プロセッサは、一度に 1 つの命令のみを実行します。 これにより、命令分岐の遅延 (実際にはすべての分岐が遅延します) や、並列実行される順次命令に関連する問題が防止されます。 したがって、このようなプロセッサの回路はより単純になり、製造コストが安くなります。

非パイプライン プロセッサの命令レイテンシは、パイプライン化された同等のプロセッサよりもわずかに低くなります。 これは、パイプライン プロセッサに追加のフリップフロップを追加する必要があるために発生します。

非パイプラインプロセッサは命令処理速度が安定しています。 パイプライン プロセッサのパフォーマンスは予測がはるかに難しく、プログラムごとに大きく異なる可能性があります。

中央グラフィックプロセッサメーカー

コマンドセットの削減)は、70年代にアメリカとイギリスで行われた、プログラマーによるコマンドの使用頻度に関する実践的な研究の結果として生まれました。 その直接の結果は、よく知られた「80/20 ルール」です。つまり、典型的なアプリケーション プログラムのコードの 80% は、利用可能なセット全体の最も単純な機械語命令の 20% のみを使用します。

最初の「真の」RISC 31 命令プロセッサは、バークレー大学の David Patterson の指導の下で作成され、続いて 39 命令プロセッサが作成されました。 それらには2万〜5万個のトランジスタが含まれていました。 パターソン氏の努力の成果は、70 年代後半に 75 のチームで SPARC アーキテクチャを開発した Sun Microsystems によって活用されました。 1981 年、MIPS プロジェクトがスタンフォード大学で立ち上げられ、39 チームが RISC プロセッサを開発しました。 その結果、1980 年代半ばに Mips Computer Corporation が設立され、74 個のコマンドを備えた次のプロセッサが設計されました。

独立系企業 IDC によると、1992 年には SPARC アーキテクチャが市場の 56% を占め、次いで MIPS - 15%、PA-RISC - 12.2% でした。

同じ頃、インテルは、IA-32 ファミリの最後の「真の」CISC プロセッサーである 80386 シリーズを開発しました。 前回は、プロセッサ アーキテクチャの複雑性を高めることによってのみパフォーマンスの向上が達成されました。つまり、プロセッサ アーキテクチャが 16 ビットから 32 ビットに移行し、追加のハードウェア コンポーネントが仮想メモリをサポートし、多数の新しいコマンドが追加されました。

RISC プロセッサの主な機能:

  1. 短縮されたコマンドセット(80 チームから 150 チームまで)。
  2. ほとんどのコマンドは 1 クロック サイクルで実行されます。
  3. 多数の汎用レジスタ。
  4. 剛性の高い多段コンベヤの利用可能。
  5. すべてのコマンドは単純な形式を持ち、使用されるアドレス指定方法はほとんどありません。
  6. 広々とした個別のキャッシュ メモリが利用可能。
  7. ソースコードを解析し、コマンドの順序を部分的に変更する最適化コンパイラーの使用。

第3世代RISCプロセッサ

RISC プロセッサの最大の開発者は、Sun Microsystems (SPARC - Ultra SPARC アーキテクチャ)、IBM (マルチチップ Power プロセッサ、シングルチップ PowerPC - PowerPC 620)、Digital Equipment (Alpha - Alpha 21164)、Mips Technologies (Rxx00 - R 10000) です。ファミリ)、およびヒューレット・パッカード (PA-RISC アーキテクチャ - PA-8000)。

すべての第 3 世代 RISC プロセッサ:

  • 64ビットであり、 スーパースカラー(クロック サイクルごとに少なくとも 4 つのコマンドが起動されます);
  • パイプライン化された浮動小数点演算ユニットが組み込まれています。
  • マルチレベルのキャッシュメモリを備えています。 ほとんどの RISC プロセッサは、事前に復号化された命令をキャッシュします。
  • 4層のメタライゼーションを備えたCMOSテクノロジーを使用して製造されています。

データを処理するには、動的分岐予測アルゴリズムとレジスタ再割り当て方法が使用され、コマンドのアウトオブオーダー実行が可能になります。

RISC プロセッサのパフォーマンスの向上は、クロック周波数を高め、チップ設計を複雑にすることによって実現されます。 最初の方向の代表的なものは DEC の Alpha プロセッサであり、最も複雑なものは Hewlett-Packard のプロセッサです。 これらの企業のプロセッサをさらに詳しく見てみましょう。

アルファプロセッサ構造: 21064、21264

Alpha 21064 プロセッサの構造を図に示します。 10.1.


米。 10.1.

Alpha 21064 プロセッサの主な機能ブロック:

  • I-cache - コマンド キャッシュ。
  • IRF は整数演算レジスタ ファイルです。
  • F-box は浮動小数点演算デバイスです。
  • E-box - 整数演算装置 (7 コンベアステップ).
  • I-box - コマンド デバイス (コマンド キャッシュ、コマンドのフェッチ、および復号化を制御します)。
  • A-box - データのロード/セーブ制御デバイス。 IRF、FRF、データキャッシュ、外部メモリ間のデータ交換のプロセスを制御します。
  • 書き込みバッファ - ライトバックバッファ。
  • D キャッシュ - データ キャッシュ。
  • BIU は、外部キャッシュ メモリを接続するためのインターフェイス ユニットで、サイズは 128 KB ~ 8 MB です。

Alpha 21164と21264の特性比較

Alpha 21264 プロセッサは、前世代の 21164 に比べて大幅に改善されており、L1 キャッシュが大きくなり、機能ブロックが追加され、分岐予測がより効率的になり、新しいビデオ処理命令が追加され、バスが拡大されました。

Alpha 21264 は、クロック サイクルごとに最大 4 つの命令を読み取り、最大 6 つの命令を同時に実行できます。 21164 モデルとの最大の違いは、コマンドの順序を変更して (アウトオブオーダー) 実行できることです (Alpha では初)。

アウトオブオーダー実行の効率は、命令の最適な実行順序を決定するために CPU が操作できる命令の数によって決まります。 CPU がこのために使用できる命令が多ければ多いほど、より先を見据えることができます。 Intel P6 クラス プロセッサ (Pentium Pro、Pentium II、Xeon) は、少なくとも 40 個のコマンドを同時に処理できます。 他のプロセッサでは、この数字はさらに大きくなります。HP の PA-8000 は 56 個のコマンドで動作し、Alpha プロセッサは 80 個のコマンドに対応します。

ほとんどの RISC プロセッサと同様に、Alpha には 32 個の整数レジスタと 32 個の浮動小数点レジスタのセットが含まれており、すべて 64 ビット幅です。 アウトオブオーダー命令実行の効率を高めるために、21264 プロセッサには、通常のレジスタ セットに加えて、48 個の整数レジスタと 40 個の浮動小数点レジスタが装備されています。

各レジスタは現在の命令の値を一時的に保存できます。 命令が処理された場合、結果をターゲット レジスタにダンプする必要はありません。代わりに、CPU は単に一時レジスタの名前を変更します ( Register Renaming )。

同様のレジスタ名の変更は他のプロセッサにも存在します。 ただし、21264 は独自の「トリック」を実装しています。整数レジスタの複製セットがあり、80 個の整数レジスタのそれぞれが再度複製されます。 したがって、チップ上には合計 160 個の整数レジスタがあります。 これが、アウトオブオーダーの実行が難しいにもかかわらず、21264 プロセッサの高い周波数が許容できる理由の 1 つです。

両方のグループの整数演算のブロックは完全に同一ではありません。 そのうちの 1 つは乗算ブロックを含み、2 つ目は動画 (MPEG) を処理するための特別なロジックを含みます。 これを達成するために、Alpha コマンド セットに 5 つの新しいコマンドが追加されました。 それらの中で最も興味深いものである PERR は、動きの推定に使用されます。 MPEG の圧縮と解凍の両方で発生するタスクを実行します。 PERR 命令は、9 つ​​の通常の命令の処理を実行します。 したがって、21264 プロセッサは、追加の周辺機器を必要とせずに、MPEG-2 ビデオ シーケンスと AC-3 DVD オーディオ データをリアルタイムでデコードできます。

プロセッサアーキテクチャ- ユーザーに提供されるハードウェアとソフトウェアのセット。 この一般的な概念には、ソフトウェアでアクセス可能なレジスタと実行 (オペレーティング) デバイスのセット、基本的なコマンドとアドレス指定方法のシステム、アドレス指定可能なメモリの容量と構造、割り込み処理の種類と方法が含まれます。 たとえば、Pentium、Celeron、i486 プロセッサのすべての改良版は IA-32 アーキテクチャ (インテル アーキテクチャ - 32 ビット) を採用しています。これは、ユーザーに提供される標準的なレジスタのセット、基本的なコマンドの共通システム、およびシステムを構成するためのメソッドによって特徴付けられます。メモリのアドレス指定、メモリ保護と割り込み処理の同じ実装。

プロセッサのアーキテクチャと動作を説明する場合、その表現は通常、レジスタまたはプログラム モデルを形成するソフトウェアでアクセス可能なレジスタのセットの形式で使用されます。 これらのレジスタには、処理されたデータ (オペランド) と制御情報が含まれています。 したがって、レジスタ モデルには、オペランドを格納するために使用される汎用レジスタのグループと、プログラムの実行とプロセッサの動作モード、メモリ アクセスの構成 (メモリ保護、セグメントとページの構成など) の制御を提供するサービス レジスタのグループが含まれます。 )。

汎用レジスタは、プロセッサの内部レジスタ メモリであるレジスタ記憶装置 (RAM) を形成します。 サービス レジスタの構成と数は、マイクロプロセッサ アーキテクチャによって決まります。 通常、それらには次のものが含まれます。

PC プログラム カウンター (Intel マイクロプロセッサ アーキテクチャの CS+IP);

SR ステータス レジスタ (EFLAGS)。

CR プロセッサの動作モード制御レジスタ。

セグメントおよびページ メモリ構成を実装するレジスタ。

プログラムのデバッグとプロセッサのテストを提供するレジスタ。

プロセッサの機能は、レジスタ転送の実装の形式で表されます。これは、レジスタの内容を読み書きすることによってレジスタの状態を変更する手順です。 このような転送の結果として、コマンドとオペランドのアドレス指定と選択、結果の保存と転送、サービス レジスタへの新しいコンテンツの到着に応じたコマンド シーケンスとプロセッサの動作モードの変更、およびその他すべての手順が実行されます。指定された条件に従って情報処理プロセスを実行する機能が提供されます。

多くのプロセッサには、アプリケーション プログラムの実行時に使用され、各ユーザーが使用できるレジスタと、システム全体の動作モードを制御し、オペレーティング システムの一部である特権プログラム (スーパーバイザー) のみが使用できるレジスタがあります。 )。 したがって、そのようなプロセッサは、アプリケーション プログラムの実行時に使用されるレジスタを含むユーザー レジスタ モデル、またはオペレーティング システムによって使用されるソフトウェア アクセス可能なプロセッサ レジスタのセット全体を含むスーパーバイザ レジスタ モデルとして表されます。

実行されるコマンドのセットとアドレス指定方法に加えて、マイクロプロセッサの重要なアーキテクチャ上の特徴は、使用されるメモリの実装とコマンドとデータのフェッチの構成です。 これらの特性に従って、プリンストン アーキテクチャとハーバード アーキテクチャのプロセッサは異なります。

プリンストン アーキテクチャは、フォン ノイマン アーキテクチャとも呼ばれ、プログラム ストレージ、データ ストレージ、およびスタック構成に共有 RAM を使用することが特徴です。 このメモリにアクセスするには、共通のシステム バスが使用され、コマンドとデータの両方がプロセッサに入力されます。 このアーキテクチャには多くの重要な利点があります。 共有メモリの存在により、解決されるタスクに応じて、そのボリュームを迅速に再配分して、コマンド、データ、スタック実装の個別の配列を保存できます。 したがって、マイクロプロセッサを使用する特定のケースごとに、利用可能な RAM の量をより効率的に使用することができます。 コマンドとデータの送信に共通バスを使用することで、システム動作のデバッグ、テスト、継続的な監視が大幅に簡素化され、信頼性が向上します。 したがって、プリンストン アーキテクチャは長い間コンピューティングを支配していました。

プリンストン アーキテクチャの主な欠点は、共通のシステム バス上でコマンドと処理されたデータを順次サンプリングする必要があることです。 この場合、共通バスがボトルネックとなり、デジタル システムのパフォーマンスを制限します。 マイクロプロセッサ システムのパフォーマンスに対する要求がますます高まっているため、近年、多くのタイプの最新のマイクロプロセッサの作成においてハーバード アーキテクチャの使用が増加しています。

ハーバード アーキテクチャは、命令メモリ (プログラム) とデータ メモリが物理的に分離されていることが特徴です。 オリジナルのバージョンでは、プログラム カウンターの内容を保存するために別のスタックも使用されており、ネストされたサブルーチンを実行する機能が提供されていました。 各メモリは個別のバスによってプロセッサに接続されており、現在のコマンドを実行して次のコマンドをフェッチおよびデコードしながら、データの読み取りと書き込みを同時に行うことができます。 コマンド ストリームとデータ ストリームのこの分離とそれらの取得操作の組み合わせにより、プリンストン アーキテクチャを使用する場合よりも高いパフォーマンスが実現されます。

ハーバード アーキテクチャの欠点は、より多くのバスが必要であること、およびコマンドとデータに割り当てられる固定量のメモリが必要であることに関連しており、その目的は問題の要件に応じてすぐに再配分できないことです。解決しました。 そのため、より多くのメモリを使用する必要があり、さまざまな問題を解決する際のメモリ使用率は、プリンストン アーキテクチャのシステムに比べて低くなります。 しかし、マイクロエレクトロニクス技術の発展により、これらの欠点は大幅に克服できるようになったため、ハーバード アーキテクチャは、命令とデータを保存するために別個のキャッシュ メモリを使用する最新の高性能マイクロプロセッサの内部構造に広く使用されています。 同時に、プリンストン アーキテクチャの原理は、ほとんどのマイクロプロセッサ システムの外部構造に実装されています。

ハーバード アーキテクチャは、さまざまなオブジェクトを制御するための特殊なマイクロプロセッサであるマイクロコントローラでも広く使用されており、その動作プログラムは通常、別の ROM に格納されています。