1、hls简介
HLS ( high level synthesis )即高层次综合,主要是利用高级编程语言实现算法。
2、循环优化
绝大多数循环都以串行的方式执行,这种执行方式比较浪费时间。对于串行的循环有两种优化方式,转为 并行( Unroll ) 或者是 管道( Pipeline )。
并行分为以下几种:
数据并行:对不同的数据处理。
线程并行:多线程并发处理。
指令并行:同一时间执行多条指令。
管道并行:多条指令同时执行,但不同时间执行指令的不同部分。
其中,数据并行为最理想的循环执行方式;不过大多数时候数据存在复杂的依赖关系,常采用管道并行的循环执行方式。
3、性能度量
在软件开发领域,通过使用算法复杂度 O(n)进行度量;
在FPGA中,使用启动时间间隔( Initiation Interval ,II )进行度量;
1、II 表示每次迭代之间的时间间隔
2、理想情况下,II = 1
3、如果 II 非常大,说明 对应的代码不能在FPGA中被展开或者pipeline。