06장 - 1 : RAM
목표 : RAM의 하드웨어적 특성과 그 종류 학습
RAM
RAM ( Random Access Memory ) 는 휘발성 저장 장치(volatile memory)로 전원이 꺼져도 저장된 내용이 유지되는
비휘발성 저장 장치(non-volatile memory)와는 다르게 전원을 끄면 저장된 내용이 사라진다.
따라서, 주기억장치인 RAM에는 '실행할 대상'을 저장하고 비휘발성 저장 장치인 보조기억장치에는 '보관할 대상'을 저장한다.
RAM 용량이 충분히 크다면 보조기억장치에서 많은 데이터를 미리 가져와 저장할 수 있으므로, 더 많은 프로그램을 동시에 실행하거나, 실행 중인 프로그램의 데이터를 빠르게 처리하는 데 유리하다. 다만 RAM 용량이 커지면 실행 속도가 어느 정도 증가하는 것은 맞지만, 용량이 필요 이상으로 커졌을 때 속도가 그에 비례하여 증가하지는 않는다.
RAM의 종류에는 여러가지가 있다.
1. DRAM ( Dynamic RAM )
저장된 데이터가 동적으로 변하는 RAM이다. 즉, DRAM은 시간이 지나면 저장된 데이터가 점차 사라진다.
그렇기 때문에 데이터의 소멸을 막기 위해 일정 주기로 데이터를 재활성화(다시 저장)해야 한다.
이러한 단점에도 불구하고 일반적으로 소비 전력이 낮고, 저렴하고, 집적도가 높기 때문에 일반적으로 메모리로써 사용된다.
2. SRAM ( Static RAM )
저장된 데이터가 정적으로 변하지 않는 RAM이다. 시간이 지나도 데이터가 소실되지 않기 때문에 캐시 메모리에 사용된다.
다만 DRAM보다 소비 전력이 높고, 가격이 비싸고, 집적도도 낮기 때문에 일반적으로는 사용되지 않는다.
3. SDRAM ( Syncronous Dynamic RAM )
클럭 신호와 동기회된, 발전된 형태의 DRAM이다. 클럭 타이밍에 맞춰 CPU와 정보를 주고받을 수 있다. 즉, SDRAM은
클럭에 맞춰 동작하며 클럭마다 CPU와 정보를 주고받을 수 있는 DRAM이다.
4. DDR SDRAM ( Double Data Syncronous Dynamic RAM )
대역폭을 넓혀 속도를 빠르게 만든 SDRAM. 대역폭이란 데이터를 주고받는 길의 넓이를 의미한다.
DDR2, DDR3, DDR4, DDR5로 갈 수록 대역폭이 넓어져 많은 데이터를 빠르게 주고받을 수 있다.
질문 : 그럼 SDRAM 이전에는 정보를 주고받는 시간(클럭)이 통일되어 있지 않았다는건데 그럼.. ?
SDRAM이 클럭 신호에 맞춰 정보를 주고받았고, 이를 이용했다는 것인데. 이것이 왜 효율적인지 왜 좋은 방법인지 자세하게 알고 싶었다.
SDRAM 이전의 동작 방식은
비동기 DRAM으로 CPU가 메모리에게 데이터를 요청할 때 타이밍을 일일히 맞춰줘야 했다.
클럭이 아니라 신호의 완료에 맞춰 통신하므로, 속도가 느리고, 동기화가 어려웠다.
또한 메모리 접근마다 제어 신호를 매번 조절해야 하므로 CPU가 복잡한 대기 계산을 했다 .
그러나 SDRAM이 등장하고 나서는 클럭에 맞춰 RAM이 동작하게 되었고, CPU와 동기화가 가능해졌다.
같은 리듬(동기화)를 가지고 동작하므로 통신 예측이 쉽고, 일정한 대기 시간이 예상되므로 예측이 가능해 CPU가 기다리는 동안 다른 연산을 하거나 미리 준비할 수 있게 되었고, 파이프라인 처리에 유리하게 되었다.
즉, 요약해보자면 DRAM에서는 CPU가 메모리에게 요청을 보내면 , 응답이 언제 올지 모른다.
따라서 계속 기다리면서 시간/자원을 낭비했었지만, SDRAM은 클럭마다 정보를 보내기에 예측 가능해졌고 이로 인해 효율적이다.
질문 : 재충전이 필요 없다는 것의 의미
DRAM과 SRAM의 비교에서 SRAM은 '재충전이 필요하지 않다'라는 표현이 있던데 그럼 DRAM은 재충전이 필요하다는 것인가 ?
그렇다면 왜 이 차이가 발생하는가 ?
RAM은 데이터를 전기로 저장한다. 전하가 남아 있으면 1, 없으면 0인 상태가 유지되는 것이다.
DRAM은 1비트를 저장할 때 '콘덴서'(축전기)를 사용하는데 이 전하는 시간이 지나면 조금씩 사라진다(누설)
그래서 주기적으로 다시 충전해 줘야 하는 것이고 이것이 재충전이다.
반면 SRAM은 플립플롭(논리회로)를 이용해 데이터를 저장한다.
회로 자체가 안정적이므로 1 또는 0의 상태를 재충전이 필요 없이 유지할 수 있다.
다만 구조가 복잡하고, 크고, 비싸기 때문에 캐시에만 사용되는 것이다.
상승/하강 에지를 이용한다는 표현의 의미
클럭 신호는 전기 신호가 위/아래로 반복되는 파형(진동)을 기준으로 동작한다.
상승 에지(rising edge)는 신호가 0에서 1로 올라가는 순간, 하강 에지 (falling edge)는 신호가 1에서 0으로내려가는 순간이다.
SDRAM은 상승 에지에서만 데이터를 송수신하고, DDR SDRAM은 상승과 하강 에지를 모두 사용해서 2배 빠른 것이다.
추가 질문 : 그렇다면 DDR2, DDR3, DDR4, DDR5는 어떻게 속도를 높인 것인가 ?
상승과 하강 에지를 모두 사용했다면 한 클럭에 여러번 데이터를 쪼개서 보낸 것인가 ? 하는 의문이 들었다.
프리패치 아키텍쳐를 사용해서 속도를 높였다.
프리패치(Prefetch) 아키텍쳐란, 한 번의 명령(클럭 신호)로 내부에서 여러 비트 데이터를 미리 준비해서 전송하는 방식이다.
DDR2 ~ DDR5는 클럭은 그대로지만, 한 번에 여러 칸을 미리 땡겨서 준비함으로써 CPU에게 더 많은 데이터를 한 번에 전송한다.