以前做的是把一个软件分配到硬件,只需要让用背包问题最大化硬件的使用,但是没有让所有资源最大化。

对于下面的软件,假设 A 的性价比是最高,那么使用的算法就会优化A。

假设 A 不使用硬件优化时需要运行时间是 12

如果使用硬件优化,需要硬件面积是5,优化后运行时间是3

B 不使用硬件优化时需要运行时间是 5

如果使用硬件优化,需要硬件面积是2.5,优化后运行时间是3

C 不使用硬件优化时需要运行时间是 5

如果使用硬件优化,需要硬件面积是2.5,优化后运行时间是3

D 不使用硬件优化时需要运行时间是 6

如果使用硬件优化,需要硬件面积是5,优化后运行时间是2

硬件总面积是4 。

优化A会占有所有的硬件,也就是BCD无法使用硬件。

如果A使用硬件,那么不仅占用宝贵的硬件面积,而且软件部分没有被使用,而如果能同时使用软件资源和硬件资源,这样是最好的。当然,在A的性价比高到一定程度,使用A硬件也是很好。

如果优化A,使用时间是 A=3,B=5,C=5,D=6 ,需要时间是19。

如果最大化使用,是优化 B C,在运行 A=12 之后,进入运行B,这时软件运行是空闲,可以同时运行D,在运行B之后,已经软件运行D时间是3,D剩下运行时间3,而C开始硬件运行,需要时间是3。可以看到BC和D同时运行。

运行时间是 A=12 ,B=3,C=3,D=6,刚好BC和D同时运行,所以计算需要计算D运行的时间就好,得到12+6=18

需要时间比上面的好,下面的算法可以较好优化。

算法需要计算是否存在分支,如果存在分支,那么可以进行软件和硬件同时运行,在优化时优先考虑优化这部分。

分配还有一个问题,以前研究是把全部软件都放在处理器。但是对于软件不是同时运行,是运行了A再运行B,于是可以先把A放进处理器,之后再把B放进去。


本文会经常更新,请阅读原文: https://lindexi.gitee.io/lindexi/post/%E7%A1%AC%E4%BB%B6%E5%88%86%E9%85%8D.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系