[8f30e3e] | 1 | @c |
---|
[6449498] | 2 | @c COPYRIGHT (c) 1988-2002. |
---|
[8f30e3e] | 3 | @c On-Line Applications Research Corporation (OAR). |
---|
| 4 | @c All rights reserved. |
---|
| 5 | @c |
---|
| 6 | @c $Id$ |
---|
| 7 | @c |
---|
| 8 | |
---|
[110445c] | 9 | @include common/timemac.texi |
---|
[8f30e3e] | 10 | @tex |
---|
| 11 | \global\advance \smallskipamount by -4pt |
---|
| 12 | @end tex |
---|
| 13 | |
---|
| 14 | @chapter BSP_FOR_TIMES Timing Data |
---|
| 15 | |
---|
| 16 | @section Introduction |
---|
| 17 | |
---|
[0b93b978] | 18 | The timing data for the SH version of RTEMS is |
---|
[8f30e3e] | 19 | provided along with the target dependent aspects concerning the |
---|
| 20 | gathering of the timing data. The hardware platform used to |
---|
| 21 | gather the times is described to give the reader a better |
---|
| 22 | understanding of each directive time provided. Also, provided |
---|
| 23 | is a description of the interrupt latency and the context switch |
---|
[0b93b978] | 24 | times as they pertain to the SH version of RTEMS. |
---|
[8f30e3e] | 25 | |
---|
| 26 | @section Hardware Platform |
---|
| 27 | |
---|
| 28 | All times reported except for the maximum period |
---|
| 29 | interrupts are disabled by RTEMS were measured using a Motorola |
---|
[0b93b978] | 30 | BSP_FOR_TIMES CPU board. The BSP_FOR_TIMES is a RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ |
---|
| 31 | Mhz board with one wait |
---|
[8f30e3e] | 32 | state dynamic memory and a XXX numeric coprocessor. The |
---|
| 33 | Zilog 8036 countdown timer on this board was used to measure |
---|
| 34 | elapsed time with a one-half microsecond resolution. All |
---|
| 35 | sources of hardware interrupts were disabled, although the |
---|
| 36 | interrupt level of the XXX allows all interrupts. |
---|
| 37 | |
---|
| 38 | The maximum period interrupts are disabled was |
---|
| 39 | measured by summing the number of CPU cycles required by each |
---|
| 40 | assembly language instruction executed while interrupts were |
---|
| 41 | disabled. The worst case times of the XXX microprocessor |
---|
| 42 | were used for each instruction. Zero wait state memory was |
---|
| 43 | assumed. The total CPU cycles executed with interrupts |
---|
| 44 | disabled, including the instructions to disable and enable |
---|
[0b93b978] | 45 | interrupts, was divided by 20 to simulate a RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ |
---|
| 46 | Mhz processor. It |
---|
[8f30e3e] | 47 | should be noted that the worst case instruction times for the |
---|
[0b93b978] | 48 | processor assume that the internal cache is disabled and that no |
---|
[8f30e3e] | 49 | instructions overlap. |
---|
| 50 | |
---|
| 51 | @section Interrupt Latency |
---|
| 52 | |
---|
| 53 | The maximum period with interrupts disabled within |
---|
| 54 | RTEMS is less than RTEMS_MAXIMUM_DISABLE_PERIOD |
---|
| 55 | microseconds including the instructions |
---|
| 56 | which disable and re-enable interrupts. The time required for |
---|
[0b93b978] | 57 | the processor to vector an interrupt and for the RTEMS entry |
---|
[8f30e3e] | 58 | overhead before invoking the user's interrupt handler are a |
---|
| 59 | total of RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK |
---|
| 60 | microseconds. These combine to yield a worst case |
---|
| 61 | interrupt latency of less than |
---|
| 62 | RTEMS_MAXIMUM_DISABLE_PERIOD + RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK |
---|
[0b93b978] | 63 | microseconds at RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ |
---|
| 64 | Mhz. [NOTE: The maximum period with interrupts |
---|
[8f30e3e] | 65 | disabled was last determined for Release |
---|
| 66 | RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.] |
---|
| 67 | |
---|
| 68 | It should be noted again that the maximum period with |
---|
| 69 | interrupts disabled within RTEMS is hand-timed and based upon |
---|
| 70 | worst case (i.e. CPU cache disabled and no instruction overlap) |
---|
[0b93b978] | 71 | times for a RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ |
---|
| 72 | Mhz processor. The interrupt vector and entry |
---|
[8f30e3e] | 73 | overhead time was generated on an BSP_FOR_TIMES benchmark platform |
---|
| 74 | using the Multiprocessing Communications registers to generate |
---|
| 75 | as the interrupt source. |
---|
| 76 | |
---|
| 77 | @section Context Switch |
---|
| 78 | |
---|
| 79 | The RTEMS processor context switch time is RTEMS_NO_FP_CONTEXTS |
---|
| 80 | microseconds on the BSP_FOR_TIMES benchmark platform when no floating |
---|
| 81 | point context is saved or restored. Additional execution time |
---|
| 82 | is required when a TASK_SWITCH user extension is configured. |
---|
| 83 | The use of the TASK_SWITCH extension is application dependent. |
---|
| 84 | Thus, its execution time is not considered part of the raw |
---|
| 85 | context switch time. |
---|
| 86 | |
---|
| 87 | Since RTEMS was designed specifically for embedded |
---|
| 88 | missile applications which are floating point intensive, the |
---|
| 89 | executive is optimized to avoid unnecessarily saving and |
---|
| 90 | restoring the state of the numeric coprocessor. The state of |
---|
| 91 | the numeric coprocessor is only saved when an FLOATING_POINT |
---|
| 92 | task is dispatched and that task was not the last task to |
---|
| 93 | utilize the coprocessor. In a system with only one |
---|
| 94 | FLOATING_POINT task, the state of the numeric coprocessor will |
---|
| 95 | never be saved or restored. When the first FLOATING_POINT task |
---|
| 96 | is dispatched, RTEMS does not need to save the current state of |
---|
| 97 | the numeric coprocessor. |
---|
| 98 | |
---|
| 99 | The exact amount of time required to save and restore |
---|
| 100 | floating point context is dependent on whether an XXX or |
---|
| 101 | XXX is being used as well as the state of the numeric |
---|
| 102 | coprocessor. These numeric coprocessors define three operating |
---|
| 103 | states: initialized, idle, and busy. RTEMS places the |
---|
| 104 | coprocessor in the initialized state when a task is started or |
---|
| 105 | restarted. Once the task has utilized the coprocessor, it is in |
---|
| 106 | the idle state when floating point instructions are not |
---|
| 107 | executing and the busy state when floating point instructions |
---|
| 108 | are executing. The state of the coprocessor is task specific. |
---|
| 109 | |
---|
| 110 | The following table summarizes the context switch |
---|
| 111 | times for the BSP_FOR_TIMES benchmark platform: |
---|
| 112 | |
---|