본문 바로가기
CS/컴퓨터구조

10- 메모리

by simplify-len 2019. 9. 8.

메모리

메인 메모리란 명령어 집합에 의해 정의된 메모리로서 실행될 프로그램과 데이터가 머무는 장소를 의미한다.

메모리는 프로그래머에게 보이는 시스템의 속성 중 하나로 조작할 수 있는 명령어가 존재한다.
예를 들어, 대부분의 아키텍처는 메모리에 접근할 수 있도록 적재 명령어와 저장 명령어를 프로그래머에게 제공한다.

1. CPU와 메모리

CPU와 메모리는 물리적으로 메인보드의 노스브리지를 통해 서로 연결.

CPU와 노스브리지 사이를 연결하는 통로는 전면버스(FSB front-side bus)라 하고, 노스브리지와 메모리 슬롯 사이를 연결하는 통로는 메모리버스(memory bus)라고 한다. 전면버스와 메모리버스는 일반적으로 동일한 클럭으로 동작하며, 메모리 슬롯에 장착되는 메모리의 클록 속도는 이 속도에 의해 제한된다.

​ CPU

​ |

(전면 버스)

​ |
​ |
노스브릿지 ---- (메모리버스) --- 메모리

노스브릿지는 CPU와 메인보드 사이의 데이터 통신을 관리하는 칩셋에 불과하다. 따라서 CPU와 메모리는 논리적으로 버스에 의해 연결되었다고 볼 수 있다. 메모리로는 주로 DRAM이 사용되며, CPU는 메모리 버퍼 레지스터와 메모리 주소 레지스터를 사용하여 메모리와 데이터를 교환

MBR - 양방향 버스 - 데이터 버스

MAR - 단방향 버스 - 주소버스

메모리의 제어신호는 1비트로 제어장치가 명령어를 해독하여 적재 명령어일 경우 1 저장명령일 경우 0

2. 읽기 - 쓰기 동작

다음과 같은 가정하에 CPU와 메모리 MAR, MBR을 사용하여 어떻게 데이터를 교환하는지 살펴보자.

  • 워드 크기는 4비트
  • 메모리는 8(=2^3)개의 워드로 구성
  • 메모리 3번지의 초기 값은 0011(2) 이다.
  • 레지스터 1번지와 2번지의 초기값은 각각 0011(2), 0010(2)이다.

다음괕은 저장명령어와 적재 명령어를 순차적으로 실행해보자.

저장 명령어 - 레지스터 r1의 내용을 메모리 M[r2 + 1] 에 저장하고,
적제 명령어 - 메모리 M[r2+1]의 내용을 레지스터 r3에 적재

sw r1, #1(r2)
Lw r3, #1(r2)

워드 크기가 4비트 이므로 MBR과 데이터버스는 4비트로 구성되면 충분. 그리고 메모리의 용량이 8개의 워드이므로 주소버스와 MAR은 모두 3비트로 구성된다. 저장 명령어는 r2의 내용과 즉칫값 1을 더한 주소 값인 3번지의 메모리에 r1의 값 0001(2)를 저장한다.

쓰기 연산

읽기 연산

3 메모리의 용량과 데이터 크기

컴퓨터에서 사용할 수 있는 최대 메모리 용량은 주소 지정 기법에 달려있다. 예를 들어, 16비트 주소를 사용하는 컴퓨터는 64K(= 2^16) 개의 메모리 장소를 식별할 수 있다. 오늘날의 컴퓨터는 대부분 바이트를 주소 지정 단위로 사용한다.
16비트 컴퓨터는 64KB
32비트 컴퓨터는 4GB 용량의 메모리를 취급
데이터 버스는 일반적으로 컴퓨터가 사용하는 워드의 크기, 데이터버스가 16비트라면 워드의 크기도 16비트, 데이터버스가 32비트라면 워드의 크기도 32비트가 된다.

최근의 많은 아키텍처는 64비트 메모리 주소를 지원하므로 16 x 2^60 바이트에 해당하는 메모리 허용량을 허용한다. 그러나 메모리칩의 물리적 공간이나 대용량 메모리의 주소 해독에 대한 지연시간 또는 운영체제에 의해 메모리 용량이 제한되는 경향이 있다.

4 메모리 접근시간과 사이클 시간

메모리는 주로 대역폭과 지연 시간으로 성능을 평가.
대역폭은 메모리의 중요한 척도로 사이클당 전송된 바이트 수 또는 단위 시간당 전송된 바이트 수를 의미하고, 지연 시간은 데이터를 얻는데 걸리는 시간을 의미.
이때 지연 시간을 나타내기 위해 메모리 접근 시간과 메모리 사이클 시간을 사용한다.

데이터 요청부터 데이터 도착까지의 시간 / 연속된 데이터 2개의 데이터를 읽거나 쓰기 위한 요청 시간 사이의 간격.

5 저장장치의 특징

  • 접근형식
    - 순차 접근 저장매체(SASD) 자가 테이프 / 무작위 접근 저장매체(DASD) 대표적으로 RAM
  • 가변성
    - 저장된 데이터를 변경할 수 있는지에 대한 속성으로 읽기용과 읽기 - 쓰기용이 있다. 대부분의 저장매체는 읽기-쓰기용지만 ROM과 같은 일부 저장매체는 읽기 전용
  • 휘발성
    - 전원을 차단할 경우 저장된 데이터의 증발 유무에 대한 속성
  • 파괴성
    - 데이터에 접근할 때 데이터의 존속여부에 대한 속성으로 파괴성과 비파괴성.

# 메모리의 종류와 구성 및 동작

컴퓨터 시스템은 대량의 데이터를 일시적으로 보관하고 조작하기 위한 작업장으로 CPU 내부에 있는 메모리 배열 사용

3가지 종류의 메모리 배열

  • DRAM
    - 메인 메모리
  • SRAM
    - 캐시 메모리
  • ROM

RAM

DRAM과 SRAM의 차이?

트랜지스터는 무엇? 임시저장

DRAM의 구성과 동작

DRAM의 확장

ROM

휘발성 메모리이므로 데이터를 유지하려면 전원이 필요, 그러나 컴퓨터의 기본 구성에 대한 정보나 초기화 루틴, POST와 같은 자체 진단 프로그램 또는 부팅 프로그램은 전원이 차단되더라도 저장장치에 유지되어야 한다. 이를 위해 컴퓨터 시스템은 전원이 차단되더라도 데이터를 유지할 수 있는 휘발성 메모리인 ROM을 사용

ROM은 기본적으로 한 번 기록되면 데이터를 변경할 수 없는 메모리. 그러나 저장된 데이터를 삭제하거나 기록할 수 있는 ROM의 다양한 변종이 있는데, 이는 삭제와 쓰기를 반복할 경우 데이터의 저장 능력, 접근 속도의 저하 등과 같은 문제가 발생. ROM은 삭제나 기록 가능성에 따라 다음과 같이 분류

  • Masked ROM
  • PROM
  • EPROM
  • EEPROM - 플레시 메모리(USB)

메모리의 성능향상

CPU의 처리 능력이 향상됨에 따라 더 크고 빠른 메모리가 필요. 따라서 메모리의 용량을 늘리면서 메모리의 속도를 개선할 필요가 있다.

CPU와 메모리 속도 차이를 메모리장벽이라고 한다.

이는 성능의 위협적인 병목이 된다. 때문에 이를 해결하기 위해 다양한 기법을 활용한다.

1 광폭버스 메모리와 교차 메모리

메모리의 속도를 개선하는 해결책 중하나가 하버드 아키텍처의 다중 메모리 통로를 사용하는 것. 좀더 일반적인 방법으로 광폭버스 메모리와 교차 메모리가 있다.

광폭버스 메모리는 메모리의 대역폭을 확장하는 방법으로 CPU와 메모리 사이의 데이터버스폭을 넓혀서 한 번 접근할 때마다 많은 데이터를 전송할 수 있도록 한다. 그러나 1-워드 버스방식에 비해 CPU에 전달될 하나의 워드를 선택하기 위한 멀티플렉서가 필요하며, 넓은 폭의 버스를 만드는데 추가 비용이 든다는 단점이 있다.

교차 메모리는 단일 메모리 통로를 유지하면서 메모리를 다수의 독립적인 메모리 뱅크로 분할한 메모리
이렇게 분할하는 것을 메모리 인터리빙(Memory interleaving)이라고 한다. 교차 메모리는 독립적으로 접근할 수 있도록 모든 메모리 뱅크에 MAR과 MDR이 있기 때문에 다수의 메모리 뱅크에 병행적으로 접근될 수 있다.

하위 인터리빙과 상위 인터리빙의 차이는?

공간적 지역성과 결합 허용도

2 파이프라인 메모리와 연관 메모리

파이프라인 메모리는 파이프라인의 메모리 접근 단계를 여러 단계로 세분화하거나 메모리 지연시간을 물리적 메모리 접근 외에 다른 연산과 중첩되도록 함으로써 메모리의 성능을 향상하는 방법이다. picoMIPS 프로세서의 경우, 파이프라인 프로세서에서 메모리 접근 단계의 지연시간이 가장 길기 때문에 클록 사이클 시간이 메모리 접근 단계로 결정된다. 따라서 CPU의 성능이 메모리 접근 단계에 의해 제한될 수 있는데, 메모리 접근 단계를 다음과 같이 두 단계로 분할하면 성능 향상을 도모할 수 있다.

  • 메모리 접근 1 : 메모리 주소 변환과 행 주소 해독 및 읽기
  • 메모리 접근 2 : 열 주소 해독과 데이터 선택 및 전송

연관 메모리는 고속 탐색을 요구하는 분야에서 사용되는 특별한 메모리로 내용 지정 메모리(CAM content addressable memory) , 병렬 탐색 메모리(Parallel search memory), 다중 접근 메모리(multi-access memory).

연관 메모리는 메모리 주소에 의해 접근되는 일반적인 컴퓨터 메모리와 달리 저장된 데이터 내용의 일부를 기반으로 원하는 데이터에 접근할 수 있는 메모리이다. 따라서 입력한 항목과 저장된 내용을 비교할 수 있는 논리회가 필요하며 DRAM보다 가격이 비싸다.

DRAM 칩 구성의 개선과 성능 향상

메모리 배열에서 접근하려는 다수의 워드가 모두 동일한 행에 속한다면 행 주소를 매번 명시하거나 연속적으로 주소를 명시하는 것은 낭비이다. 이때 DRAM 칩 구성을 사용하면 선택하려는 데이터가 이전 데이터와 동일한 행인 경우 열 주소만 변경하면 접근할 수 있다. 모든 DRAM칩 제조사는 DRAM의 성능 개선을 위해 이와같은 DRAm칩 구성의 특성을 이용.

1 FPM DRAM

2 DEO DRAM

3 RDRAM

4 SDRAM

- 동기화 DRAM, 즉 DRAM은 시스템 클러과 연동하여 메모리버스 속도 100MHz 이상에서 버스트 모드로 접근할 수 있도록 설계한 고속 메모리이다.
DDR DDR2 DDR3

DDR3 - 1600 의 의미는? 전송률이 1600MB/s 라는 의미 그럼, 대역폭(B/s)은 무엇인가?

전송률은 메모리버스 클록속도 x n
대역폭은 메모리버스 클록 속도 x n x 8

여기서 n은 DDR이 2, DDR2가 2^2, DDR3가 2^3이다.
그러므로 DDR3-1600의 대역폭은 1600에서 8(2^3)을 곱해서 128,000을 의미한다.
내부클록은 1600에서 2^3을 나누면 나온다.

메모리 계층 구조

메모리의 용량이 클수록 속도가 느려지고, 속도가 빠를수록 가격이 비싸진다. 이번에는 이같은 상충 요인을 극복할 수 있는 계측정 메모리구조에 대해 살펴보자.

  • 시간적 지연성
    - 최근에 참조된 명령어나 데이터가 가까운 미래에 다시 참되는 경향을 말한다. 예를 들어 반복문의 경우, 명령어와 데이터에 반복해서 접근하므로 방금 사용한 명령어와 데이터가 곧 다시 사용되는 경향이 있다. 또한 스택이나 액티베이션 레코드의 데이터를 참조할 때도 흔히 시간적 지연성을 나타낸다.
  • 공간적 지연성
    - 최근에 참조된 명령어나 데이터의 이웃이 가까운 미래에 참조되는 경향을 말한다. 예를 들어 순차적으로 실행되는 프로그램코드의 경우, 현재 실행된 명령어의 가까운 위치에 있는 명령어가 곧 참조될 가능성이 높다. 또한 데이터 구조를 순회할 때도 흔히 공간적 지역성이 발생.

메모리 계층 구조는 속도와 용량이 서로 다른 다수의 계층으로 구성된 메모리 구조를 의미. 일반적으로 속도가 빠른 메모리는 고가이고 속도가 느린 메모리는 저렴하다. 따라서 소용량의 빠른 메모리를 CPU에 가깝게 배치, 느리지만 대용량의 메모리를 CPU에 멀리 배치한 메모리 계층 구조가 저렴하고 효율적이다.

###

메모리 계층 구조의 원리와 전송 단위

  • 워드 : 최상위 계층인 CPU레지스터와 캐시 메모리 사이의 데이터 전송 단위
  • 블록 : 차상위 계층인 캐시 메모리와 메인 메모리 사이의 데이터 전송 단위로 라인(line)이라고도 부른다
  • 페이지 : 메인 메모리와 최하위 계층인 보조기억장치 사이의 데이터 전송 단위

CPU가 하나의 워드 읽기를 요청한 경우를 통해 메모리 계층 구조가 기본적으로 어떻게 동작하는지 살펴보면,
캐시 메모리가 해당 워드를 가지고 있으면 복제한 후 CPU에게 넘겨준다.
만약 캐시 메모리가 해당 워드를 가지고 있지 않으면 메인 메모리에 요청을 넘기며, 메인 메모리가 해당 워드를 가지고 있으면 해당 워드를 포함하는 블록을 캐시 메모리에 복제하고 캐시 메모리는 해당 워드 CPU에 보낸다.
그러나 메인 메모리에도 해당 워드가 없다면 CPU의 요청을 최하단의 보조 기억장치로 보낸다. 보조 기억장치는 해당 워드를 포함하는 페이지를 복제하여 메인 메모리에 보내고, 메인 메모리는 동일한 방법으로 캐시 메모리를 경유하여 해당 워드를 CPU에 보낸다.

댓글