한국기술교육대학교 장영조
본슬라이드는 M. Morris Mano and Charles Kime 의 Logic and Computer Design Fundamentals 의내용을참조하였습니다. 한국기술교육대학교전기전자통신공학부 2
1. 레지스터전송과데이터처리장치 2. 순차진행과제어 3. 명령어구조 (Instruction Set Architecture) 한국기술교육대학교전기전자통신공학부 3
Machine language : ( 프로그램메모리에저장되는 ) 이진코드 Assembly language : symbolic, opcode + address 정보 아키텍쳐명령어세트아키텍쳐 organization : DP, 제어장치, 연결버스하드웨어 : 논리적회로 명령어 format field - opcode - Address : 메모리또는레지스터주소 - Mode field : 주소영역의해석방법규정 - 그외 : shift 비트수, immediate 값 Instr fetch 결과저장 컴퓨터동작사이클 Instr decode 연산실행 Operand 위치해석 Operand fetch CPU의레지스터세트사용자접근불가능레지스터 : PC, IR(instr. Reg) up실행에필요한 reg, 파이프라인 reg 프로그램가능레지스터 : instr set에정의 register file ( 범용레지스터 ) PSR(processor status reg) : C,N,V,Z 의상태비트F/F SP (stack pointer) : 프로그램실행시스택값저장 -PC ( program counter) : 프로그램메모리의다음실행할주소저장 -instr decode : 연산종류, 어드레싱모드결정 한국기술교육대학교전기전자통신공학부 4
- ADD 연산에대한오퍼랜드 : 최대 3 operand (addend, augend, result) - 오퍼랜드의저장장소 : 레지스터또는메모리 - 오퍼랜드주소지정방식암시적주소 (implied address) 명시적주소 (explicit address) - 명령어에포함된주소개수 : 3, 2, 1, 0 X = (A + B)(C + D) 연산을위한각주소지정방식 3 주소명령어 : assem 프로그램코드가작다, 주소지정비트가크다 - 메모리사용 ADD T1, A, B M[T1] M[A] + M[B] ADD T2, C, D M[T2] M[C] + M[D] MUL X, T1, T2 M[X] M[T1] x M[T2] - 레지스터사용 ADD R1, A, B R1 M[A] + M[B] ADD R2, C, D R2 M[C] + M[D] MUL X, R1, R2 M[X] R1 x R2 2 주소명령어 : 결과저장오퍼랜드를암시적주소로사용, 코드길이가길어진다. MOVE T1, A M[T1] M[A] ADD T1, B M[T1] M[T1] + M[B] MOVE X, C M[X] M[C] ADD X, D M[X] M[X] + M[D] MUL X, T1 M[X] M[X] x M[T1] 한국기술교육대학교전기전자통신공학부 5
오퍼랜드어드레싱 (Operand Addressing) 1 주소명령어 : 암시적주소레지스터인 accumulator 사용 LD A ACC M[A] ADD B ACC ACC + M[B] ST X M[X] ACC LD C ACC M[C] ADD D ACC ACC + M[D] MUL X ACC ACC x M[X] ST X M[X] ACC 제로주소명령어 : Stack (LIFO, Last In First Out) 사용 TOS(top of stack) ~ 보통 stack pointer(sp) 라는레지스터에값저장 PUSH A TOS M[A] PUSH B TOS M[B] ADD TOS TOS + TOS -1 PUSH C TOS M[C] PUSH D TOS M[D] ADD TOS TOS + TOS -1 MUL TOS TOS x TOS -1 POP X M[X] TOS 한국기술교육대학교전기전자통신공학부 6
memory-to-memory 구조 register-to-register 구조 ~ load/store 구조 LD R1, A R1 M[A] LD R2, D R2 M[D] LD R2, B R2 M[B] ADD R1, R1, R2 R1 <- R1 + R2 ADD R3, R1, R2 R3 <- R1 + R2 MUL R1, R1, R3 R1 <- R1 x R3 LD R1, C R1 M[C] ST X, R1 M[X] R1 register-memory 구조 ADD R1, A R1 R1 + M[A] 단일누산기구조 : 1 주소명령어, 레지스터파일이없다. ADD B ACC ACC + M[B] 스택구조 : 제로명령어, 스택이메모리에있기때문에빈번한메모리접근발생 - infix 연산자표현 : (A + B) x C + ( D x E) - postfix 연산자표현 ( RPN, Reverse Polish Notation) : A B + C x D E x + 변수를만날때스택에저장 (push), 연산자를만날때 2 개변수를 pop 하여연산결과를다시스택에저장 PUSH A PUSH B ADD PUSH C MUL PUSH D PUSH E MUL ADD 한국기술교육대학교전기전자통신공학부 7
명령어에포함되는영역 opcode : 연산종류모드 : 오퍼랜드지정방식주소 : 오퍼랜드위치, 메모리또는레지스터암시모드 (implied mode) - Binary 명령어가 2개이하의주소포함시한주소는암시적 2 addr ADD T1, B M[T1] M[T1] + M[B] -- 결과주소암시적 1 addr ADD B ACC ACC + M[B] -- ACC를암시적주소로사용 0 addr ADD TOS TOS + TOS 1 -- 스택의 TOS가암시적주소 즉시모드 (immediate mode) - 상수값을갖는오퍼랜드를명령어에포함 LDA #100H ACC #100H Register mode /register indirect mode - 레지스터모드 : 명령어에서주소영역이특정, 임의레지스터를지정 LDA R1 ACC R1 - 레지스터간접모드 : 주소영역이레지스터를지정하고이레지스터의내용은오퍼랜드의메모리주소표현 LDA (R1) ACC M[R1] 직접메모리주소지정보다적은비트수사용 auto increment / auto decrement : 메모리에배열 (array) 형태의데이터가저장된경우, 배열에대한메모리주소를레지스터가지정한다. 레지스터의내용을자동 1 증가또는감소하므로써메모리배열에접근 ADD (R1)+, 3 M[R1] M[R1] + 3, R1 R1 + 1 배열의모든원소에 3을더하는연산 (R1) 배열의첫번째주소지정, 주소접근후 R1을다음연산을위해자동 1 증가 한국기술교육대학교전기전자통신공학부 8
직접어드레싱 (Direct addressing ) 모드 - 오퍼랜드가접근될메모리주소를직접사용 LDA ADRS ACC M[ADRS] 2 워드명령어, PC값 2 증가 BRA ADRS if ACC=0 PC ADRS branch 명령 if ACC 0 PC PC+2 간접어드레싱 (Indirect addressing) 모드 - 유효주소 (effective address) 가저장된메모리주소지정 LDA [ADRS] ACC M[M[ADRS]] 상대어드레싱 (Relative addressing) 모드 - 특정레지스터 ( 예 :PC) 를사용하여이의내용에주소영역값을더하여유효주소계산유효주소 = 명령어의주소부분 + PC의내용 LDA $ADRS ACC M[ADRS + PC] ** 분기할주소가현재실행명령어와가까이있는경우, 전체메모리주소지정보다적은비트수로표현가능 indexed addressing mode - 인덱스레지스터사용유효주소 = index reg의내용 + 명령어주소부분 LDA ADRS (R1) ACC M[ADRS+R1] 이때 (R1) 값은 ADRS 값으로부터상대적인위치값 - 전용 index reg 또는임의의 CPU reg를 index reg로사용 - base-register mode : index reg 대신 base reg를사용유효주소 = base reg 내용 + 명령어주소부분이때명령어주소값은 base reg 주소로부터의상대적위치값 한국기술교육대학교전기전자통신공학부 9
어드레싱모드실행예 한국기술교육대학교전기전자통신공학부 10
RISC(Reduced Instruction Set Computer) 구조 (1) 메모리접근은 load/store 명령어만가능, 데이터처리명령어는 reg-to-reg 모드만가능 (2) 제한된어드레싱모드 (3) 고정길이명령어포맷 (4) 명령어는기본적연산수행 - 많은데이터처리량과빠른처리속도를목적 - 메모리접근은시간이많이걸리므로 load/store외다른명령어에서는배제 - 큰레지스터파일을사용하여데이터처리 - 단순한제어장치구조로하드와이드방식사용 - 파이프라인구조를기본적구조로사용 CISC (Complex Instruction Set Computer) 구조 (1) 직접메모리접근이가능한명령어가많다 (2) 다양한어드레싱모드 (3) 가변길이의명령어포맷 (4) 기본적연산과복합연산을포함하는명령어세트 - 프로그램규모를줄여메모리사용을줄이는명령어 - 메모리접근이용이하므로레지스터파일은비교적작다. - 복잡한명령어에대한제어논리회로는마이크로프로그래밍방식사용 up 제어회로는내부적으로 RISC의기본연산실행과같이파이프라인으로처리 CPU의기본연산명령어군 (CISC 및 RISC 모두에포함 ) (1) 데이터전송명령어 (2) 데이터처리명령어 (3) 프로그램처리명령어 한국기술교육대학교전기전자통신공학부 11
- 데이터이동 : 데이터내용불변 - 전송장소 메모리-레지스터, CPU 레지스터-입출력레지스터, 레지스터-레지스터, 메모리-메모리 스택명령어 - 프로시져호출과복귀, interrupt 시상태정보저장 - 메모리스택과레지스터사이의데이터전송 : push/pop - SP(stack pointer) 현재의스택주소, TOS 스택에저장된데이터는 pop 동작으로제거되는것이아니고 SP값만감소 - 스택증가가주소값이감소하는형태의스택 : descending stack push SP SP-1 pop R1 M[SP] M[SP] R1 SP SP+1 - 스택증가가주소값이증가하는형태의스택 : ascending stack full stack push SP SP+1 pop R1 M[SP] M[SP] R1 SP SP-1 -SP가TOS의다음위치지정형태 ( 스택주소증가방식 ) push M[SP] R1 pop SP SP-1 SP SP+1 R1 M[SP] empty stack 입출력명령어 : CPU 레지스터와입출력장치의전송 - 독립I/O (independent I/O) 시스템 : isolated I/O configuration 메모리와입출력포트의주소가분리, 특정 I/O 포트를지정하기위한명령어지원 - 메모리-매핑 I/O (memory mapped I/O) 시스템 메모리주소의일부를 I/O포트주소로할당 독립적 I/O 명령어가없고 load/store 명령사용, 명령어가단순 한국기술교육대학교전기전자통신공학부 12
- 산술, 논리와비트처리, 자리이동 산술명령어 : add, sub, mult, div,. - 부호화된정수, unsigned 정수구분 -2진수, 10진수, 부동소수점 - 연산에대한레지스터의비트수 double precision은기본레지스터의 2배수 논리연산, 비트처리명령어 - 오퍼랜드의각비트에대한독립적인논리연산 - A=1010 1101 B=1111 0000 A AND B = 1010 0000 A OR B = 1111 1101 A XOR B = 0101 1101, 이때 B의역할은 mask, bit clear bit set bit complement 자리이동명령어 A SHR 2 = 0010 1011 A SHL 3 = 0110 1000 논리자리이동빈자리를 0으로채움 A SHRA 2 = 1110 1011 A SHLA 3 = 0110 1000 산술자리이동, 왼쪽빈자리는 sign extension 형태 A ROR 1 = 1101 0110 A ROLC 3 = 1 0110 1010 Carry=0으로가정 - 자리이동명령어포맷 : OP REG TYPE RL COUNT OP : opcode REG : operand TYPE : 2 비트, 자리이동형태 RL : 1비트 left/right 방향 COUNT : k비트, 0~2 k -1의자리이동수 한국기술교육대학교전기전자통신공학부 13
- 프로그램명령어는메모리에연속저장되고한번지씩읽어실행 - 메모리의주소는 PC로부터, 메모리가읽힐때마다자동 1 증가 - 프로그램의실행순서 ( 주소 ) 를바꾸는명령어 : 분기 (branch) 와점프 (jump) 명령어분기명령어 : 상대어드레싱점프명령어 : 직접, 간접어드레싱조건명령어 : 조건이만족될때분기 / 점프, 유효주소를 PC에로드아닐때는 PC의연속된다음주소실행 skip 명령어실행예 : skip on C jump addr1 ADD R1 조건이만족하면다음명령어 skip (PC 증가 ), 아니면무조건분기 조건분기명령어보다비효율적, 2 개명령어실행비교명령어 : 두오퍼랜드의뺄셈에의하여비교, 이때레지스터, 상태비트의변화로조건분기를발생 test 명령어 : 두오퍼랜드의 ANDing 결과로레지스터, 상태비트변화로조건분기발생 - 조건명령어 : PSR 비트값을조건으로하여유효주소값변경 BZ, BNZ : ALU 연산결과가 0 인지 PSR 의 Z 비트로검사 BC, BNC : ALU 에서의캐리, 자리이동레지스터의캐리 BN, BNN : 부호비트, ALU 의최상단왼쪽비트 BV, BNV : 부호화된수의산술연산의자리수넘침 (overflow) A-B 두수의뺄셈, 연산기상태비트 C ( 캐리또는 borrow ), Z 변화 한국기술교육대학교전기전자통신공학부 14
부호없는수의조건분기명령어 A-B와같은연산을실행하여 ALU 값과 PSR의 C, Z 비트사용 BLE ( A <= B ) : C=1 or Z=1 C+Z=1 BH (A > B) : BLE의 complement, C+Z=0 부호화된수의조건분기명령어 A-B와같은연산을실행하여 ALU 값과 PSR의 N, V, Z 비트사용 A >= B : N=0 V=0 결과부호 +, not overflow, A >= B N=1 V=1 overflow 및부호반전양의값결과 N xor V = 0 A > B : 결과는양수이고 not zero (N xor V) + Z = 0 A < B : A >= B 의 complement A <= B : A>B의 complement 0 011 (+3) - 1 010 (-6) ------------- 1 001 V=1 N=1 한국기술교육대학교전기전자통신공학부 15
프로시주어호출과복귀명령어 - 서브루틴을실행 (CALL) 하기위해시작하는위치로분기한후서브루틴실행이끝나면주프로그램으로복귀 (RET) CALL addr1 LD R1 다음명령어의주소를임시장소에저장 : return 주소, addr1 을 PC 에로드 - return 주소저장장소 : 메모리의고정된위치, 프로세서레지스터, 메모리스택스택사용시 : 연속된 call 주소를스택에저장, 프로그래머가복귀주소관리불필요 call SP SP-1 return PC M[SP] (LD R1 주소 ) M[SP] PC (LD R1 주소 ) SP SP + 1 PC 유효주소 (addr1) 한국기술교육대학교전기전자통신공학부 16
- 정상적인프로그램의진행순서에서벗어나외부또는내부에서발생한요구에따른서비스프로그램실행내부 / 외부에서예측할수없는시점에서발생서비스프로그램의주소는하드웨어처리로결정 interrupt 발생시, PC 외상태레지스터값도저장 - 가로채기발생시해당서비스프로그램실행전에현재실행되는프로그램의실행을완료후, 복귀주소, PSR 등을저장한후서비스프로그램을실행하고복귀시는저장된레지스터값을복원 - 컴퓨터의 2 가지동작모드 : PSR 또는특정비트로결정시스템모드 : 운영체제의프로그램실행시, 시스템모드특권명령어, 사용자는접근불가사용자모드 : 사용자프로그램실행상태, 시스템특권명령어실행불가 - 가로채기발생시현재값저장하드웨어형태 PC 값만저장하는기능하드웨어 - 가로채기서비스프로그램에서필요레지스터내용저장기능을포함해야함가로채기발생시필요레지스터내용을자동적으로저장 alternate 레지스터세트를가진형태 : 모드세트로두레지스터세트를교대로사용 - 가로채기처리하드웨어형태프로세서레지스터내용을메모리스택에저장하고서비스프로그램의첫번째명령어하드웨어주소를 PC 에로드서비스프로그램의시작주소를하나의메모리위치에할당가로채기각소스에대하여별도의독립적인주소할당가로채기소스하드웨어자체에서서비스루틴의주소제공서비스루틴으로분기하기위한주소를선택하게하드웨어처리과정을거치는경우 - 가로채기발생시대부분, 현재실행중인명령어가완료되기까지가로채기에응답하지않는다. 한국기술교육대학교전기전자통신공학부 17
프로그램가로채기 (Interrupt) 가로채기형태 : 외부가로채기, 내부가로채기, 소프트웨어가로채기 - External interrupt : 하드웨어, 입출력장치, 타이밍장치, 파워공급등외부요인에의한발생 - Internal interrupt : 하드웨어, 명령어나데이터의잘못된사용등으로 trap발생이라고함산술overflow, 0으로나눌때, 잘못된연산코드실행, 메모리스택 overflow, protection violation( 메모리접근금지영역을접근하려고할때 ) - Software interrupt : 사용자가명령어를실행하여 interrupt를의도적으로발생입출력전송이필요한경우시스템모드로변환시켜전송을시스템모드가실행하게하는 sw intr 발생외부가로채기하드웨어형태여러개의 intr 소스사용가능 EI (intr enable) 세트레지스터 ENI, DSI 명령어로세트 / 리세트 가로채기마이크로명령어실행단계 SP SP 1 M[SP] PC SP SP 1 M[SP] PSR EI 0 INTACK 1 PC IVAD 한국기술교육대학교전기전자통신공학부 18