370 likes | 646 Views
CHAPTER 4 CPU. 2009081094 이다영 2009081100 김목영. CPU 와 main Memory 관계. CPU - 레지스터 , 산술논리연산장치 , 제어장치 , 버스접속장치 등이 있음 - 산술 논리 연산 , 데이터처리 , 내부장치를 제어하기 위해 다수의 명령어를 가 지고 있고 CPU 의 동작은 일정한 명령어에 의해 결정 CPU 가 처리할 정보는 RAM , ROM 에 저장되어 있어야 한다 .
E N D
CHAPTER 4 CPU 2009081094 이다영 2009081100김목영
CPU와 main Memory 관계 • CPU - 레지스터, 산술논리연산장치, 제어장치, 버스접속장치 등이 있음 • - 산술 논리 연산, 데이터처리, 내부장치를 제어하기 위해 다수의 명령어를 가지고 있고 CPU의 동작은 일정한 명령어에 의해 결정 • CPU가 처리할 정보는 RAM, ROM에 저장되어 있어야 한다. • 디스크로부터 메모리에 읽혀진 다음 CPU에 의해 처리 되는데 이것은 디스크 속도는 너무 느려 CPU가 디스크로부터 직접 정보를 읽어서 처리할 수 없기 때문이다. • CPU는 처리할 정보를 먼저 RAM이나 ROM에서 찾아보고 원하는 정보를 찾지 못할 경우에만 디스크에서 찾는다.
범용레지스터 • CPU가 자신의 작업을 위해 다목적으로 사용 • 산술논리장치와 연결해서 사용 • RISC 계열 – R0,R1,R2,R3 인텔계열 – ABCD • CPU 내에 생성하는 데이터 임시보관 • 누산기, 특정주소지정방식에서 주소를 지정
범용레지스터 • EAX - 누산기, 곱셈과 나눗셈에서 사용, • EBX - 초기 주소 지정 • ECX - 카운트 레지스터, CPU에 의해 자동적으로 루프카운터 • EBP - 스택에 있는 함수매개변수와 지역변수 참조 위해 사용 • ESP - 현재까지 사용된 스택의 위치 저장 • ESI EDI - 연산 및 간접 주소 연산에 주로 사용 • EAX EBX ECX EDX는 16bit를 상위와 하위로 나누어 사용가능 • 하위는 바로 사용 가능하나, 상위는 좌측으로 8번 시프트하여 사용할 수 있다.
전용레지스터 • (1) 명령어 레지스터 • 메모리로부터 코드가 버스접속장치를 통해 넘어오면 프리페치 코드 큐에 쌓이고 명령어 해독기에 의해 하나씩 해석되어 명령어로 바뀐다. • 동작코드는 덧셈, 뺄셈, 분기 • 피연산자(x)는 주소지정모드 • 피연산자(y)는 해당모드에 필요한 주소값 • 비트 개수에 의해 존재할 수 있는 명령어 개수 정해짐 동작코드 피연산자(x) 피연산자(y)
전용레지스터 • (2) 메모리 지정 레지스터 • - 메모리 주소 레지스터(MAR : Memory Address Register) • CPU가 기억장치의 주소를 참조하는 데 반드시 필요한 레지스터 • - 인덱스 레지스터 • 주소를 계산할 때 사용, 명령주소나 색인을 수정할때 사용함 • - 세그먼트 레지스터 • 16bit로 세그먼트 영역의 메모리에 주소 지정 • 32bit에서는 FS와 Gs를 추가되었다. • 16bit 유지 이유 : 32bit로 넘어가면서 호환성을 유지하기 위해 • CS, DS, SS, ES, FS, Gs 등
전용레지스터 • - 메모리 버퍼 레지스터 (BMR : Memory Buffer Register) • MAR의 상대적인 레지스터, MAR이 지정하는 주소에 있는 데이터가 MBR로 적재 • MBR 크기 = 메모리 지정된 워드의 크기, MAR의 크기는 주소공간의 크기 따라 가변 • - SI(Source Index), DI(Destination Index) • 메모리간 대량의 데이터를 옮길때시작지와 목적지의 위치를 가리키는 용도 • - 프로그램 카운터(PC) • 항상 프로그램에서 다음에 가져올 명령어의 주소를 가리킴
전용레지스터 • (3) STACK 레지스터 • 이전에 하던 작업의 내용과 그 상태의 보존을 위한 유지영역 기능을 가짐 • 스택포인터(최상위 부분)와 베이스 포인터(메모리 특정번지)를 사용한다. • (4) 상태 레지스터 • 연산 결과에 따라 CPU는 점프 연산을 하게 되는데 이때 CPU의 다음 동작의 • 기준을 정하기 위해 연산의 상태를 저장하고 있는 레지스터 • - 부호 플래그 : 산술연산의 결과에 대한 부호 비트 • - 제로 플래그(Z): 연산의 결과가 0일때1로 세트 • - 오버플로 플래그(V/O/W): 결과에 대한 오버플로를 나타내기 위해 사용
전용레지스터 • - 캐리플래그(C) : 덧셈은 최상위 자리에서 캐리의 발생, 뺄셈은 자리 빌림이 • 발생되면 1로 세트, 복수 개의 워드에 걸쳐 산술연산이 이루어질때 사용 • 상태레지스터의 구조 • (참조 : 위키백과)
0-주소 명령어 형식 • 0주소 명령어는 피 연산자(주소) 없이 동작코드로만으로구성되어 있다. • 모든 연산은 STACK 메모리의 STACK Pointer가 가리키는 Operand를 이용하여 수행한다. • 0주소 명령어의 모든 연산은 STACK에 있는 자료를 이용하여 수행하기 때문에 STACK 머신(STACK Machine)이라고도 한다. • STACK을 사용한 컴퓨터에서 수식을 계산하기 위해서는 우선 수식을 Postfix(역 polish)형태로 변경하여야 한다.
STACK • STACK은 자료의 삽입ㆍ삭제 작업이 한쪽 방향에서만 가능할 수 있도록 할당한 메모리의 일부로서 가장 나중에 삽입된 자료를 가장 먼저 삭제하는 방식으로 처리
1-주소 명령어 형식 • 명령코드와 1개의 주소로 구성되며 누산기(Accumulator) 구조의 컴퓨터에 사용된다 • [예제] C = A + B • LDA ; AC ← M[A] ← 기억장소의 A를 누산기로 전송 • ADD ; AC ← AC + M[B] ← 기억장소의 B를 누산기의 값과 더하여 누산기로 전송 • STA C ; M[C] ← AC ← 누산기의 값을 기억장소의 C로 전송 명령코드(연산자) 주소(피 연산자)
2-주소 명령어 형식 • 명령코드와 2개의 주소로 구성되며 가장 일반적인 경우이며 범용 레지스터 구조의 컴퓨터에 사용되며 주소에 레지스터나 메모리 주소를 지정한다 • 여러 개의 범용 레지스터를 가진 컴퓨터에서 사용한다. • [예제] C = A + B 명령코드(연산자) 주소(피 연산자) 주소(피 연산자)
3-주소 명령어 형식 • 명령코드와 주소 3개로 구성되며 범용 레지스터 구조의 컴퓨터에 사용 [예제] C = A + B의 경우 • A와 B 기억장소에 있는 데이터 값 10, 20을 더하여 결과값 30을 C 기억장소에 기억시킨다. 이때 A, B 기억장소에 기억되어 있던 원래의 자료 10과 20은 그대로 유지되어 파괴되지 않는다 명령코드(연산자) 주소(피 연산자) 주소(피 연산자) 주소(피 연산자)
즉시주소지정방식 • 오퍼랜드 값 자체가 명령어 내에 있는 주소 지정의 가장 간단한 형태로 오퍼랜드가 참조할 주소를 실제 데이터 값을 지정하는 방식이다. 오퍼랜드가 나타내는 것이 아니라 주어지는 '값' 자체이다. 변수의 초기값을 설정하거나 상수를 사용 또는 정의할 경우 사용된다. • 즉시 주소지정 방식에서는 명령어에 데이터가 포함되어있다. • 명령어의 오퍼랜드가 데이터의 기억장치 주소가 아니라, 명령어 수행에 필요한 데이터 그 자체이다. • 프로그램의 수행에 있어서 레지스터 혹은 어떤 변수들의 초기 값을 정해 줄 경우에 주로 사용되어 진다.
직접주소지정방식 • 주소 필드가 오퍼랜드의 실제적인 주소를 포함하는 것 • 오퍼랜드가 직접 접근할 주소를 가지고 있는 형태이다. 프로그램의 주소와 기억 장치의 주소가 동일한 주소 지정 방식으로 한 번의 메모리 참조만이 있을 뿐 특별한 연산은 없다. • 장점 • 명령어 형식이 간단하다 • 단점 • 명령어 형식에서 정해진 오퍼랜드의 비트만을 사용하므로 메모리의 사용이 극히 제한적이다
간접주소지정방식 • 직접 주소 방식의 문제점을 해결하기 위한 것으로 오퍼랜드 필드가 메모리내의 주소를 참조하여 그 주소로부터 유효 번지를 계산하여 메모리에 접근하는 방식이다.두 번의 메모리 엑세스가 일어난다. • 간접 주소지정 방식에서 유효주소 EA = (A) 오퍼랜드의 값 A가 유효 주소가 아니라, A에 저장되어 있는 값이 유효주소 • 장점 • 액세스 되어지는 메모리 범위가 명령어 형식의 오퍼랜드 필드의 길이에 제한을 받지 않고 확장할 수 있다 • 단점 • 내용을 액세스하기 위해 두 번의 메모리 참조를 해야 하므로 처리 속도가 제일 느리다. 즉 주소에 대한 내용을 구한 후에 그 내용을 다시 한번 주소로 이용해서 내용을 구하기 때문이다.
레지스터주소지정방식 • CPU내에 레지스터 명령어에 따라 지정되는 방식으로써 직접 주소 지정 방식과 유사하다. • 차이점은 오퍼랜드 필드가 메인 메모리의 주소가 아닌 레지스터를 참조한다는 점만이 다르다. • 명령어 수행에 필요한 데이터가 명령어의 오퍼랜드에 나타나는 레지스터에 저장되어 있다. • 장점 • 연산에 필요한 데이터가 CPU 내의 레지스터에 저장되어 있으므로 기억장치 액세스를 필요로 하는 다른 주소지정 방식에 비해 데이터 인출 시간이 적을뿐 만 아니라 오퍼랜드필드의 길이가 적다. • 단점 • 데이터가 레지스터에 저장되어지기 때문에 데이터의 크기가 레지스터의 크기에 제한을 받는다.
레지스터간접주소지정방식 • 피 연산자가 레지스터를 지정하고 다시 그 레지스터의 값이 실제 데이터가 저장되어 있는 기억장소의 주소를 지정 한다 • 레지스터에 저장된 데이터가 명령어 연산에 필요한 데이터가 아니라, 그 데이터가 저장되어 있는 기억장치의 주소이다. • 레지스터의 크기에 따라 지정되어지는 기억장치의 주소의 범위가 지정된다. 예) 사용되어지는 레지스터의 길이가 16비트라면, 64 K 바이트 까지의 주소를 지정할 수 있다. • 장점 • 사용되어지는 레지스터의 길이에 따라 데이터 저장 영역이 확장되어질 수 있다 • 단점 • 레지스터의 크기에 따라 지정되어지는 기억장치의 주소의 범위가 제한되어 질 수 있고, 레지스터 지정 방식과는 달리 데이터 인출을 위하여 한 번의 기억장치 액세스가 필요하다
상대주소방식 • 변위 주소지정 방식(Displacement Addressing Mode) • 변위 주소지정 방식에서는 두 개의 오퍼랜드를 사용하는데, 하나는 레지스터를 나타내고, 다른 하나는 변위를 나타낸다. • 상대 주소지정 방식은 PC를 사용하는 변위 주소지정 방식이다. • 이 방식의 유효주소는 변위 X에 PC의 값을 더한 값이 된다. 즉, 유효주소 = X + (PC) • 변위 값 X는 양수 혹은 음수 값을 가질 수 있다. • 만약 X의 값이 양수이면 현재의 PC 값에서 X값 만큼 앞으로 이동(Forwarding)한 주소가 바로 유효주소이고, 만약 X의 값이 음수이면 현재의 PC 값에서 X값 만큼 뒤로 이동한 주소가 바로 유효 주소이다 • 장점 • 사용되어지는 레지스터가 PC로 묵시적으로 정해지므로 명령어 형식에서 레지스터를 나타내는 필드가 필요하지 않다. • 단점 • 변위의 길이(D) 혹은 범위가 오퍼랜드 필드의 비트 수에 제한을 받는다.
베이스레지스터주소지정방식 • 인덱스 주소방식과 비슷하며 다른 점은 인덱스 레지스터 대신 베이스 레지스터가 사용 되었다는 점이 다르다 • 베이스 레지스터를 사용하는 변위 주소지정 방식이다. • 베이스 레지스터 주소 방식에서는 기준이 되는 주소 가지고 있고 명령어에 있는 주소는 기준주소에 대해서 변위를 나타낸다 이 방식은 다수의 베이스 레지스터를 사용 함으로써 주소 길이가 줄어든다 이때 각각의 베이스 레지스터는 기억장소에 대한 포인터를 갖는다 • 베이스 레지스터 주소지정 방식은 주로 기억장치 내의 프로그램의 위치를 지정하는데 사용된다.
인덱스레지스터주소지정방식 • 인덱스 레지스터의 값과 오퍼랜드 주소 필드의 값을 더하여 유효주소를 결정하는 방식이다. 인덱스 레지스터 값을 증가시켜 데이터 값을 지정할 수 있다 • 인덱스 레지스터를 사용하는 변위 주소지정 방식내에서 동일한 명령어를 사용하여 배열내의 서로 다른 데이터를 액세스하여 연산인덱스 레지스터는 인덱스(Index) 값을 저장하는 특수 레지스터이다. • 일반적으로 인덱스 주소지정 방식은 데이터의 배열(Data Array) 연산에 유용 • 인덱스의 내용은 데이터 배열의 시작으로부터 배열 내의 데이터까지의 위치를 나타낸다. 따라서 루프 프로그램(loop program하는데 효율적으로 사용될 수 있다.
데이터주소의표현방식 • 데이터주소 표현 방식에는 완전주소 약식주소 생략 주소 데이터 자신으로 구분할 수 있다 • 완전주소는 정보가 데이터이거나 또는 주소이거나 구별하지 않고 그 기억된 장소에 직접 매핑 시킬 수 잇는 완전한 주소를 뜻한다 • 약식주소는 주소의 일부분을 생략한 것을 말하며 계산에 의한 주소는 대부분 약식 주소에 속한다 • 생략주소는 주소를 구체적으로 나타내지 않아도 원하는 정보가 기억된 곳을 알 수있을 경우에 사용한다
STACK주소지정방식 • STACK은 푸시다운 STACK을 간단히 부르는 것으로 기억장치에 데이터를 일시적으로 저장하여 쌓아 두었다가 필요 시에 꺼내어 사용할 수 있도록 기억장치나 레지스터 일부를 할당하여 사용 하는 임시 데이터 기억장치이다 • Push나 Pop이 일어날 때 마다 STACK포인터는 자동적으로 증가 하거나 감소한다 • 장점 • 주소를 항상 이용 할 수 있으며 STACK포인터에 기억된 주소 값에서 자동적으로 1증가 또는 감소 시킴으로써 조정이 가능하기 때문에 주소를 명시할 필요가 없이 STACK 을 사용할 수 있다