270 likes | 734 Views
コンピュータアーキテクチャ 第 1 回 ガイダンスと POCO の命令セット. 天野 hunga@am.ics.keio.ac.jp. 授業計画. RISC 命令セットと Verilog の復習 …2 回 入出力と割り込み …4 回 パイプライン処理 …3 回 命令レベル並列処理 …3 回 マルチコアアーキテクチャ …2 回 上記は目安なので注意! テキスト:天野、西村「作りながら学ぶコンピュータアーキテクチャ」培風館 http://www.am.ics.keio.ac.jp 上に資料を掲示. 計算機構成. コンピュータの構成. Disk. CPU. Key.
E N D
コンピュータアーキテクチャ第1回 ガイダンスとPOCOの命令セットコンピュータアーキテクチャ第1回 ガイダンスとPOCOの命令セット 天野 hunga@am.ics.keio.ac.jp
授業計画 • RISC命令セットとVerilogの復習…2回 • 入出力と割り込み…4回 • パイプライン処理…3回 • 命令レベル並列処理…3回 • マルチコアアーキテクチャ…2回 上記は目安なので注意! テキスト:天野、西村「作りながら学ぶコンピュータアーキテクチャ」培風館 http://www.am.ics.keio.ac.jp上に資料を掲示
計算機構成 コンピュータの構成 Disk CPU Key Display System Bus Bridge I/OBus Memory System コンピュータの3要素
重要な入出力(I/O) • バスブリッジを介してI/Oバスと接続 • メモリと同様な番地付けをする場合が多い (Memory-mappedI/O) • マルチメディア化により範囲が広がる • ディスク、テープ、CD、DVDなどの補助記憶 • Ethernetなどのネットワーク • ビットマップディスプレイ、CDCビデオ入力 • キーボード、マウス等の入力装置 • 音声出力、入力
IFで加算を行う 0 0 0 0 00 1 1 1 1 01 10 EX WB IF ID rwe rwe_id rwe_ex opcode 15:11 st_op decorder st_op_id ld_op ld_op_id funct 3:0 funct 2:0 ‘0’ ext com_id THB ADD 0 1 rd 10:8 ir rd_id rd_ex ‘1’ A rwe_ex areg S Y + creg B 00 rs 7:5 ext breg 01 dreg PC imm 7:0 10 ext0 alu_bsel r0 判定 daddr ddataout ddatain データ メモリ 命令メモリ st_op_id we
高速化の流れ スレッドレベルの 高速化 Simultaneous Multithreading マルチコア化 複数命令の同時発行 (スーパースカラ) 命令レベルの 高速化 パイプラインを細かく (スーパーパイプライン) 周波数の向上 RISCの登場 パイプライン化 命令の動的スケジュール マルチコア 革命 2003-2004 1980 1990 2000
授業の流れ1:CPU性能向上のための技法 パイプライン処理 命令レベル並列処理 マルチコア コンピュータアーキテクチャ(3年春) 命令レベル並列処理 スーパースカラ VLIW SMT マイクロプロセッサ特論(大学院) マルチプロセッサ クラスタコンピューティング 再構成可能プロセッサ コンピュータアーキテクチャ特論(大学院)
授業の流れ2:メモリシステムと入出力 メモリシステム 入出力 マルチコアの メモリシステム I/Oの接続 割り込み DMA(DirectMemory Access) コンピュータアーキテクチャ (3年春) 仮想記憶 記憶管理 オペレーティングシステム(3年秋) マイクロプロセッサ実験 FPGA上にCPUを実現 入出力プログラム 情報工学実験 (3年秋)
評価方法 • 毎回の演習 • 今年はコンピュータ部屋を使わない時がある • Web上の掲示に注意! • 設計コンテスト • 上位入賞者は試験免除でA • 期末試験
POCOの命令セットアーキテクチャ(Instruction Set Architecture: ISA) • ソフトウェアとハードウェアのインタフェース • プログラムはISAを対象にすれば個々のハードウェアは気にしなくてもいい • ハードウェアはISAが動けば共通のプログラムが動く • IBM360開発時に明確になった概念 • それまでは開発したマシン毎にソフトウェアを作っていた • 様々な性能、価格のモデルが同じISAを共通できた → IBMのメインフレームでの覇権を確立した • IntelのIA32、ARM、SPARC、MIPSなどが長期間に渡って拡張され、利用されている
ISAの分類 • オペランド数による分類 • 0:スタックマシン PUSH 0 PUSH 1 ADD POP 2 • 演算スタックを使う方法 • B5000、HP9000などの名機があったが80年代に絶滅→スタックを使うとパイプライン化、複数命令発行ができない • 1:アキュムレータマシン LD 0 ADD 1 ST 2 • EDSAC、EDVACなど黎明期のマシン • 6800、6502など黎明期のマイクロプロセッサ • 当初からインデックスレジスタは必要としていた • レジスタが増えて汎用(専用)レジスタマシンに進化し、消滅 • 2,3:汎用(専用)レジスタマシン LD R0,0 ADD R1,1 ST R0,2 • 現在のマシンは全てここに分類される
汎用レジスタマシンの分類 • オペランド中にメモリの指定をいくつ許すか? 一つも許さない:register-register型 (load/storeマシン) RISC (Reduced Instruction Set Computer) 〇命令長が固定、各命令が簡単、高速実行可能 ×命令数が多くなる ARM、MIPS、SPARCなど 一つだけ許す:register-memory型 中間的な性質: IA32(x86)など 全て許す:memory-memory型 CISC (Complex Instruction Set Computer) 〇命令数が少なくて済む ×命令長が可変、各命令が複雑になりがち VAX-11、PDP-11など
register-register型の データパス Y S A B 必ずレジスタに持ってきてから演算を行う LDR0,0 LD R1,1 ADD R1,R0 STR1,2 固定長命令が可能だが 命令数が増える LD/STばかりやる→load/storeマシン 簡単な命令で構成 RISC(Reduced Instruction Set Computer) … we clk
各型の消長 1960 1970 1980 1990 1950 草創期のコンピュータ アキュムレータ マシン 見た目は 全盛 IBM360/370 x86の登場 register-memory メインフレーム Pentium-II でバイナリ変換 PDP-8 VAX-11で全盛期 memory-memory 絶滅 RISC vs. CISC論争 register-register IBM801 RISC-I,MIPS、ARM B5000が慶應ITCに! スタック マシン 絶滅
教育用RISCPOCO • 16bitのregister-register型 • 命令メモリ、データメモリのアドレス、データ共に16bit(64K×16ビット) • レジスタ16本 (r0-r7) • 2オペランド命令 ADDr0,r1 r0 ←r0+r1 左:destination operand 右:source operand (IBM/Intel方式) • 前身のPICOをさらに簡単化 • とにかく実装が楽になるように
メモリの読み書き • レジスタ間接指定 LD r0,(r1)r1の中身の番地のデータを読み出してr0に転送 ST r0,(r1) r1の中身の番地に、r0を書き込む • 実効アドレス(実際に読み書きされるアドレス)=レジスタの内容 • 他にもアドレッシングモード(実効アドレスを決める方法)は色々あるがPOCOはレジスタ間接指定しか持って居ない • アキュムレータマシンの際のLD0は、直接指定と呼ぶ • しかしこれはPOCOでは持っていない
基本演算命令 • レジスタ同士でしか演算はできない • ADD r1,r2 r1←r1+r2 • SUB r1,r2r1←r1-r2 • AND r1,r2 r1←r1AND r2 • OR r1, r2 r1←r1OR r2 • SL r1 r1<<1 • SR r1 r1>>1 • MV r1,r2 r1 ←r2 単純な移動 • NOP 何もしない(NoOperation)
イミーディエイト命令 • 命令コード中の数字(直値)がそのまま演算に使われる LDI r1,#1 r1←1 ADDI r1,#5 r1←r1+5 • 直値は8ビット符号付 → 演算時は16ビットに符号拡張(sign extension)される • 符号無し命令 LDIUr1,#200 r1←200 ADDIU r1,#0xf0r1←r1+0xf0 (ADDI r1,#0xf0ならばr1←r1-16)
POCOの条件分岐命令 BEZ rx,X: if(rx=0) PC←PC+1+X 10000 ddd XXXXXXXX BNZ rx,X: if(rx≠0) PC←PC+1+X 10001 ddd XXXXXXXX • PC相対指定 • 命令の位置+1を起点としてX分命令を飛び越す • 8ビットのフィールド→ -128から127まで飛べる • 局所性(Locality)があるので多くの場合大丈夫 • プログラムが再配置可能(Relocatable)になる
PC相対指定による分岐(掛け算のプログラムの例)PC相対指定による分岐(掛け算のプログラムの例) LDIU r0,#2 LD r1,(r0)r1 ←2番地の内容 LDIU r0,#3 LD r2,(r0)r2 ←3番地の内容 LDIU r3,#0r3は答が入るので0に初期化 ADD r3,r1r3にr1を足しこむ ADDI r2,#-1r2から1を引く BNZ r2, -30でなければループ LHIU r0,#0 ST r3,(r0) BEZ r2,-1
JumpとJR JMPXpc ←pc+1+XJump 10100 XXXXXXXXXXX • 無条件に相対指定でX分飛ぶ • レジスタ指定がない分遠くに飛べる -1024~+1023 JRrd pc←rdJump Register 00000 ddd --- 01010 • 絶対指定 • 16ビットのアドレス空間のどこにでも飛べる • サブルーチンコールのリターン(来週) • テーブルジャンプ
Jump and Link • 戻り番地を最大番号のレジスタに保存 • POCOの場合r7 • 古典的な手法でマインフレーム時代に使われた • Branch and Link命令 • RISCで最も良く使われる方式 JAL X : pc←pc+1+X, r7←pc+1 10101 XXXXXXXX 飛ぶ範囲はJMPと同じく11ビット(-1024~1023) 議論1:サブルーチンの入れ子(ネスト)に対応しない 議論2:r7にしまうのは命令の直交性を損ねる(格好わるい)
すべてを忘れた人のために tarの解凍 tar xvf file.tar アセンブラshapa ./shapa file.asm –o imem.dat 論理シミュレーションiverilog iverilog *.v vvp a.out 波形ビューアgtkwave gtkwave file.vcd レポート提出 report@am.ics.keio.ac.jp Subject: ARCWORK1 Student_number Name いつでもARCWORK1なので注意!
演習 • 0番地から8つの正の整数が並んでいる。このうち10より大きい(10は含まない)ものの個数を調べるプログラムを書け