手机自助网站建设,网站的建设求职简历,网站建设群号,云南省建设厅官方网站证书PCIe序的要求是为了满足满足生产者/消费者模型#xff0c;和避免死锁。可以通过配置RO和IDO使得报文通过中间路径变为宽松排序#xff0c;但可能会带来一些违反生产者/消费者模型的问题#xff0c;需要开发者自行保证.
生产/消费者工作流程
生产者#xff08;FPGA板卡和避免死锁。可以通过配置RO和IDO使得报文通过中间路径变为宽松排序但可能会带来一些违反生产者/消费者模型的问题需要开发者自行保证.
生产/消费者工作流程
生产者FPGA板卡消费者软件1将数据写入内存或者在本地准好数据轮询flag位位于内存直到该位为1。2写flag位为1置flag位为03查询status位位于FPGA直到该位为1将数据从内存中或去生产方读数据取出使用4status1后表示数据使用完毕置status0此次发送结束使用完数据后置status1
不同VC之间没有序的要求。
强序标准RO0IDO0
行穿越列写请求Col 2读请求Col3完成报文Col4写请求ANoYesY/N读请求BNoY/NY/N完成报文CNoYesY/N
YES必须能NO不能Y/N无序要求
在强序要求下Yes是为了保证不会出现死锁No是为了满足生产者/消费者模型。Y/N表示两者之间无序要求无论是否穿越都不会影响到生产者/消费者模型和出现死锁。
A2
写请求不能穿越写。生产者写了一笔数据到内存又写了1个flag1到另一个内存地址若后一个写穿越了前一个写软件轮询到flag后可能前一个写还未到达软件就会取到未更新的数据。这就破坏了生产者/消费者模型。
B2
读请求不能穿越写。 否则可能造成读到了已经被写请求覆盖的数据。
C2
完成报文不能穿越写。生产者写了一笔数据到内存置位于自己侧的寄存器为1消费者在不断轮询该寄存器。如果完成报文能穿越写就可能先读到flag为1但此时写数据还未更新软件取数据就出错了。这就破坏了生产者/消费者模型。
A3
写请求必须可以穿越读请求。如果总线上出现了NPPCpld三个包NP在最前面Cpld是不能穿越P的为了让Cpld穿越NP不造成死锁必须让P能穿越NP。
B3
读请求与读请求之间是没有序的要求的。读请求是可以相互穿越的。但这会带来cpld返回乱序的问题给处理数据方带来了麻烦。
C3
完成报文必须能够在读报文阻塞时穿越否则可能造成死锁。假设A和B都给对方连续发送NP报文导致对端NP buffer满了只有本地cpl发送出去了本地np buffer里的NP才会减一buffer才会空一点对面的NP才能再发送一个过来。如果cpl不能穿越np将造成死锁。
A4
写请求和完成报文没有序的关系。谁先谁后都不会影响到生产者/消费者模型也不会造成死锁。
B4
读请求和完成报文没有序的要求。
C4
完成报文和完成报文之间没有序的要求可以相互穿越返回。但是相同tag的报文要按序返回。不同tag之间可以乱序。