個人ブログのようなものです。とくにジャンルはありません。
広告枠
記事の概要
作成日:2020-08-18
最終更新日:2020-08-18
記事の文字数:1259
CPU命令実行の流れ
概要

CPUが命令を実行する流れのメモ。
CPUが一つの命令を実行するまでに以下の一連の流れを行っている。
  1. 命令の取り出し
  2. 命令のデコード
  3. オペランドアドレスの割り出し
  4. オペランドデータの取り出し
  5. 命令の実行

①命令取り出し

画像クリックで等倍

まず最初は主記憶装置から命令を取り出すところから始まる。
「プログラムカウンタ(命令アドレスレジスタ)」というところに「実行する命令が主記憶装置のどこにあるのか」という情報を持っているため、それを使って主記憶装置から命令を取り出す。
この時取り出される命令には「命令部」と、演算対象であるデータの主記憶装置上のアドレスを表す「オペランド部」の二つが組み合わさっている。
取り出した命令(命令部+オペランド部)は「命令レジスタ」で保持する。
命令を取り出したら、「プログラムカウンタ」の値をインクリメントする(次に実行する命令のアドレスに変更する)
②命令のデコード

画像クリックで等倍

受け取った命令は制御信号に変換される必要がある。
それを行うのが「デコーダ」の役割。
「デコーダ」は「命令レジスタ」から命令の「命令部」を受け取り、制御信号に変換し、「算術論理演算装置(ALU)」へ送る。
③オペランドアドレスの割り出し

画像クリックで等倍

次に「オペランド(演算対象のデータ)」を主記憶装置から取り出す作業を行いたいところだが、その前にその「オペランド」が「主記憶装置のどこに保存されているか」を割り出す必要がある。
「命令レジスタ」に保存されている命令の「オペランド部」からオペランドがどこにあるのかを割り出すことができる。
この時割り出し方式がいくつかあるがそれについてはそこそこ長いため別記事で記載する。
割り出したアドレスは「汎用レジスタ」に保持される。
④オペランドデータの取り出し

画像クリックで等倍

オペランドアドレスの割り出しができたら、そのアドレスを使って主記憶装置から実際に「オペランド」の取り出しを行う。
取り出された「オペランド」は「汎用レジスタ」に保持される。
⑤命令の実行

画像クリックで等倍

最後に命令を実行する。
命令の実行は「算術論理演算装置(ALU)」で行われる。
「汎用レジスタ」から計算対象の「オペランド」を取り出し、演算を行う。
演算結果は再び「汎用レジスタ」に書き戻され、その後、「汎用レジスタ」から主記憶装置にも書き戻される。
ここまで終わったら再び「①命令の取り出し」に戻り、次の命令が実行される。
CPU内の構成要素(部品)まとめ

名称概要
プログラムカウンタ(命令アドレスレジスタ)実行する命令が主記憶装置のどこに保存されているかを保持するo----
命令レジスタメモリから取り出した命令を保持するooo--
デコーダ命令レジスタから送られた命令をデコードする-o---
汎用レジスタオペランドの保持など様々な情報を保持する--ooo
算術論理演算装置(ALU)演算を行う-o--o

関連ページ
SCSSとやらでメディアクエリと疑似要素の組み合わせに小一時間苦戦したという話
SCSSとやらでメディアクエリと疑似要素の組み合わせに小一時間苦戦したという話 当然ですが本サイト…
Twitterの「興味関心」のチェックを全部まとめて外す
Twitterの「興味関心」のチェックを全部まとめて外せない Twitterに「興味関心」とやらを…
ボタンを押す演出でCSSのtranslateYやtopを使用することの問題
ボタンを押す演出でCSSのtranslateYやtopを使用することの問題…
東京03のyoutubeチャンネルの概要ページの挙動がおかしい
東京03のyoutubeチャンネルの概要ページの挙動がおかしい…
Youtube Data APIでハンドルIDからユーザ情報を取得できない
Youtube Data APIでハンドルIDからユーザ情報を取得できない問題 結論から言うと現在…
ウマ娘まとめサイト(InoReader)
ウマ娘まとめサイト(InoReader)…
ウマ娘まとめサイト(Feedly)
ウマ娘まとめサイト(Feedly)…
Pythonを使ってinoreaderでサイトの更新情報を取得してみた
inoreader(イノリーダー?)が公開しているWeb APIを使用して、Pythonで自動的にサ…
Pythonを使ってFeedlyでサイトの更新情報を取得してみた
Pythonを使ってFeedlyでサイトの更新情報を取得してみた…
CPU-マルチプロセッサによる並列処理
CPU-マルチプロセッサによる並列処理…
CPUの高速化方式
CPUの高速化方式…
CPUの性能指標
CPUの性能指標…
CPU-アドレス指定方式
CPU-アドレス指定方式…
(現在ページ)CPU命令実行の流れ
CPU命令実行の流れ…
文字コードについて
文字コードについて…
base64エンコードの流れ(C#)
base64エンコードの流れ(C#)…
サイバー攻撃:非標的型攻撃とは
サイバー攻撃:非標的型攻撃とは…
サイバー攻撃:標的型攻撃とは
サイバー攻撃:標的型攻撃とは…
IPアドレスについて
IPアドレスについて…
シングルサインオン/SAML認証について
シングルサインオン/SAML認証について…
関連タグ
情報技術
コメントログ
コメント投稿




本サイトのタグ一覧
タグを表示する Webサイト作成Webツールアークナイツアークナイツ-ステージ攻略日記アズールレーンアズールレーン-日記ウマ娘ゲームデビラビローグホラーポケットタウン気ままな日記情報技術情報技術-WebAPI知的財産権統合戦略白夜極光本サイトについて魔王スライム様がんばる!漫画
管理人動画宣伝

 ※再生時に音が出るので注意