目次
5. 有線コントローラーの設計 (非常に多く) - 純粋なハードウェア
(2.3) 微操作のタイミングを整える(ビートに合わせた操作)
6. マイクロプログラム制御(マイクロプログラム&マイクロプロセッサー)
(1) 概念化 - 命令、マイクロプログラム、マイクロ命令、およびマイクロオペレーション (レイヤーごとのカプセル化)
(2) 命令が CU からマイクロ命令にどのように解析されるか
(3) 保存されたマイクロ命令 (n 個のマシン命令 - n+1 個のマイクロプログラムに対応)
6. マイクロ命令 - 設計 (マイクロプログラムのマイクロ命令)
(1) マイクロ命令形式 - 水平、垂直、混合 (水平 + 垂直)
(3) パイプラインの性能指標(スループット、加速率、効率)
(1) MIPSアーキテクチャ(5段パイプライン-5段パイプライン)
(1)粒度(部分機能、部分、ワークショップ)&機能(複数、単一)
(3.3) 超長命令ワード (並列実行可能であることが判明した場合、自動的に超長命令に結合されます)
(1) 試験はパイプライン内のさまざまな命令の実行をテストするものです
(1.1) SISD (単一命令ストリーム - 単一データストリーム)
(1.2) SIMD (単一命令 - 複数データ ストリーム)
(1.3) MISD (存在しない - 複数の命令 - 単一のデータ ストリーム)
(1.4) MIMD (複数命令 - 複数データストリーム)
(3) マルチコアプロセッサ (1 CPU - 複数プロセッサ)
5. 第 5 章 - 中央処理装置
1. CPUの機能と基本構造
(1) 演算器の内部構造
(2) コントローラの基本構造
(3) CPUの主要な4つの部品
- ALU (算術論理演算装置)
- 登録する
- CU (コントロールユニット)
- 割り込みシステム
2. 命令実行プロセス(データフローと実行計画)
(1) クロックサイクル(マシンサイクル&命令サイクル)
CPUのクロックサイクルとは、 CPUが基本動作を実行するのに必要な時間を指します。通常はナノ秒 ( ns )で表されますが、ヘルツ ( Hz ) で表すこともできます。
クロック サイクルの長さは、CPUの設計および製造プロセスによって異なります。CPUのモデルが異なると、クロック サイクルの長さが異なる場合があります。一般に、現代のコンピューターのCPUクロック サイクルは、数ナノ秒から数十ナノ秒の間です。
CPUアーキテクチャの違い、製造プロセスの違い、速度の違いなどの要因はすべて、クロック サイクルの長さに影響します。
(2) 指導の流れ
(3) 値サイクル&間接サイクル&割り込みサイクル
実行サイクルは、ハードウェアの設計に応じて大きく異なる場合があります。!!
最良のものはなく、最も適したものがあるだけです。!!
(4) 命令実行方式(シングル、マルチ、パイプライン)
単一命令サイクル: (サイクルはすべての命令で同じです! )
欠点: ただし、単純な命令の場合、早期に実行された後にアイドル状態になります。(時間の無駄!) - 遅い! !(シリアル)
利点: ハードウェア設計 - 作成が簡単
複数の命令サイクル: (命令が異なればクロック サイクルも異なります! )
長所: 異なるサイクル、柔軟、高速実行 (ただしシリアル)
短所: ただし、設計が非常に複雑です。
(5) まとめ
3. データ循環 - シングルバス構造***
多彩なデザイン構造!同じ文でも、最善のものはなく、最も適切なものがあるだけです。!!
ここでは、単一バスのデータ フローのみを説明します。
その中のデータがどのようにCUによって段階的に制御され、バスから流れてくるかを理解した後、
他のパス(マルチバス)の場合も同様です。それはハードウェアの設計によって異なります。
学習後は、CPU データ パスを自分で設計してみたいという衝動に駆られます。ヒヒ(だんだんくだらない話~)
(1) シングルバス - 実戦(例)
命令フェッチサイクル
間接アドレスサイクル (間接アドレスを変換して宛先に送信)
実行サイクル
準備作業が完了しました。つまり、対応するデータが準備でき、変換対象のデータが変換されました。
オペランドに従って、対応する演算を実行します
(2) まとめ
各命令サイクルが何をすべきかを理解してください。
まず命令を分析します。命令にどのような操作があり、どのようなサイクルがあるかを理解します。
次に、各サイクルに絞り込み、何をすべきか! (最後のステップはステップバイステップで書くことです、それだけです~)
4. データ流通 - 専用チャネル※※※
考え方は【シングルバス】と同じです!
専用チャネル、つまり CPU 内のさまざまなコンポーネント間の通信は、CU のみによって制御されます
欠点: バスを占有しないため、ハードウェア設計がより複雑になります。もっと費用がかかります!
長所: 速い! !!
「遅いけど速い!」という言葉があります。(面白い.jpg)
(走るスピード)は遅いけど(展開スピード)は速い!
5. 有線コントローラーの設計 (非常に多く) - 純粋なハードウェア
命令カード マトリョーシカ: 1 つの命令 - 4 サイクルに相当 - サイクルはマイクロ操作を実行するビート数に相当します。
(ビートごとに、いくつかのマイクロ操作を実行できます)
特定の状況は当社の設計によって異なります - 古典的な層ごとのパッケージングです。(操作 + ビート + サイクル = 命令)
(1) CU——ラインコーミング
CU――全身が糸だらけ(切れっぱなし、理性は相変わらず混沌!)――実は大丈夫~。
- 命令を受け取るためのワイヤの最上行 - オペコード デコーダ -
- 左側の行 - ビート ジェネレーター - 各サイクルで実行されるビートの数を制御します (サイクル内のどのリンクを実行するかを知るためにパイプラインが必要です)
- 右側の行 - 4 つのフリップフロップ (4 命令サイクルに相当) - プラス、各実行ユニットによって完成されたフラグ (多数のフラグ ビット)
- 下の行の行は、対応するマイクロ操作 (マイクロコマンド) を制御し、実行命令を発行し、右側のフラグによって実行が完了したかどうかを判断します (結局のところ、回路は全二重ではありません)。
GPTも私を褒めてくれます
(2) コントローラの設計(4ステップ)
2 番目のステップ - 固定長のマシン サイクルを選択します (ここでは心配しないでください~)
(2.1) 各段階のマイクロ操作を分析する
本質 - どのステージでどの命令が使用されているかを調べてください。
(2.3) 微操作のタイミングを整える(ビートに合わせた操作)
(2.4) 回路設計
組み合わせ論理回路設計(動作スケジュール一覧:下記)
さらに、アドレス-アドレス-実行を1つずつ解析する必要があります(3サイクル)
対応するビート (T0、T1、T2) のマイクロ操作! !!
ステップ 1: 動作スケジュールのリスト化 (3 サイクルに相当)
ステップ 2: マイクロ操作の場合 - 式を作成する
たとえば、メモリからデータをフェッチする - 3 つのテーブルから結果を取得する -論理式を作成するというこの操作
ステップ 3: 論理図を描く
論理図によれば、マイクロ操作 (マイクロコマンドと呼ばれる) に対応するコマンド信号であると結論付けることができます。
(3) まとめ
配線が複雑すぎる!!!--RISCの場合!!!——やっぱり指示が少ないですね!
複雑な命令セットの場合、命令が 100 を超える場合があり、多すぎるため、配線が複雑すぎます。!!
利点: 速い
欠点: 拡張命令、困難な (複雑な) 設計改善、多すぎる命令セット システムには適さない
6. マイクロプログラム制御(マイクロプログラム&マイクロプロセッサー)
ソフトウェアの考え方 - カプセル化! !!(無線マトリョーシカ!1層は面倒なのでもう1層追加します!)
非常に多くのマイクロ操作があるため、マイクロプログラム セグメントを使用してこれらのマイクロ操作をカプセル化します。
たとえば、一連のマイクロ操作 [値サイクル] の場合、マイクロ プログラム セグメントをカプセル化します。
マイクロプログラムのセグメントを合計すると、機械語命令に対応するマイクロプログラムになります。
つまり、 - n 個の機械命令 - n 個のマイクロプログラムに対応します
(1) 概念化 - 命令、マイクロプログラム、マイクロ命令、およびマイクロオペレーション (レイヤーごとのカプセル化)
マイクロコマンド = マイクロ操作
(2) 命令が CU からマイクロ命令にどのように解析されるか
命令 - [マイクロプログラム] に変換 - 順次ロジック処理 (サポート割り込みなど) - マイクロプログラムの転送
マイクロプログラムストレージ[CMAR] - [対応するアドレス]を変換する - 対応する[マイクロ命令]を見つける - 実行
そして彼の次の住所によると、次の[マイクロインストラクション]を見つけてください(繰り返し!)
(3) 保存されたマイクロ命令 (n 個のマシン命令 - n+1 個のマイクロプログラムに対応)
なぜn+1なのでしょうか?
n 個の機械命令があるため、それらはすべて同じことを実行しますか? そうすると、項目は n 個あるはずです。
もう一つはどこから来たのですか?それは命令が【価値獲得サイクルのマイクロプログラム】を共有する必要があるからです!
では、なぜ間接アドレスと割り込みを備えた定期的なマイクロプログラムがないのでしょうか?
当時はそんなことなかったので、考えないでください!(このチュートリアルは古いと言えます)
しかし、アイデアは常にこのアイデアでした、理解してください〜
(4) まとめ
6. マイクロ命令 - 設計 (マイクロプログラムのマイクロ命令)
(1) マイクロ命令形式 - 水平、垂直、混合 (水平 + 垂直)
(1.1) 横型
- ダイレクトエンコーディング
- フィールドダイレクトエンコーディング
マトリョーシカ - デコーダーを追加 - 桁数を減らす
- フィールド間接エンコーディング
(2) アドレスの作り方(次のアドレスの見つけ方)
(3) 練習問題 - 住所フィールドの計算
(4) まとめ
7. マイクロプログラム制御ユニット - 設計
マイクロプログラミングはハードワイヤードよりも遅いのはなぜですか?
x86 アーキテクチャ (AMD および Intel) が arm アーキテクチャより遅いのはなぜですか?
x86 はマイクロプログラム (マイクロ命令) を使用するため、命令セットが削減されます。
アームはハード配線を使用 - 命令 - ビート + マイクロ操作 - 複雑な命令セット
(1) 設計ステップ 4 ステップ
① (解析操作 - ② マイクロ操作パッケージ化 - マイクロ命令パッケージング [③ フォーマット + ④ エンコーディング])
(2) マイクロプログラミングの分類(入れ子人形の深層)
この動的な変更は非常に優れています (テスト + 変更 - ハードワイヤードの場合は再構築する必要があります)
(3) マイクロプログラミング VS ハードワイヤリング
(4) まとめ
8.命令パイプライン(命令実行の最適化)
従来のフォン・ロイマン マシン - シリアル (逐次) 実行
メリット:構造がシンプル
短所:遅い
(1) シーケンシャル実行&パイプライン実行
シーケンシャルおよびオーバーラップ実行 (ここでは複数のステージを細分化できます)
(2) パイプラインの表現方法(実行過程図&時空図)
(3) パイプラインの性能指標(スループット、加速率、効率)
スループット - スループットレート
加速比(元の時間/加速時間)
効率
(1) 概要
9.命令パイプラインの影響要因
(1) MIPSアーキテクチャ(5段パイプライン-5段パイプライン)
定期的に均一なアプローチ -ラッチを追加- 進行状況を制御
(2)影響要因(3点)構造データ管理
設計者は、これらの問題 (競合) に合わせて最適化および調整する必要があります。
なんてハゲ頭なんだ!!!正直で実践的であれば、こうした問題は起こらないでしょう。(doge.jpg)
相互排除 - 命令間の問題 (同じリソースをプリエンプトする)
同期 - データ間の問題 (データの同時読み取りまたは書き込み)
(2.1) 構造(リソースのプリエンプション)
(2.2) データ
(2.3) 制御(条件ジャンプ問題)
(3) まとめ
9.命令パイプラインの分類
(1)粒度(部分機能、部分、ワークショップ)&機能(複数、単一)
繰り返しになりますが、複数の操作が設計されている限り、相互排他や同期などの操作が必要です。
最適化する必要があります!
(2) [静的 & 動的] & [線形 & 非線形]
実は、これらが誕生したのは、以前のパイプラインの最適化によるものです。
(3) マルチイシュー技術(マルチチャネル同時実行)
(3.1) スーパースカラ技術(空間多重化)
(3.2) 超流水技術
(3.3) 超長命令ワード (並列実行可能であることが判明した場合、自動的に超長命令に結合されます)
(4) まとめ
10. 5段派手な組立ライン(5段組立ライン)
(1) 試験はパイプライン内のさまざまな命令の実行をテストするものです
演算器の三大要素 - IMM(即値)、A、B
(1.1) 算術命令 - 加算 ADD
注 - レジスタの書き戻しは WB 段階で行われます。
(1.2) LOAD(ロード)命令
通常の状況では、ロードとストアのみがアクセスされます。(RISCで)
(1.3) STORE(ストア命令)
(1.4) beq & bne - 条件付きジャンプ命令
(1.5) JUMP - 無条件ジャンプ命令
(1.6) 演習
11. マルチプロセッサ
(1) マルチプロセッサの基本概念
(1.1) SISD (単一命令ストリーム - 単一データストリーム)
(1.2) SIMD (単一命令 - 複数データ ストリーム)
(1.3) MISD (存在しない - 複数の命令 - 単一のデータ ストリーム)
複数の入力 + 1 つの処理 (考えるのはとんでもない)
(1.4) MIMD (複数命令 - 複数データストリーム)
(2) ベクトルプロセッサ&ベクトルデータベース(メモリ)
なぜ知りたいんですか?(ベクトルプロセッサ)
それは、プロフェッショナルなことはプロフェッショナルな人や物事によって行われなければならないということを私たちに理解させるためです。
したがって、現時点に自分自身を限定しないでください。!!(これが使いにくいなら、頑張って自分で作ってください!)
(3) マルチコアプロセッサ (1 CPU - 複数プロセッサ)
これは正常ですが、デザインが共有され、同時に実行されると、「ロックの問題」が発生します。
ここでは詳しい説明はしませんよ~
12. ハードウェアのマルチスレッド化
ハードウェアの使用 - マルチスレッドの実装
マルチスレッドは、同じプロセス内で複数のスレッドを同時に実行することにより、プログラムのパフォーマンスとリソース使用率を向上させる方法です。ハードウェアを使用してマルチスレッドを実装すると、次のような利点と欠点があります。
利点:
- 同時実行性: マルチスレッドによりプログラムを同時に実行することができ、マルチコアプロセッサの計算能力を最大限に活用し、プログラムの実行効率と応答速度を向上させます。
- リソース共有: 複数のスレッドが同じプロセスのアドレス空間とリソースを共有できるため、コストのかかるコンテキスト切り替えやプロセス間のデータコピー操作が回避され、データ共有と通信が高速化されます。
- タスクの分解: プログラムを複数の小さなスレッドに分解すると、タスクの管理とスケジュールが容易になり、よりきめの細かい並列コンピューティングが実現し、システムのスループットと応答性が向上します。
- 負荷分散: マルチスレッドは、システムの負荷に応じてタスクの割り当てを自動的に調整できるため、さまざまなスレッドがシステム リソースを最大限に活用し、負荷分散の効果を実現できます。
危害:
- スレッドの競合: 複数のスレッドが共有データにアクセスすると、競合状態 (デッドロック、データの競合など) が発生する可能性があり、プログラムの正確性に影響を及ぼします。データの一貫性と正確性を確保するには、同期メカニズムが必要です。
- コンテキスト切り替えのオーバーヘッド: スレッド間の切り替えにはコンテキスト情報の保存と復元が必要であり、これにより一定のオーバーヘッドが発生します。スレッドの数が多すぎると、コンテキストの切り替えが頻繁に発生し、システムのパフォーマンスが低下する可能性があります。
- デバッグの難しさ: マルチスレッド プログラムのデバッグはシングルスレッド プログラムよりも難しく、スレッド間の相互作用と同時実行により、問題が発生した場合のトラブルシューティングとエラーの特定がより複雑になる可能性があります。
したがって、マルチスレッド化はプログラムのパフォーマンスとリソース使用率を向上させることができますが、その使用には注意が必要であり、潜在的な競合やデバッグの困難によって引き起こされる問題を克服できるように、スレッドの数と同期メカニズムを合理的に設計する必要があります。
学びの道は孤独かもしれない!でも、夢と未来のために、さあ!あなたならできると信じてください!