CPU
CPU는 메모리에 저장된 명령어를 읽고 해석하고 실행하는 장치입니다.
CPU 내부는 계산을 담당하는 ALU, 명령어를 읽고 해석하는 제어장치, 임시 저장 장치인 레지스터라는 요소로 구성되어있습니다.
각 구성요소에 대해 차근차근 살펴보도록 하겠습니다.
ALU
ALU는 계산을 하기 위한 부품입니다. 계산을 하기 이해서는 피연산자와 수행할 연산이 필요합니다.
1 + 3 을 예로 들면 1과 3같은 피연산자와 +와 같은 연산이 필요한 것이죠
ALU는 피연산자를 레지스터를 통해 받아들입니다. 또한 제어 장치로 부터 받아들인 제어 신호로 수행할 연산을 받습니다.
ALU는 이렇게 받은 정보를 바탕으로 산술 및 논리 연산과 같이 다양한 연산을 수행합니다.
ALU는 계산한 결과값을 곧바로 메모리에 저장하지 않습니다. CPU가 메모리에 접근하는 속도는 레지스터에 접근하는
속도보다 훨씬 느리기 때문에 효율성을 위해 레지스터에 우선적으로 결과값을 저장하게 됩니다.
ALU는 결과값 말고도 플래그라는 것을 내보냅니다. 플래그는 연산 결과에 대한 추가적인 정보라고 생각하시면됩니다.
플래그는 아래와 같이 다양한 종류가 있습니다.
< 플래그 종류 >
1. 부호 플래그 - 연산한 결과의 부호를 나타냅니다.
2. 제로 플래그 - 연산결과가 0인지 아닌지를 나타냅니다.
3. 캐리 플래그 - 연산 결과 올림수나 빌림수가 발생했는지 나타냅니다.
4. 오버플로우 플래그 - 오버플로우가 발생했는지 나타냅니다.
5. 인터럽트 플래그 = 인터럽트가 가능한지를 나타냅니다.
6. 슈퍼바이저 플래그 - 커널모드로 실행중인지 사용자 모드로 실행중인지를 나타냅니다.
연산한 결과값은 위에서 언급했듯이 레지스터에 저장된다고 했습니다. 이러한 플래그 정보들은 플래그 레지스터에 저장됩니다.
제어장치
제어장치는 제어신호를 내보내고 명령어를 해석하는 부품입니다. 제어장치가 받아들이는 정보는 다음과 같습니다.
1. 클럭신호를 받아들입니다. ( 클럭이란? 컴퓨터가 움직일 수 있게 하는 일정한 시간 단위를 뜻합니다. )
2. 해석해야할 명령어를 받아들입니다.
3. 플래그 레지스터 속 플래그 값을 받아들입니다.
4. 시스텀 버스 중에서 제어 버스로 전달된 신호를 받아들입니다.
제어 장치가 내보내는 정보는 다음과 같습니다.
1. CPU 내부로 전달하는 제어 신호 - ALU, 레지스터에 전달
2. CPU 외부로 전달하는 제어 신호 - 제어 버스를 통해 메모리 또는 입출력 장치에 제어신호를 전달
레지스터
프로그램 속 명령어와 데이터는 실행 전후로 반드시 레지스터에 저장됩니다.
레지스터는 다양한 종류가 있습니다. 그 중 중요한 레지스터는 다음과 같습니다.
1. 프로그램 카운터 - 메모리에서 가져올 명령어의 주소
2. 명령어 레지스터 - 명령어를 저장하는 레지스터,
3. 메모리 주소 레지스터 - 메모리의 주소를 저장하는 레지스터
4. 메모리 버퍼 레지스터 - 메모리와 주고 받을 값을 저장하는 레지스터
5. 범용 레지스터 - 다양하고 일반적인 상황에서 자유롭게 사용할 수 있는 레지스터
6. 플래그 레지스터 - 플래그 정보를 저장
이상으로 CPU의 구성요소에 대해 살펴보았습니다.
부족한 부분이나 잘못된 부분이 있으면 댓글로 알려주시면 감사하겠습니다!
긴글 읽어주셔서 감사합니다!
참고 도서
<혼자 공부하는 컴퓨터구조 + 운영체제 / 강민철 지음 / 한빛미디어 출판사>
'CS > 컴퓨터구조' 카테고리의 다른 글
RAID란? (0) | 2023.04.26 |
---|---|
플래시 메모리란? (0) | 2023.04.19 |
보조기억장치(하드디스크) 에 대하여 (0) | 2023.04.12 |
캐시 메모리 (0) | 2023.03.03 |
명령어 사이클과 인터럽트에 대하여 (0) | 2023.02.15 |