메모리 계층 구조?
컴퓨터 시스템에서 데이터 저장과 접근을 최적화하기 위해 설계된 구조
메모리 계층 구조를 사용하는 이유
컴퓨터 시스템의 성능과 효율성을 최적화하기 위함
- 성능 최적화: CPU가 필요한 데이터에 빠르게 접근할 수 있도록 함
- 비용 효율성: 고가의 고속 메모리와 저가의 대용량 메모리를 적절히 조합함
- 데이터 관리 효율화: 자주 사용되는 데이터를 빠른 메모리에 저장하여 전체 시스템의 효율을 높임
레지스터
CPU 내부에서 데이터를 직접 처리하는 가장 빠른 메모리
- 현재 실행중인 명령어
- 명령어 레지스터(IR)가 처리하며 “LOAD A, 100”과 같은 현재 실행중인 명령어를 저장
- 연산에 필요한 임시 데이터
- 메모리 주소
- 프로그램 카운터
- 다음에 실행할 명령어의 주소 저장
캐시
CPU와 주 메모리 사이의 속도 차이를 줄이는 고속 버퍼
- L1 캐시
- 자주 사용되는 변수 값 저장
- 명령어 캐시와 데이터 캐시로 분리되어 있음
- L2 캐시
- 작은 배열이나 자주 호출되는 함수의 코드 저장
- L3 캐시
- 더 큰 데이터 구조나 프로그램의 핫스팟 코드 저장
- 핫스팟 코드?
- 자주 실행되는 함수나 메서드
- 반복문이 많은 알고리즘 코드
- 자주 호출되는 라이브러리 함수
- 핫스팟 코드?
- 더 큰 데이터 구조나 프로그램의 핫스팟 코드 저장
캐시의 데이터는 다음과 같이 관리됨
- 지역성 원리 활용
- 시간적 지역성
- 최근에 접근한 데이터는 가까운 미래에 다시 접근할 가능성이 높음
- 공간적 지역성
- 특정 데이터 주변의 데이터도 곧 접근할 가능성이 높음
- 시간적 지역성
- 캐시 교체 정책
- LRU (Least Recently Used)
- 가장 오래전에 사용된 데이터를 먼저 제거
- LFU (Least Frequently Used)
- 사용 빈도가 가장 낮은 데이터를 먼저 제거
- FIFO (First In First Out)
- 가장 먼저 들어온 데이터를 먼저 제거
- LRU (Least Recently Used)
- 프리페칭(prefetching)
- 예측 알고리즘을 사용하여 앞으로 필요할 것 같은 데이터를 미리 캐시에 로드
주 기억장치
현재 실행중인 프로그램과 데이터를 저장
- 현재 실행 중인 프로그램의 코드
- 프로그램에서 사용하는 변수와 데이터 구조
- 운영체제의 일부 구성 요소
보조 기억장치
- 설치된 프로그램 파일
- 문서, 이미지, 비디오 등의 사용자 데이터
- 운영체제 파일
- 가상 메모리용 페이징 파일
CPU가 데이터를 처리하는 과정
- 명령어 가져오기
- L1I$ → L2 → L3 → 메모리 순으로 접근하며 실행할 명령어 탐색
- 명령어 해독
- CPU 내부의 명령어 레지스터에 로드되며 명령어를 해독하여 어떤 연산을 수행해야하는지 파악
- 데이터 가져오기
- L1D$ → L2 → L3 메모리 순으로 접근하며 명령어 실행에 필요한 데이터 탐색
- 연산 수행
- 필요한 데이터를 CPU 내부의 레지스터에 로드
- CPU의 산술 논리 장치(ALU)에서 실제 연산을 수행
- 결과 저장
- 연산 결과가 다시 레지스터에 저장 (필요에 따라 캐시나 메모리에 기록)
결과적으로, 메모리 계층 구조와 CPU의 데이터 처리 과정은 상호 보완적으로 작용하여 컴퓨터 시스템의 전반적인 성능과 효율성을 최적화하는 데 중요한 역할을 수행함
'Computer Science > Operating System' 카테고리의 다른 글
캐시매핑 (0) | 2024.10.31 |
---|---|
캐시히트와 캐시미스 (0) | 2024.10.30 |
PCB와 Context Switching (2) | 2024.10.23 |
컨텍스트 스위칭(context switching) (0) | 2024.09.20 |
프로세스와 스레드 (0) | 2024.09.19 |