RE: TR: Q23/17


Subject: RE: TR: Q23/17
From: Rick Reed TSE (rickreed#tseng.co.uk)
Date: Tue Nov 13 2001 - 14:34:44 GMT


Dear All,

Daniel replied to my email about Q23/17, but for reasons (that I hope are
now fixed) Daniel's email was bounced. The email from Daniel follows:

> From: VINCENT Daniel FTRD/DTL/LAN <daniel.vincent#rd.francetelecom.com>
> To: "'Rick Reed TSE'" <rickreed#tseng.co.uk>
> Cc: meeting <meeting#sdl-forum.org>
> Subject: RE: TR: Q23/17
> Date: Mon, 12 Nov 2001 10:48:21 +0100
>
> Dear Rick,
>
> First, some preliminaries before answering to your questions more in detail
> :
>
> As you may know, Q23/17 and the Interval project have to deal with
> extensions in many directions,
> * to enhance expressivity power of the language during the
> specification time
> * to allow a "realistic" validation of a model by allowing to take
> several factors into account during simulation or verification (delays,
> reliability of channels, environment,...)
> * to allow performance analysis (resources, queues, speed of
> processors ...)
> * and more (scheduling, code generation, deployment ...)
>
> The first point will lead to proposals for core SDL extensions to be
> submitted for inclusion in Z100.
> The second and third points will be the source for proposals in
> Z108.
>
> The Interval project came to Copenhagen and Geneva with some
> proposals. Here and there, other teams (Erlangen or individuals) came with
> their views, and we have to put all this stuff together for Q23/17. We
> especially discussed with Ralf and Winfried from Erlangen and first made a
> flattened list of "things" related to timing of models, without classifying
> them for Z100 or Z108.
> The agenda sent by Erlangen only reflects this flattened list, even
> if some points could appear now as more worked out.
>
> Let us come now to your questions
>
> 1) A construct to trigger an action at a specific point of time T0
> There is actually no means to specify this in the actual SDL :
> PROVIDED NOW = T0; has no chance to be executed at the right
> time with the actual semantics
> PROVIDED NOW >= T0; is too late !

As suggested PROVIDED NOW >= T0 would be better than PROVIDED NOW = T0.
However, why it would PROVIDED NOW = T0 never satisfied and why would
PROVIDED NOW = T0 be "too late"? What precisely is "too late" (or "at a
specific time")?

If the action is to be triggered at a "specific point in time", the action
has to be entered. An action can only be entered from another action or from
a state.

If the process is in a state, the SDL semantics (Z.100 11.2) requires that
the Continuous signal is re-interpreted every time that NOW changes (that is
- according to the semantics - continuously). How is it possible that the
correct value of NOW can be missed? Why would the action be entered "too
late"? How could it be entered any sooner?

If the process is in a transition at the "specific point in time", it is
possible that by the time the process enters a state that NOW > T0. I would
argue that if this is a real issue, this is not a good design: the action to
be taken at the "specific point in time" should be in another process and
NOW >= T0 in this process which should have no possibility to be in a
transition at the time.

> For validation (by simulation or exhaustive analysis) of certain
> models you need to have actions triggered exactly at T0 and you can assume
> that something will allow this (in the future implementation) independently
> from the fact that each state machine has or not its own processor.
>
> You mention the problem of distributed system, and this is exactly
> why we can not use the general NOW for controlling time everywhere in the
> system : for that we rather use clocks defined locally.

As far as I know there are many networks that have synchronised clocks,
though I would agree that having a global clock of infinitely fine
granularity is impossible. In reality each process must have its own
relativistic clock.
 
> 2 and 3) Types of timers
> This has been already proposed in some papers and namely at the SDL
> Forum
> The proposal is to have a general type of timers from which you can
> create instances with attributes :
> * one shot/ cyclic for ever or not
> * normal (timeout in the queue) or urgent (even interruptive, handled
> in a special way, like exceptions for example)
> * other attributes (base, drift, time unit, granularity ...) perhaps
> less important at specification time.
>
> Concerning your example :
>> TIMER T;
>> DCL next_time Time := 0;
>> SYNONYM period Time = EXTERNAL; /*the period*/
>> ...
>> next_time := next_time + period;
>> SET ( next_time, T);
> period should be of type Duration,
(DanIel is - of course - correct)
> but the biggest problem is that with an actual SDL timer (this means
> with the actual semantics of timer and queues), you only specify a minimum
> time interval between two SET, and not an exact one, which is intended with
> cyclic timers.

No. This is not true.

In the above code, if period has the value 3, then by interpreting the two
statements above after each timer expiry, T is set to the values: 3, 6, 9,
12 ..., regardless of the time between the actual timeout occurring and the
next interpretation of SET.

> How to achieve this is a problem that we have to deal with. With the
> actual semantics, it is completely impossible. We will probably have to
> propose some slight changes (to the semantics, even in Z100). Q6/10 will
> accept or not.

(Correction Q.13/17 - we have to get used to these new numbers)

Why is this required? The user has the choice to set a timer relative to
either NOW, or to the last value of the timer using the current semantics.

>
> 4 et 5) Reference Time, clocks, time units
> See paper in SDL Forum'2001 and different TDs of last Geneva
> meeting.
> TD87 contains the minutes of last Q7/10 meeting and lists some
> technical points to be solved.
> For time units like for some other attributes, this is still under
> debate, but the idea is that in ## parts of a model, you may need ## scales of
> time/duration measures. The time unit could or not become local to a
> process, be or not the default.
> (actually people can use something like SYNONYM MSEC Duration =
> 0.001, SEC Duration = 1; but it is not convenient to write : PROVIDED (NOW
>> = (T0 + (K * MSEC)));

From a syntactic point of view the brackets are not necessary - this could
be written
NOW >= T0 +K*MSEC
and in SDL-2000 the dotty notation (with appropriate operations)
NOW >= T0+K.MSEC

I was aware of the contributions to the SDL Forum and the discussions at the
last meeting. But it does seem to me that at least some of the requirements
can already be achieved with SDL-2000.

I look forward to seeing the documents contributed to the meeting, and the
results.

--
Rick Reed - rickreed#tseng.co.uk
Tel:+44 1455 55 96 55 Fax:+44 1455 55 96 58 Mob.:+44 7970 50 96 50



This archive was generated by hypermail 2a23 : Mon May 05 2008 - 20:30:55 GMT