总结一下今天微信群中白平和罗玉平两位用户有关armv8上有谁搞过DDR 动态变频的讨论,供大家参考
白:
armv8上有谁搞过DDR 动态变频
罗:
armv8上支持DDR 动态变频,这个需要DDR controller支持
ARM的DMC controller支持的
嗯,有没有SMP 环境下的变频策略参考,我这边single core 没问题,SMP 就跪了.
DMC调频 是用软件来升频或者降频,软件是运行在SOC的system controller上的,常常是Cortex-M CPU,调频的时候DMC不会阻止CPU transfers,DMC自己有buffer,可以继续接收,只是不会发给DDR,这些对CPU是透明的,但如果buffer满了的话,CPU自然就发不了了,调频之后可能需要ddr calibration,我们也都是通过DMC驱动程序来完成的。只是我们在做这些操作的时候并不会让系统停下来
为啥SMP就不行了?具体原因是啥
我这边controller 和 PHY 不是arm家的,变频过程controller的AXI port 会block transactions ,可能CORE试图访问DDR挂了
向天笑:
DMC调频和dmc的设计关系蛮大的。如果dmc不能自己做 很多都要软件上去做的。比如要把各个master停住 不让他去访问ddr
赶紧换ARM 的吧
ddr controller可以buffering啊。
估计没法buffer了,controller的AXI port 不响应request.
一般来说,在其他master发数据到DDR时, 会有hardware的握手信息。看接收方ready后,数据才过来。 估计在变频过程中,你们用的DDR controller不能处理。
定位到具体原因了吗?不能“估计”。
IP 行为不清楚,我只能靠以前DDR变频遇到的现象猜测
软件workaround只能在变频过程中,不要发transaction到ddr。
哪个cpu ?
A53
芯片内部有SRAM吗?
必须有啊.
没有sram,single core 也肯定挂.
可能的话,可以把translation table切换到SRAM,一般SRAM跑在secure world,比如EL3。
把所有core都SMC 到EL3/SRAM上运行。
你们是付费客户,可以发邮件到support, support-sw@arm.com, 或者直接给我。这是一个大topic。
变频flow我都是通过smc sip trap到 el3 atf sram中了
看来只能把其他core 也trap到el3了,其实我非常不想这么做
是的,性能上会有抖动。
好奇ddr IP是谁的?
估计你们这款芯片定义的时候不支持DDR变频吧? 否则在需求分析的时候就应该考虑到。
支持,而且支持硬件辅助快速变频.
变频结束后不需要再做calibration.
变频过程中,假如有buffer, 并且满了之后,AXI 信号ARREADY(Read address ready),AWREADY(Write address ready)会拉低,数据不会过来。