Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
授業スケジュール(前期)
※5/5はこどもの日、7/21は海の日のため休講
※急なスケジュール変更があった場合,掲示およびメールで連絡します
2
第8回 計算機アーキテクチャ
回 日付 タイトル
1 4/7 コンピュータ技術の歴史と コンピュータアーキテクチャ
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)
回 日付 タイトル
10 6/16 主記憶装置とレジスタ
11 6/23 命令実行の流れ
12 6/30 命令形式とアセンブリ言語
13 7/7 命令セット
14 7/14 サブルーチンの実現
15 7/28 PCSpimによるアセンブリ言語プログラム
8/4? 期末試験(日程は仮)
16 9/29? フォローアップ(日程は仮)
今日の授業の目的
除算の実装について知る
文字コードの実装について知る
中間試験に向けた演習問題に挑戦する
第8回 計算機アーキテクチャ
3
除算のアーキテクチャを理解する 文字コードの原理を理解する
除算の実現方法
引き戻し法(restoring division)、引き放し法(nonrestoring division)が広く知られる
引き放し法
演算回数を少なくできる
負の符号も扱えるが、補正が必要になる
符号計算と数値計算を独立させたほうが良い
引き放し法の演算手順
被除数の符号と除数の符号から商の符号を決定
2の補数表現により負の数を正の数に変換
アルゴリズムにより商と剰余を計算
商の符号が負の場合、2の補数に変換 第8回 計算機アーキテクチャ
4
引き放し法のアルゴリズム
例)26÷5 (商は5、剰余は1)
第8回 計算機アーキテクチャ
5
0001 1010 0101 ÷
-)0101 0 1100 1010 0101
1001 010
0101 +)0101 1110 010 0
引いて負になった
=その桁の数は無い
シフト
シフト 110 010
引き放し法のアルゴリズム 6
0101 1110 010 0 0
1100 10 +)0101 0001 10 0101 1 0011 0 -)0101 1110 0 0101 1100
0
+)0101 0001 0
除数と同じ桁まで計算したら終了
商 剰余
引き放し法はどういう意味か
26÷5の場合
最初の計算
26の中に1280(4ビットシフトした0101)があるか判定
あれば商の5ビット目を1にする
計算手順:減算してみて結果が正ならあると判断する
本来は、引けなかったら値を元に戻す(引き戻し法) しかし、引き放し法は負になっても値は引いたままにしておく
次の桁の計算
26の中に640(3ビットシフトした0101)があるか判定
あれば商の4ビット目を1にする
計算手順:本来は前の桁の計算結果から640を引いて判断する
しかし、前回の計算結果が負の場合640を足しても答えが同じ
7
X-1280 +640 = X-640 第8回 計算機アーキテクチャ
演習問題
次の計算を2進数で行え
数値は原則として8bitで表し、MSBは符号ビットとする
乗算の解と除算の除数は16bitとする
乗算はブース法により行い過程を示すこと
除算は引き放し法により行い過程を示すこと
第8回 計算機アーキテクチャ
8
① 41 + 60 ② 52 - 41 ③ 98 + 125 ④ 6 - 55 ⑤ 15 - 173
⑥ 58 × 6 ⑦ 60 ÷ 4 ⑧ -8 × 22 ⑨ -56 ÷ 58 ⑩ -16 × 98
浮動小数点の加減算
指数部と仮数部は別に考える
先に指数部をシフト(桁合わせ)してから演算する
数値A
数値B
計算のイメージ(指数A>指数B、共にS=0の時)
加減算の結果、正規化が必要な場合は調整する (例:仮数部が桁上がりした場合、1ビットシフトし、指数を1増やす)
9
S 指数A 仮数A
S 指数B 仮数B
仮数A
仮数B
S 指数A 仮数C
指数A - 指数B
文字の表現方法
計算機上で文字を表現する
特定のビットパターンに文字を割り当てる
ASCIIコードの例
第8回 計算機アーキテクチャ
11
文字 16進数 文字 16進数 文字 16進数
SP 20 0 30 @ 40
! 21 1 31 A 41
“ 22 2 32 B 42
# 23 3 33 C 43
$ 24 4 34 D 44
% 25 5 35 E 45
& 26 6 36 F 46
文字コード
ASCIIコード表
アルファベット及び一部の記号のみを規定
日本語はどうやって記入するのか?
文字の選定の問題
日本語の文字は何文字あるのか?
どの文字に文字コードを割り当てるのか?
ビット割り当て数の問題
16進数2桁(8bit)は256パターンしかない
何ビットにするのが適切か?
ビット列をどう定義して使うのが適切か?
12
第8回 計算機アーキテクチャ
符号化文字集合と符号化方式
符号化文字集合
どの文字を計算機上で扱うか
符号化すべき文字の集合
例:JIS X 0208、JIS X 0213、戸籍統一文字
符号化方式
文字につけた番号をどんな16進数で表すか
ビット列をどうやって作るか
例:ISO-2022JP(通称JISコード)、Shift-JIS、EUC-JP
第8回 計算機アーキテクチャ
13
符号化文字集合の例
JIS X 0208:2879文字
日本工業規格として1978年制定、1997改定
JIS第1水準、JIS第2水準漢字を表す文字集合
文字は一意の区点番号で表される
「岐」: 20(区)-84(点)
「阜」: 41-76
字体の包摂やデザイン差を規定
普段は代表的な文字のデザインを表示している
第8回 計算機アーキテクチャ
14
包摂基準13
0x14-0x54 0x29-0x4C
符号化方式の例 ISO-2022-JP (通称JISコード)
電子メールで標準的に使われる符号化方式
文字は7bitを文字の基本単位とする
bit列は1バイト分に割り当てる(MSBは常に0)
日本語を表す場合には2単位分使う
1バイト目:句番号+0x20、2バイト目:点番号+0x20
エスケープシーケンス(文字として解釈されない 文字列)で文字集合を切り替える
15
ビット列
文字列 ABCあいう漢字(改行) A B C ESC $ B あ い う 岐 阜 ESC ( B C
R LF
41 42 43 1B 24 42 24 22 24 24 24 26 34 74 49 6C 1B 28 42 0D 0A 第8回 計算機アーキテクチャ
Shift-JISの例
Windowsの文字コード(厳密にはCP932)
8bitまたは16bitが1文字になるように設計
エスケープシーケンスを用いない
高速に演算可能
漢字を余っている符号位置にずらして挿入
いくつかの文字の2バイト目が、1バイトで円記号を 表すビット列になっている(これに関するバグがある)
第8回 計算機アーキテクチャ
16
41 42 43 82 A0 82 A2 82 A4 8A F2 95 8C 0D 0A
ビット列
文字列 ABCあいう漢字(改行)
A B C あ い う 岐 阜 CR
LF