My Boundary As Much As I Experienced

메모리 본문

Computer Basics

메모리

Bumang 2023. 10. 10. 04:35

CPU Register

레지스터는 컴퓨터에서 가장 빠른 메모리로 CPU 내부에 존재한다. 레지스터에 데이터를 읽고 쓰는 것은 0~1 CPU 사이클이 필요하므로 약 0ns ~ 0.25ns의 지연 시간(latency)이 생긴다.


레지스터의 크기는 CPU가 32비트냐 64비트냐에 따라 다른데 요즘엔 거의 64비트 CPU를 사용하므로 레지스터 하나는 8바이트이다.

 

캐시 메모리

주기억장치에 저장된 내용의 일부를 임시로 저장해두는 기억장치

CPU와 주기억장치의 속도 차이로 성능 저하를 방지하기 위한 방법

CPU가 이미 봤던걸 다시 재접근할 때, 메모리 참조 및 인출 과정에 대한 비용을 줄이기 위해 캐시에 저장해둔 데이터를 활용한다

캐시는 플리플롭 소자로 구성되어 SRAM으로 되어있어서 DRAM보다 빠른 장점을 지님


CPU와 기억장치의 상호작용

CPU에서 주소를 전달 → 캐시 기억장치에 명령이 존재하는지 확인

(존재) Hit

해당 명령어를 CPU로 전송 → 완료

(비존재) Miss

명령어를 갖고 주기억장치로 접근 → 해당 명령어를 가진 데이터 인출 → 해당 명령어 데이터를 캐시에 저장 → 해당 명령어를 CPU로 전송 → 완료

 

이처럼 캐시를 잘 활용한다면 비용을 많이 줄일 수 있음

따라서 CPU가 어떤 데이터를 원할지 어느정도 예측할 수 있어야 함

(캐시에 많이 활용되는 쓸모 있는 정보가 들어있어야 성능이 높아짐)

 

적중률을 극대화시키기 위해 사용되는 것이 바로 지역성의 원리

#지역성

기억 장치 내의 정보를 균일하게 액세스 하는 것이 아니라 한 순간에 특정부분을 집중적으로 참조하는 특성

 

지역성의 종류는 시간과 공간으로 나누어짐

시간 지역성 : 최근에 참조된 주소의 내용은 곧 다음에도 참조되는 특성

공간 지역성 : 실제 프로그램이 참조된 주소와 인접한 주소의 내용이 다시 참조되는 특성

 

 

 

메인 메모리(main memory)

메인 메모리는 CPU가 직접 접근할 수 있는 기억 장치

프로세스가 실행되려면 프로그램이 메모리에 올라와야 함

주소가 할당된 일련의 바이트들로 구성되어 있음

 

CPU는 레지스터가 지시하는대로 메모리에 접근하여 다음에 수행할 명령어를 가져옴

명령어 수행 시 메모리에 필요한 데이터가 없으면 해당 데이터를 우선 가져와야 함

이 역할을 하는 것이 바로 MMU.

 

MMU (Memory Management Unit, 메모리 관리 장치)

  • 논리 주소를 물리주소로 변환해 준다.
  • 메모리 보호나 캐시 관리 등 CPU가 메모리에 접근하는 것을 총 관리해주는 하드웨어임

 

메모리의 공간이 한정적이기 때문에, 사용자에게 더 많은 메모리를 제공하기 위해 '가상 주소'라는 개념이 등장 (가상 주소는 프로그램 상에서 사용자가 보는 주소 공간이라고 보면 됨)

이 가상 주소에서 실제 데이터가 담겨 있는 곳에 접근하기 위해선 빠른 주소 변환이 필요한데, 이를 MMU가 도와주는 것

즉, MMU의 역할은 다음과 같다고 말할 수 있다.

MMU가 지원되지 않으면, physical address를 직접 접근해야 하기 때문에 부담이 있다.

MMU는 사용자가 기억장소를 일일이 할당해야 하는 불편을 없애준다.

프로세스의 크기가 실제 메모리의 용량을 초과해도 실행될 수 있게 해준다.

 

또한 메인 메모리의 직접 접근은 비효율적이므로, CPU와 메인 메모리 속도를 맞추기 위해 캐시가 존재함

페이지 폴트가 발생했을 때, 페이지 교체 알고리즘을 실행시키는 부분이기도 하다.

 

 

보조기억장치 (Auxiliary Memory, Secondary Memory)

보조기억장치는 주기억장치보다는 느리지만 많은 양의 데이터를 전원이 꺼져도 사라지지 않고 영구적으로 보관할 수 있는 장치이다. 따라서 컴퓨터의 데이터를 저장하는 창고라고 불리며, 외부의 데이터를 이곳에 저장한다.

대표적으로 HDD와 SSD가 있음

'Computer Basics' 카테고리의 다른 글

함수형 프로그래밍이란?  (0) 2023.10.31
파일 시스템  (0) 2023.10.10
페이지 교체 알고리즘  (0) 2023.10.05
페이징 & 세그멘테이션  (0) 2023.10.05
세마포어(Semaphore) & 뮤텍스(Mutex)  (0) 2023.09.12