chapter 4 cpu

37
CHAPTER 4 CPU 2009081094 이이이 2009081100 이이이

Upload: abena

Post on 05-Jan-2016

54 views

Category:

Documents


5 download

DESCRIPTION

CHAPTER 4 CPU. 2009081094 이다영 2009081100 김목영. CPU 와 main Memory 관계. CPU - 레지스터 , 산술논리연산장치 , 제어장치 , 버스접속장치 등이 있음 - 산술 논리 연산 , 데이터처리 , 내부장치를 제어하기 위해 다수의 명령어를 가 지고 있고 CPU 의 동작은 일정한 명령어에 의해 결정 CPU 가 처리할 정보는 RAM , ROM 에 저장되어 있어야 한다 . - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CHAPTER 4 CPU

CHAPTER 4 CPU2009081094 이다영 2009081100 김목영

Page 2: CHAPTER 4 CPU

CPU 와 main Memory 관계 CPU - 레지스터 , 산술논리연산장치 , 제어장치 ,

버스접속장치 등이 있음 - 산술 논리 연산 , 데이터처리 , 내부장치를

제어하기 위해 다수의 명령어를 가 지고 있고 CPU의 동작은 일정한 명령어에 의해 결정

CPU 가 처리할 정보는 RAM, ROM 에 저장되어 있어야 한다 .

디스크로부터 메모리에 읽혀진 다음 CPU 에 의해 처리 되는데 이것은 디스크 속도는 너무 느려 CPU가 디스크로부터 직접 정보를 읽어서 처리할 수 없기 때문이다 .

CPU 는 처리할 정보를 먼저 RAM 이나 ROM 에서 찾아보고 원하는 정보를 찾지 못할 경우에만 디스크에서 찾는다 .

Page 3: CHAPTER 4 CPU

CPU 의 내부 구조

Page 4: CHAPTER 4 CPU

CPU 의 내부 구조 2

Page 5: CHAPTER 4 CPU

범용레지스터

CPU 가 자신의 작업을 위해 다목적으로 사용 산술논리장치와 연결해서 사용 RISC 계열 – R0,R1,R2,R3 인텔계열 – ABCD CPU 내에 생성하는 데이터 임시보관 누산기 , 특정주소지정방식에서 주소를 지정

Page 6: CHAPTER 4 CPU

범용레지스터

Page 7: CHAPTER 4 CPU

범용레지스터 EAX - 누산기 , 곱셈과 나눗셈에서 사용 , EBX - 초기 주소 지정 ECX - 카운트 레지스터 , CPU 에 의해 자동적으로

루프카운터 EBP - 스택에 있는 함수매개변수와 지역변수 참조 위해 사용 ESP - 현재까지 사용된 스택의 위치 저장 ESI EDI - 연산 및 간접 주소 연산에 주로 사용

EAX EBX ECX EDX 는 16bit 를 상위와 하위로 나누어 사용가능

하위는 바로 사용 가능하나 , 상위는 좌측으로 8 번 시프트하여 사용할 수 있다 .

Page 8: CHAPTER 4 CPU

범용레지스터

Page 9: CHAPTER 4 CPU

전용레지스터 (1) 명령어 레지스터 메모리로부터 코드가 버스접속장치를 통해 넘어오면

프리페치 코드 큐에 쌓이고 명령어 해독기에 의해 하나씩 해석되어 명령어로 바뀐다 .

동작코드는 덧셈 , 뺄셈 , 분기 피연산자 (x) 는 주소지정모드 피연산자 (y) 는 해당모드에 필요한 주소값 비트 개수에 의해 존재할 수 있는 명령어 개수 정해짐

동작코드 피연산자 (x) 피연산자 (y)

Page 10: CHAPTER 4 CPU

전용레지스터 (2) 메모리 지정 레지스터 - 메모리 주소 레지스터 (MAR : Memory Address

Register) CPU 가 기억장치의 주소를 참조하는 데 반드시

필요한 레지스터 - 인덱스 레지스터 주소를 계산할 때 사용 , 명령주소나 색인을

수정할때 사용함 - 세그먼트 레지스터 16bit 로 세그먼트 영역의 메모리에 주소 지정 32bit 에서는 FS 와 Gs 를 추가되었다 . 16bit 유지 이유 : 32bit 로 넘어가면서

호환성을 유지하기 위해 CS, DS, SS, ES, FS, Gs 등

Page 11: CHAPTER 4 CPU

전용레지스터

Page 12: CHAPTER 4 CPU

전용레지스터 - 메모리 버퍼 레지스터 (BMR : Memory Buffer

Register) MAR 의 상대적인 레지스터 , MAR 이 지정하는

주소에 있는 데이터가 MBR 로 적재 MBR 크기 = 메모리 지정된 워드의 크기 , MAR 의

크기는 주소공간의 크기 따라 가변 - SI(Source Index), DI(Destination Index) 메모리 간 대량의 데이터를 옮길때 시작지와

목적지의 위치를 가리키는 용도 - 프로그램 카운터 (PC) 항상 프로그램에서 다음에 가져올 명령어의 주소를

가리킴

Page 13: CHAPTER 4 CPU

전용레지스터 (3) STACK 레지스터 이전에 하던 작업의 내용과 그 상태의 보존을 위한

유지영역 기능을 가짐 스택포인터 ( 최상위 부분 ) 와 베이스 포인터 (

메모리 특정번지 ) 를 사용한다 .

(4) 상태 레지스터 연산 결과에 따라 CPU 는 점프 연산을 하게

되는데 이때 CPU 의 다음 동작의 기준을 정하기 위해 연산의 상태를 저장하고 있는

레지스터 - 부호 플래그 : 산술연산의 결과에 대한 부호 비트 - 제로 플래그 (Z) : 연산의 결과가 0 일때 1 로

세트 - 오버플로 플래그 (V/O/W) : 결과에 대한

오버플로를 나타내기 위해 사용

Page 14: CHAPTER 4 CPU

전용레지스터 - 캐리 플래그 (C) : 덧셈은 최상위 자리에서

캐리의 발생 , 뺄셈은 자리 빌림이 발생되면 1 로 세트 , 복수 개의 워드에 걸쳐

산술연산이 이루어질때 사용

상태레지스터의 구조 ( 참조 : 위키백과 )

Page 15: CHAPTER 4 CPU

0- 주소 명령어 형식 0 주소 명령어는 피 연산자 ( 주소 ) 없이

동작코드로만으로 구성되어 있다 . 모든 연산은 STACK 메모리의 STACK Pointer 가

가리키는 Operand 를 이용하여 수행한다 . 0 주소 명령어의 모든 연산은 STACK 에 있는 자료를

이용하여 수행하기 때문에 STACK 머신 (STACK Machine) 이라고도 한다 .

STACK 을 사용한 컴퓨터에서 수식을 계산하기 위해서는 우선 수식을 Postfix( 역 polish) 형태로 변경하여야 한다 .

Page 16: CHAPTER 4 CPU

STACK

STACK 은 자료의 삽입ㆍ삭제 작업이 한쪽 방향에서만 가능할 수 있도록 할당한 메모리의 일부로서 가장 나중에 삽입된 자료를 가장 먼저

삭제하는 방식으로 처리

Page 17: CHAPTER 4 CPU

1- 주소 명령어 형식 명령코드와 1 개의 주소로 구성되며 누산기

(Accumulator) 구조의 컴퓨터에 사용된다 [ 예제 ] C = A + B LDA ; AC ← M[A]       ← 기억장소의 A 를 누산기로

전송 ADD ; AC ← AC + M[B] ←  기억장소의 B 를

누산기의 값과 더하여 누산기로 전송 STA C ; M[C] ← AC     ← 누산기의 값을 기억장소의

C 로 전송 명령코드 ( 연산자 ) 주소 ( 피

연산자 )

Page 18: CHAPTER 4 CPU

2- 주소 명령어 형식 명령코드와 2 개의 주소로 구성되며 가장 일반적인

경우이며 범용 레지스터 구조의 컴퓨터에 사용되며 주소에 레지스터나 메모리 주소를 지정한다

여러 개의 범용 레지스터를 가진 컴퓨터에서 사용한다 . [ 예제 ] C = A + B

명령코드 ( 연산자 ) 주소 ( 피 연산자 ) 주소 ( 피 연산자 )

Page 19: CHAPTER 4 CPU

3- 주소 명령어 형식 명령코드와 주소 3 개로 구성되며 범용 레지스터 구조의

컴퓨터에 사용[ 예제 ] C = A + B 의 경우 A 와 B 기억장소에 있는 데이터 값 10, 20 을 더하여

결과값 30 을 C 기억장소에 기억시킨다 . 이때 A, B 기억장소에 기억되어 있던 원래의 자료 10 과

20 은 그대로 유지되어 파괴되지 않는다

명령코드( 연산자 )

주소 ( 피 연산자 )주소 ( 피 연산자 )주소 ( 피 연산자 )

Page 20: CHAPTER 4 CPU

즉시주소지정방식 오퍼랜드 값 자체가 명령어 내에 있는 주소 지정의 가장

간단한 형태로 오퍼랜드가 참조할 주소를 실제 데이터 값을 지정하는 방식이다 . 오퍼랜드가 나타내는 것이 아니라 주어지는 ' 값 ' 자체이다 . 변수의 초기값을 설정하거나 상수를 사용 또는 정의할 경우 사용된다 .

즉시 주소지정 방식에서는 명령어에 데이터가 포함되어있다 .

명령어의 오퍼랜드가 데이터의 기억장치 주소가 아니라 , 명령어 수행에 필요한 데이터 그 자체이다 .

프로그램의 수행에 있어서 레지스터 혹은 어떤 변수들의 초기 값을 정해 줄 경우에 주로 사용되어 진다 .

Page 21: CHAPTER 4 CPU

직접주소지정방식 주소 필드가 오퍼랜드의 실제적인 주소를 포함하는

것 오퍼랜드가 직접 접근할 주소를 가지고 있는

형태이다 . 프로그램의 주소와 기억 장치의 주소가 동일한 주소 지정 방식으로 한 번의 메모리 참조만이 있을 뿐 특별한 연산은 없다 .

장점 명령어 형식이 간단하다단점 명령어 형식에서 정해진 오퍼랜드의 비트만을

사용하므로 메모리의 사용이 극히 제한적이다

Page 22: CHAPTER 4 CPU
Page 23: CHAPTER 4 CPU

간접주소지정방식 직접 주소 방식의 문제점을 해결하기 위한 것으로 오퍼랜드 필드가

메모리내의 주소를 참조하여 그 주소로부터 유효 번지를 계산하여 메모리에 접근하는 방식이다 .두 번의 메모리 엑세스가 일어난다 .

간접 주소지정 방식에서 유효주소 EA = (A) 오퍼랜드의 값 A 가 유효 주소가 아니라 , A 에 저장되어 있는 값이

유효주소 장점 액세스 되어지는 메모리 범위가 명령어 형식의 오퍼랜드 필드의

길이에 제한을 받지 않고 확장할 수 있다 단점 내용을 액세스하기 위해 두 번의 메모리 참조를 해야 하므로 처리

속도가 제일 느리다 . 즉 주소에 대한 내용을 구한 후에 그 내용을 다시 한번 주소로 이용해서 내용을 구하기 때문이다 .

Page 24: CHAPTER 4 CPU
Page 25: CHAPTER 4 CPU

레지스터주소지정방식 CPU 내에 레지스터 명령어에 따라 지정되는 방식으로써 직접 주소

지정 방식과 유사하다 . 차이점은 오퍼랜드 필드가 메인 메모리의 주소가 아닌 레지스터를

참조한다는 점만이 다르다 . 명령어 수행에 필요한 데이터가 명령어의 오퍼랜드에 나타나는

레지스터에 저장되어 있다 .

장점 연산에 필요한 데이터가 CPU 내의 레지스터에 저장되어 있으므로

기억장치 액세스를 필요로 하는 다른 주소지정 방식에 비해 데이터 인출 시간이 적을 뿐 만 아니라 오퍼랜드필드의 길이가 적다 .

단점 데이터가 레지스터에 저장되어지기 때문에 데이터의 크기가

레지스터의 크기에 제한을 받는다 .

Page 26: CHAPTER 4 CPU
Page 27: CHAPTER 4 CPU

레지스터간접주소지정방식 피 연산자가 레지스터를 지정하고 다시 그 레지스터의 값이 실제

데이터가 저장되어 있는 기억장소의 주소를 지정 한다 레지스터에 저장된 데이터가 명령어 연산에 필요한 데이터가 아니라 , 그

데이터가 저장되어 있는 기억장치의 주소이다 . 레지스터의 크기에 따라 지정되어지는 기억장치의 주소의 범위가

지정된다 . 예 ) 사용되어지는 레지스터의 길이가 16 비트라면 , 64 K 바이트 까지의

주소를 지정할 수 있다 . 장점 사용되어지는 레지스터의 길이에 따라 데이터 저장 영역이 확장되어질

수 있다 단점 레지스터의 크기에 따라 지정되어지는 기억장치의 주소의 범위가

제한되어 질 수 있고 , 레지스터 지정 방식과는 달리 데이터 인출을 위하여 한 번의 기억장치 액세스가 필요하다

Page 28: CHAPTER 4 CPU
Page 29: CHAPTER 4 CPU

상대주소방식 변위 주소지정 방식 (Displacement Addressing Mode) 변위 주소지정 방식에서는 두 개의 오퍼랜드를 사용하는데 , 하나는

레지스터를 나타내고 , 다른 하나는 변위를 나타낸다 . 상대 주소지정 방식은 PC 를 사용하는 변위 주소지정 방식이다 . 이 방식의 유효주소는 변위 X 에 PC 의 값을 더한 값이 된다 . 즉 , 유효주소

= X + (PC) 변위 값 X 는 양수 혹은 음수 값을 가질 수 있다 . 만약 X 의 값이 양수이면 현재의 PC 값에서 X 값 만큼 앞으로 이동

(Forwarding) 한 주소가 바로 유효주소이고 , 만약 X 의 값이 음수이면 현재의 PC 값에서 X 값 만큼 뒤로 이동한 주소가 바로 유효 주소이다

장점 사용되어지는 레지스터가 PC 로 묵시적으로 정해지므로 명령어 형식에서

레지스터를 나타내는 필드가 필요하지 않다 . 단점 변위의 길이 (D) 혹은 범위가 오퍼랜드 필드의 비트 수에 제한을 받는다 .

Page 30: CHAPTER 4 CPU
Page 31: CHAPTER 4 CPU

베이스레지스터주소지정방식 인덱스 주소방식과 비슷하며 다른 점은 인덱스

레지스터 대신 베이스 레지스터가 사용 되었다는 점이 다르다

베이스 레지스터를 사용하는 변위 주소지정 방식이다 . 베이스 레지스터 주소 방식에서는 기준이 되는 주소

가지고 있고 명령어에 있는 주소는 기준주소에 대해서 변위를 나타낸다 이 방식은 다수의 베이스 레지스터를 사용 함으로써 주소 길이가 줄어든다 이때 각각의 베이스 레지스터는 기억장소에 대한 포인터를 갖는다

베이스 레지스터 주소지정 방식은 주로 기억장치 내의 프로그램의 위치를 지정하는데 사용된다 .

Page 32: CHAPTER 4 CPU
Page 33: CHAPTER 4 CPU

인덱스레지스터주소지정방식 인덱스 레지스터의 값과 오퍼랜드 주소 필드의 값을

더하여 유효주소를 결정하는 방식이다 . 인덱스 레지스터 값을 증가시켜 데이터 값을 지정할 수 있다

인덱스 레지스터를 사용하는 변위 주소지정 방식 내에서 동일한 명령어를 사용하여

배열내의 서로 다른 데이터를 액세스하여 연산인덱스 레지스터는 인덱스 (Index) 값을 저장하는 특수 레지스터이다 .

일반적으로 인덱스 주소지정 방식은 데이터의 배열 (Data Array) 연산에 유용

인덱스의 내용은 데이터 배열의 시작으로부터 배열 내의 데이터까지의 위치를 나타낸다 . 따라서 루프 프로그램(loop program 하는데 효율적으로 사용될 수 있다 .

Page 34: CHAPTER 4 CPU
Page 35: CHAPTER 4 CPU

데이터주소의표현방식 데이터주소 표현 방식에는 완전주소 약식주소 생략

주소 데이터 자신으로 구분할 수 있다 완전주소는 정보가 데이터이거나 또는 주소이거나

구별하지 않고 그 기억된 장소에 직접 매핑 시킬 수 잇는 완전한 주소를 뜻한다

약식주소는 주소의 일부분을 생략한 것을 말하며 계산에 의한 주소는 대부분 약식 주소에 속한다

생략주소는 주소를 구체적으로 나타내지 않아도 원하는 정보가 기억된 곳을 알 수있을 경우에 사용한다

Page 36: CHAPTER 4 CPU

STACK 주소지정방식 STACK 은 푸시다운 STACK 을 간단히 부르는

것으로 기억장치에 데이터를 일시적으로 저장하여 쌓아 두었다가 필요 시에 꺼내어 사용할 수 있도록 기억장치나 레지스터 일부를 할당하여 사용 하는 임시 데이터 기억장치이다

Push 나 Pop 이 일어날 때 마다 STACK 포인터는 자동적으로 증가 하거나 감소한다

장점 주소를 항상 이용 할 수 있으며 STACK 포인터에

기억된 주소 값에서 자동적으로 1증가 또는 감소 시킴으로써 조정이 가능하기 때문에 주소를 명시할 필요가 없이 STACK 을 사용할 수 있다

Page 37: CHAPTER 4 CPU

감사합니다♥