Vorlesung Echtzeitbetriebssysteme VII Vorlesung Echtzeitbetriebssysteme VII. Leistungsbewertung von Echtzeitbetriebssystemen Dr.-Ing. Frank Golatowski
Ziele der Vorlesung
Gliederung
Vergleichende Betrachtungen Reaktionszeiten Systemfunktionen Entwicklungsumgebung Netzwerkintegration
Echtzeit-Benchmarks feinkörnige Benchmarks applikationsorientierte Benchmarks simulationsbasierende Benchmarks
Benchmarks Rhealstone (Kar,Porter 1987) Hartstone (Weidermann 1991) Rabindra Kar, K. Porter „Rhealstone - a real-time benchmarking proposal” Dr. Dobb’s Journal, February 1989 Rabindra Kar, “Implementing the rhealstone real-time benchmark” Dr. Dobb’s Journal, April 1990 Furht et al. Real-Time Unix Systems Design and Applications, Kluwer 1991 Hartstone (Weidermann 1991) Ballista: COTS Software Robustness Testing 1997 EDN Embedded Microprocesor Benchmarking Consortium (EEMBC) www.eembc.com http://www.on-time.com
Embedded Microprocessor Benchmark Die im April 1997 gegründete Organisation «EDN Embedded Microprocessor Benchmarking Consortium» EEMBC (www.eembc.org) hat es sich zur Aufgabe gemacht, trotz der vielfältigen Prozessor-Landschaft eine Standard-Benchmark-Suite für Embedded Prozessoren zu entwickeln. Inzwischen sind 28 Hersteller Mitglieder der EEMBC, unter ihnen alle wichtigen und einflußreichen Hersteller von Mikrocontrollern und Prozessoren. EEMBC hat sich auf die Fahnen geschrieben, Benchmarks für Prozessoren und Controller von 8 bit bis 64 bit zu entwickeln, inklusive Digitaler Signalprozessoren. Fünf Arbeitsgruppen widmen sich den folgenden Test-Kategorien:
Embedded Microprocessor Benchmark Automotive/Industrial: Benchmarks für Steuerung und Regelung wie FFT, Table Lookup oder Matrixoperationen. Consumer: Bildinterpolation, IrDa-Protokoll, JPEG-Kompression und -Dekompression. Networking: Route Lookup. Office Automation: Bezier-Kurven, String-Verarbeitung, Bitmap-Manipulation. Telecommunications.
Embedded Microprocessor Benchmark Die Benchmarks befinden sich derzeit im Versionsstand 0.9. Zum Telekommunikations-Benchmark gibt es noch keine Informationen, während der Automotive-Benchmark mit 16 Testroutinen am weitesten gediehen ist. Die Testprogramme sind in ANSI-C geschrieben, damit die Portabilität auf alle Toolketten für Embedded Prozessoren und DSPs gewährleistet ist. Getestet wird nicht der Prozessorkern alleine, sondern die Gesamtheit aus Prozessor und Entwicklungssoftware. Ein Zeichen dafür, daß die EEMBC Benchmark Suite noch in einem frühen Entwicklungsstadium ist, ist die Tatsache, daß trotz der 28 EEMBC-Mitglieder nur Benchmark-Ergebnisse für zehn Prozessoren existieren. Dabei stellt Infineon mit dem C167CS den einzigen 16-bit-Prozessor. Alle anderen sind 32- oder 64-bit-CPUs. Der Automotive-Benchmark wurde für fünf Prozessoren veröffentlicht. Die Ergebnisse sind in der Tabelle wiedergegeben.
EEMBC: Test-Kategorien: Automotive/Industrial: Benchmarks für Steuerung und Regelung wie FFT, Table Lookup oder Matrixoperationen. Consumer: Bildinterpolation, IrDa-Protokoll, JPEG-Kompression und -Dekompression. Networking: Route Lookup. Office Automation: Bezier-Kurven, String-Verarbeitung, Bitmap-Manipulation. Telecommunications.
Automotive #1 - Table Lookup & Interpolation #2 - Angle to Time Conversion #3 - Pulse Width Modulation (PWM) #4 - CAN Remote Data Request #5 - Tooth to Spark #6 - Road Speed Calculation #7 - Infinite Impulse Response (IIR) Filter #8 - Bit Manipulation #9 - Basic Integer and Floating Point #10 - Pointer Chasing #11 - Matrix Arithmetic #12 - Cache ‘Buster’ #13 - Inverse Discrete Cosine Transform (iDCT) #14 - Fast Fourier Transform (FFT) #15 - Inverse Fast Fourier Transform (iFFT) #16 - Finite Impulse Response (FIR) Filter
Consumer #1 - Compress JPEG #2 - Decompress JPEG #3 - High Pass Grey-scale Filter #4 - RGB to CMYK Conversion #5 - RGB to YIQ Conversion
Networking #1 - Open Shortest Path First/Dijkstra #2 - Patricia #3 - Packet Flow
Office Automation #1 - Bezier Curve Calculation #2 - Dithering #3 - Image Rotation #4 - Text Processing
Telecommunication #1 - Autocorrelation #2 - Bit Allocation #3 - Inverse Fast Fourier Transform (iFFT) #4 - Fast Fourier Transform (FFT) #5 - Viterbi Decoder #6 - Convolutional Encoder
Embedded Microprocessor Benchmark Prozessor AMD K6-2 ARM 920T Infineon SAB C167CS Motorola PowerPC 555 NEC V832 Beschreibung 450 MHz, 100 MHzfront side bus 160 MHz, 32 bit RISC CPU 25 MHz, 16 bit CPU 40 MHz, 32 bit RISC CPU 143 MHz 32 bit RISC CPU Compiler Microsoft Visual C/C++ ARM Develop-ment Kit 2.50 Keil C166 Compiler v3.12 Diab Data 4.3p Rev6 Green Hills Multi Version 1.8.1 Table Lookup 319264,4 43478,3 1890,4 14767 31559,1 Angle-to-time 715563,5 73529,4 9652,5 36273,2 17115 Pulse-width Modulation 1347708,9 344827,6 32679,7 59740,2 147146,2 CAN 2812148,5 438596,5 45871,6 104860,8 204334,8 Tooth-to-Spark 125552,4 15151,5 761 4861,4 10482,5 Road Speed 2180444,7 454545,4 44247,8 66343,7 199601,7 IIR 96374,4 9708,7 2481,4 8380 8703,4 Bit-Manipulation 11859,6 2702,7 136,9 340,8 876,6 Int & FP 384615,4 6153,9 862,8 13294,5 2179,6 Pointer-Chasing 23738,1 3361,3 287,7 593,7 1619,4 Matrix Math 1375,4 - 3,6 65,7 7,5 CacheBuster 982318,3 468750 28571,4 78389,5 175682 iDCT 15220,7 2083,3 57,7 470,6 976,1 FFT 627,4 125 10,3 34,5 46,8 iFFT 682,7 9,1 37,2 49,9 FIR 46581 21276,6 1919,4 4347,8 11605,7 Embedded Microprocessor Benchmark
Rhealstone Task switching time tTS Interrupt latency time tIL Preemption Time tP Semaphore shuffling time tSS Deadlock breaking time tDB Datagram throughput [kBytes/s] Rhealstone- Wert R = f1 + f2 + f3 + f4 + f5 + f6 Gewichteter Rhealstone- Wert RW = c1f1 + c2f2 + c3f3 + c4f4 + c5f5 + c6f6
Task Switching Time Taskumschaltzeit Task number Task 3 Task 2 Task1 Time t1 t2 t3
Bestimmung der Taskumschaltzeit ready PAUSE loops for > 1ms wait for 1ms Task 2 Task 1
Preemption Time Task number Time t1 t2 Task 3 (high) Task 2 (medium) (low) Time t1 t2
Bestimmung der Preemption Time ready loops for > 1ms wait for 1ms PAUSE Task 2 (low priority) Task 1 (high priority)
Semaphore shuffling time = task relinquishes semaphor = task requests semaphor Task 1 Task 2 Task number Time Semaphor Ownership
Semaphore shuffling time loops for > 1ms t2 t1 Task 2 Task 1 Semaphor Ownership ready wait for 1ms PAUSE rsf wait tsf
Interrupt latency time Interrupt latency time = t1 t1 Interrupt handler Task t Note: CPU receives interrupt at time "t" Time
Deadlock Task number Task 2 Task 1 Time Deadlock Semaphor Ownerchip 2 Ownerchip 1 Deadlock = task requests semaphor 2 = task requests semaphor 1 Task number Time
Deadlock breaking time Tb Task 2 Task 1 = task relinquishes semaphor Task 3 (high priority) Semaphor Ownerchip = task requests semaphor Task number Time (medium priority) (low priority)
Deadlock breaking time II Deadlock breaking time = t1 + t2 t2 t1 = task preemption Task 3 ? Task3 (high priority) = task relinquishes semaphor = task requests semaphor Task 1 Time Critical Ressource Owner Task2 (medium priority) Task1 (low priority)
Bestimmung der Deadlock breaking time priority of task 3 inherent priority Task 1 Priority Task 2 ready wait for sem_t rsf rest of loops tsf wait for 1ms Task 3 (high) Semaphor Ownership PAUSE loops for > 1ms (medium) (low priority) loops for > 1/4ms
Datagram throughput t (message) Task number Time Task 2 Task1
Rhealstone-Benchmark: Meßwerte Interrupt Latency Time Task Switching Time Preemption Time Intertask Message Time Semaphore Shuffling Time Datagram throughput RMOS3-PC1 10,1 4,0 4,1 5,8 4,4 6,2 RMOS3 für Windows 31,1 23,0 23,4 32,0 29,0 Lynx 17,6 27,0 105,0 337,0 113,5 n.e. Unix SV Rel. 4 (SORIX) n.e 137,0 480,0 755,6 450,0
Rhealstone-Benchmark: Meßwerte