1: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2: % Version revisee et au format Revtex %
3: % %
4: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5: %\documentstyle[preprint,prl,aps,psfig]{revtex}
6:
7: \documentstyle[twocolumn,prl,aps,psfig]{revtex}
8: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10: \begin{document}
11:
12: \def\R{N}
13: \def\beqa{\begin{eqnarray}}
14: \def\eeqa{\end{eqnarray}}
15: \def\beqn{\begin{equation}}
16: \def\eeqn{\end{equation}}
17:
18:
19:
20: \title{Concurrent computing machines and physical space-time}
21: \author{Philippe Matherat $^{(a)}$ and Marc-Thierry Jaekel $^{(b)}$}
22: \address{$^{(a)}$ Laboratoire Traitement et Communication de l'Information
23: \thanks{Laboratoire du CNRS et de l'Ecole Nationale Sup\'erieure des
24: T\'el\'ecommunications},
25: ENST, 46 rue Barrault, F75013 Paris France\\
26: $^{(b)}$ Laboratoire de Physique Th\'eorique
27: \thanks{Laboratoire du CNRS, de l'Ecole Normale Sup\'erieure et de
28: l'Universit\'e Paris Sud},
29: ENS, 24 rue Lhomond, F75005 Paris France
30: }
31: \date{LPTENS 01/05}
32:
33: %\label{firstpage}
34: \maketitle
35:
36: \begin{abstract}
37: Concrete computing machines, either sequential or concurrent,
38: rely on an intimate relation between computation and time.
39: We recall the general characteristic properties
40: of physical time and of present realizations of computing systems.
41: We emphasize
42: the role of computing interferences, i.e. the necessity
43: to avoid them in order to give a causal implementation to logical operations.
44: We compare synchronous and
45: asynchronous systems, and make a brief survey of some methods used
46: to deal with computing interferences.
47: Using a graphic representation,
48: we show that synchronous and asynchronous circuits reflect the
49: same opposition as the Newtonian and relativistic causal structures
50: for physical space-time.
51: \end{abstract}
52:
53: %\tableofcontents
54:
55: \section{Introduction}
56:
57: Are concurrent computing machines equivalent to Turing machines?
58: This question, which amounts to confront two fundamental notions
59: like time and computation may be treated in a purely
60: mathematical framework. Practical consequences however cannot be
61: independent of concrete realizations, that is
62: concrete machines performing actual computations in
63: physical time.
64:
65: This remark may seem curious, if one aims at showing theorems, which cannot
66: depend on the physical properties of time or machines.
67: But, even in a mathematical treatment of concurrent computation,
68: one needs a representation of time. Usually, time is modelized as a real
69: parameter, shared by all parts of the computation.
70: Unfortunately, such a representation does not correspond to the observable
71: time that can be obtained from physical systems like clocks,
72: neither to the reference time
73: that is defined by metrology, nor to the operational time that occurs in
74: practical realizations of logical circuits.
75: Without questioning the validity of
76: demonstrated theorems, difficulties may emerge
77: when trying to find
78: practical applications.
79:
80: The distinction just made between abstract and concrete machines raises related
81: questions. When a machine $M$ can be simulated by a program $P$
82: running on another machine, how can one identify the concrete
83: machine $M$ and the program $P$?
84: And in case a machine cannot be simulated on another one,
85: indicating some greater expressive power, is the latter
86: due to computation or to some fundamental physical property?
87: Before entering such questions, one must first consider
88: the sequential machines that are presently realized.
89: These machines which we get from a constructor, which are made of matter,
90: which transform electric energy into heat, which we communicate with
91: through a keyboard and a screen, why do we need them?
92: Let us note that all the features that make them concrete are inconveniences:
93: we would prefer them lighter, smaller, less power consuming and less
94: dissipating. It would be ideal to make all these parameters equal to zero.
95: In fact, we need them for their logical function, their ability to
96: compute. But then, since this function is mathematically known,
97: modelized and even simulated, where is the need for a concrete machine,
98: whose features are mainly inconveniences? The natural answer is
99: that these machines compute faster than humans can do, with
100: just a pencil and paper. And yet, pencil and paper are already
101: rudimentary elements of a concrete machine, using physical
102: objects to memorize different steps of computations.
103: The interest in concrete machines comes from their intimate relation
104: with physical time.
105:
106: If computing machines go faster than humans, then one must be confident
107: in their action, as in most cases one is unable to check their output.
108: Indeed, in very specific cases, one can verify the correctness of a result
109: in much less time than is needed to obtain it.
110: This is the case for instance of the prime factorization of integers.
111: But few concrete applications have this property. In most cases,
112: one cannot check the result in much less time than the computation itself.
113: If the result is important, and no other way is available to obtain it,
114: then one must be confident in the machine.
115:
116: What can support such a confidence? Necessarily reasoning, founded
117: on correct functioning of the machine at a given time on some
118: particular computations, generalized to other times and
119: other computations. A computing machine cannot be tested for all
120: computations it can do, at any time.
121: Even for a finite machine, the number of possible computations increases
122: exponentially with the memory size, and a memory of one hundred bits
123: already allows a number of configurations that cannot be tested in
124: less time than the age of the universe.
125: To establish a reasoning leading to confidence, one must:
126:
127: - check that each elementary component effectively realizes the function
128: it has been designed for (physical validation).
129:
130: - prove in a deductive way that the particular composition
131: of these elementary components building the machine effectively leads to
132: the global function used (logical validation).
133:
134: The first condition is ensured by choices in implementation design
135: and by tests made by the constructor.
136: The second condition is obtained from a mathematical representation
137: of the machine
138: and from the logics of computation.
139: These two steps of validation require good representations of all components
140: at the physical level, and of the global machine at the logical level.
141: If the confidence one can put in a machine relies on good modelizations
142: of both its physical and logical functioning,
143: how could such a machine perform more than it has been designed for, more than
144: our present theories can modelize?
145: Even if the existence of a new type of calculus, still unknown today,
146: can be envisaged, with machines performing this new type of calculus,
147: how could
148: one build such machines without having for them good modelizations?
149: In such a case, one could not ensure the two validation steps,
150: and one could not say that these machines operate correctly
151: neither be confident
152: in their ouput.
153:
154: One consequence is that realistic models are necessary, both of
155: the computational structure and of the physical implementation of
156: logical operators.
157: Modelization is made easier when logical and physical constraints can be
158: separated. This is the reason for developing
159: sequential machines or synchronous concurrent
160: machines. In that case, the logical
161: validation of the machine can be made, whilst
162: ignoring the implementation characteristics
163: of its components. The latter will finally and
164: mainly limit the performance of the machine
165: through the value of the clock frequency.
166: The machine can equivalently be simulated on another concrete machine
167: with identical clock frequency, at the expense of slower performances.
168: However, in the case of asynchronous concurrent machines,
169: logical and physical constraints are more involved.
170: Although machines built with asynchronous circuits are less widely used,
171: much effort has been devoted to their understanding and modelization
172: \cite{Seitz,Sutherland-Micropipelines,Martin-Hoare,Ebergen-Dist.Comp.,Davis-Nowick,Mallon-Udding-Verhoeff}.
173: In fact, they may even appear as an unavoidable evolution of computing machines.
174: On one hand, clock timed circuits are reaching limits where
175: clock signal distribution consumes too many resources and
176: progress in performances approaches saturation point.
177: On the other hand, asynchronous circuits
178: constitute the most general class of circuits, and thus
179: allow one to express in the most general way the questions raised by
180: the implementation of computation on physical systems,
181: and the solutions that may be brought.
182:
183: In this article, we shall be concerned with
184: the relation of concrete computing machines with physical time.
185: After recalling the general characteristic properties of physical time and
186: of computing machines which are presently realized, we shall compare
187: the solutions provided by synchronous and asynchronous systems to the
188: implementation of logical operations. We shall show that they give different
189: implementations of causal relations, reflecting in that way different causal
190: structures for space-time.
191:
192:
193: \section{Physical time}
194:
195: The notion of time may be seen to follow from two necessities. From a logical
196: point of view, time can be considered as the concept which allows one to make
197: a distinction between two
198: different types of propositions: general and universal propositions
199: (like mathematical ones) which are eternal, and particular propositions
200: which are related to changing reality (like those describing
201: physical systems). Moreover, time is also rendered necessary by the formulation
202: of physics: time is the concept which allows one to give a formal expression to
203: movement, and hence to the laws of physics.
204:
205: Properties of time are in fact imposed by the functions
206: that this notion must fulfill.
207: From the logical side, time allows one to conceive a same object
208: by characterizing it by its different states,
209: these states being asssociated with
210: the object at different times.
211: A time parameter can then be used not only to index the
212: different states characterizing a same object, but also to organize
213: the states of different objects into classes of simultaneity.
214:
215: The relation of order that can be introduced on the time parameter
216: allows one to define a relation of logical causality between
217: the state transitions affecting different objects. However, in order to
218: be realized physically, for instance on real machines, the causal relation
219: between states cannot be independent of the real motions affecting physical
220: systems. In particular, the simultaneity classes defined with the help of
221: the time parameter must coincide with those that are associated with
222: real events occuring in physical space, hence with the physical time.
223:
224: The notion of physical time is intimately related to the laws of physics.
225: After having remarked that pendulum oscillations are isochronous,
226: Galileo Galilei could give a
227: mathematical representation of motion induced by free fall, by relating the
228: undergone distance to the elapsed time,
229: the latter being understood as a universal
230: reference for all motions.
231: The existence of such a reference is made possible by the existence of
232: physical laws governing all movements, and in particular by the existence
233: of regular movements like inertial motions.
234:
235: This introduction of time leaves an important conventional part
236: in the definition of a time reference, even if a natural choice is provided by
237: motions which appear as most regular, like the Earth motion around the Sun.
238: This leads in fact to distinguish two types of time. Thus,
239: Leibniz \cite{Russell-Phi.Leib.},
240: relying on logical arguments, could consider that
241: space and time are mere relations between objects or events, which are
242: fixed by an observer in a conventional way, thus building subjective space
243: and time. Still, one is also bound to admit the existence of
244: objective space and time, as the only way to understand how physical laws
245: governing displacements of objects and time ordering of events can
246: be formulated in a universal way, independently of the observer.
247:
248: The formulation of the universal law of gravitation led Newton \cite{Newton}
249: to fix the role played by time in physical laws, and to endow it with
250: the mathematical
251: representation that we still use nowadays: that of a real parameter which
252: all physical quantities depend on. In fact, Newton introduced two different
253: notions of time, which he distinguished both in their conception and in their
254: usage. The first one, which he called "absolute and mathematical",
255: allowed him to write mathematical equations for the laws of mechanics
256: and gravitation. The second notion, which he called "common and sensible",
257: allowed him to relate the motions of different physical systems, including
258: clocks. Even if Newton privileged the first notion, which he considered
259: as representing absolute space and time, seeing clocks as systems
260: to be improved in order to make them as close as
261: possible to ideal space and time,
262: he nevertheless made two distinct uses of these notions. The first one, which
263: identifies with the curvilinear coordinate on the planet's trajectory,
264: he used
265: as a mathematical tool to deal with infinitesimals of different orders.
266: The second one, which is the physical time as can be
267: defined by Kepler's area law,
268: he used as a measure of inertial motions,
269: which he compared planetary motions with.
270:
271: The theory of relativity \cite{Einstein} has led to question
272: the a priori and absolute character of physical space and time.
273: According to relativity, the notion of time
274: relies on clocks, the date of an event being defined by coincidence
275: of this event with a top delivered by a clock located at the same place.
276: But in order to be defined in whole space, the notion of time also relies on
277: the exchange of light signals, which
278: are necessary to compare and synchronize the indications of
279: remote clocks.
280: The universal and finite velocity of light propagation then leads
281: to a definition of time simultaneity which depends on the observer's motion.
282: In other words, time simultaneity is not given a priori
283: but results from a construction, or clock synchronization.
284: By exchanging light signals, on which time references
285: provided by clocks are encoded, one can compare these references
286: and synchronize clocks.
287: Then, time allows one to construct space.
288: By comparing the light signals received from several remote clocks, one can,
289: by quadrangulation, determine positions both in time and space.
290: This relativistic definition of time and space is rendered necessary as soon
291: as a high precision must be attained. This is the case for instance when
292: corrections linked to the finite velocity of light, or relativistic effects,
293: must be taken into account \cite{Landau-Lifschitz,Wrinkler}.
294: Hence, this relativistic definition is the one
295: used in physics for high precision space-time measurements
296: \cite{Vessot}, and in metrology to define time and space standards
297: \cite{Quinn} and to construct the
298: space-time reference systems required by physics \cite{Petit,Wolf}.
299: It is also the one
300: used in modern practical positioning systems at the surface of the Earth,
301: like GPS \cite{Lewandowski-Thomas,Leschiutta}.
302: Finally, as it will appear in the following, it is also the
303: notion of time which is implicitly used by asynchronous communicating
304: and computing systems \cite{Lamport-Clocks}.
305:
306: The consequences of the theory of relativity on our conception of
307: space and time have been remarkably
308: discussed at the logical level by Russell \cite{Russell-ABC-Rel.,Russell-AM}.
309: Our representation in terms of permanent material structures located in space
310: and evolving according to a unique external time, must be replaced by that
311: in terms of events which are located both in space and time.
312: This conception of space-time not only affects the
313: formulation of modern
314: theories in a fundamental way \cite{Jaekel-Reynaud}, but also
315: underlies present applications in physics and metrology \cite{Guinot}.
316:
317: When refering to physical time, simultaneity classes cannot be defined a priori
318: any more, and rely on a physical implementation by means of propagating light
319: signals. This constructive character of time has important consequences on the
320: functioning of devices which rely on the physical exchange of information.
321: Causal relations between events cannot be derived by simple comparison
322: with an external, a priori given, parameter.
323: For systems which are unlocalized in space, like communicating processors,
324: this means that the time order relation of occuring events, even if it
325: can be defined unambiguously at the local level of each processor, nevertheless
326: requires a more complete representation to
327: be defined over the whole system in a consistent way
328: \cite{Seitz,Sutherland-Micropipelines}.
329: In the following, we shall analyse how the functioning of actual devices
330: depends on the causal structure of physical space-time.
331:
332: \section{Logical devices}
333:
334: To discuss the intimate relation between time and computation,
335: one must first recall some general principles which
336: underly the physical implementation of computing systems,
337: and which are applied in concrete machines
338: realized with present technologies.
339:
340: \bigskip
341: %\subsection{Implementation of logical operations}
342: \noindent {\bf 3.1 Implementation of logical operations}
343:
344: \noindent In CMOS (Complementary MOS) technology,
345: logical gates are implemented using two
346: electrical networks $\R_u$ and $\R_d$, as represented on Figure~1.
347: $x_i$ describe input channels, and $z$ the output channel.
348: $\R_u$ and $\R_d$ are built with electrical switches
349: which are combined in series/parallel networks,
350: thus allowing to implement the logics of propositions \cite{Shannon}.
351:
352: \bigskip
353: %\begin{center}
354: \begin{picture}(0,0)%
355: \psfig{file=push-pull.pstex}%
356: \end{picture}%
357: \setlength{\unitlength}{4144sp}%
358: %
359: \begingroup\makeatletter\ifx\SetFigFont\undefined%
360: \gdef\SetFigFont#1#2#3#4#5{%
361: \reset@font\fontsize{#1}{#2pt}%
362: \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
363: \selectfont}%
364: \fi\endgroup%
365: \begin{picture}(1530,2808)(856,-2635)
366: \put(2341,-1051){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Output}}}
367: \put(1711,-826){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$N_{u}$}}}
368: \put(1036,-1816){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{i}$}}}
369: \put(856,-1276){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Inputs}}}
370: \put(2386,-1276){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$z$}}}
371: \put(1711,-1816){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$N_{d}$}}}
372: \put(1396,-151){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}(logical true)}}}
373: \put(1036, 29){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Positive voltage source}}}
374: \put(1036,-2401){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Negative voltage source}}}
375: \put(1396,-2581){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}(logical false)}}}
376: \put(1036,-781){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{i}$}}}
377: \end{picture}
378:
379: Fig. 1. A logical gate.
380: %\end{center}
381:
382: \bigskip
383: Each switch is implemented with a transistor. A function implemented
384: by $\R$ will be said to be true, for a particular set of values of $x_i$,
385: if and only if there is a path that connects
386: extreme connections
387: of $\R$.
388: For instance, for the network represented by Figure~1:
389:
390: - when $\R_u$ is {\it true},
391: output $z$ is forced to value {\it true}.
392:
393: - when $\R_d$ is {\it true},
394: output $z$ is forced to value {\it false}.
395:
396: The possibility that ($\R_u = \R_d = true$)
397: for some values of $x_i$ must be
398: excluded, otherwise current could flow both through $\R_u$ and $\R_d$,
399: resulting in a short circuit between voltage sources. In the following, we
400: shall always impose that
401: ($\lnot \R_u \lor \lnot \R_d$)
402: is verified for all configurations of variables
403: $x_i$ ($\lnot$, $\lor$ and $\land$ define as usual negation, logical
404: disjunction and logical conjunction).
405:
406: \bigskip
407: %\begin{center}
408: \begin{picture}(0,0)%
409: \psfig{file=nand.pstex}%
410: \end{picture}%
411: \setlength{\unitlength}{4144sp}%
412: %
413: \begingroup\makeatletter\ifx\SetFigFont\undefined%
414: \gdef\SetFigFont#1#2#3#4#5{%
415: \reset@font\fontsize{#1}{#2pt}%
416: \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
417: \selectfont}%
418: \fi\endgroup%
419: \begin{picture}(3117,2025)(1126,-2401)
420: \put(2476,-1141){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$z$}}}
421: \put(1801,-2401){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}0}}}
422: \put(1306,-1861){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{1}$}}}
423: \put(4006,-781){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$z$}}}
424: \put(1306,-1501){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{2}$}}}
425: \put(1126,-826){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{1}$}}}
426: \put(1666,-826){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{2}$}}}
427: \put(3151,-646){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{1}$}}}
428: \put(1531,-511){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}1}}}
429: \put(2026,-511){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}1}}}
430: \put(3151,-1051){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{2}$}}}
431: \end{picture}
432:
433: Fig. 2. Nand gate.
434: %\end{center}
435:
436: \bigskip
437: Two cases must be considered.
438:
439: 1- $\R_u$ and $\R_d$ are always opposite, for all values of variables $x_i$,
440: ($\R_u = \lnot \R_d$).
441: This case implements propositions of classical logic
442: (Complementary MOS). The simple example of the {\it nand} gate
443: is represented on Figure~2 (a bubble represents negation):
444: \begin{eqnarray}
445: z = \R_{u} &=&\lnot x_{1} \lor \lnot x_{2} \nonumber\\
446: \R_{d} &=& \lnot \R_u = x_{1} \land x_{2}
447: \end{eqnarray}
448:
449: 2- $\R_u$ and $\R_d$ can be simultaneously {\it false}, i.e.
450: ($\lnot \R_u \land \lnot \R_d$) can be {\it true}.
451: In such configurations, the output $z$ is not connected to any voltage source.
452: Then, because of electrical capacities, $z$ memorizes its previous value.
453: This allows one to realize memories, like the {\it latch}
454: represented in Figure~3:
455: \begin{eqnarray}
456: &&\R_{u}= x \land e \nonumber\\
457: &&\R_{d}= \lnot x \land e
458: \end{eqnarray}
459:
460: \bigskip
461: %\begin{center}
462: \begin{picture}(0,0)%
463: \psfig{file=latche.pstex}%
464: \end{picture}%
465: \setlength{\unitlength}{4144sp}%
466: %
467: \begingroup\makeatletter\ifx\SetFigFont\undefined%
468: \gdef\SetFigFont#1#2#3#4#5{%
469: \reset@font\fontsize{#1}{#2pt}%
470: \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
471: \selectfont}%
472: \fi\endgroup%
473: \begin{picture}(1620,1179)(631,-2761)
474: \put(2251,-1951){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$z$}}}
475: \put(946,-1951){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x$}}}
476: \put(946,-2536){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$e$}}}
477: \put(1981,-1726){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Data output}}}
478: \put(721,-2761){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Enable}}}
479: \put(1576,-2131){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}L}}}
480: \put(631,-1726){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Data input}}}
481: \end{picture}
482:
483: Fig. 3. Transparent latch.
484: %\end{center}
485:
486: \bigskip
487: In practice, in order to have memorization last for long enough,
488: and quite generally for
489: all memories, one must ensure memory stability by using some feed-back, by means
490: of a looped amplifier. This feed-back can be permanent (static) or
491: recurrent (dynamic logic). One possibility of electrical feed-back is shown
492: in Figure~4, where two looped amplifiers have been added on output $z$, one
493: of them being weak, in the sense that it cannot create any serious
494: short circuit when it conflicts with any of the two networks $\R_u$ and $\R_d$.
495:
496: \bigskip
497: %\begin{center}
498:
499: \begin{picture}(0,0)%
500: \psfig{file=push-pull-mem.pstex}%
501: \end{picture}%
502: \setlength{\unitlength}{4144sp}%
503: %
504: \begingroup\makeatletter\ifx\SetFigFont\undefined%
505: \gdef\SetFigFont#1#2#3#4#5{%
506: \reset@font\fontsize{#1}{#2pt}%
507: \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
508: \selectfont}%
509: \fi\endgroup%
510: \begin{picture}(1992,2385)(1126,-2401)
511: \put(1801,-151){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}1}}}
512: \put(1126,-781){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{i}$}}}
513: \put(1711,-871){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$N_{u}$}}}
514: \put(1711,-1816){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$N_{d}$}}}
515: \put(1801,-2401){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}0}}}
516: \put(2566,-826){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{\rmdefault}{\mddefault}{\updefault}weak}}}
517: \put(1126,-1816){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{i}$}}}
518: \put(2971,-1141){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$z$}}}
519: \end{picture}
520:
521: Fig. 4. Electrical feed-back.
522: %\end{center}
523:
524: \bigskip
525: Another way to realize a stable memory is to implement a static feed-back on
526: a logical gate corresponding to the first case.
527: Then, the quoted {\it latch} can be realized with a looped multiplexer
528: ({\it mux}),
529: as shown
530: in Figure~5:
531: \begin{eqnarray}
532: \label{latchdef}
533: z=N_{u} &=&(x \land e) \lor (z \land \lnot e)\nonumber\\
534: N_{d} &=& \lnot N_{u}
535: \end{eqnarray}
536: %\begin{center}
537: \begin{picture}(0,0)%
538: \psfig{file=latche-mux.pstex}%
539: \end{picture}%
540: \setlength{\unitlength}{4144sp}%
541: %
542: \begingroup\makeatletter\ifx\SetFigFont\undefined%
543: \gdef\SetFigFont#1#2#3#4#5{%
544: \reset@font\fontsize{#1}{#2pt}%
545: \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
546: \selectfont}%
547: \fi\endgroup%
548: \begin{picture}(1632,1497)(991,-2491)
549: \put(2611,-1501){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$z$}}}
550: \put(991,-1681){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x$}}}
551: \put(991,-2491){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$e$}}}
552: \put(1711,-1186){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Mux}}}
553: \end{picture}
554:
555: Fig. 5. Transparent latch with multiplexer.
556: %\end{center}
557:
558: \bigskip
559: This exhibits a very general difficulty which characterizes looped systems:
560: variable $z$ appears on both sides of its defining equation (\ref{latchdef}).
561: This equation does not mean that an equality must be
562: realized, for instance with electric voltages, but that the following
563: assignment must be realized:
564: \begin{equation}
565: \label{latcha}
566: z \leftarrow \left(x \land e \right) \lor \left(z \land \lnot e\right)
567: \end{equation}
568: \begin{equation}
569: \label{latche}
570: z_a = \left(x \land e \right) \lor \left(z_b \land \lnot e\right)
571: \end{equation}
572: In other words, two values of the variable $z$ must be distinguished, which
573: correspond to successive times: $z_a$ (after) and $z_b$ (before) are linked
574: by equation (\ref{latche}).
575: It is required that the two values $z_a$ and $z_b$ do not interfere,
576: and that variable $z$ change from $z_b$ to $z_a$.
577: The assignment represented by equation (\ref{latcha}) expresses a causality
578: requirement that must be implemented in order to realize computations.
579:
580: In the particular case of the {\it latch} just described,
581: operation may only cause problem
582: in case $e$ is falling. Indeed, in other cases:
583:
584: - when $e$ is low, $z$ is memorized
585:
586: - when $e$ is high, $z$ copies $x$
587:
588: - when $e$ rises, $z$ begins to copy $x$
589:
590: so that the circuit operates correctly in these three cases.
591: However, if $e$ falls down while $x$ changes, $z$ will hesitate between two
592: values of $x$. The whole circuit may enter a metastable state which is invalid
593: (electric voltage will stay in metastable balance at an intermediate level)
594: and which may last for an unbounded time. It may
595: leave this state for any of the two possible values of $z$, and this
596: in an undeterministic way, which may not be eventually acceptable for the type
597: of computation envisaged.
598: Let us note that the circuit of Figure~4 shows the same defects, for it
599: involves a feed-back, although this may be less apparent when treated at
600: the electrical level.
601:
602: Although chosen here as an example, the {\it latch} shows properties which are
603: encountered quite generally in looped devices.
604: This brief discussion shows that the correct operation of a circuit
605: cannot be analysed without taking its environment into account,
606: in particular the time ordering relations of input and output signals.
607: This is entailed by the existence of loops
608: and must be dealt with quite generally,
609: for computing machines are naturally looped systems.
610: In all cases, time constraints must be implemented
611: in order to ensure the causality relations which are necessary for computation.
612: These constraints will take very different forms, according to the type
613: of implementation chosen, whether by means of
614: synchronous or asynchronous systems.
615: Before discussing separately these two classes of systems, we shall first recall
616: one important property they share, as it is also imposed by implementation
617: of complex computations, the property of modularity.
618:
619: \bigskip
620: %\subsection{Modularity}
621: \noindent {\bf 3.2 Modularity}
622:
623: \noindent There exist many various ways to organize electronic components into
624: logical circuits, in order to realize machines performing computations.
625: Usually and quite generally, one defines
626: complex circuits as hierarchies built with
627: elementary circuits called primitives. This method, imposed by practical
628: considerations, indeed hints at a logical necessity: one must be able to
629: design and realize with the same
630: rigour circuits of increasing complexity. More precisely, one must
631: insure that circuits implementing logical functions of high complexity level
632: behave as they should, and one must obtain this confidence in a rather
633: short time. Because of the exponential increase of the number of
634: configurations to check, this requirement implies that
635: a direct physical test of
636: the circuit's behaviour soon becomes impossible
637: when the complexity of the logical function increases.
638: This aim can then only be attained with the help of modular implementations,
639: by taking advantage both of their composite logical structure, and of the
640: logical simplicity of chosen primitives \cite{Matherat-Jaekel}.
641: Proofs relying on known properties
642: of composition of primitives may be developed, which allow one to deduce
643: the correct functioning
644: of a whole modular complex from that of its constituent primitives.
645: Then, a test of the whole complex reduces to that of some of its
646: constituents, which are logically simple.
647: Although efficient, such strategy may not reveal itself so straightforward.
648: According to the type of physical implementation chosen for the primitives,
649: problems may appear which prevent the systematic development of
650: complex circuits operating correctly, and which
651: do not occur when the choice of primitives is modified,
652: or when pecular constraints are put on their composition.
653: Then, there results that logical and physical aspects of modular
654: implementations must be analysed concurrently.
655:
656: \section{Synchronous and asynchronous circuits}
657:
658: Time appears in computing systems very early,
659: already in the definition of the electronic circuits
660: which implement logical functions. Most circuits which are known and used are
661: synchronous. Synchronous circuits may be defined as automata whose
662: transitions between successive states are triggered by pulses delivered by
663: a global clock.
664: An alternative class of circuits is provided by asynchronous
665: circuits.
666: In this section, we introduce the strategies followed by these two
667: main classes of circuits for making the implementation of computation
668: effective, and, in particular, for dealing with problems of
669: computation interferences.
670:
671: \bigskip
672: %\subsection{Synchronous circuits}
673: \noindent {\bf 4.1 Synchronous circuits}
674:
675: \noindent VLSI circuits which are produced nowadays
676: are highly concurrent devices
677: (a microprocessor can contain up to
678: $10^7$ transistors, i.e. $10^6$ logical gates),
679: and yet most of them can be modelized as
680: non concurrent devices and can be considered
681: as single finite automata. This property comes from their synchronous
682: character, which means that all operations on internal memories are
683: simultaneously activated by a single pulse of a global clock shared
684: by the whole circuit.
685:
686: Synchronous implementations use a global clock to avoid the stability problem
687: which has been discussed in previous section. More precisely, with
688: same notations, all {\it latches} are systematically
689: operated in such a way to ensure that logical variables $x$ be stable when
690: variables $e$ are falling. There exist many different types of memories,
691: but all present the same problem, reflecting the time character of
692: logical assignment. For the sake of simplicity, we shall only discuss the case
693: of the previous {\it latch}, and consider it as a generic example.
694: A synchronous device using two items of this {\it latch} for each register bit
695: (master-slave {\it flip-flop})
696: is sketched on Figure~ 6.
697: The enabling signals $e_1$ and $e_2$ are mutually excluded in time, and are
698: derived systematically from a common clock. The output is fed back
699: under the form of input variables $Q_i$
700: into a combinatorial operator.
701: If the clock period is larger than the feedback time, then
702: variables $Q^\prime_i$ are always stable
703: when $e_1$ is falling and the {\it latches} act as
704: required, i.e., they make the iteration of the combinatorial function
705: effective.
706:
707: The global state $Q$ is encoded by
708: the state of all memory bits, and can only change
709: at the arrival of a clock pulse.
710: Regarding specification and design, synchronous circuits may be considered as
711: modular composites, where primitives, and other modules as well, are finite
712: automata of the type described by Figure~6.
713: The register encodes the state of the circuit, while the combinatorial
714: operator represents the implementation of its transition function.
715: All registers are activated by a single clock pulse. By connecting
716: several automata of this type, one obtains another automaton of the same
717: type, only with a larger memory and a more complex combinatorial function.
718: In such a representation, and from a logical point of view,
719: neither time nor space are involved. One only needs to consider the
720: successive logical steps associated with successive clock periods.
721: The logical time of a computation reduces to a mere integer,
722: which one only relates to physical time by multiplying it
723: by the mean clock period.
724: In other words, time is discretized.
725:
726: \bigskip
727: %\begin{center}
728:
729: \begin{picture}(0,0)%
730: \psfig{file=synchrone.pstex}%
731: \end{picture}%
732: \setlength{\unitlength}{4144sp}%
733: %
734: \begingroup\makeatletter\ifx\SetFigFont\undefined%
735: \gdef\SetFigFont#1#2#3#4#5{%
736: \reset@font\fontsize{#1}{#2pt}%
737: \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
738: \selectfont}%
739: \fi\endgroup%
740: \begin{picture}(3072,5916)(946,-6010)
741: \put(1711,-3031){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$i$-th bit of register}}}
742: \put(2926,-2401){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Clock}}}
743: \put(3331,-1411){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$Q$}}}
744: \put(946,-1951){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Inputs}}}
745: \put(2746,-1411){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$Q\prime$}}}
746: \put(3241,-2176){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$e_{2}$}}}
747: \put(2746,-646){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Register}}}
748: \put(2881,-2176){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$e_{1}$}}}
749: \put(1666,-1276){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{\rmdefault}{\mddefault}{\updefault}Combinatorial}}}
750: \put(1846,-1411){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{\rmdefault}{\mddefault}{\updefault}function}}}
751: \put(3511,-1816){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Outputs}}}
752: \put(1621,-5281){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$e_{2}$}}}
753: \put(1621,-4921){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$e_{1}$}}}
754: \put(3376,-5551){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}time}}}
755: \put(1936,-5956){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}One clock period}}}
756: \put(3376,-3391){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$Q_{i}$}}}
757: \put(1261,-3391){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$Q\prime _{i}$}}}
758: \put(1936,-3616){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}L}}}
759: \put(2746,-3616){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}L}}}
760: \put(2116,-4201){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$e_{1}$}}}
761: \put(2926,-4201){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$e_{2}$}}}
762: \end{picture}
763:
764: Fig. 6. Synchronous circuit.
765: %\end{center}
766:
767: \bigskip
768: The only physical constraint one must impose is that the clock frequency be
769: smaller than the limit value necessary for all internal propagations to
770: be performed in less time than the clock period.
771: Space neither plays a role in the logical function.
772: The whole circuit may be considered as local, i.e.
773: propagation times need only to be taken into account when
774: circuits are connected on large distances,
775: that is when propagation times are large
776: when compared to the clock period, as is the case when
777: computers are connected.
778: Implementation on a silicon chip must take into account and control
779: all propagation times within a circuit, so that to insure that all
780: inputs become stable before the end of each clock
781: period. The clock signal must be implemented so that it arrives simultaneously
782: at all {\it latches}, that is with negligible delays when compared to the
783: clock period. Clearly, such properties can only be checked once the whole
784: circuit has been specified. Such type of circuit cannot be implemented
785: incrementally, i.e. by implementing a part without any knowledge
786: on its connections with other parts and on the clock frequency of the whole
787: circuit. In other words, all parts must be local at every scale,
788: from primitives to the whole circuit.
789:
790: The synchronous approach is however questioned in present VLSI designs.
791: This arises mainly
792: because of difficulties which are encountered when distributing
793: simultaneously a same clock
794: signal to millions of {\it latches},
795: over several ${\rm cm}^2$, and at a frequency of the
796: order of a Gigaherthz. Clock distribution results
797: in using an important
798: part of the chip surface and in producing
799: an important part of the overall dissipation.
800:
801: \bigskip
802: %\subsection{Asynchronous circuits}
803: \noindent {\bf 4.2 Asynchronous circuits}
804:
805: \noindent Asynchronous circuits may be defined
806: in opposition to synchronous circuits,
807: by the requirement of not using a global clock.
808: But, rather than being complementary, the class they build includes synchronous
809: circuits.
810:
811: Usual models represent asynchronous circuits
812: as general devices which are distributed
813: and communicate along connecting channels, as shown on Figure~7.
814: The activity of such circuits is not ruled by the pulses of a global clock,
815: but proceeds with communications distributed between many
816: concurrent parts.
817: These devices can be simple logical gates (a few transistors) or, at
818: the opposite, complex processors.
819: Communications can be realized through a single
820: wire or through a complex network.
821: Clearly, concurrency cannot be ignored any more. Indeed, one can no more
822: define a logical state which would be associated with the global circuit
823: at a definite time.
824: For each device can change its state following a communication,
825: without being synchronized with most other devices.
826: The notion of computing step itself must be revised, as it relies
827: on a total ordering of all logical events.
828:
829: \bigskip
830: %\begin{center}
831:
832: \begin{picture}(0,0)%
833: \psfig{file=async.pstex}%
834: \end{picture}%
835: \setlength{\unitlength}{4144sp}%
836: %
837: \begingroup\makeatletter\ifx\SetFigFont\undefined%
838: \gdef\SetFigFont#1#2#3#4#5{%
839: \reset@font\fontsize{#1}{#2pt}%
840: \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
841: \selectfont}%
842: \fi\endgroup%
843: \begin{picture}(2319,1374)(1024,-2008)
844: \put(2071,-916){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}D$_{1}$}}}
845: \put(1081,-1411){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$Env.$}}}
846: \put(2971,-1141){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}D$_{2}$}}}
847: \put(2206,-1861){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}D$_{3}$}}}
848: \end{picture}
849:
850: Fig. 7. Asynchronous circuit.
851: %\end{center}
852:
853: \bigskip
854: Problems of computation interference may then arise at two different levels.
855: At lowest level, functioning of a single component may be endangered by
856: computing interferences within the component itself, due to internal loops
857: and instabilities of internal variables. At highest level, composition of
858: asynchronous circuits may induce computation interferences due to
859: exchanges between one module and its environment, the latter
860: sending signals which conflict with the module operation.
861:
862: We shall discuss the second case only and shall assume that primitives
863: may be defined which are free from internal
864: computing interferences (see for instance
865: \cite{Molnar-Fang-Rosenberger,Furber-Davis}).
866: We first
867: briefly describe those that are most
868: frequently used in asynchronous circuits. In some examples, logical functions
869: are defined in a way which does not distinguish between rising and falling
870: edges. These undistinguished transitions are called events, and the
871: logical function operates on these events. But the events are still
872: transitions between different levels (or Boolean variables), so that
873: each primitive can be considered in both ways, either as an operation
874: on Boolean variables or as (another) operation on events.
875:
876: A most frequently used primitive is the {\it join} element, or Muller's
877: {\it C-element}. It has two inputs $x_1$ and $x_2$ and one output $z$,
878: and its logical function can be described in the following way:
879:
880: - if $x_1 = x_2$, then $z = x_1 = x_2$
881:
882: - if inputs become different from one another,
883: then $z$ keeps its previous value.
884:
885: Then, ouput $z$ only changes after both inputs $x_1$ and $x_2$ have changed.
886: This allows a rendez-vous to be realized between levels (wait until
887: two inputs acquire the same value) or between events (wait until two inputs
888: have received the same number of rising or falling edges, after proper
889: initialization).
890:
891: The primitive {\it C-element} can be realized
892: using an electrical feed-back analogous to that of Figure~4.
893: Along this line, a frequent
894: realization is represented on Figure~8.
895:
896: \bigskip
897: %\begin{center}
898:
899: \begin{picture}(0,0)%
900: \psfig{file=c-trans.pstex}%
901: \end{picture}%
902: \setlength{\unitlength}{4144sp}%
903: %
904: \begingroup\makeatletter\ifx\SetFigFont\undefined%
905: \gdef\SetFigFont#1#2#3#4#5{%
906: \reset@font\fontsize{#1}{#2pt}%
907: \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
908: \selectfont}%
909: \fi\endgroup%
910: \begin{picture}(2352,2004)(451,-1738)
911: \put(2656,-646){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$z$}}}
912: \put(1711,-1681){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}0}}}
913: \put(1711, 74){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}1}}}
914: \put(2161,-331){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{\rmdefault}{\mddefault}{\updefault}weak}}}
915: \put(451,-466){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{1}$}}}
916: \put(451,-826){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{2}$}}}
917: \end{picture}
918:
919: Fig. 8. Simplified C-element.
920: %\end{center}
921:
922: \bigskip
923: Another primitive is the {\it toggle}, represented in Figure~9,
924: which possesses one input $x$ and two ouputs $z_1$ and $z_2$.
925: Successive events on the input are alternatively sent to outputs
926: $z_1$ and $z_2$. The first event after initialization is sent to
927: the marked output $z_1$.
928:
929: The {\it or} operation between events, also called {\it merge}, can be
930: realized with a classical {\it exclusive} {\it or} gate
931: ({\it xor} between levels).
932: The {\it sequencer}, represented in Figure~9,
933: possesses three inputs $x_1$, $x_2$ and $x_3$
934: and two outputs $z_1$ and $z_2$.
935: Its role is to grant a given resource to one of two different
936: processes which can make requests on inputs $x_1$ and $x_2$.
937: When an event is received on $x_3$, a granting event is produced either on
938: $z_1$ or $z_2$ according to an existing request respectively on $x_1$ or $x_2$.
939: When two requests are present, the {\it sequencer} arbitrates between the two,
940: and thus introduces some part of indeterminism. The {\it sequencer} may take an
941: unbounded time to arbitrate, but it is required to realize the mutual
942: exclusion of the two grant signals.
943:
944: \bigskip
945: %\begin{center}
946:
947: \begin{picture}(0,0)%
948: \psfig{file=prim-di.pstex}%
949: \end{picture}%
950: \setlength{\unitlength}{4144sp}%
951: %
952: \begingroup\makeatletter\ifx\SetFigFont\undefined%
953: \gdef\SetFigFont#1#2#3#4#5{%
954: \reset@font\fontsize{#1}{#2pt}%
955: \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
956: \selectfont}%
957: \fi\endgroup%
958: \begin{picture}(1947,3435)(901,-3661)
959: \put(1891,-1276){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x$}}}
960: \put(2476,-3661){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{3}$}}}
961: \put(2791,-2131){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$z$}}}
962: \put(2791,-1231){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$z_{1}$}}}
963: \put(2746,-2806){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$z_{1}$}}}
964: \put(2791,-1456){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$z_{2}$}}}
965: \put(2746,-3076){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$z_{2}$}}}
966: \put(1936,-1951){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{1}$}}}
967: \put(1936,-2176){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{2}$}}}
968: \put(1936,-2761){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{1}$}}}
969: \put(1936,-3031){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{2}$}}}
970: \put(2341,-691){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}C}}}
971: \put(1891,-691){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{2}$}}}
972: \put(1891,-421){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{1}$}}}
973: \put(901,-691){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}C-element}}}
974: \put(901,-1411){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Toggle}}}
975: \put(901,-2221){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Merge}}}
976: \put(901,-2986){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Sequencer}}}
977: \put(2791,-601){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$z$}}}
978: \end{picture}
979:
980: Fig. 9. Some asynchronous primitives.
981: %\end{center}
982:
983: \section{Composition of circuits and time ordering}
984:
985: In this section, we discuss the composition of asynchronous circuits,
986: and some solutions which have been brought to the problem of computing
987: interferences.
988:
989: Compositions of asynchronous circuits correspond to distributed systems,
990: where different parts communicate in a way which is
991: not regularized by a global clock.
992: Then various and arbitrary time delays affect successive transitions
993: at the input of a module.
994: Inputs may then conflict with the correct operation
995: of the module itself.
996: The approaches followed in circuit design to deal with
997: computing interferences fall into two main classes.
998: One practical approach to timing problems
999: consists in working directly on the physical
1000: implementation, by keeping track of all the delays occuring in the logical
1001: circuit, together with all the constraints which must be satisfied by
1002: these delays in order to make the whole circuit operate correctly.
1003: Then, programs are developed to find and optimize solutions in a
1004: systematic way \cite{Chakraborty-Yun-Dill,Stevens-Ginosar-Rotem}.
1005: Although practically very efficient, this strategy rapidly attains such a
1006: complexity that it becomes very difficult to distinguish fundamental
1007: issues from practical choices.
1008: In the other class of approaches, one attempts to separate as much as possible
1009: the logical issues related with timing from their physical manifestations,
1010: that is mainly from the values of time delays.
1011: This has led to different studies, focussing either on the determination
1012: of a best choice of logical primitives, satisfying criteria like
1013: speed-insensitivity or delay-insensitivity \cite{Martin-Hoare},
1014: or on a more restrictive
1015: definition of modular composition, like delay-insensitive compositions
1016: \cite{Udding-DI-def,Ebergen-Dist.Comp.}.
1017: In the following, we shall only briefly discuss approaches
1018: related with delay-insensitivity,
1019: and focus on the fundamental relation they tend to exhibit between the
1020: occurence of computing interferences and the causal structure of physical
1021: space-time.
1022:
1023: In order to make the analysis easier to follow, we shall introduce a graphic
1024: representation of the communications occuring between modules of a
1025: composition (see Figure~11).
1026: These graphs are analogous to those that can be used
1027: in relativistic physics to represent the space-time evolution of
1028: localized physical systems, together with the light signals they exchange.
1029: As discussed in a previous section,
1030: an essential feature is the absence of an a priori given
1031: global and common time.
1032: Only a local time ordering can be made between the successive events occuring
1033: on each module, reflecting the causal relations which can be made locally.
1034: Although time is represented as the vertical axis,
1035: this only indicates the direction for
1036: increasing time on each module.
1037: Different modules are displayed on the horizontal axis, which
1038: roughly corresponds to space.
1039: Each module is then represented by a vertical line, indicating the causal
1040: succession of the local events occuring at its inputs or outputs.
1041: Communications are then represented by inclined arrows leaving
1042: a module (output) to reach another module (input).
1043: Although they may vary, the slopes of theses arrows must always be greater
1044: than a strictly positive lower bound, which corresponds to light velocity.
1045: Varying slopes indicate that varying speed and
1046: delays affect communications between modules.
1047:
1048: In the following, we shall denote by "event" each arrow corresponding to a
1049: communication, and shall call "point" the intersection of this event
1050: with the time evolution of a module (following in that way the
1051: notation
1052: introduced by Russell in his discussion of the causal structure
1053: of relativistic space-time \cite{Russell-AM}).
1054: The logical specification of each module is translated into causal relations
1055: between the points which represent the occurence of events on the module.
1056: These local constraints may be given a precise expression
1057: using a formal language
1058: well suited to represent time
1059: ordered event structures \cite{Martin-Hoare,Ebergen-Dist.Comp.,Winskel}.
1060: As propagation delays play an essential part,
1061: ordering constraints will be most conveniently visualized on
1062: graphic representations, which allow the analysis of global
1063: causal relations within distributed systems.
1064:
1065: \bigskip
1066: %\subsection{Delay-insensitivity}
1067: \noindent {\bf 5.1 Delay-insensitivity}
1068:
1069: \noindent In order to discuss the role of delays in computation interferences,
1070: let us first analyse
1071: the illustrating example of the {\it Q-element}
1072: \cite{Martin-Hoare,Martin-Limit.},
1073: which is represented in Figure~10.
1074: The formal expression describing the logical function
1075: of the {\it Q-element} can be written in a language which is derived from CSP
1076: (Communicating Sequential Processes) \cite{Hoare-CSP}:
1077: \begin{equation}
1078: \label{Qelement}
1079: \ast \left[ [x_i]; y_o\uparrow; [y_i]; u\uparrow; [u]; y_o\downarrow;
1080: [\lnot y_i]; x_o\uparrow; [\lnot x_i]; u\downarrow; [\lnot u]; x_o\downarrow
1081: \right]
1082: \end{equation}
1083: Each variable between brackets, which precedes
1084: a transition, represents a logical
1085: variable which must be true before the circuit can execute the
1086: transition which follows ($;$ denotes time succession, and $*$ arbitrary
1087: repetition of the expresssion in brackets).
1088: Thus, the circuit waits for $x_i$ to be true, then
1089: emits a rising edge on output $y_o$, etc...
1090:
1091: This logical function can be implemented as a composition of a {\it C-element}
1092: with two {\it and } gates, as represented in Figure~10. Output $u$
1093: of the {\it C-element} is followed by a fork, which relates $u$ to one input
1094: of each of the {\it and } gates. Two other forks also dispatch
1095: the event produced by the environment $x_i$ (resp. $y_i$)
1096: on two inputs
1097: denoted by $x_1$ and $x_2$ (resp. $y_1$ and $y_2$).
1098:
1099: \bigskip
1100: %\begin{center}
1101:
1102: \begin{picture}(0,0)%
1103: \psfig{file=q-elt.pstex}%
1104: \end{picture}%
1105: \setlength{\unitlength}{4144sp}%
1106: %
1107: \begingroup\makeatletter\ifx\SetFigFont\undefined%
1108: \gdef\SetFigFont#1#2#3#4#5{%
1109: \reset@font\fontsize{#1}{#2pt}%
1110: \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
1111: \selectfont}%
1112: \fi\endgroup%
1113: \begin{picture}(2712,1872)(1216,-2773)
1114: \put(2251,-2581){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$y_{1}$}}}
1115: \put(2476,-1996){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}C}}}
1116: \put(3826,-1186){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$y_{o}$}}}
1117: \put(3016,-1096){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{1}$}}}
1118: \put(2251,-1591){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{2}$}}}
1119: \put(3061,-1546){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$u$}}}
1120: \put(3736,-2581){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$y_{i}$}}}
1121: \put(1216,-1096){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{i}$}}}
1122: \put(1216,-2491){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{o}$}}}
1123: \put(1621,-2626){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}B}}}
1124: \put(3421,-1321){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}A}}}
1125: \put(2026,-2266){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$u$}}}
1126: \put(2926,-2221){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$y_{2}$}}}
1127: \end{picture}
1128:
1129: Fig. 10. Q-element.
1130: %\end{center}
1131:
1132: \bigskip
1133: The logical operation of the circuit may be represented using a space-time
1134: graph, as in Figure~11. Left and right parts of the circuit environment are
1135: respectively represented as $X$ and $Y$.
1136: The series of points corresponding to the definition of the logical
1137: function of each module can be followed on each vertical line.
1138: Situations which correspond to rendez-vous, i.e. intervals
1139: where a primitive is waiting for the arrival of two events in any order,
1140: have been represented by a thick line.
1141: This is systematically the case for the {\it C-element}, but also for
1142: the {\it and} gates, when they are waiting for their two inputs to be true.
1143: Pairs of points which cannot occur in reverse order without
1144: ruining computation, have been signalized by dashed lines.
1145: The two cases involve the
1146: internal variable $u$ and one event, $y_1\uparrow$ or $x_1\downarrow$
1147: produced by the
1148: environment ($Y$ or $X$). Event $y_1\uparrow$ must reach the {\it and} gate B
1149: before event $u\uparrow$,
1150: recalling that the latter has been produced by the arrival
1151: of event $y_2\uparrow$ on the {\it C-element}. Then, the fork which dispatches
1152: both events $y_1\uparrow$ and $y_2\uparrow$
1153: plays a crucial role in determining the order
1154: of points on {\it and} gate B.
1155:
1156: A few remarks are in order. Concurrent computing is well illustrated
1157: by Figure~11. Different computations proceed along paths involving
1158: vertical and propagation lines,
1159: each representing a causally ordered series of operations.
1160: Causal order makes only sense either within each vertical line, where it
1161: is associated with the logical function of the module, or within propagating
1162: lines, where it connects the output of one module to
1163: the input of another module. But no a priori total order exists between all
1164: points of the graph.
1165: This is illustrated by the independence of
1166: computation on the order of some pairs of points. For instance,
1167: two events belonging to different branches of the fork
1168: on variable $u$ at the output of the {\it C-element}
1169: may have arbitrary relative order.
1170:
1171: \bigskip
1172: %\begin{center}
1173:
1174: \begin{picture}(0,0)%
1175: \psfig{file=q-esp-tps.pstex}%
1176: \end{picture}%
1177: \setlength{\unitlength}{4144sp}%
1178: %
1179: \begingroup\makeatletter\ifx\SetFigFont\undefined%
1180: \gdef\SetFigFont#1#2#3#4#5{%
1181: \reset@font\fontsize{#1}{#2pt}%
1182: \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
1183: \selectfont}%
1184: \fi\endgroup%
1185: \begin{picture}(2757,5487)(1384,-6418)
1186: \put(2071,-5416){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{2}\uparrow$}}}
1187: \put(1891,-6181){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$X$}}}
1188: \put(2971,-6181){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}C}}}
1189: \put(4051,-6181){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$Y$}}}
1190: \put(1441,-1096){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$t$}}}
1191: \put(2431,-6181){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}B}}}
1192: \put(3511,-6181){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}A}}}
1193: \put(2026,-5956){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{o}\downarrow$}}}
1194: \put(3241,-5956){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$u\downarrow$}}}
1195: \put(3151,-5506){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{1}\uparrow$}}}
1196: \put(3736,-5281){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$y_{o}\uparrow$}}}
1197: \put(4141,-5056){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$y_{i}\uparrow$}}}
1198: \put(2566,-4966){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$y_{1}\uparrow$}}}
1199: \put(3151,-4381){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$u\uparrow$}}}
1200: \put(2656,-4381){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$u\uparrow$}}}
1201: \put(3736,-4291){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$y_{o}\downarrow$}}}
1202: \put(2566,-3796){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$y_{1}\downarrow$}}}
1203: \put(1621,-3211){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{i}\downarrow$}}}
1204: \put(3106,-2491){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$u\downarrow$}}}
1205: \put(2656,-2491){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$u\downarrow$}}}
1206: \put(2026,-2356){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{o}\downarrow$}}}
1207: \put(1621,-2041){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{i}\uparrow$}}}
1208: \put(1621,-5731){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{i}\uparrow$}}}
1209: \put(2116,-2896){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{2}\downarrow$}}}
1210: \put(3106,-3031){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{1}\downarrow$}}}
1211: \put(2026,-3481){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$x_{o}\uparrow$}}}
1212: \put(3196,-3526){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$y_{2}\downarrow$}}}
1213: \put(4141,-3976){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$y_{i}\downarrow$}}}
1214: \put(3691,-4786){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$y_{2}\uparrow$}}}
1215: \end{picture}
1216:
1217: Fig. 11. Space-time graph of the Q-element.
1218: %\end{center}
1219:
1220: \bigskip
1221: Imposing a total ordering would amount to implement a global time,
1222: by means of clock distribution for instance, which would allow one to draw
1223: horizontal lines on the graph of Figure~11. But such condition is too
1224: restrictive, as computation only relies on causal relations imposed
1225: by vertical and propagation lines. The remaining freedom in the ordering of
1226: events, as the one
1227: related to the fork at the output of the {\it C-element},
1228: is necessary for optimizing the circuit performance.
1229: For a definite implementation, event ordering will depend on the
1230: relative spatial localization of modules, so that the remaining
1231: freedom may be
1232: used to find an optimal arrangement of modules on the chip.
1233:
1234: The property of delay-insensitivity \cite{Molnar-Fang-Rosenberger}
1235: is easily seen on the graph.
1236: It corresponds to the independence of causal ordering of computation
1237: on delays
1238: occuring in responses of modules or in propagations of signals,
1239: i.e. on vertical or horizontal displacements of the modules.
1240: Such property is made possible by using primitives which wait for the
1241: arrival of events at their input before producing other events
1242: at their output. But this condition appears to be unsufficient.
1243: In that respect, it is instructive to compare the two kinds
1244: of forks used by the previous composition implementing the {\it Q-element}.
1245: No constraint affects the events produced by
1246: the fork at the output
1247: of the {\it C-element} (thick lines in Figure~11).
1248: However, forks dispatching the events produced by the
1249: environment must be implemented in such a way to respect the causal order
1250: of the events which they generate and which finally arrive at the same
1251: {\it and} gate (dashed lines in Figure~11).
1252: Such forks, which are called {\it isochronic forks}
1253: \cite{Martin-Hoare,Martin-Limit.},
1254: must be isolated and given a special treatment
1255: at the implementation level,
1256: in order to satisfy the delay constraints which are necessary for preserving
1257: causal ordering.
1258:
1259: The property of delay-insensitivity (DI) has been introduced and much developed
1260: as a simple condition one can impose on primitives and logical
1261: circuits, with the aim to design in a systematical way asynchronous circuits
1262: of arbitrary complexity, without having to take time scales into account.
1263: One approach consists in defining DI circuits as compositions of
1264: stable primitives devoid of internal loops (only electrical loops being
1265: used for memorization) \cite{Martin-Dist.Comp.}.
1266: A primitive is defined to be stable, by imposing that an
1267: input which changes the output cannot change before the output
1268: has been established. It can then be shown that only compositions
1269: of {\it C-elements} can be DI according to this definition.
1270:
1271: But, it can also be shown that compositions using {\it C-elements}
1272: (and generalized {\it C-elements} with more inputs) exclusively, strongly
1273: limit the type of allowed computations,
1274: excluding most circuits of interest \cite{Martin-Limit.}.
1275: The {\it isochronic fork} may then be advocated as a weakest compromise
1276: to delay insensitivity. Adding the {\it isochronic fork} and
1277: using this extended class of elements, called quasi
1278: delay-insensitive (QDI),
1279: complex and efficient asynchronous circuits have been realized \cite{R3000}.
1280: However, as illustrated by the example of
1281: the {\it Q-element}, {\it isochronic forks} need to be
1282: identified at the logical level and their implementation
1283: must be given a special treatment, which
1284: may reveal itself intricate for very complex circuits.
1285:
1286: \bigskip
1287: %\subsection{Delay insensitive composition}
1288: \noindent {\bf 5.2 Delay insensitive composition}
1289:
1290: \noindent Another approach for avoiding computation
1291: interferences \cite{Molnar-Fang-Rosenberger,Udding-DI-def,Ebergen-Dist.Comp.},
1292: consists in defining a less restrictive set of
1293: DI primitives, together with a notion of
1294: DI composition of these primitives.
1295: Circuits are represented in a formal language, called trace theory,
1296: similar to the one used in equation (\ref{Qelement}), with further
1297: syntax rules on
1298: logical operations.
1299: Computing interferences are avoided by imposing structural constraints
1300: under the form of simple rules.
1301: Let us first recall definitions and some properties of trace structures
1302: \cite{Ebergen-Dist.Comp.,Mazurkiewicz}.
1303:
1304: \newtheorem{definition}{Definition}
1305: \begin{definition}
1306: Trace structures are defined as triples
1307: $R= <{\bf i}R, {\bf o}R, {\bf t}R>$,
1308: where ${\bf i}R$ and ${\bf o}R$ are finite sets of symbols, respectively the
1309: input alphabet and the output alphabet,
1310: and ${\bf t}R$ is the set of traces, which is a subset of
1311: $({\bf i}R \cup {\bf o}R)^*$,
1312: the set of all finite-length sequences of symbols taken in the union
1313: set ${\bf i}R \cup {\bf o}R$.
1314: \end{definition}
1315:
1316: Trace structures are traditionally denoted by
1317: capital letters, while lower case letters $a$, $b$, $c$ denote symbols
1318: and $s$, $t$ traces.
1319: The following short notations are also frequently used:
1320: \beqa
1321: && a? \equiv
1322: <\lbrace a \rbrace, \emptyset, \lbrace a \rbrace> \nonumber\\
1323: && b! \equiv
1324: <\emptyset, \lbrace b \rbrace, \lbrace b \rbrace>
1325: \eeqa
1326:
1327: \begin{definition}
1328: Operations of concatenation, union, repetition, prefix-closure, projection and
1329: weaving are defined on trace structures:
1330: \beqa
1331: \label{operations}
1332: &&R;S \equiv <{\bf i}R \cup {\bf i}S, {\bf o}R \cup {\bf o}S,
1333: ({\bf t}R) ({\bf t}S)> \nonumber\\
1334: &&R|S \equiv <{\bf i}R \cup {\bf i}S, {\bf o}R \cup {\bf o}S,
1335: {\bf t}R \cup {\bf t}S> \nonumber\\
1336: &&*[R] \equiv <{\bf i}R, {\bf o}R, ({\bf t}R)^*> \nonumber\\
1337: &&{\bf pref}R \equiv <{\bf i}R, {\bf o}R, \lbrace t_0|\exists t_1 : t_0t_1
1338: \in {\bf t}R\rbrace> \nonumber\\
1339: &&R\downarrow A \equiv
1340: <{\bf i}R \cap A, {\bf o}R \cap A, \lbrace t\downarrow A|
1341: t \in {\bf t}R \rbrace> \nonumber\\
1342: &&R||S \equiv <{\bf i}R \cup {\bf i}S, {\bf o}R \cup {\bf o}S, \nonumber\\
1343: && \qquad \quad
1344: \lbrace t \in ({\bf a}R \cup {\bf a}S)^* | t\downarrow {\bf a}R \in
1345: {\bf t}R \wedge t\downarrow {\bf a}S \in {\bf t}S \rbrace>
1346: \eeqa
1347: \end{definition}
1348: where, for convenience, notation ${\bf a}R \equiv {\bf i}R \cup {\bf o}R$
1349: has been introduced for the total alphabet of $R$, where
1350: $t\downarrow A$ denotes the projection of trace $t$ on alphabet $A$
1351: and $({\bf t}R)^*$ is the set of all finite-length concatenations of
1352: traces in ${\bf t}R$ (symbols $\exists$, $\forall$, $\in$, $\cap$ and $\cup$
1353: denote as usual,
1354: existence, universality, set belonging, set intersection and set union).
1355: The ${\bf pref}$ operator constructs prefix-closed
1356: structures, while the projection operator hides internal symbols; finally, the
1357: weave operator expresses instantaneous synchronization.
1358: A circuit is specified by a prefix-closed, non empty, trace structure $R$
1359: with ${\bf i}R \cap {\bf o}R = \emptyset$.
1360: The trace structure representing the
1361: environment of a circuit with trace structure $R$ is the
1362: reflection of the latter, and may also be given a compact notation:
1363: \beqn
1364: {\bar R} = <{\bf o}R, {\bf i}R, {\bf t}R>
1365: \eeqn
1366: A trace structure $R$ may be physically
1367: implemented by letting each symbol $a$ in the
1368: alphabets ${\bf i}R$ and ${\bf o}R$ correspond to a channel,
1369: and each occurence of this symbol
1370: in a trace of ${\bf t}R$ correspond to an event, i.e. a high or low
1371: transition, on
1372: the corresponding channel. Symbols in ${\bf i}R$ or ${\bf o}R$ describe
1373: communication actions that are respectively
1374: produced by the environment or (exclusive or) by the circuit.
1375:
1376: In order to be able to ignore transmission delays
1377: while avoiding transmission and computing interferences, the following rules
1378: may be imposed \cite{Udding-DI-def}.
1379:
1380: \beqa
1381: &&{\bf R_0} \quad
1382: \forall s\in {\bf t}R, \quad a\in{\bf a}R \qquad s a a
1383: \not\in {\bf t}R \nonumber\\
1384: &&{\bf R_1} \quad
1385: \forall s,t \in {\bf t}R, \quad (a,b\in{\bf i}R) \vee (a,b\in{\bf o}R)
1386: \nonumber\\
1387: &&\qquad \qquad s a b t \in {\bf t}R \quad \Leftrightarrow \quad
1388: s b a t \in {\bf t}R \nonumber\\
1389: &&{\bf R_2} \quad
1390: \forall s,t \in {\bf t}R, \quad (a\in{\bf i}R \wedge b\in{\bf o}R)
1391: \vee (a\in{\bf o}R \wedge b\in{\bf i}R)
1392: \nonumber\\
1393: && \quad (s a b \in {\bf t}R \wedge s b a \in {\bf t}R) \quad
1394: \Rightarrow \quad (s a b t \in {\bf t}R \Leftrightarrow s b a t \in {\bf t}R)
1395: \eeqa
1396: Rule ${\bf R_0}$ excludes two consecutive transitions on the same wire,
1397: and hence transmission interferences that may result. Rule ${\bf R_1}$
1398: expresses independence of computation on the order of signals travelling
1399: in the same direction, as this order may depend on suffered
1400: delays.
1401: The {\it C-element} is easily seen to satisfy this rule. However, the {\it and}
1402: gate only complies with the rule when it is waiting for a rising edge on its two
1403: inputs, and does not in all other cases. Thus the {\it and} gate, and also
1404: the {\it or} gate are excluded by this rule, although the {\it toggle},
1405: the {\it merge} and the {\it sequencer} are compatible.
1406: Rule ${\bf R_2}$ expresses the same property
1407: for signals
1408: travelling in opposite directions, in
1409: case their order does not change the result locally.
1410: Note that due to the necessary symmetric treatment of a circuit
1411: and its environment,
1412: all rules are symmetric in the exchange of input and output
1413: symbols.
1414:
1415: One must exclude the possibility for a symbol of one type to disable
1416: a symbol of another type (symbol $a$ is said to disable symbol $b$ in trace
1417: structure $R$, if there is a trace $s$ with $sa\in{\bf t}R \wedge sb\in{\bf t}R
1418: \wedge sab\not\in{\bf t}R$). Such exclusion is necessary
1419: to prevent an admissible input symbol
1420: to get disabled by an output signal,
1421: depending on the delay the former has suffered on its way to the
1422: circuit (by symmetry the same property must also hold for the environment
1423: and output signals). Depending on the level of exclusion,
1424: this property leads to define three classes, with
1425: rules ${\bf R_3^\prime}$, ${\bf R_3^{\prime\prime}}$ and
1426: ${\bf R_3^{\prime\prime\prime}}$:
1427: \beqa
1428: &&{\bf R_3^\prime} \quad
1429: \forall s, \quad a\not= b\in{\bf a}R \nonumber\\
1430: &&\qquad (s a \in {\bf t}R \wedge s b \in {\bf t}R) \quad
1431: \Rightarrow \quad s a b \in {\bf t}R
1432: \eeqa
1433: \beqa
1434: &&{\bf R_3^{\prime\prime}} \quad
1435: \forall s, \quad a\not= b\in{\bf a}R \quad
1436: a\not\in{\bf i}R \vee b\not\in{\bf i}R \nonumber\\
1437: &&\qquad (s a \in {\bf t}R \wedge s b \in {\bf t}R) \quad
1438: \Rightarrow \quad s a b \in {\bf t}R
1439: \eeqa
1440: \beqa
1441: &&{\bf R_3^{\prime\prime\prime}} \quad
1442: \forall s, \quad (a\in{\bf i}R \wedge b\in{\bf o}R)
1443: \vee (a\in{\bf o}R \wedge b\in{\bf i}R) \nonumber\\
1444: &&\qquad (s a \in {\bf t}R \wedge s b \in {\bf t}R) \quad
1445: \Rightarrow \quad s a b \in {\bf t}R
1446: \eeqa
1447: These rules successively allow for more decision possibility.
1448: Rule ${\bf R_3^\prime}$ does not permit data transmission and is called
1449: synchronization class (an example is provided by the {\it C-element}).
1450: Rule ${\bf R_3^{\prime\prime}}$ allows for two inputs to disable each other
1451: and is called data communication class.
1452: With rule ${\bf R_3^{\prime\prime\prime}}$, a circuit may choose
1453: between two output symbols and belongs to the arbitration class.
1454:
1455: Finally, rule ${\bf R_2}$ appears on specific examples to be too restrictive
1456: \cite{Udding-DI-def}.
1457: An alternative and more generally efficient rule is provided
1458: by:
1459: \beqa
1460: &&{\bf R_2^\prime} \quad
1461: \forall s,t \in {\bf t}R, \quad (a, c\in{\bf i}R \wedge b\in{\bf o}R)
1462: \vee (a, c\in{\bf o}R \wedge b\in{\bf i}R) \nonumber\\
1463: && \qquad (s a b t c\in {\bf t}R \wedge s b a t\in {\bf t}R) \quad
1464: \Rightarrow \quad s b a t c \in {\bf t}R
1465: \eeqa
1466: This rule, which
1467: is conveniently expressed on a space-time graph, as shown in Figure~12,
1468: concerns three events $a$, $b$, $c$
1469: connecting one module M
1470: and its environment $E$.
1471: It stipulates that, if two time orders are allowed for the occurences
1472: of two events of different types (i.e. one input and one output) $a$ and $b$,
1473: then if the event $c$, of the same type as $a$, is a consequence of the
1474: order "$a$ then $b$", it should also be a consequence of the other order
1475: "$b$ then $a$". This rule imposes that if an order on events is differently
1476: seen by a module and its environment, due to propagation time delays,
1477: then this order should have no consequence on the logical behavior
1478: of the module. As illustrated by Figure~12,
1479: this rule only affects the case on the left
1480: part of the figure, that is, only the case when propagation can
1481: change the order of events.
1482:
1483: \bigskip
1484: %\begin{center}
1485:
1486: \begin{picture}(0,0)%
1487: \psfig{file=rp2.pstex}%
1488: \end{picture}%
1489: \setlength{\unitlength}{4144sp}%
1490: %
1491: \begingroup\makeatletter\ifx\SetFigFont\undefined%
1492: \gdef\SetFigFont#1#2#3#4#5{%
1493: \reset@font\fontsize{#1}{#2pt}%
1494: \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
1495: \selectfont}%
1496: \fi\endgroup%
1497: \begin{picture}(2104,1932)(1159,-2368)
1498: \put(1216,-601){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$t$}}}
1499: \put(1576,-2311){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}M}}}
1500: \put(2071,-2311){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$E$}}}
1501: \put(2701,-2311){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}M'}}}
1502: \put(3196,-2311){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$E$'}}}
1503: \put(1756,-1141){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$c$}}}
1504: \put(2881,-1051){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$c$}}}
1505: \put(1756,-1951){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$a$}}}
1506: \put(1756,-1501){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$b$}}}
1507: \put(2881,-1906){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$b$}}}
1508: \put(2881,-1546){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$a$}}}
1509: \end{picture}
1510:
1511: \bigskip
1512: Fig. 12. Space-time graph for rule $R^\prime_2$.
1513: %\end{center}
1514:
1515: \bigskip
1516: The set of DI components is given by trace structures,
1517: defined according to Definitions 1 and 2,
1518: which satisfy the weakest form of the rules, i.e.
1519: $R_0$, $R_1$, $R_2^\prime$ and $R_3^{\prime\prime\prime}$ \cite{Udding-DI-def}.
1520:
1521: A set of DI primitive components for asynchronous circuits
1522: can thus be obtained with the following list
1523: of specifications in terms of trace
1524: structures (see Table~1).
1525:
1526: \begin{table}
1527: \caption{DI primitive components}
1528: \begin{tabular}{cc}
1529: \hline \hline
1530: CIRCUIT & Specification\\
1531: \hline
1532: WIRE & ${\bf pref}*[a?;b!]$ \\
1533: & \\
1534: IWIRE & ${\bf pref}*[b!;a?]$ \\
1535: & \\
1536: FORK & ${\bf pref}*[a?;b!||c!]$ \\
1537: & \\
1538: C-ELEMENT & ${\bf pref}*[a?||b?;c!]$ \\
1539: & \\
1540: TOGGLE & ${\bf pref}*[a?;b!;a?;c!]$\\
1541: & \\
1542: MERGE & ${\bf pref}*[(a?|b?);c!]$ \\
1543: & \\
1544: SEQUENCER & \hskip2mm ${\bf pref}*[a?;p!]$\\
1545: & $|| {\bf pref}*[b?;q!]$\\
1546: & \hskip6mm $|| {\bf pref}*[n?;(p!|q!)]$ \\
1547: \hline \hline
1548: \end{tabular}
1549: \label{table1}
1550: \end{table}
1551:
1552: The {\it wire} corresponds to a component which waits for an event to occur
1553: on its input, then sends an event on its output, and repeats this sequence
1554: indefinitely. The inverted wire ({\it iwire})
1555: behaves similarly, but begins by sending an
1556: event on its output.
1557: The {\it fork} duplicates one input.
1558: As can be seen from definitions (\ref{operations}),
1559: weaving not only consists in putting in parallel, but also in
1560: synchronizing common output symbols. In the particular case
1561: of two {\it wires} with a common output, weaving leads to the {\it C-element}.
1562: The other components
1563: correspond to the primitive circuits which have been previously introduced
1564: (see Figure~9).
1565:
1566: The objective is to realize circuits corresponding to given
1567: complex specifications by combining simple DI primitive circuits.
1568: This aim may be attained by making use of operations such as
1569: decomposition and substitution,
1570: together with two theorems setting the conditions for performing these
1571: operations.
1572:
1573: \begin{definition}
1574: A component $R_0$ is said to be decomposed into components
1575: $R_i, 1\leq i< n$ (for $n>1)$ if the following conditions are satisfied.
1576: Letting
1577: $S_0 = {\bar R_0}, \quad S_i = R_i \quad {\rm for}
1578: \quad 1\leq i<n, \quad {\rm and}
1579: \quad T = ||_{0\leq i<n} (S_i)$
1580: \beqa
1581: \label{decomposition}
1582: &&(i) \cup_{0\leq i<n} ({\bf o}S_i) = \cup_{0\leq i<n} ({\bf i}S_i)\nonumber\\
1583: &&(ii) {\bf o}S_i \cap {\bf o}S_j = \emptyset, \quad {\rm for} \quad
1584: 0\leq i,j<n \quad {\rm and} \quad
1585: i\not= j\nonumber\\
1586: &&(iii) \forall t,x,i \quad (0\leq i<n)\nonumber\\
1587: &&t\in {\bf t}T \wedge x\in {\bf o}S_i \wedge tx\downarrow {\bf a}S_i
1588: \in {\bf t}S_i \Rightarrow tx\in {\bf t}T \nonumber\\
1589: &&(iv){\bf t}T\downarrow{\bf a}S_0 = {\bf t}S_0
1590: \eeqa
1591: \end{definition}
1592: Conditions in (\ref{decomposition}) respectively describe a closed network (each
1593: input is connected to an output and conversely (i)),
1594: absence of output interferences (two outputs cannot be connected (ii)),
1595: absence of computing interferences (any event produced by a component is
1596: compatible with the behavior of the component which receives it (iii))
1597: and correct behavior at circuit boundary (network behaves as prescribed (iv)).
1598: Decomposition will be denoted by $R_0 \rightarrow (R_i)_{1\leq i<n}$.
1599:
1600: Let us now state two useful theorems (proofs may be obtained in
1601: \cite{Ebergen-thesis}).
1602:
1603: \newtheorem{theorem}{Substitution Theorem}
1604: \begin{theorem}
1605: For components $R_0$, $R_1$, $R_2$, $R_3$ and $S$
1606: \beqa
1607: &&R_0 \rightarrow (R_1, S) \quad \wedge \quad S
1608: \rightarrow (R_2, R_3) \nonumber\\
1609: && \Rightarrow \qquad R_0 \rightarrow (R_1, R_2, R_3)\nonumber
1610: \eeqa
1611: holds if
1612: \beqn
1613: ({\bf a}R_0 \cup {\bf a}R_1) \cap
1614: ({\bf a}R_2 \cup {\bf a}R_3) =
1615: {\bf a}S
1616: \eeqn
1617: \end{theorem}
1618: The latter condition stipulates that internal symbols of $S$, i.e. symbols in
1619: $({\bf a}R_2 \cup {\bf a}R_3) \backslash S$, where $\backslash$ means set
1620: deletion, should not appear in $({\bf a}R_0 \cup {\bf a}R_1)$.
1621: It can be realized by an appropriate renaming of internal symbols of $S$.
1622:
1623: \newtheorem{stheorem}[theorem]{Separation Theorem}
1624: \begin{stheorem}
1625: For components $R_i$ and $S_i$ ($0\leq i<n$)
1626: \beqa
1627: &&R_0 \rightarrow (R_i)_{1\leq i<n} \quad \wedge \quad
1628: S_0 \rightarrow (S_i)_{1\leq i<n} \nonumber\\
1629: && \Rightarrow \qquad R_0||S_0 \rightarrow (R_i||S_i)_{1\leq i<n}
1630: \nonumber
1631: \eeqa
1632: holds if
1633: \beqa
1634: && (\cup_{1\leq i<n}({\bf a}R_i) \backslash {\bf a}R_0)
1635: \cap (\cup_{1\leq i<n}({\bf a}S_i) \backslash {\bf a}S_0)
1636: =\emptyset\label{sep1}\\
1637: &&\quad {\rm and}, \quad \quad {\rm for} \quad 1\leq i\not= j <n\nonumber\\
1638: &&({\bf o}R_i \cup {\bf o}S_i) \cap ({\bf o}R_j \cup {\bf o}S_j) =\emptyset
1639: \nonumber\\
1640: &&({\bf o}R_i \cup {\bf o}S_i) \cap ({\bf o}{\bar R_0} \cup {\bf o}{\bar S_0})
1641: =\emptyset\label{sep2}
1642: \eeqa
1643: \end{stheorem}
1644: Condition (\ref{sep1}) stipulates that the internal symbols of
1645: the decompositions
1646: of $R_0$ and $S_0$ are disjoint (this condition may be satisfied by renaming
1647: some of these symbols), and conditions (\ref{sep2}) stipulate
1648: that the outputs of any two components
1649: $R_i||S_i$ and $R_j||S_j$
1650: are also disjoint when the components are different (these conditions may also
1651: be satisfied by reordering the components).
1652:
1653: With the help of these two theorems, the previously defined
1654: DI primitives may be combined to give
1655: modular compositions which are delay insensitive,
1656: hence circuits where computing interferences cannot be introduced by
1657: delay modifications only.
1658: We briefly describe an example of a circuit which can be obtained
1659: with such a composition of DI primitives,
1660: the {\it token-ring}
1661: interface \cite{Ebergen-Dist.Comp.}.
1662: The {\it token-ring} interface is a device allowing to connect several machines,
1663: which must share a common resource (like a memory, or a bus).
1664: One item ${\rm{Alloc}}_i$
1665: of this device will be associated with each machine $M_i$, all items being
1666: identical and realizing the same function, as shown by Figure~13.
1667: Item ${\rm{Alloc}}_i$ of this device is connected to two environments,
1668: the machine $M_i$ on
1669: top of the figure, and, at bottom, the ring $R$ where a token circulates.
1670: The arrival of the token at ${\rm{Alloc}}_i$ corresponds to an event on $b$,
1671: its departure to an event on $q$.
1672: The machine $M_i$ can make a request under the form of an event on $a_1$.
1673: ${\rm{Alloc}}_i$ grants the resource to the machine $M_i$ by an event on $p_1$.
1674: The machine $M_i$ signals the end of its use of the resource by an event on
1675: $a_0$, which is acknowledged by ${\rm{Alloc}}_i$
1676: under the form of an event on $p_0$.
1677:
1678: Initially, the {\it token-ring} interface is specified by the following
1679: trace structure:
1680: \beqa
1681: && \hskip2mm {\bf pref}*[a1?;p1!;a0?;p0!]\nonumber\\
1682: && || {\bf pref}*[b?;(q!|p1!;a0?;q!)]
1683: \eeqa
1684: This specification results from weaving two trace structures which
1685: respectively describe the communications of the token-ring interface with
1686: the machine $M_i$ and with the ring $R$.
1687: The two trace stuctures interact through
1688: their common dependence on two events $p1$ and $a0$. Each trace structure
1689: may be decomposed into primitive elements. Substitution and separation
1690: theorems may be applied, finally leading to a possible decomposition,
1691: as shown by Figure~13 in a graphic way:
1692: \beqa
1693: \rightarrow \quad ( && \hskip2mm {\bf pref}*[a1?;p1!]\nonumber\\
1694: && || {\bf pref}*[rq1?;q1!]\nonumber\\
1695: && || {\bf pref}*[b?;(q1!|p1!)],\nonumber
1696: \eeqa
1697: $${\bf pref}*[rq1!;q1?],$$
1698: $${\bf pref}*[a0?;p0!],$$
1699: $${\bf pref}*[a0?;q0!],$$
1700: \beqn
1701: {\bf pref}*[(q1?|q0?);q!)] \quad )
1702: \label{token-dec}
1703: \eeqn
1704: The first component is a {\it sequencer} (see Table~1), necessary for
1705: synchronizing the output $p1$ shared by the two trace structures
1706: defining the {\it token-ring}.
1707: The {\it sequencer} also arbitrates between corresponding
1708: inputs. Other components describe an {\it iwire}, two {\it wires}
1709: and a {\it merge}.
1710: Although they do not appear explicitly in decomposition (\ref{token-dec}),
1711: two forks appear in Figure~13, as a consequence of double occurences of
1712: $a0?$ and $q1?$ in (\ref{token-dec}).
1713:
1714: \bigskip
1715: %\begin{center}
1716:
1717: \begin{picture}(0,0)%
1718: \psfig{file=alloc.pstex}%
1719: \end{picture}%
1720: \setlength{\unitlength}{4144sp}%
1721: %
1722: \begingroup\makeatletter\ifx\SetFigFont\undefined%
1723: \gdef\SetFigFont#1#2#3#4#5{%
1724: \reset@font\fontsize{#1}{#2pt}%
1725: \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
1726: \selectfont}%
1727: \fi\endgroup%
1728: \begin{picture}(2814,2953)(1564,-4169)
1729: \put(3646,-2536){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{\rmdefault}{\mddefault}{\updefault}Merge}}}
1730: \put(4186,-1726){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$p_{1}$}}}
1731: \put(3241,-2311){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}D}}}
1732: \put(2341,-2311){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{\rmdefault}{\mddefault}{\updefault}Iwire}}}
1733: \put(3151,-2536){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$q_{0}$}}}
1734: \put(3556,-1726){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$p_{0}$}}}
1735: \put(2161,-2356){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}A}}}
1736: \put(3691,-2986){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}C}}}
1737: \put(2341,-2896){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}B}}}
1738: \put(2521,-3886){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$b$}}}
1739: \put(3961,-3886){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$q$}}}
1740: \put(2116,-1726){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$a_{0}$}}}
1741: \put(1621,-3481){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Alloc$_{i}$}}}
1742: \put(2116,-2581){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$rq_{1}$}}}
1743: \put(2611,-2761){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$q_{1}$}}}
1744: \put(1576,-1726){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$a_{1}$}}}
1745: \put(2611,-3301){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{\rmdefault}{\mddefault}{\updefault}Sequencer}}}
1746: \put(2926,-4111){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Ring ($R$)}}}
1747: \put(2386,-1411){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}Machine $i$ ($M_{i}$)}}}
1748: \end{picture}
1749:
1750: Fig. 13. Token-ring interface.
1751: %\end{center}
1752:
1753: \bigskip
1754: The DI property of this implementation can be visualized
1755: on a space-time graph, as in Figure~14.
1756: Two cases have been represented in Figure~14. In the first case, the request
1757: $a_1$ done by the machine $i$ is not granted, the token being sent
1758: back to the ring. When the token arrives a second time, the resource is
1759: granted to the machine $M_i$ which was waiting. This illustrates the
1760: undeterministic behavior of the module $\rm{Alloc}$,
1761: which depends on arbitration
1762: performed by {\it sequencer} B.
1763: The figure also shows that the two forks, that on $q_1$ (output of B)
1764: and that defined by D cannot create computation interferences,
1765: so that no particular constraints are necessary. This results from the
1766: function of {\it sequencer} B, which is not perturbed whatever the order of
1767: the events on its inputs. {\it Sequencer} B waits for an event on $b$ to make a
1768: decision, and then arbitrates between the different requests it has received.
1769:
1770: As shown by the example of the {\it token-ring} interface,
1771: DI primitives and DI decomposition may be used to generate
1772: modular compositions which are delay insensitive, and,
1773: as shown with the help of space-time graphs, that
1774: remain free of computing interferences.
1775: Delay-insensitivity appears as a simple criterion for
1776: escaping problems raised by computing interferences in a purely logically
1777: way, i.e. without recourse to a detailed analysis of the
1778: physical implementation of a circuit. The DI criterion allows one
1779: to treat asynchronous
1780: circuits efficiently,
1781: like in the case of synchronous circuits,
1782: by allowing to represent them formally
1783: (in terms of trace structures).
1784: Although revealing a genuinely different underlying structure,
1785: the causal constraints on asynchronous circuits,
1786: as exhibited by space-time graphs, can nonetheless be embedded
1787: in a simple set of formal rules which limit the definition and composition
1788: of DI circuits.
1789: In general, these rules allow
1790: DI circuits to be decomposed into a number of DI primitive components which
1791: increases linearly with the length of the circuit specification
1792: \cite{Ebergen-thesis}.
1793:
1794: \bigskip
1795: %\begin{center}
1796:
1797: \begin{picture}(0,0)%
1798: \psfig{file=alloc-esp-tps.pstex}%
1799: \end{picture}%
1800: \setlength{\unitlength}{4144sp}%
1801: %
1802: \begingroup\makeatletter\ifx\SetFigFont\undefined%
1803: \gdef\SetFigFont#1#2#3#4#5{%
1804: \reset@font\fontsize{#1}{#2pt}%
1805: \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
1806: \selectfont}%
1807: \fi\endgroup%
1808: \begin{picture}(3082,5532)(1306,-6418)
1809: \put(2071,-4606){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{\rmdefault}{\mddefault}{\updefault}not-granted}}}
1810: \put(3421,-2086){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$b$}}}
1811: \put(2296,-2401){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$a_{1}$}}}
1812: \put(4051,-2761){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$q$}}}
1813: \put(2296,-3436){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$p_{1}$}}}
1814: \put(1756,-4381){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$rq_{1}$}}}
1815: \put(3421,-5281){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$b$}}}
1816: \put(1756,-5281){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$rq_{1}$}}}
1817: \put(1621,-6181){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}A}}}
1818: \put(2161,-6181){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}B}}}
1819: \put(3241,-6181){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}D}}}
1820: \put(3781,-6181){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}C}}}
1821: \put(4321,-6181){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$R$}}}
1822: \put(2656,-6181){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$M_{i}$}}}
1823: \put(1486,-1051){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$t$}}}
1824: \put(2926,-2761){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$p_{0}$}}}
1825: \put(3466,-2806){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$q_{0}$}}}
1826: \put(2971,-3391){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$a_{0}$}}}
1827: \put(3421,-3931){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$b$}}}
1828: \put(4006,-4561){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$q$}}}
1829: \put(1891,-4741){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$q_{1}$}}}
1830: \put(2341,-5731){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$a_{1}$}}}
1831: \put(3376,-4561){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}$q_{1}$}}}
1832: \put(1606,-3706){\makebox(0,0)[lb]{\smash{\SetFigFont{10}{12.0}{\rmdefault}{\mddefault}{\updefault}granted}}}
1833: \end{picture}
1834:
1835: Fig. 14. Space-time graph of the token-ring interface.
1836: %\end{center}
1837:
1838: \bigskip
1839: \section{Conclusion}
1840:
1841: Without giving definite answers to the problems raised in the introduction,
1842: we have nethertheless tried to provide some hints on the essential
1843: role played by
1844: physical time in computation. The necessary reference to physical time
1845: in physical implementations of logical circuits forces one to give
1846: an explicit treatment
1847: of computation interferences. These arise as obstructions
1848: when trying to make
1849: the causality underlying logical circuits coincide
1850: with the physical causality of their
1851: implementations. For synchronous circuits, these may be avoided by
1852: ruling the whole circuit with a single clock, which thus provides
1853: a global reference to a Newtonian time.
1854: In general however, circuits must be considered as asynchronous and
1855: physical space-time as relativistic.
1856: In the latter, not all points are causally related,
1857: but only those such that one point falls within the light cone
1858: issued from the other. In that respect, asynchronous circuits and
1859: relativistic space-time share the same founding point of view.
1860: Points derive from events and not the converse,
1861: propagating events being treated as primary
1862: entities and not as successions of points.
1863: The distinction between two classes of points can also be
1864: seen in a simple way:
1865: two points are causally related if and only if there exists
1866: a path between them using vertical or propagation lines
1867: (in different spatial directions,
1868: but in the same time direction); on another hand,
1869: points defined on two different
1870: events originating from the
1871: same point are not causally related \cite{Russell-AM}.
1872: Similarly for a concurrent computation,
1873: each computing path connects points which are
1874: causally related. Avoiding
1875: computing interferences corresponds to impose that different computing paths
1876: respect a same
1877: time ordering, but only for pairs of causally related points.
1878:
1879: Remedies to computing interferences in asynchronous circuits
1880: consist in recognizing paths which may conflict with a module specification,
1881: and in eventually delaying these paths,
1882: so that to respect a prescribed time ordering.
1883: This can be done either physically, at the implementation level by introducing
1884: explicit time delays, or at the
1885: logical level, by imposing specification rules which prevent the occurence
1886: of such conflicts. The latter solution, by imposing delay insensitivity
1887: both on circuits specification and decomposition in a consistent way,
1888: has the advantage of providing a purely logical characterization of the
1889: causal constraints. DI circuits then build a class which may be seen
1890: as intermediate between synchronous circuits and general asynchronous
1891: circuits. They share with the former
1892: the possibility to be completely characterized by formal expressions
1893: and rules. But they rely on the same causal structure as the latter.
1894: Synchronous circuits rely on time simultaneity classes,
1895: and thus on a causal structure which is typical of Newtonian space-time.
1896: Asynchronous circuits, on another hand, rely on a consistent treatment of
1897: propagation delays and time ordering, hence on a causal structure which
1898: characterizes relativistic space-time.
1899:
1900: Delay-insensitivity provides an interesting transition between local
1901: properties, like those defining sequential processors, and global
1902: ones, like those exhibited by distributed systems.
1903: But DI circuits hardly exhaust the computation potentialities
1904: brought by the introduction
1905: of asynchronous circuits. The critical consequences of
1906: delay sensitivity rather suggest to consider a further alternative when
1907: attempting to classify the different types of computations, i.e. those
1908: performed by
1909: synchronous, by DI asynchronous and
1910: by DS (delay-sensitive) asynchronous circuits.
1911: Similarly,
1912: in the same way as asynchronous computing machines may not
1913: always allow simulation by synchronous computing machines,
1914: one may infer that physical processes and physical laws, which
1915: intrinsically obey relativistic causality,
1916: may be simulated by synchronous
1917: machines in particular cases only. This hints at another advantage
1918: of computations based on asynchronous circuits, i.e. the ability
1919: to simulate in a universal way real physical processes.
1920:
1921:
1922: %\bibliographystyle{plain}
1923: %\bibliography{mscs}
1924: %\begin{thebibliography}{}
1925:
1926: \begin{references}
1927:
1928: \bibitem{Chakraborty-Yun-Dill}
1929: Chakraborty,~S., Yun,~K.\,Y. and Dill,~D.\,L. (1988)
1930: Practical timing analysis of asynchronous circuits using time
1931: separation of events.
1932: {\em Proceedings of the IEEE Custom Integrated Circuits
1933: Conference}, 455--458. IEEE Computer Society Press (May).
1934:
1935: \bibitem{Davis-Nowick}
1936: Davis,~A. and Nowick,~S.\,M. (1995)
1937: Asynchronous circuit design: Motivation, background and methods.
1938: In G.~Birtwistle and A.~Davis (editors), {\em Asynchronous Digital
1939: Circuit Design, Workshop in Computing}, 1--49. BCS-Springer.
1940:
1941: \bibitem{Ebergen-thesis}
1942: Ebergen,~J.\,C. (1987)
1943: {\em Translating Programs into Delay-Insensitive Circuits}.
1944: thesis, Technische Universiteit Eindhoven (October).
1945:
1946: \bibitem{Ebergen-Dist.Comp.}
1947: Ebergen,~J.\,C. (1991)
1948: A formal approach to designing delay-insensitive circuits.
1949: {\em Distributed Computing} {\bf 5}, 107--119.
1950:
1951: \bibitem{Einstein}
1952: Einstein, A. (1905)
1953: Zur Elektrodynamik bewegter K\"orper.
1954: {\em Annalen der Physik} {\bf 17}, 891--921.
1955:
1956: \bibitem{Furber-Davis}
1957: Furber, S. (1995)
1958: Computing without Clocks: Micropipelining the ARM Processor.
1959: In G.~Birtwistle and A.~Davis (editors), {\em Asynchronous Digital
1960: Circuit Design, Workshop in Computing}, 211--262. BCS-Springer.
1961:
1962: \bibitem{Guinot}
1963: Guinot, B. (1997)
1964: Application of general relativity to metrology.
1965: {\em Metrologia} {\bf 34}, 261--290.
1966:
1967: \bibitem{Hoare-CSP}
1968: Hoare, C.\,A.\,R. (1978)
1969: Communicating Sequential Processes.
1970: {\em Communications of the ACM} {\bf 21}(8), 666--677 (August).
1971:
1972: \bibitem{Jaekel-Reynaud}
1973: Jaekel,~M.\,T. and Reynaud,~S. (1998)
1974: Quantum observables associated with Einstein localisation.
1975: In E.~Zavattini, D.~Bakalov and C.~Rizzo (editors),
1976: {\em Frontier Tests of QED and Physics of the Vacuum (Sandansky,
1977: 1998)}, 389--404. Heron Press.
1978:
1979: \bibitem{Lamport-Clocks}
1980: Lamport, L. (1978)
1981: Time, Clocks, and the Ordering of Events in a Distributed System.
1982: {\em Communications of the ACM} {\bf 21}(7), 558--565 (July).
1983:
1984: \bibitem{Landau-Lifschitz}
1985: Landau, L.\,D. and Lifschitz, E.\,M. (1970)
1986: {\em Physique Theorique, tome II: Theorie des Champs}.
1987: MIR, Moscou.
1988:
1989: \bibitem{Leschiutta}
1990: Leschiutta, S. (1991)
1991: Time Synchronization using Laser Techniques.
1992: In {\em Special Issue on Time and Frequency: Proceedings of the
1993: IEEE},1001--1008.
1994:
1995: \bibitem{Lewandowski-Thomas}
1996: Lewandowski, W. and Thomas,~C. (1991)
1997: GPS Time Transfer.
1998: In {\em Special Issue on Time and Frequency: Proceedings of the
1999: IEEE}, 991--1000.
2000:
2001:
2002: \bibitem{Mallon-Udding-Verhoeff}
2003: Mallon, W.\,C., Udding, J.\,T. and Verhoeff, T. (1999)
2004: Analysis and applications of the XDI model.
2005: In {\em Async'99, Proc. International Symposium on Advanced Research
2006: in Asynchronous Circuits and Systems}, 231--242. IEEE Computer Society
2007: Press.
2008:
2009: \bibitem{Martin-Dist.Comp.}
2010: Martin, A.\,J. (1986)
2011: Compiling communicating processes into delay-insensitive VLSI
2012: circuits.
2013: {\em Distributed computing} {\bf 1}, 226--234.
2014:
2015: \bibitem{Martin-Hoare}
2016: Martin, A.\,J. (1990a)
2017: Programming in VLSI: From Communicating Processes to
2018: Delay-Insensitive Circuits.
2019: In C.~A.~R. Hoare (editor) {\em Developments in Concurrency and
2020: Communication}, 1--64. Addison-Wesley.
2021:
2022: \bibitem{Martin-Limit.}
2023: Martin, A.\,J. (1990b)
2024: The Limitations to Delay-Insensitivity in Asynchronous Circuits.
2025: In W.~J. Dally (editor) {\em Advanced Research in VLSI: Proceedings
2026: of the Sixth MIT Conference}, 263--278. MIT Press, Cambridge, MA.
2027:
2028: \bibitem{R3000}
2029: Martin, A.\,J., Lines, A., Manohar, R., Nystr\"om, M., Penzes, P.,
2030: Southworth, R., Cummings, U. and Tak-Kwan-Lee (1997)
2031: The design of an asynchronous MIPS R3000 microprocessor.
2032: In {\em Proceedings of the Seventeenth Conference on Advanced Research
2033: in VLSI}, 164--181. IEEE Computer Society Press.
2034:
2035: \bibitem{Matherat-Jaekel}
2036: Matherat, P. and Jaekel, M.\,T. (1996)
2037: Dissipation logique des impl\'ementations d'automates - dissipation
2038: du calcul.
2039: {\em Technique et science informatiques} {\bf 15}(8), 1079--1104.
2040: English translation at the URL
2041: http://www.arxiv.org/abs/quant-ph/9805018.
2042:
2043: \bibitem{Mazurkiewicz}
2044: Mazurkiewicz, A. (1989)
2045: Basic Notions of Trace Theory.
2046: In J.~W. de~Bakker, W.~P. de~Roever, and G.~Rozenberg (editors) {\em
2047: Linear Time, Branching Time, and Partial Order in Logics and Models for
2048: Concurrency. LNCS 354}, 285. Springer-Verlag.
2049: School/Workshop, Noordwijkerhout, The Nederlands, May-June 1988.
2050:
2051: \bibitem{Molnar-Fang-Rosenberger}
2052: Molnar, C.\,E., Fang, T.\,P. and Rosenberger, F.\,U. (1985)
2053: Synthesis of Delay-insensitive Modules.
2054: In {\em 1985 Chapel Hill Conference on VLSI}, 67--86.
2055:
2056: \bibitem{Newton}
2057: Newton, I. (1687)
2058: {\em Principia}.
2059: University of California Press, 1962.
2060: First ed. Philosophiae Naturalis Principia Mathematica 1687.
2061:
2062: \bibitem{Petit}
2063: Petit, G. and Wolf, P. (1994)
2064: Relativistic theory for picosecond time transfer in the vicinity of
2065: the Earth.
2066: {\em Astronomy and Astrophysics} {\bf 286}, 971--977.
2067:
2068: \bibitem{Quinn}
2069: Quinn, T.\,J. (1991)
2070: The BIPM and the Accurate Measurement of Time.
2071: In {\em Special Issue on Time and Frequency: Proceedings of the
2072: IEEE}, 894--905.
2073:
2074: \bibitem{Russell-Phi.Leib.}
2075: Russell, B. (1900)
2076: {\em The Philosophy of Leibnitz}.
2077: Routledge, London, 1997.
2078: First ed. 1900.
2079:
2080: \bibitem{Russell-ABC-Rel.}
2081: Russell, B. (1925)
2082: {\em ABC of Relativity}.
2083: Routledge, London, 1993.
2084: First ed. 1925.
2085:
2086: \bibitem{Russell-AM}
2087: Russell, B. (1927)
2088: {\em The Analysis of Matter}.
2089: Routledge, London, 1992.
2090: First ed. 1927.
2091:
2092: \bibitem{Seitz}
2093: Seitz, C.\,L. (1980)
2094: Chapter 7: System timing.
2095: In {\em Introduction to VLSI Systems}, 218--262.
2096: Addison-Wesley.
2097:
2098: \bibitem{Shannon}
2099: Shannon, C.\,E. (1938)
2100: A Symbolic Analysis of Relay and Switching Circuits.
2101: {\em AIEE Transactions} {\bf 57}, 713--723.
2102:
2103: \bibitem{Stevens-Ginosar-Rotem}
2104: Stevens, K., Ginosar, R. and Rotem, S. (1999)
2105: Relative timing.
2106: In {\em Async'99, Proc. International Symposium on Advanced Research
2107: in Asynchronous Circuits and Systems}, 208--218. IEEE Computer Society
2108: Press.
2109:
2110: \bibitem{Sutherland-Micropipelines}
2111: Sutherland, I.\,E. (1989)
2112: Micropipelines.
2113: {\em Communications of the ACM} {\bf 32}(6), 720--738 (June).
2114:
2115: \bibitem{Udding-DI-def}
2116: Udding, J.\,T. (1986)
2117: A formal model for defining and classifying delay-insensitive
2118: circuits and systems.
2119: {\em Distributed Computing} {\bf 1},197--204.
2120:
2121: \bibitem{Vessot}
2122: Vessot, R.\,F.\,C. (1991)
2123: Applications of Highly Stable Oscillators to Scientific
2124: Measurements.
2125: In {\em Special Issue on Time and Frequency: Proceedings of the
2126: IEEE}, 1040--1053.
2127:
2128: \bibitem{Winskel}
2129: Winskel, G. (1989)
2130: An Introduction to Event Structures.
2131: In J.~W. de~Bakker, W.~P. de~Roever, and G.~Rozenberg (editors) {\em
2132: Linear Time, Branching Time, and Partial Order in Logics and Models for
2133: Concurrency. LNCS 354}, 364--397. Springer-Verlag.
2134: School/Workshop, Noordwijkerhout, The Nederlands, May-June 1988.
2135:
2136: \bibitem{Wolf}
2137: Wolf, P. and Petit, G. (1995)
2138: Relativistic theory for clock syntonization and the realization of
2139: geocentric coordinate times.
2140: {\em Astronomy and Astrophysics} {\bf 304}, 653--661.
2141:
2142: \bibitem{Wrinkler}
2143: Wrinkler, G.\,M.\,R. (1991)
2144: Synchronization and Relativity.
2145: In {\em Special Issue on Time and Frequency: Proceedings of the
2146: IEEE}, 1029--1039.
2147:
2148: \end{references}
2149:
2150:
2151: %\end{thebibliography}
2152: %\label{lastpage}
2153:
2154: \end{document}
2155:
2156: