source: rtems/doc/supplements/sparc/timeERC32.t @ 110445c

4.104.114.84.95
Last change on this file since 110445c was 110445c, checked in by Joel Sherrill <joel.sherrill@…>, on 06/10/00 at 19:41:09

Patch rtems-rc-4.5.0-21.diff from Ralf Corsepius <corsepiu@…>
which splits the current monolithic specs files into a sequence of
subparts. These can be concatenated togather to make a the whole .spec
file. This cleans up the maintenance problem of having "all languages"
and a "C/C++ only" gccnewlib spec files. Plus it should make it easier
to produce variants like the gdb-m68k-bdm which require special hackery. :)
Ralf's comments:

It addresses the way *.spec.in get composed inside of the source
tree.

Changes:

  • Each spec.in is broken into several files (*.add), one *.add file per sub-package.
  • Each Makefile.am composes spec.ins from the *.add files
  • Removal of redundant automake support files.
  • Default value for BuildRoot? changed to /tmp/<spec-file-name>
  • %clean stage added to *specs

Advantages (IMHO).

  • The *.add files are easier to adminstrate and more flexible in comparison to the former *.specs.ins.
  • gccnewlib_c_only.spec.in now is composed from the same sources as gccnewlib.spec.in (less errors)
  • If using the default BuildRoot? --clean now deletes all files that were generated while building.

Notes:

  • rtems.spec.in has not yet been adapted to the scheme used for the other *spec.ins
  • Except for cosmetical changes the internals of the *.spec files should not have changed.

To Apply:

cvs rm -f scripts/binutils/binutils.spec.in
cvs rm -f scripts/gccnewlib/gccnewlib.spec.in
cvs rm -f scripts/gccnewlib/gccnewlib_c_only.spec.in
cvs rm -f scripts/gdb/gdb.spec.in
cvs rm -f scripts/config.sub
cvs rm -f scripts/config.guess
cvs rm -f scripts/install-sh
cvs rm -f scripts/mkinstalldirs
cvs rm -f scripts/missing

patch -p1 < rtems-rc-4.5.0-21.diff

cvs add scripts/*/*.add
cvs add scripts/*/README

  • Property mode set to 100644
File size: 4.6 KB
Line 
1@c
2@c  COPYRIGHT (c) 1988-1999.
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.