JEDEC 스펙으로 살펴보는 HBM3
최근 몇 년 사이 생성형 AI와 대형 언어모델 (LLM, Large Language Model) 응용처가 늘어나면서 GPU/NPU/AI 가속기 등의 수요가 폭증하고 있으며 이들이 요구하는 엄청난 메모리 대역폭에 대응하기 위한 HBM3 DRAM 또한 주목을 받고 있습니다. HBM3가 주목 받는 상황에 맞춰, 이번 글에서는 JEDEC spec.을 통해 HBM3의 주요 항목들을 표로 정리하고 세부 사항을 하나씩 살펴보도록 하겠습니다.
항목 | 세부내용 |
최대 전송 속도 | 6.4Gbps (HBM3)
9.2~10Gbps (HBM3E) |
전원전압
(VDDQL/VDDQ/VDDC/VPP) |
0.4V/1.1V/1.1V/1.8V |
Channel 구성 | 총 16 channel
각 channel 당 2개의 pseudo channel |
Channel 당 data width
(16 Channel 전체 data width) |
64-bit
(64-bit x 16 channel = 1024-bit) |
Channel 당 Bank 구성 | 8 BG, 4 Banks/BG (Total 32 banks) – 8H
12 BG, 4 Banks/BG (Total 48 banks) – 12H 16 BG, 4 Banks/BG (Total 64 banks) – 16H *BG – Bank Group |
Burst Length | BL8 |
ECC features | System ECC (metad ata 저장공간 제공)
On-die ECC Error Check and Scrub (ECS) |
Test and Repair interface | IEEE1500 (16 channel 공통) |
Overview
HBM3의 경우 다른 종류의 DRAM과 구조상의 차이가 크기 때문에 기본적인 구조에 대해 간단히 설명하겠습니다. 독립된 패키지로 구성된 LPDDR5, DDR5, GDDR6 등의 DRAM과 달리 HBM3는 여러개의 DRAM die들을 수직으로 쌓아 TSV(Through Silicon Via)를 통해 연결하여 하나의 제품이 됩니다. 이렇게 여러개의 die를 쌓아 만든 HBM3는 단독으로 패키징 되는 것이 아니라 silicon interposer 위에 host-die와 나란히 올려져 interposer내의 metal routing을 통해 host-die와 연결됩니다. Interposer상에 조립된 host-die와 HBM3 DRAM은 이후 다시 패키지 substrate위에 올려져 SiP(System in Package)로 조립되게 됩니다. (아래 그림 참조) 아래 그림은 1개의 host-die와 1개의 HBM3 DRAM이 연결된 예제를 보여주지만 필요에 따라 하나의 SiP로 조립되는 host-die와 HBM3 DRAM의 개수는 달라질 수 있습니다. 예를 들어 nVidia의 Blackwell GPU의 경우 host-die 2개와 8개의 HBM3E DRAM이 하나의 SiP로 조립됩니다.
HBM3의 장점은 다른 종류의 DRAM으로는 결코 구현할 수 없는 용량과 대역폭을 하나의 패키지 안에 구현할 수 있다는 점입니다. 여러개의 die들을 수직으로 쌓은 덕분에 16 채널의 DRAM을 11x11mm2 정도의 작은 면적에 집적할 수 있으며 PCB에 그릴 수 있는 것 보다 훨씬 세밀한 pitch로 silicon interposer 내에 metal routing을 그릴 수 있기 때문에 host die와 연결되는 data width도 1024-bit으로 크게 넓혀 높은 대역폭을 확보할 수 있는 장점이 있습니다. 이런 장점들은 반대급부로 기술적인 난제를 만드는데, 여러개의 die들을 하나씩 쌓고 다시 interposer에 붙이고 또다시 패키지로 조립하는 과정에서 die들이 여러차례 열과 물리적인 스트레스를 받기 때문에 불량률이 높아지는 단점이 있으며, host die와 HBM3 DRAM 사이의 전기적 신호를 측정장비를 통해 직접 probing할 수 없기 때문에 문제가 발생했을 때 원인을 분석하기가 힘든 것도 대표적인 어려움 입니다.
전송속도 및 전원전압
HBM3의 다음 세대로 생각되고 있는 HBM3E DRAM의 경우 data pin 1 개당 9.2~10Gbps 정도의 전송속도를 지원한다고 발표되고 있습니다만 (관련 링크), JEDEC spec. 문서상으로 정의된 최고 data rate는 6.4Gbps 입니다. HBM3의 data width는 1024-bit(128 Byte)이므로 6.4Gbps의 전송속도면 819.2GB/s의 대역폭이 됩니다. HBM3E의 경우 data rate외에는 HBM3와 거의 동일한데 9.2Gbps에 대해 HBM3E의 대역폭을 계산해보면 1.15TB/s에 달하게 됩니다.
HBM3의 코어 회로와 IO 구동에 사용되는 VDDC/VDDQ 전압은 1.1V이며 host die와 data 전송에 사용되는 전압인 VDDQL은 0.4V로 상대적으로 낮습니다. HBM3 DRAM과 host die를 연결하는 interposer내의 metal wire routing 길이는 1mm 내외로 매우 짧기 때문에 VDDQL 전압을 낮게 쓰기에 유리한 면이 있습니다. VPP는 word line 구동과 HBM3 DRAM 내에서 필요한 reference voltage들을 생성하는데 사용되는데 다른 DRAM들과 마찬가지로 1.8V를 사용합니다.
Channel 구성 및 Data width
HBM3는 논리적으로 독립 동작이 가능한 16개의 channel들이 물리적으로 하나의 DRAM으로 엮여 있는 형태입니다. 하나의 channel당 64-bit의 data width를 가지며 16 channel을 모두 합하면 64 x 16 = 1024-bit의 data width를 가지게 됩니다. Host die와의 address/command 및 data 전송을 위한 전기적 IO를 담당하는 맨 아래층의 die를 buffer(또는 base) die라고 하며 data를 저장하기 위한 cell array를 포함하는 die를 core die라고 합니다. Core die 1개당 4개의 channel을 포함하도록 spec.이 정의되어 있으며 4개의 core die를 쌓아 16 channel(4-channel x 4 core dies)을 구성하게 됩니다. Core die를 4개 쌓은 단위를 하나의 stack으로 부르며 HBM3 DRAM은 용량에 따라 stack을 2개에서 4개까지 가질 수 있습니다. 하나의 stack당 4개의 die가 쌓여 있으므로 HBM3의 구성은 8H/12H/16H(High)중의 하나가 됩니다 (4H 구성은 spec.에 정의되어 있지 않음). JEDEC spec. 상 core die를 몇 개를 쌓더라도 HBM3 DRAM의 전체 높이는 720um를 맞춰야 하는데 이 때문에 [1]의 논문에 의하면 12H 구성만 되어도 core die 한장의 두께가 30um 정도로 엄청나게 얇아진다고 합니다. 16H 구성의 경우 core die의 두께를 얇게 만들기가 힘들기 때문인지 아직까지는 양산 소식을 접하지 못했습니다.
아래 그림은 12H HBM3 DRAM의 예인데 buffer die위에 12개의 core-die가 쌓여 있습니다. SID(Stack ID)는 0(2’b00) ~ 2(2’b10) 까지 3개가 되며 하나의 stack 내에서 동일한 위치에 있는 channel 3개가 모여서 HBM3 DRAM 외부에서 볼 때 1개의 channel을 구성하게 됩니다. LPDDR과 같은 다른 종류의 DRAM은 address가 row, bank, column address 3부분으로 구성되지만 HBM의 경우는 SID가 추가되어 address가 row, SID, bank, column의 4부분으로 이루어집니다.
Pseudo Channel
HBM3을 포함하여 모든 DRAM은 한번에 burst length 단위로 read/write 동작을 수행하는데, 이 때 data width x burst length 보다 작은 size로 read/write를 수행하면 DRAM의 대역폭이 낭비되게 됩니다. HBM3의 경우 channel 당 data width는 64-bit, burst length는 8로 정의되어 있어 만약 channel 전체를 하나의 단위로 사용한다면 64-bit x 8-burst = 512-bit 단위로 read/write를 수행해야 합니다. 이 경우 read/write의 최소단위 보다 작은 256-bit의 data 만을 읽고 싶더라도 일단은 512-bit 단위로 data를 읽어들인 후에 필요 없는 256-bit를 버려야 하는 비효율이 발생합니다.
Pseudo channel은 이러한 비효율을 피하기 위해 정의된 기능인데 HBM3에서 하나의 64-bit channel은 두 개의 32-bit pseudo channel로 나뉘어 사용되게 됩니다. 두 pseudo channel은 address/command pin을 공유하지만 data에 대해서는 서로 독립적으로 read/write/refresh 동작을 수행할 수 있어 read/write 수행의 단위를 32-bit x 8-burst = 256-bit으로 줄일 수 있습니다. 다만 self-refresh나 power down mode 진입은 pseudo channel간 독립적으로 수행될 수 없고 mode register 설정도 두 pseudo channel이 공유하게 됩니다.
Address/command pin은 data pin에 비해 utilization이 낮은 편이라 2개의 pseudo channel이 하나의 address/command pin을 공유하더라도 두 pseudo channel의 read/write 명령이 서로 충돌하지 않도록 명령어를 scheduling 하는 것이 크게 어렵지 않습니다. HBM3의 pseudo channel 구성은 host-die와 연결되어야 하는 pin의 개수를 늘리지 않으면서도 read/write 수행의 단위를 작게 유지하여 효율적인 data access를 가능하게 하는 아이디어 입니다.
System ECC / On-die ECC / ECS
HBM3는 spec.상 최대 64GB까지 용량이 정의되어 있고 이를 저장하기 위한 690억개 가량의 bit cell들 중에 1개의 불량도 허용하지 않는 것은 사실상 불가능하므로 bit cell data의 오류를 고칠 수 있는 ECC(Error Check and Correction)는 필수 기능입니다. HBM3가 지원하는 ECC는 System ECC와 On-die ECC 두 가지인데 이전 세대인 HBM2E와 비교할 때 On-die ECC와 관련된 기능이 강화되었으며 On-die ECC의 처리 상태를 host-die에 직접적으로 알려줄 수 있는 transparency protocol이 추가 됐습니다.
System ECC
System ECC를 지원하기 위해서 HBM3 DRAM은 직접 data에 대한 parity를 계산하지는 않지만 host-die가 계산한 parity를 저장하기 위한 별도의 저장공간을 제공합니다. 앞에서 설명한 대로 HBM3는 pseudo channel당 256-bit 단위로 data를 저장하거나 읽어 들이게 되는데, HBM2E의 경우 256-bit당 32-bit의 ECC parity 저장공간을 제공했지만 HBM3의 경우 256-bit당 16-bit으로 parity 저장공간이 줄어 들었고 이름도 ECC parity 대신 meta data로 바뀌었습니다. 이는 검출 가능한 bit error의 수정은 On-die ECC에 맡기고 meta data는 On-die ECC가 검출하지 못한 multi-bit error를 검출하는데 사용하는 방안도 JEDEC spec.을 정할 때 고려했기 때문입니다 [2].
JEDEC spec. 에서는 meta data 영역에 어떤 data를 저장해야 하는지 정의하고 있지 않기 때문에 meta data를 어떻게 사용할지는 AI 가속기나 GPU 등의 host-die 설계자의 선택이 됩니다. Meta data의 사용 방법에 대한 예를 [3]의 논문에서 찾아볼 수 있는데, meta data 영역에 ECC parity 대신에 CRC-16 (Cyclic Redundancy Code, 16-bit) 코드를 저장하여 data의 오류 수정을 시도하는 대신 cell data에 불량이 있을 때 검출율을 높이는 방향으로 meta data 영역을 사용하는 방법을 제안하고 있습니다.
On-die ECC
HBM3의 On-die ECC는 최소 access 단위인 256-bit data와 이에 해당하는 meta data 16-bit을 합한 272-bit에 대해 32-bit의 ECC parity code를 덧붙여 data와 meta data를 보호 합니다. 삼성전자에서 발표한 [3]의 논문에 따르면 HBM2E에서는 SECDED (Single Error Correction, Double Error Detection) 기능을 가진 Hamming code가 On-die ECC 회로 사용되었지만 HBM3에서는 보다 강력한 Code인 Reed-Solomon code가 On-die ECC에 사용된다고 합니다. Hamming code의 경우 256-bit 중에 1-bit에 대한 error만 수정할 수 있었지만 Reed Solomon code의 경우 error-bit의 분포에 따라 최대 256-bit 중에 16-bit까지 error를 수정할 수 있습니다. JEDEC spec.에서는 On-die ECC를 위해 어떤 error correction code를 써야하는지 정하지는 않았지만 SK Hynix에서 발표한 [1]의 논문에서도 삼성전자와 동일하게 On-die ECC를 위해 Reed-Solomon code를 사용한다고 밝히고 있습니다.
HBM3는 read 동작을 수행시 HBM3 DRAM에서 읽고 있는 data에 대해 On-die ECC 처리결과도 함께 알려줍니다. Pseudo channel 당 2개의 SEV(Severity) pin이 있는데 하나의 read 명령어로 읽을 수 있는 256-bit data에 대해 아래의 4가지 상태 중의 하나를 알려줍니다.
- NE (No Error) – On-die ECC가 error 발견할 수 있는 error가 없었기 때문에 data 수정이 없었음.
- CEs (Correctable single-bit error) – On-die ECC가 single-bit error를 수정했음.
- CEm (Correctable multi-bit error) – On-die ECC가 multi-bit error를 수정했음. ([1], [3]의 논문의 경우 최대 16-bit)
- UE (Uncorrectable error) – On-die ECC가 수정할 수 없는 error가 발생 했음.
ECS (Error Check and Scrub)
ECS기능은 On-die ECC 기능을 사용해서 HBM3 DRAM에 저장된 data의 신뢰성을 높이는 방법입니다. HBM3 DRAM이 all-bank refresh를 수행하거나 self-refresh 상태에 있을 때 HBM3 DRAM이 host-die로 부터의 read/write 명령과 상관없이 백그라운드 작업으로 row address를 하나씩 증가시켜가며 저장된 data를 읽어보고 수정 가능한 error가 발생하면 On-die ECC 회로를 사용하여 error를 수정하여 다시 저장합니다. 앞에서 설명한 SEV pin은 ECS 기능에 대해서도 동일하게 NE/CEs/CEm/UE 등의 상태를 알려주는데 차이점은 ECS 기능에 의한 SEV pin 출력은 read 명령과 상관없이 발생한다는 점과 CEs는 DRAM 제조사가 자제적으로 정한 threshold값을 넘어야 출력된다는 점입니다. 백그라운드로 수정하는 single-bit error의 경우 1번 발생한다고 바로 SEV pin에 CEs를 출력하는 것이 아니라 single-bit error가 threshold 값보다 많이 발생한 후에야 CEs를 출력하는 것이지요.
IEEE 1500 Interface
IEEE 1500 인터페이스는 표준 테스트 인터페이스로 10~50MHz 정도의 저속으로 동작하는 직렬 인터페이스 입니다. 서버용 CPU의 메인메모리로 주로 사용되는 DDR5 DRAM의 경우 메인보드상의 DIMM slot에 장착이 되고 메모리에 문제가 생긴다면 DIMM 모듈을 교환하는 것이 가능하지만 HBM3의 경우는 host-die와 함께 하나의 package로 조립되기 때문에 HBM3에 문제가 생기면 host-die까지 함께 교환해야 하며 이는 상당한 비용을 발생시킵니다. HBM3는 DRAM에서 발생한 문제 때문에 패키지 전체를 교환하는 일을 최대한 피하기 위해 self test와 repair를 위한 명령어를 제공하는데 이런 명령들을 실행하기 위한 인터페이스가 IEEE 1500 인터페이스 입니다. IEEE 1500 인터페이스는 16 channel 전체가 공유하는데 지원하는 주요 명령어는 아래와 같습니다.
- EXTEST_RX/EXTEST_TX – Host-die와 DRAM사이의 연결이 제대로 되어 있는지 검사하기 위한 명령어로 host-die와 DRAM을 각각 TX/RX로 바꾸어 설정하며 양방향 연결에 문제가 없는지 확인
- SOFT_REPAIR/HARD_REPAIR – 위의 EXTEST 명령어 실행의 결과로 연결에 문제가 있는 signal이 발견 되었을 때 redundancy pin으로 연결을 대체시키는 명령어. Soft repair는 전원이 꺼지면 repair 결과가 사라지고, hard repair는 전원을 껐다 켜도 repair 상태가 유지 됨.
- MBIST – Host-die와 상관 없이 DRAM 내부의 cell을 읽고 쓰는데 문제가 없는지 확인하기 위한 명령어. 메모리 제조사마다 명령어 사용법이 다르며 MBIST는 Memory Built-In Self Test의 약자.
- HS_REP_CAP – 메모리 cell array 내부에 repair를 위한 redundancy row가 남아 있는지 확인하기 위한 명령어.
- SELF_REP/SELF_REP_RESULT – MBIST 명령어 실행결과 repair가 필요한 row가 발견될 경우 repair를 실행하고 결과를 확인하기 위한 명령어.
위에서 설명한 명령어 이외에도 host die와 HBM3 DRAM 사이의 전기적 delay 특성을 조정하기 위한 명령어들, ECS에서 error가 발견되었을 때 상황을 확인하기 위한 명령어, HBM3 내부의 mode register와 온도 등을 확인하기 위한 명령어들도 있지만 이 글에서는 HBM3의 신뢰성을 유지하기 위한 명령어들을 위주로 간단히 설명했습니다.
마치며…
HBM3 DRAM은 저전력 기능을 강조한 LPDDR5, 높은 전송속도를 위한 GDDR6, 여러개의 DRAM 모듈을 바탕으로 용량 확장을 위한 기능에 집중한 DDR5 등에 비해 DRAM 자체의 기능은 상대적으로 단순한 편입니다. 다만 무조건 16-channel 단위로 사용되어야 하는 조건에서, 여러 차례의 조립 과정을 거치면서 하나의 channel이 망가졌다는 이유로 HBM3와 host-die가 조립된 전체 패키지까지 버려야 하는 상황을 피하기 위해 다양한 self test와 repair기능을 제공하는 것이 특징입니다. 이에 더해 여러개의 channel이 서로서로 열과 전기적 noise를 가하는 상황에서도 안정적인 동작을 보장하기 위해 강력한 On-die ECC 기능이 탑재된 것도 기억해야 하는 특징입니다.
References
[1] M. -J. Park et al., “A 192-Gb 12-High 896-GB/s HBM3 DRAM with a TSV Auto-Calibration Scheme and Machine-Learning-Based Layout Optimization,” 2022 IEEE International Solid-State Circuits Conference (ISSCC), San Francisco, CA, USA, 2022
[2] S. Gurumurthi et al., “HBM3 RAS: Enhancing Resilience at Scale,” in IEEE Computer Architecture Letters, vol. 20, no. 2, pp. 158-161, 1 July-Dec. 2021, doi: 10.1109/LCA.2021.
[3] Y. Ryu et al., “A 16 GB 1024 GB/s HBM3 DRAM With Source-Synchronized Bus Design and On-Die Error Control Scheme for Enhanced RAS Features,” in IEEE Journal of Solid-State Circuits, vol. 58, no. 4, pp. 1051-1061, April 2023