OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems-20020807/] [doc/] [supplements/] [mips64orion/] [timeBSP.t] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1026 ivang
@c
2
@c  COPYRIGHT (c) 1988-2002.
3
@c  On-Line Applications Research Corporation (OAR).
4
@c  All rights reserved.
5
@c
6
@c  timeBSP.t,v 1.5 2002/07/31 00:16:43 joel Exp
7
@c
8
 
9
@include common/timemac.texi
10
@tex
11
\global\advance \smallskipamount by -4pt
12
@end tex
13
 
14
@chapter BSP_FOR_TIMES Timing Data
15
 
16
@section Introduction
17
 
18
The timing data for the XXX version of RTEMS is
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
24
times as they pertain to the XXX version of RTEMS.
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
30
BSP_FOR_TIMES CPU board.  The BSP_FOR_TIMES is a RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ
31
Mhz board with one wait
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
45
interrupts, was divided by 20 to simulate a RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ
46
Mhz processor.  It
47
should be noted that the worst case instruction times for the
48
XXX assume that the internal cache is disabled and that no
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
57
the mips64orion to vector an interrupt and for the RTEMS entry
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
63
microseconds at RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ
64
Mhz.  [NOTE:  The maximum period with interrupts
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)
71
times for a RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ
72
Mhz processor.  The interrupt vector and entry
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
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.