source: rtems/doc/supplements/sparc/timeERC32.t @ 6449498

4.104.114.84.95
Last change on this file since 6449498 was 6449498, checked in by Joel Sherrill <joel.sherrill@…>, on 01/17/02 at 21:47:47

2001-01-17 Joel Sherrill <joel@…>

  • SUPPORT, LICENSE: New files.
  • Numerous files touched as part of merging the 4.5 branch onto the mainline development trunk and ensuring that the script that cuts snapshots and releases works on the documentation.
  • Property mode set to 100644
File size: 4.6 KB
Line 
1@c
2@c  COPYRIGHT (c) 1988-2002.
3@c  On-Line Applications Research Corporation (OAR).
4@c  All rights reserved.
5@c
6@c  $Id$
7@c
8
9@include common/timemac.texi
10@tex
11\global\advance \smallskipamount by -4pt
12@end tex
13
14@chapter ERC32 Timing Data
15
16@section Introduction
17
18The timing data for RTEMS on the ERC32 implementation
19of the SPARC architecture is provided along with the target
20dependent aspects concerning the gathering of the timing data.
21The hardware platform used to gather the times is described to
22give the reader a better understanding of each directive time
23provided.  Also, provided is a description of the interrupt
24latency and the context switch times as they pertain to the
25SPARC version of RTEMS.
26
27@section Hardware Platform
28
29All times reported in this chapter were measured
30using the SPARC Instruction Simulator (SIS) developed by the
31European Space Agency.  SIS simulates the ERC32 -- a custom low
32power implementation combining the Cypress 90C601 integer unit,
33the Cypress 90C602 floating point unit, and a number of
34peripherals such as counter timers, interrupt controller and a
35memory controller.
36
37For the RTEMS tests, SIS is configured with the
38following characteristics:
39
40@itemize @bullet
41@item 15 Mhz clock speed
42
43@item 0 wait states for PROM accesses
44
45@item 0 wait states for RAM accesses
46@end itemize
47
48The ERC32's General Purpose Timer was used to gather
49all timing information.  This timer was programmed to operate
50with one microsecond accuracy.  All sources of hardware
51interrupts were disabled, although traps were enabled and the
52interrupt level of the SPARC allows all interrupts.
53
54@section Interrupt Latency
55
56The maximum period with traps disabled or the
57processor interrupt level set to it's highest value inside RTEMS
58is less than RTEMS_MAXIMUM_DISABLE_PERIOD
59microseconds including the instructions which
60disable and re-enable interrupts.  The time required for the
61ERC32 to vector an interrupt and for the RTEMS entry overhead
62before invoking the user's trap handler are a total of
63RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
64microseconds.  These combine to yield a worst case interrupt
65latency of less than RTEMS_MAXIMUM_DISABLE_PERIOD +
66RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK microseconds at
67RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ Mhz.
68[NOTE:  The maximum period with interrupts disabled was last
69determined for Release RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
70
71The maximum period with interrupts disabled within
72RTEMS is hand-timed with some assistance from SIS.  The maximum
73period with interrupts disabled with RTEMS occurs during a
74context switch when traps are disabled to flush all the register
75windows to memory.  The length of time spent flushing the
76register windows varies based on the number of windows which
77must be flushed.  Based on the information reported by SIS, it
78takes from 4.0 to 18.0 microseconds (37 to 122 instructions) to
79flush the register windows.  It takes approximately 41 CPU
80cycles (2.73 microseconds) to flush each register window set to
81memory.  The register window flush operation is heavily memory
82bound.
83
84[NOTE: All traps are disabled during the register
85window flush thus disabling both software generate traps and
86external interrupts.  During a normal RTEMS critical section,
87the processor interrupt level (pil) is raised to level 15 and
88traps are left enabled.  The longest path for a normal critical
89section within RTEMS is less than 50 instructions.]
90
91The interrupt vector and entry overhead time was
92generated on the SIS benchmark platform using the ERC32's
93ability to forcibly generate an arbitrary interrupt as the
94source of the "benchmark" interrupt.
95
96@section Context Switch
97
98The RTEMS processor context switch time is 10
99microseconds on the SIS benchmark platform when no floating
100point context is saved or restored.  Additional execution time
101is required when a TASK_SWITCH user extension is configured.
102The use of the TASK_SWITCH extension is application dependent.
103Thus, its execution time is not considered part of the raw
104context switch time.
105
106Since RTEMS was designed specifically for embedded
107missile applications which are floating point intensive, the
108executive is optimized to avoid unnecessarily saving and
109restoring the state of the numeric coprocessor.  The state of
110the numeric coprocessor is only saved when an FLOATING_POINT
111task is dispatched and that task was not the last task to
112utilize the coprocessor.  In a system with only one
113FLOATING_POINT task, the state of the numeric coprocessor will
114never be saved or restored.  When the first FLOATING_POINT task
115is dispatched, RTEMS does not need to save the current state of
116the numeric coprocessor.
117
118The following table summarizes the context switch
119times for the ERC32 benchmark platform:
120
Note: See TracBrowser for help on using the repository browser.