source: rtems/doc/supplements/i386/timeFORCE386.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.1 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 CPU386 Timing Data
15
16@section Introduction
17
18The timing data for the i386 version of RTEMS is
19provided along with the target dependent aspects concerning the
20gathering of the timing data.  The hardware platform used to
21gather the times is described to give the reader a better
22understanding of each directive time provided.  Also, provided
23is a description of the  interrupt latency and the context
24switch times as they pertain to the i386 version of RTEMS.
25
26@section Hardware Platform
27
28All times reported except for the maximum period
29interrupts are disabled by RTEMS were measured using a Force
30Computers CPU386 board.  The CPU386 is a 16 Mhz board with zero
31wait state dynamic memory and an i80387 numeric coprocessor.
32One of the count-down timers provided by a Motorola MC68901 was
33used to measure elapsed time with one microsecond resolution.
34All sources of hardware interrupts are disabled, although the
35interrupt level of the i386 allows all interrupts.
36
37The maximum period interrupts are disabled was
38measured by summing the number of CPU cycles required by each
39assembly language instruction executed while interrupts were
40disabled.  Zero wait state memory was assumed.  The total CPU
41cycles executed with interrupts disabled, including the
42instructions to disable and enable interrupts, was divided by 16
43to simulate a i386 executing at 16 Mhz.
44
45@section Interrupt Latency
46
47The maximum period with interrupts disabled within
48RTEMS is less than RTEMS_MAXIMUM_DISABLE_PERIOD microseconds
49including the instructions
50which disable and re-enable interrupts.  The time required for
51the i386 to generate an interrupt using the int instruction,
52vectoring to an interrupt handler, and for the RTEMS entry
53overhead before invoking the user's interrupt handler are a
54total of 12 microseconds.  These combine to yield a worst case
55interrupt latency of less
56RTEMS_MAXIMUM_DISABLE_PERIOD + RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK
57microseconds.  [NOTE:  The
58maximum period with interrupts disabled within RTEMS was last
59calculated for Release RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
60
61It should be noted again that the maximum period with
62interrupts disabled within RTEMS is hand-timed.  The interrupt
63vector and entry overhead time was generated on the Force
64Computers CPU386 benchmark platform using the int instruction as
65the interrupt source.
66
67@section Context Switch
68
69The RTEMS processor context switch time is RTEMS_NO_FP_CONTEXTS
70microseconds on the Force Computers CPU386 benchmark platform.
71This time represents the raw context switch time with no user
72extensions configured.  Additional execution time is required
73when a TASK_SWITCH user extension is configured.  The use of the
74TASK_SWITCH extension is application dependent.  Thus, its
75execution time is not considered part of the base context switch
76time.
77
78Since RTEMS was designed specifically for embedded
79missile applications which are floating point intensive, the
80executive is optimized to avoid unnecessarily saving and
81restoring the state of the numeric coprocessor.  The state of
82the numeric coprocessor is only saved when a FLOATING_POINT task
83is dispatched and that task was not the last task to utilize the
84coprocessor.  In a system with only one FLOATING_POINT task, the
85state of the numeric coprocessor will never be saved or
86restored.  When the first FLOATING_POINT task is dispatched,
87RTEMS does not need to save the current state of the numeric
88coprocessor.
89
90The exact amount of time required to save and restore
91floating point context is dependent on the state of the numeric
92coprocessor.  RTEMS places the coprocessor in the initialized
93state when a task is started or restarted.  Once the task has
94utilized the coprocessor, it is in the idle state when floating
95point instructions are not executing and the busy state when
96floating point instructions are executing.  The state of the
97coprocessor is task specific.
98
99The following table summarizes the context switch
100times for the Force Computers CPU386 benchmark platform:
101
Note: See TracBrowser for help on using the repository browser.