プロセッサ コンピュータ基礎 (7) 菊池浩明 1. 基本機能 n 構成要素 q 入力部 q 記憶部 q 演算部 q ______ » いわゆるプロセッサ,CPU q 出力部 2. 構成回路 n 命令実行部 q PC: プログラムカウンタ q IR: 命令_________ (Instruction Register) q REG: レジスタ群 n 演算実行部 q ALU: 算術演算回路 (Arithmetic and Logic Unit) q AC: アキュムレータ (Accumulator) q マイクロプログラム制御 3. コンピューターアーキテクチャー n Architecture q 建築術,建物,構造 q ネットワークアーキテクチャー q CPUアーキテクチャー » 命令セット,メモリアーキテクチャ,バッファメモリ » 仮想記憶 4. 命令( 種類 データ転送 ) 例 (CASL) 内容 主記憶とレジスタ間デー LD, LAD, タ転送 ST 算術演算, 論理演算, 比較演算 ADDA, SUBA, AND, OR, XOR, SLA,SRA, CPA 制御,分岐命令 プログラムの制御 JPL, JMI, JZE, JNZ, JUMP, PUSH, POP CALL, RET 入出力命令 周辺装置との入出力 IN, OUT 特殊命令 割り込み SVC CASL Ⅱ n COMET Ⅱ q 基本情報技術者試験用仮想機械 q 最低限の機能を持つ簡素なアーキテクチャー q 16-bit (ワード)汎用レジスタ: GR0,..,GR7 q 主記憶 65,536ワード (128MB) q 16-bit プログラムレジスタ: PR (PC) n CASL Ⅱ q COMET用仮想アセンブラ http://www.officedaytime.com/dcaslj/ CASLシュミレーター ソースコードをペースト 実行, ステップ 実行 汎用レジ スタ メモリの中 身(アドレ ス指定) 主記憶とレジスタ GR0 レジスタ 2 + 3 = 5 ______ メモリから 呼出し Store メモリへ格納 主記憶 アドレス 値 100 2 101 3 102 5 103 0 アセンブラと機械語 n アセンブラ(CASL) ニモニック(命令) n 機械語(COMET) オペランド _________ PGM START BEGIN 0000 BEGIN LD GR0,A 0002 LAD GR1,A 0004 LD GR2,0,GR1 0006 LAD GR3,0,GR1 0008 記号アドレス RET 0009 A DC #27 B DC #1D 逆アセンブル 000A 000B C DS 1 アセンブラ命令 END "バイナリ" 1000 0009 1210 0009 1021 0000 1231 0000 8100 0027 001D 0000 転送命令 n レジスタ間転送 LD レジスタ1, レジスタ2 q 例) LD GR0, GR1 GR0の内容をGR1にコピー GR1 = GR0 q GR0,..,7が利用可能 直接レジスタ設定 n Load ADdress命令 LAD レジスタr, アドレスa q アドレスa(値)をレジスタrに設定する q 例1) LAD R0,100 q 例2) LAD R1, A q 例3) LAD R2, R0 R0=100 R1= R2= 直接アドレスからロード命令 n Load命令 LD レジスタr, アドレスa q アドレスaで指定されたメモリの値をレジスタr にロードする. q 例) LD R0,09 ;R0=27 LD R1,B ;R1= LDA R2,C ;R2= 記号 アドレス 値 A 0009 0027 B 000A 001D C 000B 0000 インデックス( ** )レジスタ参照 n アドレス修飾ロード LD レジスタr, アドレスa,インデックスレジスタx q アドレスa+インデックスレジスタxで指定される メモリの値をrにロードする. 記号 アドレス 値 q 例) R1=1,R2=2の時 A 0009 0027 LD R0, A, R1 ; R0=1D B 000A 001D LD R3, A, R2 ; R3= C 000B 0000 LD R4, B, R1 ; R4= q 注: R0はインデックスレジスタに利用できない 格納命令 n メモリへの格納(Store) ST レジスタr, アドレスa [,x] q レジスタrの内容をアドレスaで指定されたメモ リに格納する. q 例)R0=2, R1=0009, R2=1の時 記号 アドレス ST R0, A ; 9番地を2に A 0009 ST R2, A, R2 B 000A C 000B ST R1, A, R0 q アドレス修飾は全ての命令で利用可能 値 2 算術命令 n 加算 (Add Arithmetic),減算( ) ADDA レジスタr1, レジスタr2 SUBA レジスタr1, レジスタr2 ADDA レジスタr, アドレスa [,x] SUBA レジスタr, アドレスa [,x] q レジスタ間の加算(減算)r1 = r1+r2, レジスタとメモリの間の加算 r1 = r1 + *(a+x) q 実行するとr1の中身は変更される. q 例) ADDA R0, A, ; R0=R0+29 フラグ n 演算結果によってセットされる.条件分岐 の条件として利用. q SF ( Flag): 負の時1, それ以外0 q ZF (Zero Flag): ゼロの時1, それ以外0 q OF (Overflow Flag): 演算結果が[-32768, 32767]に収まらない時1, それ以外0. q 例) 3-8 SF=1, ZF=0, OF=0 5-5 SF=0, ZF=1, OF=0 q ADDAなどの算術命令だけでなく,LDなどでも セットされる. 条件分岐命令 n 比較命令 ComPare Arithmatic CPA レジスタr, アドレスa [,x] q r – *(a+x)を実行して,フラグをセットする. n 条件分岐 JUMP アドレスa [,x] JPL アドレスa [,x] JMI アドレスa [,x] JZE アドレスa [,x] q Jump(無条件), 正( ), 負(Minus), 零(Zero) の時にアドレスにジャンプする. 例) 総和を求める 0000 PGM START BEGIN 000F COUNT DC 3 0000 BEGIN LAD GR0,0 0010 A DC 3 0002 LAD GR1,0 0011 DC 6 0004 LOOP ADDA GR0,A,GR1 0012 DC 8 0006 ADDA GR1,ONE 0013 B DS 1 0008 CPA GR1,COUNT 0014 ONE DC 1 000A JMI LOOP END 000C ST GR0,B 000E RET 例) 総和を求める 0000 PGM START BEGIN (Java) 0000 BEGIN LAD GR0,0 GR0=0; 0002 LAD GR1,0 for(GR1=0; 0004 LOOP ADDA GR0,A,GR1 GR1 – Count <0; 0006 ADDA GR1,ONE ++GR1){ 0008 CPA GR1,COUNT GR0 = GR0 +A[GR1]; 000A JMI LOOP 000C ST GR0,B } 000E RET B[0] = GR0; 問1 n 次のプログラムを実行した時の,レジスタ GR0の値とメモリの変化を示せ. 0000 PRG START BEGIN 0000 BEGIN LD GR0,A 0002 CPA GR0,B 0004 JPL L1 0006 LD GR0,B 0008 L1 ST GR0,C 000A RET 000B A DC #25 000C B DC #22 000D C DS 1 END 問2 n N個の最小値を求める次のプログラムを完 成させよ. PRG START BEGIN BEGIN LAD GR1,A LAD GR2,0 LD GR0,A LOOP CPA GR0,0,GR1 ア . NEXT LD GR0,0,GR1 NEXT LAD GR1,1,GR1 LAD イ . CPA JMI ST RET A DC DC DC ウ . LOOP GR0,MIN #13 #32 #8 宿題 n 4章 q 問1 q 問2 q 問6 q 問7 まとめ プロセッサーは,主記憶と( )間でデー タ転送を行う.算術演算は( )で実行 される. n CASLは仮想機械COMETの( )であ る.命令コードを( )といい,アドレスやレ ジスタなどの引数を( )という. n メモリの位置を示すには( ),( )に よるアドレス( )などの方法がある. n
© Copyright 2024 ExpyDoc