본문 바로가기
컴퓨터구조

컴퓨터구조 15주차

by mokhwasomssi 2021. 3. 28.

3/22 월 ~ 3/28 일 : 2시간

 

 

3/28 일 : 2시간


5장 메모리 계층구조

5.1 서론

 

컴퓨팅의 초창기부터 프로그래머들은 무제한의 크기를 갖는 빠른 메모리를 원해 왔다.

우리가 이 장에서 학습할 주제는 무제한의 빠른 메모리를 갖고 있는 듯한 환상을 만들어 프로그래머들을 돕고자 하는 것이다.

 

접근이 빠르고 용량이 큰 메모리는 없음.

 

접근이 빠르고 용량이 큰 메모리를 사용하는 듯한 환상 만들기.

접근이 빠르고 용량이 작은 메모리 + 접근이 느리고 용량이 큰 메모리

메모리 계층구조

 

프로그램이 동작하는 방법에는 지역성의 원칙(principle of locality)이 적용된다.

프로그램은 어떤 특정 시간에는 주소공간 내의 비교적 작은 부분에만 접근한다는 것이 지역성의 원칙이다. 

 

지역성에는 다음과 같이 두 가지 종류가 있다. 

 

시간적 지역성(temporal locality)

- 만약 어떤 항목이 참조되면, 곧바로 다시 참조되기가 쉽다. 

 

공간적 지역성(spatial locality)

- 어떤 항목이 참조되면 그 근처에 있는 다른 항목들이 곧바로 참조될 가능성이 높다. 


프로그램에서의 지역성은 단순하고도 자연스러운 프로그램 구조에서 나온다. 

 

예를 들어 대부분의 프로그램들이 순환문 구문을 갖고 있고

순환문은 명령어와 데이터에 반복적으로 접근하므로, 상당히 큰 시간적 지역성을 보여 준다. 

 

명령어들은 대개 순차적으로 접근되기 때문에 큰 공간적 지역성을 보여 준다. 

데이터 접근에도 자연스럽게 공간적 지역성이 나타난다.

예를 들어 배열이나 레코드의 요소들에 접근할 때는 대개 큰 공간적 지역성을 갖는다. 

 


컴퓨터 메모리를 메모리 계층구조(memory hierarchy)로 구현함으로써 지역성의 원칙을 이용할 수 있다. 

 

메모리 계층구조

- 서로 다른 속도와 크기를 갖는 여러 계층의 메모리로 구성

- 프로세서로부터 거리가 멀어질수록 메모리의 크기와 접근시간 증가

- 가장 빠른 메모리는 더 느린 메모리보다 비트당 가격이 비싸기 때문에 대개 그 크기가 작음

 

메모리 계층구조 구현 → 지역성의 원칙 이용 → 무제한의 빠른 메모리를 갖고 있는 듯한 환상

그림 5.1에서 빠른 메모리는 프로세서에 가깝게 두고, 느리고 싼 메모리를 그 아래에 두었다. 

 

메모리 계층구조의 목적은 사용자에게 가장 빠른 메모리가 갖고 있는 접근 속도를 제공하면서

동시에 가장 싼 기술로 최대한 큰 메모리 용량을 제공하는 것이다. 

 

그림 5.1 메모리 계층구조의 기본 구성.


데이터도 이와 유사한 계층구조를 갖는다.

프로세서에 가까운 계층은 먼 계층의 부분집합이고, 가장 낮은 계층에는 모든 데이터가 다 저장되어 있다. 

 

메모리 계층구조는 여러 계층으로 구성되지만, 데이터는 인접한 두 계층 사이에서 한 번에 복사가 된다. 

따라서 여기에서는 계층을 두 개로 한정해서 설명한다.

 

상위계층(즉 프로세서에 가까운 계층)은 더 비싼 기술을 사용하므로 하위 계층보다 작으며 빠르다. 

 

그림 5.2에 보인 바와 같이 이 두 계층 간 정보의 최소 단위를 블록(block) 또는 라인(line)이라고 부른다. 

그림 5.2 각 메모리 계층은 상위 계층과 하위 계층을 가지고 있다고 생각할 수 있다.


프로세서가 요구한 데이터가 상위 계층의 어떤 블록에 있을 때 이를 적중(hit)이라고 부른다. 

그리고 상위 계층에서 찾을 수 없다면 이를 실패(miss)라고 부른다.

 

이때는 필요한 데이터를 포함하는 블록을 찾기 위해 하위 계층 메모리에 접근하게 된다. 

 

적중률(hit rate 또는 hit ratio)은 메모리 접근중 상위 계층에서 찾을 수 있는 것의 비율로서

메모리 계층의 성능을 평가하는 척도로 이용된다. 

 

실패율(miss rate)은 메모리 접근 중 상위 계층에서 찾을 수 없는 것의 비율을 말한다. 


메모리 계층구조를 만든 가장 큰 이유는 성능향상이기 때문에 적중과 실패의 처리 속도가 매우 중요하다.

 

적중 시간(hit time)은 메모리 계층구조의 상위 계층에 접근하는 시간이며

이 시간에는 접근이 적중인지 실패인지 결정하는 데 필요한 시간이 포함된다. 

 

실패 손실(miss penalty)은 하위 계층에서 해당 블록을 가져와서 상위 계층 블록과 교체하는 시간에다

그 블록을 프로세서에 보내는 데 걸리는 시간을 더한 값이다. 


메모리 시스템을 구축하는 데 쓰인 개념은

 

어떻게 운영체제가 메모리와 입출력을 관리하는지,

어떻게 컴파일러가 코드를 생성하는지,

심지어는 응용 프로그램이 어떻게 컴퓨터를 이용하는지 등등,

 

컴퓨터의 많은 다른 분야에까지 영향을 미친다. 

 

물론 모든 프로그램이 메모리 접근에 많은 시간을 쓰기 때문에 메모리 시스템은 성능을 결정하는 중요한 요소이다.


요점정리

프로그램은 최근에 접근했던 데이터들을 다시 사용하려는 경향, 즉 시간적 지역성과
최근에 접근했던 데이터에 인접해 있는 데이터들에 접근하려는 경향, 즉 공간적 지역성을 보인다. 

메모리 계층구조는 최근에 접근했던 데이터들을 프로세서 가까이 적재함으로써 시간적 지역성을 이용한다. 
또한 메모리의 상위 계층으로 필요한 데이터뿐만 아니라
이와 인접한 다량의 데이터들로 이루어진 블록들을 옮김으로써 공간적 지역성을 이용한다. 

5.2. 메모리 기술

오늘날 메모리 계층구조에서는 네 가지 주요 기술이 사용된다.

 

1. 메인 메모리(main memory)DRAM(dynamic random access memory)으로 구현된다. 

2. 프로세서에 더 가까운 계층인 캐시(cache)에SRAM(static random access memory)이 사용된다. 

3. 플래시 메모리

4. 자기 디스크

 

이 절의 남은 부분에서 각 메모리 기술을 설명한다.