以前做的是把一个软件分配到硬件,只需要让用背包问题最大化硬件的使用,但是没有让所有资源最大化。
对于下面的软件,假设 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放进去。
原文链接: http://blog.lindexi.com/post/%E7%A1%AC%E4%BB%B6%E5%88%86%E9%85%8D
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。 欢迎转载、使用、重新发布,但务必保留文章署名 林德熙 (包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我 联系。