CPU(중앙 처리 장치)란?
CPU(central processing unit)는 마이크로프로세서(Microprocessor)라고도 불리며,
컴퓨터의 모든 연산과 작업을 처리하는 장치로 수학적 계산(산술 연산), 논리 연산, 데이터 이동, 프로그램 실행, 데이터 읽기, 외부 장치(키보드, 마우스 등)와의 상호작용, 네트워크 통신을 처리하는 역할을 수행 합니다.
=> 사람으로 따지면 '두뇌'의 역할
CPU의 구성과 역할
CPU는 제어장치, 연산 장치, 레지스터로 구성되며,
각 구성장치들이 버스들로 연결 돼 있습니다.
1) 제어장치(Control Unit)
제어장치는 '명령어 장치'라고도 불리며,
제어장치는 컴퓨터에 있는 모든 장치들의 동작을 지시 제어하는 장치 입니다.
구성 장치 | |
명령 레지스터(IR : Instruction Register) | 현재 실행중인 명령의 내용을 기억 |
부호기(Encoder) | 명령해독기에서 전송된 명령어를 제어에 필요한 신호로 변환 |
명령해독기(ID) | 명령 레지스터에 있는 명령어 해석 및 부호기로 전달 |
번지해독기(AD) | 명령 레지스터에서 온 번지(주소) 해석 |
주요 기능으로는
- CPU에 접속된 장치들에 대한 데이터 이동 순서를 조정
- 명령어 해독
- CPU 내 데이터 흐름 제어
- 외부 명령을 받아 일련의 제어 신호를 생성
- CPU에 포함된 많은 실행 장치(연산장치, 레지스터, 데이터 버퍼)를 제어
- 명령어 인출(fetch) → 명령어 해독 단계(Decode) → 실행 단계(Execute) → 저장 단계(Store) 순으로 맞게 처리
역할을 수행 합니다.
2) 연산장치(ALU : Arithmetic & Login Unit)
연산 장치에 들어가기 앞 서 2진수 표 보고 가기!!
왼쪽 제일 앞이 1이면 음수(2진수 2의 보수)!! 0이면 양수(2진수)!!
제어장치의 명령에 따라 실제로 연산을 수행하는 장치 입니다.
구성 장치 | |
가산기(Adder) | 2진수 덧셈을 수행 |
보수기(Complementor) | 뺄셈을 덧셈으로 변환하는 역할 ex) A(2진수) - B(2진수)을 A + (-B)으로 변환 B : 0000 0101(5)의 보수 과정 : 비트 반전(1의 보수라 부름) B : 0000 0101(5) → 비트 반전(1의 보수) 결과 : 1111 1010 비트 반전(1의 보수) 결과에 비트 1 더하기(2의 보수) 비트 반전(1의 보수) 결과 : 1111 1010 → 1111 1011(-5) 사용 이유 : 가산기 하나만으로 덧셈, 뺄셈을 모두 처리 가능 |
누산기(ACCumulator) | 가산기의 연산 결과를 누적하는 역할 수행 ex) A(2진수) + B(2진수)의 결과를 누산기에 저장, C(2진수)를 더하고 싶다면, 누산기 + C(2진수)로 사용 사용 이유 : 데이터를 메모리에서 반복적으로 읽어오는 작업을 줄여 연산 속도를 높입니다. |
데이터 레지스터(Data Register) | 연산에 필요한 데이터를 임시로 저장하는 역할 사용 이유 : A + B + C를 수행하기 위해 A + B 수행 중 메모리에서 C를 읽어오기는 시간이 걸린다. 따라서, C를 데이터 레지스터에 임시로 저장하여 메모리 접근 시간을 단축해 빠른 연산 수행한다. |
주요 기능으로는
- 산술연산(+, -, x, /)/논리연산(AND, OR, NOT)/관계연산(=, >, <)/비트 연산의 Shift 연산
( >> (오른쪽 시프트 연산), << (왼쪽 시프트 연산))등이 있습니다. - 오버플로우 검출 : 부호 비트(왼쪽 제일 앞 비트 0이면 양수, 1이면 음수)와 결과 비트를 비교하여 감지
(위의 표를 참고해서 확인해주세요^^)
ex)
4비트 부호 있는 정수에서 7 + 3을 수행할 경우 | 4비트 부호 있는 정수에서 (-5) + (-6)을 수행할 경우 |
7 : 0111(7의 2진수) 3 : 0011(3의 2진수) 0111 + 0011 -------------- 1010 (-6, 오버플로우 발생) |
-5 : 1011(-5의 2진수) -6 : 1010(-6의 2진수) 1011 + 1010 -------------- 0101 (5, 오버플로우 발생) |
역할을 수행 합니다.
3) 레지스터(Register)
CPU내부에서 처리할 명령어나 연산의 중간 결과값을 임시적으로 기억하는 임시기억장소
구성 장치 | |
프로그램 카운터, 프로그램 계수기(Program Counter | 다음 번에 실행할 명령어 번지를 기억 |
명령 레지스터(IR : Instruction Register) | 위의 제어장치에서 보기!! |
누산기(AC : Accumulator) | 위의 연산 장치에서 보기!! |
상태 레지스터(Status Register) / PSWR(Program Status Word Register) / 플래그 레지스터(Flag Register) |
제어장치와 연산장치의 실행 순서를 제어하기 위해 사용되는 레지스터 시스템 내부의 순간 순간의 상태가 기록된 정보를 PSW라 한다. |
메모리 주소 레지스터(MAR : Memory Address Register) | 기억장치를 출입하는 데이터의 번지를 기억 |
메모리 버퍼 레지스터(MBR : Memory Buffer Register) | 기억장치를 출입하는 데이터가 잠시 기억되는 레지스터 |
인덱스 레지스터(Index Register) | 주소의 변경, 서브루틴 연결 및 프로그램에서의 반복 연산의 횟수를 세는 레지스터 |
데이터 레지스터(Data Register) | 위의 연산 장치에서 보기!! |
Shift Register | 클럭 펄스(Clock Pulse)에 의해서 기억된 내용을 왼쪽/오른쪽으로 1Bit씩 자리를 이동시키는 레지스터 클럭 펄스 : 컴퓨터 내부의 각 장치와 회로의 동작을 일정하게 유지시키기 위해 규칙적으로 발생하는 전기적 신호 |
주요 기능으로는
- 메모리중에서 가장 속도가 빠르며, 새로운 데이터가 전송될 시 기존 내용은 지워지고 새로운 내용만 기억된다.
- 레지스터는 연산속도 향상을 위해 사용된다.
'컴퓨터 사이언스' 카테고리의 다른 글
문맥 교환(Context Switching) (0) | 2024.11.03 |
---|---|
프로세스와 스레드 (0) | 2024.11.03 |
메모리 (2) | 2024.10.07 |