了解 FPGA 的并行性
understanding parallelism of FPGAs
我在理解 FPGA 在并行处理方面的优势时遇到了一些问题。每个人都说它是平行的,但在我看来它并不是真正的平行。让我们看看这个例子:
我的某个引脚上有数据信号,每个时钟周期 1 位。 FPGA 将接收此数据,并且由于它已经在集成电路中拥有数据,因此可以立即开始处理它。但这称为串行处理,而不是并行处理。如果 FPGA 会等待数据积累,然后并行处理它,那么我们可以说 FPGA 处理是真正的并行,但是等待数据大量到达有什么好处,我们只会浪费时间,因为例如,如果我们等待 8 位数据,我们将丢失 7 个周期。那么 FPGA 的并行性优势在哪里???听不懂。
如果数据是并行的,那就是并行的,就像当你使用旧的 DB-25 并行端口连接器时。但是由于并行端口不能支持高速,这项技术已经过时了。今天的 USB 标准是串行的,以太网是串行的,所以....并行在哪里???
如果数据以块的形式到达,并且块到达的速度比处理它们的速度快,并且可以单独处理块,那么并行性就会出现。 FPGA 无需降低数据发送器的速度,而是允许您添加更多处理 "blocks" 以便处理速度更快。
示例:
您以 50kB 块的 1MB/s 速度接收数据(串行或并行,无关紧要),但您的算法仅允许每秒处理 1 个块。在 FPGA 中,您可以连接 "receiver" 以将块分布到 20 "processors",因此现在您的发送方仍然可以全速发送,并且您的接收方看到的整体延迟更少。
并行有几个层次,如果你想了解计算机体系结构,就需要了解这些层次。 FPGA 只是构建 "computer".
的工具
级别是:
- 位级别:并行处理多个位或数据字。
例如,您可以构建 8 位、32 位或 4096 位的加法器,在一个周期内将两个整数相加
- 指令级:一个控制流的多条指令并行执行
=> 流水线,超标量架构
- 线程级别:多个控制流并行执行
=> 多线程、多核、n-socket 系统
- 应用级别:并行执行多个应用
=> 多处理
- 数据流处理:每件事并行:)
FPGA 可以使用每个级别并行执行所有操作。
我在理解 FPGA 在并行处理方面的优势时遇到了一些问题。每个人都说它是平行的,但在我看来它并不是真正的平行。让我们看看这个例子:
我的某个引脚上有数据信号,每个时钟周期 1 位。 FPGA 将接收此数据,并且由于它已经在集成电路中拥有数据,因此可以立即开始处理它。但这称为串行处理,而不是并行处理。如果 FPGA 会等待数据积累,然后并行处理它,那么我们可以说 FPGA 处理是真正的并行,但是等待数据大量到达有什么好处,我们只会浪费时间,因为例如,如果我们等待 8 位数据,我们将丢失 7 个周期。那么 FPGA 的并行性优势在哪里???听不懂。
如果数据是并行的,那就是并行的,就像当你使用旧的 DB-25 并行端口连接器时。但是由于并行端口不能支持高速,这项技术已经过时了。今天的 USB 标准是串行的,以太网是串行的,所以....并行在哪里???
如果数据以块的形式到达,并且块到达的速度比处理它们的速度快,并且可以单独处理块,那么并行性就会出现。 FPGA 无需降低数据发送器的速度,而是允许您添加更多处理 "blocks" 以便处理速度更快。
示例: 您以 50kB 块的 1MB/s 速度接收数据(串行或并行,无关紧要),但您的算法仅允许每秒处理 1 个块。在 FPGA 中,您可以连接 "receiver" 以将块分布到 20 "processors",因此现在您的发送方仍然可以全速发送,并且您的接收方看到的整体延迟更少。
并行有几个层次,如果你想了解计算机体系结构,就需要了解这些层次。 FPGA 只是构建 "computer".
的工具级别是:
- 位级别:并行处理多个位或数据字。
例如,您可以构建 8 位、32 位或 4096 位的加法器,在一个周期内将两个整数相加 - 指令级:一个控制流的多条指令并行执行
=> 流水线,超标量架构 - 线程级别:多个控制流并行执行
=> 多线程、多核、n-socket 系统 - 应用级别:并行执行多个应用
=> 多处理 - 数据流处理:每件事并行:)
FPGA 可以使用每个级别并行执行所有操作。