본문 바로가기
STUDY/스-꾸

(시스템 프로그래밍) The Memory Hierarchy

by 나비로이 2020. 5. 31.

Hierarchy of storage devices

<메모리 시스템(Memory System)>은 저장 장치들의 계층구조이다. 위로 갈수록 용량이 작고, 비싸고, 대신 빠르게 접근 할 수 있다.

 

좋은 지역성(Locality)를 갖는 프로그램들은 나쁜 지역성을 가진 프로그램보다 좀 더 상위 메모리 계층에서, 더 많은 데이터에 접근하려는 경향이 있으며, 따라서 더 빨리 돌게 된다. 이 로컬리티에 따라 응용 성능이 크게 달라지기 때문에 메모리 시스템을 잘 이해하는 것이 중요하다.

 

 

1. RAM (Random Access Memory)

- 램은 SRAM과 DRAM이 있다.

- Volitile 성격(휘발성): Lose information if the supply voltage is turned off.

전원 공급이 되지 않으면 메모리에 들어있던 정보들이 사라진다.

 

RAM에는 SRAM(Static RAM)과 DRAM(Dynamic RAM)이 있다.

 

<SRAM>

- 캐시 메모리로 사용되며, 따라서 비싸고 더 빠르고 전력 소비도 크다.

- Persistent, 전원 공급만 되면 절대로 메모리 사라지지 않는다.

(DRAM은 전원 공급되어 있어도 천천히 주기적으로 사라져서 refresh가 필요하다.)

- 자외선, 전파, 전기에도 강하다.

- 1bit 저장하는데 트랜지스터 1개가 필요한 DRAM과 달리 SRAM은 트랜지스터가 6개 필요하다.

따라서 Lower density (DRAM 용량이 6배정도 클 수 있다)

 

<DRAM>

- DRAM은 메인메모리와 그래픽 시스템의 프레임 버퍼로 사용된다.

 

DRAM 칩 내 셀들은 d 슈퍼셀들로 나누어지고, 각각은 w DRAM 셀들로 이루어진다.

따라서 d x w DRAM 은 총 dw 비트를 저장한다.

 

(예를들어 16 x 8 DRAM칩은 16 슈퍼셀, 슈퍼셀당 8비트를 가진다.)

 

<그렇다면 CPU가 메인메모리 내  데이터를 어떻게 읽어오는지 살펴보자>

 

(데이터는 '버스 Bus'라고 하는 공유된 전기회로를 통해 CPU와 DRAM 메인메모리 앞뒤로 교환된다.)

- 데이터를 메인메모리 -> CPU로 이동시키는 것을 read transaction

- 데이터를 CPU -> 메인메모리로 이동시키는 것을 write transaction 이라고 한다.

 

(read transaction)

예시: movq A, %rax 

 

1> 먼저 CPU는 주소 A를 시스템 버스에 보내고, I/O bridge는 이 신호를 메모리 버스로 보낸다. 메인메모리는 메모리버스로부터 주소 신호를 받고, 읽은 후 DRAM에서 데이터를 가져온다.

 

그렇다면 DRAM 메모리 내부에서 데이터를 가져오는 과정을 살펴보자.

 

A의 주소가 슈퍼셀 (2, 1)라고 했을 때, 

 

1) CPU는 메모리 컨트롤러를 통해 DRAM으로 행row 정보를 보낸다. 

이 과정을 RAS(row access strobe)요청이라고 한다.

2) 그 다음 DRAM은 행 2의 전체 내용을 Internal row buffer에 저장한다.

 

3) 메모리 컨트롤러는 다시 열 주소 1을 보낸다.

이 과정을 CAS(column access strobe)요청이라고 한다.

4) DRAM은 internal row buffer에서 해당 column을 찾아 8비트 데이터를 복사해서 메모리 컨트롤러로 보낸다.

 

 

 

2> 메인메모리에서 A주소에 있는 데이터 x 값을 읽어온 후 다시 버스를 통해 레지스터 %rax에 이 값을 복사한다.

(write transaction)

예시: movq %rax, A

 

1> CPU가 주소 > 시스템버스 > 메모리버스 > 메인메모리 주소 읽고 데이터 도착 때까지 기다림

2> CPU %rax에 있는 데이터 시스템 버스에 복사


3> 메인 메모리 데이터 메모리 버스에서 읽고 비트들을 DRAM에 저장

 

지금까지 휘발성 메모리인 SRAM과 DRAM 그리고 CPU와 메인메모리 간 데이터 이동 과정에 대해 살펴보았다.

모든 데이터를 RAM에 저장한는 것은 비용과 전력사용면에서 매우 비효율적이다.

 

지금부터는 비휘발성 메모리에 대해 살펴보겠다.

 

Nonvolatile Memory: ROMs, Flash Memory, NVRAM

 

2. ROM (Read-only memory)

read only라고 썼지만 일부 쓰기도 가능하다. 

 

1) PROM (Programmable ROM): 딱 한 번 프로그램 될 수 있는 메모리. 그 다음엔 Read-only

2) EPROM (Erasable PROM): ultraviolet light를 이용해 지우고 재프로그램할 수 있다. 다만 칩을 뽑아 특정 장비에서만 가능

3) EEPROM (Electrically Erasable PROM): 전기신호로도 지울 수 있는 PROM

 

3. Flash memories

EEPROM에 기반을 둔 비휘발성 메모리로 디카, 핸드폰, 노트북 등 다양한 전자기기에서 빠르고 안정적인 비휘발성 저장장치의 역할을 한다.

 

(특징)

- No in-place writes ; 이미 데이터 있는 곳에 덮어쓰지 못한다.

- Asymmetric read-write spped; read가 write 보다 훨씬 빠르다. (write할 때, 이미 데이터 있는 곳이라면 다른곳에 데이터 쓰던지, 지우고 덮던지 해야하기 때문에)

- 10만번 정도 지운 후엔 사용할 수 없음(버리는 영역됨)

- NAND flash / NOR flash ; 보통 NAND FLASH를 더 많이 쓴다.

- SSD (Solid State Disk); 하드디스크보다 비싸고 가볍고 충격에 강하다. 하드디스크와 다르게 디스크들을 움직이는 부분이 없다. 그래서 solid state

 

 

<하드디스크 HDD>

디스크는 원판 Platters로 구성되며, Spindle 회전축을 통해 회전한다. 

Actuator을 통해 Arm이 좌우로 움직이면서 데이터를 읽는다.

 

플래터는 윗면, 아랫면 2개의 surfaces로 데이터를 저장하고

각 surface에는 track이라고 불리는 concentric ring들로 구성되어있다. (약 만 개 내외)

track은 sector와 gap으로 구성되어있고, 아무 데이터도 기록되지 않은 상태인 gap은 sector들을 분리한다. (ISG; Inter Sector Gap이라고도 함)

 

- 하나의 디스크에 기록될 수 있는 최대 비트 수는 다음 요소들에 의해 결정된다.

1) Recording density (bits / in) : 1인치 트랙에 집어넣을 수 있는 비트의 수

2) Track density (tracks / in) : 원판 중심에서 반지름의 1인치 길이에 넣을 수 있는 트랙의 수

3) Areal density (bits / in^2) : 기록밀도와 트랙밀도의 곱

 

- 디스크 동작

 

- Disk는 SRAM보다 40,000배, DRAM보다 2,500배 정도 느리다..

 

 

<I/O Bus>

I/O 디바이스들이 동작하는 방법을 간단하게 살펴보자.

(디스크 접근하기)

1) CPU는 command, logical block number, destination memory address 세 개의 저장 인스트럭션을 실행해서 디스크 읽기를 개시한다. (Memory mapped I/O)

2) 디스크 컨트롤러는 cpu개입 없이 섹터의 내용을 읽어서 메인메모리에 직접 전송한다. (DMA; Direct Memory Access)

cycle stealing

3) DMA 전송이 끝났을 때, 디스크 컨트롤러가 cpu에 인터럽트 신호를 보내 cpu가 현재 하고 있던 일을 멈추게하고, 운영체제 루틴으로 이동하게 한다.

 

(호스트 버스 어댑터)

- 하나 이상의 디스크를 I/O 버스의 호스트 버스 인터페이스를 통해 연결한다.

두 개의 가장 인기 있는 인터페이스는

SCSI 스커지 

SATA 사타 가 있다.

스커지는 여러 디스크 드라이브를 지원하고 일반적으로 사타보다 훨씬 빠르고 비싸다.

사타는 단 하나의 드라이브만 지원한다.

 

<SSDs: Solid State Disks>

- 한개 이상의 플래시 메모리 칩과 디스크 컨트롤러 역할을 하는 FTL(Flash TranslationLayer)로 구성되어 있다.

- SSD의 데이터 읽고 쓰는 단위는 Page이며, 지우는 건 무조건 Block 단위로만 가능하다.

따라서, 한 블락에 있는 하나의 페이지를 지우려면, 나머지 페이지를 다른 빈 블락으로 옮기던가 해야한다.

- SSD는 HDD와 달리 mechanical한 움직임이 없어 빠르고, 전력 소모도 적고, 견고하다.

- 하지만 보통 한 블락이 10만번 이상 쓰기를 반복하면 wear out된다는 점과 비싸다는 것이 단점이다.

댓글