컴퓨터 구조 11 : 메모리 계층 구조

728x90

메모리 계층 구조

 

메모리 시스템의 이해

 

1) 지역성의 원칙

컴퓨터 역사에 관한 리포트를 쓰기 위해 도서관에 왔다. 컴퓨터 분야 책 몇 권을 내 자리로 들고 온다. 책상 위에 책을 쌓아놓고 수시로 그 책을 참고한다. 책상에 책이 몇 권 없지만 빠르게 참고할 수 있다.

이때 책상의 역할은 컴퓨터의 메인 메모리, 혹은 캐시 메모리의 역할과 같다.

 

이처럼 프로그램이 어떤 특정 시간에 메모리 공간의 비교적 작은 부분에만 접근하는 것을 지역성의 원칙이라고 한다.

 

2) 시간적 지역성

한 번 쓰인 것은 또 쓰일 가능성이 높다. 내가 어떤 정보를 찾기 위해 책들을 책상으로 가져왔다면, 곧 그 책을 다시 보게 될 가능성이 크다.

 

3) 공간적 지역성

어떤 항목이 참조되면 그 근처의 항목들이 곧바로 참조될 가능성이 높다. 가져온 책들이 있다면, 그 책의 주변에 있는 비슷한 주제의 책을 참조할 가능성이 높아진다.

 

 

다음은 C에서 사용되는 반복문의 예시이다.

int sum = 0;
int arr[100] = {1, 2, 3, ... 100}
for (int i=0; i<100; i++)
{
    sum = sum + arr[i];
}

1 : 정수형 변수 sum을 0으로 초기화한다.

2 : 정수형 i의 값이 0~99번까지 총 100번 증가하는 동안 sum과 arr배열의 i번째 주소에 있는 값의 합을 sum에 바인딩시킨다.

바인딩 : 변수에서 바인딩이란 변수를 구성하는 식별자(이름), 자료형 속성, 하나 이상의 주소, 자료 값에 구체적인 값으로 확정하는 것을 말한다. '어떤 자료형의 어떤 값을 어떤 변수에 할당한다'와 같은 말.

 

변수 i와 sum은 루프를 돌 때마다 반복적으로 접근된다. 따라서 CPU는 이 두 변수의 주소에 빠르게 접근할 수 있도록 가까운 곳에 두어 시간적 지역성을 이용할 수 있다.

 

루프를 돌 때마다 arr[0], arr[1], arr[2]... 이런 식으로 배열의 각 요소에 순차적으로 한 번씩 접근하게 된다.

따라서 CPU는 이 배열의 시작점이 저장된 주소와 그 주변의 주소들을 가까운 곳에 가져오는 방법으로 공간적 지역성을 이용해야 할 것이다.

 


메모리 종류

주 기억장치 : 마더보드에 장착되는 기억장치. ROM, RAM

보조 기억장치 : 저속, 대용량 장치. 필요시 주 기억장치로 데이터가 옮겨짐. USB, SD-CARD, 자기 디스크 등

캐시 메모리 : CPU 등에 배치되는 저장 장치. 프로그램 일부나 사용 빈도가 높은 데이터를 저장(SRAM으로 구성)

 

 

주 기억장치

컴퓨터가 동작하는 동안 데이터와 프로그램을 저장하고 있는 메모리.

 

RAM(Random Access Memory) : 읽고 쓰기 가능. 변경될 가능성이 있는 프로그램과 데이터를 저장.

1 : SRAM(Static RAM : 정적 램, Cache라고도 함)

전원이 연결되어 있는 동안만 정보가 유지.(휘발성) 플립플롭으로 구성됨.

2 : DRAM(Dynamic RAM : 동적 램)

주기적으로 재충전해줘야 정보가 유지됨.

전력 소비가 적고 하나의 칩으로 대량의 정보 저장 가능.

 

ROM(Read Only Memory) : 읽기만 가능. 불변 상수, 표 등을 저장.

부트스트랩 로더라는 초기화 프로그램이 저장되어 있어 전원이 켜졌을 때 운영체제 일부분을 디스크에서 주기억 장치로 적재하고 제어를 운영체제로 옮겨줌.

전원 On/Off와 무관하게 데이터 유지.(비휘발성)

 

 

메모리 계층

컴퓨터 메모리 설계의 3가지 목표는 대용량, 빠른 속도, 저렴한 가격이다. 

세 가지를 모두 충족하는 메모리는 경제적으로나 현실적으로나 구현하기가 어렵다. 속도가 빠를수록 단위 비트당 생산 가격이 높아지기 때문이다. 또한 용량이 커질수록 메모리를 읽는 속도가 느려지게 된다. 

 

따라서 지역성을 활용해 메모리를 계층적으로 구현하면 이 세 가지 목표를 효율적으로 달성할 수 있다.

 

한번에 퍼올리는 데이터 단위를 블록 혹은 라인이라고 한다. 이 주소들은 캐시에 저장된다.

상위 계층에 있는 데이터는 하위 계층에 있는 데이터의 일부를 복사해서 적재한 것이므로, 상위 계층에 있는 데이터는 반드시 하위 계층에도 존재하며, 하위 계층에 없는 데이터가 상위 계층에 존재할 수는 없다.

 

CPU는 시간적 지역성을 이용하기 위해 가장 최근에 접근한 데이터를 CPU 가까이 적재하는데, 이때 그 주변에 있는 데이터까지 한 번에 적재함으로써 공간적, 지역성까지 충족하도록 한다.

이렇게 함으로써 접근 횟수 대비 캐시의 적중률을 100%에 가깝게 향상할 수 있다.

728x90