I read the slides and understand them. What is still vague for me is that the 
sender can always check the availability of a channel before sending data. So 
in what circumstances the receiver should control the flow? For example 
consider the FTQ (channel) between FAG and uFetch. FAG can always 1) check if 
the FTQ is ready and 2) send the data to uFetch by filling FTQ.

Hope that I clearly state the problem.


// Naderan *Mahmood;


________________________________
From: Thomas Wenisch <[email protected]>
To: Mahmood Naderan <[email protected]>
Cc: simflex <[email protected]>
Sent: Sunday, July 17, 2011 6:46 PM
Subject: Re: Some questions


The various port types are covered on slides 62 and 63 of the PACT 2008 SimFlex 
tutorial, which is available 
at http://parsa.epfl.ch/simflex/doc/SimFlex-tutorial-pact2008.pdf.

Briefly, the difference between the two is which side of a communication link 
controls when data is transferred, the sender or the receiver.  With only a 
handful of exceptions (e.g., the Feeder objects), Flexus uses almost 
exclusively Push ports.

Best Regards,
-Thomas Wenisch

On Jul 17, 2011, at 7:51 AM, Mahmood Naderan wrote:

When you use Push ports, the component will send 
>>
>
>information by pushing them to a PushOutput port 
>>
>
>When you use Pull ports,  the component will send 
>>
>
>information by putting them to a PullInput
>>
>What I understand is that I can send information to either 
>
>PushOutput or PullInput.  Really isn't there any difference between them?
>
>I want to know when should I use PullInput and PushOutput? Please give 
>
>a scenario that PullInput works but PushOutput doesn't.
>
>Thanks
>
>
>// Naderan *Mahmood;
>
>
>----- Original Message -----
>From: Volos Stavros <[email protected]>
>To: Mahmood Naderan <[email protected]>; simflex <[email protected]>
>Cc: 
>Sent: Monday, July 11, 2011 3:15 PM
>Subject: RE: Some questions
>
>Hi Mahmood,
>
>When you instantiate a component array (e.g., L1-D cache), you need to specify 
>its width.
>For example, SCALE_WITH_SYSTEM_WIDTH will be 16 in case of a 16-CPU simics 
>checkpoint. 
>When you multiply by 1, this means that the width of the component array will 
>be 16.
>
>Regarding the difference between Pull and Push. When you use Push ports, the 
>component 
>will send information by pushing them to a PushOutput port which is connected 
>to a PushInput 
>of another component. When you use Pull ports,  the component will send 
>information by putting 
>them to a PullInput which is connected to a PullOutput of another component. 
>You use "push", >> 
>and "pull", << respectively.
>
>The Stalled port of components such as uArch, uFetch, v9Decoder, 
>FetchAddressGenerator is used 
>in the multithreaded simulator and they are connected to the corresponding 
>ports of the component 
>MTManager.
>
>Regards,
>-Stavros.
>
>
>________________________________________
>From: Mahmood Naderan [[email protected]]
>Sent: Wednesday, July 06, 2011 8:26 AM
>To: simflex
>Subject: Some questions
>
>Hi
>
>1- What does (...SCALE_WITH_SYSTEM_WIDTH, MULTIPLY, 1); mean in 
>FLEXUS_INSTANTIATE_COMPONENT_ARRAY ?
>
>2- What is the difference between PushInput and PullInput? Also PushOutput and 
>PullOutput? It is easy to understand PushInput and PullOutput
>
>3- some components has DYNAMIC_PORT_ARRAY( PullOutput, bool, Stalled). However 
>"stalled" is not wired in simulator. Is it a special thing? When should I use 
>that?
>
>
>Thanks
>
>// Naderan *Mahmood;
>
>

Reply via email to