Advertisement

Formal Methods in System Design

, Volume 31, Issue 3, pp 241–263 | Cite as

Finding optimal hardware/software partitions

  • Zoltán Ádám Mann
  • András Orbán
  • Péter Arató
Article

Abstract

Most previous approaches to hardware/software partitioning considered heuristic solutions. In contrast, this paper presents an exact algorithm for the problem based on branch-and-bound. Several techniques are investigated to speed up the algorithm, including bounds based on linear programming, a custom inference engine to make the most out of the inferred information, advanced necessary conditions for partial solutions, and different heuristics to obtain high-quality initial solutions. It is demonstrated with empirical measurements that the resulting algorithm can solve highly complex partitioning problems in reasonable time. Moreover, it is about ten times faster than a previous exact algorithm based on integer linear programming. The presented methods can also be useful in other related optimization problems.

Keywords

Hardware/software partitioning Hardware/software co-design Branch-and-bound Integer linear programming 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Abdelzaher TF, Shin KG (2000) Period-based load partitioning and assignment for large real-time applications. IEEE Trans Comput 49(1):81–87 CrossRefGoogle Scholar
  2. 2.
    Adams JK, Thomas DE (1995) Multiple-process behavioral synthesis for mixed hardware/software systems. In: Proceedings of the IEEE/ACM 8th international symposium on system synthesis Google Scholar
  3. 3.
    Arató P, Juhász S, Mann ZA, Orbán A, Papp D (2003) Hardware/software partitioning in embedded system design. In: Proceedings of the IEEE international symposium on intelligent signal processing Google Scholar
  4. 4.
    Arató P, Mann ZA, Orbán A (2003) Hardware-software co-design for Kohonen’s self-organizing map. In: Proceedings of the IEEE 7th international conference on intelligent engineering systems Google Scholar
  5. 5.
    Arató P, Mann ZA, Orbán A (2005) Algorithmic aspects of hardware/software partitioning. ACM Trans Des Autom Electron Syst 10(1):136–156 CrossRefGoogle Scholar
  6. 6.
    Athanas P, Silverman HF (1993) Processor reconfiguration through instruction-set metamorphosis. IEEE Comput 26(3):11–18 Google Scholar
  7. 7.
    Barros E, Rosenstiel W, Xiong X (1993) Hardware/software partitioning with UNITY. In: 2nd international workshop on hardware–software codesign Google Scholar
  8. 8.
    Barros E, Rosenstiel W, Xiong X (1994) A method for partitioning UNITY language in hardware and software. In: Proceedings of the IEEE/ACM European conference on design automation Google Scholar
  9. 9.
    Binh NN, Imai M, Shiomi A, Hikichi N (1996) A hardware/software partitioning algorithm for designing pipelined ASIPs with least gate counts. In: Proceedings of the 33rd design automation conference Google Scholar
  10. 10.
    Chatha KS, Vemuri R (2001) MAGELLAN: multiway hardware-software partitioning and scheduling for latency minimization of hierarchical control-dataflow task graphs. In: Proceedings of CODES 01 Google Scholar
  11. 11.
    Dasdan A, Aykanat C (1997) Two novel multiway circuit partitioning algorithms using relaxed locking. IEEE Trans Comput-Aided Des Integr Circuits Syst 16(2):169–177 CrossRefGoogle Scholar
  12. 12.
    Dick RP, Jha NK (1998) MOGAC: a multiobjective genetic algorithm for hardware-software co-synthesis of hierarchical heterogeneous distributed embedded systems. IEEE Trans Comput-Aided Des Integr Circuits Syst 17(10):920–935 CrossRefGoogle Scholar
  13. 13.
    Eles P, Peng Z, Kuchcinski K, Doboli A (1996) Hardware/software partitioning of VHDL system specifications. In: Proceedings of EURO-DAC ’96 Google Scholar
  14. 14.
    Eles P, Peng Z, Kuchcinski K, Doboli A (1997) System level hardware/software partitioning based on simulated annealing and tabu search. Des Autom Embed Syst 2(1):5–32 CrossRefGoogle Scholar
  15. 15.
    Ernst R, Henkel J, Benner T (1993) Hardware/software cosynthesis for microcontrollers. IEEE Des Test Comput 10(4):64–75 CrossRefGoogle Scholar
  16. 16.
    Fiduccia CM, Mattheyses RM (1982) A linear-time heuristic for improving network partitions. In: Proceedings of the 19th design automation conference Google Scholar
  17. 17.
    Grode J, Knudsen PV, Madsen J (1998) Hardware resource allocation for hardware/software partitioning in the LYCOS system. In: Proceedings of design automation and test in Europe (DATE ’98) Google Scholar
  18. 18.
    Gupta RK, de Micheli G (1993) Hardware-software cosynthesis for digital systems. IEEE Des Test Comput 10(3):29–41 CrossRefGoogle Scholar
  19. 19.
    Guthaus MR, Ringenberg JS, Ernst D, Austin TM, Mudge T, Brown RB (1997) MiBench: a free, commercially representative embedded benchmark suite. In: Proceedings of the IEEE 4th annual workshop on workload characterization Google Scholar
  20. 20.
    Henkel J, Ernst R (2001) An approach to automated hardware/software partitioning using a flexible granularity that is driven by high-level estimation techniques. IEEE Trans VLSI Syst 9(2):273–289 CrossRefGoogle Scholar
  21. 21.
    Hwang E, Vahid F, Hsu YC (1999) FSMD functional partitioning for low power. In: Proceedings of the design automation and test in Europe conference Google Scholar
  22. 22.
    Jantsch A, Ellervee P, Oeberg J (1994) Hardware/software partitioning and minimizing memory interface traffic. In: Proceedings of the IEEE/ACM European conference on design automation Google Scholar
  23. 23.
    Kalavade A (1995) System-level codesign of mixed hardware-software systems. PhD thesis, University of California, Berkeley, CA Google Scholar
  24. 24.
    Kalavade A, Lee EA (1997) The extended partitioning problem: hardware/software mapping, scheduling and implementation-bin selection. Des Autom Embed Syst 2(2):125–164 CrossRefGoogle Scholar
  25. 25.
    Kalavade A, Subrahmanyam PA (1998) Hardware/software partitioning for multifunction systems. IEEE Trans Comput-Aided Des Integr Circuits Syst 17(9):819–837 CrossRefGoogle Scholar
  26. 26.
    Kernighan BW, Lin S (1970) An efficient heuristic procedure for partitioning graphs. Bell Syst Tech J 49(2):291–307 Google Scholar
  27. 27.
    Knudsen PV, Madsen J (1996) PACE: a dynamic programming algorithm for hardware/software partitioning. In: Proceedings of the IEEE/ACM 4th international workshop on hardware/software codesign Google Scholar
  28. 28.
    Lopez-Vallejo M, Grajal J, Lopez JC (2000) Constraint-driven system partitioning. In: Proceedings of DATE, pp 411–416 Google Scholar
  29. 29.
    Lopez-Vallejo M, Lopez JC (1998) A knowledge based system for hardware-software partitioning. In: Proceedings of DATE Google Scholar
  30. 30.
    Lopez-Vallejo M, Lopez JC (2001) Multi-way clustering techniques for system level partitioning. In: Proceedings of the 14th IEEE ASIC/SOC conference, pp 242–247 Google Scholar
  31. 31.
    Lopez-Vallejo M, Lopez JC (2003) On the hardware-software partitioning problem: system modeling and partitioning techniques. ACM Trans Des Autom Electron Syst 8(3):269–297 CrossRefGoogle Scholar
  32. 32.
    Madsen J, Grode J, Knudsen PV, Petersen ME, Haxthausen A (1997) LYCOS: the Lyngby co-synthesis system. Des Autom Embed Syst 2(2):195–236 CrossRefGoogle Scholar
  33. 33.
    Mann ZA, Orbán A (2003) Optimization problems in system-level synthesis. In: Proceedings of the 3rd Hungarian–Japanese symposium on discrete mathematics and its applications Google Scholar
  34. 34.
    Mei B, Schaumont P, Vernalde S (2000) A hardware/software partitioning and scheduling algorithm for dynamically reconfigurable embedded systems. In: Proceedings of ProRISC Google Scholar
  35. 35.
    Niemann R (1998) Hardware/software co-design for data flow dominated embedded systems. Kluwer Academic, Dordrecht zbMATHGoogle Scholar
  36. 36.
    Niemann R, Marwedel P (1997) An algorithm for hardware/software partitioning using mixed integer linear programming. Des Autom Embed Syst, special issue: Partitioning methods for embedded systems 2:165–193 Google Scholar
  37. 37.
    O’Nils M, Jantsch A, Hemani A, Tenhunen H (1995) Interactive hardware-software partitioning and memory allocation based on data transfer profiling. In: International conference on recent advances in mechatronics Google Scholar
  38. 38.
    Parkinson MF, Parameswaran S (1995) Profiling in the ASP codesign environment. In: Proceedings of the IEEE/ACM 8th international symposium on system synthesis Google Scholar
  39. 39.
    Prakash S, Parker AC (1992) SOS: synthesis of application-specific heterogeneous multiprocessor systems. J Parallel Distrib Comput 16:338–351 zbMATHCrossRefGoogle Scholar
  40. 40.
    Qin S, He J (2000) An algebraic approach to hardware/software partitioning. Technical Report 206, UNU/IIST Google Scholar
  41. 41.
    Quan G, Hu X, Greenwood G (1999) Preference-driven hierarchical hardware/software partitioning. In: Proceedings of the IEEE/ACM international conference on computer design Google Scholar
  42. 42.
    Saab YG (1995) A fast and robust network bisection algorithm. IEEE Trans Comput 44(7):903–913 zbMATHCrossRefGoogle Scholar
  43. 43.
    Schrijver A (1998) Theory of linear and integer programming. Wiley, New York zbMATHGoogle Scholar
  44. 44.
    Srinivasan V, Radhakrishnan S, Vemuri R (1998) Hardware software partitioning with integrated hardware design space exploration. In: Proceedings of DATE Google Scholar
  45. 45.
    Stitt G, Lysecky R, Vahid F (2003) Dynamic hardware/software partitioning: a first approach. In: Proceedings of DAC Google Scholar
  46. 46.
    Vahid F (1997) Modifying min-cut for hardware and software functional partitioning. In: Proceedings of the international workshop on hardware–software codesign Google Scholar
  47. 47.
    Vahid F (2002) Partitioning sequential programs for CAD using a three-step approach. ACM Trans Design Autom Electron Syst 7(3):413–429 CrossRefGoogle Scholar
  48. 48.
    Vahid F, Gajski D (1995) Clustering for improved system-level functional partitioning. In: Proceedings of the 8th international symposium on system synthesis Google Scholar
  49. 49.
    Vahid F, Le TD (1997) Extending the Kernighan/Lin heuristic for hardware and software functional partitioning. Des Autom Embed Syst 2:237–261 CrossRefGoogle Scholar
  50. 50.
    Wolf W (1997) An architectural co-synthesis algorithm for distributed embedded computing systems. IEEE Trans VLSI Syst 5(2):218–229 CrossRefGoogle Scholar
  51. 51.
    Wolf W (2003) A decade of hardware/software codesign. IEEE Comput 36(4):38–43 Google Scholar
  52. 52.
    Würtz J, Müller T (1996) Constructive disjunction revisited. In: 20th German annual conference on artificial intelligence Google Scholar

Copyright information

© Springer Science+Business Media, LLC 2007

Authors and Affiliations

  • Zoltán Ádám Mann
    • 1
  • András Orbán
    • 1
  • Péter Arató
    • 1
  1. 1.Department of Control Engineering and Information TechnologyBudapest University of Technology and EconomicsBudapestHungary

Personalised recommendations