17
計算機アーキテクチャ 201462電気情報工学科 田島 孝治 8回 計算機アーキテクチャ 1 第8回 計算機のハードウェア実装 文字コード

計算機アーキテクチャ...第8回 計算機アーキテクチャ 回 日付 タイトル 1 104/7 コンピュータ技術の歴史と コンピュータアーキテクチャ

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

計算機アーキテクチャ

2014年 6月2日

電気情報工学科 田島 孝治

第8回 計算機アーキテクチャ 1

第8回 計算機のハードウェア実装 文字コード

授業スケジュール(前期)

※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

浮動小数点の乗除算

加減算と同様に指数部と仮数部は分ける

指数部は加減算

仮数部は乗除算

必要に応じて結果を正規化

計算の流れ

10

正規化

指数演算 仮数演算

文字の表現方法

計算機上で文字を表現する

特定のビットパターンに文字を割り当てる

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

Unicodeって何?

近年広く使われている文字コードの通称

Unicode Consortiumが策定する国際規格

各国の代表機関や企業が参加している

符号化文字集合

ISO/IEC 10646

文字は面、区、点で表現される

符号化方式

UTF-8:1文字の最低ビット数は8bit

UTF-16:16bitを最低ビット

UTF-32:32bitを最低ビット

面、区、点からビット列への変換方法が定まっている

第8回 計算機アーキテクチャ

17