2.2 工作原理
GT-48330作为CPU和G.Link接口的交换芯片间的桥梁,主要的工作就是将数据从交换芯片转给CPU,这对GT-48330来讲是一个接收过程;并将CPU发过来的数据转给交换芯片,这对GT-48330来讲是一个发送过程。
2.2.1 GT-48330的接收
GT-48330接收的数据分为4种:由交换芯片送过来的数据包、由交换芯片送过来的新地址消息(一个数据包只要通过交换芯片,包中的源地址信息就会被交换芯片记录并传送)、由交换芯片送过来的中断消息和CPU要从交换芯片中读取的消息。
(1)接收数据包过程 在GT-48330中存在2 kB的缓冲区(Buffer)用于接收来自交换芯片的包。由交换芯片产生的包发送结束消息(EOP)存在0x9E4 0x9EF中,当GT-48330接收到包,并监测到EOP后,他将发送相应的中断给CPU,CPU从Interrput-cause寄存器中可以获得中 断的原因,这样CPU就可以从Buffer中读取包。
当Buffer满时,如果GT-48330还没有完成对先 前包的处理,又有新的包到来,此时将会产生G.Link口的拥塞。GT-48330可以设置Disable PacketBlocking(DPB)bit来防止拥塞,当设为0时,GT- 48330将通过发流控消息来防止G.Link口的拥塞;当设为1时,GT-48330将通过拒绝这些包来防止拥塞,此时所有的包将被忽略。
(2)接收新地址消息的过程GT-48330中存在一个专用的新地址队列(NA_Q),共可以存储16个条目,对应的存储地址为 0x800~0x80F。当有新的地址到来时,GT-48330将发送一个中断给CPU,这样CPU就可以到0x800~0x80F中提取新的地址消息, 同时将Interrput-cause0寄存器清零;如果GT-48330还有新的地址,将会把新的地址消息放入到0x800~0x80F中,并再次发出 中断。
对于新地址队列溢出的情况,GT-48330可以通 过忽略或发流控消息来处理。这可以通过设置GT48330的Enable_registerbit来实现,而CPU可以通过监测NAQOF中断来获得。如果bit设置为1时,当NA_Q满时,GT-48330将忽略到来的新地址消息;如果为0时,当NA_Q满时则发流控信息,通知交换芯片,暂缓发送。
(4)CPU要从交换芯片中读取消息的过程CPU发送消息给交换芯片,表示要获取数据(例如一些端口状态信息)。此时,交换芯片会发送 Block_write消息给CPU,在GT-48330中有一个专用的32B的Buffer用于存储此消息,对应的存储地址 为:0x980~0x99F。当有block_write到来时,GT-48330将发送中断消息给CPU,CPU通过相关的中断位获取中断,然后来读取 block_write消息。
2.2.2 GT-48330的发送
对于GT-48330来说他具有2种发送方式:自动DMA方式和CPU传输方式。对于自动DMA的方式,不需要CPU进行干涉,GT-48330可以自动完成发送。对于CPU传输方式,则需要CPU对发送的过程进行干涉。
(1)自动DMA方式 CPU首先写传输数据(TD)寄存器,同时设置位,GT-48330根据TD来向交换芯片发送Buffer请求消息,在 TD消息中包含了目的交换芯片号、端口号、CPU号及包的数量等消息。CPU写数据到GT-48330的32 b的包存储空 间8LWW Buffer中,如果GT-48330接收到交换芯片可以开始传送包的消息(SOP),他将把包发送给相应的交换芯片;如果收到交换芯片的拒绝消息 (Buffer_rejecet),他将发送相应的中断给CPU,告诉发数据被拒绝。
(2)CPU传输方式 CPU先直接通过GNT-A/B Buffer来发送Buffer请求消息,CPU等待接收到SOP消息,此消息将被GT-48330存储在OGRBuffer中,然后再传给CPU。一旦 CPU收到SOP消息,就通过GT-48330的GNT-A/B通道来发送数据包,同时CPU还通过GNT-A/B来发送数据包传送结束(EOP)消息给 交换芯片。