Automatic generation of scheduling and communication code in real-time parallel programs

  • Authors:
  • André Bakkers;Johan Sunter;Evert Ploeg

  • Affiliations:
  • Control Laboratory, University of Twente, 7500 AE Enschede, The Netherlands;Control Laboratory, University of Twente, 7500 AE Enschede, The Netherlands;Control Laboratory, University of Twente, 7500 AE Enschede, The Netherlands

  • Venue:
  • LCTES '95 Proceedings of the ACM SIGPLAN 1995 workshop on Languages, compilers, & tools for real-time systems
  • Year:
  • 1995

Quantified Score

Hi-index 0.00

Visualization

Abstract

Inter-process communication and scheduling are notorious problem areas in the design of real-time systems. Using CASE tools, the system design phase will in general result in a system description in the form of parallel processes. Manual allocation of these processes to processors may result in error prone and/or slow communication code. Scheduling of the processes, necessary to meet timing constraints, is also a tedious task that takes many iterations. The described design tools result in code that is comparable in quality and performance with expert manual realization. Many network layers have been implemented to relieve the user from the low-level programming of communication software. However, the increase in user-friendliness is usually paid with performance degradation. The proposed approach combines user-friendliness with high performance by generating communication software that is tailor-made for the application. A similar approach is followed with the scheduling software. Schedulers in the form of a built-in a kernel are available all the time and cause overhead all the time. The proposed preprocessor tool generates scheduling software after analyzing the timing requirements of the particular application. This results in simple code for simple timing requirements and more complicated code for complex timing requirements. The tools have been implemented in Occam for use on a transputer. However, the results are valid for any distributed memory machine.