1 / 34

프로젝트 발표자

CPU(Central Processing Unit). 프로젝트 발표자. 2009081090 박덕성. 2009081113 정근재. 목차. 수업 목표 CPU 란 무엇인가 ? CPU 의 기본구조 & 구성요소 명령어 집합 명령어 형식 명령어 종류 명령어 주소 지정 방식 레지스터 수업을 마치며. Dept. of Computer Science, Myongji College. 1 / 32. 1. 수업목표.

Download Presentation

프로젝트 발표자

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CPU(Central Processing Unit) 프로젝트발표자 2009081090 박덕성 2009081113 정근재

  2. 목차 • 수업 목표 • CPU란 무엇인가? • CPU의 기본구조 & 구성요소 • 명령어 집합 • 명령어 형식 • 명령어 종류 • 명령어 주소 지정 방식 • 레지스터 • 수업을 마치며 Dept. of Computer Science, Myongji College 1 / 32

  3. 1. 수업목표 CPU는 산술 논리 연산 , 데이터 처리 , 내부 장치를 제어하기 위한 명령어들의 동작을 통해 컴퓨터를 효율적으로 관리하는 방법에 대해서 알아보자. 산술 논리 연산 CPU P 데이터처리 명령어 Dept. of Computer Science, Myongji College 2 / 32

  4. B C A 2.CPU란 무엇인가? 다른 모든 장치의 동작을 제어하는 장치 명령을 해독 , 실행 하는 장치 산술논리 연산이나 데이터 처리를 실행하는 장치 Dept. of Computer Science, Myongji College 3/32

  5. 3. CPU 기본구조 실행 유닛(EU:Execution Unit) CPU의 명령어를 실행하는 유닛, ALU와 CU로 구성 되며 ALU 는 산술연산 논리 연산을 실행한 후 결과를 레지스터의 보관 명령어 유닛(Instruction Unit) 메모리에서 가져온 명령어를 실행유닛에서정확히 실행 할 수 있도록 제어하는 유닛이며ALU와 레지스터들이 잘 동작하게 해준다 버스 인터페이스 유닛(Bus Interface Unit) 버스 인터페이스 유닛은 어드레스, 데이터 컨트롤 버스를 통해서 CPU 외부와 연결시켜 주는 유닛이다. 어드레싱유닛 (Addressing Unit) 어드레싱 유닛은 CPU가 메모리나 입출력 장치에서 데이터를 읽거나 쓸 때 메모리 나 입출력 어드레스를 만들어 주는 유닛 이다. Dept. of Computer Science, Myongji College 4/ 32

  6. 3. CPU 구성요소 CONTROL UNIT PREFETCH UNIT ALU / FPU DECODE UNIT REGISTERS BUS INTERFACE UNIT INTERNAL CACHE Dept. of Computer Science, Myongji College 5 / 32

  7. 3. CPU 구성요소 - 처리장치 DECORD UNIT 복잡한 기계어명령을 ALU와 Register들이 이해할 수 있도록 단순한 형태의 2진수 배열(binary strings)로 변환시키는 것이다. CU 제어장치 제어 장치는 Decode Unit에서 나온 명령에 따라서 ALU와 Registers를 위한 제어 신호를 만들어 어떻게 동작할 것인지, 어떤 목적으로 동작할 것인지, 그 처리 결과로 무엇을 할 것인지를 지시한다. 제어 장치는 모든 작업이 적시적소에서 진행되도록 조절한다. ALU 연산 논리장치 컴퓨터에서 4칙 연산과 논리연산 등 계산을 주관하는 장치. 연산장치는 4칙 연산과 논리연산(AND ,OR ,NOT)을 주관한다. 연산장치에서 연산된 결과는 기억장치 ,제어장치 ,입출력장치와의 연계동작으로 컴퓨터의 기능을 완수한다. FPU 부동소수점 처리장치 부동 소수점 장치(Floating Point Unit, 줄여서 FPU)는 CPU의 일부로서 부동 소수점 연산을 효율적으로 처리하기 위해서 만든 장치이다. 보통 부동소수점 수에 대한 덧셈과 곱셈을 지원하며, 일부는 거듭제곱뿐 아니라 삼각 함수도 계산할 수 있다. Dept. of Computer Science, Myongji College 6 / 32

  8. 3. CPU 구성요소 -기억장치 REGISTERS 컴퓨터의 중앙처리장치 중 연산장치와 제어장치 내부에 존재하며 자료의 이동을 위해 사용되는 임시 기억장소이다. INSTRUCTION CACHE 명령 캐쉬 명령 캐쉬는 1차 캐쉬의 일부로써 명령을 chip 내에 잠시 저장하는 곳이다. 마이크로프로세서는 명령 캐쉬가 있기 때문에 처리 중 시스템 메모리에서 명령을 찾기 위하여 작업을 멈추지 않아도 된다. Dept. of Computer Science, Myongji College 7 / 32

  9. 3. CPU 구성요소 - 전송장치 BUS INTERFACE UNIT  버스 장치는 프로세서가 시스템 메모리로부터 명령/자료를 받아들이거나 시스템 메모리로 흘려 보내는 곳이다. 버스 장치는 Address Bus, Control Bus, Data Bus 세 가지로 구성되어 있다. Address Bus는 주소(저장 위치)를 전송하고 Control Bus는 제어 신호를 전송하며 Data Bus는 자료를 전송하는 bus이다. 버스 장치는 자료와 명령이 가장 먼저 프로세서 내로 입력되는 곳이며 처리 과정을 거쳐서 마지막으로 프로세서 밖으로 출력되는 곳이기도 하다. PREFETCH UNIT 이 장치는 명령 캐쉬 또는 시스템 메모리로부터 도착한 data와 명령들의 우선 순위를 결정한다. 명령들이 Prefetch Unit 내로 들어왔을 때 Prefetch Unit이 해야 할 가장 중요한 임무는 명령들을 순서대로 바르게 정렬시켜서 Decode Unit로 보내는 일이다. Dept. of Computer Science, Myongji College 8 / 32

  10. 3. CPU 구성요소 - 메인메모리와 CPU 사이에 관계 • PC( Program Address Counter) : 프로그램의 실행 시 Instruction (명령어라고 생각해둠) 의 실행순서를 나타내는 레지스터로 항상 다음에 실행할 Instruction 의 주소를 기억하고 있음 • IR (Instruction Register) : 현재 실행하고 있는 Instruction 을 기억시키는 레지스터 • MAR(Memory Address Register) : 주기억장치에 접근하려고 할 때 접근하고자 하는 곳의 주소를 기억시키는 레지스터 • MBR (Memory Buffer Register) : 주기억 장치에서 정보를 읽거나 기억시킬때 기억시킬 정보를 기억시켜 놓은 레지스터 Dept. of Computer Science, Myongji College 9 / 32

  11. 3. CPU 구성요소 - 메인메모리와 CPU 연산 과정 The number 2 is input and stored The number 3 is input and stored The addition command is input, causing the two numbers to be added and the result stored. The equal sign is input, causing the sum to be output. Dept. of Computer Science, Myongji College 10 / 32

  12. 4. 명령어 집합 명령어 집합(Instruction set) 또는 명령 집합은 프로세서가 실행할 수 있는 모든 명령들의 집합이다. Dept. of Computer Science, Myongji College 11 /32

  13. 4.명령어 집합 – 명령어 형식 명령어 (Instruction)의 구성 명령어는 크게 두 부분, 연산자(OP Code) 부분과 주소(번지,Operand) 부분으로 구성됨. 연산자 (OP Code) -명령어에서 연산 동작을 지정하는 부분으로 명령어의 종류를 표현함. 주소(번지)부 (Operand) -연산의 대상이 되는 데이터의 위치를 나타내는 부분 OP 코드 -ADD 덧셈 , SUB 뺄셈 , MUL 곱셈 , DIV 나눗셈, -LD 기억장치로부터 레지스터로 데이터 적재, STO 기억장치에 데이터 저장 Dept. of Computer Science, Myongji College 12 / 32

  14. 4.명령어 집합 – 주소 명령어 형식 0-주소 명령어 형식 Operand 없이 OP Code만으로 구성되는 명령어 형식 - STACK을 이용하여 연산을 실행 - 단항연산에 적합 - 0-주소 명령으로 프로그램을 작성하면 프로그램의 길이가 길어질 수 있음. -대표적인 0-주소 명령어 : PUSH, POP Ex ) F = 3*2 +4/2 를 postfix형식으로 변환한 후 0-주소 명령어 형식으로 표현하라 postfix F32*42/+= 프로그램 : PUSH3 PUSH 2 MUL PUSH4 PUSH2 DIV ADD STO F Dept. of Computer Science, Myongji College 13 / 32

  15. 4.명령어 집합 – 명령어 형식 1-주소 명령어 형식 OP Code와 1개의 Operand로 구성되는 명령어 형식 누산기(Accumulator)를 이용하여 연산을 실행 Ex ) X= 5 , Y = 3일때 Y ←X-Y를 1-주소 명령 형식으로 프로그램 하라. LD X, 5 LD Y, 3 SUB Y MOV X, Y Dept. of Computer Science, Myongji College 14/ 32

  16. 4.명령어 집합 – 명령어 형식 2-주소 명령어 형식 OP Code와 2개의 Operand로 구성되는 명령어 형식 연산결과를 위한 Operand 1개와 입력자료를 위한Operand 1개로 구성 가장 일반적인 연산의 형태 연산 후 입력자료의 값이 변화함 Operand1은 연산 후 결과값이 저장되는 레지스터 Ex ) X= 5 , Y = 3일때 Y ←X-Y를 2-주소 명령 형식으로 프로그램 하라. LD X, 5 LD Y, 3 ADD Y, X Dept. of Computer Science, Myongji College 15 / 32

  17. 4.명령어 집합 – 명령어 형식 3-주소 명령어 형식 OP Code와 3개의 Operand로 구성되는 명령어 형식 연산결과를 위한 Operand 1개와 입력자료를 위한 Operand 2개로 구성 연산 후 입력자료의 값이 보존됨. Ex ) X= 5 , Y = 3일때 Z ←X-Y를 3-주소 명령 형식으로 프로그램 하라. LD X, 5 LD Y, 3 ADD Z,X, Y Dept. of Computer Science, Myongji College 16 / 32

  18. 레지스터와 메모리 사이에서 자료와 정보의 이동 LOAD • CPU에서 메모리로 이동 STORE ,레지스터간 이동 MOVE • 레지스터와 입 출력 장치 사이에 INPUT , OUTPUT • 레지스터와 스택 사이에 저장 PUSH , 인출은 POP 1 3 2 데이터 전송 명령어 명령어 종류 • 사칙 연산 및 증감, 2의 보수등을 행하는 산술 명령 • 피 연산자의 각 비트를 하나씩 논리 처리하는 논리 연산 및 비트 처리 명령 • 워드의 비트들을 모두 이동시키는 시프트 명령어 데이터 처리 명령어 • 프로그램 카운터의 값을 변경 할 수 있는 제어 기능을 가지며 조건 및 무조건 분기의 분기 명령 • 다음 명령으로 건너뛰는 스킵 명령 • 서브루틴 호출과 복귀를 위한 서브루틴 명령 • 비교 명령과 테스트 명령 프로그램 제어 명령어 4.명령어 집합 – 명령어 종류 4 메모리 참조 명령어 동작 코드가 해당하는 주소의 메모리 내용으로 실행하는 명령어 레지스터의 동작이나 테스트를 기술하여 하나 이상의 레지스터 내용으로 작동되는 명령어 입출력 동작이나 테스트를 기술한 명령어이다. 5 레지스터 참조 명령어 6 입출력 참조 명령어 Dept. of Computer Science, Myongji College 17 / 32

  19. 4.명령어 집합 – 명령어 주소 지정 방식 Immediate Addressing Mode • 데이터가 명령어에 포함되어 있는 방식 • 오퍼랜드 필드의 내용이 연산에 사용할 실제 데이터 • 프로그램에서 레지스터들이나 변수의 초기 값을 어떤 상수값(constant value)으로 세트하는 데 유용 • 데이터를 인출하기 위하여 기억장치를 액세스할 필요가 없다 • 상수 값의 크기가 오퍼랜드 필드의 비트 수에 의하여 제한 Direct Addressing Mode • 오퍼랜드 필드의 내용이 유효 주소가 되는 방식 • 가장 일반적인 개념의 주소 방식 EA = A • 데이터 인출을 위해 한 번만 기억장치에 액세스 • 연산 코드를 제외하고 남은 비트들이 주소 비트로 사용 • 지정할 수 있는 기억장소의 수가 제한, 많은 수의 주소를 지정 불가능 Dept. of Computer Science, Myongji College 18 / 32

  20. 4.명령어 집합 – 명령어 주소 지정 방식 Indirect Addressing Mode • 오퍼랜드 필드에 기억장치 주소가 저장되어 있는 주소가 저장 • 그 주소가 가리키는 기억 장소에서 유효 주소 획득 EA = (A) • 실행 사이클 동안 두 번의 기억장치 액세스가 필요하다는 단점 • 두 번의 액세스 • 첫 번째 액세스는 주소를 읽기 • 두 번째는 그 주소가 지정하는 위치로부터 실제 데이터를 인출 • 주소 지정 방식을 표시하는 간접비트(I)필드가 필요 Register Addressing Mode • 연산에 사용할 데이터가 레지스터에 저장 • 오퍼랜드 부분이 레지스터 번호, 유효주소가 레지스터 번호 EA = R • 오퍼랜드 필드가 레지스터들의 번호를 나타내기 때문에 비트 수가 적어도 가능 • 데이터 인출을 위하여 기억장치에 액세스 할 필요 없음 • 데이터가 저장될 수 있는 공간이 CPU 내부 레지스터들로 제한 Dept. of Computer Science, Myongji College 19 / 32

  21. 4.명령어 집합 – 명령어 주소 지정 방식 Register Indirect Addressing Mode • 주소 필드 = 오퍼랜드 address가 저장된 레지스터 • 레지스터 = 오퍼랜드 address • Indirect addressing과 유사 EA = (R) Indirect addressing과 같이, 주소 필드에 의해서 주소공간이 제한되는 문제점을 그 필드가 주소를 가지고 있는 단어의 위치를 가리키도록 함으로써 해결 Indirect addressing보다 기억장치 주소 참조수가 1회 적음 Dept. of Computer Science, Myongji College 20 / 32

  22. 4.명령어 집합 – 명령어 주소 지정 방식 Relative Indirect Addressing Mode • 묵시적으로 참조되는 레지스터 = PC EA = A + (PC) • 유효 주소를 구하기 위해서, 현재 명령어 주소와 주소 필드를 더함 • 유효 주소는 명령어 주소를 기준으로 한 상대적인 displacement (signed integer)임 • 대부분의 기억장치 참조들이 현재 실행되고 있는 명령어에 인접해 있다면, 본 addressing을 이용함으로써, 명령어 주소 비트를 절약함 Dept. of Computer Science, Myongji College 21/ 32

  23. 4.명령어 집합 – 명령어 주소 지정 방식 Base Register Addressing Mode • 레지스터: Base 기억장치 주소 • 주소 필드: 그 주소로부터의 변위값(unsigned integer) • R: implicit or explicit • 세그멘테이션(segmentation)을 구현하는데 편리하게 이용 EA = A + (R) Dept. of Computer Science, Myongji College 22/ 32

  24. 4.명령어 집합 – 명령어 주소 지정 방식 Index Register Addressing Mode • 레지스터: 그 주소로부터의 변위 값(unsigned integer) • 주소 필드: 주기억장치 주소 EA = A + (R) • 반복 연산을 효과적으로 실행 • 예: for(i=0;i<100;i++) C = A[i] + 10; • Index register = 0으로 초기화 • 각 연산이 끝난 후, index register는 1씩 증가; R = (R) + 1 • Post-indexing • 인덱싱이 간접 주소지정 후에 실행, EA = (A) + (R) • Pre-indexing • 인덱싱이 간접 주소지정 전에 실행, EA = (A+(R)) Dept. of Computer Science, Myongji College 23/ 32

  25. 4.명령어 집합 – 명령어 주소 지정 방식 데이터 주소 표현 방식 • 정보가 데이터이거나 주소이거나 구별하지 않고 그것이 기억된 장소에 직접 사상(mapping)시킬 수 있는 주소를 의미 • - 가장 많은 비트 수를 필요로 하는 방식으로서 기억 장치 용량이 • 2n 워드일 때 n 비트가 필요 • 주소의 일부분을 생략한 것을 의미 • - 계산에 의한 주소는 대부분 약식 주소 • - 약식 주소는 완전 주소보다 적은 수의 비트를 필요로 하지만 • 중앙 처리 장치 내의 레지스터를 이용하여야 함 • 주소를 구체적으로 나타내지 않아도 원하는 정보가 기억된 곳을 • 알 수 있는 경우에 사용 • 예를 들면 누산기가 하나인 경우에 생략 가능 • - 명령어의 길이를 단축하는 데 가장 큰 기여를 함 - 주소를 위하여 별도의 비트가 필요 없음 - 데이터 자신을 위하여 상당 수의 비트가 필요 Dept. of Computer Science, Myongji College 24/ 32

  26. 4.명령어 집합 – 명령어 주소 지정 방식 스택 주소 표현 방식 • 선형리스트 구조의 특별한 형태로 데이터의 삽입과 삭제가 top 에서만 일어나는 구조 • Push down 리스트 또는 LIFO(Last In First Out)리스트 • - 데이터의 삽입과 삭제가 한쪽 끝에서만 일어나고 가장 나중에 삽입한 데이터가 제일 먼저 삭제 된다. • 스택에 넣는 것을 푸시(push)이라 한다. Top의 값을 1씩 증가 • 스택에서 자료를 꺼내는 것을 팝(pop)이라 한다. Top의 값을 1씩 감소 • 스택의Top 위치를 보유한 주소 레지스터를 스택 포인터라 한다. Ex ) 스택을 이용한 A+B *C-E 의 산술식 연산을 하시오. Dept. of Computer Science, Myongji College 25/ 32

  27. 5.레지스터 레지스터 컴퓨터에서 레지스터는 마이크로프로세서의 일부분으로서 메모리 계층의 최상위에 위치하며 레지스터는 컴퓨터의 프로세서 내에서 자료를 가장 빠른 속도로 접근 가능한 메모리이다 일반적으로 현재 계산을 실행중인 값을 저장하는 데 사용된다. 레지스터가 기억할 수 있는 정보량(레지스터 길이)가 32비트인 프로세서(CPU)를 32비트 프로세서(32비트CPU)라고 한다. Dept. of Computer Science, Myongji College 26/ 32

  28. 5.레지스터 – 레지스터 종류 범용 레지스터 컴퓨터의 중앙 처리 장치(CPU) 내에 있는 레지스터 중에서 계산 결과의 임시 저장, 산술 및 논리 연산, 주소 색인 등의 여러 가지 목적으로 사용될 수 있는 레지스터. 이것은 프로그램 카운터나 명령어 레지스터와 같이 특별한 용도로 사용되는 레지스터들에 대비되는 개념이다. 많은 컴퓨터가 CPU 내에 여러 개의 범용 레지스터를 갖고 있으며 레지스터 번호로 각각을 지정한다. 범용 레지스터 종류 EAX(Accumulator Register) –누산기 레지스터 : 입출력 및 산술 , 논리 연산에 사용 , 리턴 값 인터럽트 번호 지정시 자동 사용 EBX(Base Register) : 주소 지정을 확장할 때 사용 , 초기 주소 지정 등을 위해 사용 ECX(Count Register) : 어떤 명령을 반복 실행 할 경우 횟수를 지정하는데 사용된다. EDX(Data Register) : EAX의 보조 누산기로 입출력 연산 시 간접 주소 지정 연산 시에는 보조 값을 저장하는데 사용한다. EDP(Base Pointer) : 스택의 베이스 포인터로 사용된다. ESP(Stack Pointer) : 현재까지 사용된 스택의 위치를 저장하는데 사용되는 레지스터이다. ESI(Source index) : 연산 및 간접 주소 연산에 주로 사용된다 , 문자열 처리 시 사용된다. Dept. of Computer Science, Myongji College 27/32

  29. 5.레지스터 – 레지스터 종류 전용 레지스터 전용 레지스터는 특수레지스터라고 하며 특수 레지스터는 아래 그림과 같이 구성되어 있으며, 각각의 특수한 기능들을 가지고 있다. 상태 레지스터(Flag Register) 인터럽트 레지스터(Interrupt Register) 리플레쉬 레지스터(Refresh Register) 지표 레지스터 IX(Index Register IX) 지표 레지스터 IY(Index Register IY) 스텍 포인터(Stack Pointer) 프로그램 카운터(Program Counter) F I R IX IY SP PC 16bit Dept. of Computer Science, Myongji College 28/ 32

  30. 5.레지스터 –레지스터 종류 PC(Program Counter) • 프로그램 카운터는 현재 읽어 올(혹은 써넣을) 데이터가 들어있는 메모리(혹은 입출력장치)의 번지를 지정해 주는 포인터 이다.. • 8000H 번지부터 저장되어 있는 프로그램을 읽어오는 과정 ① RUN 8000H 명령어에 의해 PC에 8000H를 로드 한다(load 기능). ② PC에 로드 된 8000H는 메모리 8000H 번지를 지정한다( 메모리 지정 기능). ③ 지정된 메모리의 내용 “3EH" 가 메모리에서 읽혀져 나오면서 PC는 다음 번지를 지정하기 위해 자동 1 증가 하여 8001H가 된다(1 증가 기능) ② PC에 로드 된 8000H는 메모리 8000H 번지지정 ③ PC는 다음 번지를 지정하기 위해 자동 1 증가 하여 8001H가 된다 memory memory PC PC 8000H 8001H ① RUN 8000H Load 신호 8000H Increment Dept. of Computer Science, Myongji College 29/ 32

  31. 5. 레지스터 –레지스터 종류 스텍 포인터(SP : Stack Pointer) • 스텍 포인터는 16비트 특수 레지스터로서 레지스터 내용을 일시적으로 피신시켜두는 기능을 가지고 있으며 아래와 같다. ① Register 내용(Data)을 일시 피신 시키는 기능 ②LIFO(Last Input First Out) 구조 ③Pointer는 감소하는 방향으로 지정 ④Subroutine CALL 명령어에 의해 자동 PC 피신, 복구 실행 ⑤Interrupt에 의한 PC 내용 자동 피신, 복구 실행 ⑥PUSH, POP 명령어에 의해 수동 Data 피신 복구 실행 Stack Pointer (피신될 데이터 번지를 지정하는 기능) Memory Stack 영역 (데이터가 피신되는 메모리 영역) CPU Stack Pointer 16bit 피신 레지스터 Dept. of Computer Science, Myongji College 30 / 32

  32. Flag register ALU S Z X H X P/V N C 5. 레지스터 –레지스터 종류 5. 레지스터 –레지스터 종류 상태 레지스터((Status register or Flag register) • 상태 레지스터는 현재 연산장치에서 연산 결과 상태를 표시해주는 레지스터이다. • 상태 레지스터는 8비트 레지스터로 아래 그림과 같은 기능들을 가지고 있다. B7 B6 B5 B4 B3 B2 B1 B0 Carry(자리올림 발생시) Add/Subtract(가산:0, 감산:1) Parity/Overflow Half carry(nibble 연산 자리올림) Zero(결과 0:1, not zero : 0 Sign(결과 +:0, -:1) Dept. of Computer Science, Myongji College 31/ 32 31/ 17

  33. 6. 수업을 마치며… 수업 목표였던 명령어들의 동작을 통해 컴퓨터를 효율적으로 관리하는 방법에 대해서 알아보는 거였는데 프로젝트 발표 준비하면서 준비 자료에 대해 모두 이해 했다고 할 수 없지만 단편적으로 알았던 CPU 에 기능을 좀 더 자세히 알 수 있는 계기가 됬다. Dept. of Computer Science, Myongji College 32/ 32

  34. 고맙습니다

More Related