各位专家号。对于tcp3d我有个疑问。从文档上来看,tcp3d工作在double buffer模式下时,是有两套独立的输入配置寄存器,但是只有一个处理通道。一般情况下,会用作ping/pong模式。
但是我可以把它当做两个逻辑上独立的tcp decoder吗?比如core0使用process A, core1使用 process B。对于每个core来说,都如同使用一个完整的tcp decoder。只不过实际tcp3d内部会每次只能处理一个process过来的解码请求,而不能像split mode那样可以并行处理两个解码请求。
如果可以,还想了解一下,在这种方式下,如果process A和process B都被trig了,tcp3d会优先选取哪一个来做处理呢?
多谢。
Andy Yin1:
如你的理解,double buffer mode下,只是输入配置及数据buffer、输入通道等是有两套,但是TCP3D内部译码模块是只有一套共享,只能串行对每一个输入的block进行译码,输入译码需要保证ABABAB……的顺序,以保证TCP3D内部状态机工作正常,所以如果AB的配置及数据同时被trig,则先做A,再B,再A的顺序。
xiaolong dou:
回复 Andy Yin1:
Andy,多谢你的回复。我对你的这句话有点不理解:”输入译码需要保证ABABAB……的顺序,以保证TCP3D内部状态机工作正常“
请问这个是tcp3d内部自己可以保证,还是必须要外部保证的?从文档上来看,似乎并没有要求外部一定是要ABAB的顺序来进行触发。
比如说,我如果把process A和B当成2个独立的tcp3d。在某个时刻可能出现的情况有3种:
1. 只有A被trigger
2. 只有B被trigger
3. AB都没有被trigger。
我的理解是,在前两种情况下,double buffer mode下的TCP3d,会选取当前trigger的一个request进行解码。而在第三种情况下,按你的说法,TCP3d内部自己会维护ABAB的顺序,是这样吗?(因为如果TCP3d只是简单的认为A或者B优先级高,则有可能会出现低优先级的那个始终得不到执行,所以请帮我确认一下。)