CPU
CPU의 연산
- CPU의 실행 사이클
-
Fetch → Decode → Execute → Writeback

실행 사이클
-
Fetch (호출) : PC(Program Counter)가 가리키는 명령어를 IR로 전달
- PC에 저장된 메모리 주소(다음 실행할 명령어의 주소)를 MAR로 전달
- MAR을 토대로 메모리에서 해당 주소의 명령어를 찾아 MBR에 저장
- MBR에 저장된 명령어를 IR로 전달

Fetch 사이클 및 레지스터 동작 과정
-
Decode (해석) : 명령어를 해석
-
Execute (실행) : 해석된 명령어에 따라 연산을 수행
-
Writeback (쓰기) : 명령어대로 처리된 결과를 메모리에 기록

CPU의 전체 사이클
32비트 CPU의 한계
- 비트 수는 CPU 레지스터의 크기를 의미
- CPU는 레지스터에 저장된 명령을 처리
- 레지스터가 32비트라는 것은 CPU가 한 사이클에서 최대로 처리할 수 있는 크기도 32비트
- 32비트 CPU에서 메모리의 최대 크기는 4GB
- CPU에서 메모리 주소는 레지스터(PC, MAR)에 저장
- 32비트에서 표현 가능한 범위는 0 ~ 2^32 (약 40억) 까지다.
- 메모리 주소 당 메모리의 크기는 1Byte로 최대 메모리 크기는 2^32 * 1Byte = 4GB

32비트 vs 64비트 메모리 주소 공간의 차이
- Y38K 문제
- 32비트 시스템상에서 발생할 수 있는 시간 관련 버그
- Unix 시간을 사용하는 시스템에서 발생
- Unix 시간 기준일 : 1970년 1월 1일 (이유는 따로 없다고 함)
- 32비트의 경우 2038년 1월 19일 03시 14분 07초까지 표현 가능
- 초과 시, 음수가 되어 1901년 12월 13일이 될 가능성이 존재
Unix Epoch Clock
Unix Epoch Clock
메모리 관리
- 메모리란 CPU가 프로그램을 처리하기 위해 일시적으로 정보를 저장하고 접근하는 장치
- 현재 실행중인 프로그램(프로세스)을 보조기억장치(하드디스크)에서 읽어와 메모리에 로드