From 1972de0c590e85273638bb794b762cdc39b4f50c Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Sun, 24 Jun 2012 16:39:49 +0200 Subject: [PATCH] doc: detailed actor description --- doc/actors_endpoints.dia | Bin 0 -> 1634 bytes doc/actors_endpoints.png | Bin 0 -> 112180 bytes doc/casestudies.rst | 4 +- doc/dataflow.rst | 80 ++++++++++++++++++++++++++++++++++++--- doc/fhdl.rst | 2 + 5 files changed, 78 insertions(+), 8 deletions(-) create mode 100644 doc/actors_endpoints.dia create mode 100644 doc/actors_endpoints.png diff --git a/doc/actors_endpoints.dia b/doc/actors_endpoints.dia new file mode 100644 index 0000000000000000000000000000000000000000..7ab569a1c8963086a1c8eacd0ee10cd2b5aa950c GIT binary patch literal 1634 zcmV-o2A%mIiwFP!000021MQs6bDKC6!0-7h7Y5M|v%4v44JWDxG0&l~a7SR>E(>*%>wMgPkg=Y;GvT`(_U^jEWJQyhe}5xr(fRqSdVr-3NKx9g)K4RW&2y)tE~R1}I9 z_aDA9&RO!Is8)G$C$Fxujf(h+CW|0C)+PEUEII=kHX_;K0Bj=@y6B}}E?4Ibt1cW? zT{5h?Af2t_geNrM$11%z4jGLKtvuPV_IlDe4aE>U)hy6n`a{5Ze5U>nG)&*pfa3J4 z#a(K>izM(*8}C7h1}RU0&zG}jN!?XQ-%67H7^Hz0vbx#_5${d>wjc4;yOVqH-Q^ue zLm{nkitsVBnSJ>bvDgGYOV13m!!iw$mSwT&xn8f9duzuOrz#V6t|FvcmXzYZ?WSt2 zyuqc%(de89k1yZ$`Xu)LVRK$K_6MhtPZMAJsC|o{^&N)@3JLr>{V(&dv#QM#!h|0@ z>aBIW8&YTjtF1rw9Zj-5uPQnbm8a1nWTkj$5PJf|$1Nm=DgHFYXFG)~WUJXcPNHK* z=%qoq{M?5eH|o`YI2~j!S+H30X5qMw_~>N~KKGz04W>pj-vnzs|*Dkp>!={lrAqL``wT>-1&kwFkNi z!mX$ljZ$4p`8M;&!kZSC{>j2e#)CQCpExeB!I7cYc@lBAEEkG{SO5cJTitXXj=iSw zXCN^=x+$t!e&a);X?9a2$a)d2SpCgp(PmWxMW?W+Zf3vCDjxGHRqbL|l{b3Sc`RJ0 znEvA^Judnv`7UuRA8eSGDshgVabJzJhA~%wwjV*M!uE;Ed$#?#Whr1qjp51Y%N70#|V)F zUj;dU*#mP(4Q!BIV549TK;$!r%*cjfj^C9z0O$ca03HB3fO`NP0FMMZg6Nmpy)i6u zh@qm8W1PqVuCrkjz#iNnlAn@-_Ht6J0di81N=i}7DH5my^^lc<Bqe z)>GssrXZD>GG5ZS&OT9K^^lt)mo(5GY2?`{$daF(B9k;!c;mMXZ`eKLryw*yf(n8~ zc%#fuK}dx+RCuFdJVF)T7%OyKXQwD|ddNJQzzJMutQ3aXV+W-gxF1`h> zVLBLQ3y3ChTYAE*H)k*2>4MfZEM>NT1cw_x$C%_csS`=e@uA53uc~^~GNR037@bGynhq literal 0 HcmV?d00001 diff --git a/doc/actors_endpoints.png b/doc/actors_endpoints.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb99c08c2a63614bd80cb30a59cbacc6952730b GIT binary patch literal 112180 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 LE*D??^Zx$=dmEyu literal 0 HcmV?d00001 diff --git a/doc/casestudies.rst b/doc/casestudies.rst index e89ddd6b4..be962527b 100644 --- a/doc/casestudies.rst +++ b/doc/casestudies.rst @@ -1,7 +1,7 @@ Case studies ############ -A VGA framebuffer using dataflow -******************************** +A VGA framebuffer +***************** TODO diff --git a/doc/dataflow.rst b/doc/dataflow.rst index 53b6af293..1cb04cc40 100644 --- a/doc/dataflow.rst +++ b/doc/dataflow.rst @@ -1,17 +1,80 @@ -Dataflow synthesis -################## +Dataflow +######## Many hardware acceleration problems can be expressed in the dataflow paradigm. It models a program as a directed graph of the data flowing between functions. The nodes of the graph are functional units called actors, and the edges represent the connections (transporting data) between them. -Actors communicate by exchanging data units called tokens. A token contains arbitrary (user-defined) data, which is a record containing one or many fields, a field being a bit vector or another record. Token exchanges are atomic (i.e. all fields are transferred at once from the transmitting actor to the receiving actor). The flow of tokens is controlled using handshake signals (strobe and acknowledgement). +Actors communicate by exchanging data units called tokens. A token contains arbitrary (user-defined) data, which is a record containing one or many fields, a field being a bit vector or another record. Token exchanges are atomic (i.e. all fields are transferred at once from the transmitting actor to the receiving actor). Actors ****** -Overview -======== +Actors in Migen are implemented in FHDL. This low-level approach maximizes the practical flexibility: for example, an actor can manipulate the bus signals to implement a DMA master in order to read data from system memory. -Actors in Migen are written directly in FHDL. This maximizes the flexibility: for example, an actor can implement a DMA master to read data from system memory. +Token exchange ports of actors are called endpoints. Endpoints are unidirectional and can be sources (which transmit tokens out of the actor) or sinks (which receive tokens into the actor). + +.. figure:: actors_endpoints.png + :scale: 50 % + + Actors and endpoints. + +The flow of tokens is controlled using two handshake signals (strobe and acknowledgement) which are implemented by every endpoint. The strobe signal is driven by sources, and the acknowledgement signal by sinks. + +======= ======= ==================================================================================================== +``stb`` ``ack`` Situation +======= ======= ==================================================================================================== +0 0 The source endpoint does not have data to send, and the sink endpoint is not ready to + accept data. +0 1 The sink endpoint is ready to accept data, but the source endpoint has currently no data + to send. The sink endpoint is not required to keep its ``ack`` signal asserted. +1 0 The source endpoint is trying to send data to the sink endpoint, which is currently not + ready to accept it. The transaction is *stalled*. The source endpoint must keep ``stb`` + asserted and continue to present valid data until the transaction is completed. +1 1 The source endpoint is sending data to the sink endpoint which is ready to accept it. The + transaction is *completed*. The sink endpoint must register the incoming data, as the + source endpoint is not required to hold it valid at the next cycle. +======= ======= ==================================================================================================== + +It is permitted to generate an ``ack`` signal combinatorially from one or several ``stb`` signals. However, there should not be any combinatorial path from an ``ack`` to a ``stb`` signal. + +Actors are derived from the the ``migen.flow.actor.Actor`` base class. The constructor of this base class takes a variable number of parameters, each describing one endpoint of the actor. + +An endpoint description is a triple consisting of: + + * The endpoint's name. + * A reference to the ``migen.flow.actor.Sink`` or the ``migen.flow.actor.Source`` class, defining the token direction of the endpoint. + * The layout of the data record that the endpoint is dealing with. + +Record layouts are a list of fields. Each field is described by a pair consisting of: + + * The field's name. + * Either a BV object (see :ref:`bv`) if the field is a bit vector, or another record layout if the field is a lower-level record. + +For example, this code: :: + + Actor( + ("operands", Sink, [("a", BV(16)), ("b", BV(16))]), + ("result", Source, [("r", BV(17))])) + +creates an actor with: + + * One sink named ``operands`` accepting data structured as a 16-bit field ``a`` and a 16-bit field ``b``. Note that this is functionally different from having two endpoints ``a`` and ``b``, each accepting a single 16-bit field. With a single endpoint, the data is strobed when *both* ``a`` and ``b`` are valid, and ``a`` and ``b`` are *both* acknowledged *atomically*. With two endpoints, the actor has to deal with accepting ``a`` and ``b`` independently. Plumbing actors (see :ref:`plumbing`) and abstract networks (see :ref:`actornetworks`) provide a systematic way of converting between these two behaviours, so user actors should implement the behaviour that results in the simplest or highest performance design. + * One source named ``result`` transmitting a single 17-bit field named ``r``. + +Implementing the functionality of the actor can be done in two ways: + + * Overloading the ``get_fragment`` method. + * Overloading both the ``get_control_fragment`` and ``get_process_fragment`` methods. The ``get_control_fragment`` method should return a fragment that manipulates the control signals (strobes, acknowledgements and the actor's busy signal) while ``get_process_fragment`` should return a fragment that manipulates the token payload. Overloading ``get_control_fragment`` alone allows you to define abstract actor classes implementing a given scheduling model. Migen comes with a library of such abstract classes for the most common schedules (see :ref:`schedmod`). + +Accessing the endpoints is done via the ``endpoints`` dictionary, which is keyed by endpoint names and contains instances of the ``migen.flow.actor.Endpoint`` class. The latter holds: + + * A signal object ``stb``. + * A signal object ``ack``. + * The data payload ``token``. The individual fields are the items (in the Python sense) of this object. + +Busy signal +=========== + +.. _schedmod: Common scheduling models ======================== @@ -31,6 +94,8 @@ This is similar to the sequential model, but the actor can always accept new inp The Migen actor library *********************** +.. _plumbing: + Plumbing actors =============== @@ -46,6 +111,8 @@ Arithmetic and logic actors Bus actors ========== +.. _actornetworks: + Actor networks ************** @@ -59,6 +126,7 @@ Performance tools High-level actor description **************************** + .. WARNING:: Not implemented yet, just an idea. diff --git a/doc/fhdl.rst b/doc/fhdl.rst index 3453eb877..a06919ba4 100644 --- a/doc/fhdl.rst +++ b/doc/fhdl.rst @@ -13,6 +13,8 @@ FHDL is made of several elements, which are briefly explained below. Expressions *********** +.. _bv: + Bit vector (BV) =============== The bit vector (BV) object defines if a constant or signal is signed or unsigned, and how many bits it has. This is useful e.g. to: