2

考虑到处理器以 100 MHz 运行,并且数据以 1000 Mbit/s(8 位/时钟周期 @ 125 MHz)的速率从外部设备/外围设备进入处理器,这是处理传入流量的最佳方式以更高的速度到处理器?

4

4 回答 4

4

首先,你不能在软件中做到这一点。没有办法以足够的速率对数字线路进行采样,或者用它做任何有用的事情。

您需要使用硬件 FIFO 缓冲区或存储单元。当数据突发进入时,它可以被缓存在高速 FIFO 中,然后根据处理器的需要读出。

下降的高速 FIFO 芯片非常昂贵(尽管大多数是双端口的)。为了降低成本,最好使用 SRAM 芯片和硬件加法器来增加传入数据的地址线。

于 2010-06-18T20:05:23.003 回答
2

你缓冲它。通常,来自设备的数据使用 DMA(不涉及 CPU)写入内存缓冲区(循环队列)。cpu 以恒定速率从内存缓冲区中读取数据。通常设备以突发方式发送数据。这可以防止缓冲区被填满。如果数据太多,缓冲区溢出。

于 2010-06-18T20:07:10.347 回答
2

这对于软件来说并不少见。semaj 说对了。这是一个系统工程问题。其他人也有正确的答案。如果您想用 100MHz 处理器查看或处理该数据,那是不会发生的,不要费心去尝试。您可以查看它的快照或让硬件过滤掉您正在寻找的特定百分比。归根结底,虽然这是一个系统问题,但硬件提供了什么,将这些数据放在哪里,这些数据的软件任务是什么,它是否看到 X 缓冲区的数据进入了 gointa,以及通知 goouta 硬件有 X 缓冲区准备就绪?硬件是否检查并对齐缓冲区,以便您可以查看标头,然后决定将硬件路由到哪里?完成系统工程后,您将知道是否可以使用该处理器,以及是否可以使用它,它的工作是什么以及如何做。

你的直接问题。最好的处理方法是什么。处理它的最佳方法是让硬件(fpga、asic 等)将其移入和移出某些存储设备(可能是某种 RAM)。不一定是处理器用完的同一内存(DMA 是避免的好事情)。硬件是软件可以与之对话的东西,但您无法检查所有数据,所以不要尝试。不知道这是什么类型的数据,什么形式,软件看什么你愿意强迫硬件做多少工作等等决定了剩下的答案。如果您期望某个(保证的)百分比是坏的或不属于该处理器等,则将硬件过滤掉,然后您可以处理剩下的内容。

网络就是一个很好的例子,PC 有千兆端口,但不能处理千兆以太网线速数据。这就是为什么我们现在使用交换机而不是集线器,硬件切出一部分数据以便 pc 可以处理它,协议通过稍后重新发送来处理无法处理的数据。并且交换机处理器不查看所有数据,硬件将其分割,因此软件可以仅检查标头。或者有时软件只是管理驱动硬件的表,而硬件完成处理数据的所有工作。

做你的系统工程,答案会简单地掉出来。

于 2010-06-20T03:37:38.900 回答
1

DMA(直接内存访问)可能是解决方案,但是,内存总线似乎不太可能比处理器内核运行得更快,因此接收外设必须将数据接收到大于 8 位的寄存器中,因为无法维持 125MHz . 例如,一个 16 位寄存器将允许以 62.5MHz 的频率写入内存,这可能是可以实现的。此外,接收设备必须能够接受与核心时钟更快且异步的外部时钟。当然,接收外设也必须支持 DMA。

除非您更具体地了解您的硬件和通信协议,否则很难给出一般性答案。

于 2010-06-19T20:34:31.177 回答