Opportunity: Software Execution Time Determinism

Alex Burton via Digitalmars-d digitalmars-d at puremagic.com
Thu Apr 14 06:15:13 PDT 2016


On Thursday, 14 April 2016 at 09:46:34 UTC, Marc Schütz wrote:
> On Thursday, 14 April 2016 at 00:31:34 UTC, Simen Kjaeraas 
> wrote:
>> @constanttime functions can only call other functions marked
>> @constanttime, and may not contain conditionals, gotos or
>> while-loops.
>>
>> @constanttime functions may contain for and foreach-loops, iff
>> the number of iterations are known at compile-time, and 'break'
>> is never used.
>>
>> The part about conditionals seems a bit harsh, but it's got to
>> be there for determinism.
>
> It can be relaxed: All alternative branches must take the same 
> number of cycles, though this can be hard to determine.

I've done this manually on simple microcontrollers. You add up 
the time taken for instructions on each path and balance them 
with nops. Probably impossible on a cpu instruction set which 
might be run on many different processors with different pipeline 
lengths, parellel processing units etc. Definitely need 
hypertheading off :)




More information about the Digitalmars-d mailing list