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; > >
