PSP2000 发表于 2014-11-28 14:45:50

FPGA是并行工作的吗?


信号从触发器或者线网中传输,难道不需要时间吗?只不过传播速度是光速,时间非常短而已。
FPGA内部所有模块同时工作,如果A模块的输入依赖于B模块的输出,本质上还是串行工作的。
给我的感觉是,FPGA是一块速度极快的CPU,所有数据都是串行处理的。

ArthurBruin 发表于 2014-11-28 14:55:01

CPU内部主要的运算逻辑还不是由加法器构成,只不过要形成功能需要从内部存储器取指令、寻址、译码等操作加外部接口,而FPGA内部用户所实现的功能都是直接由硬逻辑电路直接构成的,省略了取指令等操作,节约了这部分时间 。一句话:“CPU是通用处理器,PFGA是专用!”FPGA的专用体现在你编的代码是独一无二的,可以流片为芯片的。当然你也可以用FPGA变一个CPU出来!

ArthurBruin 发表于 2014-11-28 15:01:19

CPU正是因为需要寻址、取指、译码等操作,导致内部执行肯定是串行的,你不可能将三步同时执行噻,每一个指令执行都需要这几步操作,并且顺序不能变。而FPGA内部则不一样,若你愿意并且LEs足够完全可以有10000万个加法器同时执行运行,并且一个tick时间完成(忽略门级间信号传输时间)。CPU与FPGA概念不一样。

ackyee 发表于 2014-11-28 15:08:52

如果后级的模块依赖前级多个模块的输出呢,而前级的这些模块又彼此相互独立
CPU只能一个一个逐次计算完,再进入最后一个模块
而FPGA,前面几个模块可以在同一时间内完成处理。直接将结果递交给最后一个模块

0123456789 发表于 2014-11-28 15:11:27

在于你怎么用?

hxw1020 发表于 2014-11-28 15:16:39

FPGA的灵活度很高,看你怎么用了~

qhq5607 发表于 2014-11-28 15:28:30

你理解的叫pipeline,这是串行的,fpga可以放多条pipeline就是并行的了!cpu就是多核来提高性能,像6678就是八核心的

only_lu 发表于 2014-11-28 15:36:58

是并行啊,只是说是从A到B的一条链,以及从C到D的一条链可以同时进行。也就是可以有多个串行的处理链路同时执行

liuhuancz03 发表于 2014-11-28 15:38:10

FPGA内部信号的传输都是工作频率+门电路延时+光速叠加吧,好像没有其他的东西能影响FPGA运算了

huangqi412 发表于 2014-11-28 16:05:15

互相独立的任务:比如你一边看网页一边看电影, CPU需要微观时间上交替工作,FPGA可以人格分裂成两块独立工作,闲的蛋疼还可以挂2个网线插入路由器挂2个VGA插入显示器标榜自己并行。
串行处理的任务:INPUT*10000-1000再开三次方 必须先乘后减再开方 FPGA也可以流水线工作,微观上A,B,C同时工作,C在处理第一笔数据时候B在处理第二笔数据A在处理第三笔数据。CPU不能A,B,C三部分同时进行
楼主难道理解的并行是同一笔数据三次操作同时进行,别逗好不,事物得现在数学理论上成立才能进行实物实现,FPGA再强大也不能反科学。

丙寅电子 发表于 2014-11-28 17:04:23

过来多学点

freefei 发表于 2014-11-28 19:37:57

FPGA可以编程为几个独立的硬件电路,并行处理数据再输出,一个芯片就完成任务,单核的CPU处理这些数据,都是以时间片轮着工作,时间上不是并行。

CMika 发表于 2014-11-29 14:13:34

如果A模块的输入依赖于B模块的输出,本质上还是串行工作的。
你说的不错    但是如果是这样的设计就用不着fpga了   本来是并行的东西你偏要这么弄有什么办法

PSP2000 发表于 2014-11-29 17:04:33

我的意思是:
比如计算 1+2+3 = 6
FPGA只能先计算好了1+2=3,然后再计算3+3=6
这个不是串行工作么?

PSP2000 发表于 2014-11-29 17:08:25

huangqi412 发表于 2014-11-28 16:05
互相独立的任务:比如你一边看网页一边看电影, CPU需要微观时间上交替工作,FPGA可以人格分裂成两块独立工 ...

你说的是同时处理独立的任务。
但是如果这2个任务之间有数据交换,那怎么办?

NJ8888 发表于 2014-11-29 17:28:37

PSP2000 发表于 2014-11-29 17:04
我的意思是:
比如计算 1+2+3 = 6
FPGA只能先计算好了1+2=3,然后再计算3+3=6


1+2+3可以并行加的

NJ8888 发表于 2014-11-29 17:31:01

PSP2000 发表于 2014-11-29 17:08
你说的是同时处理独立的任务。
但是如果这2个任务之间有数据交换,那怎么办? ...

两个异步完成的事情需要让快的事情用一个状态机来等慢的任务完成再动作

gongshu 发表于 2014-11-29 17:42:04

“事物得现在数学理论上成立才能进行实物实现,FPGA再强大也不能反科学” 哲理

psbhero 发表于 2014-11-29 18:44:49

进来看看

huangqi412 发表于 2014-11-29 18:54:01

PSP2000 发表于 2014-11-29 17:04
我的意思是:
比如计算 1+2+3 = 6
FPGA只能先计算好了1+2=3,然后再计算3+3=6


FPGA因为他名字叫FPGA就可以反科学??? 难道这货是外星来的

Vmao 发表于 2014-11-29 19:15:54

1+2=3,4+5=9你再看看并行和串行

xiayuan 发表于 2014-11-29 19:43:19

PSP2000 发表于 2014-11-29 17:04
我的意思是:
比如计算 1+2+3 = 6
FPGA只能先计算好了1+2=3,然后再计算3+3=6


谁告诉你1、2、3不能同时相加?

get500wan 发表于 2014-11-29 20:12:05

FPGA是电路,串行、并行用来描述指令序列可能更合适些。比如上面提的A+B+C,在限定ABC范围的情况下,完全可以用查表来实现,做成个三维的ROM,完全不用"计算",说不上是并行还是串行吧。

PSP2000 发表于 2014-11-29 20:29:33

xiayuan 发表于 2014-11-29 19:43
谁告诉你1、2、3不能同时相加?

两个加法电路A和B
A计算1+2, B计算2+3
就算他们同时工作,也是等A计算好了结果,然后再送给B的触发器去触发B计算,完成最终的结果计算。
这样的操作从时间上来看,还是串行工作的。

PSP2000 发表于 2014-11-29 20:32:44

NJ8888 发表于 2014-11-29 17:28
1+2+3可以并行加的

你告诉我怎么并行加?
假如1+2计算需要耗时1ns
1+2+3 也只需要1ns吗?

PSP2000 发表于 2014-11-29 20:37:38

huangqi412 发表于 2014-11-28 16:05
互相独立的任务:比如你一边看网页一边看电影, CPU需要微观时间上交替工作,FPGA可以人格分裂成两块独立工 ...

我觉得你说的例子恰恰证明了FPGA或者说硬件电路是串行工作的。
没有任何器件可以并行工作。
若果单纯的把一个任务划分给N个电路去做。这N个电路在时间上还是串行的。

NJ8888 发表于 2014-11-29 20:40:11

本帖最后由 NJ8888 于 2014-11-29 20:41 编辑

PSP2000 发表于 2014-11-29 20:32
你告诉我怎么并行加?
假如1+2计算需要耗时1ns
1+2+3 也只需要1ns吗?

因为FPGA中加法器可以级联,时间延时是芯片门级延时,1ns确实做不到,但是1+2+3=9的结果,在你输入后得到9,应当能在5-20ns之后得到,当然用1+2=6的时间要提前于9的时间

PSP2000 发表于 2014-11-29 20:45:22

FPGA只能并行处理多个独立的任务。比如同时采集多通道信号,计算并存储。
但是,你不能把采集信号,计算和存储这三个工作来同时做。

PSP2000 发表于 2014-11-29 20:47:30

NJ8888 发表于 2014-11-29 20:40
因为FPGA中加法器可以级联,时间延时是芯片门级延时,1ns确实做不到,但是1+2+3=9的结果,在你输入后得到 ...

你画的图很形象。
下面那个加法器其实要等待上一个加法器计算完之后,才开始工作。
这样的“并行”有意思吗?

Vmao 发表于 2014-11-29 20:51:09

1+2=3
4+5=9
这两个计算可以同时进行也就是一个运算时间做了两个运算,如果你的任务都是顺序进行的也就没意义了,现实中没多少事情绝对是顺序进行的吧

NJ8888 发表于 2014-11-29 20:51:57

本帖最后由 NJ8888 于 2014-11-29 20:54 编辑

PSP2000 发表于 2014-11-29 20:47
你画的图很形象。
下面那个加法器其实要等待上一个加法器计算完之后,才开始工作。
这样的“并行”有意思 ...

是的,宏观上(20ns级别)看是并行的,至于单片机,假设100MHz一条指令,那取只求值保存结果,由于累加器只有一个,上面工作重复一次,至少6个指令周期

xwkm 发表于 2014-11-29 20:52:24

PSP2000 发表于 2014-11-29 20:32
你告诉我怎么并行加?
假如1+2计算需要耗时1ns
1+2+3 也只需要1ns吗?

如果你要同时计算2+3和1+3(存入不同寄存器)。CPU只能办到先2+3,后1+3。FPGA可以同时实现。再比如FFT的蝶形运算。CPU要不断地拆分,然后分别计算。FPGA在拆分完毕后可以同步计算。你给的例子,如果我极端点想,可以变成一个3D的ROM。输入两个数据查表产生第三个数据,这也是并行的(不过有作弊嫌疑)。你非要有依赖性,神也办不到并行计算。
举个最简单的栗子吧,比如说你要让某个输入等于某个输出,再让另外一个输入等于另外一个输出的反相。你用CPU做就只能读第一个端口,输出到第一个输出端口上,然后再对第二个端口取反后输出。但是这必然不是同时进行的。FPGA就简单了,两条线几个逻辑门,完了,完全就是并行进行的。如果你同时改变两个输入端,输出端肯定也是同时变化的(记得时序约束)。

PSP2000 发表于 2014-11-29 20:54:02

好的。谢谢大家的探讨。我已经知道结果了。

xwkm 发表于 2014-11-29 20:55:06

另外的,比如说你的CPU现在要忙着画GUI。但是又需要一段时间被不断自增的定时器模块中断一次来切换任务。如果硬件电路不是并行运行的,请问定时器凭什么中断CPU呢!

xwkm 发表于 2014-11-29 20:57:43

所谓FPGA的并行是建立在没有时序依赖的情况下,就比如说你一定要靠上一个状态的结果才能算出下一个状态,没有东西可以并行。但是如果是独立的事件,比如说躺床上的时候关个灯,那就是并行的动作。因为两个动作互不干扰。不存在争用和依赖。

PSP2000 发表于 2014-11-29 21:00:59

xwkm 发表于 2014-11-29 20:52
如果你要同时计算2+3和1+3(存入不同寄存器)。CPU只能办到先2+3,后1+3。FPGA可以同时实现。再比如FFT的蝶 ...

谢谢。你说的FFT蝶形运算,这个可以证明FPGA计算速度很快。

dxzky 发表于 2014-11-29 22:32:29

过来学习学习~

sky_walker 发表于 2014-11-29 23:20:05

这个问题没啥好纠结的,fpga的优势就是高速和并行啊

huangqi412 发表于 2014-11-30 07:49:33

楼主钻牛角尖根本没搞懂串行并行的含义 典型一 民科逻辑

huangqi412 发表于 2014-11-30 08:02:37

流水线实现并行处理数据楼主居然不认 工厂流水线都可以撤了,因为楼主认为一百道工序的产品必须一道工序时间完成才算有用程序和生产线是为了批量生产和处理不是为了用一次时间算的是大批处理的平均时间就像点一个灯楼主肯定会说单片机没点用 敲代码调试时间他早就接电源亮了单片机复制一百块控制一万个灯变着花样闪再试试
页: [1]
查看完整版本: FPGA是并行工作的吗?