コマンドライン
💎 コマンドパイプライニング
入力された命令を複数のステップに分けてCPUで処理する
ex)は抽出フェーズと実行フェーズに分けられ,1つ目の命令を処理する際に抽出し,2つ目の命令の抽出サイクルと1つ目の命令の抽出サイクルとを併せて実行することで,CPUが効率的に処理できる.
ただし、上記の例で示した2段階コマンドラインは、既存の速度より2倍速くしなければならないが、できない.抽出サイクルと実行サイクルが同時に終了するとは限らないためである.通常、実行サイクルは非常に長い.
この問題を解決するために、ステップ2のコマンドラインとしてのステップ数を増やし、各ステップの処理時間を同じにします.
パイプラインステップの数を増やすと、全体の速度が向上します.
ステップ4コマンドラインステップは、次のとおりです.
1)コマンド抽出ステップ(IF)
2)解読命令手順(ID)
3)荷渡し段階(OF)
4)ステップ実行(EX)
構成.
パイプライン内のステップの速度が向上していることを確認します.
Sp=T1Tk=k∗Nk+(N−1)S_p=\frac{T_1}{T_k}=\frac{k*N}{k+(N-1)}Sp=TkT1=k+(N−1)k∗N
(パイプラインステップ数:k、実行するコマンド数:N)
문제 :
파이프라인 단계수 = 4
파이프라인 클록 = 1GHz 일 때,
10개의 명령어를 실행하는 경우의 속도 향상은 ?
풀이 :
487104+(101)=4013=3.08倍frac{4*10}{4+(10-1)}=frac{40}=3.08倍4+(10\1)48710=1340=3.08倍パイプライン上のクロックはライフサイクルの単位を表しますが、速度の向上には影響しません.
これらのパイプラインステップの数を増やす方法は、コマンドの数を無限に近づけると、速度がk(パイプラインサイクル)に上昇することである.
しかし、これらのパイプラインステップの上昇も速度を低下させる.
これは、すべてのコマンドがパイプラインを通過しないためです.
ex)条件分岐コマンド3:JZ 12
条件の値が0の場合、コマンドは12番のコマンドになります.この場合、コマンド4からコマンド6は実行されません.
これらのブランチのパフォーマンスの低下を最小限に抑えるには
1)四半期予測
2)四半期目標先確定
3)ループバッファの使用
4)遅延分岐
ステータスレジスタ:条件分岐コマンドで使用する条件フラグを保存する
このレジスタには、条件分岐命令に使用する条件フラグが格納され、例えば、演算結果値が0か1か、整数が等しい.
スーパースカラー:複数のパイプライン
スーパースカラー加速式:
Sp=k+N−1k+(N−m)m=m(k+N−1)N+m(k−1)S_p=\frac{k+N-1}{k+\frac{(N-m)}{m}}=\frac{m(k+N-1)}{N+m(k-1)}Sp=k+m(N−m)k+N−1=N+m(k−1)m(k+N−1)
コマンド数Nが無限個に達すると、速度向上はm(パイプライン数)に収束する
理論的には、パイプラインの数が増えるにつれて速度が向上します.
しかし、私にはできません.命令は互いに依存しているからだ.
この問題を解決するには、依存性を解消したり、ハードウェアのインストールを増やしたりするために、コマンドの実行順序を再スケジュールする必要があります.
デュアルコアおよびマルチコア
1)CPUコア:CPU内部で指令を実行するために必要なコアハードウェアモジュール
2)マルチコアプロセッサ:
-デュアルコア:CPUコア×2
-クアッドコア:4
-6コア:6
3)チップレベルマルチプロセッサまたはシングルチップマルチプロセッサとも呼ばれる
デュアルコアプロセッサーの例
シングルコアスーパースカラープロセッサーと比較して、デュアルコアプロセッサーの速度は2倍に向上する見込みです.これは、1つのコアで実行されていた実行プログラムを2つの部分に分けて実行するためです.
これらのカーネルは、内部キャッシュとシステムバスインタフェースのみを共有します.
各カーネルは独立したプログラムを実行します->マルチタスクまたはマルチスレッドをサポートします.
マルチタスク処理は、1つのカーネルで命令を同時に処理します.
マルチスレッドは、1つのプログラムを実行するときに、プロセッサの最小実行ユニットスレッドである.
ねじモデル
シングルスレッドモデルは、CPUコアごとに1つのスレッドのみを処理します.
処理中のスレッドのシステム状態、データおよびアドレス情報はレジスタセット(RS)に格納される.
RS:PC、SP、状態レジスタ、データレジスタ、アドレスレジスタ等
マルチスレッドモデルは2つのスレッドを処理し,各カーネルは2つのRSを含む.
Reference
この問題について(コマンドライン), 我々は、より多くの情報をここで見つけました https://velog.io/@onenewarm/명령어-파이프라인テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol