ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

High Bandwidth Memory DRAM(HBM3)协议详解

2026/8/14 14:50:48 拓冰建站 浏览量
High Bandwidth Memory DRAM(HBM3)协议详解 文章目录特性结构地址简易状态跳转初始化和trainingdbi操作row命令Column 命令powe-mode命令paritytemperature compensated refreshInterconnect Redundancy RemappingHBM3 Loopback Test ModesOn-die DRAM ECCSelf RepairIEEE Standard 1500Wrapper Data Register (WDR) TypesTest InstructionsBoundary Scan特性256bit预取针对单个伪通道32bit*BL8突发传输BL8每个PC通道一次传输8个DQ[31:0]支持64bit(DQ)4bit(ECC/SEV)独立R和C接口不同于之前的ddr/lpddr无cs。最大支持16个通道带宽以6400Mbps6400*64bit*16819200MB/s819.2GB/s结构每个die包含4个channel4个die堆叠为16个channel。一个channel包含2个伪通道pseudo channel。地址以16Gb12High为例每个通道12Gb每个伪通道12Gb/26Gb预取为32bit*8256bit一列是256bit总共2^5*256bit1024B1KBSID[1:0]不能取11b以pc为例计算容量2^4*2^2*3/4*2^14*1KB6Gb。以24Gb16High为例每个通道24Gb每个伪通道24Gb/212Gb预取为32bit*8256bit一列是256bit总共2^5*256bit1024B1KBRA[14:13]不能取11b以pc为例计算容量2^(42)*2^13*2^2*3/4*1KB12Gb。以SID[1:0]和BA[1:0]推算最小2^416 Bank最大2^(42)64Bank每个Bank Group下4个Bank其中48bank原因为SID[1:0]不能为112^4*2^2*3/448。简易状态机bank在ilde转态下时可任意跳转状态在bank处于激活状态时可对该bank做读写操作等待刷新周期达到时需要对bank做刷新处理处理前先发precharge进行预充电bank回到ilde状态然后再发refresh但刷新可以在未激活的bank进行per-bank刷新。初始化和training初始化电源供电稳定后复位释放R接口上发PDE等待tINIT4 nCK后时钟稳定R接口发PDX之后发RNOP命令C接口上传CNOP命令做CA training后再发MRS(mode regitser set)。training流程CA trainingieee1500接口相关信号。ieee1500时钟要求。Wrapper Instruction Register (WIR)包含通道和指令地址WIR[12:8]中4bit选中16个channelWIR[7:0]用于表示指令地址。可根据实际通道数配置WIR[12:8]若16channel可配置WIR[12:8]4h1F。Wrapper Data Register(WDR)指示该寄存器的有效长度。AWORD_MISR_CONFIG寄存器WDR Length对应8bit。READ_LFSR_COMPARE_STICKY寄存器WDR Length对应99bit。可通过配置M1,M0实现不同的功能。HBM3无boot频点但有低速接口ieee150050Mphy可通过ieee1500接口和HBM DRAM通信这里会使用到DRAM内部的指令寄存器Instruction Register。step1、phy内部使用跟颗粒端类似的AWORD_MISR逻辑预设一个seed(38h2AAAAAAAAA)然后再通过转换逻辑转换到R[9:0],C[7:0]给到颗粒端。step2、phy通过ieee1500发WIR[12:0]13h1F0DWDATA[7:0]8h04颗粒内部的AWORD_MISR逻辑预设一个固定的38bit的38h2AAAAAAAAA并且会清掉AWORD_LFSR_COMPARE_STICKY指令寄存器的结果。step3、phy通过ieee1500发WIR[12:0]13h1F0DWDR[7:0]8h05转换到LFSR模式开始移位操作。step4、颗粒端采样phy发送的R和C与内部生成的R/C结果比较结果存入到AWORD_LFSR_COMPARE_STICKY指令寄存器。step5、phy通过ieee1500接口回读AWORD_LFSR_COMPARE_STICKY指令寄存器结果判断R/C是否为0为0则读写无问题为1时phy调整delay然后再回读指令寄存器判断结果。。Mode RegisterCA training完后HBM3颗粒正常识别MR命令。可根据不同速率和不同模式要求配置不同MR。WDQS to CK LevelingWDQS内部做2分频得到WDQS/2通过相位调整单元实现对WDQS/2输出不同的相位0°90°180°270°。通过DEER信号反馈当前CK和WDQS对齐的情况。step1、phy通过C[7:0]总线发送MRS(Mode Register Set)配置MR8 OP[3]1b使能WDQS2CK Training类似DDR的write leveling调整CK和WDQS的相位对齐。step2、phy发送WDQS颗粒内部将接收到WDQS信号2分频得到WDQS/2WDQS/2保持和WDQS相位差为0°phy调整WDQS的延时颗粒端CK上升沿采样WDQS/2采样结果输出到DERR信号。step3、phy内部采样反馈的DERR信号分2种情况第一种结果为低WDQS相位相对CK晚了需要减小WDQS的delay等到phy采样DERR信号刚好为高时CK和WDQS处于对齐状态第二种结果为高需要增加WDQS的delay等到phy采样DERR信号刚好为低时再按第一种情况调整WDQS的delay等到phy采样DERR信号刚好为高时CK和WDQS才处于对齐状态。step4、phy采样到DERR从0到1跳变记录当前的delay值配置MR8 OP[3]0b退出WDQS-to-CK Training。注一个channel分2个PC通道每个PC通道包含一个WDQS和DERR信号需要单独判断DERR。Duty Cycle Adjuster (DCA)/Duty Cycle Monitor (DCM)配置MR8 OP[1]1b使能Duty Cycle Monitor功能。PC0的WDQS0对应MR11的OP[3:0] PC1的WDQS1对应MR11的OP[7:4]支持15个step。DCA 单步支持[2,5]ps整个调整范围在[15,35]ps。图中Increase指示当前WDQS占空比大于50%Decrease相反。step1、phy发送WDQS[1:0]。step2、phy通过C[7:0]总线发送MRS(Mode Register Set)配置MR11设置step使能Duty Cycle AdjusterDCA。step3、phy通过C[7:0]总线发送MRS(Mode Register Set)配置MR8 OP[1]1b使能Duty Cycle MonitorDCM。step4、颗粒端采样phy发送WDQS信号计算占空比采样结果输出到DERR信号。step5、phy内部采样反馈的DERR信号分2种情况第一种结果为低说明此时占空比小于50%需要重新配置DCA code等到phy采样DERR信号刚好为高时此时颗粒内部WDQS判断占空比大于或等于50%继续调整等到DERR从1跳变到0记录整个0到1和1到0的区间取均值第二种结果为高此时颗粒内部WDQS判断占空比大于或等于50%继续配置DCA code等到DERR从1跳变到0记录整个1到0的区间取均值得到对应DCA code值和phy内部需要调整的WDQS延时。step6、phy通过C[7:0]总线发送MRS(Mode Register Set)配置MR8 OP[1]0b退出Duty Cycle MonitorDCM。注一个channel分2个PC通道每个PC通道包含一个WDQS和DERR信号需要单独判断DERR。Read Data Trainingstep1、phy通过C[7:0]总线发送MRS(Mode Register Set)配置MR7 OP[0]1b使能DWORD Loopback功能读写数据来自MISRMR7 OP[1]0b数据从DWORD MISR返回MR7 OP[5:3]010b使能Register Mode。固定数据返回从颗粒phy调整rdqs delay采样dq数据更有益。step2、phy内部需使用同颗粒一致的MISR逻辑预设相同数据便于数据比对。step3、一个channel包含2个pc通道需要phy发送含不同pc通道的读命令分别对pc通道下的数据采样比对。step4、phy内部调整rdqs采样dq数据与内部期望数据比对找到窗口取均值。step5、配置MR7 OP[5:3]001b使能LFSR Mode线性移位内部也采用类似的移位逻辑phy内部采样dq数据与期望数据比对找到窗口取均值。注phy可调整读命令的间隔tCCDS2nCK可实现数据有气泡和无气泡时采样使Training结果更可靠。Write Data Training写Training跟读类似在读训练完成后phy通过C[7:0]总线发送MRS(Mode Register Set)配置MR7 OP[0]1b使能DWORD Loopback功能读写数据来自MISRMR7 OP[1]0b数据从DWORD MISR返回。phy发送写数据到颗粒颗粒采样数据存入阵列phy再发送读命令读数据phy内部采样比对判断结果与期望值是否一致不一致时调整delay再采样比对。DBI操作增加DBI信号传输减少DQ信号传输的翻转减低功耗。DBI写操作写如数据到颗粒配置MR0 OP[0]1b根据DBI位与DQ异或后结果写入阵列配置MR0 OP[0]0bDQ数据保持不变写入。DBI读操作配置MR0 OP[1]1b第一笔读的DQ不需要管RDBI是否使能直接输出第二笔DQ和DBI需要上一拍的DQ和当前的DQ做异或判断0到1和1到0的翻转个数根据翻转个数配合上一个数据的DBI得到当前数据和DBI若异或后翻转数小于4则当前DBI为0若等于4且上一笔数据的DBI为1则DBI为1数据反转等于4且上一笔数据的DBI为0则DBI为0数据不反转若异或结果大于4DBI置高数据反转配置MR0 OP[1]0bDQ数据保持不变吐出。部分逻辑代码如下always (posedge clk or negedge rst_n) beginif (!rst_n) beginrdq_dbi_latch 0;endelse if (rd_latch) beginrdq_dbi_latch rdq;endendalways (posedge clk or negedge rst_n) beginif (!rst_n) beginpre_dbi_latch 0;endif (rd_latch) beginpre_dbi_latch rdbi_pc;endendassign rdq rdbi ? ~rdq_dbi : rdq_dbi;assign rdbi_comp rdq_dbi^rdq_dbi_latch ;assign pre_dbi pre_dbi_latch;assign rdbi (rdbi_comp[7] rdbi_comp[6] rdbi_comp[5] rdbi_comp[4] rdbi_comp[3] rdbi_comp[2] rdbi_comp[1] rdbi_comp[0]) 4h4 ? 1b1 :(rdbi_comp[7] rdbi_comp[6] rdbi_comp[5] rdbi_comp[4] rdbi_comp[3] rdbi_comp[2] rdbi_comp[1] rdbi_comp[0]) 4h4 ? pre_dbi : 1b0;row命令HBM3不同于之前的DDR/LPDDRCA总线分为R和C总线CS总线已去除。Active命令发读写命令之前必须对该bank做激活开行操作。激活命令包含PC(Pseudo Channel)操作一个channel包含2个pc一次R总线上只能访问一个pc伪通道pc0和pc1相邻最小1nCK相同pc通道激活分tRRDS(不同bank group)和tRRDL(相同bank group。tRCDWR激活命令到写延时tRCDRD激活命令到读延时tRAS激活到预充电命令的延时tRC激活bank a到激活bank a的延时tRP预充电命令周期。从命令真值表来看PREab和PREpb在R-bus的上升沿和下降沿都有效。连续激活命令不超过4个tFAW窗口内。PRECHARGE (PREpb) and PRECHARGE ALL (PREab) Commands激活bank后需要bank进行预充电才能回到idle状态进行其他操作如刷新同bank。带AP的读写会关行所以对关行的bank不能再做读写访问。顺序读写为什么说不要ap命令假设开行按协议最大4个BG一次写操作到关行完成需要tRCDWRWL2RU(tWR/tCK) tRP nCK一次读操作到关行完成需要tRCDRDtRTP tRP nCK如果带了预充电每次写都需要等待tRP时间后发激活激活后tRCDWR之后再写而不带ap的写操作可以按最小的tCCDs2nck发写命令这样效率和带宽利用率更高使控制器调度和映射地址尽量分到不同bg。随机读写随机访问地址没有规律且访问比较离散以写为例一次写操作到关行完成需要tRCDWRWL2RU(tWR/tCK) tRP nCK关行命令PRE发送时间不确定如访问同bank相同行不同列地址时此时bank的刷新周期已到需要先PRE然后REF之后再ACT再写而带预充电的命令可以避免此问题只需要发一个REF/ACT/WR。注其实控制器内部可以先将命令缓存到buffer先开行然后从buffer中去选先发行命中的数据这样效率相对更高如果buffer内的都是在不同行可以在发读写后带预充电。REFRESH Command (REFab)all bank刷新tRFCabrefab刷新周期刷新命令协议支持最大推迟8个refab间隔9*tREFI。刷新推迟支持8个刷新命令被推迟发送。PER-BANK REFRESH Command (REFpb)per-bank刷新tRREFD不同bank刷新周期tRFCpb相同bank的刷新周期。刷新bank计数以16个bank为例per-bank刷新16个bank轮询刷新一轮且一轮中一个per-bank不能刷新多次一轮刷新完后下一轮开始刷新可以跟第一轮不一致如果一轮16个bank中已经刷新了8个bank剩余8个bank还未刷新bank counter会记录当前的8个若下一次发all-bank刷新bank counter可以回到0重新开启下一轮刷新。all-bank刷新发起后需要等待tRFCab周期后发起其他命令操作per-bank刷新发起后同bank需要等待tRFCpb周期后发起其他命令操作不同bank需要等待tRREFD周期后发起其他命令操作。Refresh Management (RFM)刷新管理操作是管理控制器调度访问总是对同一bank反复激活对激活计数达到阈值后进行刷新管理发RFM刷新操作防止数据丢失。配置MR8实现RFM和ARFM。phy通过IEEE1500接口读取指令寄存器DEVICE_ID确定当前RFM的类型确定类型后再对应配置MR8的opcode读取DEVICE_ID中的RAADECRAAMMTRAAIMT值写入控制器对应的寄存器等到RAA计数达到阈值时发起RFM命令。Column命令RDA和WRA表示读和写命令带隐式预充电操作。Read OperationHBM3读的前导码固定tRPRE2tWDQSRDQS前导码固定tWPRE24tWDQSWDQS读的后导码固定tRPST2tWDQSRDQS后导码固定tWPST22tWDQSWDQS。无法配置是固定延时。tWDQS2DQ_OWDQS to read data and RDQS offset。tCCDS访问不同bank突发一次BL8WDQS是ddr采样WDQS:CK4:1CK8/2/41nCK不同bank的访问最小2nCK。当读命令间隔tCDD大于tCCDS后数据不连续有气泡。读命令到写命令延时tRTW。读命令发起后延时tRTP周期后可以关闭该行发起precharge操作预充电周期tRP。Write OperationtWDQS2DQ_IWDQS to write data offsettWPRE12tWDQStWPST14tWDQS。写不同bank间最小tCCDS2nCK保证写数据间连续。写命令发起到数据写入阵列延时WLBL/ntWR。Mode Register Set (MRS)phy和控制器可通过MRS命令实现对颗粒的MR进行配置。power-mode命令带SRE的PD颗粒端内部自己做刷新维护CK时钟做关断或者切换处理无需外部发刷新来保持数据。parityCommand/Address Parity奇偶校验原理统计发送数据中“1”的个数“1”个数是奇数则APAR传输“1”“1”个数是偶数则APAR传输“0”若RCARFUAPAR一起计算一次奇偶结果如果为奇数则AERR拉高反之AERR为低。AERR可以检测出上升沿和下降沿奇偶错误具体传输命令是上升沿还是下降沿还需进一步确定AERR信号不指示错误发生在上升沿还是下降沿。MR0 OP[6]1b使能CA parity。R bus上传输有奇偶错误tPARAC极性错误输出延时后拉高AERR。R 和C bus上传输都有奇偶错误tPARAC极性错误输出延时后拉高AERR。Data Parity分PC伪通道单独计算当MR9 OP[0]的Meta Data使能ECC有效后分读写DBI是否使能使能读写DBIPC0计算DQ[31:0]、ECC[1:0]、DBI[3:0]、DPAR[0]一起的奇偶若为奇数则DERR[0]拉高反之拉低PC1计算DQ[63:32]、ECC[3:2]、DBI[7:4]、DPAR[1]一起的奇偶若为奇数则DERR[1]拉高反之拉低若DBI不使能则计算中去掉DBI当MR9 OP[0]的Meta Data不使能分读写DBI是否使能使能读写DBIPC0计算DQ[31:0]、DBI[3:0]、DPAR[0]一起的奇偶若为奇数则DERR[0]拉高反之拉低PC1计算DQ[63:32]、DBI[7:4]、DPAR[1]一起的奇偶若为奇数则DERR[1]拉高反之拉低。PLparity latency极性延时可通过MR1的OP[7:5]配置PL2nCKtPARDQ写数据极性错误输出延时第一个BL8内有4个bit的极性传输错误DERR维持2个nCK的高CK:WDQS1:41nCK下包含BL4第二个BL8内2个bit的DPAR传输错误DERR维持1nCK。temperature compensated refreshHBM3 DRAM输出TEMP和CATTRIP信号TEMP信号可以用自适应调整刷新率如TEMP2b01刷新率为0.5*tREFICATTRIP信号作为超温信号处理可以通过中断上报需要关闭DRAM电源才能清除CATTRIP状态其中MR7的OP[7]可以触发此场景不能写为1。interconnect redundancy remappingAWORD Remappingphy通过IEEE1500接口发“HS_REP_CAP”命令查看能够可修复的资源每个SID对应的低2bit指示当前资源情况SOFT_REPAIR是一种软修复方式掉电等操作结果会丢失HARD_REPAIR硬修复可保存结果。不做AWORDROW Command Bus映射时默认lane[9:0]跟R[9:0]一一对应phy通过IEEE1500接口配置“LANE_REPAIR”的“AWORD_RA[3:0]”对应AWORD Row Command Bus Remapping中的“Register Encoding”当AWORD_RA[3:0]4hF时无修复RA表示冗余行。不做AWORDColumn Command Bus映射时默认lane[9:0]}跟{ARFU,APAR,C[7:0]}一一对应phy通过IEEE1500接口配置“LANE_REPAIR”的“AWORD_CA[3:0]”对应AWORD Column Command Bus Remapping中的“Register Encoding”当AWORD_CA[3:0]4hF时无修复。AWORD Remapping ExamplesColumn Command Bus中的C[4]对应lane出现故障需要修复分析可知phy通过IEEE1500接口配置“LANE_REPAIR”的AWORD_CA[3:0]4h4C4移到C5C0~C3不变其他保持默认值。DWORD RemappingDQ[63:0]ECC[3:0]DBI[7:0]SEV[3:0]PC0和PC1单独可配置每个4个ByteDWORD0_BYTE[3:0]/DWORD1_BYTE[3:0]通过指令寄存器“LANE_REPAIR”进行配置。DWORD Remapping ExampleDQ Bus中的ECC[0]对应的lane出现故障需要修复分析可知phy通过IEEE1500接口配置“LANE_REPAIR”的DWORD0_BYTE04h0ECC0数据移位到DQ0其他保持默认配置。HBM3 Loopback Test Modesphy和HBM3 DRAM一种外部回环测试方法包含AWORD和DWORD。AWORDphy通过IEEE1500接口配置“AWORD_MISR_CONFIG”指令寄存器使能AWORD MISR预设AWORD MISR对应的初始值0x2AAAAAAAA并复位“READ_LFSR_COMPARE_STICKY”指令寄存器的结果配置不同mode选择不同类型数据读“READ_LFSR_COMPARE_STICKY”指令寄存器的结果进行判断。DWORDphy通过MRS命令配置MR7使能DWORD Loopback模式读数据返回来自DWORD MISR配置DWORD MISR数据不同模式phy通过IEEE1500接口读“READ_LFSR_COMPARE_STICKY”指令寄存器的结果进行判断。On-die DRAM ECCECC 以符号为单位进行纠错而非逐 bit 纠错能纠正一个符号内的多位错误burst error。Self Repairphy通过IEEE1500下发“HS_REP_CAP”指令判断是否有资源可repairphy通过IEEE1500下发“SELF_REP”指令若当前配置“REP_TYPE”为cancel模式self-repair取消若未配置全channel需要再发“SELF_REP”指令若当前配置“REP_TYPE”为自测试但不修复通过读“SELF_REP”的SR_PROGRESS判断当前状态读“SELF_REP_RESULTS”判断SELP_REP的结果若当前配置“REP_TYPE”为auto-repair通过读“SELF_REP”的SR_PROGRESS判断当前状态读“SELF_REP_RESULTS”判断SELP_REP的结果若当前配置“REP_TYPE”为self-test和auto-repair通过读“SELF_REP”的SR_PROGRESS判断当前状态读“SELF_REP_RESULTS”判断SELP_REP的结果。IEEE Standard 1500IEEE1500时序解析以IEEE1500操作“AWORD_MISR_ CONFIG”为例WIR[12:0]13h1F0D16个通道对应寄存器地址写操作先拉高SelectWIR数据通过WSI总线数据呈现为1011_0000_1111_1先传低位数据串行输出且ShiftWR同步拉高数据进行内部移位等待WSI传输完最后一个数据拉低shiftWR拉高UpdateWR更新数据到AWORD_MISR_ CONFIG对应的寄存器拉低SelectWIR和UpdateWR完成本次写操作。Wrapper Data RegisterWDRTypesWIR[12:8]作通道选择使用。Test InstructctionsBoundary ScanHBM3颗粒是堆叠且一般是直接封装在处理器旁没有插槽和贴片方式为了测试信号的连通性可以通过IEEE1500配置“EXTEST_RX、EXTEST_TX”实现对122个硬件管脚进行测试。