4장 컴퓨터의 중앙 처리 장치 20501075 하 효 순
차 례 CPU의 구조 및 기능 CPU의 동작 명령어의 집합 명령어 형식 주소 지정방식
CPU의 구조 및 기능 CPU(중앙처리장치. Control Processing Unit) CPU의 기능 명령을 수행하고 데이터를 처리하는 장치 CPU의 기능 기억기능(레지스터에 의해 수행) 누산기(Accumulator) : 연산 시에 사용, 연산 결과 보관
CPU의 구조 및 기능 인덱스 레지스터 : 유효 주소 계산 IR(Instruction Register) : 수행 중인 명령을 기억 PC(Program Counter) : 다음에 수행할 명령의 주소 기억 MAR(Memory Address Register) : 기억 장치 주소 보관, 데이터의 기억된 위치 지시 MBR(Memory Buffer Register) : 기억하거나 읽은 데이터 보관 연산 기능 산술 연산과 논리 연산을 위해 사용하며, ALU(Arithmetic and Logic Unit) 의해 처리
CPU의 구조 및 기능 전달 기능 레지스터와 ALU 간의 인터페이스인 버스를 통해 동작. 내부 버스는 ALU에 의해 직접 연결되며, 외부 버스는 CPU와 주기억 장치, CPU와 주변 장치 사이에 연결된다. 제어 기능 제어장치(Control Unit)가 각각의 명령을 올바르게 수행되도록 하며, CPU동작 제어.
CPU의 구조 및 기능 CPU의 구조 버스 디코더(Decoder) : 명령어 해독 위해 사용 주소버스(Address Bus) : 주 기억 장치의 주소 지정. CPU에서 주 기억 장치로 가는 단 방향선. 데이터 버스(Data Bus) : CPU와 주 기억 장치 사이에서 데이터 송수신하기 위한 양 방향선. 디코더(Decoder) : 명령어 해독 위해 사용 상태 레지스터(State Register) : cpu의 현재 상태를 기억 제어 회로 : CPU 동작 제어
CPU의 동작 명령어 실행 과정 주기억 장치 CPU By CU MBR 주소 해독기 IR MAR ALU 명령어 해독기 PC
명령어의 집합 데이터 전송 명령어 Load(LD) : 메모리로부터 레지스터로의 정보 전송 명령어 Store(ST) : 레지스터에서 메모리로의 정보 전송 명령어 Move(MOV) : 레지스터간의 정보 전송 명령어 Exchange(XCH) : 두 레지스터 사이, 레지스터와 메모리 사이의 정보 교환 명령어
명령어의 집합 Input(IN) : 입력 장치에서 레지스터로의 정보 전송 명령어 Output(OUT) : 레지스터와 출력장치로의 정보 전송 명령어 Push(PUSH) : 레지스터에서 스택으로의 정보 전송 명령어 Pop(POP) : 스택에서 레지스터로의 정보 전송 명령어
명령어의 집합 데이터 처리 명령어 산술 연산 명령어 Increment(INC) : 레지스터나 메모리의 값을 증가 시키는 명령어 Decrement(DEC) : 레지스터나 메모리의 값을 감소시키는 명령어 Add(ADD) : 덧셈 명령어 Subtract(SUB) : 뺄셈 명령어 Multiply(MUL) : 곱셈 명령어
명령어의 집합 논리 연산 및 비트 처리 명령어 Divide(DIV) : 나눗셈 명령어 Add with carry(ADDC) : 올림 수를 가지는 덧셈 명령어 Subtract with borrow(SUBB) : 내림 수를 가지는 뺄셈 명령어 Negate(2’s Complement)(NEG) : 2의 보수를 취하는 명령어 논리 연산 및 비트 처리 명령어 Clear(CLR) : 피연산자의 모든 비트를 0으로 하는 명령어
명령어의 집합 수행 전 레지스터 A : 1010 레지스터 B : 1100(0000) Complement (COM) : 피연산자의 값을 1의 보수로 취하는 명령어 레지스터 B : 1100(0011) AND(AND) 레지스터 B : 1100 수행 후 레지스터 A : 1000
명령어의 집합 OR(OR) 수행 전 레지스터 A : 1010 레지스터 B : 1100 수행 후 레지스터 A : 1110 Exclusive-OR(XOR) 레지스터 B : 1010 수행 후 레지스터 A : 0000
명령어의 집합 Clear Carry(CLRC) : 올림수를 0으로 하는 명령어 Set carry(SETC) : 올림수를 1로 하는 명령어 Complement Carry(COMC) : 올림수를 보수롤 취하는 명령어 Enable Interrupt(EI) : 인터럽트를 가능하게 하는 명령어 Disable Interrupt(DI) ; 인터럽트를 불가능하게 하는 명령어
명령어의 집합 시프트 명령어 Logical Shift Right(SHR) : 0을 왼쪽 끝에 넣어 주는 명령어 Logical Shift Left(SHL) : 0을 오른쪽 끝에 넣어 주는 명령어 1 1 1 1 1 1 1 1 1 1 1 1
명령어의 집합 Arithmetic Shift Right(SHRA) : 부호 비트와 함께 오른쪽으로 자리 이동하는 명령어 시프트에 의해 발생하는 공백 부호 비트 삽입. 우측 n비트 시프트하면 원래 수를 2의n승으로 나눈 것과 같음 Arithmetic Shift Left(SHLA) : 부호 비트와 함께 왼쪽으로 자리 이동하는 명령어 시프트에 의해 발생하는 공백 0이 삽입. 좌측 n비트 시프트하면 원래 수를 2의n승으로 곱한 것과 같음 1 1 1 1
명령어의 집합 Rotate Right(ROR) : 현재 비트의 값을 그대로 유지하고 오른쪽으로 자리 이동하는 명령어 Rotate Left(ROL) : 현재 비트의 값을 그대로 유지하고 왼쪽으로 자리 이동하는 명령어 1 1 1 1 1 1 1 1 1
명령어의 집합 프로그램 제어 명령어 Branch(BR) : 지정된 주소로 분기 명령어 Jump(JMP) : 지정된 주소로 점프 명령어 Skip(SKP) : PC값을 하나 증가시켜 바로 다음 명령을 뛰어 넘게 하는 명령어 Call(CALL) : 현재 PC값을 기억시켜 놓고, 서브루틴의 시작으로 가게 하는 명령어 Return(RET) : 기억해 둔 리턴 주소 PC에 넣는 명령어
명령어 형식 명령어의 기본 형식 명령 코드 피연산자 Operand(주기억장치의 주소) Operation Code(OPCODE) (중앙처리장치에서 수행되어야 할 동작)
명령어 형식 스택 구조 : 0-주소 명령 형식 OP-Code X = (A + B) * (C + D) PUSH A TOS A PUSH B TOS B ADD TOS (A+B) PUSH C TOS C PUSH D TOS D ADD TOS (C+D) MUL TOS (A+B)*(C+D) POP X M[X] TOS OP-Code
명령어 형식 단일 누산기 구조 : 1-주소 명령 형식 OP-Code 주소-1 X = (A + B) * (C + D) LOAD A AC M[A] ADD B AC AC + M[B] STORE T M[T] AC LOAD C AC M[C] ADD D AC AC + M[D] MUL T AC AC * M[T] STORE X M[X] AC OP-Code 주소-1
명령어 형식 범용 레지스터 구조 2-주소 명령 형식 OP-Code 주소-1 주소-2 X = (A + B) * (C + D) MOV R1, A R1 M[A] ADD R1, B R1 R1 + M[B] MOV R2, C R2 M[C] ADD R2, D R2 R2 + M[D] MUL R1, R2 R1 R1 * R2 MOV X, R1 M[X] R1 OP-Code 주소-1 주소-2
명령어 형식 3-주소 명령 형식 OP-Code 주소-1 주소-2 주소-3 X = (A + B) * (C + D) ADD R1, A, B R1 M[A] + M[B] ADD R2, C, D R2 M[C] + M[D] MOV X, R1, R2 M[X] R1 * R2 OP-Code 주소-1 주소-2 주소-3
주소 지정 방식 주소 지정 방식의 목적 피연산 부분의 비트 수를 줄여 명령어 길이를 짧게 한다 프로그램 작성의 융통성이 있다 재배치를 가능하게 해서 시스템의 자원을 효율적으로 사용할 수 있다
주소 지정 방식 무주소 지정 방식 암시 방식 즉시 주소 지정 방식 명령 코드 데이터 값(정수) AC 사용하는 레지스터 참조명령어 스택 구조의 0-주소 명령어 즉시 주소 지정 방식 피연산자 부분에 데이터 값을 직접 넣어줌 명령 코드 데이터 값(정수)
주소 지정 방식 레지스터 주소 지정 방식 레지스터 방식 명령 코드 피연산자(x) 중앙처리장치 x 데이터
주소 지정 방식 레지스터 간접 방식 명령 코드 피연산자(x) 중앙처리장치 주기억장치 x y y 데이터
주소 지정 방식 자동 증가 및 감소 방식 레지스터 통해 주기억장치를 접근 후 또는 접근하기 전에 레지스터 주소 값을 자동으로 증가 또는 감소시키는 것이다 배열이나 스택 데이터를 연속적으로 처리하고자 할 때 사용한다
주소 지정 방식 절대 주소 지정 방식 직접 주소 지정 방식 명령 코드 피연산자(x) 주기억장치 x 데이터
주소 지정 방식 간접 주소 지정 방식 명령 코드 피연산자(x) 주기억장치 x y(주소) y 데이터
주소 지정 방식 계산 주소 지정 방식 주기억장치 명령 코드 피연산자(x) + x+y x y 레지스터(y) x+y 데이터 유효 주소 =명령어의 피연산자 내용 + cpu의 레지스터 내용 주기억장치 명령 코드 피연산자(x) + x+y x y 레지스터(y) x+y 데이터
주소 지정 방식 상대 주소 지정 방식 인덱스 주소 지정 방식 베이스 레지스터 주소 지정 방식 유효 번지 = 명령어의 오퍼랜드 + PC의 내용 인덱스 주소 지정 방식 유효 번지 = 명령어의 오퍼랜드 + 인덱스 레지스터 내용 베이스 레지스터 주소 지정 방식 유효 번지 = 명령어의 오퍼랜드 + 베이스 레지스터 내용