티스토리 뷰
여는 글
꿀 먹은 벙어리🤢
개강 후, 첫 수업 시간이었다.
교수님께서 DRAM을 설명하시면서, 다음과 같은 질문을 하셨다.
"DRAM은 무엇의 약자입니까?"
옆에 앉아 있던 학생이 대답했다.
"Dynamic Random Access Memory입니다."
그러자, 옆에 앉아 있던 나에게 이렇게 물어보셨다.
"그렇다면, DRAM에서 Dynamic은 어떤 의미입니까?"
"…"
꿀 먹은 벙어리가 되었다.
뒤에 앉아 있는 학생에게 바통이 넘어갔다.
"주기적으로 recharge를 해야 하기 때문에 dyanmic 메모리라고 합니다."
쪽팔림이 등골을 타고 흘러내렸다.
몰랐던 건 아니었다. 나도 질문을 받았을 때 'refresh'가 가장 먼저 떠올랐었기 때문이다.
그러나 혹시나 이게 틀린 답이 아닐까 두려웠다.
교수님에게 난 그저 아무 생각이 없는 학생 혹은 기본적인 내용도 잘 모르는 학생으로 비쳤으리라.
차라리 그냥 틀린 답이라도 자신감 있게 말하는 게 어땠을까 후회가 됐다.
내 마음속 깊은 곳에 기저로 작용하고 있는 열등감 때문이었을까?
아니면, 백 퍼센트 확신할 수 있는 단단한 지식을 갖지 못했기 때문이었을까?
후회의 상념들은 뒤로 한채, 계획에도 없는 DRAM에 관한 포스팅을 갑자기 올리게 된 사유에 대해 주저리주저리 한풀이를 좀 해보았다.
DRAM에 관한 썰 푼다.
거창하게 'DRAM에 관한 단편적 사실들'이라는 제목을 붙여 놨지만, 사실 DRAM에 관한 내용들은 이미 인터넷에 쌔고 쌨다. 내가 이 분야 전문가도 아니고 이미 잘 설명해 놓은 블로그나 기술 자료에 비빌 수 없을 것 같아, 그냥 주워들은 내용에 대해 썰이나 풀어보려 한다.
DRAM은 계속해서 refresh를 해줘야 하는 특성을 갖는, 임의의 주소에 랜덤 하게 접근할 수 있는 메모리다. 그러나 Dynamic random access memory이 random access를 지원한다고 해서 동시에 여러 주소에 접근할 수 없다. conventional 한 구조의 DRAM에서는 물리적으로 불가능하다는 이야기.
- DRAM에서 말하는 C/A는 command와 address다.
- CAS command는 read/write와 같은 명령을 의미하며, 어셈블리 관점에서 보면 load/store와 같다. 아래 그림의 왼쪽처럼 명령어에서 주소와 값을 받아와서 해당 메모리(오른쪽 녹색 부분)에 접근하여 값을 적는다.
- RAS command는 activate와 precharge를 의미한다.
address는 virtual address와 physical address로 나뉘는데, 물리적인 실제 주소에 바로 접근하지 않고, 보통 가상의 주소를 할당하여 제어하도록 시스템이 구성되어 있다. 보통 MMU(Memory management unit)를 두어, CPU와 DRAM 사이의 address 변환을 수행한다. DRAM에 접근하기 위한 address의 구성은 다음과 같다. channel, rank, bank, row, column이 tuple 형태로 구성되어 있다.
앞서 떠든 내용들은 컴퓨터 아키텍처 관점에서 바라본 DRAM에 대한 설명이고, DRAM 소자에 관한 이야기는 또 다른 세계다. DRAM 공정은 일반적인 CMOS 공정과는 다른 부분이 있는데, 아래 그림처럼 capacitor를 아주 얇으면서 깊게 파는 것이 핵심이다.
앞서 언급했듯이 DRAM은 휘발성이다. 계속해서 refresh를 통해 capacitor를 채워줘야 하며, 이러한 이유로 기본적으로 SRAM보다 power 소모가 크지만 반대로 면적은 더 작다. SRAM은 반도체 공정의 scaling에 따라 사이즈를 계속해서 줄일 수 있었고, 이에 따라 DRAM에 비해 속도가 빠르다는 장점이 있다. 아래 그림에서 기본적인 구조의 6T SRAM와 single DRAM cell을 보면, 육안으로 봐도 면적 차이가 크다는 것을 느낄 수 있다.
혹시, 게임을 좋아한다면 한 번쯤 본인의 컴퓨터 사양을 확인하기 위해 CPU-Z라는 프로그램을 돌려봤을 것이다. 여기서 Memory 탭에 들어가면, Ram timing을 확인할 수 있는데, CL-tRCD-tRP-tRAS를 확인해볼 것. 보통 작을수록 좋다.
- CL (Column access strobe Latency): 메모리에 column address를 보낸 후, 데이터가 메모리 출력 핀으로 나가기까지의 시간
- tRCD (Row adress to Column adress Delay time): Row address가 열리고, column address가 access 될 때까지의 시간
- tRCD는 공정이 개선돼도, 크게 빨라지지 않는다고 한다. 물리적인 한계가 있다고 함.
- tRP (Row Precharge Time): Precharge commnad가 내려가고, 그다음 row address가 열릴 때까지의 시간
- tRAS (Row Address Strobe time): Precharge 된 셀이 활성화된 후, 비활성화되기 까지의 최소 시간
Conventional 구조는 굉장히 심플하다. B/L과 W/L 그리고 capacitor로 구성된다. B/L은 1/2 Vcc로 prechare 되어 있는데, 이는 data 0과 1을 읽는 메커니즘상 필요하기 때문이다. 신호 값을 잘 읽을 수 있도록 Sense Amp로 신호의 변화를 증폭시켜서 값을 읽는다. DRAM cell은 다양한 경로로 charge loss가 발생하므로, 특정 주기마다 값을 refresh 해야 한다.
DRAM에서 poly는 high-k metal로 가는 추세인데, 유전율이 높을수록 많은 양의 전하를 빠르게 저장할 수 있기 때문이다. 이와 반대로 interconnect(wire metal)은 low k metal을 사용하여야 parasitic capacitance를 줄이고 RC delay를 낮출 수 있다. 일반적으로 트랜지스터에서는 channel length를 줄이는 방향으로 발전해 왔지만, DRAM cell 트랜지스터는 channel length를 늘리기 위해 깊게 게이트를 파묻는 형태로 진화했다. 이는 누설되는 전류는 대부분 short channel에 기인하기 때문에, 이러한 영향을 최소화하기 위해서다.
Feature size를 Poly Si의 channel length로 알고 있는 경우가 많은데, 메모리에서 feature size는 unit cell의 최소 pitch의 절반 크기를 말한다. 아래 그림에서 빨간색/파란색 박스가 unit cell이며, 3.5F = 70um, 4F=80um인 unit cell에서 feature size는 20um이다.
최근에는 HBM (High Bandwidth Memory) 등이 각광받고 있는데, 주로 데이터 서버에 많이 들어가고 있다. 1TB/s라고 했을 때 초당 1TB 전송되는 것이 아니라, 총데이터의 전송량을 의미한다. 이는 병렬 데이터 핀을 1000개 이상 늘려서 bandwidth를 높여줬기 때문이다.
'Digital design (VLSI)' 카테고리의 다른 글
[Digital 회로 설계] 검증용 SRAM model 직접 만들기 - Single port SRAM (10) | 2021.01.02 |
---|---|
[Digital 회로 설계] SystemVerilog로 Testbench 설계하기 3편(Image driver) (7) | 2020.12.14 |
[Digital 회로 설계] SystemVerilog로 Testbench 설계하기 2편 (7) | 2020.05.16 |
[Digital 회로 설계] SystemVerilog로 Testbench 설계하기 1편 (6) | 2020.02.09 |
[Digital 회로 설계] Wavedrom으로 timing diagram 쉽게 그리기 (6) | 2019.03.10 |