計算機アーキテクチャ 第9回 中間テストの結果報告 主記憶装置とレジスタ 2014年 6月16日 電気情報工学科 田島 孝治 第9回 計算機アーキテクチャ 1 授業スケジュール(前期) 回 日付 タイトル 回 日付 タイトル 1 4/7 コンピュータ技術の歴史と コンピュータアーキテクチャ 10 6/16 主記憶装置とレジスタ 11 6/20 命令実行の流れ 12 6/30 命令形式とアセンブリ言語 13 7/7 命令セット 14 7/14 サブルーチンの実現 15 7/28 PCSpimによるアセンブリ言語 プログラム 8/4? 期末試験(日程は仮) 9/29? フォローアップ(日程は仮) 2 4/14 ノイマン型コンピュータ 3 4/21 コンピュータのハードウェア 4 4/28 数と文字の表現 5 5/12 固定小数点数と浮動小数点表現 6 5/19 計算アーキテクチャ(ARU) 7 5/26 計算装置のハードウェア実装 8 6/2 文字コード 9 6/11 中間試験(9:00-9:50) 16 ※5/5はこどもの日、7/21は海の日のため休講 ※授業変更:6/23 1時限→6/20 3時限 第9回 計算機アーキテクチャ 2 今日の授業の目的 中間テストの回答(前半部分の復習) 命令セットアーキテクチャの学習に向けて メモリとレジスタの概念を復習する 中間試験の結果をまとめる 問題の解説を行う レジスタの種類と使い方について知る アーキテクチャによるレジスタ名の違いを知る 第9回 計算機アーキテクチャ 3 4 中間試験の結果について 100.00 90.00 得点率 80.00 70.00 60.00 50.00 40.00 30.00 問1 問2 問3 問4 問番号 問5 平均点74.73点 最高得点者100点(2名) 問6 問7 5 総括 全体としてみてみると・・・ 得点率が低かった問題の特徴 問3:穴埋め問題 意外とできていなかった 問5(プログラムの実行問題):得点率が極端に低い 平均点はまぁまぁが・・・80点台が少ないのが気になる 部分点を与えるようにもう少し問題を工夫すべきだった 例題から少し変えた部分の混乱が多かった 最後の答え(8)はほとんどできていた 問7: 除算があまりできていなかった 掛け算とビットシフトの方法を間違えている人もいた 第9回 計算機アーキテクチャ 主記憶装置とレジスタ レジスタ フリップフロップで作られた高速な記憶装置 ALU(計算装置)からのアクセスに使われる 大量のデータを保存するには容量不足 X86アーキテクチャ:32bitレジスタを16個保持 汎用レジスタは8個 主記憶装置 いわゆる「メモリ」 読み出し命令と書き込み命令を実行することで レジスタの値を読み書きできる 読みこみ、書き込みには実行時間が発生する 第9回 計算機アーキテクチャ 6 メモリの種類と分類 ROM(Read Only Memory) マスクROM: PROM(programmable ROM) 配線パターンで情報を記録したLSI ユーザーが何らかの方法で書き込めるROM UVEPROM、EEPROM、フラッシュメモリ 不揮発性(電源を切っても値が消えない)ものが多い RAM(Random Access Memory) SRAM(static RAM):FFで構成されたRAM DRAM(dynamic RAM):コンデンサで構成されたRAM 普段使っているコンピュータのメモリと言えばSDRAM 定期的な充電(リフレッシュ)が必要 第9回 計算機アーキテクチャ 7 8 レジスタ 用途に応じて名前が異なる 汎用レジスタ 自由に使えるレジスタ お約束的な使い方はあるが、気にしないでも使える 命令によっては計算結果は特定のレジスタにしか 入れられない場合がある 専用レジスタ 特定の用途に特化されたレジスタ メモリや計算機の状態を保持するために使われる 何種類かあるので個別に紹介する 第9回 計算機アーキテクチャ 9 汎用レジスタの名前とアクセス方法 X86アーキテクチャの場合 レジスタの名前 アクセス方法 使用用途 A EAX/AX/AH/AL 算術演算結果の格納 B EBX/BX/BH/BL ベースアドレスの格納 C ECX/CX/CH/CL カウント結果の格納 D EDX/DX/DH/DL データの格納 SP ESP/SP スタックポインタの格納 BP EBP/BP スタックベースポインタの格納 SI ESI/SI ストリーム操作の入力元を表す DI EDI/DI ストリーム操作の出力先を表す E**とアクセスする場合には32bitアクセス *H/*Lとアクセスする場合には上位または下位8bitにアクセス 第9回 計算機アーキテクチャ x86アーキテクチャの専用レジスタ セグメントレジスタ 15 30 14 NT 次に実行する命令のアドレスを保持するレジスタ フラグレジスタ 31 メモリの利用方法をまとめた6種類のレジスタ 6個のレジスタの値によってスタック、コード、データ、 その他の領域を分割している 命令ポインタ 10 29 計算結果やプロセッサの状態を表すレジスタ 1bitごとに意味がある 28 13 12 IOPL 27 26 25 24 23 22 11 10 9 8 7 6 OF DF IF TF SF ZF 21 20 18 17 16 ID VIP VIF AC VM RF 1 0 5 CF:キャリーフラグ、ZF:ゼロフラグ 等 4 AF 19 3 2 PF CF 11 (参考)実際のコードを見てみよう C言語のコード int main() { int x = 0; x = x+1; return 0; } 命令 アセンブリコード call ___main movl $0, 12(%esp) incl 12(%esp) movl $0, %eax leave レジスタ 12 (参考)実際のコードを見てみよう C言語のコード int main() { int x = 0; x = x+2; return 0; } アセンブリコード call ___main movl $0, 12(%esp) addl $2, 12(%esp) movl $0, %eax leave レジスタとアーキテクチャ レジスタや命令の種類は計算機のアーキテクチャ によって異なる 代表的なアーキテクチャ x86アーキテクチャ CISC(Complex Instruction Set Computer)を設計思想に持つ インテルのマルチプロセッサ4004が原型 MIPSアーキテクチャ 13 RISC(Reduced Instruction Set Computer)を設計思想に持つ MIPSコンピュータシステムズが開発したアーキテクチャ Microprocessor without Interlocked Pipeline Stagesの略 組み込み系ハードウェアにおけるシェアが高い 次回の課題はアーキテクチャの調査の予定です 第9回 計算機アーキテクチャ MIPSアーキテクチャのレジスタ 32個のレジスタがある 今後はこのレジスタをプログラムで使う予定 レジスタ名 共通名 使用用途 $0 Zero 常に0を保持するレジスタ $1 at アセンブラ用一時レジスタ(利用不可) $2,$3 v0,v1 関数の戻り値を格納 $4,$5,$6,$7 a0 - a3 関数の引数を格納 $8,…,$15,$24,$25 t0 - t9 一次変数(関数呼び出し時に破棄) $16,…,$23,$30 s0 - s8 自由な変数(関数呼び出し時に保持) $26,$27 k0 – k1 OSカーネルの戻り値を格納 $28 gp グローバルポインタを格納 $29 sp スタックポインタを格納 $31 ra 関数から戻る際のアドレスを格納 第9回 計算機アーキテクチャ 14
© Copyright 2024 ExpyDoc