메모리 반도체/DRAM

DRAM Bank Architecture (Bank Mode, 뱅크 구조, Bank 동작, Bank Group, 8Bank, 16Bank, BL/n, tCCD, LPDDR5)

전컴반 2025. 5. 17. 14:33

# Bank란? 은행은 아니겠죠,

 

Memory 반도체인 DDR안에는 Die라고 하는 것들이 모여 있고 또 하나의 Die는 Bank라는 구조로 나눠져 있다. 이 Bank 안에 다들 알고 있는 1T1C 구조로 Cell이 모여 있다.

 

반대로 말하면 1T1C가 모여서 Bank를 이루고 Bank가 모여서 DIE를 이루고 DIE가 모여서 하나의 단품 PKG가 된다.

메모리 반도체의 구조를 잘 모른다면 아래 글에 있는 그림이라도 보고 오면 더 이해가 쉬울 것이다.

 

 

2023.04.13 - [메모리 반도체/DRAM] - 메모리 반도체 DRAM 구조 (LPDDR, Die, BANK, Core, HEX, MAT)

 

메모리 반도체 DRAM 구조 (LPDDR, Die, BANK, Core, HEX, MAT)

DRAM 구조 메모리의 Spec은 JEDEC이라는 협회에서 합의를 보는데 협의된 Spec에 맞게 제조하면 된다.  근데 DDR5가 LPDDR5 (Low Power)가 있고 GDDR5 (Graphics), 등등 용도에 따라 다르다. 예를 들어 핸드폰에

wpaud16.tistory.com

 

 

# Bank 동작

 

오케이 Bank가 저렇게 생겼다는 건 알았다. 근데 Bank를 왜 써야 할까?? Bank를 왜 쓰냐면 Throughput(단위 시간당 처리량)을 높이기 위해 쓴다. 쉽게 말해 중간에 쉬는 시간 없이 빠르게 동작하기 위해 여러 개의 Cell을 Bank라는 구조로 묶어서 사용한다. 최대한 효율을 내기 위해선 Bank를 잘 이용해야 한다. 이래도 이해가 어렵다면...그냥 Bank를 썼을 때 분신술을 써서 일을 처리하는 동작과 동일하다고 보면 된다.  

 

LPDDR5를 기준으로 설명해 보겠다. LP는 Low Power라는 뜻이다. 핸드폰에 들어가는 반도체라고 생각하면 된다. 각설하고, LPDDR5에서는 3가지 Bank Mode를 사용한다. 많기도 하다. 참고로 다행히도 LPDDR6에는 Bank Group Mode만 쓴다.

1) 16Bank Mode

2) 8Bank Mode

3) Bank Group Mode

 

 

# 16Bank Mode

 

말 그대로이다. LPDDR5 1개의 DIE에는 Bank가 16개다. Spec에서 그렇게 만들라고 했다. 그렇다면 직감적으로 어떤 Mode인 느낌이 온다. 16개의 Bank가 각각 독립적으로 동작하는 Mode다. 뭔가 굉장히 좋아 보인다. 하지만 해당 Mode는 Speed가 올라 갈수록 별로다.

 

왜냐면, Bank들을 연결하는 GIO라는 게 있는데 GIO는 한 번에 하나의 Bank 밖에 쓰지 못한다. 그래서 Speed를 높일 수 없다는 말이다. 다시 말해 고속도로에 차는 엄청 막혀있는데 톨게이트가 4개밖에 없는 것이다. GIO는 간단히 말하면, Data를 이동시키는 GIO(Global IO)라는 통로다. 이를 통해서 Read/Write 한다. 그런데 GIO를 공유하는 Bnak에서는 Read/Write를 하고 Data가 나가기 전까지 기다리는 시간이 필요하다. (Data Path에 대해 궁금하다면 아래 글을 참고 바란다)

 

2025.04.19 - [메모리 반도체/DRAM] - DRAM Data Path (GIO, LIO, SIO, BL, LPDDR, Read/Write)

 

무슨 말이냐면.. 아래 그림에서 우리가 12번 Bank를 접근하고 다음에 운이 좋아서 GIO를 공유하고 있지 않은 Bank를 선택하면 좋겠지만.. 만약 공유하고 있는 15번 Bank에 접근해야 한다면 12번 Bank의 동작이 끝날 때까지 기다려야 된다는 말이다. 우리는 이미 다음 Command를 집어넣을 수 있는데도 말이다!!

 

그러니 이런 비효율이 발생하기 때문에 Speed가 느린 동작에서 사용하면 이미 Data가 나가고 다음 Command가 들어올 수 있는 시간이랑 크게 차이가 없기 때문에 상관없는 것이다. 그림을 보면 더 이해가 쉬울 것이다. 

 

 

Command가 들어오고 다음 Command가 들어올 수 있는 시간은 "BL/n" 혹은 "tCCD (CAS to CAS)"이라고 부른다.

*BL/n : Bank 12에 Command가 들어오고 다음 Command가 들어올 수 있는 시간 간격 

 

 

# Bank Group Mode

 

16Bank Mode에서 Speed 단점을 개선 Mode이다. 16Bank에서는 같은 GIO를 접근할 때 문제가 생겼는데 Bank Group Mode는 같은 GIO를 공유하는 Bank를 묶어서 하나의 큰 Bank처럼 사용하는 방식이다. 이렇게 되면 서로 다른 GIO에서는 독립적으로 동작할 수 있기 때문에 더 많은 양의 Data를 내보낼 수 있다. 조금 어려운 말로는 Gapless 없이 Data를 전송한다고 한다. CPU(AP, 시스템.. 등등)의 입장에서 보면 Bank가 4개만 있는 것처럼 보이는 것이다. 

 

 

# tCCD

 

여기선 쪼금 헷갈릴 수 있는데 궁금한 사람들을 위해 더 디테일하게 적어보자면..

위에서 하나의 CMD가 들어오고 다음 CMD가 들어올 수 있는 시간을 BL/n 혹은 tCCD(CAS to CAS Delay)라고 했다. BL/n은 CK Domain에 관한 단위이고 tCCD는 절대시간을 의미한다. 예를 들면 BL/n은 2tCK, tCCD는 2.5ns 이런 식이다.

 

왜 tCCD를 얘기하냐면 Bank Group Mode는 tCCD의 Margin을 확보하기 위해 생긴 Mode라고 볼 수 있기 때문이다. Speed가 올라 갈수록 BL/n은 줄어든다. 이론적으로 다음 CMD가 올 수 있는 시간이 짧아진다는 의미다. 근데 tCCD의 실력치에는 한계가 있다. 실력치라고 하는 말은 물리적은 한계를 의미한다. 하나의 CMD가 들어오고 이에 따른 Data가 나가는 시간이 있는데 이게 한계가 있다는 말이다. 

 

그래서 이를 극복하고자 Bank Group Mode가 들어왔다. 서로 다른 Bank Group 동작일 때는 tCCD_S의 시간을 사용하고 같은 Bank Group에서 동작할 때는 tCCD_L의 시간을 사용한다. 서로 다른 Bank일 때는 더 빨리 올 수 있기 때문에 Short 한 시간으로 올 수 있고 같은 Bank Group이면 GIO를 공유하기 때문에 비교적 Long 한 시간이 걸리는 것이다.

 

tCCD : 다음 CMD가 들어올 수 있는 시간

tCCD_L : Bank Group Mode에서 같은 Bank Group 간 동작할 때, 다음 CMD가 올 수 있는 시간

tCCD_S : Bank Group Mode에서 서로 다른 Bank Group 간 동작할 때, 다음 CMD가 올 수 있는 시간  

 

 

# BL/n

 

혹시 BL/n에 대해 궁금한 사람이 있을까 싶어서 적어보면 BL/n도 tCCD처럼 Min/Max가 나눠져 있다. BL/n은 단순히 CMD을 입력으로부터 다음 CMD가 들어올 수 있는 시간이다. BL/n_min은 해당 CMD에 의한 Data 동작이 완료되는 시간을 의미한다. CK Domain이다 보니 마지막 Data를 내보내는 CK를 기준으로 한다.

 

BL/n_max는 Bank 동작이 완료되는 시점으로 Column이 보장해야 되는 시간이다. Data 전송이 끝나고 같은 Column에 다음 CMD가 들어올 수 있는 시간을 말한다. 

 

BL/n : Command가 들어오고 다음 Command가 들어올 수 있는 시간 간격 

BL/n_min : Command에 의한 마지막 Data가 나오는데 까지 걸리는 시간

BL/n_max : Bank 동작 완료까지 걸리는 시간. 즉, 동일한 Column에 Command가 들어올 수 있는 시간 

 

Bank Group Mode일 때 (High Speed)만 서로 다른 값을 가지고, Burst Length가 길거나 Low Speed인 경우에는 서로 같은 시간을 가지게 된다.

 

BL/_min/max도 High Speed일 때만 서로 다르고 Low Speed 일 때는 둘의 시간이 똑같다. 왜냐면 Low Speed이면 이미 tCCD를 다 만족했기 때문에 의미가 없어진다. High Speed로 갈수록 CK의 Speed는 빨라갈수록 tCCD / BL/n_min / BL/n_max의 값들은 줄어든다. 줄어든다는 말은 Spec에 최소로 만족하는 값들이 정해져 있는데 이에 가깝게 된다는 말이다.

 

Bank Group Mode에서 Same Bank / Different Bank에 따른 tCCD가 다르게 있다고 했다. 그러니 Bank Group Mode에서 Speed가 빠르니 마지막 Data까지 빨리 내보내서 BL/n_min은 만족했는데 아직 동일 Column에 CMD를 입력할 수 있는 시간은 만족하지 못할 수 있다. 그래서 BL/n_max를 만족할 때까지 기다려야 되는 것이다. 어려운 내용인 거 같다. tCCD랑 BL/n의 연관성이 헷갈린 건 사실이다.

 

 

# 8Bank Mode

 

이제 마지막이다. 8Bank Mode는 조금 독특하다. 한 번에 많은 Burst Length를 내보내고자 만든 Mode이다. 하나의 CMD를 날리면 많은 양의 Data를 받으려고 만들었구나 하면 된다.

 

LPDDR5에만 있는 Mode인데 LP6는 사라졌다. 그래서 간단히만 알아보자. LPDDR5는 하나의 Bank에 2개의 Byte로 나눠져 있다. 8Bank Mode는 같은 Byte에서 Bank를 짝을 지어서 동작한다. 그래서 무조건 BL32로 동작한다. 당연히 CMD를 완료하는 시간이 길고, ALL Frequency에서 동작 가능한 Mode이다.   

 

 

 

# Summary

 

 

*Pre-fetch Bit

-. Gapless 동작을 위해 Data를 묶어서 Block 단위로 미리 가져오는 방식. RD/WT (Column) 동작을 할 때, 처음 관여하는 Data 수, 다른 말로는 한 번의 RD/WT를 할 때 나오는 Bit의 수의 단위. == BL의 수

 

*Page Size

-. Active 할 때 Enable 되는 Sense Amp에 묶여 있는 Data의 Size == 하나의 Row에 묶여 있는 DQ의 Size

 

*Burst Lengh

-. 하나의 DQ Pin에서 연속적으로 나갈 수 있는 DQ의 수

반응형