Reply by Steve Underwood August 27, 20032003-08-27
Hi Piyush,

piyushkaul@yahoo.com (Piyush Kaul) wrote in message news:<2e20232a.0308262042.4dd64108@posting.google.com>...
> > Untrue. There are machines which support zero overhead conditional > > control in loops. Some require loops longer than the one above, and > > require you to explicitly deal with the pipeline effects. They > > certainly allow zero overhead conditional looping, though. > > > > Regards, > > Steve > > I guess, if you do conditional looping, it may not be possible to keep > the pipeline filled all the time. And consequently some overhead. > > Maybe "explicitly dealing with pipeline" is some kind of solution, > though I don't have a clue to what that means in loop context. Some > pointers would help.
Some machines require you to explicitly deal with pipelining yourself. That is you read from memory. X cycles later you compute from the data which has now arrived from memory. Y cycles later you store the result from the computation which is now complete. In many of those explicitly pipelined machined a conditional truly zero overheap loop is possible, if the loop is longer than the pipeline. I think most vector oriented machines (by which I do not mean DSPs - most of those are polynomial oriented) can do this. Regards, Steve
Reply by Piyush Kaul August 27, 20032003-08-27
> Untrue. There are machines which support zero overhead conditional > control in loops. Some require loops longer than the one above, and > require you to explicitly deal with the pipeline effects. They > certainly allow zero overhead conditional looping, though. > > Regards, > Steve
I guess, if you do conditional looping, it may not be possible to keep the pipeline filled all the time. And consequently some overhead. Maybe "explicitly dealing with pipeline" is some kind of solution, though I don't have a clue to what that means in loop context. Some pointers would help. Regards Piyush
Reply by Steve Underwood August 26, 20032003-08-26
piyushkaul@yahoo.com (Piyush Kaul) wrote in message news:<2e20232a.0308260228.67580e07@posting.google.com>...
> sandeep_mc81@yahoo.com (Sandeep Chikkerur) wrote in message > > Zero Overhead loop is only applicable where you know the number of > iterations before the start of the loop e.g. > > for( i = 0; i < SOME_CONSTANT; i++) > { > SOME_STATEMENT; > }
Untrue. There are machines which support zero overhead conditional control in loops. Some require loops longer than the one above, and require you to explicitly deal with the pipeline effects. They certainly allow zero overhead conditional looping, though. Regards, Steve
Reply by Piyush Kaul August 26, 20032003-08-26
sandeep_mc81@yahoo.com (Sandeep Chikkerur) wrote in message 

Zero Overhead loop is only applicable where you know the number of
iterations before the start of the loop e.g.

for( i = 0; i < SOME_CONSTANT; i++)
{
  SOME_STATEMENT;
}


The above code can be put in a hardware loop and it would be repeated
a predetermined number of time. There is no branching anywhere if
hardware loops is used (which would be there at the end of each
iteration if such
instructions weren't there).

As for zero overhead, since there are no explicit comparisons to be
made in loop counters and no branching to loop_start address,
therefore there is no overhead etc. No pipeline stalls too. e.g. if
SOME_STATEMENT above takes 1 cycle the whole loop would take X cycles.
No overheads :-)

Regards
Piyush

news:<d5d88eb5.0308252148.4569b181@posting.google.com>...
> Hi, > > One of the features of DSP processors is to provide the zero-overhead > loops. > > i.e., it comes into picture during the conditional branching. > > So, what is ZERO-OVERHEAD LOOPING ? > > Is it w.r.t the no. of cycles it takes to decide the branching (i.e., > it takes same count of cycles on either conditions )?
Reply by Vinod Rex August 26, 20032003-08-26
sandeep_mc81@yahoo.com (Sandeep Chikkerur) wrote in message news:<d5d88eb5.0308252148.4569b181@posting.google.com>...
> Hi, > > One of the features of DSP processors is to provide the zero-overhead > loops. > > i.e., it comes into picture during the conditional branching. > > So, what is ZERO-OVERHEAD LOOPING ? > > Is it w.r.t the no. of cycles it takes to decide the branching (i.e., > it takes same count of cycles on either conditions )?
means the looping comes as no cycle cost. Some architectures even ensure that the loop instruction does'nt take any processor execution block (like ALU) for performaning the decrement of the loop counter. For example , the ZSP 400 is a processor that provides 0-overhead looping. The code fragment: label: mac.a r4,r5 agn0 label The above loop takes one cycle to execute, i.e in 10 cycles 10 MAC's are executed. The Loop comes at zero cost, so there is no difference even if the loop is unrolled. Vinod Rex
Reply by Sandeep Chikkerur August 26, 20032003-08-26
Hi,

One of the features of DSP processors is to provide the zero-overhead
loops.

i.e., it comes into picture during the conditional branching.

So, what is ZERO-OVERHEAD LOOPING ?

Is it w.r.t the no. of cycles it takes to decide the branching (i.e.,
it takes same count of cycles on either conditions )?