2006081008장필구2006..

Download Report

Transcript 2006081008장필구2006..

LOGO
“ Add your company slogan ”
C P U(Central Processing Unit)
2006081008 장필구
2006081025 나대로
Contents
1. CPU(Central Processing Unit)의 개요
2. 명령어 집합
- 명령어 형식
- 명령어 종류
- 명령어 지정 방식
3. 레지스터(Register)
4. 마 무 리
CPU는 왜 필요하지?
폰 노이만형 컴퓨터방식을 따라
프로그램이 필요
작성된 프로그램을 해석
(컴파일러)
2진수의 기계어로 이루어진
목적파일 생성
2진수의 명령어들 실행
2진수 명령어들
고속처리→ 실행
아하!
이래서
필요하구나!
CPU의 구성 요소
병목현상(Bottle Neck)
전통적인 컴퓨터 설계기법에서, CPU
와 기억장치 사이의 통로에 정보가
집중됨으로써 야기되는 작업 지연
현상.
Control Unit
(PC, IR)
Registers
(MAR, MBR)
Main Memory
BUS Interface
Unit
ALU
CPU의 구성 요소
Control
Unit
Registers
Bus
Interface
Unit
ALU
• PC(Program Counter)
• IR(Instruction Registers)
• MAR(Memory Address Registers)
• MBR(Memory Buffer Registers)
• Internal bus
• External bus
• AU(Arithmetic Unit) – 가산기(adder), 레지스터(register), 보수기
(complementary)
• LU(Logic Unit) – 결과값의 True , False 또는 부울대수 등
캐시
-이번에 나온 i7 CPU의 캐시
구성도 이다.
-캐시 메모리를 CPU 안에 내장
하고 있으며
-가장 빠르고 가장 빈도 높은
데이터를 가진 L1 캐시메모리가
제일 가까이 있다.
CPU의 내부 구조
Memory
Device
MAR
PC
MBR
IR
IR0
IRn
Rx
ALU
IRZ
c0 ------------- cn
Control Unit
Contents
1. CPU(Central Processing Unit)의 개요
2. 명령어 집합
- 명령어 형식
- 명령어 종류
- 명령어 지정 방식
3. 레지스터(Register)
4. 마 무 리
명령어 집합
 인출 주기(Fetch Cycle)
주기억 장치 (프로그램)
➁
명령 레지스터
제어 계수기
명령
코드부
➆
➂
주소부
➃
부호기
번지
해독기
- 주기억장치에 있는 명령을 꺼내는
작업을 패치(fetch cycle)
- 명령어가 CPU 내에서 실행 될 수
있도록 명령을 명령 레지스터까지
가져와 준비하는 단계
➅
명령
해독기
➄
➀
CPU
명령어 집합
CPU
 실행 주기(Execution Cycle)
번지해독기
➀
명령 코드
주소부
주
명령어 레지스터
(
제
어
장
치
전부 CPU 안에서
일어나는 일들이다.
기 데
억 이
장 터
연
산
장
치
➄
치
➃
가산기
➂
기억레지스터
➁
)
누산기
- 꺼내어진 명령을 해석하여
실행(execution cycle)
- 명령어가 CPU 내에서 실행 될 수
있도록 명령을 명령 레지스터까지
가져와 준비하는 단계
명령어 형식
명령부 (Operation
[EX] code)
ADD
Operation code
• 어떤 연산을 할 것인가?
MOV
A, B
X, R1
레지스터
(Register)
Operand
• 주기억장치에서 자료나 명령어의 주소를 기억하는 부분
몇 번지부터 기억된 자료를 연산할 것인가?
명령부 • 주소부
• 연산에 필요한 자료가 어떤 레지스터, 기억장치 중 어느 곳에
서 오는가?
번지부(Operand)
• Data의 종류가 문자, 고정소수점,부동소수점인가?
명령어 형식
 명령어의 동작 코드
동작 코드
기능
ADD
덧셈(Add)
SUB
뺄셈(Subtract)
MUL
곱셈(Multiply)
DIV
나눗셈(Divide)
LD
기억장치로부터 레지스터로 데이터 적재(load)
STO
기억장치에 데이터 저장(Store)
명령어 형식
 0주소 명령어(0 Address Instruction)
OP code(Operation Code)
[EX]
PUSH A SP(TOP) ←
PUSH
B
SP(TOP)
←
-모든 연산은 Stack에 있는 자료를 이용하여 수행하고
ADD
SP(TOP) ←
그 결과 또한 Stack에 보존
POP
X
M[X]
←
-1개의 명령부를 갖는 명령형식
A
B
(A+B)
SP(TOP)
명령어 형식
 1주소 명령어(1 Address Instruction)
주소1
OP code
[EX]
X = (6 + 7) * 5
LOAD
ADD
STORE
MUL
STORE
-1개의 명령부와 1개의 번지부를 갖는 명령형식
-연산 결과가 항상 누산기(accumulator)에 기억
-연산 결의 주소를 지정해 줄 필요가 없다
-연산 결과를 효율적으로 사용하기 위해서는 명령의 load와 store가
반드시 필요하다(temporary register)
6
7
X
5
T
AC
AC
AC
AC
AC
명령어 형식
 2주소 명령어(2 Address Instruction)
OP[EX]
code
주소1
X = (6 + 주소2
7) * 5
MOV
ADD
MUL
MOV
-1개의 명령부와 2개의 번지부를 갖는 명령형식
R1, 6
R1, 7
R1, 5
X, R1
-주소 1에 위치한 자료와 주소 2에 위치한 자료를 명령어 내용대로 처리하여 주소 1에 저장
-장점 : 1개의 연산자에 입력자료 보관 주소와 연산결과 주소가 포함된 명령어 형식으로 실행시간이 짧다
명령어 형식
 3주소 명령어(3 Address Instruction)
OP code 주소1
[EX]
-1개의 명령부와 3개의 번지부를 갖는 명령형식
주소2
주소3
X = (6 + 7) * 5
ADD
MUL
-명령코드가 단항(unary) 연산인 경우에는 주소 2를 생략함
R1, 6, 7
X, R1, 5
-장점 : 연산 후 입력자료가 변하지 않고 보존되고 레지스터 주소를 사용하면 프로그램 길이가 짧아짐
-2진 코드로 명령을 나타날때 너무 많은 비트가 필요함
-하나의 명령어가 실행하려면 최소한 4번 access하여야 하므로 실행시간
명령어 주소 지정 방식
 정의
- 주소 지정 방식(addressing mode)란 주기억장치의 유효
주소(effective address), 즉 자료를 찾을 수 있는 주소를
계산 하는 방법을 말한다.
절대 주소(absolute Address)
- 주소부분의 값이 고유의 번지로 지정된 형식
- 기억공간의 효율 저하
상대 주소(relative Address)
- 직접 자료에 접근 할 수 없음
- 모든 주소는 어느 기본주소(base address)에 상대적으로
표시되어 유효 주소를 구하는 방법
- 명령어 주소 비트를 절약 할 수 있어 절대 주소보다 기억공간의
효율 좋은반면 사용시 절대주소로 번역해야 하는 단점이 있다.
명령어 주소 지정 방식
 즉시 주소 지정 방식
(Immediate Addressing Mode)
OP code
동작 코드
실제 데이터
-오퍼랜드(Operand)는 실질적 명령어 내에 포함 즉, “Operand = A”
-상수로 취급
-장점 : 기억장치에 접근 할 필요 없어 기억 사이클 하나를 줄 일 수 있다.
-사용되는 경우 : 일정한 값으로 레지스터를 초기화 할때 유용
명령어 주소 지정 방식
 직접 주소 지정 방식
(Direct Addressing Mode)
operand
Memory
OP code
Address(100번지)
1st
100 번지
실제데이터(500)
- 기억장치 상의 주소와 프로그램 상의 주소가 일치
- 주소를 표현하는데 많은 비트를 필요로 하므로
합리적이지 못하다.
명령어 주소 지정 방식
 간접 주소 지정 방식
(Indirect Addressing Mode)
operand
Memory
I
OP code
Address(100번지)
I = 0 : 직접주소 방식
I = 1 : 간접주소 방식
1st
주소번지 500
2nd
100번지
실제데이터(700)
500번지
- 직접 주소 방식의 주소 지정 공간이 제한되는 문제를 보완하기 위해 등장
- 참조 방식을 취함
- 단점 : 두 번 기억 장치를 참조 해야 하는 단점이 있다.
명령어 주소 지정 방식
 레지스터 주소 지정 방식
(Register Addressing Mode)
Register
OP code Address R
실제 데이터
- 직접 주소 지정 방식과 유사 즉, 해당 레지스터 안에 실제
데이터가 기억 되어있다.
- 장점 : 매우 빠른 속도를 가지고 있기에 실행 시간을 단축
시킬 수 있다.
명령어 주소 지정 방식
 레지스터 간접 주소 지정 방식
(Register Indirect Addressing Mode)
OP code
RR(100)
500번지
Memory
주소 번지 700
100번지 Register
실제데이터(1500)
700
- 간접 주소 지정 방식과 유사 즉, 피연산자를 통해 실제
데이터가 들어있는 레지스터를 찾아간다.
명령어 주소 지정 방식
 상대 주소 지정 방식
(Relative Addressing Mode)
Memory
OP code
d
유효주소
실제데이터
+
nn + d
(515)
nn = 500
nn
Program counter
- 피연산자의 주소는 PC에 따라서 지정
- PC를 베이스 레지스터로 간주하며 현재 명령어의 주소가 주소 필드의
값과 합해져서 유효 주소(Effective Address)를 얻는다.
- 주소 필드의 값은 2의 보수로 다루어진다.
명령어 주소 지정 방식
 베이스 레지스터 주소 지정 방식
(Base Register Addressing Mode)
Memory
OP code
Base register 변위
시작 주소mm(300) 변위값nn(15)
+
실제데이터(500)
mm + nn
(315번지)
- 베이스 레지스터(시작점)라는 레지스터를 이용하여 그 내용을 기준
주소로 사용 하는 방식
- 인덱스 주소 방식과 유사하다.
- 명령어 주소 부분은 베이스 주소로 부터 상대적인 변위가 된다.
명령어 주소 지정 방식
 인덱스 레지스터 주소 지정 방식
(Indexed Register Addressing Mode)
operand
OP code
Ix
d
변위값 d=50
nn
Index register nn=300
Memory
유효주소
+
실제데이터(500)
nn + d
(350번지)
- 베이스 레지스터 주소 지정 방식의 반대
- 인덱싱은 인덱스 레지스터가 있어서 해당 내용과 메모리 주소
레지스터(MAR)의 값을 필요할 때마다 더하여 피연산자를
참조한다.
- 오퍼랜드 부분이 지정하는 인덱스 레지스터의 번호와 상수값, 즉
변위로 나뉘어 있다.
명령어 주소 지정 방식
 데이터 주소의 표현 방식
◇완전 주소
-정보가 데이터 또는 주소이거나 구별하지 않고 그 기억된 장소에
직접 매핑 시킬 수 있는 완전한 주소
-단점 : 가장 많은 비트 수를 필요 2n 워드일 때 n개의 비트 필요
◇ 약식 주소
-주소의 일부분 생략
-계산에 의한 주소는 대부분 약식 주소에 속함
◇ 생략 주소
-주소를 구체적으로 나타내지 않아도 원하는 정보가 기억된 곳을 알
수 있을 때 사용
-스택, 큐가 있다.
-장점 : 명령어의 길이 축소
◇ 데이터 자신
-주소를 위해 별도의 비트가 필요 없음
-스스로 표현 위해 상당한 수의 비트 필요
명령어 주소 지정 방식
 스택(Stack) 주소 지정 방식
[EX]
- 스택 포인터는
2 푸시나
* 3 + 4팝이
/ 2 일어 날 때마다 자동으로 증가 또는 감소
중위표기 방법을 후위표기방식으로 변경
- 위의 이유로 프로세서는 주소를 명시 할 필요 없이 스택 사용 가능
23*4 2/+
Stack pointer 2
Stack pointer
100
3
주소
1000
2
2
100 2
3
1001
100
4
4
Stack pointer
6
주소
1000*
6
6
4
100
2
22
1001
1002
30
1002
1003
10
1003
1003
1004
1004
1004
a) MUL(*) 연산
100
2
6
주소
/
1000
+ 100
22
1001
322
300
1002
b) ADD(+) 연산
8
Contents
1. CPU(Central Processing Unit)의 개요
2. 명령어 집합
- 명령어 형식
- 명령어 종류
- 명령어 지정 방식
3. 레지스터(Register)
4. 마 무 리
레지스터(Register)
레지스터
범용레지스터
(GPR)
전용레지스터
(SPR)
CPU에 필요한 작은 Data의 임시저장 공간
연산 처리 및 번지지정을 도와줌
CPU 내부에는 각 용도에 맞는 다양한 레지스터가 존재
범용 레지스터(General Purpose Register)
Working Register
CPU내에서 생성하는
data를 보관
여러가지 연산을 할 수 있음
Scratch Pad Register
범용레지스터
(GPR)
Accumulator의 역할
특정 주소 지정 방식에서
주소를 지정
전용 레지스터(Special Purpose Register)
1) 명령어 레지스터
4) 상태 레지스터
2) 메모리 지정
레지스터
3) 스택 레지스터
GPR은 성능 향상을 고려하는데 비해
대부분 SPR은 반드시 필요로 하는 용도로 사용.
명령어 레지스터(IR : Instruction Register)
Instruction Register는 명령어을 수행하기 위해
잠시 정보를 보관하고 있는 레지스터
OP-code
피연산자(X) 피연산자(Y)
동작코드에는 덧셈,뺄셈,분기 등의 동작코드를 가지고 있다.
피연산자(X)는 주소지정모드로 동작하며,
피연산자(Y)는 해당모드에 필요한 주소값을 가지고 있다.
메모리 지정 레지스터
메모리 지정 레지스터에는 메모리 주소 레지스터,
인덱스 레지스터, 세그먼트 레지스터,
메모리 버퍼 레지스터, 프로그램 카운터 등이 있다.
MAR - CPU가 기억장치의 주소를 참조하는 데 반드시 필요한 레지스터
MBR - 실질적으로 CPU가 주기억장치주소를 참조하는 레지스터
Index Register - 데이터를 비교하거나 전송하는 명령에서 사용됨
SI(Source Index): Data의 시작지
DI(Destination Index): Data의 목적지
Segment Register - 프로그램의 크기가 주기억장치보다 클 때
프로그램을 한 묶음으로 쪼갠 영역
스택 레지스터(Stack Register)
Stack Register는 스택 및 데이터 메모리를 관리
이전에 하던 작업의 내용과 그 상태를 보존을 위한
유지영역의 기능을 가진다.
(Stack Pointer)
가장 최근에 Stack에 들어온 데이터를 가리킴 (Top)
(Base Pointer, Frame Pointer)
현재 사용 중인 Stack의 바닥을 가리킴 (Bottom)
상태 레지스터(Status Register)
Status Register는 CPU의 다음 동작의
기준을 정하기 위해 연산의 상태를 저장하고 있다.
(Carry Flag) - 8 + 7 = 15 여기서 ‘1’이 세트
(Zero Flag) - 8 – 8 = 0 여기서 값이 ‘0’이면 ‘1’이세트
(Sign Flag) - 5 – 8 = -3 이처럼 부호값(Sign)있을때
‘1’이 세트
(Overflow Flag) - 2 – 5 = -3결과 값이 범위를 벗어날때
‘1’이 세트
Status Register에는 Carry Flag , Zero Flag , Sign Flag ,
Overflow Flag 등이 있다.
LOGO
“ Add your company slogan ”