440 likes | 1.15k Vues
제 6 장 중앙처리장치. 구성. 컴퓨터 레지스터 산술 논리 연산장치( ALU) 컴퓨터 명령어 CISC 와 RISC. 제 6 장 중앙처리장치. 중앙처리장치 3가지 주요 구성 요소 (1) Register Set (2) ALU (3) Control 명령어 수행 기능 + 수행 순서를 제어. 제 6 장 컴퓨터 레지스터. 레지스터 종류 레지스터 영숫자로 표기(대문자)
E N D
제 6 장 중앙처리장치 구성 • 컴퓨터 레지스터 • 산술 논리 연산장치(ALU) • 컴퓨터 명령어 • CISC와 RISC
제 6 장 중앙처리장치 • 중앙처리장치 • 3가지 주요 구성 요소 (1) Register Set (2) ALU (3) Control • 명령어 수행 기능 + 수행 순서를 제어
제 6 장 컴퓨터 레지스터 • 레지스터 종류 • 레지스터 • 영숫자로 표기(대문자) MAR(Memory Address Register), PC(Program Counter), IR(Instruction Register), R1(Processor Register) • n비트 레지스터의 각 플립플롭은 맨 오른쪽의 최하위 비트를 0 ~ n-1까지 순번 • 레지스터 전송 : 레지스터들 사이의 정보 전송 • 레지스터 사이의 정보 전송 동작 : 마이크로 연산(micro-operation) • 마이크로 연산 : 레지스터에 저장된 데이터를 가지고 실행되는 동작으로 하나의 클록펄스 동안에 실행되는 기본적인 동작이다. Fig. 6-2 레지스터의 블록도
제 6 장 컴퓨터 레지스터 • 레지스터 전송 • 병렬 전송 • 한 클록 펄스 동안 레지스터의 모든 비트가 동시에 전송 : 레지스터 전송 언어 R1 레지스터 : 목적지 레지스터, R2 레지스터 : 근원지 레지스터 • 제어 함수(control function) : 레지스터 전송이 정해진 조건일 때만 발생하도록 결정하는 이진 상태(0/1) R1 ← R2 P : R1 ← R2 레지스터 전송을 위한 기본 기호
제 6 장 컴퓨터 레지스터 • 레지스터 전송 • 병렬 전송 P : R1 ← R2 실제적인 전송
제 6 장 컴퓨터 레지스터 • 레지스터 전송 • 직렬 전송 • 클록과 동기되어 한 번에 한 비트씩 전송 • 비트 타임(bit time) : 인접한 두 비트 사이의 전송에 걸리는 시간 • 워드 타임(word time) : 레지스터의 머든 내용이 전송되는데 걸리는 시간 S : B3←A0, A3←A0, Ai-1←Ai, Bi-1←Bi, i=1, 2, 3
제 6 장 컴퓨터 레지스터 • 버스 전송과 기억장치 전송 • 버스 전송 • 공통 버스를 통한 정보 전송 • 한 번에 하나의 레지스터만이 데이터를 전송 • 기억장치 전송 • 읽기(READ) : 기억장치 외부장치로 정보 전송 • 쓰기(WRITE) : 외부 장치 기억장치로 정보 전송
제 6 장 컴퓨터 레지스터 • 공통 버스 구조 • 공통 버스(Common Bus) • 레지스터 상호간의 연결선수가 너무 많음 회선 비용 증가, 제어 복잡 • 예 각 레지스터가 1비트 : 6개의 데이터 경로(path)가 필요 각 레지스터가 n비트인 경우 : 6n개의 회선이 요구 • 한 번에 하나의 레지스터만이 정보 전송이 가능하게끔 회선사용에 제한 • n개의 공통선으로 회선 수를 감소 • 버스를 이용한 정보 전달은 병렬 전송
제 6 장 컴퓨터 레지스터 • 공통 버스 구조 • 내부 버스 • 산술 연산장치와 레지스터 사이의 정보 전송 경로 • 외부 버스 : CPU와 CPU외부의 장치 사이의 정보 전송 경로 • 주기억장치 버스 : CPU와 주기억장치 사이 • 입출력 버스 : 입출력장치와 CPU 사이 • 범용 레지스터 CPU 구조의 내부 버스 • 단일 누산기 CPU 구조의 내부 버스 버스에 연결된 부속 시스템
제 6 장 컴퓨터 레지스터 • 공통 버스 구조 • 버스의 구현 : 멀티플렉서 • 예 : 4개의 4비트 레지스터에 대한 버스 시스템 • C 레지스의 내용을 버스에 전달 S1S0 : BUS ← C • 버스의 내용을 D 레지스터에 전달 X Y : D ← BUS
제 6 장 컴퓨터 레지스터 • 공통 버스 구조 • 버스의 구현 : 3-상태 버퍼 게이트 • 3-상태 : 0, 1, 고저항 상태(high-impedance state) 디코더의 인에이블 입력이 1이고 선택선의 입력 S1S0=01이라면 버스에는 B 레지스터의 내용이 전송 3-상태 버퍼를 이용한 버스 시스템
제 6 장 산술 논리 연산 장치 • 산술 논리 연산 장치 • 산술 마이크로 연산(arithmetic micro-operation) : 덧셈, 뺄셈, 증가(increment), 감소(decrement) • 논리 마이크로 연산(logical micro operation) : AND, OR, XOR, 보수(Complement) 등의 논리 마이크로 연산및 • 시프트 마이크로 연산(shift micro operation) 등을 수행하는 장치 Fig. 6-15 ALU의 구성
제 6 장 산술 논리 연산 장치 Fig. 6-16 • 산술 연산 회로 • 병렬 가산기로 구성 • 병렬 가산기의 입력 제어 다양한 산술 마이크로 연산을 수행
제 6 장 산술 논리 연산 장치 • 산술 연산 회로 • 산술 연산회로 한 단위(one stage) • S1S0과 Cin의 값 제어 8가지 산술 마이크로 연산 수행
제 6 장 산술 논리 연산 장치 • 산술 연산 회로 • 상태 레지스터(Status register)와 플래그 • ALU에서의 연산 수행 후 상태 플래그가 세트 • 상태 플래그 : C(carry bit), S(sign bit), Z(zero bit), V(overflow bit) Fig. 6-19 ALU의 상태 레지스터 세팅
제 6 장 산술 논리 연산 장치 • 논리 연산 회로 • 레지스터에 저장된 각 비트들에 대한 이진 연산 • 논리 마이크로 연산 : AND, OR, XOR, Complement 연산 수행 • 논리 연산회로 한 단위(one stage) : Fig. 6-20 논리 연산 함수표
제 6 장 산술 논리 연산 장치 • 시프트 연산 회로 • 시프트 마이크로 연산 수행 : 좌측/우측 시프트, 순환 시프트 • 시프트 장치(조합회로) : 산술 연산회로와 논리 연산 회로의 출력단에 연결 • 하나의 클록펄스 기간 동안에 연산의 수행을 완료 • 4비트 조합 회로 시프트 : Fig. 6-21 함수표
제 6 장 산술 논리 연산 장치 • 산술 논리 시프트 장치 • 산술 연산 논리 회로(Fig.6-18), 논리 연산 회로(Fig.6-20), 시프트 회로(Fig.6-21)의 한 단위 회로(one stage) Fig. 6-22 ALU의 한 단위 회로
제 6 장 컴퓨터 명령어 • 컴퓨터 명령어 • 컴퓨터에게 어떤 일을 수행해야 하는지를 나타내는 비트들의 집합 • 명령어와 이의 수행에 필요한 데이터는 주기억장치에 연속적으로 위치 • CPU에 의하여 하나씩 순차적으로 수행되는 “내장 프로그램” 구조 • 기억장치에 저장된 명령과 데이터를 읽어내어 명령어의 2진 코드를 해석한 후, 명령의 수행을 위한 일련의 마이크로 연산이 이루어지도록 필요한 제어 함수를 발생시켜 명령을 실행 Fig. 6-23 내장 프로그램 구조
제 6 장 컴퓨터 명령어 • 명령어 형식(Instruction Format) • CPU의 구조와 밀접한 관계 • 필드 : 모드 필드, 연산 코드 필드, 주소 필드(최대 3개) • 모드 필드 : 긱접 번지와 간접 번지 구분(I=0 : 직접 번지, I=1 : 간접 번지) • 연산 코드 필드 : 수행하여야 할 연산의 종류(함수 연산, 전달, 제어, 입출력 기능) • 주소 필드 : 피연산자의 주소 • 모드 필드 • 유효 주소 : 실제 피연산자가 저장되어 있는 번지 그림(b)에서 유효 주소(EA) : 458 그림(c)에서 유효 주소(EA) : 1360 Fig. 6-25
제 6 장 컴퓨터 명령어 • 연산 코드(operation code) • 함수 연산, 전달, 제어, 입출력 기능 기본 컴퓨터 명령어
제 6 장 컴퓨터 명령어 • 주소 필드 • 피연산자(operand)나 유효 주소가 결정되는 방법 • CPU의 구조에 따라 주소 필드의 수 결정 • 0-주소 명령어, 1-주소 명령어, 2-주소 명령어, 3-주소 명령어 • 명령어의 길이 • 컴퓨터의 성능에 여러 가지 영향 • 명령어의 길이 ≥ 주기억장치 워드(word) • 한 번 이상의 주기억장치 접근 요구 오버헤드가 큼 • 명령어의 길이 ≤ 주기억장치 워드(word) • 주기억장치 밴드 폭을 효율적으로 사용 • 연산(operation) • 동작 수행을 위해 주기억장치나 레지스터에 기억되어 있는 데이터를 필요 • 두 개의 피연산자(operand) : 모두 레지스터에 저장, 레지스터 주소에 의해 지정 • 하나의 피연산자 : 레지스터, 다른 하나의 피연산자 : 주기억장치 K비트의 레지스터 주소 2k개의 레지스터 중 하나를 지정 ADD R1, R2 의미 : R1 ← R1 + R2 ADD R1, X 의미 : R1 ← R1 + M[X]
제 6 장 컴퓨터 명령어 • 0-주소 명령어 • 스택 구조 컴퓨터 • 명령의 수행에 필요한 두 개의 피연산자가 스택에 저장 • 예외 : push, pop 연산, 하나의 주소 필드가 필요 • 예 : Y=(A+B)*+(C+D) 0-주소 명령어 형식
제 6 장 컴퓨터 명령어 • 1-주소 명령어 • 단일 누산기 구조 컴퓨터 • 명령의 수행에 누산기(AC) 사용, 하나의 주소 필드 • 연산 결과 : 누산기에 저장 • 예 : Y=(A+B)*+(C+D) 1-주소 명령어 형식
제 6 장 컴퓨터 명령어 • 2-주소 명령어 • 벙용 레지스터 구조 컴퓨터 • 주소 필드 : 레지스터 주소 혹은 주기억장치의 주소를 지정 • 두 개의 주소 필드 • 예 : Y=(A+B)*+(C+D) 2-주소 명령어 형식
제 6 장 컴퓨터 명령어 • 3-주소 명령어 • 벙용 레지스터 구조 컴퓨터 • 주소 필드 : 레지스터 주소 혹은 주기억장치의 주소를 지정 • 3개의 주소 필드 • 예 : Y=(A+B)*+(C+D) 3-주소 명령어 형식
제 6 장 컴퓨터 명령어 • 명령어 형식에 의한 컴퓨터 구조 • 단일 누산기 구조, 방용 레지스터 구조, 스택 구조 • 단일 누산기 구조 • 1개의 프로세서 레지스터 (누산기) • 1-주소 명령어 사용 CMA (AC ← AC) CLA (AC ← 0) ADD X (AC ← AC + M[X]) LDA X (AC ← M[X]) STA X (M[X] ← AC)
제 6 장 컴퓨터 명령어 • 범용 레지스터 구조 • 2개 이상의 범용 레지스터 사용 • 2-주소/3-주소 명령어 사용 ADD R1, R2, R3 (R1 ← R2 + R3) ADD R1, R2 (R1 ← R1 + R2) ADD R1, X (R1 ← R1 + M[X]) LD R1, X (R1 ← M[X]) ST R1, X (M[X] ← R1) MOV R1, R2 (R1 ← R2)
제 6 장 컴퓨터 명령어 • 마이크로 연산(micro-operation)의 예 • R1 ← R2 + R3 • 제어 장치가 그림 6-30에 있는 여러 가지 선택선들의 입력 조합에 대한 제어 신호를 발생시켜 ALU를 통한 정보 흐름 지시 • 네 개의 제어 선택 변수에 대한 제어 신호가 동시에 얻어져야 하고, 하나의 클록펄스 간격 동안 수행 • 하나의 클록 펄스 동안에 두 개의 근원지 레지스터(R2, R3)로부터 정보가 멀티플렉서, ALU, 목적지 버스를 통하여 목적지 레지스터 R1에 전달된다(그림 6-3 참조) (1) MUX A 선택선(Select A) : R2의 내용을 A 버스에 놓는다. (2) MUX B 선택선(Select B) : R3의 내용을 B 버스에 놓는다. (3) ALU Function 선택선(OPR) : R2+R3를 위한 덧셈 연산을 하게 한다. (4) 디코더의 선택선(Select D) : 목적지 버스 D를 통하여 연산 결과를 R1에 전송한다.
제 6 장 컴퓨터 명령어 • 레지스터 선택의 인코딩(Tab. 6-10) • ALU 연산의 인코딩(Tab. 6-11) • 마이크로 연산(micro-operation)의 예 • 제어 워드(control word)
제 6 장 컴퓨터 명령어 • 스택 구조 • 0-주소 명령어 • 함수 연산 기능 ADD • 전달 기능 PUSH X (M[SP] ← MBR) POP X (MBR ← M[SP])
제 6 장 컴퓨터 명령어 • 레지스터 스택과 메모리 스택 • 레지스터 스택 : Fig. 6-33 • 메모리 스택 : Fig. 6-34 Fig. 6-34 프로그램, 데이터, 스택을 가진 컴퓨터의 메모리
제 6 장 컴퓨터 명령어 • 수식 표기법 • 중위 표기법(Infix) : A + B • 전위 표기법(Prefix 혹은 Polish) : +AB • 후위 표기법(Postfix 혹은 reverse Polish) : AB+, 스택 연산에 적합 • 예 : A * B + C * D를 후위 표기법 AB * CD * + • 연산의 예 : (3*4) + (5*6) 34*56*+ Fig. 6-35 3*4 + 5*6을 계산하는 스택 동작
제 6 장 컴퓨터 명령어 • 주소 지정 방식 • 묵시적 주소 지정 방식(implied addressing mode) • 명령어의 정의에 따라 피연산가 묵시적으로 정의 • 단일 누산기 컴퓨터 구조에서 많이 사용 • 예 : CMA, CLA 등 • 0-주소 명령어 : 묵시적 모드 명령 • 즉치 주소 지정 방식(immediate addressing mode) • 명령어 자체 내에 데이터가 포함 • 주소 필드의 값 = 데이터 • 직접 번지와 간접 번지 주소 지정 방식 • Fig. 6-25 참조 • 레지스터 주소 지정 방식(register addressing mode) • 피연산자 : CPU내의 레지스터에 저장
제 6 장 컴퓨터 명령어 • 주소 지정 방식 • 레지스터 간접 주소 지정 방식(register indirect addressing mode) • 주소 필드 : 피연산자의 유효 주소를 가지고 있는 레지스터를 지정 • 직접 번지 지정 방식으로 주기억장치의 주소를 지정하는 것보다 적은 비트 소요 • 자동 증가/ 자동 감소 주소 지정 방식(auto-increment/decrement) • 레지스터 간접 번지 지정 방식과 동일 • 자동 증가 : 기억장치 접근 후 레지스터의 값, 1 증가 • 자동 감소 : 기억장치 접근 전에 1 감소 후 기억장치를 엑세스
제 6 장 컴퓨터 명령어 • 주소 지정 방식 • 상대 주소 지정 방식(relative addressing mode) • 유효 주소 = 주소 필드 + 프로그램 카운터 값(PC) • 기준 주소 : 명령어의 주소 필드 값 • 상대적 변위(displacement) : PC의 값 • 베이스 레지스터 주소 지정 방식(base register addressing mode) • 기준 주소 : 베이스 레지스터의 값 • 명령어의 주소 필드 : 변위 값
제 6 장 컴퓨터 명령어 • 주소 지정 방식 • 베이스 레지스터 주소 지정 방식(base register addressing mode) • 인덱스 주소 지정 방식(index addressing mode) • 베이스 레지스터 주소 지정 방식과 반대 • 주소 필드 : 기준 주소 • 인덱스 레지스터 : 변위 값
제 6 장 컴퓨터 명령어 • 주소 지정 방식 • 실제 예 • PC = 100, R1 = 300, XR = 100
제 6 장 CISC와 RISC • CISC(Complex instruction set computer) • 다양한 데이터 형태와 주소 지정 방식 제공 • CISC 구조 블록도 • RISC(Reduced instruction set computer) • 고정된 명령어 형식 사용 • 주소 지정 방식도 간단 • 레지스터 주소 지정 • 명령어 세트와 제어 장치 간단 • CISC와 RISC의 비교 • Tab. 6-14 참조