コンピュータ・アーキテクチャ演習(スライド資料13回)
【概要】 コンピュータのハードウェア構成において,プロセッサはプログラム実行の中核を担い,メモリと協調して動作する.プロセッサ内部のレジスタや命令セット,メモリアクセスの仕組み,データ転送や演算の実行など,ハードウェアの基本動作を理解することで,効率的なプログラム開発が可能となる.
大学で使用した自作の資料等を,手直しの上公開している. クリエイティブ・コモンズ BY NC SA.
プロセッサやメモリの仕組みを,Visual Studio を用いて演習で学ぶ
【目次】
- ca-1. プロセッサ,マシン語 [PDF], [パワーポイント]
【概要】プロセッサはプログラムの実行と制御を担う.ソースコードからマシン語への変換(ビルド)を経て実行型ファイルが生成される.Visual Studioは,このビルドと実行の一連の流れを実行できる開発環境である.
- ca-2. メモリとアドレス,ダンプリスト [PDF], [パワーポイント]
【概要】メモリはバイト単位で区切られ,各バイトには0から始まるアドレスが付与される.メモリへの操作は読み出しと書き込みがあり,前者はメモリ内容を変更せずデータを取得し,後者は指定アドレスの内容を上書きする.一般に16進数で表記される.
- ca-3. コンピュータの構成,アドレスバス,データバス [PDF], [パワーポイント]
【概要】コンピュータのハードウェア構成において,プロセッサとメモリ間のデータ転送を実現するバスがあり,アドレスバスはメモリ位置を指定する信号を,データバスは実際のデータを転送する信号を伝送する経路として機能する.これらが協調してメモリアクセスを可能にしている.
- ca-4. アセンブリ言語 [PDF], [パワーポイント]
【概要】アセンブリ言語は,機械語を人間が理解しやすい形に翻訳した低水準言語である.デバッガを使用することで,プログラムの実行過程で変数の値やメモリ内容の変化を確認でき,プログラムの動作を詳細に追跡・解析することができる.
- ca-5. レジスタ [PDF], [パワーポイント]
【概要】プロセッサ内部のレジスタは,超高速な小容量メモリとして機能し,命令の実行,データの一時保存,計算結果の格納などを担う.レジスタには専用の名前が付いており,Pentium系列プロセッサでは32ビットレジスタ(EAX等)と16ビットレジスタ(CS等)があり,アセンブリ言語で直接操作できる.
- ca-6. プログラムカウンタ [PDF], [パワーポイント]
【概要】プログラムカウンタは,プロセッサにおいて次に実行すべき命令のメモリアドレスを保持するレジスタである.プログラムの分岐・ジャンプ・合流の制御に重要な役割を果たし,命令実行サイクルにおいて命令フェッチ・デコード・実行の段階で,メモリとレジスタ間のデータ転送や演算を実行している.
- ca-7. データ転送命令とアドレッシングモード [PDF], [パワーポイント]
【概要】データ転送命令(MOV命令)とアドレッシングモードは,メモリとレジスタ間でのデータのやり取りを制御する仕組みである.データ転送には,メモリからのデータ読み出し(ロード),メモリへのデータ書き込み(ストア),レジスタ間転送などの操作がある.アドレッシングモードとしては,ベースアドレスとインデックスを用いた実効アドレス計算によるメモリアクセスなどの方法があり,配列要素への効率的なアクセスを可能にしている.
- ca-8. 算術演算命令 [PDF], [パワーポイント]
【概要】プロセッサの算術演算命令には,加算,減算,乗算,除算などの基本演算がある.算術演算は,レジスタと,算術演算ユニットで実行される.Visual Studio のデバッガを使用することで,C言語のプログラムがアセンブリ言語レベルでどのように変換され実行されているかを確認できる.
- ca-9. 数の扱い [PDF], [パワーポイント]
【概要】数値演算の基本的な実装では,2の補数表現を用いた整数表現と算術シフト,論理シフトを組み合わせることで,加減乗除の四則演算を効率的に処理できる仕組みが実現されている.
- ca-10. フラグ,フラグレジスタ [PDF], [パワーポイント]
【概要】数値演算の基本的な実装では,2の補数表現を用いた整数表現と算術シフト,論理シフトを組み合わせることで,加減乗除の四則演算を効率的に処理できる仕組みが実現されている.
- ca-11. 条件分岐,繰り返し [PDF], [パワーポイント]
【概要】比較命令はフラグレジスタの値を変更し,条件ジャンプ命令はフラグレジスタの値に応じて実行位置を変更する.これらの組み合わせにより,プログラム実行の分岐や繰り返しを実現する.条件分岐はジャンプ命令,無条件ジャンプ命令により実現される.
- ca-12. スタック [PDF], [パワーポイント]
【概要】スタックは後入れ先出し(LIFO)を実現するデータ構造であり,データ操作を行うソフトウェアで重要な役割を果たす.スタックは,プッシュ操作でデータを追加し,ポップ操作で削除を行う.メモリ上でデータを順序付けて管理する.
- ca-13. サブルーチン [PDF], [パワーポイント]
【概要】サブルーチンは,プログラムの一部を共通化して再利用可能にする機能であり,特定の処理を関数として切り出し,call命令によって呼び出し,処理完了後は元の位置に復帰する仕組みを持つ.デバッガを使用することで呼び出し時の変数の値や実行の流れを確認できる.
【サイト内の関連ページ】
Visual Studio のインストール: 別ページ »で説明
資料
- ca-1. プロセッサ,マシン語 [PDF], [パワーポイント]
ドクセルの URL: https://www.docswell.com/s/6674398749/5YEQPZ-2021-12-23-133913
【概要】プロセッサはプログラムの実行と制御を担う.ソースコードからマシン語への変換(ビルド)を経て実行型ファイルが生成される.Visual Studioは,このビルドと実行の一連の流れを実行できる開発環境である.
- ca-2. メモリとアドレス,ダンプリスト [PDF], [パワーポイント]
ドクセルの URL: https://www.docswell.com/s/6674398749/KNJQEZ-2021-12-23-134117
【概要】メモリはバイト単位で区切られ,各バイトには0から始まるアドレスが付与される.メモリへの操作は読み出しと書き込みがあり,前者はメモリ内容を変更せずデータを取得し,後者は指定アドレスの内容を上書きする.一般に16進数で表記される.
- ca-3. コンピュータの構成,アドレスバス,データバス [PDF], [パワーポイント]
ドクセルの URL: https://www.docswell.com/s/6674398749/5RGJ3Z-2021-12-23-134239
【概要】コンピュータのハードウェア構成において,プロセッサとメモリ間のデータ転送を実現するバスがあり,アドレスバスはメモリ位置を指定する信号を,データバスは実際のデータを転送する信号を伝送する経路として機能する.これらが協調してメモリアクセスを可能にしている.
- ca-4. アセンブリ言語 [PDF], [パワーポイント]
ドクセルの URL: https://www.docswell.com/s/6674398749/K28Y4K-2021-12-23-134335
【概要】アセンブリ言語は,機械語を人間が理解しやすい形に翻訳した低水準言語である.デバッガを使用することで,プログラムの実行過程で変数の値やメモリ内容の変化を確認でき,プログラムの動作を詳細に追跡・解析することができる.
- ca-5. レジスタ [PDF], [パワーポイント]
ドクセルの URL: https://www.docswell.com/s/6674398749/581Q2K-2021-12-23-134459
【概要】プロセッサ内部のレジスタは,超高速な小容量メモリとして機能し,命令の実行,データの一時保存,計算結果の格納などを担う.レジスタには専用の名前が付いており,Pentium系列プロセッサでは32ビットレジスタ(EAX等)と16ビットレジスタ(CS等)があり,アセンブリ言語で直接操作できる.
- ca-6. プログラムカウンタ [PDF], [パワーポイント]
ドクセルの URL: https://www.docswell.com/s/6674398749/K33NMK-2021-12-23-134602
【概要】プログラムカウンタは,プロセッサにおいて次に実行すべき命令のメモリアドレスを保持するレジスタである.プログラムの分岐・ジャンプ・合流の制御に重要な役割を果たし,命令実行サイクルにおいて命令フェッチ・デコード・実行の段階で,メモリとレジスタ間のデータ転送や演算を実行している.
- ca-7. データ転送命令とアドレッシングモード [PDF], [パワーポイント]
ドクセルの URL: https://www.docswell.com/s/6674398749/5QM7MK-2021-12-23-134754
【概要】データ転送命令(MOV命令)とアドレッシングモードは,メモリとレジスタ間でのデータのやり取りを制御する仕組みである.データ転送には,メモリからのデータ読み出し(ロード),メモリへのデータ書き込み(ストア),レジスタ間転送などの操作がある.アドレッシングモードとしては,ベースアドレスとインデックスを用いた実効アドレス計算によるメモリアクセスなどの方法があり,配列要素への効率的なアクセスを可能にしている.
- ca-8. 算術演算命令 [PDF], [パワーポイント]
ドクセルの URL: https://www.docswell.com/s/6674398749/K7E3JZ-2021-12-23-134906
【概要】プロセッサの算術演算命令には,加算,減算,乗算,除算などの基本演算がある.算術演算は,レジスタと,算術演算ユニットで実行される.Visual Studio のデバッガを使用することで,C言語のプログラムがアセンブリ言語レベルでどのように変換され実行されているかを確認できる.
- ca-9. 数の扱い [PDF], [パワーポイント]
ドクセルの URL: https://www.docswell.com/s/6674398749/ZJX1Q5-2021-12-23-135006
【概要】数値演算の基本的な実装では,2の補数表現を用いた整数表現と算術シフト,論理シフトを組み合わせることで,加減乗除の四則演算を効率的に処理できる仕組みが実現されている.
- ca-10. フラグ,フラグレジスタ [PDF], [パワーポイント]
ドクセルの URL: https://www.docswell.com/s/6674398749/Z4ERN5-2021-12-23-135108
【概要】フラグレジスタは,レジスタのうちの1つで,各ビットが個別のフラグとして機能し,演算結果の状態(桁上がり,ゼロ,マイナスなど)を自動的に記録する.これによりプログラムの分岐制御が可能となり,条件分岐命令の実行制御に利用される.
- ca-11. 条件分岐,繰り返し [PDF], [パワーポイント]
ドクセルの URL: https://www.docswell.com/s/6674398749/5ML2GK-2021-12-23-135215
【概要】比較命令はフラグレジスタの値を変更し,条件ジャンプ命令はフラグレジスタの値に応じて実行位置を変更する.これらの組み合わせにより,プログラム実行の分岐や繰り返しを実現する.条件分岐はジャンプ命令,無条件ジャンプ命令により実現される.
- ca-12. スタック [PDF], [パワーポイント]
ドクセルの URL: https://www.docswell.com/s/6674398749/KELVQ5-2021-12-23-135318
【概要】スタックは後入れ先出し(LIFO)を実現するデータ構造であり,データ操作を行うソフトウェアで重要な役割を果たす.スタックは,プッシュ操作でデータを追加し,ポップ操作で削除を行う.メモリ上でデータを順序付けて管理する.
- ca-13. サブルーチン [PDF], [パワーポイント]
ドクセルの URL: https://www.docswell.com/s/6674398749/KYEL75-2021-12-23-135400
【概要】サブルーチンは,プログラムの一部を共通化して再利用可能にする機能であり,特定の処理を関数として切り出し,call命令によって呼び出し,処理完了後は元の位置に復帰する仕組みを持つ.デバッガを使用することで呼び出し時の変数の値や実行の流れを確認できる.