꼬물꼬물
CPU 작동 원리 본문
- 중앙처리장치: 프로그램 실행하며 컴퓨터의 모든 동작 제어
- 주기억장치: 프로그램과 데이터 저장
- 입출력장치: 외부세계와 데이터 전송 담당
- 시스템 버스: 구성요소 연결
CPU란? Central Processing Unit(중앙 처리 장치)
- 프로그램을 실행하기 위해 메인 메모리에서 명령어를 인출하여 해독하고 실행한다.
- 연산: 덧셈, 뺄셈, 곱셈 등의 산술 연산과 논리곱, 논리합, 부정 등의 논리 연산 수행
- 제어: 명렁어를 순서대로 실행할 수 있도록 제어
- 저장: 연산에 필요한 데이터, 결과, 명령어 주소 등을 임시로 저장
CPU 구조
레지스터(Register) / 제어장치(Control Unit) / 연산장치(Arithmetic Logit Unit)
- 레지스터
- CPU 내의 메모리로 명령어 주소, 코드, 데이터 등을 임시로 저장한다.
- 중앙처리장치 내부의 저장장치
- 제어장치
- 중앙처리장치 안에서 명령어 해독하고 제어신호 생성
- 연산장치(산술논리연산장치)
- 산술 및 논리 연산 수행
레지스터(Register)
프로그램 카운터(PC): 다음에 수행할 명령어의 주소 저장
명령어 레지스터(IR): 현재 실행 명령어 저장
메모리 주소 레지스터(MAR): 연산 수행에 필요한 데이터(주기억장치)의 주소 저장
메모리 버퍼 레지스터(MBR): 메모리에서 읽어온 데이터나 저장할 데이터를 보관하는 버퍼 레지스터 Mem[MAR] <- MBR
프로그램의 실행
컴퓨터는 인출 단계(fetch stage)와 실행단계(execute stage)를 반복한다
- 인출 단계: 주기억장치에서 명령어를 중앙처리장치로 가져온다
- 실행 단계: 중앙처리장치에서 명령어를 해독하고 실행한다.
1. CPU(중앙처리장치)
- 실행
- 인출단계: 중앙처리장치는 주기억장치에서 명령어 하나를 가져온다.
- 필요한 구성 요소: PC, IR
- 동작: IR ← Mem[PC], PC ← PC + [명령어의 길이]
- 실행 단계: PC와 IR에 저장되어 있는 명령어를 해독해 실행
- 필요한 구성 요소: 제어장치(CU), 레지스터, 연산기(ALU)
- 동작: 명령어마다 수행 동작이 다르다
- 인출단계: 중앙처리장치는 주기억장치에서 명령어 하나를 가져온다.
- 명령어 유형
- 데이터 전달: 레지스터, 주기억장치, 입출력장치
- 데이터 처리: 산술논리연산 수행
- 프로그램 제어: 명령어의 실행 순서 변경(pc값 변경)
1-1. 제어장치
- 기능
- 순서 제어: 명령어 사이클로 프로그램 진행
- 동작 제어: 명령어가 의도하는 동작이 실행되도록 제어신호 생성해 컴퓨터의 구성 요소 제어
1-2. 연산장치(연산기)
- 데이터 처리 명령어 담당
- 명령어를 해독하여 연산기가 수행할 연산을 선택하는 제어신호 생성
1-3. 레지스터
- 중앙처리장치의 내부 기억장치
- 프로세서 종류마다 레지스터의 수와 기능이 다르다.
- 종류
- 제어용 레지스터: cpu가 순서제어 용도로 사용 (pc, ic, 상태레지스터, mar, mbr)
- 명령어 실행용 레지스터: 어셈블리어 프로그래머가 직접 사용(data/address/범용 레지스터)
2. 주기억장치(Main Memory)
프로그램과 데이터를 저장하는 거대 1차원 배열
- 중앙처리장치가 기억장치 엑세스하는 방법
- 적재(load/읽기): REG <- Mem[주소]
- 저장(store/쓰기): Mem[주소] <- REG
- 단어(word)
- 중앙처리장치가 한번에 엑세스하는 데이터 크기
- 일반적으로 8의 배수
3. 입출력 장치(I/O device)
프로그램과 데이터를 공급하고 처리한 데이터를 외부로 출력
CPU 동작 과정
- 주기억장치가 입력장치에서 받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어옴 (인출)
- CPU는 프로그램을 실행을 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 주기억장치에 저장(실행)
- 주기억장치는 결과를 보조기억장치에 저장하거나 출력장치로 전송
- 제어장치는 위의 과정에서 명령어가 순서대로 실행되도록 각 장치 제어
명령어의 구성요소와 종류
- 명령어: 컴퓨터가 수행할 일을 어셈블리어 혹은 이진수 기계 코드로 표현한것
- 동작코드(operation code) + 오퍼랜드(operand/ 피연산자)
- 오퍼랜드 유형
- 즉치 데이터: 명령어에 유효 데이터 포함
- 레지스터 명: 레지스터의 값이 유효 데이터
- 기억장치 주소: 기억장치 해당 주소의 값이 유효 데이터
- 입풀력 포트: 입출력 포트의 값이 유효 데이터
- 명령어 집합
'코딩 > CS' 카테고리의 다른 글
필터(Filter)와 인터셉터(Interceptor) (0) | 2022.11.01 |
---|---|
페이지 교체 알고리즘 (0) | 2022.11.01 |
JDBC, SQL Mapper, ORM (0) | 2022.09.05 |
Day2 질문 (0) | 2022.04.25 |
HTTP/HTTPS (0) | 2022.04.25 |