마이크로프로세서의원리 마이크로컨트롤러 AVR ATmega128 저자 : 이상설 (slee@wku.ac.kr) 소속 : 원광대학교전기 정보통신공학부
학습목표 2/33 마이크로프로세서와마이크로컨트롤러의차이를알수있다. 마이크로프로세서에서프로그램이수행되기위한명령어형식과명령어실행절차를알수있다. 프로그램을수행하려면어떤종류의명령어가필요한지알수있다. 현대컴퓨터의기본모델인저장형프로그램컴퓨터의한계점과그한계를완화하려는방법을알수있다. CISC 와상대되는 RISC 의발전계기와 RISC 형마이크로프로세서의특징을알수있다.
목차 3/33 1. 마이크로프로세서, 마이크로컨트롤러, 마이크로컴퓨터 2. 고급언어와저급언어 3. 프로그램실행원리 4. 명령어셋 5. 저장형프로그램컴퓨터 6. RISC와 CISC
컴퓨터시스템이란? 4/33 어떠한문제를계산적으로해결하기위한하드웨어컴포넌트들의집합 CPU + Memory + Bus + 주변장치 (HDD, mouse, 키보드, 네트워크, 프린터등등 ) CPU I-memory D-memory HDD mouse keybd network
CPU (Centural Processing Unit) 5/33 CPU == microprocessor opa opb Program Counter ALU +,-,*,/ AND, OR, XOR Result (ACC) Instruction Decode Unit Control Unit 마이크로프로세서 : one-chip CPU
Very Simple (micro-)processor Example 6/33 x=15 y=27 의최대공약수 (GCD; greatest common divisor)? Euclid s algorithm for GCD of x and y while (y!=0) begin if ( x <= y ) y = y x; else swap (x, y) end return x; What kind of h/w and instructions do we need to implement this algorithm?
GCD Assembly Program 7/33 tagged MovI { rd: R0, v: 0 }, // 0: The constant 0 tagged MovI { rd: R1, v: 15 }, // 1: x = 15 tagged MovI { rd: R2, v: 27 }, // 2: y = 27 // label_loop tagged Brz { rs: R2, dest:label_done }, // 3: if (y == 0) goto done tagged Gt { rd: R3, rs1: R1, rs2: R2 }, // 4: tmp = (x > y) tagged Brz { rs: R3, dest: label_subtract }, // 5: if (x <= y) goto subtract // swap tagged Minus { rd: R3, rs1: R1, rs2: R0 }, // 6: tmp = x; tagged Minus { rd: R1, rs1: R2, rs2: R0 }, // 7: x = y; tagged Minus { rd: R2, rs1: R3, rs2: R0 }, // 8: y = tmp; tagged Br label_loop, // 9: goto loop // label_subtract tagged Minus { rd: R2, rs1: R2, rs2: R1 }, // 10: y = y - x tagged Br label_loop, // 11: goto loop // label_done tagged Output R1, // 12: output x // label_last tagged Halt // 13: halt
Instruction format (1/2) 8/33 MovI : move immediate value (v) to rd 36 33 3231 1 0 op rd v 36 Br : branch to dest(ination) (memory) 33 3231 4 3 2 1 0 36 op unused dest Brz : if rs==0, then branch to dest (memory) 33 3231 6 5 4 3 2 1 0 op unused rs dest
Instruction format (2/2) 9/33 Gt : rd <= (rs1 > rs2) 36 33 3231 5 4 3 2 1 0 op unused rd rs1 rs2 36 Minus : 33 3231 rd <= (rs1 rs2) 5 4 3 2 1 0 op Output : unused display rs rd rs1 rs2 36 33 3231 5 4 3 2 1 0 36 op Halt 33 3231 unused 5 4 3 2 rs 1 0
rule fetchandexecute (running); let instr = imem [pc]; case (instr) matches tagged MovI { rd:.rd, v:.v } : begin regs[pack(rd)] <= v; pc <= pc + 1; end tagged Br.d : pc <= d; tagged Brz { rs:.rs, dest:.d } : if (regs[pack(rs)] == 0) pc <= d; else pc <= pc + 1; tagged Gt { rd:.rd, rs1:.rs1, rs2:.rs2 } : begin Bool b = (regs[pack(rs1)] > regs[pack(rs2)]); Value bv = extend (pack (b)); regs[pack(rd)] <= bv; pc <= pc + 1; end tagged Minus { rd:.rd, rs1:.rs1, rs2:.rs2 } : begin regs[pack(rd)] <= regs[pack(rs1)] - regs[pack(rs2)]; pc <= pc + 1; end tagged Output.rs tagged Halt : begin $display ("%0d: output regs[%d] = %0d", cycle, rs, regs[pack(rs)]); pc <= pc + 1; end : begin $display ("%0d: Halt at pc", cycle, pc); running <= False; end
11/33
Section 01 마이크로프로세서, 마이크로컨트롤러 12/33 마이크로프로세서 마이크로 (micro) 와프로세서 (processor) 가결합된용어 매우작은 (micro) 이라는의미와 처리기 (processor) 크기가매우작고, 뛰어난계산능력을가진장치 IC 집적기술, 컴퓨터구조기술, 시스템프로그래밍기술을함께묶어단일칩으로집적화한반도체소자 재료, 수학적개념, 전자집약기술, 사회적요구를수렴한다양한마이크로프로세서가사용되고있으며, 앞으로도꾸준한연구를통해더욱향상된마이크로프로세서가등장 프로그램을신속하게실행하기위한목적으로, 내부구조를최적화
Section 01 마이크로프로세서, 마이크로컨트롤러 13/33 마이크로컨트롤러 마이크로프로세서 (microprocessor) 와컨트롤러 (controller) 가결합된용어 매우작은 (micro) 이라는의미와 제어기 (controller) 라는의미 마이크로프로세서의연산처리기능에제어기능추가 프로그램을실행하면서장치를효과적으로제어하기위한목적으로, 내부구조를최적화 값싼장난감에서부터산업용장치에이르기까지넓은범주를대상 포함기능사례 외부디지털전압에대한입출력기능 메모리기능 ( 플래시메모리, SRAM, EEPROM 등 ) 타이머기능, PWM(Pulse Width Modulation) 펄스생성기능 입력신호캡처기능, A/D(Analog Digital) 변환기능 통신기능등
Section 02 고급언어와저급언어 14/33 번역기의필요성 컴퓨터에내장된마이크로프로세서는 2 진 (0 또는 1) 값을갖는명령어가차례대로실행되면서작업을처리 프로그램 작업을처리하기위해명령어를차례로배열한것 원시프로그램 : 사람이작성한프로그램 ( 고급언어로보통작성 ) 번역기 (Translator) 원시프로그램을저급언어 (Low level language) 인 2진명령어로변환 컴퓨터가인식할수있는기계어 (Machine language) 의실행프로그램 (Executable Program) 으로변환 기계어 : 마이크로프로세서내부의실행동작을명령어단위로표현 명령어를이해하면마이크로프로세서내부구조를쉽게이해
Section 02 고급언어와저급언어 15/33 기계어와어셈블리어 기계어 (Machine Language) 특정비트에, 특정의미가있는 2 진값을설정하는명령어를나열 어셈블리어 (Assembly Language) 기계어를사람이연상하기쉬운니모닉 (Mnemonic) 과연산대상이라는영문단어로바꿔표현 어셈블러 (Assembler) 어셈블리어로작성된원시프로그램을기계어로변환시키는번역기
Section 02 고급언어와저급언어 원시프로그램에서실행파일생성 컴파일 (Compile), 컴파일러 고급언어로작성된원시프로그램을기계어목적파일로번역하는과정 컴파일러 : 컴파일을수행하는번역기 어셈블 (Assemble), 어셈블러 어셈블리어로작성된원시프로그램을기계어목적파일로번역하는과정 어셈블러 : 어셈블을수행하는번역기 링크 (Link), 링커 여러개의목적파일을연결하여통합된실행파일로만드는과정 링커 : 링크를전담하는프로그램 라이브러리 공통으로자주사용하는기능은표준화된이름과매개변수가있는함수로작성한후, 컴파일하여목적파일을생성 컴파일된목적파일을모아놓은파일을 라이브러리파일 이라함 ( 예시 ) sin, cos, tan, printf 등과같이자주사용하는함수 16/33
Section 02 고급언어와저급언어 17/33 실행파일이생성되는과정 원시프로그램 목적파일 asm 로딩 실행파일이중앙처리장치 (CPU, Central Processing Unit) 에서실행되려면, 주메모리에탑재되는과정필요 로더 : 로딩을전담하는프로그램
Section 03 프로그램실행원리 18/33 특수레지스터, 범용레지스터, CPU 외부의메모리사이에 ALU(Arithmetic Logic Unit) 를통한연산을통해명령어실행
Section 03 프로그램실행원리 19/33 특수레지스터와범용레지스터 범용레지스터 CPU 연산에필요한오퍼랜드혹은연산결과의임시저장을위해 ALU와직접연결 연산대상이되는오퍼랜드값을가짐 특수레지스터 명령어를실행할때필요한범용데이터가아닌특수한데이터를처리하기위한레지스터 프로그램카운터, 명령어레지스터, 상태레지스터, 메모리주소레지스터, 메모리버퍼레지스터등 프로그램카운터 (PC, Program Counter) 인출할명령어가있는메모리의주소를갖는특수레지스터 프로그램메모리에서한개의명령어인출이끝나면, 그명령어의크기가더해진값으로자동변경되어다음명령어인출을위한주소를가짐
Section 03 프로그램실행원리 20/33 명령어레지스터 (IR, Instruction Counter) 프로그램메모리에서인출된명령어를기억하고있는특수레지스터 인출된명령어에는특정비트에연산동작 (opcode), 연산대상 (operand), 연산결과 (result) 어드레싱모드등의정보를설정 상태레지스터 (Status Register) 명령어를실행한후의연산결과정보를기록 기록된상태레지스터의각비트는연속되는다음명령어실행에영향을미침.+4 ( 예시 ) brcs.+4 명령은 cpi 명령실행후, 상태레지스터의캐리비트값이 1 이면, 현재의프로그램카운터보다 4 바이트후의분기된곳을실행
Section 03 프로그램실행원리 21/33
Section 03 프로그램실행원리 22/33
Section 03 프로그램실행원리 23/33
Section 03 프로그램실행원리 24/33 메모리주소레지스터 (MAR) 와메모리버퍼레지스터 (MBR) 데이터인출 / 기록과정에서데이터또는주소를임시로저장하기위한특수레지스터 명령어실행 ❶ 명령어인출단계 프로그램메모리에있는명령어를인출 (Fetch) 하여, 명령어레지스터 (IR) 에넣는단계 명령어는연산동작 (opcode), 연산대상 (operand), 연산결과 (result) 를지칭하는비트정보로구성 ❷ 명령어분석단계 명령어레지스터 (IR) 정보를디코딩하여레지스터파일, 버스라인등에필요한신호를생성
Section 03 프로그램실행원리 25/33 ❸ 오퍼랜드인출단계 디코딩결과에따라연산에사용될오퍼랜드 (operand) 위치가결정 오퍼랜드가메모리에있는경우, 메모리로부터인출하여 CPU 내부의레지스터로옮기는단계 메모리로부터 CPU 내부로옮기기위해서는부가의클록이요구되고명령어실행시간이길어짐 오퍼랜드가명령어에포함되어있거나레지스터에있는경우, 이단계는생략 ❹ 연산실행및결과생성단계 명령어레지스터의연산동작 (opcode) 에따라오퍼랜드값등을사용하여산술또는논리연산 조합논리회로로구성된 ALU 에서오퍼랜드를사용하여연산결과는어큐뮬레이터 (Accumulator) 또는범용레지스터로기록 ❺ 결과기록단계 명령어를디코딩한결과연산된결과를저장하는위치가메모리이면, 이단계가수행
Section 03 프로그램실행원리 26/33 명령어인출 - 실행사이클 프로그램은명령어가메모리에서인출 (Fetch) 되어실행 (Execution) 되는사이클이반복되면서수행 RISC 구조로실행단계를단순화할수있음 오퍼랜드인출단계를, 별도의명령어 load 결과기록단계를, 별도의명령어 store 단순해지는인출-실행사이클