Changes between Version 9 and Version 10 of TLMDT


Ignore:
Timestamp:
May 17, 2011, 11:59:40 AM (14 years ago)
Author:
gioja
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TLMDT

    v9 v10  
    231231{{{#!c++
    232232//Global Synchronisation
    233 // T = Time - Δ = quantum
    234 If (T.global_input + Δqlc < T.local_crossbar)
     233// T = Time - Q = quantum
     234If (T.global_input + Qqlc < T.local_crossbar)
    235235   If (null_command of vci_transaction received from global crossbar)
    236236      T.global_input = T.local_crossbar
     
    239239   //Local Synchonisation
    240240   For every local target
    241       if(T.local_target + Δqlc < T.local_crossbar)
     241      if(T.local_target + Qqlc < T.local_crossbar)
    242242         send a null_command to the target
    243243         T.local_target = T.local_crossbar
    244244   //Global Synchronisation
    245    If (T.global_input + Δqlc < T.local_crossbar)
     245   If (T.global_input + Qqlc < T.local_crossbar)
    246246      send a null_command to the global_crossbar
    247247   //Initiators Synchronisation
     
    269269T.global_crossbar = min(all T inputs)
    270270For every input
    271    If (T.input <= T.global_crossbar + Δqgc)
     271   If (T.input <= T.global_crossbar + Qqgc)
    272272      //Synchronization
    273273      If(Req.type == Null_command)
     
    284284}}}
    285285== 10. Proof of the deadlock free feature
     286What is to be proven : If a vci_transaction (local) waits on the external_crossbar (TSAR), it will be arbitrated.
     287If the vci_transaction is global, the local external_crossbar input will have a greater time due to the null_response treatment.
     288If there is more than one vci_transaction, the cluster the lowest one is considered, the others are already allowing the arbitration and can be neglect.
     289
     290{{{#!c++
     291//Qqt : quantum targets - Qqlc : quantum local crossbar - Qqgc : quantum global crossbar
     292//Δlocal - Δglobal : routing delays
     293//EC  : External_crossbar
     294//C   : Cluster which transmitted the transaction and need arbitration
     295}}}
     296{{{#!c++
     297//Demonstrating that with condition : for every cluster else than C :
     298T.EC_input > T.EC_input.C
     299
     300//Time of the pending request
     301T.EC_input.C = minT.C.initiator = minT.global_crossbar_inputs - Δlocal //due to null_responses
     302
     303//Condition for locking the cluster :
     304minT.initiator + Δlocal > minT.global_crossbar_inputs + Qqgc
     305minT.initiator > T.EC_input.C + Qqgc
     306
     307//Condition for a memory cache to get a temporal information
     308T.local_crossbar.memory_cache_output +Qqlc <= T.local_crossbar
     309T.local_crossbar - Qqlc >= T.memory_cache
     310
     311//Condition for an input from the external_crossbar to get a temporal information
     312T.memory_cache.EC_output + Qqt <= T.memory_cache
     313T.memory_cache - Qqt >= T.EC_input
     314T.local_crossbar - Qqlc - Qqt >= T.memory_cache - Qqt >= T.EC_input
     315
     316//minimum timer without update
     317minT.EC_input = T.local_crossbar - Qqlc - Qqt + 1
     318
     319//The clusters are locked
     320T.local_crossbar > T.EC_input.C + Qqgc
     321T.local_crossbar - Qqlc - Qqt + 1 > T.EC_input.C + Qqgc - Qqlc - Qqt + 1
     322minT.EC_input > T.EC_input.C + Qqgc - (Qqlc + Qqt) +1
     323
     324Then if Qqgc - (Qqlc + Qqt) + 1 > 0 , The inequality  -- minT.EC_input > T.EC_input.C -- is true too
     325
     326Thus
     327
     328Qqgc - (Qqlc + Qqt) + 1 > 0
     329Qqgc > Qqlc + Qqt - 1
     330-------------------
     331Qqgc >= Qqlc + Qqt
     332-------------------
     333
     334QED
     335
     336}}}
    286337== 11. Locating the loss in precision
    287338== 12. Adjust precision / performance for a simulation