コンピュータの仕組み(1)ハードウェア

Similar documents
計算機アーキテクチャ

§0 コンピュータの歴史と概要

コンピュータ工学Ⅰ

コンピュータ工学Ⅰ

PowerPoint プレゼンテーション

スライド 1

COMET II のプログラミング ここでは機械語レベルプログラミングを学びます 1

主記憶の使われ方 システム領域 SP スタックポインタ システム用 スタック用 プログラム起動時に OS によって確 保される (SP が決められる ) プログラム用 メインルーチン プログラム領域 命令コードの列定数 変数用領域サブルーチン命令コードの列 先頭番地は リンク時に OS によって決め

< B8CDD8AB B83685D>

この方法では, 複数のアドレスが同じインデックスに対応づけられる可能性があるため, キャッシュラインのコピーと書き戻しが交互に起きる性のミスが発生する可能性がある. これを回避するために考案されたのが, 連想メモリアクセスができる形キャッシュである. この方式は, キャッシュに余裕がある限り主記憶の

-2 外からみたプロセッサ GND VCC CLK A0 A1 A2 A3 A4 A A6 A7 A8 A9 A10 A11 A12 A13 A14 A1 A16 A17 A18 A19 D0 D1 D2 D3 D4 D D6 D7 D8 D9 D10 D11 D12 D13 D14 D1 MEMR

C に必要なコンピュータ知識 C はコンピュータの力を引き出せるように設計 コンピュータの知識が必要

PowerPoint プレゼンテーション

スライド 1

Microsoft PowerPoint - Chap4 [Compatibility Mode]

ガイダンス 2

UNIX 初級講習会 (第一日目)

情報科学概論

ソフトウェア基礎技術研修

第 1 回 C 言語講座 1. コンピュータって? だいたいは 演算装置 制御装置 記憶装置 入出力装置から構成されている 演算装置 CPU の一部で実際に計算を行う装置 制御装置 CPU の一部で演算装置や入出力装置 記憶装置の読み書きなどを制御する装置 記憶装置プログラムや情報 データを一時的

Microsoft PowerPoint ppt

PowerPoint プレゼンテーション

C プログラミング 1( 再 ) 第 5 回 講義では C プログラミングの基本を学び演習では やや実践的なプログラミングを通して学ぶ

スライド 1

スライド 1

ComputerArchitecture.ppt

スライド 1

2ALU 以下はデータ幅 4ビットの ALU の例 加算, 減算,AND,OR の4つの演算を実行する 実際のプロセッサの ALU は, もっと多種類の演算が可能 リスト 7-2 ALU の VHDL 記述 M use IEEE.STD_LOGIC_1164.ALL; 00 : 加算 use IEE

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

PowerPoint プレゼンテーション

Microsoft PowerPoint - Sol7 [Compatibility Mode]

Microsoft PowerPoint - 3.3タイミング制御.pptx

ex04_2012.ppt

Microsoft PowerPoint ppt

コンピュータ中級B ~Javaプログラミング~ 第3回 コンピュータと情報をやりとりするには?

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

プログラミング基礎

PowerPoint プレゼンテーション

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

020105.メモリの高機能化

PowerPoint Presentation

ソフトウェア基礎技術研修

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

Microsoft Word - no02

Microsoft PowerPoint - 11Web.pptx

計算機アーキテクチャ

ex05_2012.pptx

スライド 1

出 アーキテクチャ 誰が 出 装置を制御するのか 1

本日の範囲 ファイルとその中身 コンピュータにおける情報の表現 ファイルとフォルダ コンピュータの仕組み 通信 ネットワーク, インターネット 情報の符号化, その限界 コマンドライン プログラムの仕組み 通信の符号化, その限界 暗号 簡単なプログラムの作成 実行 Excel で計算 データの可視

Microsoft PowerPoint - ar10_08.ppt

Microsoft PowerPoint - ProcML-12-3.ppt

Microsoft PowerPoint - NxLecture ppt [互換モード]

ソフトウェア基礎技術研修

ディジタル回路 第1回 ガイダンス、CMOSの基本回路

OS

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

VelilogHDL 回路を「言語」で記述する

スライド 1

講義計画 1. コンピュータの歴史 1 2. コンピュータの歴史 2 3. コンピュータの歴史 3 4. 論理回路と記憶, 計算 : レジスタとALU 5. 主記憶装置とALU, レジスタの制御 6. 命令セットアーキテクチャ 7. 演習問題 8. パイプライン処理 9. メモリ階層 : キャッシュ

コンピュータのしくみ

Microsoft PowerPoint - 11.pptx

Microsoft PowerPoint - OS07.pptx

Microsoft Word - マイコン実験 doc

情報処理Ⅰ演習

cmpsys13w03_cpu_hp.ppt

スライド タイトルなし

Microsoft PowerPoint - NxLec ppt

6. パイプライン制御

スライド 1

Microsoft PowerPoint ppt

Microsoft PowerPoint - Chap3 [Compatibility Mode]

スライド 1

MIPSのマイクロアーキテクチャ

スライド 1

スライド 1

Microsoft PowerPoint - Lec ppt [互換モード]

目次 1 I2Cとは 13 結線写真 2 センサの多くがI2Cに対応 14 WHO_AM_I 3 マイコンでのI2C通信例 15 I2C読込みプログラム 4 とは 16 I2C読込みスクリプト概要① 5 タイミングパラメータ 17 I2C読込みスクリプト概要② 6 書込み 18 センサ読込みプログラ

Microsoft Word - no103.docx

Microsoft PowerPoint - 1st

スライド 1

コンピュータ演習

Microsoft PowerPoint - Chap2 [Compatibility Mode]

Microsoft PowerPoint - 計算機言語 第7回.ppt

言語プロセッサ2005

スライド 1

スライド 1

PowerPoint プレゼンテーション

Microsoft Word - 中間試験 その1_解答例.doc

Microsoft PowerPoint - 4回 [互換モード]

回路 7 レジスタ ( 同期イネーブル及び非同期リセット付 ) 入力データを保持するのに用いる記憶素子 使用用途として, マイクロプロセッサ内部で演算や実行状態の保持に用いられる Fig4-2 のレジスタは, クロック信号の立ち上がり時かつ 信号が 1 のときに外部からの 1 ビットデータ R をレ

PowerPoint プレゼンテーション

プログラミング実習I

Microsoft PowerPoint - OS09.pptx

PowerPoint Presentation

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do

バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科

Microsoft Word - HW06K doc

問 2. タイミングチャート以下に示す VHDL コードで記述されている回路に関するタイミングチャートを完成させよ ) レジスタの動作 use IEEE.std_logic_64.all; entity RegN is generic (N : integer := 8 port ( CLK, EN

2006年10月5日(木)実施

Transcription:

Copyright 守屋悦朗 2005 コンピュータの仕組み (1) ハードウェア 2.1 CPU の基本原理 2 つの整数の和を出力するプログラムを考えよう main() { int a, b, c; /* 変数 a,b が整数値をとる変数であることを宣言する */ a = 1; /* a に 1 を代入する */ b = 2; /* b に 2 を代入する */ c = a+b; /* a と b の和を c に代入する */ cout << c; /* c の値を出力する */ } コンピュータは このプログラムをそのまますぐに実行できるわけではない このプログラムは人間にとって理解し易い汎用高級言語 ( この例ではC++ 言語 ) で書かれたものであり コンピュータが直接認識して実行することはできない そのため コンパイラ (compiler) と呼ばれるプログラムによって コンピュータが直接理解して実行できる形の命令 ( 機械語命令 (machine instruction) と呼ばれ 対応するハードウェア的機構ないしはそれに近いものが存在するもの ) の列に翻訳する 1つの機械語命令は 命令の種類とその作業対象となるデータの入っている場所 ( アドレス ) などを 0,1 で表現したものであり このような機械語命令の列を機械語プログラムという 機械語 (machine language) は単に 0,1 の列であるが より人間に分かりやすいように記号化したものをアセンブリ言語 (assembly language) という X と Y の和を Z に代入するプログラム 機械語 (8080A) アセンブリ言語 (8080A) 汎用高級言語 00111011 LDA X Z=X+Y (FORTRAN) 00000000 LXI H,X COMPUTE Z=X+Y. (COBOL) 10000000 ADD M z:=x+y; (PASCAL) 10000000 STA Z Z X+Y (APL) 00100001 (SETQ Z (+ X Y)) (LISP) 00000001 Z=X+Y; (PL/I)

10000000 ADD M _z is _x+_y (Prolog) 00110010 STA Z z=x+y; (C) 00000010 10000000 高級言語と違い 機械語の仕様はCPU( すなわち 機種 ) ごとに異なっている 上の例に用いたのは インテル社製の 8080A と呼ばれるMPUの機械語である (8080A はマイコンが出現した当初の 8 ビットマシン MPU=micro processor unit=マイコンのcpu) 通常 機械語命令の種類 ( 命令セット ) は 100 個から 200 個くらいあり ( 命令の種類が複雑で多種な CISC 型コンピュータ (complex instruction set computer) と 命令を単純にして実行効率を向上させた方式の RISC 型コンピュータ (ristricted instruction set computer) とでは命令の数がかなり異なる ) 1つの命令は次のような構造をしている ( 命令によって 長さや形式がかなり異なる ): 1 2 3 命令コード補助情報命令の対象となるアドレスあるいはデータ 1の 命令コード はその命令の名前を 2 進数で表したものであり 3の アドレス部 にはその命令の操作対象となるデータが入っているメモリ ( 主記憶装置 ) のアドレス あるいは使われるデータ自身が入れられる 2( 修飾部 ) には レジスタ番号その他の補助情報が入れられる ( レジスタ (register) とは 演算に使われる少数個の高速メモリのこと ) 参考サイト MIPSの仕様 http://www.is.titech.ac.jp/~ohshima/ta/architecture/matsu/2/index.html 情報処理技術者試験アセンブリ言語 CASLの仕様 http://www.jitec.jipdec.or.jp/1_13download/hani01.pdf http://www.jitec.jipdec.or.jp/ ( 情報処理技術者試験センター ) さて 機械語に翻訳されたプログラムが行うことは次のようになる : 1 int a,b,c; によって主記憶装置上に int( 整数 ) 型変数 a,b,c それぞれのための領 域が確保される

2 a = 1; によって確保された変数 a に int 型の値 1が格納される ( 値 1は 機械語命令自身内に作られ その命令が実行されるか あるいは 主記憶装置内のデータ用領域に作られ それが演算装置を経由して変数に格納される ) 3 b = 2; についても2と同様 4 c = a+b; によって変数 a と b の値は " ロード命令 "( 機械語の命令 ) によって演算装置に渡され " 加算命令 " を使って和がとられ その演算結果が再び " ストア命令 " によって変数 c に格納される 5 cout << c; によって変数 c の値は出力装置 ( 例えば ディスプレイ ) に出力される 例えば 4 を行うためには次の 5 つの機械語命令が実行される : アセンブリ言語による記述 mov dword ptr [a (00428bf4)],1 mov dword ptr [b (00428bf8)],2 mov eax,[a (00428bf4)] add eax,dword ptr [b (00428bf8)] mov [c (00428bfc)],eax 定数 1 を a( アト レス 00428bf4) に格納せよ定数 2 を b( アト レス 00428bf8) に格納せよ a の値を演算装置にロート せよ同上演算装置に b の値を加算せよ同上演算装置の値を c( アト レス 00428bc) に格納せよ 対応する機械語命令の列 11000111 00000101 11110100 10001011 01000010 00000000 00000001 11000111 00000101 11111100 10001011 01000010 00000000 00000010 10100001 11110100 10001011 01000010 00000000 00000011 00000101 11111000 10001011 01000010 00000000 10100011 11111100 10001011 01000010 00000000 この機械語 1つ1つが何であるかを解読して 対応する処理を実行するために CPU は 各機械語命令を 命令の読み込み 命令の解読 命令の実行 結果の出力 というステップに分解して実行するというステップを繰り返す ( 下図参照 ) もう少し 細かく言うと 1 命令の読込み ( フェッチ ): プログラムカウンタ ( プログラム内のいくつめの命令を解読実行中であるかを記憶しておくためのメモリ ) が示すアドレスに従い主記憶装置から命令を読み出し 命令レジスタ (1つの命令を格納しておくためのレジスタ レジスタ (register) とは読み書きが高速にできるメモリのこと ) に格納する 次に実行すべき命令を示すようにプログラムカウンタの値を更新する ( 普通は現在実行中の命令の直後の命令

を実行するので 1 を足す ジャンプ命令の場合は 飛び先の命令の番号を入れる ) 2 命令の解読 ( デコード ): 命令レジスタの命令 ( 命令部とアドレス部と修飾部に分けられる ) のうち 命令部をデコーダー (decoder) に渡す デコーダーは渡されたものがどのような命令であるかを解読し 命令を実行するための制御信号を生成し 命令が主記憶装置上のデータを必要とするならば そのアドレスをアドレスレジスタに転送する 3 以下 命令の実行 : アドレスレジスタは インデックスレジスタやベースレジスタ ( これらのレジスタは アドレスを表すためのもので 実際のアドレスは ベースアドレスにインデックスレジスタの値を足したものになる ( アドレスの決め方は方式によって異なり もっと複雑な方式によっている場合もある ) の修飾をうけて 有効アドレスを割り出す 4 有効アドレスの該当アドレスに記憶されているデータをデータバス上に読み出す 5 メモリレジスタ ( メモリからのデータを記憶しておくためのレジスタ ) は データバス上のデータを受け取って記憶する 6 演算が必要なときは演算装置のアキュムレータ ( 演算器 accumulator) に渡す 7 アキュムレータは演算回路を使って演算を行う 8 以下 結果の格納 : アキュムレータは演算回路から演算結果を受け取る 主記憶 装置に格納する場合はいったんメモリレジスタに戻す 9 指定されたアドレスに演算結果を格納する 1 に戻る コンピュータの動作速度 コンピュータ内部のあらゆる処理は 一定の時間幅で同期をとって行われる この同期の幅 ( で時間を割ったもの=クロック ) が動作周波数である 例えば 1クロックが1 秒間に 1000 個であれば 1KHz( キロヘルツ ) 100 万個あれば 1MHz( メガヘルツ ) 10 億個あれば 1GHz( ギガヘルツ ) である このため 動作周波数が大きいほど処理速度が速い パソコンの場合 動作周波数はマザーボード上にある水晶発振器で作り出されるクロック信号をもとに 部品ごとに調整して用いられる CPU 内部での処理は動作周波数に合わせて 1クロックで1つの処理を行う すなわち 1クロック目に命令を読み込み 2 クロック目にそれを解読し 3クロック目に実行を行い 4クロック目に結果の書き込みを行う しかし これらの処理はそれぞれ CPU 内の別々の部分で行われるので 2 クロック目に 1 つ前の命令を解読すると同時に次の命令を読み込むことができ 2 クロック目には 2 つ前の命令を実行すると同時に 1 つ前の命令を解読し次の

命令も読み込むことができ というように同時に4つの処理を並行して行うことができる このような処理方法をパイプライン (pipelining) という ( 下図参照 ) 最近では CPU の内部処理を 4 ステップではなく 8 ステップあるいはそれ以上にしたり ( スーパーパイプライン : superpipelining) フェッチやデコードを複数同時に行い 演算器の数も増やして一度に複数の命令を処理できるようにしたり ( スーパースカラー : susperscalor) して 処理速度を上げることさえ行われている 動作周波数 1Hz 1 クロック =1 秒 1MHz 1 クロック =100 万分の 1 秒 命令処理の基本 1 クロック フデ実書 フ デ 実 書 フ デ 実 命令 4

パイプライン処理 1 クロック 命令 4 フェッチ デコード 実行 フェッチ デコード スーパースカラー処理 (2 命令並列の場合 ) 1 クロック 命令 4 参考ウェブサイト (CPU の動作原理 ) ht tp://sociolab.tamacc.chuo-u.ac.jp/~saizehp/2000zemi/line-p/0515/page4.html

CPU メモリ ( 主記憶装置 ) 命令 i 1 命令 フ ロク ラム データ i やテ ータの 読み込み 計算 2 計算 結果 データ 1 テ ータ領域 3 計算結果 の書き込み データ 2 上図 (CPU における命令の解読 実行サイクル ) の流れについては http://www.em.edu.waseda.ac.jp/~moriya/education/cai/infomath3/cpu.ppt を実行し てみよ 参考書 : 浦昭二 市川照久 情報処理システム入門 ( 第 2 版 ) 第 2 章 サイエンス社 1998. 田辺皓正 8086マイクロコンピュータ 丸善 1983. 小黒正樹 マイコン入門講座 廣済堂 1980.