DRAM(Dynamic Random Access Memory, 동적 램)
데이터를 저장하는 방식은 "축전기(Capacitor)"에 전하를 채우는 방식이다.
평소엔 가만히 있다가 '재충전'할 때만 전력을 크게 쓴다.
구조: 1개의 트랜지스터 + 1개의 축전기
원리: 축전기에 전기가 들어 있으면 1, 없으면 0으로 인식한다.
문제: 축전기는 시간이 지나면 전하가 조금씩 빠져 나간다.
당연히 다 빠져나가면 데이터가 사라질 것이다.
(약간 구멍 난 항아리에 물을 채워둔 느낌인 것 같다.)
해결책: 데이터가 사라지기 전에
주기적으로 "재충전(Refresh)"해서 전기를 다시 채워줘야 한다.
동적이라는 이름이 붙은 이유도 가만히 있지 못하고,
계속 전기를 충전해 줘야 하기 때문이다.
축전기는 호스가 끊긴 '고립된 물탱크'와 같다.
물을 채워두고, 밸브를 잠가도 미세하게 물이 새기에
다시 채우려면 외부에서 펌프를 끌고와서
억지로 물탱크에 연결해서 밀어 넣어야 한다.
(이러한 일련의 과정이 재충전이다.)
재충전을 안하면 데이터가 사라지는 것인가?
DRAM의 축전기는 전기를 담는 아주 작은 그릇이다.
컴퓨터는 이 그릇에 담긴 전기의 양을 보고, 데이터를 판단한다.
데이터 1: 그릇에 전기가 일정 수준 이상 차 있음
데이터 0: 그릇이 비어 있음
시간이 지날수록 축전기에서 전하가 조금씩
새어 나가면 전압이 점점 낮아진다.
컴퓨터 시스템에는 "문턱 전압(Threshold Voltage)"이라는 기준선이 존재한다.
예로 "1V 이상은 1로 본다." 라는 약속이 있는데 재충전을 안해줘서
전압이 0.7V, 0.4V로 떨어지면 시스템은 더 이상 1로 읽지 못하고,
0으로 취급하거나 읽기 오류를 발생시킨다.
결국은 물리적인 전하의 누설로 인해 데이터가 사라지는 것이다.
위의 내용과 이어서 RAM을 "휘발성" 이라고, 부르는 이유가 있다.
RAM은 전원을 끄면 전하를 유지하고, 보충할 에너지가 없으니
순식간에 모든 데이터가 0이 된다.
그런데 만약 전원은 켜져 있는데 재충전을 안 하면 전기는 흐르고 있어도
축전기 내부의 전하가 누설되는 것을 막을 수 없기에, 결국 전원을
끈 것과 같은 데이터가 사라지는 결과를 가져오게 된다.
DRAM 컨트롤러는 작업을 하는 와중에도 수 밀리초 단위로
메모리의 모든 칸을 돌면서 "여기 전기가 좀 부족해 보이는데, 다시 채워줄게"
하며 엄청나게 빠른 속도로 재충전 작업을 반복한다.
SRAM(Static Random Access Memory, 정적 램)
전기 신호를 가둬두는 Flip-Flop 회로를 사용한다.
구조: 보통 6개의 트랜지스터
원리: 인버터 2개가 서로 마주 보고 연결된 구조.
한쪽에서 신호를 내보내면 다른 쪽이 받아서 다시 돌려주는 루프가 형성된다.
장점: 전원이 공급되는 동안은 전기 신호가 빙글빙글 돌며 스스로 상태를 유지.
DRAM처럼 힘들게 재충전할 필요가 없어서 '정적'이라고 부른다.
속도: 재충전 과정이 없고 회로 구조상 데이터 접근이
즉각적이라 DRAM보다 훨씬 빠르다.
SRAM도 전하가 미세하게 새나가는 건 마찬가지긴 하지만
전원이 누설되는 양보다 훨씬 강하게 계속 보충해준다.
재충전은 안 하지만, 상태를 유지하기 위해 전원선에서
전기를 계속 조금씩 끌어다 쓴다.
SRAM의 트랜지스터들은 항상 전원에 연결되어 있다.
즉 수도관이 물탱크에 항상 연결되어 있어서 펌프가 계속 가동 중인 상태이다.