Advertisement

Real-Time Systems

, Volume 54, Issue 2, pp 389–423 | Cite as

Patmos: a time-predictable microprocessor

  • Martin Schoeberl
  • Wolfgang Puffitsch
  • Stefan Hepp
  • Benedikt Huber
  • Daniel Prokesch
Article

Abstract

Current processors provide high average-case performance, as they are optimized for general purpose computing. However, those optimizations often lead to a high worst-case execution time (WCET). WCET analysis tools model the architectural features that increase average-case performance. To keep analysis complexity manageable, those models need to abstract from implementation details. This abstraction further increases the WCET bound. This paper presents a way out of this dilemma: a processor designed for real-time systems. We design and optimize a processor, called Patmos, for low WCET bounds rather than for high average-case performance. Patmos is a dual-issue, statically scheduled RISC processor. A method cache serves as the cache for the instructions and a split cache organization simplifies the WCET analysis of the data cache. To fill the dual-issue pipeline with enough useful instructions, Patmos relies on a customized compiler. The compiler also plays a central role in optimizing the application for the WCET instead of average-case performance.

Keywords

Real-time systems Time-predictable architecture Worst-case execution time 

Notes

Acknowledgements

We would like to thank Tommy Thorn for the ongoing discussions on computer architecture, processor design, and optimization for an FPGA implementation. We would like to thank Florian Brandner for discussions on the Patmos instruction set, the initial implementation of the software simulator of Patmos, and the initial port of LLVM for Patmos. We would like to thank Sahar Abbaspour for helping on a first VHDL version of the pipeline. This work was partially funded under the European Union’s 7th Framework Programme under Grant Agreement No. 288008: Time-predictable Multi-Core Architecture for Embedded Systems (T-CREST). This work is part of the project “Hard Real-Time Embedded Multiprocessor Platform - RTEMP” and received partial funding from the Danish Research Council for Technology and Production Sciences under Contract No. 12-127600.

References

  1. Abbaspour S, Brandner F, Schoeberl M (2013) A time-predictable stack cache. In: Proceedings of the 9th workshop on software technologies for embedded and ubiquitous systemsGoogle Scholar
  2. Akesson B, Goossens K, Ringhofer M (2007) Predator: a predictable sdram memory controller. In: CODES+ISSS ’07: proceedings of the 5th IEEE/ACM international conference on hardware/software codesign and system synthesis. ACM, New York, pp 251–256.  https://doi.org/10.1145/1289816.1289877
  3. Allen J, Kennedy K, Porterfield C, Warren J (1983) Conversion of control dependence to data dependence. In: Proceeding of the 10th ACM symposium on principles of programming languages, pp 177–189Google Scholar
  4. Arnold R, Mueller F, Whalley D, Harmon M (1994) Bounding worst-case instruction cache performance. In: IEEE real-time systems symposium, pp 172–181Google Scholar
  5. Axer P, Ernst R, Falk H, Girault A, Grund D, Guan N, Jonsson B, Marwedel P, Reineke J, Rochange C, Sebastian M, Hanxleden RV, Wilhelm R, Yi W (2013) Building timing predictable embedded systems. ACM Trans Embed Syst 13(4):82Google Scholar
  6. Bachrach J, Vo H, Richards B, Lee Y, Waterman A, Avizienis R, Wawrzynek J, Asanovic K (2012) Chisel: constructing hardware in a scala embedded language. In: The 49th annual design automation conference (DAC 2012, Groeneveld P, Sciuto D, Hassoun S (eds). ACM, San Francisco, pp 1216–1225Google Scholar
  7. Baldovin A, Mezzetti E, Vardanega T (2012) A time-composable operating system. In: Vardanega T (ed.) 12th international workshop on worst-case execution time analysis, WCET 2012, July 10, 2012, Pisa OASICS. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik vol 23, pp 69–80Google Scholar
  8. Ballabriga C, Cassé H, Rochange C, Sainrat P (2010) OTAWA: an open toolbox for adaptive WCET analysis. Springer, Heidelberg, pp 35–46.  https://doi.org/10.1007/978-3-642-16256-5_6
  9. Brandner F, Hepp S, Jordan A (2013) Criticality: static profiling for real-time programs. Real-Time Syst 50:1–34.  https://doi.org/10.1007/s11241-013-9196-y zbMATHGoogle Scholar
  10. Degasperi P, Hepp S, Puffitsch W, Schoeberl M (2014) A method cache for Patmos. In: Proceedings of the 17th IEEE symposium on object/component/service-oriented real-time distributed computing (ISORC 2014). IEEE, Reno, pp 100–108.  https://doi.org/10.1109/ISORC.2014.47
  11. Delange J, Lec L (2011) POK, an ARINC653-compliant operating system released under the BSD license. In: 13th Real-Time Linux Workshop, vol 10Google Scholar
  12. Delvai M, Huber W, Puschner P, Steininger A (2003) Processor support for temporal predictability—the SPEAR design example. In: Proceedings of the 15th Euromicro international conference on real-time systemsGoogle Scholar
  13. Edwards SA, Kim S, Lee EA, Liu I, Patel HD, Schoeberl M (2009) A disruptive computer design idea: architectures with repeatable timing. In: Proceedings of IEEE international conference on computer design (ICCD 2009). IEEE, Lake TahoeGoogle Scholar
  14. Edwards SA, Lee EA (2007) The case for the precision timed (PRET) machine. In: DAC ’07: Proceedings of the 44th annual conference on design automation. ACM, New York, pp 264–265.  https://doi.org/10.1145/1278480.1278545
  15. Falk H, Kleinsorge JC (2009) Optimal static WCET-aware scratchpad allocation of program code. In: DAC ’09: Proceedings of the conference on design automation, pp 732–737Google Scholar
  16. Falk H, Lokuciejewski P (2010) A compiler framework for the reduction of worst-case execution time. Real-Time Syst 46:1–50CrossRefzbMATHGoogle Scholar
  17. Ferdinand C, Wilhelm R (1999) Efficient and precise cache behavior prediction for real-time systems. Real-Time Syst 17(2–3):131–181CrossRefGoogle Scholar
  18. Fisher JA (1981) Trace scheduling: a technique for global microcode compaction. IEEE Trans Comput C–30(7):478–490.  https://doi.org/10.1109/TC.1981.1675827 CrossRefGoogle Scholar
  19. Garside J, Audsley NC (2013) Investigating shared memory tree prefetching within multimedia noc architectures. In: Memory architecture and organisation workshopGoogle Scholar
  20. Gomony MD, Akesson B, Goossens K (2013) Architecture and optimal configuration of a real-time multi-channel memory controller. In: Design, automation test in Europe conference exhibition (DATE), pp 1307–1312 .  https://doi.org/10.7873/DATE.2013.270
  21. Healy CA, Arnold RD, Mueller F, Whalley DB, Harmon MG (1999) Bounding pipeline and instruction cache performance. IEEE Trans. Comput 48(1):53–70CrossRefGoogle Scholar
  22. Heckmann R, Ferdinand C (2013) Worst-case execution time prediction by static program analysis. Technical report, AbsInt Angewandte Informatik GmbH. [Online, last accessed November 2013]Google Scholar
  23. Heckmann R, Langenbach M, Thesing S, Wilhelm R (2003) The influence of processor architecture on the design and results of WCET tools. Proc IEEE 91(7):1038–1054CrossRefGoogle Scholar
  24. Hepp S, Brandner F (2014) Splitting functions into single-entry regions. In: Chatha KS, Ernst R, Raghunathan A, Iyer R (eds) 2014 International conference on compilers, architecture and synthesis for embedded systems, CASES 2014, Uttar Pradesh, October 12-17, 2014, ACM. pp 17:1–17:10.  https://doi.org/10.1145/2656106.2656128
  25. Huber B, Hepp S, Schoeberl M (2014) Scope-based method cache analysis. In: Proceedings of the 14th international workshop on worst-case execution time analysis (WCET 2014), . Madrid, pp 73–82.  https://doi.org/10.4230/OASIcs.WCET.2014.73
  26. Huber B, Prokesch D, Puschner P (2013) Combined WCET analysis of bitcode and machine code using control-flow relation graphs. In: Proceedings of the 14th ACM SIGPLAN/SIGBED conference on Languages, compilers and tools for embedded systems (LCTES 2013). The Association for Computing Machinery, pp 163–172.  https://doi.org/10.1145/2499369.2465567
  27. Huber B, Puffitsch W, Schoeberl M (2010) WCET driven design space exploration of an object cache. In: Proceedings of the 8th international workshop on java technologies for real-time and embedded systems (JTRES 2010). ACM, New York, pp 26–35.  https://doi.org/10.1145/1850771.1850775
  28. Hwu WMW, Mahlke SA, Chen WY, Chang PP, Warter NJ, Bringmann RA, Ouellette RG, Hank RE, Kiyohara T, Haab GE, Holm JG, Lavery DM (1993) The superblock: an effective technique for vliw and superscalar compilation. J Supercomput 7(1):229–248.  https://doi.org/10.1007/BF01205185 CrossRefGoogle Scholar
  29. Jordan A, Brandner F, Schoeberl M (2013) Static analysis of worst-case stack cache behavior. In: Proceedings of the 21st international conference on real-time networks and systems (RTNS 2013). ACM, New York, pp 55–64.  https://doi.org/10.1145/2516821.2516828
  30. Kasapaki E, Schoeberl M, Sørensen RB, Müller CT, Goossens K, Sparsø J (2016) Argo: a real-time network-on-chip architecture with an efficient GALS implementation. IEEE Trans Very Large Scale Integr (VLSI) Syst 24:479–492.  https://doi.org/10.1109/TVLSI.2015.2405614 CrossRefGoogle Scholar
  31. Kluge F, Gerdes M, Ungerer T (2014) An operating system for safety-critical applications on manycore processors. In: 17th IEEE international symposium on object oriented real-time distributed computing (ISORC), IEEE, pp 238–245Google Scholar
  32. Kluge F, Schoeberl M, Ungerer T (2016) Support for the logical execution time model on a time-predictable multicore processor. In: 14th international workshop on real-time networks. ACM SIGBED Review, ToulouseGoogle Scholar
  33. Lakis E, Schoeberl M (2013) An SDRAM controller for real-time systems. In: Proceedings of the 9th workshop on software technologies for embedded and ubiquitous systemsGoogle Scholar
  34. Lam, M (1988) Software pipelining: an effective scheduling technique for VLIW machines. In: Proceedings of the ACM SIGPLAN 1988 conference on programming language design and implementation, PLDI ’88. ACM, New York, pp 318–328  https://doi.org/10.1145/53990.54022
  35. Lickly B, Liu I, Kim S, Patel HD, Edwards SA, Lee EA (2008) Predictable programming on a precision timed architecture. In: Altman ER (ed) Proceedings of the international conference on compilers, architecture, and synthesis for embedded systems (CASES 2008). ACM, Atlanta, pp 137–146Google Scholar
  36. Lisper B (2014) SWEET: a tool for WCET flow analysis. In: Steffen B (ed) 6th International symposium on leveraging applications of formal methods, verification and validation. Springer, pp 482–485.Google Scholar
  37. Liu I (2012) Precision timed machines. Ph.D. thesis, EECS Department, University of California, BerkeleyGoogle Scholar
  38. Liu I, Reineke J, Broman D, Zimmer M, Lee EA (2012) A PRET microarchitecture implementation with repeatable timing and competitive performance. In: Proceedings of IEEE international conference on computer design (ICCD 2012)Google Scholar
  39. Liu I, Reineke J, Lee EA (2010) A PRET architecture supporting concurrent programs with composable timing properties. In: Signals, systems and computers, 2010 conference record of the forty-four asilomar conference onGoogle Scholar
  40. Mälardalen Real-Time Research Center: WCET benchmarks. Available at http://www.mrtc.mdh.se/projects/wcet/benchmarks.html (accessed 2009)
  41. Metzlaff S, Ungerer T (2012) Replacement policies for a function-based instruction memory: a quantification of the impact on hardware complexity and wcet estimates. In: Real-time systems (ECRTS), 2012 24th Euromicro conference on, pp 112 –121.  https://doi.org/10.1109/ECRTS.2012.22
  42. Mische J, Guliashvili I, Uhrig S, Ungerer T (2010) How to enhance a superscalar processor to provide hard real-time capable in-order smt. In: 23rd International conference on architecture of computing systems (ARCS 2010). Springer, University of Augsburg, pp 2–14.  https://doi.org/10.1007/978-3-642-11950-7_2
  43. Pitter C, Schoeberl M (2010) A real-time Java chip-multiprocessor. ACM Trans. Embed. Comput. Syst. 10(1):1–34.  https://doi.org/10.1145/1814539.1814548 CrossRefGoogle Scholar
  44. Prokesch D, Hepp S, Puschner PP (2015) A generator for time-predictable code. In: IEEE 18th international symposium on real-time distributed computing, ISORC 2015, Auckland 13-17 April, 2015. IEEE Computer Society, pp 27–34.  https://doi.org/10.1109/ISORC.2015.40
  45. Prokesch D, Huber B, Puschner P (2014) Towards automated generation of time-predictable code. In: International workshop on worst-case execution time analysis, OASIcs, vol 39, pp 103–112. Schloss DagstuhlGoogle Scholar
  46. Puschner P (2005) Experiments with WCET-oriented programming and the single-path architecture. In: Proceeding of the 10th IEEE international workshop on object-oriented real-time dependable systemsGoogle Scholar
  47. Puschner P, Kirner R, Huber B, Prokesch D (2012) Compiling for time predictability. In: Ortmeier F, Daniel P (eds) Computer safety, reliability, and security. Lecture Notes in Computer Science. vol 7613, Springer, Berlin, pp 382–391Google Scholar
  48. Puschner P, Prokesch D, Huber B, Knoop J, Hepp S, Gebhard G (2013) The T-CREST approach of compiler and WCET-analysis integration. In: 9th workshop on software technologies for future embedded and ubiquitious systems (SEUS 2013), pp 33–40Google Scholar
  49. Rocha A, Silva C, Sørensen RB, Sparsø J, Schoeberl M (2016) Avionics applications on a time-predictable chip-multiprocessor. In: 24th Euromicro international conference on parallel, distributed, and network-based processing (PDP 2016). IEEE Computer Society, pp 777–785.  https://doi.org/10.1109/PDP.2016.36
  50. Rochange C, Sainrat P (2003) Towards designing WCET-predictable processors. In: Proceedings of the 3rd international workshop on worst-case execution time analysis, WCET 2003, pp 87–90Google Scholar
  51. Schoeberl M (2004) A time predictable instruction cache for a Java processor. In: On the move to meaningful internet systems 2004: workshop on java technologies for real-time and embedded systems (JTRES 2004), LNCS, vol 3292. Springer, Agia Napa, pp 371–382.  https://doi.org/10.1007/b102133
  52. Schoeberl M (2008) A Java processor architecture for embedded real-time systems. J Syst Archit 54(1–2):265–286.  https://doi.org/10.1016/j.sysarc.2007.06.001 CrossRefGoogle Scholar
  53. Schoeberl M (2009) Time-predictable cache organization. In: Proceedings of the first international workshop on software technologies for future dependable distributed systems (STFSSD 2009). IEEE Computer Society, Tokyo, pp 11–16.  https://doi.org/10.1109/STFSSD.2009.10
  54. Schoeberl M (2009) Time-predictable computer architecture. EURASIP Journal on Embedded Systems, vol 2009, Article ID 758480, p 17.  https://doi.org/10.1155/2009/758480
  55. Schoeberl, M.: Is time predictability quantifiable? In: International conference on embedded computer systems (SAMOS 2012). IEEE, SamosGoogle Scholar
  56. Schoeberl M, Abbaspour S, Akesson B, Audsley N, Capasso R, Garside J, Goossens K, Goossens S, Hansen S, Heckmann R, Hepp S, Huber B, Jordan A, Kasapaki E, Knoop J, Li Y, Prokesch D, Puffitsch W, Puschner P, Rocha A, Silva C, Sparsø J, Tocchi A (2015) T-CREST: time-predictable multi-core architecture for embedded systems. J Syst Archit 61(9):449–471.  https://doi.org/10.1016/j.sysarc.2015.04.002 CrossRefGoogle Scholar
  57. Schoeberl M, Brandner F, Hepp S, Puffitsch W, Prokesch D (2014) Patmos reference handbook. Technical University of Denmark, Technical reportGoogle Scholar
  58. Schoeberl M, Brandner F, Sparsø J, Kasapaki E (2012) A statically scheduled time-division-multiplexed network-on-chip for real-time systems. In: Proceedings of the 6th international symposium on networks-on-chip (NOCS). IEEE, Lyngby, pp 152–160.  https://doi.org/10.1109/NOCS.2012.25
  59. Schoeberl M, Chong DV, Puffitsch W, Sparsø J (2014) A time-predictable memory network-on-chip. In: Proceedings of the 14th international workshop on worst-case execution time analysis (WCET 2014). Madrid, pp 53–62.  https://doi.org/10.4230/OASIcs.WCET.2014.53
  60. Schoeberl M, Huber B, Puffitsch W (2013) Data cache organization for accurate timing analysis. Real-Time Syst 49(1):1–28.  https://doi.org/10.1007/s11241-012-9159-8 CrossRefzbMATHGoogle Scholar
  61. Schoeberl M, Puffitsch W, Huber B (2009) Towards time-predictable data caches for chip-multiprocessors. In: Proceedings of the seventh IFIP workshop on software technologies for future embedded and ubiquitous systems (SEUS 2009), no. 5860 in LNCS, Springer, pp 180–191Google Scholar
  62. Schoeberl M, Schleuniger P, Puffitsch W, Brandner F, Probst CW, Karlsson S, Thorn T (2011) Towards a time-predictable dual-issue microprocessor: the Patmos approach. In: First workshop on bringing theory to practice: predictability and performance in embedded systems (PPES 2011). Grenoble, pp 11–20Google Scholar
  63. Sparsø J, Kasapaki E, Schoeberl M (2013) An area-efficient network interface for a TDM-based network-on-chip. In: Proceedings of the conference on design, automation and test in Europe, DATE ’13. EDA Consortium, San Jose, pp 1044–1047Google Scholar
  64. Starke RA (2016) Design and evaluation of a vliw processor for real-time systems. Ph.D. thesis, Universidade Federal de Santa CatarinaGoogle Scholar
  65. Starke RA, Carminati A, Oliveira RSD (2016) Evaluating the design of a VLIW processor for real-time systems. ACM Trans Embed Comput Syst 15(3):46:1–46:26.  https://doi.org/10.1145/2889490 CrossRefGoogle Scholar
  66. Thiele L, Wilhelm R (2004) Design for timing predictability. Real-Time Syst 28(2–3):157–177CrossRefGoogle Scholar
  67. Ungerer T, Cazorla F, Sainrat P, Bernat G, Petrov Z, Rochange C, Quiñones E, Gerdes M, Paolieri M, Wolf J (2010) Merasa: Multi-core execution of hard real-time applications supporting analysability. Micro IEEE 30(5):66–75.  https://doi.org/10.1109/MM.2010.78 CrossRefGoogle Scholar
  68. Whitham J (2008) Real-time processor architectures for worst case execution time reduction. Ph.D. thesis, University of YorkGoogle Scholar
  69. Whitham J, Audsley N (2008) Using trace scratchpads to reduce execution times in predictable real-time architectures. In: Proceedings of the real-time and embedded technology and applications symposium (RTAS 2008), pp 305–316.  https://doi.org/10.1109/RTAS.2008.11
  70. Whitham J, Audsley N (2009) Implementing time-predictable load and store operations. In: Proceedings of the international conference on embedded software (EMSOFT 2009)Google Scholar
  71. Wilhelm R, Grund D, Reineke J, Schlickling M, Pister M, Ferdinand C (2009) Memory hierarchies, pipelines, and buses for future architectures in time-critical embedded systems. IEEE Trans CAD Integr Circuits Sys 28(7):966–978CrossRefGoogle Scholar
  72. Ziccardi M, Schoeberl M, Vardanega T (2015) A time-composable operating system for the Patmos processor. In: The 30th ACM/SIGAPP symposium on applied computing, embedded systems track. ACM Press, SalamancaGoogle Scholar
  73. Zimmer M, Broman D, Shaver C, Lee EA (2014) FlexPRET: a processor platform for mixed-criticality systems. In: Proceedings of the 20th ieee real-time and embedded technology and application symposium (RTAS). BerlinGoogle Scholar

Copyright information

© Springer Science+Business Media, LLC, part of Springer Nature 2018

Authors and Affiliations

  1. 1.Department of Applied Mathematics and Computer ScienceTechnical University of DenmarkLyngbyDenmark
  2. 2.Institute of Computer LanguagesVienna University of TechnologyWienAustria
  3. 3.Institute of Computer EngineeringVienna University of TechnologyWienAustria

Personalised recommendations