1 / 43

CPU 와 Register

CPU 와 Register. 2009081050 심혜진 2009081056 장미애. CPU 의 개요. CPU 란 ? 중앙처리장치 (c entral processing unit ) 컴퓨터의 가장 중요한 부분으로서 명령을 해독 하고 산술논리연산이나 데이터 처리를 실행 하는 장치 . 입출력 장치 , 외부 기억 장치와 더불어 컴퓨터 시스템을 구성한다. CPU. Control Unit (PC,IR). registers (MAR, MBR). Main Memory. Bus Interface Unit.

rae-fields
Download Presentation

CPU 와 Register

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와 Register 2009081050 심혜진 2009081056 장미애

  2. CPU의 개요 • CPU란? • 중앙처리장치(central processing unit) • 컴퓨터의 가장 중요한 부분으로서 명령을해독하고 산술논리연산이나 데이터 처리를 실행하는 장치. • 입출력 장치, 외부 기억 장치와 더불어 컴퓨터 시스템을 구성한다.

  3. CPU Control Unit (PC,IR) registers (MAR, MBR) Main Memory Bus Interface Unit ALU CPU의 구성요소 • 레지스터(registers) • 산술 논리 연산장치(ALU) • 제어장치(Control Unit) • 버스접속장치(Bus Interface Unit)

  4. CPU의 구성요소 • 레지스터(Register) • 레지스터는 CPU 내의 데이터를 저장하고 CPU가 데이터 처리를 위한 기본적인 저장 공간 • 산술 논리 연산장치(Arithmetic and Logic Unit) • CPU내부에 계산을 위해 일시적으로 수치를 넣어두는 부분

  5. CPU의 구성요소 • 제어장치(Control Unit) • CPU가 자신 및 주변기기들을 컨트롤할수 있는 장치 • 모든 컴퓨터 시스템을 제어하는데 사용되는 요소 • 메모리로부터 데이터 명령, 메모리 해석 및 실행 등을 수행 • 버스 접속 장치(Bus Interface Unit) • 메모리나 주변 장치와 데이터를 주고 받을 수 있게 해주는 역할을 담당

  6. CPU의 내부구조 • 레지스터, 산술논리연산장치, 제어장치로 구성

  7. 명령어 집합 • 명령어집합 -의미: 기계어를 사람이 이해하기 쉽게 표현한 것을 명령어라 하고 이들의 집합을 명령어 집합이라 한다. • 명령어 주기(Instruction Cycle) • CPU의 명령어 실행에 요구되는 과정

  8. 명령어 집합 • 인출주기(Fetch Cycle) • 메인 메모리에서 명령어 집합을 읽어 명령 레지스터에 저장하기까지의 단계 • 실행주기(Execution Cycle) • 명령 레지스터의 명령어를 해석, 실제로 명령을 처리하는 단계

  9. 동작코드 피연산자(#1) 피연산자(#2) 명령어 형식 • 동작코드부분 : 명령어의 실행할 내용을 나타냄 • 주소부분 : 명령어 실행에 필요한 데이터의 저장 장소를 나타냄 =>동작코드는 CPU가 실제로 실행할 수 있는 연산들을 나 타내는 부분. *n비트 = 2ⁿ

  10. 명령어 동작 코드 동작코드 기 능 ADD 덧셈 SUB 뺄셈 곱셈 MUL DIV 나눗셈 기억장치로부터 레지스터로 데이터 적재 LD STO 기억장치에 데이터 저장

  11. 명령어 형식 • 0-주소 형식 • 데이터의 주소를 지정할 필요가 없고 연산자만 나타내면 된다. 스택 구조를 가진 컴퓨터에서 사용되는 명령 형식이다. • PUSH : 스택에 데이터를 하나씩 삽입하는 것. • POP : 스택의 top에 저장된 데이터를 삭제하는 것. =>수식 계산을 하기 위해서는 수식을 postfix형태로 바꾸어야 한다. Postfix : A B + ADD : (SP+1)←(SP)+(SP+1) (스택 주소 지정 생략)

  12. ADD Y 동작코드 피연산자 명령어 형식 • 1- 주소 명령어 형식 • 누산기(Accumulator)에서 사용되는 명령어 구조. • 하나의 입력 데이터의 주소를 생략 할 수 있다. • 연산 결과도 항상 누산기에 기억하도록 하여 연산결과의 주소를 지정할 필요가 없다. ADD Y : X ← X + Y

  13. X Y ADD 동작코드(OP) 피연산자(#1) 피연산자(#2) 명령어 형식 • 2-주소 명령어 형식 • 연산 후에 입력 데이터를 저장할 필요가 없고 연산 결과를 두개의 입력 데이터가 기억되어 있던 장소 중에 하나에 기억시킬 수 있다. • 장점 : 3주소 명령에 비해 명령어의 길이가 짧고, 계산 결과가 기억장치에 기억되고 중앙처리장치에도 남아 있어서 계산 결과를 시험할 필요가 있을 때 시간이 절약된다. • 단점 : 연산의 결과는 주로 Operand 1에 저장되므로 Operand 1에 있던 원래의 자료가 파괴된다. 전체 프로그램의 길이가 길어진다. ADD Y, X : Y ←X + Y(X,Y 2-주소지정)

  14. X Y Z ADD 동작 코드(OP) 피연산자(#1) 피연산자(#2) 피연산자(#3) 명령어 형식 • 3-주소 명령어 형식 • 컴퓨터의 연산에 필요한 두 피연산자와 결과의 저장 장소가 모두 상이할 경우 별도의 3-주소를 모두 명령어에서 지정하는 형식. • 장점: 연산 결과를 따로 저장하는 곳이 있기 때문에 연산후에도 입력 자료가 변하지 않고 보존되며 프로그램 크기가 줄어든다. • 단점: 최소한 4번 이상 메모리에 접근을 해야 하며 기억장치의 대역폭(Bandwidth)이 감소되며 명령어 처리 속도가 느리고 프로그램 작성이 불편하다.

  15. 명령어 종류 • 데이터 전송 명령어: 내용의 변경 없이 한 장소에서 다른 장소로 데이터를 옮기기만 하는 명령. 기억 및 입출력 기능을 갖고 있다. Load, Store, Move명령, Exchange, Input, Output, Push, Pop의 명령이 있다. • 데이터 처리 명령어: 모든 컴퓨터 동작의 주체로 연산 기능을 가지며 4칙 연산 및 증감, 산술 명령과 논리연산 및 비트처리 명령, 시프트 명령이 있다. • 프로그램 제어 명령어: 프로그램 카운터의 값을 변경할 수 있는 제어 기능을 가진다. Skip명령, 서브루틴명령, 비교명령, 테스트 명령이 있다.

  16. 명령어 주소 지정 방식 • 명령어 주소 지정 방식은 피연산자가 저장된 장소의 주소를 지정하는 방법에 따라 여러 경우로 나뉜다. • 명령어 주소 지정방식을 사용하는 이유 • 포인터, 카운터 인덱싱, 프로그램 재배치 등의 편리함을 사용자에게 제공함으로써 프로그래밍을 하는데 도움을 준다 • 명령어의 주소 부분의 비트를 줄일 수 있다. • 다양한 주소 지정 기법을 사용하여 숙련된 프로그래머는 명령어의 개수나 수행 시간을 절약하여 효율적인 프로그램 작성이 가능하다.

  17. 즉시주소 지정 방식 • 주소 지정 방식 중에서 가장 간단한 형태의 하나로 오퍼랜드는 실질적으로 명령어 내에 포함하고 있다. 상수로 취급하면서 변수의 초기 값을 설정하는 경우에 이용할 수 있다. • 장점 : 오퍼랜드를 위해 추가로 기억장치를 접근할 필요가 없어 기억 사이클 하나를 줄일 수 있다. • 단점 : 주소 필드 내에 피연산자를 두기 때문에 워드 길이에 비해 그 크기가 작아서 데이터를 표현할 길이가 짧다. ADD n : X ← X+n 동작 코드 실제 데이터

  18. 직접 주소 지정 방식 • 피연산자 내의 주소가 실제 데이터의 주소(물리주소)로 직접 매핑이 이루어진다. • 장점 : 기억장치 상의 주소와 프로그램 상의주소가 일치해야 해서 간결하다 • 단점 : 융통성이 부족하다. operand Memory OP code Address (nn) 1st 실제 데이터 500 if nn = 100

  19. 간접 주소 지정 방식 • 직접 주소 방식의 문제점을 해결한 것으로 주소 필드가 기억장치의 한 워드를 가리키도록 하고 그 워드의 내용이 피연산자의 주소가 되도록 하면 워드 크기만큼의 주소 필드를 갖는 효과가 있다. • 2번에 걸쳐 메모리를 참조하는 특징이 있다. operand Memory I OP code Address (nn) I=0 : 직접주소방식 I=1 : 간접주소방식 1st if nn = (mm) → 500 실제데이터(700)

  20. 간접 주소 지정 방식 • 장점 : 메모리를 임의로 사용한다거나 프로그램상의 융통성을 발휘할 수 있다. • 단점 : 명령어를 수행하기 위해서 피연산자를 인출하는데 두번 기억장치를 참조해야 되는 레벨 2가 필요하다.

  21. 레지스터 주소 지정방식 • CPU 내의 레지스터가 명령어에 따라 지정되는 방식. • 특징 : 해당 레지스터에 실제 데이터가 기억되어 있으므로 직접 주소 지정 방식과 유사하나 주소 필드가 참조하는 것은 기억장치가 아니라 레지스터라는 점이 차이점이다. • 장점 : 기억장치를 참조할 필요가 없고 레지스터의 접근 시간이 빠르다. 메모리를 절약할 수 있다. • 단점 : 메모리워드는 다른 주소 지정방식에 비해 훨씬 줄어들지만 주소 지정이 가능한 공간이 적다는 것이다. Register OP code Address R 실제 데이터

  22. 레지스터 간접 주소 지정 방식 • 피연산자가 레지스터를 지정하고 다시 그 레지스터의 값이 실제 데이터가 저장되어 있는 기억장소. • 장점 : 데이터가 표 형식으로 연속된 경우에는 편리하다. • 단점 : 데이터가 불규칙한 불연속인 경우에는 매우 불편하다는 것이다. Memory OP code (RR) 주소 700 500 nn nn 실제 데이터(1500) 700

  23. 상대 주소지정방식 유효주소(Effective Address) =PC+명령어 주소 Ex)PC=845, 명령어 주소=24 인출주기 동안 845의 명령어가 읽혀짐->PC=846 ->유효주소=846+24=840 =>읽어온 명령을 수행하는데 실제자료는 840번지에 저장되어 있음

  24. 인덱스 레지스터 주소지정방식 유효주소(Effective Address) =인덱스 레지스터+명령어주소 =>명령어 주소=데이터 배 열의 시작 주소 =>인덱스 레지스터=유효주 소로부터 상대적인 위치

  25. 베이스 레지스터 주소지정방식 유효주소(Effective Address) =베이스 레지스터+명령어주소 =>명령어 주소=베이스 레지스터 로부터 상대적인 위치 =>베이스 레지스터=베이스 주소

  26. 배열 사용 예 • 베이스 레지스터+인덱스 레지스터 • =>배열처럼 사용 가능->메모리 참조 • =>인덱스 레지스터: 배열의 첨자, 베이스 레지스터: 처음주소

  27. 스택 주소지정방식 -SP(스택의 가장 맨 위의 주소) -PUSH연산 Data를 삽입-> SP++ -POP연산 Data를 삭제 ->SP-- =>주소를 따로 명시할 필요X (0-주소 명령어)

  28. 데이터 주소지정방식 -완전 주소 정보가 데이터이거나 주소이거나 구별 없이 기억된 장소 ->직접 매핑(mapping) 시킬 수 있는 주소 -약식주소 주소의 일부분을 생략 -생략주소 주소를 구체적으로 나타내지 않아도 원하는 정보가 기억 된곳을 알 수 있는 경우에 사용->명령어 길이 단축 ex)누산기 하나인 경우에 따로 지정할 필요없음

  29. 레지스터(Register) -의미:CPU내에서 자료를 1bit(1 또는 0)으로 보관하는 가장 빠른 기억장치 =>한 순간이라도 기억 못 하면 데이터 손실 =>CPU가 명령을 이해하고 명령에 필요한 변수를 읽고 저장공간의 주소를 알기 위해 필요 =>연산속도향상(연산결과를 주 기억 장치가 아닌 레지스터에 저장 하므로)

  30. 레지스터의 구성 =명령어 레지스터(Operand Register)+데이터 레지스터(Data Register)

  31. 레지스터의 종류=>CPU는 레지스터의 집합체

  32. 범용 레지스터(General Purpose Register) -의미 : 데이터와 주소를 모두 저장 1)AX레지스터(Accumulator) 주로 곱셈, 나눗셈,자료의 입출력 2)BX레지스터(Base) 주로 포인터의 역할 3)CX레지스터(Count) 주로 반복 문에서 카운터 역할 4)DX레지스터(Data) 주로 곱셈, 나눗셈에서 큰수표현 *EAX(32bit)

  33. 포인터 레지스터(Pointer Register) -의미:특정주소를 가리키는 레지스터 -IP(Instruction Pointer, PC(Program Counter)) 수행할 다음 명령어가 저장되어있는 주소를 가리킴 =>흐름제어 명령, 인터럽트, 예외 등을 통하여 암시적으로 제어 됨(직접 접근 불가) =>CPU는 프로그램카운터값을 읽어 메모리에서 명령어 실행 =>하나의 명령을 처리 후 자동으로 그 명령어길이(워드 개수) 만큼 IP를 증가 시킴(IP++)

  34. 명령어 레지스터(Instruction Register) -의미: 현재 실행 중인 명령어를 저장하는 레지스터 =>프로그램 카운터가 지정하고 있는 주 기억 장치의 주소에 있는 명령어를 명령어 레지스터로 옮김 -> 명령어 해독기가 명령어 레지스터에 있는 명령어 해독 *명령 해독기(Instruction Decoder):현재 수행해야 할 명령을 해독한 후 가능한 여러 가지 제어 신호를 발생 =>OP: 연산, 분기 등을 저장, operand: 주소 값 *명령어

  35. 분기문에서 프로그램 카운터 변동 *소스 =>IP가 주소 004 를 지정-> 비교 후 ->006를 지정(+2 증가)

  36. 메모리 버퍼 레지스터 -메모리버퍼 레지스터(MBR:Memory Buffer Register) 메모리 주소 레지스터(MAR)를 저장 *메모리주소 레지스터(MAR:Memory Address Register) 실행에 필요한 프로그램, 데이터가 저장되어 있는 주기억 장치주소(유효 메모리 번지: Effective Memory Address) 를 저장 => 실질적으로 CPU가 주기억장치주소를 참조하는 레지스터

  37. Memory와 data 교환

  38. Memory와 data 교환 -Fetch 1.명령어가 주기억장치에 로드 2.PC가 가리키는 메모리 주소가 IR에 저장->PC1증가 -decode 3.명령해독기(Instruction decoder)가 해독가능한 신호로 바꿔줌 -execute 4. 참조할 data들은 MAR에 저장되어있어, CPU가 MAR를 참조함 5.ALU가 산술연산을 하며, 그 중간결과를 register(ACC: Accumulator)에저장또는 register(ACC: Accumulator) 로부터 data를 읽어옴.

  39. 인덱스 레지스터(Index Register) -의미: 여러 개의 메모리 블록 이동, 한꺼번에 지정 ->자료를 빠르게 찾을 수 있음. -SI(Source Index): Data의 시작지 -DI(Destination Index): Data의 목적지 =>두 레지스터의 주소를 설정->메모리 이동, 복사명령-> Data이동, 복사 가능 *인덱스 레지스터

  40. 세그먼트 레지스터(Segment Register) Segment: 프로그램의 크기가 주기억장치보다 클 때 프로그램을 한 묶음으로 쪼갠 영역(64KB) =>이 레지스터에 서로 다른 세그먼트들이 겹치지 않기 위해 시작주소들을 보관 -Code Segment: 프로그램의명령어가 시작되는 곳(IP) -Data Segment: Data 저장영역의 시작주소(BP) -Stack Segment: 스택 영역의 시작주소(SP) -Extra Segment: 추가로 사용되는 데이터 영역 주소

  41. 스택 레지스터(Stack Register) -의미: 스택 및 데이터 메모리를 관리하는 레지스터 -SP(Stack Pointer) 스택의 최상위 주소를 저장=>POP, PUSH연산에 의해 증감=> 한 프로그램 안에서 수시로 변동 -BP(Base Pointer) 주소를 간접지정 하는데 사용=>ex)배열크기=50, BP가 주소500를 지정->주소 500~549 으로 값 지정

  42. 상태 레지스터(Flag Register) -의미:연산의 상태를 저장하고 있는 레지스터 =>7-부호 플래그(Sign Flag):산술 연산의 결과에 대한 부 호(음수->1) 3-제로 플래그(Zero Flag):연산의 결과가 0의 여부(0->1) B-오버 플래그(Over Flag):기억장소의 표현범위 초과 여 부(초과->1) 0-캐리 플래그(Carry Flag):연산 후 자리올림, 자리내림 여부(자리올림,내림->1) …등등

  43. 적용 예 Ex) x<y(비교->뺄셈) x-y>0(x가 더 큼) x-y=0(같은 수) x-y<0(y가 더 큼) =>비교연산 결과를 레지스터의 세 비트로 저장 =>플래그 레지스터 값 참조->비교연산 실행

More Related