21122106

コンピュータ工学COM301a  COM301b  COM301c  COM301d  COM301e 

2年前学期木4

計算機通論

Computer Organization and Assembly Language Programming

鈴木 貢

単位区分

単位数: 2単位
必修
課程・類・プログラム
種別
先端工学基礎課程

関連Webサイト

授業資料や連絡等はGoogle Classroomに掲載します。

主題および達成目標

(プログラム格納型)計算機のハードウエアは抽象化すると、プロセッサ(中央処理装置)、主記憶(メモリ)、入出力装置(I/O)の3要素から構成される。
プログラムは主記憶の上に置かれた機械語の列で、これらをプロセッサが逐次的に取り出して解釈・実行しながらデータ処理が進む. 機械語はビット割りという「文法」と、その処理内容を符号化した命令コードという「意味」を持つプログラミング言語の1つである。プロセッサが直接操作できるデータ(オペランド)は、主記憶, あるいは, プロセッサや入出力装置が内蔵する小規模だが高速にアクセス可能な記憶であるレジスタに置かれており, 機械語はその位置(番地)を指定(アドレッシング)する。レジスタの数等を含めた機械語の仕様のことを命令セットアーキテクチャと呼ぶ。本講では、1つの命令セットアーキテクチャについて、機械語やそれを可読化したアセンブリ言語を学び、深く理解する。
また、ある命令セットアーキテクチャを実現する論理回路の構成をマイクロアーキテクチャと呼ぶ。マイクロアーキテクチャは複数存在し、性能や消費電力やコストの面が異なる。
本講では1つの命令セットアーキテクチャを実現する複数のマイクロアーキテクチャの構成を概観し、それらの得失を検討する。
さらに、レジスタからキャッシュメモリを経て主記憶に至る記憶階層を鳥瞰したり、並列処理アーキテクチャの分類を理解することで、今日的な計算機はどのようにプログラミングすると、限界性能を引き出すことができるのかを学ぶ。
CやJava等の高級言語でブログラミングすることが常識となった今日であっても、情報工学技術者は、計算機の性能を生かし最適な情報システムの設計を行うために、これらについて理解し説明できなければならない。

前もって履修しておくべき科目

コンピュータリテラシ、基礎プログラミング及び演習

前もって履修しておくことが望ましい科目

なし

教科書等

下記を推薦図書とする。
Sarah L. Harris、David Money Harris 著(天野 英晴、中條 拓伯、鈴木 貢、永松 礼夫 訳)
ディジタル回路設計とコンピュータアーキテクチャ 第2版(翔泳社)

下記を参考図書とする。
ジョン L ヘネシー、デイビッド A パターソン 著(中條 拓伯、天野 英晴、鈴木 貢 訳)
コンピュータアーキテクチャ[第6版]定量的アプローチ(発行:エスアイビー・アクセス 発売:星雲社)

ダグラス E.カマー 著(鈴木 貢、中條 拓伯、仲谷 栄伸、並木 美太郎 訳)コンピュータアーキテクチャのエッセンス(翔泳社)

授業内容とその進め方

第1回 導入:プログラミング言語の定義、C言語の復習
第2回 データの表現:整数、浮動小数点数、文字コードと文字列
第3回 プログラマから見たプログラム格納型計算機の構成:プロセッサ、メモリ、入出力
第4回 プログラマから見たプロセッサの構成:MIPSの命令セットアーキテクチャとアセンブリ言語と機械
第5回 MIPSプログラミング(1):算術/論理命令
第6回 MIPSプログラミング(2):分岐/条件文とループと配列
第7回 MIPSプログラミング(3):関数呼び出しと再帰
第8回 MIPSプログラミング(4):番地指定
第9回 MIPSプログラミング(5):疑似命令、例外、符号付き命令と符号なし命令、浮動小数点命令
第10回 現実のアーキテクチャの例:x86アーキテクチャ
第11回 MIPSのマイクロアーキテクチャと命令実行の概要
第12回 命令実行高速化技術:分岐予測、スーパースカラ、アウトオブオーダ、レジスタリネーミング、マルチスレッディング
第13回 記憶階層と入出力:キャッシュ、仮想記憶、入出力システム
第14回 並列処理アーキテクチャ:フリンの分類、MIMD、SIMD、ホモジーニアスマルチプロセッサ、ヘテロジーニアスマルチプロセッサ
第15回 先進的な話題

実務経験を活かした授業内容

なし

授業時間外の学習

講義ノートや推薦図書などを用いて予習復習をしておくこと。

成績評価方法および評価基準

評価方法:レポートと中間試験と期末試験により評価を行なう。レポートは試験で失敗した際のセーフティーネットとする予定である。

評価基準:計算機のアーキテクチャ及びアセンブリプログラミングを理解していること。
(1)計算機内部におけるデータの表現について理解している。
(2)アーキテクチャ、ハードウェア、ソフトウェアの関係や階層を理解している。
(3)プログラム格納型計算機の特徴、基本構造、機能、問題点、および性能評価を理解している。
(4)オペランドとアドレス指定、アドレス付与規則、オペレータ指定される基本的演算とサブルーチンについて理解している。
(5)アセンブリ言語を用いたプログラミングができる。
(6)命令実行高速化技術とそれによる性能向上と、それに対応する命令列の構成を理解している。
(7)記憶階層における局所性原理を理解している。
(8)入出力の動作原理を理解している。

オフィスアワー・授業相談

質問等は原則として授業時間内に行うこと。連絡にはメールかGoogle Classroomを使ってください。

学生へのメッセージ

本講は計算機の基礎に関する講義です。
C言語でのプログラミングが自在にできるという前提の上で、その動作の舞台裏を理解していることは、幅広い課題に対応できる情報処理技術者としての必須事項です。

その

なし

キーワード

アセンブリ言語
マイクロアーキテクチャ
命令セットアーキテクチャ
命令格納型計算機
数の表現
機械語
最終変更日時: 2025/03/18 3:32:42